mirror of
https://github.com/EyeTrackVR/OpenIris.git
synced 2025-11-04 15:39:42 +08:00
Large Update
- Clean up main - Change handling of APIServer start & StreamServer start to the WiFiHandler - Call the setupWifi in the WiFiHandler begin method - Remove WiFiHandler from APIServer and pass in ProjectConfig directly
This commit is contained in:
parent
f23c477315
commit
4812ba5f35
@ -6,19 +6,27 @@
|
||||
#include <WiFi.h>
|
||||
#include "data/StateManager/StateManager.hpp"
|
||||
#include "data/config/project_config.hpp"
|
||||
#include "network/api/webserverHandler.hpp"
|
||||
#include "network/stream/streamServer.hpp"
|
||||
#include "data/utilities/helpers.hpp"
|
||||
|
||||
class WiFiHandler
|
||||
{
|
||||
public:
|
||||
WiFiHandler(ProjectConfig *configManager, StateManager<WiFiState_e> *stateManager,
|
||||
WiFiHandler(ProjectConfig *configManager,
|
||||
APIServer *apiServer,
|
||||
StreamServer *streamServer,
|
||||
StateManager<WiFiState_e> *stateManager,
|
||||
const std::string &ssid,
|
||||
const std::string &password,
|
||||
uint8_t channel);
|
||||
virtual ~WiFiHandler();
|
||||
void begin();
|
||||
void setupWifi();
|
||||
|
||||
ProjectConfig *configManager;
|
||||
APIServer *apiServer;
|
||||
StreamServer *streamServer;
|
||||
StateManager<WiFiState_e> *stateManager;
|
||||
|
||||
bool _enable_adhoc;
|
||||
|
||||
@ -2,10 +2,14 @@
|
||||
#include <vector>
|
||||
|
||||
WiFiHandler::WiFiHandler(ProjectConfig *configManager,
|
||||
APIServer *apiServer,
|
||||
StreamServer *streamServer,
|
||||
StateManager<WiFiState_e> *stateManager,
|
||||
const std::string &ssid,
|
||||
const std::string &password,
|
||||
uint8_t channel) : configManager(configManager),
|
||||
apiServer(apiServer),
|
||||
streamServer(streamServer),
|
||||
stateManager(stateManager),
|
||||
ssid(ssid),
|
||||
password(password),
|
||||
@ -14,6 +18,49 @@ WiFiHandler::WiFiHandler(ProjectConfig *configManager,
|
||||
|
||||
WiFiHandler::~WiFiHandler() {}
|
||||
|
||||
void WiFiHandler::begin()
|
||||
{
|
||||
this->setupWifi();
|
||||
|
||||
switch (this->stateManager->getCurrentState())
|
||||
{
|
||||
case WiFiState_e::WiFiState_Disconnected:
|
||||
{
|
||||
//! TODO: Implement
|
||||
break;
|
||||
}
|
||||
case WiFiState_e::WiFiState_Disconnecting:
|
||||
{
|
||||
//! TODO: Implement
|
||||
break;
|
||||
}
|
||||
case WiFiState_e::WiFiState_ADHOC:
|
||||
{
|
||||
streamServer->startStreamServer();
|
||||
apiServer->begin();
|
||||
log_d("[SETUP]: Starting Stream Server");
|
||||
break;
|
||||
}
|
||||
case WiFiState_e::WiFiState_Connected:
|
||||
{
|
||||
streamServer->startStreamServer();
|
||||
apiServer->begin();
|
||||
log_d("[SETUP]: Starting Stream Server");
|
||||
break;
|
||||
}
|
||||
case WiFiState_e::WiFiState_Connecting:
|
||||
{
|
||||
//! TODO: Implement
|
||||
break;
|
||||
}
|
||||
case WiFiState_e::WiFiState_Error:
|
||||
{
|
||||
//! TODO: Implement
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WiFiHandler::setupWifi()
|
||||
{
|
||||
if (this->_enable_adhoc || stateManager->getCurrentState() == WiFiState_e::WiFiState_ADHOC)
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
#include "baseAPI.hpp"
|
||||
|
||||
BaseAPI::BaseAPI(int CONTROL_PORT,
|
||||
WiFiHandler *network,
|
||||
ProjectConfig *configManager,
|
||||
CameraHandler *camera,
|
||||
StateManager<WiFiState_e> *stateManager,
|
||||
const std::string &api_url) : API_Utilities(CONTROL_PORT,
|
||||
network,
|
||||
const std::string &api_url) : configManager(configManager),
|
||||
API_Utilities(CONTROL_PORT,
|
||||
camera,
|
||||
stateManager,
|
||||
api_url) {}
|
||||
@ -74,11 +74,11 @@ void BaseAPI::setWiFi(AsyncWebServerRequest *request)
|
||||
log_i("%s[%s]: %s\n", _networkMethodsMap[request->method()].c_str(), param->name().c_str(), param->value().c_str());
|
||||
}
|
||||
|
||||
network->configManager->setWifiConfig(ssid, ssid, password, &channel, adhoc, true);
|
||||
configManager->setWifiConfig(ssid, ssid, password, &channel, adhoc, true);
|
||||
|
||||
/* if (network->stateManager->getCurrentState() == WiFiState_e::WiFiState_ADHOC)
|
||||
/* if (stateManager->getCurrentState() == WiFiState_e::WiFiState_ADHOC)
|
||||
{
|
||||
network->configManager->setAPWifiConfig(ssid, password, &channel, adhoc, true);
|
||||
configManager->setAPWifiConfig(ssid, password, &channel, adhoc, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -86,7 +86,7 @@ void BaseAPI::setWiFi(AsyncWebServerRequest *request)
|
||||
} */
|
||||
|
||||
request->send(200, MIMETYPE_JSON, "{\"msg\":\"Done. Wifi Creds have been set.\"}");
|
||||
network->configManager->wifiConfigSave();
|
||||
configManager->wifiConfigSave();
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@ -132,27 +132,27 @@ void BaseAPI::handleJson(AsyncWebServerRequest *request)
|
||||
{
|
||||
case DATA:
|
||||
{
|
||||
network->configManager->getDeviceConfig()->data_json = true;
|
||||
configManager->getDeviceConfig()->data_json = true;
|
||||
Network_Utilities::my_delay(1L);
|
||||
std::string temp = network->configManager->getDeviceConfig()->data_json_string;
|
||||
std::string temp = configManager->getDeviceConfig()->data_json_string;
|
||||
request->send(200, MIMETYPE_JSON, temp.c_str());
|
||||
temp = std::string();
|
||||
break;
|
||||
}
|
||||
case SETTINGS:
|
||||
{
|
||||
network->configManager->getDeviceConfig()->config_json = true;
|
||||
configManager->getDeviceConfig()->config_json = true;
|
||||
Network_Utilities::my_delay(1L);
|
||||
std::string temp = network->configManager->getDeviceConfig()->config_json_string;
|
||||
std::string temp = configManager->getDeviceConfig()->config_json_string;
|
||||
request->send(200, MIMETYPE_JSON, temp.c_str());
|
||||
temp = std::string();
|
||||
break;
|
||||
}
|
||||
case CONFIG:
|
||||
{
|
||||
network->configManager->getDeviceConfig()->settings_json = true;
|
||||
configManager->getDeviceConfig()->settings_json = true;
|
||||
Network_Utilities::my_delay(1L);
|
||||
std::string temp = network->configManager->getDeviceConfig()->settings_json_string;
|
||||
std::string temp = configManager->getDeviceConfig()->settings_json_string;
|
||||
request->send(200, MIMETYPE_JSON, temp.c_str());
|
||||
temp = std::string();
|
||||
break;
|
||||
@ -196,7 +196,7 @@ void BaseAPI::factoryReset(AsyncWebServerRequest *request)
|
||||
case GET:
|
||||
{
|
||||
log_d("Factory Reset");
|
||||
network->configManager->reset();
|
||||
configManager->reset();
|
||||
request->send(200, MIMETYPE_JSON, "{\"msg\":\"Factory Reset\"}");
|
||||
}
|
||||
default:
|
||||
@ -294,8 +294,8 @@ void BaseAPI::setCamera(AsyncWebServerRequest *request)
|
||||
camera->setHFlip(temp_camera_hflip);
|
||||
//! TODO: Need to add -> camera->setQuality(temp_camera_quality);
|
||||
|
||||
network->configManager->setCameraConfig(&temp_camera_vflip, &temp_camera_framesize, &temp_camera_hflip, &temp_camera_quality, true);
|
||||
network->configManager->cameraConfigSave();
|
||||
configManager->setCameraConfig(&temp_camera_vflip, &temp_camera_framesize, &temp_camera_hflip, &temp_camera_quality, true);
|
||||
configManager->cameraConfigSave();
|
||||
|
||||
request->send(200, MIMETYPE_JSON, "{\"msg\":\"Done. Camera Settings have been set.\"}");
|
||||
break;
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
class BaseAPI : public API_Utilities
|
||||
{
|
||||
protected:
|
||||
|
||||
ProjectConfig *configManager;
|
||||
enum JSON_TYPES
|
||||
{
|
||||
CONFIG,
|
||||
@ -53,7 +53,7 @@ protected:
|
||||
|
||||
public:
|
||||
BaseAPI(int CONTROL_PORT,
|
||||
WiFiHandler *network,
|
||||
ProjectConfig *configManager,
|
||||
CameraHandler *camera,
|
||||
StateManager<WiFiState_e> *stateManager,
|
||||
const std::string &api_url);
|
||||
|
||||
@ -15,12 +15,10 @@ const char *API_Utilities::MIMETYPE_JSON{"application/json"};
|
||||
//*********************************************************************************************
|
||||
|
||||
API_Utilities::API_Utilities(int CONTROL_PORT,
|
||||
WiFiHandler *network,
|
||||
CameraHandler *camera,
|
||||
StateManager<WiFiState_e> *stateManager,
|
||||
const std::string &api_url) : server(new AsyncWebServer(CONTROL_PORT)),
|
||||
stateManager(stateManager),
|
||||
network(network),
|
||||
camera(camera),
|
||||
api_url(api_url) {}
|
||||
|
||||
|
||||
@ -30,7 +30,6 @@ class API_Utilities
|
||||
{
|
||||
public:
|
||||
API_Utilities(int CONTROL_PORT,
|
||||
WiFiHandler *network,
|
||||
CameraHandler *camera,
|
||||
StateManager<WiFiState_e> *stateManager,
|
||||
const std::string &api_url);
|
||||
@ -69,7 +68,6 @@ protected:
|
||||
|
||||
protected:
|
||||
AsyncWebServer *server;
|
||||
WiFiHandler *network;
|
||||
CameraHandler *camera;
|
||||
StateManager<WiFiState_e> *stateManager;
|
||||
typedef std::unordered_map<std::string, WebRequestMethodComposite> networkMethodsMap_t;
|
||||
|
||||
@ -5,11 +5,11 @@
|
||||
//*********************************************************************************************
|
||||
|
||||
APIServer::APIServer(int CONTROL_PORT,
|
||||
WiFiHandler *network,
|
||||
ProjectConfig *configManager,
|
||||
CameraHandler *camera,
|
||||
StateManager<WiFiState_e> *stateManager,
|
||||
const std::string &api_url) : BaseAPI(CONTROL_PORT,
|
||||
network,
|
||||
configManager,
|
||||
camera,
|
||||
stateManager,
|
||||
api_url) {}
|
||||
|
||||
@ -8,7 +8,7 @@ class APIServer : public BaseAPI
|
||||
{
|
||||
public:
|
||||
APIServer(int CONTROL_PORT,
|
||||
WiFiHandler *network,
|
||||
ProjectConfig *configManager,
|
||||
CameraHandler *camera,
|
||||
StateManager<WiFiState_e> *stateManager,
|
||||
const std::string &api_url);
|
||||
|
||||
@ -12,18 +12,17 @@
|
||||
|
||||
#include <network/OTA/OTA.hpp>
|
||||
|
||||
int STREAM_SERVER_PORT = 80;
|
||||
int CONTROL_SERVER_PORT = 81;
|
||||
|
||||
ProjectConfig deviceConfig;
|
||||
OTA ota(&deviceConfig);
|
||||
LEDManager ledManager(33);
|
||||
CameraHandler cameraHandler(&deviceConfig);
|
||||
// SerialManager serialManager(&deviceConfig);
|
||||
WiFiHandler wifiHandler(&deviceConfig, &wifiStateManager, WIFI_SSID, WIFI_PASSWORD, WIFI_CHANNEL);
|
||||
APIServer apiServer(CONTROL_SERVER_PORT, &wifiHandler, &cameraHandler, &wifiStateManager, "/control");
|
||||
|
||||
APIServer apiServer(81, &deviceConfig, &cameraHandler, &wifiStateManager, "/control");
|
||||
StreamServer streamServer(80);
|
||||
|
||||
WiFiHandler wifiHandler(&deviceConfig, &apiServer, &streamServer, &wifiStateManager, WIFI_SSID, WIFI_PASSWORD, WIFI_CHANNEL);
|
||||
MDNSHandler mdnsHandler(&mdnsStateManager, &deviceConfig);
|
||||
StreamServer streamServer(STREAM_SERVER_PORT);
|
||||
|
||||
void setup()
|
||||
{
|
||||
@ -37,48 +36,9 @@ void setup()
|
||||
deviceConfig.load();
|
||||
cameraHandler.setupCamera();
|
||||
|
||||
wifiHandler._enable_adhoc = ENABLE_ADHOC;
|
||||
|
||||
wifiHandler.setupWifi();
|
||||
wifiHandler._enable_adhoc = ENABLE_ADHOC; // force ADHOC mode at compile time.
|
||||
wifiHandler.begin(); // start wifi, apiserver, and streamserver
|
||||
mdnsHandler.startMDNS();
|
||||
|
||||
switch (wifiStateManager.getCurrentState())
|
||||
{
|
||||
case WiFiState_e::WiFiState_Disconnected:
|
||||
{
|
||||
//! TODO: Implement
|
||||
break;
|
||||
}
|
||||
case WiFiState_e::WiFiState_Disconnecting:
|
||||
{
|
||||
//! TODO: Implement
|
||||
break;
|
||||
}
|
||||
case WiFiState_e::WiFiState_ADHOC:
|
||||
{
|
||||
streamServer.startStreamServer();
|
||||
apiServer.begin();
|
||||
log_d("[SETUP]: Starting Stream Server");
|
||||
break;
|
||||
}
|
||||
case WiFiState_e::WiFiState_Connected:
|
||||
{
|
||||
streamServer.startStreamServer();
|
||||
apiServer.begin();
|
||||
log_d("[SETUP]: Starting Stream Server");
|
||||
break;
|
||||
}
|
||||
case WiFiState_e::WiFiState_Connecting:
|
||||
{
|
||||
//! TODO: Implement
|
||||
break;
|
||||
}
|
||||
case WiFiState_e::WiFiState_Error:
|
||||
{
|
||||
//! TODO: Implement
|
||||
break;
|
||||
}
|
||||
}
|
||||
ota.SetupOTA();
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user