Fix missed shutdown callbacks (#22549)

master
Drashna Jaelre 2023-11-26 20:39:17 -08:00 committed by GitHub
parent cc4a52eb93
commit 094357c403
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 16 deletions

View File

@ -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
}

View File

@ -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;