6#ifndef wifidumbdisplay_h
7#define wifidumbdisplay_h
12#include "dumbdisplay.h"
18#define LOG_DDWIFI_STATUS
33 server(serverPort, tProtMode::TCP_MODE, tBlockingMode::NON_BLOCKING_MODE) {
35 this->password = passphrase;
36 this->port = serverPort;
37 this->bufferFilled =
false;
42 const char* getWhat() {
54 char c = this->buffer[0];
55 this->bufferFilled =
false;
65 void print(
const String &s) {
66#ifdef WRITE_BYTE_BY_BYTES
67 for (
size_t i = 0; i < s.length(); i++) {
82 void print(
const char *p) {
83#ifdef WRITE_BYTE_BY_BYTES
101 void write(uint8_t b) {
102#ifdef WRITE_BYTE_BY_BYTES
104 size_t count = client.write(b);
114 void write(
const uint8_t *buf,
size_t size) {
115#ifdef WRITE_BYTE_BY_BYTES
116 for (
size_t i = 0; i < size; i++) {
120 client.write(buf, size);
126 bool preConnect(
bool firstCall) {
128 if (!Serial) Serial.begin(DD_SERIAL_BAUD);
142 if (firstCall && !client.connected()) {
143 connectionState =
'0';
146 return connectionState ==
'C';
148 if (firstCall && !client.connected()) {
149 Serial.println(
"setup WIFI");
151 WiFi.begin(ssid, password);
152 connectionState =
' ';
156 return connectionState ==
'C';
160 if (client.connected()) {
161 Serial.println(
"stop client for new setup");
170 Serial.println(
"setup WIFI");
171 WiFi.begin(ssid, password);
172 connectionState =
' ';
177 return connectionState ==
'C';
186 WiFi.begin(ssid, password);
187 connectionState =
' ';
193 return connectionState ==
'C';
201 void validConnection() {
202#ifdef LOG_DDWIFI_STATUS
203 Serial.println(
" ... validate ...");
207 bool canConnectPassive() {
210 bool canUseBuffer() {
214 void checkConnection() {
215 if (connectionState ==
'0' || connectionState ==
'C') {
216 if (connectionState ==
'0' || WiFi.status() != WL_CONNECTED) {
217 if (connectionState ==
'C') {
218 Serial.println(
"lost WiFi ... try bind WiFi again ...");
222 Serial.println(
"setup WIFI");
223 WiFi.begin(ssid, password);
224 connectionState =
' ';
226 }
else if (!client.connected()) {
228 Serial.println(
"lost connection ... try bind again ...");
229 connectionState =
'W';
235 if (connectionState ==
' ') {
236 uint8_t status = WiFi.status();
237 if (status == WL_CONNECTED) {
238 Serial.print(
"binded WIFI ");
239 Serial.println(ssid);
241 connectionState =
'W';
244 long diff = millis() - stateMillis;
245 if (stateMillis == 0 || diff > 1000) {
246 Serial.print(
"binding WIFI ");
248#ifdef LOG_DDWIFI_STATUS
249 Serial.print(
" ... ");
250 Serial.print(status);
252 Serial.println(
" ...");
253 stateMillis = millis();
257 uint8_t status = WiFi.status();
258 if (status != WL_CONNECTED) {
259 connectionState =
' ';
262 long diff = millis() - stateMillis;
264 IPAddress localIP = WiFi.localIP();
266#ifdef LOG_DDWIFI_STATUS
267 Serial.print(
"via WIFI ... ");
268 Serial.print(WiFi.status());
269 Serial.print(
" ... ");
271 Serial.print(
"listening on ");
272 Serial.print(localIP);
275 Serial.println(
" ...");
276 stateMillis = millis();
278 WiFiClient cli = server.available();
279 if (cli && cli.connected()) {
281 connectionState =
'C';
283 Serial.println(
"client connected");
292 if (this->bufferFilled) {
295 int n = client.read(this->buffer, 1);
297 this->bufferFilled =
true;
307 char connectionState;
Definition: amb82wifidumbdisplay.h:24