mirror of
https://github.com/firewalkwithm3/qmk_firmware.git
synced 2024-11-22 03:21:48 +08:00
Fix missed shutdown callbacks (#22549)
This commit is contained in:
parent
cc4a52eb93
commit
094357c403
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue