Added buzzer config persistance accross restart
This commit is contained in:
@@ -200,6 +200,11 @@ void DataStore::loadPrefsInt(const char *filename, NodePrefs& _prefs, double& no
|
|||||||
File file = openRead(_fs, filename);
|
File file = openRead(_fs, filename);
|
||||||
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
|
||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
};
|
};
|
||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user