summaryrefslogtreecommitdiff
path: root/tmk_core/protocol/usb_device_state.c
diff options
context:
space:
mode:
Diffstat (limited to 'tmk_core/protocol/usb_device_state.c')
-rw-r--r--tmk_core/protocol/usb_device_state.c55
1 files changed, 43 insertions, 12 deletions
diff --git a/tmk_core/protocol/usb_device_state.c b/tmk_core/protocol/usb_device_state.c
index 4cd241528d..98ccfbc902 100644
--- a/tmk_core/protocol/usb_device_state.c
+++ b/tmk_core/protocol/usb_device_state.c
@@ -24,15 +24,15 @@
24# include "os_detection.h" 24# include "os_detection.h"
25#endif 25#endif
26 26
27enum usb_device_state usb_device_state = USB_DEVICE_STATE_NO_INIT; 27static struct usb_device_state usb_device_state = {.idle_rate = 0, .leds = 0, .protocol = USB_PROTOCOL_REPORT, .configure_state = USB_DEVICE_STATE_NO_INIT};
28 28
29__attribute__((weak)) void notify_usb_device_state_change_kb(enum usb_device_state usb_device_state) { 29__attribute__((weak)) void notify_usb_device_state_change_kb(struct usb_device_state usb_device_state) {
30 notify_usb_device_state_change_user(usb_device_state); 30 notify_usb_device_state_change_user(usb_device_state);
31} 31}
32 32
33__attribute__((weak)) void notify_usb_device_state_change_user(enum usb_device_state usb_device_state) {} 33__attribute__((weak)) void notify_usb_device_state_change_user(struct usb_device_state usb_device_state) {}
34 34
35static void notify_usb_device_state_change(enum usb_device_state usb_device_state) { 35static void notify_usb_device_state_change(struct usb_device_state usb_device_state) {
36#if defined(HAPTIC_ENABLE) && HAPTIC_OFF_IN_LOW_POWER 36#if defined(HAPTIC_ENABLE) && HAPTIC_OFF_IN_LOW_POWER
37 haptic_notify_usb_device_state_change(); 37 haptic_notify_usb_device_state_change();
38#endif 38#endif
@@ -44,27 +44,58 @@ static void notify_usb_device_state_change(enum usb_device_state usb_device_stat
44#endif 44#endif
45} 45}
46 46
47void usb_device_state_set_configuration(bool isConfigured, uint8_t configurationNumber) { 47void usb_device_state_set_configuration(bool is_configured, uint8_t configuration_number) {
48 usb_device_state = isConfigured ? USB_DEVICE_STATE_CONFIGURED : USB_DEVICE_STATE_INIT; 48 usb_device_state.configure_state = is_configured ? USB_DEVICE_STATE_CONFIGURED : USB_DEVICE_STATE_INIT;
49 notify_usb_device_state_change(usb_device_state); 49 notify_usb_device_state_change(usb_device_state);
50} 50}
51 51
52void usb_device_state_set_suspend(bool isConfigured, uint8_t configurationNumber) { 52void usb_device_state_set_suspend(bool is_configured, uint8_t configuration_number) {
53 usb_device_state = USB_DEVICE_STATE_SUSPEND; 53 usb_device_state.configure_state = USB_DEVICE_STATE_SUSPEND;
54 notify_usb_device_state_change(usb_device_state); 54 notify_usb_device_state_change(usb_device_state);
55} 55}
56 56
57void usb_device_state_set_resume(bool isConfigured, uint8_t configurationNumber) { 57void usb_device_state_set_resume(bool is_configured, uint8_t configuration_number) {
58 usb_device_state = isConfigured ? USB_DEVICE_STATE_CONFIGURED : USB_DEVICE_STATE_INIT; 58 usb_device_state.configure_state = is_configured ? USB_DEVICE_STATE_CONFIGURED : USB_DEVICE_STATE_INIT;
59 notify_usb_device_state_change(usb_device_state); 59 notify_usb_device_state_change(usb_device_state);
60} 60}
61 61
62void usb_device_state_set_reset(void) { 62void usb_device_state_set_reset(void) {
63 usb_device_state = USB_DEVICE_STATE_INIT; 63 usb_device_state.configure_state = USB_DEVICE_STATE_INIT;
64 notify_usb_device_state_change(usb_device_state); 64 notify_usb_device_state_change(usb_device_state);
65} 65}
66 66
67void usb_device_state_init(void) { 67void usb_device_state_init(void) {
68 usb_device_state = USB_DEVICE_STATE_INIT; 68 usb_device_state.configure_state = USB_DEVICE_STATE_INIT;
69 notify_usb_device_state_change(usb_device_state); 69 notify_usb_device_state_change(usb_device_state);
70} 70}
71
72inline usb_configure_state_t usb_device_state_get_configure_state(void) {
73 return usb_device_state.configure_state;
74}
75
76void usb_device_state_set_protocol(usb_hid_protocol_t protocol) {
77 usb_device_state.protocol = protocol == USB_PROTOCOL_BOOT ? USB_PROTOCOL_BOOT : USB_PROTOCOL_REPORT;
78 notify_usb_device_state_change(usb_device_state);
79}
80
81inline usb_hid_protocol_t usb_device_state_get_protocol() {
82 return usb_device_state.protocol;
83}
84
85void usb_device_state_set_leds(uint8_t leds) {
86 usb_device_state.leds = leds;
87 notify_usb_device_state_change(usb_device_state);
88}
89
90inline uint8_t usb_device_state_get_leds(void) {
91 return usb_device_state.leds;
92}
93
94void usb_device_state_set_idle_rate(uint8_t idle_rate) {
95 usb_device_state.idle_rate = idle_rate;
96 notify_usb_device_state_change(usb_device_state);
97}
98
99inline uint8_t usb_device_state_get_idle_rate(void) {
100 return usb_device_state.idle_rate;
101}