diff options
Diffstat (limited to 'keyboards/keychron/k9_pro/k9_pro.c')
-rw-r--r-- | keyboards/keychron/k9_pro/k9_pro.c | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/keyboards/keychron/k9_pro/k9_pro.c b/keyboards/keychron/k9_pro/k9_pro.c index d899a25d98..9fd19612ef 100644 --- a/keyboards/keychron/k9_pro/k9_pro.c +++ b/keyboards/keychron/k9_pro/k9_pro.c @@ -36,9 +36,10 @@ typedef struct PACKED { uint8_t keycode[3]; } key_combination_t; -static uint32_t power_on_indicator_timer_buffer; -static uint32_t siri_timer_buffer = 0; -static uint8_t mac_keycode[4] = {KC_LOPT, KC_ROPT, KC_LCMD, KC_RCMD}; +static uint32_t factory_timer_buffer = 0; +static uint32_t power_on_indicator_timer_buffer = 0; +static uint32_t siri_timer_buffer = 0; +static uint8_t mac_keycode[4] = {KC_LOPT, KC_ROPT, KC_LCMD, KC_RCMD}; key_combination_t key_comb_list[4] = { {2, {KC_LWIN, KC_TAB}}, // Task (win) @@ -140,8 +141,8 @@ void keyboard_post_init_kb(void) { dip_switch_read(true); #ifdef KC_BLUETOOTH_ENABLE - /* Currently we don't use this reset pin */ - palSetLineMode(CKBT51_RESET_PIN, PAL_MODE_UNCONNECTED); + palSetLineMode(CKBT51_RESET_PIN, PAL_MODE_OUTPUT_PUSHPULL); + palWriteLine(CKBT51_RESET_PIN, PAL_HIGH); /* IMPORTANT: DO NOT enable internal pull-up resistor * as there is an external pull-down resistor. @@ -160,6 +161,16 @@ void keyboard_post_init_kb(void) { void matrix_scan_kb(void) { if (power_on_indicator_timer_buffer) { + if (factory_timer_buffer && timer_elapsed32(factory_timer_buffer) > 2000) { + factory_timer_buffer = 0; + if (bt_factory_reset) { + bt_factory_reset = false; + palWriteLine(CKBT51_RESET_PIN, PAL_LOW); + wait_ms(5); + palWriteLine(CKBT51_RESET_PIN, PAL_HIGH); + } + } + if (sync_timer_elapsed32(power_on_indicator_timer_buffer) > POWER_ON_LED_DURATION) { power_on_indicator_timer_buffer = 0; writePin(BAT_LOW_LED_PIN, !BAT_LOW_LED_PIN_ON_STATE); @@ -183,7 +194,6 @@ void matrix_scan_kb(void) { #ifdef KC_BLUETOOTH_ENABLE static void ckbt51_param_init(void) { /* Set bluetooth device name */ - // ckbt51_set_local_name(STR(PRODUCT)); ckbt51_set_local_name(PRODUCT); /* Set bluetooth parameters */ module_param_t param = {.event_mode = 0x02, @@ -200,8 +210,8 @@ static void ckbt51_param_init(void) { void bluetooth_enter_disconnected_kb(uint8_t host_idx) { if (bt_factory_reset) { - bt_factory_reset = false; ckbt51_param_init(); + factory_timer_buffer = timer_read32(); } /* CKBT51 bluetooth module boot time is slower, it enters disconnected after boot, so we place initialization here. */ |