From 19838dbb38b99815345b0e145ed854e36b715cb7 Mon Sep 17 00:00:00 2001 From: Federico Amedeo Izzo Date: Wed, 10 Feb 2021 20:30:57 +0100 Subject: [PATCH] Read VFO channel from flash when initializing state --- openrtx/src/state.c | 25 +++++++++++++++---------- platform/drivers/NVM/nvmem_GDx.c | 6 ++++++ platform/drivers/NVM/nvmem_MD3x0.c | 6 ++++++ platform/drivers/NVM/nvmem_linux.c | 6 ++++++ 4 files changed, 33 insertions(+), 10 deletions(-) diff --git a/openrtx/src/state.c b/openrtx/src/state.c index 63708c4b..07d5ed9a 100644 --- a/openrtx/src/state.c +++ b/openrtx/src/state.c @@ -24,6 +24,7 @@ #include #include #include +#include state_t state; @@ -43,17 +44,21 @@ void state_init() // Set default channel index (it is 1-based) state.channel_index = 1; - // Set VFO channel default settings state.channelInfoUpdated = true; - state.channel.mode = FM; - state.channel.bandwidth = BW_25; - state.channel.power = 1.0; - state.channel.rx_frequency = 430000000; - state.channel.tx_frequency = 430000000; - state.channel.fm.rxToneEn = 0; - state.channel.fm.rxTone = 2; // 71.9Hz - state.channel.fm.txToneEn = 1; - state.channel.fm.txTone = 2; // 71.9Hz + // Read VFO channel from Flash storage + if(nvm_readVFOChannelData(&state.channel) != 0) + { + // If the read fails set VFO channel default settings + state.channel.mode = FM; + state.channel.bandwidth = BW_25; + state.channel.power = 1.0; + state.channel.rx_frequency = 430000000; + state.channel.tx_frequency = 430000000; + state.channel.fm.rxToneEn = 0; + state.channel.fm.rxTone = 2; // 71.9Hz + state.channel.fm.txToneEn = 1; + state.channel.fm.txTone = 2; // 71.9Hz + } state.zone_enabled = false; state.rtxStatus = RTX_OFF; #ifdef HAS_ABSOLUTE_KNOB // If the radio has an absolute position knob diff --git a/platform/drivers/NVM/nvmem_GDx.c b/platform/drivers/NVM/nvmem_GDx.c index 7460313a..71012ed7 100644 --- a/platform/drivers/NVM/nvmem_GDx.c +++ b/platform/drivers/NVM/nvmem_GDx.c @@ -239,6 +239,12 @@ void nvm_loadHwInfo(hwInfo_t *info) (void) info; } +int nvm_readVFOChannelData(channel_t *channel) +{ + (void) channel; + return -1; +} + int nvm_readChannelData(channel_t *channel, uint16_t pos) { (void) channel; diff --git a/platform/drivers/NVM/nvmem_MD3x0.c b/platform/drivers/NVM/nvmem_MD3x0.c index f873b075..34ec8137 100644 --- a/platform/drivers/NVM/nvmem_MD3x0.c +++ b/platform/drivers/NVM/nvmem_MD3x0.c @@ -153,6 +153,12 @@ void nvm_loadHwInfo(hwInfo_t *info) info->lcd_type = lcdInfo & 0x03; } +int nvm_readVFOChannelData(channel_t *channel) +{ + (void) channel; + return -1; +} + int nvm_readChannelData(channel_t *channel, uint16_t pos) { if((pos <= 0) || (pos > maxNumChannels)) return -1; diff --git a/platform/drivers/NVM/nvmem_linux.c b/platform/drivers/NVM/nvmem_linux.c index 752b5d28..1291976f 100644 --- a/platform/drivers/NVM/nvmem_linux.c +++ b/platform/drivers/NVM/nvmem_linux.c @@ -42,6 +42,12 @@ void nvm_loadHwInfo(hwInfo_t *info) (void) info; } +int nvm_readVFOChannelData(channel_t *channel) +{ + (void) channel; + return -1; +} + int nvm_readChannelData(channel_t *channel, uint16_t pos) { if((pos <= 0) || (pos > maxNumChannels)) return -1;