From e90fb2c6e7793ddaad8ceab5c84d9336cc353e5b Mon Sep 17 00:00:00 2001 From: Stephen Crane Date: Mon, 25 Mar 2019 16:12:38 +0000 Subject: [PATCH] socket filer --- socket_filer.cpp | 65 ++++++++++++++++++++++++++++++++++++++++++++++++ socket_filer.h | 19 ++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 socket_filer.cpp create mode 100644 socket_filer.h diff --git a/socket_filer.cpp b/socket_filer.cpp new file mode 100644 index 0000000..5e00e81 --- /dev/null +++ b/socket_filer.cpp @@ -0,0 +1,65 @@ +#include +#include +#include "hardware.h" +#include "serialio.h" +#include "filer.h" +#include "socket_filer.h" + +#if !defined(ESP32) +#pragma message "no socket filer" +#else +#include + +static WiFiServer server(23); +static WiFiClient client; + +static bool connected() { + if (client.connected()) + return true; + client = server.available(); + return client.connected(); +} + +// FIXME: hostname +bool socket_filer::start(const char *) { + +#if defined(WIFI_SSID) + WiFi.begin(WIFI_SSID, WIFI_PASSWORD); + + for (int i=0; i < 60 && WiFi.status() != WL_CONNECTED; i++) + delay(1000); + + server.begin(); + return WiFi.status() == WL_CONNECTED; +#else + return false; +#endif +} + +void socket_filer::write(uint8_t b) { + if (connected()) + client.write(b); +} + +uint8_t socket_filer::read() { + if (connected()) + return client.read(); + return 0; +} + +bool socket_filer::more() { + return connected() && client.available() > 0; +} + +#if !defined(NO_CHECKPOINT) +const char *socket_filer::checkpoint() { + // FIXME + return 0; +} + +void socket_filer::restore(const char *) { + // FIXME +} +#endif + +#endif diff --git a/socket_filer.h b/socket_filer.h new file mode 100644 index 0000000..64b442b --- /dev/null +++ b/socket_filer.h @@ -0,0 +1,19 @@ +#ifndef __SOCKET_FILER_H__ +#define __SOCKET_FILER_H__ + +class socket_filer: public filer { +public: + const char *advance() { return 0; } + const char *rewind() { return advance(); } + + const char *checkpoint(); + void restore(const char *); + + bool start(const char *); + void stop() {} + + uint8_t read(); + bool more(); + void write(uint8_t); +}; +#endif