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 <WiFi.h>
|
||||||
#include "data/StateManager/StateManager.hpp"
|
#include "data/StateManager/StateManager.hpp"
|
||||||
#include "data/config/project_config.hpp"
|
#include "data/config/project_config.hpp"
|
||||||
|
#include "network/api/webserverHandler.hpp"
|
||||||
|
#include "network/stream/streamServer.hpp"
|
||||||
#include "data/utilities/helpers.hpp"
|
#include "data/utilities/helpers.hpp"
|
||||||
|
|
||||||
class WiFiHandler
|
class WiFiHandler
|
||||||
{
|
{
|
||||||
public:
|
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 &ssid,
|
||||||
const std::string &password,
|
const std::string &password,
|
||||||
uint8_t channel);
|
uint8_t channel);
|
||||||
virtual ~WiFiHandler();
|
virtual ~WiFiHandler();
|
||||||
|
void begin();
|
||||||
void setupWifi();
|
void setupWifi();
|
||||||
|
|
||||||
ProjectConfig *configManager;
|
ProjectConfig *configManager;
|
||||||
|
APIServer *apiServer;
|
||||||
|
StreamServer *streamServer;
|
||||||
StateManager<WiFiState_e> *stateManager;
|
StateManager<WiFiState_e> *stateManager;
|
||||||
|
|
||||||
bool _enable_adhoc;
|
bool _enable_adhoc;
|
||||||
|
|||||||
@ -2,10 +2,14 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
WiFiHandler::WiFiHandler(ProjectConfig *configManager,
|
WiFiHandler::WiFiHandler(ProjectConfig *configManager,
|
||||||
|
APIServer *apiServer,
|
||||||
|
StreamServer *streamServer,
|
||||||
StateManager<WiFiState_e> *stateManager,
|
StateManager<WiFiState_e> *stateManager,
|
||||||
const std::string &ssid,
|
const std::string &ssid,
|
||||||
const std::string &password,
|
const std::string &password,
|
||||||
uint8_t channel) : configManager(configManager),
|
uint8_t channel) : configManager(configManager),
|
||||||
|
apiServer(apiServer),
|
||||||
|
streamServer(streamServer),
|
||||||
stateManager(stateManager),
|
stateManager(stateManager),
|
||||||
ssid(ssid),
|
ssid(ssid),
|
||||||
password(password),
|
password(password),
|
||||||
@ -14,6 +18,49 @@ WiFiHandler::WiFiHandler(ProjectConfig *configManager,
|
|||||||
|
|
||||||
WiFiHandler::~WiFiHandler() {}
|
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()
|
void WiFiHandler::setupWifi()
|
||||||
{
|
{
|
||||||
if (this->_enable_adhoc || stateManager->getCurrentState() == WiFiState_e::WiFiState_ADHOC)
|
if (this->_enable_adhoc || stateManager->getCurrentState() == WiFiState_e::WiFiState_ADHOC)
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
#include "baseAPI.hpp"
|
#include "baseAPI.hpp"
|
||||||
|
|
||||||
BaseAPI::BaseAPI(int CONTROL_PORT,
|
BaseAPI::BaseAPI(int CONTROL_PORT,
|
||||||
WiFiHandler *network,
|
ProjectConfig *configManager,
|
||||||
CameraHandler *camera,
|
CameraHandler *camera,
|
||||||
StateManager<WiFiState_e> *stateManager,
|
StateManager<WiFiState_e> *stateManager,
|
||||||
const std::string &api_url) : API_Utilities(CONTROL_PORT,
|
const std::string &api_url) : configManager(configManager),
|
||||||
network,
|
API_Utilities(CONTROL_PORT,
|
||||||
camera,
|
camera,
|
||||||
stateManager,
|
stateManager,
|
||||||
api_url) {}
|
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());
|
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
|
else
|
||||||
{
|
{
|
||||||
@ -86,7 +86,7 @@ void BaseAPI::setWiFi(AsyncWebServerRequest *request)
|
|||||||
} */
|
} */
|
||||||
|
|
||||||
request->send(200, MIMETYPE_JSON, "{\"msg\":\"Done. Wifi Creds have been set.\"}");
|
request->send(200, MIMETYPE_JSON, "{\"msg\":\"Done. Wifi Creds have been set.\"}");
|
||||||
network->configManager->wifiConfigSave();
|
configManager->wifiConfigSave();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -132,27 +132,27 @@ void BaseAPI::handleJson(AsyncWebServerRequest *request)
|
|||||||
{
|
{
|
||||||
case DATA:
|
case DATA:
|
||||||
{
|
{
|
||||||
network->configManager->getDeviceConfig()->data_json = true;
|
configManager->getDeviceConfig()->data_json = true;
|
||||||
Network_Utilities::my_delay(1L);
|
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());
|
request->send(200, MIMETYPE_JSON, temp.c_str());
|
||||||
temp = std::string();
|
temp = std::string();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SETTINGS:
|
case SETTINGS:
|
||||||
{
|
{
|
||||||
network->configManager->getDeviceConfig()->config_json = true;
|
configManager->getDeviceConfig()->config_json = true;
|
||||||
Network_Utilities::my_delay(1L);
|
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());
|
request->send(200, MIMETYPE_JSON, temp.c_str());
|
||||||
temp = std::string();
|
temp = std::string();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CONFIG:
|
case CONFIG:
|
||||||
{
|
{
|
||||||
network->configManager->getDeviceConfig()->settings_json = true;
|
configManager->getDeviceConfig()->settings_json = true;
|
||||||
Network_Utilities::my_delay(1L);
|
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());
|
request->send(200, MIMETYPE_JSON, temp.c_str());
|
||||||
temp = std::string();
|
temp = std::string();
|
||||||
break;
|
break;
|
||||||
@ -196,7 +196,7 @@ void BaseAPI::factoryReset(AsyncWebServerRequest *request)
|
|||||||
case GET:
|
case GET:
|
||||||
{
|
{
|
||||||
log_d("Factory Reset");
|
log_d("Factory Reset");
|
||||||
network->configManager->reset();
|
configManager->reset();
|
||||||
request->send(200, MIMETYPE_JSON, "{\"msg\":\"Factory Reset\"}");
|
request->send(200, MIMETYPE_JSON, "{\"msg\":\"Factory Reset\"}");
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -294,8 +294,8 @@ void BaseAPI::setCamera(AsyncWebServerRequest *request)
|
|||||||
camera->setHFlip(temp_camera_hflip);
|
camera->setHFlip(temp_camera_hflip);
|
||||||
//! TODO: Need to add -> camera->setQuality(temp_camera_quality);
|
//! 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);
|
configManager->setCameraConfig(&temp_camera_vflip, &temp_camera_framesize, &temp_camera_hflip, &temp_camera_quality, true);
|
||||||
network->configManager->cameraConfigSave();
|
configManager->cameraConfigSave();
|
||||||
|
|
||||||
request->send(200, MIMETYPE_JSON, "{\"msg\":\"Done. Camera Settings have been set.\"}");
|
request->send(200, MIMETYPE_JSON, "{\"msg\":\"Done. Camera Settings have been set.\"}");
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
class BaseAPI : public API_Utilities
|
class BaseAPI : public API_Utilities
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
|
ProjectConfig *configManager;
|
||||||
enum JSON_TYPES
|
enum JSON_TYPES
|
||||||
{
|
{
|
||||||
CONFIG,
|
CONFIG,
|
||||||
@ -53,7 +53,7 @@ protected:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
BaseAPI(int CONTROL_PORT,
|
BaseAPI(int CONTROL_PORT,
|
||||||
WiFiHandler *network,
|
ProjectConfig *configManager,
|
||||||
CameraHandler *camera,
|
CameraHandler *camera,
|
||||||
StateManager<WiFiState_e> *stateManager,
|
StateManager<WiFiState_e> *stateManager,
|
||||||
const std::string &api_url);
|
const std::string &api_url);
|
||||||
|
|||||||
@ -15,12 +15,10 @@ const char *API_Utilities::MIMETYPE_JSON{"application/json"};
|
|||||||
//*********************************************************************************************
|
//*********************************************************************************************
|
||||||
|
|
||||||
API_Utilities::API_Utilities(int CONTROL_PORT,
|
API_Utilities::API_Utilities(int CONTROL_PORT,
|
||||||
WiFiHandler *network,
|
|
||||||
CameraHandler *camera,
|
CameraHandler *camera,
|
||||||
StateManager<WiFiState_e> *stateManager,
|
StateManager<WiFiState_e> *stateManager,
|
||||||
const std::string &api_url) : server(new AsyncWebServer(CONTROL_PORT)),
|
const std::string &api_url) : server(new AsyncWebServer(CONTROL_PORT)),
|
||||||
stateManager(stateManager),
|
stateManager(stateManager),
|
||||||
network(network),
|
|
||||||
camera(camera),
|
camera(camera),
|
||||||
api_url(api_url) {}
|
api_url(api_url) {}
|
||||||
|
|
||||||
|
|||||||
@ -30,7 +30,6 @@ class API_Utilities
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
API_Utilities(int CONTROL_PORT,
|
API_Utilities(int CONTROL_PORT,
|
||||||
WiFiHandler *network,
|
|
||||||
CameraHandler *camera,
|
CameraHandler *camera,
|
||||||
StateManager<WiFiState_e> *stateManager,
|
StateManager<WiFiState_e> *stateManager,
|
||||||
const std::string &api_url);
|
const std::string &api_url);
|
||||||
@ -69,7 +68,6 @@ protected:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
AsyncWebServer *server;
|
AsyncWebServer *server;
|
||||||
WiFiHandler *network;
|
|
||||||
CameraHandler *camera;
|
CameraHandler *camera;
|
||||||
StateManager<WiFiState_e> *stateManager;
|
StateManager<WiFiState_e> *stateManager;
|
||||||
typedef std::unordered_map<std::string, WebRequestMethodComposite> networkMethodsMap_t;
|
typedef std::unordered_map<std::string, WebRequestMethodComposite> networkMethodsMap_t;
|
||||||
|
|||||||
@ -5,11 +5,11 @@
|
|||||||
//*********************************************************************************************
|
//*********************************************************************************************
|
||||||
|
|
||||||
APIServer::APIServer(int CONTROL_PORT,
|
APIServer::APIServer(int CONTROL_PORT,
|
||||||
WiFiHandler *network,
|
ProjectConfig *configManager,
|
||||||
CameraHandler *camera,
|
CameraHandler *camera,
|
||||||
StateManager<WiFiState_e> *stateManager,
|
StateManager<WiFiState_e> *stateManager,
|
||||||
const std::string &api_url) : BaseAPI(CONTROL_PORT,
|
const std::string &api_url) : BaseAPI(CONTROL_PORT,
|
||||||
network,
|
configManager,
|
||||||
camera,
|
camera,
|
||||||
stateManager,
|
stateManager,
|
||||||
api_url) {}
|
api_url) {}
|
||||||
|
|||||||
@ -8,7 +8,7 @@ class APIServer : public BaseAPI
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
APIServer(int CONTROL_PORT,
|
APIServer(int CONTROL_PORT,
|
||||||
WiFiHandler *network,
|
ProjectConfig *configManager,
|
||||||
CameraHandler *camera,
|
CameraHandler *camera,
|
||||||
StateManager<WiFiState_e> *stateManager,
|
StateManager<WiFiState_e> *stateManager,
|
||||||
const std::string &api_url);
|
const std::string &api_url);
|
||||||
|
|||||||
@ -12,18 +12,17 @@
|
|||||||
|
|
||||||
#include <network/OTA/OTA.hpp>
|
#include <network/OTA/OTA.hpp>
|
||||||
|
|
||||||
int STREAM_SERVER_PORT = 80;
|
|
||||||
int CONTROL_SERVER_PORT = 81;
|
|
||||||
|
|
||||||
ProjectConfig deviceConfig;
|
ProjectConfig deviceConfig;
|
||||||
OTA ota(&deviceConfig);
|
OTA ota(&deviceConfig);
|
||||||
LEDManager ledManager(33);
|
LEDManager ledManager(33);
|
||||||
CameraHandler cameraHandler(&deviceConfig);
|
CameraHandler cameraHandler(&deviceConfig);
|
||||||
// SerialManager serialManager(&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);
|
MDNSHandler mdnsHandler(&mdnsStateManager, &deviceConfig);
|
||||||
StreamServer streamServer(STREAM_SERVER_PORT);
|
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
@ -37,48 +36,9 @@ void setup()
|
|||||||
deviceConfig.load();
|
deviceConfig.load();
|
||||||
cameraHandler.setupCamera();
|
cameraHandler.setupCamera();
|
||||||
|
|
||||||
wifiHandler._enable_adhoc = ENABLE_ADHOC;
|
wifiHandler._enable_adhoc = ENABLE_ADHOC; // force ADHOC mode at compile time.
|
||||||
|
wifiHandler.begin(); // start wifi, apiserver, and streamserver
|
||||||
wifiHandler.setupWifi();
|
|
||||||
mdnsHandler.startMDNS();
|
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();
|
ota.SetupOTA();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user