diff --git a/right/src/key_action.h b/right/src/key_action.h index a68c5ad..a454f1a 100644 --- a/right/src/key_action.h +++ b/right/src/key_action.h @@ -7,7 +7,6 @@ #include "attributes.h" #include "lufa/HIDClassCommon.h" #include "usb_composite_device.h" - #include "main.h" #include "module.h" // Macros: diff --git a/right/src/main.c b/right/src/main.c index 3cb3f6b..e9e98bf 100644 --- a/right/src/main.c +++ b/right/src/main.c @@ -1,79 +1,16 @@ #include "config.h" -#include "main.h" #include "init_clock.h" #include "init_peripherals.h" #include "usb_composite_device.h" -#include "peripherals/led_driver.h" -#include "key_action.h" #include "slave_scheduler.h" -#include "peripherals/test_led.h" -#include "usb_interfaces/usb_interface_basic_keyboard.h" -#include "usb_interfaces/usb_interface_media_keyboard.h" -#include "usb_protocol_handler.h" #include "bus_pal_hardware.h" #include "command.h" #include "bootloader/wormhole.h" #include "eeprom.h" -#include "right_key_matrix.h" #include "key_scanner.h" -#include "key_states.h" #include "usb_commands/usb_command_apply_config.h" #include "peripherals/reset_button.h" - -bool UsbBasicKeyboardReportEverSent = false; -bool UsbMediaKeyboardReportEverSent = false; -bool UsbSystemKeyboardReportEverSent = false; -bool UsbMouseReportEverSentEverSent = false; - -void updateUsbReports(void) -{ - if (IsUsbBasicKeyboardReportSent) { - UsbBasicKeyboardReportEverSent = true; - } - if (IsUsbMediaKeyboardReportSent) { - UsbMediaKeyboardReportEverSent = true; - } - if (IsUsbSystemKeyboardReportSent) { - UsbSystemKeyboardReportEverSent = true; - } - if (IsUsbMouseReportSent) { - UsbMouseReportEverSentEverSent = true; - } - - bool areUsbReportsSent = true; - if (UsbBasicKeyboardReportEverSent) { - areUsbReportsSent &= IsUsbBasicKeyboardReportSent; - } - if (UsbMediaKeyboardReportEverSent) { - areUsbReportsSent &= IsUsbMediaKeyboardReportSent; - } - if (UsbSystemKeyboardReportEverSent) { - areUsbReportsSent &= IsUsbSystemKeyboardReportSent; - } - if (UsbMouseReportEverSentEverSent) { - areUsbReportsSent &= IsUsbMouseReportSent; - } - if (!areUsbReportsSent) { - return; - } - - ResetActiveUsbBasicKeyboardReport(); - ResetActiveUsbMediaKeyboardReport(); - ResetActiveUsbSystemKeyboardReport(); - ResetActiveUsbMouseReport(); - - UpdateActiveUsbReports(); - - SwitchActiveUsbBasicKeyboardReport(); - SwitchActiveUsbMediaKeyboardReport(); - SwitchActiveUsbSystemKeyboardReport(); - SwitchActiveUsbMouseReport(); - - IsUsbBasicKeyboardReportSent = false; - IsUsbMediaKeyboardReportSent = false; - IsUsbSystemKeyboardReportSent = false; - IsUsbMouseReportSent = false; -} +#include "usb_report_updater.h" bool IsEepromInitialized = false; bool IsConfigInitialized = false; @@ -105,7 +42,7 @@ void main(void) InitSlaveScheduler(); KeyMatrix_Init(&RightKeyMatrix); InitKeyScanner(); - updateUsbReports(); + UpdateUsbReports(); InitUsb(); while (1) { @@ -113,7 +50,7 @@ void main(void) UsbCommand_ApplyConfig(); IsConfigInitialized = true; } - updateUsbReports(); + UpdateUsbReports(); __WFI(); } } diff --git a/right/src/main.h b/right/src/main.h deleted file mode 100644 index 605be2f..0000000 --- a/right/src/main.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef __MAIN_H__ -#define __MAIN_H__ - -// Includes: - - #include "key_matrix.h" - #include "slot.h" - #include "module.h" - -#endif diff --git a/right/src/slave_drivers/uhk_module_driver.c b/right/src/slave_drivers/uhk_module_driver.c index d2a3f6a..0cd88da 100644 --- a/right/src/slave_drivers/uhk_module_driver.c +++ b/right/src/slave_drivers/uhk_module_driver.c @@ -3,7 +3,6 @@ #include "slave_scheduler.h" #include "slave_drivers/uhk_module_driver.h" #include "slave_protocol.h" -#include "main.h" #include "peripherals/test_led.h" #include "bool_array_converter.h" #include "crc16.h" diff --git a/right/src/slave_scheduler.c b/right/src/slave_scheduler.c index 5c65cc1..c4eb607 100644 --- a/right/src/slave_scheduler.c +++ b/right/src/slave_scheduler.c @@ -1,7 +1,6 @@ #include "fsl_i2c.h" #include "slave_scheduler.h" #include "slot.h" -#include "main.h" #include "slave_drivers/is31fl3731_driver.h" #include "slave_drivers/uhk_module_driver.h" #include "slave_drivers/kboot_driver.h" diff --git a/right/src/usb_interfaces/usb_interface_basic_keyboard.c b/right/src/usb_interfaces/usb_interface_basic_keyboard.c index 4994509..81d04f8 100644 --- a/right/src/usb_interfaces/usb_interface_basic_keyboard.c +++ b/right/src/usb_interfaces/usb_interface_basic_keyboard.c @@ -1,4 +1,3 @@ -#include "main.h" #include "key_action.h" #include "fsl_port.h" #include "usb_api.h" diff --git a/right/src/usb_interfaces/usb_interface_media_keyboard.c b/right/src/usb_interfaces/usb_interface_media_keyboard.c index 5b2c0cd..670129b 100644 --- a/right/src/usb_interfaces/usb_interface_media_keyboard.c +++ b/right/src/usb_interfaces/usb_interface_media_keyboard.c @@ -1,4 +1,3 @@ -#include "main.h" #include "key_action.h" #include "fsl_port.h" #include "usb_api.h" diff --git a/right/src/usb_interfaces/usb_interface_system_keyboard.c b/right/src/usb_interfaces/usb_interface_system_keyboard.c index 359ab90..b641c3f 100644 --- a/right/src/usb_interfaces/usb_interface_system_keyboard.c +++ b/right/src/usb_interfaces/usb_interface_system_keyboard.c @@ -1,4 +1,3 @@ -#include "main.h" #include "key_action.h" #include "fsl_port.h" #include "usb_api.h" diff --git a/right/src/usb_report_updater.c b/right/src/usb_report_updater.c index f248307..0b0b271 100644 --- a/right/src/usb_report_updater.c +++ b/right/src/usb_report_updater.c @@ -132,7 +132,7 @@ static uint8_t secondaryRoleSlotId; static uint8_t secondaryRoleKeyId; static secondary_role_t secondaryRole; -void UpdateActiveUsbReports(void) +void updateActiveUsbReports(void) { static uint8_t previousModifiers = 0; elapsedTime = Timer_GetElapsedTime(&UsbReportUpdateTime); @@ -231,3 +231,58 @@ void UpdateActiveUsbReports(void) previousModifiers = ActiveUsbBasicKeyboardReport->modifiers; previousLayer = activeLayer; } + +bool UsbBasicKeyboardReportEverSent = false; +bool UsbMediaKeyboardReportEverSent = false; +bool UsbSystemKeyboardReportEverSent = false; +bool UsbMouseReportEverSentEverSent = false; + +void UpdateUsbReports(void) +{ + if (IsUsbBasicKeyboardReportSent) { + UsbBasicKeyboardReportEverSent = true; + } + if (IsUsbMediaKeyboardReportSent) { + UsbMediaKeyboardReportEverSent = true; + } + if (IsUsbSystemKeyboardReportSent) { + UsbSystemKeyboardReportEverSent = true; + } + if (IsUsbMouseReportSent) { + UsbMouseReportEverSentEverSent = true; + } + + bool areUsbReportsSent = true; + if (UsbBasicKeyboardReportEverSent) { + areUsbReportsSent &= IsUsbBasicKeyboardReportSent; + } + if (UsbMediaKeyboardReportEverSent) { + areUsbReportsSent &= IsUsbMediaKeyboardReportSent; + } + if (UsbSystemKeyboardReportEverSent) { + areUsbReportsSent &= IsUsbSystemKeyboardReportSent; + } + if (UsbMouseReportEverSentEverSent) { + areUsbReportsSent &= IsUsbMouseReportSent; + } + if (!areUsbReportsSent) { + return; + } + + ResetActiveUsbBasicKeyboardReport(); + ResetActiveUsbMediaKeyboardReport(); + ResetActiveUsbSystemKeyboardReport(); + ResetActiveUsbMouseReport(); + + updateActiveUsbReports(); + + SwitchActiveUsbBasicKeyboardReport(); + SwitchActiveUsbMediaKeyboardReport(); + SwitchActiveUsbSystemKeyboardReport(); + SwitchActiveUsbMouseReport(); + + IsUsbBasicKeyboardReportSent = false; + IsUsbMediaKeyboardReportSent = false; + IsUsbSystemKeyboardReportSent = false; + IsUsbMouseReportSent = false; +} diff --git a/right/src/usb_report_updater.h b/right/src/usb_report_updater.h index 7edabe6..6be26fe 100644 --- a/right/src/usb_report_updater.h +++ b/right/src/usb_report_updater.h @@ -30,4 +30,8 @@ SecondaryRole_Mouse } secondary_role_t; +// Functions: + + void UpdateUsbReports(void); + #endif