Files
@ 24d49dea991a
Branch filter:
Location: protofusion-esp32-template/main/wifi.c - annotation
24d49dea991a
4.7 KiB
text/plain
Add runtime modes and seperate squeezy triggers
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 17740c77dca1 a02651c5dd9b a02651c5dd9b a02651c5dd9b 75e9d12deff7 9785a2ea3aa8 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 9785a2ea3aa8 9785a2ea3aa8 75e9d12deff7 75e9d12deff7 75e9d12deff7 9785a2ea3aa8 9785a2ea3aa8 9785a2ea3aa8 9785a2ea3aa8 9785a2ea3aa8 75e9d12deff7 75e9d12deff7 33512a8a338c 33512a8a338c 17740c77dca1 9785a2ea3aa8 9785a2ea3aa8 9785a2ea3aa8 75e9d12deff7 75e9d12deff7 75e9d12deff7 33512a8a338c 17740c77dca1 9785a2ea3aa8 9785a2ea3aa8 9785a2ea3aa8 75e9d12deff7 ec8f9a71fe0a 17740c77dca1 33512a8a338c 17740c77dca1 ec8f9a71fe0a ec8f9a71fe0a 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 9785a2ea3aa8 9785a2ea3aa8 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 48d2337d76c2 48d2337d76c2 48d2337d76c2 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 75e9d12deff7 | //
// wifi
//
#include "wifi.h"
#include "esp_wifi.h"
#include "esp_event.h"
#include "esp_log.h"
#include "lwip/err.h"
#include "lwip/sys.h"
#include "display.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/event_groups.h"
// Private variables
// FreeRTOS event group to signal when we are connected
static EventGroupHandle_t s_wifi_event_group;
static const char *TAG = "wifi station";
static int s_retry_num = 0;
// Handler for wifi events
static void __event_handler(void* arg, esp_event_base_t event_base, int32_t event_id, void* event_data)
{
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)
{
if (s_retry_num < EXAMPLE_ESP_MAXIMUM_RETRY)
{
esp_wifi_connect();
s_retry_num++;
ESP_LOGI(TAG, "retry to connect to the AP");
display_update_text("AP Connect Retry");
}
else
{
xEventGroupSetBits(s_wifi_event_group, WIFI_FAIL_BIT);
}
ESP_LOGI(TAG,"connect to the AP fail");
display_update_text("AP Connect Fail");
}
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, "WIFI OK, IP: " IPSTR, IP2STR(&event->ip_info.ip));
char out[128] = {0};
snprintf(out, 128, "WIFI OK\nIP: " IPSTR, IP2STR(&event->ip_info.ip));
display_update_text(out);
s_retry_num = 0;
xEventGroupSetBits(s_wifi_event_group, WIFI_CONNECTED_BIT);
}
}
// Initialize wifi and connect to network
void wifi_init(void)
{
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));
// EMZ new
ESP_ERROR_CHECK(esp_wifi_set_storage(WIFI_STORAGE_RAM));
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 = EXAMPLE_ESP_WIFI_SSID,
.password = EXAMPLE_ESP_WIFI_PASS,
/* Authmode threshold resets to WPA2 as default if password matches WPA2 standards (pasword len => 8).
* If you want to connect the device to deprecated WEP/WPA networks, Please set the threshold value
* to WIFI_AUTH_WEP/WIFI_AUTH_WPA_PSK and set the password with length and format matching to
* WIFI_AUTH_WEP/WIFI_AUTH_WPA_PSK standards.
*/
.threshold.authmode = ESP_WIFI_SCAN_AUTH_MODE_THRESHOLD,
.sae_pwe_h2e = ESP_WIFI_SAE_MODE,
.sae_h2e_identifier = EXAMPLE_H2E_IDENTIFIER,
},
};
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() );
ESP_LOGI(TAG, "wifi_init_sta finished.");
/* 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 SSID:%s password:%s",
EXAMPLE_ESP_WIFI_SSID, EXAMPLE_ESP_WIFI_PASS);
} else if (bits & WIFI_FAIL_BIT) {
ESP_LOGI(TAG, "Failed to connect to SSID:%s, password:%s",
EXAMPLE_ESP_WIFI_SSID, EXAMPLE_ESP_WIFI_PASS);
} else {
ESP_LOGE(TAG, "UNEXPECTED EVENT");
}
}
|