#include "kt.h" #include "drv_st7789.h" #include "kt_ui.h" #include "key_event_deal.h" #include "app_task.h" #include "avctp_user.h" #include "eye_led.h" #include "user_cfg_id.h" u16 tid = 0; void kt_boot_init(void) { // mute PA1 PA2 双绑 gpio_set_pull_up(IO_PORTA_01, 0); gpio_set_pull_down(IO_PORTA_01, 0); gpio_set_die(IO_PORTA_01, 1); gpio_set_direction(IO_PORTA_01, 1); gpio_set_pull_up(CFG_MUTE_PIN, 0); gpio_set_pull_down(CFG_MUTE_PIN, 0); gpio_set_direction(CFG_MUTE_PIN, 0); PA_MUTE(); // flash led PA0 PC7 双绑 gpio_set_pull_up(IO_PORTA_00, 0); gpio_set_pull_down(IO_PORTA_00, 0); gpio_set_die(IO_PORTA_00, 1); gpio_set_direction(IO_PORTA_00, 1); gpio_set_pull_up(CFG_EYE_LED_PIN, 0); gpio_set_pull_down(CFG_EYE_LED_PIN, 0); gpio_set_direction(CFG_EYE_LED_PIN, 0); EYE_LED_OFF(); // bt led PA3 gpio_set_pull_up(CFG_BT_LED_PIN, 0); gpio_set_pull_down(CFG_BT_LED_PIN, 0); gpio_set_direction(CFG_BT_LED_PIN, 0); BT_LED_OFF(); // exp pwr PB3 gpio_set_pull_up(CFG_EXP_PWR_PIN, 0); gpio_set_pull_down(CFG_EXP_PWR_PIN, 0); gpio_set_direction(CFG_EXP_PWR_PIN, 0); EXP_PWR_OFF(); } static void tid_timer_callback(void *priv) { if (app_get_curr_task() == APP_BT_TASK) { if (get_bt_connect_status() == BT_STATUS_PLAYING_MUSIC) { user_send_cmd_prepare(USER_CTRL_AVCTP_OPID_GET_PLAY_TIME, 0, NULL); } } else if (app_get_curr_task() == APP_MUSIC_TASK) { /* Music 模式:定时刷新播放进度 */ kt_ui_post_key_event(KEY_USER_PLAY_TIME_UPDATE, 0); } } static void start_timer(void) { if (tid != 0) { sys_timer_del(tid); tid = 0; } tid = sys_timer_add(NULL, tid_timer_callback, 200); } static void eye_led_complete_cb(void) { kt_ui_post_key_event(KEY_USER_EYE_LED_STOP, 0); } void kt_set_ex_led_color(u8 color) { switch (color) { case 0: R_LED_OFF(); G_LED_OFF(); B_LED_OFF(); break; case 1: R_LED_ON(); G_LED_OFF(); B_LED_OFF(); break; case 2: R_LED_OFF(); G_LED_ON(); B_LED_OFF(); break; case 3: R_LED_OFF(); G_LED_OFF(); B_LED_ON(); break; case 4: R_LED_ON(); G_LED_ON(); B_LED_OFF(); break; case 5: R_LED_ON(); G_LED_OFF(); B_LED_ON(); break; case 6: R_LED_OFF(); G_LED_ON(); B_LED_ON(); break; case 7: R_LED_ON(); G_LED_ON(); B_LED_ON(); break; default: break; } syscfg_write(CFG_EX_LED_COLOR, &color, 1); } void ex_led_init(void) { R_LED_OFF(); G_LED_OFF(); B_LED_OFF(); u8 color = 0; int ret = syscfg_read(CFG_EX_LED_COLOR, &color, 1); if (ret != 1) { color = 0; } kt_set_ex_led_color(color); } void kt_init(void) { lcd_st7789_init(); eye_led_init(); eye_led_set_complete_callback(eye_led_complete_cb); kt_ui_init(); start_timer(); } u8 kt_key_event_filter_after(int key_event, int key_value) { u8 ret = false; switch (key_event) { case KEY_USER_LED: //kt_set_ex_led_color(key_value); { u8 color = 0; int ret = syscfg_read(CFG_EX_LED_COLOR, &color, 1); if (ret != 1) { color = 0; } color++; if (color > 7) { color = 0; } kt_set_ex_led_color(color); } ret = true; break; case KEY_USER_SETTING: if (app_get_curr_task() == APP_MUSIC_TASK) { kt_ui_post_key_event(key_event, key_value); ret = true; } break; case KEY_MUSIC_NEXT: case KEY_MUSIC_PREV: /* 仅在 Music 页设置模式下转发,用于列表焦点移动 */ if (app_get_curr_task() == APP_MUSIC_TASK && kt_ui_music_setting_mode()) { kt_ui_post_key_event(key_event, key_value); ret = true; } break; case KEY_MUSIC_PP: /* 设置模式下 PP 单击 = 确认 */ if (app_get_curr_task() == APP_MUSIC_TASK && kt_ui_music_setting_mode()) { kt_ui_post_key_event(key_event, key_value); ret = true; } break; case KEY_USER_PLAY_TIME_UPDATE: kt_ui_post_key_event(key_event, key_value); ret = true; break; default: ret = false; break; } return ret; }