Make EEPROM transfers receive an operation and a buffer id parameter. This allows reading and writing both staging and validated user configurations which will aid future debugging. This API is also cleaner.

This commit is contained in:
László Monda
2017-10-05 02:45:22 +02:00
parent 259f4d3299
commit 377fe4a2b2
6 changed files with 67 additions and 39 deletions

View File

@@ -158,10 +158,23 @@ void getAdcValue(void)
GenericHidOutBuffer[3] = adcValue >> 24;
}
void launchEepromTransfer(void)
void legacyLaunchEepromTransfer(void)
{
eeprom_transfer_t transferType = GenericHidInBuffer[1];
EEPROM_LaunchTransfer(transferType, NULL);
uint8_t legacyEepromTransferId = GenericHidInBuffer[1];
switch (legacyEepromTransferId) {
case 0:
EEPROM_LaunchTransfer(EepromOperation_Read, ConfigBufferId_HardwareConfig, NULL);
break;
case 1:
EEPROM_LaunchTransfer(EepromOperation_Write, ConfigBufferId_HardwareConfig, NULL);
break;
case 2:
EEPROM_LaunchTransfer(EepromOperation_Read, ConfigBufferId_ValidatedUserConfig, NULL);
break;
case 3:
EEPROM_LaunchTransfer(EepromOperation_Write, ConfigBufferId_StagingUserConfig, NULL);
break;
}
}
void readConfiguration(bool isHardware)
@@ -174,7 +187,7 @@ void readConfiguration(bool isHardware)
return;
}
uint8_t *buffer = isHardware ? HardwareConfigBuffer.buffer : StagingUserConfigBuffer.buffer;
uint8_t *buffer = isHardware ? HardwareConfigBuffer.buffer : ValidatedUserConfigBuffer.buffer;
uint16_t bufferLength = isHardware ? HARDWARE_CONFIG_SIZE : USER_CONFIG_SIZE;
if (offset + length > bufferLength) {
@@ -281,7 +294,7 @@ void UsbProtocolHandler(void)
getAdcValue();
break;
case UsbCommand_LaunchEepromTransfer:
launchEepromTransfer();
legacyLaunchEepromTransfer();
break;
case UsbCommand_ReadHardwareConfiguration:
readConfiguration(true);