2024-4-30 发布歌词显示SDK开发注意事项
📎 原始文档:https://www.kdocs.cn/l/clPDBS4F9zlN 2024-4-30 发布歌词显示SDK开发注意事项
AC695N_soundbox_sdk_release_3.1.2 1、#define UI_LED_LRC_DECODE_FONT 0 配置无字库的宏定义后会造成死机问题,需要修改lyrics_update_font函数,如下:
void lyrics_update_font(u8 *str, u16 len, LRC_SHOW_INFO show_info)
{
#if UI_LED_LRC_DECODE_FONT
if (f_info.pixel.file.fd == NULL) {
printf("err, font file not open\n");
return;
}
#endif
u16 str_curr_crc;
static u16 str_last_crc = 0;
str_curr_crc = CRC16(str, len);
if (str_last_crc == str_curr_crc && lrc_status.lrc_show_status_update_flag == 0 && lrc_check_online_flag) {
return;
}
if (len == 0) {
lrc_status.lrc_show_status_update_flag = 0;
return;
}
#if UI_LED_LRC_DECODE_FONT
os_mutex_pend(&show_mutex, 0);
#endif
/ 记录当前字符串内容和长度,在更新显示参数实时刷新时需要用到 /
if (lrc_status.lrc_record_str && lrc_status.lrc_show_status_update_flag == 0) {
free(lrc_status.lrc_record_str);
lrc_status.lrc_record_str = NULL;
}
if (lrc_status.lrc_record_str == NULL) {
lrc_status.lrc_record_str = zalloc(len);
}
lrc_status.lrc_record_len = len;
memcpy(lrc_status.lrc_record_str, str, len);
/ 记录当前字符串内容和长度,在更新显示参数实时刷新时需要用到 */
str_last_crc = str_curr_crc;
#if (UI_LED_LRC_DECODE_FONT == 0)
lrc_buf_push(str, len);
lrc_status.lrc_show_status_update_flag = 0;
// os_mutex_post(&show_mutex);
return;
#endif
u16 scroll_speed;
u8 rotate, flip;
os_mutex_pend(&mutex, 0);
if (show_info == NULL) {
rotate = lrc_status.lrc_rotate;
flip = lrc_status.lrc_flip;
scroll_speed = lrc_status.lrc_scroll_speed;
} else {
rotate = show_info->rotate;
flip = show_info->flip;
scroll_speed = show_info->scroll_speed;
}
if (font_lyrics_scroll_timer_id) {
sys_timer_del(font_lyrics_scroll_timer_id);
font_lyrics_scroll_timer_id = 0;
}
if (lrc_update_info.str) {
free(lrc_update_info.str);
lrc_update_info.str = NULL;
}
lrc_update_info.str = malloc(len);
memcpy(lrc_update_info.str, str, len);
lrc_update_info.len = len;
lrc_update_info.lyrics_info.scroll_offset = 0;
lrc_update_info.lyrics_info.rotate = rotate;
lrc_update_info.lyrics_info.flip = flip;
lrc_update_info.sum_width = Font_GetStringWidth(lrc_update_info.str, len, &(lrc_update_info.lyrics_info));
lrc_update_info.lyrics_info.center_offset = (lrc_update_info.sum_width < LED_WIDTH) ? ((LED_WIDTH - lrc_update_info.sum_width) / 2) : 0;os_mutex_post(&show_mutex);
if (lrc_update_info.sum_width <= LED_WIDTH) {
lyrics_scroll_font((void *)&lrc_update_info);
} else {
if (font_lyrics_scroll_timer_id == 0) {
font_lyrics_scroll_timer_id = sys_timer_add((void *)&lrc_update_info, lyrics_scroll_font, scroll_speed);
}
}
lrc_status.lrc_show_status_update_flag = 0;
os_mutex_post(&mutex);
}
2、该开发包是标准音箱SDK,如需要支持歌词显示功能,请先查阅“AC695N_使用AD10X灯板(不带flash)说明.pdf”和 “AC695N_使用AD10X灯板(带flash)说明.pdf”。AD10X_Resource_led_1.0.0 AD10X_Resource_led_1.0.0\AD10X_Resource_led_1.0.0\AD10X_Resource_led_1.0.0 中 .eww 是 IAR(一款IDE)的工程
ac696n_soundbox_sdk_v1.7.0_led_0426 font.rar
1、font.bin太大开启不了打印功能,可以替换readme中font.bin减少空间的消耗。
2、apps\soundbox\ui\led_lyric\led_lyric.h 修改led灯板的长宽,默认 12 * 96。
3、cpu\br25\sh50_isp.c 是696N上电推代码到AD10X的逻辑,里面含有SPI的脚位配置。
4、其他详细说明请参考“AC696N_一拖二蓝牙提词器说明”