suspend.c
1151 bytes
1// Copyright 2022 QMK
2// SPDX-License-Identifier: GPL-2.0-or-later
3
4#include "suspend.h"
5#include "matrix.h"
6
7// TODO: Move to more correct location
8__attribute__((weak)) void matrix_power_up(void) {}
9__attribute__((weak)) void matrix_power_down(void) {}
10
11/** \brief Run user level Power down
12 *
13 * FIXME: needs doc
14 */
15__attribute__((weak)) void suspend_power_down_user(void) {}
16
17/** \brief Run keyboard level Power down
18 *
19 * FIXME: needs doc
20 */
21__attribute__((weak)) void suspend_power_down_kb(void) {
22 suspend_power_down_user();
23}
24
25/** \brief run user level code immediately after wakeup
26 *
27 * FIXME: needs doc
28 */
29__attribute__((weak)) void suspend_wakeup_init_user(void) {}
30
31/** \brief run keyboard level code immediately after wakeup
32 *
33 * FIXME: needs doc
34 */
35__attribute__((weak)) void suspend_wakeup_init_kb(void) {
36 suspend_wakeup_init_user();
37}
38
39/** \brief suspend wakeup condition
40 *
41 * FIXME: needs doc
42 */
43bool suspend_wakeup_condition(void) {
44 matrix_power_up();
45 matrix_scan();
46 matrix_power_down();
47 for (uint8_t r = 0; r < MATRIX_ROWS; r++) {
48 if (matrix_get_row(r)) return true;
49 }
50 return false;
51}