firmware/src/mesh/wifi/WiFiServerAPI.h

59 lines
1.7 KiB
C
Raw Normal View History

2020-07-08 01:33:33 +00:00
#pragma once
#include "StreamAPI.h"
#include <WiFi.h>
/**
* Provides both debug printing and, if the client starts sending protobufs to us, switches to send/receive protobufs
* (and starts dropping debug printing - FIXME, eventually those prints should be encapsulated in protobufs).
*/
class WiFiServerAPI : public StreamAPI
{
private:
WiFiClient client;
public:
2022-01-24 18:39:17 +00:00
explicit WiFiServerAPI(WiFiClient &_client);
2020-07-08 01:33:33 +00:00
virtual ~WiFiServerAPI();
/// override close to also shutdown the TCP link
2022-01-24 17:24:40 +00:00
virtual void close() override;
2020-07-08 01:33:33 +00:00
protected:
2021-08-18 16:25:17 +00:00
/// We override this method to prevent publishing EVENT_SERIAL_CONNECTED/DISCONNECTED for wifi links (we want the board to
/// stay in the POWERED state to prevent disabling wifi)
2022-01-24 17:24:40 +00:00
virtual void onConnectionChanged(bool connected) override {}
2022-01-24 17:24:40 +00:00
virtual int32_t runOnce() override; // Check for dropped client connections
/// Check the current underlying physical link to see if the client is currently connected
2022-01-24 17:24:40 +00:00
virtual bool checkIsConnected() override;
2020-07-08 01:33:33 +00:00
};
/**
* Listens for incoming connections and does accepts and creates instances of WiFiServerAPI as needed
*/
2020-10-10 01:57:57 +00:00
class WiFiServerPort : public WiFiServer, private concurrency::OSThread
2020-07-08 01:33:33 +00:00
{
/** The currently open port
*
* FIXME: We currently only allow one open TCP connection at a time, because we depend on the loop() call in this class to
* delegate to the worker. Once coroutines are implemented we can relax this restriction.
*/
WiFiServerAPI *openAPI = NULL;
2020-07-08 01:33:33 +00:00
public:
WiFiServerPort();
void init();
2021-08-18 16:25:17 +00:00
/// If an api server is running, we try to spit out debug 'serial' characters there
static void debugOut(char c);
protected:
2022-01-24 17:24:40 +00:00
int32_t runOnce() override;
2020-07-08 01:33:33 +00:00
};
2021-02-07 01:17:46 +00:00
void initApiServer();