26 lines
807 B
C
26 lines
807 B
C
#include "fsl_common.h"
|
|
#include "usb_commands/usb_command_read_config.h"
|
|
#include "usb_protocol_handler.h"
|
|
#include "eeprom.h"
|
|
|
|
void UsbCommand_ReadConfig(bool isHardware)
|
|
{
|
|
uint8_t length = GET_USB_BUFFER_UINT8(1);
|
|
uint16_t offset = GET_USB_BUFFER_UINT16(2);
|
|
|
|
if (length > USB_GENERIC_HID_OUT_BUFFER_LENGTH-1) {
|
|
SET_USB_BUFFER_UINT8(0, UsbStatusCode_ReadConfig_LengthTooLarge);
|
|
return;
|
|
}
|
|
|
|
uint8_t *buffer = isHardware ? HardwareConfigBuffer.buffer : ValidatedUserConfigBuffer.buffer;
|
|
uint16_t bufferLength = isHardware ? HARDWARE_CONFIG_SIZE : USER_CONFIG_SIZE;
|
|
|
|
if (offset + length > bufferLength) {
|
|
SET_USB_BUFFER_UINT8(0, UsbStatusCode_ReadConfig_BufferOutOfBounds);
|
|
return;
|
|
}
|
|
|
|
memcpy(GenericHidOutBuffer+1, buffer+offset, length);
|
|
}
|