Skip to content

Commit 24ec7aa

Browse files
authoredMar 19, 2025
Merge pull request #7 from QB4-dev/devel
Merge devel - support all ESP32 variants
2 parents a5b14b3 + 314d0b5 commit 24ec7aa

File tree

6 files changed

+62
-29
lines changed

6 files changed

+62
-29
lines changed
 

‎esp-supla/esp-supla.c

+24-13
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@
1818
#include <esp_wifi.h>
1919
#include <cJSON.h>
2020

21-
#if CONFIG_IDF_TARGET_ESP32
22-
#include <esp_random.h>
23-
#include <esp_mac.h>
21+
#ifndef CONFIG_IDF_TARGET_ESP8266
22+
#include <esp_random.h> //ESP-IDF only
23+
#include <esp_mac.h> //ESP-IDF only
2424
#endif
2525

2626
static const char *TAG = "ESP-SUPLA";
@@ -130,30 +130,40 @@ esp_err_t supla_esp_nvs_config_write(struct supla_config *supla_conf)
130130
return ESP_OK;
131131
}
132132

133-
esp_err_t supla_esp_nvs_channel_config_store(supla_channel_t *ch, void *nvs_config, size_t len)
133+
esp_err_t supla_esp_nvs_channel_state_store(supla_channel_t *ch, void *nvs_config, size_t len)
134134
{
135135
CHECK_ARG(ch);
136136
CHECK_ARG(nvs_config);
137137
nvs_handle nvs;
138138
char nvs_key[8];
139139
esp_err_t rc;
140+
void *stored;
141+
size_t stored_len;
140142
int ch_num = supla_channel_get_assigned_number(ch);
141143

144+
stored = malloc(len);
145+
if (!stored)
146+
return ESP_ERR_NO_MEM;
147+
142148
snprintf(nvs_key, sizeof(nvs_key), "ch%02d", ch_num);
143149
rc = nvs_open(NVS_STORAGE, NVS_READWRITE, &nvs);
144150
if (rc == ESP_OK) {
145-
nvs_set_blob(nvs, nvs_key, nvs_config, len);
146-
nvs_commit(nvs);
151+
//compare data and store if different
152+
nvs_get_blob(nvs, nvs_key, stored, &stored_len);
153+
if (memcmp(nvs_config, stored, len) != 0) {
154+
nvs_set_blob(nvs, nvs_key, nvs_config, len);
155+
nvs_commit(nvs);
156+
ESP_LOGI(TAG, "ch[%d] config stored to NVS", ch_num);
157+
}
147158
nvs_close(nvs);
148159
} else {
149160
supla_log(LOG_ERR, "nvs open error %s", esp_err_to_name(rc));
150-
return rc;
151161
}
152-
ESP_LOGI(TAG, "ch[%d] config stored to NVS", ch_num);
153-
return ESP_OK;
162+
free(stored);
163+
return rc;
154164
}
155165

156-
esp_err_t supla_esp_nvs_channel_config_restore(supla_channel_t *ch, void *nvs_config, size_t len)
166+
esp_err_t supla_esp_nvs_channel_state_restore(supla_channel_t *ch, void *nvs_config, size_t len)
157167
{
158168
CHECK_ARG(ch);
159169
CHECK_ARG(nvs_config);
@@ -175,7 +185,7 @@ esp_err_t supla_esp_nvs_channel_config_restore(supla_channel_t *ch, void *nvs_co
175185
return ESP_OK;
176186
}
177187

178-
esp_err_t supla_esp_nvs_config_erase(void)
188+
esp_err_t supla_esp_nvs_data_erase(void)
179189
{
180190
nvs_handle nvs;
181191
esp_err_t rc;
@@ -236,7 +246,7 @@ esp_err_t supla_esp_get_wifi_state(supla_dev_t *dev, TDSC_ChannelState *state)
236246
state->Fields |= SUPLA_CHANNELSTATE_FIELD_IPV4;
237247
state->IPv4 = ip_info.ip.addr;
238248
}
239-
#elif CONFIG_IDF_TARGET_ESP32
249+
#else //ESP32xx
240250
esp_netif_ip_info_t ip_info = {};
241251
esp_netif_t *netif = esp_netif_get_handle_from_ifkey("WIFI_STA_DEF");
242252
if (esp_netif_get_ip_info(netif, &ip_info) == ESP_OK) {
@@ -388,6 +398,7 @@ static esp_err_t supla_dev_post_config(supla_dev_t *dev, httpd_req_t *req)
388398

389399
config.ssl = 0;
390400
#ifdef CONFIG_ESP_LIBSUPLA_USE_ESP_TLS
401+
config.ssl = false;
391402
if (httpd_query_key_value(req_data, "ssl", value, sizeof(value)) == ESP_OK)
392403
config.ssl = !strcmp("on", value);
393404
#endif
@@ -415,7 +426,7 @@ static esp_err_t supla_dev_erase_config(supla_dev_t *dev)
415426
struct supla_config config = { 0 };
416427
int rc;
417428

418-
rc = supla_esp_nvs_config_erase();
429+
rc = supla_esp_nvs_data_erase();
419430
if (rc != ESP_OK)
420431
return rc;
421432

‎examples/default/main/main.c

+25-3
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
#if CONFIG_IDF_TARGET_ESP8266
2323
#define PUSH_BUTTON_PIN GPIO_NUM_0
2424
#define LED_PIN GPIO_NUM_2
25-
#elif CONFIG_IDF_TARGET_ESP32
25+
#else //ESP32xx
2626
#define PUSH_BUTTON_PIN GPIO_NUM_0
2727
#define LED_PIN GPIO_NUM_27
2828
#endif
@@ -125,11 +125,33 @@ void app_main()
125125

126126
io_init();
127127
wifi_init();
128-
#if CONFIG_IDF_TARGET_ESP8266
128+
129+
#if defined(CONFIG_IDF_TARGET_ESP8266)
129130
supla_dev = supla_dev_create("ESP8266", NULL);
130-
#elif CONFIG_IDF_TARGET_ESP32
131+
#elif defined(CONFIG_IDF_TARGET_ESP32)
131132
supla_dev = supla_dev_create("ESP32", NULL);
133+
#elif defined(CONFIG_IDF_TARGET_ESP32S2)
134+
supla_dev = supla_dev_create("ESP32S2", NULL);
135+
#elif defined(CONFIG_IDF_TARGET_ESP32S3)
136+
supla_dev = supla_dev_create("ESP32S3", NULL);
137+
#elif defined(CONFIG_IDF_TARGET_ESP32C2)
138+
supla_dev = supla_dev_create("ESP32C2", NULL);
139+
#elif defined(CONFIG_IDF_TARGET_ESP32C3)
140+
supla_dev = supla_dev_create("ESP32C3", NULL);
141+
#elif defined(CONFIG_IDF_TARGET_ESP32C5)
142+
supla_dev = supla_dev_create("ESP32C5", NULL);
143+
#elif defined(CONFIG_IDF_TARGET_ESP32C6)
144+
supla_dev = supla_dev_create("ESP32C6", NULL);
145+
#elif defined(CONFIG_IDF_TARGET_ESP32C61)
146+
supla_dev = supla_dev_create("ESP32C61", NULL);
147+
#elif defined(CONFIG_IDF_TARGET_ESP32P4)
148+
supla_dev = supla_dev_create("ESP32P4", NULL);
149+
#elif defined(CONFIG_IDF_TARGET_ESP32H2)
150+
supla_dev = supla_dev_create("ESP32H2", NULL);
151+
#else
152+
supla_dev = supla_dev_create("ESPXX", NULL);
132153
#endif
154+
133155
wifi_init_sta();
134156
xTaskCreate(&io_task, "io", 2048, NULL, 1, NULL);
135157
xTaskCreate(&supla_task, "supla", 8192, supla_dev, 1, NULL);

‎examples/default/main/wifi.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ void wifi_init(void)
7979
ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &event_handler, NULL));
8080
ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, ESP_EVENT_ANY_ID, &event_handler, NULL));
8181

82-
#if CONFIG_IDF_TARGET_ESP32
82+
#ifndef CONFIG_IDF_TARGET_ESP8266
8383
esp_netif_create_default_wifi_sta();
8484
#endif
8585

‎include/esp-supla.h

+10-10
Original file line numberDiff line numberDiff line change
@@ -31,34 +31,34 @@ esp_err_t supla_esp_nvs_config_init(struct supla_config *supla_conf);
3131
esp_err_t supla_esp_nvs_config_write(struct supla_config *supla_conf);
3232

3333
/**
34-
* @brief Write SUPLA channel config to NVS memory
34+
* @brief Write SUPLA channel state to NVS memory
3535
*
3636
* @param[in] ch SUPLA channel
37-
* @param[in] nvs_config SUPLA channel config
38-
* @param[in] len SUPLA channelconfig size
37+
* @param[in] nvs_state SUPLA channel data
38+
* @param[in] len SUPLA nvs_state size
3939
* @return
4040
* - ESP_OK success
4141
*/
42-
esp_err_t supla_esp_nvs_channel_config_store(supla_channel_t *ch, void *nvs_config, size_t len);
42+
esp_err_t supla_esp_nvs_channel_state_store(supla_channel_t *ch, void *nvs_state, size_t len);
4343

4444
/**
45-
* @brief Read SUPLA channel config from NVS memory
45+
* @brief Read SUPLA channel state from NVS memory
4646
*
4747
* @param[in] ch SUPLA channel
48-
* @param[out] nvs_config SUPLA channel config
49-
* @param[in] len SUPLA channelconfig size
48+
* @param[out] nvs_state SUPLA channel data
49+
* @param[in] len SUPLA nvs_state size
5050
* @return
5151
* - ESP_OK success
5252
*/
53-
esp_err_t supla_esp_nvs_channel_config_restore(supla_channel_t *ch, void *nvs_config, size_t len);
53+
esp_err_t supla_esp_nvs_channel_state_restore(supla_channel_t *ch, void *nvs_state, size_t len);
5454

5555
/**
56-
* @brief Erase SUPLA config from NVS memory
56+
* @brief Erase SUPLA data from NVS memory
5757
*
5858
* @return
5959
* - ESP_OK success
6060
*/
61-
esp_err_t supla_esp_nvs_config_erase(void);
61+
esp_err_t supla_esp_nvs_data_erase(void);
6262

6363
/**
6464
* @brief generate SUPLA device hostname from device name and last two bytes

‎platform/arch_esp.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
#ifdef CONFIG_ESP_LIBSUPLA_USE_ESP_TLS
1515
#include <esp_tls.h>
1616

17-
#ifndef CONFIG_IDF_TARGET_ESP32
17+
#ifdef CONFIG_IDF_TARGET_ESP8266
1818
// delete name variant is deprecated in ESP-IDF, however ESP8266 RTOS still
1919
// use it.
2020
#define esp_tls_conn_destroy esp_tls_conn_delete

0 commit comments

Comments
 (0)
Please sign in to comment.