KT24-1110_65E-HA-651B/apps/soundbox/ui/led7/ui_music.c
2024-11-10 18:44:17 +08:00

237 lines
5.0 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "ui/ui_api.h"
#include "music/music_ui.h"
#include "fm_emitter/fm_emitter_manage.h"
#include "audio_dec.h"
#include "audio_dec_file.h"
#include "music/music_player.h"
#if TCFG_APP_MUSIC_EN
#if (TCFG_UI_ENABLE&&(CONFIG_UI_STYLE == STYLE_JL_LED7))
/* UI_DIS_VAR *ui_get_dis_var()//获取存储模式参数的结构体 */
/* { */
/* return ui_dis_var; */
/* } */
void ui_music_temp_finsh(u8 menu)//子菜单被打断或者显示超时
{
switch (menu) {
default:
break;
}
}
static void ui_led7_show_music_time(void *hd, int sencond)
{
LCD_API *dis = (LCD_API *)hd;
u8 tmp_buf[5] = {0};
u8 min = 0;
min = sencond / 60 % 60;
sencond = sencond % 60;
itoa2(min, (u8 *)&tmp_buf[0]);
itoa2(sencond, (u8 *)&tmp_buf[2]);
dis->lock(1);
/* dis->clear(); */
dis->setXY(0, 0);
dis->clear_icon(0xffff);
dis->show_string(tmp_buf);
dis->flash_icon(LED7_2POINT);
dis->show_icon(LED7_PLAY);
dis->show_icon(LED7_MP3);
dis->lock(0);
}
static void led7_show_filenumber(void *hd, u16 file_num)
{
LCD_API *dis = (LCD_API *)hd;
u8 bcd_number[5] = {0}; ///<换算结果显示缓存
itoa4(file_num, (u8 *)bcd_number);
dis->lock(1);
dis->clear();
dis->setXY(0, 0);
#if TCFG_UI_LED1888_ENABLE //UI使用LED1888
if (file_num > 999 && file_num <= 1999) {
bcd_number[0] = '1';
} else {
bcd_number[0] = ' ';
}
#endif
dis->show_string(bcd_number);
dis->lock(0);
}
static void led7_show_pause(void *hd)
{
LCD_API *dis = (LCD_API *)hd;
dis->lock(1);
dis->clear();
dis->setXY(0, 0);
dis->show_string((u8 *)" PAU");
dis->show_icon(LED7_PAUSE);
dis->lock(0);
}
static void led7_show_repeat_mode(void *hd, u32 val)
{
if (!val) {
return ;
}
u8 mode = (u8)val - 1;
const u8 playmodestr[][5] = {
" ALL",
" ONE",
"Fold",
" rAn",
};
if (mode >= sizeof(playmodestr) / sizeof(playmodestr[0])) {
printf("rpt mode display err !!\n");
return ;
}
LCD_API *dis = (LCD_API *)hd;
dis->lock(1);
dis->clear();
dis->setXY(0, 0);
dis->show_string((u8 *)playmodestr[mode]);
dis->lock(0);
}
static void led7_fm_show_freq(void *hd, u32 arg)
{
u8 bcd_number[5] = {0};
LCD_API *dis = (LCD_API *)hd;
u16 freq = 0;
freq = arg;
dis->lock(1);
dis->clear();
dis->setXY(0, 0);
itoa4(freq, (u8 *)bcd_number);
if (freq > 999 && freq <= 1999) {
bcd_number[0] = '1';
} else {
bcd_number[0] = ' ';
}
dis->show_string(bcd_number);
dis->show_icon(LED7_DOT);
dis->lock(0);
}
static void *ui_open_music(void *hd)
{
MUSIC_DIS_VAR *ui_music = NULL;
/* ui_music = (MUSIC_DIS_VAR *)malloc(sizeof(MUSIC_DIS_VAR)); */
/* if (ui_music == NULL) { */
/* return NULL; */
/* } */
ui_set_auto_reflash(500);//设置主页500ms自动刷新
return ui_music;
}
static void ui_close_music(void *hd, void *private)
{
MUSIC_DIS_VAR *ui_music = (MUSIC_DIS_VAR *)private;
LCD_API *dis = (LCD_API *)hd;
if (!dis) {
return ;
}
if (ui_music) {
free(ui_music);
}
}
static void led7_show_music_dev(void *hd)
{
LCD_API *dis = (LCD_API *)hd;
char *dev = NULL;
/* char *music_play_get_cur_dev(void); */
/* char *dev = music_play_get_cur_dev(); */
dev = music_player_get_dev_cur();
if (dev) {
if (!memcmp(dev, "udisk", 5)) {
dis->show_icon(LED7_USB);
} else {
dis->show_icon(LED7_SD);
}
}
}
static void ui_music_main(void *hd, void *private) //主界面显示
{
if (!hd) {
return;
}
MUSIC_DIS_VAR *ui_music = (MUSIC_DIS_VAR *)private;
#if TCFG_APP_FM_EMITTER_EN
if (true == file_dec_is_pause()) {
led7_show_pause(hd);
} else {
u16 fre = fm_emitter_manage_get_fre();
if (fre != 0) {
led7_fm_show_freq(hd, fre);
}
}
#else
if (true == file_dec_is_play()) {
int sencond = file_dec_get_cur_time();
ui_led7_show_music_time(hd, sencond);
led7_show_music_dev(hd);
printf("sec = %d \n", sencond);
} else if (file_dec_is_pause()) {
led7_show_pause(hd);
} else {
printf("!!! %s %d\n", __FUNCTION__, __LINE__);
}
#endif
}
static int ui_music_user(void *hd, void *private, u8 menu, u32 arg)//子界面显示 //返回true不继续传递 返回false由common统一处理
{
int ret = true;
LCD_API *dis = (LCD_API *)hd;
MUSIC_DIS_VAR *ui_music = (MUSIC_DIS_VAR *)private;
if (!dis) {
return false;
}
switch (menu) {
case MENU_FILENUM:
led7_show_filenumber(hd, arg);
break;
case MENU_MUSIC_REPEATMODE:
led7_show_repeat_mode(hd, arg);
break;
default:
ret = false;
break;
}
return ret;
}
const struct ui_dis_api music_main = {
.ui = UI_MUSIC_MENU_MAIN,
.open = ui_open_music,
.ui_main = ui_music_main,
.ui_user = ui_music_user,
.close = ui_close_music,
};
#endif
#endif