feat: handle factory_reset and reconfigure_settings commands
This commit is contained in:
+29
-1
@@ -177,7 +177,8 @@ void app_main(void)
|
||||
// main event loop
|
||||
const EventBits_t cmd_bits =
|
||||
MQTT_CALIBRATE_START | MQTT_CALIBRATE_STOP |
|
||||
MQTT_SELECTED_BIT | MQTT_DESELECTED_BIT;
|
||||
MQTT_SELECTED_BIT | MQTT_DESELECTED_BIT |
|
||||
MQTT_FACTORY_RESET_BIT | MQTT_RECONFIGURE_SETTINGS_BIT;
|
||||
|
||||
bool calibrating = false;
|
||||
bool selected = false;
|
||||
@@ -206,5 +207,32 @@ void app_main(void)
|
||||
selected = false;
|
||||
if (!calibrating) led_indicator_set(LED_SCANNING);
|
||||
}
|
||||
if (bits & MQTT_FACTORY_RESET_BIT) {
|
||||
// factory reset requested - erase NVS and reboot
|
||||
ESP_LOGI(TAG, "Factory reset requested");
|
||||
config_store_erase();
|
||||
esp_restart();
|
||||
}
|
||||
if (bits & MQTT_RECONFIGURE_SETTINGS_BIT) {
|
||||
ESP_LOGI(TAG, "Reconfigure settings requested");
|
||||
const mqtt_reconfigure_data_t *cfg = mqtt_publisher_get_reconfigure_data();
|
||||
|
||||
if (cfg->ssid[0] != '\0') {
|
||||
wifi_config_t wifi_cfg = {0};
|
||||
strncpy((char *)wifi_cfg.sta.ssid, cfg->ssid, sizeof(wifi_cfg.sta.ssid) - 1);
|
||||
strncpy((char *)wifi_cfg.sta.password, cfg->password, sizeof(wifi_cfg.sta.password) - 1);
|
||||
esp_wifi_set_config(WIFI_IF_STA, &wifi_cfg);
|
||||
ESP_LOGI(TAG, "Updated WiFi SSID: %s", cfg->ssid);
|
||||
}
|
||||
|
||||
if (cfg->mqtt_host[0] != '\0') {
|
||||
uint16_t port = cfg->mqtt_port ? cfg->mqtt_port : DEFAULT_MQTT_PORT;
|
||||
config_store_set_mqtt_override(cfg->mqtt_host, port);
|
||||
ESP_LOGI(TAG, "Updated MQTT broker: %s:%u", cfg->mqtt_host, port);
|
||||
}
|
||||
|
||||
ESP_LOGI(TAG, "Rebooting to apply new settings");
|
||||
esp_restart();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user