Something went wrong. Try again.
A fork of https://github.com/crosspoint-reader/crosspoint-reader
Something went wrong. Try again.
2.3 kB · 64 lines
C
at master
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465#pragma once
#include <functional>#include <memory>#include <string>
#include "NetworkModeSelectionActivity.h"#include "activities/Activity.h"#include "network/CrossPointWebServer.h"
// Web server activity statesenum class WebServerActivityState { MODE_SELECTION, // Choosing between Join Network and Create Hotspot WIFI_SELECTION, // WiFi selection subactivity is active (for Join Network mode) AP_STARTING, // Starting Access Point mode SERVER_RUNNING, // Web server is running and handling requests SHUTTING_DOWN // Shutting down server and WiFi};
/** * CrossPointWebServerActivity is the entry point for file transfer functionality. * It: * - First presents a choice between "Join a Network" (STA), "Connect to Calibre", and "Create Hotspot" (AP) * - For STA mode: Launches WifiSelectionActivity to connect to an existing network * - For AP mode: Creates an Access Point that clients can connect to * - Starts the CrossPointWebServer when connected * - Handles client requests in its loop() function * - Cleans up the server and shuts down WiFi on exit */class CrossPointWebServerActivity final : public Activity { WebServerActivityState state = WebServerActivityState::MODE_SELECTION;
// Network mode NetworkMode networkMode = NetworkMode::JOIN_NETWORK; bool isApMode = false;
// Web server - owned by this activity std::unique_ptr<CrossPointWebServer> webServer;
// Server status std::string connectedIP; std::string connectedSSID; // For STA mode: network name, For AP mode: AP name
// Performance monitoring unsigned long lastHandleClientTime = 0;
void renderServerRunning() const;
void onNetworkModeSelected(NetworkMode mode); void onWifiSelectionComplete(bool connected); void startAccessPoint(); void startWebServer(); void stopWebServer();
public: explicit CrossPointWebServerActivity(GfxRenderer& renderer, MappedInputManager& mappedInput) : Activity("CrossPointWebServer", renderer, mappedInput) {} void onEnter() override; void onExit() override; void loop() override; void render(RenderLock&&) override; bool skipLoopDelay() override { return webServer && webServer->isRunning(); } bool preventAutoSleep() override { return webServer && webServer->isRunning(); }};