Skip to content

Commit 2bd47de

Browse files
author
zaquaz
committed
Added buzzer config persistance accross restart
1 parent f5a56c5 commit 2bd47de

File tree

5 files changed

+17
-2
lines changed

5 files changed

+17
-2
lines changed

examples/companion_radio/DataStore.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,11 @@ void DataStore::loadPrefsInt(const char *filename, NodePrefs& _prefs, double& no
200200
File file = openRead(_fs, filename);
201201
if (file) {
202202
uint8_t pad[8];
203+
204+
// Initialize defaults for any missing fields (backward compatibility)
205+
memset(&_prefs, 0, sizeof(_prefs));
206+
node_lat = 0.0;
207+
node_lon = 0.0;
203208

204209
file.read((uint8_t *)&_prefs.airtime_factor, sizeof(float)); // 0
205210
file.read((uint8_t *)_prefs.node_name, sizeof(_prefs.node_name)); // 4
@@ -221,6 +226,7 @@ void DataStore::loadPrefsInt(const char *filename, NodePrefs& _prefs, double& no
221226
file.read((uint8_t *)&_prefs.multi_acks, sizeof(_prefs.multi_acks)); // 77
222227
file.read(pad, 2); // 78
223228
file.read((uint8_t *)&_prefs.ble_pin, sizeof(_prefs.ble_pin)); // 80
229+
file.read((uint8_t *)&_prefs.buzzer_quiet, sizeof(_prefs.buzzer_quiet)); // 84
224230

225231
file.close();
226232
}
@@ -252,6 +258,7 @@ void DataStore::savePrefs(const NodePrefs& _prefs, double node_lat, double node_
252258
file.write((uint8_t *)&_prefs.multi_acks, sizeof(_prefs.multi_acks)); // 77
253259
file.write(pad, 2); // 78
254260
file.write((uint8_t *)&_prefs.ble_pin, sizeof(_prefs.ble_pin)); // 80
261+
file.write((uint8_t *)&_prefs.buzzer_quiet, sizeof(_prefs.buzzer_quiet)); // 84
255262

256263
file.close();
257264
}

examples/companion_radio/MyMesh.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,9 @@ class MyMesh : public BaseChatMesh, public DataStoreHost {
152152
pending_login = pending_status = pending_telemetry = pending_discovery = pending_req = 0;
153153
}
154154

155+
public:
156+
void savePrefs() { _store->savePrefs(_prefs, sensors.node_lat, sensors.node_lon); }
157+
155158
private:
156159
void writeOKFrame();
157160
void writeErrFrame(uint8_t err_code);
@@ -171,11 +174,9 @@ class MyMesh : public BaseChatMesh, public DataStoreHost {
171174
void checkSerialInterface();
172175

173176
// helpers, short-cuts
174-
void savePrefs() { _store->savePrefs(_prefs, sensors.node_lat, sensors.node_lon); }
175177
void saveChannels() { _store->saveChannels(this); }
176178
void saveContacts() { _store->saveContacts(this); }
177179

178-
private:
179180
DataStore* _store;
180181
NodePrefs _prefs;
181182
uint32_t pending_login;

examples/companion_radio/NodePrefs.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,5 @@ struct NodePrefs { // persisted to file
2424
float rx_delay_base;
2525
uint32_t ble_pin;
2626
uint8_t advert_loc_policy;
27+
uint8_t buzzer_quiet;
2728
};

examples/companion_radio/ui-new/UITask.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -532,6 +532,7 @@ void UITask::begin(DisplayDriver* display, SensorManager* sensors, NodePrefs* no
532532

533533
#ifdef PIN_BUZZER
534534
buzzer.begin();
535+
buzzer.quiet(_node_prefs->buzzer_quiet);
535536
#endif
536537

537538
#ifdef PIN_VIBRATION
@@ -871,6 +872,8 @@ void UITask::toggleBuzzer() {
871872
buzzer.quiet(true);
872873
showAlert("Buzzer: OFF", 800);
873874
}
875+
_node_prefs->buzzer_quiet = buzzer.isQuiet();
876+
the_mesh.savePrefs();
874877
_next_refresh = 0; // trigger refresh
875878
#endif
876879
}

examples/companion_radio/ui-orig/UITask.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ void UITask::begin(DisplayDriver* display, SensorManager* sensors, NodePrefs* no
5656

5757
#ifdef PIN_BUZZER
5858
buzzer.begin();
59+
buzzer.quiet(_node_prefs->buzzer_quiet);
5960
#endif
6061

6162
// Initialize digital button if available
@@ -394,6 +395,8 @@ void UITask::handleButtonTriplePress() {
394395
buzzer.quiet(true);
395396
sprintf(_alert, "Buzzer: OFF");
396397
}
398+
_node_prefs->buzzer_quiet = buzzer.isQuiet();
399+
the_mesh.savePrefs();
397400
_need_refresh = true;
398401
#endif
399402
}

0 commit comments

Comments
 (0)