1
0
Fork 0
forked from forks/qmk_firmware

Fix missed shutdown callbacks (#22549)

This commit is contained in:
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
#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);
}
__attribute__((weak)) void shutdown_user(void) {
bool shutdown_kb(bool jump_to_bootloader) {
if (shutdown_user(jump_to_bootloader)) {
#ifdef RGB_MATRIX_ENABLE
rgb_matrix_set_suspend_state(true);
#endif // RGB_MATRIX_ENABLE
wait_ms(10);
rgb_matrix_set_suspend_state(true);
#endif // RGB_MATRIX_ENABLE
wait_ms(10);
}
ws2812_poweroff();
return true;
}
#ifdef DIP_SWITCH_ENABLE
bool dip_switch_update_mask_kb(uint32_t state) {
if (!dip_switch_update_mask_user(state)) { return false; }
if(state & 0x01) {
led_suspend();
usbDisconnectBus(&USB_DRIVER);
usbStop(&USB_DRIVER);
shutdown_user();
shutdown_user(true);
setPinInputHigh(POWER_SWITCH_PIN);
palEnableLineEvent(POWER_SWITCH_PIN, PAL_EVENT_MODE_RISING_EDGE);
POWER_EnterSleep();
}
return true;
}
#endif
uint32_t loop_10Hz(uint32_t trigger_time, void *cb_arg) {
if(last_input_activity_elapsed() > 1000) {
static uint32_t pmu_timer = 0;
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];
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) {
if(restore_tick++ > 50) {
restore_tick = 0;