From cb62d1f68546779745354ab711b3aee5bc32f44f Mon Sep 17 00:00:00 2001 From: jrhoffa Date: Mon, 26 Sep 2022 09:55:07 -1000 Subject: [PATCH] Small fixes for v4.4.2 esp-idf support --- .gitignore | 1 + main/main.cpp | 2 +- main/mqtt.cpp | 2 +- main/patterns/gradient.cpp | 2 +- main/patterns/random.cpp | 2 +- main/patterns/sparkle.cpp | 2 +- main/spi_leds.cpp | 2 +- main/wifi.cpp | 214 ++++++++++++++++++------------------- main/wifi.hpp | 6 +- 9 files changed, 117 insertions(+), 116 deletions(-) diff --git a/.gitignore b/.gitignore index dd95613..95cad48 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ CMakeCache.txt sdkconfig sdkconfig.old main/broker.pem +dependencies.lock diff --git a/main/main.cpp b/main/main.cpp index e738b0a..5cc1811 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -68,7 +68,7 @@ static void log_dir(const std::string &path) { if (err < 0) { ESP_LOGE(TAG, "%s %d", path.c_str(), errno); } else { - ESP_LOGI(TAG, "%s %d", path.c_str(), st.st_size); + ESP_LOGI(TAG, "%s %ld", path.c_str(), st.st_size); } DIR *dir; diff --git a/main/mqtt.cpp b/main/mqtt.cpp index 49788f5..eb936cf 100644 --- a/main/mqtt.cpp +++ b/main/mqtt.cpp @@ -85,10 +85,10 @@ esp_mqtt_client_handle_t start_mqtt_client( const esp_mqtt_client_config_t mqtt_cfg = { .uri = CONFIG_BROKER_URI, - .cert_pem = (const char *)broker_pem_start, .username = CONFIG_BROKER_USER, .password = CONFIG_BROKER_PASSWORD, .buffer_size = 4096, + .cert_pem = (const char *)broker_pem_start, }; esp_mqtt_client_handle_t client = esp_mqtt_client_init(&mqtt_cfg); diff --git a/main/patterns/gradient.cpp b/main/patterns/gradient.cpp index ebdf18c..4ffe95a 100644 --- a/main/patterns/gradient.cpp +++ b/main/patterns/gradient.cpp @@ -112,7 +112,7 @@ void GradientPattern::step(Color pixels[], int len, Pattern::State *_state) cons Pattern* json_gradient_pattern(cJSON *pattern, const Presets::ColorMap &colors) { if (pattern->type != cJSON_Object) { - ESP_LOGE(TAG, "Not an object: %s", pattern->type); + ESP_LOGE(TAG, "Not an object: %s", pattern->string); return NULL; } cJSON *jcolors = cJSON_GetObjectItem(pattern, "colors"); diff --git a/main/patterns/random.cpp b/main/patterns/random.cpp index e51db94..ba466b0 100644 --- a/main/patterns/random.cpp +++ b/main/patterns/random.cpp @@ -92,7 +92,7 @@ Pattern* json_random_pattern(cJSON *pattern, const Presets::ColorMap &colors) { int gap = 1; if (pattern->type != cJSON_Object) { - ESP_LOGE(TAG, "Not an object: %s", pattern->type); + ESP_LOGE(TAG, "Not an object: %s", pattern->string); return NULL; } diff --git a/main/patterns/sparkle.cpp b/main/patterns/sparkle.cpp index 951641a..b9b6543 100644 --- a/main/patterns/sparkle.cpp +++ b/main/patterns/sparkle.cpp @@ -110,7 +110,7 @@ Pattern* json_sparkle_pattern(cJSON *pattern, const Presets::ColorMap &colormap) Color *colors = NULL; if (pattern->type != cJSON_Object) { - ESP_LOGE(TAG, "Not an object: %s", pattern->type); + ESP_LOGE(TAG, "Not an object: %s", pattern->string); return NULL; } diff --git a/main/spi_leds.cpp b/main/spi_leds.cpp index 647444c..d312d60 100644 --- a/main/spi_leds.cpp +++ b/main/spi_leds.cpp @@ -81,7 +81,7 @@ void SPI_LEDs::configure(int len) { memset(out_buf + tx_len(len) - reset_bytes, 0, reset_bytes); - transaction = { + transaction = (spi_transaction_t){ .flags = 0, .cmd = 0, .addr = 0, diff --git a/main/wifi.cpp b/main/wifi.cpp index c4821b1..7cd2d2c 100644 --- a/main/wifi.cpp +++ b/main/wifi.cpp @@ -1,107 +1,107 @@ -static const char *TAG = "WiFi"; -#include "esp_log.h" - - -#include "wifi.hpp" - -// Defines SSID and PASS -#include "wifi_cfg.hpp" - -static const int CONFIG_ESP_MAXIMUM_RETRY = 3; - - -#include "esp_wifi.h" -#include "freertos/event_groups.h" - -static EventGroupHandle_t s_wifi_event_group; - -#define WIFI_CONNECTED_BIT BIT0 -#define WIFI_FAIL_BIT BIT1 - -static void event_handler(void* arg, esp_event_base_t event_base, - int32_t event_id, void* event_data) { - static int s_retry_num = 0; - - if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START) { - esp_wifi_connect(); - - } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED) { - ESP_LOGI(TAG, "Disconnected, retrying connection to AP"); - esp_wifi_connect(); - - } else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) { - ip_event_got_ip_t* event = (ip_event_got_ip_t*) event_data; - ESP_LOGI(TAG, "Got IP address: " IPSTR, IP2STR(&event->ip_info.ip)); - s_retry_num = 0; - xEventGroupSetBits(s_wifi_event_group, WIFI_CONNECTED_BIT); - } -} - -int config_wifi() { - ESP_LOGI(TAG, "Connecting to %s", SSID); - - s_wifi_event_group = xEventGroupCreate(); - - ESP_ERROR_CHECK(esp_netif_init()); - - ESP_ERROR_CHECK(esp_event_loop_create_default()); - esp_netif_create_default_wifi_sta(); - - wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); - ESP_ERROR_CHECK(esp_wifi_init(&cfg)); - - esp_event_handler_instance_t instance_any_id; - esp_event_handler_instance_t instance_got_ip; - ESP_ERROR_CHECK(esp_event_handler_instance_register( - WIFI_EVENT, - ESP_EVENT_ANY_ID, - &event_handler, - NULL, - &instance_any_id - )); - ESP_ERROR_CHECK(esp_event_handler_instance_register( - IP_EVENT, - IP_EVENT_STA_GOT_IP, - &event_handler, - NULL, - &instance_got_ip - )); - - wifi_config_t wifi_config = { - .sta = { - .ssid = SSID, - .password = PASS, - }, - }; - - ESP_ERROR_CHECK( esp_wifi_set_mode(WIFI_MODE_STA) ); - ESP_ERROR_CHECK( esp_wifi_set_config(WIFI_IF_STA, &wifi_config) ); - ESP_ERROR_CHECK( esp_wifi_start() ); - -/* - // Waiting until either the connection is established (WIFI_CONNECTED_BIT) - // or connection failed for the maximum number of re-tries (WIFI_FAIL_BIT). - // The bits are set by event_handler() (see above) - EventBits_t bits = xEventGroupWaitBits( - s_wifi_event_group, - WIFI_CONNECTED_BIT | WIFI_FAIL_BIT, - pdFALSE, - pdFALSE, - portMAX_DELAY - ); - - // xEventGroupWaitBits() returns the bits before the call returned, hence we - // can test which event actually happened. - if (bits & WIFI_CONNECTED_BIT) { - ESP_LOGI(TAG, "Connected to AP: %s", SSID); - return 0; - - } else if (bits & WIFI_FAIL_BIT) { - ESP_LOGE(TAG, "Failed to connect to SSID %s", SSID); - } else { - ESP_LOGE(TAG, "UNEXPECTED EVENT"); - } -*/ - - return 0; -} +static const char *TAG = "WiFi"; +#include "esp_log.h" + + +#include "wifi.hpp" + +// Defines SSID and PASS +#include "wifi_cfg.hpp" + +static const int CONFIG_ESP_MAXIMUM_RETRY = 3; + + +#include "esp_wifi.h" +#include "freertos/event_groups.h" + +static EventGroupHandle_t s_wifi_event_group; + +#define WIFI_CONNECTED_BIT BIT0 +#define WIFI_FAIL_BIT BIT1 + +static void event_handler(void* arg, esp_event_base_t event_base, + int32_t event_id, void* event_data) { + static int s_retry_num = 0; + + if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START) { + esp_wifi_connect(); + + } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED) { + ESP_LOGI(TAG, "Disconnected, retrying connection to AP"); + esp_wifi_connect(); + + } else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) { + ip_event_got_ip_t* event = (ip_event_got_ip_t*) event_data; + ESP_LOGI(TAG, "Got IP address: " IPSTR, IP2STR(&event->ip_info.ip)); + s_retry_num = 0; + xEventGroupSetBits(s_wifi_event_group, WIFI_CONNECTED_BIT); + } +} + +int config_wifi() { + ESP_LOGI(TAG, "Connecting to %s", SSID); + + s_wifi_event_group = xEventGroupCreate(); + + ESP_ERROR_CHECK(esp_netif_init()); + + ESP_ERROR_CHECK(esp_event_loop_create_default()); + esp_netif_create_default_wifi_sta(); + + wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); + ESP_ERROR_CHECK(esp_wifi_init(&cfg)); + + esp_event_handler_instance_t instance_any_id; + esp_event_handler_instance_t instance_got_ip; + ESP_ERROR_CHECK(esp_event_handler_instance_register( + WIFI_EVENT, + ESP_EVENT_ANY_ID, + &event_handler, + NULL, + &instance_any_id + )); + ESP_ERROR_CHECK(esp_event_handler_instance_register( + IP_EVENT, + IP_EVENT_STA_GOT_IP, + &event_handler, + NULL, + &instance_got_ip + )); + + wifi_config_t wifi_config = { + .sta = { + {.ssid = SSID}, + {.password = PASS}, + }, + }; + + ESP_ERROR_CHECK( esp_wifi_set_mode(WIFI_MODE_STA) ); + ESP_ERROR_CHECK( esp_wifi_set_config(WIFI_IF_STA, &wifi_config) ); + ESP_ERROR_CHECK( esp_wifi_start() ); + +/* + // Waiting until either the connection is established (WIFI_CONNECTED_BIT) + // or connection failed for the maximum number of re-tries (WIFI_FAIL_BIT). + // The bits are set by event_handler() (see above) + EventBits_t bits = xEventGroupWaitBits( + s_wifi_event_group, + WIFI_CONNECTED_BIT | WIFI_FAIL_BIT, + pdFALSE, + pdFALSE, + portMAX_DELAY + ); + + // xEventGroupWaitBits() returns the bits before the call returned, hence we + // can test which event actually happened. + if (bits & WIFI_CONNECTED_BIT) { + ESP_LOGI(TAG, "Connected to AP: %s", SSID); + return 0; + + } else if (bits & WIFI_FAIL_BIT) { + ESP_LOGE(TAG, "Failed to connect to SSID %s", SSID); + } else { + ESP_LOGE(TAG, "UNEXPECTED EVENT"); + } +*/ + + return 0; +} diff --git a/main/wifi.hpp b/main/wifi.hpp index 8e9a0a0..3afc9d3 100644 --- a/main/wifi.hpp +++ b/main/wifi.hpp @@ -1,3 +1,3 @@ -#pragma once - -int config_wifi(); \ No newline at end of file +#pragma once + +int config_wifi();