mirror of
https://github.com/meshtastic/firmware.git
synced 2025-04-30 19:29:17 +00:00
Web server is now treaded and moved to mesh/wifi/*
This commit is contained in:
parent
cfcb00b943
commit
d458f673be
@ -31,7 +31,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include "graphics/images.h"
|
#include "graphics/images.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "mesh-pb-constants.h"
|
#include "mesh-pb-constants.h"
|
||||||
#include "meshwifi/meshwifi.h"
|
#include "mesh/wifi/WiFiAPClient.h"
|
||||||
#include "plugins/TextMessagePlugin.h"
|
#include "plugins/TextMessagePlugin.h"
|
||||||
#include "target_specific.h"
|
#include "target_specific.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
10
src/main.cpp
10
src/main.cpp
@ -19,11 +19,10 @@
|
|||||||
#include "concurrency/Periodic.h"
|
#include "concurrency/Periodic.h"
|
||||||
#include "graphics/Screen.h"
|
#include "graphics/Screen.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "meshwifi/meshhttp.h"
|
#include "mesh/wifi/WebServer.h"
|
||||||
#include "meshwifi/meshwifi.h"
|
#include "mesh/wifi/WiFiAPClient.h"
|
||||||
#include "mesh/wifi/WebServerThread.h"
|
|
||||||
#include "sleep.h"
|
|
||||||
#include "plugins/Plugins.h"
|
#include "plugins/Plugins.h"
|
||||||
|
#include "sleep.h"
|
||||||
#include "target_specific.h"
|
#include "target_specific.h"
|
||||||
#include <OneButton.h>
|
#include <OneButton.h>
|
||||||
#include <Wire.h>
|
#include <Wire.h>
|
||||||
@ -583,7 +582,7 @@ void loop()
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// TODO: This should go into a thread handled by FreeRTOS.
|
// TODO: This should go into a thread handled by FreeRTOS.
|
||||||
//handleWebResponse();
|
// handleWebResponse();
|
||||||
|
|
||||||
service.loop();
|
service.loop();
|
||||||
|
|
||||||
@ -596,5 +595,4 @@ void loop()
|
|||||||
// We want to sleep as long as possible here - because it saves power
|
// We want to sleep as long as possible here - because it saves power
|
||||||
mainDelay.delay(delayMsec);
|
mainDelay.delay(delayMsec);
|
||||||
// if (didWake) DEBUG_MSG("wake!\n");
|
// if (didWake) DEBUG_MSG("wake!\n");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
#include "error.h"
|
#include "error.h"
|
||||||
#include "mesh-pb-constants.h"
|
#include "mesh-pb-constants.h"
|
||||||
#include "meshwifi/meshwifi.h"
|
#include "mesh/wifi/WiFiAPClient.h"
|
||||||
#include <pb_decode.h>
|
#include <pb_decode.h>
|
||||||
#include <pb_encode.h>
|
#include <pb_encode.h>
|
||||||
|
|
||||||
|
14
src/mesh/wifi/ContentHelper.cpp
Normal file
14
src/mesh/wifi/ContentHelper.cpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#include "mesh/wifi/ContentHelper.h"
|
||||||
|
//#include <Arduino.h>
|
||||||
|
//#include "main.h"
|
||||||
|
|
||||||
|
void replaceAll(std::string &str, const std::string &from, const std::string &to)
|
||||||
|
{
|
||||||
|
if (from.empty())
|
||||||
|
return;
|
||||||
|
size_t start_pos = 0;
|
||||||
|
while ((start_pos = str.find(from, start_pos)) != std::string::npos) {
|
||||||
|
str.replace(start_pos, from.length(), to);
|
||||||
|
start_pos += to.length(); // In case 'to' contains 'from', like replacing 'x' with 'yx'
|
||||||
|
}
|
||||||
|
}
|
8
src/mesh/wifi/ContentHelper.h
Normal file
8
src/mesh/wifi/ContentHelper.h
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#include <Arduino.h>
|
||||||
|
#include <functional>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void replaceAll(std::string &str, const std::string &from, const std::string &to);
|
||||||
|
|
@ -2,14 +2,7 @@
|
|||||||
#include <functional>
|
#include <functional>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Steps:
|
This file contains static content.
|
||||||
- Compress the .js file to .js.gz
|
|
||||||
- Convert to hex:
|
|
||||||
http://tomeko.net/online_tools/file_to_hex.php?lang=en
|
|
||||||
- Paste into the array
|
|
||||||
- Note the filesize of your .gz file and write the file
|
|
||||||
size into the length int.
|
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Length of the binary data
|
// Length of the binary data
|
@ -1,12 +1,12 @@
|
|||||||
#include "meshwifi/meshhttp.h"
|
#include "mesh/wifi/WebServer.h"
|
||||||
#include "NodeDB.h"
|
#include "NodeDB.h"
|
||||||
#include "PowerFSM.h"
|
#include "PowerFSM.h"
|
||||||
#include "airtime.h"
|
#include "airtime.h"
|
||||||
#include "configuration.h"
|
|
||||||
#include "esp_task_wdt.h"
|
#include "esp_task_wdt.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "meshhttpStatic.h"
|
#include "mesh/wifi/ContentHelper.h"
|
||||||
#include "meshwifi/meshwifi.h"
|
#include "mesh/wifi/ContentStatic.h"
|
||||||
|
#include "mesh/wifi/WiFiAPClient.h"
|
||||||
#include "sleep.h"
|
#include "sleep.h"
|
||||||
#include <HTTPBodyParser.hpp>
|
#include <HTTPBodyParser.hpp>
|
||||||
#include <HTTPMultipartBodyParser.hpp>
|
#include <HTTPMultipartBodyParser.hpp>
|
||||||
@ -15,6 +15,7 @@
|
|||||||
#include <WebServer.h>
|
#include <WebServer.h>
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
|
|
||||||
|
|
||||||
// Persistant Data Storage
|
// Persistant Data Storage
|
||||||
#include <Preferences.h>
|
#include <Preferences.h>
|
||||||
Preferences prefs;
|
Preferences prefs;
|
||||||
@ -49,7 +50,6 @@ HTTPServer *insecureServer;
|
|||||||
// Our API to handle messages to and from the radio.
|
// Our API to handle messages to and from the radio.
|
||||||
HttpAPI webAPI;
|
HttpAPI webAPI;
|
||||||
|
|
||||||
|
|
||||||
// Declare some handler functions for the various URLs on the server
|
// Declare some handler functions for the various URLs on the server
|
||||||
void handleAPIv1FromRadio(HTTPRequest *req, HTTPResponse *res);
|
void handleAPIv1FromRadio(HTTPRequest *req, HTTPResponse *res);
|
||||||
void handleAPIv1ToRadio(HTTPRequest *req, HTTPResponse *res);
|
void handleAPIv1ToRadio(HTTPRequest *req, HTTPResponse *res);
|
||||||
@ -197,6 +197,19 @@ void createSSLCert()
|
|||||||
DEBUG_MSG("SSL Cert Ready!\n");
|
DEBUG_MSG("SSL Cert Ready!\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WebServerThread *webServerThread;
|
||||||
|
|
||||||
|
WebServerThread::WebServerThread() : concurrency::OSThread("WebServerThread") {}
|
||||||
|
|
||||||
|
int32_t WebServerThread::runOnce()
|
||||||
|
{
|
||||||
|
// DEBUG_MSG("WebServerThread::runOnce()\n");
|
||||||
|
handleWebResponse();
|
||||||
|
|
||||||
|
// Loop every 5ms.
|
||||||
|
return (5);
|
||||||
|
}
|
||||||
|
|
||||||
void initWebServer()
|
void initWebServer()
|
||||||
{
|
{
|
||||||
DEBUG_MSG("Initializing Web Server ...\n");
|
DEBUG_MSG("Initializing Web Server ...\n");
|
||||||
@ -242,6 +255,7 @@ void initWebServer()
|
|||||||
ResourceNode *nodeAPIv1ToRadioOptions = new ResourceNode("/api/v1/toradio", "OPTIONS", &handleAPIv1ToRadio);
|
ResourceNode *nodeAPIv1ToRadioOptions = new ResourceNode("/api/v1/toradio", "OPTIONS", &handleAPIv1ToRadio);
|
||||||
ResourceNode *nodeAPIv1ToRadio = new ResourceNode("/api/v1/toradio", "PUT", &handleAPIv1ToRadio);
|
ResourceNode *nodeAPIv1ToRadio = new ResourceNode("/api/v1/toradio", "PUT", &handleAPIv1ToRadio);
|
||||||
ResourceNode *nodeAPIv1FromRadio = new ResourceNode("/api/v1/fromradio", "GET", &handleAPIv1FromRadio);
|
ResourceNode *nodeAPIv1FromRadio = new ResourceNode("/api/v1/fromradio", "GET", &handleAPIv1FromRadio);
|
||||||
|
|
||||||
ResourceNode *nodeHotspot = new ResourceNode("/hotspot-detect.html", "GET", &handleHotspot);
|
ResourceNode *nodeHotspot = new ResourceNode("/hotspot-detect.html", "GET", &handleHotspot);
|
||||||
ResourceNode *nodeFavicon = new ResourceNode("/favicon.ico", "GET", &handleFavicon);
|
ResourceNode *nodeFavicon = new ResourceNode("/favicon.ico", "GET", &handleFavicon);
|
||||||
ResourceNode *nodeRoot = new ResourceNode("/", "GET", &handleRoot);
|
ResourceNode *nodeRoot = new ResourceNode("/", "GET", &handleRoot);
|
||||||
@ -341,6 +355,97 @@ void middlewareSpeedUp160(HTTPRequest *req, HTTPResponse *res, std::function<voi
|
|||||||
timeSpeedUp = millis();
|
timeSpeedUp = millis();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void handleAPIv1FromRadio(HTTPRequest *req, HTTPResponse *res)
|
||||||
|
{
|
||||||
|
|
||||||
|
DEBUG_MSG("+++++++++++++++ webAPI handleAPIv1FromRadio\n");
|
||||||
|
|
||||||
|
/*
|
||||||
|
For documentation, see:
|
||||||
|
https://github.com/meshtastic/Meshtastic-device/wiki/HTTP-REST-API-discussion
|
||||||
|
https://github.com/meshtastic/Meshtastic-device/blob/master/docs/software/device-api.md
|
||||||
|
|
||||||
|
Example:
|
||||||
|
http://10.10.30.198/api/v1/fromradio
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Get access to the parameters
|
||||||
|
ResourceParameters *params = req->getParams();
|
||||||
|
|
||||||
|
// std::string paramAll = "all";
|
||||||
|
std::string valueAll;
|
||||||
|
|
||||||
|
// Status code is 200 OK by default.
|
||||||
|
res->setHeader("Content-Type", "application/x-protobuf");
|
||||||
|
res->setHeader("Access-Control-Allow-Origin", "*");
|
||||||
|
res->setHeader("Access-Control-Allow-Methods", "PUT, GET");
|
||||||
|
res->setHeader("X-Protobuf-Schema", "https://raw.githubusercontent.com/meshtastic/Meshtastic-protobufs/master/mesh.proto");
|
||||||
|
|
||||||
|
uint8_t txBuf[MAX_STREAM_BUF_SIZE];
|
||||||
|
uint32_t len = 1;
|
||||||
|
|
||||||
|
if (params->getQueryParameter("all", valueAll)) {
|
||||||
|
|
||||||
|
// If all is ture, return all the buffers we have available
|
||||||
|
// to us at this point in time.
|
||||||
|
if (valueAll == "true") {
|
||||||
|
while (len) {
|
||||||
|
len = webAPI.getFromRadio(txBuf);
|
||||||
|
res->write(txBuf, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Otherwise, just return one protobuf
|
||||||
|
} else {
|
||||||
|
len = webAPI.getFromRadio(txBuf);
|
||||||
|
res->write(txBuf, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
// the param "all" was not spcified. Return just one protobuf
|
||||||
|
} else {
|
||||||
|
len = webAPI.getFromRadio(txBuf);
|
||||||
|
res->write(txBuf, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
DEBUG_MSG("--------------- webAPI handleAPIv1FromRadio, len %d\n", len);
|
||||||
|
}
|
||||||
|
|
||||||
|
void handleAPIv1ToRadio(HTTPRequest *req, HTTPResponse *res)
|
||||||
|
{
|
||||||
|
DEBUG_MSG("+++++++++++++++ webAPI handleAPIv1ToRadio\n");
|
||||||
|
|
||||||
|
/*
|
||||||
|
For documentation, see:
|
||||||
|
https://github.com/meshtastic/Meshtastic-device/wiki/HTTP-REST-API-discussion
|
||||||
|
https://github.com/meshtastic/Meshtastic-device/blob/master/docs/software/device-api.md
|
||||||
|
|
||||||
|
Example:
|
||||||
|
http://10.10.30.198/api/v1/toradio
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Status code is 200 OK by default.
|
||||||
|
|
||||||
|
res->setHeader("Content-Type", "application/x-protobuf");
|
||||||
|
res->setHeader("Access-Control-Allow-Headers", "Content-Type");
|
||||||
|
res->setHeader("Access-Control-Allow-Origin", "*");
|
||||||
|
res->setHeader("Access-Control-Allow-Methods", "PUT, OPTIONS");
|
||||||
|
res->setHeader("X-Protobuf-Schema", "https://raw.githubusercontent.com/meshtastic/Meshtastic-protobufs/master/mesh.proto");
|
||||||
|
|
||||||
|
if (req->getMethod() == "OPTIONS") {
|
||||||
|
res->setStatusCode(204); // Success with no content
|
||||||
|
res->print("");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
byte buffer[MAX_TO_FROM_RADIO_SIZE];
|
||||||
|
size_t s = req->readBytes(buffer, MAX_TO_FROM_RADIO_SIZE);
|
||||||
|
|
||||||
|
DEBUG_MSG("Received %d bytes from PUT request\n", s);
|
||||||
|
webAPI.handleToRadio(buffer, s);
|
||||||
|
|
||||||
|
res->write(buffer, s);
|
||||||
|
DEBUG_MSG("--------------- webAPI handleAPIv1ToRadio\n");
|
||||||
|
}
|
||||||
|
|
||||||
void handleStaticPost(HTTPRequest *req, HTTPResponse *res)
|
void handleStaticPost(HTTPRequest *req, HTTPResponse *res)
|
||||||
{
|
{
|
||||||
// Assume POST request. Contains submitted data.
|
// Assume POST request. Contains submitted data.
|
||||||
@ -877,97 +982,6 @@ void handleHotspot(HTTPRequest *req, HTTPResponse *res)
|
|||||||
res->println("<meta http-equiv=\"refresh\" content=\"0;url=/\" />\n");
|
res->println("<meta http-equiv=\"refresh\" content=\"0;url=/\" />\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
void handleAPIv1FromRadio(HTTPRequest *req, HTTPResponse *res)
|
|
||||||
{
|
|
||||||
|
|
||||||
DEBUG_MSG("+++++++++++++++ webAPI handleAPIv1FromRadio\n");
|
|
||||||
|
|
||||||
/*
|
|
||||||
For documentation, see:
|
|
||||||
https://github.com/meshtastic/Meshtastic-device/wiki/HTTP-REST-API-discussion
|
|
||||||
https://github.com/meshtastic/Meshtastic-device/blob/master/docs/software/device-api.md
|
|
||||||
|
|
||||||
Example:
|
|
||||||
http://10.10.30.198/api/v1/fromradio
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Get access to the parameters
|
|
||||||
ResourceParameters *params = req->getParams();
|
|
||||||
|
|
||||||
// std::string paramAll = "all";
|
|
||||||
std::string valueAll;
|
|
||||||
|
|
||||||
// Status code is 200 OK by default.
|
|
||||||
res->setHeader("Content-Type", "application/x-protobuf");
|
|
||||||
res->setHeader("Access-Control-Allow-Origin", "*");
|
|
||||||
res->setHeader("Access-Control-Allow-Methods", "PUT, GET");
|
|
||||||
res->setHeader("X-Protobuf-Schema", "https://raw.githubusercontent.com/meshtastic/Meshtastic-protobufs/master/mesh.proto");
|
|
||||||
|
|
||||||
uint8_t txBuf[MAX_STREAM_BUF_SIZE];
|
|
||||||
uint32_t len = 1;
|
|
||||||
|
|
||||||
if (params->getQueryParameter("all", valueAll)) {
|
|
||||||
|
|
||||||
// If all is ture, return all the buffers we have available
|
|
||||||
// to us at this point in time.
|
|
||||||
if (valueAll == "true") {
|
|
||||||
while (len) {
|
|
||||||
len = webAPI.getFromRadio(txBuf);
|
|
||||||
res->write(txBuf, len);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Otherwise, just return one protobuf
|
|
||||||
} else {
|
|
||||||
len = webAPI.getFromRadio(txBuf);
|
|
||||||
res->write(txBuf, len);
|
|
||||||
}
|
|
||||||
|
|
||||||
// the param "all" was not spcified. Return just one protobuf
|
|
||||||
} else {
|
|
||||||
len = webAPI.getFromRadio(txBuf);
|
|
||||||
res->write(txBuf, len);
|
|
||||||
}
|
|
||||||
|
|
||||||
DEBUG_MSG("--------------- webAPI handleAPIv1FromRadio, len %d\n", len);
|
|
||||||
}
|
|
||||||
|
|
||||||
void handleAPIv1ToRadio(HTTPRequest *req, HTTPResponse *res)
|
|
||||||
{
|
|
||||||
DEBUG_MSG("+++++++++++++++ webAPI handleAPIv1ToRadio\n");
|
|
||||||
|
|
||||||
/*
|
|
||||||
For documentation, see:
|
|
||||||
https://github.com/meshtastic/Meshtastic-device/wiki/HTTP-REST-API-discussion
|
|
||||||
https://github.com/meshtastic/Meshtastic-device/blob/master/docs/software/device-api.md
|
|
||||||
|
|
||||||
Example:
|
|
||||||
http://10.10.30.198/api/v1/toradio
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Status code is 200 OK by default.
|
|
||||||
|
|
||||||
res->setHeader("Content-Type", "application/x-protobuf");
|
|
||||||
res->setHeader("Access-Control-Allow-Headers", "Content-Type");
|
|
||||||
res->setHeader("Access-Control-Allow-Origin", "*");
|
|
||||||
res->setHeader("Access-Control-Allow-Methods", "PUT, OPTIONS");
|
|
||||||
res->setHeader("X-Protobuf-Schema", "https://raw.githubusercontent.com/meshtastic/Meshtastic-protobufs/master/mesh.proto");
|
|
||||||
|
|
||||||
if (req->getMethod() == "OPTIONS") {
|
|
||||||
res->setStatusCode(204); // Success with no content
|
|
||||||
res->print("");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
byte buffer[MAX_TO_FROM_RADIO_SIZE];
|
|
||||||
size_t s = req->readBytes(buffer, MAX_TO_FROM_RADIO_SIZE);
|
|
||||||
|
|
||||||
DEBUG_MSG("Received %d bytes from PUT request\n", s);
|
|
||||||
webAPI.handleToRadio(buffer, s);
|
|
||||||
|
|
||||||
res->write(buffer, s);
|
|
||||||
DEBUG_MSG("--------------- webAPI handleAPIv1ToRadio\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
To convert text to c strings:
|
To convert text to c strings:
|
||||||
|
|
||||||
@ -1212,13 +1226,3 @@ void handleFavicon(HTTPRequest *req, HTTPResponse *res)
|
|||||||
res->write(FAVICON_DATA, FAVICON_LENGTH);
|
res->write(FAVICON_DATA, FAVICON_LENGTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
void replaceAll(std::string &str, const std::string &from, const std::string &to)
|
|
||||||
{
|
|
||||||
if (from.empty())
|
|
||||||
return;
|
|
||||||
size_t start_pos = 0;
|
|
||||||
while ((start_pos = str.find(from, start_pos)) != std::string::npos) {
|
|
||||||
str.replace(start_pos, from.length(), to);
|
|
||||||
start_pos += to.length(); // In case 'to' contains 'from', like replacing 'x' with 'yx'
|
|
||||||
}
|
|
||||||
}
|
|
@ -12,18 +12,11 @@ void handleNotFound();
|
|||||||
|
|
||||||
void handleWebResponse();
|
void handleWebResponse();
|
||||||
|
|
||||||
void handleJSONChatHistory();
|
|
||||||
|
|
||||||
void notifyWebUI();
|
//void handleHotspot();
|
||||||
|
|
||||||
void handleHotspot();
|
//void handleStyleCSS();
|
||||||
|
//void handleRoot();
|
||||||
void handleStyleCSS();
|
|
||||||
void handleRoot();
|
|
||||||
void handleScriptsScriptJS();
|
|
||||||
void handleJSONChatHistoryDummy();
|
|
||||||
|
|
||||||
void replaceAll(std::string &str, const std::string &from, const std::string &to);
|
|
||||||
|
|
||||||
|
|
||||||
// Interface to the PhoneAPI to access the protobufs with messages
|
// Interface to the PhoneAPI to access the protobufs with messages
|
||||||
@ -39,3 +32,16 @@ class HttpAPI : public PhoneAPI
|
|||||||
protected:
|
protected:
|
||||||
// Nothing here yet
|
// Nothing here yet
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class WebServerThread : private concurrency::OSThread
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
WebServerThread();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
virtual int32_t runOnce();
|
||||||
|
};
|
||||||
|
|
||||||
|
extern WebServerThread *webServerThread;
|
@ -1,17 +0,0 @@
|
|||||||
#include "mesh/wifi/WebServerThread.h"
|
|
||||||
#include "meshwifi/meshhttp.h"
|
|
||||||
#include <Arduino.h>
|
|
||||||
|
|
||||||
WebServerThread *webServerThread;
|
|
||||||
|
|
||||||
WebServerThread::WebServerThread() : concurrency::OSThread("WebServerThread") {}
|
|
||||||
|
|
||||||
int32_t WebServerThread::runOnce()
|
|
||||||
{
|
|
||||||
//DEBUG_MSG("WebServerThread::runOnce()\n");
|
|
||||||
handleWebResponse();
|
|
||||||
|
|
||||||
// Loop every 5ms.
|
|
||||||
return (5);
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include "concurrency/OSThread.h"
|
|
||||||
#include "configuration.h"
|
|
||||||
#include <Arduino.h>
|
|
||||||
#include <functional>
|
|
||||||
|
|
||||||
|
|
||||||
class WebServerThread : private concurrency::OSThread
|
|
||||||
{
|
|
||||||
|
|
||||||
public:
|
|
||||||
WebServerThread();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
|
|
||||||
virtual int32_t runOnce();
|
|
||||||
};
|
|
||||||
|
|
||||||
extern WebServerThread *webServerThread;
|
|
@ -1,9 +1,9 @@
|
|||||||
#include "meshwifi.h"
|
#include "mesh/wifi/WiFiAPClient.h"
|
||||||
#include "NodeDB.h"
|
#include "NodeDB.h"
|
||||||
#include "mesh/wifi/WiFiServerAPI.h"
|
#include "mesh/wifi/WiFiServerAPI.h"
|
||||||
#include "configuration.h"
|
#include "configuration.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "meshwifi/meshhttp.h"
|
#include "mesh/wifi/WebServer.h"
|
||||||
#include "target_specific.h"
|
#include "target_specific.h"
|
||||||
#include <DNSServer.h>
|
#include <DNSServer.h>
|
||||||
#include <ESPmDNS.h>
|
#include <ESPmDNS.h>
|
@ -7,7 +7,7 @@
|
|||||||
#include "esp_bt.h"
|
#include "esp_bt.h"
|
||||||
#include "host/util/util.h"
|
#include "host/util/util.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "meshwifi/meshwifi.h"
|
#include "mesh/wifi/WiFiAPClient.h"
|
||||||
#include "nimble/NimbleDefs.h"
|
#include "nimble/NimbleDefs.h"
|
||||||
#include "services/gap/ble_svc_gap.h"
|
#include "services/gap/ble_svc_gap.h"
|
||||||
#include "services/gatt/ble_svc_gatt.h"
|
#include "services/gatt/ble_svc_gatt.h"
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#include "meshwifi/meshhttp.h"
|
#include "mesh/wifi/WebServer.h"
|
||||||
#include "meshwifi/meshwifi.h"
|
#include "mesh/wifi/WiFiAPClient.h"
|
||||||
|
|
||||||
void initWifi(bool forceSoftAP) {}
|
void initWifi(bool forceSoftAP) {}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user