#include "kt.h" #include "avctp_user.h" #include "key_event_deal.h" typedef struct _kts_ { int timer; u32 t_cnt; // 上电标志 u8 led_flag; // u8 conn_flag; } _kts; static _kts kts_var; #define __this (&kts_var) void kt_boot_init(void) { gpio_set_pull_up(KTCFG_PA_MUTE_PIN, 0); gpio_set_pull_down(KTCFG_PA_MUTE_PIN, 0); gpio_set_direction(KTCFG_PA_MUTE_PIN, 0); PA_MUTE(); gpio_set_pull_up(KTCFG_PWR_LED_PIN, 0); gpio_set_pull_down(KTCFG_PWR_LED_PIN, 0); gpio_set_direction(KTCFG_PWR_LED_PIN, 0); gpio_set_output_value(KTCFG_PWR_LED_PIN, 1); gpio_set_pull_up(KTCFG_BAK_LED_PIN, 0); gpio_set_pull_down(KTCFG_BAK_LED_PIN, 0); gpio_set_direction(KTCFG_BAK_LED_PIN, 0); gpio_set_output_value(KTCFG_BAK_LED_PIN, 0); gpio_set_pull_up(KTCFG_BT_LED_PIN, 0); gpio_set_pull_down(KTCFG_BT_LED_PIN, 0); gpio_set_direction(KTCFG_BT_LED_PIN, 0); gpio_set_output_value(KTCFG_BT_LED_PIN, 0); } static void led_tim_callback(void) { /* if (get_call_status() == BT_CALL_ACTIVE) { user_send_cmd_prepare(USER_CTRL_DISCONN_SCO, 0, NULL); } */ if (get_bt_connect_status() < BT_STATUS_CONNECTING) { if (__this->led_flag == 0) { __this->led_flag = 1; BT_LED_ON(); } else { __this->led_flag = 0; BT_LED_OFF(); } } else { BT_LED_ON(); } if (__this->t_cnt > 0) { __this->t_cnt--; if (__this->t_cnt == 0) { BAK_LED_OFF(); PWR_LED_OFF(); } } else { BAK_LED_OFF(); PWR_LED_OFF(); } } static void start_timer(void) { if (__this->timer) { sys_timer_del(__this->timer); } __this->t_cnt = 0; __this->timer = sys_timer_add(NULL, led_tim_callback, 500); } void kt_init(void) { start_timer(); } void bled_set(void) { __this->t_cnt = 10; BAK_LED_ON(); PWR_LED_ON(); } u8 kt_key_event_filter_after(int key_event) { switch (key_event) { case KEY_MUSIC_PP: bled_set(); break; case KEY_MUSIC_PREV: bled_set(); break; case KEY_MUSIC_NEXT: bled_set(); break; case KEY_VOL_UP: bled_set(); break; case KEY_VOL_DOWN: bled_set(); break; default: break; } return false; }