#include "kt.h" #include "key_event_deal.h" #include "asm/mcpwm.h" #include "system/timer.h" #include "kt_fan_ac.h" #include "kt_led7.h" #include "kt_light_led.h" #define KT_VBUS_DEBOUNCE_CNT 3 #define KT_VBUS_POLL_MS 200 void kt_boot_init(void) { printf("kt_boot_init\n"); // 初始化GPIO PA Mute gpio_set_pull_down(KT_CFG_PA_MUTE_PIN, 0); gpio_set_pull_up(KT_CFG_PA_MUTE_PIN, 0); gpio_set_direction(KT_CFG_PA_MUTE_PIN, 0); PA_MUTE(); // 初始化GPIO USB Plug Detect gpio_set_pull_down(KT_CFG_USB_PLUG_DET_PIN, 0); gpio_set_pull_up(KT_CFG_USB_PLUG_DET_PIN, 0); gpio_set_die(KT_CFG_USB_PLUG_DET_PIN, 1); gpio_set_direction(KT_CFG_USB_PLUG_DET_PIN, 1); // 初始化GPIO Vibration Switch gpio_set_pull_down(KT_CFG_VIBRATION_SW_PIN, 0); gpio_set_pull_up(KT_CFG_VIBRATION_SW_PIN, 0); gpio_set_die(KT_CFG_VIBRATION_SW_PIN, 1); gpio_set_direction(KT_CFG_VIBRATION_SW_PIN, 1); // 初始化GPIO Front Fan gpio_set_pull_down(KT_CFG_FRONT_FAN_PIN, 0); gpio_set_pull_up(KT_CFG_FRONT_FAN_PIN, 0); gpio_set_direction(KT_CFG_FRONT_FAN_PIN, 0); gpio_set_output_value(KT_CFG_FRONT_FAN_PIN, 0); // 初始化GPIO Rear Fan gpio_set_pull_down(KT_CFG_REAR_FAN_PIN, 0); gpio_set_pull_up(KT_CFG_REAR_FAN_PIN, 0); gpio_set_direction(KT_CFG_REAR_FAN_PIN, 0); gpio_set_output_value(KT_CFG_REAR_FAN_PIN, 0); // 初始化GPIO LR Fan gpio_set_pull_down(KT_CFG_LR_FAN_PIN, 0); gpio_set_pull_up(KT_CFG_LR_FAN_PIN, 0); gpio_set_die(KT_CFG_LR_FAN_PIN, 1); gpio_set_direction(KT_CFG_LR_FAN_PIN, 0); gpio_set_output_value(KT_CFG_LR_FAN_PIN, 0); } static u16 vbus_timer = 0; static u8 vbus_high_cnt = 0; static u8 vbus_low_cnt = 0; static u8 vbus_inserted = 0; static void vbus_detect(void *priv) { (void)priv; if (gpio_read(KT_CFG_USB_PLUG_DET_PIN)) { vbus_low_cnt = 0; if (!vbus_inserted) { vbus_high_cnt++; if (vbus_high_cnt >= KT_VBUS_DEBOUNCE_CNT) { vbus_inserted = 1; kt_led7_usb_charge_set(1); } } } else { vbus_high_cnt = 0; if (vbus_inserted) { vbus_low_cnt++; if (vbus_low_cnt >= KT_VBUS_DEBOUNCE_CNT) { vbus_inserted = 0; kt_led7_usb_charge_set(0); } } else { vbus_low_cnt = 0; } } } void start_chk_det_start(void) { if (vbus_timer) { sys_timer_del(vbus_timer); vbus_timer = 0; } vbus_timer = sys_timer_add(NULL, vbus_detect, KT_VBUS_POLL_MS); } void kt_init(void) { printf("kt_init\n"); kt_light_led_init(); kt_fan_ac_init(); kt_led7_init(); start_chk_det_start(); } u8 kt_key_event_filter_after(int key_event, int key_value) { u8 ret = true; switch (key_event) { case KEY_KT_FRONT_FAN: printf("KEY_KT_FRONT_FAN = %d\n", key_value); kt_fan_level_change(fan_type_front); break; case KEY_KT_REAR_FAN: printf("KEY_KT_REAR_FAN = %d\n", key_value); kt_fan_level_change(fan_type_rear); break; case KEY_KT_LR_FAN: printf("KEY_KT_LR_FAN = %d\n", key_value); kt_fan_level_change(fan_type_lr); break; case KEY_KT_LED: printf("KEY_KT_LED = %d\n", key_value); kt_light_led_level_change(); break; case KEY_KT_AIR_COND: printf("KEY_KT_AIR_COND = %d\n", key_value); kt_fan_level_change(fan_type_ac); break; default: printf("KEY_KT_DEFAULT = %d\n", key_value); ret = false; break; } return ret; // return false; }