Separate 6KRO and NKRO report structs (#22267)
This commit is contained in:
parent
bf6f13a2b0
commit
0c160e1fba
20 changed files with 187 additions and 165 deletions
|
@ -36,6 +36,7 @@ uint8_t g_usb_state = USB_FSMSTATUS_FSMSTATE_OFF_Val; // Saved USB state from ha
|
|||
void main_subtasks(void);
|
||||
uint8_t keyboard_leds(void);
|
||||
void send_keyboard(report_keyboard_t *report);
|
||||
void send_nkro(report_nkro_t *report);
|
||||
void send_mouse(report_mouse_t *report);
|
||||
void send_extra(report_extra_t *report);
|
||||
|
||||
|
@ -43,7 +44,7 @@ void send_extra(report_extra_t *report);
|
|||
void deferred_exec_task(void);
|
||||
#endif // DEFERRED_EXEC_ENABLE
|
||||
|
||||
host_driver_t arm_atsam_driver = {keyboard_leds, send_keyboard, send_mouse, send_extra};
|
||||
host_driver_t arm_atsam_driver = {keyboard_leds, send_keyboard, send_nkro, send_mouse, send_extra};
|
||||
|
||||
uint8_t led_states;
|
||||
|
||||
|
@ -59,41 +60,41 @@ uint8_t keyboard_leds(void) {
|
|||
void send_keyboard(report_keyboard_t *report) {
|
||||
uint32_t irqflags;
|
||||
|
||||
while (udi_hid_kbd_b_report_trans_ongoing) {
|
||||
main_subtasks();
|
||||
} // Run other tasks while waiting for USB to be free
|
||||
|
||||
irqflags = __get_PRIMASK();
|
||||
__disable_irq();
|
||||
__DMB();
|
||||
|
||||
memcpy(udi_hid_kbd_report, report, UDI_HID_KBD_REPORT_SIZE);
|
||||
udi_hid_kbd_b_report_valid = 1;
|
||||
udi_hid_kbd_send_report();
|
||||
|
||||
__DMB();
|
||||
__set_PRIMASK(irqflags);
|
||||
}
|
||||
|
||||
void send_nkro(report_nkro_t *report) {
|
||||
#ifdef NKRO_ENABLE
|
||||
if (!keymap_config.nkro) {
|
||||
#endif // NKRO_ENABLE
|
||||
while (udi_hid_kbd_b_report_trans_ongoing) {
|
||||
main_subtasks();
|
||||
} // Run other tasks while waiting for USB to be free
|
||||
uint32_t irqflags;
|
||||
|
||||
irqflags = __get_PRIMASK();
|
||||
__disable_irq();
|
||||
__DMB();
|
||||
while (udi_hid_nkro_b_report_trans_ongoing) {
|
||||
main_subtasks();
|
||||
} // Run other tasks while waiting for USB to be free
|
||||
|
||||
memcpy(udi_hid_kbd_report, report->raw, UDI_HID_KBD_REPORT_SIZE);
|
||||
udi_hid_kbd_b_report_valid = 1;
|
||||
udi_hid_kbd_send_report();
|
||||
irqflags = __get_PRIMASK();
|
||||
__disable_irq();
|
||||
__DMB();
|
||||
|
||||
__DMB();
|
||||
__set_PRIMASK(irqflags);
|
||||
#ifdef NKRO_ENABLE
|
||||
} else {
|
||||
while (udi_hid_nkro_b_report_trans_ongoing) {
|
||||
main_subtasks();
|
||||
} // Run other tasks while waiting for USB to be free
|
||||
memcpy(udi_hid_nkro_report, report, UDI_HID_NKRO_REPORT_SIZE);
|
||||
udi_hid_nkro_b_report_valid = 1;
|
||||
udi_hid_nkro_send_report();
|
||||
|
||||
irqflags = __get_PRIMASK();
|
||||
__disable_irq();
|
||||
__DMB();
|
||||
|
||||
memcpy(udi_hid_nkro_report, report->raw, UDI_HID_NKRO_REPORT_SIZE);
|
||||
udi_hid_nkro_b_report_valid = 1;
|
||||
udi_hid_nkro_send_report();
|
||||
|
||||
__DMB();
|
||||
__set_PRIMASK(irqflags);
|
||||
}
|
||||
#endif // NKRO_ENABLE
|
||||
__DMB();
|
||||
__set_PRIMASK(irqflags);
|
||||
#endif
|
||||
}
|
||||
|
||||
void send_mouse(report_mouse_t *report) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue