CPS: Improved GD-77 channel reading

This commit is contained in:
Federico Amedeo Izzo 2021-02-17 08:06:21 +01:00
parent 5bb200933b
commit 046fcdb417
1 changed files with 7 additions and 7 deletions

View File

@ -197,31 +197,31 @@ int nvm_readChannelData(channel_t *channel, uint16_t pos)
} }
uint8_t bitmap_byte = bank_channel / 8; uint8_t bitmap_byte = bank_channel / 8;
uint8_t bitmap_bit = bank_channel % 8; uint8_t bitmap_bit = bank_channel % 8;
gdxChannelBank_t chBank; gdxChannel_t chData;
// The channel is marked not valid in the bitmap // The channel is marked not valid in the bitmap
if(!(bitmap[bitmap_byte] & (1 >> bitmap_bit))) if(!(bitmap[bitmap_byte] & (1 >> bitmap_bit)))
return -1; return -1;
// The channel is marked valid in the bitmap // The channel is marked valid in the bitmap
// ### Read desired channel from the correct bank ###
else else
// ### Read full channel bank ###
{ {
uint32_t channelOffset = sizeof(bitmap) + (pos - 1) * sizeof(gdxChannel_t);
// First channel bank (128 channels) is saved in EEPROM // First channel bank (128 channels) is saved in EEPROM
if(pos <= 128) if(pos <= 128)
{ {
uint32_t readAddr = channelBaseAddrEEPROM + bank_num * sizeof(gdxChannelBank_t); uint32_t bankAddr = channelBaseAddrEEPROM + bank_num * sizeof(gdxChannelBank_t);
AT24Cx_readData(readAddr, ((uint8_t *) &chBank), sizeof(gdxChannelBank_t)); AT24Cx_readData(bankAddr + channelOffset, ((uint8_t *) &chData), sizeof(gdxChannel_t));
} }
// Remaining 7 channel banks (896 channels) are saved in SPI Flash // Remaining 7 channel banks (896 channels) are saved in SPI Flash
else else
{ {
W25Qx_wakeup(); W25Qx_wakeup();
delayUs(5); delayUs(5);
uint32_t readAddr = channelBaseAddrFlash + (bank_num - 1) * sizeof(gdxChannelBank_t); uint32_t bankAddr = channelBaseAddrFlash + bank_num * sizeof(gdxChannelBank_t);
W25Qx_readData(readAddr, ((uint8_t *) &chBank), sizeof(gdxChannelBank_t)); W25Qx_readData(bankAddr + channelOffset, ((uint8_t *) &chData), sizeof(gdxChannel_t));
W25Qx_sleep(); W25Qx_sleep();
} }
} }
gdxChannel_t chData = chBank.chan[bank_channel];
// Copy data to OpenRTX channel_t // Copy data to OpenRTX channel_t
channel->mode = chData.channel_mode - 1; channel->mode = chData.channel_mode - 1;
channel->bandwidth = chData.bandwidth; channel->bandwidth = chData.bandwidth;