KT25-1015_AC695x_SDK310/apps/kaotings/kt.c

212 lines
4.6 KiB
C
Raw Normal View History

#include "kt.h"
2026-02-12 13:11:00 +00:00
#include "drv_st7789.h"
2026-02-13 13:49:31 +00:00
#include "kt_ui.h"
#include "key_event_deal.h"
#include "app_task.h"
#include "avctp_user.h"
2026-03-18 21:52:10 +00:00
#include "eye_led.h"
#include "user_cfg_id.h"
2026-02-13 13:49:31 +00:00
u16 tid = 0;
void kt_boot_init(void)
{
2026-02-12 13:11:00 +00:00
// 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);
2026-03-18 21:52:10 +00:00
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();
2026-02-12 13:11:00 +00:00
2026-02-13 13:49:31 +00:00
// bt led PA3
2026-02-12 13:11:00 +00:00
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();
2026-02-13 13:49:31 +00:00
// exp pwr PB3
2026-02-12 13:11:00 +00:00
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();
2026-02-13 13:49:31 +00:00
}
2026-02-12 13:11:00 +00:00
2026-02-13 13:49:31 +00:00
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);
}
}
2026-03-18 21:52:10 +00:00
else if (app_get_curr_task() == APP_MUSIC_TASK)
{
/* Music 模式:定时刷新播放进度 */
kt_ui_post_key_event(KEY_USER_PLAY_TIME_UPDATE, 0);
}
2026-02-13 13:49:31 +00:00
}
static void start_timer(void)
{
if (tid != 0)
{
sys_timer_del(tid);
tid = 0;
}
tid = sys_timer_add(NULL, tid_timer_callback, 200);
}
2026-03-18 21:52:10 +00:00
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)
{
2026-02-12 13:11:00 +00:00
lcd_st7789_init();
2026-03-18 21:52:10 +00:00
eye_led_init();
eye_led_set_complete_callback(eye_led_complete_cb);
2026-02-13 13:49:31 +00:00
kt_ui_init();
start_timer();
}
u8 kt_key_event_filter_after(int key_event, int key_value)
{
u8 ret = false;
switch (key_event)
{
2026-03-18 21:52:10 +00:00
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;
2026-02-13 13:49:31 +00:00
case KEY_MUSIC_NEXT:
2026-03-18 21:52:10 +00:00
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;
2026-02-13 13:49:31 +00:00
case KEY_USER_PLAY_TIME_UPDATE:
kt_ui_post_key_event(key_event, key_value);
ret = true;
break;
default:
ret = false;
break;
}
return ret;
}