forked from qmk/qmk_firmware
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added power tracking api (qmk#12691)
* Add power tracking API to lufa and chibios targets * power.c: Pass through power state to the notify function * power: added notify_power_state_change_user too. * making it pass the PR linter * Add a POWER_STATE_NO_INIT state, that we start in before calling power_init(); * Rename *power* to *usb_power* * removing stray newline * Rename usb_power* to usb_device_state* * Update quantum/usb_device_state.h Co-authored-by: Drashna Jaelre <drashna@live.com> * Fix comment * usb_device_state.h: Don't include quantum.h, only the necessary headers. Co-authored-by: Drashna Jaelre <drashna@live.com>
- Loading branch information
1 parent
6738e30
commit ea411b2
Showing
6 changed files
with
120 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
/* | ||
* Copyright 2021 Andrei Purdea <andrei@purdea.ro> | ||
* | ||
* This program is free software: you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation, either version 2 of the License, or | ||
* (at your option) any later version. | ||
* | ||
* This program is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU General Public License | ||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
*/ | ||
|
||
#include "usb_device_state.h" | ||
|
||
enum usb_device_state usb_device_state = USB_DEVICE_STATE_NO_INIT; | ||
|
||
__attribute__((weak)) void notify_usb_device_state_change_kb(enum usb_device_state usb_device_state) { notify_usb_device_state_change_user(usb_device_state); } | ||
|
||
__attribute__((weak)) void notify_usb_device_state_change_user(enum usb_device_state usb_device_state) {} | ||
|
||
static void notify_usb_device_state_change(enum usb_device_state usb_device_state) { notify_usb_device_state_change_kb(usb_device_state); } | ||
|
||
void usb_device_state_set_configuration(bool isConfigured, uint8_t configurationNumber) { | ||
usb_device_state = isConfigured ? USB_DEVICE_STATE_CONFIGURED : USB_DEVICE_STATE_INIT; | ||
notify_usb_device_state_change(usb_device_state); | ||
} | ||
|
||
void usb_device_state_set_suspend(bool isConfigured, uint8_t configurationNumber) { | ||
usb_device_state = USB_DEVICE_STATE_SUSPEND; | ||
notify_usb_device_state_change(usb_device_state); | ||
} | ||
|
||
void usb_device_state_set_resume(bool isConfigured, uint8_t configurationNumber) { | ||
usb_device_state = isConfigured ? USB_DEVICE_STATE_CONFIGURED : USB_DEVICE_STATE_INIT; | ||
notify_usb_device_state_change(usb_device_state); | ||
} | ||
|
||
void usb_device_state_set_reset(void) { | ||
usb_device_state = USB_DEVICE_STATE_INIT; | ||
notify_usb_device_state_change(usb_device_state); | ||
} | ||
|
||
void usb_device_state_init(void) { | ||
usb_device_state = USB_DEVICE_STATE_INIT; | ||
notify_usb_device_state_change(usb_device_state); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
/* | ||
* Copyright 2021 Andrei Purdea <andrei@purdea.ro> | ||
* | ||
* This program is free software: you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation, either version 2 of the License, or | ||
* (at your option) any later version. | ||
* | ||
* This program is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU General Public License | ||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
*/ | ||
|
||
#pragma once | ||
|
||
#include <stdbool.h> | ||
#include <stdint.h> | ||
|
||
void usb_device_state_set_configuration(bool isConfigured, uint8_t configurationNumber); | ||
void usb_device_state_set_suspend(bool isConfigured, uint8_t configurationNumber); | ||
void usb_device_state_set_resume(bool isConfigured, uint8_t configurationNumber); | ||
void usb_device_state_set_reset(void); | ||
void usb_device_state_init(void); | ||
|
||
enum usb_device_state { | ||
USB_DEVICE_STATE_NO_INIT = 0, // We're in this state before calling usb_device_state_init() | ||
USB_DEVICE_STATE_INIT = 1, // Can consume up to 100mA | ||
USB_DEVICE_STATE_CONFIGURED = 2, // Can consume up to what is specified in configuration descriptor, typically 500mA | ||
USB_DEVICE_STATE_SUSPEND = 3 // Can consume only suspend current | ||
}; | ||
|
||
extern enum usb_device_state usb_device_state; | ||
|
||
void notify_usb_device_state_change_kb(enum usb_device_state usb_device_state); | ||
void notify_usb_device_state_change_user(enum usb_device_state usb_device_state); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters