diff --git a/right/src/usb_commands/usb_command_apply_config.c b/right/src/usb_commands/usb_command_apply_config.c index 954bdd4..ede6c99 100644 --- a/right/src/usb_commands/usb_command_apply_config.c +++ b/right/src/usb_commands/usb_command_apply_config.c @@ -6,9 +6,9 @@ void updateUsbBuffer(uint8_t usbStatusCode, uint16_t parserOffset, parser_stage_t parserStage) { - SET_USB_BUFFER_UINT8(0, usbStatusCode); - SET_USB_BUFFER_UINT16(1, parserOffset); - SET_USB_BUFFER_UINT8(3, parserStage); + SetUsbTxBufferUint8(0, usbStatusCode); + SetUsbTxBufferUint16(1, parserOffset); + SetUsbTxBufferUint8(3, parserStage); } void UsbCommand_ApplyConfig(void) diff --git a/right/src/usb_commands/usb_command_get_adc_value.c b/right/src/usb_commands/usb_command_get_adc_value.c index 1b99e6a..852ea0f 100644 --- a/right/src/usb_commands/usb_command_get_adc_value.c +++ b/right/src/usb_commands/usb_command_get_adc_value.c @@ -4,5 +4,5 @@ void UsbCommand_GetAdcValue(void) { - SET_USB_BUFFER_UINT32(1, ADC_Measure()); + SetUsbTxBufferUint32(1, ADC_Measure()); } diff --git a/right/src/usb_commands/usb_command_get_keyboard_state.c b/right/src/usb_commands/usb_command_get_keyboard_state.c index e46769f..4a55ccc 100644 --- a/right/src/usb_commands/usb_command_get_keyboard_state.c +++ b/right/src/usb_commands/usb_command_get_keyboard_state.c @@ -7,9 +7,9 @@ void UsbCommand_GetKeyboardState(void) { - SET_USB_BUFFER_UINT8(1, IsEepromBusy); - SET_USB_BUFFER_UINT8(2, MERGE_SENSOR_IS_MERGED); - SET_USB_BUFFER_UINT8(3, UhkModuleStates[UhkModuleDriverId_LeftKeyboardHalf].moduleId); - SET_USB_BUFFER_UINT8(4, UhkModuleStates[UhkModuleDriverId_LeftAddon].moduleId); - SET_USB_BUFFER_UINT8(5, UhkModuleStates[UhkModuleDriverId_RightAddon].moduleId); + SetUsbTxBufferUint8(1, IsEepromBusy); + SetUsbTxBufferUint8(2, MERGE_SENSOR_IS_MERGED); + SetUsbTxBufferUint8(3, UhkModuleStates[UhkModuleDriverId_LeftKeyboardHalf].moduleId); + SetUsbTxBufferUint8(4, UhkModuleStates[UhkModuleDriverId_LeftAddon].moduleId); + SetUsbTxBufferUint8(5, UhkModuleStates[UhkModuleDriverId_RightAddon].moduleId); } diff --git a/right/src/usb_commands/usb_command_get_property.c b/right/src/usb_commands/usb_command_get_property.c index 24fed8a..e6e06b2 100644 --- a/right/src/usb_commands/usb_command_get_property.c +++ b/right/src/usb_commands/usb_command_get_property.c @@ -5,29 +5,29 @@ void UsbCommand_GetProperty(void) { - uint8_t propertyId = GET_USB_BUFFER_UINT8(1); + uint8_t propertyId = GetUsbRxBufferUint8(1); switch (propertyId) { case SystemPropertyId_UsbProtocolVersion: - SET_USB_BUFFER_UINT8(1, SYSTEM_PROPERTY_USB_PROTOCOL_VERSION); + SetUsbTxBufferUint8(1, SYSTEM_PROPERTY_USB_PROTOCOL_VERSION); break; case SystemPropertyId_BridgeProtocolVersion: - SET_USB_BUFFER_UINT8(1, SYSTEM_PROPERTY_BRIDGE_PROTOCOL_VERSION); + SetUsbTxBufferUint8(1, SYSTEM_PROPERTY_BRIDGE_PROTOCOL_VERSION); break; case SystemPropertyId_DataModelVersion: - SET_USB_BUFFER_UINT8(1, SYSTEM_PROPERTY_DATA_MODEL_VERSION); + SetUsbTxBufferUint8(1, SYSTEM_PROPERTY_DATA_MODEL_VERSION); break; case SystemPropertyId_FirmwareVersion: - SET_USB_BUFFER_UINT8(1, SYSTEM_PROPERTY_FIRMWARE_VERSION); + SetUsbTxBufferUint8(1, SYSTEM_PROPERTY_FIRMWARE_VERSION); break; case SystemPropertyId_HardwareConfigSize: - SET_USB_BUFFER_UINT16(1, HARDWARE_CONFIG_SIZE); + SetUsbTxBufferUint16(1, HARDWARE_CONFIG_SIZE); break; case SystemPropertyId_UserConfigSize: - SET_USB_BUFFER_UINT16(1, USER_CONFIG_SIZE); + SetUsbTxBufferUint16(1, USER_CONFIG_SIZE); break; default: - SET_USB_BUFFER_UINT8(0, UsbStatusCode_GetProperty_InvalidProperty); + SetUsbTxBufferUint8(0, UsbStatusCode_GetProperty_InvalidProperty); break; } } diff --git a/right/src/usb_commands/usb_command_jump_to_slave_bootloader.c b/right/src/usb_commands/usb_command_jump_to_slave_bootloader.c index 8f7c4fb..21da0a4 100644 --- a/right/src/usb_commands/usb_command_jump_to_slave_bootloader.c +++ b/right/src/usb_commands/usb_command_jump_to_slave_bootloader.c @@ -5,10 +5,10 @@ void UsbCommand_JumpToSlaveBootloader(void) { - uint8_t slotId = GET_USB_BUFFER_UINT8(1); + uint8_t slotId = GetUsbRxBufferUint8(1); if (!IS_VALID_SLAVE_SLOT(slotId)) { - SET_USB_BUFFER_UINT8(0, UsbStatusCode_JumpToSlaveBootloader_InvalidSlaveSlotId); + SetUsbTxBufferUint8(0, UsbStatusCode_JumpToSlaveBootloader_InvalidSlaveSlotId); return; } diff --git a/right/src/usb_commands/usb_command_launch_eeprom_transfer_legacy.c b/right/src/usb_commands/usb_command_launch_eeprom_transfer_legacy.c index 332478d..ae79309 100644 --- a/right/src/usb_commands/usb_command_launch_eeprom_transfer_legacy.c +++ b/right/src/usb_commands/usb_command_launch_eeprom_transfer_legacy.c @@ -5,7 +5,7 @@ void UsbCommand_LaunchEepromTransferLegacy(void) { - uint8_t legacyEepromTransferId = GET_USB_BUFFER_UINT8(1); + uint8_t legacyEepromTransferId = GetUsbRxBufferUint8(1); switch (legacyEepromTransferId) { case 0: EEPROM_LaunchTransfer(EepromOperation_Read, ConfigBufferId_HardwareConfig, NULL); diff --git a/right/src/usb_commands/usb_command_read_config.c b/right/src/usb_commands/usb_command_read_config.c index b2992c7..3a8e6a7 100644 --- a/right/src/usb_commands/usb_command_read_config.c +++ b/right/src/usb_commands/usb_command_read_config.c @@ -5,11 +5,11 @@ void UsbCommand_ReadConfig(bool isHardware) { - uint8_t length = GET_USB_BUFFER_UINT8(1); - uint16_t offset = GET_USB_BUFFER_UINT16(2); + uint8_t length = GetUsbRxBufferUint8(1); + uint16_t offset = GetUsbRxBufferUint16(2); if (length > USB_GENERIC_HID_OUT_BUFFER_LENGTH - USB_STATUS_CODE_SIZE) { - SET_USB_BUFFER_UINT8(0, UsbStatusCode_ReadConfig_LengthTooLarge); + SetUsbTxBufferUint8(0, UsbStatusCode_ReadConfig_LengthTooLarge); return; } @@ -17,7 +17,7 @@ void UsbCommand_ReadConfig(bool isHardware) uint16_t bufferLength = isHardware ? HARDWARE_CONFIG_SIZE : USER_CONFIG_SIZE; if (offset + length > bufferLength) { - SET_USB_BUFFER_UINT8(0, UsbStatusCode_ReadConfig_BufferOutOfBounds); + SetUsbTxBufferUint8(0, UsbStatusCode_ReadConfig_BufferOutOfBounds); return; } diff --git a/right/src/usb_commands/usb_command_reenumerate.c b/right/src/usb_commands/usb_command_reenumerate.c index 9174826..45abf2c 100644 --- a/right/src/usb_commands/usb_command_reenumerate.c +++ b/right/src/usb_commands/usb_command_reenumerate.c @@ -6,7 +6,7 @@ void UsbCommand_Reenumerate(void) { Wormhole.magicNumber = WORMHOLE_MAGIC_NUMBER; - Wormhole.enumerationMode = GET_USB_BUFFER_UINT8(1); - Wormhole.timeoutMs = GET_USB_BUFFER_UINT32(2); + Wormhole.enumerationMode = GetUsbRxBufferUint8(1); + Wormhole.timeoutMs = GetUsbRxBufferUint32(2); NVIC_SystemReset(); } diff --git a/right/src/usb_commands/usb_command_send_kboot_command.c b/right/src/usb_commands/usb_command_send_kboot_command.c index e46a4ef..3b1213a 100644 --- a/right/src/usb_commands/usb_command_send_kboot_command.c +++ b/right/src/usb_commands/usb_command_send_kboot_command.c @@ -5,6 +5,6 @@ void UsbCommand_SendKbootCommand(void) { KbootDriverState.phase = 0; - KbootDriverState.i2cAddress = GET_USB_BUFFER_UINT8(2); - KbootDriverState.commandType = GET_USB_BUFFER_UINT8(1); // Command should be set last. + KbootDriverState.i2cAddress = GetUsbRxBufferUint8(2); + KbootDriverState.commandType = GetUsbRxBufferUint8(1); // Command should be set last. } diff --git a/right/src/usb_commands/usb_command_set_led_pwm_brightness.c b/right/src/usb_commands/usb_command_set_led_pwm_brightness.c index 635e5af..3cb465a 100644 --- a/right/src/usb_commands/usb_command_set_led_pwm_brightness.c +++ b/right/src/usb_commands/usb_command_set_led_pwm_brightness.c @@ -5,7 +5,7 @@ void UsbCommand_SetLedPwmBrightness(void) { - uint8_t brightnessPercent = GET_USB_BUFFER_UINT8(1); + uint8_t brightnessPercent = GetUsbRxBufferUint8(1); LedPwm_SetBrightness(brightnessPercent); UhkModuleStates[UhkModuleDriverId_LeftKeyboardHalf].sourceVars.ledPwmBrightness = brightnessPercent; } diff --git a/right/src/usb_commands/usb_command_set_test_led.c b/right/src/usb_commands/usb_command_set_test_led.c index 533cf4d..51ed9ee 100644 --- a/right/src/usb_commands/usb_command_set_test_led.c +++ b/right/src/usb_commands/usb_command_set_test_led.c @@ -5,7 +5,7 @@ void UsbCommand_SetTestLed(void) { - bool isTestLedOn = GET_USB_BUFFER_UINT8(1); + bool isTestLedOn = GetUsbRxBufferUint8(1); TEST_LED_SET(isTestLedOn); UhkModuleStates[UhkModuleDriverId_LeftKeyboardHalf].sourceVars.isTestLedOn = isTestLedOn; } diff --git a/right/src/usb_commands/usb_command_write_config.c b/right/src/usb_commands/usb_command_write_config.c index 5a565f5..0297dc4 100644 --- a/right/src/usb_commands/usb_command_write_config.c +++ b/right/src/usb_commands/usb_command_write_config.c @@ -5,12 +5,12 @@ void UsbCommand_WriteConfig(bool isHardware) { - uint8_t length = GET_USB_BUFFER_UINT8(1); - uint16_t offset = GET_USB_BUFFER_UINT16(2); + uint8_t length = GetUsbRxBufferUint8(1); + uint16_t offset = GetUsbRxBufferUint16(2); const uint8_t paramsSize = USB_STATUS_CODE_SIZE + sizeof(length) + sizeof(offset); if (length > USB_GENERIC_HID_OUT_BUFFER_LENGTH - paramsSize) { - SET_USB_BUFFER_UINT8(0, UsbStatusCode_WriteConfig_LengthTooLarge); + SetUsbTxBufferUint8(0, UsbStatusCode_WriteConfig_LengthTooLarge); return; } @@ -18,7 +18,7 @@ void UsbCommand_WriteConfig(bool isHardware) uint16_t bufferLength = isHardware ? HARDWARE_CONFIG_SIZE : USER_CONFIG_SIZE; if (offset + length > bufferLength) { - SET_USB_BUFFER_UINT8(0, UsbStatusCode_WriteConfig_BufferOutOfBounds); + SetUsbTxBufferUint8(0, UsbStatusCode_WriteConfig_BufferOutOfBounds); return; } diff --git a/right/src/usb_protocol_handler.c b/right/src/usb_protocol_handler.c index 3f69055..a14fd94 100644 --- a/right/src/usb_protocol_handler.c +++ b/right/src/usb_protocol_handler.c @@ -1,4 +1,5 @@ #include "usb_protocol_handler.h" +#include "buffer.h" #include "usb_commands/usb_command_get_property.h" #include "usb_commands/usb_command_reenumerate.h" #include "usb_commands/usb_command_set_test_led.h" @@ -16,7 +17,7 @@ void UsbProtocolHandler(void) { bzero(GenericHidOutBuffer, USB_GENERIC_HID_OUT_BUFFER_LENGTH); - uint8_t command = GET_USB_BUFFER_UINT8(0); + uint8_t command = GetUsbRxBufferUint8(0); switch (command) { case UsbCommandId_GetProperty: UsbCommand_GetProperty(); @@ -64,7 +65,37 @@ void UsbProtocolHandler(void) UsbCommand_SendKbootCommand(); break; default: - SET_USB_BUFFER_UINT8(0, UsbStatusCode_InvalidCommand); + SetUsbTxBufferUint8(0, UsbStatusCode_InvalidCommand); break; } } + +uint8_t GetUsbRxBufferUint8(uint32_t offset) +{ + return GetBufferUint8(GenericHidInBuffer, offset); +} + +uint16_t GetUsbRxBufferUint16(uint32_t offset) +{ + return GetBufferUint16(GenericHidInBuffer, offset); +} + +uint32_t GetUsbRxBufferUint32(uint32_t offset) +{ + return GetBufferUint32(GenericHidInBuffer, offset); +} + +void SetUsbTxBufferUint8(uint32_t offset, uint8_t value) +{ + SetBufferUint8(GenericHidOutBuffer, offset, value); +} + +void SetUsbTxBufferUint16(uint32_t offset, uint16_t value) +{ + SetBufferUint16(GenericHidOutBuffer, offset, value); +} + +void SetUsbTxBufferUint32(uint32_t offset, uint32_t value) +{ + SetBufferUint32(GenericHidOutBuffer, offset, value); +} diff --git a/right/src/usb_protocol_handler.h b/right/src/usb_protocol_handler.h index 13daf24..59dabff 100644 --- a/right/src/usb_protocol_handler.h +++ b/right/src/usb_protocol_handler.h @@ -10,14 +10,6 @@ #define USB_STATUS_CODE_SIZE 1 - #define GET_USB_BUFFER_UINT8(offset) (*(uint8_t*)(GenericHidInBuffer+(offset))) - #define GET_USB_BUFFER_UINT16(offset) (*(uint16_t*)(GenericHidInBuffer+(offset))) - #define GET_USB_BUFFER_UINT32(offset) (*(uint32_t*)(GenericHidInBuffer+(offset))) - - #define SET_USB_BUFFER_UINT8(offset, value) (*(uint8_t*)(GenericHidOutBuffer+(offset)) = (value)) - #define SET_USB_BUFFER_UINT16(offset, value) (*(uint16_t*)(GenericHidOutBuffer+(offset)) = (value)) - #define SET_USB_BUFFER_UINT32(offset, value) (*(uint32_t*)(GenericHidOutBuffer+(offset)) = (value)) - // Typedefs: typedef enum { @@ -47,4 +39,12 @@ void UsbProtocolHandler(void); + uint8_t GetUsbRxBufferUint8(uint32_t offset); + uint16_t GetUsbRxBufferUint16(uint32_t offset); + uint32_t GetUsbRxBufferUint32(uint32_t offset); + + void SetUsbTxBufferUint8(uint32_t offset, uint8_t value); + void SetUsbTxBufferUint16(uint32_t offset, uint16_t value); + void SetUsbTxBufferUint32(uint32_t offset, uint32_t value); + #endif