diff --git a/latest/Firmware/Transponder/Inc/Configuration.hpp b/latest/Firmware/Transponder/Inc/Configuration.hpp index 85634c4..20096d3 100644 --- a/latest/Firmware/Transponder/Inc/Configuration.hpp +++ b/latest/Firmware/Transponder/Inc/Configuration.hpp @@ -37,7 +37,8 @@ public: bool writeStationData(const StationData &data); bool readStationData(StationData &data); bool isStationDataProvisioned(); - void resetToDefaults(); + void eraseStationData(); + void reportStationData(); void reportOTPData(); const OTPData *readOTP(); @@ -51,6 +52,8 @@ public: void setXOTrimValue(uint8_t value); uint8_t getXOTrimValue(); void reportXOTrimValue(); + + void factoryReset(); private: Configuration(); diff --git a/latest/Firmware/Transponder/Inc/bsp/bsp.hpp b/latest/Firmware/Transponder/Inc/bsp/bsp.hpp index 35036f4..0d43e44 100644 --- a/latest/Firmware/Transponder/Inc/bsp/bsp.hpp +++ b/latest/Firmware/Transponder/Inc/bsp/bsp.hpp @@ -75,6 +75,7 @@ void bsp_erase_config_flags(); void bsp_read_xo_trim(XOTrim *t); void bsp_write_xo_trim(const XOTrim &t); +void bsp_erase_xo_trim(); // Callback for processing UART input (interrupt) typedef void(*char_input_cb)(char c); diff --git a/latest/Firmware/Transponder/Src/CommandProcessor.cpp b/latest/Firmware/Transponder/Src/CommandProcessor.cpp index a4c7bc0..aae3df4 100644 --- a/latest/Firmware/Transponder/Src/CommandProcessor.cpp +++ b/latest/Firmware/Transponder/Src/CommandProcessor.cpp @@ -132,10 +132,15 @@ void CommandProcessor::processCommand(const char *buff) { jumpToBootloader(); } + else if ( s.find("erase station") == 0 ) + { + Configuration::instance().eraseStationData(); + Configuration::instance().reportStationData(); + } else if ( s.find("factory reset") == 0 ) { - // Clear station data - Configuration::instance().resetToDefaults(); + Configuration::instance().factoryReset(); + Configuration::instance().reportStationData(); } else if ( s.find("tx test") == 0 ) { diff --git a/latest/Firmware/Transponder/Src/Configuration.cpp b/latest/Firmware/Transponder/Src/Configuration.cpp index 403f5a5..2282e29 100644 --- a/latest/Firmware/Transponder/Src/Configuration.cpp +++ b/latest/Firmware/Transponder/Src/Configuration.cpp @@ -174,6 +174,11 @@ bool Configuration::isStationDataProvisioned() return bsp_is_station_data_provisioned(); } +void Configuration::eraseStationData() +{ + bsp_erase_station_data(); +} + #if OTP_DATA void Configuration::reportOTPData() { @@ -214,12 +219,12 @@ void Configuration::reportXOTrimValue() EventQueue::instance().push(e); } -void Configuration::resetToDefaults() +void Configuration::factoryReset() { bsp_erase_station_data(); - reportStationData(); mFlags = {0}; bsp_erase_config_flags(); + bsp_erase_xo_trim(); } bool Configuration::writeStationData(const StationData &data) diff --git a/latest/Firmware/Transponder/Src/bsp/bsp_11_3.cpp b/latest/Firmware/Transponder/Src/bsp/bsp_11_3.cpp index 0585e05..3951f80 100644 --- a/latest/Firmware/Transponder/Src/bsp/bsp_11_3.cpp +++ b/latest/Firmware/Transponder/Src/bsp/bsp_11_3.cpp @@ -480,6 +480,12 @@ void bsp_write_xo_trim(const XOTrim &t) } +void bsp_erase_xo_trim() +{ + XOTrim t = {0, 0, {0}}; + bsp_write_xo_trim(t); +} + void bsp_set_rx_mode() { HAL_GPIO_WritePin(PA_BIAS_PORT, PA_BIAS_PIN, GPIO_PIN_RESET); // Kill the RF MOSFET bias voltage