mirror of
https://github.com/mattintech/pyBTMCP.git
synced 2026-07-11 11:51:53 +00:00
80 lines
2.3 KiB
C++
80 lines
2.3 KiB
C++
|
|
#include "config_manager.h"
|
||
|
|
#include "config.h"
|
||
|
|
|
||
|
|
// Global instance
|
||
|
|
ConfigManager configManager;
|
||
|
|
|
||
|
|
ConfigManager::ConfigManager() {}
|
||
|
|
|
||
|
|
bool ConfigManager::load() {
|
||
|
|
preferences.begin(NVS_NAMESPACE, true); // Read-only
|
||
|
|
|
||
|
|
config.configured = preferences.getBool("configured", false);
|
||
|
|
config.wifiSsid = preferences.getString("wifi_ssid", "");
|
||
|
|
config.wifiPassword = preferences.getString("wifi_pass", "");
|
||
|
|
config.mqttHost = preferences.getString("mqtt_host", "");
|
||
|
|
config.mqttPort = preferences.getUShort("mqtt_port", DEFAULT_MQTT_PORT);
|
||
|
|
config.deviceId = preferences.getString("device_id", getDefaultDeviceId());
|
||
|
|
|
||
|
|
preferences.end();
|
||
|
|
|
||
|
|
return config.configured;
|
||
|
|
}
|
||
|
|
|
||
|
|
void ConfigManager::save() {
|
||
|
|
preferences.begin(NVS_NAMESPACE, false); // Read-write
|
||
|
|
|
||
|
|
preferences.putBool("configured", config.configured);
|
||
|
|
preferences.putString("wifi_ssid", config.wifiSsid);
|
||
|
|
preferences.putString("wifi_pass", config.wifiPassword);
|
||
|
|
preferences.putString("mqtt_host", config.mqttHost);
|
||
|
|
preferences.putUShort("mqtt_port", config.mqttPort);
|
||
|
|
preferences.putString("device_id", config.deviceId);
|
||
|
|
|
||
|
|
preferences.end();
|
||
|
|
|
||
|
|
Serial.println("Configuration saved to NVS");
|
||
|
|
}
|
||
|
|
|
||
|
|
void ConfigManager::clear() {
|
||
|
|
preferences.begin(NVS_NAMESPACE, false);
|
||
|
|
preferences.clear();
|
||
|
|
preferences.end();
|
||
|
|
|
||
|
|
config = DeviceConfig();
|
||
|
|
Serial.println("Configuration cleared");
|
||
|
|
}
|
||
|
|
|
||
|
|
void ConfigManager::setWifiCredentials(const String& ssid, const String& password) {
|
||
|
|
config.wifiSsid = ssid;
|
||
|
|
config.wifiPassword = password;
|
||
|
|
if (ssid.length() > 0) {
|
||
|
|
config.configured = true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void ConfigManager::setMqttConfig(const String& host, uint16_t port) {
|
||
|
|
config.mqttHost = host;
|
||
|
|
config.mqttPort = port;
|
||
|
|
}
|
||
|
|
|
||
|
|
void ConfigManager::setDeviceId(const String& id) {
|
||
|
|
config.deviceId = id.length() > 0 ? id : getDefaultDeviceId();
|
||
|
|
}
|
||
|
|
|
||
|
|
String ConfigManager::getAPName() const {
|
||
|
|
uint32_t chipId = 0;
|
||
|
|
for (int i = 0; i < 17; i += 8) {
|
||
|
|
chipId |= ((ESP.getEfuseMac() >> (40 - i)) & 0xff) << i;
|
||
|
|
}
|
||
|
|
return String(AP_SSID_PREFIX) + String(chipId, HEX);
|
||
|
|
}
|
||
|
|
|
||
|
|
String ConfigManager::getDefaultDeviceId() const {
|
||
|
|
uint32_t chipId = 0;
|
||
|
|
for (int i = 0; i < 17; i += 8) {
|
||
|
|
chipId |= ((ESP.getEfuseMac() >> (40 - i)) & 0xff) << i;
|
||
|
|
}
|
||
|
|
return String(DEFAULT_DEVICE_ID_PREFIX) + String(chipId, HEX);
|
||
|
|
}
|