-
-
Notifications
You must be signed in to change notification settings - Fork 465
/
config.h
599 lines (516 loc) · 20.2 KB
/
config.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
/*
config.h - ESP3D configuration class
Copyright (c) 2014 Luc Lebosse. All rights reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
//version and sources location
#define FW_VERSION "2.1.4"
#define REPOSITORY "https://github.com/luc-github/ESP3D"
//Customize ESP3D ////////////////////////////////////////////////////////////////////////
#define ESP8266_MODEL_NAME "ESP8266"
#define ESP8266_MODEL_URL "http://espressif.com/en/products/esp8266/"
#define ESP32_MODEL_NAME "ESP32"
#define ESP32_MODEL_URL "https://www.espressif.com/en/products/hardware/esp-wroom-32/overview"
#define ESP_MODEL_NUMBER "ESP3D 2.1"
#define ESP_MANUFACTURER_NAME "Espressif Systems"
#define ESP_MANUFACTURER_URL "http://espressif.com"
//default name if no mac address is valid
#define ESP_DEFAULT_NAME "MYESP"
//if commented name will follow mac address 3 last digits
//like ESP_XXXXXX (eg:ESP_028E41) to avoid overlap if several ESP3D
#define ESP_HOST_NAME ESP_DEFAULT_NAME
//To allow webupdate using small updater
//#define USE_AS_UPDATER_ONLY
//FEATURES - comment to disable //////////////////////////////////////////////////////////
//WEB_UPDATE_FEATURE: allow to flash fw using web UI
#define WEB_UPDATE_FEATURE
#ifndef USE_AS_UPDATER_ONLY
//Do we use async webserver or not (currntly deprecated do not enable it yet)
//#define ASYNCWEBSERVER
//SERIAL_COMMAND_FEATURE: allow to send command by serial
#define SERIAL_COMMAND_FEATURE
//TCP_IP_DATA_FEATURE: allow to connect serial from TCP/IP
#define TCP_IP_DATA_FEATURE
//NOTIFICATION_FEATURE : allow to push notifications
#define NOTIFICATION_FEATURE
//MKS TFT WIFI support see Wiki for wiring
//#define MKS_TFT_FEATURE
//MDNS_FEATURE: this feature allow type the name defined
//in web browser by default: http:\\esp8266.local and connect
#define MDNS_FEATURE
//SSDD_FEATURE: this feature is a discovery protocol, supported on Windows out of the box
#define SSDP_FEATURE
//NETBIOS_FEATURE: this feature is a discovery protocol, supported on Windows out of the box
//#define NETBIOS_FEATURE
//CAPTIVE_PORTAL_FEATURE: In SoftAP redirect all unknow call to main page
#define CAPTIVE_PORTAL_FEATURE
//RECOVERY_FEATURE: allow to use GPIO2 pin as hardware reset for EEPROM, add 8s to boot time to let user to jump GPIO2 to GND
//#define RECOVERY_FEATURE
//DIRECT_PIN_FEATURE: allow to access pin using ESP201 command
#define DIRECT_PIN_FEATURE
//ESP_OLED_FEATURE: allow oled screen output
//#define ESP_OLED_FEATURE
//DHT_FEATURE: send update of temperature / humidity based on DHT 11/22
//#define DHT_FEATURE
//AUTHENTICATION_FEATURE: protect pages by login password
//#define AUTHENTICATION_FEATURE
//WS_DATA_FEATURE: allow to connect serial from Websocket
#define WS_DATA_FEATURE
//TIMESTAMP_FEATURE: Time stamp feature on direct SD files
//#define TIMESTAMP_FEATURE
#endif //USE_AS_UPDATER_ONLY
//Extra features /////////////////////////////////////////////////////////////////////////
//Workaround for Marlin 2.X coldstart
//#define DISABLE_CONNECTING_MSG
//Serial rx buffer size is 256 but can be extended
#define SERIAL_RX_BUFFER_SIZE 512
//Serial Parameters
#define ESP_SERIAL_PARAM SERIAL_8N1
//which serial ESP use to communicate to printer (ESP32 has 3 serials available, ESP8266 only one)
//Uncomment one only
#define USE_SERIAL_0
//For ESP32 Only
//#define USE_SERIAL_1
//#define USE_SERIAL_2
//Pins Definition ////////////////////////////////////////////////////////////////////////
//-1 means use default pins of your board what ever the serial you choose
#define ESP_RX_PIN -1
#define ESP_TX_PIN -1
#ifdef RECOVERY_FEATURE
//pin used to reset setting
#define RESET_CONFIG_PIN 2
#endif
#ifdef DHT_FEATURE
#define ESP_DHT_PIN 2
#endif
//Pins where the screen is connected
#ifdef ESP_OLED_FEATURE
#define OLED_DISPLAY_SSD1306 // OLED Display Type: SSD1306(OLED_DISPLAY_SSD1306) / SH1106(OLED_DISPLAY_SH1106), comment this line out to disable oled
#define OLED_PIN_SDA 4 //5 //SDA; // i2c SDA Pin
#define OLED_PIN_SCL 15 //4 //SCL; // i2c SCL Pin
#define OLED_ADDR 0x3c
#define HELTEC_EMBEDDED_PIN 16 //0 to disable
#define OLED_FLIP_VERTICALY 1 //0 to disable
#endif
//Supported FW /////////////////////////////////////////////////////////////
#define UNKNOWN_FW 0
#define REPETIER4DV 1
#define MARLIN 2
#define MARLINKIMBRA 3
#define SMOOTHIEWARE 4
#define REPETIER 5
#define GRBL 6
#define MAX_FW_ID 6
//For FW which has issue with checksum or not handling M110 properly///////
//#define DISABLE_SERIAL_CHECKSUM
//Do not Edit after this line //////////////////////////////////////////////
//DEBUG Flag do not do this when connected to printer !!!
//be noted all upload may failed if enabled
//#define DEBUG_ESP3D
//#define DEBUG_OUTPUT_SPIFFS
//#define DEBUG_OUTPUT_SERIAL
//#define DEBUG_OUTPUT_TCP
//#define DEBUG_OUTPUT_SOCKET
//Sanity check
#ifndef SDCARD_FEATURE
#ifdef TIMESTAMP_FEATURE
#undef TIMESTAMP_FEATURE
#endif
#endif
#if defined(ASYNCWEBSERVER)
#define ESP_USE_ASYNC true
#error it no more supported
#else
#define ESP_USE_ASYNC false
#endif
//number of clients allowed to use data port at once
#define MAX_SRV_CLIENTS 1
#ifdef ARDUINO_ARCH_ESP32
#include "FS.h"
#include "SPIFFS.h"
using fs::File;
#define WIFI_NONE_SLEEP WIFI_PS_NONE
#define WIFI_LIGHT_SLEEP WIFI_PS_MIN_MODEM
#define WIFI_MODEM_SLEEP WIFI_PS_MAX_MODEM
#define WIFI_PHY_MODE_11B WIFI_PROTOCOL_11B
#define WIFI_PHY_MODE_11G WIFI_PROTOCOL_11B | WIFI_PROTOCOL_11G
#define WIFI_PHY_MODE_11N WIFI_PROTOCOL_11B | WIFI_PROTOCOL_11G | WIFI_PROTOCOL_11N
#define AUTH_OPEN WIFI_AUTH_OPEN
#define AUTH_WEP WIFI_AUTH_WEP
#define AUTH_WPA_PSK WIFI_AUTH_WPA_PSK
#define AUTH_WPA2_PSK WIFI_AUTH_WPA2_PSK
#define AUTH_WPA_WPA2_PSK WIFI_AUTH_WPA_WPA2_PSK
#define ENC_TYPE_NONE AUTH_OPEN
#define FS_FILE File
#define FS_DIR File
#define SD_FILE_READ FILE_READ
#define SPIFFS_FILE_READ FILE_READ
#define SD_FILE_WRITE FILE_WRITE
#define SPIFFS_FILE_WRITE FILE_WRITE
#define WIFI_EVENT_STAMODE_CONNECTED SYSTEM_EVENT_STA_CONNECTED
#define WIFI_EVENT_STAMODE_DISCONNECTED SYSTEM_EVENT_STA_DISCONNECTED
#define WIFI_EVENT_STAMODE_GOT_IP SYSTEM_EVENT_STA_GOT_IP
#define WIFI_EVENT_SOFTAPMODE_STACONNECTED SYSTEM_EVENT_AP_STACONNECTED
#else
#define FS_DIR fs::Dir
#define FS_FILE fs::File
#define SD_FILE_READ FILE_READ
#define SPIFFS_FILE_READ "r"
#define SD_FILE_WRITE FILE_WRITE
#define SPIFFS_FILE_WRITE "w"
#endif
//WEBHOST_SDCARD_FEATURE : to use SDCard to host webpages
//NOT YET IMPLEMENTED!!! Keep it as TODO
//#define WEBHOST_SDCARD_FEATURE
#ifdef DEBUG_OUTPUT_SOCKET
extern void log_socket(const char *format, ...);
extern const char * pathToFileName(const char * path);
#define log_esp3d(format, ...) log_socket("\n[ESP3D][%s:%u] %s(): " format "\n", pathToFileName(__FILE__), __LINE__, __FUNCTION__, ##__VA_ARGS__)
#else
#define log_esp3d(format, ...)
#endif
#ifdef DEBUG_ESP3D
#ifdef DEBUG_OUTPUT_SPIFFS
#ifndef FS_NO_GLOBALS
#define FS_NO_GLOBALS
#endif
#include <FS.h>
#define DEBUG_PIPE NO_PIPE
#define LOG(string) { FS_FILE logfile = SPIFFS.open("/log.txt", "a+");logfile.print(string);logfile.close();}
#endif
#ifdef DEBUG_OUTPUT_SERIAL
#define DEBUG_PIPE SERIAL_PIPE
#define LOG(string) {Serial.print(string);}
#endif
#ifdef DEBUG_OUTPUT_TCP
#include "espcom.h"
#define LOG(string) {ESPCOM::send2TCP(string, false);}
#define DEBUG_PIPE TCP_PIPE
#endif
#else
#define LOG(string) {}
#define DEBUG_PIPE NO_PIPE
#endif
#define NOLOG(string) {}
#ifndef CONFIG_h
#define CONFIG_h
#include <Arduino.h>
#ifdef ARDUINO_ARCH_ESP8266
extern "C" {
#include "user_interface.h"
}
#else
#endif
#include "wificonf.h"
typedef enum {
UPLOAD_STATUS_NONE = 0,
UPLOAD_STATUS_FAILED = 1,
UPLOAD_STATUS_CANCELLED = 2,
UPLOAD_STATUS_SUCCESSFUL = 3,
UPLOAD_STATUS_ONGOING = 4
} upload_status_type;
typedef enum {
NO_PIPE = 0,
SERIAL_PIPE = 2,
SERIAL1_PIPE = 3,
SERIAL2_PIPE = 4,
#ifdef TCP_IP_DATA_FEATURE
TCP_PIPE = 5,
#endif
#ifdef WS_DATA_FEATURE
WS_PIPE = 6,
#endif
#ifdef ESP_OLED_FEATURE
OLED_PIPE = 7,
#endif
WEB_PIPE = 8,
PRINTER_PIPE = 9
} tpipe;
#define DEFAULT_PRINTER_PIPE SERIAL_PIPE
typedef enum {
LEVEL_GUEST = 0,
LEVEL_USER = 1,
LEVEL_ADMIN = 2
} level_authenticate_type;
#define NO_SD 0
#define SD_DIRECTORY 1
#define EXT_DIRECTORY 2
//flags
#define AP_MODE 1
#define CLIENT_MODE 2
#define DHCP_MODE 1
#define STATIC_IP_MODE 2
//position in EEPROM
//AP mode = 1; Station client mode = 2
#define EP_WIFI_MODE 0 //1 byte = flag
#define EP_STA_SSID 1 //33 bytes 32+1 = string ; warning does not support multibyte char like chinese
#define EP_STA_PASSWORD 34 //65 bytes 64 +1 = string ;warning does not support multibyte char like chinese
#define EP_STA_IP_MODE 99 //1 byte = flag
#define EP_STA_IP_VALUE 100 //4 bytes xxx.xxx.xxx.xxx
#define EP_STA_MASK_VALUE 104 //4 bytes xxx.xxx.xxx.xxx
#define EP_STA_GATEWAY_VALUE 108 //4 bytes xxx.xxx.xxx.xxx
#define EP_BAUD_RATE 112 //4 bytes = int
#define EP_STA_PHY_MODE 116 //1 byte = flag
#define EP_SLEEP_MODE 117 //1 byte = flag
#define EP_CHANNEL 118 //1 byte = flag
#define EP_AUTH_TYPE 119 //1 byte = flag
#define EP_SSID_VISIBLE 120 //1 byte = flag
#define EP_WEB_PORT 121 //4 bytes = int
#define EP_DATA_PORT 125 //4 bytes = int
#define EP_OUTPUT_FLAG 129 //1 bytes = flag
#define EP_HOSTNAME 130//33 bytes 32+1 = string ; warning does not support multibyte char like chinese
#define EP_DHT_INTERVAL 164//4 bytes = int
#define ESP_NOTIFICATION_TYPE 168 //1 byte = flag
#define ESP_AUTO_NOTIFICATION 170//1 bytes = flag
#define EP_FREE_BYTE1 171//1 bytes = flag
#define EP_FREE_INT3 172//4 bytes = int
#define EP_ADMIN_PWD 176//21 bytes 20+1 = string ; warning does not support multibyte char like chinese
#define EP_USER_PWD 197//21 bytes 20+1 = string ; warning does not support multibyte char like chinese
#define EP_AP_SSID 218 //33 bytes 32+1 = string ; warning does not support multibyte char like chinese
#define EP_AP_PASSWORD 251 //65 bytes 64 +1 = string ;warning does not support multibyte char like chinese
#define EP_AP_IP_VALUE 316 //4 bytes xxx.xxx.xxx.xxx
#define EP_AP_MASK_VALUE 320 //4 bytes xxx.xxx.xxx.xxx
#define EP_AP_GATEWAY_VALUE 324 //4 bytes xxx.xxx.xxx.xxx
#define EP_AP_IP_MODE 329 //1 byte = flag
#define EP_AP_PHY_MODE 330 //1 byte = flag
#define EP_SD_SPEED_DIV 331 //1 byte = flag
#define ESP_NOTIFICATION_TOKEN1 332 //64 bytes 63+1 = string ; warning does not support multibyte char like chinese
#define ESP_NOTIFICATION_TOKEN2 396 //64 bytes 63+1 = string ; warning does not support multibyte char like chinese
#define EP_DHT_TYPE 460 //1 bytes = flag
#define EP_TARGET_FW 461 //1 bytes = flag
#define EP_TIMEZONE 462//1 bytes = flag
#define EP_TIME_ISDST 463//1 bytes = flag
#define EP_TIME_SERVER1 464//128 bytes 127+1 = string ; warning does not support multibyte char like chinese
#define EP_TIME_SERVER2 593 //128 bytes 127+1 = string ; warning does not support multibyte char like chinese
#define EP_TIME_SERVER3 722 //128 bytes 127+1 = string ; warning does not support multibyte char like chinese
#define EP_IS_DIRECT_SD 850//1 bytes = flag
#define EP_PRIMARY_SD 851//1 bytes = flag
#define EP_SECONDARY_SD 852//1 bytes = flag
#define EP_DIRECT_SD_CHECK 853//1 bytes = flag
#define EP_SD_CHECK_UPDATE_AT_BOOT 854//1 bytes = flag
#define ESP_NOTIFICATION_SETTINGS 855//128 bytes 127+1 = string ; warning does not support multibyte char like chinese
#define EP_EEPROM_VERSION 1017// 6 bytes = ESP3D<V on one byte>
#define LAST_EEPROM_ADDRESS 983
//default values
#define DEFAULT_WIFI_MODE AP_MODE
const char DEFAULT_AP_SSID [] PROGMEM = "ESP3D";
const char DEFAULT_AP_PASSWORD [] PROGMEM = "12345678";
const char DEFAULT_STA_SSID [] PROGMEM = "ESP3D";
const char DEFAULT_STA_PASSWORD [] PROGMEM = "12345678";
const byte DEFAULT_STA_IP_MODE = DHCP_MODE;
const byte DEFAULT_AP_IP_MODE = STATIC_IP_MODE;
const byte DEFAULT_IP_VALUE[] = {192, 168, 0, 1};
const byte DEFAULT_MASK_VALUE[] = {255, 255, 255, 0};
#define DEFAULT_GATEWAY_VALUE DEFAULT_IP_VALUE
const long DEFAULT_BAUD_RATE = 115200;
#define DEFAULT_PHY_MODE WIFI_PHY_MODE_11G
#define DEFAULT_SLEEP_MODE WIFI_MODEM_SLEEP
#define DEFAULT_CHANNEL 11
#define DEFAULT_AUTH_TYPE AUTH_WPA_PSK
#define DEFAULT_SSID_VISIBLE 1
#define DEFAULT_MAX_CONNECTIONS 4
#define DEFAULT_BEACON_INTERVAL 100
const int DEFAULT_WEB_PORT = 80;
const int DEFAULT_DATA_PORT = 8888;
const char DEFAULT_ADMIN_PWD [] PROGMEM = "admin";
const char DEFAULT_USER_PWD [] PROGMEM = "user";
const char DEFAULT_ADMIN_LOGIN [] PROGMEM = "admin";
const char DEFAULT_USER_LOGIN [] PROGMEM = "user";
const char DEFAULT_TIME_SERVER1 [] PROGMEM = "1.pool.ntp.org";
const char DEFAULT_TIME_SERVER2 [] PROGMEM = "2.pool.ntp.org";
const char DEFAULT_TIME_SERVER3 [] PROGMEM = "0.pool.ntp.org";
#define DEFAULT_TIME_ZONE 0
#define DEFAULT_TIME_DST 0
#define DEFAULT_PRIMARY_SD 2
#define DEFAULT_SECONDARY_SD 1
#define DEFAULT_DIRECT_SD_CHECK 0
#define DEFAULT_SD_CHECK_UPDATE_AT_BOOT 1
#define DEFAULT_OUTPUT_FLAG 0
#define DEFAULT_DHT_TYPE 255
const int DEFAULT_DHT_INTERVAL = 30;
#define MIN_NOTIFICATION_TOKEN_LENGTH 0
#define MIN_NOTIFICATION_SETTINGS_LENGTH 0
#define MAX_NOTIFICATION_TOKEN_LENGTH 63
#define MAX_NOTIFICATION_SETTINGS_LENGTH 127
#define DEFAULT_NOTIFICATION_TYPE 0
#define DEFAULT_NOTIFICATION_TOKEN1 ""
#define DEFAULT_NOTIFICATION_TOKEN2 ""
#define DEFAULT_NOTIFICATION_SETTINGS ""
#define DEFAULT_AUTO_NOTIFICATION_STATE 1
#define NOTIFICATION_ESP_ONLINE "Hi, %ESP_NAME% is now online at %ESP_IP%"
//Notifications
#define ESP_PUSHOVER_NOTIFICATION 1
#define ESP_EMAIL_NOTIFICATION 2
#define ESP_LINE_NOTIFICATION 3
#define ESP_IFTTT_NOTIFICATION 4
#ifdef SDCARD_FEATURE
#define DEFAULT_IS_DIRECT_SD 1
#else
#define DEFAULT_IS_DIRECT_SD 0
#endif
//SD Card reader speed
//possible values are :SPI_FULL_SPEED, SPI_DIV3_SPEED,
//SPI_HALF_SPEED, SPI_DIV6_SPEED, SPI_QUARTER_SPEED,
//SPI_EIGHTH_SPEED, SPI_SIXTEENTH_SPEED
//Decrease if reader give error
#ifdef ARDUINO_ARCH_ESP8266
#define DEFAULT_SDREADER_SPEED 2
#else
#define DEFAULT_SDREADER_SPEED 4
#endif
const uint16_t Setting[][2] = {
{EP_WIFI_MODE, LEVEL_ADMIN},//0
{EP_STA_SSID, LEVEL_ADMIN},//1
{EP_STA_PASSWORD, LEVEL_ADMIN},//2
{EP_STA_IP_MODE, LEVEL_ADMIN},//3
{EP_STA_IP_VALUE, LEVEL_ADMIN},//4
{EP_STA_MASK_VALUE, LEVEL_ADMIN},//5
{EP_STA_GATEWAY_VALUE, LEVEL_ADMIN},//6
{EP_BAUD_RATE, LEVEL_ADMIN},//7
{EP_STA_PHY_MODE, LEVEL_ADMIN},//8
{EP_SLEEP_MODE, LEVEL_ADMIN},//9
{EP_CHANNEL, LEVEL_ADMIN},//10
{EP_AUTH_TYPE, LEVEL_ADMIN},//11
{EP_SSID_VISIBLE, LEVEL_ADMIN},//12
{EP_WEB_PORT, LEVEL_ADMIN},//13
{EP_DATA_PORT, LEVEL_ADMIN},//14
{EP_HOSTNAME, LEVEL_ADMIN},//15
{EP_ADMIN_PWD, LEVEL_ADMIN},//16
{EP_USER_PWD, LEVEL_USER},//17
{EP_AP_SSID, LEVEL_ADMIN},//18
{EP_AP_PASSWORD, LEVEL_ADMIN},//19
{EP_AP_IP_VALUE, LEVEL_ADMIN},//20
{EP_AP_MASK_VALUE, LEVEL_ADMIN},//21
{EP_AP_GATEWAY_VALUE, LEVEL_ADMIN},//22
{EP_AP_IP_MODE, LEVEL_ADMIN},//23
{EP_AP_PHY_MODE, LEVEL_ADMIN},//24
{EP_TARGET_FW, LEVEL_USER},//25
{EP_TIMEZONE, LEVEL_USER},//26
{EP_TIME_ISDST, LEVEL_USER},//27
{EP_TIME_SERVER1, LEVEL_USER},//28
{EP_TIME_SERVER2, LEVEL_USER},//29
{EP_TIME_SERVER3, LEVEL_USER},//30
{EP_IS_DIRECT_SD, LEVEL_USER},//31
{EP_PRIMARY_SD, LEVEL_USER},//32
{EP_SECONDARY_SD, LEVEL_USER},//33
{EP_DIRECT_SD_CHECK, LEVEL_USER}, //34
{EP_SD_CHECK_UPDATE_AT_BOOT, LEVEL_USER},//35
{EP_OUTPUT_FLAG, LEVEL_USER},//36
{EP_DHT_INTERVAL, LEVEL_USER},//37
{EP_DHT_TYPE, LEVEL_USER},//38
{EP_SD_SPEED_DIV, LEVEL_USER}//39
};
#define AUTH_ENTRY_NB 40
#define FLAG_BLOCK_M117 0x01
#define FLAG_BLOCK_OLED 0x02
#define FLAG_BLOCK_SERIAL 0x04
#define FLAG_BLOCK_WSOCKET 0x08
#define FLAG_BLOCK_TCP 0x010
//values
#define DEFAULT_MAX_WEB_PORT 65001
#define DEFAULT_MIN_WEB_PORT 1
#define DEFAULT_MAX_DATA_PORT 65001
#define DEFAULT_MIN_DATA_PORT 1
#define MAX_TRY 2000
//sizes
#define EEPROM_SIZE 1024 //max is 1024
#define MAX_SSID_LENGTH 32
#define MIN_SSID_LENGTH 1
#define MAX_PASSWORD_LENGTH 64
//min size of password is 0 or upper than 8 char
//so let set min is 0
#define MIN_PASSWORD_LENGTH 0
#define MAX_LOCAL_PASSWORD_LENGTH 16
#define MIN_LOCAL_PASSWORD_LENGTH 1
#define MAX_DATA_LENGTH 127
#define MIN_DATA_LENGTH 0
#define IP_LENGTH 4
#define INTEGER_LENGTH 4
#define MAX_HOSTNAME_LENGTH 32
#define MIN_HOSTNAME_LENGTH 1
#define WL_MAC_ADDR_LENGTH 6
//EEPROM Version
#define EEPROM_V0 0
#define EEPROM_V1 1
#define EEPROM_V2 2
#define EEPROM_CURRENT_VERSION EEPROM_V2
#if defined(ASYNCWEBSERVER)
class AsyncResponseStream;
typedef AsyncResponseStream ESPResponseStream;
#else
class ESPResponseStream
{
public:
bool header_sent;
String buffer_web;
ESPResponseStream()
{
header_sent=false;
};
};
#endif
class CONFIG
{
public:
static void wait (uint32_t milliseconds);
static void wdtFeed();
static byte output_flag;
#ifdef DHT_FEATURE
static byte DHT_type;
static int DHT_interval;
static void InitDHT(bool refresh = false);
#endif
static bool is_com_enabled;
static bool is_locked(byte flag);
static bool is_direct_sd;
static bool read_string (int pos, char byte_buffer[], int size_max);
static bool read_string (int pos, String & sbuffer, int size_max);
static bool read_buffer (int pos, byte byte_buffer[], int size_buffer);
static bool read_byte (int pos, byte * value);
static bool write_string (int pos, const char * byte_buffer);
static bool write_string (int pos, const __FlashStringHelper *str);
static bool write_buffer (int pos, const byte * byte_buffer, int size_buffer);
static bool write_byte (int pos, const byte value);
static bool reset_config();
static void print_config (tpipe output, bool plaintext, ESPResponseStream *espresponse = NULL);
static bool SetFirmwareTarget (uint8_t fw);
static void InitFirmwareTarget();
static void InitOutput();
static void InitDirectSD();
static void InitPins();
static bool InitBaudrate(long value = 0);
static bool DisableSerial();
static bool InitExternalPorts();
static uint8_t GetFirmwareTarget();
static const char* GetFirmwareTargetName();
static const char* GetFirmwareTargetShortName();
static uint8_t get_EEPROM_version();
static bool set_EEPROM_version(uint8_t v);
static bool adjust_EEPROM_settings();
static bool isHostnameValid (const char * hostname);
static bool isSSIDValid (const char * ssid);
static bool isPasswordValid (const char * password);
static bool isLocalPasswordValid (const char * password);
static bool isIPValid (const char * IP);
static char * intTostr (int value);
static String formatBytes (uint64_t bytes);
static char * mac2str (uint8_t mac [WL_MAC_ADDR_LENGTH]);
static byte split_ip (const char * ptr, byte * part);
static void esp_restart (bool async = false);
#if defined(TIMESTAMP_FEATURE)
static void init_time_client();
#endif
private:
static uint8_t FirmwareTarget;
};
#endif