Parent directory

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}