Added buzzer config persistance accross restart

This commit is contained in:
zaquaz
2025-11-20 18:55:39 -08:00
parent f5a56c537f
commit 2bd47de3b9
5 changed files with 17 additions and 2 deletions

View File

@@ -201,6 +201,11 @@ void DataStore::loadPrefsInt(const char *filename, NodePrefs& _prefs, double& no
if (file) { if (file) {
uint8_t pad[8]; uint8_t pad[8];
// Initialize defaults for any missing fields (backward compatibility)
memset(&_prefs, 0, sizeof(_prefs));
node_lat = 0.0;
node_lon = 0.0;
file.read((uint8_t *)&_prefs.airtime_factor, sizeof(float)); // 0 file.read((uint8_t *)&_prefs.airtime_factor, sizeof(float)); // 0
file.read((uint8_t *)_prefs.node_name, sizeof(_prefs.node_name)); // 4 file.read((uint8_t *)_prefs.node_name, sizeof(_prefs.node_name)); // 4
file.read(pad, 4); // 36 file.read(pad, 4); // 36
@@ -221,6 +226,7 @@ void DataStore::loadPrefsInt(const char *filename, NodePrefs& _prefs, double& no
file.read((uint8_t *)&_prefs.multi_acks, sizeof(_prefs.multi_acks)); // 77 file.read((uint8_t *)&_prefs.multi_acks, sizeof(_prefs.multi_acks)); // 77
file.read(pad, 2); // 78 file.read(pad, 2); // 78
file.read((uint8_t *)&_prefs.ble_pin, sizeof(_prefs.ble_pin)); // 80 file.read((uint8_t *)&_prefs.ble_pin, sizeof(_prefs.ble_pin)); // 80
file.read((uint8_t *)&_prefs.buzzer_quiet, sizeof(_prefs.buzzer_quiet)); // 84
file.close(); file.close();
} }
@@ -252,6 +258,7 @@ void DataStore::savePrefs(const NodePrefs& _prefs, double node_lat, double node_
file.write((uint8_t *)&_prefs.multi_acks, sizeof(_prefs.multi_acks)); // 77 file.write((uint8_t *)&_prefs.multi_acks, sizeof(_prefs.multi_acks)); // 77
file.write(pad, 2); // 78 file.write(pad, 2); // 78
file.write((uint8_t *)&_prefs.ble_pin, sizeof(_prefs.ble_pin)); // 80 file.write((uint8_t *)&_prefs.ble_pin, sizeof(_prefs.ble_pin)); // 80
file.write((uint8_t *)&_prefs.buzzer_quiet, sizeof(_prefs.buzzer_quiet)); // 84
file.close(); file.close();
} }

View File

@@ -152,6 +152,9 @@ protected:
pending_login = pending_status = pending_telemetry = pending_discovery = pending_req = 0; pending_login = pending_status = pending_telemetry = pending_discovery = pending_req = 0;
} }
public:
void savePrefs() { _store->savePrefs(_prefs, sensors.node_lat, sensors.node_lon); }
private: private:
void writeOKFrame(); void writeOKFrame();
void writeErrFrame(uint8_t err_code); void writeErrFrame(uint8_t err_code);
@@ -171,11 +174,9 @@ private:
void checkSerialInterface(); void checkSerialInterface();
// helpers, short-cuts // helpers, short-cuts
void savePrefs() { _store->savePrefs(_prefs, sensors.node_lat, sensors.node_lon); }
void saveChannels() { _store->saveChannels(this); } void saveChannels() { _store->saveChannels(this); }
void saveContacts() { _store->saveContacts(this); } void saveContacts() { _store->saveContacts(this); }
private:
DataStore* _store; DataStore* _store;
NodePrefs _prefs; NodePrefs _prefs;
uint32_t pending_login; uint32_t pending_login;

View File

@@ -24,4 +24,5 @@ struct NodePrefs { // persisted to file
float rx_delay_base; float rx_delay_base;
uint32_t ble_pin; uint32_t ble_pin;
uint8_t advert_loc_policy; uint8_t advert_loc_policy;
uint8_t buzzer_quiet;
}; };

View File

@@ -532,6 +532,7 @@ void UITask::begin(DisplayDriver* display, SensorManager* sensors, NodePrefs* no
#ifdef PIN_BUZZER #ifdef PIN_BUZZER
buzzer.begin(); buzzer.begin();
buzzer.quiet(_node_prefs->buzzer_quiet);
#endif #endif
#ifdef PIN_VIBRATION #ifdef PIN_VIBRATION
@@ -871,6 +872,8 @@ void UITask::toggleBuzzer() {
buzzer.quiet(true); buzzer.quiet(true);
showAlert("Buzzer: OFF", 800); showAlert("Buzzer: OFF", 800);
} }
_node_prefs->buzzer_quiet = buzzer.isQuiet();
the_mesh.savePrefs();
_next_refresh = 0; // trigger refresh _next_refresh = 0; // trigger refresh
#endif #endif
} }

View File

@@ -56,6 +56,7 @@ void UITask::begin(DisplayDriver* display, SensorManager* sensors, NodePrefs* no
#ifdef PIN_BUZZER #ifdef PIN_BUZZER
buzzer.begin(); buzzer.begin();
buzzer.quiet(_node_prefs->buzzer_quiet);
#endif #endif
// Initialize digital button if available // Initialize digital button if available
@@ -394,6 +395,8 @@ void UITask::handleButtonTriplePress() {
buzzer.quiet(true); buzzer.quiet(true);
sprintf(_alert, "Buzzer: OFF"); sprintf(_alert, "Buzzer: OFF");
} }
_node_prefs->buzzer_quiet = buzzer.isQuiet();
the_mesh.savePrefs();
_need_refresh = true; _need_refresh = true;
#endif #endif
} }