diff --git a/radio/src/eeprom_raw.cpp b/radio/src/eeprom_raw.cpp index 31a2612b8..a60c68066 100644 --- a/radio/src/eeprom_raw.cpp +++ b/radio/src/eeprom_raw.cpp @@ -185,20 +185,25 @@ bool eepromOpen() uint32_t readFile(int index, uint8_t * data, uint32_t size) { - EepromFileHeader header; - uint32_t address = eepromHeader.files[index].zoneIndex * EEPROM_ZONE_SIZE; - eepromRead(address, (uint8_t *)&header, sizeof(header)); - if (size < header.size) { - header.size = size; + if (eepromHeader.files[index].exists) { + EepromFileHeader header; + uint32_t address = eepromHeader.files[index].zoneIndex * EEPROM_ZONE_SIZE; + eepromRead(address, (uint8_t *)&header, sizeof(header)); + if (size < header.size) { + header.size = size; + } + if (header.size > 0) { + eepromRead(address + sizeof(header), data, header.size); + size -= header.size; + } + if (size > 0) { + memset(data + header.size, 0, size); + } + return header.size; } - if (header.size > 0) { - eepromRead(address + sizeof(header), data, header.size); - size -= header.size; + else { + return 0; } - if (size > 0) { - memset(data + header.size, 0, size); - } - return header.size; } void eepromIncFatAddr() diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 86d6a8914..11244f9df 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -136,7 +136,7 @@ #define NUM_CHNOUT 32 // number of real output channels CH1-CH32 #define MAX_FLIGHT_MODES 9 #define MAX_MIXERS 64 - #define MAX_EXPOS 64 + #define MAX_EXPOS 32 #define NUM_LOGICAL_SWITCH 32 // number of custom switches #define NUM_CFN 64 // number of functions assigned to switches #define NUM_TRAINER 16 @@ -363,8 +363,8 @@ enum BeeperMode { #define swarnenable_t uint8_t #endif #else - #define swarnstate_t uint8_t - #define swarnenable_t uint8_t + #define swarnstate_t uint8_t + #define swarnenable_t uint8_t #endif #if defined(PCBTARANIS) @@ -456,7 +456,7 @@ PACK(typedef struct { TRAINER_MODULE }; #define MODELDATA_BITMAP - #define MODELDATA_EXTRA uint8_t externalModule; ModuleData moduleData[NUM_MODULES+1]; uint8_t potsWarnMode:2; uint8_t potsWarnEnabled:6; int8_t potsWarnPosition[NUM_POTS]; uint8_t rxBattAlarms[2]; + #define MODELDATA_EXTRA uint8_t externalModule:3; uint8_t spare:3; uint8_t potsWarnMode:2; ModuleData moduleData[NUM_MODULES+1]; uint8_t potsWarnEnabled; int8_t potsWarnPosition[NUM_POTS]; uint8_t rxBattAlarms[2]; #else #define MODELDATA_BITMAP #define MODELDATA_EXTRA diff --git a/radio/src/targets/sky9x/eeprom_driver.cpp b/radio/src/targets/sky9x/eeprom_driver.cpp index 1ba4868df..9e5e43225 100644 --- a/radio/src/targets/sky9x/eeprom_driver.cpp +++ b/radio/src/targets/sky9x/eeprom_driver.cpp @@ -102,6 +102,10 @@ uint8_t eepromTransmitByte(uint8_t out, bool skipFirst) register Spi *spiptr; register uint32_t delay; +#if defined(SIMU) + return 0; +#endif + spiptr = SPI; spiptr->SPI_CR = 1; // Enable (void) spiptr->SPI_RDR; // Dump any rx data