~ruther/qmk_firmware

094357c40347e8a5db36578851f1af34a92e9f68 — Drashna Jaelre 1 year, 5 months ago cc4a52e
Fix missed shutdown callbacks (#22549)

M keyboards/bastardkb/dilemma/4x6_4/keymaps/via/keymap.c => keyboards/bastardkb/dilemma/4x6_4/keymaps/via/keymap.c +0 -7
@@ 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
}

M keyboards/miiiw/blackio83/blackio83.c => keyboards/miiiw/blackio83/blackio83.c +12 -9
@@ 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;

Do not follow this link