#pragma once #include #include #include #include #include "../Activity.h" // Enum for network mode selection enum class NetworkMode { JOIN_NETWORK, CREATE_HOTSPOT }; /** * NetworkModeSelectionActivity presents the user with a choice: * - "Join a Network" - Connect to an existing WiFi network (STA mode) * - "Create Hotspot" - Create an Access Point that others can connect to (AP mode) * * The onModeSelected callback is called with the user's choice. * The onCancel callback is called if the user presses back. */ class NetworkModeSelectionActivity final : public Activity { TaskHandle_t displayTaskHandle = nullptr; SemaphoreHandle_t renderingMutex = nullptr; int selectedIndex = 0; bool updateRequired = false; const std::function onModeSelected; const std::function onCancel; static void taskTrampoline(void* param); [[noreturn]] void displayTaskLoop(); void render() const; public: explicit NetworkModeSelectionActivity(GfxRenderer& renderer, MappedInputManager& mappedInput, const std::function& onModeSelected, const std::function& onCancel) : Activity("NetworkModeSelection", renderer, mappedInput), onModeSelected(onModeSelected), onCancel(onCancel) {} void onEnter() override; void onExit() override; void loop() override; };