// Copyright 2022 QMK // SPDX-License-Identifier: GPL-2.0-or-later #include "suspend.h" #include "matrix.h" // TODO: Move to more correct location __attribute__((weak)) void matrix_power_up(void) {} __attribute__((weak)) void matrix_power_down(void) {} /** \brief Run user level Power down * * FIXME: needs doc */ __attribute__((weak)) void suspend_power_down_user(void) {} /** \brief Run keyboard level Power down * * FIXME: needs doc */ __attribute__((weak)) void suspend_power_down_kb(void) { suspend_power_down_user(); } /** \brief run user level code immediately after wakeup * * FIXME: needs doc */ __attribute__((weak)) void suspend_wakeup_init_user(void) {} /** \brief run keyboard level code immediately after wakeup * * FIXME: needs doc */ __attribute__((weak)) void suspend_wakeup_init_kb(void) { suspend_wakeup_init_user(); } /** \brief suspend wakeup condition * * FIXME: needs doc */ bool suspend_wakeup_condition(void) { matrix_power_up(); // Keep animating in suspend state # ifdef LED_MATRIX_ENABLE led_matrix_task(); # endif # ifdef RGB_MATRIX_ENABLE rgb_matrix_task(); # endif matrix_scan(); matrix_power_down(); for (uint8_t r = 0; r < MATRIX_ROWS; r++) { if (matrix_get_row(r)) return true; } return false; }