From 5d7c67eeedc7013cf89770572147d88c5cf2dc6f Mon Sep 17 00:00:00 2001 From: Johnathon Slightham Date: Mon, 26 May 2025 14:44:08 -0400 Subject: [PATCH] SOLID design for wifi module --- .idea/firmware.iml | 2 ++ .idea/modules.xml | 8 ++++++++ components/rpc/WifiManager.cpp | 22 +++++----------------- components/rpc/include/IWifiManager.h | 15 +++++++++++++++ components/rpc/include/WifiManager.h | 14 +++++++------- main/main.cpp | 5 ++--- 6 files changed, 39 insertions(+), 27 deletions(-) create mode 100644 .idea/firmware.iml create mode 100644 .idea/modules.xml create mode 100644 components/rpc/include/IWifiManager.h diff --git a/.idea/firmware.iml b/.idea/firmware.iml new file mode 100644 index 0000000..f08604b --- /dev/null +++ b/.idea/firmware.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..cb860b6 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/components/rpc/WifiManager.cpp b/components/rpc/WifiManager.cpp index 467913b..fa736bc 100644 --- a/components/rpc/WifiManager.cpp +++ b/components/rpc/WifiManager.cpp @@ -8,26 +8,17 @@ #include "freertos/semphr.h" #include "esp_wifi.h" -int WifiManager::init() { +WifiManager::WifiManager() { esp_netif_init(); esp_event_loop_create_default(); esp_netif_create_default_wifi_sta(); - printf("finished esp init"); - this->m_mutex = xSemaphoreCreateMutex(); - this->m_state = wifi_state::connect; + this->m_state = wifi_state::disconnected; this->m_attempts = 0; - - printf("finished variable init"); - - printf("lambda"); + this->m_task = nullptr; // suppress warning xTaskCreate(reinterpret_cast(s_manage), "wifi_task", 4096, this, 5, &m_task); - - printf("task create"); - - return 0; } int WifiManager::connect() { @@ -51,25 +42,20 @@ int WifiManager::disconnect() { switch (state) { case wifi_state::connect: - printf("connect state\n"); init_connection(); update_state(wifi_state::connecting); break; case wifi_state::connecting: - printf("connecting state\n"); handle_connecting(); break; case wifi_state::searching: - printf("searching state\n"); handle_search(); break; case wifi_state::disconnect: - printf("disconnect state\n"); handle_disconnect(); update_state(wifi_state::disconnected); break; default: - printf("sleep state\n"); vTaskSuspend(nullptr); break; } @@ -128,6 +114,8 @@ int WifiManager::handle_disconnect() { } int WifiManager::handle_search() { + // todo: softap + printf("Waiting for configuration"); return 0; } diff --git a/components/rpc/include/IWifiManager.h b/components/rpc/include/IWifiManager.h new file mode 100644 index 0000000..a93d814 --- /dev/null +++ b/components/rpc/include/IWifiManager.h @@ -0,0 +1,15 @@ +// +// Created by Johnathon Slightham on 2025-05-26. +// + +#ifndef IWIFIMANAGER_H +#define IWIFIMANAGER_H + +class IWifiManager { +public: + virtual ~IWifiManager() {}; + virtual int connect(); + virtual int disconnect(); +}; + +#endif //IWIFIMANAGER_H diff --git a/components/rpc/include/WifiManager.h b/components/rpc/include/WifiManager.h index a2fef81..0de812c 100644 --- a/components/rpc/include/WifiManager.h +++ b/components/rpc/include/WifiManager.h @@ -6,13 +6,14 @@ #include "freertos/FreeRTOS.h" #include "freertos/semphr.h" -class WifiManager { +#include "IWifiManager.h" + +class WifiManager final : IWifiManager { public: - WifiManager() = default; - ~WifiManager() = default; - int init(); - int connect(); - int disconnect(); + WifiManager(); + ~WifiManager() override = default; + int connect() override; + int disconnect() override; [[noreturn]] void manage(); @@ -28,7 +29,6 @@ private: static void wifi_event_handler(void *event_handler_arg, esp_event_base_t event_base, int32_t event_id, void *event_data); - SemaphoreHandle_t m_mutex; wifi_state m_state; TaskHandle_t m_task; diff --git a/main/main.cpp b/main/main.cpp index 56b4894..a364186 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -1,21 +1,20 @@ #include -#include #include #include "sdkconfig.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" -#include "esp_chip_info.h" #include "esp_flash.h" #include "nvs_flash.h" #include "WifiManager.h" +#include "IWifiManager.h" extern "C" [[noreturn]] void app_main(void) { nvs_flash_init(); const auto manager = std::make_unique(); - manager->init(); + manager->connect(); printf("Hello world!\n");