Fix missed shutdown callbacks (#22549)
This commit is contained in:
parent
cc4a52eb93
commit
094357c403
2 changed files with 12 additions and 16 deletions
|
@ -123,10 +123,3 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||||
};
|
};
|
||||||
// clang-format on
|
// clang-format on
|
||||||
#endif // ENCODER_MAP_ENABLE
|
#endif // ENCODER_MAP_ENABLE
|
||||||
|
|
||||||
void shutdown_user(void) {
|
|
||||||
#ifdef RGB_MATRIX_ENABLE
|
|
||||||
rgb_matrix_sethsv_noeeprom(HSV_RED);
|
|
||||||
rgb_matrix_update_pwm_buffers();
|
|
||||||
#endif // RGB_MATRIX_ENABLE
|
|
||||||
}
|
|
||||||
|
|
|
@ -97,34 +97,37 @@ void keyboard_post_init_kb(void) {
|
||||||
loop10hz_token = defer_exec(LOOP_10HZ_PERIOD, loop_10Hz, NULL);
|
loop10hz_token = defer_exec(LOOP_10HZ_PERIOD, loop_10Hz, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__((weak)) void shutdown_user(void) {
|
bool shutdown_kb(bool jump_to_bootloader) {
|
||||||
|
if (shutdown_user(jump_to_bootloader)) {
|
||||||
#ifdef RGB_MATRIX_ENABLE
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
rgb_matrix_set_suspend_state(true);
|
rgb_matrix_set_suspend_state(true);
|
||||||
#endif // RGB_MATRIX_ENABLE
|
#endif // RGB_MATRIX_ENABLE
|
||||||
wait_ms(10);
|
wait_ms(10);
|
||||||
|
}
|
||||||
ws2812_poweroff();
|
ws2812_poweroff();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef DIP_SWITCH_ENABLE
|
#ifdef DIP_SWITCH_ENABLE
|
||||||
bool dip_switch_update_mask_kb(uint32_t state) {
|
bool dip_switch_update_mask_kb(uint32_t state) {
|
||||||
if (!dip_switch_update_mask_user(state)) { return false; }
|
if (!dip_switch_update_mask_user(state)) { return false; }
|
||||||
|
|
||||||
if(state & 0x01) {
|
if(state & 0x01) {
|
||||||
led_suspend();
|
led_suspend();
|
||||||
usbDisconnectBus(&USB_DRIVER);
|
usbDisconnectBus(&USB_DRIVER);
|
||||||
usbStop(&USB_DRIVER);
|
usbStop(&USB_DRIVER);
|
||||||
shutdown_user();
|
shutdown_user(true);
|
||||||
setPinInputHigh(POWER_SWITCH_PIN);
|
setPinInputHigh(POWER_SWITCH_PIN);
|
||||||
palEnableLineEvent(POWER_SWITCH_PIN, PAL_EVENT_MODE_RISING_EDGE);
|
palEnableLineEvent(POWER_SWITCH_PIN, PAL_EVENT_MODE_RISING_EDGE);
|
||||||
POWER_EnterSleep();
|
POWER_EnterSleep();
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uint32_t loop_10Hz(uint32_t trigger_time, void *cb_arg) {
|
uint32_t loop_10Hz(uint32_t trigger_time, void *cb_arg) {
|
||||||
|
|
||||||
if(last_input_activity_elapsed() > 1000) {
|
if(last_input_activity_elapsed() > 1000) {
|
||||||
static uint32_t pmu_timer = 0;
|
static uint32_t pmu_timer = 0;
|
||||||
if(timer_elapsed32(pmu_timer) > 3000) {
|
if(timer_elapsed32(pmu_timer) > 3000) {
|
||||||
|
@ -144,7 +147,7 @@ uint32_t loop_10Hz(uint32_t trigger_time, void *cb_arg) {
|
||||||
|
|
||||||
extern matrix_row_t matrix[MATRIX_ROWS];
|
extern matrix_row_t matrix[MATRIX_ROWS];
|
||||||
static uint32_t restore_tick = 0;
|
static uint32_t restore_tick = 0;
|
||||||
if(matrix[0] == 0x4000 && matrix[1] == 0 &&
|
if(matrix[0] == 0x4000 && matrix[1] == 0 &&
|
||||||
matrix[2] == 0 && matrix[3] == 0 && matrix[4] == 0 && matrix[5] == 0x201) {
|
matrix[2] == 0 && matrix[3] == 0 && matrix[4] == 0 && matrix[5] == 0x201) {
|
||||||
if(restore_tick++ > 50) {
|
if(restore_tick++ > 50) {
|
||||||
restore_tick = 0;
|
restore_tick = 0;
|
||||||
|
|
Loading…
Reference in a new issue