From 94708c75e1f5e6f2f5bc02c970f3f4e58fe44cfe Mon Sep 17 00:00:00 2001 From: kerms Date: Mon, 1 Jul 2024 16:32:59 +0800 Subject: [PATCH] add(wifi) add wifi led status --- .../wifi_manager/wifi_configuration.h | 10 +++ .../wifi_manager/wifi_manager.c | 65 ++++++++++++++++++- 2 files changed, 74 insertions(+), 1 deletion(-) diff --git a/project_components/wifi_manager/wifi_configuration.h b/project_components/wifi_manager/wifi_configuration.h index 80685fe..682deed 100644 --- a/project_components/wifi_manager/wifi_configuration.h +++ b/project_components/wifi_manager/wifi_configuration.h @@ -12,6 +12,16 @@ #define WIFI_DEFAULT_STA_SSID "example_ssid" #define WIFI_DEFAULT_STA_PASS "12345678" +#if defined CONFIG_IDF_TARGET_ESP32 + #define WIFI_LED_ENABLE 0 +#elif defined CONFIG_IDF_TARGET_ESP32C3 + #define WIFI_LED_ENABLE 0 +#elif defined CONFIG_IDF_TARGET_ESP32S3 + #define WIFI_LED_ENABLE 0 +#endif + +#define WIFI_LED_PIN 9 + #define IP4_ADDR_EXPAND(...) IP4_ADDR(__VA_ARGS__) #endif //WIFI_CONFIGURATION_H_GUARD \ No newline at end of file diff --git a/project_components/wifi_manager/wifi_manager.c b/project_components/wifi_manager/wifi_manager.c index 1e5264c..1ae7001 100644 --- a/project_components/wifi_manager/wifi_manager.c +++ b/project_components/wifi_manager/wifi_manager.c @@ -14,6 +14,10 @@ #include #include #include +#include +#include +#include +#include #define TAG __FILENAME__ @@ -49,10 +53,16 @@ static void set_sta_cred(const char *ssid, const char *password); static void disconn_handler(void); static int set_default_sta_cred(void); +static void wifi_led_init(); +static void wifi_led_set_blink(); +static void wifi_led_set_on(); + void wifi_manager_init(void) { esp_err_t err; uint8_t do_connect = 0; + wifi_led_init(); + wifi_led_set_blink(); ap_netif = esp_netif_create_default_wifi_ap(); assert(ap_netif); @@ -123,6 +133,55 @@ void wifi_manager_init(void) } } +void wifi_led_init() +{ +#if WIFI_LED_ENABLE + ledc_timer_config_t ledc_timer = { + .duty_resolution = LEDC_TIMER_14_BIT, // resolution of PWM duty + .freq_hz = 5, // frequency of PWM signal + .speed_mode = LEDC_LOW_SPEED_MODE, // timer mode + .timer_num = LEDC_TIMER_0, // timer index + .clk_cfg = LEDC_USE_APB_CLK, // Auto select the source clock + }; + ledc_timer_config(&ledc_timer); + + ledc_channel_config_t ledc_channel = { + .channel = LEDC_CHANNEL_0, + .duty = 0, + .gpio_num = WIFI_LED_PIN, + .speed_mode = LEDC_LOW_SPEED_MODE, + .hpoint = 1, + .timer_sel = LEDC_TIMER_0, + .flags.output_invert = 0 + }; + + ledc_channel_config(&ledc_channel); + ledc_fade_func_install(0); + + gpio_hal_iomux_func_sel(GPIO_PIN_MUX_REG[WIFI_LED_PIN], PIN_FUNC_GPIO); + gpio_set_direction(WIFI_LED_PIN, GPIO_MODE_OUTPUT_OD); + gpio_set_direction(WIFI_LED_PIN, GPIO_FLOATING); + esp_rom_gpio_connect_out_signal(WIFI_LED_PIN, ledc_periph_signal[LEDC_LOW_SPEED_MODE].sig_out0_idx + LEDC_CHANNEL_0, + 1, 0); +#endif +} + + +static void wifi_led_set_blink() +{ +#if WIFI_LED_ENABLE + ledc_set_duty_and_update(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, (1 << 12), 0); +#endif +} + + +static void wifi_led_set_on() +{ +#if WIFI_LED_ENABLE + ledc_set_duty_and_update(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, (1 << 14)-1, 0); +#endif +} + /** * @brief called by wifi_event_handler on scan done * */ @@ -270,6 +329,7 @@ int wifi_manager_connect(const char *ssid, const char *password) } /* connection success: overwrite last connected credential */ + wifi_led_set_on(); wifi_credential_t credential; memcpy(credential.ssid, ssid, 32); memcpy(credential.password, password, 64); @@ -317,6 +377,9 @@ static void reconnection_task(void *arg) ulTaskNotifyTake(pdTRUE, pdMS_TO_TICKS(20000)); if (ctx.conn.event || ctx.auto_reconnect == 0) { /* reconnection successful or stop reconnect */ + if (ctx.conn.event) { + wifi_led_set_on(); + } break; } @@ -342,7 +405,7 @@ static void disconn_handler(void) * 2. WI-FI AP or AP device is closed * 3. this device is ejected by AP * */ - + wifi_led_set_blink(); if (ctx.auto_reconnect == 0) { return; }