feat: handle factory_reset and reconfigure_settings commands
This commit is contained in:
@@ -8,9 +8,15 @@
|
||||
#define TAG "mqtt_publisher"
|
||||
#define TOPIC_PREFIX "localiser/sensor"
|
||||
|
||||
static esp_mqtt_client_handle_t s_client = NULL;
|
||||
static char s_sensor_id[32];
|
||||
static EventGroupHandle_t s_evt = NULL;
|
||||
static esp_mqtt_client_handle_t s_client = NULL;
|
||||
static char s_sensor_id[32];
|
||||
static EventGroupHandle_t s_evt = NULL;
|
||||
static mqtt_reconfigure_data_t s_reconfigure_data;
|
||||
|
||||
const mqtt_reconfigure_data_t *mqtt_publisher_get_reconfigure_data(void)
|
||||
{
|
||||
return &s_reconfigure_data;
|
||||
}
|
||||
|
||||
/* Pre-built topic strings */
|
||||
static char s_topic_rssi[96];
|
||||
@@ -43,6 +49,19 @@ static void handle_cmd(const char *data, int data_len)
|
||||
else if (strcmp(a, "calibrate_stop") == 0) xEventGroupSetBits(s_evt, MQTT_CALIBRATE_STOP);
|
||||
else if (strcmp(a, "selected") == 0) xEventGroupSetBits(s_evt, MQTT_SELECTED_BIT);
|
||||
else if (strcmp(a, "deselected") == 0) xEventGroupSetBits(s_evt, MQTT_DESELECTED_BIT);
|
||||
else if (strcmp(a, "factory_reset") == 0) xEventGroupSetBits(s_evt, MQTT_FACTORY_RESET_BIT);
|
||||
else if (strcmp(a, "reconfigure_settings") == 0) {
|
||||
memset(&s_reconfigure_data, 0, sizeof(s_reconfigure_data));
|
||||
cJSON *ssid_j = cJSON_GetObjectItemCaseSensitive(root, "ssid");
|
||||
cJSON *pass_j = cJSON_GetObjectItemCaseSensitive(root, "password");
|
||||
cJSON *host_j = cJSON_GetObjectItemCaseSensitive(root, "mqtt_host");
|
||||
cJSON *port_j = cJSON_GetObjectItemCaseSensitive(root, "mqtt_port");
|
||||
if (cJSON_IsString(ssid_j)) strncpy(s_reconfigure_data.ssid, ssid_j->valuestring, sizeof(s_reconfigure_data.ssid) - 1);
|
||||
if (cJSON_IsString(pass_j)) strncpy(s_reconfigure_data.password, pass_j->valuestring, sizeof(s_reconfigure_data.password) - 1);
|
||||
if (cJSON_IsString(host_j)) strncpy(s_reconfigure_data.mqtt_host, host_j->valuestring, sizeof(s_reconfigure_data.mqtt_host) - 1);
|
||||
if (cJSON_IsNumber(port_j)) s_reconfigure_data.mqtt_port = (uint16_t)port_j->valuedouble;
|
||||
xEventGroupSetBits(s_evt, MQTT_RECONFIGURE_SETTINGS_BIT);
|
||||
}
|
||||
else ESP_LOGW(TAG, "Unknown cmd action: %s", a);
|
||||
}
|
||||
cJSON_Delete(root);
|
||||
|
||||
Reference in New Issue
Block a user