mirror of
https://github.com/meshtastic/firmware.git
synced 2025-12-22 18:52:30 +00:00
Sample usage: First configure device to use @mc-hamster's new wifi stuff: meshtastic --set wifi_ssid mylanname --set wifi_password mylanpassword Then reboot the device (so wifi starts up). (assuming device was assigned addr 192.168.81.45) meshtastic --info --host 192.168.81.45 (See the usual device info you previously had to get over USB) Caveats: * Currently we are limiting to one active TCP connection open at once, if you open a new session the old one is closed automatically * There are no access controls/authentication needed to open a TCP connection to the device * Currently main.cpp is kinda dumb about how we should schedule work and we rely on too many helper loop() functions. Very soon in my queue (related to all the other cleanup) is to add a basic notion of coroutines, so that we can get away from freertos threads and this old school arduino loop function. Once that cleanup happens we can the a) have much lower battery consumption (always) and b) super fast response for all operations.
46 lines
1.1 KiB
C++
46 lines
1.1 KiB
C++
#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:
|
|
WiFiServerAPI(WiFiClient &_client);
|
|
|
|
virtual ~WiFiServerAPI();
|
|
|
|
virtual void loop(); // Check for dropped client connections
|
|
|
|
protected:
|
|
/// Hookable to find out when connection changes
|
|
virtual void onConnectionChanged(bool connected);
|
|
};
|
|
|
|
/**
|
|
* Listens for incoming connections and does accepts and creates instances of WiFiServerAPI as needed
|
|
*/
|
|
class WiFiServerPort : public WiFiServer
|
|
{
|
|
/** 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;
|
|
|
|
public:
|
|
WiFiServerPort();
|
|
|
|
void init();
|
|
|
|
void loop();
|
|
};
|