Replace UsbCommandId_ReadHardwareConfig and UsbCommandId_ReadUserConfig with UsbCommandId_ReadConfig.
This commit is contained in:
@@ -12,6 +12,11 @@ config_buffer_t ValidatedUserConfigBuffer = { validatedUserConfig };
|
|||||||
|
|
||||||
bool ParserRunDry;
|
bool ParserRunDry;
|
||||||
|
|
||||||
|
bool IsConfigBufferIdValid(config_buffer_id_t configBufferId)
|
||||||
|
{
|
||||||
|
return ConfigBufferId_HardwareConfig <= configBufferId && configBufferId <= ConfigBufferId_ValidatedUserConfig;
|
||||||
|
}
|
||||||
|
|
||||||
config_buffer_t* ConfigBufferIdToConfigBuffer(config_buffer_id_t configBufferId)
|
config_buffer_t* ConfigBufferIdToConfigBuffer(config_buffer_id_t configBufferId)
|
||||||
{
|
{
|
||||||
switch (configBufferId) {
|
switch (configBufferId) {
|
||||||
@@ -25,3 +30,16 @@ config_buffer_t* ConfigBufferIdToConfigBuffer(config_buffer_id_t configBufferId)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint16_t ConfigBufferIdToBufferSize(config_buffer_id_t configBufferId)
|
||||||
|
{
|
||||||
|
switch (configBufferId) {
|
||||||
|
case ConfigBufferId_HardwareConfig:
|
||||||
|
return HARDWARE_CONFIG_SIZE;
|
||||||
|
case ConfigBufferId_StagingUserConfig:
|
||||||
|
case ConfigBufferId_ValidatedUserConfig:
|
||||||
|
return USER_CONFIG_SIZE;
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -23,6 +23,8 @@
|
|||||||
|
|
||||||
// Functions:
|
// Functions:
|
||||||
|
|
||||||
|
bool IsConfigBufferIdValid(config_buffer_id_t configBufferId);
|
||||||
config_buffer_t* ConfigBufferIdToConfigBuffer(config_buffer_id_t configBufferId);
|
config_buffer_t* ConfigBufferIdToConfigBuffer(config_buffer_id_t configBufferId);
|
||||||
|
uint16_t ConfigBufferIdToBufferSize(config_buffer_id_t configBufferId);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -3,23 +3,28 @@
|
|||||||
#include "usb_protocol_handler.h"
|
#include "usb_protocol_handler.h"
|
||||||
#include "eeprom.h"
|
#include "eeprom.h"
|
||||||
|
|
||||||
void UsbCommand_ReadConfig(bool isHardware)
|
void UsbCommand_ReadConfig()
|
||||||
{
|
{
|
||||||
uint8_t length = GetUsbRxBufferUint8(1);
|
config_buffer_id_t configBufferId = GetUsbRxBufferUint8(1);
|
||||||
uint16_t offset = GetUsbRxBufferUint16(2);
|
uint8_t length = GetUsbRxBufferUint8(2);
|
||||||
|
uint16_t offset = GetUsbRxBufferUint16(3);
|
||||||
|
|
||||||
|
if (!IsConfigBufferIdValid(configBufferId)) {
|
||||||
|
SetUsbTxBufferUint8(0, UsbStatusCode_ReadConfig_InvalidConfigBufferId);
|
||||||
|
}
|
||||||
|
|
||||||
if (length > USB_GENERIC_HID_OUT_BUFFER_LENGTH - USB_STATUS_CODE_SIZE) {
|
if (length > USB_GENERIC_HID_OUT_BUFFER_LENGTH - USB_STATUS_CODE_SIZE) {
|
||||||
SetUsbTxBufferUint8(0, UsbStatusCode_ReadConfig_LengthTooLarge);
|
SetUsbTxBufferUint8(0, UsbStatusCode_ReadConfig_LengthTooLarge);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t *buffer = isHardware ? HardwareConfigBuffer.buffer : ValidatedUserConfigBuffer.buffer;
|
config_buffer_t *buffer = ConfigBufferIdToConfigBuffer(configBufferId);
|
||||||
uint16_t bufferLength = isHardware ? HARDWARE_CONFIG_SIZE : USER_CONFIG_SIZE;
|
uint16_t bufferLength = ConfigBufferIdToBufferSize(configBufferId);
|
||||||
|
|
||||||
if (offset + length > bufferLength) {
|
if (offset + length > bufferLength) {
|
||||||
SetUsbTxBufferUint8(0, UsbStatusCode_ReadConfig_BufferOutOfBounds);
|
SetUsbTxBufferUint8(0, UsbStatusCode_ReadConfig_BufferOutOfBounds);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(GenericHidOutBuffer + USB_STATUS_CODE_SIZE, buffer + offset, length);
|
memcpy(GenericHidOutBuffer + USB_STATUS_CODE_SIZE, buffer->buffer + offset, length);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,13 +3,14 @@
|
|||||||
|
|
||||||
// Functions:
|
// Functions:
|
||||||
|
|
||||||
void UsbCommand_ReadConfig(bool isHardware);
|
void UsbCommand_ReadConfig();
|
||||||
|
|
||||||
// Typedefs:
|
// Typedefs:
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
UsbStatusCode_ReadConfig_LengthTooLarge = 2,
|
UsbStatusCode_ReadConfig_InvalidConfigBufferId = 2,
|
||||||
UsbStatusCode_ReadConfig_BufferOutOfBounds = 3,
|
UsbStatusCode_ReadConfig_LengthTooLarge = 3,
|
||||||
|
UsbStatusCode_ReadConfig_BufferOutOfBounds = 4,
|
||||||
} usb_status_code_read_config_t;
|
} usb_status_code_read_config_t;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -43,13 +43,10 @@ void UsbProtocolHandler(void)
|
|||||||
case UsbCommandId_LaunchEepromTransferLegacy:
|
case UsbCommandId_LaunchEepromTransferLegacy:
|
||||||
UsbCommand_LaunchEepromTransferLegacy();
|
UsbCommand_LaunchEepromTransferLegacy();
|
||||||
break;
|
break;
|
||||||
case UsbCommandId_ReadHardwareConfig:
|
case UsbCommandId_ReadConfig:
|
||||||
UsbCommand_ReadConfig(true);
|
UsbCommand_ReadConfig();
|
||||||
break;
|
break;
|
||||||
case UsbCommandId_WriteHardwareConfig:
|
case UsbCommandId_WriteHardwareConfig:
|
||||||
UsbCommand_WriteConfig(true);
|
|
||||||
break;
|
|
||||||
case UsbCommandId_ReadUserConfig:
|
|
||||||
UsbCommand_ReadConfig(false);
|
UsbCommand_ReadConfig(false);
|
||||||
break;
|
break;
|
||||||
case UsbCommandId_GetKeyboardState:
|
case UsbCommandId_GetKeyboardState:
|
||||||
|
|||||||
@@ -19,9 +19,7 @@
|
|||||||
UsbCommandId_JumpToModuleBootloader = 0x02, // was 0x12
|
UsbCommandId_JumpToModuleBootloader = 0x02, // was 0x12
|
||||||
UsbCommandId_SendKbootCommandToModule = 0x03, // was 0x13
|
UsbCommandId_SendKbootCommandToModule = 0x03, // was 0x13
|
||||||
|
|
||||||
UsbCommandId_ReadHardwareConfig = 0x0D,
|
UsbCommandId_ReadConfig = 0x04, // was 0x0d and 0x0f
|
||||||
UsbCommandId_ReadUserConfig = 0x0F,
|
|
||||||
// use ReadConfig instead of the above 2
|
|
||||||
UsbCommandId_WriteHardwareConfig = 0x0E,
|
UsbCommandId_WriteHardwareConfig = 0x0E,
|
||||||
UsbCommandId_WriteUserConfig = 0x08,
|
UsbCommandId_WriteUserConfig = 0x08,
|
||||||
UsbCommandId_ApplyConfig = 0x09,
|
UsbCommandId_ApplyConfig = 0x09,
|
||||||
|
|||||||
Reference in New Issue
Block a user