89 lines
2.3 KiB
C
89 lines
2.3 KiB
C
#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"
|
|
|
|
void updateUsbReports(void)
|
|
{
|
|
if (!IsUsbBasicKeyboardReportSent) {
|
|
return;
|
|
}
|
|
|
|
#ifndef INTERRUPT_KEY_SCANNER
|
|
KeyMatrix_Scan(&RightKeyMatrix);
|
|
#endif
|
|
|
|
ResetActiveUsbBasicKeyboardReport();
|
|
ResetActiveUsbMediaKeyboardReport();
|
|
ResetActiveUsbSystemKeyboardReport();
|
|
ResetActiveUsbMouseReport();
|
|
|
|
UpdateActiveUsbReports();
|
|
|
|
SwitchActiveUsbBasicKeyboardReport();
|
|
SwitchActiveUsbMediaKeyboardReport();
|
|
SwitchActiveUsbSystemKeyboardReport();
|
|
SwitchActiveUsbMouseReport();
|
|
|
|
IsUsbBasicKeyboardReportSent = false;
|
|
}
|
|
|
|
bool IsEepromInitialized = false;
|
|
bool IsConfigInitialized = false;
|
|
|
|
void userConfigurationReadFinished(void)
|
|
{
|
|
IsEepromInitialized = true;
|
|
}
|
|
|
|
void hardwareConfigurationReadFinished(void)
|
|
{
|
|
EEPROM_LaunchTransfer(EepromOperation_Read, ConfigBufferId_StagingUserConfig, userConfigurationReadFinished);
|
|
}
|
|
|
|
void main(void)
|
|
{
|
|
InitClock();
|
|
InitPeripherals();
|
|
EEPROM_LaunchTransfer(EepromOperation_Read, ConfigBufferId_HardwareConfig, hardwareConfigurationReadFinished);
|
|
|
|
if (Wormhole.magicNumber == WORMHOLE_MAGIC_NUMBER && Wormhole.enumerationMode == EnumerationMode_BusPal) {
|
|
Wormhole.magicNumber = 0;
|
|
init_hardware();
|
|
handleUsbBusPalCommand();
|
|
} else {
|
|
InitSlaveScheduler();
|
|
KeyMatrix_Init(&RightKeyMatrix);
|
|
#ifdef INTERRUPT_KEY_SCANNER
|
|
InitKeyScanner();
|
|
#endif
|
|
updateUsbReports();
|
|
InitUsb();
|
|
|
|
while (1) {
|
|
if (!IsConfigInitialized && IsEepromInitialized) {
|
|
UsbCommand_ApplyConfig();
|
|
IsConfigInitialized = true;
|
|
}
|
|
updateUsbReports();
|
|
__WFI();
|
|
}
|
|
}
|
|
}
|