From 9ffd551f594f52e6690b91ddad1084d6f45bac28 Mon Sep 17 00:00:00 2001 From: Mateusz Date: Fri, 18 Sep 2026 14:19:33 +0200 Subject: [PATCH] common repo init commit, wifi, http server --- ygg_http_server.c | 19 ++++++++++ ygg_http_server.h | 6 ++++ ygg_wifi.c | 90 +++++++++++++++++++++++++++++++++++++++++++++++ ygg_wifi.h | 11 ++++++ 4 files changed, 126 insertions(+) create mode 100644 ygg_http_server.c create mode 100644 ygg_http_server.h create mode 100644 ygg_wifi.c create mode 100644 ygg_wifi.h diff --git a/ygg_http_server.c b/ygg_http_server.c new file mode 100644 index 0000000..16e635b --- /dev/null +++ b/ygg_http_server.c @@ -0,0 +1,19 @@ +#include "esp_http_server.h" +#include "ygg_http_server.h" +#include "esp_log.h" + +static const char *TAG = "YGG_HTTP_SERVER"; + +httpd_handle_t ygg_start_webserver(void) +{ + httpd_handle_t server = NULL; + httpd_config_t config = HTTPD_DEFAULT_CONFIG(); + + ESP_LOGI(TAG, "Starting http server on port: %d", config.server_port); + if (httpd_start(&server, &config) == ESP_OK) { + return server; + } + + ESP_LOGE(TAG, "Error starting server!"); + return NULL; +} diff --git a/ygg_http_server.h b/ygg_http_server.h new file mode 100644 index 0000000..2abcce8 --- /dev/null +++ b/ygg_http_server.h @@ -0,0 +1,6 @@ +#ifndef YGG_HTTP_SERV +#define YGG_HTTP_SERV + +httpd_handle_t ygg_start_webserver(void); + +#endif diff --git a/ygg_wifi.c b/ygg_wifi.c new file mode 100644 index 0000000..363a01f --- /dev/null +++ b/ygg_wifi.c @@ -0,0 +1,90 @@ +#include +#include "freertos/event_groups.h" +#include "esp_wifi.h" +#include "esp_event.h" +#include "esp_netif.h" +#include "esp_log.h" +#include "ygg_wifi.h" + +#define WIFI_SSID "TP-Link_8D0E" +#define WIFI_PASS "49824643" + +#define WIFI_CONNECTED_BIT BIT0 +#define WIFI_FAIL_BIT BIT1 + +static const char *TAG = "YGG_WIFI"; +static EventGroupHandle_t s_wifi_event_group; + +void ygg_wifi_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) { + if (s_retry_num < 5) { + esp_wifi_connect(); + s_retry_num++; + ESP_LOGI(TAG, "Resuming connection to AP..."); + } else { + xEventGroupSetBits(s_wifi_event_group, WIFI_FAIL_BIT); + } + ESP_LOGI(TAG, "Connection to AP failed"); + } 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, "IP acquired:" IPSTR, IP2STR(&event->ip_info.ip)); + s_retry_num = 0; + xEventGroupSetBits(s_wifi_event_group, WIFI_CONNECTED_BIT); + } +} + +void ygg_wifi_init_sta(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)); + + 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, + &ygg_wifi_event_handler, + NULL, + &instance_any_id)); + ESP_ERROR_CHECK(esp_event_handler_instance_register(IP_EVENT, + IP_EVENT_STA_GOT_IP, + &ygg_wifi_event_handler, + NULL, + &instance_got_ip)); + + wifi_config_t wifi_config = { + .sta = { + .ssid = WIFI_SSID, + .password = WIFI_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()); + + ESP_LOGI(TAG, "Initialization wifi_init_sta done."); + + EventBits_t bits = xEventGroupWaitBits(s_wifi_event_group, + WIFI_CONNECTED_BIT | WIFI_FAIL_BIT, + pdFALSE, + pdFALSE, + portMAX_DELAY); + + if (bits & WIFI_CONNECTED_BIT) { + ESP_LOGI(TAG, "Connected to AP SSID:%s", WIFI_SSID); + } else if (bits & WIFI_FAIL_BIT) { + ESP_LOGI(TAG, "Connection error SSID:%s", WIFI_SSID); + } else { + ESP_LOGE(TAG, "UNEXPECTED EVENT"); + } +} diff --git a/ygg_wifi.h b/ygg_wifi.h new file mode 100644 index 0000000..cc73bbd --- /dev/null +++ b/ygg_wifi.h @@ -0,0 +1,11 @@ +#ifndef YGG_WIFI +#define YGG_WIFI + +#include "freertos/event_groups.h" +#include "esp_event.h" + +void ygg_wifi_event_handler(void* arg, esp_event_base_t event_base, + int32_t event_id, void* event_data); +void ygg_wifi_init_sta(void); + +#endif