From 8c7d1b780e68767d807b57a8378bc29b2df52cbe Mon Sep 17 00:00:00 2001 From: david gauchard Date: Thu, 18 May 2017 00:22:47 +0200 Subject: [PATCH 001/156] automate crash for GDBStub --- cores/esp8266/core_esp8266_postmortem.c | 3 +++ libraries/GDBStub/src/GDBStub.h | 2 ++ 2 files changed, 5 insertions(+) diff --git a/cores/esp8266/core_esp8266_postmortem.c b/cores/esp8266/core_esp8266_postmortem.c index a00bd4dd0..5066b50cb 100644 --- a/cores/esp8266/core_esp8266_postmortem.c +++ b/cores/esp8266/core_esp8266_postmortem.c @@ -45,6 +45,8 @@ static void uart1_write_char_d(char c); static void print_stack(uint32_t start, uint32_t end); //static void print_pcs(uint32_t start, uint32_t end); +bool __attribute((weak)) crash_for_gdb = 0; + extern void __custom_crash_callback( struct rst_info * rst_info, uint32_t stack, uint32_t stack_end ) { (void) rst_info; (void) stack; @@ -54,6 +56,7 @@ extern void __custom_crash_callback( struct rst_info * rst_info, uint32_t stack, extern void custom_crash_callback( struct rst_info * rst_info, uint32_t stack, uint32_t stack_end ) __attribute__ ((weak, alias("__custom_crash_callback"))); void __wrap_system_restart_local() { + if (crash_for_gdb) *((int*)0) = 0; register uint32_t sp asm("a1"); struct rst_info rst_info = {0}; diff --git a/libraries/GDBStub/src/GDBStub.h b/libraries/GDBStub/src/GDBStub.h index c9145016d..4efec8c76 100644 --- a/libraries/GDBStub/src/GDBStub.h +++ b/libraries/GDBStub/src/GDBStub.h @@ -3,4 +3,6 @@ // this header is intentionally left blank +bool crash_for_gdb = 1; + #endif //GDBSTUB_H From fed925149b4ec1c15a69dd4b70c626826938e642 Mon Sep 17 00:00:00 2001 From: david gauchard Date: Thu, 18 May 2017 01:00:25 +0200 Subject: [PATCH 002/156] update readme about automated crash with GDBStub --- libraries/GDBStub/README.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/GDBStub/README.rst b/libraries/GDBStub/README.rst index c11b7a7eb..312af4bef 100644 --- a/libraries/GDBStub/README.rst +++ b/libraries/GDBStub/README.rst @@ -34,11 +34,11 @@ Using GDB stub Tips and tricks --------------- -- To halt the target when software WDT fires, add +- Upon including GDBStub.h in the sketch, the target is automatically halted when software WDT fires, with :: - ((int*)0) = 0; + *((int*)0) = 0; at the top of ``__wrap_system_restart_local`` in core\_esp8266\_postmortem.c. From 85078f47a0fcf3a4a70c7349b171695017073144 Mon Sep 17 00:00:00 2001 From: david gauchard Date: Thu, 18 May 2017 01:01:24 +0200 Subject: [PATCH 003/156] yet less warnings for Wall Wextra guys --- libraries/ESP8266mDNS/ESP8266mDNS.cpp | 2 +- libraries/GDBStub/src/internal/gdbstub.c | 5 +++-- libraries/Wire/Wire.cpp | 5 +++++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/libraries/ESP8266mDNS/ESP8266mDNS.cpp b/libraries/ESP8266mDNS/ESP8266mDNS.cpp index e30eb817d..766b980b8 100644 --- a/libraries/ESP8266mDNS/ESP8266mDNS.cpp +++ b/libraries/ESP8266mDNS/ESP8266mDNS.cpp @@ -907,7 +907,7 @@ void MDNSResponder::_replyToTypeEnumRequest(IPAddress multicastInterface) { if(servicePtr->_port > 0){ char *service = servicePtr->_name; char *proto = servicePtr->_proto; - uint16_t port = servicePtr->_port; + //uint16_t port = servicePtr->_port; #ifdef MDNS_DEBUG_TX Serial.printf("TX: service:%s, proto:%s\n", service, proto); diff --git a/libraries/GDBStub/src/internal/gdbstub.c b/libraries/GDBStub/src/internal/gdbstub.c index 5c0bfc252..1cb546265 100644 --- a/libraries/GDBStub/src/internal/gdbstub.c +++ b/libraries/GDBStub/src/internal/gdbstub.c @@ -291,7 +291,7 @@ static void ATTR_GDBFN sendReason() { #endif //exception-to-signal mapping char exceptionSignal[]={4,31,11,11,2,6,8,0,6,7,0,0,7,7,7,7}; - int i=0; + unsigned int i=0; gdbPacketStart(); gdbPacketChar('T'); if (gdbstub_savedRegs.reason==0xff) { @@ -321,6 +321,7 @@ static void ATTR_GDBFN sendReason() { //Handle a command as received from GDB. static int ATTR_GDBFN gdbHandleCommand(unsigned char *cmd, int len) { + (void)len; // unused //Handle a command int i, j, k; unsigned char *data=cmd+1; @@ -657,7 +658,7 @@ static void ATTR_GDBFN gdb_semihost_putchar1(char c) { //The OS-less SDK uses the Xtensa HAL to handle exceptions. We can use those functions to catch any //fatal exceptions and invoke the debugger when this happens. static void ATTR_GDBINIT install_exceptions() { - int i; + unsigned int i; int exno[]={EXCCAUSE_ILLEGAL, EXCCAUSE_SYSCALL, EXCCAUSE_INSTR_ERROR, EXCCAUSE_LOAD_STORE_ERROR, EXCCAUSE_DIVIDE_BY_ZERO, EXCCAUSE_UNALIGNED, EXCCAUSE_INSTR_DATA_ERROR, EXCCAUSE_LOAD_STORE_DATA_ERROR, EXCCAUSE_INSTR_ADDR_ERROR, EXCCAUSE_LOAD_STORE_ADDR_ERROR, EXCCAUSE_INSTR_PROHIBITED, diff --git a/libraries/Wire/Wire.cpp b/libraries/Wire/Wire.cpp index 8a48fccd6..b4b746011 100644 --- a/libraries/Wire/Wire.cpp +++ b/libraries/Wire/Wire.cpp @@ -71,6 +71,7 @@ void TwoWire::begin(void){ } void TwoWire::begin(uint8_t address){ + (void)address; // twi_setAddress(address); // twi_attachSlaveTxEvent(onRequestService); // twi_attachSlaveRxEvent(onReceiveService); @@ -206,6 +207,8 @@ void TwoWire::flush(void){ void TwoWire::onReceiveService(uint8_t* inBytes, int numBytes) { + (void)inBytes; + (void)numBytes; // don't bother if user hasn't registered a callback // if(!user_onReceive){ // return; @@ -242,10 +245,12 @@ void TwoWire::onRequestService(void){ } void TwoWire::onReceive( void (*function)(int) ){ + (void)function; //user_onReceive = function; } void TwoWire::onRequest( void (*function)(void) ){ + (void)function; //user_onRequest = function; } From 2aeac91c90a7635c865335280a8f82a0ded2ace4 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Thu, 18 May 2017 17:10:38 +0800 Subject: [PATCH 004/156] ESP8266WiFi: support timeout for WiFi.hostByName --- .../ESP8266WiFi/src/ESP8266WiFiGeneric.cpp | 18 ++++++++++++++++-- libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.h | 1 + 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.cpp index 1fc13a116..7b90dc310 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.cpp +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.cpp @@ -426,6 +426,8 @@ void wifi_dns_found_callback(const char *name, ip_addr_t *ipaddr, void *callback void wifi_dns_found_callback(const char *name, const ip_addr_t *ipaddr, void *callback_arg); #endif +static bool _dns_lookup_pending = false; + /** * Resolve the given hostname to an IP address. * @param aHostname Name to be resolved @@ -433,7 +435,14 @@ void wifi_dns_found_callback(const char *name, const ip_addr_t *ipaddr, void *ca * @return 1 if aIPAddrString was successfully converted to an IP address, * else error code */ -int ESP8266WiFiGenericClass::hostByName(const char* aHostname, IPAddress& aResult) { +int ESP8266WiFiGenericClass::hostByName(const char* aHostname, IPAddress& aResult) +{ + return hostByName(aHostname, aResult, 10000); +} + + +int ESP8266WiFiGenericClass::hostByName(const char* aHostname, IPAddress& aResult, uint32_t timeout_ms) +{ ip_addr_t addr; aResult = static_cast(0); @@ -448,7 +457,9 @@ int ESP8266WiFiGenericClass::hostByName(const char* aHostname, IPAddress& aResul if(err == ERR_OK) { aResult = addr.addr; } else if(err == ERR_INPROGRESS) { - esp_yield(); + _dns_lookup_pending = true; + delay(timeout_ms); + _dns_lookup_pending = false; // will return here when dns_found_callback fires if(aResult != 0) { err = ERR_OK; @@ -477,6 +488,9 @@ void wifi_dns_found_callback(const char *name, const ip_addr_t *ipaddr, void *ca #endif { (void) name; + if (!_dns_lookup_pending) { + return; + } if(ipaddr) { (*reinterpret_cast(callback_arg)) = ipaddr->addr; } diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.h b/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.h index 3ece467b0..668c9223d 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.h +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.h @@ -98,6 +98,7 @@ class ESP8266WiFiGenericClass { public: int hostByName(const char* aHostname, IPAddress& aResult); + int hostByName(const char* aHostname, IPAddress& aResult, uint32_t timeout_ms); protected: From eebcc656edcfae35494c7c11481cd377e96aac9d Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Thu, 18 May 2017 17:24:57 +0800 Subject: [PATCH 005/156] WiFiClient: add support for connect timeout --- libraries/ESP8266WiFi/src/WiFiClient.cpp | 48 +++---------- .../ESP8266WiFi/src/include/ClientContext.h | 70 +++++++++++++++---- 2 files changed, 65 insertions(+), 53 deletions(-) diff --git a/libraries/ESP8266WiFi/src/WiFiClient.cpp b/libraries/ESP8266WiFi/src/WiFiClient.cpp index 144cf194b..8f9eada72 100644 --- a/libraries/ESP8266WiFi/src/WiFiClient.cpp +++ b/libraries/ESP8266WiFi/src/WiFiClient.cpp @@ -88,7 +88,7 @@ WiFiClient& WiFiClient::operator=(const WiFiClient& other) int WiFiClient::connect(const char* host, uint16_t port) { IPAddress remote_addr; - if (WiFi.hostByName(host, remote_addr)) + if (WiFi.hostByName(host, remote_addr, _timeout)) { return connect(remote_addr, port); } @@ -122,37 +122,19 @@ int WiFiClient::connect(IPAddress ip, uint16_t port) pcb->local_port = _localPort++; } - tcp_arg(pcb, this); - tcp_err(pcb, &WiFiClient::_s_err); - tcp_connect(pcb, &addr, port, reinterpret_cast(&WiFiClient::_s_connected)); - - esp_yield(); - if (_client) - return 1; - - // if tcp_error was called, pcb has already been destroyed. - // tcp_abort(pcb); - return 0; -} - -int8_t WiFiClient::_connected(void* pcb, int8_t err) -{ - (void) err; - tcp_pcb* tpcb = reinterpret_cast(pcb); - _client = new ClientContext(tpcb, 0, 0); + _client = new ClientContext(pcb, nullptr, nullptr); _client->ref(); - esp_schedule(); - return ERR_OK; -} + _client->setTimeout(_timeout); + int res = _client->connect(&addr, port); + if (res == 0) { + _client->unref(); + _client = nullptr; + return 0; + } -void WiFiClient::_err(int8_t err) -{ - (void) err; - DEBUGV(":err %d\r\n", err); - esp_schedule(); + return 1; } - void WiFiClient::setNoDelay(bool nodelay) { if (!_client) return; @@ -331,16 +313,6 @@ uint16_t WiFiClient::localPort() return _client->getLocalPort(); } -int8_t WiFiClient::_s_connected(void* arg, void* tpcb, int8_t err) -{ - return reinterpret_cast(arg)->_connected(tpcb, err); -} - -void WiFiClient::_s_err(void* arg, int8_t err) -{ - reinterpret_cast(arg)->_err(err); -} - void WiFiClient::stopAll() { for (WiFiClient* it = _s_first; it; it = it->_next) { diff --git a/libraries/ESP8266WiFi/src/include/ClientContext.h b/libraries/ESP8266WiFi/src/include/ClientContext.h index c7d5bde00..82e059467 100644 --- a/libraries/ESP8266WiFi/src/include/ClientContext.h +++ b/libraries/ESP8266WiFi/src/include/ClientContext.h @@ -124,7 +124,25 @@ public: } } - size_t availableForWrite () + int connect(ip_addr_t* addr, uint16_t port) + { + err_t err = tcp_connect(_pcb, addr, port, reinterpret_cast(&ClientContext::_s_connected)); + if (err != ERR_OK) { + return 0; + } + _connect_pending = 1; + _op_start_time = millis(); + // This delay will be interrupted by esp_schedule in the connect callback + delay(_timeout_ms); + _connect_pending = 0; + if (state() != ESTABLISHED) { + abort(); + return 0; + } + return 1; + } + + size_t availableForWrite() { return _pcb? tcp_sndbuf(_pcb): 0; } @@ -149,14 +167,14 @@ public: return tcp_nagle_disabled(_pcb); } - void setNonBlocking(bool nonblocking) + void setTimeout(int timeout_ms) { - _noblock = nonblocking; + _timeout_ms = timeout_ms; } - bool getNonBlocking() + int getTimeout() { - return _noblock; + return _timeout_ms; } uint32_t getRemoteAddress() @@ -315,9 +333,14 @@ public: protected: - void _cancel_write() + bool _is_timeout() { - if (_send_waiting) { + return millis() - _op_start_time > _timeout_ms; + } + + void _notify_error() + { + if (_connect_pending || _send_waiting) { esp_schedule(); } } @@ -328,10 +351,11 @@ protected: assert(_send_waiting == 0); _datasource = ds; _written = 0; + _op_start_time = millis(); do { _write_some(); - if (!_datasource->available() || _noblock || state() == CLOSED) { + if (!_datasource->available() || _is_timeout() || state() == CLOSED) { delete _datasource; _datasource = nullptr; break; @@ -431,7 +455,7 @@ protected: (void) err; if(pb == 0) { // connection closed DEBUGV(":rcl\r\n"); - _cancel_write(); + _notify_error(); abort(); return ERR_ABRT; } @@ -456,7 +480,16 @@ protected: tcp_recv(_pcb, NULL); tcp_err(_pcb, NULL); _pcb = NULL; - _cancel_write(); + _notify_error(); + } + + int8_t _connected(void* pcb, int8_t err) + { + (void) err; + assert(pcb == _pcb); + assert(_connect_pending); + esp_schedule(); + return ERR_OK; } err_t _poll(tcp_pcb*) @@ -485,6 +518,11 @@ protected: return reinterpret_cast(arg)->_sent(tpcb, len); } + static int8_t _s_connected(void* arg, void* pcb, int8_t err) + { + return reinterpret_cast(arg)->_connected(pcb, err); + } + private: tcp_pcb* _pcb; @@ -494,14 +532,16 @@ private: discard_cb_t _discard_cb; void* _discard_cb_arg; - int _refcnt; - ClientContext* _next; - DataSource* _datasource = nullptr; size_t _written = 0; size_t _write_chunk_size = 256; - bool _noblock = false; - int _send_waiting = 0; + uint32_t _timeout_ms = 5000; + uint32_t _op_start_time = 0; + uint8_t _send_waiting = 0; + uint8_t _connect_pending = 0; + + int8_t _refcnt; + ClientContext* _next; }; #endif//CLIENTCONTEXT_H From 71512653cafbc9575d605043db3818bb623c63fb Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Thu, 18 May 2017 17:42:15 +0800 Subject: [PATCH 006/156] WiFiClient: use Stream::_timeout for write operations --- libraries/ESP8266WiFi/src/WiFiClient.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libraries/ESP8266WiFi/src/WiFiClient.cpp b/libraries/ESP8266WiFi/src/WiFiClient.cpp index 8f9eada72..648e6861c 100644 --- a/libraries/ESP8266WiFi/src/WiFiClient.cpp +++ b/libraries/ESP8266WiFi/src/WiFiClient.cpp @@ -163,6 +163,7 @@ size_t WiFiClient::write(const uint8_t *buf, size_t size) { return 0; } + _client->setTimeout(_timeout); return _client->write(buf, size); } @@ -178,6 +179,7 @@ size_t WiFiClient::write(Stream& stream) { return 0; } + _client->setTimeout(_timeout); return _client->write(stream); } @@ -187,6 +189,7 @@ size_t WiFiClient::write_P(PGM_P buf, size_t size) { return 0; } + _client->setTimeout(_timeout); return _client->write_P(buf, size); } From 684b5f16294cc9fa99c9e83adc5225280d1282d0 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Thu, 18 May 2017 17:55:14 +0800 Subject: [PATCH 007/156] WiFiClient: set default timeout to 5000ms for compatibility --- libraries/ESP8266WiFi/src/WiFiClient.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libraries/ESP8266WiFi/src/WiFiClient.cpp b/libraries/ESP8266WiFi/src/WiFiClient.cpp index 648e6861c..780921870 100644 --- a/libraries/ESP8266WiFi/src/WiFiClient.cpp +++ b/libraries/ESP8266WiFi/src/WiFiClient.cpp @@ -48,12 +48,13 @@ WiFiClient* SList::_s_first = 0; WiFiClient::WiFiClient() -: _client(0) +: _client(0), _timeout(5000) { WiFiClient::_add(this); } -WiFiClient::WiFiClient(ClientContext* client) : _client(client) +WiFiClient::WiFiClient(ClientContext* client) +: _client(client), _timeout(5000) { _client->ref(); WiFiClient::_add(this); @@ -69,6 +70,8 @@ WiFiClient::~WiFiClient() WiFiClient::WiFiClient(const WiFiClient& other) { _client = other._client; + _timeout = other._timeout; + _localPort = other._localPort; if (_client) _client->ref(); WiFiClient::_add(this); @@ -79,6 +82,8 @@ WiFiClient& WiFiClient::operator=(const WiFiClient& other) if (_client) _client->unref(); _client = other._client; + _timeout = other._timeout; + _localPort = other._localPort; if (_client) _client->ref(); return *this; From 3363be0063ffdb8ad9bfcb07982912b1c7c7fafb Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Sat, 20 May 2017 12:13:20 +0800 Subject: [PATCH 008/156] ci: fix -e flag not restored in build_sketches on error --- tests/common.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/common.sh b/tests/common.sh index ce9c397e3..af5ceff64 100755 --- a/tests/common.sh +++ b/tests/common.sh @@ -66,6 +66,7 @@ function build_sketches() echo "Build failed ($1)" echo "Build log:" cat build.log + set -e return $result fi rm build.log From 4812cae8e2f902c28ae76732b5cbf04a34557cb9 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Sat, 20 May 2017 12:20:03 +0800 Subject: [PATCH 009/156] WiFiClient: initialize _timeout properly --- libraries/ESP8266WiFi/src/WiFiClient.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libraries/ESP8266WiFi/src/WiFiClient.cpp b/libraries/ESP8266WiFi/src/WiFiClient.cpp index 780921870..576201c68 100644 --- a/libraries/ESP8266WiFi/src/WiFiClient.cpp +++ b/libraries/ESP8266WiFi/src/WiFiClient.cpp @@ -48,14 +48,16 @@ WiFiClient* SList::_s_first = 0; WiFiClient::WiFiClient() -: _client(0), _timeout(5000) +: _client(0) { + _timeout = 5000; WiFiClient::_add(this); } WiFiClient::WiFiClient(ClientContext* client) -: _client(client), _timeout(5000) +: _client(client) { + _timeout = 5000; _client->ref(); WiFiClient::_add(this); } From f211014dd3257e7e23e490fad744a7b65f7890e2 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Sun, 21 May 2017 10:30:03 -0500 Subject: [PATCH 010/156] SPIFFS: fix unaligned read in HAL (#3261) Ref. #3065 --- cores/esp8266/spiffs_hal.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cores/esp8266/spiffs_hal.cpp b/cores/esp8266/spiffs_hal.cpp index 7f3245c0d..2d66bd54d 100644 --- a/cores/esp8266/spiffs_hal.cpp +++ b/cores/esp8266/spiffs_hal.cpp @@ -60,7 +60,7 @@ int32_t spiffs_hal_read(uint32_t addr, uint32_t size, uint8_t *dst) { __LINE__, addr, size, alignedBegin, alignedEnd); return SPIFFS_ERR_INTERNAL; } - memcpy(dst, &tmp + 4 - nb, nb); + memcpy(dst, ((uint8_t*) &tmp) + 4 - nb, nb); } if (alignedEnd != alignedBegin) { From 79cfad5d4615bd4dcd7d6d555363a335166a3b14 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Mon, 22 May 2017 00:52:59 +0800 Subject: [PATCH 011/156] WiFiClientSecure: initialize ssl_ctx when loading certificate Fixes #2470 --- .../ESP8266WiFi/src/WiFiClientSecure.cpp | 32 +++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp index 135298001..f0bfc2cf9 100644 --- a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp +++ b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp @@ -94,6 +94,9 @@ public: ssl_ext_set_host_name(ext, hostName); ssl_ext_set_max_fragment_size(ext, 4096); s_io_ctx = ctx; + if (_ssl) { + ssl_free(_ssl); + } _ssl = ssl_client_new(_ssl_ctx, 0, nullptr, 0, ext); uint32_t t = millis(); @@ -239,7 +242,7 @@ protected: } return 0; } - DEBUGV(":wcs ra %d", rc); + DEBUGV(":wcs ra %d\r\n", rc); _read_ptr = data; _available = rc; return _available; @@ -311,13 +314,10 @@ int WiFiClientSecure::connect(const char* name, uint16_t port) int WiFiClientSecure::_connectSSL(const char* hostName) { - if (_ssl) { - _ssl->unref(); - _ssl = nullptr; + if (!_ssl) { + _ssl = new SSLContext; + _ssl->ref(); } - - _ssl = new SSLContext; - _ssl->ref(); _ssl->connect(_client, hostName, 5000); auto status = ssl_handshake_status(*_ssl); @@ -553,7 +553,8 @@ bool WiFiClientSecure::verifyCertChain(const char* domain_name) bool WiFiClientSecure::setCACert(const uint8_t* pk, size_t size) { if (!_ssl) { - return false; + _ssl = new SSLContext; + _ssl->ref(); } return _ssl->loadObject(SSL_OBJ_X509_CACERT, pk, size); } @@ -561,7 +562,8 @@ bool WiFiClientSecure::setCACert(const uint8_t* pk, size_t size) bool WiFiClientSecure::setCertificate(const uint8_t* pk, size_t size) { if (!_ssl) { - return false; + _ssl = new SSLContext; + _ssl->ref(); } return _ssl->loadObject(SSL_OBJ_X509_CERT, pk, size); } @@ -569,7 +571,8 @@ bool WiFiClientSecure::setCertificate(const uint8_t* pk, size_t size) bool WiFiClientSecure::setPrivateKey(const uint8_t* pk, size_t size) { if (!_ssl) { - return false; + _ssl = new SSLContext; + _ssl->ref(); } return _ssl->loadObject(SSL_OBJ_RSA_KEY, pk, size); } @@ -577,7 +580,8 @@ bool WiFiClientSecure::setPrivateKey(const uint8_t* pk, size_t size) bool WiFiClientSecure::loadCACert(Stream& stream, size_t size) { if (!_ssl) { - return false; + _ssl = new SSLContext; + _ssl->ref(); } return _ssl->loadObject(SSL_OBJ_X509_CACERT, stream, size); } @@ -585,7 +589,8 @@ bool WiFiClientSecure::loadCACert(Stream& stream, size_t size) bool WiFiClientSecure::loadCertificate(Stream& stream, size_t size) { if (!_ssl) { - return false; + _ssl = new SSLContext; + _ssl->ref(); } return _ssl->loadObject(SSL_OBJ_X509_CERT, stream, size); } @@ -593,7 +598,8 @@ bool WiFiClientSecure::loadCertificate(Stream& stream, size_t size) bool WiFiClientSecure::loadPrivateKey(Stream& stream, size_t size) { if (!_ssl) { - return false; + _ssl = new SSLContext; + _ssl->ref(); } return _ssl->loadObject(SSL_OBJ_RSA_KEY, stream, size); } From a8e8ecb687f883dbe34c8dc8496854de98a4ffa5 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Mon, 22 May 2017 00:59:47 +0800 Subject: [PATCH 012/156] WiFiClientSecure: add example of setCACert/verifyCertChain Ref #1851 --- .../examples/HTTPSRequestCACert/CACert.ino | 86 ++++++++++++ .../HTTPSRequestCACert/HTTPSRequestCACert.ino | 132 ++++++++++++++++++ 2 files changed, 218 insertions(+) create mode 100644 libraries/ESP8266WiFi/examples/HTTPSRequestCACert/CACert.ino create mode 100644 libraries/ESP8266WiFi/examples/HTTPSRequestCACert/HTTPSRequestCACert.ino diff --git a/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/CACert.ino b/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/CACert.ino new file mode 100644 index 000000000..25973db20 --- /dev/null +++ b/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/CACert.ino @@ -0,0 +1,86 @@ + +const unsigned char caCert[] = { + 0x30, 0x82, 0x03, 0xc5, 0x30, 0x82, 0x02, 0xad, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x02, 0xac, 0x5c, 0x26, 0x6a, 0x0b, 0x40, 0x9b, 0x8f, + 0x0b, 0x79, 0xf2, 0xae, 0x46, 0x25, 0x77, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x6c, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, + 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, + 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x22, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, + 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, + 0x65, 0x20, 0x45, 0x56, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, + 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, 0x31, 0x31, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x33, 0x31, 0x31, 0x31, 0x31, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x6c, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, 0x19, + 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, 0x77, 0x77, + 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x22, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, 0x69, 0x67, + 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x20, + 0x45, 0x56, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x82, + 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, + 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xc6, 0xcc, 0xe5, 0x73, 0xe6, + 0xfb, 0xd4, 0xbb, 0xe5, 0x2d, 0x2d, 0x32, 0xa6, 0xdf, 0xe5, 0x81, 0x3f, + 0xc9, 0xcd, 0x25, 0x49, 0xb6, 0x71, 0x2a, 0xc3, 0xd5, 0x94, 0x34, 0x67, + 0xa2, 0x0a, 0x1c, 0xb0, 0x5f, 0x69, 0xa6, 0x40, 0xb1, 0xc4, 0xb7, 0xb2, + 0x8f, 0xd0, 0x98, 0xa4, 0xa9, 0x41, 0x59, 0x3a, 0xd3, 0xdc, 0x94, 0xd6, + 0x3c, 0xdb, 0x74, 0x38, 0xa4, 0x4a, 0xcc, 0x4d, 0x25, 0x82, 0xf7, 0x4a, + 0xa5, 0x53, 0x12, 0x38, 0xee, 0xf3, 0x49, 0x6d, 0x71, 0x91, 0x7e, 0x63, + 0xb6, 0xab, 0xa6, 0x5f, 0xc3, 0xa4, 0x84, 0xf8, 0x4f, 0x62, 0x51, 0xbe, + 0xf8, 0xc5, 0xec, 0xdb, 0x38, 0x92, 0xe3, 0x06, 0xe5, 0x08, 0x91, 0x0c, + 0xc4, 0x28, 0x41, 0x55, 0xfb, 0xcb, 0x5a, 0x89, 0x15, 0x7e, 0x71, 0xe8, + 0x35, 0xbf, 0x4d, 0x72, 0x09, 0x3d, 0xbe, 0x3a, 0x38, 0x50, 0x5b, 0x77, + 0x31, 0x1b, 0x8d, 0xb3, 0xc7, 0x24, 0x45, 0x9a, 0xa7, 0xac, 0x6d, 0x00, + 0x14, 0x5a, 0x04, 0xb7, 0xba, 0x13, 0xeb, 0x51, 0x0a, 0x98, 0x41, 0x41, + 0x22, 0x4e, 0x65, 0x61, 0x87, 0x81, 0x41, 0x50, 0xa6, 0x79, 0x5c, 0x89, + 0xde, 0x19, 0x4a, 0x57, 0xd5, 0x2e, 0xe6, 0x5d, 0x1c, 0x53, 0x2c, 0x7e, + 0x98, 0xcd, 0x1a, 0x06, 0x16, 0xa4, 0x68, 0x73, 0xd0, 0x34, 0x04, 0x13, + 0x5c, 0xa1, 0x71, 0xd3, 0x5a, 0x7c, 0x55, 0xdb, 0x5e, 0x64, 0xe1, 0x37, + 0x87, 0x30, 0x56, 0x04, 0xe5, 0x11, 0xb4, 0x29, 0x80, 0x12, 0xf1, 0x79, + 0x39, 0x88, 0xa2, 0x02, 0x11, 0x7c, 0x27, 0x66, 0xb7, 0x88, 0xb7, 0x78, + 0xf2, 0xca, 0x0a, 0xa8, 0x38, 0xab, 0x0a, 0x64, 0xc2, 0xbf, 0x66, 0x5d, + 0x95, 0x84, 0xc1, 0xa1, 0x25, 0x1e, 0x87, 0x5d, 0x1a, 0x50, 0x0b, 0x20, + 0x12, 0xcc, 0x41, 0xbb, 0x6e, 0x0b, 0x51, 0x38, 0xb8, 0x4b, 0xcb, 0x02, + 0x03, 0x01, 0x00, 0x01, 0xa3, 0x63, 0x30, 0x61, 0x30, 0x0e, 0x06, 0x03, + 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, + 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, + 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, + 0x04, 0x16, 0x04, 0x14, 0xb1, 0x3e, 0xc3, 0x69, 0x03, 0xf8, 0xbf, 0x47, + 0x01, 0xd4, 0x98, 0x26, 0x1a, 0x08, 0x02, 0xef, 0x63, 0x64, 0x2b, 0xc3, + 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, + 0x14, 0xb1, 0x3e, 0xc3, 0x69, 0x03, 0xf8, 0xbf, 0x47, 0x01, 0xd4, 0x98, + 0x26, 0x1a, 0x08, 0x02, 0xef, 0x63, 0x64, 0x2b, 0xc3, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x01, 0x00, 0x1c, 0x1a, 0x06, 0x97, 0xdc, 0xd7, 0x9c, + 0x9f, 0x3c, 0x88, 0x66, 0x06, 0x08, 0x57, 0x21, 0xdb, 0x21, 0x47, 0xf8, + 0x2a, 0x67, 0xaa, 0xbf, 0x18, 0x32, 0x76, 0x40, 0x10, 0x57, 0xc1, 0x8a, + 0xf3, 0x7a, 0xd9, 0x11, 0x65, 0x8e, 0x35, 0xfa, 0x9e, 0xfc, 0x45, 0xb5, + 0x9e, 0xd9, 0x4c, 0x31, 0x4b, 0xb8, 0x91, 0xe8, 0x43, 0x2c, 0x8e, 0xb3, + 0x78, 0xce, 0xdb, 0xe3, 0x53, 0x79, 0x71, 0xd6, 0xe5, 0x21, 0x94, 0x01, + 0xda, 0x55, 0x87, 0x9a, 0x24, 0x64, 0xf6, 0x8a, 0x66, 0xcc, 0xde, 0x9c, + 0x37, 0xcd, 0xa8, 0x34, 0xb1, 0x69, 0x9b, 0x23, 0xc8, 0x9e, 0x78, 0x22, + 0x2b, 0x70, 0x43, 0xe3, 0x55, 0x47, 0x31, 0x61, 0x19, 0xef, 0x58, 0xc5, + 0x85, 0x2f, 0x4e, 0x30, 0xf6, 0xa0, 0x31, 0x16, 0x23, 0xc8, 0xe7, 0xe2, + 0x65, 0x16, 0x33, 0xcb, 0xbf, 0x1a, 0x1b, 0xa0, 0x3d, 0xf8, 0xca, 0x5e, + 0x8b, 0x31, 0x8b, 0x60, 0x08, 0x89, 0x2d, 0x0c, 0x06, 0x5c, 0x52, 0xb7, + 0xc4, 0xf9, 0x0a, 0x98, 0xd1, 0x15, 0x5f, 0x9f, 0x12, 0xbe, 0x7c, 0x36, + 0x63, 0x38, 0xbd, 0x44, 0xa4, 0x7f, 0xe4, 0x26, 0x2b, 0x0a, 0xc4, 0x97, + 0x69, 0x0d, 0xe9, 0x8c, 0xe2, 0xc0, 0x10, 0x57, 0xb8, 0xc8, 0x76, 0x12, + 0x91, 0x55, 0xf2, 0x48, 0x69, 0xd8, 0xbc, 0x2a, 0x02, 0x5b, 0x0f, 0x44, + 0xd4, 0x20, 0x31, 0xdb, 0xf4, 0xba, 0x70, 0x26, 0x5d, 0x90, 0x60, 0x9e, + 0xbc, 0x4b, 0x17, 0x09, 0x2f, 0xb4, 0xcb, 0x1e, 0x43, 0x68, 0xc9, 0x07, + 0x27, 0xc1, 0xd2, 0x5c, 0xf7, 0xea, 0x21, 0xb9, 0x68, 0x12, 0x9c, 0x3c, + 0x9c, 0xbf, 0x9e, 0xfc, 0x80, 0x5c, 0x9b, 0x63, 0xcd, 0xec, 0x47, 0xaa, + 0x25, 0x27, 0x67, 0xa0, 0x37, 0xf3, 0x00, 0x82, 0x7d, 0x54, 0xd7, 0xa9, + 0xf8, 0xe9, 0x2e, 0x13, 0xa3, 0x77, 0xe8, 0x1f, 0x4a +}; +const unsigned int caCertLen = 969; + diff --git a/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/HTTPSRequestCACert.ino b/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/HTTPSRequestCACert.ino new file mode 100644 index 000000000..977f8f5c5 --- /dev/null +++ b/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/HTTPSRequestCACert.ino @@ -0,0 +1,132 @@ +/* + HTTP over TLS (HTTPS) example sketch + + This example demonstrates how to use + WiFiClientSecure class to connect to a TLS server. + + This example verifies server certificate using the + root CA certificate. + + We fetch and display the status of + esp8266/Arduino project continuous integration + build. + + Created by Ivan Grokhotkov, 2017. + This example is in public domain. +*/ + +#include +#include +#include + +const char* ssid = "........"; +const char* password = "........"; + +const char* host = "api.github.com"; +const int httpsPort = 443; + +// Root certificate used by api.github.com. +// Defined in "CACert" tab. +extern const unsigned char caCert[]; +extern const unsigned int caCertLen; + +WiFiClientSecure client; + +void setup() { + Serial.begin(115200); + Serial.println(); + Serial.print("connecting to "); + Serial.println(ssid); + WiFi.begin(ssid, password); + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.println("WiFi connected"); + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); + + // Synchronize time useing SNTP. This is necessary to verify that + // the TLS certificates offered by the server are currently valid. + Serial.print("Setting time using SNTP"); + configTime(8 * 3600, 0, "pool.ntp.org", "time.nist.gov"); + time_t now = time(nullptr); + while (now < 1000) { + delay(500); + Serial.print("."); + now = time(nullptr); + } + Serial.println(""); + struct tm timeinfo; + gmtime_r(&now, &timeinfo); + Serial.print("Current time: "); + Serial.print(asctime(&timeinfo)); + + // Load root certificate in DER format into WiFiClientSecure object + bool res = client.setCACert(caCert, caCertLen); + if (!res) { + Serial.println("Failed to load root CA certificate!"); + while (true) { + yield(); + } + } +} + +void loop() { + // Connect to remote server + Serial.print("connecting to "); + Serial.println(host); + if (!client.connect(host, httpsPort)) { + Serial.println("connection failed"); + return; + } + + // Verify validity of server's certificate + if (client.verifyCertChain(host)) { + Serial.println("Server certificate verified"); + } else { + Serial.println("ERROR: certificate verification failed!"); + return; + } + + String url = "/repos/esp8266/Arduino/commits/master/status"; + Serial.print("requesting URL: "); + Serial.println(url); + + client.print(String("GET ") + url + " HTTP/1.1\r\n" + + "Host: " + host + "\r\n" + + "User-Agent: BuildFailureDetectorESP8266\r\n" + + "Connection: close\r\n\r\n"); + + Serial.println("request sent"); + while (client.connected()) { + String line = client.readStringUntil('\n'); + if (line == "\r") { + Serial.println("headers received"); + break; + } + } + String line = client.readStringUntil('\n'); + if (line.startsWith("{\"state\":\"success\"")) { + Serial.println("esp8266/Arduino CI successfull!"); + } else { + Serial.println("esp8266/Arduino CI has failed"); + } + Serial.println("reply was:"); + Serial.println("=========="); + Serial.println(line); + Serial.println("=========="); + Serial.println(); + + static int repeat = 0; + if (++repeat == 3) { + Serial.println("Done"); + while (true) { + delay(1000); + } + } + delay(10000); +} + + From f6d232f1ac68fd52a69bb9a03995eaa6d7fde922 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Mon, 22 May 2017 01:26:18 +0800 Subject: [PATCH 013/156] WiFiClientSecure: match CN and SANs ignoring case Some websites have certificates with uppercase letters in CN. This change makes _verifyDN function accept such certificates by converting all names to lower case before comparing them. Resolves #2978 --- libraries/ESP8266WiFi/src/WiFiClientSecure.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp index f0bfc2cf9..1cef85e08 100644 --- a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp +++ b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp @@ -521,14 +521,18 @@ bool WiFiClientSecure::_verifyDN(const char* domain_name) const char* san = NULL; int i = 0; while ((san = ssl_get_cert_subject_alt_dnsname(*_ssl, i)) != NULL) { - if (matchName(String(san), domain_name_str)) { + String san_str(san); + san_str.toLowerCase(); + if (matchName(san_str, domain_name_str)) { return true; } DEBUGV("SAN %d: '%s', no match\r\n", i, san); ++i; } const char* common_name = ssl_get_cert_dn(*_ssl, SSL_X509_CERT_COMMON_NAME); - if (common_name && matchName(String(common_name), domain_name_str)) { + String common_name_str(common_name); + common_name_str.toLowerCase(); + if (common_name && matchName(common_name_str, domain_name_str)) { return true; } DEBUGV("CN: '%s', no match\r\n", (common_name)?common_name:"(null)"); From d6f1f0d5d77508ed2b3bb6051a6fba3d69ab98ca Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Mon, 22 May 2017 20:08:16 +0800 Subject: [PATCH 014/156] WiFiClient: apply write timeout to single chunk (#3273) WiFiClient write timeouts introduced in #3257 applied to the whole write operation, which could take long time if data size was large. This change makes the timeout happen per chunk. Timeout now happens if no data has been delivered within a given interval. --- libraries/ESP8266WiFi/src/include/ClientContext.h | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/libraries/ESP8266WiFi/src/include/ClientContext.h b/libraries/ESP8266WiFi/src/include/ClientContext.h index 82e059467..de6d8e150 100644 --- a/libraries/ESP8266WiFi/src/include/ClientContext.h +++ b/libraries/ESP8266WiFi/src/include/ClientContext.h @@ -353,9 +353,14 @@ protected: _written = 0; _op_start_time = millis(); do { - _write_some(); + if (_write_some()) { + _op_start_time = millis(); + } if (!_datasource->available() || _is_timeout() || state() == CLOSED) { + if (_is_timeout()) { + DEBUGV(":wtmo\r\n"); + } delete _datasource; _datasource = nullptr; break; @@ -368,10 +373,10 @@ protected: return _written; } - void _write_some() + bool _write_some() { if (!_datasource || !_pcb) { - return; + return false; } size_t left = _datasource->available(); @@ -403,7 +408,9 @@ protected: } if( need_output ) { tcp_output(_pcb); + return true; } + return false; } void _write_some_from_cb() From 8166263c0d47709a43a92dbffe8fe578c52bc487 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Tue, 23 May 2017 17:52:35 +0800 Subject: [PATCH 015/156] SoftwareSerial: update to 3.2.3 (#3239) --- package/build_boards_manager_package.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/build_boards_manager_package.sh b/package/build_boards_manager_package.sh index 5f67a8de6..507226757 100755 --- a/package/build_boards_manager_package.sh +++ b/package/build_boards_manager_package.sh @@ -61,7 +61,7 @@ rm exclude.txt # Get additional libraries (TODO: add them as git submodule or subtree?) # SoftwareSerial library -curl -L -o SoftwareSerial.zip https://github.com/plerup/espsoftwareserial/archive/3.1.0.zip +curl -L -o SoftwareSerial.zip https://github.com/plerup/espsoftwareserial/archive/3.2.3.zip unzip -q SoftwareSerial.zip rm -rf SoftwareSerial.zip mv espsoftwareserial-* SoftwareSerial From db8868da1d70517a28feefc1310b423d5710cba8 Mon Sep 17 00:00:00 2001 From: Jim Watson Date: Wed, 24 May 2017 14:15:00 +0100 Subject: [PATCH 016/156] Add Crystal Frequency menu item for Generic module The Generic ESP8266 Module provides the basis to compile for anything not on the current list. Although most current boards use the 26MHz crystal, there are many using the 40MHz. This change permits these to be readily accommodated as generic ESP8266 boards. --- boards.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/boards.txt b/boards.txt index 6bd05c725..890a8bc0f 100644 --- a/boards.txt +++ b/boards.txt @@ -38,6 +38,10 @@ generic.menu.CpuFrequency.80.build.f_cpu=80000000L generic.menu.CpuFrequency.160=160 MHz generic.menu.CpuFrequency.160.build.f_cpu=160000000L +generic.menu.CrystalFreq.26=26 MHz +generic.menu.CrystalFreq.40=40 MHz +generic.menu.CrystalFreq.40.build.extra_flags=-DF_CRYSTAL=40000000 + generic.menu.FlashFreq.40=40MHz generic.menu.FlashFreq.40.build.flash_freq=40 generic.menu.FlashFreq.80=80MHz From c52b0da11cfd9666e45d576d3fdd2533415c4ab6 Mon Sep 17 00:00:00 2001 From: Wolfgang Kraft Date: Fri, 2 Jun 2017 15:14:23 +0200 Subject: [PATCH 017/156] Fix according to the discussion of issue #3140 https://github.com/esp8266/Arduino/issues/3140 pgm_read_byte() and pgm_read_word() need to be macros, as some third party libraries and sketches testing macro existence. --- cores/esp8266/pgmspace.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/cores/esp8266/pgmspace.h b/cores/esp8266/pgmspace.h index e8ecd1d99..a785e2639 100644 --- a/cores/esp8266/pgmspace.h +++ b/cores/esp8266/pgmspace.h @@ -99,19 +99,23 @@ int vsnprintf_P(char *str, size_t strSize, PGM_P formatP, va_list ap) __attribut :"1"(addr) \ :); -static inline uint8_t pgm_read_byte(const void* addr) { +static inline uint8_t pgm_read_byte_inlined(const void* addr) { register uint32_t res; pgm_read_with_offset(addr, res); return (uint8_t) res; /* This masks the lower byte from the returned word */ } /* Although this says "word", it's actually 16 bit, i.e. half word on Xtensa */ -static inline uint16_t pgm_read_word(const void* addr) { +static inline uint16_t pgm_read_word_inlined(const void* addr) { register uint32_t res; pgm_read_with_offset(addr, res); return (uint16_t) res; /* This masks the lower half-word from the returned word */ } +// Make sure, that libraries checking existence of this macro are not failing +#define pgm_read_byte(addr) pgm_read_byte_inlined(addr) +#define pgm_read_word(addr) pgm_read_word_inlined(addr) + #else //__ets__ #define pgm_read_byte(addr) (*reinterpret_cast(addr)) #define pgm_read_word(addr) (*reinterpret_cast(addr)) From 42f3ef86a410a12a29d720f1cb2728d7834c3d3b Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 2 Jun 2017 10:06:53 +0200 Subject: [PATCH 018/156] Added link to Ticker examples --- doc/libraries.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/libraries.rst b/doc/libraries.rst index bb1e21e0e..ff5b88cb4 100644 --- a/doc/libraries.rst +++ b/doc/libraries.rst @@ -11,7 +11,7 @@ ESP8266WiFi library has been developed basing on ESP8266 SDK, using naming conve Ticker ------ -Library for calling functions repeatedly with a certain period. Two examples included. +Library for calling functions repeatedly with a certain period. `Two examples `__ included. It is currently not recommended to do blocking IO operations (network, serial, file) from Ticker callback functions. Instead, set a flag inside the ticker callback and check for that flag inside the loop function. From e39a46fe0412a2796eb6a68c553656c34dfe6b2c Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 2 Jun 2017 10:18:43 +0200 Subject: [PATCH 019/156] fixed bullet points on return codes --- doc/esp8266wifi/readme.rst | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/esp8266wifi/readme.rst b/doc/esp8266wifi/readme.rst index 13acf06c6..cd6de2d02 100644 --- a/doc/esp8266wifi/readme.rst +++ b/doc/esp8266wifi/readme.rst @@ -233,7 +233,13 @@ Some functions provide more than just a binary status information. A good exampl Serial.printf("Connection status: %d\n", WiFi.status()); -This function returns following codes to describe what is going on with Wi-Fi connection: \* 0 : ``WL_IDLE_STATUS`` when Wi-Fi is in process of changing between statuses \* 1 : ``WL_NO_SSID_AVAIL``\ in case configured SSID cannot be reached \* 3 : ``WL_CONNECTED`` after successful connection is established \* 4 : ``WL_CONNECT_FAILED`` if password is incorrect \* 6 : ``WL_DISCONNECTED`` if module is not configured in station mode +This function returns following codes to describe what is going on with Wi-Fi connection: + +* 0 : ``WL_IDLE_STATUS`` when Wi-Fi is in process of changing between statuses +* 1 : ``WL_NO_SSID_AVAIL``\ in case configured SSID cannot be reached +* 3 : ``WL_CONNECTED`` after successful connection is established +* 4 : ``WL_CONNECT_FAILED`` if password is incorrect +* 6 : ``WL_DISCONNECTED`` if module is not configured in station mode It is a good practice to display and check information returned by functions. Application development and troubleshooting will be easier with that. From 8c3bb69530d24c638514d9e191906685e24e6d99 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Mon, 5 Jun 2017 17:30:57 +0800 Subject: [PATCH 020/156] =?UTF-8?q?WiFiClientSecure:=20don=E2=80=99t=20sen?= =?UTF-8?q?d=20close=20alert=20when=20opening=20new=20session?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When WiFiClientSecure::connect was called, it would first tear down and existing and set up new TCP session, then tear down existing TLS session (using ssl_free), and then set up a new one. This caused TLS close- notify alert to be sent to the new TCP session, preventing new session from being established. This change postpones setting IO ctx to the new TCP connection, fixing this issue. Ref https://github.com/esp8266/Arduino/issues/3330 --- libraries/ESP8266WiFi/src/WiFiClientSecure.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp index 1cef85e08..88c401661 100644 --- a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp +++ b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp @@ -93,10 +93,16 @@ public: SSL_EXTENSIONS* ext = ssl_ext_new(); ssl_ext_set_host_name(ext, hostName); ssl_ext_set_max_fragment_size(ext, 4096); - s_io_ctx = ctx; if (_ssl) { + /* Creating a new TLS session on top of a new TCP connection. + ssl_free will want to send a close notify alert, but the old TCP connection + is already gone at this point, so reset s_io_ctx. */ + s_io_ctx = nullptr; ssl_free(_ssl); + _available = 0; + _read_ptr = nullptr; } + s_io_ctx = ctx; _ssl = ssl_client_new(_ssl_ctx, 0, nullptr, 0, ext); uint32_t t = millis(); From 5b5ba1a6bea709bb9ba7e13621af44b5ff2f1e25 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 6 Jun 2017 08:04:35 +0200 Subject: [PATCH 021/156] Added link to EEPROM lib/examples --- doc/libraries.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/libraries.rst b/doc/libraries.rst index ff5b88cb4..d516afbb4 100644 --- a/doc/libraries.rst +++ b/doc/libraries.rst @@ -27,7 +27,7 @@ This is a bit different from standard EEPROM class. You need to call ``EEPROM.be EEPROM library uses one sector of flash located just after the SPIFFS. -Three examples included. +`Three examples `__ included. I2C (Wire library) ------------------ From c07c8dc88ef8b65fd40c323a7f90ebc87a21ab57 Mon Sep 17 00:00:00 2001 From: Richard Allen Date: Sat, 3 Jun 2017 00:37:45 -0500 Subject: [PATCH 022/156] Small cleanup to SPI write16 and write32 for big-endian Merge a common line. --- libraries/SPI/SPI.cpp | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/libraries/SPI/SPI.cpp b/libraries/SPI/SPI.cpp index 9431077c4..a5638d9c6 100644 --- a/libraries/SPI/SPI.cpp +++ b/libraries/SPI/SPI.cpp @@ -343,12 +343,11 @@ void SPIClass::write16(uint16_t data, bool msb) { if(msb) { // MSBFIRST Byte first SPI1W0 = (data >> 8) | (data << 8); - SPI1CMD |= SPIBUSY; } else { // LSBFIRST Byte first SPI1W0 = data; - SPI1CMD |= SPIBUSY; } + SPI1CMD |= SPIBUSY; while(SPI1CMD & SPIBUSY) {} } @@ -367,14 +366,11 @@ void SPIClass::write32(uint32_t data, bool msb) { } data_; data_.l = data; // MSBFIRST Byte first - SPI1W0 = (data_.b[3] | (data_.b[2] << 8) | (data_.b[1] << 16) | (data_.b[0] << 24)); - SPI1CMD |= SPIBUSY; - } else { - // LSBFIRST Byte first - SPI1W0 = data; - SPI1CMD |= SPIBUSY; + data = (data_.b[3] | (data_.b[2] << 8) | (data_.b[1] << 16) | (data_.b[0] << 24)); } - while(SPI1CMD & SPIBUSY) {} + SPI1W0 = data; + SPI1CMD |= SPIBUSY; + while(SPI1CMD & SPIBUSY) {} } /** From 00815f2db444a65e7e5cfc9c3168d355623aa342 Mon Sep 17 00:00:00 2001 From: Richard Allen Date: Sat, 3 Jun 2017 00:48:51 -0500 Subject: [PATCH 023/156] Manually manage FIFO volatility Replace volatile with properly placed __sync_synchronize SPI1W0 is volatile, but when writing multiple words to the FIFO (which is really just a piece of SRAM), we don't need to worry about write ordering. We only need worry about write ordering such that all FIFO words are written completely before HSPI is told to use FIFO by setting SPI1CMD |= SPIBUSY; --- libraries/SPI/SPI.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/SPI/SPI.cpp b/libraries/SPI/SPI.cpp index a5638d9c6..08e08f9cc 100644 --- a/libraries/SPI/SPI.cpp +++ b/libraries/SPI/SPI.cpp @@ -398,7 +398,7 @@ void SPIClass::writeBytes_(uint8_t * data, uint8_t size) { // Set Bits to transfer setDataBits(size * 8); - volatile uint32_t * fifoPtr = &SPI1W0; + uint32_t * fifoPtr = (uint32_t*)&SPI1W0; uint32_t * dataPtr = (uint32_t*) data; uint8_t dataSize = ((size + 3) / 4); @@ -408,6 +408,7 @@ void SPIClass::writeBytes_(uint8_t * data, uint8_t size) { fifoPtr++; } + __sync_synchronize(); SPI1CMD |= SPIBUSY; while(SPI1CMD & SPIBUSY) {} } From 40c159fcf5c5ecf9edec8e7ada49c82ece19e6d0 Mon Sep 17 00:00:00 2001 From: Richard Allen Date: Sat, 3 Jun 2017 00:55:36 -0500 Subject: [PATCH 024/156] Remove a number of extui instructions Using a uint8_t for the loop counter resulted in a number of 8-bit extract (extui) instructions. Using a uint32_t prevents this. --- libraries/SPI/SPI.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/SPI/SPI.cpp b/libraries/SPI/SPI.cpp index 08e08f9cc..de528e0b5 100644 --- a/libraries/SPI/SPI.cpp +++ b/libraries/SPI/SPI.cpp @@ -400,7 +400,7 @@ void SPIClass::writeBytes_(uint8_t * data, uint8_t size) { uint32_t * fifoPtr = (uint32_t*)&SPI1W0; uint32_t * dataPtr = (uint32_t*) data; - uint8_t dataSize = ((size + 3) / 4); + uint32_t dataSize = ((size + 3) / 4); while(dataSize--) { *fifoPtr = *dataPtr; From b6958986d1fd1e020ae8794d91959c2e1030eacf Mon Sep 17 00:00:00 2001 From: Kristian Sloth Lauszus Date: Wed, 14 Jun 2017 13:28:05 +0200 Subject: [PATCH 025/156] Fixed unused-function warning See: https://github.com/esp8266/Arduino/pull/2881/files/d55efd3e144256afe043d251a0f6c778c5139f7c#diff-67390c99ad4faa2080719586ebf73b9e and https://travis-ci.org/felis/USB_Host_Shield_2.0/jobs/213822247#L1248 --- cores/esp8266/Schedule.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cores/esp8266/Schedule.cpp b/cores/esp8266/Schedule.cpp index 60d87e863..0f78f943e 100644 --- a/cores/esp8266/Schedule.cpp +++ b/cores/esp8266/Schedule.cpp @@ -14,9 +14,9 @@ static scheduled_fn_t* sLastUnused = 0; static int sCount = 0; +static void init_lists() __attribute__((unused)); static void init_lists() { - (void) init_lists; if (sCount != 0) { return; } From f05ed6e27d7c170574b25dd5ff76b0dcd972fa7e Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Sun, 23 Jul 2017 16:15:37 +0800 Subject: [PATCH 026/156] Update axTLS to 5de79d71. Includes two PRs: - https://github.com/igrr/axtls-8266/pull/46 by @earlephilhower: Move debug strings from RAM to Flash - https://github.com/igrr/axtls-8266/pull/50: Fix memory leak in ssl_ext_host_name --- tools/sdk/lib/libaxtls.a | Bin 797292 -> 1030880 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tools/sdk/lib/libaxtls.a b/tools/sdk/lib/libaxtls.a index 5258768b45b0b0486d7d1e2ad18469295bfd3bb2..88729fee7dde0aa3b775b95f08ff78ff77c9c5bc 100644 GIT binary patch literal 1030880 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

mw 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

%Q;LGAt_;+y`Y-{h%a}nG`{2=TveiCjj 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νXNeQb>o1)nLK=4#{(BZr=>&QfPuU548yn6@db_cO zowM*9bj$?r*arbGZwCk|;DbIm=jbJ4J5&Wa%ZVYpbiM6Ptb+=@sR*T3Czk6ajYn8o zEM;`H%-bJ4q{r;|oh7s4rNrW1#?&~$AsvKG-p!0C6tvvg$#fpb)@GmG8~ zY(eDuET{iKw}X34O5*F_-f7qpJ)MrF;APkloZd=;RPRlXcYY+$R2NR4CB)MN9ZAm~#M4eVDAzHkq$E>pjZu55Vaq9hV;ynq|);=c-F}v;$J-Xw+ z%hYn8bL!qw?%7Sta&ty!*Eh`{+0qQM@hz`=!v44x-^}F~ugzH}w z^5K61Ui@+WE6o2@SQNtbhYc?^|GOETCFZ|tj=F|J=BUp|l0rdajW!dEq{Y}zH<|%+ zG!RNNu_WMsz{q`KA;m}-uN&%t|0jhg84;qU&uFeRnu+GWr;`*)#?d*(@-WIneb^Xm z7WeqNve*rZ33zhBX3;b0C48kZze)_V7!r*n$w-!(ByU1+v+QRaz@xQI+F3HAKCK{XeBq;ezf?Si{1UWyM#9KUjJ|jv99Rks-D@_7+ za6LcQ|EE=E?-j>1sRz8hzDE6KubMp5UZt;872%z6-kIozBCxf}6uwu{p2RN_o^h7h zC3q!qk~#XOmqf1*u`Q4Nm{(|C-K;Qm;N{qpdqrpKn6>iZ$`H=KIM{m+rmCU7sj0;|ZF=)kr+nIk+^UHcvz=4x&!}3`R=uFUYH@2l zl-uKL1lOw7hH)EtetoO6z%x-**Mf(u+m_TUtgmgas%~npYOY??Wnf8jTjK(}V-w|r z+|9hlzO=s8B!+7>*VUWrkMlpR)qJqk# z+N;~^ow(sDrW^}3pSGmFt=)+iTNSU5PR$}@w57JHvAM2(nNvDxlqm%X!D2&kshr2n zG%s1yRk-!7tu3w2^yc>Z)+7gs- zejel{rdd@@Yh2La)Ks@M)>hTFG~)t}l(fey7EQ}UfW|d_${f>N4qTF&3MJDg�)H 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 Jn*~XY3 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 -6QT)2%17!4RI32?5_^9F#j!jN)qd2OVV^z*3 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 P$27Y};y4!aWQ6eF$o5(s From f5b6e16474a9f2730feb5ed649c068c5d09e63b6 Mon Sep 17 00:00:00 2001 From: Stephan Schreiber Date: Tue, 1 Aug 2017 11:54:31 +0200 Subject: [PATCH 027/156] Fixed: urlDecode done before parsing args (#2956) --- libraries/ESP8266WebServer/src/Parsing.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/ESP8266WebServer/src/Parsing.cpp b/libraries/ESP8266WebServer/src/Parsing.cpp index b013b8a0b..129a1ba00 100644 --- a/libraries/ESP8266WebServer/src/Parsing.cpp +++ b/libraries/ESP8266WebServer/src/Parsing.cpp @@ -91,7 +91,7 @@ bool ESP8266WebServer::_parseRequest(WiFiClient& client) { String searchStr = ""; int hasSearch = url.indexOf('?'); if (hasSearch != -1){ - searchStr = urlDecode(url.substring(hasSearch + 1)); + searchStr = url.substring(hasSearch + 1); url = url.substring(0, hasSearch); } _currentUri = url; @@ -318,7 +318,7 @@ void ESP8266WebServer::_parseArguments(String data) { } RequestArgument& arg = _currentArgs[iarg]; arg.key = data.substring(pos, equal_sign_index); - arg.value = data.substring(equal_sign_index + 1, next_arg_index); + arg.value = urlDecode(data.substring(equal_sign_index + 1, next_arg_index)); #ifdef DEBUG_ESP_HTTP_SERVER DEBUG_OUTPUT.print("arg "); DEBUG_OUTPUT.print(iarg); From a662e81146708ef56b73093a814760468fc61853 Mon Sep 17 00:00:00 2001 From: "Earle F. Philhower, III" Date: Tue, 1 Aug 2017 08:37:26 -0700 Subject: [PATCH 028/156] Move ASSERT() macro file text to PMEM (#3477) Every assert() includes a __FILE__ constant string to RODATA which can be quite large as it includes the complete path as well as the filename. Move that string into PMEM, and update the postmortem to work with either PMEM or RAM strings for dumping abort/assert/exception information. --- cores/esp8266/core_esp8266_postmortem.c | 28 ++++++++++++++----- .../libc/xtensa-lx106-elf/include/assert.h | 3 +- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/cores/esp8266/core_esp8266_postmortem.c b/cores/esp8266/core_esp8266_postmortem.c index 5066b50cb..bfb0c06ac 100644 --- a/cores/esp8266/core_esp8266_postmortem.c +++ b/cores/esp8266/core_esp8266_postmortem.c @@ -27,12 +27,14 @@ #include "user_interface.h" #include "esp8266_peri.h" #include "cont.h" +#include "pgmspace.h" extern void __real_system_restart_local(); extern void gdb_do_break(); extern cont_t g_cont; +// These will be pointers to PROGMEM const strings static const char* s_panic_file = 0; static int s_panic_line = 0; static const char* s_panic_func = 0; @@ -55,6 +57,14 @@ extern void __custom_crash_callback( struct rst_info * rst_info, uint32_t stack, extern void custom_crash_callback( struct rst_info * rst_info, uint32_t stack, uint32_t stack_end ) __attribute__ ((weak, alias("__custom_crash_callback"))); +static void ets_puts_P(const char *romString) { + char c = pgm_read_byte(romString++); + while (c) { + ets_putc(c); + c = pgm_read_byte(romString++); + } +} + void __wrap_system_restart_local() { if (crash_for_gdb) *((int*)0) = 0; register uint32_t sp asm("a1"); @@ -71,17 +81,21 @@ void __wrap_system_restart_local() { ets_install_putc1(&uart_write_char_d); if (s_panic_line) { - ets_printf("\nPanic %s:%d %s\n", s_panic_file, s_panic_line, s_panic_func); + ets_puts_P(PSTR("\nPanic ")); + ets_puts_P(s_panic_file); + ets_printf(":%d ", s_panic_line); + ets_puts_P(s_panic_func); + ets_puts_P(PSTR("\n")); } else if (s_abort_called) { - ets_printf("Abort called\n"); + ets_puts_P(PSTR("Abort called\n")); } else if (rst_info.reason == REASON_EXCEPTION_RST) { ets_printf("\nException (%d):\nepc1=0x%08x epc2=0x%08x epc3=0x%08x excvaddr=0x%08x depc=0x%08x\n", rst_info.exccause, rst_info.epc1, rst_info.epc2, rst_info.epc3, rst_info.excvaddr, rst_info.depc); } else if (rst_info.reason == REASON_SOFT_WDT_RST) { - ets_printf("\nSoft WDT reset\n"); + ets_puts_P(PSTR("\nSoft WDT reset\n")); } uint32_t cont_stack_start = (uint32_t) &(g_cont.stack); @@ -103,11 +117,11 @@ void __wrap_system_restart_local() { } if (sp > cont_stack_start && sp < cont_stack_end) { - ets_printf("\nctx: cont \n"); + ets_puts_P(PSTR("\nctx: cont \n")); stack_end = cont_stack_end; } else { - ets_printf("\nctx: sys \n"); + ets_puts_P(("\nctx: sys \n")); stack_end = 0x3fffffb0; // it's actually 0x3ffffff0, but the stuff below ets_run // is likely not really relevant to the crash @@ -126,7 +140,7 @@ void __wrap_system_restart_local() { static void print_stack(uint32_t start, uint32_t end) { - ets_printf("\n>>>stack>>>\n"); + ets_puts_P(PSTR("\n>>>stack>>>\n")); for (uint32_t pos = start; pos < end; pos += 0x10) { uint32_t* values = (uint32_t*)(pos); @@ -136,7 +150,7 @@ static void print_stack(uint32_t start, uint32_t end) { ets_printf("%08x: %08x %08x %08x %08x %c\n", pos, values[0], values[1], values[2], values[3], (looksLikeStackFrame)?'<':' '); } - ets_printf("<< #undef assert #ifdef NDEBUG /* required by ANSI standard */ # define assert(__e) ((void)0) #else -# define assert(__e) ((__e) ? (void)0 : __assert_func (__FILE__, __LINE__, \ +# define assert(__e) ((__e) ? (void)0 : __assert_func (PSTR(__FILE__), __LINE__, \ __ASSERT_FUNC, #__e)) # ifndef __ASSERT_FUNC From 8f04be4c5b9fd4a3284b06a9ab3333217efcefa1 Mon Sep 17 00:00:00 2001 From: "Earle F. Philhower, III" Date: Tue, 1 Aug 2017 08:38:35 -0700 Subject: [PATCH 029/156] Remove unused ax_port_*alloc() functions (#3482) The ax_port_malloc, ax_port_calloc, ax_port_realloc, and ax_port_free functions in WiFiClientSecure are not actually used by the AXTLS library. It's directly using the library routines, and these function are never used. Remove these dead bits of code to make the axtls operation clearer. --- .../ESP8266WiFi/src/WiFiClientSecure.cpp | 47 ------------------- 1 file changed, 47 deletions(-) diff --git a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp index 88c401661..3490e2c1d 100644 --- a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp +++ b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp @@ -657,53 +657,6 @@ extern "C" int __ax_get_file(const char *filename, uint8_t **buf) } extern "C" void ax_get_file() __attribute__ ((weak, alias("__ax_get_file"))); - -#ifdef DEBUG_TLS_MEM -#define DEBUG_TLS_MEM_PRINT(...) DEBUGV(__VA_ARGS__) -#else -#define DEBUG_TLS_MEM_PRINT(...) -#endif - -extern "C" void* ax_port_malloc(size_t size, const char* file, int line) -{ - (void) file; - (void) line; - void* result = malloc(size); - if (result == nullptr) { - DEBUG_TLS_MEM_PRINT("%s:%d malloc %d failed, left %d\r\n", file, line, size, ESP.getFreeHeap()); - } - if (size >= 1024) { - DEBUG_TLS_MEM_PRINT("%s:%d malloc %d, left %d\r\n", file, line, size, ESP.getFreeHeap()); - } - return result; -} - -extern "C" void* ax_port_calloc(size_t size, size_t count, const char* file, int line) -{ - void* result = ax_port_malloc(size * count, file, line); - memset(result, 0, size * count); - return result; -} - -extern "C" void* ax_port_realloc(void* ptr, size_t size, const char* file, int line) -{ - (void) file; - (void) line; - void* result = realloc(ptr, size); - if (result == nullptr) { - DEBUG_TLS_MEM_PRINT("%s:%d realloc %d failed, left %d\r\n", file, line, size, ESP.getFreeHeap()); - } - if (size >= 1024) { - DEBUG_TLS_MEM_PRINT("%s:%d realloc %d, left %d\r\n", file, line, size, ESP.getFreeHeap()); - } - return result; -} - -extern "C" void ax_port_free(void* ptr) -{ - free(ptr); -} - extern "C" void __ax_wdt_feed() { optimistic_yield(10000); From d42543883949f68a5bfa20888367c018cd07c12f Mon Sep 17 00:00:00 2001 From: Shelby Merrick Date: Mon, 7 Aug 2017 08:40:11 -0400 Subject: [PATCH 030/156] Replace r_rand with os_random for LWIP_RAND() (#3499) --- tools/sdk/lib/liblwip_gcc.a | Bin 1192806 -> 1193962 bytes tools/sdk/lwip/include/lwip/igmp.h | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/sdk/lib/liblwip_gcc.a b/tools/sdk/lib/liblwip_gcc.a index 4758c769a385ba9f3a9866f2cada215547cf941c..0e56b9be7bcd03ae2c9a1eb73167f514714a42cc 100644 GIT binary patch delta 239923 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%0A6W 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 M`+9V7N%%eYUw(7|BLDyZ delta 239187 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

qZyNFs3_fFUZCv-g!eoREPg{fg8+@6; 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

nI5GD5CSbyYzTx0jw8BE)E5 zS2Yyz^#7ruXa~%JkZv)#gc_T<1icx_9`tgVlRTKnyLtXoB6*=a=>7!aznWFF7)A&2 zAUVLCMTSNbij&^y<&S`)SBH#m0H?)&R=@o7ZDp9)C7HQO*(H%UWW`gsEJlw127As% zKm2>e6ICkE_V@>t%H^<(&PRV!9l;WF2d3Jm2AI3 zzmj{&K);ehLvGHFIIpSJ0Uq45aK%@*IOaPZx|V&FZ;+X3q^W{IW?JSPSjra1K7=J( z9RCOYqFWrhv7PPIL1tdl+Ze2uH$Tqdo(ErMlOQrL-eorB1h4lNxH!DGA_az*GlouY z1ta%1R__cluXpaZRK{SlD6$;_E-RlpZT|YWLaXj)^yu(S!j-wK#$kAkIy8woxH%kU zm3#sZT7%PSO~0m#S>Wq{5U?3C2Lb#)Ar#M&Tv$8&jK#B@VY&PtAYjiuWKY5<_3mJ^ zp3z3RhM41=mrONfh&kK&o2kwXL6%Ha!J%d?W1wm})GSHiI{w7?>6{z#bG9LV=20fp zU#eCNHG4vr?u(&jiJRFw2RFmOmQ*8b^Ww=>Tjict?6O6jA{|!d)G4o}B z{~5P>VYu0>BS-1IvVC$_#wOb*KTFy3^f%Mb53zYK?ttrT|9<`z?8{|9f1P_j_`= z|6bK{gqdV4QoTo*S#6%8i_>7sYfWXU(Rl5hlsSaxO)!{<4V5_y?+s|frpgYw*qbZI zsa+$?YQ{MA-UzcVHiRx1X_hq@3kjDuas$J2Ax#c%ZJ^F%?Quj>G{!Ay%L4 zFh2bNLDmQ}sDCpkTo_NuyWMK!XfrE`^Gn7M9m($uV<@ks#&orDw3&zAJJCWVf*t*W@pIPpNv$zVX7XJ z%^l9Y9_5~5HgkUJR;{O)S?Roe##R@vxf9+A1$@MeCtaNN=PI=Vzq)IRnVQ;|soJJ9 z?gFgqBVV_>n6X^gRXAN8oMOHd=FE(7!o>{ONb791W-9W9ZE)iw*X?+>%|s)laF#kg z6;I&;b$O~;TxqXPv-<#s?X^-?NiEfWnmHDiv}2mN8>flW%>l-E_1bjv#RP72<7;B@ zhPN53)C{wZu^hYWqWU}LR+VO&!)kGS++381_d<}#)BhapILhvO%*dfNljkUHsMgIi z^NhRHp_yh~qi4mBGtK46o~LkaPAnY$Z|a`^*Kf#N_a1Y6rKnzM!TTPw!n4VI`@iay z9)Hw4^0#`W6<=;KZ;OXY>8Pj8)=s_8vg*__E>GRG-IZ67@vNEW#2(9?E6i5TOS9GD z3bU*8hnv+&oQ*7c6qJWjLKIG$ctyLc*Bz87$+q5AXGS3SYg zPW3BKgH`8UW*uk9sb=poGt5nQ7p+n}U!gQL`I0B2 zV(g3N!Nl6g5C;djSnDE}U5xSLV`r8jgtr>NfphJ_d9O z%%2_5X>tPo;rJ3i4tFNv{B;cfAe@Brufo(QBpHrJIoLj_PFesMTGGNMc zHwc@z2=g92CCuk;CmCVx#+g4m%*Z|(q;5D!Auw+kwP|f;BZtfz_P#K0*l98X{Ss&X z>_E?x83>MxlmW97^J5HOj&i_}3I}S_QYgJ*+WY2}#t~{w8hAW;oQ9j>iLzp4AkWZJ zxZ95bx1h3%?+UV%zp%zL4>`;Zox@R1gX9c{gY7F~ zZd5|#yrTDn)4?Z&bHH3dLz&uO<_x($_#5Gd;2(sWg8w7j8tmYFB|WqSo49&%JFs84 zBe;@qS1>g+DbpQH4NY=SaF*~eaBX4MLWRQ9z>S4xfLjR9;`MV1m;te`)j@bJxU2B( z;9kOu!R&5QeieAI@O|Ks!ViGQ3qJ^+D!c(aTlgXHZQuw4dIE;|;_xK+AHv(g%Y|8; ztrmU*yjJ*a@I%7Kz*~ebfVT<%0DeaJXYdQcSo9ImyE`)xe%zN=#DUAsUl*qS!M}vF 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 HC4BQQ;x8eB diff --git a/tools/sdk/lwip/include/lwip/igmp.h b/tools/sdk/lwip/include/lwip/igmp.h index c90adcdce..f0c9dea3f 100644 --- a/tools/sdk/lwip/include/lwip/igmp.h +++ b/tools/sdk/lwip/include/lwip/igmp.h @@ -96,7 +96,7 @@ void igmp_input(struct pbuf *p, struct netif *inp, ip_addr_t *dest)ICACHE_FLAS err_t igmp_joingroup(ip_addr_t *ifaddr, ip_addr_t *groupaddr)ICACHE_FLASH_ATTR; err_t igmp_leavegroup(ip_addr_t *ifaddr, ip_addr_t *groupaddr)ICACHE_FLASH_ATTR; void igmp_tmr(void)ICACHE_FLASH_ATTR; -#define LWIP_RAND() r_rand() +#define LWIP_RAND() os_random() #ifdef __cplusplus } #endif From 1557b1e9ed619dc34420863013f506ad964b8100 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Wed, 2 Aug 2017 01:33:54 +0300 Subject: [PATCH 031/156] Manifest for @PlatformIO Custom manifest for @PlatformIO which instructs PIO Build System to do not archive library's object files. See - https://github.com/esp8266/Arduino/pull/3321#issuecomment-319386749 - http://docs.platformio.org/en/latest/librarymanager/config.html#libarchive --- libraries/GDBStub/library.json | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 libraries/GDBStub/library.json diff --git a/libraries/GDBStub/library.json b/libraries/GDBStub/library.json new file mode 100644 index 000000000..6b38685eb --- /dev/null +++ b/libraries/GDBStub/library.json @@ -0,0 +1,30 @@ +{ + "name": "GDBStub", + "version": "0.2", + "keywords": "gdb, debug", + "description": "GDB server stub helps debug crashes when JTAG isn't an option.", + "repository": + { + "type": "git", + "url": "https://github.com/esp8266/Arduino.git" + }, + "export": { + "include": "libraries/GDBStub" + }, + "authors": + [ + { + "name": "Jeroen Domburg" + }, + { + "name": "Ivan Grokhotkov", + "email": "ivan@esp8266.com", + "maintainer": true + } + ], + "frameworks": "arduino", + "platforms": "espressif8266", + "build": { + "libArchive": false + } +} From ff4bb73084444e47dc6b698fc14cb54443886205 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Fri, 2 Jun 2017 01:40:16 +0300 Subject: [PATCH 032/156] Integration with @PlatformIO Build System --- package.json | 6 ++ tests/common.sh | 56 +++++++++++++++++ tools/platformio-build.py | 95 +++++++++++++++++++++++++++++ tools/sdk/ld/eagle.app.v6.common.ld | 18 ++++++ 4 files changed, 175 insertions(+) create mode 100644 package.json create mode 100644 tools/platformio-build.py diff --git a/package.json b/package.json new file mode 100644 index 000000000..da97f8a4b --- /dev/null +++ b/package.json @@ -0,0 +1,6 @@ +{ + "name": "framework-arduinoespressif8266", + "description": "Arduino Wiring-based Framework (ESP8266 Core)", + "url": "https://github.com/esp8266/Arduino", + "version": "2.4.0-rc.1" +} diff --git a/tests/common.sh b/tests/common.sh index af5ceff64..1387e5467 100755 --- a/tests/common.sh +++ b/tests/common.sh @@ -122,6 +122,53 @@ function build_package() ./build_boards_manager_package.sh } + +function install_platformio() +{ + pip install -U https://github.com/platformio/platformio/archive/develop.zip + platformio platform install https://github.com/platformio/platform-espressif8266.git#feature/stage + sed -i 's/https:\/\/github\.com\/esp8266\/Arduino\.git/*/' ~/.platformio/platforms/espressif8266_stage/platform.json + ln -s $TRAVIS_BUILD_DIR ~/.platformio/packages/framework-arduinoespressif8266 + # Install dependencies: + # - esp8266/examples/ConfigFile + pio lib install ArduinoJson +} + +function build_sketches_with_platformio() +{ + set +e + local srcpath=$1 + local build_arg=$2 + local sketches=$(find $srcpath -name *.ino) + for sketch in $sketches; do + local sketchdir=$(dirname $sketch) + local sketchdirname=$(basename $sketchdir) + local sketchname=$(basename $sketch) + if [[ "${sketchdirname}.ino" != "$sketchname" ]]; then + echo "Skipping $sketch, beacause it is not the main sketch file"; + continue + fi; + if [[ -f "$sketchdir/.test.skip" ]]; then + echo -e "\n ------------ Skipping $sketch ------------ \n"; + continue + fi + local build_cmd="pio ci $sketchdir $build_arg" + echo -e "\n ------------ Building $sketch ------------ \n"; + echo "$build_cmd" + time ($build_cmd >build.log) + local result=$? + if [ $result -ne 0 ]; then + echo "Build failed ($1)" + echo "Build log:" + cat build.log + set -e + return $result + fi + rm build.log + done + set -e +} + function run_travis_ci_build() { # Build documentation using Sphinx @@ -165,6 +212,15 @@ function run_travis_ci_build() echo -e "travis_fold:start:size_report" cat size.log echo -e "travis_fold:end:size_report" + + # PlatformIO + echo -e "travis_fold:start:install_platformio" + install_platformio + echo -e "travis_fold:end:install_platformio" + + echo -e "travis_fold:start:build_sketches_with_platformio" + build_sketches_with_platformio $TRAVIS_BUILD_DIR/libraries "--board nodemcuv2 --verbose" + echo -e "travis_fold:end:build_sketches_with_platformio" } set -e diff --git a/tools/platformio-build.py b/tools/platformio-build.py new file mode 100644 index 000000000..d3e78781a --- /dev/null +++ b/tools/platformio-build.py @@ -0,0 +1,95 @@ +# Copyright (c) 2014-present PlatformIO +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Arduino + +Arduino Wiring-based Framework allows writing cross-platform software to +control devices attached to a wide range of Arduino boards to create all +kinds of creative coding, interactive objects, spaces or physical experiences. + +http://arduino.cc/en/Reference/HomePage +""" + +# Extends: https://github.com/platformio/platform-espressif8266/blob/develop/builder/main.py + +from os.path import isdir, join + +from SCons.Script import DefaultEnvironment + +env = DefaultEnvironment() +platform = env.PioPlatform() + +FRAMEWORK_DIR = platform.get_package_dir("framework-arduinoespressif8266") +assert isdir(FRAMEWORK_DIR) + + +env.Prepend( + CPPDEFINES=[ + ("ARDUINO", 10600), + "LWIP_OPEN_SRC" + ], + CPPPATH=[ + join(FRAMEWORK_DIR, "tools", "sdk", "include"), + join(FRAMEWORK_DIR, "tools", "sdk", "lwip", "include"), + join(FRAMEWORK_DIR, "tools", "sdk", "libc", + "xtensa-lx106-elf", "include"), + join(FRAMEWORK_DIR, "cores", env.BoardConfig().get("build.core")) + ], + LIBPATH=[ + join(FRAMEWORK_DIR, "tools", "sdk", "lib"), + join(FRAMEWORK_DIR, "tools", "sdk", "ld"), + join(FRAMEWORK_DIR, "tools", "sdk", "libc", "xtensa-lx106-elf", "lib") + ], + LIBS=[ + "mesh", "wpa2", "smartconfig", "espnow", "pp", "main", "wpa", "lwip_gcc", + "net80211", "wps", "crypto", "phy", "hal", "axtls", "gcc", + "m", "c", "stdc++" + ] +) + +env.Append( + LIBSOURCE_DIRS=[ + join(FRAMEWORK_DIR, "libraries") + ], + LINKFLAGS=[ + "-Wl,-wrap,system_restart_local", + "-Wl,-wrap,spi_flash_read" + ] +) + +# +# Target: Build Core Library +# + +libs = [] + +if "build.variant" in env.BoardConfig(): + env.Append( + CPPPATH=[ + join(FRAMEWORK_DIR, "variants", + env.BoardConfig().get("build.variant")) + ] + ) + libs.append(env.BuildLibrary( + join("$BUILD_DIR", "FrameworkArduinoVariant"), + join(FRAMEWORK_DIR, "variants", env.BoardConfig().get("build.variant")) + )) + +libs.append(env.BuildLibrary( + join("$BUILD_DIR", "FrameworkArduino"), + join(FRAMEWORK_DIR, "cores", env.BoardConfig().get("build.core")) +)) + +env.Prepend(LIBS=libs) \ No newline at end of file diff --git a/tools/sdk/ld/eagle.app.v6.common.ld b/tools/sdk/ld/eagle.app.v6.common.ld index ba43f358b..343448d03 100644 --- a/tools/sdk/ld/eagle.app.v6.common.ld +++ b/tools/sdk/ld/eagle.app.v6.common.ld @@ -157,6 +157,18 @@ SECTIONS *.c.o( EXCLUDE_FILE (umm_malloc.c.o) .literal*, \ EXCLUDE_FILE (umm_malloc.c.o) .text*) *.cpp.o(.literal*, .text*) + *.pioenvs\\*\\lib*.a:(EXCLUDE_FILE (umm_malloc.o) .literal*, \ + EXCLUDE_FILE (umm_malloc.o) .text*) + *.pioenvs/*/lib*.a:(EXCLUDE_FILE (umm_malloc.o) .literal*, \ + EXCLUDE_FILE (umm_malloc.o) .text*) + *.pioenvs\\*\\lib\*.a:(EXCLUDE_FILE (umm_malloc.o) .literal*, \ + EXCLUDE_FILE (umm_malloc.o) .text*) + *.pioenvs/*/lib/*.a:(EXCLUDE_FILE (umm_malloc.o) .literal*, \ + EXCLUDE_FILE (umm_malloc.o) .text*) + *.pioenvs\\*\\src\\*.o(EXCLUDE_FILE (umm_malloc.o) .literal*, \ + EXCLUDE_FILE (umm_malloc.o) .text*) + *.pioenvs/*/src/*.o(EXCLUDE_FILE (umm_malloc.o) .literal*, \ + EXCLUDE_FILE (umm_malloc.o) .text*) *libc.a:(.literal .text .literal.* .text.*) *libm.a:(.literal .text .literal.* .text.*) *libgcc.a:_umoddi3.o(.literal .text) @@ -205,6 +217,12 @@ SECTIONS *(.literal .text .literal.* .text.* .stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*) *.cpp.o(.iram.text) *.c.o(.iram.text) + *.pioenvs\\*\\lib*.a:(.iram.text) + *.pioenvs/*/lib*.a:(.iram.text) + *.pioenvs\\*\\lib\\*.a:(.iram.text) + *.pioenvs/*/lib/*.a:(.iram.text) + *.pioenvs\\*\\src\\*.o(.iram.text) + *.pioenvs/*/src/*.o(.iram.text) *(.fini.literal) *(.fini) *(.gnu.version) From 4bed115abd00163f1ff370f2caef3d51dfb3c9ae Mon Sep 17 00:00:00 2001 From: "Earle F. Philhower, III" Date: Mon, 7 Aug 2017 05:43:28 -0700 Subject: [PATCH 033/156] Move debug constant strings to PROGMEM (#3478) UMM debugging strings are normally placed in RODATA, which uses up scarse memory. Move them to PROGMEM and use macros to replace printf with a version that can handle ROM strings. --- cores/esp8266/umm_malloc/umm_malloc.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cores/esp8266/umm_malloc/umm_malloc.c b/cores/esp8266/umm_malloc/umm_malloc.c index 3c8c95050..9a06332c3 100644 --- a/cores/esp8266/umm_malloc/umm_malloc.c +++ b/cores/esp8266/umm_malloc/umm_malloc.c @@ -493,6 +493,7 @@ #include #include +#include #include "umm_malloc.h" @@ -512,6 +513,9 @@ # define DBG_LOG_LEVEL DBG_LOG_LEVEL #endif +// Macro to place constant strings into PROGMEM and print them properly +#define printf(fmt, ...) do { static const char fstr[] PROGMEM = fmt; char rstr[sizeof(fmt)]; for (size_t i=0; i Date: Mon, 7 Aug 2017 05:44:30 -0700 Subject: [PATCH 034/156] Move MIME type table into PROGMEM to save RAM (#3475) The extension -> MIME type routine uses lots of constant strings which end up in the RODATA segment of RAM. Refactor the comparison to use a table of strings stored in PMMEM instead, freeing ~370 bytes for the heap. --- .../src/detail/RequestHandlersImpl.h | 61 ++++++++++++------- 1 file changed, 38 insertions(+), 23 deletions(-) diff --git a/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h b/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h index eb611dbb7..692052359 100644 --- a/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h +++ b/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h @@ -3,6 +3,32 @@ #include "RequestHandler.h" +// Table of extension->MIME strings stored in PROGMEM, needs to be global due to GCC section typing rules +static const struct {const char endsWith[16]; const char mimeType[32];} mimeTable[] ICACHE_RODATA_ATTR = { + { ".html", "text/html" }, + { ".htm", "text/html" }, + { ".css", "text/css" }, + { ".txt", "text/plain" }, + { ".js", "application/javascript" }, + { ".json", "application/json" }, + { ".png", "image/png" }, + { ".gif", "image/gif" }, + { ".jpg", "image/jpeg" }, + { ".ico", "image/x-icon" }, + { ".svg", "image/svg+xml" }, + { ".ttf", "application/x-font-ttf" }, + { ".otf", "application/x-font-opentype" }, + { ".woff", "application/font-woff" }, + { ".woff2", "application/font-woff2" }, + { ".eot", "application/vnd.ms-fontobject" }, + { ".sfnt", "application/font-sfnt" }, + { ".xml", "text/xml" }, + { ".pdf", "application/pdf" }, + { ".zip", "application/zip" }, + { ".gz", "application/x-gzip" }, + { ".appcache", "text/cache-manifest" }, + { "", "application/octet-stream" } }; + class FunctionRequestHandler : public RequestHandler { public: FunctionRequestHandler(ESP8266WebServer::THandlerFunction fn, ESP8266WebServer::THandlerFunction ufn, const String &uri, HTTPMethod method) @@ -116,29 +142,18 @@ public: } static String getContentType(const String& path) { - if (path.endsWith(".html")) return "text/html"; - else if (path.endsWith(".htm")) return "text/html"; - else if (path.endsWith(".css")) return "text/css"; - else if (path.endsWith(".txt")) return "text/plain"; - else if (path.endsWith(".js")) return "application/javascript"; - else if (path.endsWith(".json")) return "application/json"; - else if (path.endsWith(".png")) return "image/png"; - else if (path.endsWith(".gif")) return "image/gif"; - else if (path.endsWith(".jpg")) return "image/jpeg"; - else if (path.endsWith(".ico")) return "image/x-icon"; - else if (path.endsWith(".svg")) return "image/svg+xml"; - else if (path.endsWith(".ttf")) return "application/x-font-ttf"; - else if (path.endsWith(".otf")) return "application/x-font-opentype"; - else if (path.endsWith(".woff")) return "application/font-woff"; - else if (path.endsWith(".woff2")) return "application/font-woff2"; - else if (path.endsWith(".eot")) return "application/vnd.ms-fontobject"; - else if (path.endsWith(".sfnt")) return "application/font-sfnt"; - else if (path.endsWith(".xml")) return "text/xml"; - else if (path.endsWith(".pdf")) return "application/pdf"; - else if (path.endsWith(".zip")) return "application/zip"; - else if(path.endsWith(".gz")) return "application/x-gzip"; - else if (path.endsWith(".appcache")) return "text/cache-manifest"; - return "application/octet-stream"; + char buff[sizeof(mimeTable[0].mimeType)]; + // Check all entries but last one for match, return if found + for (size_t i=0; i < sizeof(mimeTable)/sizeof(mimeTable[0])-1; i++) { + strcpy_P(buff, mimeTable[i].endsWith); + if (path.endsWith(buff)) { + strcpy_P(buff, mimeTable[i].mimeType); + return String(buff); + } + } + // Fall-through and just return default type + strcpy_P(buff, mimeTable[sizeof(mimeTable)/sizeof(mimeTable[0])-1].mimeType); + return String(buff); } protected: From 1bd1de028600474627b55dedc4cdd2578d40c573 Mon Sep 17 00:00:00 2001 From: hchahine Date: Mon, 7 Aug 2017 22:46:47 +1000 Subject: [PATCH 035/156] Removed literal '\n' in ESP8266HTTPUpdateServer response (#3421) --- .../ESP8266HTTPUpdateServer/src/ESP8266HTTPUpdateServer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/ESP8266HTTPUpdateServer/src/ESP8266HTTPUpdateServer.cpp b/libraries/ESP8266HTTPUpdateServer/src/ESP8266HTTPUpdateServer.cpp index 1223596cf..7a87191d8 100644 --- a/libraries/ESP8266HTTPUpdateServer/src/ESP8266HTTPUpdateServer.cpp +++ b/libraries/ESP8266HTTPUpdateServer/src/ESP8266HTTPUpdateServer.cpp @@ -12,7 +12,7 @@ static const char serverIndex[] PROGMEM = - \n)"; + )"; static const char successResponse[] PROGMEM = "Update Success! Rebooting...\n"; From 3b60f756351ab0288e1eca9c604cd5440337942b Mon Sep 17 00:00:00 2001 From: teejaydub Date: Mon, 7 Aug 2017 12:04:03 -0400 Subject: [PATCH 036/156] Fix to parse parameters in the URL of a POST with empty content. (#3398) --- libraries/ESP8266WebServer/src/Parsing.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libraries/ESP8266WebServer/src/Parsing.cpp b/libraries/ESP8266WebServer/src/Parsing.cpp index 129a1ba00..d069bf1a1 100644 --- a/libraries/ESP8266WebServer/src/Parsing.cpp +++ b/libraries/ESP8266WebServer/src/Parsing.cpp @@ -205,6 +205,9 @@ bool ESP8266WebServer::_parseRequest(WiFiClient& client) { DEBUG_OUTPUT.println(plainBuf); #endif free(plainBuf); + } else { + // No content - but we can still have arguments in the URL. + _parseArguments(searchStr); } } From c730c0f10c89f29438dd9d2f7878368042dbb77f Mon Sep 17 00:00:00 2001 From: R P Herrold Date: Wed, 26 Jul 2017 11:35:26 -0400 Subject: [PATCH 037/156] patch for #3462 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 48f53fb2a..1870f8cb0 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ ESP8266 Arduino core comes with libraries to communicate over WiFi using TCP and Starting with 1.6.4, Arduino allows installation of third-party platform packages using Boards Manager. We have packages available for Windows, Mac OS, and Linux (32 and 64 bit). -- Install Arduino 1.8.2 from the [Arduino website](http://www.arduino.cc/en/main/software). +- Install the current upstream Arduino IDE at the 1.8 level or later. The current version is at the [Arduino website](http://www.arduino.cc/en/main/software). - Start Arduino and open Preferences window. - Enter ```http://arduino.esp8266.com/stable/package_esp8266com_index.json``` into *Additional Board Manager URLs* field. You can add multiple URLs, separating them with commas. - Open Boards Manager from Tools > Board menu and install *esp8266* platform (and don't forget to select your ESP8266 board from Tools > Board menu after installation). From 3f5d06bc12553fc1b2811e7b7480b4615be25c91 Mon Sep 17 00:00:00 2001 From: Christopher Hiller Date: Tue, 1 Aug 2017 00:33:19 -0700 Subject: [PATCH 038/156] add DigiStump Oak pins & board --- boards.txt | 65 +++++++++++++++++++ doc/boards.rst | 9 +++ .../package_esp8266com_index.template.json | 3 + variants/oak/pins_arduino.h | 55 ++++++++++++++++ 4 files changed, 132 insertions(+) create mode 100644 variants/oak/pins_arduino.h diff --git a/boards.txt b/boards.txt index 890a8bc0f..19a692de9 100644 --- a/boards.txt +++ b/boards.txt @@ -2021,3 +2021,68 @@ gen4iod.menu.UploadSpeed.512000.windows=512000 gen4iod.menu.UploadSpeed.512000.upload.speed=512000 gen4iod.menu.UploadSpeed.921600=921600 gen4iod.menu.UploadSpeed.921600.upload.speed=921600 + +############################################################## +oak.name=DigiStump Oak + +oak.upload.tool=esptool +oak.upload.speed=115200 +oak.upload.resetmethod=ck +oak.upload.maximum_size=1040368 +oak.upload.maximum_data_size=81920 +oak.upload.wait_for_upload_port=true +oak.serial.disableDTR=true +oak.serial.disableRTS=true + +oak.build.mcu=esp8266 +oak.build.f_cpu=80000000L +oak.build.board=ESP8266_OAK +oak.build.core=esp8266 +oak.build.variant=oak +oak.build.flash_mode=dio +oak.build.flash_size=4M +oak.build.flash_freq=40 +oak.build.debug_port= +oak.build.debug_level= + +oak.menu.CpuFrequency.80=80 MHz +oak.menu.CpuFrequency.80.build.f_cpu=80000000L +oak.menu.CpuFrequency.160=160 MHz +oak.menu.CpuFrequency.160.build.f_cpu=160000000L + +oak.menu.UploadSpeed.921600=921600 +oak.menu.UploadSpeed.921600.upload.speed=921600 +oak.menu.UploadSpeed.115200=115200 +oak.menu.UploadSpeed.115200.upload.speed=115200 +oak.menu.UploadSpeed.9600=9600 +oak.menu.UploadSpeed.9600.upload.speed=9600 +oak.menu.UploadSpeed.57600=57600 +oak.menu.UploadSpeed.57600.upload.speed=57600 +oak.menu.UploadSpeed.256000.windows=256000 +oak.menu.UploadSpeed.256000.upload.speed=256000 +oak.menu.UploadSpeed.230400.linux=230400 +oak.menu.UploadSpeed.230400.macosx=230400 +oak.menu.UploadSpeed.230400.macosx=230400 +oak.menu.UploadSpeed.230400.upload.speed=230400 +oak.menu.UploadSpeed.460800.linux=460800 +oak.menu.UploadSpeed.460800.macosx=460800 +oak.menu.UploadSpeed.460800.upload.speed=460800 +oak.menu.UploadSpeed.512000.windows=512000 +oak.menu.UploadSpeed.512000.upload.speed=512000 + + +oak.menu.FlashSize.4M3M=4M (3M SPIFFS) +oak.menu.FlashSize.4M3M.build.flash_size=4M +oak.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +oak.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +oak.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +oak.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +oak.menu.FlashSize.4M3M.build.spiffs_pagesize=256 + +oak.menu.FlashSize.4M1M=4M (1M SPIFFS) +oak.menu.FlashSize.4M1M.build.flash_size=4M +oak.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +oak.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +oak.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +oak.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +oak.menu.FlashSize.4M1M.build.spiffs_pagesize=256 diff --git a/doc/boards.rst b/doc/boards.rst index ec085057b..c60469867 100644 --- a/doc/boards.rst +++ b/doc/boards.rst @@ -131,6 +131,15 @@ WifInfo integrates the ESP-12 or ESP-07+Ext antenna module with a 3.3v regulator For more information, please see WifInfo related `blog `__ entries, `github `__ and `community `__ forum. +DigiStump Oak +------------- + +The Oak requires an [adapter](#serial-adapter) for a serial connection or flashing; its micro USB port is only for power. + +To make a serial connection, wire the adapter's **TX to P3**, **RX to P4**, and **GND** to **GND**. Supply 3.3v from the serial adapter if not already powered via USB. + +To put the board into bootloader mode, configure a serial connection as above, connect **P2 to GND**, then re-apply power. Once flashing is complete, remove the connection from P2 to GND, then re-apply power to boot into normal mode. + Generic ESP8266 modules ----------------------- diff --git a/package/package_esp8266com_index.template.json b/package/package_esp8266com_index.template.json index a1789f7b5..53c8dd407 100644 --- a/package/package_esp8266com_index.template.json +++ b/package/package_esp8266com_index.template.json @@ -73,6 +73,9 @@ }, { "name": "4D Systems gen4 IoD Range" + }, + { + "name": "DigiStump Oak" } ], "toolsDependencies": [ diff --git a/variants/oak/pins_arduino.h b/variants/oak/pins_arduino.h new file mode 100644 index 000000000..757a5c523 --- /dev/null +++ b/variants/oak/pins_arduino.h @@ -0,0 +1,55 @@ +/* + pins_arduino.h - Pin definition functions for Arduino + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2007 David A. Mellis + Modified for ESP8266 platform by Ivan Grokhotkov, 2014-2015. + + 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., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $ +*/ + +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +static const uint8_t P0 = 2; +static const uint8_t P1 = 5; +static const uint8_t P2 = 0; +static const uint8_t P3 = 3; +static const uint8_t P4 = 1; +static const uint8_t P5 = 4; +static const uint8_t P6 = 15; +static const uint8_t P7 = 13; +static const uint8_t P8 = 12; +static const uint8_t P9 = 14; +static const uint8_t P10 = 16; +static const uint8_t P11 = 17; + +static const uint8_t SDA = 2; +static const uint8_t SCL = 0; + +static const uint8_t SS = 15; +static const uint8_t MOSI = 13; +static const uint8_t MISO = 12; +static const uint8_t SCK = 14; + +static const uint8_t BUILTIN_LED = 5; +static const uint8_t LED_BUILTIN = 5; + +static const uint8_t A0 = 17; + +#endif /* Pins_Arduino_h */ From ba0e049b83a7d012c857c3c25c0b148a76fd17a1 Mon Sep 17 00:00:00 2001 From: hreintke Date: Thu, 8 Dec 2016 16:53:59 +0100 Subject: [PATCH 039/156] Functional Interrupts initial --- cores/esp8266/FunctionalInterrupt.cpp | 24 ++++++++++++++++ cores/esp8266/FunctionalInterrupt.h | 15 ++++++++++ cores/esp8266/core_esp8266_wiring_digital.c | 32 ++++++++++++++++----- 3 files changed, 64 insertions(+), 7 deletions(-) create mode 100644 cores/esp8266/FunctionalInterrupt.cpp create mode 100644 cores/esp8266/FunctionalInterrupt.h diff --git a/cores/esp8266/FunctionalInterrupt.cpp b/cores/esp8266/FunctionalInterrupt.cpp new file mode 100644 index 000000000..b7c7dd143 --- /dev/null +++ b/cores/esp8266/FunctionalInterrupt.cpp @@ -0,0 +1,24 @@ +#include + + +// Duplicate typedefs from core_esp8266_wiring_digital_c +typedef void (*voidFuncPtr)(void); + +// Helper functions for Functional interrupt routines +extern "C" void ICACHE_RAM_ATTR __attachInterruptArg(uint8_t pin, voidFuncPtr userFunc, void*fp , int mode); + +// Structure for communication +struct ArgStructure { + std::function reqFunction; +}; + +void interruptFunctional(void* arg) +{ + ((ArgStructure*)arg)->reqFunction(); +} + +void attachInterrupt(uint8_t pin, std::function intRoutine, int mode) +{ + // use the local interrupt routine which takes the ArgStructure as argument + __attachInterruptArg (pin, (voidFuncPtr)interruptFunctional, new ArgStructure{intRoutine}, mode); +} diff --git a/cores/esp8266/FunctionalInterrupt.h b/cores/esp8266/FunctionalInterrupt.h new file mode 100644 index 000000000..fedc20ad6 --- /dev/null +++ b/cores/esp8266/FunctionalInterrupt.h @@ -0,0 +1,15 @@ +#ifndef FUNCTIONALINTERRUPT_H +#define FUNCTIONALINTERRUPT_H + +#include +#include +#include + +extern "C" { +#include "c_types.h" +#include "ets_sys.h" +} + +void attachInterrupt(uint8_t pin, std::function intRoutine, int mode); + +#endif //INTERRUPTS_H diff --git a/cores/esp8266/core_esp8266_wiring_digital.c b/cores/esp8266/core_esp8266_wiring_digital.c index 3e304b864..5df128833 100644 --- a/cores/esp8266/core_esp8266_wiring_digital.c +++ b/cores/esp8266/core_esp8266_wiring_digital.c @@ -105,12 +105,15 @@ extern int ICACHE_RAM_ATTR __digitalRead(uint8_t pin) { */ typedef void (*voidFuncPtr)(void); +typedef void (*voidFuncPtrArg)(void*); typedef struct { uint8_t mode; void (*fn)(void); + void * arg; } interrupt_handler_t; + static interrupt_handler_t interrupt_handlers[16]; static uint32_t interrupt_reg = 0; @@ -127,24 +130,32 @@ void ICACHE_RAM_ATTR interrupt_handler(void *arg) { while(!(changedbits & (1 << i))) i++; changedbits &= ~(1 << i); interrupt_handler_t *handler = &interrupt_handlers[i]; - if (handler->fn && - (handler->mode == CHANGE || + if (handler->fn && + (handler->mode == CHANGE || (handler->mode & 1) == !!(levels & (1 << i)))) { // to make ISR compatible to Arduino AVR model where interrupts are disabled // we disable them before we call the client ISR - uint32_t savedPS = xt_rsil(15); // stop other interrupts - handler->fn(); - xt_wsr_ps(savedPS); + uint32_t savedPS = xt_rsil(15); // stop other interrupts + if (handler->arg) + { + ((voidFuncPtrArg)handler->fn)(handler->arg); + } + else + { + handler->fn(); + } + xt_wsr_ps(savedPS); } } ETS_GPIO_INTR_ENABLE(); } -extern void ICACHE_RAM_ATTR __attachInterrupt(uint8_t pin, voidFuncPtr userFunc, int mode) { +extern void ICACHE_RAM_ATTR __attachInterruptArg(uint8_t pin, voidFuncPtr userFunc, void *arg, int mode) { if(pin < 16) { interrupt_handler_t *handler = &interrupt_handlers[pin]; handler->mode = mode; handler->fn = userFunc; + handler->arg = arg; interrupt_reg |= (1 << pin); GPC(pin) &= ~(0xF << GPCI);//INT mode disabled GPIEC = (1 << pin); //Clear Interrupt for this pin @@ -152,6 +163,11 @@ extern void ICACHE_RAM_ATTR __attachInterrupt(uint8_t pin, voidFuncPtr userFunc, } } +extern void ICACHE_RAM_ATTR __attachInterrupt(uint8_t pin, voidFuncPtr userFunc, int mode ) +{ + __attachInterruptArg (pin, userFunc, 0, mode); +} + extern void ICACHE_RAM_ATTR __detachInterrupt(uint8_t pin) { if(pin < 16) { GPC(pin) &= ~(0xF << GPCI);//INT mode disabled @@ -160,6 +176,7 @@ extern void ICACHE_RAM_ATTR __detachInterrupt(uint8_t pin) { interrupt_handler_t *handler = &interrupt_handlers[pin]; handler->mode = 0; handler->fn = 0; + handler->arg = 0; } } @@ -176,7 +193,7 @@ void initPins() { for (int i = 12; i <= 16; ++i) { pinMode(i, INPUT); } - + ETS_GPIO_INTR_ATTACH(interrupt_handler, &interrupt_reg); ETS_GPIO_INTR_ENABLE(); } @@ -186,3 +203,4 @@ extern void digitalWrite(uint8_t pin, uint8_t val) __attribute__ ((weak, alias(" extern int digitalRead(uint8_t pin) __attribute__ ((weak, alias("__digitalRead"))); extern void attachInterrupt(uint8_t pin, voidFuncPtr handler, int mode) __attribute__ ((weak, alias("__attachInterrupt"))); extern void detachInterrupt(uint8_t pin) __attribute__ ((weak, alias("__detachInterrupt"))); + From fe6f3cc830a9c2069489a2535c87073f6b64d70d Mon Sep 17 00:00:00 2001 From: per1234 Date: Sat, 2 Sep 2017 09:50:15 -0700 Subject: [PATCH 040/156] Use correct separator in keywords.txt The Arduino IDE requires the use of a tab separator between the name and identifier. Without this tab the keyword is not highlighted. Reference: https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5:-Library-specification#keywords --- libraries/ArduinoOTA/keywords.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/ArduinoOTA/keywords.txt b/libraries/ArduinoOTA/keywords.txt index e9f51798e..1c14d9e89 100644 --- a/libraries/ArduinoOTA/keywords.txt +++ b/libraries/ArduinoOTA/keywords.txt @@ -15,10 +15,10 @@ ArduinoOTA KEYWORD1 begin KEYWORD2 setup KEYWORD2 handle KEYWORD2 -onStart KEYWORD2 -onEnd KEYWORD2 -onError KEYWORD2 -onProgress KEYWORD2 +onStart KEYWORD2 +onEnd KEYWORD2 +onError KEYWORD2 +onProgress KEYWORD2 ####################################### # Constants (LITERAL1) From 2ffcb3e57b4c376286334d6c0e8d34218a02be56 Mon Sep 17 00:00:00 2001 From: Nathaniel Wesley Filardo Date: Sun, 27 Aug 2017 20:53:41 -0400 Subject: [PATCH 041/156] Fix exception_causes.rst formatting The RST spec does not appear to believe in intra-cell line continuation as appeared to be expected by the original author. Widen columns and unbreak words to fix output. --- doc/exception_causes.rst | 209 +++++++++++++++++---------------------- 1 file changed, 90 insertions(+), 119 deletions(-) diff --git a/doc/exception_causes.rst b/doc/exception_causes.rst index 56cebc7a9..2951c62a4 100644 --- a/doc/exception_causes.rst +++ b/doc/exception_causes.rst @@ -1,124 +1,95 @@ Exception Causes (EXCCAUSE) =========================== -+--------+------------+-----------------------------------------+-----------+--------+ -| EXCCAU | Cause Name | Cause Description | Required | EXCVAD | -| SE | | | Option | DR | -| Code | | | | Loaded | -+========+============+=========================================+===========+========+ -| 0 | IllegalIns | Illegal instruction | Exception | No | -| | tructionCa | | | | -| | use | | | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 1 | SyscallCau | SYSCALL instruction | Exception | No | -| | se | | | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 2 | Instructio | Processor internal physical address or | Exception | Yes | -| | nFetchErro | data error during instruction fetch | | | -| | rCause | | | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 3 | LoadStoreE | Processor internal physical address or | Exception | Yes | -| | rrorCause | data error during load or store | | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 4 | Level1Inte | Level-1 interrupt as indicated by set | Interrupt | No | -| | rruptCause | level-1 bits in the INTERRUPT register | | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 5 | AllocaCaus | MOVSP instruction, if caller’s | Windowed | No | -| | e | registers are not in the register file | Register | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 6 | IntegerDiv | QUOS, QUOU, REMS, or REMU divisor | 32-bit | No | -| | ideByZeroC | operand is zero | Integer | | -| | ause | | Divide | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 7 | Reserved | | | | -| | for | | | | -| | Tensilica | | | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 8 | Privileged | Attempt to execute a privileged | MMU | No | -| | Cause | operation when CRING != 0 | | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 9 | LoadStoreA | Load or store to an unaligned address | Unaligned | Yes | -| | lignmentCa | | Exception | | -| | use | | | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 10..11 | Reserved | | | | -| | for | | | | -| | Tensilica | | | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 12 | InstrPIFDa | PIF data error during instruction fetch | Processor | Yes | -| | taErrorCau | | Interface | | -| | se | | | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 13 | LoadStoreP | Synchronous PIF data error during | Processor | Yes | -| | IFDataErro | LoadStore access | Interface | | -| | rCause | | | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 14 | InstrPIFAd | PIF address error during instruction | Processor | Yes | -| | drErrorCau | fetch | Interface | | -| | se | | | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 15 | LoadStoreP | Synchronous PIF address error during | Processor | Yes | -| | IFAddrErro | LoadStore access | Interface | | -| | rCause | | | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 16 | InstTLBMis | Error during Instruction TLB refill | MMU | Yes | -| | sCause | | | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 17 | InstTLBMul | Multiple instruction TLB entries | MMU | Yes | -| | tiHitCause | matched | | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 18 | InstFetchP | An instruction fetch referenced a | MMU | Yes | -| | rivilegeCa | virtual address at a ring level less | | | -| | use | than CRING | | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 19 | Reserved | | | | -| | for | | | | -| | Tensilica | | | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 20 | InstFetchP | An instruction fetch referenced a page | Region | Yes | -| | rohibitedC | mapped with an attribute that does not | Protectio | | -| | ause | permit instruction fetch | n | | -| | | | or MMU | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 21..23 | Reserved | | | | -| | for | | | | -| | Tensilica | | | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 24 | LoadStoreT | Error during TLB refill for a load or | MMU | Yes | -| | LBMissCaus | store | | | -| | e | | | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 25 | LoadStoreT | Multiple TLB entries matched for a load | MMU | Yes | -| | LBMultiHit | or store | | | -| | Cause | | | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 26 | LoadStoreP | A load or store referenced a virtual | MMU | Yes | -| | rivilegeCa | address at a ring level less than CRING | | | -| | use | | | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 27 | Reserved | | | | -| | for | | | | -| | Tensilica | | | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 28 | LoadProhib | A load referenced a page mapped with an | Region | Yes | -| | itedCause | attribute that does not permit loads | Protectio | | -| | | | n | | -| | | | or MMU | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 29 | StoreProhi | A store referenced a page mapped with | Region | Yes | -| | bitedCause | an attribute that does not permit | Protectio | | -| | | stores | n | | -| | | | or MMU | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 30..31 | Reserved | | | | -| | for | | | | -| | Tensilica | | | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 32..39 | Coprocesso | Coprocessor n instruction when cpn | Coprocess | No | -| | rnDisabled | disabled. n varies 0..7 as the cause | or | | -| | | varies 32..39 | | | -+--------+------------+-----------------------------------------+-----------+--------+ -| 40..63 | Reserved | | | | -+--------+------------+-----------------------------------------+-----------+--------+ ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| EXCCAUSE | Cause Name | Cause Description | Required | EXCVADDR | +| Code | | | Option | Loaded | ++==========+================================+=========================================+=============+==========+ +| 0 | IllegalInstructionCause | Illegal instruction | Exception | No | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 1 | SyscallCause | SYSCALL instruction | Exception | No | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 2 | InstructionFetchErrorCause | Processor internal physical address or | Exception | Yes | +| | | data error during instruction fetch | | | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 3 | LoadStoreErrorCause | Processor internal physical address or | Exception | Yes | +| | | data error during load or store | | | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 4 | Level1InterruptCause | Level-1 interrupt as indicated by set | Interrupt | No | +| | | level-1 bits in the INTERRUPT register | | | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 5 | AllocaCause | MOVSP instruction, if caller’s | Windowed | No | +| | | registers are not in the register file | Register | | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 6 | IntegerDivideByZeroCause | QUOS, QUOU, REMS, or REMU divisor | 32-bit | No | +| | | operand is zero | Integer | | +| | | | Divide | | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 7 | Reserved for Tensilica | | | | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 8 | PrivilegedCause | Attempt to execute a privileged | MMU | No | +| | | operation when CRING != 0 | | | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 9 | LoadStoreAlignmentCause | Load or store to an unaligned address | Unaligned | Yes | +| | | | Exception | | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 10..11 | Reserved for Tensilica | | | | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 12 | InstrPIFDateErrorCause | PIF data error during instruction fetch | Processor | Yes | +| | | | Interface | | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 13 | LoadStorePIFDataErrorCause | Synchronous PIF data error during | Processor | Yes | +| | | LoadStore access | Interface | | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 14 | InstrPIFAddrErrorCause | PIF address error during instruction | Processor | Yes | +| | | fetch | Interface | | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 15 | LoadStorePIFAddrErrorCause | Synchronous PIF address error during | Processor | Yes | +| | | LoadStore access | Interface | | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 16 | InstTLBMissCause | Error during Instruction TLB refill | MMU | Yes | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 17 | InstTLBMultiHitCause | Multiple instruction TLB entries | MMU | Yes | +| | | matched | | | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 18 | InstFetchPrivilegeCause | An instruction fetch referenced a | MMU | Yes | +| | | virtual address at a ring level less | | | +| | | than CRING | | | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 19 | Reserved for Tensilica | | | | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 20 | InstFetchProhibitedCause | An instruction fetch referenced a page | Region | Yes | +| | | mapped with an attribute that does not | Protection | | +| | | permit instruction fetch | or MMU | | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 21..23 | Reserved for Tensilica | | | | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 24 | LoadStoreTLBMissCause | Error during TLB refill for a load or | MMU | Yes | +| | | store | | | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 25 | LoadStoreTLBMultiHitCause | Multiple TLB entries matched for a load | MMU | Yes | +| | | or store | | | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 26 | LoadStorePrivilegeCause | A load or store referenced a virtual | MMU | Yes | +| | | address at a ring level less than CRING | | | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 27 | Reserved for Tensilica | | | | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 28 | LoadProhibitedCause | A load referenced a page mapped with an | Region | Yes | +| | | attribute that does not permit loads | Protection | | +| | | | or MMU | | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 29 | StoreProhibitedCause | A store referenced a page mapped with | Region | Yes | +| | | an attribute that does not permit | Protection | | +| | | | or MMU | | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 30..31 | Reserved for Tensilica | | | | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 32..39 | CoprocessornDisabled | Coprocessor n instruction when cpn | Coprocessor | No | +| | | disabled. n varies 0..7 as the cause | | | +| | | varies 32..39 | | | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ +| 40..63 | Reserved | | | | ++----------+--------------------------------+-----------------------------------------+-------------+----------+ Infos from Xtensa Instruction Set Architecture (ISA) Reference Manual From 613f04c195049213b5941a593003d7548b52d3fc Mon Sep 17 00:00:00 2001 From: adams13x13 Date: Sun, 20 Aug 2017 20:52:19 +0200 Subject: [PATCH 042/156] Update WString.cpp realloc() is called with newSize > 0 (at least 16), so newbuffer==0 means the old memory was not deallocated. Therefore, the pointer should still point to the old buffer. This change should resolve issue #3516. --- cores/esp8266/WString.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/cores/esp8266/WString.cpp b/cores/esp8266/WString.cpp index c66f5da95..acd62ce9b 100644 --- a/cores/esp8266/WString.cpp +++ b/cores/esp8266/WString.cpp @@ -159,7 +159,6 @@ unsigned char String::changeBuffer(unsigned int maxStrLen) { buffer = newbuffer; return 1; } - buffer = newbuffer; return 0; } From 6ac48124bd10151cdbc5c1003e41e4483f8f1f11 Mon Sep 17 00:00:00 2001 From: me-no-dev Date: Wed, 6 Sep 2017 12:26:13 +0300 Subject: [PATCH 043/156] Update spiffs 0.3.7 to and mkspiffs 0.1.3 --- cores/esp8266/spiffs/LICENSE | 2 +- cores/esp8266/spiffs/README.md | 80 ++- cores/esp8266/spiffs/spiffs.h | 153 ++++- cores/esp8266/spiffs/spiffs_cache.c | 60 +- cores/esp8266/spiffs/spiffs_check.c | 82 +-- cores/esp8266/spiffs/spiffs_config.h | 124 ++++ cores/esp8266/spiffs/spiffs_gc.c | 130 ++-- cores/esp8266/spiffs/spiffs_hydrogen.c | 453 ++++++++++--- cores/esp8266/spiffs/spiffs_nucleus.c | 616 ++++++++++++++---- cores/esp8266/spiffs/spiffs_nucleus.h | 101 ++- .../package_esp8266com_index.template.json | 52 +- 11 files changed, 1466 insertions(+), 387 deletions(-) diff --git a/cores/esp8266/spiffs/LICENSE b/cores/esp8266/spiffs/LICENSE index e9b0c6777..5fb2427b4 100644 --- a/cores/esp8266/spiffs/LICENSE +++ b/cores/esp8266/spiffs/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2013-2015 Peter Andersson (pelleplutt1976gmail.com) +Copyright (c) 2013-2017 Peter Andersson (pelleplutt1976gmail.com) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in diff --git a/cores/esp8266/spiffs/README.md b/cores/esp8266/spiffs/README.md index 5f8efd8da..64ffcc36b 100644 --- a/cores/esp8266/spiffs/README.md +++ b/cores/esp8266/spiffs/README.md @@ -1,7 +1,9 @@ # SPIFFS (SPI Flash File System) -**V0.3.4** +**V0.3.7** -Copyright (c) 2013-2016 Peter Andersson (pelleplutt1976 at gmail.com) +[![Build Status](https://travis-ci.org/pellepl/spiffs.svg?branch=master)](https://travis-ci.org/pellepl/spiffs) + +Copyright (c) 2013-2017 Peter Andersson (pelleplutt1976 at gmail.com) For legal stuff, see [LICENSE](https://github.com/pellepl/spiffs/blob/master/LICENSE). Basically, you may do whatever you want with the source. Use, modify, sell, print it out, roll it and smoke it - as long as I won't be held responsible. @@ -21,27 +23,36 @@ Spiffs is designed with following characteristics in mind: - Wear leveling +## BUILDING + +`mkdir build; make` + +Otherwise, configure the `builddir` variable towards the top of `makefile` as something opposed to the default `build`. Sanity check on the host via `make test` and refer to `.travis.yml` for the official in-depth testing procedure. See the wiki for [integrating](https://github.com/pellepl/spiffs/wiki/Integrate-spiffs) spiffs into projects and [spiffsimg](https://github.com/nodemcu/nodemcu-firmware/tree/master/tools/spiffsimg) from [nodemcu](https://github.com/nodemcu) is a good example on the subject. + + ## FEATURES What spiffs does: - Specifically designed for low ram usage - Uses statically sized ram buffers, independent of number of files - Posix-like api: open, close, read, write, seek, stat, etc - - It can be run on any NOR flash, not only SPI flash - theoretically also on embedded flash of an microprocessor - - Multiple spiffs configurations can be run on same target - and even on same SPI flash device + - It can run on any NOR flash, not only SPI flash - theoretically also on embedded flash of a microprocessor + - Multiple spiffs configurations can run on same target - and even on same SPI flash device - Implements static wear leveling - Built in file system consistency checks + - Highly configurable What spiffs does not: - Presently, spiffs does not support directories. It produces a flat structure. Creating a file with path *tmp/myfile.txt* will create a file called *tmp/myfile.txt* instead of a *myfile.txt* under directory *tmp*. - - It is not a realtime stack. One write operation might take much longer than another. - - Poor scalability. Spiffs is intended for small memory devices - the normal sizes for SPI flashes. Going beyond ~128MB is probably a bad idea. This is a side effect of the design goal to use as little ram as possible. + - It is not a realtime stack. One write operation might last much longer than another. + - Poor scalability. Spiffs is intended for small memory devices - the normal sizes for SPI flashes. Going beyond ~128Mbyte is probably a bad idea. This is a side effect of the design goal to use as little ram as possible. - Presently, it does not detect or handle bad blocks. + - One configuration, one binary. There's no generic spiffs binary that handles all types of configurations. ## MORE INFO -See the [wiki](https://github.com/pellepl/spiffs/wiki) for configuring, integrating and using spiffs. +See the [wiki](https://github.com/pellepl/spiffs/wiki) for [configuring](https://github.com/pellepl/spiffs/wiki/Configure-spiffs), [integrating](https://github.com/pellepl/spiffs/wiki/Integrate-spiffs), [using](https://github.com/pellepl/spiffs/wiki/Using-spiffs), and [optimizing](https://github.com/pellepl/spiffs/wiki/Performance-and-Optimizing) spiffs. For design, see [docs/TECH_SPEC](https://github.com/pellepl/spiffs/blob/master/docs/TECH_SPEC). @@ -49,6 +60,61 @@ For a generic spi flash driver, see [this](https://github.com/pellepl/spiflash_d ## HISTORY +### 0.3.7 +- fixed prevent seeking to negative offsets #158 +- fixed file descriptor offsets not updated for multiple fds on same file #157 +- fixed cache page not closed for removed files #156 +- fixed a lseek bug when seeking exactly to end of a fully indexed first level LUT #148 +- fixed wear leveling issue #145 +- fixed attempt to write out of bounds in flash #130, +- set file offset when seeking over end #121 (thanks @sensslen) +- fixed seeking in virgin files #120 (thanks @sensslen) +- Optional file metadata #128 (thanks @cesanta) +- AFL testing framework #100 #143 (thanks @pjsg) +- Testframe updates + +New API functions: +- `SPIFFS_update_meta, SPIFFS_fupdate_meta` - updates metadata for a file + +New config defines: +- `SPIFFS_OBJ_META_LEN` - enable possibility to add extra metadata to files + +### 0.3.6 +- Fix range bug in index memory mapping #98 +- Add index memory mapping #97 +- Optimize SPIFFS_read for large files #96 +- Add temporal cache for opening files #95 +- More robust gc #93 (thanks @dismirlian) +- Fixed a double write of same data in certain cache situations +- Fixed an open bug in READ_ONLY builds +- File not visible in SPIFFS_readdir #90 (thanks @benpicco-tmp) +- Cache load code cleanup #92 (thanks @niclash) +- Fixed lock/unlock asymmetry #88 #87 (thanks @JackJefferson, @dpruessner) +- Testframe updates + +New API functions: +- `SPIFFS_ix_map` - map index meta data to memory for a file +- `SPIFFS_ix_unmap` - unmaps index meta data for a file +- `SPIFFS_ix_remap` - changes file offset for index metadata map +- `SPIFFS_bytes_to_ix_map_entries` - utility, get length of needed vector for given amount of bytes +- `SPIFFS_ix_map_entries_to_bytes` - utility, get number of bytes a vector can represent given length + +New config defines: +- `SPIFFS_IX_MAP` - enable possibility to map index meta data to memory for reading faster +- `SPIFFS_TEMPORAL_FD_CACHE` - enable temporal cache for opening files faster +- `SPIFFS_TEMPORAL_CACHE_HIT_SCORE` - for tuning the temporal cache + +### 0.3.5 +- Fixed a bug in fs check +- API returns actual error codes #84) (thanks @Nails) +- Fix compiler warnings for non-gcc #83 #81 (thanks @Nails) +- Unable to recover from full fs #82 (thanks @rojer) +- Define SPIFFS_O_* flags #80 +- Problem with long filenames #79 (thanks @psjg) +- Duplicate file name bug fix #74 (thanks @igrr) +- SPIFFS_eof and SPIFFS_tell return wrong value #72 (thanks @ArtemPisarenko) +- Bunch of testframe updates #77 #78 #86 (thanks @dpreussner, @psjg a.o) + ### 0.3.4 - Added user callback file func. - Fixed a stat bug with obj id. diff --git a/cores/esp8266/spiffs/spiffs.h b/cores/esp8266/spiffs/spiffs.h index c625d9315..534c3df8b 100644 --- a/cores/esp8266/spiffs/spiffs.h +++ b/cores/esp8266/spiffs/spiffs.h @@ -54,6 +54,15 @@ extern "C" { #define SPIFFS_ERR_RO_ABORTED_OPERATION -10033 #define SPIFFS_ERR_PROBE_TOO_FEW_BLOCKS -10034 #define SPIFFS_ERR_PROBE_NOT_A_FS -10035 +#define SPIFFS_ERR_NAME_TOO_LONG -10036 + +#define SPIFFS_ERR_IX_MAP_UNMAPPED -10037 +#define SPIFFS_ERR_IX_MAP_MAPPED -10038 +#define SPIFFS_ERR_IX_MAP_BAD_RANGE -10039 + +#define SPIFFS_ERR_SEEK_BOUNDS -10040 + + #define SPIFFS_ERR_INTERNAL -10050 #define SPIFFS_ERR_TEST -10100 @@ -104,7 +113,7 @@ typedef enum { SPIFFS_CHECK_FIX_LOOKUP, SPIFFS_CHECK_DELETE_ORPHANED_INDEX, SPIFFS_CHECK_DELETE_PAGE, - SPIFFS_CHECK_DELETE_BAD_FILE, + SPIFFS_CHECK_DELETE_BAD_FILE } spiffs_check_report; /* file system check callback function */ @@ -123,7 +132,7 @@ typedef enum { /* the file has been updated or moved to another page */ SPIFFS_CB_UPDATED, /* the file has been deleted */ - SPIFFS_CB_DELETED, + SPIFFS_CB_DELETED } spiffs_fileop_type; /* file system listener callback function */ @@ -131,7 +140,7 @@ typedef void (*spiffs_file_callback)(struct spiffs_t *fs, spiffs_fileop_type op, #ifndef SPIFFS_DBG #define SPIFFS_DBG(...) \ - print(__VA_ARGS__) + printf(__VA_ARGS__) #endif #ifndef SPIFFS_GC_DBG #define SPIFFS_GC_DBG(...) printf(__VA_ARGS__) @@ -145,20 +154,28 @@ typedef void (*spiffs_file_callback)(struct spiffs_t *fs, spiffs_fileop_type op, /* Any write to the filehandle is appended to end of the file */ #define SPIFFS_APPEND (1<<0) +#define SPIFFS_O_APPEND SPIFFS_APPEND /* If the opened file exists, it will be truncated to zero length before opened */ #define SPIFFS_TRUNC (1<<1) +#define SPIFFS_O_TRUNC SPIFFS_TRUNC /* If the opened file does not exist, it will be created before opened */ #define SPIFFS_CREAT (1<<2) +#define SPIFFS_O_CREAT SPIFFS_CREAT /* The opened file may only be read */ #define SPIFFS_RDONLY (1<<3) -/* The opened file may only be writted */ +#define SPIFFS_O_RDONLY SPIFFS_RDONLY +/* The opened file may only be written */ #define SPIFFS_WRONLY (1<<4) -/* The opened file may be both read and writted */ +#define SPIFFS_O_WRONLY SPIFFS_WRONLY +/* The opened file may be both read and written */ #define SPIFFS_RDWR (SPIFFS_RDONLY | SPIFFS_WRONLY) -/* Any writes to the filehandle will never be cached */ +#define SPIFFS_O_RDWR SPIFFS_RDWR +/* Any writes to the filehandle will never be cached but flushed directly */ #define SPIFFS_DIRECT (1<<5) -/* If SPIFFS_CREAT and SPIFFS_EXCL are set, SPIFFS_open() shall fail if the file exists */ +#define SPIFFS_O_DIRECT SPIFFS_DIRECT +/* If SPIFFS_O_CREAT and SPIFFS_O_EXCL are set, SPIFFS_open() shall fail if the file exists */ #define SPIFFS_EXCL (1<<6) +#define SPIFFS_O_EXCL SPIFFS_EXCL #define SPIFFS_SEEK_SET (0) #define SPIFFS_SEEK_CUR (1) @@ -283,6 +300,9 @@ typedef struct { spiffs_obj_type type; spiffs_page_ix pix; u8_t name[SPIFFS_OBJ_NAME_LEN]; +#if SPIFFS_OBJ_META_LEN + u8_t meta[SPIFFS_OBJ_META_LEN]; +#endif } spiffs_stat; struct spiffs_dirent { @@ -291,6 +311,9 @@ struct spiffs_dirent { spiffs_obj_type type; u32_t size; spiffs_page_ix pix; +#if SPIFFS_OBJ_META_LEN + u8_t meta[SPIFFS_OBJ_META_LEN]; +#endif }; typedef struct { @@ -299,6 +322,21 @@ typedef struct { int entry; } spiffs_DIR; +#if SPIFFS_IX_MAP + +typedef struct { + // buffer with looked up data pixes + spiffs_page_ix *map_buf; + // precise file byte offset + u32_t offset; + // start data span index of lookup buffer + spiffs_span_ix start_spix; + // end data span index of lookup buffer + spiffs_span_ix end_spix; +} spiffs_ix_map; + +#endif + // functions #if SPIFFS_USE_MAGIC && SPIFFS_USE_MAGIC_LENGTH && SPIFFS_SINGLETON==0 @@ -375,8 +413,8 @@ s32_t SPIFFS_creat(spiffs *fs, const char *path, spiffs_mode mode); * @param fs the file system struct * @param path the path of the new file * @param flags the flags for the open command, can be combinations of - * SPIFFS_APPEND, SPIFFS_TRUNC, SPIFFS_CREAT, SPIFFS_RD_ONLY, - * SPIFFS_WR_ONLY, SPIFFS_RDWR, SPIFFS_DIRECT + * SPIFFS_O_APPEND, SPIFFS_O_TRUNC, SPIFFS_O_CREAT, SPIFFS_O_RDONLY, + * SPIFFS_O_WRONLY, SPIFFS_O_RDWR, SPIFFS_O_DIRECT, SPIFFS_O_EXCL * @param mode ignored, for posix compliance */ spiffs_file SPIFFS_open(spiffs *fs, const char *path, spiffs_flags flags, spiffs_mode mode); @@ -496,6 +534,24 @@ s32_t SPIFFS_close(spiffs *fs, spiffs_file fh); */ s32_t SPIFFS_rename(spiffs *fs, const char *old, const char *newPath); +#if SPIFFS_OBJ_META_LEN +/** + * Updates file's metadata + * @param fs the file system struct + * @param path path to the file + * @param meta new metadata. must be SPIFFS_OBJ_META_LEN bytes long. + */ +s32_t SPIFFS_update_meta(spiffs *fs, const char *name, const void *meta); + +/** + * Updates file's metadata + * @param fs the file system struct + * @param fh file handle of the file + * @param meta new metadata. must be SPIFFS_OBJ_META_LEN bytes long. + */ +s32_t SPIFFS_fupdate_meta(spiffs *fs, spiffs_file fh, const void *meta); +#endif + /** * Returns last error of last file operation. * @param fs the file system struct @@ -648,6 +704,85 @@ s32_t SPIFFS_tell(spiffs *fs, spiffs_file fh); */ s32_t SPIFFS_set_file_callback_func(spiffs *fs, spiffs_file_callback cb_func); +#if SPIFFS_IX_MAP + +/** + * Maps the first level index lookup to a given memory map. + * This will make reading big files faster, as the memory map will be used for + * looking up data pages instead of searching for the indices on the physical + * medium. When mapping, all affected indicies are found and the information is + * copied to the array. + * Whole file or only parts of it may be mapped. The index map will cover file + * contents from argument offset until and including arguments (offset+len). + * It is valid to map a longer range than the current file size. The map will + * then be populated when the file grows. + * On garbage collections and file data page movements, the map array will be + * automatically updated. Do not tamper with the map array, as this contains + * the references to the data pages. Modifying it from outside will corrupt any + * future readings using this file descriptor. + * The map will no longer be used when the file descriptor closed or the file + * is unmapped. + * This can be useful to get faster and more deterministic timing when reading + * large files, or when seeking and reading a lot within a file. + * @param fs the file system struct + * @param fh the file handle of the file to map + * @param map a spiffs_ix_map struct, describing the index map + * @param offset absolute file offset where to start the index map + * @param len length of the mapping in actual file bytes + * @param map_buf the array buffer for the look up data - number of required + * elements in the array can be derived from function + * SPIFFS_bytes_to_ix_map_entries given the length + */ +s32_t SPIFFS_ix_map(spiffs *fs, spiffs_file fh, spiffs_ix_map *map, + u32_t offset, u32_t len, spiffs_page_ix *map_buf); + +/** + * Unmaps the index lookup from this filehandle. All future readings will + * proceed as normal, requiring reading of the first level indices from + * physical media. + * The map and map buffer given in function SPIFFS_ix_map will no longer be + * referenced by spiffs. + * It is not strictly necessary to unmap a file before closing it, as closing + * a file will automatically unmap it. + * @param fs the file system struct + * @param fh the file handle of the file to unmap + */ +s32_t SPIFFS_ix_unmap(spiffs *fs, spiffs_file fh); + +/** + * Moves the offset for the index map given in function SPIFFS_ix_map. Parts or + * all of the map buffer will repopulated. + * @param fs the file system struct + * @param fh the mapped file handle of the file to remap + * @param offset new absolute file offset where to start the index map + */ +s32_t SPIFFS_ix_remap(spiffs *fs, spiffs_file fh, u32_t offs); + +/** + * Utility function to get number of spiffs_page_ix entries a map buffer must + * contain on order to map given amount of file data in bytes. + * See function SPIFFS_ix_map and SPIFFS_ix_map_entries_to_bytes. + * @param fs the file system struct + * @param bytes number of file data bytes to map + * @return needed number of elements in a spiffs_page_ix array needed to + * map given amount of bytes in a file + */ +s32_t SPIFFS_bytes_to_ix_map_entries(spiffs *fs, u32_t bytes); + +/** + * Utility function to amount of file data bytes that can be mapped when + * mapping a file with buffer having given number of spiffs_page_ix entries. + * See function SPIFFS_ix_map and SPIFFS_bytes_to_ix_map_entries. + * @param fs the file system struct + * @param map_page_ix_entries number of entries in a spiffs_page_ix array + * @return amount of file data in bytes that can be mapped given a map + * buffer having given amount of spiffs_page_ix entries + */ +s32_t SPIFFS_ix_map_entries_to_bytes(spiffs *fs, u32_t map_page_ix_entries); + +#endif // SPIFFS_IX_MAP + + #if SPIFFS_TEST_VISUALISATION /** * Prints out a visualization of the filesystem. diff --git a/cores/esp8266/spiffs/spiffs_cache.c b/cores/esp8266/spiffs/spiffs_cache.c index ea9bc82c5..e7cd4b737 100644 --- a/cores/esp8266/spiffs/spiffs_cache.c +++ b/cores/esp8266/spiffs/spiffs_cache.c @@ -20,12 +20,12 @@ static spiffs_cache_page *spiffs_cache_page_get(spiffs *fs, spiffs_page_ix pix) if ((cache->cpage_use_map & (1<flags & SPIFFS_CACHE_FLAG_TYPE_WR) == 0 && cp->pix == pix ) { - SPIFFS_CACHE_DBG("CACHE_GET: have cache page %i for %04x\n", i, pix); + //SPIFFS_CACHE_DBG("CACHE_GET: have cache page "_SPIPRIi" for "_SPIPRIpg"\n", i, pix); cp->last_access = cache->last_access; return cp; } } - //SPIFFS_CACHE_DBG("CACHE_GET: no cache for %04x\n", pix); + //SPIFFS_CACHE_DBG("CACHE_GET: no cache for "_SPIPRIpg"\n", pix); return 0; } @@ -39,17 +39,20 @@ static s32_t spiffs_cache_page_free(spiffs *fs, int ix, u8_t write_back) { (cp->flags & SPIFFS_CACHE_FLAG_TYPE_WR) == 0 && (cp->flags & SPIFFS_CACHE_FLAG_DIRTY)) { u8_t *mem = spiffs_get_cache_page(fs, cache, ix); + SPIFFS_CACHE_DBG("CACHE_FREE: write cache page "_SPIPRIi" pix "_SPIPRIpg"\n", ix, cp->pix); res = SPIFFS_HAL_WRITE(fs, SPIFFS_PAGE_TO_PADDR(fs, cp->pix), SPIFFS_CFG_LOG_PAGE_SZ(fs), mem); } - cp->flags = 0; - cache->cpage_use_map &= ~(1 << ix); - +#if SPIFFS_CACHE_WR if (cp->flags & SPIFFS_CACHE_FLAG_TYPE_WR) { - SPIFFS_CACHE_DBG("CACHE_FREE: free cache page %i objid %04x\n", ix, cp->obj_id); - } else { - SPIFFS_CACHE_DBG("CACHE_FREE: free cache page %i pix %04x\n", ix, cp->pix); + SPIFFS_CACHE_DBG("CACHE_FREE: free cache page "_SPIPRIi" objid "_SPIPRIid"\n", ix, cp->obj_id); + } else +#endif + { + SPIFFS_CACHE_DBG("CACHE_FREE: free cache page "_SPIPRIi" pix "_SPIPRIpg"\n", ix, cp->pix); } + cache->cpage_use_map &= ~(1 << ix); + cp->flags = 0; } return res; @@ -98,7 +101,7 @@ static spiffs_cache_page *spiffs_cache_page_allocate(spiffs *fs) { spiffs_cache_page *cp = spiffs_get_cache_page_hdr(fs, cache, i); cache->cpage_use_map |= (1<last_access = cache->last_access; - SPIFFS_CACHE_DBG("CACHE_ALLO: allocated cache page %i\n", i); + //SPIFFS_CACHE_DBG("CACHE_ALLO: allocated cache page "_SPIPRIi"\n", i); return cp; } } @@ -130,10 +133,13 @@ s32_t spiffs_phys_rd( spiffs_cache_page *cp = spiffs_cache_page_get(fs, SPIFFS_PADDR_TO_PAGE(fs, addr)); cache->last_access++; if (cp) { + // we've already got one, you see #if SPIFFS_CACHE_STATS fs->cache_hits++; #endif cp->last_access = cache->last_access; + u8_t *mem = spiffs_get_cache_page(fs, cache, cp->ix); + _SPIFFS_MEMCPY(dst, &mem[SPIFFS_PADDR_TO_PAGE_OFFSET(fs, addr)], len); } else { if ((op & SPIFFS_OP_TYPE_MASK) == SPIFFS_OP_T_OBJ_LU2) { // for second layer lookup functions, we do not cache in order to prevent shredding @@ -142,22 +148,35 @@ s32_t spiffs_phys_rd( #if SPIFFS_CACHE_STATS fs->cache_misses++; #endif + // this operation will always free one cache page (unless all already free), + // the result code stems from the write operation of the possibly freed cache page res = spiffs_cache_page_remove_oldest(fs, SPIFFS_CACHE_FLAG_TYPE_WR, 0); + cp = spiffs_cache_page_allocate(fs); if (cp) { cp->flags = SPIFFS_CACHE_FLAG_WRTHRU; cp->pix = SPIFFS_PADDR_TO_PAGE(fs, addr); - } - s32_t res2 = SPIFFS_HAL_READ(fs, - addr - SPIFFS_PADDR_TO_PAGE_OFFSET(fs, addr), - SPIFFS_CFG_LOG_PAGE_SZ(fs), - spiffs_get_cache_page(fs, cache, cp->ix)); - if (res2 != SPIFFS_OK) { - res = res2; + SPIFFS_CACHE_DBG("CACHE_ALLO: allocated cache page "_SPIPRIi" for pix "_SPIPRIpg "\n", cp->ix, cp->pix); + + s32_t res2 = SPIFFS_HAL_READ(fs, + addr - SPIFFS_PADDR_TO_PAGE_OFFSET(fs, addr), + SPIFFS_CFG_LOG_PAGE_SZ(fs), + spiffs_get_cache_page(fs, cache, cp->ix)); + if (res2 != SPIFFS_OK) { + // honor read failure before possible write failure (bad idea?) + res = res2; + } + u8_t *mem = spiffs_get_cache_page(fs, cache, cp->ix); + _SPIFFS_MEMCPY(dst, &mem[SPIFFS_PADDR_TO_PAGE_OFFSET(fs, addr)], len); + } else { + // this will never happen, last resort for sake of symmetry + s32_t res2 = SPIFFS_HAL_READ(fs, addr, len, dst); + if (res2 != SPIFFS_OK) { + // honor read failure before possible write failure (bad idea?) + res = res2; + } } } - u8_t *mem = spiffs_get_cache_page(fs, cache, cp->ix); - memcpy(dst, &mem[SPIFFS_PADDR_TO_PAGE_OFFSET(fs, addr)], len); return res; } @@ -186,7 +205,7 @@ s32_t spiffs_phys_wr( } u8_t *mem = spiffs_get_cache_page(fs, cache, cp->ix); - memcpy(&mem[SPIFFS_PADDR_TO_PAGE_OFFSET(fs, addr)], src, len); + _SPIFFS_MEMCPY(&mem[SPIFFS_PADDR_TO_PAGE_OFFSET(fs, addr)], src, len); cache->last_access++; cp->last_access = cache->last_access; @@ -241,6 +260,7 @@ spiffs_cache_page *spiffs_cache_page_allocate_by_fd(spiffs *fs, spiffs_fd *fd) { cp->flags = SPIFFS_CACHE_FLAG_TYPE_WR; cp->obj_id = fd->obj_id; fd->cache_page = cp; + SPIFFS_CACHE_DBG("CACHE_ALLO: allocated cache page "_SPIPRIi" for fd "_SPIPRIfd ":"_SPIPRIid "\n", cp->ix, fd->file_nbr, fd->obj_id); return cp; } @@ -284,7 +304,7 @@ void spiffs_cache_init(spiffs *fs) { cache.cpage_use_map = 0xffffffff; cache.cpage_use_mask = cache_mask; - memcpy(fs->cache, &cache, sizeof(spiffs_cache)); + _SPIFFS_MEMCPY(fs->cache, &cache, sizeof(spiffs_cache)); spiffs_cache *c = spiffs_get_cache(fs); diff --git a/cores/esp8266/spiffs/spiffs_check.c b/cores/esp8266/spiffs/spiffs_check.c index 8dd6665bd..dde85eff3 100644 --- a/cores/esp8266/spiffs/spiffs_check.c +++ b/cores/esp8266/spiffs/spiffs_check.c @@ -182,7 +182,7 @@ static s32_t spiffs_lookup_check_validate(spiffs *fs, spiffs_obj_id lu_obj_id, s if (((lu_obj_id == SPIFFS_OBJ_ID_DELETED) && (p_hdr->flags & SPIFFS_PH_FLAG_DELET)) || ((lu_obj_id == SPIFFS_OBJ_ID_FREE) && (p_hdr->flags & SPIFFS_PH_FLAG_USED) == 0)) { // look up entry deleted / free but used in page header - SPIFFS_CHECK_DBG("LU: pix %04x deleted/free in lu but not on page\n", cur_pix); + SPIFFS_CHECK_DBG("LU: pix "_SPIPRIpg" deleted/free in lu but not on page\n", cur_pix); *reload_lu = 1; delete_page = 1; if (p_hdr->flags & SPIFFS_PH_FLAG_INDEX) { @@ -199,14 +199,14 @@ static s32_t spiffs_lookup_check_validate(spiffs *fs, spiffs_obj_id lu_obj_id, s // copy page to new place and re-write the object index to new place spiffs_page_ix new_pix; res = spiffs_rewrite_page(fs, cur_pix, p_hdr, &new_pix); - SPIFFS_CHECK_DBG("LU: FIXUP: data page not found elsewhere, rewriting %04x to new page %04x\n", cur_pix, new_pix); + SPIFFS_CHECK_DBG("LU: FIXUP: data page not found elsewhere, rewriting "_SPIPRIpg" to new page "_SPIPRIpg"\n", cur_pix, new_pix); SPIFFS_CHECK_RES(res); *reload_lu = 1; - SPIFFS_CHECK_DBG("LU: FIXUP: %04x rewritten to %04x, affected objix_pix %04x\n", cur_pix, new_pix, objix_pix); + SPIFFS_CHECK_DBG("LU: FIXUP: "_SPIPRIpg" rewritten to "_SPIPRIpg", affected objix_pix "_SPIPRIpg"\n", cur_pix, new_pix, objix_pix); res = spiffs_rewrite_index(fs, p_hdr->obj_id, p_hdr->span_ix, new_pix, objix_pix); if (res <= _SPIFFS_ERR_CHECK_FIRST && res > _SPIFFS_ERR_CHECK_LAST) { // index bad also, cannot mend this file - SPIFFS_CHECK_DBG("LU: FIXUP: index bad %i, cannot mend!\n", res); + SPIFFS_CHECK_DBG("LU: FIXUP: index bad "_SPIPRIi", cannot mend!\n", res); res = spiffs_page_delete(fs, new_pix); SPIFFS_CHECK_RES(res); res = spiffs_delete_obj_lazy(fs, p_hdr->obj_id); @@ -229,7 +229,7 @@ static s32_t spiffs_lookup_check_validate(spiffs *fs, spiffs_obj_id lu_obj_id, s // got a data page also, assume lu corruption only, rewrite to new page spiffs_page_ix new_pix; res = spiffs_rewrite_page(fs, cur_pix, p_hdr, &new_pix); - SPIFFS_CHECK_DBG("LU: FIXUP: ix page with data not found elsewhere, rewriting %04x to new page %04x\n", cur_pix, new_pix); + SPIFFS_CHECK_DBG("LU: FIXUP: ix page with data not found elsewhere, rewriting "_SPIPRIpg" to new page "_SPIPRIpg"\n", cur_pix, new_pix); SPIFFS_CHECK_RES(res); *reload_lu = 1; CHECK_CB(fs, SPIFFS_CHECK_LOOKUP, SPIFFS_CHECK_FIX_LOOKUP, p_hdr->obj_id, p_hdr->span_ix); @@ -242,7 +242,7 @@ static s32_t spiffs_lookup_check_validate(spiffs *fs, spiffs_obj_id lu_obj_id, s if (lu_obj_id != SPIFFS_OBJ_ID_FREE && lu_obj_id != SPIFFS_OBJ_ID_DELETED) { // look up entry used if ((p_hdr->obj_id | SPIFFS_OBJ_ID_IX_FLAG) != (lu_obj_id | SPIFFS_OBJ_ID_IX_FLAG)) { - SPIFFS_CHECK_DBG("LU: pix %04x differ in obj_id lu:%04x ph:%04x\n", cur_pix, lu_obj_id, p_hdr->obj_id); + SPIFFS_CHECK_DBG("LU: pix "_SPIPRIpg" differ in obj_id lu:"_SPIPRIid" ph:"_SPIPRIid"\n", cur_pix, lu_obj_id, p_hdr->obj_id); delete_page = 1; if ((p_hdr->flags & SPIFFS_PH_FLAG_DELET) == 0 || (p_hdr->flags & SPIFFS_PH_FLAG_FINAL) || @@ -265,7 +265,7 @@ static s32_t spiffs_lookup_check_validate(spiffs *fs, spiffs_obj_id lu_obj_id, s res = spiffs_rewrite_index(fs, p_hdr->obj_id, p_hdr->span_ix, new_pix, objix_pix); if (res <= _SPIFFS_ERR_CHECK_FIRST && res > _SPIFFS_ERR_CHECK_LAST) { // index bad also, cannot mend this file - SPIFFS_CHECK_DBG("LU: FIXUP: index bad %i, cannot mend!\n", res); + SPIFFS_CHECK_DBG("LU: FIXUP: index bad "_SPIPRIi", cannot mend!\n", res); res = spiffs_page_delete(fs, new_pix); SPIFFS_CHECK_RES(res); res = spiffs_delete_obj_lazy(fs, p_hdr->obj_id); @@ -321,7 +321,7 @@ static s32_t spiffs_lookup_check_validate(spiffs *fs, spiffs_obj_id lu_obj_id, s // rewrite as obj_id_ph new_ph.obj_id = p_hdr->obj_id | SPIFFS_OBJ_ID_IX_FLAG; res = spiffs_rewrite_page(fs, cur_pix, &new_ph, &new_pix); - SPIFFS_CHECK_DBG("LU: FIXUP: rewrite page %04x as %04x to pix %04x\n", cur_pix, new_ph.obj_id, new_pix); + SPIFFS_CHECK_DBG("LU: FIXUP: rewrite page "_SPIPRIpg" as "_SPIPRIid" to pix "_SPIPRIpg"\n", cur_pix, new_ph.obj_id, new_pix); CHECK_CB(fs, SPIFFS_CHECK_LOOKUP, SPIFFS_CHECK_FIX_LOOKUP, p_hdr->obj_id, p_hdr->span_ix); SPIFFS_CHECK_RES(res); *reload_lu = 1; @@ -330,7 +330,7 @@ static s32_t spiffs_lookup_check_validate(spiffs *fs, spiffs_obj_id lu_obj_id, s // got a data page for look up obj id // rewrite as obj_id_lu new_ph.obj_id = lu_obj_id | SPIFFS_OBJ_ID_IX_FLAG; - SPIFFS_CHECK_DBG("LU: FIXUP: rewrite page %04x as %04x\n", cur_pix, new_ph.obj_id); + SPIFFS_CHECK_DBG("LU: FIXUP: rewrite page "_SPIPRIpg" as "_SPIPRIid"\n", cur_pix, new_ph.obj_id); CHECK_CB(fs, SPIFFS_CHECK_LOOKUP, SPIFFS_CHECK_FIX_LOOKUP, p_hdr->obj_id, p_hdr->span_ix); res = spiffs_rewrite_page(fs, cur_pix, &new_ph, &new_pix); SPIFFS_CHECK_RES(res); @@ -344,7 +344,7 @@ static s32_t spiffs_lookup_check_validate(spiffs *fs, spiffs_obj_id lu_obj_id, s } } else if (((lu_obj_id & SPIFFS_OBJ_ID_IX_FLAG) && (p_hdr->flags & SPIFFS_PH_FLAG_INDEX)) || ((lu_obj_id & SPIFFS_OBJ_ID_IX_FLAG) == 0 && (p_hdr->flags & SPIFFS_PH_FLAG_INDEX) == 0)) { - SPIFFS_CHECK_DBG("LU: %04x lu/page index marking differ\n", cur_pix); + SPIFFS_CHECK_DBG("LU: "_SPIPRIpg" lu/page index marking differ\n", cur_pix); spiffs_page_ix data_pix, objix_pix_d; // see if other data page exists for given obj id and span index res = spiffs_obj_lu_find_id_and_span(fs, lu_obj_id & ~SPIFFS_OBJ_ID_IX_FLAG, p_hdr->span_ix, cur_pix, &data_pix); @@ -402,10 +402,10 @@ static s32_t spiffs_lookup_check_validate(spiffs *fs, spiffs_obj_id lu_obj_id, s } } else if ((p_hdr->flags & SPIFFS_PH_FLAG_DELET) == 0) { - SPIFFS_CHECK_DBG("LU: pix %04x busy in lu but deleted on page\n", cur_pix); + SPIFFS_CHECK_DBG("LU: pix "_SPIPRIpg" busy in lu but deleted on page\n", cur_pix); delete_page = 1; } else if ((p_hdr->flags & SPIFFS_PH_FLAG_FINAL)) { - SPIFFS_CHECK_DBG("LU: pix %04x busy but not final\n", cur_pix); + SPIFFS_CHECK_DBG("LU: pix "_SPIPRIpg" busy but not final\n", cur_pix); // page can be removed if not referenced by object index *reload_lu = 1; res = spiffs_object_get_data_page_index_reference(fs, lu_obj_id, p_hdr->span_ix, &ref_pix, &objix_pix); @@ -433,7 +433,7 @@ static s32_t spiffs_lookup_check_validate(spiffs *fs, spiffs_obj_id lu_obj_id, s } if (delete_page) { - SPIFFS_CHECK_DBG("LU: FIXUP: deleting page %04x\n", cur_pix); + SPIFFS_CHECK_DBG("LU: FIXUP: deleting page "_SPIPRIpg"\n", cur_pix); CHECK_CB(fs, SPIFFS_CHECK_LOOKUP, SPIFFS_CHECK_DELETE_PAGE, cur_pix, 0); res = spiffs_page_delete(fs, cur_pix); SPIFFS_CHECK_RES(res); @@ -530,7 +530,7 @@ static s32_t spiffs_page_consistency_check_i(spiffs *fs) { spiffs_page_ix cur_pix = SPIFFS_OBJ_LOOKUP_PAGES(fs) + SPIFFS_PAGES_PER_BLOCK(fs) * cur_block; while (!restart && cur_pix < SPIFFS_PAGES_PER_BLOCK(fs) * (cur_block+1)) { //if ((cur_pix & 0xff) == 0) - // SPIFFS_CHECK_DBG("PA: processing pix %08x, block %08x of pix %08x, block %08x\n", + // SPIFFS_CHECK_DBG("PA: processing pix "_SPIPRIpg", block "_SPIPRIbl" of pix "_SPIPRIpg", block "_SPIPRIbl"\n", // cur_pix, cur_block, SPIFFS_PAGES_PER_BLOCK(fs) * fs->block_count, fs->block_count); // read header @@ -589,7 +589,7 @@ static s32_t spiffs_page_consistency_check_i(spiffs *fs) { || (rpix_within_range && SPIFFS_IS_LOOKUP_PAGE(fs, rpix))) { // bad reference - SPIFFS_CHECK_DBG("PA: pix %04x bad pix / LU referenced from page %04x\n", + SPIFFS_CHECK_DBG("PA: pix "_SPIPRIpg"x bad pix / LU referenced from page "_SPIPRIpg"\n", rpix, cur_pix); // check for data page elsewhere spiffs_page_ix data_pix; @@ -608,15 +608,15 @@ static s32_t spiffs_page_consistency_check_i(spiffs *fs) { new_ph.span_ix = data_spix_offset + i; res = spiffs_page_allocate_data(fs, new_ph.obj_id, &new_ph, 0, 0, 0, 1, &data_pix); SPIFFS_CHECK_RES(res); - SPIFFS_CHECK_DBG("PA: FIXUP: found no existing data page, created new @ %04x\n", data_pix); + SPIFFS_CHECK_DBG("PA: FIXUP: found no existing data page, created new @ "_SPIPRIpg"\n", data_pix); } // remap index - SPIFFS_CHECK_DBG("PA: FIXUP: rewriting index pix %04x\n", cur_pix); + SPIFFS_CHECK_DBG("PA: FIXUP: rewriting index pix "_SPIPRIpg"\n", cur_pix); res = spiffs_rewrite_index(fs, objix_p_hdr->obj_id | SPIFFS_OBJ_ID_IX_FLAG, data_spix_offset + i, data_pix, cur_pix); if (res <= _SPIFFS_ERR_CHECK_FIRST && res > _SPIFFS_ERR_CHECK_LAST) { // index bad also, cannot mend this file - SPIFFS_CHECK_DBG("PA: FIXUP: index bad %i, cannot mend - delete object\n", res); + SPIFFS_CHECK_DBG("PA: FIXUP: index bad "_SPIPRIi", cannot mend - delete object\n", res); CHECK_CB(fs, SPIFFS_CHECK_PAGE, SPIFFS_CHECK_DELETE_BAD_FILE, objix_p_hdr->obj_id, 0); // delete file res = spiffs_page_delete(fs, cur_pix); @@ -640,7 +640,7 @@ static s32_t spiffs_page_consistency_check_i(spiffs *fs) { rp_hdr.span_ix != data_spix_offset + i || (rp_hdr.flags & (SPIFFS_PH_FLAG_DELET | SPIFFS_PH_FLAG_INDEX | SPIFFS_PH_FLAG_USED)) != (SPIFFS_PH_FLAG_DELET | SPIFFS_PH_FLAG_INDEX)) { - SPIFFS_CHECK_DBG("PA: pix %04x has inconsistent page header ix id/span:%04x/%04x, ref id/span:%04x/%04x flags:%02x\n", + SPIFFS_CHECK_DBG("PA: pix "_SPIPRIpg" has inconsistent page header ix id/span:"_SPIPRIid"/"_SPIPRIsp", ref id/span:"_SPIPRIid"/"_SPIPRIsp" flags:"_SPIPRIfl"\n", rpix, p_hdr.obj_id & ~SPIFFS_OBJ_ID_IX_FLAG, data_spix_offset + i, rp_hdr.obj_id, rp_hdr.span_ix, rp_hdr.flags); // try finding correct page @@ -654,19 +654,19 @@ static s32_t spiffs_page_consistency_check_i(spiffs *fs) { SPIFFS_CHECK_RES(res); if (data_pix == 0) { // not found, this index is badly borked - SPIFFS_CHECK_DBG("PA: FIXUP: index bad, delete object id %04x\n", p_hdr.obj_id); + SPIFFS_CHECK_DBG("PA: FIXUP: index bad, delete object id "_SPIPRIid"\n", p_hdr.obj_id); CHECK_CB(fs, SPIFFS_CHECK_PAGE, SPIFFS_CHECK_DELETE_BAD_FILE, p_hdr.obj_id, 0); res = spiffs_delete_obj_lazy(fs, p_hdr.obj_id); SPIFFS_CHECK_RES(res); break; } else { // found it, so rewrite index - SPIFFS_CHECK_DBG("PA: FIXUP: found correct data pix %04x, rewrite ix pix %04x id %04x\n", + SPIFFS_CHECK_DBG("PA: FIXUP: found correct data pix "_SPIPRIpg", rewrite ix pix "_SPIPRIpg" id "_SPIPRIid"\n", data_pix, cur_pix, p_hdr.obj_id); res = spiffs_rewrite_index(fs, p_hdr.obj_id, data_spix_offset + i, data_pix, cur_pix); if (res <= _SPIFFS_ERR_CHECK_FIRST && res > _SPIFFS_ERR_CHECK_LAST) { // index bad also, cannot mend this file - SPIFFS_CHECK_DBG("PA: FIXUP: index bad %i, cannot mend!\n", res); + SPIFFS_CHECK_DBG("PA: FIXUP: index bad "_SPIPRIi", cannot mend!\n", res); CHECK_CB(fs, SPIFFS_CHECK_PAGE, SPIFFS_CHECK_DELETE_BAD_FILE, p_hdr.obj_id, 0); res = spiffs_delete_obj_lazy(fs, p_hdr.obj_id); } else { @@ -681,12 +681,12 @@ static s32_t spiffs_page_consistency_check_i(spiffs *fs) { const u32_t rpix_byte_ix = (rpix - pix_offset) / (8/bits); const u8_t rpix_bit_ix = (rpix & ((8/bits)-1)) * bits; if (fs->work[rpix_byte_ix] & (1<<(rpix_bit_ix + 1))) { - SPIFFS_CHECK_DBG("PA: pix %04x multiple referenced from page %04x\n", + SPIFFS_CHECK_DBG("PA: pix "_SPIPRIpg" multiple referenced from page "_SPIPRIpg"\n", rpix, cur_pix); // Here, we should have fixed all broken references - getting this means there // must be multiple files with same object id. Only solution is to delete // the object which is referring to this page - SPIFFS_CHECK_DBG("PA: FIXUP: removing object %04x and page %04x\n", + SPIFFS_CHECK_DBG("PA: FIXUP: removing object "_SPIPRIid" and page "_SPIPRIpg"\n", p_hdr.obj_id, cur_pix); CHECK_CB(fs, SPIFFS_CHECK_PAGE, SPIFFS_CHECK_DELETE_BAD_FILE, p_hdr.obj_id, 0); res = spiffs_delete_obj_lazy(fs, p_hdr.obj_id); @@ -725,7 +725,7 @@ static s32_t spiffs_page_consistency_check_i(spiffs *fs) { if (bitmask == 0x1) { // 001 - SPIFFS_CHECK_DBG("PA: pix %04x USED, UNREFERENCED, not index\n", cur_pix); + SPIFFS_CHECK_DBG("PA: pix "_SPIPRIpg" USED, UNREFERENCED, not index\n", cur_pix); u8_t rewrite_ix_to_this = 0; u8_t delete_page = 0; @@ -741,7 +741,7 @@ static s32_t spiffs_page_consistency_check_i(spiffs *fs) { if (((rpix == (spiffs_page_ix)-1 || rpix > SPIFFS_MAX_PAGES(fs)) || (SPIFFS_IS_LOOKUP_PAGE(fs, rpix)))) { // pointing to a bad page altogether, rewrite index to this rewrite_ix_to_this = 1; - SPIFFS_CHECK_DBG("PA: corresponding ref is bad: %04x, rewrite to this %04x\n", rpix, cur_pix); + SPIFFS_CHECK_DBG("PA: corresponding ref is bad: "_SPIPRIpg", rewrite to this "_SPIPRIpg"\n", rpix, cur_pix); } else { // pointing to something else, check what spiffs_page_header rp_hdr; @@ -752,12 +752,12 @@ static s32_t spiffs_page_consistency_check_i(spiffs *fs) { ((rp_hdr.flags & (SPIFFS_PH_FLAG_INDEX | SPIFFS_PH_FLAG_DELET | SPIFFS_PH_FLAG_USED | SPIFFS_PH_FLAG_FINAL)) == (SPIFFS_PH_FLAG_INDEX | SPIFFS_PH_FLAG_DELET))) { // pointing to something else valid, just delete this page then - SPIFFS_CHECK_DBG("PA: corresponding ref is good but different: %04x, delete this %04x\n", rpix, cur_pix); + SPIFFS_CHECK_DBG("PA: corresponding ref is good but different: "_SPIPRIpg", delete this "_SPIPRIpg"\n", rpix, cur_pix); delete_page = 1; } else { // pointing to something weird, update index to point to this page instead if (rpix != cur_pix) { - SPIFFS_CHECK_DBG("PA: corresponding ref is weird: %04x %s%s%s%s, rewrite this %04x\n", rpix, + SPIFFS_CHECK_DBG("PA: corresponding ref is weird: "_SPIPRIpg" %s%s%s%s, rewrite this "_SPIPRIpg"\n", rpix, (rp_hdr.flags & SPIFFS_PH_FLAG_INDEX) ? "" : "INDEX ", (rp_hdr.flags & SPIFFS_PH_FLAG_DELET) ? "" : "DELETED ", (rp_hdr.flags & SPIFFS_PH_FLAG_USED) ? "NOTUSED " : "", @@ -770,19 +770,19 @@ static s32_t spiffs_page_consistency_check_i(spiffs *fs) { } } } else if (res == SPIFFS_ERR_NOT_FOUND) { - SPIFFS_CHECK_DBG("PA: corresponding ref not found, delete %04x\n", cur_pix); + SPIFFS_CHECK_DBG("PA: corresponding ref not found, delete "_SPIPRIpg"\n", cur_pix); delete_page = 1; res = SPIFFS_OK; } if (rewrite_ix_to_this) { // if pointing to invalid page, redirect index to this page - SPIFFS_CHECK_DBG("PA: FIXUP: rewrite index id %04x data spix %04x to point to this pix: %04x\n", + SPIFFS_CHECK_DBG("PA: FIXUP: rewrite index id "_SPIPRIid" data spix "_SPIPRIsp" to point to this pix: "_SPIPRIpg"\n", p_hdr.obj_id, p_hdr.span_ix, cur_pix); res = spiffs_rewrite_index(fs, p_hdr.obj_id, p_hdr.span_ix, cur_pix, objix_pix); if (res <= _SPIFFS_ERR_CHECK_FIRST && res > _SPIFFS_ERR_CHECK_LAST) { // index bad also, cannot mend this file - SPIFFS_CHECK_DBG("PA: FIXUP: index bad %i, cannot mend!\n", res); + SPIFFS_CHECK_DBG("PA: FIXUP: index bad "_SPIPRIi", cannot mend!\n", res); CHECK_CB(fs, SPIFFS_CHECK_PAGE, SPIFFS_CHECK_DELETE_BAD_FILE, p_hdr.obj_id, 0); res = spiffs_page_delete(fs, cur_pix); SPIFFS_CHECK_RES(res); @@ -794,7 +794,7 @@ static s32_t spiffs_page_consistency_check_i(spiffs *fs) { restart = 1; continue; } else if (delete_page) { - SPIFFS_CHECK_DBG("PA: FIXUP: deleting page %04x\n", cur_pix); + SPIFFS_CHECK_DBG("PA: FIXUP: deleting page "_SPIPRIpg"\n", cur_pix); CHECK_CB(fs, SPIFFS_CHECK_PAGE, SPIFFS_CHECK_DELETE_PAGE, cur_pix, 0); res = spiffs_page_delete(fs, cur_pix); } @@ -803,7 +803,7 @@ static s32_t spiffs_page_consistency_check_i(spiffs *fs) { if (bitmask == 0x2) { // 010 - SPIFFS_CHECK_DBG("PA: pix %04x FREE, REFERENCED, not index\n", cur_pix); + SPIFFS_CHECK_DBG("PA: pix "_SPIPRIpg" FREE, REFERENCED, not index\n", cur_pix); // no op, this should be taken care of when checking valid references } @@ -813,7 +813,7 @@ static s32_t spiffs_page_consistency_check_i(spiffs *fs) { if (bitmask == 0x4) { // 100 - SPIFFS_CHECK_DBG("PA: pix %04x FREE, unreferenced, INDEX\n", cur_pix); + SPIFFS_CHECK_DBG("PA: pix "_SPIPRIpg" FREE, unreferenced, INDEX\n", cur_pix); // this should never happen, major fubar } @@ -823,14 +823,14 @@ static s32_t spiffs_page_consistency_check_i(spiffs *fs) { if (bitmask == 0x6) { // 110 - SPIFFS_CHECK_DBG("PA: pix %04x FREE, REFERENCED, INDEX\n", cur_pix); + SPIFFS_CHECK_DBG("PA: pix "_SPIPRIpg" FREE, REFERENCED, INDEX\n", cur_pix); // no op, this should be taken care of when checking valid references } if (bitmask == 0x7) { // 111 - SPIFFS_CHECK_DBG("PA: pix %04x USED, REFERENCED, INDEX\n", cur_pix); + SPIFFS_CHECK_DBG("PA: pix "_SPIPRIpg" USED, REFERENCED, INDEX\n", cur_pix); // no op, this should be taken care of when checking valid references } @@ -838,7 +838,7 @@ static s32_t spiffs_page_consistency_check_i(spiffs *fs) { } } - SPIFFS_CHECK_DBG("PA: processed %04x, restart %i\n", pix_offset, restart); + SPIFFS_CHECK_DBG("PA: processed "_SPIPRIpg", restart "_SPIPRIi"\n", pix_offset, restart); // next page range if (!restart) { pix_offset += pages_per_scan; @@ -898,7 +898,7 @@ static s32_t spiffs_object_index_consistency_check_v(spiffs *fs, spiffs_obj_id o if (p_hdr.span_ix == 0 && (p_hdr.flags & (SPIFFS_PH_FLAG_INDEX | SPIFFS_PH_FLAG_FINAL | SPIFFS_PH_FLAG_DELET | SPIFFS_PH_FLAG_IXDELE)) == (SPIFFS_PH_FLAG_DELET)) { - SPIFFS_CHECK_DBG("IX: pix %04x, obj id:%04x spix:%04x header not fully deleted - deleting\n", + SPIFFS_CHECK_DBG("IX: pix "_SPIPRIpg", obj id:"_SPIPRIid" spix:"_SPIPRIsp" header not fully deleted - deleting\n", cur_pix, obj_id, p_hdr.span_ix); CHECK_CB(fs, SPIFFS_CHECK_INDEX, SPIFFS_CHECK_DELETE_PAGE, cur_pix, obj_id); res = spiffs_page_delete(fs, cur_pix); @@ -954,7 +954,7 @@ static s32_t spiffs_object_index_consistency_check_v(spiffs *fs, spiffs_obj_id o } if (delete) { - SPIFFS_CHECK_DBG("IX: FIXUP: pix %04x, obj id:%04x spix:%04x is orphan index - deleting\n", + SPIFFS_CHECK_DBG("IX: FIXUP: pix "_SPIPRIpg", obj id:"_SPIPRIid" spix:"_SPIPRIsp" is orphan index - deleting\n", cur_pix, obj_id, p_hdr.span_ix); CHECK_CB(fs, SPIFFS_CHECK_INDEX, SPIFFS_CHECK_DELETE_ORPHANED_INDEX, cur_pix, obj_id); res = spiffs_page_delete(fs, cur_pix); @@ -980,8 +980,8 @@ s32_t spiffs_object_index_consistency_check(spiffs *fs) { memset(fs->work, 0, SPIFFS_CFG_LOG_PAGE_SZ(fs)); u32_t obj_id_log_ix = 0; CHECK_CB(fs, SPIFFS_CHECK_INDEX, SPIFFS_CHECK_PROGRESS, 0, 0); - res = spiffs_obj_lu_find_entry_visitor(fs, 0, 0, 0, 0, spiffs_object_index_consistency_check_v, &obj_id_log_ix, - 0, 0, 0); + res = spiffs_obj_lu_find_entry_visitor(fs, 0, 0, 0, 0, spiffs_object_index_consistency_check_v, 0, &obj_id_log_ix, + 0, 0); if (res == SPIFFS_VIS_END) { res = SPIFFS_OK; } diff --git a/cores/esp8266/spiffs/spiffs_config.h b/cores/esp8266/spiffs/spiffs_config.h index 2fe03b1fd..44f129d67 100644 --- a/cores/esp8266/spiffs/spiffs_config.h +++ b/cores/esp8266/spiffs/spiffs_config.h @@ -59,6 +59,44 @@ typedef uint8_t u8_t; #ifndef SPIFFS_CHECK_DBG #define SPIFFS_CHECK_DBG(...) //printf(__VA_ARGS__) #endif +// Set spiffs debug output call for all api invocations. +#ifndef SPIFFS_API_DBG +#define SPIFFS_API_DBG(...) //printf(__VA_ARGS__) +#endif + +// Defines spiffs debug print formatters +// some general signed number +#ifndef _SPIPRIi +#define _SPIPRIi "%d" +#endif +// address +#ifndef _SPIPRIad +#define _SPIPRIad "%08x" +#endif +// block +#ifndef _SPIPRIbl +#define _SPIPRIbl "%04x" +#endif +// page +#ifndef _SPIPRIpg +#define _SPIPRIpg "%04x" +#endif +// span index +#ifndef _SPIPRIsp +#define _SPIPRIsp "%04x" +#endif +// file descriptor +#ifndef _SPIPRIfd +#define _SPIPRIfd "%d" +#endif +// file object id +#ifndef _SPIPRIid +#define _SPIPRIid "%04x" +#endif +// file flags +#ifndef _SPIPRIfl +#define _SPIPRIfl "%02x" +#endif // Enable/disable API functions to determine exact number of bytes // for filedescriptor and cache buffers. Once decided for a configuration, @@ -127,6 +165,20 @@ typedef uint8_t u8_t; #define SPIFFS_OBJ_NAME_LEN (32) #endif +// Maximum length of the metadata associated with an object. +// Setting to non-zero value enables metadata-related API but also +// changes the on-disk format, so the change is not backward-compatible. +// +// Do note: the meta length must never exceed +// logical_page_size - (SPIFFS_OBJ_NAME_LEN + 64) +// +// This is derived from following: +// logical_page_size - (SPIFFS_OBJ_NAME_LEN + sizeof(spiffs_page_header) + +// spiffs_object_ix_header fields + at least some LUT entries) +#ifndef SPIFFS_OBJ_META_LEN +#define SPIFFS_OBJ_META_LEN (0) +#endif + // Size of buffer allocated on stack used when copying data. // Lower value generates more read/writes. No meaning having it bigger // than logical page size. @@ -142,6 +194,17 @@ typedef uint8_t u8_t; #define SPIFFS_USE_MAGIC (1) #endif +#if SPIFFS_USE_MAGIC +// Only valid when SPIFFS_USE_MAGIC is enabled. If SPIFFS_USE_MAGIC_LENGTH is +// enabled, the magic will also be dependent on the length of the filesystem. +// For example, a filesystem configured and formatted for 4 megabytes will not +// be accepted for mounting with a configuration defining the filesystem as 2 +// megabytes. +#ifndef SPIFFS_USE_MAGIC_LENGTH +#define SPIFFS_USE_MAGIC_LENGTH (1) +#endif +#endif + // SPIFFS_LOCK and SPIFFS_UNLOCK protects spiffs from reentrancy on api level // These should be defined on a multithreaded system @@ -202,6 +265,67 @@ typedef uint8_t u8_t; #define SPIFFS_FILEHDL_OFFSET 0 #endif +// Enable this to compile a read only version of spiffs. +// This will reduce binary size of spiffs. All code comprising modification +// of the file system will not be compiled. Some config will be ignored. +// HAL functions for erasing and writing to spi-flash may be null. Cache +// can be disabled for even further binary size reduction (and ram savings). +// Functions modifying the fs will return SPIFFS_ERR_RO_NOT_IMPL. +// If the file system cannot be mounted due to aborted erase operation and +// SPIFFS_USE_MAGIC is enabled, SPIFFS_ERR_RO_ABORTED_OPERATION will be +// returned. +// Might be useful for e.g. bootloaders and such. +#ifndef SPIFFS_READ_ONLY +#define SPIFFS_READ_ONLY 0 +#endif + +// Enable this to add a temporal file cache using the fd buffer. +// The effects of the cache is that SPIFFS_open will find the file faster in +// certain cases. It will make it a lot easier for spiffs to find files +// opened frequently, reducing number of readings from the spi flash for +// finding those files. +// This will grow each fd by 6 bytes. If your files are opened in patterns +// with a degree of temporal locality, the system is optimized. +// Examples can be letting spiffs serve web content, where one file is the css. +// The css is accessed for each html file that is opened, meaning it is +// accessed almost every second time a file is opened. Another example could be +// a log file that is often opened, written, and closed. +// The size of the cache is number of given file descriptors, as it piggybacks +// on the fd update mechanism. The cache lives in the closed file descriptors. +// When closed, the fd know the whereabouts of the file. Instead of forgetting +// this, the temporal cache will keep handling updates to that file even if the +// fd is closed. If the file is opened again, the location of the file is found +// directly. If all available descriptors become opened, all cache memory is +// lost. +#ifndef SPIFFS_TEMPORAL_FD_CACHE +#define SPIFFS_TEMPORAL_FD_CACHE 1 +#endif + +// Temporal file cache hit score. Each time a file is opened, all cached files +// will lose one point. If the opened file is found in cache, that entry will +// gain SPIFFS_TEMPORAL_CACHE_HIT_SCORE points. One can experiment with this +// value for the specific access patterns of the application. However, it must +// be between 1 (no gain for hitting a cached entry often) and 255. +#ifndef SPIFFS_TEMPORAL_CACHE_HIT_SCORE +#define SPIFFS_TEMPORAL_CACHE_HIT_SCORE 4 +#endif + +// Enable to be able to map object indices to memory. +// This allows for faster and more deterministic reading if cases of reading +// large files and when changing file offset by seeking around a lot. +// When mapping a file's index, the file system will be scanned for index pages +// and the info will be put in memory provided by user. When reading, the +// memory map can be looked up instead of searching for index pages on the +// medium. This way, user can trade memory against performance. +// Whole, parts of, or future parts not being written yet can be mapped. The +// memory array will be owned by spiffs and updated accordingly during garbage +// collecting or when modifying the indices. The latter is invoked by when the +// file is modified in some way. The index buffer is tied to the file +// descriptor. +#ifndef SPIFFS_IX_MAP +#define SPIFFS_IX_MAP 1 +#endif + // Set SPIFFS_TEST_VISUALISATION to non-zero to enable SPIFFS_vis function // in the api. This function will visualize all filesystem using given printf // function. diff --git a/cores/esp8266/spiffs/spiffs_gc.c b/cores/esp8266/spiffs/spiffs_gc.c index 8abb8dfc3..db1af4ccf 100644 --- a/cores/esp8266/spiffs/spiffs_gc.c +++ b/cores/esp8266/spiffs/spiffs_gc.c @@ -11,7 +11,7 @@ static s32_t spiffs_gc_erase_block( spiffs_block_ix bix) { s32_t res; - SPIFFS_GC_DBG("gc: erase block %i\n", bix); + SPIFFS_GC_DBG("gc: erase block "_SPIPRIbl"\n", bix); res = spiffs_erase_block(fs, bix); SPIFFS_CHECK_RES(res); @@ -122,19 +122,19 @@ s32_t spiffs_gc_check( u32_t needed_pages = (len + SPIFFS_DATA_PAGE_SIZE(fs) - 1) / SPIFFS_DATA_PAGE_SIZE(fs); // if (fs->free_blocks <= 2 && (s32_t)needed_pages > free_pages) { -// SPIFFS_GC_DBG("gc: full freeblk:%i needed:%i free:%i dele:%i\n", fs->free_blocks, needed_pages, free_pages, fs->stats_p_deleted); +// SPIFFS_GC_DBG("gc: full freeblk:"_SPIPRIi" needed:"_SPIPRIi" free:"_SPIPRIi" dele:"_SPIPRIi"\n", fs->free_blocks, needed_pages, free_pages, fs->stats_p_deleted); // return SPIFFS_ERR_FULL; // } if ((s32_t)needed_pages > (s32_t)(free_pages + fs->stats_p_deleted)) { - SPIFFS_GC_DBG("gc_check: full freeblk:%i needed:%i free:%i dele:%i\n", fs->free_blocks, needed_pages, free_pages, fs->stats_p_deleted); + SPIFFS_GC_DBG("gc_check: full freeblk:"_SPIPRIi" needed:"_SPIPRIi" free:"_SPIPRIi" dele:"_SPIPRIi"\n", fs->free_blocks, needed_pages, free_pages, fs->stats_p_deleted); return SPIFFS_ERR_FULL; } do { - SPIFFS_GC_DBG("\ngc_check #%i: run gc free_blocks:%i pfree:%i pallo:%i pdele:%i [%i] len:%i of %i\n", + SPIFFS_GC_DBG("\ngc_check #"_SPIPRIi": run gc free_blocks:"_SPIPRIi" pfree:"_SPIPRIi" pallo:"_SPIPRIi" pdele:"_SPIPRIi" ["_SPIPRIi"] len:"_SPIPRIi" of "_SPIPRIi"\n", tries, fs->free_blocks, free_pages, fs->stats_p_allocated, fs->stats_p_deleted, (free_pages+fs->stats_p_allocated+fs->stats_p_deleted), - len, free_pages*SPIFFS_DATA_PAGE_SIZE(fs)); + len, (u32_t)(free_pages*SPIFFS_DATA_PAGE_SIZE(fs))); spiffs_block_ix *cands; int count; @@ -152,13 +152,13 @@ s32_t spiffs_gc_check( #endif cand = cands[0]; fs->cleaning = 1; - //printf("gcing: cleaning block %i\n", cand); + //SPIFFS_GC_DBG("gcing: cleaning block "_SPIPRIi"\n", cand); res = spiffs_gc_clean(fs, cand); fs->cleaning = 0; if (res < 0) { - SPIFFS_GC_DBG("gc_check: cleaning block %i, result %i\n", cand, res); + SPIFFS_GC_DBG("gc_check: cleaning block "_SPIPRIi", result "_SPIPRIi"\n", cand, res); } else { - SPIFFS_GC_DBG("gc_check: cleaning block %i, result %i\n", cand, res); + SPIFFS_GC_DBG("gc_check: cleaning block "_SPIPRIi", result "_SPIPRIi"\n", cand, res); } SPIFFS_CHECK_RES(res); @@ -188,7 +188,7 @@ s32_t spiffs_gc_check( res = SPIFFS_ERR_FULL; } - SPIFFS_GC_DBG("gc_check: finished, %i dirty, blocks %i free, %i pages free, %i tries, res %i\n", + SPIFFS_GC_DBG("gc_check: finished, "_SPIPRIi" dirty, blocks "_SPIPRIi" free, "_SPIPRIi" pages free, "_SPIPRIi" tries, res "_SPIPRIi"\n", fs->stats_p_allocated + fs->stats_p_deleted, fs->free_blocks, free_pages, tries, res); @@ -226,7 +226,7 @@ s32_t spiffs_gc_erase_page_stats( } // per entry obj_lookup_page++; } // per object lookup page - SPIFFS_GC_DBG("gc_check: wipe pallo:%i pdele:%i\n", allo, dele); + SPIFFS_GC_DBG("gc_check: wipe pallo:"_SPIPRIi" pdele:"_SPIPRIi"\n", allo, dele); fs->stats_p_allocated -= allo; fs->stats_p_deleted -= dele; return res; @@ -255,10 +255,7 @@ s32_t spiffs_gc_find_candidate( s32_t *cand_scores = (s32_t *)(fs->work + max_candidates * sizeof(spiffs_block_ix)); // align cand_scores on s32_t boundary -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wpointer-to-int-cast" - cand_scores = (s32_t*)(((ptrdiff_t)cand_scores + sizeof(ptrdiff_t) - 1) & ~(sizeof(ptrdiff_t) - 1)); -#pragma GCC diagnostic pop + cand_scores = (s32_t*)(((intptr_t)cand_scores + sizeof(intptr_t) - 1) & ~(sizeof(intptr_t) - 1)); *block_candidates = cand_blocks; @@ -297,7 +294,7 @@ s32_t spiffs_gc_find_candidate( // calculate score and insert into candidate table // stoneage sort, but probably not so many blocks - if (res == SPIFFS_OK && deleted_pages_in_block > 0) { + if (res == SPIFFS_OK /*&& deleted_pages_in_block > 0*/) { // read erase count spiffs_obj_id erase_count; res = _spiffs_rd(fs, SPIFFS_OP_C_READ | SPIFFS_OP_T_OBJ_LU2, 0, @@ -317,7 +314,7 @@ s32_t spiffs_gc_find_candidate( used_pages_in_block * SPIFFS_GC_HEUR_W_USED + erase_age * (fs_crammed ? 0 : SPIFFS_GC_HEUR_W_ERASE_AGE); int cand_ix = 0; - SPIFFS_GC_DBG("gc_check: bix:%i del:%i use:%i score:%i\n", cur_block, deleted_pages_in_block, used_pages_in_block, score); + SPIFFS_GC_DBG("gc_check: bix:"_SPIPRIbl" del:"_SPIPRIi" use:"_SPIPRIi" score:"_SPIPRIi"\n", cur_block, deleted_pages_in_block, used_pages_in_block, score); while (cand_ix < max_candidates) { if (cand_blocks[cand_ix] == (spiffs_block_ix)-1) { cand_blocks[cand_ix] = cur_block; @@ -359,6 +356,7 @@ typedef struct { spiffs_obj_id cur_obj_id; spiffs_span_ix cur_objix_spix; spiffs_page_ix cur_objix_pix; + spiffs_page_ix cur_data_pix; int stored_scan_entry_index; u8_t obj_id_found; } spiffs_gc; @@ -378,15 +376,16 @@ typedef struct { // s32_t spiffs_gc_clean(spiffs *fs, spiffs_block_ix bix) { s32_t res = SPIFFS_OK; - int entries_per_page = (SPIFFS_CFG_LOG_PAGE_SZ(fs) / sizeof(spiffs_obj_id)); + const int entries_per_page = (SPIFFS_CFG_LOG_PAGE_SZ(fs) / sizeof(spiffs_obj_id)); + // this is the global localizer being pushed and popped int cur_entry = 0; spiffs_obj_id *obj_lu_buf = (spiffs_obj_id *)fs->lu_work; - spiffs_gc gc; + spiffs_gc gc; // our stack frame/state spiffs_page_ix cur_pix = 0; spiffs_page_object_ix_header *objix_hdr = (spiffs_page_object_ix_header *)fs->work; spiffs_page_object_ix *objix = (spiffs_page_object_ix *)fs->work; - SPIFFS_GC_DBG("gc_clean: cleaning block %i\n", bix); + SPIFFS_GC_DBG("gc_clean: cleaning block "_SPIPRIbl"\n", bix); memset(&gc, 0, sizeof(spiffs_gc)); gc.state = FIND_OBJ_DATA; @@ -395,12 +394,12 @@ s32_t spiffs_gc_clean(spiffs *fs, spiffs_block_ix bix) { // move free cursor to next block, cannot use free pages from the block we want to clean fs->free_cursor_block_ix = (bix+1)%fs->block_count; fs->free_cursor_obj_lu_entry = 0; - SPIFFS_GC_DBG("gc_clean: move free cursor to block %i\n", fs->free_cursor_block_ix); + SPIFFS_GC_DBG("gc_clean: move free cursor to block "_SPIPRIbl"\n", fs->free_cursor_block_ix); } while (res == SPIFFS_OK && gc.state != FINISHED) { - SPIFFS_GC_DBG("gc_clean: state = %i entry:%i\n", gc.state, cur_entry); - gc.obj_id_found = 0; + SPIFFS_GC_DBG("gc_clean: state = "_SPIPRIi" entry:"_SPIPRIi"\n", gc.state, cur_entry); + gc.obj_id_found = 0; // reset (to no found data page) // scan through lookup pages int obj_lookup_page = cur_entry / entries_per_page; @@ -411,7 +410,7 @@ s32_t spiffs_gc_clean(spiffs *fs, spiffs_block_ix bix) { res = _spiffs_rd(fs, SPIFFS_OP_T_OBJ_LU | SPIFFS_OP_C_READ, 0, bix * SPIFFS_CFG_LOG_BLOCK_SZ(fs) + SPIFFS_PAGE_TO_PADDR(fs, obj_lookup_page), SPIFFS_CFG_LOG_PAGE_SZ(fs), fs->lu_work); - // check each entry + // check each object lookup entry while (scan && res == SPIFFS_OK && cur_entry - entry_offset < entries_per_page && cur_entry < (int)(SPIFFS_PAGES_PER_BLOCK(fs)-SPIFFS_OBJ_LOOKUP_PAGES(fs))) { spiffs_obj_id obj_id = obj_lu_buf[cur_entry-entry_offset]; @@ -420,21 +419,26 @@ s32_t spiffs_gc_clean(spiffs *fs, spiffs_block_ix bix) { // act upon object id depending on gc state switch (gc.state) { case FIND_OBJ_DATA: + // find a data page if (obj_id != SPIFFS_OBJ_ID_DELETED && obj_id != SPIFFS_OBJ_ID_FREE && ((obj_id & SPIFFS_OBJ_ID_IX_FLAG) == 0)) { - SPIFFS_GC_DBG("gc_clean: FIND_DATA state:%i - found obj id %04x\n", gc.state, obj_id); + // found a data page, stop scanning and handle in switch case below + SPIFFS_GC_DBG("gc_clean: FIND_DATA state:"_SPIPRIi" - found obj id "_SPIPRIid"\n", gc.state, obj_id); gc.obj_id_found = 1; gc.cur_obj_id = obj_id; + gc.cur_data_pix = cur_pix; scan = 0; } break; case MOVE_OBJ_DATA: + // evacuate found data pages for corresponding object index we have in memory, + // update memory representation if (obj_id == gc.cur_obj_id) { spiffs_page_header p_hdr; res = _spiffs_rd(fs, SPIFFS_OP_T_OBJ_LU2 | SPIFFS_OP_C_READ, 0, SPIFFS_PAGE_TO_PADDR(fs, cur_pix), sizeof(spiffs_page_header), (u8_t*)&p_hdr); SPIFFS_CHECK_RES(res); - SPIFFS_GC_DBG("gc_clean: MOVE_DATA found data page %04x:%04x @ %04x\n", gc.cur_obj_id, p_hdr.span_ix, cur_pix); + SPIFFS_GC_DBG("gc_clean: MOVE_DATA found data page "_SPIPRIid":"_SPIPRIsp" @ "_SPIPRIpg"\n", gc.cur_obj_id, p_hdr.span_ix, cur_pix); if (SPIFFS_OBJ_IX_ENTRY_SPAN_IX(fs, p_hdr.span_ix) != gc.cur_objix_spix) { SPIFFS_GC_DBG("gc_clean: MOVE_DATA no objix spix match, take in another run\n"); } else { @@ -442,7 +446,7 @@ s32_t spiffs_gc_clean(spiffs *fs, spiffs_block_ix bix) { if (p_hdr.flags & SPIFFS_PH_FLAG_DELET) { // move page res = spiffs_page_move(fs, 0, 0, obj_id, &p_hdr, cur_pix, &new_data_pix); - SPIFFS_GC_DBG("gc_clean: MOVE_DATA move objix %04x:%04x page %04x to %04x\n", gc.cur_obj_id, p_hdr.span_ix, cur_pix, new_data_pix); + SPIFFS_GC_DBG("gc_clean: MOVE_DATA move objix "_SPIPRIid":"_SPIPRIsp" page "_SPIPRIpg" to "_SPIPRIpg"\n", gc.cur_obj_id, p_hdr.span_ix, cur_pix, new_data_pix); SPIFFS_CHECK_RES(res); // move wipes obj_lu, reload it res = _spiffs_rd(fs, SPIFFS_OP_T_OBJ_LU | SPIFFS_OP_C_READ, @@ -450,8 +454,10 @@ s32_t spiffs_gc_clean(spiffs *fs, spiffs_block_ix bix) { SPIFFS_CFG_LOG_PAGE_SZ(fs), fs->lu_work); SPIFFS_CHECK_RES(res); } else { - // page is deleted but not deleted in lookup, scrap it - SPIFFS_GC_DBG("gc_clean: MOVE_DATA wipe objix %04x:%04x page %04x\n", obj_id, p_hdr.span_ix, cur_pix); + // page is deleted but not deleted in lookup, scrap it - + // might seem unnecessary as we will erase this block, but + // we might get aborted + SPIFFS_GC_DBG("gc_clean: MOVE_DATA wipe objix "_SPIPRIid":"_SPIPRIsp" page "_SPIPRIpg"\n", obj_id, p_hdr.span_ix, cur_pix); res = spiffs_page_delete(fs, cur_pix); SPIFFS_CHECK_RES(res); new_data_pix = SPIFFS_OBJ_ID_FREE; @@ -460,16 +466,17 @@ s32_t spiffs_gc_clean(spiffs *fs, spiffs_block_ix bix) { if (gc.cur_objix_spix == 0) { // update object index header page ((spiffs_page_ix*)((u8_t *)objix_hdr + sizeof(spiffs_page_object_ix_header)))[p_hdr.span_ix] = new_data_pix; - SPIFFS_GC_DBG("gc_clean: MOVE_DATA wrote page %04x to objix_hdr entry %02x in mem\n", new_data_pix, SPIFFS_OBJ_IX_ENTRY(fs, p_hdr.span_ix)); + SPIFFS_GC_DBG("gc_clean: MOVE_DATA wrote page "_SPIPRIpg" to objix_hdr entry "_SPIPRIsp" in mem\n", new_data_pix, (spiffs_span_ix)SPIFFS_OBJ_IX_ENTRY(fs, p_hdr.span_ix)); } else { // update object index page ((spiffs_page_ix*)((u8_t *)objix + sizeof(spiffs_page_object_ix)))[SPIFFS_OBJ_IX_ENTRY(fs, p_hdr.span_ix)] = new_data_pix; - SPIFFS_GC_DBG("gc_clean: MOVE_DATA wrote page %04x to objix entry %02x in mem\n", new_data_pix, SPIFFS_OBJ_IX_ENTRY(fs, p_hdr.span_ix)); + SPIFFS_GC_DBG("gc_clean: MOVE_DATA wrote page "_SPIPRIpg" to objix entry "_SPIPRIsp" in mem\n", new_data_pix, (spiffs_span_ix)SPIFFS_OBJ_IX_ENTRY(fs, p_hdr.span_ix)); } } } break; case MOVE_OBJ_IX: + // find and evacuate object index pages if (obj_id != SPIFFS_OBJ_ID_DELETED && obj_id != SPIFFS_OBJ_ID_FREE && (obj_id & SPIFFS_OBJ_ID_IX_FLAG)) { // found an index object id @@ -482,20 +489,24 @@ s32_t spiffs_gc_clean(spiffs *fs, spiffs_block_ix bix) { if (p_hdr.flags & SPIFFS_PH_FLAG_DELET) { // move page res = spiffs_page_move(fs, 0, 0, obj_id, &p_hdr, cur_pix, &new_pix); - SPIFFS_GC_DBG("gc_clean: MOVE_OBJIX move objix %04x:%04x page %04x to %04x\n", obj_id, p_hdr.span_ix, cur_pix, new_pix); + SPIFFS_GC_DBG("gc_clean: MOVE_OBJIX move objix "_SPIPRIid":"_SPIPRIsp" page "_SPIPRIpg" to "_SPIPRIpg"\n", obj_id, p_hdr.span_ix, cur_pix, new_pix); SPIFFS_CHECK_RES(res); - spiffs_cb_object_event(fs, 0, SPIFFS_EV_IX_UPD, obj_id, p_hdr.span_ix, new_pix, 0); + spiffs_cb_object_event(fs, (spiffs_page_object_ix *)&p_hdr, + SPIFFS_EV_IX_MOV, obj_id, p_hdr.span_ix, new_pix, 0); // move wipes obj_lu, reload it res = _spiffs_rd(fs, SPIFFS_OP_T_OBJ_LU | SPIFFS_OP_C_READ, 0, bix * SPIFFS_CFG_LOG_BLOCK_SZ(fs) + SPIFFS_PAGE_TO_PADDR(fs, obj_lookup_page), SPIFFS_CFG_LOG_PAGE_SZ(fs), fs->lu_work); SPIFFS_CHECK_RES(res); } else { - // page is deleted but not deleted in lookup, scrap it - SPIFFS_GC_DBG("gc_clean: MOVE_OBJIX wipe objix %04x:%04x page %04x\n", obj_id, p_hdr.span_ix, cur_pix); + // page is deleted but not deleted in lookup, scrap it - + // might seem unnecessary as we will erase this block, but + // we might get aborted + SPIFFS_GC_DBG("gc_clean: MOVE_OBJIX wipe objix "_SPIPRIid":"_SPIPRIsp" page "_SPIPRIpg"\n", obj_id, p_hdr.span_ix, cur_pix); res = spiffs_page_delete(fs, cur_pix); if (res == SPIFFS_OK) { - spiffs_cb_object_event(fs, 0, SPIFFS_EV_IX_DEL, obj_id, p_hdr.span_ix, cur_pix, 0); + spiffs_cb_object_event(fs, (spiffs_page_object_ix *)0, + SPIFFS_EV_IX_DEL, obj_id, p_hdr.span_ix, cur_pix, 0); } } SPIFFS_CHECK_RES(res); @@ -504,69 +515,88 @@ s32_t spiffs_gc_clean(spiffs *fs, spiffs_block_ix bix) { default: scan = 0; break; - } + } // switch gc state cur_entry++; } // per entry - obj_lookup_page++; + obj_lookup_page++; // no need to check scan variable here, obj_lookup_page is set in start of loop } // per object lookup page - if (res != SPIFFS_OK) break; // state finalization and switch switch (gc.state) { case FIND_OBJ_DATA: if (gc.obj_id_found) { + // handle found data page - // find out corresponding obj ix page and load it to memory spiffs_page_header p_hdr; spiffs_page_ix objix_pix; - gc.stored_scan_entry_index = cur_entry; - cur_entry = 0; + gc.stored_scan_entry_index = cur_entry; // push cursor + cur_entry = 0; // restart scan from start gc.state = MOVE_OBJ_DATA; res = _spiffs_rd(fs, SPIFFS_OP_T_OBJ_LU2 | SPIFFS_OP_C_READ, 0, SPIFFS_PAGE_TO_PADDR(fs, cur_pix), sizeof(spiffs_page_header), (u8_t*)&p_hdr); SPIFFS_CHECK_RES(res); gc.cur_objix_spix = SPIFFS_OBJ_IX_ENTRY_SPAN_IX(fs, p_hdr.span_ix); - SPIFFS_GC_DBG("gc_clean: FIND_DATA find objix span_ix:%04x\n", gc.cur_objix_spix); + SPIFFS_GC_DBG("gc_clean: FIND_DATA find objix span_ix:"_SPIPRIsp"\n", gc.cur_objix_spix); res = spiffs_obj_lu_find_id_and_span(fs, gc.cur_obj_id | SPIFFS_OBJ_ID_IX_FLAG, gc.cur_objix_spix, 0, &objix_pix); + if (res == SPIFFS_ERR_NOT_FOUND) { + // on borked systems we might get an ERR_NOT_FOUND here - + // this is handled by simply deleting the page as it is not referenced + // from anywhere + SPIFFS_GC_DBG("gc_clean: FIND_OBJ_DATA objix not found! Wipe page "_SPIPRIpg"\n", gc.cur_data_pix); + res = spiffs_page_delete(fs, gc.cur_data_pix); + SPIFFS_CHECK_RES(res); + // then we restore states and continue scanning for data pages + cur_entry = gc.stored_scan_entry_index; // pop cursor + gc.state = FIND_OBJ_DATA; + break; // done + } SPIFFS_CHECK_RES(res); - SPIFFS_GC_DBG("gc_clean: FIND_DATA found object index at page %04x\n", objix_pix); + SPIFFS_GC_DBG("gc_clean: FIND_DATA found object index at page "_SPIPRIpg"\n", objix_pix); res = _spiffs_rd(fs, SPIFFS_OP_T_OBJ_LU2 | SPIFFS_OP_C_READ, 0, SPIFFS_PAGE_TO_PADDR(fs, objix_pix), SPIFFS_CFG_LOG_PAGE_SZ(fs), fs->work); SPIFFS_CHECK_RES(res); + // cannot allow a gc if the presumed index in fact is no index, a + // check must run or lot of data may be lost SPIFFS_VALIDATE_OBJIX(objix->p_hdr, gc.cur_obj_id | SPIFFS_OBJ_ID_IX_FLAG, gc.cur_objix_spix); gc.cur_objix_pix = objix_pix; } else { + // no more data pages found, passed thru all block, start evacuating object indices gc.state = MOVE_OBJ_IX; cur_entry = 0; // restart entry scan index } break; case MOVE_OBJ_DATA: { - // store modified objix (hdr) page + // store modified objix (hdr) page residing in memory now that all + // data pages belonging to this object index and residing in the block + // we want to evacuate spiffs_page_ix new_objix_pix; gc.state = FIND_OBJ_DATA; - cur_entry = gc.stored_scan_entry_index; + cur_entry = gc.stored_scan_entry_index; // pop cursor if (gc.cur_objix_spix == 0) { // store object index header page - res = spiffs_object_update_index_hdr(fs, 0, gc.cur_obj_id | SPIFFS_OBJ_ID_IX_FLAG, gc.cur_objix_pix, fs->work, 0, 0, &new_objix_pix); - SPIFFS_GC_DBG("gc_clean: MOVE_DATA store modified objix_hdr page, %04x:%04x\n", new_objix_pix, 0); + res = spiffs_object_update_index_hdr(fs, 0, gc.cur_obj_id | SPIFFS_OBJ_ID_IX_FLAG, gc.cur_objix_pix, fs->work, 0, 0, 0, &new_objix_pix); + SPIFFS_GC_DBG("gc_clean: MOVE_DATA store modified objix_hdr page, "_SPIPRIpg":"_SPIPRIsp"\n", new_objix_pix, 0); SPIFFS_CHECK_RES(res); } else { // store object index page res = spiffs_page_move(fs, 0, fs->work, gc.cur_obj_id | SPIFFS_OBJ_ID_IX_FLAG, 0, gc.cur_objix_pix, &new_objix_pix); - SPIFFS_GC_DBG("gc_clean: MOVE_DATA store modified objix page, %04x:%04x\n", new_objix_pix, objix->p_hdr.span_ix); + SPIFFS_GC_DBG("gc_clean: MOVE_DATA store modified objix page, "_SPIPRIpg":"_SPIPRIsp"\n", new_objix_pix, objix->p_hdr.span_ix); SPIFFS_CHECK_RES(res); - spiffs_cb_object_event(fs, 0, SPIFFS_EV_IX_UPD, gc.cur_obj_id, objix->p_hdr.span_ix, new_objix_pix, 0); + spiffs_cb_object_event(fs, (spiffs_page_object_ix *)fs->work, + SPIFFS_EV_IX_UPD, gc.cur_obj_id, objix->p_hdr.span_ix, new_objix_pix, 0); } } break; case MOVE_OBJ_IX: + // scanned thru all block, no more object indices found - our work here is done gc.state = FINISHED; break; default: cur_entry = 0; break; - } - SPIFFS_GC_DBG("gc_clean: state-> %i\n", gc.state); + } // switch gc.state + SPIFFS_GC_DBG("gc_clean: state-> "_SPIPRIi"\n", gc.state); } // while state != FINISHED diff --git a/cores/esp8266/spiffs/spiffs_hydrogen.c b/cores/esp8266/spiffs/spiffs_hydrogen.c index 20940c5d0..5ca0e048e 100644 --- a/cores/esp8266/spiffs/spiffs_hydrogen.c +++ b/cores/esp8266/spiffs/spiffs_hydrogen.c @@ -8,21 +8,12 @@ #include "spiffs.h" #include "spiffs_nucleus.h" -#if SPIFFS_FILEHDL_OFFSET -#define SPIFFS_FH_OFFS(fs, fh) ((fh) != 0 ? ((fh) + (fs)->cfg.fh_ix_offset) : 0) -#define SPIFFS_FH_UNOFFS(fs, fh) ((fh) != 0 ? ((fh) - (fs)->cfg.fh_ix_offset) : 0) -#else -#define SPIFFS_FH_OFFS(fs, fh) (fh) -#define SPIFFS_FH_UNOFFS(fs, fh) (fh) -#endif - #if SPIFFS_CACHE == 1 static s32_t spiffs_fflush_cache(spiffs *fs, spiffs_file fh); #endif #if SPIFFS_BUFFER_HELP u32_t SPIFFS_buffer_bytes_for_filedescs(spiffs *fs, u32_t num_descs) { - (void) fs; return num_descs * sizeof(spiffs_fd); } #if SPIFFS_CACHE @@ -70,6 +61,7 @@ s32_t SPIFFS_format(spiffs *fs) { #if SPIFFS_USE_MAGIC && SPIFFS_USE_MAGIC_LENGTH && SPIFFS_SINGLETON==0 s32_t SPIFFS_probe_fs(spiffs_config *config) { + SPIFFS_API_DBG("%s\n", __func__); s32_t res = spiffs_probe(config); return res; } @@ -80,22 +72,31 @@ s32_t SPIFFS_mount(spiffs *fs, spiffs_config *config, u8_t *work, u8_t *fd_space, u32_t fd_space_size, void *cache, u32_t cache_size, spiffs_check_callback check_cb_f) { + SPIFFS_API_DBG("%s " + " sz:"_SPIPRIi " logpgsz:"_SPIPRIi " logblksz:"_SPIPRIi " perasz:"_SPIPRIi + " addr:"_SPIPRIad + " fdsz:"_SPIPRIi " cachesz:"_SPIPRIi + "\n", + __func__, + SPIFFS_CFG_PHYS_SZ(fs), + SPIFFS_CFG_LOG_PAGE_SZ(fs), + SPIFFS_CFG_LOG_BLOCK_SZ(fs), + SPIFFS_CFG_PHYS_ERASE_SZ(fs), + SPIFFS_CFG_PHYS_ADDR(fs), + fd_space_size, cache_size); void *user_data; SPIFFS_LOCK(fs); user_data = fs->user_data; memset(fs, 0, sizeof(spiffs)); - memcpy(&fs->cfg, config, sizeof(spiffs_config)); + _SPIFFS_MEMCPY(&fs->cfg, config, sizeof(spiffs_config)); fs->user_data = user_data; fs->block_count = SPIFFS_CFG_PHYS_SZ(fs) / SPIFFS_CFG_LOG_BLOCK_SZ(fs); fs->work = &work[0]; fs->lu_work = &work[SPIFFS_CFG_LOG_PAGE_SZ(fs)]; memset(fd_space, 0, fd_space_size); - // align fd_space pointer to pointer size byte boundary, below is safe + // align fd_space pointer to pointer size byte boundary u8_t ptr_size = sizeof(void*); -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wpointer-to-int-cast" - u8_t addr_lsb = ((u8_t)fd_space) & (ptr_size-1); -#pragma GCC diagnostic pop + u8_t addr_lsb = ((u8_t)(intptr_t)fd_space) & (ptr_size-1); if (addr_lsb) { fd_space += (ptr_size-addr_lsb); fd_space_size -= (ptr_size-addr_lsb); @@ -103,11 +104,8 @@ s32_t SPIFFS_mount(spiffs *fs, spiffs_config *config, u8_t *work, fs->fd_space = fd_space; fs->fd_count = (fd_space_size/sizeof(spiffs_fd)); - // align cache pointer to 4 byte boundary, below is safe -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wpointer-to-int-cast" - addr_lsb = ((u8_t)cache) & (ptr_size-1); -#pragma GCC diagnostic pop + // align cache pointer to 4 byte boundary + addr_lsb = ((u8_t)(intptr_t)cache) & (ptr_size-1); if (addr_lsb) { u8_t *cache_8 = (u8_t *)cache; cache_8 += (ptr_size-addr_lsb); @@ -136,14 +134,14 @@ s32_t SPIFFS_mount(spiffs *fs, spiffs_config *config, u8_t *work, res = spiffs_obj_lu_scan(fs); SPIFFS_API_CHECK_RES_UNLOCK(fs, res); - SPIFFS_DBG("page index byte len: %i\n", SPIFFS_CFG_LOG_PAGE_SZ(fs)); - SPIFFS_DBG("object lookup pages: %i\n", SPIFFS_OBJ_LOOKUP_PAGES(fs)); - SPIFFS_DBG("page pages per block: %i\n", SPIFFS_PAGES_PER_BLOCK(fs)); - SPIFFS_DBG("page header length: %i\n", sizeof(spiffs_page_header)); - SPIFFS_DBG("object header index entries: %i\n", SPIFFS_OBJ_HDR_IX_LEN(fs)); - SPIFFS_DBG("object index entries: %i\n", SPIFFS_OBJ_IX_LEN(fs)); - SPIFFS_DBG("available file descriptors: %i\n", fs->fd_count); - SPIFFS_DBG("free blocks: %i\n", fs->free_blocks); + SPIFFS_DBG("page index byte len: "_SPIPRIi"\n", (u32_t)SPIFFS_CFG_LOG_PAGE_SZ(fs)); + SPIFFS_DBG("object lookup pages: "_SPIPRIi"\n", (u32_t)SPIFFS_OBJ_LOOKUP_PAGES(fs)); + SPIFFS_DBG("page pages per block: "_SPIPRIi"\n", (u32_t)SPIFFS_PAGES_PER_BLOCK(fs)); + SPIFFS_DBG("page header length: "_SPIPRIi"\n", (u32_t)sizeof(spiffs_page_header)); + SPIFFS_DBG("object header index entries: "_SPIPRIi"\n", (u32_t)SPIFFS_OBJ_HDR_IX_LEN(fs)); + SPIFFS_DBG("object index entries: "_SPIPRIi"\n", (u32_t)SPIFFS_OBJ_IX_LEN(fs)); + SPIFFS_DBG("available file descriptors: "_SPIPRIi"\n", (u32_t)fs->fd_count); + SPIFFS_DBG("free blocks: "_SPIPRIi"\n", (u32_t)fs->free_blocks); fs->check_cb_f = check_cb_f; @@ -155,6 +153,7 @@ s32_t SPIFFS_mount(spiffs *fs, spiffs_config *config, u8_t *work, } void SPIFFS_unmount(spiffs *fs) { + SPIFFS_API_DBG("%s\n", __func__); if (!SPIFFS_CHECK_CFG(fs) || !SPIFFS_CHECK_MOUNT(fs)) return; SPIFFS_LOCK(fs); u32_t i; @@ -178,10 +177,12 @@ s32_t SPIFFS_errno(spiffs *fs) { } void SPIFFS_clearerr(spiffs *fs) { + SPIFFS_API_DBG("%s\n", __func__); fs->err_code = SPIFFS_OK; } s32_t SPIFFS_creat(spiffs *fs, const char *path, spiffs_mode mode) { + SPIFFS_API_DBG("%s '%s'\n", __func__, path); #if SPIFFS_READ_ONLY (void)fs; (void)path; (void)mode; return SPIFFS_ERR_RO_NOT_IMPL; @@ -189,13 +190,16 @@ s32_t SPIFFS_creat(spiffs *fs, const char *path, spiffs_mode mode) { (void)mode; SPIFFS_API_CHECK_CFG(fs); SPIFFS_API_CHECK_MOUNT(fs); + if (strlen(path) > SPIFFS_OBJ_NAME_LEN - 1) { + SPIFFS_API_CHECK_RES(fs, SPIFFS_ERR_NAME_TOO_LONG); + } SPIFFS_LOCK(fs); spiffs_obj_id obj_id; s32_t res; res = spiffs_obj_lu_find_free_obj_id(fs, &obj_id, (const u8_t*)path); SPIFFS_API_CHECK_RES_UNLOCK(fs, res); - res = spiffs_object_create(fs, obj_id, (const u8_t*)path, SPIFFS_TYPE_FILE, 0); + res = spiffs_object_create(fs, obj_id, (const u8_t*)path, 0, SPIFFS_TYPE_FILE, 0); SPIFFS_API_CHECK_RES_UNLOCK(fs, res); SPIFFS_UNLOCK(fs); return 0; @@ -203,9 +207,13 @@ s32_t SPIFFS_creat(spiffs *fs, const char *path, spiffs_mode mode) { } spiffs_file SPIFFS_open(spiffs *fs, const char *path, spiffs_flags flags, spiffs_mode mode) { + SPIFFS_API_DBG("%s '%s' "_SPIPRIfl "\n", __func__, path, flags); (void)mode; SPIFFS_API_CHECK_CFG(fs); SPIFFS_API_CHECK_MOUNT(fs); + if (strlen(path) > SPIFFS_OBJ_NAME_LEN - 1) { + SPIFFS_API_CHECK_RES(fs, SPIFFS_ERR_NAME_TOO_LONG); + } SPIFFS_LOCK(fs); spiffs_fd *fd; @@ -213,14 +221,14 @@ spiffs_file SPIFFS_open(spiffs *fs, const char *path, spiffs_flags flags, spiffs #if SPIFFS_READ_ONLY // not valid flags in read only mode - flags &= ~SPIFFS_WRONLY | SPIFFS_CREAT | SPIFFS_TRUNC; + flags &= ~(SPIFFS_WRONLY | SPIFFS_CREAT | SPIFFS_TRUNC); #endif // SPIFFS_READ_ONLY - s32_t res = spiffs_fd_find_new(fs, &fd); + s32_t res = spiffs_fd_find_new(fs, &fd, path); SPIFFS_API_CHECK_RES_UNLOCK(fs, res); res = spiffs_object_find_object_index_header_by_name(fs, (const u8_t*)path, &pix); - if ((flags & SPIFFS_CREAT) == 0) { + if ((flags & SPIFFS_O_CREAT) == 0) { if (res < SPIFFS_OK) { spiffs_fd_return(fs, fd->file_nbr); } @@ -228,14 +236,14 @@ spiffs_file SPIFFS_open(spiffs *fs, const char *path, spiffs_flags flags, spiffs } if (res == SPIFFS_OK && - (flags & (SPIFFS_CREAT | SPIFFS_EXCL)) == (SPIFFS_CREAT | SPIFFS_EXCL)) { + (flags & (SPIFFS_O_CREAT | SPIFFS_O_EXCL)) == (SPIFFS_O_CREAT | SPIFFS_O_EXCL)) { // creat and excl and file exists - fail res = SPIFFS_ERR_FILE_EXISTS; spiffs_fd_return(fs, fd->file_nbr); SPIFFS_API_CHECK_RES_UNLOCK(fs, res); } - if ((flags & SPIFFS_CREAT) && res == SPIFFS_ERR_NOT_FOUND) { + if ((flags & SPIFFS_O_CREAT) && res == SPIFFS_ERR_NOT_FOUND) { #if !SPIFFS_READ_ONLY spiffs_obj_id obj_id; // no need to enter conflicting name here, already looked for it above @@ -244,12 +252,12 @@ spiffs_file SPIFFS_open(spiffs *fs, const char *path, spiffs_flags flags, spiffs spiffs_fd_return(fs, fd->file_nbr); } SPIFFS_API_CHECK_RES_UNLOCK(fs, res); - res = spiffs_object_create(fs, obj_id, (const u8_t*)path, SPIFFS_TYPE_FILE, &pix); + res = spiffs_object_create(fs, obj_id, (const u8_t*)path, 0, SPIFFS_TYPE_FILE, &pix); if (res < SPIFFS_OK) { spiffs_fd_return(fs, fd->file_nbr); } SPIFFS_API_CHECK_RES_UNLOCK(fs, res); - flags &= ~SPIFFS_TRUNC; + flags &= ~SPIFFS_O_TRUNC; #endif // !SPIFFS_READ_ONLY } else { if (res < SPIFFS_OK) { @@ -263,7 +271,7 @@ spiffs_file SPIFFS_open(spiffs *fs, const char *path, spiffs_flags flags, spiffs } SPIFFS_API_CHECK_RES_UNLOCK(fs, res); #if !SPIFFS_READ_ONLY - if (flags & SPIFFS_TRUNC) { + if (flags & SPIFFS_O_TRUNC) { res = spiffs_object_truncate(fd, 0, 0); if (res < SPIFFS_OK) { spiffs_fd_return(fs, fd->file_nbr); @@ -280,13 +288,14 @@ spiffs_file SPIFFS_open(spiffs *fs, const char *path, spiffs_flags flags, spiffs } spiffs_file SPIFFS_open_by_dirent(spiffs *fs, struct spiffs_dirent *e, spiffs_flags flags, spiffs_mode mode) { + SPIFFS_API_DBG("%s '%s':"_SPIPRIid " "_SPIPRIfl "\n", __func__, e->name, e->obj_id, flags); SPIFFS_API_CHECK_CFG(fs); SPIFFS_API_CHECK_MOUNT(fs); SPIFFS_LOCK(fs); spiffs_fd *fd; - s32_t res = spiffs_fd_find_new(fs, &fd); + s32_t res = spiffs_fd_find_new(fs, &fd, 0); SPIFFS_API_CHECK_RES_UNLOCK(fs, res); res = spiffs_object_open_by_page(fs, e->pix, fd, flags, mode); @@ -295,7 +304,7 @@ spiffs_file SPIFFS_open_by_dirent(spiffs *fs, struct spiffs_dirent *e, spiffs_fl } SPIFFS_API_CHECK_RES_UNLOCK(fs, res); #if !SPIFFS_READ_ONLY - if (flags & SPIFFS_TRUNC) { + if (flags & SPIFFS_O_TRUNC) { res = spiffs_object_truncate(fd, 0, 0); if (res < SPIFFS_OK) { spiffs_fd_return(fs, fd->file_nbr); @@ -312,13 +321,14 @@ spiffs_file SPIFFS_open_by_dirent(spiffs *fs, struct spiffs_dirent *e, spiffs_fl } spiffs_file SPIFFS_open_by_page(spiffs *fs, spiffs_page_ix page_ix, spiffs_flags flags, spiffs_mode mode) { + SPIFFS_API_DBG("%s "_SPIPRIpg " "_SPIPRIfl "\n", __func__, page_ix, flags); SPIFFS_API_CHECK_CFG(fs); SPIFFS_API_CHECK_MOUNT(fs); SPIFFS_LOCK(fs); spiffs_fd *fd; - s32_t res = spiffs_fd_find_new(fs, &fd); + s32_t res = spiffs_fd_find_new(fs, &fd, 0); SPIFFS_API_CHECK_RES_UNLOCK(fs, res); if (SPIFFS_IS_LOOKUP_PAGE(fs, page_ix)) { @@ -341,7 +351,7 @@ spiffs_file SPIFFS_open_by_page(spiffs *fs, spiffs_page_ix page_ix, spiffs_flags SPIFFS_API_CHECK_RES_UNLOCK(fs, res); #if !SPIFFS_READ_ONLY - if (flags & SPIFFS_TRUNC) { + if (flags & SPIFFS_O_TRUNC) { res = spiffs_object_truncate(fd, 0, 0); if (res < SPIFFS_OK) { spiffs_fd_return(fs, fd->file_nbr); @@ -357,7 +367,7 @@ spiffs_file SPIFFS_open_by_page(spiffs *fs, spiffs_page_ix page_ix, spiffs_flags return SPIFFS_FH_OFFS(fs, fd->file_nbr); } -s32_t SPIFFS_read(spiffs *fs, spiffs_file fh, void *buf, s32_t len) { +static s32_t spiffs_hydro_read(spiffs *fs, spiffs_file fh, void *buf, s32_t len) { SPIFFS_API_CHECK_CFG(fs); SPIFFS_API_CHECK_MOUNT(fs); SPIFFS_LOCK(fs); @@ -369,7 +379,7 @@ s32_t SPIFFS_read(spiffs *fs, spiffs_file fh, void *buf, s32_t len) { res = spiffs_fd_get(fs, fh, &fd); SPIFFS_API_CHECK_RES_UNLOCK(fs, res); - if ((fd->flags & SPIFFS_RDONLY) == 0) { + if ((fd->flags & SPIFFS_O_RDONLY) == 0) { res = SPIFFS_ERR_NOT_READABLE; SPIFFS_API_CHECK_RES_UNLOCK(fs, res); } @@ -411,6 +421,16 @@ s32_t SPIFFS_read(spiffs *fs, spiffs_file fh, void *buf, s32_t len) { return len; } +s32_t SPIFFS_read(spiffs *fs, spiffs_file fh, void *buf, s32_t len) { + SPIFFS_API_DBG("%s "_SPIPRIfd " "_SPIPRIi "\n", __func__, fh, len); + s32_t res = spiffs_hydro_read(fs, fh, buf, len); + if (res == SPIFFS_ERR_END_OF_OBJECT) { + res = 0; + } + return res; +} + + #if !SPIFFS_READ_ONLY static s32_t spiffs_hydro_write(spiffs *fs, spiffs_fd *fd, void *buf, u32_t offset, s32_t len) { (void)fs; @@ -436,6 +456,7 @@ static s32_t spiffs_hydro_write(spiffs *fs, spiffs_fd *fd, void *buf, u32_t offs #endif // !SPIFFS_READ_ONLY s32_t SPIFFS_write(spiffs *fs, spiffs_file fh, void *buf, s32_t len) { + SPIFFS_API_DBG("%s "_SPIPRIfd " "_SPIPRIi "\n", __func__, fh, len); #if SPIFFS_READ_ONLY (void)fs; (void)fh; (void)buf; (void)len; return SPIFFS_ERR_RO_NOT_IMPL; @@ -452,12 +473,12 @@ s32_t SPIFFS_write(spiffs *fs, spiffs_file fh, void *buf, s32_t len) { res = spiffs_fd_get(fs, fh, &fd); SPIFFS_API_CHECK_RES_UNLOCK(fs, res); - if ((fd->flags & SPIFFS_WRONLY) == 0) { + if ((fd->flags & SPIFFS_O_WRONLY) == 0) { res = SPIFFS_ERR_NOT_WRITABLE; SPIFFS_API_CHECK_RES_UNLOCK(fs, res); } - if ((fd->flags & SPIFFS_APPEND)) { + if ((fd->flags & SPIFFS_O_APPEND)) { fd->fdoffset = fd->size == SPIFFS_UNDEFINED_LEN ? 0 : fd->size; } @@ -469,7 +490,7 @@ s32_t SPIFFS_write(spiffs *fs, spiffs_file fh, void *buf, s32_t len) { fd->cache_page = spiffs_cache_page_get_by_fd(fs, fd); } #endif - if (fd->flags & SPIFFS_APPEND) { + if (fd->flags & SPIFFS_O_APPEND) { if (fd->size == SPIFFS_UNDEFINED_LEN) { offset = 0; } else { @@ -483,7 +504,7 @@ s32_t SPIFFS_write(spiffs *fs, spiffs_file fh, void *buf, s32_t len) { } #if SPIFFS_CACHE_WR - if ((fd->flags & SPIFFS_DIRECT) == 0) { + if ((fd->flags & SPIFFS_O_DIRECT) == 0) { if (len < (s32_t)SPIFFS_CFG_LOG_PAGE_SZ(fs)) { // small write, try to cache it u8_t alloc_cpage = 1; @@ -494,13 +515,13 @@ s32_t SPIFFS_write(spiffs *fs, spiffs_file fh, void *buf, s32_t len) { offset + len > fd->cache_page->offset + SPIFFS_CFG_LOG_PAGE_SZ(fs)) // writing beyond cache page { // boundary violation, write back cache first and allocate new - SPIFFS_CACHE_DBG("CACHE_WR_DUMP: dumping cache page %i for fd %i:%04x, boundary viol, offs:%i size:%i\n", + SPIFFS_CACHE_DBG("CACHE_WR_DUMP: dumping cache page "_SPIPRIi" for fd "_SPIPRIfd":"_SPIPRIid", boundary viol, offs:"_SPIPRIi" size:"_SPIPRIi"\n", fd->cache_page->ix, fd->file_nbr, fd->obj_id, fd->cache_page->offset, fd->cache_page->size); res = spiffs_hydro_write(fs, fd, spiffs_get_cache_page(fs, spiffs_get_cache(fs), fd->cache_page->ix), fd->cache_page->offset, fd->cache_page->size); spiffs_cache_fd_release(fs, fd->cache_page); - SPIFFS_API_CHECK_RES(fs, res); + SPIFFS_API_CHECK_RES_UNLOCK(fs, res); } else { // writing within cache alloc_cpage = 0; @@ -512,26 +533,37 @@ s32_t SPIFFS_write(spiffs *fs, spiffs_file fh, void *buf, s32_t len) { if (fd->cache_page) { fd->cache_page->offset = offset; fd->cache_page->size = 0; - SPIFFS_CACHE_DBG("CACHE_WR_ALLO: allocating cache page %i for fd %i:%04x\n", + SPIFFS_CACHE_DBG("CACHE_WR_ALLO: allocating cache page "_SPIPRIi" for fd "_SPIPRIfd":"_SPIPRIid"\n", fd->cache_page->ix, fd->file_nbr, fd->obj_id); } } if (fd->cache_page) { u32_t offset_in_cpage = offset - fd->cache_page->offset; - SPIFFS_CACHE_DBG("CACHE_WR_WRITE: storing to cache page %i for fd %i:%04x, offs %i:%i len %i\n", + SPIFFS_CACHE_DBG("CACHE_WR_WRITE: storing to cache page "_SPIPRIi" for fd "_SPIPRIfd":"_SPIPRIid", offs "_SPIPRIi":"_SPIPRIi" len "_SPIPRIi"\n", fd->cache_page->ix, fd->file_nbr, fd->obj_id, offset, offset_in_cpage, len); spiffs_cache *cache = spiffs_get_cache(fs); u8_t *cpage_data = spiffs_get_cache_page(fs, cache, fd->cache_page->ix); - memcpy(&cpage_data[offset_in_cpage], buf, len); +#ifdef _SPIFFS_TEST + { + intptr_t __a1 = (u8_t*)&cpage_data[offset_in_cpage]-(u8_t*)cache; + intptr_t __a2 = (u8_t*)&cpage_data[offset_in_cpage]+len-(u8_t*)cache; + intptr_t __b = sizeof(spiffs_cache) + cache->cpage_count * (sizeof(spiffs_cache_page) + SPIFFS_CFG_LOG_PAGE_SZ(fs)); + if (__a1 > __b || __a2 > __b) { + printf("FATAL OOB: CACHE_WR: memcpy to cache buffer ixs:%4ld..%4ld of %4ld\n", __a1, __a2, __b); + ERREXIT(); + } + } +#endif + _SPIFFS_MEMCPY(&cpage_data[offset_in_cpage], buf, len); fd->cache_page->size = MAX(fd->cache_page->size, offset_in_cpage + len); fd->fdoffset += len; SPIFFS_UNLOCK(fs); return len; } else { res = spiffs_hydro_write(fs, fd, buf, offset, len); - SPIFFS_API_CHECK_RES(fs, res); + SPIFFS_API_CHECK_RES_UNLOCK(fs, res); fd->fdoffset += len; SPIFFS_UNLOCK(fs); return res; @@ -540,22 +572,21 @@ s32_t SPIFFS_write(spiffs *fs, spiffs_file fh, void *buf, s32_t len) { // big write, no need to cache it - but first check if there is a cached write already if (fd->cache_page) { // write back cache first - SPIFFS_CACHE_DBG("CACHE_WR_DUMP: dumping cache page %i for fd %i:%04x, big write, offs:%i size:%i\n", + SPIFFS_CACHE_DBG("CACHE_WR_DUMP: dumping cache page "_SPIPRIi" for fd "_SPIPRIfd":"_SPIPRIid", big write, offs:"_SPIPRIi" size:"_SPIPRIi"\n", fd->cache_page->ix, fd->file_nbr, fd->obj_id, fd->cache_page->offset, fd->cache_page->size); res = spiffs_hydro_write(fs, fd, spiffs_get_cache_page(fs, spiffs_get_cache(fs), fd->cache_page->ix), fd->cache_page->offset, fd->cache_page->size); spiffs_cache_fd_release(fs, fd->cache_page); - SPIFFS_API_CHECK_RES(fs, res); - res = spiffs_hydro_write(fs, fd, buf, offset, len); - SPIFFS_API_CHECK_RES(fs, res); + SPIFFS_API_CHECK_RES_UNLOCK(fs, res); + // data written below } } } #endif res = spiffs_hydro_write(fs, fd, buf, offset, len); - SPIFFS_API_CHECK_RES(fs, res); + SPIFFS_API_CHECK_RES_UNLOCK(fs, res); fd->fdoffset += len; SPIFFS_UNLOCK(fs); @@ -565,6 +596,7 @@ s32_t SPIFFS_write(spiffs *fs, spiffs_file fh, void *buf, s32_t len) { } s32_t SPIFFS_lseek(spiffs *fs, spiffs_file fh, s32_t offs, int whence) { + SPIFFS_API_DBG("%s "_SPIPRIfd " "_SPIPRIi " %s\n", __func__, fh, offs, (const char* []){"SET","CUR","END","???"}[MIN(whence,3)]); SPIFFS_API_CHECK_CFG(fs); SPIFFS_API_CHECK_MOUNT(fs); SPIFFS_LOCK(fs); @@ -573,27 +605,32 @@ s32_t SPIFFS_lseek(spiffs *fs, spiffs_file fh, s32_t offs, int whence) { s32_t res; fh = SPIFFS_FH_UNOFFS(fs, fh); res = spiffs_fd_get(fs, fh, &fd); - SPIFFS_API_CHECK_RES(fs, res); + SPIFFS_API_CHECK_RES_UNLOCK(fs, res); #if SPIFFS_CACHE_WR spiffs_fflush_cache(fs, fh); #endif + s32_t file_size = fd->size == SPIFFS_UNDEFINED_LEN ? 0 : fd->size; + switch (whence) { case SPIFFS_SEEK_CUR: offs = fd->fdoffset+offs; break; case SPIFFS_SEEK_END: - offs = (fd->size == SPIFFS_UNDEFINED_LEN ? 0 : fd->size) + offs; + offs = file_size + offs; break; } - - if ((offs > (s32_t)fd->size) && (SPIFFS_UNDEFINED_LEN != fd->size)) { + if (offs < 0) { + SPIFFS_API_CHECK_RES_UNLOCK(fs, SPIFFS_ERR_SEEK_BOUNDS); + } + if (offs > file_size) { + fd->fdoffset = file_size; res = SPIFFS_ERR_END_OF_OBJECT; } SPIFFS_API_CHECK_RES_UNLOCK(fs, res); - spiffs_span_ix data_spix = offs / SPIFFS_DATA_PAGE_SIZE(fs); + spiffs_span_ix data_spix = (offs > 0 ? (offs-1) : 0) / SPIFFS_DATA_PAGE_SIZE(fs); spiffs_span_ix objix_spix = SPIFFS_OBJ_IX_ENTRY_SPAN_IX(fs, data_spix); if (fd->cursor_objix_spix != objix_spix) { spiffs_page_ix pix; @@ -611,19 +648,23 @@ s32_t SPIFFS_lseek(spiffs *fs, spiffs_file fh, s32_t offs, int whence) { } s32_t SPIFFS_remove(spiffs *fs, const char *path) { + SPIFFS_API_DBG("%s '%s'\n", __func__, path); #if SPIFFS_READ_ONLY (void)fs; (void)path; return SPIFFS_ERR_RO_NOT_IMPL; #else SPIFFS_API_CHECK_CFG(fs); SPIFFS_API_CHECK_MOUNT(fs); + if (strlen(path) > SPIFFS_OBJ_NAME_LEN - 1) { + SPIFFS_API_CHECK_RES(fs, SPIFFS_ERR_NAME_TOO_LONG); + } SPIFFS_LOCK(fs); spiffs_fd *fd; spiffs_page_ix pix; s32_t res; - res = spiffs_fd_find_new(fs, &fd); + res = spiffs_fd_find_new(fs, &fd, 0); SPIFFS_API_CHECK_RES_UNLOCK(fs, res); res = spiffs_object_find_object_index_header_by_name(fs, (const u8_t*)path, &pix); @@ -650,6 +691,7 @@ s32_t SPIFFS_remove(spiffs *fs, const char *path) { } s32_t SPIFFS_fremove(spiffs *fs, spiffs_file fh) { + SPIFFS_API_DBG("%s "_SPIPRIfd "\n", __func__, fh); #if SPIFFS_READ_ONLY (void)fs; (void)fh; return SPIFFS_ERR_RO_NOT_IMPL; @@ -664,7 +706,7 @@ s32_t SPIFFS_fremove(spiffs *fs, spiffs_file fh) { res = spiffs_fd_get(fs, fh, &fd); SPIFFS_API_CHECK_RES_UNLOCK(fs, res); - if ((fd->flags & SPIFFS_WRONLY) == 0) { + if ((fd->flags & SPIFFS_O_WRONLY) == 0) { res = SPIFFS_ERR_NOT_WRITABLE; SPIFFS_API_CHECK_RES_UNLOCK(fs, res); } @@ -702,13 +744,20 @@ static s32_t spiffs_stat_pix(spiffs *fs, spiffs_page_ix pix, spiffs_file fh, spi s->size = objix_hdr.size == SPIFFS_UNDEFINED_LEN ? 0 : objix_hdr.size; s->pix = pix; strncpy((char *)s->name, (char *)objix_hdr.name, SPIFFS_OBJ_NAME_LEN); +#if SPIFFS_OBJ_META_LEN + _SPIFFS_MEMCPY(s->meta, objix_hdr.meta, SPIFFS_OBJ_META_LEN); +#endif return res; } s32_t SPIFFS_stat(spiffs *fs, const char *path, spiffs_stat *s) { + SPIFFS_API_DBG("%s '%s'\n", __func__, path); SPIFFS_API_CHECK_CFG(fs); SPIFFS_API_CHECK_MOUNT(fs); + if (strlen(path) > SPIFFS_OBJ_NAME_LEN - 1) { + SPIFFS_API_CHECK_RES(fs, SPIFFS_ERR_NAME_TOO_LONG); + } SPIFFS_LOCK(fs); s32_t res; @@ -725,6 +774,7 @@ s32_t SPIFFS_stat(spiffs *fs, const char *path, spiffs_stat *s) { } s32_t SPIFFS_fstat(spiffs *fs, spiffs_file fh, spiffs_stat *s) { + SPIFFS_API_DBG("%s "_SPIPRIfd "\n", __func__, fh); SPIFFS_API_CHECK_CFG(fs); SPIFFS_API_CHECK_MOUNT(fs); SPIFFS_LOCK(fs); @@ -760,13 +810,13 @@ static s32_t spiffs_fflush_cache(spiffs *fs, spiffs_file fh) { res = spiffs_fd_get(fs, fh, &fd); SPIFFS_API_CHECK_RES(fs, res); - if ((fd->flags & SPIFFS_DIRECT) == 0) { + if ((fd->flags & SPIFFS_O_DIRECT) == 0) { if (fd->cache_page == 0) { // see if object id is associated with cache already fd->cache_page = spiffs_cache_page_get_by_fd(fs, fd); } if (fd->cache_page) { - SPIFFS_CACHE_DBG("CACHE_WR_DUMP: dumping cache page %i for fd %i:%04x, flush, offs:%i size:%i\n", + SPIFFS_CACHE_DBG("CACHE_WR_DUMP: dumping cache page "_SPIPRIi" for fd "_SPIPRIfd":"_SPIPRIid", flush, offs:"_SPIPRIi" size:"_SPIPRIi"\n", fd->cache_page->ix, fd->file_nbr, fd->obj_id, fd->cache_page->offset, fd->cache_page->size); res = spiffs_hydro_write(fs, fd, spiffs_get_cache_page(fs, spiffs_get_cache(fs), fd->cache_page->ix), @@ -784,6 +834,7 @@ static s32_t spiffs_fflush_cache(spiffs *fs, spiffs_file fh) { #endif s32_t SPIFFS_fflush(spiffs *fs, spiffs_file fh) { + SPIFFS_API_DBG("%s "_SPIPRIfd "\n", __func__, fh); (void)fh; SPIFFS_API_CHECK_CFG(fs); SPIFFS_API_CHECK_MOUNT(fs); @@ -800,6 +851,7 @@ s32_t SPIFFS_fflush(spiffs *fs, spiffs_file fh) { } s32_t SPIFFS_close(spiffs *fs, spiffs_file fh) { + SPIFFS_API_DBG("%s "_SPIPRIfd "\n", __func__, fh); SPIFFS_API_CHECK_CFG(fs); SPIFFS_API_CHECK_MOUNT(fs); @@ -819,22 +871,27 @@ s32_t SPIFFS_close(spiffs *fs, spiffs_file fh) { return res; } -s32_t SPIFFS_rename(spiffs *fs, const char *old, const char *new) { +s32_t SPIFFS_rename(spiffs *fs, const char *old_path, const char *new_path) { + SPIFFS_API_DBG("%s %s %s\n", __func__, old_path, new_path); #if SPIFFS_READ_ONLY - (void)fs; (void)old; (void)new; + (void)fs; (void)old_path; (void)new_path; return SPIFFS_ERR_RO_NOT_IMPL; #else SPIFFS_API_CHECK_CFG(fs); SPIFFS_API_CHECK_MOUNT(fs); + if (strlen(new_path) > SPIFFS_OBJ_NAME_LEN - 1 || + strlen(old_path) > SPIFFS_OBJ_NAME_LEN - 1) { + SPIFFS_API_CHECK_RES(fs, SPIFFS_ERR_NAME_TOO_LONG); + } SPIFFS_LOCK(fs); spiffs_page_ix pix_old, pix_dummy; spiffs_fd *fd; - s32_t res = spiffs_object_find_object_index_header_by_name(fs, (const u8_t*)old, &pix_old); + s32_t res = spiffs_object_find_object_index_header_by_name(fs, (const u8_t*)old_path, &pix_old); SPIFFS_API_CHECK_RES_UNLOCK(fs, res); - res = spiffs_object_find_object_index_header_by_name(fs, (const u8_t*)new, &pix_dummy); + res = spiffs_object_find_object_index_header_by_name(fs, (const u8_t*)new_path, &pix_dummy); if (res == SPIFFS_ERR_NOT_FOUND) { res = SPIFFS_OK; } else if (res == SPIFFS_OK) { @@ -842,7 +899,7 @@ s32_t SPIFFS_rename(spiffs *fs, const char *old, const char *new) { } SPIFFS_API_CHECK_RES_UNLOCK(fs, res); - res = spiffs_fd_find_new(fs, &fd); + res = spiffs_fd_find_new(fs, &fd, 0); SPIFFS_API_CHECK_RES_UNLOCK(fs, res); res = spiffs_object_open_by_page(fs, pix_old, fd, 0, 0); @@ -851,7 +908,50 @@ s32_t SPIFFS_rename(spiffs *fs, const char *old, const char *new) { } SPIFFS_API_CHECK_RES_UNLOCK(fs, res); - res = spiffs_object_update_index_hdr(fs, fd, fd->obj_id, fd->objix_hdr_pix, 0, (const u8_t*)new, + res = spiffs_object_update_index_hdr(fs, fd, fd->obj_id, fd->objix_hdr_pix, 0, (const u8_t*)new_path, + 0, 0, &pix_dummy); +#if SPIFFS_TEMPORAL_FD_CACHE + if (res == SPIFFS_OK) { + spiffs_fd_temporal_cache_rehash(fs, old_path, new_path); + } +#endif + + spiffs_fd_return(fs, fd->file_nbr); + + SPIFFS_API_CHECK_RES_UNLOCK(fs, res); + + SPIFFS_UNLOCK(fs); + + return res; +#endif // SPIFFS_READ_ONLY +} + +#if SPIFFS_OBJ_META_LEN +s32_t SPIFFS_update_meta(spiffs *fs, const char *name, const void *meta) { +#if SPIFFS_READ_ONLY + (void)fs; (void)name; (void)meta; + return SPIFFS_ERR_RO_NOT_IMPL; +#else + SPIFFS_API_CHECK_CFG(fs); + SPIFFS_API_CHECK_MOUNT(fs); + SPIFFS_LOCK(fs); + + spiffs_page_ix pix, pix_dummy; + spiffs_fd *fd; + + s32_t res = spiffs_object_find_object_index_header_by_name(fs, (const u8_t*)name, &pix); + SPIFFS_API_CHECK_RES_UNLOCK(fs, res); + + res = spiffs_fd_find_new(fs, &fd, 0); + SPIFFS_API_CHECK_RES_UNLOCK(fs, res); + + res = spiffs_object_open_by_page(fs, pix, fd, 0, 0); + if (res != SPIFFS_OK) { + spiffs_fd_return(fs, fd->file_nbr); + } + SPIFFS_API_CHECK_RES_UNLOCK(fs, res); + + res = spiffs_object_update_index_hdr(fs, fd, fd->obj_id, fd->objix_hdr_pix, 0, 0, meta, 0, &pix_dummy); spiffs_fd_return(fs, fd->file_nbr); @@ -864,7 +964,42 @@ s32_t SPIFFS_rename(spiffs *fs, const char *old, const char *new) { #endif // SPIFFS_READ_ONLY } +s32_t SPIFFS_fupdate_meta(spiffs *fs, spiffs_file fh, const void *meta) { +#if SPIFFS_READ_ONLY + (void)fs; (void)fh; (void)meta; + return SPIFFS_ERR_RO_NOT_IMPL; +#else + SPIFFS_API_CHECK_CFG(fs); + SPIFFS_API_CHECK_MOUNT(fs); + SPIFFS_LOCK(fs); + + s32_t res; + spiffs_fd *fd; + spiffs_page_ix pix_dummy; + + fh = SPIFFS_FH_UNOFFS(fs, fh); + res = spiffs_fd_get(fs, fh, &fd); + SPIFFS_API_CHECK_RES_UNLOCK(fs, res); + + if ((fd->flags & SPIFFS_O_WRONLY) == 0) { + res = SPIFFS_ERR_NOT_WRITABLE; + SPIFFS_API_CHECK_RES_UNLOCK(fs, res); + } + + res = spiffs_object_update_index_hdr(fs, fd, fd->obj_id, fd->objix_hdr_pix, 0, 0, meta, + 0, &pix_dummy); + + SPIFFS_API_CHECK_RES_UNLOCK(fs, res); + + SPIFFS_UNLOCK(fs); + + return res; +#endif // SPIFFS_READ_ONLY +} +#endif // SPIFFS_OBJ_META_LEN + spiffs_DIR *SPIFFS_opendir(spiffs *fs, const char *name, spiffs_DIR *d) { + SPIFFS_API_DBG("%s\n", __func__); (void)name; if (!SPIFFS_CHECK_CFG((fs))) { @@ -904,7 +1039,7 @@ static s32_t spiffs_read_dir_v( if (res != SPIFFS_OK) return res; if ((obj_id & SPIFFS_OBJ_ID_IX_FLAG) && objix_hdr.p_hdr.span_ix == 0 && - (objix_hdr.p_hdr.flags& (SPIFFS_PH_FLAG_DELET | SPIFFS_PH_FLAG_FINAL | SPIFFS_PH_FLAG_IXDELE)) == + (objix_hdr.p_hdr.flags & (SPIFFS_PH_FLAG_DELET | SPIFFS_PH_FLAG_FINAL | SPIFFS_PH_FLAG_IXDELE)) == (SPIFFS_PH_FLAG_DELET | SPIFFS_PH_FLAG_IXDELE)) { struct spiffs_dirent *e = (struct spiffs_dirent*)user_var_p; e->obj_id = obj_id; @@ -912,13 +1047,16 @@ static s32_t spiffs_read_dir_v( e->type = objix_hdr.type; e->size = objix_hdr.size == SPIFFS_UNDEFINED_LEN ? 0 : objix_hdr.size; e->pix = pix; +#if SPIFFS_OBJ_META_LEN + _SPIFFS_MEMCPY(e->meta, objix_hdr.meta, SPIFFS_OBJ_META_LEN); +#endif return SPIFFS_OK; } - return SPIFFS_VIS_COUNTINUE; } struct spiffs_dirent *SPIFFS_readdir(spiffs_DIR *d, struct spiffs_dirent *e) { + SPIFFS_API_DBG("%s\n", __func__); if (!SPIFFS_CHECK_MOUNT(d->fs)) { d->fs->err_code = SPIFFS_ERR_NOT_MOUNTED; return 0; @@ -943,6 +1081,7 @@ struct spiffs_dirent *SPIFFS_readdir(spiffs_DIR *d, struct spiffs_dirent *e) { if (res == SPIFFS_OK) { d->block = bix; d->entry = entry + 1; + e->obj_id &= ~SPIFFS_OBJ_ID_IX_FLAG; ret = e; } else { d->fs->err_code = res; @@ -952,12 +1091,14 @@ struct spiffs_dirent *SPIFFS_readdir(spiffs_DIR *d, struct spiffs_dirent *e) { } s32_t SPIFFS_closedir(spiffs_DIR *d) { + SPIFFS_API_DBG("%s\n", __func__); SPIFFS_API_CHECK_CFG(d->fs); SPIFFS_API_CHECK_MOUNT(d->fs); return 0; } s32_t SPIFFS_check(spiffs *fs) { + SPIFFS_API_DBG("%s\n", __func__); #if SPIFFS_READ_ONLY (void)fs; return SPIFFS_ERR_RO_NOT_IMPL; @@ -981,6 +1122,7 @@ s32_t SPIFFS_check(spiffs *fs) { } s32_t SPIFFS_info(spiffs *fs, u32_t *total, u32_t *used) { + SPIFFS_API_DBG("%s\n", __func__); s32_t res = SPIFFS_OK; SPIFFS_API_CHECK_CFG(fs); SPIFFS_API_CHECK_MOUNT(fs); @@ -1005,6 +1147,7 @@ s32_t SPIFFS_info(spiffs *fs, u32_t *total, u32_t *used) { } s32_t SPIFFS_gc_quick(spiffs *fs, u16_t max_free_pages) { + SPIFFS_API_DBG("%s "_SPIPRIi "\n", __func__, max_free_pages); #if SPIFFS_READ_ONLY (void)fs; (void)max_free_pages; return SPIFFS_ERR_RO_NOT_IMPL; @@ -1024,6 +1167,7 @@ s32_t SPIFFS_gc_quick(spiffs *fs, u16_t max_free_pages) { s32_t SPIFFS_gc(spiffs *fs, u32_t size) { + SPIFFS_API_DBG("%s "_SPIPRIi "\n", __func__, size); #if SPIFFS_READ_ONLY (void)fs; (void)size; return SPIFFS_ERR_RO_NOT_IMPL; @@ -1042,6 +1186,7 @@ s32_t SPIFFS_gc(spiffs *fs, u32_t size) { } s32_t SPIFFS_eof(spiffs *fs, spiffs_file fh) { + SPIFFS_API_DBG("%s "_SPIPRIfd "\n", __func__, fh); s32_t res; SPIFFS_API_CHECK_CFG(fs); SPIFFS_API_CHECK_MOUNT(fs); @@ -1065,6 +1210,7 @@ s32_t SPIFFS_eof(spiffs *fs, spiffs_file fh) { } s32_t SPIFFS_tell(spiffs *fs, spiffs_file fh) { + SPIFFS_API_DBG("%s "_SPIPRIfd "\n", __func__, fh); s32_t res; SPIFFS_API_CHECK_CFG(fs); SPIFFS_API_CHECK_MOUNT(fs); @@ -1088,12 +1234,148 @@ s32_t SPIFFS_tell(spiffs *fs, spiffs_file fh) { } s32_t SPIFFS_set_file_callback_func(spiffs *fs, spiffs_file_callback cb_func) { + SPIFFS_API_DBG("%s\n", __func__); SPIFFS_LOCK(fs); fs->file_cb_f = cb_func; SPIFFS_UNLOCK(fs); return 0; } +#if SPIFFS_IX_MAP + +s32_t SPIFFS_ix_map(spiffs *fs, spiffs_file fh, spiffs_ix_map *map, + u32_t offset, u32_t len, spiffs_page_ix *map_buf) { + SPIFFS_API_DBG("%s "_SPIPRIfd " "_SPIPRIi " "_SPIPRIi "\n", __func__, fh, offset, len); + s32_t res; + SPIFFS_API_CHECK_CFG(fs); + SPIFFS_API_CHECK_MOUNT(fs); + SPIFFS_LOCK(fs); + + fh = SPIFFS_FH_UNOFFS(fs, fh); + + spiffs_fd *fd; + res = spiffs_fd_get(fs, fh, &fd); + SPIFFS_API_CHECK_RES_UNLOCK(fs, res); + + if (fd->ix_map) { + SPIFFS_API_CHECK_RES_UNLOCK(fs, SPIFFS_ERR_IX_MAP_MAPPED); + } + + map->map_buf = map_buf; + map->offset = offset; + // nb: spix range includes last + map->start_spix = offset / SPIFFS_DATA_PAGE_SIZE(fs); + map->end_spix = (offset + len) / SPIFFS_DATA_PAGE_SIZE(fs); + memset(map_buf, 0, sizeof(spiffs_page_ix) * (map->end_spix - map->start_spix + 1)); + fd->ix_map = map; + + // scan for pixes + res = spiffs_populate_ix_map(fs, fd, 0, map->end_spix - map->start_spix + 1); + SPIFFS_API_CHECK_RES_UNLOCK(fs, res); + + SPIFFS_UNLOCK(fs); + return res; +} + +s32_t SPIFFS_ix_unmap(spiffs *fs, spiffs_file fh) { + SPIFFS_API_DBG("%s "_SPIPRIfd "\n", __func__, fh); + s32_t res; + SPIFFS_API_CHECK_CFG(fs); + SPIFFS_API_CHECK_MOUNT(fs); + SPIFFS_LOCK(fs); + + fh = SPIFFS_FH_UNOFFS(fs, fh); + + spiffs_fd *fd; + res = spiffs_fd_get(fs, fh, &fd); + SPIFFS_API_CHECK_RES_UNLOCK(fs, res); + + if (fd->ix_map == 0) { + SPIFFS_API_CHECK_RES_UNLOCK(fs, SPIFFS_ERR_IX_MAP_UNMAPPED); + } + + fd->ix_map = 0; + + SPIFFS_UNLOCK(fs); + return res; +} + +s32_t SPIFFS_ix_remap(spiffs *fs, spiffs_file fh, u32_t offset) { + SPIFFS_API_DBG("%s "_SPIPRIfd " "_SPIPRIi "\n", __func__, fh, offset); + s32_t res = SPIFFS_OK; + SPIFFS_API_CHECK_CFG(fs); + SPIFFS_API_CHECK_MOUNT(fs); + SPIFFS_LOCK(fs); + + fh = SPIFFS_FH_UNOFFS(fs, fh); + + spiffs_fd *fd; + res = spiffs_fd_get(fs, fh, &fd); + SPIFFS_API_CHECK_RES_UNLOCK(fs, res); + + if (fd->ix_map == 0) { + SPIFFS_API_CHECK_RES_UNLOCK(fs, SPIFFS_ERR_IX_MAP_UNMAPPED); + } + + spiffs_ix_map *map = fd->ix_map; + + s32_t spix_diff = offset / SPIFFS_DATA_PAGE_SIZE(fs) - map->start_spix; + map->offset = offset; + + // move existing pixes if within map offs + if (spix_diff != 0) { + // move vector + int i; + const s32_t vec_len = map->end_spix - map->start_spix + 1; // spix range includes last + map->start_spix += spix_diff; + map->end_spix += spix_diff; + if (spix_diff >= vec_len) { + // moving beyond range + memset(&map->map_buf, 0, vec_len * sizeof(spiffs_page_ix)); + // populate_ix_map is inclusive + res = spiffs_populate_ix_map(fs, fd, 0, vec_len-1); + SPIFFS_API_CHECK_RES_UNLOCK(fs, res); + } else if (spix_diff > 0) { + // diff positive + for (i = 0; i < vec_len - spix_diff; i++) { + map->map_buf[i] = map->map_buf[i + spix_diff]; + } + // memset is non-inclusive + memset(&map->map_buf[vec_len - spix_diff], 0, spix_diff * sizeof(spiffs_page_ix)); + // populate_ix_map is inclusive + res = spiffs_populate_ix_map(fs, fd, vec_len - spix_diff, vec_len-1); + SPIFFS_API_CHECK_RES_UNLOCK(fs, res); + } else { + // diff negative + for (i = vec_len - 1; i >= -spix_diff; i--) { + map->map_buf[i] = map->map_buf[i + spix_diff]; + } + // memset is non-inclusive + memset(&map->map_buf[0], 0, -spix_diff * sizeof(spiffs_page_ix)); + // populate_ix_map is inclusive + res = spiffs_populate_ix_map(fs, fd, 0, -spix_diff - 1); + SPIFFS_API_CHECK_RES_UNLOCK(fs, res); + } + + } + + SPIFFS_UNLOCK(fs); + return res; +} + +s32_t SPIFFS_bytes_to_ix_map_entries(spiffs *fs, u32_t bytes) { + SPIFFS_API_CHECK_CFG(fs); + // always add one extra page, the offset might change to the middle of a page + return (bytes + SPIFFS_DATA_PAGE_SIZE(fs) ) / SPIFFS_DATA_PAGE_SIZE(fs); +} + +s32_t SPIFFS_ix_map_entries_to_bytes(spiffs *fs, u32_t map_page_ix_entries) { + SPIFFS_API_CHECK_CFG(fs); + return map_page_ix_entries * SPIFFS_DATA_PAGE_SIZE(fs); +} + +#endif // SPIFFS_IX_MAP + #if SPIFFS_TEST_VISUALISATION s32_t SPIFFS_vis(spiffs *fs) { s32_t res = SPIFFS_OK; @@ -1119,7 +1401,7 @@ s32_t SPIFFS_vis(spiffs *fs) { cur_entry - entry_offset < entries_per_page && cur_entry < (int)(SPIFFS_PAGES_PER_BLOCK(fs)-SPIFFS_OBJ_LOOKUP_PAGES(fs))) { spiffs_obj_id obj_id = obj_lu_buf[cur_entry-entry_offset]; if (cur_entry == 0) { - spiffs_printf("%4i ", bix); + spiffs_printf(_SPIPRIbl" ", bix); } else if ((cur_entry & 0x3f) == 0) { spiffs_printf(" "); } @@ -1147,7 +1429,7 @@ s32_t SPIFFS_vis(spiffs *fs) { SPIFFS_CHECK_RES(res); if (erase_count != (spiffs_obj_id)-1) { - spiffs_printf("\tera_cnt: %i\n", erase_count); + spiffs_printf("\tera_cnt: "_SPIPRIi"\n", erase_count); } else { spiffs_printf("\tera_cnt: N/A\n"); } @@ -1155,17 +1437,16 @@ s32_t SPIFFS_vis(spiffs *fs) { bix++; } // per block - spiffs_printf("era_cnt_max: %i\n", fs->max_erase_count); - spiffs_printf("last_errno: %i\n", fs->err_code); - spiffs_printf("blocks: %i\n", fs->block_count); - spiffs_printf("free_blocks: %i\n", fs->free_blocks); - spiffs_printf("page_alloc: %i\n", fs->stats_p_allocated); - spiffs_printf("page_delet: %i\n", fs->stats_p_deleted); + spiffs_printf("era_cnt_max: "_SPIPRIi"\n", fs->max_erase_count); + spiffs_printf("last_errno: "_SPIPRIi"\n", fs->err_code); + spiffs_printf("blocks: "_SPIPRIi"\n", fs->block_count); + spiffs_printf("free_blocks: "_SPIPRIi"\n", fs->free_blocks); + spiffs_printf("page_alloc: "_SPIPRIi"\n", fs->stats_p_allocated); + spiffs_printf("page_delet: "_SPIPRIi"\n", fs->stats_p_deleted); + SPIFFS_UNLOCK(fs); u32_t total, used; SPIFFS_info(fs, &total, &used); - spiffs_printf("used: %i of %i\n", used, total); - - SPIFFS_UNLOCK(fs); + spiffs_printf("used: "_SPIPRIi" of "_SPIPRIi"\n", used, total); return res; } #endif diff --git a/cores/esp8266/spiffs/spiffs_nucleus.c b/cores/esp8266/spiffs/spiffs_nucleus.c index 8a3c72530..f2eda254a 100644 --- a/cores/esp8266/spiffs/spiffs_nucleus.c +++ b/cores/esp8266/spiffs/spiffs_nucleus.c @@ -142,7 +142,7 @@ s32_t spiffs_obj_lu_find_entry_visitor( int entries_per_page = (SPIFFS_CFG_LOG_PAGE_SZ(fs) / sizeof(spiffs_obj_id)); // wrap initial - if (cur_entry >= (int)SPIFFS_OBJ_LOOKUP_MAX_ENTRIES(fs) - 1) { + if (cur_entry > (int)SPIFFS_OBJ_LOOKUP_MAX_ENTRIES(fs) - 1) { cur_entry = 0; cur_block++; cur_block_addr = cur_block * SPIFFS_CFG_LOG_BLOCK_SZ(fs); @@ -232,7 +232,7 @@ s32_t spiffs_erase_block( // here we ignore res, just try erasing the block while (size > 0) { - SPIFFS_DBG("erase %08x:%08x\n", addr, SPIFFS_CFG_PHYS_ERASE_SZ(fs)); + SPIFFS_DBG("erase "_SPIPRIad":"_SPIPRIi"\n", addr, SPIFFS_CFG_PHYS_ERASE_SZ(fs)); SPIFFS_HAL_ERASE(fs, addr, SPIFFS_CFG_PHYS_ERASE_SZ(fs)); addr += SPIFFS_CFG_PHYS_ERASE_SZ(fs); @@ -270,7 +270,7 @@ s32_t spiffs_probe( s32_t res; u32_t paddr; spiffs dummy_fs; // create a dummy fs struct just to be able to use macros - memcpy(&dummy_fs.cfg, cfg, sizeof(spiffs_config)); + _SPIFFS_MEMCPY(&dummy_fs.cfg, cfg, sizeof(spiffs_config)); dummy_fs.block_count = 0; // Read three magics, as one block may be in an aborted erase state. @@ -407,7 +407,7 @@ s32_t spiffs_obj_lu_scan( #if SPIFFS_USE_MAGIC if (unerased_bix != (spiffs_block_ix)-1) { // found one unerased block, remedy - SPIFFS_DBG("mount: erase block %i\n", bix); + SPIFFS_DBG("mount: erase block "_SPIPRIbl"\n", bix); #if SPIFFS_READ_ONLY res = SPIFFS_ERR_RO_ABORTED_OPERATION; #else @@ -467,7 +467,7 @@ s32_t spiffs_obj_lu_find_free( SPIFFS_OBJ_ID_FREE, block_ix, lu_entry); if (res == SPIFFS_OK) { fs->free_cursor_block_ix = *block_ix; - fs->free_cursor_obj_lu_entry = *lu_entry; + fs->free_cursor_obj_lu_entry = (*lu_entry) + 1; if (*lu_entry == 0) { fs->free_blocks--; } @@ -600,6 +600,152 @@ s32_t spiffs_obj_lu_find_id_and_span_by_phdr( return res; } +#if SPIFFS_IX_MAP + +// update index map of given fd with given object index data +static void spiffs_update_ix_map(spiffs *fs, + spiffs_fd *fd, spiffs_span_ix objix_spix, spiffs_page_object_ix *objix) { +#if SPIFFS_SINGLETON + (void)fs; +#endif + spiffs_ix_map *map = fd->ix_map; + spiffs_span_ix map_objix_start_spix = SPIFFS_OBJ_IX_ENTRY_SPAN_IX(fs, map->start_spix); + spiffs_span_ix map_objix_end_spix = SPIFFS_OBJ_IX_ENTRY_SPAN_IX(fs, map->end_spix); + + // check if updated ix is within map range + if (objix_spix < map_objix_start_spix || objix_spix > map_objix_end_spix) { + return; + } + + // update memory mapped page index buffer to new pages + + // get range of updated object index map data span indices + spiffs_span_ix objix_data_spix_start = + SPIFFS_DATA_SPAN_IX_FOR_OBJ_IX_SPAN_IX(fs, objix_spix); + spiffs_span_ix objix_data_spix_end = objix_data_spix_start + + (objix_spix == 0 ? SPIFFS_OBJ_HDR_IX_LEN(fs) : SPIFFS_OBJ_IX_LEN(fs)); + + // calc union of object index range and index map range array + spiffs_span_ix map_spix = MAX(map->start_spix, objix_data_spix_start); + spiffs_span_ix map_spix_end = MIN(map->end_spix + 1, objix_data_spix_end); + + while (map_spix < map_spix_end) { + spiffs_page_ix objix_data_pix; + if (objix_spix == 0) { + // get data page from object index header page + objix_data_pix = ((spiffs_page_ix*)((u8_t *)objix + sizeof(spiffs_page_object_ix_header)))[map_spix]; + } else { + // get data page from object index page + objix_data_pix = ((spiffs_page_ix*)((u8_t *)objix + sizeof(spiffs_page_object_ix)))[SPIFFS_OBJ_IX_ENTRY(fs, map_spix)]; + } + + if (objix_data_pix == (spiffs_page_ix)-1) { + // reached end of object, abort + break; + } + + map->map_buf[map_spix - map->start_spix] = objix_data_pix; + SPIFFS_DBG("map "_SPIPRIid":"_SPIPRIsp" ("_SPIPRIsp"--"_SPIPRIsp") objix.spix:"_SPIPRIsp" to pix "_SPIPRIpg"\n", + fd->obj_id, map_spix - map->start_spix, + map->start_spix, map->end_spix, + objix->p_hdr.span_ix, + objix_data_pix); + + map_spix++; + } +} + +typedef struct { + spiffs_fd *fd; + u32_t remaining_objix_pages_to_visit; + spiffs_span_ix map_objix_start_spix; + spiffs_span_ix map_objix_end_spix; +} spiffs_ix_map_populate_state; + +static s32_t spiffs_populate_ix_map_v( + spiffs *fs, + spiffs_obj_id obj_id, + spiffs_block_ix bix, + int ix_entry, + const void *user_const_p, + void *user_var_p) { + (void)user_const_p; + s32_t res; + spiffs_ix_map_populate_state *state = (spiffs_ix_map_populate_state *)user_var_p; + spiffs_page_ix pix = SPIFFS_OBJ_LOOKUP_ENTRY_TO_PIX(fs, bix, ix_entry); + + // load header to check it + spiffs_page_object_ix *objix = (spiffs_page_object_ix *)fs->work; + res = _spiffs_rd(fs, SPIFFS_OP_T_OBJ_LU2 | SPIFFS_OP_C_READ, + 0, SPIFFS_PAGE_TO_PADDR(fs, pix), sizeof(spiffs_page_object_ix), (u8_t *)objix); + SPIFFS_CHECK_RES(res); + SPIFFS_VALIDATE_OBJIX(objix->p_hdr, obj_id, objix->p_hdr.span_ix); + + // check if hdr is ok, and if objix range overlap with ix map range + if ((objix->p_hdr.flags & (SPIFFS_PH_FLAG_DELET | SPIFFS_PH_FLAG_FINAL | SPIFFS_PH_FLAG_IXDELE)) == + (SPIFFS_PH_FLAG_DELET | SPIFFS_PH_FLAG_IXDELE) && + objix->p_hdr.span_ix >= state->map_objix_start_spix && + objix->p_hdr.span_ix <= state->map_objix_end_spix) { + // ok, load rest of object index + res = _spiffs_rd(fs, SPIFFS_OP_T_OBJ_LU2 | SPIFFS_OP_C_READ, + 0, SPIFFS_PAGE_TO_PADDR(fs, pix) + sizeof(spiffs_page_object_ix), + SPIFFS_CFG_LOG_PAGE_SZ(fs) - sizeof(spiffs_page_object_ix), + (u8_t *)objix + sizeof(spiffs_page_object_ix)); + SPIFFS_CHECK_RES(res); + + spiffs_update_ix_map(fs, state->fd, objix->p_hdr.span_ix, objix); + + state->remaining_objix_pages_to_visit--; + SPIFFS_DBG("map "_SPIPRIid" ("_SPIPRIsp"--"_SPIPRIsp") remaining objix pages "_SPIPRIi"\n", + state->fd->obj_id, + state->fd->ix_map->start_spix, state->fd->ix_map->end_spix, + state->remaining_objix_pages_to_visit); + } + + if (res == SPIFFS_OK) { + res = state->remaining_objix_pages_to_visit ? SPIFFS_VIS_COUNTINUE : SPIFFS_VIS_END; + } + return res; +} + +// populates index map, from vector entry start to vector entry end, inclusive +s32_t spiffs_populate_ix_map(spiffs *fs, spiffs_fd *fd, u32_t vec_entry_start, u32_t vec_entry_end) { + s32_t res; + spiffs_ix_map *map = fd->ix_map; + spiffs_ix_map_populate_state state; + vec_entry_start = MIN((u32_t)(map->end_spix - map->start_spix), vec_entry_start); + vec_entry_end = MAX((u32_t)(map->end_spix - map->start_spix), vec_entry_end); + if (vec_entry_start > vec_entry_end) { + return SPIFFS_ERR_IX_MAP_BAD_RANGE; + } + state.map_objix_start_spix = SPIFFS_OBJ_IX_ENTRY_SPAN_IX(fs, map->start_spix + vec_entry_start); + state.map_objix_end_spix = SPIFFS_OBJ_IX_ENTRY_SPAN_IX(fs, map->start_spix + vec_entry_end); + state.remaining_objix_pages_to_visit = + state.map_objix_end_spix - state.map_objix_start_spix + 1; + state.fd = fd; + + res = spiffs_obj_lu_find_entry_visitor( + fs, + SPIFFS_BLOCK_FOR_PAGE(fs, fd->objix_hdr_pix), + SPIFFS_OBJ_LOOKUP_ENTRY_FOR_PAGE(fs, fd->objix_hdr_pix), + SPIFFS_VIS_CHECK_ID, + fd->obj_id | SPIFFS_OBJ_ID_IX_FLAG, + spiffs_populate_ix_map_v, + 0, + &state, + 0, + 0); + + if (res == SPIFFS_VIS_END) { + res = SPIFFS_OK; + } + + return res; +} + +#endif + + #if !SPIFFS_READ_ONLY // Allocates a free defined page with given obj_id // Occupies object lookup entry and page @@ -761,7 +907,8 @@ s32_t spiffs_page_delete( s32_t spiffs_object_create( spiffs *fs, spiffs_obj_id obj_id, - const u8_t name[SPIFFS_OBJ_NAME_LEN], + const u8_t name[], + const u8_t meta[], spiffs_obj_type type, spiffs_page_ix *objix_hdr_pix) { s32_t res = SPIFFS_OK; @@ -777,7 +924,7 @@ s32_t spiffs_object_create( // find free entry res = spiffs_obj_lu_find_free(fs, fs->free_cursor_block_ix, fs->free_cursor_obj_lu_entry, &bix, &entry); SPIFFS_CHECK_RES(res); - SPIFFS_DBG("create: found free page @ %04x bix:%i entry:%i\n", SPIFFS_OBJ_LOOKUP_ENTRY_TO_PIX(fs, bix, entry), bix, entry); + SPIFFS_DBG("create: found free page @ "_SPIPRIpg" bix:"_SPIPRIbl" entry:"_SPIPRIsp"\n", (spiffs_page_ix)SPIFFS_OBJ_LOOKUP_ENTRY_TO_PIX(fs, bix, entry), bix, entry); // occupy page in object lookup res = _spiffs_wr(fs, SPIFFS_OP_T_OBJ_LU | SPIFFS_OP_C_UPDT, @@ -792,15 +939,24 @@ s32_t spiffs_object_create( oix_hdr.p_hdr.flags = 0xff & ~(SPIFFS_PH_FLAG_FINAL | SPIFFS_PH_FLAG_INDEX | SPIFFS_PH_FLAG_USED); oix_hdr.type = type; oix_hdr.size = SPIFFS_UNDEFINED_LEN; // keep ones so we can update later without wasting this page - strncpy((char*)&oix_hdr.name, (const char*)name, SPIFFS_OBJ_NAME_LEN); - + strncpy((char*)oix_hdr.name, (const char*)name, SPIFFS_OBJ_NAME_LEN); +#if SPIFFS_OBJ_META_LEN + if (meta) { + _SPIFFS_MEMCPY(oix_hdr.meta, meta, SPIFFS_OBJ_META_LEN); + } else { + memset(oix_hdr.meta, 0xff, SPIFFS_OBJ_META_LEN); + } +#else + (void) meta; +#endif // update page res = _spiffs_wr(fs, SPIFFS_OP_T_OBJ_DA | SPIFFS_OP_C_UPDT, 0, SPIFFS_OBJ_LOOKUP_ENTRY_TO_PADDR(fs, bix, entry), sizeof(spiffs_page_object_ix_header), (u8_t*)&oix_hdr); SPIFFS_CHECK_RES(res); - spiffs_cb_object_event(fs, 0, SPIFFS_EV_IX_NEW, obj_id, 0, SPIFFS_OBJ_LOOKUP_ENTRY_TO_PIX(fs, bix, entry), SPIFFS_UNDEFINED_LEN); + spiffs_cb_object_event(fs, (spiffs_page_object_ix *)&oix_hdr, + SPIFFS_EV_IX_NEW, obj_id, 0, SPIFFS_OBJ_LOOKUP_ENTRY_TO_PIX(fs, bix, entry), SPIFFS_UNDEFINED_LEN); if (objix_hdr_pix) { *objix_hdr_pix = SPIFFS_OBJ_LOOKUP_ENTRY_TO_PIX(fs, bix, entry); @@ -821,7 +977,8 @@ s32_t spiffs_object_update_index_hdr( spiffs_obj_id obj_id, spiffs_page_ix objix_hdr_pix, u8_t *new_objix_hdr_data, - const u8_t name[SPIFFS_OBJ_NAME_LEN], + const u8_t name[], + const u8_t meta[], u32_t size, spiffs_page_ix *new_pix) { s32_t res = SPIFFS_OK; @@ -847,6 +1004,13 @@ s32_t spiffs_object_update_index_hdr( if (name) { strncpy((char*)objix_hdr->name, (const char*)name, SPIFFS_OBJ_NAME_LEN); } +#if SPIFFS_OBJ_META_LEN + if (meta) { + _SPIFFS_MEMCPY(objix_hdr->meta, meta, SPIFFS_OBJ_META_LEN); + } +#else + (void) meta; +#endif if (size) { objix_hdr->size = size; } @@ -859,7 +1023,9 @@ s32_t spiffs_object_update_index_hdr( *new_pix = new_objix_hdr_pix; } // callback on object index update - spiffs_cb_object_event(fs, fd, SPIFFS_EV_IX_UPD, obj_id, objix_hdr->p_hdr.span_ix, new_objix_hdr_pix, objix_hdr->size); + spiffs_cb_object_event(fs, (spiffs_page_object_ix *)objix_hdr, + new_objix_hdr_data ? SPIFFS_EV_IX_UPD : SPIFFS_EV_IX_UPD_HDR, + obj_id, objix_hdr->p_hdr.span_ix, new_objix_hdr_pix, objix_hdr->size); if (fd) fd->objix_hdr_pix = new_objix_hdr_pix; // if this is not in the registered cluster } @@ -869,53 +1035,104 @@ s32_t spiffs_object_update_index_hdr( void spiffs_cb_object_event( spiffs *fs, - spiffs_fd *fd, + spiffs_page_object_ix *objix, int ev, spiffs_obj_id obj_id_raw, spiffs_span_ix spix, spiffs_page_ix new_pix, u32_t new_size) { - (void)fd; +#if SPIFFS_IX_MAP == 0 + (void)objix; +#endif // update index caches in all file descriptors spiffs_obj_id obj_id = obj_id_raw & ~SPIFFS_OBJ_ID_IX_FLAG; u32_t i; spiffs_fd *fds = (spiffs_fd *)fs->fd_space; + SPIFFS_DBG(" CALLBACK %s obj_id:"_SPIPRIid" spix:"_SPIPRIsp" npix:"_SPIPRIpg" nsz:"_SPIPRIi"\n", (const char *[]){"UPD", "NEW", "DEL", "MOV", "HUP","???"}[MIN(ev,5)], + obj_id_raw, spix, new_pix, new_size); for (i = 0; i < fs->fd_count; i++) { spiffs_fd *cur_fd = &fds[i]; - if (cur_fd->file_nbr == 0 || (cur_fd->obj_id & ~SPIFFS_OBJ_ID_IX_FLAG) != obj_id) continue; - if (spix == 0) { - if (ev == SPIFFS_EV_IX_NEW || ev == SPIFFS_EV_IX_UPD) { - SPIFFS_DBG(" callback: setting fd %i:%04x objix_hdr_pix to %04x, size:%i\n", cur_fd->file_nbr, cur_fd->obj_id, new_pix, new_size); + if ((cur_fd->obj_id & ~SPIFFS_OBJ_ID_IX_FLAG) != obj_id) continue; // fd not related to updated file +#if !SPIFFS_TEMPORAL_FD_CACHE + if (cur_fd->file_nbr == 0) continue; // fd closed +#endif + if (spix == 0) { // object index header update + if (ev != SPIFFS_EV_IX_DEL) { +#if SPIFFS_TEMPORAL_FD_CACHE + if (cur_fd->score == 0) continue; // never used fd +#endif + SPIFFS_DBG(" callback: setting fd "_SPIPRIfd":"_SPIPRIid"(fdoffs:"_SPIPRIi" offs:"_SPIPRIi") objix_hdr_pix to "_SPIPRIpg", size:"_SPIPRIi"\n", SPIFFS_FH_OFFS(fs, cur_fd->file_nbr), cur_fd->obj_id, cur_fd->fdoffset, cur_fd->offset, new_pix, new_size); cur_fd->objix_hdr_pix = new_pix; if (new_size != 0) { + // update size and offsets for fds to this file cur_fd->size = new_size; + u32_t act_new_size = new_size == SPIFFS_UNDEFINED_LEN ? 0 : new_size; + if (cur_fd->offset > act_new_size) { + cur_fd->offset = act_new_size; + } + if (cur_fd->fdoffset > act_new_size) { + cur_fd->fdoffset = act_new_size; + } +#if SPIFFS_CACHE_WR + if (cur_fd->cache_page && cur_fd->cache_page->offset > act_new_size+1) { + SPIFFS_CACHE_DBG("CACHE_DROP: file trunced, dropping cache page "_SPIPRIi", no writeback\n", cur_fd->cache_page->ix); + spiffs_cache_fd_release(fs, cur_fd->cache_page); + } +#endif } - } else if (ev == SPIFFS_EV_IX_DEL) { + } else { + // removing file +#if SPIFFS_CACHE_WR + if (cur_fd->file_nbr && cur_fd->cache_page) { + SPIFFS_CACHE_DBG("CACHE_DROP: file deleted, dropping cache page "_SPIPRIi", no writeback\n", cur_fd->cache_page->ix); + spiffs_cache_fd_release(fs, cur_fd->cache_page); + } +#endif + SPIFFS_DBG(" callback: release fd "_SPIPRIfd":"_SPIPRIid" span:"_SPIPRIsp" objix_pix to "_SPIPRIpg"\n", SPIFFS_FH_OFFS(fs, cur_fd->file_nbr), cur_fd->obj_id, spix, new_pix); cur_fd->file_nbr = 0; cur_fd->obj_id = SPIFFS_OBJ_ID_DELETED; } - } + } // object index header update if (cur_fd->cursor_objix_spix == spix) { - if (ev == SPIFFS_EV_IX_NEW || ev == SPIFFS_EV_IX_UPD) { - SPIFFS_DBG(" callback: setting fd %i:%04x span:%04x objix_pix to %04x\n", cur_fd->file_nbr, cur_fd->obj_id, spix, new_pix); + if (ev != SPIFFS_EV_IX_DEL) { + SPIFFS_DBG(" callback: setting fd "_SPIPRIfd":"_SPIPRIid" span:"_SPIPRIsp" objix_pix to "_SPIPRIpg"\n", SPIFFS_FH_OFFS(fs, cur_fd->file_nbr), cur_fd->obj_id, spix, new_pix); cur_fd->cursor_objix_pix = new_pix; } else { cur_fd->cursor_objix_pix = 0; } } + } // fd update loop + +#if SPIFFS_IX_MAP + + // update index maps + if (ev == SPIFFS_EV_IX_UPD || ev == SPIFFS_EV_IX_NEW) { + for (i = 0; i < fs->fd_count; i++) { + spiffs_fd *cur_fd = &fds[i]; + // check fd opened, having ix map, match obj id + if (cur_fd->file_nbr == 0 || + cur_fd->ix_map == 0 || + (cur_fd->obj_id & ~SPIFFS_OBJ_ID_IX_FLAG) != obj_id) continue; + SPIFFS_DBG(" callback: map ix update fd "_SPIPRIfd":"_SPIPRIid" span:"_SPIPRIsp"\n", SPIFFS_FH_OFFS(fs, cur_fd->file_nbr), cur_fd->obj_id, spix); + spiffs_update_ix_map(fs, cur_fd, spix, objix); + } } +#endif + // callback to user if object index header if (fs->file_cb_f && spix == 0 && (obj_id_raw & SPIFFS_OBJ_ID_IX_FLAG)) { spiffs_fileop_type op; if (ev == SPIFFS_EV_IX_NEW) { op = SPIFFS_CB_CREATED; - } else if (ev == SPIFFS_EV_IX_UPD) { + } else if (ev == SPIFFS_EV_IX_UPD || + ev == SPIFFS_EV_IX_MOV || + ev == SPIFFS_EV_IX_UPD_HDR) { op = SPIFFS_CB_UPDATED; } else if (ev == SPIFFS_EV_IX_DEL) { op = SPIFFS_CB_DELETED; } else { - SPIFFS_DBG(" callback: WARNING unknown callback event %02x\n", ev); + SPIFFS_DBG(" callback: WARNING unknown callback event "_SPIPRIi"\n", ev); return; // bail out } fs->file_cb_f(fs, op, obj_id, new_pix); @@ -973,7 +1190,7 @@ s32_t spiffs_object_open_by_page( SPIFFS_VALIDATE_OBJIX(oix_hdr.p_hdr, fd->obj_id, 0); - SPIFFS_DBG("open: fd %i is obj id %04x\n", fd->file_nbr, fd->obj_id); + SPIFFS_DBG("open: fd "_SPIPRIfd" is obj id "_SPIPRIid"\n", SPIFFS_FH_OFFS(fs, fd->file_nbr), fd->obj_id); return res; } @@ -986,7 +1203,7 @@ s32_t spiffs_object_append(spiffs_fd *fd, u32_t offset, u8_t *data, u32_t len) { s32_t res = SPIFFS_OK; u32_t written = 0; - SPIFFS_DBG("append: %i bytes @ offs %i of size %i\n", len, offset, fd->size); + SPIFFS_DBG("append: "_SPIPRIi" bytes @ offs "_SPIPRIi" of size "_SPIPRIi"\n", len, offset, fd->size); if (offset > fd->size) { SPIFFS_DBG("append: offset reversed to size\n"); @@ -995,7 +1212,7 @@ s32_t spiffs_object_append(spiffs_fd *fd, u32_t offset, u8_t *data, u32_t len) { res = spiffs_gc_check(fs, len + SPIFFS_DATA_PAGE_SIZE(fs)); // add an extra page of data worth for meta if (res != SPIFFS_OK) { - SPIFFS_DBG("append: gc check fail %i\n", res); + SPIFFS_DBG("append: gc check fail "_SPIPRIi"\n", res); } SPIFFS_CHECK_RES(res); @@ -1023,7 +1240,7 @@ s32_t spiffs_object_append(spiffs_fd *fd, u32_t offset, u8_t *data, u32_t len) { // within this clause we return directly if something fails, object index mess-up if (written > 0) { // store previous object index page, unless first pass - SPIFFS_DBG("append: %04x store objix %04x:%04x, written %i\n", fd->obj_id, + SPIFFS_DBG("append: "_SPIPRIid" store objix "_SPIPRIpg":"_SPIPRIsp", written "_SPIPRIi"\n", fd->obj_id, cur_objix_pix, prev_objix_spix, written); if (prev_objix_spix == 0) { // this is an update to object index header page @@ -1038,9 +1255,9 @@ s32_t spiffs_object_append(spiffs_fd *fd, u32_t offset, u8_t *data, u32_t len) { } else { // was a nonempty object, update to new page res = spiffs_object_update_index_hdr(fs, fd, fd->obj_id, - fd->objix_hdr_pix, fs->work, 0, offset+written, &new_objix_hdr_page); + fd->objix_hdr_pix, fs->work, 0, 0, offset+written, &new_objix_hdr_page); SPIFFS_CHECK_RES(res); - SPIFFS_DBG("append: %04x store new objix_hdr, %04x:%04x, written %i\n", fd->obj_id, + SPIFFS_DBG("append: "_SPIPRIid" store new objix_hdr, "_SPIPRIpg":"_SPIPRIsp", written "_SPIPRIi"\n", fd->obj_id, new_objix_hdr_page, 0, written); } } else { @@ -1051,12 +1268,13 @@ s32_t spiffs_object_append(spiffs_fd *fd, u32_t offset, u8_t *data, u32_t len) { res = _spiffs_wr(fs, SPIFFS_OP_T_OBJ_IX | SPIFFS_OP_C_UPDT, fd->file_nbr, SPIFFS_PAGE_TO_PADDR(fs, cur_objix_pix), SPIFFS_CFG_LOG_PAGE_SZ(fs), fs->work); SPIFFS_CHECK_RES(res); - spiffs_cb_object_event(fs, fd, SPIFFS_EV_IX_UPD,fd->obj_id, objix->p_hdr.span_ix, cur_objix_pix, 0); + spiffs_cb_object_event(fs, (spiffs_page_object_ix *)fs->work, + SPIFFS_EV_IX_UPD,fd->obj_id, objix->p_hdr.span_ix, cur_objix_pix, 0); // update length in object index header page res = spiffs_object_update_index_hdr(fs, fd, fd->obj_id, - fd->objix_hdr_pix, 0, 0, offset+written, &new_objix_hdr_page); + fd->objix_hdr_pix, 0, 0, 0, offset+written, &new_objix_hdr_page); SPIFFS_CHECK_RES(res); - SPIFFS_DBG("append: %04x store new size I %i in objix_hdr, %04x:%04x, written %i\n", fd->obj_id, + SPIFFS_DBG("append: "_SPIPRIid" store new size I "_SPIPRIi" in objix_hdr, "_SPIPRIpg":"_SPIPRIsp", written "_SPIPRIi"\n", fd->obj_id, offset+written, new_objix_hdr_page, 0, written); } fd->size = offset+written; @@ -1066,7 +1284,7 @@ s32_t spiffs_object_append(spiffs_fd *fd, u32_t offset, u8_t *data, u32_t len) { // create or load new object index page if (cur_objix_spix == 0) { // load object index header page, must always exist - SPIFFS_DBG("append: %04x load objixhdr page %04x:%04x\n", fd->obj_id, cur_objix_pix, cur_objix_spix); + SPIFFS_DBG("append: "_SPIPRIid" load objixhdr page "_SPIPRIpg":"_SPIPRIsp"\n", fd->obj_id, cur_objix_pix, cur_objix_spix); res = _spiffs_rd(fs, SPIFFS_OP_T_OBJ_IX | SPIFFS_OP_C_READ, fd->file_nbr, SPIFFS_PAGE_TO_PADDR(fs, cur_objix_pix), SPIFFS_CFG_LOG_PAGE_SZ(fs), fs->work); SPIFFS_CHECK_RES(res); @@ -1081,23 +1299,24 @@ s32_t spiffs_object_append(spiffs_fd *fd, u32_t offset, u8_t *data, u32_t len) { res = spiffs_page_allocate_data(fs, fd->obj_id | SPIFFS_OBJ_ID_IX_FLAG, &p_hdr, 0, 0, 0, 1, &cur_objix_pix); SPIFFS_CHECK_RES(res); - spiffs_cb_object_event(fs, fd, SPIFFS_EV_IX_NEW, fd->obj_id, cur_objix_spix, cur_objix_pix, 0); // quick "load" of new object index page memset(fs->work, 0xff, SPIFFS_CFG_LOG_PAGE_SZ(fs)); - memcpy(fs->work, &p_hdr, sizeof(spiffs_page_header)); - SPIFFS_DBG("append: %04x create objix page, %04x:%04x, written %i\n", fd->obj_id + _SPIFFS_MEMCPY(fs->work, &p_hdr, sizeof(spiffs_page_header)); + spiffs_cb_object_event(fs, (spiffs_page_object_ix *)fs->work, + SPIFFS_EV_IX_NEW, fd->obj_id, cur_objix_spix, cur_objix_pix, 0); + SPIFFS_DBG("append: "_SPIPRIid" create objix page, "_SPIPRIpg":"_SPIPRIsp", written "_SPIPRIi"\n", fd->obj_id , cur_objix_pix, cur_objix_spix, written); } else { // on first pass, we load existing object index page spiffs_page_ix pix; - SPIFFS_DBG("append: %04x find objix span_ix:%04x\n", fd->obj_id, cur_objix_spix); + SPIFFS_DBG("append: "_SPIPRIid" find objix span_ix:"_SPIPRIsp"\n", fd->obj_id, cur_objix_spix); if (fd->cursor_objix_spix == cur_objix_spix) { pix = fd->cursor_objix_pix; } else { res = spiffs_obj_lu_find_id_and_span(fs, fd->obj_id | SPIFFS_OBJ_ID_IX_FLAG, cur_objix_spix, 0, &pix); SPIFFS_CHECK_RES(res); } - SPIFFS_DBG("append: %04x found object index at page %04x [fd size %i]\n", fd->obj_id, pix, fd->size); + SPIFFS_DBG("append: "_SPIPRIid" found object index at page "_SPIPRIpg" [fd size "_SPIPRIi"]\n", fd->obj_id, pix, fd->size); res = _spiffs_rd(fs, SPIFFS_OP_T_OBJ_IX | SPIFFS_OP_C_READ, fd->file_nbr, SPIFFS_PAGE_TO_PADDR(fs, pix), SPIFFS_CFG_LOG_PAGE_SZ(fs), fs->work); SPIFFS_CHECK_RES(res); @@ -1121,7 +1340,7 @@ s32_t spiffs_object_append(spiffs_fd *fd, u32_t offset, u8_t *data, u32_t len) { p_hdr.flags = 0xff & ~(SPIFFS_PH_FLAG_FINAL); // finalize immediately res = spiffs_page_allocate_data(fs, fd->obj_id & ~SPIFFS_OBJ_ID_IX_FLAG, &p_hdr, &data[written], to_write, page_offs, 1, &data_page); - SPIFFS_DBG("append: %04x store new data page, %04x:%04x offset:%i, len %i, written %i\n", fd->obj_id, + SPIFFS_DBG("append: "_SPIPRIid" store new data page, "_SPIPRIpg":"_SPIPRIsp" offset:"_SPIPRIi", len "_SPIPRIi", written "_SPIPRIi"\n", fd->obj_id, data_page, data_spix, page_offs, to_write, written); } else { // append to existing page, fill out free data in existing page @@ -1138,7 +1357,7 @@ s32_t spiffs_object_append(spiffs_fd *fd, u32_t offset, u8_t *data, u32_t len) { res = _spiffs_wr(fs, SPIFFS_OP_T_OBJ_DA | SPIFFS_OP_C_UPDT, fd->file_nbr, SPIFFS_PAGE_TO_PADDR(fs, data_page) + sizeof(spiffs_page_header) + page_offs, to_write, &data[written]); - SPIFFS_DBG("append: %04x store to existing data page, %04x:%04x offset:%i, len %i, written %i\n", fd->obj_id + SPIFFS_DBG("append: "_SPIPRIid" store to existing data page, "_SPIPRIpg":"_SPIPRIsp" offset:"_SPIPRIi", len "_SPIPRIi", written "_SPIPRIi"\n", fd->obj_id , data_page, data_spix, page_offs, to_write, written); } @@ -1148,14 +1367,14 @@ s32_t spiffs_object_append(spiffs_fd *fd, u32_t offset, u8_t *data, u32_t len) { if (cur_objix_spix == 0) { // update object index header page ((spiffs_page_ix*)((u8_t *)objix_hdr + sizeof(spiffs_page_object_ix_header)))[data_spix] = data_page; - SPIFFS_DBG("append: %04x wrote page %04x to objix_hdr entry %02x in mem\n", fd->obj_id + SPIFFS_DBG("append: "_SPIPRIid" wrote page "_SPIPRIpg" to objix_hdr entry "_SPIPRIsp" in mem\n", fd->obj_id , data_page, data_spix); objix_hdr->size = offset+written; } else { // update object index page ((spiffs_page_ix*)((u8_t *)objix + sizeof(spiffs_page_object_ix)))[SPIFFS_OBJ_IX_ENTRY(fs, data_spix)] = data_page; - SPIFFS_DBG("append: %04x wrote page %04x to objix entry %02x in mem\n", fd->obj_id - , data_page, SPIFFS_OBJ_IX_ENTRY(fs, data_spix)); + SPIFFS_DBG("append: "_SPIPRIid" wrote page "_SPIPRIpg" to objix entry "_SPIPRIsp" in mem\n", fd->obj_id + , data_page, (spiffs_span_ix)SPIFFS_OBJ_IX_ENTRY(fs, data_spix)); } // update internals @@ -1174,7 +1393,7 @@ s32_t spiffs_object_append(spiffs_fd *fd, u32_t offset, u8_t *data, u32_t len) { if (cur_objix_spix != 0) { // wrote beyond object index header page // write last modified object index page, unless object header index page - SPIFFS_DBG("append: %04x store objix page, %04x:%04x, written %i\n", fd->obj_id, + SPIFFS_DBG("append: "_SPIPRIid" store objix page, "_SPIPRIpg":"_SPIPRIsp", written "_SPIPRIi"\n", fd->obj_id, cur_objix_pix, cur_objix_spix, written); res2 = spiffs_page_index_check(fs, fd, cur_objix_pix, cur_objix_spix); @@ -1183,12 +1402,13 @@ s32_t spiffs_object_append(spiffs_fd *fd, u32_t offset, u8_t *data, u32_t len) { res2 = _spiffs_wr(fs, SPIFFS_OP_T_OBJ_IX | SPIFFS_OP_C_UPDT, fd->file_nbr, SPIFFS_PAGE_TO_PADDR(fs, cur_objix_pix), SPIFFS_CFG_LOG_PAGE_SZ(fs), fs->work); SPIFFS_CHECK_RES(res2); - spiffs_cb_object_event(fs, fd, SPIFFS_EV_IX_UPD, fd->obj_id, objix->p_hdr.span_ix, cur_objix_pix, 0); + spiffs_cb_object_event(fs, (spiffs_page_object_ix *)fs->work, + SPIFFS_EV_IX_UPD, fd->obj_id, objix->p_hdr.span_ix, cur_objix_pix, 0); // update size in object header index page res2 = spiffs_object_update_index_hdr(fs, fd, fd->obj_id, - fd->objix_hdr_pix, 0, 0, offset+written, &new_objix_hdr_page); - SPIFFS_DBG("append: %04x store new size II %i in objix_hdr, %04x:%04x, written %i, res %i\n", fd->obj_id + fd->objix_hdr_pix, 0, 0, 0, offset+written, &new_objix_hdr_page); + SPIFFS_DBG("append: "_SPIPRIid" store new size II "_SPIPRIi" in objix_hdr, "_SPIPRIpg":"_SPIPRIsp", written "_SPIPRIi", res "_SPIPRIi"\n", fd->obj_id , offset+written, new_objix_hdr_page, 0, written, res2); SPIFFS_CHECK_RES(res2); } else { @@ -1196,7 +1416,7 @@ s32_t spiffs_object_append(spiffs_fd *fd, u32_t offset, u8_t *data, u32_t len) { if (offset == 0) { // wrote to empty object - simply update size and write whole page objix_hdr->size = offset+written; - SPIFFS_DBG("append: %04x store fresh objix_hdr page, %04x:%04x, written %i\n", fd->obj_id + SPIFFS_DBG("append: "_SPIPRIid" store fresh objix_hdr page, "_SPIPRIpg":"_SPIPRIsp", written "_SPIPRIi"\n", fd->obj_id , cur_objix_pix, cur_objix_spix, written); res2 = spiffs_page_index_check(fs, fd, cur_objix_pix, cur_objix_spix); @@ -1206,12 +1426,13 @@ s32_t spiffs_object_append(spiffs_fd *fd, u32_t offset, u8_t *data, u32_t len) { fd->file_nbr, SPIFFS_PAGE_TO_PADDR(fs, cur_objix_pix), SPIFFS_CFG_LOG_PAGE_SZ(fs), fs->work); SPIFFS_CHECK_RES(res2); // callback on object index update - spiffs_cb_object_event(fs, fd, SPIFFS_EV_IX_UPD, fd->obj_id, objix_hdr->p_hdr.span_ix, cur_objix_pix, objix_hdr->size); + spiffs_cb_object_event(fs, (spiffs_page_object_ix *)fs->work, + SPIFFS_EV_IX_UPD_HDR, fd->obj_id, objix_hdr->p_hdr.span_ix, cur_objix_pix, objix_hdr->size); } else { // modifying object index header page, update size and make new copy res2 = spiffs_object_update_index_hdr(fs, fd, fd->obj_id, - fd->objix_hdr_pix, fs->work, 0, offset+written, &new_objix_hdr_page); - SPIFFS_DBG("append: %04x store modified objix_hdr page, %04x:%04x, written %i\n", fd->obj_id + fd->objix_hdr_pix, fs->work, 0, 0, offset+written, &new_objix_hdr_page); + SPIFFS_DBG("append: "_SPIPRIid" store modified objix_hdr page, "_SPIPRIpg":"_SPIPRIsp", written "_SPIPRIi"\n", fd->obj_id , new_objix_hdr_page, 0, written); SPIFFS_CHECK_RES(res2); } @@ -1260,8 +1481,8 @@ s32_t spiffs_object_modify(spiffs_fd *fd, u32_t offset, u8_t *data, u32_t len) { if (prev_objix_spix == 0) { // store previous object index header page res = spiffs_object_update_index_hdr(fs, fd, fd->obj_id, - fd->objix_hdr_pix, fs->work, 0, 0, &new_objix_hdr_pix); - SPIFFS_DBG("modify: store modified objix_hdr page, %04x:%04x, written %i\n", new_objix_hdr_pix, 0, written); + fd->objix_hdr_pix, fs->work, 0, 0, 0, &new_objix_hdr_pix); + SPIFFS_DBG("modify: store modified objix_hdr page, "_SPIPRIpg":"_SPIPRIsp", written "_SPIPRIi"\n", new_objix_hdr_pix, 0, written); SPIFFS_CHECK_RES(res); } else { // store new version of previous object index page @@ -1271,16 +1492,17 @@ s32_t spiffs_object_modify(spiffs_fd *fd, u32_t offset, u8_t *data, u32_t len) { SPIFFS_CHECK_RES(res); res = spiffs_page_move(fs, fd->file_nbr, (u8_t*)objix, fd->obj_id, 0, cur_objix_pix, &new_objix_pix); - SPIFFS_DBG("modify: store previous modified objix page, %04x:%04x, written %i\n", new_objix_pix, objix->p_hdr.span_ix, written); + SPIFFS_DBG("modify: store previous modified objix page, "_SPIPRIid":"_SPIPRIsp", written "_SPIPRIi"\n", new_objix_pix, objix->p_hdr.span_ix, written); SPIFFS_CHECK_RES(res); - spiffs_cb_object_event(fs, fd, SPIFFS_EV_IX_UPD, fd->obj_id, objix->p_hdr.span_ix, new_objix_pix, 0); + spiffs_cb_object_event(fs, (spiffs_page_object_ix *)objix, + SPIFFS_EV_IX_UPD, fd->obj_id, objix->p_hdr.span_ix, new_objix_pix, 0); } } // load next object index page if (cur_objix_spix == 0) { // load object index header page, must exist - SPIFFS_DBG("modify: load objixhdr page %04x:%04x\n", cur_objix_pix, cur_objix_spix); + SPIFFS_DBG("modify: load objixhdr page "_SPIPRIpg":"_SPIPRIsp"\n", cur_objix_pix, cur_objix_spix); res = _spiffs_rd(fs, SPIFFS_OP_T_OBJ_IX | SPIFFS_OP_C_READ, fd->file_nbr, SPIFFS_PAGE_TO_PADDR(fs, cur_objix_pix), SPIFFS_CFG_LOG_PAGE_SZ(fs), fs->work); SPIFFS_CHECK_RES(res); @@ -1288,14 +1510,14 @@ s32_t spiffs_object_modify(spiffs_fd *fd, u32_t offset, u8_t *data, u32_t len) { } else { // load existing object index page on first pass spiffs_page_ix pix; - SPIFFS_DBG("modify: find objix span_ix:%04x\n", cur_objix_spix); + SPIFFS_DBG("modify: find objix span_ix:"_SPIPRIsp"\n", cur_objix_spix); if (fd->cursor_objix_spix == cur_objix_spix) { pix = fd->cursor_objix_pix; } else { res = spiffs_obj_lu_find_id_and_span(fs, fd->obj_id | SPIFFS_OBJ_ID_IX_FLAG, cur_objix_spix, 0, &pix); SPIFFS_CHECK_RES(res); } - SPIFFS_DBG("modify: found object index at page %04x\n", pix); + SPIFFS_DBG("modify: found object index at page "_SPIPRIpg"\n", pix); res = _spiffs_rd(fs, SPIFFS_OP_T_OBJ_IX | SPIFFS_OP_C_READ, fd->file_nbr, SPIFFS_PAGE_TO_PADDR(fs, pix), SPIFFS_CFG_LOG_PAGE_SZ(fs), fs->work); SPIFFS_CHECK_RES(res); @@ -1326,7 +1548,7 @@ s32_t spiffs_object_modify(spiffs_fd *fd, u32_t offset, u8_t *data, u32_t len) { // a full page, allocate and write a new page of data res = spiffs_page_allocate_data(fs, fd->obj_id & ~SPIFFS_OBJ_ID_IX_FLAG, &p_hdr, &data[written], to_write, page_offs, 1, &data_pix); - SPIFFS_DBG("modify: store new data page, %04x:%04x offset:%i, len %i, written %i\n", data_pix, data_spix, page_offs, to_write, written); + SPIFFS_DBG("modify: store new data page, "_SPIPRIpg":"_SPIPRIsp" offset:"_SPIPRIi", len "_SPIPRIi", written "_SPIPRIi"\n", data_pix, data_spix, page_offs, to_write, written); } else { // write to existing page, allocate new and copy unmodified data @@ -1367,7 +1589,7 @@ s32_t spiffs_object_modify(spiffs_fd *fd, u32_t offset, u8_t *data, u32_t len) { (u8_t *)&p_hdr.flags); if (res != SPIFFS_OK) break; - SPIFFS_DBG("modify: store to existing data page, src:%04x, dst:%04x:%04x offset:%i, len %i, written %i\n", orig_data_pix, data_pix, data_spix, page_offs, to_write, written); + SPIFFS_DBG("modify: store to existing data page, src:"_SPIPRIpg", dst:"_SPIPRIpg":"_SPIPRIsp" offset:"_SPIPRIi", len "_SPIPRIi", written "_SPIPRIi"\n", orig_data_pix, data_pix, data_spix, page_offs, to_write, written); } // delete original data page @@ -1377,11 +1599,11 @@ s32_t spiffs_object_modify(spiffs_fd *fd, u32_t offset, u8_t *data, u32_t len) { if (cur_objix_spix == 0) { // update object index header page ((spiffs_page_ix*)((u8_t *)objix_hdr + sizeof(spiffs_page_object_ix_header)))[data_spix] = data_pix; - SPIFFS_DBG("modify: wrote page %04x to objix_hdr entry %02x in mem\n", data_pix, data_spix); + SPIFFS_DBG("modify: wrote page "_SPIPRIpg" to objix_hdr entry "_SPIPRIsp" in mem\n", data_pix, data_spix); } else { // update object index page ((spiffs_page_ix*)((u8_t *)objix + sizeof(spiffs_page_object_ix)))[SPIFFS_OBJ_IX_ENTRY(fs, data_spix)] = data_pix; - SPIFFS_DBG("modify: wrote page %04x to objix entry %02x in mem\n", data_pix, SPIFFS_OBJ_IX_ENTRY(fs, data_spix)); + SPIFFS_DBG("modify: wrote page "_SPIPRIpg" to objix entry "_SPIPRIsp" in mem\n", data_pix, (spiffs_span_ix)SPIFFS_OBJ_IX_ENTRY(fs, data_spix)); } // update internals @@ -1406,17 +1628,18 @@ s32_t spiffs_object_modify(spiffs_fd *fd, u32_t offset, u8_t *data, u32_t len) { SPIFFS_CHECK_RES(res2); res2 = spiffs_page_move(fs, fd->file_nbr, (u8_t*)objix, fd->obj_id, 0, cur_objix_pix, &new_objix_pix); - SPIFFS_DBG("modify: store modified objix page, %04x:%04x, written %i\n", new_objix_pix, cur_objix_spix, written); + SPIFFS_DBG("modify: store modified objix page, "_SPIPRIpg":"_SPIPRIsp", written "_SPIPRIi"\n", new_objix_pix, cur_objix_spix, written); fd->cursor_objix_pix = new_objix_pix; fd->cursor_objix_spix = cur_objix_spix; SPIFFS_CHECK_RES(res2); - spiffs_cb_object_event(fs, fd, SPIFFS_EV_IX_UPD, fd->obj_id, objix->p_hdr.span_ix, new_objix_pix, 0); + spiffs_cb_object_event(fs, (spiffs_page_object_ix *)objix, + SPIFFS_EV_IX_UPD, fd->obj_id, objix->p_hdr.span_ix, new_objix_pix, 0); } else { // wrote within object index header page res2 = spiffs_object_update_index_hdr(fs, fd, fd->obj_id, - fd->objix_hdr_pix, fs->work, 0, 0, &new_objix_hdr_pix); - SPIFFS_DBG("modify: store modified objix_hdr page, %04x:%04x, written %i\n", new_objix_hdr_pix, 0, written); + fd->objix_hdr_pix, fs->work, 0, 0, 0, &new_objix_hdr_pix); + SPIFFS_DBG("modify: store modified objix_hdr page, "_SPIPRIpg":"_SPIPRIsp", written "_SPIPRIi"\n", new_objix_hdr_pix, 0, written); SPIFFS_CHECK_RES(res2); } @@ -1493,18 +1716,20 @@ s32_t spiffs_object_find_object_index_header_by_name( s32_t spiffs_object_truncate( spiffs_fd *fd, u32_t new_size, - u8_t remove) { + u8_t remove_full) { s32_t res = SPIFFS_OK; spiffs *fs = fd->fs; - if ((fd->size == SPIFFS_UNDEFINED_LEN || fd->size == 0) && !remove) { + if ((fd->size == SPIFFS_UNDEFINED_LEN || fd->size == 0) && !remove_full) { // no op return res; } // need 2 pages if not removing: object index page + possibly chopped data page - res = spiffs_gc_check(fs, remove ? 0 : SPIFFS_DATA_PAGE_SIZE(fs) * 2); - SPIFFS_CHECK_RES(res); + if (remove_full == 0) { + res = spiffs_gc_check(fs, SPIFFS_DATA_PAGE_SIZE(fs) * 2); + SPIFFS_CHECK_RES(res); + } spiffs_page_ix objix_pix = fd->objix_hdr_pix; spiffs_span_ix data_spix = (fd->size > 0 ? fd->size-1 : 0) / SPIFFS_DATA_PAGE_SIZE(fs); @@ -1517,7 +1742,7 @@ s32_t spiffs_object_truncate( spiffs_page_ix new_objix_hdr_pix; // before truncating, check if object is to be fully removed and mark this - if (remove && new_size == 0) { + if (remove_full && new_size == 0) { u8_t flags = ~( SPIFFS_PH_FLAG_USED | SPIFFS_PH_FLAG_INDEX | SPIFFS_PH_FLAG_FINAL | SPIFFS_PH_FLAG_IXDELE); res = _spiffs_wr(fs, SPIFFS_OP_T_OBJ_IX | SPIFFS_OP_C_UPDT, fd->file_nbr, SPIFFS_PAGE_TO_PADDR(fs, fd->objix_hdr_pix) + offsetof(spiffs_page_header, flags), @@ -1534,20 +1759,28 @@ s32_t spiffs_object_truncate( if (prev_objix_spix != cur_objix_spix) { if (prev_objix_spix != (spiffs_span_ix)-1) { // remove previous object index page - SPIFFS_DBG("truncate: delete objix page %04x:%04x\n", objix_pix, prev_objix_spix); + SPIFFS_DBG("truncate: delete objix page "_SPIPRIpg":"_SPIPRIsp"\n", objix_pix, prev_objix_spix); res = spiffs_page_index_check(fs, fd, objix_pix, prev_objix_spix); SPIFFS_CHECK_RES(res); res = spiffs_page_delete(fs, objix_pix); SPIFFS_CHECK_RES(res); - spiffs_cb_object_event(fs, fd, SPIFFS_EV_IX_DEL, fd->obj_id, objix->p_hdr.span_ix, objix_pix, 0); + spiffs_cb_object_event(fs, (spiffs_page_object_ix *)0, + SPIFFS_EV_IX_DEL, fd->obj_id, objix->p_hdr.span_ix, objix_pix, 0); if (prev_objix_spix > 0) { - // update object index header page - SPIFFS_DBG("truncate: update objix hdr page %04x:%04x to size %i\n", fd->objix_hdr_pix, prev_objix_spix, cur_size); - res = spiffs_object_update_index_hdr(fs, fd, fd->obj_id, - fd->objix_hdr_pix, 0, 0, cur_size, &new_objix_hdr_pix); - SPIFFS_CHECK_RES(res); + // Update object index header page, unless we totally want to remove the file. + // If fully removing, we're not keeping consistency as good as when storing the header between chunks, + // would we be aborted. But when removing full files, a crammed system may otherwise + // report ERR_FULL a la windows. We cannot have that. + // Hence, take the risk - if aborted, a file check would free the lost pages and mend things + // as the file is marked as fully deleted in the beginning. + if (remove_full == 0) { + SPIFFS_DBG("truncate: update objix hdr page "_SPIPRIpg":"_SPIPRIsp" to size "_SPIPRIi"\n", fd->objix_hdr_pix, prev_objix_spix, cur_size); + res = spiffs_object_update_index_hdr(fs, fd, fd->obj_id, + fd->objix_hdr_pix, 0, 0, 0, cur_size, &new_objix_hdr_pix); + SPIFFS_CHECK_RES(res); + } fd->size = cur_size; } } @@ -1559,7 +1792,7 @@ s32_t spiffs_object_truncate( SPIFFS_CHECK_RES(res); } - SPIFFS_DBG("truncate: load objix page %04x:%04x for data spix:%04x\n", objix_pix, cur_objix_spix, data_spix); + SPIFFS_DBG("truncate: load objix page "_SPIPRIpg":"_SPIPRIsp" for data spix:"_SPIPRIsp"\n", objix_pix, cur_objix_spix, data_spix); res = _spiffs_rd(fs, SPIFFS_OP_T_OBJ_IX | SPIFFS_OP_C_READ, fd->file_nbr, SPIFFS_PAGE_TO_PADDR(fs, objix_pix), SPIFFS_CFG_LOG_PAGE_SZ(fs), fs->work); SPIFFS_CHECK_RES(res); @@ -1581,20 +1814,20 @@ s32_t spiffs_object_truncate( ((spiffs_page_ix*)((u8_t *)objix + sizeof(spiffs_page_object_ix)))[SPIFFS_OBJ_IX_ENTRY(fs, data_spix)] = SPIFFS_OBJ_ID_FREE; } - SPIFFS_DBG("truncate: got data pix %04x\n", data_pix); + SPIFFS_DBG("truncate: got data pix "_SPIPRIpg"\n", data_pix); - if (new_size == 0 || remove || cur_size - new_size >= SPIFFS_DATA_PAGE_SIZE(fs)) { + if (new_size == 0 || remove_full || cur_size - new_size >= SPIFFS_DATA_PAGE_SIZE(fs)) { // delete full data page res = spiffs_page_data_check(fs, fd, data_pix, data_spix); if (res != SPIFFS_ERR_DELETED && res != SPIFFS_OK && res != SPIFFS_ERR_INDEX_REF_FREE) { - SPIFFS_DBG("truncate: err validating data pix %i\n", res); + SPIFFS_DBG("truncate: err validating data pix "_SPIPRIi"\n", res); break; } if (res == SPIFFS_OK) { res = spiffs_page_delete(fs, data_pix); if (res != SPIFFS_OK) { - SPIFFS_DBG("truncate: err deleting data pix %i\n", res); + SPIFFS_DBG("truncate: err deleting data pix "_SPIPRIi"\n", res); break; } } else if (res == SPIFFS_ERR_DELETED || res == SPIFFS_ERR_INDEX_REF_FREE) { @@ -1609,13 +1842,13 @@ s32_t spiffs_object_truncate( } fd->size = cur_size; fd->offset = cur_size; - SPIFFS_DBG("truncate: delete data page %04x for data spix:%04x, cur_size:%i\n", data_pix, data_spix, cur_size); + SPIFFS_DBG("truncate: delete data page "_SPIPRIpg" for data spix:"_SPIPRIsp", cur_size:"_SPIPRIi"\n", data_pix, data_spix, cur_size); } else { // delete last page, partially spiffs_page_header p_hdr; spiffs_page_ix new_data_pix; u32_t bytes_to_remove = SPIFFS_DATA_PAGE_SIZE(fs) - (new_size % SPIFFS_DATA_PAGE_SIZE(fs)); - SPIFFS_DBG("truncate: delete %i bytes from data page %04x for data spix:%04x, cur_size:%i\n", bytes_to_remove, data_pix, data_spix, cur_size); + SPIFFS_DBG("truncate: delete "_SPIPRIi" bytes from data page "_SPIPRIpg" for data spix:"_SPIPRIsp", cur_size:"_SPIPRIi"\n", bytes_to_remove, data_pix, data_spix, cur_size); res = spiffs_page_data_check(fs, fd, data_pix, data_spix); if (res != SPIFFS_OK) break; @@ -1647,11 +1880,11 @@ s32_t spiffs_object_truncate( if (cur_objix_spix == 0) { // update object index header page ((spiffs_page_ix*)((u8_t *)objix_hdr + sizeof(spiffs_page_object_ix_header)))[data_spix] = new_data_pix; - SPIFFS_DBG("truncate: wrote page %04x to objix_hdr entry %02x in mem\n", new_data_pix, SPIFFS_OBJ_IX_ENTRY(fs, data_spix)); + SPIFFS_DBG("truncate: wrote page "_SPIPRIpg" to objix_hdr entry "_SPIPRIsp" in mem\n", new_data_pix, (spiffs_span_ix)SPIFFS_OBJ_IX_ENTRY(fs, data_spix)); } else { // update object index page ((spiffs_page_ix*)((u8_t *)objix + sizeof(spiffs_page_object_ix)))[SPIFFS_OBJ_IX_ENTRY(fs, data_spix)] = new_data_pix; - SPIFFS_DBG("truncate: wrote page %04x to objix entry %02x in mem\n", new_data_pix, SPIFFS_OBJ_IX_ENTRY(fs, data_spix)); + SPIFFS_DBG("truncate: wrote page "_SPIPRIpg" to objix entry "_SPIPRIsp" in mem\n", new_data_pix, (spiffs_span_ix)SPIFFS_OBJ_IX_ENTRY(fs, data_spix)); } cur_size = new_size; fd->size = new_size; @@ -1665,30 +1898,31 @@ s32_t spiffs_object_truncate( if (cur_objix_spix == 0) { // update object index header page if (cur_size == 0) { - if (remove) { + if (remove_full) { // remove object altogether - SPIFFS_DBG("truncate: remove object index header page %04x\n", objix_pix); + SPIFFS_DBG("truncate: remove object index header page "_SPIPRIpg"\n", objix_pix); res = spiffs_page_index_check(fs, fd, objix_pix, 0); SPIFFS_CHECK_RES(res); res = spiffs_page_delete(fs, objix_pix); SPIFFS_CHECK_RES(res); - spiffs_cb_object_event(fs, fd, SPIFFS_EV_IX_DEL, fd->obj_id, 0, objix_pix, 0); + spiffs_cb_object_event(fs, (spiffs_page_object_ix *)0, + SPIFFS_EV_IX_DEL, fd->obj_id, 0, objix_pix, 0); } else { // make uninitialized object - SPIFFS_DBG("truncate: reset objix_hdr page %04x\n", objix_pix); + SPIFFS_DBG("truncate: reset objix_hdr page "_SPIPRIpg"\n", objix_pix); memset(fs->work + sizeof(spiffs_page_object_ix_header), 0xff, SPIFFS_CFG_LOG_PAGE_SZ(fs) - sizeof(spiffs_page_object_ix_header)); res = spiffs_object_update_index_hdr(fs, fd, fd->obj_id, - objix_pix, fs->work, 0, SPIFFS_UNDEFINED_LEN, &new_objix_hdr_pix); + objix_pix, fs->work, 0, 0, SPIFFS_UNDEFINED_LEN, &new_objix_hdr_pix); SPIFFS_CHECK_RES(res); } } else { // update object index header page SPIFFS_DBG("truncate: update object index header page with indices and size\n"); res = spiffs_object_update_index_hdr(fs, fd, fd->obj_id, - objix_pix, fs->work, 0, cur_size, &new_objix_hdr_pix); + objix_pix, fs->work, 0, 0, cur_size, &new_objix_hdr_pix); SPIFFS_CHECK_RES(res); } } else { @@ -1701,14 +1935,15 @@ s32_t spiffs_object_truncate( // move and update object index page res = spiffs_page_move(fs, fd->file_nbr, (u8_t*)objix_hdr, fd->obj_id, 0, objix_pix, &new_objix_pix); SPIFFS_CHECK_RES(res); - spiffs_cb_object_event(fs, fd, SPIFFS_EV_IX_UPD, fd->obj_id, objix->p_hdr.span_ix, new_objix_pix, 0); - SPIFFS_DBG("truncate: store modified objix page, %04x:%04x\n", new_objix_pix, cur_objix_spix); + spiffs_cb_object_event(fs, (spiffs_page_object_ix *)objix_hdr, + SPIFFS_EV_IX_UPD, fd->obj_id, objix->p_hdr.span_ix, new_objix_pix, 0); + SPIFFS_DBG("truncate: store modified objix page, "_SPIPRIpg":"_SPIPRIsp"\n", new_objix_pix, cur_objix_spix); fd->cursor_objix_pix = new_objix_pix; fd->cursor_objix_spix = cur_objix_spix; fd->offset = cur_size; // update object index header page with new size res = spiffs_object_update_index_hdr(fs, fd, fd->obj_id, - fd->objix_hdr_pix, 0, 0, cur_size, &new_objix_hdr_pix); + fd->objix_hdr_pix, 0, 0, 0, cur_size, &new_objix_hdr_pix); SPIFFS_CHECK_RES(res); } fd->size = cur_size; @@ -1734,45 +1969,59 @@ s32_t spiffs_object_read( spiffs_page_object_ix *objix = (spiffs_page_object_ix *)fs->work; while (cur_offset < offset + len) { - cur_objix_spix = SPIFFS_OBJ_IX_ENTRY_SPAN_IX(fs, data_spix); - if (prev_objix_spix != cur_objix_spix) { - // load current object index (header) page - if (cur_objix_spix == 0) { - objix_pix = fd->objix_hdr_pix; - } else { - SPIFFS_DBG("read: find objix %04x:%04x\n", fd->obj_id, cur_objix_spix); - res = spiffs_obj_lu_find_id_and_span(fs, fd->obj_id | SPIFFS_OBJ_ID_IX_FLAG, cur_objix_spix, 0, &objix_pix); - SPIFFS_CHECK_RES(res); - } - SPIFFS_DBG("read: load objix page %04x:%04x for data spix:%04x\n", objix_pix, cur_objix_spix, data_spix); - res = _spiffs_rd(fs, SPIFFS_OP_T_OBJ_IX | SPIFFS_OP_C_READ, - fd->file_nbr, SPIFFS_PAGE_TO_PADDR(fs, objix_pix), SPIFFS_CFG_LOG_PAGE_SZ(fs), fs->work); - SPIFFS_CHECK_RES(res); - SPIFFS_VALIDATE_OBJIX(objix->p_hdr, fd->obj_id, cur_objix_spix); - - fd->offset = cur_offset; - fd->cursor_objix_pix = objix_pix; - fd->cursor_objix_spix = cur_objix_spix; - - prev_objix_spix = cur_objix_spix; - } - - if (cur_objix_spix == 0) { - // get data page from object index header page - data_pix = ((spiffs_page_ix*)((u8_t *)objix_hdr + sizeof(spiffs_page_object_ix_header)))[data_spix]; +#if SPIFFS_IX_MAP + // check if we have a memory, index map and if so, if we're within index map's range + // and if so, if the entry is populated + if (fd->ix_map && data_spix >= fd->ix_map->start_spix && data_spix <= fd->ix_map->end_spix + && fd->ix_map->map_buf[data_spix - fd->ix_map->start_spix]) { + data_pix = fd->ix_map->map_buf[data_spix - fd->ix_map->start_spix]; } else { - // get data page from object index page - data_pix = ((spiffs_page_ix*)((u8_t *)objix + sizeof(spiffs_page_object_ix)))[SPIFFS_OBJ_IX_ENTRY(fs, data_spix)]; - } +#endif + cur_objix_spix = SPIFFS_OBJ_IX_ENTRY_SPAN_IX(fs, data_spix); + if (prev_objix_spix != cur_objix_spix) { + // load current object index (header) page + if (cur_objix_spix == 0) { + objix_pix = fd->objix_hdr_pix; + } else { + SPIFFS_DBG("read: find objix "_SPIPRIid":"_SPIPRIsp"\n", fd->obj_id, cur_objix_spix); + if (fd->cursor_objix_spix == cur_objix_spix) { + objix_pix = fd->cursor_objix_pix; + } else { + res = spiffs_obj_lu_find_id_and_span(fs, fd->obj_id | SPIFFS_OBJ_ID_IX_FLAG, cur_objix_spix, 0, &objix_pix); + SPIFFS_CHECK_RES(res); + } + } + SPIFFS_DBG("read: load objix page "_SPIPRIpg":"_SPIPRIsp" for data spix:"_SPIPRIsp"\n", objix_pix, cur_objix_spix, data_spix); + res = _spiffs_rd(fs, SPIFFS_OP_T_OBJ_IX | SPIFFS_OP_C_READ, + fd->file_nbr, SPIFFS_PAGE_TO_PADDR(fs, objix_pix), SPIFFS_CFG_LOG_PAGE_SZ(fs), fs->work); + SPIFFS_CHECK_RES(res); + SPIFFS_VALIDATE_OBJIX(objix->p_hdr, fd->obj_id, cur_objix_spix); + fd->offset = cur_offset; + fd->cursor_objix_pix = objix_pix; + fd->cursor_objix_spix = cur_objix_spix; + + prev_objix_spix = cur_objix_spix; + } + + if (cur_objix_spix == 0) { + // get data page from object index header page + data_pix = ((spiffs_page_ix*)((u8_t *)objix_hdr + sizeof(spiffs_page_object_ix_header)))[data_spix]; + } else { + // get data page from object index page + data_pix = ((spiffs_page_ix*)((u8_t *)objix + sizeof(spiffs_page_object_ix)))[SPIFFS_OBJ_IX_ENTRY(fs, data_spix)]; + } +#if SPIFFS_IX_MAP + } +#endif // all remaining data u32_t len_to_read = offset + len - cur_offset; // remaining data in page len_to_read = MIN(len_to_read, SPIFFS_DATA_PAGE_SIZE(fs) - (cur_offset % SPIFFS_DATA_PAGE_SIZE(fs))); // remaining data in file len_to_read = MIN(len_to_read, fd->size); - SPIFFS_DBG("read: offset:%i rd:%i data spix:%04x is data_pix:%04x addr:%08x\n", cur_offset, len_to_read, data_spix, data_pix, - SPIFFS_PAGE_TO_PADDR(fs, data_pix) + sizeof(spiffs_page_header) + (cur_offset % SPIFFS_DATA_PAGE_SIZE(fs))); + SPIFFS_DBG("read: offset:"_SPIPRIi" rd:"_SPIPRIi" data spix:"_SPIPRIsp" is data_pix:"_SPIPRIpg" addr:"_SPIPRIad"\n", cur_offset, len_to_read, data_spix, data_pix, + (u32_t)(SPIFFS_PAGE_TO_PADDR(fs, data_pix) + sizeof(spiffs_page_header) + (cur_offset % SPIFFS_DATA_PAGE_SIZE(fs)))); if (len_to_read <= 0) { res = SPIFFS_ERR_END_OF_OBJECT; break; @@ -1858,7 +2107,7 @@ static s32_t spiffs_obj_lu_find_free_obj_id_compact_v(spiffs *fs, spiffs_obj_id if (id >= state->min_obj_id && id <= state->max_obj_id) { u8_t *map = (u8_t *)fs->work; int ix = (id - state->min_obj_id) / state->compaction; - //SPIFFS_DBG("free_obj_id: add ix %i for id %04x min:%04x max%04x comp:%i\n", ix, id, state->min_obj_id, state->max_obj_id, state->compaction); + //SPIFFS_DBG("free_obj_id: add ix "_SPIPRIi" for id "_SPIPRIid" min"_SPIPRIid" max"_SPIPRIid" comp:"_SPIPRIi"\n", ix, id, state->min_obj_id, state->max_obj_id, state->compaction); map[ix]++; } } @@ -1886,7 +2135,7 @@ s32_t spiffs_obj_lu_find_free_obj_id(spiffs *fs, spiffs_obj_id *obj_id, const u8 if (state.max_obj_id - state.min_obj_id <= (spiffs_obj_id)SPIFFS_CFG_LOG_PAGE_SZ(fs)*8) { // possible to represent in bitmap u32_t i, j; - SPIFFS_DBG("free_obj_id: BITM min:%04x max:%04x\n", state.min_obj_id, state.max_obj_id); + SPIFFS_DBG("free_obj_id: BITM min:"_SPIPRIid" max:"_SPIPRIid"\n", state.min_obj_id, state.max_obj_id); memset(fs->work, 0, SPIFFS_CFG_LOG_PAGE_SZ(fs)); res = spiffs_obj_lu_find_entry_visitor(fs, 0, 0, 0, 0, spiffs_obj_lu_find_free_obj_id_bitmap_v, @@ -1931,14 +2180,14 @@ s32_t spiffs_obj_lu_find_free_obj_id(spiffs *fs, spiffs_obj_id *obj_id, const u8 return SPIFFS_ERR_FULL; } - SPIFFS_DBG("free_obj_id: COMP select index:%i min_count:%i min:%04x max:%04x compact:%i\n", min_i, min_count, state.min_obj_id, state.max_obj_id, state.compaction); + SPIFFS_DBG("free_obj_id: COMP select index:"_SPIPRIi" min_count:"_SPIPRIi" min:"_SPIPRIid" max:"_SPIPRIid" compact:"_SPIPRIi"\n", min_i, min_count, state.min_obj_id, state.max_obj_id, state.compaction); if (min_count == 0) { // no id in this range, skip compacting and use directly *obj_id = min_i * state.compaction + state.min_obj_id; return SPIFFS_OK; } else { - SPIFFS_DBG("free_obj_id: COMP SEL chunk:%04x min:%04x -> %04x\n", state.compaction, state.min_obj_id, state.min_obj_id + min_i * state.compaction); + SPIFFS_DBG("free_obj_id: COMP SEL chunk:"_SPIPRIi" min:"_SPIPRIid" -> "_SPIPRIid"\n", state.compaction, state.min_obj_id, state.min_obj_id + min_i * state.compaction); state.min_obj_id += min_i * state.compaction; state.max_obj_id = state.min_obj_id + state.compaction; // decrease compaction @@ -1951,7 +2200,7 @@ s32_t spiffs_obj_lu_find_free_obj_id(spiffs *fs, spiffs_obj_id *obj_id, const u8 // in a work memory of log_page_size bytes, we may fit in log_page_size ids // todo what if compaction is > 255 - then we cannot fit it in a byte state.compaction = (state.max_obj_id-state.min_obj_id) / ((SPIFFS_CFG_LOG_PAGE_SZ(fs) / sizeof(u8_t))); - SPIFFS_DBG("free_obj_id: COMP min:%04x max:%04x compact:%i\n", state.min_obj_id, state.max_obj_id, state.compaction); + SPIFFS_DBG("free_obj_id: COMP min:"_SPIPRIid" max:"_SPIPRIid" compact:"_SPIPRIi"\n", state.min_obj_id, state.max_obj_id, state.compaction); memset(fs->work, 0, SPIFFS_CFG_LOG_PAGE_SZ(fs)); res = spiffs_obj_lu_find_entry_visitor(fs, 0, 0, 0, 0, spiffs_obj_lu_find_free_obj_id_compact_v, &state, 0, 0, 0); @@ -1965,7 +2214,84 @@ s32_t spiffs_obj_lu_find_free_obj_id(spiffs *fs, spiffs_obj_id *obj_id, const u8 } #endif // !SPIFFS_READ_ONLY -s32_t spiffs_fd_find_new(spiffs *fs, spiffs_fd **fd) { +#if SPIFFS_TEMPORAL_FD_CACHE +// djb2 hash +static u32_t spiffs_hash(spiffs *fs, const u8_t *name) { + (void)fs; + u32_t hash = 5381; + u8_t c; + int i = 0; + while ((c = name[i++]) && i < SPIFFS_OBJ_NAME_LEN) { + hash = (hash * 33) ^ c; + } + return hash; +} +#endif + +s32_t spiffs_fd_find_new(spiffs *fs, spiffs_fd **fd, const char *name) { +#if SPIFFS_TEMPORAL_FD_CACHE + u32_t i; + u16_t min_score = 0xffff; + u32_t cand_ix = (u32_t)-1; + u32_t name_hash = name ? spiffs_hash(fs, (const u8_t *)name) : 0; + spiffs_fd *fds = (spiffs_fd *)fs->fd_space; + + if (name) { + // first, decrease score of all closed descriptors + for (i = 0; i < fs->fd_count; i++) { + spiffs_fd *cur_fd = &fds[i]; + if (cur_fd->file_nbr == 0) { + if (cur_fd->score > 1) { // score == 0 indicates never used fd + cur_fd->score--; + } + } + } + } + + // find the free fd with least score or name match + for (i = 0; i < fs->fd_count; i++) { + spiffs_fd *cur_fd = &fds[i]; + if (cur_fd->file_nbr == 0) { + if (name && cur_fd->name_hash == name_hash) { + cand_ix = i; + break; + } + if (cur_fd->score < min_score) { + min_score = cur_fd->score; + cand_ix = i; + } + } + } + + if (cand_ix != (u32_t)-1) { + spiffs_fd *cur_fd = &fds[cand_ix]; + if (name) { + if (cur_fd->name_hash == name_hash && cur_fd->score > 0) { + // opened an fd with same name hash, assume same file + // set search point to saved obj index page and hope we have a correct match directly + // when start searching - if not, we will just keep searching until it is found + fs->cursor_block_ix = SPIFFS_BLOCK_FOR_PAGE(fs, cur_fd->objix_hdr_pix); + fs->cursor_obj_lu_entry = SPIFFS_OBJ_LOOKUP_ENTRY_FOR_PAGE(fs, cur_fd->objix_hdr_pix); + // update score + if (cur_fd->score < 0xffff-SPIFFS_TEMPORAL_CACHE_HIT_SCORE) { + cur_fd->score += SPIFFS_TEMPORAL_CACHE_HIT_SCORE; + } else { + cur_fd->score = 0xffff; + } + } else { + // no hash hit, restore this fd to initial state + cur_fd->score = SPIFFS_TEMPORAL_CACHE_HIT_SCORE; + cur_fd->name_hash = name_hash; + } + } + cur_fd->file_nbr = cand_ix+1; + *fd = cur_fd; + return SPIFFS_OK; + } else { + return SPIFFS_ERR_OUT_OF_FILE_DESCS; + } +#else + (void)name; u32_t i; spiffs_fd *fds = (spiffs_fd *)fs->fd_space; for (i = 0; i < fs->fd_count; i++) { @@ -1977,6 +2303,7 @@ s32_t spiffs_fd_find_new(spiffs *fs, spiffs_fd **fd) { } } return SPIFFS_ERR_OUT_OF_FILE_DESCS; +#endif } s32_t spiffs_fd_return(spiffs *fs, spiffs_file f) { @@ -1989,6 +2316,9 @@ s32_t spiffs_fd_return(spiffs *fs, spiffs_file f) { return SPIFFS_ERR_FILE_CLOSED; } fd->file_nbr = 0; +#if SPIFFS_IX_MAP + fd->ix_map = 0; +#endif return SPIFFS_OK; } @@ -2003,3 +2333,21 @@ s32_t spiffs_fd_get(spiffs *fs, spiffs_file f, spiffs_fd **fd) { } return SPIFFS_OK; } + +#if SPIFFS_TEMPORAL_FD_CACHE +void spiffs_fd_temporal_cache_rehash( + spiffs *fs, + const char *old_path, + const char *new_path) { + u32_t i; + u32_t old_hash = spiffs_hash(fs, (const u8_t *)old_path); + u32_t new_hash = spiffs_hash(fs, (const u8_t *)new_path); + spiffs_fd *fds = (spiffs_fd *)fs->fd_space; + for (i = 0; i < fs->fd_count; i++) { + spiffs_fd *cur_fd = &fds[i]; + if (cur_fd->score > 0 && cur_fd->name_hash == old_hash) { + cur_fd->name_hash = new_hash; + } + } +} +#endif diff --git a/cores/esp8266/spiffs/spiffs_nucleus.h b/cores/esp8266/spiffs/spiffs_nucleus.h index 6e4e8ac33..3d77d508a 100644 --- a/cores/esp8266/spiffs/spiffs_nucleus.h +++ b/cores/esp8266/spiffs/spiffs_nucleus.h @@ -116,13 +116,23 @@ #define SPIFFS_ERR_CHECK_FLAGS_BAD (SPIFFS_ERR_INTERNAL - 3) #define _SPIFFS_ERR_CHECK_LAST (SPIFFS_ERR_INTERNAL - 4) +// visitor result, continue searching #define SPIFFS_VIS_COUNTINUE (SPIFFS_ERR_INTERNAL - 20) +// visitor result, continue searching after reloading lu buffer #define SPIFFS_VIS_COUNTINUE_RELOAD (SPIFFS_ERR_INTERNAL - 21) +// visitor result, stop searching #define SPIFFS_VIS_END (SPIFFS_ERR_INTERNAL - 22) -#define SPIFFS_EV_IX_UPD 0 -#define SPIFFS_EV_IX_NEW 1 -#define SPIFFS_EV_IX_DEL 2 +// updating an object index contents +#define SPIFFS_EV_IX_UPD (0) +// creating a new object index +#define SPIFFS_EV_IX_NEW (1) +// deleting an object index +#define SPIFFS_EV_IX_DEL (2) +// moving an object index without updating contents +#define SPIFFS_EV_IX_MOV (3) +// updating an object index header data only, not the table itself +#define SPIFFS_EV_IX_UPD_HDR (4) #define SPIFFS_OBJ_ID_IX_FLAG ((spiffs_obj_id)(1<<(8*sizeof(spiffs_obj_id)-1))) @@ -228,6 +238,17 @@ // object index span index number for given data span index or entry #define SPIFFS_OBJ_IX_ENTRY_SPAN_IX(fs, spix) \ ((spix) < SPIFFS_OBJ_HDR_IX_LEN(fs) ? 0 : (1+((spix)-SPIFFS_OBJ_HDR_IX_LEN(fs))/SPIFFS_OBJ_IX_LEN(fs))) +// get data span index for object index span index +#define SPIFFS_DATA_SPAN_IX_FOR_OBJ_IX_SPAN_IX(fs, spix) \ + ( (spix) == 0 ? 0 : (SPIFFS_OBJ_HDR_IX_LEN(fs) + (((spix)-1) * SPIFFS_OBJ_IX_LEN(fs))) ) + +#if SPIFFS_FILEHDL_OFFSET +#define SPIFFS_FH_OFFS(fs, fh) ((fh) != 0 ? ((fh) + (fs)->cfg.fh_ix_offset) : 0) +#define SPIFFS_FH_UNOFFS(fs, fh) ((fh) != 0 ? ((fh) - (fs)->cfg.fh_ix_offset) : 0) +#else +#define SPIFFS_FH_OFFS(fs, fh) (fh) +#define SPIFFS_FH_UNOFFS(fs, fh) (fh) +#endif #define SPIFFS_OP_T_OBJ_LU (0<<0) @@ -272,26 +293,26 @@ #define SPIFFS_API_CHECK_MOUNT(fs) \ if (!SPIFFS_CHECK_MOUNT((fs))) { \ (fs)->err_code = SPIFFS_ERR_NOT_MOUNTED; \ - return -1; \ + return SPIFFS_ERR_NOT_MOUNTED; \ } #define SPIFFS_API_CHECK_CFG(fs) \ if (!SPIFFS_CHECK_CFG((fs))) { \ (fs)->err_code = SPIFFS_ERR_NOT_CONFIGURED; \ - return -1; \ + return SPIFFS_ERR_NOT_CONFIGURED; \ } #define SPIFFS_API_CHECK_RES(fs, res) \ if ((res) < SPIFFS_OK) { \ (fs)->err_code = (res); \ - return -1; \ + return (res); \ } #define SPIFFS_API_CHECK_RES_UNLOCK(fs, res) \ if ((res) < SPIFFS_OK) { \ (fs)->err_code = (res); \ SPIFFS_UNLOCK(fs); \ - return -1; \ + return (res); \ } #define SPIFFS_VALIDATE_OBJIX(ph, objid, spix) \ @@ -312,7 +333,7 @@ if ((ph).span_ix != (spix)) return SPIFFS_ERR_DATA_SPAN_MISMATCH; -// check id +// check id, only visit matching objec ids #define SPIFFS_VIS_CHECK_ID (1<<0) // report argument object id to visitor - else object lookup id is reported #define SPIFFS_VIS_CHECK_PH (1<<1) @@ -418,13 +439,23 @@ typedef struct { spiffs_span_ix cursor_objix_spix; // current absolute offset u32_t offset; - // current file descriptor offset + // current file descriptor offset (cached) u32_t fdoffset; // fd flags spiffs_flags flags; #if SPIFFS_CACHE_WR spiffs_cache_page *cache_page; #endif +#if SPIFFS_TEMPORAL_FD_CACHE + // djb2 hash of filename + u32_t name_hash; + // hit score (score == 0 indicates never used fd) + u16_t score; +#endif +#if SPIFFS_IX_MAP + // spiffs index map, if 0 it means unmapped + spiffs_ix_map *ix_map; +#endif } spiffs_fd; @@ -458,6 +489,10 @@ typedef struct __attribute(( packed )) spiffs_obj_type type; // name of object u8_t name[SPIFFS_OBJ_NAME_LEN]; +#if SPIFFS_OBJ_META_LEN + // metadata. not interpreted by SPIFFS in any way. + u8_t meta[SPIFFS_OBJ_META_LEN]; +#endif } spiffs_page_object_ix_header; // object index page header @@ -612,7 +647,8 @@ s32_t spiffs_page_delete( s32_t spiffs_object_create( spiffs *fs, spiffs_obj_id obj_id, - const u8_t name[SPIFFS_OBJ_NAME_LEN], + const u8_t name[], + const u8_t meta[], spiffs_obj_type type, spiffs_page_ix *objix_hdr_pix); @@ -622,13 +658,24 @@ s32_t spiffs_object_update_index_hdr( spiffs_obj_id obj_id, spiffs_page_ix objix_hdr_pix, u8_t *new_objix_hdr_data, - const u8_t name[SPIFFS_OBJ_NAME_LEN], + const u8_t name[], + const u8_t meta[], u32_t size, spiffs_page_ix *new_pix); -void spiffs_cb_object_event( +#if SPIFFS_IX_MAP + +s32_t spiffs_populate_ix_map( spiffs *fs, spiffs_fd *fd, + u32_t vec_entry_start, + u32_t vec_entry_end); + +#endif + +void spiffs_cb_object_event( + spiffs *fs, + spiffs_page_object_ix *objix, int ev, spiffs_obj_id obj_id, spiffs_span_ix spix, @@ -704,7 +751,8 @@ s32_t spiffs_gc_quick( s32_t spiffs_fd_find_new( spiffs *fs, - spiffs_fd **fd); + spiffs_fd **fd, + const char *name); s32_t spiffs_fd_return( spiffs *fs, @@ -715,6 +763,13 @@ s32_t spiffs_fd_get( spiffs_file f, spiffs_fd **fd); +#if SPIFFS_TEMPORAL_FD_CACHE +void spiffs_fd_temporal_cache_rehash( + spiffs *fs, + const char *old_path, + const char *new_path); +#endif + #if SPIFFS_CACHE void spiffs_cache_init( spiffs *fs); @@ -748,4 +803,24 @@ s32_t spiffs_page_consistency_check( s32_t spiffs_object_index_consistency_check( spiffs *fs); +// memcpy macro, +// checked in test builds, otherwise plain memcpy (unless already defined) +#ifdef _SPIFFS_TEST +#define _SPIFFS_MEMCPY(__d, __s, __l) do { \ + intptr_t __a1 = (intptr_t)((u8_t*)(__s)); \ + intptr_t __a2 = (intptr_t)((u8_t*)(__s)+(__l)); \ + intptr_t __b1 = (intptr_t)((u8_t*)(__d)); \ + intptr_t __b2 = (intptr_t)((u8_t*)(__d)+(__l)); \ + if (__a1 <= __b2 && __b1 <= __a2) { \ + printf("FATAL OVERLAP: memcpy from %lx..%lx to %lx..%lx\n", __a1, __a2, __b1, __b2); \ + ERREXIT(); \ + } \ + memcpy((__d),(__s),(__l)); \ +} while (0) +#else +#ifndef _SPIFFS_MEMCPY +#define _SPIFFS_MEMCPY(__d, __s, __l) do{memcpy((__d),(__s),(__l));}while(0) +#endif +#endif //_SPIFFS_TEST + #endif /* SPIFFS_NUCLEUS_H_ */ diff --git a/package/package_esp8266com_index.template.json b/package/package_esp8266com_index.template.json index 53c8dd407..b1f746010 100644 --- a/package/package_esp8266com_index.template.json +++ b/package/package_esp8266com_index.template.json @@ -92,7 +92,7 @@ { "packager": "esp8266", "name": "mkspiffs", - "version": "0.1.2" + "version": "0.1.3" } ] } @@ -196,49 +196,49 @@ }, { "name": "mkspiffs", - "version": "0.1.2", + "version": "0.1.3", "systems": [ { "host": "i686-mingw32", - "url": "https://github.com/igrr/mkspiffs/releases/download/0.1.2/mkspiffs-0.1.2-windows.zip", - "archiveFileName": "mkspiffs-0.1.2-windows.zip", - "checksum": "SHA-256:0a29119b8458b61a877408f7995e4944623a712e0d313a2c2f76af9ab55cc9f2", - "size": "230802" + "url": "https://github.com/igrr/mkspiffs/releases/download/0.1.3/mkspiffs-0.1.3-windows.zip", + "archiveFileName": "mkspiffs-0.1.3-windows.zip", + "checksum": "SHA-256:67a7788cd6c6827bcbb6875272ecbd6b6b243cc07ba405b77ba88f7aef067d26", + "size": "346865" }, { "host": "x86_64-apple-darwin", - "url": "https://github.com/igrr/mkspiffs/releases/download/0.1.2/mkspiffs-0.1.2-osx.tar.gz", - "archiveFileName": "mkspiffs-0.1.2-osx.tar.gz", - "checksum": "SHA-256:df656fae21a41c1269ea50cb53752dcaf6a4e1437255f3a9fb50b4025549b58e", - "size": "115091" + "url": "https://github.com/igrr/mkspiffs/releases/download/0.1.3/mkspiffs-0.1.3-osx.tar.gz", + "archiveFileName": "mkspiffs-0.1.3-osx.tar.gz", + "checksum": "SHA-256:38e77dca9b5bbd255289f823214f5dbbb433188bc39c99ca9bde5a86cd1e3319", + "size": "118685" }, { "host": "i386-apple-darwin", - "url": "https://github.com/igrr/mkspiffs/releases/download/0.1.2/mkspiffs-0.1.2-osx.tar.gz", - "archiveFileName": "mkspiffs-0.1.2-osx.tar.gz", - "checksum": "SHA-256:df656fae21a41c1269ea50cb53752dcaf6a4e1437255f3a9fb50b4025549b58e", - "size": "115091" + "url": "https://github.com/igrr/mkspiffs/releases/download/0.1.3/mkspiffs-0.1.3-osx.tar.gz", + "archiveFileName": "mkspiffs-0.1.3-osx.tar.gz", + "checksum": "SHA-256:38e77dca9b5bbd255289f823214f5dbbb433188bc39c99ca9bde5a86cd1e3319", + "size": "118685" }, { "host": "x86_64-pc-linux-gnu", - "url": "https://github.com/igrr/mkspiffs/releases/download/0.1.2/mkspiffs-0.1.2-linux64.tar.gz", - "archiveFileName": "mkspiffs-0.1.2-linux64.tar.gz", - "checksum": "SHA-256:1a1dd81b51daf74c382db71b42251757ca4136e8762107e69feaa8617bac315f", - "size": "46281" + "url": "https://github.com/igrr/mkspiffs/releases/download/0.1.3/mkspiffs-0.1.3-linux64.tar.gz", + "archiveFileName": "mkspiffs-0.1.3-linux64.tar.gz", + "checksum": "SHA-256:7c7a8826ea194fa313f3da0aa5a0bfb6064074db04107a44d399803581d19b86", + "size": "48926" }, { "host": "i686-pc-linux-gnu", - "url": "https://github.com/igrr/mkspiffs/releases/download/0.1.2/mkspiffs-0.1.2-linux32.tar.gz", - "archiveFileName": "mkspiffs-0.1.2-linux32.tar.gz", - "checksum": "SHA-256:e990d545dfcae308aabaac5fa9e1db734cc2b08167969e7eedac88bd0839667c", - "size": "45272" + "url": "https://github.com/igrr/mkspiffs/releases/download/0.1.3/mkspiffs-0.1.3-linux32.tar.gz", + "archiveFileName": "mkspiffs-0.1.3-linux32.tar.gz", + "checksum": "SHA-256:7c3f0071282176ba1480827cf10eea4ab2faa3ce89d0e125fc265e6241f197e7", + "size": "49540" }, { "host": "arm-linux-gnueabihf", - "url": "https://github.com/igrr/mkspiffs/releases/download/0.1.2/mkspiffs-0.1.2-linux-armhf.tar.gz", - "archiveFileName": "mkspiffs-0.1.2-linux-armhf.tar.gz", - "checksum": "SHA-256:5a8836932cd24325d69054cebdd46359eba02919ffaa87b130c54acfecc13f46", - "size": "41685" + "url": "https://github.com/igrr/mkspiffs/releases/download/0.1.3/mkspiffs-0.1.3-linux-armhf.tar.gz", + "archiveFileName": "mkspiffs-0.1.3-linux-armhf.tar.gz", + "checksum": "SHA-256:11ff7db01127db24bd4fc2905c6ec1b8bc6219c2b6340198556036f1622e93cb", + "size": "43519" } ] } From 1843030b8aedde2178220156043aa4b5c16d72d0 Mon Sep 17 00:00:00 2001 From: probonopd Date: Tue, 12 Sep 2017 14:41:54 +0200 Subject: [PATCH 044/156] Allow for double quotes in boundary (#3455) as per https://tools.ietf.org/html/rfc2046#section-5.1.1 --- libraries/ESP8266WebServer/src/Parsing.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/ESP8266WebServer/src/Parsing.cpp b/libraries/ESP8266WebServer/src/Parsing.cpp index d069bf1a1..84b2cceca 100644 --- a/libraries/ESP8266WebServer/src/Parsing.cpp +++ b/libraries/ESP8266WebServer/src/Parsing.cpp @@ -166,6 +166,7 @@ bool ESP8266WebServer::_parseRequest(WiFiClient& client) { isEncoded = true; } else if (headerValue.startsWith("multipart/")){ boundaryStr = headerValue.substring(headerValue.indexOf('=')+1); + boundaryStr.replace("\"",""); isForm = true; } } else if (headerName.equalsIgnoreCase("Content-Length")){ From 438dae64c735ec1baee197dccb02cebb2542c017 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Tue, 12 Sep 2017 21:30:18 +0800 Subject: [PATCH 045/156] link airkiss library https://github.com/esp8266/Arduino/issues/3592 --- platform.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform.txt b/platform.txt index 4c305a85d..ac704db79 100644 --- a/platform.txt +++ b/platform.txt @@ -34,7 +34,7 @@ compiler.S.flags=-c -g -x assembler-with-cpp -MMD -mlongcalls compiler.c.elf.flags=-g {compiler.warning_flags} -Os -nostdlib -Wl,--no-check-sections -u call_user_start -u _printf_float -u _scanf_float -Wl,-static "-L{compiler.sdk.path}/lib" "-L{compiler.sdk.path}/ld" "-L{compiler.libc.path}/lib" "-T{build.flash_ld}" -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read compiler.c.elf.cmd=xtensa-lx106-elf-gcc -compiler.c.elf.libs=-lhal -lphy -lpp -lnet80211 {build.lwip_lib} -lwpa -lcrypto -lmain -lwps -laxtls -lespnow -lsmartconfig -lmesh -lwpa2 -lstdc++ -lm -lc -lgcc +compiler.c.elf.libs=-lhal -lphy -lpp -lnet80211 {build.lwip_lib} -lwpa -lcrypto -lmain -lwps -laxtls -lespnow -lsmartconfig -lairkiss -lmesh -lwpa2 -lstdc++ -lm -lc -lgcc compiler.cpp.cmd=xtensa-lx106-elf-g++ compiler.cpp.flags=-c {compiler.warning_flags} -Os -g -mlongcalls -mtext-section-literals -fno-exceptions -fno-rtti -falign-functions=4 -std=c++11 -MMD -ffunction-sections -fdata-sections From 83dd960fe553585ea5127f045cd3bb58b472c657 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Tue, 12 Sep 2017 20:02:30 +0300 Subject: [PATCH 046/156] Install @PlatformIO Core to user's space --- tests/common.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/common.sh b/tests/common.sh index 1387e5467..c6fa2cdeb 100755 --- a/tests/common.sh +++ b/tests/common.sh @@ -125,7 +125,7 @@ function build_package() function install_platformio() { - pip install -U https://github.com/platformio/platformio/archive/develop.zip + pip install --user -U https://github.com/platformio/platformio/archive/develop.zip platformio platform install https://github.com/platformio/platform-espressif8266.git#feature/stage sed -i 's/https:\/\/github\.com\/esp8266\/Arduino\.git/*/' ~/.platformio/platforms/espressif8266_stage/platform.json ln -s $TRAVIS_BUILD_DIR ~/.platformio/packages/framework-arduinoespressif8266 From e68e3402fac85af65bf28473b4fa8dd8e0341763 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Tue, 12 Sep 2017 22:28:26 -0500 Subject: [PATCH 047/156] core: mask GPIO interrupts while attaching/detaching ISR handler (#3598) Fixes https://github.com/esp8266/Arduino/issues/2916. --- cores/esp8266/core_esp8266_wiring_digital.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cores/esp8266/core_esp8266_wiring_digital.c b/cores/esp8266/core_esp8266_wiring_digital.c index 5df128833..9d88ba847 100644 --- a/cores/esp8266/core_esp8266_wiring_digital.c +++ b/cores/esp8266/core_esp8266_wiring_digital.c @@ -152,6 +152,7 @@ void ICACHE_RAM_ATTR interrupt_handler(void *arg) { extern void ICACHE_RAM_ATTR __attachInterruptArg(uint8_t pin, voidFuncPtr userFunc, void *arg, int mode) { if(pin < 16) { + ETS_GPIO_INTR_DISABLE(); interrupt_handler_t *handler = &interrupt_handlers[pin]; handler->mode = mode; handler->fn = userFunc; @@ -160,6 +161,7 @@ extern void ICACHE_RAM_ATTR __attachInterruptArg(uint8_t pin, voidFuncPtr userFu GPC(pin) &= ~(0xF << GPCI);//INT mode disabled GPIEC = (1 << pin); //Clear Interrupt for this pin GPC(pin) |= ((mode & 0xF) << GPCI);//INT mode "mode" + ETS_GPIO_INTR_ENABLE(); } } @@ -170,6 +172,7 @@ extern void ICACHE_RAM_ATTR __attachInterrupt(uint8_t pin, voidFuncPtr userFunc, extern void ICACHE_RAM_ATTR __detachInterrupt(uint8_t pin) { if(pin < 16) { + ETS_GPIO_INTR_DISABLE(); GPC(pin) &= ~(0xF << GPCI);//INT mode disabled GPIEC = (1 << pin); //Clear Interrupt for this pin interrupt_reg &= ~(1 << pin); @@ -177,6 +180,7 @@ extern void ICACHE_RAM_ATTR __detachInterrupt(uint8_t pin) { handler->mode = 0; handler->fn = 0; handler->arg = 0; + ETS_GPIO_INTR_ENABLE(); } } From 3e9caf7a3d26690f1a5b5f47d384e57237598bbe Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Fri, 15 Sep 2017 16:09:29 +0800 Subject: [PATCH 048/156] tools/sdk: remove conflicting time.o from libmain.a --- tools/sdk/lib/README.md | 27 +++++++++++++++------------ tools/sdk/lib/libmain.a | Bin 206954 -> 199606 bytes 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/tools/sdk/lib/README.md b/tools/sdk/lib/README.md index 595916701..dee6b37c2 100644 --- a/tools/sdk/lib/README.md +++ b/tools/sdk/lib/README.md @@ -3,22 +3,25 @@ After updating SDK libraries to a new version, do the following changes. -1. Remove mem_manager.o from libmain.a to use custom heap implementation +Remove mem_manager.o from libmain.a to use custom heap implementation, and time.o to fix redefinition of time-related functions: - ```bash - xtensa-lx106-elf-ar -d libmain.a mem_manager.o - ``` +```bash +xtensa-lx106-elf-ar -d libmain.a mem_manager.o +xtensa-lx106-elf-ar -d libmain.a time.o +``` ## Updating libstdc++ After building gcc using crosstool-NG, get compiled libstdc++ and remove some objects: - xtensa-lx106-elf-ar d libstdc++.a pure.o - xtensa-lx106-elf-ar d libstdc++.a vterminate.o - xtensa-lx106-elf-ar d libstdc++.a guard.o - xtensa-lx106-elf-ar d libstdc++.a functexcept.o - xtensa-lx106-elf-ar d libstdc++.a del_op.o - xtensa-lx106-elf-ar d libstdc++.a del_opv.o - xtensa-lx106-elf-ar d libstdc++.a new_op.o - xtensa-lx106-elf-ar d libstdc++.a new_opv.o +```bash +xtensa-lx106-elf-ar d libstdc++.a pure.o +xtensa-lx106-elf-ar d libstdc++.a vterminate.o +xtensa-lx106-elf-ar d libstdc++.a guard.o +xtensa-lx106-elf-ar d libstdc++.a functexcept.o +xtensa-lx106-elf-ar d libstdc++.a del_op.o +xtensa-lx106-elf-ar d libstdc++.a del_opv.o +xtensa-lx106-elf-ar d libstdc++.a new_op.o +xtensa-lx106-elf-ar d libstdc++.a new_opv.o +``` diff --git a/tools/sdk/lib/libmain.a b/tools/sdk/lib/libmain.a index fdc93e024bfd6a802d812be086c6b82fead7b5c8..29a9aa493669f039e462fbd0c9c8ed1bed271835 100644 GIT binary patch delta 1059 zcmaELfoI!vo(YomrUs@aW=4ia<_Zc13Ltpz_db+foW|L0&o4rzy!j3{TP@IFQW#|%uCB>$SKb(*lfzu bz|^eBzFm=>QI)wpON|kTnU-g%F*5-G{;li@ delta 6003 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 From eebc5ec593a8c739f8da2612a0e25ff4dab982fb Mon Sep 17 00:00:00 2001 From: Ahmed El Sharnoby Date: Mon, 18 Sep 2017 13:31:32 +0300 Subject: [PATCH 049/156] Digest Authentication in Webserver Library (#3053) * Add Digest Auth * Check for Opaque and Nonce * Remove Serial Debug and fix Indentation * Added example sketch with documentation,Fixed indentation and Defaults * Digest Authentication minor changes + new padded 32 digit random function * update license to public domain * renaming functions --- .gitignore | 1 + .../HttpAdvancedAuth/HttpAdvancedAuth.ino | 57 ++++++++++ .../ESP8266WebServer/src/ESP8266WebServer.cpp | 103 +++++++++++++++++- .../ESP8266WebServer/src/ESP8266WebServer.h | 11 +- 4 files changed, 168 insertions(+), 4 deletions(-) create mode 100644 libraries/ESP8266WebServer/examples/HttpAdvancedAuth/HttpAdvancedAuth.ino diff --git a/.gitignore b/.gitignore index c36bdd3aa..7d74b8bcf 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ tools/sdk/lwip/src/build tools/sdk/lwip/src/liblwip_src.a *.pyc +*.gch diff --git a/libraries/ESP8266WebServer/examples/HttpAdvancedAuth/HttpAdvancedAuth.ino b/libraries/ESP8266WebServer/examples/HttpAdvancedAuth/HttpAdvancedAuth.ino new file mode 100644 index 000000000..72af50a4f --- /dev/null +++ b/libraries/ESP8266WebServer/examples/HttpAdvancedAuth/HttpAdvancedAuth.ino @@ -0,0 +1,57 @@ +/* + HTTP Advanced Authentication example + Created Mar 16, 2017 by Ahmed El-Sharnoby. + This example code is in the public domain. +*/ + +#include +#include +#include +#include + +const char* ssid = "........"; +const char* password = "........"; + +ESP8266WebServer server(80); + +const char* www_username = "admin"; +const char* www_password = "esp8266"; + // allows you to set the realm of authentication Default:"Login Required" +const char* www_realm = "Custom Auth Realm"; +// the Content of the HTML response in case of Unautherized Access Default:empty +String authFailResponse = "Authentication Failed"; + +void setup() { + Serial.begin(115200); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + if(WiFi.waitForConnectResult() != WL_CONNECTED) { + Serial.println("WiFi Connect Failed! Rebooting..."); + delay(1000); + ESP.restart(); + } + ArduinoOTA.begin(); + + server.on("/", [](){ + if(!server.authenticate(www_username, www_password)) + //Basic Auth Method with Custom realm and Failure Response + //return server.requestAuthentication(BASIC_AUTH, www_realm, authFailResponse); + //Digest Auth Method with realm="Login Required" and empty Failure Response + //return server.requestAuthentication(DIGEST_AUTH); + //Digest Auth Method with Custom realm and empty Failure Response + //return server.requestAuthentication(DIGEST_AUTH, www_realm); + //Digest Auth Method with Custom realm and Failure Response + return server.requestAuthentication(DIGEST_AUTH, www_realm, authFailResponse); + server.send(200, "text/plain", "Login OK"); + }); + server.begin(); + + Serial.print("Open http://"); + Serial.print(WiFi.localIP()); + Serial.println("/ in your browser to see it working"); +} + +void loop() { + ArduinoOTA.handle(); + server.handleClient(); +} diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp b/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp index bc41a5603..8bc385328 100644 --- a/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp +++ b/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp @@ -94,6 +94,12 @@ void ESP8266WebServer::begin() { collectHeaders(0, 0); } +String ESP8266WebServer::_exractParam(String& authReq,const String& param,const char delimit){ + int _begin = authReq.indexOf(param); + if (_begin==-1) return ""; + return authReq.substring(_begin+param.length(),authReq.indexOf(delimit,_begin+param.length())); +} + bool ESP8266WebServer::authenticate(const char * username, const char * password){ if(hasHeader(AUTHORIZATION_HEADER)){ String authReq = header(AUTHORIZATION_HEADER); @@ -121,15 +127,106 @@ bool ESP8266WebServer::authenticate(const char * username, const char * password } delete[] toencode; delete[] encoded; + }else if(authReq.startsWith("Digest")){ + authReq = authReq.substring(7); + #ifdef DEBUG_ESP_HTTP_SERVER + DEBUG_OUTPUT.println(authReq); + #endif + String _username = _exractParam(authReq,"username=\""); + if((!_username.length())||_username!=String(username)){ + authReq = String(); + return false; + } + // extracting required parameters for RFC 2069 simpler Digest + String _realm = _exractParam(authReq,"realm=\""); + String _nonce = _exractParam(authReq,"nonce=\""); + String _uri = _exractParam(authReq,"uri=\""); + String _response = _exractParam(authReq,"response=\""); + String _opaque = _exractParam(authReq,"opaque=\""); + + if((!_realm.length())||(!_nonce.length())||(!_uri.length())||(!_response.length())||(!_opaque.length())){ + authReq = String(); + return false; + } + if((_opaque!=_sopaque)||(_nonce!=_snonce)||(_realm!=_srealm)){ + authReq = String(); + return false; + } + // parameters for the RFC 2617 newer Digest + String _nc,_cnonce; + if(authReq.indexOf("qop=auth") != -1){ + _nc = _exractParam(authReq,"nc=",','); + _cnonce = _exractParam(authReq,"cnonce=\""); + } + MD5Builder md5; + md5.begin(); + md5.add(String(username)+":"+_realm+":"+String(password)); // md5 of the user:realm:user + md5.calculate(); + String _H1 = md5.toString(); + #ifdef DEBUG_ESP_HTTP_SERVER + DEBUG_OUTPUT.println("Hash of user:realm:pass=" + _H1); + #endif + md5.begin(); + if(_currentMethod == HTTP_GET){ + md5.add("GET:"+_uri); + }else if(_currentMethod == HTTP_POST){ + md5.add("POST:"+_uri); + }else if(_currentMethod == HTTP_PUT){ + md5.add("PUT:"+_uri); + }else if(_currentMethod == HTTP_DELETE){ + md5.add("DELETE:"+_uri); + }else{ + md5.add("GET:"+_uri); + } + md5.calculate(); + String _H2 = md5.toString(); + #ifdef DEBUG_ESP_HTTP_SERVER + DEBUG_OUTPUT.println("Hash of GET:uri=" + _H2); + #endif + md5.begin(); + if(authReq.indexOf("qop=auth") != -1){ + md5.add(_H1+":"+_nonce+":"+_nc+":"+_cnonce+":auth:"+_H2); + }else{ + md5.add(_H1+":"+_nonce+":"+_H2); + } + md5.calculate(); + String _responsecheck = md5.toString(); + #ifdef DEBUG_ESP_HTTP_SERVER + DEBUG_OUTPUT.println("The Proper response=" +_responsecheck); + #endif + if(_response==_responsecheck){ + authReq = String(); + return true; + } } authReq = String(); } return false; } -void ESP8266WebServer::requestAuthentication(){ - sendHeader("WWW-Authenticate", "Basic realm=\"Login Required\""); - send(401); +String ESP8266WebServer::_getRandomHexString(){ + char buffer[33]; // buffer to hold 32 Hex Digit + /0 + int i; + for(i=0;i<4;i++){ + sprintf (buffer+(i*8), "%08x", RANDOM_REG32); + } + return String(buffer); +} + +void ESP8266WebServer::requestAuthentication(HTTPAuthMethod mode, const char* realm, const String& authFailMsg){ + if(realm==NULL){ + _srealm = "Login Required"; + }else{ + _srealm = String(realm); + } + if(mode==BASIC_AUTH){ + sendHeader("WWW-Authenticate", "Basic realm=\"" + _srealm + "\""); + }else{ + _snonce=_getRandomHexString(); + _sopaque=_getRandomHexString(); + sendHeader("WWW-Authenticate", "Digest realm=\"" +_srealm + "\", qop=\"auth\", nonce=\""+_snonce+"\", opaque=\""+_sopaque+"\""); + } + send(401,"text/html",authFailMsg); } void ESP8266WebServer::on(const String &uri, ESP8266WebServer::THandlerFunction handler) { diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer.h b/libraries/ESP8266WebServer/src/ESP8266WebServer.h index ab22fe659..cd410f5b3 100644 --- a/libraries/ESP8266WebServer/src/ESP8266WebServer.h +++ b/libraries/ESP8266WebServer/src/ESP8266WebServer.h @@ -31,6 +31,7 @@ enum HTTPMethod { HTTP_ANY, HTTP_GET, HTTP_POST, HTTP_PUT, HTTP_PATCH, HTTP_DELE enum HTTPUploadStatus { UPLOAD_FILE_START, UPLOAD_FILE_WRITE, UPLOAD_FILE_END, UPLOAD_FILE_ABORTED }; enum HTTPClientStatus { HC_NONE, HC_WAIT_READ, HC_WAIT_CLOSE }; +enum HTTPAuthMethod { BASIC_AUTH, DIGEST_AUTH }; #define HTTP_DOWNLOAD_UNIT_SIZE 1460 @@ -78,7 +79,7 @@ public: void stop(); bool authenticate(const char * username, const char * password); - void requestAuthentication(); + void requestAuthentication(HTTPAuthMethod mode = BASIC_AUTH, const char* realm = NULL, const String& authFailMsg = String("") ); typedef std::function THandlerFunction; void on(const String &uri, THandlerFunction handler); @@ -149,6 +150,10 @@ protected: uint8_t _uploadReadByte(WiFiClient& client); void _prepareHeader(String& response, int code, const char* content_type, size_t contentLength); bool _collectHeader(const char* headerName, const char* headerValue); + + String _getRandomHexString(); + // for extracting Auth parameters + String _exractParam(String& authReq,const String& param,const char delimit = '"'); struct RequestArgument { String key; @@ -182,6 +187,10 @@ protected: String _hostHeader; bool _chunked; + String _snonce; // Store noance and opaque for future comparison + String _sopaque; + String _srealm; // Store the Auth realm between Calls + }; From c8947953ac12e85e0b6077a284d97f20eb74000d Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Wed, 20 Sep 2017 11:37:26 +0800 Subject: [PATCH 050/156] axtls: update to 66d530a, fixes #3335 SHA512 module stored padding in PROGMEM, but would then pass the pointer to padding into Update function which would do a memcpy. Use the same approach as with SHA256, that is to copy padding to the stack first, and then pass it to Update. --- tools/sdk/lib/libaxtls.a | Bin 1030880 -> 1031364 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tools/sdk/lib/libaxtls.a b/tools/sdk/lib/libaxtls.a index 88729fee7dde0aa3b775b95f08ff78ff77c9c5bc..0d3a3f67af0585d13ee6e945796ea5eaee72ce14 100644 GIT binary patch delta 3461 zcmchZdu&w46~<@oy|WK?*Ir}eT^q31Hs)m;+r$r^exxA|jse5^8B&Z37+eTt8xtTk ztVvX;Domg@nG`v}RJ0)kQ7nXR3#hV@OKAnfNL50bwyE3FL{Vsn@&K#B>UXYZ-K{F5 z{!w+LGxMA8oH;Xh?%c4ed+-FFRXk?u<6+iZB3gu?2@Nk_M~%H zwT%vSS00h0)Ahu2RjyBtjVpUz*L^QGzG*hT$!EVcu2P)Y`@EJKR8oO8)cpN*tzy-< zG^ft)Hy;h?=WP+m#K2u0<2@uFo*(JS(H+9KfA_F%?jAPY&i^;r48@DODM~7oH*$qv zpPyIIwbC_1>&}o9^Tf;Mi9GQg5grNM(I4=+8E4ln%N(kWn-%Nq`}Og652yEjtGXsI z)Dl-bcf#e~ZF$%FuW-iL<=(r%e`E)ymG`H|1>*V_w&yd}K3G=a&Ebu?t*Hp=XKa}} zCuT7pjN3LZVWu&3&bt>g1ig7Dx1ar4d58R{NIaQwY-j9&*K_QP zW2%g?@TswmzN^P?9sY3d{m{gLJkMQb28+crdQl#(AyQfpYv}03i~RUC+dCFbyN59LDWA)cgp)n(MNhcWxRF`-7Dz&)*>JVi)w@5=QW~T zcZR=8_Vb|7J1~u(uhOuazAXq_fqwT`nAQ$Y5FYaHfqxkO)yRC(@>^O`E&7xiX*EX~ z#qXhbJG7g0a$YLO4KPAQ1P5Epo}dfnRY&PGvo7}NGT|iC4Y`8 z@FA*Auq^0l1ZfsgLd=p6HC=MQds0{L^x5)Ef-zBM`9-tbQ7SG}79=f=*L;{hjV+DO zjmNwNOpjUMTIhoA$AsuQ{?!f4;iXA>%nXbwNLrM{F(6G~B&IMomI-bv&cvjgt)iw9 zrm>LK(xz)H%&1*&amZ@vP9vsT=5LAhg`3dhYz;Nm*;Hk>#}_L%fp9*k5HU zkROtrwPJ=igf~*}SjxaY!;nL@!Y$hI`pTBWG$PN%*dwywtu$luU^2<6gUCZ^$lzO!HOXTBd zMLiy`tuj=PQ4KheUWYtdFVe*?r_!YkK-Ola%7gc{MEO-ccBE1sKcV^Lv<6K0LMmec zng2N!(EB~Cy}CiTwM`XrO#|}&2+lIe@4?xFVC|I(d4}{qr{M)C_l{^8TGebh+8}1o z4OuB~j%ejwe|&nb+0!Uaa^51BtQLnnNJ3=_jHk%0@8~}B&T8?J7A}C2fW5<#SrsuZ zgUVJIF`a^tVlUdT;smqDDE&wjzY)c^iB--|iPczv9Ru5~M6vi>t`o@) z&t#nM$V{oS^A9fH;;bl%zK{`jX%s&m#g$RKQVt_Un7*ZvVVk4)*(lx-#q_a_#D71E z>8l&jUyWk=2uJkuQA}TB=%`VCWBz!Hc*`E9x6T{5_=(t1+LxayP6nS>OmC%&iZj7i z6w^r>QjGTndrvW)tlNs|6n~<)5`(YopKbGrh-BhV_-5oMxKPqRwK?_c_8SqY$QrZXvEB}Iz?`OI z{e*WOsPUHDXFh0l9X%3}%-8O@ntLKW>yLPUO1B&4F;lu@UL72FS^w&{8e$#a_$Te} BoiYFb delta 2868 zcmchZe@s+Y7RS$h@16PKz%b*C45)?2pdg?)un1a2peq$E1Q3`3bwz6FYV0qw;*Z8U zLx1QdORZ*BPutKqZMwT|bzO+H&)Cgo?9wKisKsVe?T_qA(sp+f+}iYql6Jd$?(krT zY)tw`)0>=oKlgj?x%bSy_q}<;<14Oxx#G|qYoKCTMcIC7b+Pc=RpY`nM+Sap&E;QNQ zr{l`Qwuw_ITSnjJsp+R19G@PWQuh5u^*zyf!st993g0$QFOV2##2!_$Tc=AOUQ|}C zoswj%QLC%3Stcce7uXY->hXZlWs|+cqzCqns>a???Mlfs*?7c*p}AAirNx+`mX!vg zEslKUmwuWVz@x^=0Pe!@b+t5ia8u*_k#={1un+zD#rF=6Z}-O@Zf?^@?sr#|+U|-y z5?C3(Tfkkh8w@1?i=3S~TipU64$zTv8Q?s?NS$koJ3imlytMZ-fSUT+$m8ysAM4G{ zJ8qP_B0Gh?pf|Eok31!~)}$pP#B`0$dt^s?&(_``cLm;Ke`$f}f4s`spwZv1D6@=k1wN=A-ISK%ujW`y1psG2vvG4!(`IoK z5&g>3>N5!Ms)oN3Us04ZDqX6=C1DvL2A<-OIpq@nDDf5oxHj+D&0Spq$h82tw}ObT z;HjFpGc(8_&hO^>A=yol-8T+$-N#+u8ipp0YvrjjL@TNh?qrCy%070+*}0xq`f0)$ zPKcQS7S1GuHpN!MF+7w5)a}6Yd9)`uX6`wz#G(NnH8J6Ajf3vk24dM@LSr|~{(`Hl ze{i*h?H$&$C1fY4n~5j8%Bl{+E#^Bt4%&Lfk{XTW71AlMHj|1nu$#0RJXfwd?{ri; zR(q5TUZf0E+yA;*#iBY>b>?TT_LOBV&lDbB0AV#Zx?!tDVWA6aREM{U(^FtO$X4z$ zb2A;%Q+!=ZxhG(wY!c@MpNrOGGC5h|Y;UqD5I82=#fiak!xN>F>(y)m+9m{m0#mX; zFsijj`A)3DGEq(5dd&C81tv?7k5z$_T^Ulw%WpSFygL!6wSP5#tvCd=E9W^y%M{#~lic&i0J z5%jOG@lIv1h(2k>U80CKwqYUd_z!w1us_X(e<=b8&`=xZinGz2kdMaNcx8!mD5D)y zOm%s?RH?BY^A&9&?QF+9v65ckuDyN{z*SzjfX?TjkAL$-IZoH*V7-{qgP4c&Sg)qq zAm(C!F&`LhWfb?((?QI~`(^+-} ztPXA$R?*$uVy_Qi9c}O6sQxN`l&$o92m0~txd0(L&$5!2MF(#w>GVwpx|I4Xa&~f9 zBul1P@&zv*`#I;`+=(g5lXbLFI%DjtA#szP1Dzc7Y8{=D`ZXP3i2BBrT&1CazU{<( zjnANkE{`j<(Z6meH3rt&C5@n zEDdauGLhe652C&aBiXx!Rk@sv-KjRk|2_3CsfcG|M- zwoZ7@l&;PcY*T>(XrZ{ugkRaLWJy From 2d3b7b97592150c6b86bb54b015f8b4069423e77 Mon Sep 17 00:00:00 2001 From: rudivandrunen Date: Wed, 20 Sep 2017 05:49:38 +0200 Subject: [PATCH 051/156] WiFiClientSecure: add loadCACert function (#3610) Added loadCACert function --- libraries/ESP8266WiFi/src/WiFiClientSecure.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libraries/ESP8266WiFi/src/WiFiClientSecure.h b/libraries/ESP8266WiFi/src/WiFiClientSecure.h index 4b5b9c934..ae178513c 100644 --- a/libraries/ESP8266WiFi/src/WiFiClientSecure.h +++ b/libraries/ESP8266WiFi/src/WiFiClientSecure.h @@ -67,6 +67,12 @@ public: bool loadPrivateKey(TFile& file) { return loadPrivateKey(file, file.size()); } + + template + bool loadCACert(TFile& file) { + return loadCACert(file, file.size()); + } + protected: int _connectSSL(const char* hostName); From 41a8fdb4a93516f15413e8ef8b229bd6d2832778 Mon Sep 17 00:00:00 2001 From: cheng3100 Date: Thu, 21 Sep 2017 11:17:09 +0800 Subject: [PATCH 052/156] Add the ESP8266WiFiMulti to KEYWORD1 to make it highlight in the ino file (#3624) --- libraries/ESP8266WiFi/keywords.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/ESP8266WiFi/keywords.txt b/libraries/ESP8266WiFi/keywords.txt index 4e9c68d8b..83485d6ae 100644 --- a/libraries/ESP8266WiFi/keywords.txt +++ b/libraries/ESP8266WiFi/keywords.txt @@ -17,7 +17,7 @@ WiFiClient KEYWORD1 WiFiServer KEYWORD1 WiFiUDP KEYWORD1 WiFiClientSecure KEYWORD1 - +ESP8266WiFiMulti KEYWORD1 ####################################### # Methods and Functions (KEYWORD2) ####################################### From bdf2296a7d521ec876f15f3491b6690fff6abbb7 Mon Sep 17 00:00:00 2001 From: NdK Date: Thu, 21 Sep 2017 10:52:30 +0200 Subject: [PATCH 053/156] Added support for user-supplied DHCP range, with basic sanity checks (#3562) --- libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp | 86 +++++++++++++++------ libraries/ESP8266WiFi/src/ESP8266WiFiAP.h | 1 + 2 files changed, 63 insertions(+), 24 deletions(-) diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp index a424eece1..cc5847dec 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp @@ -179,8 +179,10 @@ bool ESP8266WiFiAPClass::softAP(const char* ssid, const char* passphrase, int ch * @param local_ip access point IP * @param gateway gateway IP * @param subnet subnet mask + * @param dhcp_start first IP assigned by DHCP + * @param dhcp_end last IP assigned by DHCP */ -bool ESP8266WiFiAPClass::softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet) { +bool ESP8266WiFiAPClass::softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dhcp_start, IPAddress dhcp_end) { DEBUG_WIFI("[APConfig] local_ip: %s gateway: %s subnet: %s\n", local_ip.toString().c_str(), gateway.toString().c_str(), subnet.toString().c_str()); if(!WiFi.enableAP(true)) { // enable AP failed @@ -204,35 +206,52 @@ bool ESP8266WiFiAPClass::softAPConfig(IPAddress local_ip, IPAddress gateway, IPA } struct dhcps_lease dhcp_lease; - IPAddress ip = local_ip; - ip[3] += 99; - dhcp_lease.start_ip.addr = static_cast(ip); - DEBUG_WIFI("[APConfig] DHCP IP start: %s\n", ip.toString().c_str()); - ip[3] += 100; + uint32_t net_addr = info.ip.addr & info.netmask.addr; + uint32_t bcast_addr = net_addr | !info.netmask.addr; + + // Assign user-supplied range, checking its validity + IPAddress ip = (static_cast(dhcp_start) & !info.netmask.addr) | net_addr; + + dhcp_lease.start_ip.addr = ip; + if(ip != net_addr && ip != bcast_addr && ip != info.ip.addr && ip != info.gw.addr) { + DEBUG_WIFI("[APConfig] DHCP IP start: %s\n", ip.toString().c_str()); + } else { + dhcp_lease.start_ip.addr=0; + } + + ip = (static_cast(dhcp_end) & !info.netmask.addr) | net_addr; dhcp_lease.end_ip.addr = static_cast(ip); - DEBUG_WIFI("[APConfig] DHCP IP end: %s\n", ip.toString().c_str()); - - if(!wifi_softap_set_dhcps_lease(&dhcp_lease)) { - DEBUG_WIFI("[APConfig] wifi_set_ip_info failed!\n"); - ret = false; + if(ip != net_addr && ip != bcast_addr && ip != info.ip.addr && ip != info.gw.addr) { + DEBUG_WIFI("[APConfig] DHCP IP end: %s\n", ip.toString().c_str()); + } else { + dhcp_lease.end_ip.addr=0; } - // set lease time to 720min --> 12h - if(!wifi_softap_set_dhcps_lease_time(720)) { - DEBUG_WIFI("[APConfig] wifi_softap_set_dhcps_lease_time failed!\n"); - ret = false; - } + if(dhcp_lease.start_ip.addr && dhcp_lease.end_ip.addr) { + if(!wifi_softap_set_dhcps_lease(&dhcp_lease)) { + DEBUG_WIFI("[APConfig] wifi_set_ip_info failed!\n"); + ret = false; + } - uint8 mode = 1; - if(!wifi_softap_set_dhcps_offer_option(OFFER_ROUTER, &mode)) { - DEBUG_WIFI("[APConfig] wifi_softap_set_dhcps_offer_option failed!\n"); - ret = false; - } + // set lease time to 720min --> 12h + if(!wifi_softap_set_dhcps_lease_time(720)) { + DEBUG_WIFI("[APConfig] wifi_softap_set_dhcps_lease_time failed!\n"); + ret = false; + } - if(!wifi_softap_dhcps_start()) { - DEBUG_WIFI("[APConfig] wifi_softap_dhcps_start failed!\n"); - ret = false; + uint8 mode = 1; + if(!wifi_softap_set_dhcps_offer_option(OFFER_ROUTER, &mode)) { + DEBUG_WIFI("[APConfig] wifi_softap_set_dhcps_offer_option failed!\n"); + ret = false; + } + + if(!wifi_softap_dhcps_start()) { + DEBUG_WIFI("[APConfig] wifi_softap_dhcps_start failed!\n"); + ret = false; + } + } else { + DEBUG_WIFI("[APConfig] DHCP daemon not started (range error or user request)\n"); } // check config @@ -254,6 +273,25 @@ bool ESP8266WiFiAPClass::softAPConfig(IPAddress local_ip, IPAddress gateway, IPA } +/** + * Configure access point + * @param local_ip access point IP + * @param gateway gateway IP + * @param subnet subnet mask + */ +bool ESP8266WiFiAPClass::softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet) { + IPAddress dhcp_start; + IPAddress dhcp_end; + + // calculate dhcp_start and DHCP_end as done in the old code + dhcp_start = local_ip; + dhcp_start[3] += 99; + dhcp_end = dhcp_start; + dhcp_end[3] += 100; + + softAPConfig(local_ip, gateway, subnet, dhcp_start, dhcp_end); +} + /** * Disconnect from the network (close AP) diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiAP.h b/libraries/ESP8266WiFi/src/ESP8266WiFiAP.h index fae8efd56..0e734d9c8 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiAP.h +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiAP.h @@ -37,6 +37,7 @@ class ESP8266WiFiAPClass { public: bool softAP(const char* ssid, const char* passphrase = NULL, int channel = 1, int ssid_hidden = 0, int max_connection = 4); + bool softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dhcp_start, IPAddress dhcp_end); bool softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet); bool softAPdisconnect(bool wifioff = false); From ac626ad9f8b398ae4cd56b9325541ba3a99fffd7 Mon Sep 17 00:00:00 2001 From: probonopd Date: Thu, 21 Sep 2017 11:22:27 +0200 Subject: [PATCH 054/156] Use LED_BUILTIN so that it works w/o attaching external LED (#3452) * Use LED_BUILTIN so that it works w/o attaching external LED * Use built-in LED * Clarify text --- libraries/Ticker/examples/TickerBasic/TickerBasic.ino | 11 +++++------ .../examples/TickerParameter/TickerParameter.ino | 7 +++---- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/libraries/Ticker/examples/TickerBasic/TickerBasic.ino b/libraries/Ticker/examples/TickerBasic/TickerBasic.ino index 772b5b74c..4a128e8b8 100644 --- a/libraries/Ticker/examples/TickerBasic/TickerBasic.ino +++ b/libraries/Ticker/examples/TickerBasic/TickerBasic.ino @@ -9,8 +9,7 @@ There are two variants of the attach function: attach and attach_ms. The first one takes period in seconds, the second one in milliseconds. - An LED connected to GPIO1 will be blinking. Use a built-in LED on ESP-01 - or connect an external one to TXD on other boards. + The built-in LED will be blinking. */ #include @@ -21,8 +20,8 @@ int count = 0; void flip() { - int state = digitalRead(1); // get the current state of GPIO1 pin - digitalWrite(1, !state); // set pin to the opposite state + int state = digitalRead(LED_BUILTIN); // get the current state of GPIO1 pin + digitalWrite(LED_BUILTIN, !state); // set pin to the opposite state ++count; // when the counter reaches a certain value, start blinking like crazy @@ -38,8 +37,8 @@ void flip() } void setup() { - pinMode(1, OUTPUT); - digitalWrite(1, LOW); + pinMode(LED_BUILTIN, OUTPUT); + digitalWrite(LED_BUILTIN, LOW); // flip the pin every 0.3s flipper.attach(0.3, flip); diff --git a/libraries/Ticker/examples/TickerParameter/TickerParameter.ino b/libraries/Ticker/examples/TickerParameter/TickerParameter.ino index 80eec5e67..705735339 100644 --- a/libraries/Ticker/examples/TickerParameter/TickerParameter.ino +++ b/libraries/Ticker/examples/TickerParameter/TickerParameter.ino @@ -8,8 +8,7 @@ This sample runs two tickers that both call one callback function, but with different arguments. - An LED connected to GPIO1 will be pulsing. Use a built-in LED on ESP-01 - or connect an external one to TXD on other boards. + The built-in LED will be pulsing. */ #include @@ -18,11 +17,11 @@ Ticker tickerSetHigh; Ticker tickerSetLow; void setPin(int state) { - digitalWrite(1, state); + digitalWrite(LED_BUILTIN, state); } void setup() { - pinMode(1, OUTPUT); + pinMode(LED_BUILTIN, OUTPUT); digitalWrite(1, LOW); // every 25 ms, call setPin(0) From 1ee17e54dd1fb58fe74456c3e6c3c3256dd047a5 Mon Sep 17 00:00:00 2001 From: me-no-dev Date: Fri, 22 Sep 2017 15:11:24 +0800 Subject: [PATCH 055/156] Update mkspiffs to version 0.2.0 --- .../package_esp8266com_index.template.json | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/package/package_esp8266com_index.template.json b/package/package_esp8266com_index.template.json index b1f746010..b90a555cd 100644 --- a/package/package_esp8266com_index.template.json +++ b/package/package_esp8266com_index.template.json @@ -92,7 +92,7 @@ { "packager": "esp8266", "name": "mkspiffs", - "version": "0.1.3" + "version": "0.2.0" } ] } @@ -196,49 +196,49 @@ }, { "name": "mkspiffs", - "version": "0.1.3", + "version": "0.2.0", "systems": [ { "host": "i686-mingw32", - "url": "https://github.com/igrr/mkspiffs/releases/download/0.1.3/mkspiffs-0.1.3-windows.zip", - "archiveFileName": "mkspiffs-0.1.3-windows.zip", - "checksum": "SHA-256:67a7788cd6c6827bcbb6875272ecbd6b6b243cc07ba405b77ba88f7aef067d26", - "size": "346865" + "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.0/mkspiffs-0.2.0-no_magic_length-windows.zip", + "archiveFileName": "mkspiffs-0.2.0-no_magic_length-windows.zip", + "checksum": "SHA-256:4fbe17d2be4229c0eebb3939d14e9d96e74ba17724ab34276eb6d019006ce900", + "size": "347038" }, { "host": "x86_64-apple-darwin", - "url": "https://github.com/igrr/mkspiffs/releases/download/0.1.3/mkspiffs-0.1.3-osx.tar.gz", - "archiveFileName": "mkspiffs-0.1.3-osx.tar.gz", - "checksum": "SHA-256:38e77dca9b5bbd255289f823214f5dbbb433188bc39c99ca9bde5a86cd1e3319", - "size": "118685" + "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.0/mkspiffs-0.2.0-no_magic_length-osx.tar.gz", + "archiveFileName": "mkspiffs-0.2.0-no_magic_length-osx.tar.gz", + "checksum": "SHA-256:e784d0b60c8b0ddc28e6467f5bffb7ae50db0a52c46b9ca18e71de0bf7f40a4d", + "size": "119145" }, { "host": "i386-apple-darwin", - "url": "https://github.com/igrr/mkspiffs/releases/download/0.1.3/mkspiffs-0.1.3-osx.tar.gz", - "archiveFileName": "mkspiffs-0.1.3-osx.tar.gz", - "checksum": "SHA-256:38e77dca9b5bbd255289f823214f5dbbb433188bc39c99ca9bde5a86cd1e3319", - "size": "118685" + "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.0/mkspiffs-0.2.0-no_magic_length-osx.tar.gz", + "archiveFileName": "mkspiffs-0.2.0-no_magic_length-osx.tar.gz", + "checksum": "SHA-256:e784d0b60c8b0ddc28e6467f5bffb7ae50db0a52c46b9ca18e71de0bf7f40a4d", + "size": "119145" }, { "host": "x86_64-pc-linux-gnu", - "url": "https://github.com/igrr/mkspiffs/releases/download/0.1.3/mkspiffs-0.1.3-linux64.tar.gz", - "archiveFileName": "mkspiffs-0.1.3-linux64.tar.gz", - "checksum": "SHA-256:7c7a8826ea194fa313f3da0aa5a0bfb6064074db04107a44d399803581d19b86", - "size": "48926" + "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.0/mkspiffs-0.2.0-no_magic_length-linux64.tar.gz", + "archiveFileName": "mkspiffs-0.2.0-no_magic_length-linux64.tar.gz", + "checksum": "SHA-256:b63a99b844c3debeffe605ff2632d8b8a5c365431ee5a091fa0e6e3e1be1bc6c", + "size": "48995" }, { "host": "i686-pc-linux-gnu", - "url": "https://github.com/igrr/mkspiffs/releases/download/0.1.3/mkspiffs-0.1.3-linux32.tar.gz", - "archiveFileName": "mkspiffs-0.1.3-linux32.tar.gz", - "checksum": "SHA-256:7c3f0071282176ba1480827cf10eea4ab2faa3ce89d0e125fc265e6241f197e7", - "size": "49540" + "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.0/mkspiffs-0.2.0-no_magic_length-linux32.tar.gz", + "archiveFileName": "mkspiffs-0.2.0-no_magic_length-linux32.tar.gz", + "checksum": "SHA-256:dfed9bc40a88a2c89b78acc83181aff401abf1620b8041b136aa2ad6cd08779d", + "size": "47659" }, { "host": "arm-linux-gnueabihf", - "url": "https://github.com/igrr/mkspiffs/releases/download/0.1.3/mkspiffs-0.1.3-linux-armhf.tar.gz", - "archiveFileName": "mkspiffs-0.1.3-linux-armhf.tar.gz", - "checksum": "SHA-256:11ff7db01127db24bd4fc2905c6ec1b8bc6219c2b6340198556036f1622e93cb", - "size": "43519" + "url": "https://github.com/igrr/mkspiffs/releases/download/0.2.0/mkspiffs-0.2.0-no_magic_length-linux-armhf.tar.gz", + "archiveFileName": "mkspiffs-0.2.0-no_magic_length-linux-armhf.tar.gz", + "checksum": "SHA-256:42367eb960ac8e3af32a2b4c5dd93dcff94464964e30f483d58e8cb96a895eb5", + "size": "43609" } ] } From 1683b12dd7105f456530931709e69f12e2994d6e Mon Sep 17 00:00:00 2001 From: Ahmed El Sharnoby Date: Fri, 22 Sep 2017 10:49:41 +0200 Subject: [PATCH 056/156] SPIFFS: update to f5e26c4, fixes #3612 (#3623) --- cores/esp8266/spiffs/spiffs_hydrogen.c | 1 - cores/esp8266/spiffs/spiffs_nucleus.c | 8 +++++++- cores/esp8266/spiffs/spiffs_nucleus.h | 22 +++++++++++++++++++--- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/cores/esp8266/spiffs/spiffs_hydrogen.c b/cores/esp8266/spiffs/spiffs_hydrogen.c index 5ca0e048e..235aaaa60 100644 --- a/cores/esp8266/spiffs/spiffs_hydrogen.c +++ b/cores/esp8266/spiffs/spiffs_hydrogen.c @@ -481,7 +481,6 @@ s32_t SPIFFS_write(spiffs *fs, spiffs_file fh, void *buf, s32_t len) { if ((fd->flags & SPIFFS_O_APPEND)) { fd->fdoffset = fd->size == SPIFFS_UNDEFINED_LEN ? 0 : fd->size; } - offset = fd->fdoffset; #if SPIFFS_CACHE_WR diff --git a/cores/esp8266/spiffs/spiffs_nucleus.c b/cores/esp8266/spiffs/spiffs_nucleus.c index f2eda254a..27ecdff2a 100644 --- a/cores/esp8266/spiffs/spiffs_nucleus.c +++ b/cores/esp8266/spiffs/spiffs_nucleus.c @@ -1061,12 +1061,18 @@ void spiffs_cb_object_event( #if SPIFFS_TEMPORAL_FD_CACHE if (cur_fd->score == 0) continue; // never used fd #endif - SPIFFS_DBG(" callback: setting fd "_SPIPRIfd":"_SPIPRIid"(fdoffs:"_SPIPRIi" offs:"_SPIPRIi") objix_hdr_pix to "_SPIPRIpg", size:"_SPIPRIi"\n", SPIFFS_FH_OFFS(fs, cur_fd->file_nbr), cur_fd->obj_id, cur_fd->fdoffset, cur_fd->offset, new_pix, new_size); + SPIFFS_DBG(" callback: setting fd "_SPIPRIfd":"_SPIPRIid"(fdoffs:"_SPIPRIi" offs:"_SPIPRIi") objix_hdr_pix to "_SPIPRIpg", size:"_SPIPRIi"\n", + SPIFFS_FH_OFFS(fs, cur_fd->file_nbr), cur_fd->obj_id, cur_fd->fdoffset, cur_fd->offset, new_pix, new_size); cur_fd->objix_hdr_pix = new_pix; if (new_size != 0) { // update size and offsets for fds to this file cur_fd->size = new_size; u32_t act_new_size = new_size == SPIFFS_UNDEFINED_LEN ? 0 : new_size; +#if SPIFFS_CACHE_WR + if (act_new_size > 0 && cur_fd->cache_page) { + act_new_size = MAX(act_new_size, cur_fd->cache_page->offset + cur_fd->cache_page->size); + } +#endif if (cur_fd->offset > act_new_size) { cur_fd->offset = act_new_size; } diff --git a/cores/esp8266/spiffs/spiffs_nucleus.h b/cores/esp8266/spiffs/spiffs_nucleus.h index 3d77d508a..dd1c414bc 100644 --- a/cores/esp8266/spiffs/spiffs_nucleus.h +++ b/cores/esp8266/spiffs/spiffs_nucleus.h @@ -141,6 +141,22 @@ #define SPIFFS_OBJ_ID_DELETED ((spiffs_obj_id)0) #define SPIFFS_OBJ_ID_FREE ((spiffs_obj_id)-1) + + +#if defined(__GNUC__) || defined(__clang__) + /* For GCC and clang */ +#define SPIFFS_PACKED __attribute__((packed)) +#elif defined(__ICCARM__) || defined(__CC_ARM) + /* For IAR ARM and Keil MDK-ARM compilers */ +#define SPIFFS_PACKED + +#else + /* Unknown compiler */ +#define SPIFFS_PACKED +#endif + + + #if SPIFFS_USE_MAGIC #if !SPIFFS_USE_MAGIC_LENGTH #define SPIFFS_MAGIC(fs, bix) \ @@ -464,7 +480,7 @@ typedef struct { // page header, part of each page except object lookup pages // NB: this is always aligned when the data page is an object index, // as in this case struct spiffs_page_object_ix is used -typedef struct __attribute(( packed )) { +typedef struct SPIFFS_PACKED { // object id spiffs_obj_id obj_id; // object span index @@ -474,7 +490,7 @@ typedef struct __attribute(( packed )) { } spiffs_page_header; // object index header page header -typedef struct __attribute(( packed )) +typedef struct SPIFFS_PACKED #if SPIFFS_ALIGNED_OBJECT_INDEX_TABLES __attribute(( aligned(sizeof(spiffs_page_ix)) )) #endif @@ -496,7 +512,7 @@ typedef struct __attribute(( packed )) } spiffs_page_object_ix_header; // object index page header -typedef struct __attribute(( packed )) { +typedef struct SPIFFS_PACKED { spiffs_page_header p_hdr; u8_t _align[4 - ((sizeof(spiffs_page_header)&3)==0 ? 4 : (sizeof(spiffs_page_header)&3))]; } spiffs_page_object_ix; From c9dc8e171731a04b9ad0cd32aff14af8c1b34c44 Mon Sep 17 00:00:00 2001 From: Joe Todd Date: Fri, 22 Sep 2017 09:52:13 +0100 Subject: [PATCH 057/156] ESP8266HTTPClient: Add PATCH request (#3590) --- .../ESP8266HTTPClient/src/ESP8266HTTPClient.cpp | 14 ++++++++++++++ .../ESP8266HTTPClient/src/ESP8266HTTPClient.h | 2 ++ 2 files changed, 16 insertions(+) diff --git a/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp b/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp index 31e86277a..ef4c55157 100644 --- a/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp +++ b/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp @@ -351,6 +351,20 @@ int HTTPClient::PUT(String payload) { return PUT((uint8_t *) payload.c_str(), payload.length()); } +/** + * sends a patch request to the server + * @param payload uint8_t * + * @param size size_t + * @return http code + */ +int HTTPClient::PATCH(uint8_t * payload, size_t size) { + return sendRequest("PATCH", payload, size); +} + +int HTTPClient::PATCH(String payload) { + return PATCH((uint8_t *) payload.c_str(), payload.length()); +} + /** * sendRequest * @param type const char * "GET", "POST", .... diff --git a/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.h b/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.h index f0ecab38a..02e4ca5cc 100644 --- a/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.h +++ b/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.h @@ -158,6 +158,8 @@ public: int POST(String payload); int PUT(uint8_t * payload, size_t size); int PUT(String payload); + int PATCH(uint8_t * payload, size_t size); + int PATCH(String payload); int sendRequest(const char * type, String payload); int sendRequest(const char * type, uint8_t * payload = NULL, size_t size = 0); int sendRequest(const char * type, Stream * stream, size_t size = 0); From 369edb616dd9410cc74679cd77dc95db39acdc53 Mon Sep 17 00:00:00 2001 From: snosrap Date: Tue, 1 Aug 2017 10:56:50 -0700 Subject: [PATCH 058/156] Case-insensitive deviceType compare and skip NOTIFY processing * ifndef'd LWIP_OPEN_SRC to prevent a redefined warning * ABORT on NOTIFY to prevent responding to NOTIFY messages (we should only respond to M-SEARCH messages) * case-insensitive compare of _deviceType to enable response to all-lowercase Alexa queries (robustness principle) --- libraries/ESP8266SSDP/ESP8266SSDP.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libraries/ESP8266SSDP/ESP8266SSDP.cpp b/libraries/ESP8266SSDP/ESP8266SSDP.cpp index 755021f1d..effece24a 100644 --- a/libraries/ESP8266SSDP/ESP8266SSDP.cpp +++ b/libraries/ESP8266SSDP/ESP8266SSDP.cpp @@ -25,7 +25,9 @@ License (MIT license): THE SOFTWARE. */ +#ifndef LWIP_OPEN_SRC #define LWIP_OPEN_SRC +#endif #include #include "ESP8266SSDP.h" #include "WiFiUdp.h" @@ -287,7 +289,6 @@ void SSDPClass::_update(){ case METHOD: if(c == ' '){ if(strcmp(buffer, "M-SEARCH") == 0) method = SEARCH; - else if(strcmp(buffer, "NOTIFY") == 0) method = NOTIFY; if(method == NONE) state = ABORT; else state = URI; @@ -328,7 +329,7 @@ void SSDPClass::_update(){ #endif } // if the search type matches our type, we should respond instead of ABORT - if(strcmp(buffer, _deviceType) == 0){ + if(strcasecmp(buffer, _deviceType) == 0){ _pending = true; _process_time = millis(); state = KEY; From 13c1e8b293fe00f81db83f3001594cd0ab472179 Mon Sep 17 00:00:00 2001 From: Matthew Blythe Date: Fri, 22 Sep 2017 02:56:27 -0600 Subject: [PATCH 059/156] UdpContext: check that pbuf_alloc doesn't return nullptr (#3354) --- .../ESP8266WiFi/src/include/UdpContext.h | 33 +++++++++++++++---- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/libraries/ESP8266WiFi/src/include/UdpContext.h b/libraries/ESP8266WiFi/src/include/UdpContext.h index cb5c5628d..3fd224842 100644 --- a/libraries/ESP8266WiFi/src/include/UdpContext.h +++ b/libraries/ESP8266WiFi/src/include/UdpContext.h @@ -246,6 +246,11 @@ public: { _reserve(_tx_buf_offset + size); } + if (!_tx_buf_head || _tx_buf_head->tot_len < _tx_buf_offset + size) + { + DEBUGV("failed _reserve"); + return 0; + } size_t left_to_copy = size; while(left_to_copy) @@ -271,17 +276,25 @@ public: { size_t data_size = _tx_buf_offset; pbuf* tx_copy = pbuf_alloc(PBUF_TRANSPORT, data_size, PBUF_RAM); - uint8_t* dst = reinterpret_cast(tx_copy->payload); - for (pbuf* p = _tx_buf_head; p; p = p->next) { - size_t will_copy = (data_size < p->len) ? data_size : p->len; - memcpy(dst, p->payload, will_copy); - dst += will_copy; - data_size -= will_copy; + if(!tx_copy){ + DEBUGV("failed pbuf_alloc"); + } + else{ + uint8_t* dst = reinterpret_cast(tx_copy->payload); + for (pbuf* p = _tx_buf_head; p; p = p->next) { + size_t will_copy = (data_size < p->len) ? data_size : p->len; + memcpy(dst, p->payload, will_copy); + dst += will_copy; + data_size -= will_copy; + } } pbuf_free(_tx_buf_head); _tx_buf_head = 0; _tx_buf_cur = 0; _tx_buf_offset = 0; + if(!tx_copy){ + return false; + } if (!addr) { @@ -313,6 +326,10 @@ private: if (!_tx_buf_head) { _tx_buf_head = pbuf_alloc(PBUF_TRANSPORT, pbuf_unit_size, PBUF_RAM); + if (!_tx_buf_head) + { + return; + } _tx_buf_cur = _tx_buf_head; _tx_buf_offset = 0; } @@ -326,6 +343,10 @@ private: while(grow_size) { pbuf* pb = pbuf_alloc(PBUF_TRANSPORT, pbuf_unit_size, PBUF_RAM); + if (!pb) + { + return; + } pbuf_cat(_tx_buf_head, pb); if (grow_size < pbuf_unit_size) return; From ed20eb5b3e1eb344dc6bd34cee8f36efdedf02ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20HUBSCHER?= Date: Fri, 22 Sep 2017 15:57:28 +0700 Subject: [PATCH 060/156] ESP8266HTTPClient: update library.properties (#3406) --- libraries/ESP8266HTTPClient/library.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/ESP8266HTTPClient/library.properties b/libraries/ESP8266HTTPClient/library.properties index 871617105..a63eb5717 100644 --- a/libraries/ESP8266HTTPClient/library.properties +++ b/libraries/ESP8266HTTPClient/library.properties @@ -5,5 +5,5 @@ maintainer=Markus Sattler sentence=http Client for ESP8266 paragraph= category=Communication -url=https://github.com/Links2004/Arduino/tree/libraries/ESP8266HTTPClient +url=https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266HTTPClient architectures=esp8266 From 35d5fabe33c24931bc629704b645119c0218a0ed Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Fri, 22 Sep 2017 18:38:01 +0800 Subject: [PATCH 061/156] Revert SPIFFS_USE_MAGIC_LENGTH to 0 (#3612) --- cores/esp8266/spiffs/spiffs_config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cores/esp8266/spiffs/spiffs_config.h b/cores/esp8266/spiffs/spiffs_config.h index 44f129d67..c3343fe2f 100644 --- a/cores/esp8266/spiffs/spiffs_config.h +++ b/cores/esp8266/spiffs/spiffs_config.h @@ -201,7 +201,7 @@ typedef uint8_t u8_t; // be accepted for mounting with a configuration defining the filesystem as 2 // megabytes. #ifndef SPIFFS_USE_MAGIC_LENGTH -#define SPIFFS_USE_MAGIC_LENGTH (1) +#define SPIFFS_USE_MAGIC_LENGTH (0) #endif #endif From eb891cd6e4c54d9883cabcb4729865b114b5579c Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Tue, 26 Sep 2017 04:31:45 +0800 Subject: [PATCH 062/156] Revert "Added support for user-supplied DHCP range, with basic sanity checks (#3562)" This reverts commit bdf2296a7d521ec876f15f3491b6690fff6abbb7. --- libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp | 86 ++++++--------------- libraries/ESP8266WiFi/src/ESP8266WiFiAP.h | 1 - 2 files changed, 24 insertions(+), 63 deletions(-) diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp index cc5847dec..a424eece1 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp @@ -179,10 +179,8 @@ bool ESP8266WiFiAPClass::softAP(const char* ssid, const char* passphrase, int ch * @param local_ip access point IP * @param gateway gateway IP * @param subnet subnet mask - * @param dhcp_start first IP assigned by DHCP - * @param dhcp_end last IP assigned by DHCP */ -bool ESP8266WiFiAPClass::softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dhcp_start, IPAddress dhcp_end) { +bool ESP8266WiFiAPClass::softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet) { DEBUG_WIFI("[APConfig] local_ip: %s gateway: %s subnet: %s\n", local_ip.toString().c_str(), gateway.toString().c_str(), subnet.toString().c_str()); if(!WiFi.enableAP(true)) { // enable AP failed @@ -206,52 +204,35 @@ bool ESP8266WiFiAPClass::softAPConfig(IPAddress local_ip, IPAddress gateway, IPA } struct dhcps_lease dhcp_lease; + IPAddress ip = local_ip; + ip[3] += 99; + dhcp_lease.start_ip.addr = static_cast(ip); + DEBUG_WIFI("[APConfig] DHCP IP start: %s\n", ip.toString().c_str()); - uint32_t net_addr = info.ip.addr & info.netmask.addr; - uint32_t bcast_addr = net_addr | !info.netmask.addr; - - // Assign user-supplied range, checking its validity - IPAddress ip = (static_cast(dhcp_start) & !info.netmask.addr) | net_addr; - - dhcp_lease.start_ip.addr = ip; - if(ip != net_addr && ip != bcast_addr && ip != info.ip.addr && ip != info.gw.addr) { - DEBUG_WIFI("[APConfig] DHCP IP start: %s\n", ip.toString().c_str()); - } else { - dhcp_lease.start_ip.addr=0; - } - - ip = (static_cast(dhcp_end) & !info.netmask.addr) | net_addr; + ip[3] += 100; dhcp_lease.end_ip.addr = static_cast(ip); - if(ip != net_addr && ip != bcast_addr && ip != info.ip.addr && ip != info.gw.addr) { - DEBUG_WIFI("[APConfig] DHCP IP end: %s\n", ip.toString().c_str()); - } else { - dhcp_lease.end_ip.addr=0; + DEBUG_WIFI("[APConfig] DHCP IP end: %s\n", ip.toString().c_str()); + + if(!wifi_softap_set_dhcps_lease(&dhcp_lease)) { + DEBUG_WIFI("[APConfig] wifi_set_ip_info failed!\n"); + ret = false; } - if(dhcp_lease.start_ip.addr && dhcp_lease.end_ip.addr) { - if(!wifi_softap_set_dhcps_lease(&dhcp_lease)) { - DEBUG_WIFI("[APConfig] wifi_set_ip_info failed!\n"); - ret = false; - } + // set lease time to 720min --> 12h + if(!wifi_softap_set_dhcps_lease_time(720)) { + DEBUG_WIFI("[APConfig] wifi_softap_set_dhcps_lease_time failed!\n"); + ret = false; + } - // set lease time to 720min --> 12h - if(!wifi_softap_set_dhcps_lease_time(720)) { - DEBUG_WIFI("[APConfig] wifi_softap_set_dhcps_lease_time failed!\n"); - ret = false; - } + uint8 mode = 1; + if(!wifi_softap_set_dhcps_offer_option(OFFER_ROUTER, &mode)) { + DEBUG_WIFI("[APConfig] wifi_softap_set_dhcps_offer_option failed!\n"); + ret = false; + } - uint8 mode = 1; - if(!wifi_softap_set_dhcps_offer_option(OFFER_ROUTER, &mode)) { - DEBUG_WIFI("[APConfig] wifi_softap_set_dhcps_offer_option failed!\n"); - ret = false; - } - - if(!wifi_softap_dhcps_start()) { - DEBUG_WIFI("[APConfig] wifi_softap_dhcps_start failed!\n"); - ret = false; - } - } else { - DEBUG_WIFI("[APConfig] DHCP daemon not started (range error or user request)\n"); + if(!wifi_softap_dhcps_start()) { + DEBUG_WIFI("[APConfig] wifi_softap_dhcps_start failed!\n"); + ret = false; } // check config @@ -273,25 +254,6 @@ bool ESP8266WiFiAPClass::softAPConfig(IPAddress local_ip, IPAddress gateway, IPA } -/** - * Configure access point - * @param local_ip access point IP - * @param gateway gateway IP - * @param subnet subnet mask - */ -bool ESP8266WiFiAPClass::softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet) { - IPAddress dhcp_start; - IPAddress dhcp_end; - - // calculate dhcp_start and DHCP_end as done in the old code - dhcp_start = local_ip; - dhcp_start[3] += 99; - dhcp_end = dhcp_start; - dhcp_end[3] += 100; - - softAPConfig(local_ip, gateway, subnet, dhcp_start, dhcp_end); -} - /** * Disconnect from the network (close AP) diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiAP.h b/libraries/ESP8266WiFi/src/ESP8266WiFiAP.h index 0e734d9c8..fae8efd56 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiAP.h +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiAP.h @@ -37,7 +37,6 @@ class ESP8266WiFiAPClass { public: bool softAP(const char* ssid, const char* passphrase = NULL, int channel = 1, int ssid_hidden = 0, int max_connection = 4); - bool softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dhcp_start, IPAddress dhcp_end); bool softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet); bool softAPdisconnect(bool wifioff = false); From 80e9a841d62916b46366d01c62b3a5015805eda9 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Mon, 2 Oct 2017 00:26:43 +0800 Subject: [PATCH 063/156] axTLS: update to 49b9deb - Upstream fix: Fixed issue with pathlen=0 for root certs Fixes #2711, #3340 --- tools/sdk/lib/libaxtls.a | Bin 1031364 -> 1040648 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tools/sdk/lib/libaxtls.a b/tools/sdk/lib/libaxtls.a index 0d3a3f67af0585d13ee6e945796ea5eaee72ce14..4e32b4f50825e5d5421d1a6f4d184e97d0238286 100644 GIT binary patch delta 285809 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�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 z z6#iYF2md8s1;;0&q8#CB1fmGg%ix;w3iu59PPmbLAKYBNA8sQ*0G}y84fCXt(|iu@ zC+~#Mk@v)5`#WEOH;^z)eiI%oe+o~Ozl3MX-@=#6$Kk8wU*K!yU*Sb^QoQ5vM3Dt@ zVV)?~tdI3y4FR4I*6e@{8pGpqHTY>6J1XaS8Qr|YlR)Ng1iv9Sf!~pv!aNCNo>uUu za(nnIxez|alS5`2jlj?H1ehm&j9&=U&ij+*&t(&>O3xU)jTB^u>XHf zfqqEXDf1ZMHJN*@H{}KJyYemYhjIn{nY{bKi}jMCNp2BNX6-#>qI;b0*3- zbaST3JXW|&=Hlhq2`9=K%$J+N%jqrvh84yS(mDX$7&yiQQRfLIaArJVU?$e!1sO+N z4o?yo&zZe0bG`Dsfbm?f@5^~G&jlFIN`E2ufO-7S_(J#xo?J4}8v!2l(}UoX@?h9S z32W+5xrWR|S4T!xr@mYhZX&ZWwvbuqb}|dyQO?2qoo)&=hkMB_;Im~m@^fW2g`qOa z>Rc$ZW@F`^@WnEZ%rB7#z?aIb*cEV$HM;KJJq7<*b$2RvwhO z`Zmh!C7+OSpzAy*H->l0SWPkKH3iTOIB&{*;CJOB_>g=K{DsUK9F<4GKgbusC*+Cn zpYkQJlNwZP4w&Q{%YQE8m9PM=DPIp~$~V9bWFBPZ$Q$66@lR>@(FmZ%!AVTa&>q)eHNELhT9du zp`CNLjD3!CpUjs0kj!=YsGJQyDPvta&&VC&7iBisJu(~VKABtGd#UXIQHo*&K2<^q zd_*1ret$I1kF~KVlmdz!GzwkhyNQ$^GH&GB?G2G&5lM$oMNc5%K?( z*=HP=v4))A<@)enfn$EZ9gkxzPP8==s>rNCJ(`^XhHT?zavb7Y%L#A?xdvPyXTaTM zHsteYc8eHFt6}{!fIh+*sRWKZUgqkUB(o2nE;oc{$&KN8at<7mxoU2ZTfjHVtmLh7 z2X23!0{QSgGS}1nGWTE)%UoxhWo}Me<(}~KaxeI0nG0`^+z;L_pACNi$5{J;2z;W1 z3*awh?hC$^N5VhKZE|;_6>uGKd z7?#LvH_K%-Xyf&m&=pktK>`I zYvmd2{}(AR2MM>xi{TYA8`_=n1MnJo6a0YuB>af{G`v}U4&Ew14?iz|0`H__DE=`7 z4luy&5W`0@7uV-98{<*A9{i)sPU$z9tLZP9Z73c+8K>C}j>_%fG`TArtE~XnUzW^r zG?BSTTgvCb?d2hGfm{mrl!wFpePJQ^M@FaOUJYAj-&ysJ2 zuawup*UAsWi{(e*W%3SqrTh+jm;5=rwg%Qe7ts*}9#q12@Mf8-W}EyI{DS-|yi4Y_ zynS*#_2tAkFx)N2!}rNN7SBXM4!`SThacKLzeRQz>0iunC9yU+LKs_-G1o8=dBHhffOFZqMa<}i&ec|accY3pA_7hjj=fI0(_5ruZ7s4y#QShDeMerJVD*Qk?`+qEoc?dkBgazB&%*D?ufiY8yW!8}*V+GnqrjU;_+EYo{zZNt{zE

A-9Cb$?f1Wxhs4H&0Qty zf3*Vat*)0-;UzLlx?ILWaBi0y!gtG!;QQpZ@I!JQ{HS~;{G{9weg=-Q6rB-xQ3+k( zSLAN+KDihCzI-nHiOjY3rOfUATX`h>qdXD*Rh|t0Pevbr>(8}=MKKKtRpc3PRryjl zUA`KwD|5*;l$XLy79L@VT51esQ{0H#>+eknk4hcXS&SC$7ad?A1dT$5g(Ix!Z*mT!#B(C!?((ZVUOmEyuU!; z9wmGY-!C79H^@K1kISdvr(_-}Jtrr_JLMF3x10*^m21GC(cD%s#J*C1UE_b{6!^Hz z{{NKB&L=)I7#UGcRIU%#l-UDj%Ir%T$m~mUi>d z;s40H;Po=M`_1xRc&q$2yhHwwC4E(aBk*4NYxo`cD11=<1O8n88~#S-_Wiw_1pgu@ z!>8mlII(U};aYGtIL6v@o6b-|bGV*d05_4jO}CKGg4@a5T+ftw144g#EJ}uVnij@%j^Lr(@U zl*uggRGITCm)V8K<|u%+=ggNI!Pm(x;KedGzh!cFc%|GIzDw>8uayVD56Z>xMtKnY zMBt$R-=+i}OuitGgLlbX<*&=!MBkQY!3X6z@Tc-k@DX__{GEIk{FD3`{M#8=|6E*8 zA#h3w+u*pYApTi6S!Ul}O@0l|klD}IllQ{e@z;p=2>ql;x8 zqAioTS+0~XfbWtg!}rNE;q~&R@MH3g@Kf?)UjNyyz->r)NnQ!>k?(-_%RDT5U%neY zB;NynA+Lpx%Dn092l+wxgv>*?KYe5Q^9mNPKyyhv0Vl~@;8dB%cf4_kd7g(eRiGn$gIoZwqNiZ#V7OOi2eM91haZ;NS#6ThK{`*%+3Wl*0NhSK2kuQz127aB50berD3O!k5i+~vaWvob!#;na z61Ye&mC+wL^JRQF*U7o?V!186Oy<&BDRZf;l1IXi(Cj)fY?fJ|*j5FS5qMr^>0Xw3 z@nMh5J>EW<>-#;K>-%Fl8~$A868%Qz`u<+#e&mU=m& z?h4nDd&2eQv*9N47`VC2wbPZJ31BFcxoY}1j0Fi?6vawl0~sQ7)eM(e`!R9`Tqd*j zQ)O15TxJF4$erM8nBfx$?~k%z;rhO5>H zjQ0b$%mz=AZ-uAJE8$u4T6ms(KOB=Ef^U!?hHsWP!netf!FS4g;5FgM?;`Mk65fX& zkw1ht%ZK2t@@Mc1@)z(f`2_sBd=h?J{u_QzPQL1`ePTV0K3WGWf%TSt_{aG z3P#9;qcU55b(!0ArraKGAm_u)Wv=@+axr{nBg~(r7=%C$WX0-KPqP~HyTEbo9<${)dZ$y^=x%e++ou*@^0 zC*=(I8JUM)FUmapdWGi0;n@hhp@jDE0l5?WiOfT>FJ)d*`&RA`|0oy1zseWFf6HUw zDvg8HR|Z#=r@^sw1!f>nS1yMe%KSrNu6!fhUS0}!mRG_(WFD^dk$Jc_K;|LW5cx59 zWZ;;y1%dHO*bYyUUx25}Jj|LU^U!L({62hxdmJBUG7(V$aFd;GJ?B{F=-|uKh9(vp$qt!=K6d@K;~?2)w6+EcjzN2mV}c27e>x!r#kX;NRr4 z;D6-4aAHod`ify!9t78r2g7w@3XDe}Tb>9vlc&I~o=0QfOa2-@L;e8;l`A_&9`4oJ1dGPYH%!8Mcay9sGnOD3LaAeAHv*DCx?EevHf}3_m9GkZUKs1i;mzDiyQUn}1P-yriycNNV@4EM@O@H#meepu!fu}S9Ycv|M)pPlUr)P-M?>%+U{ zhVWZ5`||^GH~2G|t^I46OY4}-?)+z&4fCWt0sgx=`+wA6A_57yL2ahMDe^QpP3DrQ zEwg=P$xGqJG86>n zy8IeEOWp&|lX>nClRtwO(|prAcOJ`>a1>rC{{-J9b6>DlJ_$c4Cq-}#K#sys$f@vi za!q)r%s=nFCbxiNZz|9gfp=y8Ip&bu8~#G(3C6ebaQG*AB>cNP4*pA?04HEOxZ<)vc^W?U0OzsTd zAoE<{X1N=DtK0+j*O+ci989ekf*|T$P3`r@{RC+DL1Dpe4duU>HpA3CshS$m^Yhz&Hlp2t1kI8<xtC{dzBWxx`w37_VmHuPrr`Q;b(L@mG*q z39n~|tt6W_PlnB;H50aBEDZjdP&47Fe%MU>rLShfv-q%?_zPUkWH#f~Ocu~VGjW#E zJN(HztLU9D>%WcxHIq%Wnh7r@hs|U+t!8q7Rx>$FtC{c!Eo>$yX*H9CIQaEo#ymg^ zTL}-!s)fxYmkDofz3D7>W@0waoG`4bf;f4T@pdm-mYNl7ALKgB6!wi6{Fi~sCrx}p za%G-0<1FJ`<9y>n<6`63a1$sqE~oQ@0?jvGY|K}ugn8B)Z#3R!yo>G>Omlx=*AE@? z1KwHv+&Vq9CGv0e;fu^tjWg+jU>Z5bdA_~d`ngwB<@qQE|DB87yxRTUp)qcW7&1~Y zww!I;+PJ{Dukm2xQO1*vXB#gtjx9BTRmSU#HyLj?-feuq_^|OY&3 z`7Ves|50PU^C67qdmenVhv2&%B899wj%18;jQQS%Fc06=5W2{iuVe`0`5K1MeDy+T zzHTA(LO2!%Dony^vBI7tp+ao5NB+5O|eu@6Q45&`2L|&_MT!x_yI`@@g1Gp6}cHbfDX$ zN53F>Bcu8U-e$bZn2)!Ic@FvZ&N|0!S9d@#T4r@5%Q?Qi8_z*6F)&D8$SAqOc(w6* z<1NNJjQ1KJG(KYdlX2{n2_&ag79zu#4_AkUYi(R$+}C)p@hIcT#$+2OB!ZhhM`0pLY%4PswLoLoYP0pn0%}VYTsk<1I9=MPt}uyw~_(V6WSG zZdX2O!XY~y8SZ^L*c}_Y(4V7olu_~t zW4>Y`j88SrH0FbgVV*o=KA#xI^O?lZd=4>mj1M1%0sk$hD#Tn9ztFhCc(w6*<1NNJ z=&?a1_ZlAz%zZCz(=-V`8J{vv#vdWV31t{(8@DztFz#zS*mzWJ9($;ClTE^G;|0b` zjaM13qc09>xyg9D@owV-^hD%ugwNqH03S0x>DwDI6rI!LVA_RsFrHj&Jlwd0&n2%0{ue;^r zQla^XROl_nNqjCUGRUOI;Gni*`T|~)zNGUSYn^WqJ9bXtQx>vGH)@GUIaN`NoTlR~oN1-e?@#W&*p6_Z#zZmauSq zf+aMcS_$pHsaO?AJ)<%{(>TXCFL1CCcQ*+|#wEt%jHemTHC||3VZ7RSz3~=4pAptz zhe_CL%m+ZiJbdUQG#~T`&1XA8^LdWYe1;=5pW6uCIyCEF5C-7B#)FMV8BaEzZM?vE zsqre~b;g_E(?8z9$0Wki?KVDOeAxJy@k!$ZT#^W&34;dddK4I)MI9)R*)i~2Q$2c!$0^N;y zv%eORe}jMMaVCD6@m%AD#udh^jn~Uw>PYwex{HJLlH3q8l{0*Mb4I#jdn^f(7cfd* zYP`yLoiXnhk1X+OjzTwgQ!t6FY(&Yq#`(sD#>K|NjmwP7jprLLHjb?{fwjgPjkg)^ zGTv`|$oQ!731jY=!%C(GjyW7MO+t=wo^f~MBI6R{amLe(=Nj`)~9f5-_a<54^Xne%@C*xDb$xSOOkYSu{+}gOnxNlQ#k*fV* zlQ7D7vhi%=1;$H_dAnpd&2`3`jJJno{db1}_<-?YW8VH4PL#JihE8Z!Y2Miw#`A8* z(7b~&H1Apr%{vuiVSslhhUOiKq05ZRjprLLHePAG)_9}wwo1pGU6lc6zwsgCqsAwU zo#vGVO*PIm&N0q2?(REie@>A}C@~&qJk5A6y&~9Z7SbyNSJ1ZyUQOQ-c=ohe?Z-}- zHe+_%neDPMwC|YLsi5W{^?H$?S4VmobMsmHYCc7=# z93GS%!G$K=7SX82=;UT^)o$E6BQ^eT;{}ahN;rJpjv#GFqZ&ODk<;5h*=^M&1AChG zxM|})J`0R7-+Am*{|YB}RBF}6@5FyGBsu98#{J&^W~WVRhrK01rcdJfFY+2qanGoh z-6l1Rx?o5{Z{QU7)p|8eTul>5>gTnb>Nc!hE1cyMr)QZ|;CRJT-MZ&jNv+yHk4vv{ zLc+)nogX+|Jl++i;^jIm^E<>RUDdejMU$E)wahuR;??8-gwx~$zRHKAGu+g(WUAXH z{?*U^@&5Y9t>f*V>J|;@hgCEhAFN{koBsd%binkOc1|2_LY4oWw_dzA^%D1`$Q-ZD zG`C@F2F{NYIBzE*GBpX!h<8V!EmRJ1y)ebN18oo!pHO8lzv8O!SHt2XNjveuG>qOCITI6rbAhCU>$p+GN0NE_O;Q4P zK2@&6e{mlo96#e?@@+7oWp9!E!6u9BtBTaBB2?ETqI4bY}D$#+TDM?j$Gi(hs1#=s?c-vcZ^O zesmI?CB(^SJ^i>DyaS%p5H0 zPf(;d{=h}jcbSMv=AA*4s|&BA~k+QQe2Jkn6X=<0MV&6&PQt18n@&BYBhQxPxTsIFsZZ}RWRcWPGsI0oXCd= z;x%%}7OAlruIi*@B*!X}oSshfMU0SqEtifH{S%W;zK)JWuSD+T>*=^C|C*el}*<<_#pOoa}O}w8Wx{Z^5VhJ)h(Nxyu zDYlXXC+lvgqcP8ldH+k?(p;T2aJ-R^Ycd!d!uK&bs{f%m(O;a z)O9gN@=ne+HOkvfl3#ilt`_~s+dSK?9oxrJy~4U@M*raiUwstQ&We_@I|{+GM;s}^%%ymL0{Toi5Vm0#}G8Q+J~J6IEIrX;!x%Q5*wHtylUTKt%c z`NHT+oW>z~UbG4Ge?s3G{h5>dbSNhGO!N}Y^D}y9^iQtm!xP{=(d)dUm%C?{K8HZ- zn+r_)if=L$B`@Zc*PnOgFN`|4Ug<%(G!@ z{KxD5Q}Bny?8wl#TYG0mhQuYebsF|S%0EcC+D{o0cQtYkL0qHS-u^4xCRyj;y7+dD zbt%U6b2M6j92eF0s?T-Lh)nQW&2`&#ex9@3#WhxU3hwRUYHuT?ZgQ3L|$cv zoTkmaTj#nPJ1oLn8jV4vR|A+y;??-oF|65!xL)eN87~Vf8}X4mr(p@Aj@0sI&U5Q@ zejnM-^OH*AlCxPe>{A-vh#XAe`}`3XKmS9H8+UbcyjKhJc)zyy{5-cw94hd|Jh!m; zPk)|6BYDg;ALHV7_S>+~BfYuMIb4rVWHsOBp2zkS=}j(2E`d7JGkzHQbtK24$VcwXl z+?HeVhg8Rdh5WIn$jso+ot-*iX>~R+2s^cAaqge^IU*lpl-f9?WCY9I;iAhYI+4#J zTq8|eu{wwSJWYprJFapYRrS}+m;Sg-8+$)o{ysd5vr z1P2mnz%4*5Hw$`=QMo{UY_eVR0d|+IqWBLbbzZK4)}M($5gJN%q$ECNW(4gvF&@X3 zY&40e6o-Zv;=d8da}XmSKHmM~Z>J$!EL;1}eq>2p3`xOu@BrrTOhbPD2|YVfiY)+B zXA^Juj7G}#Q%d5lLEL+Y{vm6F&#yEBaF{?EoVnAh_q*N&<&zy zjk3}5FG4a#W$!UG(qAK@?%bGo9w z_XKY#;V+Tq@_v%*3EoWd3Bfx_{sOx4Hj;X19j*8P2nyn~!F(FcL*R5%dgA|VO06~^ z58t)x@SVhsw%IYB|G&q08+o{vmve-}c7&Jz&k@>ui##ncLheH-<-kHydB}1;a$ICaI~Q>i5I3hXu2CuC z_MsTz%1>Q`3VO)kccxXHv!)KtWwWn77;~%64$kRy4*pBdjnqa{sLq{0bqa^)S@^25 z0;MP{Mz5C??~i;=?Ow`JeGt0F>Q9B!@u%qY;x?b09$^CyCdOP&A&(`JtN2q`RNJe# z7MoG;nTU%vYK;H61FyaWaC-lPr5?>;_r!PGRww+F>dfc#=IbF++N}ilGnxOPqzw1@ z1=Zv+AzxElov7}MyC!7e3v2rp#-n<;Cc?_cYN4$JMWm30OQUcsHvZ%Ue`m-&aCPpq zRkhoY?&d|fk@({|{mibFJ!~hZ*I*Riy+6YKGZ?Fohp)-qBIjbx>?eZ-zcvM{(JY@n z&tWOC%V$Ee&NjAtUF?bzaUlbl z+yUuvs7jamk@o2|A~lnSyBE5g3{H$0fjvMz5Qk}WC(yq$0S^)8JN`^KJ`#K8JDtOs z_N>bp6jsi$dEEi&-Rp9yy=-I<)!SQpqnpvRPmsc_`52#>`!++t`&EuHAl;i$KQ(LX z7dN`sBvhTu?bjK_uQ~BvBq@>+Ylr+1XDGjT)hNOFB{Fmk#n<&AfnVG&1_@NZAc0@( z|APeTTzoJFzu1=t2^8Obfdqc>Dprs{702iJDSR%C*QbIMY8*Zogl&!ZMbup@szs{K`=oOV&`W{4$pCD=d7;8j6oCMw}9Ug@rF!LuLCV zDdAVsc${URR88TqA|-2riuhyOdX%iGtVfCJv2$x;MvVPV#3|)hSesH)n^IewQd65! zTboi-n^IewQolCC{o0iBE38eaUz?`!=&LbzTZK|ng;HCEQd5P}pbEh{D&>yBANW8o z7kI=OG6G*?1M+K<&(Zwi&x0TXzqa^~b~vM7fcN^*qq9*+u9`R}Z%tc#x5o#$yWy)a zAis)yj^-Cv7c%f|DJ}h#GlXAU4H0KF5AM0(k%1+?B#7mge@N{N=@b^7$H80y*dW5F z761d7&RBeXACSkm?Yyg&x%rU}-lk=4kI{TKI^vAs7Zc;1Yc5#h=RzP3Z$)T_?_knn zFbRL)UgN*`#N!nLYY2{v5p&msQ^5o|jSk+xr0L^H06` zt&5i6z7h$^{9=V|vYi*pf_1w9U%}EU`;< z%hNB&RzG8`lm+?BcWGEvlQW!jxX9yBDvrS-&|$i&gSb4uGE7emYcShs+$4z;{}CT_ z#{BvfpLl0h*SIxQ&?JV2Q~McFss1v*%>NFO{RYb{L9+Mlt!`KREhOhQ+@sFTh`YD5 z@fqlq+~zjVVCNAIf8$g+4*N&1#y4^4-h#IiS8qLQh5JoHdNn5!ABUg2j>IQM>)`*S zXf>~3mD?>l6M=!zIQ-wq|No+B3Vi!D(Rh5tN8`8NvdZlciJal>xYO;}FqlAnBt@cC z@PC~D|25G>I60cRwc1^7T)da^R&w2~4eoKhWbga#sma(uZr+?!$9v<`~tWjYRr;_dbLpTU8ST=Yz4 zv#F2o#`v&_aPa33ydM*zwY;>XXs)*} zC7R@U_qx@+W4%(VdA&Bc&v>zCt7dMEe;9wn@ygSq1<}^SaU6-U+j>_&;+`FyjNn2) z7|Dn>^wRpJCU`$R;^st;AtBFCsK3!|;$`$p&G1S#x@pm@3-LD{)TOOAeWTmZt7w#% zu;P(XsouDS3CZ3%fIKOI-SG!_%S*M+6Uyw)Hwb>NZSV ziRmVKHD0Ki?oE3X^U4^Br_TL(-N5A4sQvZ+xZZXox7mpO(rT6wA2u;=@~Qa5V-)j=LO2wS##C`~!Kt%Bgj3JgB)I-K z?7#+G;+Lui_tbV0!!N??x{-yG;HnKLG3Z~D$Us9$_a{-S>|aTIU=pixqnnYT6imk- z3XrnhAF2MFf6cdKLhuYR=Udksoml0J(i6yi8BP#kM!yb! zi!bonpNLEE!F@NgogQw%YcCMsB(m`dC$axulXw=B817FZ_Qt;^F%6U0fl)aLZbjiF zzWmoD_;c@ZSZ3jXWPkYdU(;*73`M~<&*|mh6Hf2PV0zU~|Is_6E3S`v$2Ym@HUHGS zxP5W>ysx+HWL)i9@n}+LOs9wVe&Ld+RSQXB5t!Z$N!h_d;?usIYd93&tt}T3JOm9( z)c9YM7>P-&_t#+k`v025d`yBb)?=kwdE@_xJ0mfE0NH+Ge3Po1hF}pQm1lX`-e#tj zUw}XTc-Kyh@8vbPF_Pvz{DeE$`|XzMX$izbL z>zfj?y^lsFrmdJUCe3TP1%1Q|HIoXxu3Ow}ufd{7O>fi|_hc3BF>7KQ8TpjkE7sO5 z32yh?t%L)^{tpo>)rVdbfxOyXJ1{s+@eCj%%?ij=u(20S&(^@=* zbguW-kkmRcolX@qN=s}ot);{R>2MOm>CX5M!zg?roIZwe_=H6%GoEZbjqZZ~FqGpH z!M4f4+wo3HLM+lP2+hS;q*>qv_{u=xZ^SpFGBWWW2HMT0a0G-8^DM+S3&uQLz_hE% zvSy4=#y9P%mMjtDQ*mJAcX6&7$(2e-!#C|}QD6&o_-FDB_+BR9p>4` zc;wlEZ!haPw?nf+7ZUAqEn{GzGtThoH@OTK%?%wB&#D>E>8Hw^Cf`XJ=85H+0FM*G1YYw9 zT|r|)obhvt=b37DT#$!{y1Zr)=I1$NIAfme(VX#oljrWhF~6i6%m^FJ2z+5xIMKIc zo}BTZH=F@a@4^{;sXVNGZG1Q`^Pfqh5NtZV70*1wc%dkq0oMx6#ff$2n+Li5o_z%Mzd>GH>MTe{JI>uxAi}8Jf+&YHEc(Vcr@y!!vj?6;PE)E$u zJc$qEv*mE2FEAbx<+y$$M;^9J+SP&PVVL9Q;+qb~SlT2jQP3PdF70G(CA}+z(x1Of!EQ(OuWQG zvvJMU2;Gr~4!f;}>;9-v21;W6~n@lK|-L8JL zQ=pOAaL!hq*+`<@Zb6>&6h9Y1+HJP=f=i-t5gyMw>1jb1h%et6_~r-4gEJ!W4eof! zZBZ3zg^1z@(Vbp$&t??M$Pc1!dI{Y(qE;fv52AkfAfFhqk zKx^Zk#^)FhGv?uUI4-Xihvs2;=v$3>oi~i%Ap7;_{Vrhw_x7P9Xzrn_8rL;$YRsN4 z%s?P5d{;zZm~x?BehxENC6$CNzIElmp*x7-s5be75mWIyG+9C#`}%mH$G(ih4E42 zAB;~J^WMp@0?{PQKMYhy_ZGUAagK4Gad+b);}YX>#?y@FhGzX2h5`6i<8{WHjJF$q zYn+UO_pkyykPqF+xTA3|xJ{VpT$6C2@kHZU-sc;W>cnm_QFj?XWc-xzZsP;SpBww{ zKGU|~zxzy1NUp4h|L(Io=rTC?FF#WzUds#X;lKP$@r5SdfBBi>{db?qWhM{run(uR z$asbEnq<>t9x(}9jbAq2XUuzr!x?;I{EP8F#xC}{Vg5RyS^p+s0B&c@8{xtc&Nd!u zJl6OU<137>H(qXhHyjIRu+JoXZ2XNe@2v^*|6}ap9*;1-j&T#?cE;T*-O72WGT=O6 zyx;hD-`=Zl;AA(Q4F+chIMm_Y7aZEtVKXs4$Is){+v}d)L&?=}s1s&wY~04Uz__n( z@7}%m8s>&d%)y*%y_Hu4&yz>?-+kTV`Jms zmA&cKKw0Lz>5h$5_uhZgJsY70Z{a@sI$o!@aCJk~u3C*{4o0d;D?ZD_H!|_9Onjb+ z?`quB@GZAvScvb<2!9wSRfkD;~cPp5+l#GETkrmJ9XFUHFeoL94OFoK_EK`axWbIQQX}*7#665hjW|4L{FuqV$M_TD9YP|2nOQ2lXB|v+23%E ze8w&GA+LQew@%&fOcY;3A143mUD__Cj<&wZ%uDH#%Q0-Q#D03H*RIz@&9A) zz2mDWzPSJ0d(&>R7f2|f1kxZ0C6GcONDD}BB1KUF0UIhPh?U|61VlvzQ5F>mir5Qc zLCRM_v7&;AT@)1+3yQs<@_asLXKoJ2^Ll=N{`Qs4zUR!DnKQGqv%9mq=PK^xFF`W5 zm;YU`>*O0-7tLyFfb-l+H)#V;s+McDtX zc6dnacO^fhIK&$`Q^zF5brjcA%#Tg2ezszMUu5MKisddf&GAnzO-+vtP!U5Ek5qh$ zVt#3DGd)M~1&S|HJX7&(#a9O$oK>z<5w|G5Rq-mtavN+~=n*Afr+9$1Cou z_yonn6`!g&HdY1BQhcuBDT*&vJVPsEAdHWe&mYqX(6o z-^AI%o>9y%%!)p?Jr6Txcoz3Vk#r&qr$`chw6{q{f?Nc*jG9_Vb z=l6Lw8Nafy+);67#RC)%QGAl(Qx%U_d{)3g!(N~wE>b*Q@s*1C*`PIUiQ?N7uT*@m zVwwIh6<(L(XH?*M0zW>q`E6JHmg096f2#Nk#RnAssQ8d#nJO{mCv$Qk%}fr-yorh6 zN08Q_T*XC-+bEVP6qB~QlJhG;(L1(JDQs_*KRHn%nBUqxb{GpDF%Q@d3p@D#i=SxN$N~mw5uD_+SHx~ zZ&J~>D!xOp{6ql4T-GZ2dc~U*Kd1Ob#r&Gp*4sbWDb2mfAVJ;EH zQN`Jc^A)#J+*WbNfKQi9JF5tOxM~Xn|~-6rC9 z@CSzf0q-^JU@quO!+bCMJHvb@<|o5^E#?oyIpBW{=YbQ^Lue=;I;RCXB@KsgbgfJsMH^0a58t_AgH-LE)LLI)q^R(fe;Aaf)0&g?S@3USt{5^Q5VZLz3 zdyouHyYb7dk4(hB;Li*@nA_QJnC~-xZ#W73i{S|PFT=ILyg8w98Q^5Ye8nllFkj?p zWSGzHb9hP51lgLzNFg86RTbi;f@XtrU#A;fzU>bwA6WSB1m-DH?k zZOaXF=4@p$_CFJRhX8-QiOlbo9x%*rkk%UJTSHG7{sX+(Fy9(_&M@C1dc`o`AlhM= zpEkX1n4d>}Xt*SN2HsgW0sev{?@wq1zhF6Fm>vOsHq5Um|1``O{r)k`H;uTsm?z?r zg4N|4fmrJJQ|}IEwj$bSoHpXoOyS}cO)kx`;%ldmn}sj)U;i!bJ%8k;+9UkZd&1+~ zH2TLhYG|A97iy!!paw71P~;m3I;LS9Zt4sHorVcMYZ?JcE)jLK#{H7IN}J?(FjPR^@p+TDDs1w@v(L=>jO2@>lWq)euAlUwqlY zr!KFzPAi{-VdnResXba1AG~bwz=_D?yZm7xw`&SsO+ESMy0=X#9yTZfX_J=6<+UpB z_(%bouu1tjOZT?UyX>Yn``jPTd`nH{k0JBIm7xWzomO4(qo+N??(B;6)_DWUk1Olg zHpzRp_4Nz#sIy z{=NUEjjUK#zsU1$D6G{?xuLwMUQHmYXWr=KK7--UGRSOC=%l$Be(B+~4vnL=d*EE@ zWu4*iqzU8qguHdoezC%zb2zPW*^6zRng1*(KGGHDNfT1@+GLcqsb5q!*nOYgq>!*| z*S|S$EqyW1fBkS;cAW){oh@z5PTdp2r-gqXPHR|i0iNc0(WKh+uel(K|Gy=9w`6(6 z6Z7`IxbtwzkHyiKKYj1b{agQdEMsd`^q}(u4nU3x-2T7T?nmjIhwybr$!@!4j~B!B z=NQ-P=zitj;(EhF$qD{9uGcK{0*pkM{>75uu1LZlFbj#DiR-gN-uh(sn)UBSyawTn zv&CbC`wwns8jGK)v;D)KHv&F%csKBO`K8j@-!zG zW0d>4q#TEEuFMa-;WBM_$=VsY-7rGBJKQcoIF>VqX6FBD#<+n!a=k#YGb@TnlS_G!?Z+xI2{2M;gfKMyO~ZWaA-QB(js- zl0tVR{Fj875o+rc-35hfq420EjBt;aydh*3fy&be+z*vk0~H8kl0C{VdeJ2RE{KCG zG^95g;U&+bfPE&lhXxHwMQV6;{5C5JV@j z{`pSR^SHyNN()2ae1+9raT}f>1zlmPbcM0p6Ver?NmsZQ;h-yAEGfTcIE-_qdx?Zw z;5?r5R!z7P;oMj8&%M-im4h>4IWkRpnY#mBm?!n1D_kxa(8*8GSFVuoIS99soxj@6 z9{?NigvqIbm1<}6bqeh4QxFs1+4IfLh72v1h+Mc7O~t<$ckDSxQ%L_%ddD7|!PdPJ zdN)Du6{yV>HSC!n3SFaM8>03iN}4s)sDPSydPykfiJNt}Y)OhYx@PDFZr zY?Bs~Fnj4%gp1|C>&$eYA(-C+@*=EvK)-Dx?xUXDfk6%0maveXe48S)q)IhGQ%G7k z?Rcm&gB+}GPkQGn$;WZa*C$IkV^JE#zgU@7DQ}A){o|E)0-OhE&*_#zq-HaR7L;s7 zkiVx~W@Y8CLGlkLTuWCbo@JH8VCMWOlO5FoO_VWn~T`(wefy;l)bXZ zNoGarAJ0n8WP7-K{ITiYjXod9%81(fq8 z`-v1c18g9)1kA@yEN>6^9#)oj2P{Ts>plQb#n*OtN1p#b{A-PMBHorLh`k0fM{+3T zZX9TVV?A{s=i|yx#{K0?!0(sh`df~r-$O3rQKj234 zES}ff$I7d0Ep(bALHRah!5OCV9RN-pA-59|i6`z(2?{G1hd?~D?Z?Wjh#zz`K=Hky zj|$R5V9Y7H9MU34PZud&Wg;mc*Qrwy1uCx;zhHc*2g{17mnU zT!Mf*@?#iNasZ+^u&*m+<^27@YJ_^SA5*g*H63>Y=Bi5Sr(^$%E~VwUP~j=4ycp0E zP{ccAn)atLO-?>=;pY_b*kMdv5FvcgBq2s~+(fdiivU`Xh?NX+MdgFTlc> z8H9Oz%v9&9RHA@plC&2ag;{Y0r|1^Q&O@R*MK&^&G5`hgvFT+8Y`cLFzQT(02A4Vi6XfjnM8?6ed_?9BGN&4Lkery0q2nC? z362G(Mc(+l!{v(~B?lq<2n7|y>eXc7wm)VmK@Pb#ho&xH3y~atU=F-7G&cO-GAOzq z)wvONK8=*7VT$+x!J3BHm;5a{+gdL}xJfD`*GA~${JaLExYGzjP_IYOf!wh}5e(sE z*>*cdo4~s#&QJy8q4}nyrK?6X;s6MeaP`_ANzrWdA!rNdchtRcK=zACoVgH#un_vA zmF#B7cqubQ$?k#dc<9|EGVu+_?BN^GR%0zR&VYsqJ8j=)+qZZE34*;SzWR9K6mwpI zP|i^qPTOQu-!1r{Mr{L7uCIQuTIo*ibhg5MF5h=CxqX7zTzO6UakpWOnBIqb{|{p# zK22%~v6QOLVdHIVk@Clx8P*lq_Ylz)dvH?#gp3BQ4p8-kM(I5m{~ z8S?J8k)~9-Cox$rq=A_vsPS&7&tv!(spqn{29dJUsPFXKLPG*if9$J4JliyAs{!lZ zYvjG?o|fj)8z0|MYaaK22VZ-EXS^0L%PF{Kt_vl;w_SMcT-OOTT*6-xF0x{#ZJF!z zuiFmRv`P)!^#NP^b3RCF62sGoxC1}z+hX|hQ~m(k9_ik%-O=s=OA_f75a~(@xOxoi z#aTq$1tOxoP6D@t#sD1s9q6bKBT$V`LR5^N3MGoN53riVBM~7B&wy9>S7&>zn$orme5EVC z$|{>r3k&2`i_QKU*XN$h#>L&hF!zWZSe>a-7F!38_ux>DM%ZF2yS46 zxY0cKqolOBB_pb7Nq^BA!Hu$=qV<7^=g#;p_{#3|nX>R%&oNTg1b-VH-h%n`Kz3!7W<|d2mB# zJrr~MKp^JkiJ0&hw$pQ1slx3Gff)TvmR9&r1JS`~`)>i7NO4rau?`mSh}aPzJ85ef z2gj6PBj5NsW6lQpfs{`pf8&E%q+_m|CD$>}VnY)kr4=s)h|FZ^jsJg1nz6?rCNOGj zjZyIdc0Ck%Kg$}?l>LUWk>yeRf1X#F=*ZYQ+p%UjvmnUJFEryp5Gpc*0&{sED-v+S z4B-UO_|r#V7S@lky3Xm`e2x|V5l^lT!CXGfMmladt(peqE1W!J96Q{&ns?EKM@S)L zoAo$aNC6*PBP(t=0pBE^)#1jooIK>39}H*HoV;o(oQ}0A&M%eCZJAoJ4xBXRRkQur z?l9dyy})Y}yGx9R>rg^)+8fRd2ePmeE377L!HVw14ci9tmeSO$IpqIf!@9f9DcrE$ zkg~G$>jLD4^{%6;K>OY57;E1l(Bg)bMO(V!o_0ha=Z1AVI(4|3eT>i5B?V!25C~Nh za2bY}ORuaZ@DaM}oW!ok`2-+0PtjdQigOX{%7QgdA+%dbLe&htk2NXKss0$e7c0_p z^QGW0+p6M&)t_1D6~t_hw}xMkIX7!v197{e{A5X6vp zTrkES7-SUUZz%NgV{8&u9wQMqe7yj}BR6agw&$fzUU`;u`%BP^YFcMRO+`l_J6UWq zCgGX`dr!3atj&hWY*dqPX;w@!o(@%;n^m=0vcX@+8bb4OOFiWzRYfBrSbhTqgTZKy z8b^~Ad^R&=_xoFsW#cnmii12H#S0x2iTcLY*yz73>5ViS@>WDIZk%L43z4T}vs zk;CzeAKKyvsW?Va2ZLE$HRi;oS94ekj2xq@z-b-sD{gCHMb{~)CbSO%h1G;kL7;Cn zfzvP2!w6RdfqvD5c|o9mHG!5uZ9w&Le86t|hc(0W4>1LEFAl4S!QPsdh~QBo2AQYQ z8js+4%UXGPF+S1a!V5z#oQLPaIa9mvoWho37v(Oq3tzdhU45^~hjDff+udvRZEM@p z0pdGI(^>^?|GyaY)cR*zc>`ScRX??jcRFsG-0+2X+0YHw!`{HXTY`(Hzx0Zl6i$fH z-)cgnF8;+^Ohikf)qnI4wDE>EI4Xw*k}7?D-(qi&3pZBG ziT+s=<-d!cX`(AuN)n`mnUN%La-_BBr20>{^$KfGm#Bsk6^dl~`yq^6EDl_g;Pf-2 zo!0{|K8$GRT~wEDUSp!}ni5j{_uF|7xvTvJC0?&&mgGj#{5MOyCh6OyqTyW0_$LQm zLl2gCy;HVc8OcEH()}$jr*v6AztkI=mfMDP#F7X2Di%3sAw zUCMc7Zw=*@Jr~N!^|4aV9v6`N1Lq{9`zLnu=EZoFFt^QEttC8B*i_8Hmcmm;J*?E< zk2TfsPuMm#%rh<*mQJ=!!zQ4NX?eQgf^bX%wy?H{u!Zp~lnW(>d1!KB24t(x^AQ)y z$?dUa0et_AM>pj>k<`VO`S6s$wA6V497XvO;EQISiQvG`g^9_WQ(*!g^IRw=_rR9& zj>s8*BInrH*~mFGvXkXu-9iN{OiONyE#=?S0hG0rqkXZ7Xa=E`bJS}DIih9s!$vaV z;KSynoMS5&7C>%|E#*OR?SAD* z%7yx5_Cn_Ktdf(h+>W}`2j@Gut(F8lF>zr8IUQSOgnK&cP&n7m*_TqAu7x9kYvHx2 zkraPp4{wH_ayY4xKenfr;&1BVrLP~=(_8N@TN$e7w(++PPt1=j#A#(7ax3*u?B!+q zd;fud;CUz2^B4B=>O?%84*N;uorrX2`dfQpL>mEViAaBhG;tAdap2~+sJB-qIuFt8 zPqaVTzhjcy#LeSpf_`RdDSTQbe08G;{JsZ!0>2(%W*bS!! zSsXeli{;}3-&o9odx{p)ipED}u>x5n`zMY}th==8lsd%;6VTGAB$M%=w8=V{WZdCg z_yVEvUR;VOUH?H7YmDcyY_mAws4V_K7A?j2`llWh)f{~+CD@f!iOC5Znxw0-WPW;- z5hT0rsAN@$GX9Y7JSu7gqA&r1{pI)C8m*Ja$^V!Aty{zOc(19=?}z!Kiy>nR@a$#H z=Orip;!92huZ!{EGmDLT8KCpqd>&@HFeo#>W>{^0yi;Hrb`e=_%EKu`9P6I-or$wi zqYE%BasV(3({cF=YFJH9JmioLzFJsTZSy5%c5JTEb@=aqEiJcl3Ch1P4*WhQ*b-YfP_Bstg^}@4Bgv5XMsmGF5e^UNH*}^lfQ40Z<-wu^ z9N%(h9Xp3KPW9>4(;SevU6g?}x@WKeq5nmX-FCGdm zoSyd6z2t1aWTBf9;iXRoD)F^{>ky3hyib5LXNMJ)Ah6;|~@#q+2K`S7&Zfz&I=&>jRlr5pJtM&g0(tJZN?sk@mk@K#>x3DOvh&%(QN}4 zF_)bIixktqKWUhkAH`A0MJy`vFPaq2hhyZtn`*c6OW>Hev1_d92OYOuRD)^%a{rk+ z$(fBh1fo%l?iesm#*SO*e~;)G4p=S|vATvQDV{>^gnw8r#%i4+Ursis%b8?ec43)~ z)y3G!Wgb?yi=bRlyIlibM7gm#)*k_WB7O?CW69b0hh;ogG8>jgQ0GrH>B14zK#LAKsY=NdV84cR&-UQ9VMdIQ@P zWTfRTBd3{Ob{FN)c>vpWWawlWPUH0M)-&>#4DZ5rhmy0y zQRg*m`x+jH?Qn8VunWkxMb9^Kwlq0rn{*l@kkLkLuTVT+F*^=3^5eo04B&G^a9YDgB3OHJnmLM_7#%hnJ2CZpV=FaA zMxJ3?OYY}-dH9EAAl7=(;DOTVhIxU#K^X1N%k%#+fCR7zog!cwAx(|MOz^&uvoN~- zVWzy5Yhal9Fl_VT^(~qCa8jQ7%x8$m!?hv#U128Agc-IMrx%7AhUi>Dx>{ zG|WtYHq3hsPF+!lcVquE%sf9J=b`=C5jfpOCC;_+E{qY}$B77&xnG-*O$~TQX5}4~ zoYQSq=N!cg6)#ha7gJ*K1W&1m&5HS4!e;ujVcz=TLQLe`*NqJG&W!zn`a`fCYIp*+ zxFisxsZS34Lu3D6WFm5~C0pOVvnWSKS7AHbFmLgekUX_Q+==$v zz1d)TJ>$YF4a?jQWHi5Xi{WH!SCEm($q=z zfAwpB6?+gtw;BFnc?zrLt%_e${I25975||4km6+YADbtKam#H2<|u%POBFFt@yUvL zU0@T7+iqjDxa~H)MCow2w)*!gep2zr@`Ifwv5RrQCJ?vXM&3xt`K^o9DOEgH@l?g) zw%g=$jgpJkZpvBz_f>>^@?a8h1ha*40J40pV!kJ0<#QC@thie7gNo_3+uwV8?Rqis z(``!qP-%Rnm{%aSq{E8EPq#@ce!30kW2CV9?G%ffZllvTkO!SW{B)ZL@zZTs{B#=@ zPi=;;QkmYUSp0Mw9lrW$jSx58M*g{y|HfMpt0aE9jZ*W(8u_V;#ZR}JkERMSki{oy?RVuAG?ly9HBi-* znk#OnICh*0^ig~w8HXU3kzigAaXFuIGiy9U@ocg&?m8vs*I!n?O0jq)Y8LcAM_dt^ zOt-7VJ5_=Ym3*&~f2-twD*jjLBziTKNhKRY)A?$Etz`qH)ELYfk425eJCRAyUg`8B zW60%lqT*3XXOiOU6|W}OM?xNdYgNQ{#Rn8eaoJ`K9ZWU`jUw~H6U%5YuS2<9M7e3v zxr(nQo3uB9V^+ym5qGHs_bT~1C10=PFDc%oblz3+&y@V98jd-?E2YC^Q-g4=pf;RA z^uX5Yrevd2N;bPdyrvuOp>!rHzDn`!xts&G zcVpsZ-Ry!nO8+`Ce+-bzZ44N$R!a9P`O}KGl1*VRka>%ZWw+81kLyPMnUa62IQEMQ zgwPSK5owC+DQ>E`KyiDrF{qPbx^ZVq@ZPhJlAl6Obo`EYC8WpBRT1>*&IFuQzEsJt z2@*&xZ&G|K+0^nLvT4Of6+b~X#yt&Y{+wXm8pwk|U^fG10NJB>U!Wuf?*}t6C-Z)! z+!XegVtz$r3rhr3pEHoPlsuPg%4)^$pKO5NPuawM6pvH9K=HL?Q~O)V#-No-E6%w}|#ig-rxb6_?j z-x%FRxv9;&O6LF>E0=$jJRPT5?h-DAWMgz|F!RKGf6VF32$N}*QW{2X5G0*k&MYJn@>Hm*&WS{TvEeOPj=o(T;H;UMlqaw@K{mciC9mYjmcPPg8uEfBi!E2c1-w>_u-< z@@4*#vgCY!_rh?)=z1mJ7&P9 zjkZ->p}3RcD*wQU%+i)hRH{@f6n9ZNgZw*T-T0GL^l6Ie0mzni zf#T_8Q}S#jpQm`S(pl*r7=@iiH$gVLClzlao0IO#is=u^%HLA_f#Q!9)5nd~|3&ek zfP<6hVHJUI5aJ1Cg3zs+*on0;uebOBFSdjS#eLr z^vP>=hANh6@o3QhoYPdq>59))JX!I@ie>KHv;_U|+QJqnzFx7+sT=*5A(s z&QhF1Pqa31k&2)nUMnwG+)*+8@LHXois^^f%7-W(saT#Uh|#G3coiYP6JlyJNy+7R zLX7+}C70g`G4iXF{A$JY&1DUerx8Z~PRi}G_BBe0?z?P)rxib|_<6;zDt<%p+lt>; zyjO8-p9*}d_y@(mDVE<1F*R`cgut-;W{6==$>ouVk<%TS)z1$&IR09xh_;F=6n9cg zcV;#td2V6~;LH71F3(VmoDR>de3Ig6@*}54=`s~@t77`ev5D_ie4k=EQnNb$Q@l;_ z%ZlH$%=*7=1K^Jo?^P^64Pp%aRmqcZ&14HsRop~zw&DWCt-$f|f1rvuLGeY3FI7yB zakk)V6yKzHnc`~2t7|ysJWvyG9#Onr@g~L3DSlD0JnS(o^p=v#FMSyK$4dT%aM1sp zuT{iB#lI*%q*$I5nM~{R;f>)&igOepnGR4hLMVw8p{`ALdTSA2%z zNs6Z^zC!UV!&3iwDq^8x`3VqX#8M@{Q}G(bk1JlU_<6-IDSjhWjsLq;g#0jwDR_^P z(>tMUt)CSCrC6S&nY8?!HLLF_=1aMO9QBu92{8%s;t`HhpqM^5ZAN8^yC|+wEI$}x z@{}J8F?^EJIhAb3{|PGMY{gR)U#xhhVtI&X3XlhPhHq9nw=1qz9HW~>TeEeFHz@v} z;%$mwR{XKz&lJlqj~IjGmq!fKt0T%a#~+`WnFvpD9mQFSa};+_e4JwWRS}ctFeR5? z6*2O$@+8p&s;Z|q!Rm<`5PA1TiU&oP_} zzS?j;_@Y{wLg897$^{)qiYIrf2-<(pu6wDb`^4;K{`Hm(74E|?!-ler7{awxea_)Npx1?L&&E|_At6nv@Sa_~%WjEOrSFxN!zi?{0y_Xgi= zcmVh|!{fkf3{M4f_Luow3SMV;CYWAnC}$;~G0fe>8Dh%uJRv6U+B0x7B6gaHW#D%V z-wOW7@Cxu}hVKOLH~b*@d&3Wde=)ok%vbQ4|C3-&L6bKE;Q|E=(_TY>zmCF)UEn%~ zcZ2iD+%H&)3^Ul)Fb^Sqt3w?QIh=wfw*Vh+xDedmFozR9aidOG@TiyxR3R|dFq?gX z;lW_OhnvBJ7|RU9G=dY+lr!pT!+6;4TyMA@c&Xu5U`|R?zYUo0?ULnV+%+a3$ED$( zP|UvrI%cFkeb$f*#dwD>Tb6$9}%7OgWvETw|Ed9Qfig z<>!NMF?<1-FELX-6&$WIzuhpu zWO~yuUubyO@Z;b;0mtMMC%!Vxf;S-IYr`D-e=y8Xo_;mV&z(3UPknwO#TOgM{PZc= z@aN!KhWT`j6Y|vI2PcgU(=kJruF29}!&IOklc`3NkFh7@)U(bV1 zH*hZ_?*W!y&x5=_SbjVYd@A@Pqr4+V&Ne&;yuk20@b!kT1}`DBalkNrlKo(l9uID2m{(7HIX#1u>X#zW%0x^D z^F?(go(b+?nBQ9RrFF{b*oL$AflnUM}j|fdgAX(_l~T+zGS(#G{v3a zZ(HTv7Rng8e%zhj(op6~r)>3i#olqHJy)$p58DDSmKmX>Tm96#y|xJxnk_hGeV4nv ziEgZH^+#U4#^uFc&%wh3JueZmVS`UO5f^@gM>H!X9np1FS7 zJ>FTNVXN0)bdQ%&*WKvP-{75)aqWoUGe}-uT#Hf9eboPQgV(mx=_$B)byJq$@kTh5 z*aQb=IFx)og(-Q8OVq%OAYa8_s4z=gB(B!+GPF z_6P*YBZ*F0Tfg2WuZw$?f8r*uS!p`VNIr|_(u6dAwvl``IVFuBFD0MD`z0^!Yy3~X zfZQf?VZzkQt;Ie9G#Ok3g4ddACa^e_@fPUGY5lC-yARAe+8 zy?xsK{=z zedHYS$TavndKRvaC2{md<1)AYB&q1o*zzL(+ye(x<_ zPHZQ|b8_&%(Ot+sG?zs>jgJGnypqJFAy#(ttA2Vh*X*dN@<63zuSJ=bwB zaAj{I)QmT>SDgT8X`#YGZ@|rris9f3lz0~*+80=uW8qrB1JKUC#Yl4Sn=8DD$bA=0 z?XGm$*W5#}Fz<|uFQA zyJP>>pOx%?w$&?(?PF`dDJf7ZXE{q;(G3$^P1q+8L%s+xO?YjEaDRl^gPMexa+lj0 zS)Pf#)l`0!X}9Eb55uTZ5c(aVmLId^w}a+7J?k(saNoh+!&T8}6xmc7?_FuUZy26@ z;hB#6o~ZMRD60)@HsQY+9#7-mm%>KDj#d|6>bM`czaiW3l2x%Rc^~LQmpySYqFXni z`qU7wSKGA3&TJJshy=~(**Tiv_ z=@0+W7rc&5c-$0X|06j(FPOyHoY1-1cVG01lFnn>PVn2k=r!s$AYn2-e$ktlBwFYD{~~Aie81sK z-ozXcT^MeGOM=AkHt0&iDK_DS{win%38(qBUPi)ce$mS|;bq|yBq8toCE*sE@G^fb zw1R{){ARBp;S9g>6`L>?zCsdSY!lW&!kJ@e%-WYyZ65<#L67rf?O1#nEyWKl8Xo;oab)p5O zKGKT)hA+(@T1d;9`?xBK4FYxF%Ol~1>v^a8b6tq~xy_q0^ z76+-5C=5L(S6-3Gl`!g^_J)@glkD?kNNz5JLGvJ~yy?qwOekKZ(xA7j~jk6R8F)jx~!K@_vQ-H^}M*U7p+-4Rf4*ro2Wx8z9U{QK^+Gk9SBYZwJbAAN0R@ z(<^9F2GvobYWC1*==6v1vW8;6U$x6i=zb;yOOKJ^9LbOc;fL*N_FB*NIPmU4+)y4= zJKy!M+U4apsX*X5JnSg_8nHQ8%bK9?MZS)u<)siO2=O7H)4%tS3 z>RVm|cay*HEw8|R*MIaaug$&2sA&O_pi~Xj%z0Am!CU}eAb+^|rvI4=wNVwh~yW4A&$O4-CGk1GUVlkA*n}k8^ zT)VD=Yp{0rL39q*b}R62I$<&X-G;T&YL-5M(8E}JZNa~aSCB#f;kcwla%<~e$Y|?8 zk-^sGaa(^y6m31f3A{vN=eg~r&EpE$eEISWzvOM$Hv!law%w404k{X@!46m(-vNt}j60z9kqQsR71o-32L=jm znPgBC&x@JIVbJ6tKD^{^Bt;Q%jW!jZnlf(qzm@ST6m}txN1OTw-}4%zRivQVeuQ9W zAn*SW5vlGMf3D-u0R!wL@fiGf5t+7?0#U9{V(trgM8a6;mMMn0#6w z3NQI%mQyhsLXOFoif}k~f;2s&_^k)W=j(!~K!2IZw>rp#Kk-<>8842#PuPqXdq}%~+1!9NdP?2u+D0avKC?MbK}7)z7gPkF!Gy5SbX}ok2@E z3TKBdg#9J!%C|nhhfJCm_L@|Z~)G> zavU=LX|%sN4sV9Mgkd=j??s49Hms;Q*bZI^^C@YEbxf``e@^H+F@JyD{5hd>>mF@> z$a&Xa@_|>k)11&iBo&i4qL_9ZIvV2?*^a{p&&`!Aq5!Lyz6FP{SpJs3=L0V@i-%yz zPHSj4wgQ%Hj10~~zs`sF^|t&xYuVh;DzS{Sg+as44K0S`sD`}*_LzocHrzSx+)z5Q z5i3tb8DiyQ1X}qDpwg;}mEH1zQNpk^@MeU#WIu*~@zG2g zm=ZSd*YRr153P}E?2K1q{xKTZIRgn$jTk!!Ghq|D^F#02dh9@%Qjd1cO+ESoDy^#2 zV>Komq_v*{NI%(tT%1t68ny6zw1i=)MlM2JviIVjsYZ;gi#*suoPF{{? z3Cvp*+9u{b6gO|tv0C+E7-CwL*|3W4qEIffkybq!Wk{>8C$Lp_04lAjSotp`Vr6=n z?c{u_+OMW}oLdIF8J6BL6Cp0ySI};phUB~lF%o%9yj`fKJl8QevYEW)ZhH6pLm(Es&W`M&KfoxAuibu{l_p$ zP)%n&tP9%rrqCN=7@c_qz4oSKwQngBnD%8JteksOXbrY#Uo_X*C{r5vMFJc6V?d?V zl?JA-XR$g5AV=Sm$m;T%_PreP5{9LHuS1AS_MZP#;~QhbC52Lr)-c8oeJ=Hw7q5pO zdJB@H2E*U|$M$-4JwJ2?l1kTD>F?Z&3(KFZafvvp#W)tSxW>2>ATME9jGMq?pT^aJ z*3EQ|cj*6g-mxuO?ZL{OHEkC-AV;zvnVCovK&4fcYP7C2)#&DT{~QPCGK5RsvsT}a5SMJ;vma^o6OdFPY8D3l z!0OeZOtHEuZuRO=G9*WJ?87xiGY?)kxT{0w^CU7q32~cIrfPMoBi7dGWUS5a*PM#3lO|NRBYKZwie1A9Bv>0&pJ*@v*~FsF!iRh~wi39GgKs9tvei zJxb#Bc<5LM=sU1D%d|c-k%~MN>WO@$^%wY$?!)2w!Ewgq0|4nKR4&45`bo#mr~<=M zg#ie0$!-tH5mhMb4GFt>MjLDCx=^WDnuVBPNL&}nJ+j4{^SHSgHW^EqiS%>4_J(}K z(lP$zFJS3oC|Y{-Hh@@4W$sO5X{|1>lwq+n7a=a$?4?Iq%HbmiQM==oZV2@eOZgBw zuyjMH!;zM@pryl*!dS{o8bai52t8*lZQsRj^QG4~^;DECrY`h{eu-ZD6vCBEP#+1z zx_#EVRgfNGUEfiVTw840a8qcYSjG+#Shnd{d%F%26gzEsx?_$USlmsa%OOP*VodlQ z<<<1s62?o9J-Mr~^gMtx>V1e>h}AUebC8!XEM~ur5SQ%NsWn`msy~Ay8&QMWTGO8k z4HeT9Vu%WCf9~j3Wuv|-w#y9*Gs%R=eJ*qy@{!%YA7$2IB&q{ zddR_;KM(Rsc?3nF)L|V&T(aGSqw3I?O&7u?VQ`>r3yl=}dHe?EZ#&kd#zGisnw~j6 zjXd0Kp@Y`^7rHtA8T)Z5)}p(ywGtpr9fA5z78%TOEQY*!JXdR@|)KB?MzV@1=?YEXTsPcP!jbUt9 z6xrpM0b71N2 z(3xWC?zpA9kJ*mT)tJgmq#bvM%8-w=<2?WNZ*X<_6pEH%V4uI`8w>+EJ<*KRk2m8G zNVsJ4g^nYSCra3iA&mZkaqooA7328!P0)<*gj&`8&k1ZEtT4^UJfs=l2^}o8%{bm4 z^DUZjD~cB5b_1k4egtj2nqa$Qo8!@p3`;Y1M~F+di!;-amgYmkX51FHbWi94v6Pn= zfu(zn*^E7r!kEfTq#5^w)(vH#I##FioIMUP`A(8HgE9k(~FGH7$sSm|X{qpE` zl+)64HMTMnX~!=^WynWN&FSs0IDpgAFqAE(&i1z)KtpauxRMFt4fzcuT(bFU#gW!g zBK@(#TDL!Ry;!#@Zr%RSEJ%*Jpqd9WOhYn{7RcV+A3E6H_Q!wxG2f#zdC=}x(~Qd?FJV}k z@qUE3WcUA%rRP8*-4Pe%fu(orPN6r_Gt7*qGAunNAEWHdNF4<2VZD}PX zJiP^N_;2VbvGU@$mH&qBf#j%zrgt~g%b58zGGJBRe?t#IDs6Zz%2O9bRz)s~o08c#{~!_fvvq3x~V^_pI_yjXivL-VFJ< z;qbZ0M(pW~GL$`5MeMl|alr@)kS_UG3|U-W)0W>MqJ&{-%fkq9$)+oaBMxB!EkJz6v=m`6%!=qH}?}j+Be~!Q5 zXRk$U4Z>WqCmwBIU%rJC#_b8;3QCq2L!O6n317ks%uNlyAm)yWo0}Rw##Hk{*k!IM zXQ7ZSNbjbG4~n%3XuEg)@xNf?={VR}HUJgpVmN=e@rZ_X z%IJ8a7?E3HePC*x@T+2K`?#rf!bd)CXd#dNjzkG8Cg5?r4;S7W~ihNXvhh+#Q#!_ve5eURX|NMP(@ z9tFt5O%GoJDeQ{j^ngrc`l0y=08T%20aRLD+4aRI8mp@S(!gIMs}zj&rh%73Uc#_6 z@Pi0($)@LvBO17j5}Zez!MK}2HCn@%jPP!$hrB%@&vP=4)fZm!=ltf?JuV~M8A+u{ zpFuHVd9z{0a=wXL$s*YLVtK6*#`4?|{u{q}4YIC)pd`myx(FdI*}ZA$vfpukQWy6{ zK?Bzhzb}TR#2dK&u^RY#*kc-)xkv-o54*@ltgJ>6V&!21+c$G0thB0PEB zZ4J#B4LvN`(FhFn>->d&-lT`MEH`{WEaPLspkZ^v$9R@-M^(IG8zUQO*xYag*@%@b zP=;z)t0LB2fjF^l5kT6taST~3uW8tK5K+RgH0;+1amlWty+`zKO4zWU#?8+Q|0L$W z7B@fdSPgp`5}1C$Ji4*z+`RA(YyaOUQ(AfS7}LrZ11hN-Z{^jHNIjnN#~;GzU280? z=GDAdor@5c?5Y2;`bv{abx+&qh2h`D>dkSh3&Y2FzL1Lq#%ksvjb0eO9#S+qP8;pV z`iBnTo@OD+7Rzq;v;T%=U(m9btz~~$%kKV4Zal;Y4F_usYV8Jssmj! zz_pnG>ll`5bVrCwcC6EX>Oo0o#BJ(rJ5FghP3p1OwH>GQSmQ`bBrw%r9!1E*Ee+oS zsWkX7l&Qv%KqUr)c;m4SkwJ$6i2Xg8MUDMU&w%|52OS0>E*0lNYckHi_oEa%Rt?Q; z?_^&L*^y%lCAhwKZs}vIR2HryRhl$AUZ=8S9j1qB>cmW1AQQJNd?E4)IuY!UU9+0N zU9$;LX;r0a=bUM(HvJYini<=LU`ds&$QKB4skqBj6{*By+5c385?%zH*4I{~ zJX}AhNW329;idn*y?Gni%DzE^GZU#udAL9Fk&65QJES6`&N3C50;sgAQjzf4rXmdh zvX7oXPW(c|^sx&dFJV~r(Hw-hWPhrw5tHZM6tzQKZa-U(_Tg4ikJ0gZv=29ifgyd@*~0}Q=ltm zCrqT#FuP9L(cP#$BsqwBHEwlfxVu7&n-+f=@)Cx{^bZk|rEIjZbXtGgzMaD(#L_`=OFM^qiKQ)% zc)KbUDU7K$6Ss3<>i7O9p=gt_J!lEsaPmM* zxdx%Yl!uHdFT_ph5gse1bcvhNLrlpU4HeTMHkI2WFlB{bnt%p5h-_sqh0iw)LdBgm z4Kf(=5{AW!aR>!g?1mZ-#H$9{2I&<(L#${Yx1yI=k&_4&)9;z8DN?z;!c!rYUNp`B z7?#9dI^S6G0YG*QmG{?J(tHvuVOT8bh!B_TKcRKxh?#)ngr@ZvWKHWEo+zf}#7*lP zKGws|=Lg0uWhP>2-*7wRBbE;ES0qN8q^_J~EPc%1nuufY5W;*A5*Su%ve@Nhw?qy{ z8rBXH-sX?Rzn1dt(qNf~2ra2b3%Bs7+)uD{0ZigVQq{L z^x>*g?)5qKVdf=DQ4ptN+!Mm}QI;5=3%g`^nM2_4ax0*OYSRB+Mo4eT)Yj|Vzh9w>8fir zYAHHHVMbB{e?~23E+Y93rM#cn%t_{SMlz=kBxaS32|LN0laUx9iRRl~lCW{iN#^}m zpu`)78l}&zQf()hSG6@UeB(os*K(41HC7YD*AgVA$Vui436fBXggV@(2on%g}CC4~F z7@)LMycvTQVS@&Aj8>{?m6}#a7PFl1kS=sej8b-sT?0@4W`JN7(64f8}W{`6=W8 zexNXb-#y|LeEd&2#8-?5@N+@`ib&Kug)bBj$U(On(3<}^#p?`w9DO%(ADN#${3rSf z8An+)8*(khubzZKGU@)LrTE%}u4A5x`4(tkS=q-^DfLn0oK z!x>^@`tgi=j_;cfkP1n<{>xxT$`$8R%74g+Ul8^G0sm5_^JQ}p2Td&drvG6KASpBW zdU=qKB6I}Z^rTm9{_+e20*f02>avk3_7rD+TlNl}IH#KI-X+wLq_~sy8m!icn!bV5wXtb zCmM7QzorQ?l4Jv$Lz+65{hD9VNCyu()Szn-L-}L=7%$qaf}fM9>;}>Sb!0tXLE?up zK@9u2GmtL)BTuq95BqDqXroxO;aXt;gRqxL2foNd;Q{I%f20zFP?l~jmOA=#vqdK#sA*1ny*jz9S6E+5jsoi39KByqmcTVqlnIOB7A2~ zzK*D=l^nj#K%OQd8yL+mAyjm2srgn$Kgwu+Iboyym!i?SZae?OXtbF-#Q%$%$$q0+ z(PkNQsm6b>bs;v%Pxwb+k@SHZRn#9jr5W&sHB;QSP z>-jfsNKEp7$d4v^k4xlOZZAmcM6)teL>pff!(v(Zr57T{w1~EIyZG0)h-PE+ zaEs{Bq%Q1+QM?%f@ovQLkiF_sIvlV$SJ9|IlhP->AH$C#&epE%LljhRq`UoE4k4dO>eXJd^x;U4H6 zmpEC~3|>|vng$Vr{Q3Y|J&hKF3v0BP(Avg47bbP1aq%kHay%5V1U}H7M>aJ@d5}$u zOIg}Ne{x~8QA2ABs%dkV*!3$5qlZSh8`s}9J9?puy^=aNTHcf`$`8=&!a_NgFqfI@ zPn{dxkyw8tm{VB~NiEsxX5`XFq(VW!1|Njn$ zZc19;`NnADP|7<_B#deeT|Z_?w2>QW6^S5pWhCrR>F3t(oxoa!6Q#~GL@_M?FPHzR z^8d<6GIT=1DUqh<?4|zdj~``L6%^P0`Mw->>vjmqu@>btr*N2{km|_cQz{6>fIw z-;yf?bNn4kqXnt|*zj!sFvI`a@L~Vc+Yp|Uz|x@qxBnQzb>~Vr9FEix>1Q({QSOyY zKc|zMlyqLMx(ls(ny7ztr26$%{h(35;Yjs&j#OW2)xR<7Hy^3K^9c3S zTdn#&|C3u_`fXM_Rcv{6Mx-`PZ<<~mL?lP@C1UFgzv|P(?7H^_;)Fd;MsB`}H{?6smdj6Hmqh9ucV_HH z*S-~o9Pm5b3f*6U z2$?g_ndc-#N%Fx~A<7XcH*%CA$`r~NLS~5~WFAV$F{MFKzw6rTT6@1fpYLD4{dmZ8 zy{~KCYu#(@z1xoCK4axezuIxh6`dO_l5d%wWk( zNq%s9^elO0WSr)2-*Rn|gQYUf@V9S->p9;EZ%1Be-;L%AEu-_huejmw%X3@KP~Tfp zW$<2SU;lS^vfq8d>z@DL-FyDKdy(IL%IjYI-`(5)yZaNr`wMG4sXl*mUko9kIqmc{3^}3#($q*@4fH;e{RQYcdh3K zbH#Xjm;K5+OzI5!@`<(Q#pmJME_eBB|5)=!yR4t2FI?oH*B;DJOxjP4(m8G7(}tA!!SkuJKGT0h&)zQ%P3S4B$UHM*;D&>Xf=RJyWusmH;TxV=66_xHjI^6LUcS5337P%AXj*pW6IfKXYZ2jbidk7pco)*8c-{Hp_>( zHb18?;BKYKAWJXZj?KJb`lrDhnP<(9&E+9%YMW{a8b4s8jRPE$sXzt3gg7R>1~ZBig&$# zk1ZbCuf032Q7?%$yO=M7#narAFY69-WrZ=aEY_E@U%&2dAp+mcL>u<7Vh|Zl_MCCz-fi;*%2Bb8R}L$?3*ymveu_B}p7RaJXB)U5@u-arrm4 z?&9`f@w8`NhzVrt=rZmI7K?eoRoD?Mo%VV8Q`gf&-MBZi7E60$pM1bw=U$U?ntj&; zfx0f?o?f~g!ECWj#<_2H$Y|+*k$;Qi7Oc)B*KVieUypNzc1k|`uG~J?bf?TJ*RwQ1AV479MV*<5Y!hlr8gX1g41TM(uC;j8Zvu=%4V|&%y@XuGlZ_>%9 zx*+{wc&)i5#O! znbKqaDDmELJL=_+ z94`E2(TBWB z0x|l<6M5v4Uoj)Y^uBHMCC`r_FQR_Q)p;)_Z)mJnE+39O$E(MAuBx^_73$w_#*Fv! z+Q{pwU-j|^>fxT7s9*EkT>ZLd`5IRsW`gIC{_)=5LEq_PCVGW#>Pen^so(J2Pd(Z5 zK(&4qQXYflSInDX28O9$@H|3oCoxKGC!v>1PQshoc-^oa^u+v=(Bt?gF;#6RF&+Ky zs^60T$YZwriqS@S%#&X+Nnr*)RNMHA)ziHEV?BP%+up_sE$GPdSS`Q&9X?mvUEHXi zA^(xb7WozPPMCr1>Y1K*sjYt>{I&XJujhzb&%CJoI;I9(De zzdf<>u4*((i}E9SpK9CpfqIVoM<4PTz<-veR?qd~^y<-` zGppbC9FuKB(;tG3v&S@dGp+}FHr3A&kIAoGx#fSQ^7Rm1$T(MD?=wbY`OKiXe$A$f zT5^4KH)j@?lV6%=a}|CG=FOi=HlL7Rne2rlUw96e^T|K-2>-A7Rq2W;;^zD!U&$%q z_G?(irRZ5Qf5#%KFgH5bVL=RTgJuR*B0b#8ER@*Jm-|D*E z@>~7}(%)73GTD6?WcxI6F)4C_&80kA%dZRMG1gz!M&%2NgM$SKzHJeU2Jls}Y6e_E@*w=UVN<;AX^mOqwqM=jgyu&I#89m{j125mUsgDPmn=?tT?`d;u?)D=Uw}C{%=NdQIV;MC6T;cZ9p5 zXAt}fJQ;o`w;bO;JBPvowas7&@)c_NrH?hpx5J0gb5yKXOPAO`gPvb}>-_)H4f&;y zta+lY2zgQ2TYw-=$+%E4}cq;lAz}v+kf6y~1{0jde)&tCv1L(h{@(+*| z4*x)Tn?M!K&28bK@T90ifj4DC4{${eFjEUQgN5*#=njEB@K10|zUYDT!*OCAzj`Y9 zPAbi9{AywA^_NEj?C>-^3Vs(}4S%k-zt#9kZO@yp;qT#7YP&+`Lb9P}mrmYqe?il2 zG~KfvU6L;*fAjzu;jC&qiG0Y5!ll%9;Cklp{JWsg7aj^vg+GM9fX~1e)OJF*)OJ<= zgkuT>cHiJ@dEw}^x5c`yo7;pt)>RKE%}M{|4jevFJmKZu>#qq4 zZPfl%fycpb!ym)@;p=dwxagSW;pTDjcXIy0hNAE`yc+%%z6`PsKUSo6)mdZTIPbmxsbTe2>B@ zwe5UPtOJ#iuAepU8Ey~UQ`Eiv zHfTR}_dxjZyxImGfqX3TNow17wr@FpV4iH~*~vE*1wPV3Pk}tv77^PlH>fS&3!hQj zpclmcIJY&o6S@z_7LDfV#36s@OtRtcoC{5Ha4EGNteo0rUkyFAkUxpMx!U&a5p|6~ zAKB0Yj|s?kBx%8BIZAD_AB#LGY?sAl$rJMTTd$eT_Dgsld`N94@U7V2_Y`_A!#B`> zTWyp5JK7^RuUNDoe^U@Si5zM>SP8g{SP#5LCYzwSO}38OCi^7vcJM&8jX7AHGrt^P z2O6UVoBc$18az{NJ3Fy|68aMs{Cz)x*P?&D+Gf84J$phZ97f@!+75OdzA4rNUyzgj zLvx#b>f&OXz5JDIB+n05RNI)9#X3$%2db|HoBdO8d-!R!?c81LpTq$4JP(gT{}{E+ z{tfg@Egp~$4OVy$h56WdHT=0)4_qupR%g=OW`96!vpeB+boli zC&O#iHqLsnKh7S_ZIXxK&`E5ZRol)N#s1FM(eo?(0R8&i*Z%A?sqJ9dkmpBUOr2lu zzdovZ8)4TJ>w$HZz|3gB_U(}Og-5Av0%OGfI8!yZ6M7##AC#2i`%NFCX$`y? zJ8VHL=Z;+orenD*~bQk_ztjApul3D(%1)F8&QevBBcD3b2;p%D|w3awLkc`tz zbDL#5xEtJCZTt2YclUQ5il&$0@z`O4+GhVYdfr8zjC_gf{-Jz6+9Hu2M%NwOt!10j zcWRsK3FJS+57c(P`tR!ear7r8`ExC-ww~hXDev{jEtW?$>`(_g)K}Y_TA-&b@~+7H zsqJ7R;n89}xoolWH66`ulG97e@%>r8hr&njX0;8vP3#Z!jplYoPrw)8pVYSRHL<_% zUB5@?|F^#(PAwk={Tx%Wjx~5@M&29D_#UX$8T~T-r z9Bkq&m+I8wiEgb{zt4Qrz;|+ zD=R%V%Uo)EBIie5Hf+8A@~ER5HfVjZKTuoEZI)f(e(LhxktPYoAr z_6|++)RupQd=+-y4(}4{fj^hoAJW`re@bn$Kac#DIXwT=@^>Wu4AP7Jf%0i?voDRF zN717z2m3vVa3l0LQ`=-Zpr=c@K=dO3yxFUm_^lgCCaNqHfRD0 zwbYhBskWUvz)y?y`)F=g<$1Nuas=`T@Eo;`8A_H7f1s6Gumf*F({}XiN6&Zg zY4o30+bpl6=N9rmy*&K<3&fO5LXuUJoRyv(wQ<~GX;YMW(cexPpi73 zsqOX^LtYtftd@Pl^M6V<{DHb^ z!Dcqdn)C_{MbFFV84piEe-ipBno#r;<^J<&% zkI3)A8RT04{Hqugd*jIb#&q@=c48p2ljM(^F!dlaA9>b35HZ=oyNhm%SeE!j8udQ?Nr4c9@NxWb`aR z&ocCUhMwK8)7}Vx8>xfYi^TCR{Jkbab>@-7EOEA zHt0dIKhSB-ySi~3?90bG_#fd+-+JXyRqGxzsBH}WF$w+{`Op)Go}%a}hn_0vX&7}V z(A0L&#gE!*!DiS~?Y|h2kASDB?c|cgdU85WvgS5{73f)wo=xE%y>If^i5(7Nhr?>S zji=Ca9{E+|chq)5sj5YtPOK-Vi<)NB+$I?p(hdLRi9%(#vDyZGO6(8RRdfI4iJqb8 zc^N(9;VIT1o_`W{n2n}nYtk#U06ojl^BH<}!~3mYmsb5wbDQybwg2j@7LY&NS>Ya< zGE|SwI4IT`>p*du`!7%Q$ai!{dgR+=BR%!ur_kR@9lotH|1N0i87atzG~~n8b_-sI z^=DS-$>}1i(>1rrB&+?GC-SxMUbX)}W%)fAyKH z1^@Mmrqy0kxMvf3cEShIe^~9mT+wqL`Bmh1YRLWf&nQ*RsMCq{(&!dTGb@g~3fx3(C)8Z*jU)5#riHG09po?H(e!+z zNv;rjUWMO8|1`B-tvTqKk9;Ze)oTC!f2VHP+3gYQ*2cqe?i^doBc27xsCij^4L0&V}$~_q8ovH zVm+`f1zc2fn|(#K&AtlqC*jU&n?N_QKh9vyZT2t0 zqJN3nX1@kK>ydwne4pBmbt;67b7DQPt`z*U<~I9#YMcFiW2o zX>PNBptjk^)VEycpWWXOmr~oH<;4C#wKTWcH$_hi^mIf|Pk12u2diz8FN-7Z|6@>? zsJ4SmQ`-rB2rm}v$>}Q0D>b)SZdThYzeIi*{!#6X846sL4S%3NwO|L1c{1vZa8|XQ zP)@PG?<43b30FjaWwp&dG2ElqUmo>Qcq&}*^7d*w*Z_EtSP!gAH@~R4&3?SvWKfI>RNnje>15|ME{{Rn`r8WVw-3NwdMKYifWr^WwB0F$EmNmO|%Vq zI-sXVv?mmJCb|(Ah8;$zZ9*aROhBH5e3sfyXc??OoXXF)i}gfx-RS+A_Y6M~0)gYY zVKY7*E_g45U*JHa=s>B({y@1jw;9L5rQk=^c5;=({=PLsXsQP{!wxOgb|s!hPY>kJ zAlDy!q%G5B=^6P7Hsyl)i(Qj$lJgJ)HdiKu|LpA&29D*(K7`-@1W;>&vO0c zu^2mithQNxh8;E{-+}y~+D_=OSWie7%08*NP3$MNP3$`IznaML{idu`vVo$ z+-6o0J(bb(IC>huEzsXaZ4>L}_vrk4qcF%XNIpVsGaDt=6Vhe4U)9`ZHcf3an~8i8 zyislAY!Un8>=Q>m2%SLFX*B()xy?QW{vG{)scmLynnn9Fsx8lnJWlPMP}e|F+0Zl6 zwY|82m6~o9XlzU>9bA#B`N%Y+QwL<3FxVX zo+shv;eLIB$)mMy*vz`3sTcBRk-wm}nN5Hvi}mDm$?+MQ+ufS4wn;8R{#ghc`_wk* z*J6L5Gn(5he?iYJ^!$mQnC8*`jA|P*i`pisi$&;|;rSOrp|lnBs>G{p=lXCXv7VeR zg5FAVn`IApsM-$pBJ%NSyAl(d%kll4-$Ta{{qLhjgA=y zSAm=P*7^7MH^l#e--Fk}U&B{mUH8?WOi8#I+z*~2?&I$;7lqH^qwrlgd;93Y;^9{C z(6HS%*J7$~7~dnyup*(vT(VbgeNoCkpMjggE#UTWXZRWTIe0WY4xZ@Qd$vtMVJ3;T5azK|GSEXKjHJa^x0-jKV#=#;JX;;FXaEgY2*a_adNBeg!02> z;PSq8{^6xA>?G>=1|JLbya-+juY%XQ zgjeN_YagQUN*FfWQRJ85pW&Noo8Rxq!wY2CI5BymJsH%N2R(aFrCexw1WiTY(&(vy z{BbzE>V_SlCGsxVw-@q$dGIHOVQ3nOrqS>u^t_9Fwo7^~OWv5}ZjJnwunmDEBRK4o`$=-vsxaA=mmJB3r>*otBBr$-*$;wo{MNP{IMIN<?plsVR12=-lC<0u zQ9HPk+p6V0hz7&MT#Ac=#l=mMa(JB+o7jAm7rGW&UWsS}{Dm8<4LX+n5LJb1x*=MA5>X4djZ4;YH$(&A zLGF;2UqYl`IPg#Hb@x!q(-6&u=eY`#rMwi;8hD-SuI25B4#3~IBrX4d=ra7X+p6We zh#tTJm!joN1)^u08_w_IrbxL2qKa^3*FwvQh#JFBxv^UAh^QCb&#lz*^N3!7$GWpx zo{Z=nc$N#kDdh!-mcyUAL@jSdvX9Dc$jYPlJr_Hbu6M9X~<4S|QdWGRQnAescf3D1DvgFk>5!OP%P@OF5Y zXYZ5AQ4~(V7vZ1aJL*o}?fnD!-*CFPXirdW7d1N^7pMO}vVk5&p_1D=O+IPVcNgWi zPzO}H!@c2wY8z=7@)7WV(DOR-H{faLndRjJ!V{f~rUhtPgM1yl1wH$bAA(Q7r`_4N z<>_(-(QWvi3r?5vzlbu(XBq#h23?|-^C2n*mvTe2oPg+Y_z9P+0I19QqFtd<)fY6-V>E4ADm(KGOK?yQzaA{q}* zaKV{UejCvoIN2p?`C~+D;q`8amUkdJ2p@LITIS+PKcalq9n$izh#tZ*?xB`57l~fT zJa7S5;aw@0L{tf`;<{_O4x%P-bC;y$PKbKL{oPhA4?{E>9_LcDJO$BA*txj(q`VN( z3V5|^q2(_S?S}Wev06Tc=p1~>t<-V~qCeoj-B~TCEgHRQ+2C9*I7`Zf5tW52xI``2 zL{uMc4=^^3RCwz`wbzS`IIzWCLa_7QJLyT#AJqiQ z57Bq#pVUh^oW2T#}X>B5DP5k%$Simrv0A4Bvc+}MrPa(Hbfn`<|ed%2Zbeh$$~@GI`DmM0*Z2EXHi3#FWl zXeqqhC2Dy+qV4c5H$=;a5&Zz4b;(-3iYUB5lg;9HcSy@IWujLt6P(pO)N%ntCEzly z!XhbGL6ivBbKSMv9FeZeE&q)uP1)$gGPtu^4zJE+$1a3&F&F$u$`ugR zfFE~>T5g1>HQe3}k#eXfqW@i`$-lrO&@&2t4W0xi!871R@KVpAfIilvuo>1BoBWg5 z2Om@0{}{uoH`&!Who0-`xsCiD94MDJI#8B!(Szl1NlWCzLrJ$rehbw^r7qk6eoAep z)DC$kxCeR$ARhz|N6#x>J|KLJ#-eEgn%+e|8~y-2E0C{-H^bZ9%BAvj*^lTbe8Qd8 z@+Cw!;M*?vv6TNtl;+Xs^~~TBwH#jZ$$uuJT+9v8as@;+;KyCEmKz~z4Y!vct|sN4 zh@ORqxQALEh3GYSlB@8ElxHA%AO65~*YYw%pTiqnl9s|ZPoG_L|5SJE=9|~ zA^I0i<>Hn}IZOHIh0F)bk4V#UX+#NdH8)nvbrCg#Te_86ei~6<_!)Or%P$}r1CMvX zzR#|(Dat7R$ZZm*C(P)|hp zZFr`OTPY*WNAxkg!nM%y21GmH-EORwk03e)pK~j5{a38Bq#+$8FW}14L;nMW19DU5b`-BPt9RcX6ww zToF-CxVCGdWq+k8ea~-$atAk7%e@f&*LqQIrIueo`E~dWcUH^qAesluk8E5c|DRiq zXdS!>-VX1Azk$PRMcKXk0r^?@7W}Jc@3TN`eDsQ@g|orA;38`KA8#q-LHGY%yY(l;j z-i4lH$WOvQ!@t0~7FBouOdp~UlOQv&S?Xd`eos#1dEw&dk)Q1t*|(Y-{+T?*njq=~ zcZK`H&%i^~b}>gH9}T~Xp8s8{N~YmG#ok5JJnZ}-yc9hfkbeP(m$0%E3NKq_*XbyF z&cYWH^eJXd;WezxH_-GC99ucspB>H(7lw<&mDF}})%;xN|CqlaZipsb`N}`JR&aO~ zEF0)qhS^}>`&pPCr;O*$yhx}{!XtXC3xQxQj z@bB|oy`{{ggoQBt5!hn17;g!E@pH@Je_Myisi@w_P0hU&}5u>9S&e(^2Fn z;B)A?f}Bf_-9b-Gjpzi@L@g_ML^lHA^~UT8RYLPlGIe=`ml(6WBKm8gr!MjaaBKAR zK;9>8cWFzO9P(p~W46j`VKU0o;dkNp)t$W4T7-Nlyb3+*k#B}~pl83Ad#{B@nnta8vZO3g_N4ClFrnEWdZPd!lJb zxXH_h!{gxz@J!gjAHa*?)Mhu2-R=jNPRcrhoVX|dXxRv-^A&So>)fSxbW^A&smJ>kXKY~OQ!kIp~E z-w<7f0R_nxW7V?hf~c2deGB!;p`F|AU^_ zk-rgjC=g!R%?6qkEd=Jm3)I%L2KhR87rYNXrnY@gAwL(ky(L^n(`_`}g9Ejr17%U$ zz03g@g-gO!;hON1A#8+Kf3rcmAnyS`qqfJ98Ob2IC+hP9C8gMq(qF#@8>&jy1 z3UE~n6j=~X=2{m$jnUHyd3bF&JJ=xPL*Y@0cb5RAU7X9i_!Bj{5g7d zBH!aXo6P2We?$C(yR%2`$_+&K;6LG1b#V3J0&pR?wA$uW0eJ#k%j@y(N)r^C!yVx+ z@U!p`cmg~bo}soAa>(DWvrX(ap_dZr_P7hVJ}b;2wtYPT9%e@PA22GdI^egf|;I#Fk7nW<)a1Xc-JOmyNPk<-GGoIA1TiYxh3h%><)z-5X`FeOeybC@G zpMY;hEc3q`*^r;csJ4T}G>Bf(G;kKR^*n;S2wVxS0zVEvq4t-FZloJFXiGG;g`Y-G zZ{+=9U6IcpX9V(5a0or2w^88gd<&5;fmg$y!`sz1f$)la_GCPOp5y2_GT)}w3v`KMO}u7#fZUhZ9^Mrdk*rtZjl!(8ic1oCn4Yw$F+o!q;~ zXE*8@J=4W#T85@o@MiSvL;f{<8b0q@9FvQD7tvqvKd>wd7`bRcxCqQu0V`;3a|*8t zXwRz}=&$Sbco(@P3T@&4T_VuGbI+saMfgp48tl||LdnP%G%g;U*)lY3MAH_R{JmT# zT^-Or{t5Urd`WG``9BK<+C}&cJrA*OOq1yN>D4xlEgI-us9b0&h^9x8hZhjEgVjM^ zA8rn}hP$clzq5@z?MP_%wVI zz6<}YwpqqBjZQ2LoJDOtkBB3mJd2>I99$7jgzLeb;qZ!scANTZZU=h~J?1WP=NYuu%vOuTW?+h(}%(uB*15M#!7N9nsSd`9O1c{x75OANWmp8XR8M&}K6i z`9gRJydK^R?`Rgt6Pdw(t#Rn8oyt-?bVhq^f)}x0cy&WN{tfipN6$kz-BZ!4p9zkG zi^63*d(VyXC_D~70XI_HiMB-E7JeE%y^;5a2cu`iQ*wO&IWr1P;gt^UU~eOz2`_|~ zz-!gE??&WX;PC2++N1OT28Hk7b7~vt2J+kRzi_JN(aGe1^T37RV&XRb?8~805v~Js zS;eNB+sU;=Ph0oVnJmRS^h5bsl!w40(DN#CS!pqHQ{IMWy6k7=|E8ZHS`B{=e+7rv zUbJWO3FN2YOKO|Vb>uhU-@Kl*a>oLJhi;{uOJe#K(fzWi?KrvMg6JuZymWYJ#+b)l zimuSu5|u94qZjgi@G$g@L_Qjxgr2F$r^9nS%Qr{JV?GKi;WhAfc$a&4PR{)VqVw=& z_`2Gz@LlA;!w=Dure*YMW`MJ)ZJc~w?!AXRf~MkVs)D=*+z4(4w}(5!{nU2gLCA;l z6X<9(jYrc2cshFKBbNoSF37(-Sm%bzZ=rpt9D$F)r`2{!my!Pr-$c*v$p3<4T1Cgn zpw1r{5Pm)cy^XMQp{WG&GH@mI)J9$xZU(n>LoUi+o#Yx`yai_z(CWIJQmnGG>Oe!Fl0= za0NKQv-gHk7lj6JOSmoELv63Ne#i&HBhWJ%`8fE^HhH51%|>CKOZrLP06ukVAa2b^EZpy1}cQS7+e-T)sfeN z8^BH6$}948X@{sg+}oYi@?b+ydK;eU616-Z(Z}!#H$=-D5bc0>yJRgN zL39c}=MHK48lqp}Kioqt$F>V!%<%Qg3}b7cm0HR^=2$!Pe5F%Y8*#GE~+0G zr@(jMKj8;(miEz;&*9m7ffq%gBwPuu0zaX)CwN2TP2mpc>59B3{9OCI(Scq;VXRBO zE-&!uZioC9T7=4S_)~bj+D>U3@}2O0^n8o_d-x1`e)Mwh1%4Gxx6t%2@>Ct77dWHZ zPAD((f^bQ=tlRpFJYA|Hssq<|DOzrUs1w}P#odtd07S#!5w3-nLx`rpNp7r`XCqn& zFL5iiyav%1@R#namJc902A_1n6e(Xulmg#ziCTVuC~ZevMmI#uxe*nHi@RhkS4313 zuI&zKxiO+Pa0mBL%e@c{f`_^aH>LavqSxU!Tz4sl-a#}E{t#XYFNfE`o8ay6F8DZn z%Cq+hzJ@{y{0ICuoKBvZ{)zy1Df_CKL~$^p7Y2r!zu6`mwa2E zE)Ni;?Hs+d8Qmc*=SEZ*F76&`xgw&PaBWxNj+7fCY6Ew0-L>2c(I9xJOVaWyh+c=^ za9g$f4x)MRhb~3S%Mq=EH@UdGQr?B=8~8idLd$0n{S5!&#%lR@M1iNHS1q+$spYJQ z^22fNtd`3lsti|m!C&R+R}axsa4WbY+y(9j4}_nGUxX*ZQ#^Yw(b*`>gO|X|;Pq;G zF6mxBy&KZ6{Y2c?Gzt-=p)djY3_x zvEL*;t&q2ayP#(f@}clp_*FPb9Qn7tGf{BxBDKxt6XYx5P3YN+{Gc2Dn>@wNAxeSo z!1v*YaBBJ9H~;XN)%o?F%TGmy^P;CP^5UMor&u{ORYp^FI1xQ9khg(5qo+UeXWD4o z0MO`4>2j!YTL~oB}_91Kp#SJw2Qm&Z)MOE{MEv2pgr)R1tY)_%Za< zL*5W>j-GDFd%@3GPk8<#P#6Wj22X;M;2H2DcqzOd-VE>RuHQ3dFTZ^#98=rnI)(fk zd>uWvk>7&@J)+}eQQNU{L@e_!8rcX0O2Sp)n(z~9JGsWlpMu+>rwj5PaDTP`Z+(ZL zFdQDGwu4PZJ{5i+{s3OCwtd$iUk7*Gfu_AE9E4Ax=O^UX;6LF9J>0p!<%hXt?I|Z< zmpm_A5H6;+lPrh4B3unUiOB20P0-WY%R~DAqCk5zbw$&2$e)KtqUUwwZ@@F)_uzT( zhx*e>{n@WYVLiMX-VYyzPr#SecD1e{Pl50IJt3L>zbK^Y6+NM>Y8xmHc~LkXt_nX1 zH-=lPZOo41$p2fqps6>So<%+c9)X@Q$j8HPpvNJ9Kk86mS#%??3f`=?Gu@7S7kmUg z$C00cub}51@;}3Nm;RA|?3>BO{41Zc3iXa&{8Df^I6-Zv^%(L*xB+^aBX13NLQhXG z*XKeY&=*aE&@>wPICvs@-a$SK{t#XaFNZ(vEywp?3p-HQ4IhI~!k6GH@LjcCtv``J zfYbM}o~knYEV^NDM>*g^ev|Z+M;`y))~tDBo_z0O*1VyP$a}zj;Aho#Lc@{21dl<_ z1mu(9x6$Lg+`E16qiG?U)*@dI?}qooN8uCjWwlM<8uFAr_*S(0X!;jTsrp8*ZdSDo z6o+Q&r8T(@$6m9@o1Wirm65u^ejTY6kdg% zFOYu;?}rcdb!}5+&6EEmvP7&{Gb1MbF+vsD`FQG}VKfprc^@bZ{QH09?YecU8-vP*rWWsuuD(a5MC@M&2Iog`T0vUw~g7;8vxRr`AMd z@4~a;58=h|a{3CkqA^#Kp7d@GuiQbiLZ~?f` zGj3;kd1{qKRt2u%?xdIJPJKkp-9w2&oe*_}`@_$|!{8C{B=}8u4x9`x_3T}?s_9JGpYmE5g;#lZd1oAlAh;~KM#+CUxTNq?L^;2J{w*v4*5;XP*??TR@*@Pkbe!IhR?${;k)pC zwKt}GLE>52u#bsp;LK_}a4zKe;KJxBjr>u#GJ5JGZxpuo{0nqI;c2+P+D_s*qmC&Dw(^8xZjA#ALL*TcKv{qPaBo!m*}XW+}|`33ncb9ny0qv;mzS82w#wDi>A(K>IM%)&q(B>;VEzuJP-abVwwL^-LSL!G*Soz zK7%)-XD9MK@FDbkkNgMt0(x$%{eQ%F4^63_lY+e>(!n{^{w+Wr2bV=pCFE7$C(sjW zfkGR&7u*ki5q=pSr?!)ug#1l-272arx%c`@M$=+6tw6pS-hiIH$PdD&;B)YGwVmkg z=j8bQrM`!zz~E?8TD9GdjBpQqc5wv=I0g&N3u=3v#$a z+2wOfNkkRk1h}T!&ap1?2JlnpX@|TM+ygxWyxe=<4nos#G`)&^B0Lp6bC4&)OX214 zT6p~sJa6}*@HKoIJ`Z1mQ{ek*yITJuPc<}p@w2M6r@8#fjY597q~9bxRgl+!8^O&s z)XSMQUACA$8=4l+S~^>(cA7w-amGL(NA5u232_T^J#jm8L-Et*CgPsvmg4^A*5c>P z?Zm^)9mOx3pB9fbcN4#!QT~^t2kt8yQ>-vR{I>aZ@htN^ak6=nc#(OF_!ILt;!n-r zir1NsioY?@hS74;tS^VX#;^P=1k%n=3L_6&3VOv zOy1QkCQfIrDbAt}$?TiSMlLHf7Z)(M5*IhO7ne2n5mz$z6IU}25I=5yS=_)pM%>IC z61O(b5{Ek4#(df6VqPpBqP92Uk>)s=%ouYS@oVOC;>qUn;%VkYu`|~fe`szfUg9|v zXdxRbtk6Nc)~rwbjpnDt+suQ+d(FedN6asZkDJGc&zL8OFPSHaubL-|Z)TGFud|#Z z8-G|~zBrKC%NGdKn%8J--XzXp{z9D3yj5Jt{EfJ@`ItD~d_r8^d_mvZYTL$Daeec3 zaTD_maZB?n~IgNOLIk$MQxtRC`a|!V%b1CsSaY$!hLpI*9LZW!OxvqGY zxrun5xs7rd<~POX%J*a{Uj;MqVo%7RQ;t6PGfd6_+<(7gsjl z5Z5%{6xT8TD{gE~6Duz{b9!+{b2f3ekZt6bjXvgr;(_Kk@lbO`@yq5a;<4uH;z{Ou z;;H7A;&;rg#k0+A#q-UfzOu2@Hl7u)HV+oBH@_s_Vjd^nX&x`$XMRomjd`Z{gn733 ztoeQM74t{p8$o^lmnY!ovT@f6>&1VXH;Vr;?-!@b;@!({#6k17;ymVi;z!J}sRDsw z=G5Xc=CtC9=Dexo{@1XLN2HKwE-Y?jt}1SBZYXYRZY=I>ZYu6!?jnB1+)F&f+*dr( zJXkzNt$!pLFB`8};T`c?=J&+!nrDmWnm-hOX#QBd#Jo(r!n{Jf*1T2xg?XoVhk3U+ zbig(a$;J`$58~tIOX4%;U&TL}e;400-xuFA$D|Gf{xW9}2eNv%ER#5`IVjHTITR=? z8@a7eQe4nnMqI)iFD_@UEsi%g5LY*M6hC2pTHM6kP2AGlPu$)-SllJ6z5frDjb2t5 zCLUmZRs6hplK3U_6!Cw|GsLf&=ZfDjFBVTXFBQ)+e@%;_uDBi%*;Hi!YjE|eg>>(epcMrJY3wu z{Ia;6dAzurSwA!OF~2PyXkH*5ZeA=N9k$&6rLr;J3aiDF%p1j1&6~yVnDqnaZ1W-U z0`qs`rRML&E6r!cpPBV@9Wz;3h#(}nBNumGk+u=VqPYG(Y#VT#=Ktqnt7x6E%OEO z4D%K7T=R{za{oWHjlZO@#QZ?K!u*eTtvPEtc`G&N7Vj|U6Yn*b7auXli;tTti_e?8 ziLa^k{lAZF+_l1B@t@|g;(yE`aq1l2J$qH0(fp1$r`d_~o9Bv)nHP)8m_HX+G;a}y zs@ldj*{EgSF0O0-R@~HlT-?_DgSfN#qPU0onz*0&7x5r-ig=j$AMq=mLxI%k<(^p~ zop`c2n|PWzpZHyK0r6b(BjOLu6~v#ID~s2ftBE(78;ZA?TZnh%u=oE~vT?u)ZNx{+ zeZ)VQ2Z}G5pA%m-j}YH9j}hN9j}!l89xo2$^lsk_aR&3OkZfeNjXC0c=1;_h%?xi1};%@4(W%mMi# z#6WWf@lbOP@d$G$mu!r-jXdJ<=F;LR=JMiq%$3Bm&5w!ao9l}gn;VFinHz~$n>&j) znR|$L=Cb$y-msufm? zZ<=?A|1j?n%R)fmd-k)Si<)nWOPlYAE99~F|NF90-3kxH zwauyJ3kmhj`gNct=Jev0=KSJLX8qbvcXLs3UvpXUU~?t$OXh@-Y>cyw8sZ7&MDd&E zC&bgu^~AHxZN(p$^=m>OnY)Nrn8%3MnJ0_4nP-Z3iNo*zvt{Fe6;_CknAeGqo41S4 znD>h>ne|IHSIx)7H_g|@_sloMf0_Rf2l9Hi@_yz({N}9U hxD98UX5E=BZS|TpsytTRU3?`?-VIy2WKG}a{{a=Kz$gF! delta 278337 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�X4Gy{%5FV%Ne0`<~x1^7Z) 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 YQ=R(t>esGO*F7kgF8`Kr&ddY Date: Mon, 2 Oct 2017 00:27:22 +0800 Subject: [PATCH 064/156] WiFiClientSecure: display certificates when debugging is enabled --- libraries/ESP8266WiFi/src/WiFiClientSecure.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp index 3490e2c1d..84b5b640c 100644 --- a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp +++ b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp @@ -45,7 +45,7 @@ extern "C" #endif #ifdef DEBUG_SSL -#define SSL_DEBUG_OPTS SSL_DISPLAY_STATES +#define SSL_DEBUG_OPTS (SSL_DISPLAY_STATES | SSL_DISPLAY_CERTS) #else #define SSL_DEBUG_OPTS 0 #endif From f85f8269b70a034bc1a5895ac717e78ddff1f4c2 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Sun, 8 Oct 2017 05:00:08 +0800 Subject: [PATCH 065/156] axtls: update to 24af415 Clear bigint cache once certificates and keys are loaded, and also during verification. Can save up to 3kB of heap in a typical use case. --- tools/sdk/lib/libaxtls.a | Bin 1040648 -> 1036780 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tools/sdk/lib/libaxtls.a b/tools/sdk/lib/libaxtls.a index 4e32b4f50825e5d5421d1a6f4d184e97d0238286..82cf3d7ee5307a4f3456a06975c3124c8fc06746 100644 GIT binary patch delta 148621 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

{o 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㊵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%0AE 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 tyncNrk0q> From 84b046f98c35d9da6c84323a624410fa7e9160bf Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Sun, 8 Oct 2017 05:04:04 +0800 Subject: [PATCH 066/156] WiFiClientSecure: add support for keys and certificates in PROGMEM --- .../examples/HTTPSRequestCACert/CACert.ino | 2 +- .../HTTPSRequestCACert/HTTPSRequestCACert.ino | 4 +-- .../ESP8266WiFi/src/WiFiClientSecure.cpp | 35 +++++++++++++++++++ libraries/ESP8266WiFi/src/WiFiClientSecure.h | 4 +++ 4 files changed, 42 insertions(+), 3 deletions(-) diff --git a/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/CACert.ino b/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/CACert.ino index 25973db20..9b84ed3b7 100644 --- a/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/CACert.ino +++ b/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/CACert.ino @@ -1,5 +1,5 @@ -const unsigned char caCert[] = { +const unsigned char caCert[] PROGMEM = { 0x30, 0x82, 0x03, 0xc5, 0x30, 0x82, 0x02, 0xad, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x02, 0xac, 0x5c, 0x26, 0x6a, 0x0b, 0x40, 0x9b, 0x8f, 0x0b, 0x79, 0xf2, 0xae, 0x46, 0x25, 0x77, 0x30, 0x0d, 0x06, 0x09, 0x2a, diff --git a/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/HTTPSRequestCACert.ino b/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/HTTPSRequestCACert.ino index 977f8f5c5..ddb24f7a4 100644 --- a/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/HTTPSRequestCACert.ino +++ b/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/HTTPSRequestCACert.ino @@ -27,7 +27,7 @@ const int httpsPort = 443; // Root certificate used by api.github.com. // Defined in "CACert" tab. -extern const unsigned char caCert[]; +extern const unsigned char caCert[] PROGMEM; extern const unsigned int caCertLen; WiFiClientSecure client; @@ -64,7 +64,7 @@ void setup() { Serial.print(asctime(&timeinfo)); // Load root certificate in DER format into WiFiClientSecure object - bool res = client.setCACert(caCert, caCertLen); + bool res = client.setCACert_P(caCert, caCertLen); if (!res) { Serial.println("Failed to load root CA certificate!"); while (true) { diff --git a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp index 84b5b640c..2fbd1897b 100644 --- a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp +++ b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp @@ -209,6 +209,14 @@ public: return loadObject(type, buf.get(), size); } + bool loadObject_P(int type, PGM_VOID_P data, size_t size) + { + std::unique_ptr buf(new uint8_t[size]); + memcpy_P(buf.get(),data, size); + return loadObject(type, buf.get(), size); + } + + bool loadObject(int type, const uint8_t* data, size_t size) { int rc = ssl_obj_memory_load(_ssl_ctx, type, data, static_cast(size), nullptr); @@ -587,6 +595,33 @@ bool WiFiClientSecure::setPrivateKey(const uint8_t* pk, size_t size) return _ssl->loadObject(SSL_OBJ_RSA_KEY, pk, size); } +bool WiFiClientSecure::setCACert_P(PGM_VOID_P pk, size_t size) +{ + if (!_ssl) { + _ssl = new SSLContext; + _ssl->ref(); + } + return _ssl->loadObject_P(SSL_OBJ_X509_CACERT, pk, size); +} + +bool WiFiClientSecure::setCertificate_P(PGM_VOID_P pk, size_t size) +{ + if (!_ssl) { + _ssl = new SSLContext; + _ssl->ref(); + } + return _ssl->loadObject_P(SSL_OBJ_X509_CERT, pk, size); +} + +bool WiFiClientSecure::setPrivateKey_P(PGM_VOID_P pk, size_t size) +{ + if (!_ssl) { + _ssl = new SSLContext; + _ssl->ref(); + } + return _ssl->loadObject_P(SSL_OBJ_RSA_KEY, pk, size); +} + bool WiFiClientSecure::loadCACert(Stream& stream, size_t size) { if (!_ssl) { diff --git a/libraries/ESP8266WiFi/src/WiFiClientSecure.h b/libraries/ESP8266WiFi/src/WiFiClientSecure.h index ae178513c..8a7c60259 100644 --- a/libraries/ESP8266WiFi/src/WiFiClientSecure.h +++ b/libraries/ESP8266WiFi/src/WiFiClientSecure.h @@ -54,6 +54,10 @@ public: bool setCertificate(const uint8_t* pk, size_t size); bool setPrivateKey(const uint8_t* pk, size_t size); + bool setCACert_P(PGM_VOID_P pk, size_t size); + bool setCertificate_P(PGM_VOID_P pk, size_t size); + bool setPrivateKey_P(PGM_VOID_P pk, size_t size); + bool loadCACert(Stream& stream, size_t size); bool loadCertificate(Stream& stream, size_t size); bool loadPrivateKey(Stream& stream, size_t size); From 526f4fbb6cdb3e3a0d345474784cc90b6fe73638 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Sun, 8 Oct 2017 07:08:51 +0800 Subject: [PATCH 067/156] WiFiClientSecure: add option to allow self-signed certificates Mainly useful for testing WiFiClientSecure in local environments. If allowSelfSignedCerts is called before verifyCertChain, then the certificate chain will be verified, but the final certificate may be self-signed. --- libraries/ESP8266WiFi/keywords.txt | 5 ++ .../ESP8266WiFi/src/WiFiClientSecure.cpp | 79 ++++++++++--------- libraries/ESP8266WiFi/src/WiFiClientSecure.h | 3 + libraries/ESP8266WiFi/src/include/ssl.h | 13 +++ 4 files changed, 63 insertions(+), 37 deletions(-) diff --git a/libraries/ESP8266WiFi/keywords.txt b/libraries/ESP8266WiFi/keywords.txt index 83485d6ae..7e7819f11 100644 --- a/libraries/ESP8266WiFi/keywords.txt +++ b/libraries/ESP8266WiFi/keywords.txt @@ -130,9 +130,14 @@ verify KEYWORD2 verifyCertChain KEYWORD2 setCertificate KEYWORD2 setPrivateKey KEYWORD2 +setCACert KEYWORD2 +setCertificate_P KEYWORD2 +setPrivateKey_P KEYWORD2 +setCACert_P KEYWORD2 loadCertificate KEYWORD2 loadPrivateKey KEYWORD2 loadCACert KEYWORD2 +allowSelfSignedCerts KEYWORD2 #WiFiServer hasClient KEYWORD2 diff --git a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp index 2fbd1897b..e7bcb1a4e 100644 --- a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp +++ b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp @@ -110,6 +110,7 @@ public: uint8_t* data; int rc = ssl_read(_ssl, &data); if (rc < SSL_OK) { + ssl_display_error(rc); break; } } @@ -227,6 +228,25 @@ public: return true; } + bool verifyCert() + { + int rc = ssl_verify_cert(_ssl); + if (_allowSelfSignedCerts && rc == SSL_X509_ERROR(X509_VFY_ERROR_SELF_SIGNED)) { + DEBUGV("Allowing self-signed certificate\n"); + return true; + } else if (rc != SSL_OK) { + DEBUGV("ssl_verify_cert returned %d\n", rc); + ssl_display_error(rc); + return false; + } + return true; + } + + void allowSelfSignedCerts() + { + _allowSelfSignedCerts = true; + } + operator SSL*() { return _ssl; @@ -268,6 +288,7 @@ protected: int _refcnt = 0; const uint8_t* _read_ptr = nullptr; size_t _available = 0; + bool _allowSelfSignedCerts = false; static ClientContext* s_io_ctx; }; @@ -559,96 +580,80 @@ bool WiFiClientSecure::verifyCertChain(const char* domain_name) if (!_ssl) { return false; } - int rc = ssl_verify_cert(*_ssl); - if (rc != SSL_OK) { - DEBUGV("ssl_verify_cert returned %d\n", rc); + if (!_ssl->verifyCert()) { return false; } - return _verifyDN(domain_name); } -bool WiFiClientSecure::setCACert(const uint8_t* pk, size_t size) +void WiFiClientSecure::_initSSLContext() { if (!_ssl) { _ssl = new SSLContext; _ssl->ref(); } +} + +bool WiFiClientSecure::setCACert(const uint8_t* pk, size_t size) +{ + _initSSLContext(); return _ssl->loadObject(SSL_OBJ_X509_CACERT, pk, size); } bool WiFiClientSecure::setCertificate(const uint8_t* pk, size_t size) { - if (!_ssl) { - _ssl = new SSLContext; - _ssl->ref(); - } + _initSSLContext(); return _ssl->loadObject(SSL_OBJ_X509_CERT, pk, size); } bool WiFiClientSecure::setPrivateKey(const uint8_t* pk, size_t size) { - if (!_ssl) { - _ssl = new SSLContext; - _ssl->ref(); - } + _initSSLContext(); return _ssl->loadObject(SSL_OBJ_RSA_KEY, pk, size); } bool WiFiClientSecure::setCACert_P(PGM_VOID_P pk, size_t size) { - if (!_ssl) { - _ssl = new SSLContext; - _ssl->ref(); - } + _initSSLContext(); return _ssl->loadObject_P(SSL_OBJ_X509_CACERT, pk, size); } bool WiFiClientSecure::setCertificate_P(PGM_VOID_P pk, size_t size) { - if (!_ssl) { - _ssl = new SSLContext; - _ssl->ref(); - } + _initSSLContext(); return _ssl->loadObject_P(SSL_OBJ_X509_CERT, pk, size); } bool WiFiClientSecure::setPrivateKey_P(PGM_VOID_P pk, size_t size) { - if (!_ssl) { - _ssl = new SSLContext; - _ssl->ref(); - } + _initSSLContext(); return _ssl->loadObject_P(SSL_OBJ_RSA_KEY, pk, size); } bool WiFiClientSecure::loadCACert(Stream& stream, size_t size) { - if (!_ssl) { - _ssl = new SSLContext; - _ssl->ref(); - } + _initSSLContext(); return _ssl->loadObject(SSL_OBJ_X509_CACERT, stream, size); } bool WiFiClientSecure::loadCertificate(Stream& stream, size_t size) { - if (!_ssl) { - _ssl = new SSLContext; - _ssl->ref(); - } + _initSSLContext(); return _ssl->loadObject(SSL_OBJ_X509_CERT, stream, size); } bool WiFiClientSecure::loadPrivateKey(Stream& stream, size_t size) { - if (!_ssl) { - _ssl = new SSLContext; - _ssl->ref(); - } + _initSSLContext(); return _ssl->loadObject(SSL_OBJ_RSA_KEY, stream, size); } +void WiFiClientSecure::allowSelfSignedCerts() +{ + _initSSLContext(); + _ssl->allowSelfSignedCerts(); +} + extern "C" int __ax_port_read(int fd, uint8_t* buffer, size_t count) { ClientContext* _client = SSLContext::getIOContext(fd); diff --git a/libraries/ESP8266WiFi/src/WiFiClientSecure.h b/libraries/ESP8266WiFi/src/WiFiClientSecure.h index 8a7c60259..afffbdb4e 100644 --- a/libraries/ESP8266WiFi/src/WiFiClientSecure.h +++ b/libraries/ESP8266WiFi/src/WiFiClientSecure.h @@ -62,6 +62,8 @@ public: bool loadCertificate(Stream& stream, size_t size); bool loadPrivateKey(Stream& stream, size_t size); + void allowSelfSignedCerts(); + template bool loadCertificate(TFile& file) { return loadCertificate(file, file.size()); @@ -79,6 +81,7 @@ public: protected: + void _initSSLContext(); int _connectSSL(const char* hostName); bool _verifyDN(const char* name); diff --git a/libraries/ESP8266WiFi/src/include/ssl.h b/libraries/ESP8266WiFi/src/include/ssl.h index a10e9dfb7..8879e4cb9 100644 --- a/libraries/ESP8266WiFi/src/include/ssl.h +++ b/libraries/ESP8266WiFi/src/include/ssl.h @@ -113,6 +113,19 @@ typedef struct SSL_EXTENSIONS_ SSL_EXTENSIONS; #define SSL_X509_OFFSET -512 #define SSL_X509_ERROR(A) (SSL_X509_OFFSET+A) +#define X509_OK 0 +#define X509_NOT_OK -1 +#define X509_VFY_ERROR_NO_TRUSTED_CERT -2 +#define X509_VFY_ERROR_BAD_SIGNATURE -3 +#define X509_VFY_ERROR_NOT_YET_VALID -4 +#define X509_VFY_ERROR_EXPIRED -5 +#define X509_VFY_ERROR_SELF_SIGNED -6 +#define X509_VFY_ERROR_INVALID_CHAIN -7 +#define X509_VFY_ERROR_UNSUPPORTED_DIGEST -8 +#define X509_INVALID_PRIV_KEY -9 +#define X509_MAX_CERTS -10 +#define X509_VFY_ERROR_BASIC_CONSTRAINT -11 + /* alert types that are recognized */ #define SSL_ALERT_TYPE_WARNING 1 #define SLL_ALERT_TYPE_FATAL 2 From c5b26e487eb21a65c248ff2f253a06a1fc46db53 Mon Sep 17 00:00:00 2001 From: Peter N Lewis Date: Wed, 11 Oct 2017 13:32:53 +0800 Subject: [PATCH 068/156] Fixed comment InterruptLock "disable interrupts" --- cores/esp8266/interrupts.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cores/esp8266/interrupts.h b/cores/esp8266/interrupts.h index b4a2ed44b..868a4a08e 100644 --- a/cores/esp8266/interrupts.h +++ b/cores/esp8266/interrupts.h @@ -11,7 +11,7 @@ extern "C" { // these auto classes wrap up xt_rsil so your code can be simplier, but can only be // used in an ino or cpp files. -// InterruptLock is used when you want to completely disable locks +// InterruptLock is used when you want to completely disable interrupts //{ // { // InterruptLock lock; From 71b963699da89f3a99056264c07fbb207f9816a7 Mon Sep 17 00:00:00 2001 From: Christopher Thomas Date: Mon, 9 Oct 2017 08:20:58 -0700 Subject: [PATCH 069/156] Fix broken link --- doc/esp8266wifi/client-examples.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/esp8266wifi/client-examples.rst b/doc/esp8266wifi/client-examples.rst index fafe69513..261b96c52 100644 --- a/doc/esp8266wifi/client-examples.rst +++ b/doc/esp8266wifi/client-examples.rst @@ -249,7 +249,7 @@ In case server's web address is incorrect, or server is not accessible, you shou Conclusion ~~~~~~~~~~ -With this simple example we have demonstrated how to set up a client program, connect it to a server, request a web page and retrieve it. Now you should be able to write your own client program for ESP8266 and move to more advanced dialogue with a server, like e.g. using `HTTPS `__ protocol with the `Client Secure `__. +With this simple example we have demonstrated how to set up a client program, connect it to a server, request a web page and retrieve it. Now you should be able to write your own client program for ESP8266 and move to more advanced dialogue with a server, like e.g. using `HTTPS `__ protocol with the :doc:`Client Secure ` . For more client examples please check From 7a93478a99a23004e44758603bc8a4953f230205 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Fri, 13 Oct 2017 02:15:32 +0800 Subject: [PATCH 070/156] pgmspace: expand varargs correctly in printf_P (#2819) --- cores/esp8266/pgmspace.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cores/esp8266/pgmspace.cpp b/cores/esp8266/pgmspace.cpp index 75de541d0..ed81039f4 100644 --- a/cores/esp8266/pgmspace.cpp +++ b/cores/esp8266/pgmspace.cpp @@ -234,7 +234,7 @@ int printf_P(PGM_P formatP, ...) { char* format = new char[fmtLen + 1]; strcpy_P(format, formatP); - ret = printf(format, arglist); + ret = vprintf(format, arglist); delete[] format; From de9e8e024b2fd811f10a75ee8933a6d10f5f3cc9 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Fri, 13 Oct 2017 02:17:06 +0800 Subject: [PATCH 071/156] pgmspace: zero out memory in strncpy_P (#2633) strncpy should write 'size' characters, padding with zeroes if src is shorter than 'size'. --- cores/esp8266/pgmspace.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/cores/esp8266/pgmspace.cpp b/cores/esp8266/pgmspace.cpp index ed81039f4..e705a32f6 100644 --- a/cores/esp8266/pgmspace.cpp +++ b/cores/esp8266/pgmspace.cpp @@ -147,6 +147,7 @@ void* memmem_P(const void* buf, size_t bufSize, PGM_VOID_P findP, size_t findPSi char* strncpy_P(char* dest, PGM_P src, size_t size) { + bool size_known = (size != SIZE_IRRELEVANT); const char* read = src; char* write = dest; char ch = '.'; @@ -156,6 +157,14 @@ char* strncpy_P(char* dest, PGM_P src, size_t size) { *write++ = ch; size--; } + if (size_known) + { + while (size > 0) + { + *write++ = 0; + size--; + } + } return dest; } From 10edfc211edd26c2117e2e466d978c9f359c130f Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Fri, 13 Oct 2017 02:17:56 +0800 Subject: [PATCH 072/156] debug: hexdump arguments should be const --- cores/esp8266/debug.cpp | 11 ++++++----- cores/esp8266/debug.h | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/cores/esp8266/debug.cpp b/cores/esp8266/debug.cpp index 478fe7392..6a99510fe 100644 --- a/cores/esp8266/debug.cpp +++ b/cores/esp8266/debug.cpp @@ -21,15 +21,16 @@ #include "Arduino.h" #include "debug.h" -void ICACHE_RAM_ATTR hexdump(uint8_t *mem, uint32_t len, uint8_t cols) { - os_printf("\n[HEXDUMP] Address: 0x%08X len: 0x%X (%d)", (size_t)mem, len, len); +void ICACHE_RAM_ATTR hexdump(const void *mem, uint32_t len, uint8_t cols) { + const uint8_t* src = (const uint8_t*) mem; + os_printf("\n[HEXDUMP] Address: 0x%08X len: 0x%X (%d)", (ptrdiff_t)src, len, len); for(uint32_t i = 0; i < len; i++) { if(i % cols == 0) { - os_printf("\n[0x%08X] 0x%08X: ", (size_t)mem, i); + os_printf("\n[0x%08X] 0x%08X: ", (ptrdiff_t)src, i); yield(); } - os_printf("%02X ", *mem); - mem++; + os_printf("%02X ", *src); + src++; } os_printf("\n"); } diff --git a/cores/esp8266/debug.h b/cores/esp8266/debug.h index 89d18c05b..92d1356dc 100644 --- a/cores/esp8266/debug.h +++ b/cores/esp8266/debug.h @@ -13,9 +13,9 @@ #endif #ifdef __cplusplus -void hexdump(uint8_t *mem, uint32_t len, uint8_t cols = 16); +void hexdump(const void *mem, uint32_t len, uint8_t cols = 16); #else -void hexdump(uint8_t *mem, uint32_t len, uint8_t cols); +void hexdump(const void *mem, uint32_t len, uint8_t cols); #endif #ifdef __cplusplus From 371d1412fea60f4f139d6805089f3bd42130f6f7 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Fri, 13 Oct 2017 02:18:53 +0800 Subject: [PATCH 073/156] provide implementation of _exit (#3698) --- cores/esp8266/libc_replacements.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cores/esp8266/libc_replacements.c b/cores/esp8266/libc_replacements.c index aaf8892eb..1d7c3f9f2 100644 --- a/cores/esp8266/libc_replacements.c +++ b/cores/esp8266/libc_replacements.c @@ -117,6 +117,11 @@ int ICACHE_RAM_ATTR putchar(int c) { return c; } +void _exit(int status) { + (void) status; + abort(); +} + #if 0 int ICACHE_RAM_ATTR printf(const char* format, ...) { From 2c2d6a3bad29249c6954c2c61a83a3e4ff847da6 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Fri, 13 Oct 2017 02:27:10 +0800 Subject: [PATCH 074/156] Don't remove persistent WiFi settings when doing scan (#2946) --- libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp index bb1a5170d..948221121 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp @@ -77,7 +77,7 @@ int8_t ESP8266WiFiScanClass::scanNetworks(bool async, bool show_hidden) { int status = wifi_station_get_connect_status(); if(status != STATION_GOT_IP && status != STATION_IDLE) { - WiFi.disconnect(false); + wifi_station_disconnect(); } scanDelete(); From e04903225e8e257a21c4a9872308d9edff08755c Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Tue, 23 May 2017 18:23:20 +0800 Subject: [PATCH 075/156] sdk: update to v2.1.0-10-g509eae8 --- boards.txt | 13 - libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp | 4 +- tools/sdk/License | 20 +- tools/sdk/changelog.txt | 966 ------------------ tools/sdk/include/at_custom.h | 30 +- tools/sdk/include/c_types.h | 21 +- tools/sdk/include/eagle_soc.h | 26 +- tools/sdk/include/espconn.h | 35 +- tools/sdk/include/espnow.h | 21 +- tools/sdk/include/ets_sys.h | 30 +- tools/sdk/include/gpio.h | 21 +- tools/sdk/include/ip_addr.h | 33 +- tools/sdk/include/mem.h | 24 + tools/sdk/include/mesh.h | 2 +- tools/sdk/include/os_type.h | 22 +- tools/sdk/include/osapi.h | 24 +- tools/sdk/include/ping.h | 24 + tools/sdk/include/pwm.h | 92 +- tools/sdk/include/queue.h | 232 +++++ tools/sdk/include/simple_pair.h | 21 +- tools/sdk/include/smartconfig.h | 21 +- tools/sdk/include/spi_flash.h | 28 +- tools/sdk/include/upgrade.h | 24 + tools/sdk/include/user_interface.h | 102 +- tools/sdk/include/wpa2_enterprise.h | 27 + tools/sdk/ld/eagle.app.v6.common.ld | 13 + tools/sdk/ld/eagle.flash.16m.ld | 2 +- tools/sdk/ld/eagle.flash.8m.ld | 2 +- tools/sdk/ld/eagle.rom.addr.v6.ld | 1 - tools/sdk/lib/libat.a | Bin 313648 -> 389484 bytes tools/sdk/lib/libcrypto.a | Bin 103626 -> 135458 bytes tools/sdk/lib/libdriver.a | Bin 66900 -> 67252 bytes tools/sdk/lib/libespnow.a | Bin 55506 -> 72138 bytes tools/sdk/lib/libjson.a | Bin 12934 -> 18334 bytes tools/sdk/lib/liblwip.a | Bin 353470 -> 320108 bytes tools/sdk/lib/liblwip_536.a | Bin 353458 -> 354288 bytes tools/sdk/lib/libmain.a | Bin 199606 -> 212668 bytes tools/sdk/lib/libmesh.a | Bin 158340 -> 198260 bytes tools/sdk/lib/libnet80211.a | Bin 266874 -> 330434 bytes tools/sdk/lib/libphy.a | Bin 152560 -> 156962 bytes tools/sdk/lib/libpp.a | Bin 231368 -> 237966 bytes tools/sdk/lib/libsmartconfig.a | Bin 107044 -> 118416 bytes tools/sdk/lib/libssl.a | Bin 218648 -> 275704 bytes tools/sdk/lib/libupgrade.a | Bin 33798 -> 33878 bytes tools/sdk/lib/libwpa.a | Bin 124632 -> 170764 bytes tools/sdk/lib/libwpa2.a | Bin 362372 -> 475218 bytes tools/sdk/lib/libwps.a | Bin 227700 -> 322676 bytes tools/sdk/lwip/include/arch/cc.h | 5 +- tools/sdk/version | 2 +- 49 files changed, 783 insertions(+), 1105 deletions(-) delete mode 100644 tools/sdk/changelog.txt diff --git a/boards.txt b/boards.txt index 19a692de9..76b5c1168 100644 --- a/boards.txt +++ b/boards.txt @@ -227,19 +227,6 @@ generic.menu.DebugLevel.OTA2____.build.debug_level=-DDEBUG_ESP_OTA -DDEBUG_ESP_U generic.menu.DebugLevel.all_____=All generic.menu.DebugLevel.all_____.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_TLS_MEM -# disabled because espressif's bootloader refuses to write above 4M -# generic.menu.FlashSize.8M=8M (7M SPIFFS) -# generic.menu.FlashSize.8M.build.flash_size=1M -# generic.menu.FlashSize.8M.build.flash_ld=eagle.flash.8m.ld -# generic.menu.FlashSize.8M.build.spiffs_start=0x100000 -# generic.menu.FlashSize.8M.build.spiffs_end=0x800000 -# generic.menu.FlashSize.8M.build.spiffs_blocksize=8192 -# generic.menu.FlashSize.16M=16M (15M SPIFFS) -# generic.menu.FlashSize.16M.build.flash_size=1M -# generic.menu.FlashSize.16M.build.flash_ld=eagle.flash.16m.ld -# generic.menu.FlashSize.16M.build.spiffs_start=0x100000 -# generic.menu.FlashSize.16M.build.spiffs_end=0x1000000 -# generic.menu.FlashSize.16M.build.spiffs_blocksize=8192 ############################################################## # ESP8285 chip has built-in 1MB flash diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp index 948221121..a824951e6 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp @@ -294,7 +294,7 @@ void ESP8266WiFiScanClass::_scanDone(void* result, int status) { int i = 0; bss_info* head = reinterpret_cast(result); - for(bss_info* it = head; it; it = it->next, ++i) + for(bss_info* it = head; it; it = STAILQ_NEXT(it, next), ++i) ; ESP8266WiFiScanClass::_scanCount = i; if(i == 0) { @@ -302,7 +302,7 @@ void ESP8266WiFiScanClass::_scanDone(void* result, int status) { } else { bss_info* copied_info = new bss_info[i]; i = 0; - for(bss_info* it = head; it; it = it->next, ++i) { + for(bss_info* it = head; it; it = STAILQ_NEXT(it, next), ++i) { memcpy(copied_info + i, it, sizeof(bss_info)); } diff --git a/tools/sdk/License b/tools/sdk/License index 93343e808..b16b9e26c 100644 --- a/tools/sdk/License +++ b/tools/sdk/License @@ -1,24 +1,20 @@ -ESPRSSIF MIT License +ESPRESSIF MIT License Copyright (c) 2015 -Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 only, in which case, it is free of charge, to any person obtaining a copy of this software and associated documentation files (the Software), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 only, in which case, it is free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - MIT ֤ - -Ȩ (c) 2015 <ϢƼϺ޹˾> - -֤ȨϢƼ ESP8266 ƷӦÿڴ£֤ȨκλøĵͳΪƵؾӪƵʹáơ޸ġϲ淢СɢȨȨȨЩȨͬʱ - -ижϵİȨȨ - -ṩûκȷ򰵺ĵڹԡʺijһض;ͷȨı֤ߺͰȨκ¾ʹԺͬʽȨʽκ⡢𺦻θ +乐鑫 MIT 许可证 +版权 (c) 2015 <乐鑫信息科技(上海)有限公司> +该许可证授权仅限于乐鑫信息科技 ESP8266 产品的应用开发。在此情况下,该许可证免费授权任何获得该软件及其相关文档(统称为“软件”)的人无限制地经营该软件,包括无限制的使用、复制、修改、合并、出版发行、散布、再授权、及贩售软件及软件副本的权利。被授权人在享受这些权利的同时,需服从下面的条件: +在软件和软件的所有副本中都必须包含以上的版权声明和授权声明。 +该软件按本来的样子提供,没有任何明确或暗含的担保,包括但不仅限于关于试销性、适合某一特定用途和非侵权的保证。作者和版权持有人在任何情况下均不就由软件或软件使用引起的以合同形式、民事侵权或其它方式提出的任何索赔、损害或其它责任负责。 diff --git a/tools/sdk/changelog.txt b/tools/sdk/changelog.txt deleted file mode 100644 index 1766ea614..000000000 --- a/tools/sdk/changelog.txt +++ /dev/null @@ -1,966 +0,0 @@ -ESP8266_NONOS_SDK_V2.0.0_16_07_19 Release Note ----------------------------------------------- -1. Updated libphy.a to 1055, fixed an issue of large current in Light-sleep. -2. Updated AT+ to 1.3.0: - 2.1 Added Light-sleep wakeup command, AT+WAKEUPGPIO; - 2.2 Fixed abnormal AT+CWDHCPS IP allocation; - 2.3 Added at_sdio demo under example directory. -3. Fixed probable system default when calling cur and def interfaces. -4. Fixed the issue of high current in Deep-sleep mode without disabling SPI first. -5. Fixed an issue where the SDK would crash when switching from AP to Station mode by calling wifi_set_phy_mode. -6. Updated secondary boot loader to v1.6: - 6.1 Supports AT + based on SDIO; - 6.2 Supports entering testing mode through GPIO. -7. Added support for MXIC Flash QIO mode. -8. Fixed exception caused during TCP handshake and retransmission. -9. Fixed issues in ESP-NOW. -10. Added ESP-PAIR (Simple-Pair) feature, for APIs please refer to ESP8266 SDK API Guide. -11. wpa2-enterprise time function derivation and time check disable can be set by users. -12. Support for PEAP/TTLS in wpa2-enterprise, for APIs please refer to ESP8266 SDK API Guide. -13. Added mqtt demos under examples directory. -14. Other issue fixes. -15. Resolved an issue that RF_Init_data sector may be broken in stress test. Provided a function user_rf_cal_sector_set which has to be added in application by software developer. More details about user_rf_cal_sector_set refer to documentation "2C-ESP8266__SDK__API Guide". (Resolved in ESP8266_NONOS_SDK_V1.5.4.1) -16. Fix a potential risk that will cause rf not work after external reset. (Resolved in ESP8266_NONOS_SDK_V1.5.4.1) -17. Add SDIO AT support. (Resolved in ESP8266_NONOS_SDK_V1.5.4.1) -18. Fix a potential bug in espconn. (Resolved in ESP8266_NONOS_SDK_V1.5.4.1) - - -ESP8266_NONOS_SDK_V1.5.4_16_05_20 Release Note ----------------------------------------------- -Optimization: -1. Updated libphy.a to version 972. -2. Updated libpp.a to version 10.1, revised issues about frequency offset and sleep mode. -3. Optimized IGMP function. -4. Optimized DNS function. -5. Optimized WPS function. -6. Optimized DHCP server function. -7. Optimized wifi_station_get_connect_status function. -8. Revised the issue that API system_adc_read and system_get_vdd33 may return wrong value. -9. Optimized API: -bool espconn_secure_ca_enable(uint8 level, uint32 flash_sector); -bool espconn_secure_cert_req_enable(uint8 level, uint32 flash_sector); - -Added APIs: -1. system_adc_read_fast: ADC fast sampling. -2. wifi_fpm_auto_sleep_set_in_null_mode: set whether enter modem-sleep mode or not when WiFi is in NULL_MODE. - -AT_V1.1 Release Note: -Optimization: -1. Optimized the behavior of writing Flash. -2. Optimized DHCP server function. -3. Updated command AT+SAVETRANSLINK to save domain name. - - -ESP8266_NONOS_SDK_V1.5.3_16_04_16 Release Note ----------------------------------------------- -Optimization: -1. Supported ISSI flash. -2. SmartConfig updated to version 2.5.4, solved the issue that AirKiss may fail in certain cases. -3. libphy.a updated to version 9281. -4. AT updated to version 1.00. -5. Added lwip_open_src_template_proj in ESP8266_NONOS_SDK\examples for open source LWIP. -6. Added peripheral_test in ESP8266_NONOS_SDK\examples. -7. Moved driver_lib folder to be as ESP8266_NONOS_SDK\driver_lib. -8. Added SPI driver, refer to ESP8266_NONOS_SDK\driver_lib\driver\spi_interface.c. -9. Optimized espconn. -10. Optimized DNS function. -11. Optimized mDNS function. -12. Optimized the disconnection when ESP8266 runs as TCP server. -13. Optimized DHCP server: after DHCP release, it will assign the first unused IP to next DHCP client. -14. Removed the limitation of freedom sending unencrypted beacon/probe req/probe resp. -15. Resolved the issue that wifi_station_get_connect_status returned incorrect status when some router restarted. -16. Revised the SSL server crash issue. - -Added APIs: -1. WPA2-Enterprise APIs -wifi_station_set_username : set user name for WPA2-Enterprise -wifi_station_clear_username : clear user name for WPA2-Enterprise -2. AT APIs -at_set_escape_character : set escape character for AT commands - -AT_V1.0 Release Note: -Optimization: -1. Revised the flash map of AT firmware in no bootmode, please download the bin files according to at\readme. -2. Revised the problem that AT+PING may fail when using some special router. -3. Optimized AT firmware when receiving TCP data with UART flow control. - -Added AT commands -1. AT+CIPDOMAIN: for DNS function. - - - -ESP8266_NONOS_SDK_V1.5.2_16_01_29 Release Note ----------------------------------------------- - -Resolved Issues (Bugs listed below apply to Bug Bounty Program): -1. Strange os_timer_arm behavior. - -Optimization: -1. Added SDIO slave driver. Developers are now able to implement AT commands based on SDIO interface by themselves. -2. Optimized SSL shakehand. -3. Upgraded second-level boot, enabled HSPI flash. -4. Added AirKiss library, -5. Updated sample code smart_config (esp_iot_sdk\examples\smart_config). -6. The 114th byte of esp_init_data_default.bin is modified to be 1. Please use the latest esp_init_data_default.bin. -7. Added sample code at_espconn (esp_iot_sdk\examples\at_espconn), showing how to transmit AT commands via the internet. - -Newly added APIs: -1. SDIO slave APIs -sdio_slave_init: initialize SDIO slave -sdio_load_data: upload data to SDIO buffer. -sdio_register_recv_cb: register Callbacks of data received by SDIO. -2. AirKiss APIs -airkiss_version: get version information of AirKiss. -airkiss_lan_recv: used to detect and analyze AirKiss data packets. -airkiss_lan_pack: used to analyze AirKiss data packets, and to organize response packets waiting to be responded. -3. AT UART simulation APIs -at_fake_uart_enable : enable AT UART simulation. -at_fake_uart_rx : AT UART RX for simulation. - -Release notes of AT_v0.60: -1. Added command AT+CWLAPOPT, which is used to config the attribute of the returned value of the command AT+CWLAP. -2. Added command AT+WPS, WPS supported. -3. Added command AT+MDNS, MDSN supported. -4. Added command AT+CWSTARTDISCOVER/AT+CWSTOPDISCOVER. AirKiss intranet detecting function is supported. -5. Optimized command AT+CIPSTART. The device can function as SSL client, and one SSL connection can be created at most. -6. Optimized AT+UART and related command. - -esp_iot_sdk_v1.5.1_16_01_08 Release Note -Resolved Issues (Bugs listed below apply to Bug Bounty Program): -1.espconn_abort may cause system crash. - -Optimization: -1.Optimize the data receiving process under TCP connection. -2.Optimize low MAC and increase stability of the software. -3.Optimize watchdog feeding process. -4.Optimize softAP working mode so that some stations can be easily connected. -5.Optimize station working mode, enabling connection even when the SSID of the AP has changed. -6.Optimize station working mode, and increase router��s compatibility during the connection process. -7.Optimize SSL shakehand. -8.Optimize espconn internal timer. -9.Optimize UDP transmission. -10.Improve the flash writing process. -11.Strenthen WPA2 security protocols. -12.Improve data sending ability. -13.Straighten the control capability of GPIO16 under light sleep mode. -14.boot.bin is upgrade to version 1.5, resolving boot failure when firmware is upgraded over the air (OTA). - -AT release note�� -1.Optimize the process of establishing TCP server via AT command. -2.Optimize UART-WiFi transparent transmission mode via AT command. - -Please be noted that with the release of ESP8266_NONOS_SDK_V1.5.0, AT firmware is too large to use 4Mbit Flash. Please choose flash with at least 8Mbit capacity. - -Please be noted that firmware upgrade over-the-air process is changed a bit. We will upgrade the latest AT firmware to Espressif Cloud server only after it has been tested and the overall performance is guaranteed. Users may not be able to use AT+CIUPDATE in ESP8266_NONOS_SDK_V1.5.0 and other more advanced versions. - - -esp_iot_sdk_v1.5.1_16_01_08 Release Note ----------------------------------------- - -Resolved Issues (Bugs listed below apply to Bug Bounty Program): -1.espconn_abort may cause system crash. - -Optimization: -1.Optimize the data receiving process under TCP connection. -2.Optimize low MAC and increase stability of the software. -3.Optimize watchdog feeding process. -4.Optimize softAP working mode so that some stations can be easily connected. -5.Optimize station working mode, enabling connection even when the SSID of the AP has changed. -6.Optimize station working mode, and increase router’s compatibility during the connection process. -7.Optimize SSL shakehand. -8.Optimize espconn internal timer. -9.Optimize UDP transmission. -10.Improve the flash writing process. -11.Strenthen WPA2 security protocols. -12.Improve data sending ability. -13.Straighten the control capability of GPIO16 under light sleep mode. -14.boot.bin is upgrade to version 1.5, resolving boot failure when firmware is upgraded over the air (OTA). - -AT release note: -1.Optimize the process of establishing TCP server via AT command. -2.Optimize UART-WiFi transparent transmission mode via AT command. - -Please be noted that with the release of NONOS SDK Version 1.5.0 (ESP8266_NONOS_SDK_V1.5.0), the space that AT commands occupies has increased to more than 4Mbit. Therefore, flash with 512Kbit capacity is no longer supported. Please choose flash with at least 8Mbit capacity. - -Please be noted that firmware upgrade over-the-air process is changed a bit. We will upgrade the latest firmware to Espressif Cloud server only after it has been tested and the overall performance is guaranteed. Users may not be able to download firmware encapsulated in ESP8266_NONOS_SDK_V1.5.0 and other more advanced versions. - - - -esp_iot_sdk_v1.5.0_15_12_15_p1 Release Note ----------------------------------------- -Here is a patch based on ESP8266_NONOS_SDK_V1.5.0 solved a problem that calling espconn_abort may cause unexpected reset. - -Sorry for the inconvenience. - -esp_iot_sdk_v1.5.0_15_11_27 Release Note ----------------------------------------- -Resolved Issues (Bugs listed below apply to Bug Bounty Program): -1. Returned value of system_get_rst_info is wrong. - -Optimization: -1. Optimize espconn_regist_recvcb for UDP transmission. -2. Print information will prompt errors if the input parameters of os_time_arm excess the upper limit. -3. Optimize memory management. -4. Optimize RF frequency offset. -5. Print information will prompt errors if the size of bin file is too large in OTA. -6. Optimize mDNS. -7. Revise UART output print error when powered on again after call system_uart_swap. -8. Revise errors during multiple UDP transmissions. -9. Revise the error when wifi_station_set_config_default is called and the same AP is set as before, while information cannot be stored in the Flash. -10. Optimize the error of packet loss during UDP transmission process under single station mode. -11. Add new function, WPA2 Enterprise is supported. -12. SmartConfig version is upgraded to V2.5.3. -13. Mesh version is upgraded to V0.2.3. -14. User application needs to add "-lcrypto" in LINKFLAGS_eagle.app.v6 of Makefile. - -Added APIs: -1.espconn_abort: bread TCP connection compulsively. -2.espconn_secure_delete: delete the SSL server when ESP8266 runs as SSL server. -3.wifi_station_set_cert_key: set certificate and private key for WPA2 Enterprise. -4.wifi_station_clear_cert_key: release the resource of connecting to WPA2 Enterprise AP, and clear the status. - - -AT_v0.51 release note: -1.Revise the error of the first byte in AT command when UART RX interrupt handler is implemented. -2.Revise the malfunction of display when AT+CWLAP is invoked to scan a specific AP. - - -esp_iot_sdk_v1.4.0_15_09_18 Release Note ----------------------------------------- -Resolved Issues(Bugs below are eligible for Bug Bounty Program): -1.Espconn may fail to download big chunk of data(FOTA). -2.Invalid TCP data sent issue. -3.Fatal exceptions occur when change WiFi mode in WiFi scan callback. -4.WiFi compatibility problem of special network card. -5.Deep sleep may appear high current under certain circumstances. - -Optimization: -1. Add a new method to check memory leaks (API : system_show_malloc). -2. Add print information when exception happens. -3. Resolve the problem of os_timer_disarm. -4. Optimize DHCP server, add API to set up the lease time of DHCP server. More details are in the “Added APIs”. -5. Add event “EVENT_STAMODE_DHCP_TIMEOUT” for the DHCP timeout handling mechanism. -6. Optimize handling of the reception of data and ZWP message. -7. Add new APIs to support SSL bidirectional authentication. More details are in the “Added APIs”. -8. Add new APIs to set up SSL certificates and encryption keys. API espconn_secure_set_default_certificate and espconn_secure_set_default_private_key should be called to set SSL certificate and secure key, if ESP8266 runs as SSL server. More details are in the “Added APIs”. -9. Optimize the process of FOTA (firmware upgrade through WiFi. -10. Optimize mDNS, and resolve the problem that in certain case the ESP8266 softAP can not work in the sta+AP mode. -11. Release mesh as a lib in the esp_iot_sdk, and do not provide SDK of the mesh version any more. -12. Optimize mesh’s handling of UDP packets. -13. Optimize checking of the validity of the mesh API’s parameters. -14. Add an API to set up the largest hop of mesh. For detailed information, go to mesh instructions. -15. Optimize the process of powering up and booting to shorten booting time by 20 ms. -16. Optimize the function of automatic frequency offset calibration. -17. Optimize the function of sniffer. -18. Strengthen reliability of the checking of beacon timeout. -19.Optimize Wi-Fi event mechanism, and add event “ EVENT_SOFTAPMODE_PROBEREQRECVED”, and reason for a failed connection. -20. Optimize Wi-Fi callback function and strengthen reliability of the software. -21. Add the function of data transferring between stations in the soft-AP mode. -22. Update SmartConfig to the version of 2.5.1. - -23.Update esp_init_data_default.bin. Please use the newest esp_init_data_default.bin when burning. - -24.Modify the espconn pointer in the receive callback of UDP. Parameters remote_ip and remote_port in it are the remote IP and port set by espconn_create. If users want to obtain IP and ports of the current sender, please call espconn_get_connection_info to get relevant information. - - -Added APIs: -1.System API -system_show_malloc : for checking memory leak, to print the memory usage. -2.DHCP server lease time related APIs -wifi_softap_set_dhcps_lease_time:set ESP8266 softAP DHCP server lease time. -wifi_softap_get_dhcps_lease_time:check ESP8266 softAP DHCP server lease time. -wifi_softap_reset_dhcps_lease_time:reset ESP8266 softAP DHCP server lease time which is 120 minutes by default. -3.wifi_station_dhcpc_set_maxtry:set the maximum number that ESP8266 station DHCP client will try to reconnect to the AP. -4.Force sleep APIs -wifi_fpm_open:enable force sleep function. -wifi_fpm_close:disable force sleep function. -wifi_fpm_do_sleep:force ESP8266 enter sleep mode. -wifi_fpm_do_wakeup:wake ESP8266 up from force sleep. -wifi_fpm_set_sleep_type:set sleep type of force sleep function. -wifi_fpm_get_sleep_type:get sleep type of force sleep function. -5.Send packet freedom APIs (to send user-define 802.11 packets) -wifi_register_send_pkt_freedom_cb:register a callback for sending user-define 802.11 packets. -wifi_unregister_send_pkt_freedom_cb:unregister the callback for sending user-define 802.11 packets. -wifi_send_pkt_freedom:send user-define 802.11 packet. -6.RFID LOCP APIs -wifi_rfid_locp_recv_open:enable RFID LOCP to receive WDS packets. -wifi_rfid_locp_recv_close:disable RFID LOCP. -wifi_register_rfid_locp_recv_cb:register a callback of receiving WDS packets. -wifi_unregister_rfid_locp_recv_cb:unregister the callback of receiving WDS packets. -7.Rate Control APIs -wifi_set_user_fixed_rate:set the fixed rate and mask of sending data from ESP8266 -wifi_get_user_fixed_rate:check the fixed rate and mask of ESP8266 -wifi_set_user_sup_rate:set the rate range supported by ESP8266 to limit the rate of sending packets from other devices. -wifi_set_user_rate_limit:limit the rate of sending data from ESP8266. -wifi_set_user_limit_rate_mask:set the interfaces of ESP8266 whose rate of sending packets is limited by wifi_set_user_rate_limit. -wifi_get_user_limit_rate_mask:get the interfaces of ESP8266 whose rate of sending packets is limited by wifi_set_user_rate_limit. -8.Espconn APIs -espconn_sendto:send UDP data. -espconn_secure_cert_req_enable:enable certificates verification function when ESP8266 runs as SSL client. -espconn_secure_cert_req_disable:disable certificates verification function when ESP8266 runs as SSL client. -espconn_secure_set_default_certificate:set the certificate when ESP8266 runs as SSL server. -espconn_secure_set_default_private_key:set the encryption key when ESP8266 runs as SSL server. -9.SmartConfig API -smartconfig_set_type: set the protocol type of SmartConfig. - - - -esp_iot_sdk_v1.3.0_15_08_10_p1 Release Note ----------------------------------------- - -Here is a patch based on esp_iot_sdk_v1.3.0 (non-OS SDK) resolved issue that if there are 2 connections, one is normal TCP connection, the other is SSL connection, it may cause memory leak. - -Download and unzip the attachment, replace the lib in esp_iot_sdk/lib folder. - -Please do not set the same priority for two different tasks when using system_os_task. - -Sorry for the inconvenience. - - -esp_iot_sdk_v1.3.0_15_08_08 Release Note ----------------------------------------- - -Resolved Issues(Bugs below are eligible for Bug Bounty Program): -1.Device can't connect to router after it gets ssid and password when using ESPTOUCH with router's ssid hidden. [冯智] -2.Format string of os_random can't be supported by atoi. [杨朝位] -3.Optimized os_printf seems to have an issue on 4 bytes aligned and other valuable suggestions. [Andrey Filimonov] -4.SmartConfig can’t get IP address after connected to router. [孙大明] - -Optimization: -1.Memory optimization to save 12KBytes. -2.Optimize RF calibration to short the booting time,more details in documentation "2A-ESP8266__IOT_SDK_User_Manual" chapter "Appendix". -3.Optimize Wi-Fi function to solve issue that ESP8266 may fail to connect to a special router. -4.Optimize software timer to solve the a connecting problem.Please do not call "os_delay_us" or "while" or "for" to occupy CPU more than 10 ms in timer callback. -5.Optimize system_get_rst_info to obtain more accurate information about the start-up. -6.Optimize function of Wi-Fi scanning to be more reliable. -7.Optimize function of changing Wi-Fi mode to be more reliable. -8.Optimize WPS to improve connectivity.And WPS does not support WEP, it will return status "WPS_CB_ST_WEP". -9.Optimize Wi-Fi function to solve softAP multiple stations DHCP issue. -10.Optimize TCP in LAST_ACK status. -11.Optimize TLS to support SHA256, SHA384, SHA512. -12.Memory optimization during TLS hand-shaking. -13.Optimize OTA funtion to download big chunk of data. -14.Add CRC32 in OTA function.Folder "tools" in esp_iot_sdk has to be updated, otherwise OTA will fail. -15.Optimize mDNS to support both softAP and station interfaces. -16.Optimize ESP-NOW, more details in "Add APIs" -17.Update SmartConfig to version 2.4.7 -18.Remove "-O2" from makefile. -19.Optimize header files to improve compatibility, will not affect compilation. - -Add APIs: -1.system_soft_wdt_feed : feed software watchdog -2.wifi_softap_get_dhcps_lease:get IP range of ESP8266 softAP DHCP server -3.ESP-NOW APIs -esp_now_set_kok: set the secure key to encrypt ESP-NOW communication key -esp_now_register_send_cb: register ESP-NOW send callback -esp_now_unregister_send_cb: unregister ESP-NOW send callback - -AT_v0.40 Release Note: -Note: For AT firmware to support FOTA, flash size need to be 1024KB or more than that. - -1.Add parameter in command "AT+CWSAP" to set the maximum number of connections allowed. - - - - -esp_iot_sdk_v1.2.0_15_07_13_p4 Release Note -------------------------------------------- - -Here is a patch of memory optimization based on SDK_v1.2.0 -1. It saved about 8KBytes memory. -2. It revised problem that change mode may cause memory leak. -3. Update SmartConfig to version 2.4.3 - -Please replace the lib in \esp_iot_sdk_v1.2.0\lib - -Thanks for your interest in Espressif Systems and ESP8266 ! - - - - -esp_iot_sdk_v1.2.0_15_07_09_p3 Release Note -------------------------------------------- - -Here is a patch based on SDK_v1.2.0 solved problem that if AP’s SSID is hidden,ESPTOUCH may get wrong BSSID of AP and cause connection fail. -Please replace the lib in \esp_iot_sdk_v1.2.0\lib - -Sorry for the inconvenience. - - - - -esp_iot_sdk_v1.2.0_15_07_09_p2 Release Note -------------------------------------------- - -Updated libssl again. To support SHA-256 and SHA-512. - -Thanks for your interest in Espressif Systems and ESP8266 ! - - - - -esp_iot_sdk_v1.2.0_15_07_08_p1 Release Note -------------------------------------------- - -Here is a patch based on SDK_v1.2.0 solved problem that abnormal SSL disconnection may cause reset. -Please replace the lib in \esp_iot_sdk_v1.2.0\lib - -Sorry for the inconvenience. - - - - -esp_iot_sdk_v1.2.0_15_07_03 Release Note -------------------------------------------- -Resolved Issues(Bugs below are eligible for Bug Bounty Program): -1.TLS server disconnect to ESP8266 may cause crash. [孙新虎] - -Optimization: -1.Update SmartConfig to version 2.4 , corresponding to ESPTOUCH APP v0.3.4 (https://github.com/EspressifApp/), delete parameter "sc_type type" in smartconfig_start, SmartConfig type can be got automatically. -2.Add parameter "sint16 freq_offset; " in structure "bss_info" to get AP's frequency offset. -3.Folder "ld" is updated, please use the latest one (\esp_iot_sdk_v1.2.0\ld ) -4.Add UDP transparent transmission example in documentation "4B-ESP8266__AT Command Examples" -5.Revise the scan issue that may cause Wi-Fi connection break. -6.Add ESP-NOW function, more details in "Add APIs" -7.Add WPS function,more details in "Add APIs" -8.Fixed a DNS fail issue with special router -9.Optimize espconn,revise issues below: -(1) enter sent callback late in UDP transmission -(2) TCP shakehand may fail issue -(3) SSL connection fail may cause crash -(4) optimize SSL error handler -10. Memory optimization - -Add APIs: -1.ESP-NOW APIs -esp_now_init: init ESP-NOW function -esp_now_deinit: deinit ESP-NOW function -esp_now_register_recv_cb: register ESP-NOW receive callback -esp_now_unregister_recv_cb: unregister ESP-NOW receive callback -esp_now_send: send ESP-NOW packet -esp_now_add_peer: add an ESP-NOW peer -esp_now_del_peer: delete an ESP-NOW peer -esp_now_set_self_role: set ESP-NOW role of device itself -esp_now_get_self_role: get ESP-NOW role of device itself -esp_now_set_peer_role: set ESP-NOW role about another device -esp_now_get_peer_role: get ESP-NOW role about another device -esp_now_set_peer_key: set ESP-NOW key of a device -esp_now_get_peer_key: get ESP-NOW key of a device - -2. WPS APIs -wifi_wps_enable : enable WPS function -wifi_wps_disable: disable WPS function -wifi_wps_start: start WPS communication -wifi_set_wps_cb: set WPS callback - -3.software watchdog APIs -system_soft_wdt_stop: stop software watchdog -system_soft_wdt_restart: restart software watchdog - -4.sntp_get_timezone: get SNTP timezone - -AT_v0.30 Release Note: -Note: For AT firmware to support FOTA, flash size need to be 1024KB or more than that. - -1.Command "AT+CWSTARTSMART" need not parameter any more, SmartConfig type can be got automatically. -2.AP's frequency offset can be got by command "AT+CWLAP" -3.Memory optimization - - - - -esp_iot_sdk_1.1.2_15_06_25_p2 Release Note -------------------------------------------- - -Here is a patch based on SDK_v1.1.2 solved problem of abnormal current during modem-sleep. -Please replace the lib in \esp_iot_sdk_v1.1.2\lib - -Sorry for the inconvenience. - -esp_iot_sdk_v1.1.2_15_06_24_p1.1 Release Note -------------------------------------------- - -Here is a patch for AT firmware based on SDK_v1.1.2 resolved issue that AT user parameter area was located in wrong address,it may cause WiFi configuration goes wrong. - -Please update to this new AT bin files and call "AT+RESTORE" to factory reset. If you call “AT+CIPUPDATE” to upgrade,please also call "AT+RESTORE" to factory reset once. - -“AT_bin_v0.25_1024+KB_flash_can_upgrade.zip” -- normal AT bin,runs with boot.bin,can FOTA upgrade,need to use 1024KB flash - -“AT_bin_v0.25_for_512KB_flash_cannot_upgrade.zip” -- for old version module which flash size is 512KB -eagle.flash.bin downloads to flash 0x00000 -eagle.irom0text.bin downloads to flash 0x40000 -can not FOTA upgrade,please don‘t call “AT+CIPUPDATE” - -"SDK_v1.1.2_AT_patch_01.zip" -- libs for users who need to compile their own AT firmware,replace libs in \esp_iot_sdk_v1.1.2\lib - -So sorry for the inconvenience. - -esp_iot_sdk_v1.1.2_15_06_16_p1 Release Note -------------------------------------------- -Here is a patch based on SDK_v1.1.2 resolved issue that "wifi_station_scan" cause loss of wireless connectivity. - -Please replace them in esp_iot_sdk/lib folder. - -Sorry for the inconvenience. - - - - -esp_iot_sdk_v1.1.2_15_06_12 Release Note -------------------------------------------- - -Optimization: -1. support certificate issuer verification for SSL -2. Update SPI driver, support overlap mode - -Add APIs: -1. wifi_station_set_hostname : set ESP8266 station DHCP hostname -2. wifi_station_get_hostname : get ESP8266 station DHCP hostname -3. spi_flash_set_read_func :set user specified reading SPI function on overlap mode -4. espconn_secure_ca_disable : disable SSL CA verify -5. espconn_secure_ca_enable : enable SSL CA verify - -Add Documentation: -1. SPI overlap introduction: \esp_iot_sdk\document, sorry that it has only Chinese version now,we will add English version of this documentation ASAP. -2. SSL introduction: \esp_iot_sdk\document - - - - -esp_iot_sdk_v1.1.1_15_06_05 Release Note -------------------------------------------- - -Resolved Issues(Bugs below are eligible for Bug Bounty Program): -1.Too short timer which set by os_arm_timer_us may cause crash. [Tommy] -2.Call os_malloc in low heap situation may cause crash. [MeneerThijs] -3.Memory leak issue when SSL connection fail. [孙新虎] - -Optimization: -1.Update JSON parser to handle with illegal parameter and illegal calling progress. -2.Add parameter of user_esp_platform_check_ip in user_websever.c which in IOT_Demo. -3.Update UART driver to solve the problem that if send data through UART while ESP8266 startup may cause UART invalid. -4.Update smartconfig to version 2.2, corresponding phone APP v0.3.2. And update the description and example of smartconfig_start in document "2C_ESP8266__Programming Guide" -5.Update code in iram to solve the problem that space for text is not enough. -6.Update PWM driver and provide libpwm.a in esp_iot_sdk, update PWM APIs in "2C_ESP8266__Programming Guide", more details in "Added APIs" below. -7.Revised issue that multicast may fail in ESP8266 softAP mode. -8.Update folder "driver",add folder "driver_lib" in \esp_iot_sdk\examples , add "hw_timer.c" about frc1 hardware timer. -9.Remove useless driver code in IOT_Demo -10.Update IOT_Demo to use the latest PWM driver in light demo. -11.Provide liblwip_536.a of which MSS size is 536 -12.Revised issue that boot may fail when 80Mhz SPI clock selected -13.Update esp_init_data_default.bin about RF option in \esp_iot_sdk\bin - -Added APIs: -1.PWM APIs: -Updated: pwm_init,add parameter to set PWM channel and GPIO pin -Added: -(1)get_pwm_version:get version information of PWM driver -(2)pwm_set_period:set PWM period -(3)pwm_get_period:get PWM period -Deleted: -(1)pwm_set_freq:set PWM frequency -(2)pwm_get_freq:get PWM frequency -2.Read/write flash with protection -(1)system_param_save_with_protect:write data into flash with backup protection -(2)system_param_load:read data which saved into flash with backup protection -3.system_get_rst_info:get information about current startup,it is a normal startup or watch dog reset -4.at_response:set AT response -5.at_register_response_func:register a callback for user-define AT response. -6.Update document "2C_ESP8266__Programming Guide" to add description of interrupt definition in ets_sys.h - -AT_v0.25 Release Note: -Note: For AT firmware to support FOTA, flash size need to be 1024KB or more than that. -Optimization: -1.Add parameter about UDP local port in command "AT+SAVETRANSLINK" - -Added AT command: -1.AT+CIPDINFO:set configuration whether show remote IP and remote port with “+IPD” or not - - - -esp_iot_sdk_v1.1.0_15_05_27_p1 Release Note -------------------------------------------- - -Here is a patch based on SDK_v1.1.0 resolved issues below: -1. SDK 1.1.0 may boot fail if SPI Flash speed is 80MHz. -2. Memory Leak in libssl when SSL connection fail. -3. Update smartconfig, please using it with the latest Espressif APP https://github.com/EspressifApp - -Sorry for the inconvenience. - -esp_iot_sdk_v1.1.0_15_05_22 Release Note ----------------------------------------- -Resolved Issues(Bugs below are eligible for Bug Bounty Program): -1.Predictable TLS random values leads to insecure connections [projectgus] -2.Connection problem in softAP+station mode.[智捷通] -3.Low heap cause of reset when connect using SSL. [TuanPM] -4.Smart config issue [bigbear] - -Document "2C_ESP8266__Programming Guide" updates: -1.Update Demo code of rtc timer in appendix, and rtc timer will return to zero after deep-sleep wake up. [andrew] -2.Add "3.espconn callback" in appendix to introduce espconn callbacks and the pointer may be different in different callback.[nagverma] -3.Add RF description in “2.Overview”,if RF is disabled,ESP8266 station and soft-AP are both disabled.[yiaiguo] -4.Revise name of API "wifi_softap_set_dhcps_offer_option" [ryan] - -Optimization: -1.Solving the problem that some Wi-Fi events may be missing during test. -2.UART Wi-Fi passthrough of UDP maybe change to oneway. [orgmar] -3.Optimized FOTA to make upgrade faster -4.ESP8266 soft-AP can connected to 8 stations at most, softap_config.max_connection default is 4 -5.ESP8266 station will connect to the stronger WiFi signal, if there are several APs sharing the same SSID.[stefan] -6.Add 1024KB+1024KB flash map which need boot_v1.4+, more details in document "2A-ESP8266_IOT_SDK_User_Manual" -7.Optimized PWM driver -8.Revised structure mdns_info to support 10 groups of text data. -9.Add user_rf_pre_init in user_main.c, user can set configuration of RF in it. - -Added APIs: -1.sntp_set_timezone: set SNTP time zone. -2.espconn_dns_setserver : set default DNS server -3.system_uart_de_swap : disable UART0 swap -4.system_get_flash_size_map: get flash size and flash map -5.system_phy_set_max_tpw : set maximum RF TX power -6.system_phy_set_tpw_via_vdd33 :set RF TX power according to VDD33 -7.system_phy_set_rfoption : set RF option -8.wifi_station_get_rssi:get rssi of AP which ESP8266 station connected to   -9.wifi_softap_get_station_num :get number count of stations connected to ESP8266 soft-AP - -AT_v0.24 Release Note: -Note: For AT firmware to support FOTA, flash size need to be 1024KB or more than that. -Optimization: -1.Disable data echo of command "AT+CIPSEND" -2.Optimized "AT+CWJAP?" to get channel and rssi -3.ESP8266 station IP can only be got and inquiried after ESP8266 station connected to AP - -Added AT command: -1.AT+RFPOWER :set maximum RF TX power -2.AT+RFVDD : set RF TX power according to VDD33 - - -自从乐鑫信息科技于 2015-03-20 启动 Bug 赏金计划以来,我们收到了一些重要问题反馈及建议,感谢世界各地的开发者对 ESP8266的关注,推动我们的软件更进一步,技术支持团队也得到迅速地成长。我们将在如下发布日志中点名感谢您的帮助。 - -esp_iot_sdk_v1.1.0_15_05_22 Release Note -修正问题(符合乐鑫 Bug 赏金计划): -1.随机值的生成可以被预测,完善随机数的产生机制 [projectgus] -2.softAP+station 模式下,可能连接 ESP8266 soft-AP 失败 [智捷通] -3.内存不足导致 SSL 连接时重启. [TuanPM] -4.Smart config 相关问题 [bigbear] - -文档 "2C_ESP8266__Programming Guide" 更新: -1.更新附录中的 RTC 示例代码,RTC 时钟会因 deep-sleep 清零. [andrew] -2.附录新增 "3.espconn callback"介绍 espconn callbacks,不同的 espconn callback 中 espconn 结构体指针可能不同.[nagverma] -3.“2.概述”中增加 RF 设置的说明,如果不打开 RF ,ESP8266 station 和 soft-AP 均失效。[yiaiguo] -4.修正 API 名称 "wifi_softap_set_dhcps_offer_option" [ryan] - -优化: -1.解决特定测试环境下某些 Wi-Fi events 可能缺失的问题。 -2.UDP 透传可能变成单向传输的相关问题 [orgmar] -3.优化 FOTA 的底层实现,加快升级速度 -4.ESP8266 soft-AP 最多可连接 8 个 station, 默认最大连接个数为 4 -5.当多个 AP 的 SSID password相同时,ESP8266 station 默认连接信号最强的 AP。[stefan] -6.更新 boot_v1.4+ 及编译文件,支持 1024KB+1024KB flash map , flash map 的详细介绍见文档 "2A-ESP8266_IOT_SDK_User_Manual" -7.优化 PWM driver -8.优化 structure mdns_info 支持 10 组 text data. -9.在 user_main.c 中新增 user_rf_pre_init , 用户可在 user_rf_pre_init 中调用 system_phy_set_rfoption 配置 RF 初始化. - -新增 APIs: -1.sntp_set_timezone: SNTP 设置时区 -2.espconn_dns_setserver : 设置默认 DNS server -3.system_uart_de_swap : 取消 UART0 转换 -4.system_get_flash_size_map: 查询 flash size 和 flash map -5.system_phy_set_max_tpw : 设置 RF TX power 最大值 -6.system_phy_set_tpw_via_vdd33 :根据 VDD33 设置 RF TX power -7.system_phy_set_rfoption : 设置 RF -8.wifi_station_get_rssi:查询 ESP8266 station 连接的 AP 的信号强度   -9.wifi_softap_get_station_num :查询连接到 ESP8266 soft-AP 的 station 数目 - -AT_v0.24 Release Note: -注意:运行 AT 固件,支持云端升级,请使用 1024KB 或以上容量的 flash - -优化: -1."AT+CIPSEND" 发送数据时,数据不回显 -2.优化"AT+CWJAP?" 可获得信道和信号强度 -3.必须在 ESP8266 station 连接到 AP 后,才能查询到 ESP8266 station IP - -新增 AT command: -1.AT+RFPOWER :设置 RF TX power 最大值 -2.AT+RFVDD : 根据 VDD33 设置 RF TX power - -Thanks for your interest in ESP8266 ! - -esp_iot_sdk_v1.0.1_15_05_04_p1 -------------------------------------------- -Here is a patch for station+softAP issue that users may have, based on SDK_v1.0.1, -solved problem that connect to ESP8266 softAP may fail in station+softAP mode. - -Sorry for the inconvenience. - -esp_iot_sdk_v1.0.1_15_04_24 Release Note -------------------------------------------- - -Resolved Issues(Bugs below are eligible for Bug Bounty Program): -1. SSL connection may fail if SSL packet size larger than 2kBytes [PeteW ] -2. UDP remote IP to be 0.0.0.0 may cause reset [Jerry S] -3. Optimize wifi_get_ip_info to fix loss of wireless connectivity problem -4. Air-Kiss restart [Orgmar] - -Optimization: -1. Optimized IOT_Espressif_EspTouch.APK (apply for access from Espressif) for improved compatibility. [???] -2. TCP server can not open again immediately with the same port [624908539] -3. Update UART driver for parity bit value may be incorrect [1062583993] -4. Add define of “ICACHE_RODATA_ATTR” for Symbol 'ICACHE_RODATA_ATTR' could not be resolved. [???] -5. Add API wifi_softap_dhcps_set_offer_option to enable/disable ESP8266 softAP DHCP server default gateway. [xyz769] -6. AT register_uart_rx_intr may enter callback twice. [???] -7.optimize document that WPA password length range : 8 ~ 64 bytes [785057041] -8. ESP8266 softAP DHCP server record 8 DHCP client's IP at most [ygjeon] -9. To set static IP (wifi_set_ip_info) has to disable DHCP first(wifi_softap_dhcps_stop or wifi_station_dhcpc_stop) -10.Add example of wifi_softap_set_dhcps_lease -11. smartconfig_start can only be called in ESP8266 station mode - -Added APIs: -1. Wi-Fi related APIs: -wifi_station_set_reconnect_policy: enable/disable reconnect when ESP8266 disconnect from router,default to be enable reconnect. -wifi_set_event_handler_cb: set event handler of ESP8266 softAP or station status change. -wifi_softap_dhcps_set_offer_option: enable/disable get router information from ESP8266 softAP, default to be enable. -2. SNTP APIs: -sntp_get_current_timestamp: get current timestamp from Jan 01, 1970, 00:00 (GMT) -sntp_get_real_time: char,get real time (GTM + 8 time zone) -sntp_init: initialize SNTP -sntp_stop: stop SNTP -sntp_setserver: set SNTP server by IP -sntp_getserver: get SNTP server IP -sntp_setservername: set SNTP server by domain name -sntp_getservername: get domain name of SNTP server set by sntp_setservername -3. MDNS APIs: -espconn_mdns_init: initialize mDNS -espconn_mdns_close: close mDNS -espconn_mdns_server_register: register mDNS server -espconn_mdns_server_unregister: unregister mDNS server -espconn_mdns_get_servername: get mDNS server name -espconn_mdns_set_servername: set mDNS server name -espconn_mdns_set_hostname: get mDNS host name -espconn_mdns_get_hostname: set mDNS host name -espconn_mdns_disable: disable mDNS -espconn_mdns_enable: endisable mDNS - -AT_v0.23 Release Note: -Optimized: -1.AT+CWJAP add parameter "bssid", for several APs may have the same SSID - -New AT commands: -1. AT+CIPSENDBUF: write data into TCP-send-buffer; non-blocking. Background task automatically handles transmission. Has much higher throughput. -2. AT+CIPBUFRESET: resets segment count in TCP-send-buffer -3. AT+CIPBUFSTATUS: checks status of TCP-send-buffer -4. AT+CIPCHECKSEGID: checks if a specific segment in TCP-send-buffer has sent successfully - - - -esp_iot_sdk_v1.0.1_b2_15_04_10 release note -------------------------------------------- - -Fix bugs: -1.Call espconn_sent to send UDP packet in user_init cause reset.[BBP#2 reporter (????)] -2.UART & FlowControl issue: send data to FIFO without CTS flag will cause WDT [BBP#11 reporter (pvxx)] -3.SSL issue,add an API (espconn_secure_set_size) to set SSL buffer size [BBP#29 reporter (PeteW)] -4.UDP broadcast issue in WEP - -Optimize: -1.Add more details about measure ADC & VDD3P3 in appendix of document“2C-SDK-Espressif IoT SDK Programming Guide”[BBP#15 reporter (DarkByte)] -2.Can not do any WiFi related operation if WiFi mode is in NULL_MODE [BBP#23 reporter (hao.wang)] -3.start_ip and end_ip won't change through API wifi_softap_set_dhcps_lease [BBP#37 reporter (glb)] -4.AT get into busy state [BBP#35 reporter (tommy_hk)] -5.ssid + password length limitation when using AirKiss [BBP#45 reporter (zhchbin)] - -Add APIs: -1.espconn_secure_set_size:set buffer size for SSL packet -2.espconn_secure_get_size:get SSL buffer size -3.at_register_uart_rx_intr:set UART0 to be used by user or AT commands - -Add AT command: -1.AT+SLEEP: set ESP8266 sleep mode - -esp_iot_sdk_v1.0.1_b1_15_04_02 Release note -------------------------------------------- - -Fix bugs: -1. Connect to ESP8266 softAP fail after SmartConfig; -2. SmartConfig loses one bit of SSID - -Optimize: -1. espconn_set_opt: set configuration of TCP connection,add parameter for TCP keep-alive - -Add APIs: -1. espconn_clear_opt: clear configuration of TCP connection -2. espconn_set_keepalive: set configuration of TCP keep-alive to detect if TCP connection broke -3. espconn_get_keepalive: get configuration of TCP keep-alive - -AT_v0.23_b1 release note -Note: AT added some functions so flash size need to be 1024KB or more than that. - -Fix bug: -1. Always "busy" if TCP connection abnormally broke during AT+CIPSEND - -Optimize: -1. Add UDP transparent transmission -2. Optimize the initial value of AT+CWDHCP? -3. Add TCP keep-alive function in AT+CIPSTART - -Add AT command: -1. Add AT+CIPSENDEX which support quit from sending mode by "\0" (so an useful "\0" need to be "\\0") - -esp_iot_sdk_v1.0.0_15_03_20 Release Note ----------------------------------------- - -Optimize: -1. Optimize smartconfig to version v1.0; Please don't call any other APIs during SmartConfig. -2. Optimize AT to version 0.22.0.0; -3. Optimize the protection of system parameters, and add error-check about it; -4. Optimize beacon delay of ESP8266 softAP; -5. Optimize boot to version 1.3(b3); - - Add API system_restart_enhance: for factory test, support to load and run program in any specific address; - - Add APIs to get boot version and start address of current user bin; - - Fix compatibility problem of dual flash; -6. Optimize sniffer, structure sniffer_buf changed, please refer to document; -7. Optimize espconn; -8. Optimize pwm; -9. Other optimize to make the software more reliable; - -Add APIs: -1. system_update_cpu_freq: change CPU frequency; -2. wifi_promiscuous_set_mac: set a mac address filter during sniffer; -3. wifi_set_broadcast_if : set which interface will UDP broadcast send from; - -Fix bugs: -1. Interrupt during flash erasing will cause wdt reset; -2. Read/write rtc memory; -3. If router disconnect to ESP8266, ESP8266 won't reconnect; -4. Connect to router which hid its SSID - -AT_v0.22 release note - -Fix bug: -1. Wrong return value of AT+CIPSTATUS; -2. wdt rest after "0,CONNECT FAIL"; - -Add AT commands: -1. Change AT commands of which configuration will store into flash to two kinds: - XXX_CUR: current, only set configuration won't save it into Flash; - XXX_DEF: default, set configuration and save it to Flash -2. Add SmartConfig in AT: - AT+CWSTARTSMART/AT+CWSTOPSMART: start / stop SmartConfig - Notice: please refer to the document, call "AT+CWSTOPSMART" to stop SmartConfig first since "AT+CWSTARTSMART", then call other AT commands. Don't call any other AT commands during SmartConfig. -2. AT+SAVETRANSLINK: save transparent transmission link to Flash; - Note:AT+CIPMODE=1 set to enter transparent transmission mode, won't save to Flash. - - -Add AT APIs -1. at_customLinkMax: set the max link that allowed, most can be 10; if you want to set it, please set it before at_init; if you didn't set it, the max link allowed is 5 by default. -2. at_enter_special_state/ at_leave_special_state:Enter/leave AT processing state. In processing state, AT core will return "busy" for any further AT commands. -3. at_set_custom_info:set custom version information of AT which can be got by AT+GMR; -4. at_get_version:get version information of AT lib . - -Optimize -1. Add UDP remote ip and remote port is allowed to be parameters of "AT+CIPSEND" -2. Move "AT+CIUPDATE" from lib to AT "demo\esp_iot_sdk\examples\at", AT demo shows how to upgrade AT firmware from a local server. Notice that AT upgrade the bin files name have to be "user1.bin" and "user2.bin". -3. Optimize "AT+CIPSTA", add gateway and netmask as parameters -4. Optimize transparent transmission. - -esp_iot_sdk_v0.9.5_15_01_22 Release Note ----------------------------------------- - -AT becomes a lib attached to esp_iot_sdk, programming guide in "document" shows APIs for user to define their own AT commands, AT bin files are in \esp_iot_sdk\bin\at - -Fix bugs: -1. Incorrect status got by API : wifi_station_get_connect_status; -2. Sniffer can not quit without restart; -3. wifi_station_ap_change always return true; -4. TCP connection issues - -Add APIs: -1. system_deep_sleep_set_option: set what the chip will do when deep-sleep wake up; -2. wifi_status_led_uninstall; -3. wifi_station_ap_get_info: get information of AP that ESP8266 station connected. -4. wifi_station_dhcpc_status & wifi_softap_dhcps_status : get DHCP status -5. smart config APIs, more details in documents. -6. add beacon_interval parameter in struct softap_config -7. espconn_recv_hold and espconn_recv_unhold to block TCP receiving data and unblock it. -8. AT APIs to let user define their own AT, more details in documents. - -Optimize: -1. light sleep, modem sleep, deep sleep -2. compile method: ./gen_misc.sh, then follow the tips and steps. -3. when no buffer for os_malloc, return NULL instead of malloc assert. -4. users can enable #define USE_OPTIMIZE_PRINTF in user_config.h to remove strings of os_printf from ram to irom -5. faster the re-connection of ESP8266 station to router after deep-sleep. -6. update to boot v1.2 to support new format user.bin; -7. update ARP -8. update SSL -9. revised system_deep_sleep,system_deep_sleep(0),set no wake up timer,connect a GPIO to pin RST, the chip will wake up by a falling-edge on pin RST - -esp_iot_sdk_v0.9.4_14_12_19 Release Note ----------------------------------------- - -1. Update sniffer to support capture HT20/HT40 packet; -2. Add APIs to set and get sleep type; -3. Add APIs to get version info of sdk, delete version.h; -4. RAW in LWIP is open source now, add API of function ping; -5. Update spi driver; -6. Optimize APIs related to espconn; -7. Fix some bugs to make the software more reliable; - -Known Issue: -1. exception of small probability occured while recving multi-client data in softap -2. restart of small probability occured while tcp client reconnecting - -So sorry that we have some known issues here, we will solve it ASAP. - -esp_iot_sdk_v0.9.3_14_11_21 Release Note ----------------------------------------- - -1. Add license documentation of ESPRESSIF SDK -2. Add APIs to read and write RTC memory, and APIs to get RTC time. -3. Add APIs to swap UART0 -4. Add API to read ADC, delete adc.c. -5. Add API to read spi flash id -6. Revise struct station_config, add bssid parameters to distinguish different AP with same ssid ; - Note: if station_config.bssid_set == 1 , station_config.bssid has to be set, or connection will fail. So in general, station_config.bssid_set need to be 0. -7. Revise struct scan_config, add scan_config.show_hidden to set whether scan APs which ssid is hidden or not; not scan, set scan_config.show_hidden to be 0. - Add bss_info.is_hidden in struct bss_info to show if this APTs ssid is hidden. -8. Revise struct softap_config, add softap_config.ssid_len. If softap_config.ssid_len == 0, check ssid till find a termination characters; otherwise it depends on softap_config.ssid_len. -9. Revise API "wifi_softap_set_config" to take effect immediately, needs not restart to make the configuration enable any more. -10. Add APIs to set and get physical layer mode(802.11b/g/n) -11. Add APIs to enable and disable DHCP server of ESP8266 softAP -12. Add APIs to enable and disable DHCP client of ESP8266 station -13. Add API to set range of ip address that get from DHCP server -14. Add APIs to set and get how many TCP connections allowed at max. -15. Add APIs to set and get how many TCP clients allowed at max to a TCP server. -16. Revise "wifi_set_ip_info" and "wifi_set_macaddr" to take effect immediately. -17. Fix some bugs to make the software more reliable. - -ESP8266EX: Fix A Potential Error For UART RX in esp_iot_sdk_v0.9.2_14_10_24 ---------------------------------------------------------------------------- - -The previously released SDK for ESP8266EX inadvertently introduced a bug that may cause a little packet loss when transferring packet by Uart RX. -So for now,I will release the patch for this bug.Please download the patch from the attachment,and refer to the following steps: -Following Commands: -1. REPLACE LIBPHY.A IN SDK/LIB -2. ADD LIBPP.A TO SDK/LIB -3. MODIFY SDK/APP/MAKEFILE -4. ADD "-lpp \" AS BELOW --lgcc --lhal --lpp --lphy --lnet80211 --llwip --lwpa --lmain --lssc --lssl - -esp_iot_sdk_v0.9.2_14_10_24 Release Note ----------------------------------------- - -Initial version for public, can be compiled on both windows and lubuntu. diff --git a/tools/sdk/include/at_custom.h b/tools/sdk/include/at_custom.h index e856ee79c..fcf3de61d 100644 --- a/tools/sdk/include/at_custom.h +++ b/tools/sdk/include/at_custom.h @@ -1,21 +1,25 @@ - /* - * custom_at.h + * ESPRESSIF MIT License * - * This file is part of Espressif's AT+ command set program. - * Copyright (C) 2013 - 2016, Espressif Systems + * Copyright (c) 2016 * - * This program is free software: you can redistribute it and/or modify - * it under the terms of version 3 of the GNU General Public License as - * published by the Free Software Foundation. + * Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 only, in which case, + * it is free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the Software is furnished + * to do so, subject to the following conditions: * - * This program 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 General Public License for more details. + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . */ #ifndef CUSTOM_AT_H_ diff --git a/tools/sdk/include/c_types.h b/tools/sdk/include/c_types.h index 6e55246f2..e4a1e8e12 100644 --- a/tools/sdk/include/c_types.h +++ b/tools/sdk/include/c_types.h @@ -1,5 +1,24 @@ /* - * Copyright (c) 2010 - 2011 Espressif System + * ESPRESSIF MIT License + * + * Copyright (c) 2016 + * + * Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 only, in which case, + * it is free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the Software is furnished + * to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ diff --git a/tools/sdk/include/eagle_soc.h b/tools/sdk/include/eagle_soc.h index 2a77e188b..c572abc66 100644 --- a/tools/sdk/include/eagle_soc.h +++ b/tools/sdk/include/eagle_soc.h @@ -1,5 +1,24 @@ /* - * Copyright (c) Espressif System 2010 - 2012 + * ESPRESSIF MIT License + * + * Copyright (c) 2016 + * + * Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 only, in which case, + * it is free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the Software is furnished + * to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ @@ -305,10 +324,11 @@ #define PIN_PULLUP_DIS(PIN_NAME) CLEAR_PERI_REG_MASK(PIN_NAME, PERIPHS_IO_MUX_PULLUP) #define PIN_PULLUP_EN(PIN_NAME) SET_PERI_REG_MASK(PIN_NAME, PERIPHS_IO_MUX_PULLUP) + #define PIN_FUNC_SELECT(PIN_NAME, FUNC) do { \ WRITE_PERI_REG(PIN_NAME, \ - READ_PERI_REG(PIN_NAME) \ - & (~(PERIPHS_IO_MUX_FUNC< + * + * Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 only, in which case, + * it is free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the Software is furnished + * to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + #ifndef __ESPCONN_H__ #define __ESPCONN_H__ @@ -709,7 +733,14 @@ void espconn_mdns_enable(void); * dnsserver -- IP address of the DNS server to set * Returns : none *******************************************************************************/ -void espconn_dns_setserver(char numdns, ip_addr_t *dnsserver); - +void espconn_dns_setserver(uint8 numdns, ip_addr_t *dnsserver); +/****************************************************************************** + * FunctionName : espconn_dns_getserver + * Description : get dns server. + * Parameters : numdns -- the index of the DNS server, must + * be < DNS_MAX_SERVERS = 2 + * Returns : dnsserver -- IP address of the DNS server to set +*******************************************************************************/ +ip_addr_t espconn_dns_getserver(uint8 numdns); #endif diff --git a/tools/sdk/include/espnow.h b/tools/sdk/include/espnow.h index bd0ebc42b..220412c0a 100644 --- a/tools/sdk/include/espnow.h +++ b/tools/sdk/include/espnow.h @@ -1,5 +1,24 @@ /* - * Copyright (C) 2015 -2018 Espressif System + * ESPRESSIF MIT License + * + * Copyright (c) 2016 + * + * Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 only, in which case, + * it is free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the Software is furnished + * to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ diff --git a/tools/sdk/include/ets_sys.h b/tools/sdk/include/ets_sys.h index 8eb64b343..e0da028d6 100644 --- a/tools/sdk/include/ets_sys.h +++ b/tools/sdk/include/ets_sys.h @@ -1,7 +1,24 @@ /* - * copyright (c) 2008 - 2011 Espressif System + * ESPRESSIF MIT License * - * Define user specified Event signals and Task priorities here + * Copyright (c) 2016 + * + * Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 only, in which case, + * it is free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the Software is furnished + * to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ @@ -51,6 +68,14 @@ typedef void (*int_handler_t)(void*); #define ETS_WDT_INUM 8 #define ETS_FRC_TIMER1_INUM 9 /* use edge*/ +typedef void (* ets_isr_t)(void *); + +void ets_intr_lock(void); +void ets_intr_unlock(void); +void ets_isr_attach(int i, ets_isr_t func, void *arg); + +void NmiTimSetFunc(void (*func)(void)); + #define ETS_INTR_LOCK() \ ets_intr_lock() @@ -176,7 +201,6 @@ int ets_sprintf(char *str, const char *format, ...) __attribute__ ((format (pri int os_snprintf(char *str, size_t size, const char *format, ...) __attribute__ ((format (printf, 3, 4))); int ets_printf(const char *format, ...) __attribute__ ((format (printf, 1, 2))); void ets_install_putc1(void* routine); -void uart_div_modify(int no, int freq); void ets_isr_mask(int intr); void ets_isr_unmask(int intr); void ets_isr_attach(int intr, int_handler_t handler, void *arg); diff --git a/tools/sdk/include/gpio.h b/tools/sdk/include/gpio.h index abcc4bed3..155bbabb8 100644 --- a/tools/sdk/include/gpio.h +++ b/tools/sdk/include/gpio.h @@ -1,5 +1,24 @@ /* - * copyright (c) Espressif System 2010 + * ESPRESSIF MIT License + * + * Copyright (c) 2016 + * + * Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 only, in which case, + * it is free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the Software is furnished + * to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ diff --git a/tools/sdk/include/ip_addr.h b/tools/sdk/include/ip_addr.h index de8a61d16..2f2767e7d 100644 --- a/tools/sdk/include/ip_addr.h +++ b/tools/sdk/include/ip_addr.h @@ -1,3 +1,27 @@ +/* + * ESPRESSIF MIT License + * + * Copyright (c) 2016 + * + * Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 only, in which case, + * it is free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the Software is furnished + * to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + #ifndef __IP_ADDR_H__ #define __IP_ADDR_H__ @@ -53,10 +77,11 @@ struct ip_info { #define IPADDR_ANY ((uint32)0x00000000UL) uint32 ipaddr_addr(const char *cp); -#define IP2STR(addr) (uint8_t)(addr & 0xFF), (uint8_t)((addr >> 8) & 0xFF), (uint8_t)((addr >> 16) & 0xFF), (uint8_t)((addr >> 24) & 0xFF) +#define IP2STR(ipaddr) ip4_addr1_16(ipaddr), \ + ip4_addr2_16(ipaddr), \ + ip4_addr3_16(ipaddr), \ + ip4_addr4_16(ipaddr) + #define IPSTR "%d.%d.%d.%d" -#define MAC2STR(mac) (uint8_t)mac[0], (uint8_t)mac[1], (uint8_t)mac[2], (uint8_t)mac[3], (uint8_t)mac[4], (uint8_t)mac[5] -#define MACSTR "%02x:%02x:%02x:%02x:%02x:%02x" - #endif /* __IP_ADDR_H__ */ diff --git a/tools/sdk/include/mem.h b/tools/sdk/include/mem.h index 78388a366..b06c00df3 100644 --- a/tools/sdk/include/mem.h +++ b/tools/sdk/include/mem.h @@ -1,3 +1,27 @@ +/* + * ESPRESSIF MIT License + * + * Copyright (c) 2016 + * + * Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 only, in which case, + * it is free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the Software is furnished + * to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + #ifndef __MEM_H__ #define __MEM_H__ diff --git a/tools/sdk/include/mesh.h b/tools/sdk/include/mesh.h index d00a7c51e..b55376c39 100644 --- a/tools/sdk/include/mesh.h +++ b/tools/sdk/include/mesh.h @@ -1,5 +1,5 @@ /* - * ESPRSSIF MIT License + * ESPRESSIF MIT License * * Copyright (c) 2015 * diff --git a/tools/sdk/include/os_type.h b/tools/sdk/include/os_type.h index a9901061a..9e43472bb 100644 --- a/tools/sdk/include/os_type.h +++ b/tools/sdk/include/os_type.h @@ -1,9 +1,27 @@ /* - * copyright (c) Espressif System 2010 + * ESPRESSIF MIT License * - * mapping to ETS structures + * Copyright (c) 2016 + * + * Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 only, in which case, + * it is free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the Software is furnished + * to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ + #ifndef _OS_TYPES_H_ #define _OS_TYPES_H_ diff --git a/tools/sdk/include/osapi.h b/tools/sdk/include/osapi.h index 6e10759a3..147e2f53f 100644 --- a/tools/sdk/include/osapi.h +++ b/tools/sdk/include/osapi.h @@ -1,5 +1,25 @@ /* - * Copyright (c) 2010 Espressif System + * ESPRESSIF MIT License + * + * Copyright (c) 2016 + * + * Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 only, in which case, + * it is free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the Software is furnished + * to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * */ #ifndef _OSAPI_H_ @@ -44,13 +64,13 @@ #define os_sprintf ets_sprintf #define os_update_cpu_frequency ets_update_cpu_frequency +extern int os_printf_plus(const char * format, ...) __attribute__ ((format (printf, 1, 2))); #ifdef USE_OPTIMIZE_PRINTF #define os_printf(fmt, ...) do { \ static const char flash_str[] ICACHE_RODATA_ATTR STORE_ATTR = fmt; \ os_printf_plus(flash_str, ##__VA_ARGS__); \ } while(0) #else -extern int os_printf_plus(const char * format, ...) __attribute__ ((format (printf, 1, 2))); #define os_printf os_printf_plus #endif diff --git a/tools/sdk/include/ping.h b/tools/sdk/include/ping.h index 4ecd032b8..6537a7a46 100644 --- a/tools/sdk/include/ping.h +++ b/tools/sdk/include/ping.h @@ -1,3 +1,27 @@ +/* + * ESPRESSIF MIT License + * + * Copyright (c) 2016 + * + * Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 only, in which case, + * it is free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the Software is furnished + * to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + #ifndef __PING_H__ #define __PING_H__ diff --git a/tools/sdk/include/pwm.h b/tools/sdk/include/pwm.h index 501a5fe7f..eae782f8b 100644 --- a/tools/sdk/include/pwm.h +++ b/tools/sdk/include/pwm.h @@ -1,34 +1,58 @@ -#ifndef __PWM_H__ -#define __PWM_H__ - -/*pwm.h: function and macro definition of PWM API , driver level */ -/*user_light.h: user interface for light API, user level*/ -/*user_light_adj: API for color changing and lighting effects, user level*/ - - - /*NOTE!! : DO NOT CHANGE THIS FILE*/ - - /*SUPPORT UP TO 8 PWM CHANNEL*/ -#define PWM_CHANNEL_NUM_MAX 8 - -struct pwm_param { - uint32 period; - uint32 freq; - uint32 duty[PWM_CHANNEL_NUM_MAX]; //PWM_CHANNEL<=8 -}; - - -/* pwm_init should be called only once, for now */ -void pwm_init(uint32 period, uint32 *duty,uint32 pwm_channel_num,uint32 (*pin_info_list)[3]); -void pwm_start(void); - -void pwm_set_duty(uint32 duty, uint8 channel); -uint32 pwm_get_duty(uint8 channel); -void pwm_set_period(uint32 period); -uint32 pwm_get_period(void); - -uint32 get_pwm_version(void); -void set_pwm_debug_en(uint8 print_en); - -#endif - +/* + * ESPRESSIF MIT License + * + * Copyright (c) 2016 + * + * Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 only, in which case, + * it is free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the Software is furnished + * to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + +#ifndef __PWM_H__ +#define __PWM_H__ + +/*pwm.h: function and macro definition of PWM API , driver level */ +/*user_light.h: user interface for light API, user level*/ +/*user_light_adj: API for color changing and lighting effects, user level*/ + + + /*NOTE!! : DO NOT CHANGE THIS FILE*/ + + /*SUPPORT UP TO 8 PWM CHANNEL*/ +#define PWM_CHANNEL_NUM_MAX 8 + +struct pwm_param { + uint32 period; + uint32 freq; + uint32 duty[PWM_CHANNEL_NUM_MAX]; //PWM_CHANNEL<=8 +}; + + +/* pwm_init should be called only once, for now */ +void pwm_init(uint32 period, uint32 *duty,uint32 pwm_channel_num,uint32 (*pin_info_list)[3]); +void pwm_start(void); + +void pwm_set_duty(uint32 duty, uint8 channel); +uint32 pwm_get_duty(uint8 channel); +void pwm_set_period(uint32 period); +uint32 pwm_get_period(void); + +uint32 get_pwm_version(void); +void set_pwm_debug_en(uint8 print_en); + +#endif + diff --git a/tools/sdk/include/queue.h b/tools/sdk/include/queue.h index 5939afe52..579e5a8f4 100644 --- a/tools/sdk/include/queue.h +++ b/tools/sdk/include/queue.h @@ -1,4 +1,236 @@ +/*- + * Copyright (c) 1991, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)queue.h 8.5 (Berkeley) 8/20/94 + * $FreeBSD$ + */ + #ifndef _SYS_QUEUE_H_ #define _SYS_QUEUE_H_ +#define QMD_SAVELINK(name, link) +#define TRASHIT(x) + +/* + * Singly-linked List declarations. + */ +#define SLIST_HEAD(name, type) \ +struct name { \ + struct type *slh_first; /* first element */ \ +} + +#define SLIST_HEAD_INITIALIZER(head) \ + { NULL } + +#define SLIST_ENTRY(type) \ +struct { \ + struct type *sle_next; /* next element */ \ +} + +/* + * Singly-linked List functions. + */ +#define SLIST_EMPTY(head) ((head)->slh_first == NULL) + +#define SLIST_FIRST(head) ((head)->slh_first) + +#define SLIST_FOREACH(var, head, field) \ + for ((var) = SLIST_FIRST((head)); \ + (var); \ + (var) = SLIST_NEXT((var), field)) + +#define SLIST_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = SLIST_FIRST((head)); \ + (var) && ((tvar) = SLIST_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \ + for ((varp) = &SLIST_FIRST((head)); \ + ((var) = *(varp)) != NULL; \ + (varp) = &SLIST_NEXT((var), field)) + +#define SLIST_INIT(head) do { \ + SLIST_FIRST((head)) = NULL; \ +} while (0) + +#define SLIST_INSERT_AFTER(slistelm, elm, field) do { \ + SLIST_NEXT((elm), field) = SLIST_NEXT((slistelm), field); \ + SLIST_NEXT((slistelm), field) = (elm); \ +} while (0) + +#define SLIST_INSERT_HEAD(head, elm, field) do { \ + SLIST_NEXT((elm), field) = SLIST_FIRST((head)); \ + SLIST_FIRST((head)) = (elm); \ +} while (0) + +#define SLIST_NEXT(elm, field) ((elm)->field.sle_next) + +#define SLIST_REMOVE(head, elm, type, field) do { \ + QMD_SAVELINK(oldnext, (elm)->field.sle_next); \ + if (SLIST_FIRST((head)) == (elm)) { \ + SLIST_REMOVE_HEAD((head), field); \ + } \ + else { \ + struct type *curelm = SLIST_FIRST((head)); \ + while (SLIST_NEXT(curelm, field) != (elm)) \ + curelm = SLIST_NEXT(curelm, field); \ + SLIST_REMOVE_AFTER(curelm, field); \ + } \ + TRASHIT(*oldnext); \ +} while (0) + +#define SLIST_REMOVE_AFTER(elm, field) do { \ + SLIST_NEXT(elm, field) = \ + SLIST_NEXT(SLIST_NEXT(elm, field), field); \ +} while (0) + +#define SLIST_REMOVE_HEAD(head, field) do { \ + SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \ +} while (0) + +/* + * Singly-linked Tail queue declarations. + */ +#define STAILQ_HEAD(name, type) \ + struct name { \ + struct type *stqh_first;/* first element */ \ + struct type **stqh_last;/* addr of last next element */ \ + } + +#define STAILQ_HEAD_INITIALIZER(head) \ + { NULL, &(head).stqh_first } + +#define STAILQ_ENTRY(type) \ + struct { \ + struct type *stqe_next; /* next element */ \ + } + +/* + * Singly-linked Tail queue functions. + */ +#define STAILQ_CONCAT(head1, head2) do { \ + if (!STAILQ_EMPTY((head2))) { \ + *(head1)->stqh_last = (head2)->stqh_first; \ + (head1)->stqh_last = (head2)->stqh_last; \ + STAILQ_INIT((head2)); \ + } \ + } while (0) + +#define STAILQ_EMPTY(head) ((head)->stqh_first == NULL) + +#define STAILQ_FIRST(head) ((head)->stqh_first) + +#define STAILQ_FOREACH(var, head, field) \ + for((var) = STAILQ_FIRST((head)); \ + (var); \ + (var) = STAILQ_NEXT((var), field)) + + +#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \ + for ((var) = STAILQ_FIRST((head)); \ + (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ + (var) = (tvar)) + +#define STAILQ_INIT(head) do { \ + STAILQ_FIRST((head)) = NULL; \ + (head)->stqh_last = &STAILQ_FIRST((head)); \ + } while (0) + +#define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \ + if ((STAILQ_NEXT((elm), field) = STAILQ_NEXT((tqelm), field)) == NULL)\ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ + STAILQ_NEXT((tqelm), field) = (elm); \ + } while (0) + +#define STAILQ_INSERT_HEAD(head, elm, field) do { \ + if ((STAILQ_NEXT((elm), field) = STAILQ_FIRST((head))) == NULL) \ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ + STAILQ_FIRST((head)) = (elm); \ + } while (0) + +#define STAILQ_INSERT_TAIL(head, elm, field) do { \ + STAILQ_NEXT((elm), field) = NULL; \ + *(head)->stqh_last = (elm); \ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ + } while (0) + +#define STAILQ_LAST(head, type, field) \ + (STAILQ_EMPTY((head)) ? \ + NULL : \ + ((struct type *)(void *) \ + ((char *)((head)->stqh_last) - __offsetof(struct type, field)))) + +#define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next) + +#define STAILQ_REMOVE(head, elm, type, field) do { \ + QMD_SAVELINK(oldnext, (elm)->field.stqe_next); \ + if (STAILQ_FIRST((head)) == (elm)) { \ + STAILQ_REMOVE_HEAD((head), field); \ + } \ + else { \ + struct type *curelm = STAILQ_FIRST((head)); \ + while (STAILQ_NEXT(curelm, field) != (elm)) \ + curelm = STAILQ_NEXT(curelm, field); \ + STAILQ_REMOVE_AFTER(head, curelm, field); \ + } \ + TRASHIT(*oldnext); \ + } while (0) + +#define STAILQ_REMOVE_HEAD(head, field) do { \ + if ((STAILQ_FIRST((head)) = \ + STAILQ_NEXT(STAILQ_FIRST((head)), field)) == NULL) \ + (head)->stqh_last = &STAILQ_FIRST((head)); \ + } while (0) + +#define STAILQ_REMOVE_AFTER(head, elm, field) do { \ + if ((STAILQ_NEXT(elm, field) = \ + STAILQ_NEXT(STAILQ_NEXT(elm, field), field)) == NULL) \ + (head)->stqh_last = &STAILQ_NEXT((elm), field); \ + } while (0) + +#define STAILQ_SWAP(head1, head2, type) do { \ + struct type *swap_first = STAILQ_FIRST(head1); \ + struct type **swap_last = (head1)->stqh_last; \ + STAILQ_FIRST(head1) = STAILQ_FIRST(head2); \ + (head1)->stqh_last = (head2)->stqh_last; \ + STAILQ_FIRST(head2) = swap_first; \ + (head2)->stqh_last = swap_last; \ + if (STAILQ_EMPTY(head1)) \ + (head1)->stqh_last = &STAILQ_FIRST(head1); \ + if (STAILQ_EMPTY(head2)) \ + (head2)->stqh_last = &STAILQ_FIRST(head2); \ + } while (0) + +#define STAILQ_INSERT_CHAIN_HEAD(head, elm_chead, elm_ctail, field) do { \ + if ((STAILQ_NEXT(elm_ctail, field) = STAILQ_FIRST(head)) == NULL ) { \ + (head)->stqh_last = &STAILQ_NEXT(elm_ctail, field); \ + } \ + STAILQ_FIRST(head) = (elm_chead); \ + } while (0) + #endif /* !_SYS_QUEUE_H_ */ diff --git a/tools/sdk/include/simple_pair.h b/tools/sdk/include/simple_pair.h index ccab95bce..801480942 100644 --- a/tools/sdk/include/simple_pair.h +++ b/tools/sdk/include/simple_pair.h @@ -1,5 +1,24 @@ /* - * Copyright (C) 2015 -2018 Espressif System + * ESPRESSIF MIT License + * + * Copyright (c) 2016 + * + * Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 only, in which case, + * it is free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the Software is furnished + * to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ diff --git a/tools/sdk/include/smartconfig.h b/tools/sdk/include/smartconfig.h index adf91302a..6f3802add 100644 --- a/tools/sdk/include/smartconfig.h +++ b/tools/sdk/include/smartconfig.h @@ -1,5 +1,24 @@ /* - * Copyright (C) 2015 -2018 Espressif System + * ESPRESSIF MIT License + * + * Copyright (c) 2016 + * + * Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 only, in which case, + * it is free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the Software is furnished + * to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ diff --git a/tools/sdk/include/spi_flash.h b/tools/sdk/include/spi_flash.h index bb920fef5..6661635ea 100644 --- a/tools/sdk/include/spi_flash.h +++ b/tools/sdk/include/spi_flash.h @@ -1,6 +1,25 @@ -/* - * copyright (c) Espressif System 2010 - * +/* + * ESPRESSIF MIT License + * + * Copyright (c) 2016 + * + * Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 only, in which case, + * it is free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the Software is furnished + * to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * */ #ifndef SPI_FLASH_H @@ -38,4 +57,7 @@ typedef SpiFlashOpResult (* user_spi_flash_read)( void spi_flash_set_read_func(user_spi_flash_read read); +bool spi_flash_erase_protect_enable(void); +bool spi_flash_erase_protect_disable(void); + #endif diff --git a/tools/sdk/include/upgrade.h b/tools/sdk/include/upgrade.h index cddf8397c..e7e69681b 100644 --- a/tools/sdk/include/upgrade.h +++ b/tools/sdk/include/upgrade.h @@ -1,3 +1,27 @@ +/* + * ESPRESSIF MIT License + * + * Copyright (c) 2016 + * + * Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 only, in which case, + * it is free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the Software is furnished + * to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + #ifndef __UPGRADE_H__ #define __UPGRADE_H__ diff --git a/tools/sdk/include/user_interface.h b/tools/sdk/include/user_interface.h index 639bb84b0..01374fcfc 100644 --- a/tools/sdk/include/user_interface.h +++ b/tools/sdk/include/user_interface.h @@ -1,5 +1,24 @@ /* - * Copyright (C) 2013 -2014 Espressif System + * ESPRESSIF MIT License + * + * Copyright (c) 2016 + * + * Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 only, in which case, + * it is free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the Software is furnished + * to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ @@ -52,7 +71,8 @@ void system_restore(void); void system_restart(void); bool system_deep_sleep_set_option(uint8 option); -void system_deep_sleep(uint32 time_in_us); +bool system_deep_sleep(uint64 time_in_us); +bool system_deep_sleep_instant(uint64 time_in_us); uint8 system_upgrade_userbin_check(void); void system_upgrade_reboot(void); @@ -120,13 +140,17 @@ bool system_update_cpu_freq(uint8 freq); uint8 system_get_cpu_freq(void); enum flash_size_map { - FLASH_SIZE_4M_MAP_256_256 = 0, - FLASH_SIZE_2M, - FLASH_SIZE_8M_MAP_512_512, - FLASH_SIZE_16M_MAP_512_512, - FLASH_SIZE_32M_MAP_512_512, - FLASH_SIZE_16M_MAP_1024_1024, - FLASH_SIZE_32M_MAP_1024_1024 + FLASH_SIZE_4M_MAP_256_256 = 0, /**< Flash size : 4Mbits. Map : 256KBytes + 256KBytes */ + FLASH_SIZE_2M, /**< Flash size : 2Mbits. Map : 256KBytes */ + FLASH_SIZE_8M_MAP_512_512, /**< Flash size : 8Mbits. Map : 512KBytes + 512KBytes */ + FLASH_SIZE_16M_MAP_512_512, /**< Flash size : 16Mbits. Map : 512KBytes + 512KBytes */ + FLASH_SIZE_32M_MAP_512_512, /**< Flash size : 32Mbits. Map : 512KBytes + 512KBytes */ + FLASH_SIZE_16M_MAP_1024_1024, /**< Flash size : 16Mbits. Map : 1024KBytes + 1024KBytes */ + FLASH_SIZE_32M_MAP_1024_1024, /**< Flash size : 32Mbits. Map : 1024KBytes + 1024KBytes */ + FLASH_SIZE_32M_MAP_2048_2048, /**< attention: don't support now ,just compatible for nodemcu; + Flash size : 32Mbits. Map : 2048KBytes + 2048KBytes */ + FLASH_SIZE_64M_MAP_1024_1024, /**< Flash size : 64Mbits. Map : 1024KBytes + 1024KBytes */ + FLASH_SIZE_128M_MAP_1024_1024 /**< Flash size : 128Mbits. Map : 1024KBytes + 1024KBytes */ }; enum flash_size_map system_get_flash_size_map(void); @@ -135,6 +159,7 @@ void system_phy_set_max_tpw(uint8 max_tpw); void system_phy_set_tpw_via_vdd33(uint16 vdd33); void system_phy_set_rfoption(uint8 option); void system_phy_set_powerup_option(uint8 option); +void system_phy_freq_trace_enable(bool enable); bool system_param_save_with_protect(uint16 start_sec, void *param, uint16 len); bool system_param_load(uint16 start_sec, uint16 offset, void *param, uint16 len); @@ -166,8 +191,9 @@ bool wifi_set_opmode_current(uint8 opmode); uint8 wifi_get_broadcast_if(void); bool wifi_set_broadcast_if(uint8 interface); -typedef struct bss_info { - struct bss_info* next; +struct bss_info { + STAILQ_ENTRY(bss_info) next; + uint8 bssid[6]; uint8 ssid[32]; uint8 ssid_len; @@ -177,16 +203,12 @@ typedef struct bss_info { uint8 is_hidden; sint16 freq_offset; sint16 freqcal_val; - uint8 *esp_mesh_ie; - uint8 simple_pair; -} bss_info_t; - -typedef struct { - struct bss_info* first; -} bss_info_head_t; + uint8 *esp_mesh_ie; + uint8 simple_pair; +}; typedef struct _scaninfo { - bss_info_head_t *pbss; + STAILQ_HEAD(, bss_info) *pbss; struct espconn *pespconn; uint8 totalpage; uint8 pagenum; @@ -214,11 +236,17 @@ bool wifi_station_disconnect(void); sint8 wifi_station_get_rssi(void); +typedef enum { + WIFI_SCAN_TYPE_ACTIVE = 0, /**< active scan */ + WIFI_SCAN_TYPE_PASSIVE, /**< passive scan */ +} wifi_scan_type_t; + struct scan_config { - uint8 *ssid; // Note: ssid == NULL, don't filter ssid. - uint8 *bssid; // Note: bssid == NULL, don't filter bssid. - uint8 channel; // Note: channel == 0, scan all channels, otherwise scan set channel. - uint8 show_hidden; // Note: show_hidden == 1, can get hidden ssid routers' info. + uint8 *ssid; // Note: ssid == NULL, don't filter ssid. + uint8 *bssid; // Note: bssid == NULL, don't filter bssid. + uint8 channel; // Note: channel == 0, scan all channels, otherwise scan set channel. + uint8 show_hidden; // Note: show_hidden == 1, can get hidden ssid routers' info. + wifi_scan_type_t scan_type; // scan type, active or passive }; bool wifi_station_scan(struct scan_config *config, scan_done_cb_t cb); @@ -281,21 +309,22 @@ bool wifi_softap_set_config(struct softap_config *config); bool wifi_softap_set_config_current(struct softap_config *config); struct station_info { - struct station_info* next; - uint8 bssid[6]; - struct ip_addr ip; + STAILQ_ENTRY(station_info) next; + + uint8 bssid[6]; + struct ip_addr ip; }; struct dhcps_lease { - bool enable; - struct ip_addr start_ip; - struct ip_addr end_ip; + bool enable; + struct ip_addr start_ip; + struct ip_addr end_ip; }; enum dhcps_offer_option{ - OFFER_START = 0x00, - OFFER_ROUTER = 0x01, - OFFER_END + OFFER_START = 0x00, + OFFER_ROUTER = 0x01, + OFFER_END }; uint8 wifi_softap_get_station_num(void); @@ -378,6 +407,7 @@ enum { EVENT_SOFTAPMODE_STACONNECTED, EVENT_SOFTAPMODE_STADISCONNECTED, EVENT_SOFTAPMODE_PROBEREQRECVED, + EVENT_OPMODE_CHANGED, EVENT_MAX }; @@ -453,6 +483,11 @@ typedef struct { uint8 mac[6]; } Event_SoftAPMode_ProbeReqRecved_t; +typedef struct { + uint8 old_opmode; + uint8 new_opmode; +} Event_OpMode_Change_t; + typedef union { Event_StaMode_Connected_t connected; Event_StaMode_Disconnected_t disconnected; @@ -461,6 +496,7 @@ typedef union { Event_SoftAPMode_StaConnected_t sta_connected; Event_SoftAPMode_StaDisconnected_t sta_disconnected; Event_SoftAPMode_ProbeReqRecved_t ap_probereqrecved; + Event_OpMode_Change_t opmode_changed; } Event_Info_u; typedef struct _esp_event { @@ -613,4 +649,6 @@ void wifi_unregister_user_ie_manufacturer_recv_cb(void); void wifi_enable_gpio_wakeup(uint32 i, GPIO_INT_TYPE intr_status); void wifi_disable_gpio_wakeup(void); +void uart_div_modify(uint8 uart_no, uint32 DivLatchValue); + #endif diff --git a/tools/sdk/include/wpa2_enterprise.h b/tools/sdk/include/wpa2_enterprise.h index f83b8db7a..9bd0ba516 100644 --- a/tools/sdk/include/wpa2_enterprise.h +++ b/tools/sdk/include/wpa2_enterprise.h @@ -1,3 +1,27 @@ +/* + * ESPRESSIF MIT License + * + * Copyright (c) 2016 + * + * Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 only, in which case, + * it is free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the Software is furnished + * to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + #ifndef __WPA2_ENTERPRISE_H__ #define __WPA2_ENTERPRISE_H__ @@ -20,6 +44,9 @@ void wifi_station_clear_enterprise_cert_key(void); int wifi_station_set_enterprise_ca_cert(u8 *ca_cert, int ca_cert_len); void wifi_station_clear_enterprise_ca_cert(void); +int wifi_station_set_enterprise_identity(u8 *identity, int len); +void wifi_station_clear_enterprise_identity(void); + int wifi_station_set_enterprise_username(u8 *username, int len); void wifi_station_clear_enterprise_username(void); diff --git a/tools/sdk/ld/eagle.app.v6.common.ld b/tools/sdk/ld/eagle.app.v6.common.ld index 343448d03..dd36ae648 100644 --- a/tools/sdk/ld/eagle.app.v6.common.ld +++ b/tools/sdk/ld/eagle.app.v6.common.ld @@ -178,6 +178,19 @@ SECTIONS *liblwip_gcc.a:(.literal .text .literal.* .text.*) *liblwip_src.a:(.literal .text .literal.* .text.*) *libaxtls.a:(.literal .text .literal.* .text.*) + *libat.a:(.literal.* .text.*) + *libcrypto.a:(.literal.* .text.*) + *libespnow.a:(.literal.* .text.*) + *libjson.a:(.literal.* .text.*) + *liblwip.a:(.literal.* .text.*) + *libmesh.a:(.literal.* .text.*) + *libnet80211.a:(.literal.* .text.*) + *libsmartconfig.a:(.literal.* .text.*) + *libssl.a:(.literal.* .text.*) + *libupgrade.a:(.literal.* .text.*) + *libwpa.a:(.literal.* .text.*) + *libwpa2.a:(.literal.* .text.*) + *libwps.a:(.literal.* .text.*) *(.irom0.literal .irom.literal .irom.text.literal .irom0.text .irom.text .irom.text.*) _irom0_text_end = ABSOLUTE(.); _flash_code_end = ABSOLUTE(.); diff --git a/tools/sdk/ld/eagle.flash.16m.ld b/tools/sdk/ld/eagle.flash.16m.ld index f60ebb9bc..d6d15fd2c 100644 --- a/tools/sdk/ld/eagle.flash.16m.ld +++ b/tools/sdk/ld/eagle.flash.16m.ld @@ -1,7 +1,7 @@ /* Flash Split for 16M chips */ /* sketch 1019KB */ +/* spiffs 15340KB */ /* eeprom 20KB */ -/* spiffs 15MB */ MEMORY { diff --git a/tools/sdk/ld/eagle.flash.8m.ld b/tools/sdk/ld/eagle.flash.8m.ld index 41a1e409e..1bce8f50a 100644 --- a/tools/sdk/ld/eagle.flash.8m.ld +++ b/tools/sdk/ld/eagle.flash.8m.ld @@ -1,7 +1,7 @@ /* Flash Split for 8M chips */ /* sketch 1019KB */ +/* spiffs 7148KB */ /* eeprom 20KB */ -/* spiffs 7MB */ MEMORY { diff --git a/tools/sdk/ld/eagle.rom.addr.v6.ld b/tools/sdk/ld/eagle.rom.addr.v6.ld index 9269fa2de..262877604 100644 --- a/tools/sdk/ld/eagle.rom.addr.v6.ld +++ b/tools/sdk/ld/eagle.rom.addr.v6.ld @@ -322,7 +322,6 @@ PROVIDE ( timer_insert = 0x40002c64 ); PROVIDE ( uartAttach = 0x4000383c ); PROVIDE ( uart_baudrate_detect = 0x40003924 ); PROVIDE ( uart_buff_switch = 0x400038a4 ); -PROVIDE ( uart_div_modify = 0x400039d8 ); PROVIDE ( uart_rx_intr_handler = 0x40003bbc ); PROVIDE ( uart_rx_one_char = 0x40003b8c ); PROVIDE ( uart_rx_one_char_block = 0x40003b64 ); diff --git a/tools/sdk/lib/libat.a b/tools/sdk/lib/libat.a index 7dbb6ae146391a1ebeec263fd77a952419ec23c7..0c29015468a6661f1ea39ee2069c90cab8b2d3aa 100644 GIT binary patch literal 389484 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 literal 313648 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ν)!QRi`8~hVP{L7@H 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 W+?l6%X5iU@YXUa}UL3e7@c#n+ue}BU diff --git a/tools/sdk/lib/libcrypto.a b/tools/sdk/lib/libcrypto.a index 56245a3d5845b3ce6aa6c5beb3d944507147e19c..1c3feaba433511a6c2b7269a4ffa52274a914955 100644 GIT binary patch literal 135458 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%0DQ6Mpe}+JpMMQa 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 U;Ij&jMEgje@e0Iq} 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

jUJ;5sUphHP8Nft;Vd^ z0|x%J#_Zp>Ys^0SJ&oCSvtO6{IpPq;w(WzCri`1M^rBzQVw~&I!N7z^cu4zO4qo+Q97w-e}+s z19uyEhk;)<@Bst!7?AR)bs=2_wJxNwkH3+|YF$WUwJxM_zM(U3(X2T)%%8nT-@bC( z`)elzvoAc+HKGIT=+IG)hsU!=y?;kx=MNTEw&1l8d^^fc|Hyk2`l7uDqa7a0lQ{JG zp}(vx9n#h|#QO51^A^80?Cxcrp$`?cC*S!Tb@6qX*L#CUdTh4HVv{;B2Au@GJj*T2wUg*T}i`TVcYqr>?C_fIIkODe%+kCx71nj zI=nvhT^H`QS-L!NO;%iO)1<_C_AUEjY>+{Ntc<4I$tH1W8M}39X1aDqv34Wvroq3UDmp{!FIn@>M zmOWKc7D+)~`|>Nh7B2H^G$`1>_=|jAdXhT`24~t}Z5pO0w z_{-9Hr`fK}-kOXhqn0Mu`V%893AftLo0yL{V(~d#bqmztBeo8G$Odh{5!e*0%#}q> zu0-=iMs`I`2}DNZM7&vc_FFL=Qg6jvk(4yItE0jdImx-pD&Rjkdq3WKGop~6AztCG z^e313Q(XR&D&lYU%^;<$UbK&d?7$jpa8Aa7P;yS26&lwuA^GeBXH4>h#&iU>>uQNnFU^D9b%5 zzW-N72a*xaEuCi1h~Rg=vg;$9CJUXPy1)7Lx~uvsv~v!tCl78PdwcPJPI9_2r)qjl z6=!B`Q{sb}%O|Yq&#SvFV|nhH!v`g9<#SHWCg<>a&^a~L*p=7ab9C+_;PZN(sl(GE z*VfMVEvl}+vAW*Zu)sHaZY@5q;p1BxYv*5!FTBiO)DXe2Uj;`YPs}vr z?}Vd}Cq}l4zXv{rJTdD){qMuciqbk@4nE003P({ZQ}p5N4Cl5zo?gvx2jM7;BW69B z)`d19N6foCD6}JOM>}5dXMm@j^F>Evwj0wHfghqVcj+m#BW+JRGr{}8)6Uln9r<0T z(+YmN*7>8Mvlkc-Mys?R0ZUtPW=2VXBOVQ(<>8Es^LyemfhjCcIxu_FX1Fg3ud%f4 zRPd6vRCJJ5jvJP<0{l(d&Te2S&r70@IAX4(w80$&W*Ld!1E#P%9{`^U+zdAo$03D! z#H=s%#{f%t#)%Hnjt6FanU-G+qA)G7)MW;+q@5)?NGr!a>oOO7F4ED?TG7#1j+2ex zX`AKY`9fj&<=mm29pH<>(@r`L+SB1vKaU46gz1T;JcYo+z)|PRz*6Q)L!VfVb3V;W zVZL&%GT&w3E5I|~mx1NCcvbYl69=@;P$)=VBdH9b%~8N|jEx0m6w5YFbTpPWxfHzA zWvb}Fj`SZaTRHe3(y?sI3>{)A&kuna#k_tjIvTToBL8#nlGhW44x&^a#y*PWqVWA3 z#7s-x2cJUT2mc&m@FnmmRm}LcS5c*l8sRAy3Tni255yLdX;I>P?>g28BGa z@O1`H?A1E|pjGdG`rW-w%~=UqUmnkD8ln$8D+KP7^mIcUwf;TOp6CT(F9A-UfXY4& zvVLJpQh4<-^9>;^M-8C5qR{8MpOls14jlfgQ7N8rJjfWwUtiY0UBF79(=LSqA^Bbo zOq%7SwBwMy(t+wPb1aI6Qf zN>Yy-flYfK!Csv{n-J9>$NL3Mdz)d8dbFp`2JH`AC!Y_6uOm)G@}l40cEBrBEVUNO zc4JS(yogbp{@)hRdSnFJ$w(;n8252<^!>L+1(E3Jb?+ms9{)K&9)XAD=yh_o_+dHL zyFjo_&@Zev=Q!*kCd22tdS-vD(=I$8Wc0xJsR*}1pCbi^uNk0UJ0RSEFh>xVX#HE^ zr=wl7bodAGc}2flhr8kP%6yRy?}N{)?Rh%PQ4_D4B|4mpFt2{AbXfKl5mdix5b?Z9 zttkNda&7f|PF|~NqhI$} z-qb7avZfZB|z~#um)2I=XcSHn+U=MiQyQSjS2_P?K2?w1#_yaZJj+l}{4u=F#yn5BM$fdIA+Qr9=IDH)#vE-o zXj~5ecN%lVd=kn-eU5;qYRnNW&pq-i?;4FcLVZJH*6D4HS=XUB_o&Y{2x`o>`J%=g zea_dIBiBD^%#mUcj%hjCYuA{gG4^5PIYT>3<2&K=dQ6_@A{{aLNd{*BMZO9?o#?b` z?1O)=#%xc{Xl2jokD4b(EPGCW*8D;E9dNRb^`7R*5z9VSy8c~2S?6fX*&Szoau4)m z&66XRd!RY16CIA=SblQEqSHtnULYZBv<^99xfg$#p>x01AxA7aE!0VI>^!A)$PvqZ z^LJ23=e0xYkRuj5?`r-@nEF6t&KQTljnEgQBw{$uFi#<7=M1?(^GwTkE>VZG$H~N6 z=Rsl)5Fi_g;daCEeM<7%b!eU(vHW&ef9%))t;Wo2m&Tk)&V&;?`!r9ESnPOkOiNvc z6C;i@$xPytRne?V4V@`khcm`65$n2C0ZU$YX&rLJlGk@NzZQNCoE&fKHBXLMj<;^= zoa&Up<#x(Oj#$2Da*G7Cqzo5mo*c21;S$Z~!Oz#2v&!d~mIF1&6`ChUEal-0 zQjV+DT8A9599Q>io_029%o*k*2HvDGXP8UiY%YmFwrQRm@leg*L>-JLDKBara>PS5 z|B~iuvk}hbR2mY8euuv)IpU$3&m^yp;W1i=v(`(9IZcCnLGzs1a)v7BOSR_75zF~f zV(2W^I^>8&=YPoSd{=56&Suvb{94U(X8RDaPZdY~u~8QaN0fqj2ny!7P_WOy>|=!w z8knmX!iNkD*njQgVIexE{d9vjZB8`!0t1&DxWd454ZOs_%M9FV;ME3hH}FOScNne8|9V4E&^ldknnWzlfe#q?0|O_Z-xU232KE_vjDd3v%3jXlkBcDhp{!7*_#5$N=J;)>n&%drm3$Nj-PKPhKtKF^;8+}Bw#v7)lm zR}6Ju8GiNY!LmGjH|muYZ&pS|t$s4lScY2~tQko)o}xWP-B)>QQ}AR^;G)(0 zaylzg)64uBd5F)qw=x&W@|h#E+{|Dx=0-C&<#qb9+{g+aRFbSb0awJA7a5fk@xxkK zWHbyrHXmcUF8{gP{pa=h#{{CiE`O%}w9VHBeK#Ka<%xD-q^xsPWoO!|g`N>;Z*HXr zjYr0K&q`yKdvv(4G$(SJD>CX}B&{!!+7%hS9gndM+B5j|_!W`UJ?FpM-FBkt z#e9xMxx>jz7WFvyki8VnF(`BJYn3}t{bgQsJnGCnl3zgY5k_bc7(rMtqxd|DSL@J| zxS7CGR`SuI&bm9xhobhEZ$7Z30koQth;t4RiQ^i(Y3~u(qaN)6_S+k{N5Xd}FGjqG z*rTrxToqM-!`BOvODaR)m>28Cvg+Xn5Y7w`S1aWF5qk!86#Q3t7b1HX?iFy&euPm< z)-y05%$`Jq@wsr)doX=I!t5!!;4{qQM?@VDHS;1^`c@+|*%~-9q*u84Sb~OJ8#j`1 zTLI%be5`nm(!jUnu{VHBIM3pIl5;7RgP3camubx2uT10X;ZtO7hkG~Frx4594u5Z1 z!>I?R4mo03!(k66@9=KYI^>Au{oFs$JbUaPYy2ztn>A+d&GS;qvqSUbh^0JiLn+T6 zwGKIADGz@`DbL$lha9n#hsQMQ!mGn5>holQjL|$fV#)U!@;m_`yeio0$HWy#>ysmv zcTfDE=J{J})0kI^mx;BVcQntdi3fVZ&qY|uKaxDcU^W9HlIRd$CX39yy~ca(Z9Hr(OpUmt~{BT>XXq7eOGjJI{F) z#Ot_c)z9f$caFz}%gRj$yZonb_n*<{_vP>#yQlTvEkDndwJ~{ajq3{c4JGjwF)2R z^fkv>MdKPM&xCs(3wrZH9ghXO&R+71Rfw_hF!TDRj$ej*)&=p&(RD3%w=~cBX3?C*cRp5R zb#9M6;%`r0X}4tWShyroQ#y1U9_X*QELif#rjmTGH6>K?P7^+pY88b_&T8_-_)dU; z@0$nq2a7Dcxgfvw-KHHLD=$>k-TG=1Snrh3uE5kl>&~Xz@(RQFNNVeCzSh^gjkkMy zTYS6ljQF0xI~Qi!UmNsaLvPJq8kraWzeBEZKkC09Pf2{&bzkz8fB0*X%^R-^xBI8| z`HK$vi}U=`W?%w%d689fX3@Bu$mQ2fzv`sRzWqwhnvlz1;57ZUe@eXWmY-bvSp8e` zCtm!{6+ifT*|5?(YU1zt@y?si7`?UkE9Uz-79NT<{Ux^i?bw=wG0)IP+a67M)OBBA zRnDz>OUr62uc|L>p0GluV7Pz!-O?@o#N=1QJG1$2&xE$E?uUC^gU+-@E*qTJHKx!` zxc@`XzR<(F16fIvhCTKB*qteZ6He=UHZ&uttGgrcyz9&AO&+IZCJjoqu%s2}c={px zL)WBX(}wTz1-iyKH=)0`KlgsT&Evgs6Yih$o71wAa_z}4#_p_lC7f1(_n8Ksb6qA@ zuDbuq#}DByZ~u<$z2QTp`VkB~)$v{ohdav~PPAXmcHWnf(Y7b<;q7ib9}%=X!xGXC zc8|&R^yDQ6b2eP|Q@&s%ZGz{S%CZL-!2o zJ>2tVmS@uN$=hSEuJ>3I>j&o~Jrhmc@aX!!sfZo?(3^N+$lkOBkE{6lzT#_p3&Oo6 z@AUG;993n-)p^BptS>a>6xVn|p-IE7u}y*ETD%w}%VX_t>MOqPsqUDo+t)rO+I~aZ zG;8IU*4B4cOtV|Y6m>VYgqx?imZa5Bi!0hQc=d~@GG5=YH~UbSb7Vesvhw`f@|Ndc zwD8yOcl_)JFaGS+uXJ5G;mzbXuUgyu#TCzgHSNbM*A3obf92+sCvM43|K-;_(;KdN zqW+@?f7keEibys_!Kox{7=c+wY)c{OX@vWBU<@7pkQSIfIM zmX&^C<-ASV?VHbu+wk<)ulm2YhW2i{Z26C#FP;6&pldTTN8B>x=jY`5Q^$TVZ_Kol zl5)RPzGz7GV?(aHaqO0^rd!6;uUND9|JsV?oZ4P@dr{ZDrE{Miy?4d7^g*j$xaERj zZ`Vby^N#FXJ33+RMW+`pE;#3Bk8c?NQ%~B2sq1!Je#JAZzw*|Cu{Haf|GQzq>>n%{ zv1IeI1lQAdycc_-_0Mxl*8cV0cb_=8WZ|a2;a+TKSaJAGKA%sqKWkHLnSAWPK){C% zVGITo9L$M;R&o~pHp9_Rfop@~w3d?qVoshY9C#4JjN&bTfGM0_OTL^&SAYw^ zHETB#K5edq8?SLU{4Z;KCJMD&IA`` z37$G%0%kqi;FbV$vPb-NU`hfUF~@ApaJK^UhP^hpCxAJQAbuJc{}tW>AZ@jSB!qT| zF;GxCdxS@MdV#q=*bMi+@EVWM`rJr9Rby@>bAs0f$Cqew>`I&mEcP!mbfyD`wa%Tu zXKTzGG^Cur0;aH>B5t~YQ{BK8*QG{Tp|9`$IC?IHFCu5%RP{5+9+LF;G)nX%n?I?*1no+bb}QitCoECKjZ zK7%?69=*C3e0(L0sIvB z#EfSdiQk6fe46+G9Pbq(-Umk;#Cze~8gt&wdw9wB!m0a>;O~Z0_Zz|A0mpNVI#0q^ z_x%8~J3pj(cA30AWCV{Fh!2kXygZ&qjN^kc7LGj6Q}#u~XThIH%)T4)ML5yO)@T1Ge7b>y2IlWBIy|NYmm9dkz;g|}#K6l8+-l&}25vX-Mgw;kn8%ZpVTXZV zHt+!he_-GQ)LYWBEd~1w%(XM&a}Att;1UC?`&SUAa4k*JHW;|kz;_sUrGeKPc!Pn} i{VNDlxZWoApEEG~1>sdcqV?J52=B&mDcDO4NBRGFqTpx% diff --git a/tools/sdk/lib/libdriver.a b/tools/sdk/lib/libdriver.a index 68d314c32688e28c0e92fff7a42237313d28c665..531ea87270a7b28d38e156ac1c5cf33d80178932 100644 GIT binary patch delta 4808 zcmbVP4RBP|6~1?qm!JKC-OYkYmdMK{`a%G+`A>`qL;?vG%n!d-ksyH@g$M~KQeZ;` zCKa#=Csnj+6J@60*qOwKR+~&G>Cg^ScJ1#LpuySkno3iet9a6-f_F- z1R8c1(y8~IblKfrJ^{~_8A34kfoz~4h+7r7mB3HeJxd*K0MnN38^Zl^!fwJI< zu;7CpyB>#bwF+Lx7QC52_u79P!XeyPB-KXKfqfcFg_sIroC|Jk z4w!W-lzahrmBMUq0iJIy;GG$2g44Q4VOD0pO3rgMYu7N!GHcUH&R&x2bhK&^Z-Qlv z9ZJqjvTM-p0kKXZCom5jN%YCaEEjJUO$SMhZdhJIr;~&9`0}7jMfQ_C6GgZBvs_rt zZ3qNiZ$o9iI>yGFw`rbl_$Qvr|%$CAR>th%v5%4~AmZ{M>ggMv2=$vG5XS}lEaTWKL}a>UWz z(l)uDQp+YwD28 z-KXERex=JU(CaJLuUh4@n?I~dvB@NQ{FaGwiuuYd(`+sdu5c?bwYeQO8KB3iOVGbr zorONCCM$;BQ7q}$`^i*S^LLqT&aQpHh6Ej)XK1ftuAJ675VRwvqOcpXH2CQ>#zC(TA6ZT>TlA8Y()`^HTD+g8 zmBi7)rk^2NE;KdM<&Ml}ciktkq1|h$ZC`lk-8Hu&LZ+@Yv_1rSg5|bBxQx?QO46wf|!jo<@!4yVQW>)}c)Pnxcl6Lz||*_(Fd@XHPs6c^AbKhDjp-Lfdw zwqv{b-1d*<^z1F8&ha;%T4Fn%(>0)rqNvSU@z@-v(;o=lTpkSig7=fIuiKdSz0tzJ z38yWt_i*=6$C<5{)_Mnnu5&_|j<%h)XLV0x}jZ9AX3aSaZdOWh%GcH}wmDd1g5f(-C_d|tT(@rRoELB)q0=F(kH z*g{;=IKqptjte^D)xg}?Uf8~bu}zSVgA8639T7T=vmoQO0}*n@{7jbf{!YlFb6!1-ZM0<(P@ywgm5@*x?@!bAA7nSnC8 zO<|7uM-=V`|AoTqz{R$=;PDFg11Bjw09>W;A>bb<%$f0+!W{K|3UfgJS>Yk+Fatl&w1sYi z7x;l(h(Zc;0okW87a5KR*5TSP5f5U_xt^~u*8nT8AwLTIs*-c+o>rJseWrRir#i==UcwNp)SDstHH131k%jTm2Ym>0ThVy^m)C{*8w{j_`klGxcT1G>ogEuG(A91Aqt zR@7osp#jK3d4Ze3>M^Q&WM=!F1%0n*J(bB=jT;yyCr#gKka zPHit=pm|aF3;R#Ib>-O5=hi0Tt-s9au0FS1M7@26tf06142@5|^OIBmhypu%Iyo9OO#9HZ;g0djnQC0R;y5PkMBE+QFp%h_9H5j}p^&>n)_aqI>fI_uWpmMUo?i{EQ}{uc6uzL(9ki+KtqG ZeFF8Axp8yshU^S(*A*-?-y2z%_%Eu_hb;gA delta 4845 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 ahUOt&_p0<#Zz|r(V%QWz){Nmt6aED`)}9^! diff --git a/tools/sdk/lib/libespnow.a b/tools/sdk/lib/libespnow.a index ac9b407fae7077cc27215554f4f2cd102645d43b..d067eb3701589f0cfc3aecfcf6837d735f382e99 100644 GIT binary patch literal 72138 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 X%eB~6gSQ*J%i!I_X9sQgh{69KnX;PA literal 55506 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 diff --git a/tools/sdk/lib/liblwip.a b/tools/sdk/lib/liblwip.a index 829db331b5ec3bed4e8e94e553edd28d7d064a85..73ea367005aff4eb03ea29cfce52394b8265afa4 100644 GIT binary patch literal 320108 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

ytmn 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 literal 353470 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

5BOM!!pv$$Ly5mV5c4>6`Og#^c99Dn}M9k{mq9c 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 W7~X2Q)9?<%>}%<<_L6bU82%4+Qm82a diff --git a/tools/sdk/lib/liblwip_536.a b/tools/sdk/lib/liblwip_536.a index 19b12d93f404e170d008e1f535f04505c79bc635..5ea340be2e3bef13c655ed13098f6384762e7509 100644 GIT binary patch delta 24954 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 delta 24047 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

DqdylaWo*+EG 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 A_y7O^ diff --git a/tools/sdk/lib/libmain.a b/tools/sdk/lib/libmain.a index 29a9aa493669f039e462fbd0c9c8ed1bed271835..c6d1675308f9f7ed241c0248711e2b7796f58fc4 100644 GIT binary patch literal 212668 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 literal 199606 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�SXO zDuex(A+G?>#3Y_!h_eyjAQ;UyUw@HLoBvq&)c1^F+Vge6wA&HEw2#>zP`1cL8xW|6 z*z6U8&l0`|`KVy_V~WZHe^D@pl53uNIAqm=rvldr=5VwMo(3F4(D~m0%(CPW>l~N~ ztoCmKrVM$+YX3^g$XGuhGUO5G3ZGxcvn*d(U?Ape3Jk=2HDNaO$Yqo#eDa8Mh5vow z^Oc1k3g)W}b6A!g2R$Qv@`$ya^N`kg@`A{aNBp9 z<~+Gya0u~k!JH?56wG<@kzme~Q`t_Gos9Sl3;%A^J?LdY+VjYXwz&d9h z2BseJh;`2J>v{6|S_T90nTQ#P*>8@q&Y5$CPad((nR|rK*D|&V=2!mnSXSEkobbsb z)^^rVM)sE9hzxneI%lp#x*&)Tknv5xoCC`d$mbmRC&3iES@3;`U$Srr*e$^ah^~cY z$s^7c{-wfy2=P}e%yv_L9b)dAiVJ|1Q;d{W^hJOX740*)bhK<6f&hJ~8^Vpq+571o*EK447 zuJAd(RsSO*Lmsi}-!6RW-)Z4Vz^eaw;gd(K`T-r62OQAn5eo7QG&ooI9B=nRpC1t! z@`%;vavtb@J3(Z~Bi6Np?l~@qUc#5xw{IRbnRjXf?*Q=UBHOyhEi$guCk1Nu$| z=qd#2Vc&^!g>U*U<6_nzWXL1dejPV1E;2zA5egt&i+GY?M9vk0YZ1>EOdaP4rYyGx zmYsu`?bbPF&VJyNXU={U2C>~PHxdx16w8uFoGW~=l4CSWWXL1dzEo01&QUWh9J8<) z>&ak%j84JF*+KM}eIVbLzXMSLFkhv*TQJLU?<1f6`iWq+|3$&9=S{(^|82o$Z-c#A zmU|S>6~rE}IbQ*f2c9APB4Fby!KdkruLO<)8(#@L71;Pn;4)z2D}lK+y&-yH!0!sa z9hk3@v0mEjBf)%ijIWZBPrJ@W&^_%tz~qxhtb5vbg}(*y1`E#tR-gEv!Y7Yded0XI zuu~wGr+)H?bzb2UWZem$(JfOFPPad(_ss(A4 zIU+LT5vxpxCBy%djJ7g7V3i3{M&@~rg|jUTn3Ta+MNUDO9K70$K+L^lwqTaytAFHE zU#DQ!^KHRguOS5W>1I!WJb7kM5T8yHP><0^d9g`_@Cy(VYhTP-5*f1}qAYo4KNS90 zq*YHHF!hs1ta?0P^}ox2DMKEy`rq-u+WvN6%8*B_XA<*V20m?5grN1_2uykMh_&8} z$sdIe5Vt&H+Ve`mv?uRa$ZtU0ESR=!6HFWS2&R3^eg*kOz{Wl$03c3Z>LHI<&vJa+ zCI33aGc0V*b>MFTuUh!T#-1?%&^!c|C672ah7XX3;BwGG)JqvpaIWy1gntWSW7|pq z5bK~kdBnNG2Xr{6NwkX_Fwmb@G#beC_Y@y{h+N#mkctr8;Rc$0)1?AX8G<{)Kqp3= z>tj~w(#W7W2yUK%X5VpfP9W7HxbUr{r3fwu0@Q-wV%?EeBe)oMQa6H&ekr-Gk64ZN z%d}tmXlx=lN*U?zGz*({3ZM2@nOY0e&aT+Uv`6r_EdF|8vDgOVc~9K8TWM-zSY8aT6n94 zpRn*Q3;)W(`z?IP!bdHfjj`2zIAr0m7UsJoD#Q0X6vr$)+rl*#uD3AX*U_?_7Vfq1 zMho{@_&y6iX5ptT`~tD8oqZNQXyFem>|oBSe9*#UEIi)AeD^`+&AT+ZPA&dCVp+4b z7H+ceY72kM!s{)3n}zw_kLrAwSoVQ_3-7it-z(Am;edq?TliyQ**9{q78Ub*2F0F* zCt0}6!ZR&Ahd6|V1-jP4OD)`C;cg4BvoPPoP(62Acq_5&X-`;qmxX_2;r$jqWZ|P0 z&c=SDIztv7YvCdbPqlE&!m}-0LoEAky@gvW+-c!n3vaY=pM~$U@M9K!nppPp7c9Kb Z!UrwB;M>2LIMdU3q(*b*(C{y2FM$V z7Hf!JiZ!GCR+_o_TrZnP;APW}?ju)i1BQKJIGIP-9$^K5d%Mm!4sGJn1|t^4H_ZoHo_W zP!=aik|s&EFNWI7elJP?|Ju@UsG;K8sW}zPSC>~vrf>Et?i&&%JZ8+wiiWDvyFxWJ ztCve0uB@-9kSZE#m#<#6s+5ORH8$3kE?>Q}wx*(SSX9IE(5lk%)vGE>D_7T-u4$+r znv(KDV>XpMIC__VIsBulh&~H-s z%Fx=HP>WNAWT`@J+ljPWm(457ee{;chQ>9w-?8@2yV4C` z#?))Bot8QMs;h?-22ZvbQ1=y6FWdPgOYAz+t1XdZUHwLZwC#`b%%kBLX~Z4BDp6)j z&s1*Cl}1RF(qG)8qSYu>Rby2tuDRJEy*1{RBouV+{HL>?sR~C+zgoNJq52ppsjsv1 z+z%hFEV%Nf^489elh)MMp1Z5DJ6F1Dk*c;<`HPCqh380fD^P6GB6!r;4U*LUs4Hg6 zQ@M(yN+@4d9ct8Dj}%Ty4ywwev@0rSrry-pTJ~|$BIHCClrnb>K%PI^CL!`xzZJPb zmXJNMGv!`~Yp?c*eArkLo7k1$JToo*eN~D6jH!t|pE9!tgfnckms^oL8FMd>LWN?~ zIMtE#=y!v`C@E=U?HW(z^lNK_i=KI~wr1hHXKuairkfFgE(qt#!F;K?O(mJ-IeG^)|)0_PcTbkAqJIoa8g)O0=UzghMF zXKrHGu~@C&-)p40_S;qEs4Z3Y+T;P&DM`jDCZFZNUzmJ`11FjMR|4dZxc37VXx}8C zBDhdVRXY;1oGGqlvV4+4ev&v!bsGQ8Qq(~E!}6ags9)`uQ{=tIVZTF5?D9CzNMCDE zr+imzajM)K^4j*>j@ewXnwlY>ry^1fH6uln&k?-XP;*pU(bO%0_U$wDRKIbWCF!DS zRW4L0x}`ZwO_AllP~sH--jJhMe0BWd#)?%9AOkeog%4_2Si}DL{N*B$~FJ3geG(QJX z>FMd$OiK?lRqCZ2G8JM{7o4mW6TV}*#)!xsM36Y;p{9u znCqoJoZ{2ttcbx%i9Ws3rl$y!;+!A1Y7mI8E`Z#r3t~3p)>?r;VaBAO0ydFDp-Pl2y3Nj z2W<7>(}2lPIRsnv{}~0sP&gSHV>v~*-v-8CW@xw0`7mZmf`)(f}Ff@-S4lZ9%g4CTA03=1~d?7`q6ocOR%D{XnGF(ge1H#A67 z!25=#G*+x_9R8W=`qe9W#Mh*;%DI?%=vRk_Tj@asS5|=0nzEJ?)G3@t7gaz7&@l5` z@YL3?t`*(%FZ~i*L8wM!ONPcN(pYoUhroX&UH-qAuJm6__n-eH9o31<8d!n}*U4nV z`Ux;ig6Vz>F5!=ru9d!4%aFg5)vNkYmNsSVq<_XOyS|)eqoc z{VqW|D-Y%GM0qI@_+rH+3@fh@g-|*w?~;h}Xv{6#11Oz9qsCcW9p=Arn7@3Oe--?rVas3>Q5&LD zmZ9>A9$AL`mKf=u3zbSsD{EFm=&-7xx}j1kEnT^$rlB$e0E8R@fY1c74V4YmQtjQOBA6;IU9)m^c|$dov8KHGc7pf_$q@)^ZNaIJN1MY*bcA3UO~O%v ze*pIp6W$JYzX=n6MV8VKA4TJ2!8CXlj8Ah|hkLCFKL$6~gr9;t--PK~iz8qf11e`T zT#6%@#*yklFwq>!PcZRj&zkT7xI0Xk>PYD*%`v!SthQ4-N1Ld+$b@f(dy5ILfcsMu zCjJVffTs_^9cRK+U&=$}5LQzjg4^K|Z$$8FxV%3B)A~X9A=AfUXzj7!8vu_s7kb_g zfGHV$kHTrJYE78(Z82dgk8o3_ADDbtN>5&bN0{Mb0Lz!)2POzhX()`~5oUNYU@Hx8 z7t&A|!B!d%rE%j2hK~`_cuaVN89o7i*%aN}3Yfk{VFZsb!&4{?RRHF8SV}`-1dlMo zo6PX-aMNIAb5Y)ChEo{9Bh2vcncPT#Iy1rycTgJY9GGiiDGh}YJi-j8akAQ2Y^I?wf~__#Gs6jAXe?zyB$(x} zR3?QHJi-hID9ONQGQ1AJD>6JU+DL|vwb>T(TR6|_W6}Yh#)SEJnPpNRS>?}+fb$~Y zg%NOB1Y8pVuZ@83i-21r;I;_(sR;P_2)Hu>?u&pAN5Jnzz-J=hFCt*hdzft;Eu)Pz zpfDbS%|1+vfHNcDoCvrm0$v&cS4F^$5pYukOgx+Qtw$o@CnDe-5%8V}cy9#!dxFie zJ{AF=ihw^Q*u()l#@T`sBH-i**b?s0*#+dh|5UDPOgFB{L}k$TQ+bc4 zNdF;!SI)kI*=Yz!WVaFg7~yEc*nKlNuHFqlPYb%*btYDBsh7WGoqXX?6^G2lm}WdV zL+ZX<;wLg5^I&0yXJSKKL|OvZl-GK~%R>!~p2|>lP27@7Uy1|o9F%uioJk{lEXG~m^=9#!APO7i2MV=|vUp@IEODLSZAg{FG zhFSiCG|!6C#^tr8^%afvcMhf+USpg~cpBG2+_q|!XVvOPPsQ5mhQ^2j>D;0MxlxND zANJIOUl=U)Vkd-Z|6y^`|Fpc}^$j)PR0R#k+M1fzj9^#83sXh=k7 zqrCs?`e1w_x@TDL{9SGS-|Mrox?yFgae0*|wCYZdW#W)&$e=`ic4C8-%A7zKQHw(u zUtlyx*V(}!AKqbz$)`k`r-slqPD0AkMoy1aNT-@cr6QeTdM9 zBL$_ay%>%8=&4=PP&HUNK0oPGgN3Knn^Pn0>*h#(#R^O?h{UNO)C{VfAQilQeE#t+ zAo?KELJDrCM&gLNP=>Fg2ZN1AJnB0*1ZdN++GsKDyY=f9{-WcII%r=F_hD+Vfp1`SF7&(;U)dl+eS#n8T@T4TH}&R=t_ zid>+Ef3M+AP?weH+`(oLr}51dtgNm9HM&@3d=Gg^oq*4HbLqSoPxK~oZh}bAR2)q3 zKhN(qB1_=NSqi~^O~uU<%a{Ef4uM#Z#sb!AV7Qnm)M=QS#8br$;?MAUS|tBsO$AN} zUJY1JD|!U+<23whh6L@i)(75Zn$BV=p_LmHGR;H7L!`2nFSLkk5TD||d|H1KvxO9- zQbUu6;}Zei>n)amq69qH+mb}zzn+GQm}@>!8=wsU-pou>Td}IVdesWEj+UTD*J7U5|w2?trkYLbSjC_F&VchizGF1!zGe?T-0~qRUb(HkY~S?-HHsp|yx@rW<(QZkl$c*W7xOD6=EY|VqGJ9_iP^I~NuRvs zsJxeo2yY+lk1=fQojNzMyAq<<*@0##g?UbuGXc`00p_p^cY!SrM zHPkORi50Ngx zW3Z{U!e2&wE&OCD?wd?vSJUy(*h8V@?og5vx_rM~{(v0?I;*E`N77ZLTT42mB_G$u z`r4Zm?eZBe=Nb7JOOe#*wnXTi1h&lSb;AL|8DbIb%)a`)wV8j`5YtJy}YjI`|c+^Qej4MVg+Sv)46PNG>k~ zc@4&(&osR z^qMxr0d=*rtl(v#+mscreZ&gYL*dK117&)*N6bOvL)1y1Rkhc3SUX`1qV;?D9-ViR zwanl*_d{o@#g|+*Z3jNn6HA{t$I>PUZKW(#8(@XbLxCc_JKfZ(`iOs{n7(0tVFC(8 z`*>4{evqGx_9Zj8W?rm}KJOgt>ukiO!IF%U&neSSVTuV;99b(}Hej-3=o^$T5+5l1 zf6G)w6qMN2d7&$IeQKzG>&czHn`m^7M)m!BiTyI@;FU`)*O0DYqxKrZEbWw}lf|iZ zS}&9TNS-g16Ls3FOpvX9zwrvYk_8?w`0S(3FItcNwe<{h&HD(;UeXl#ASFMlxRue` zubKQi@)at^i_Ghk_mfBaC6iwxK(#@EEC*DemwZ{WnxnUWGEgilvh=CpkrLi!YO_c3 zD1OO1QcT56|2)=lud2*5rT7Atz{tD@xhPdQ)Xs43*+Vgq!_ni$5OELtCjI7 zA)}e8_GM1_5sD}o_`vHl?m>6nEB}B3pp95E@q>~#pdYz+)8VZrc7EFBSfALH4dp_o zaXZr8A-7Pv4VxIpAEMnv$H{h>HnHm%&B6=*lLj#MJUgw#Y@T=aW2TP9I-#m@X}WUH zX9aBoAYy&aw)?#C%baIsf_@3*LisdPqd>1bZ*Ji@QMq(~%l>6fzFgVGLMZ0tr+%6@ z&>qajcP;!LJ`X6|iu<~GV9fy}`(H5@&eOWTsefnh)}z35_qoK>_3k%Dfl-s+r`}5q zX}@RkdmOCO4l(&Sfq8XT=A?u=XSUAO1CQ_XjBlN%pUH4dFZOuOrD{emDK+wyd%xmN z9I5p%!SVsYUtwNV{yi0;y~N}<2mpe+ID+#jk>U!p|J5f;i;IKBa&|_-K0Von&k|*XJS^Ybf&B~ene=giYd|J168m|V2U3F z%AFKb0T{XU@J`1j&KXHxV`!Z*VzvE>D#b#B*&Q6=(B0CA*E~W^)E$gd6Xm~AW%dlr z^Jk_llV8gaIQP(i^8V(u6xY&yU@MaEo0DKq-hN~2sIVf}w|{lVLvhWDGBf|-N0go` zq$d+@UHX?_Bvh!17&P~QeXuOfb3Jt2_WtJUhL@FKl@%k(8guQF33e3J>grZxrTup? zZ4RHJ1lsSJGb$MkHApcQipoJn4!8eq#SdER6{WfTp6@*T9dyhmSYYiD?Z& zoaxv2Dz5BN97@Xpe8DEZkfN3-KtR=&eBa@vqN`he?RBcQ!1lF5akzhJ#40DwEBQL! zBv$nhW8q2Ht5I#yYu#1RlOMK|GIwK1G@~j-d84egKO)_vZ%TJx#My3yzZUiI z1YFZ-rNr9JmuT$?lPKw-vD!8!|ALYQHBX`9)5hwqX*Xr?b@fL~-pNa9GgoRoG*0^= zlYd5mdgu!65p%Uhg~Hkug-TExhupU=GV^a@@^(s^rDAs2QGQs{D94Z&$PlR{~wqu@^c5JWhrsp3_=mDQqejyL1UI(kzAhubA?PMA}JQ@#yp^ zQtZJb+wKL*h8eW24A`$M86B?#Bq5~0;?b2xdnB&Fj}Z?_Yg=BqPV;rv1`@6lJEzAq zqo1jl1dFAB%_DZ6s^oJ?q2IIOH(7o3Z|nWaO-;>?dv0xQsoESX&6w^h9^CAxim%Hf zzsdWtD-E!kBOf9kwjVvr*Uo(Yt95;huPf~}-Q?W5S(cn;7u;LRA?>$Jux{cvrOUVV z7IXDdW{#dbRq=KEv|lj)FThKv(Sn1E#zl*$U_f#lO9CfOP40qt#292;iSZau+kj>lfV z!$>4f=drX@O%NNb@;)hH^5e0%1i|lAWGU&{jVYS(y2(tGG=G7Kj zzlSy9JlbJA+`i6dyRIpNBo{H`Yo%G8bDp`i%VHg{VDDz3=UMSChK=fyYcFfrN_b)<3FJ^{Ik>_A2pLZbI{#P+qjF%xJ$;=Q0nZ%4hx*^TJ=OfbYLI0Sp)i=X&obQX#X6$<* zBmhRcYwhRt9I@nr#Wy};j`Wxex9B3{FDx@-x=YLehwDnoIKg5v+tIj!z^fjWYjTs6CvTZo~-Xvc?l+t(ArLxjO7wc-zQ7ob>Tyx ze3I%PV0{@};1aMmwLF+A3;ttL&?&eFpDA!ba~&Q~>`ISU@BV#Ccu!FK0Ax__eou5n zN6>hWWxmn&uJ*1eJ8tu-fu6sz$^_SpR-S{*=1Rt7f|LOa>}b&NHyUU9z`W4CdFN zjbwbqv@hs(VXUm{+p*V+6dG9{gF6#rY8f$B7nt!Grb~j)rnZIKW~uf-cEX_O5kojs z^tcrBx+7vtrV_n|O_(f7C7mxaANW%j9R-p`KIqontDOOzX~*oY6|>^SiRs1>JCmRl&PZ{n3z#~kC}V9bSi(-BW!c*Q`_2E z+oMljb}2?Y=#bpIqVP?zudLg|a-$`9wN1?UKFHv%SqX3?-jMQ?jdyb^F zFr$TNK4;$WvF|dlTD(5bQqsNa4{vhR@m*w6#rcY7!+BEf8B9!Yhd-fsHPP3VAULUN(sl$OT52OmYh?0c9B5$jqa3JbLdeo{ zoNaWuGu1~7_sJ39pdX~zHXYDrg0@z(ZE^O=zfz)8q!i8Jf58O-l;_2Sn8(Iy%bEOL zN`qE}27C286tZDIlWzfesPrt=ma&xZk;F8`xS0i>{I=Xg@x~ICy8JaA4pxG76p|d} zFJYk@nf`LZ+VZels*YKb)4NclCD5pMuW|4A#E15ki``hy zQMN9EcG28_1nn#P8cS_XfTi?gX%9kfju~dTB!j2$A~T%aR#+;R%3lUrd>LG#kMtdj zE?ab!zG2xkz?9F5gO}&G>PKa?U_(#o$WYn;*M?{%wZo$Mk#OXJx(^!MTNfMZU$07&#@k2CDtT{A*F%t)7C*>Bn;90(%G~J_4;83F6qi~I zVhGx|ImWBJy0@g?EktmWd@-s|5KHm9bt5}8w?b@scWz+%ypa3?VU>Iz)3d{ZazY-g z&sr`Hj{Hqb&nZ`RK|0m2kjBB~EH^}6eCrFB6VlM_EEsJM=Gx?Es8Fo|oMvEanGjLS zwX9wm)As?U!4rCCf?&WwF`A|OzsSSk$Zd2u@?*-kshVlk>`?ywf}|Q%thkaDD%shM z`s|JRD^-Gs%F9_;D*vJqS;KUE!-=RCV(UwpI_FScd41Iwxs{4DZehhst^7;%SCZui zc6hYSONIdCDSY6cKe=Pd*651wq|gcX+)c#Fve&`D|C5 zv?-sp{q#`2w_>yUuPr;;uTYjbm~VkJ)xcOJ?$Xg0&`;pm^v(WbIq>7 zMb7L1!E1j>1r2U*%1j#Dgfv9g4}jM1FkLu9j766zkU9kGpmv7Ex*SR@u93tlVim?y z63di4S;IpTXX#UIZH~0IBJ6OmDGEr=pcEgLMy@q?!r1Wo655i+@1Av~cAOPrLG>+c z6T%LxmHhBT!;$_dT{px=XI=LOJc&`%hFC77+^bzYxQ0FnsS1gAiAbT&QgSz2F(kgc z3i{~uKn`Bd`MP*qSi1w-y>)A#fj2CjnVj@jE`BdE{nwS(xE7jZ4Yyf&$(0#HZ(lS+ z$|EgXQgEu}@8Ix6L*nVn^w3U(84^$VNn?)d9E(Il;zPA~WQV`0G%VG{0>2?WS9yk# z?$Gv=s_Mn892%Y^!pdv!^h9Q&B^ zccg3Bx?Z3;ph10xYtleeVhk|I2KZKmbFCMPPeA#{U?C0TJQK-V(g7C@!4gbfO7jm4 zolAy#>-yK9+;r5AQ+NfE1XW4($FwbITbG&Emf=-t_wyI3SxeZFygOalUAB}68D~e^ zj$p#Jf_P;n*GnVAQhZQy1|)T(bia8?WnSWCsdpJ4G8=vL$?=!_wZQZ1aqIZoJXZVUd`qHwvn6elY$G4P)&a8OA`>2-D z?=m_<;JRz>Q=d4}+^wHz(4>)6)D1O6Ju{P^lAf03PDKyglfGQS-cR# z#X%Q|22vI?=E?LI1rmxf5}I;cp2cg5GCWPXoUMC2;~^X)evXeT?LTtINCmge{9)RK z=Jql*T8+VBV$3gcG1pyL7?X5IZEfSU=RHY!XQk`bGNcIi zJl!*ZElSMu0DGYU6Ye>H_k1evjl;tDKGhvt0dMq0oWQ50bFuV`P1IK$NwrjYx=U>~ zE|{XNwq|v7rd;I;2keT?zSy=zNwo!LMI}kfEW3HcDDo$nnvrNrP_f6#9hW$i5fyDa zkTFlnS6XJ(OZNI%lJPO~f6TD^jg-0&?T@sg#G${c=_Qve$sGI_Lb2NPy8QJ^Tqlcr zjnfJ=cDCt?UA>~O*%u!L5!uKd#vlR|=%|c~niq&moBaH(z3ZE|ubuo zeP&(CEqUwXbg^uv+_HGRZ(NlBkL)H$w9kpP;Ha`k*AAN}R#mr@t?XQ}S;wY}B(oeL zq4_cSm}A|-8Pj@CVD75I4(++_AR<`v#gG7^M=PoL#JUxCF&c#CA#duz0oe| zVsVvQ5(4q|FGj10d9I|HzJ*ecOS*B3icdT*J^|gVaQodWwj|WY+xI+4x)3HSE^S=T zU)g$fj1v78OK~~YLtk`YT-2fMqvO~o-UQW0JI)iupN43-p;D*@>5ZsGcK0;{VYKn~ z`dgyIJ)gNt&Z_OXFEObJ^duYO^8#oX(Hb%|UfO3Qh7%Nwi|&k1nf3`Ww1HqCut4ul z5u0ucJBeOp!=}N`ge6+~EO3nck(T1fTIsR@lP!a7#rKKcQ{I=5_Za*nZzUSr2}^0R zVXeHw{gm$j^6fC&0q_5+DfkDaoZi)O z)elY{v*eVzfDD}dswgMnZC$;jD8~~Zy$`XI)NqW#RXS4FYdG)ZB(hL}I>uw{ZBhZ@ zC#ZDL$rYVaH)&wB`59{JRt?HZd^ef5HFFawcFgcXg9(S89A}Ha&w^1$D=#V0zQ>I3 zG5_}&LIl!ALuMZZDP5LYC<)aLv4PA|w2h{MllC1ZKS`|$ZGdXQq1?Gb9=G@4;ddNe z{P<2=&+3|(I;MHf(cXu9pX~pI*gd9d+B#DZ2R)R#nEXR3zk<(sm4lFb9QZ7>{<6GXS^z;i{GZmWs2i$bSJBk zgw7PL*CacFZp8)v+0U@kSFV_U(%9{p-hK7>WM@w@#VM)rpLv4HJz?c8_oAqhNl{)Irx)sd>FGOsZ^*uvGQ}E~=Za~Z z3bkF`DW&V}DaQqC-+^62(519J*tP}{p~I}nN5_a|JO$tOsN?7p3zGVhJkY)qGsq(~ zDuvQ#p30>g_8OmtT7H9gj}TMqg_1+_#uI5wq(d$)ivdj`x)*7w$;S{zv@jceME%f@ z=R~ZqR`@-Lr|_R5JR2~D?J&bS5mpPh9rggMgfi%S{}{n2b1EF-Ayinx1#%M*ZiT_i z^+3}IfT4H~0WcPgp?qIw3J_?e86HpNPk^<`1%2w>M7o)zr71R&T`w{vIjE;ibY~~J z6B7seI&eDcQ~M9~mG#{lkQRKgFenB0M5*y_PYEmc)GK$jMfZJhW(tiNUl<`I>f4<3 zQPW5Au@gq+Er)+{i?ZQb?As@v(1U8fH~y3VykyUIL42UU=pGn>s1zNlvsm^x*@1W{ z$>+|{-VOxpceOkr^vE!w-GNx1R2}z8qOxJ4WIPNBv<)>nKVIq4q>>y*SPG`r^*!Vr zc|1EP6e{bJgS#g$OQ{o-W^;1T({%3P7YeldnQ=eKdbpxSPrL-elW7PgjTBAZN;4L2 zJ9iDEiTT$vp|P8LluX3zf>s#6PR?nHt1GpKMvMOYN^r8U=#m zZ(zlZEK8FAgUSX;Jh{$mo8G1-1YC|!T^CvcOWjIAf2J|LL*76s+{ZsTS)8Th8QKaa zH&aNacIpk)*%OEBA@V&GfX;gNZ*MCB>8{GrH$n`il`?-RD=ua7TJsx+$G6Q|JiaZ; zYx9A(ZlusB~)Lzs~EgB%B$5LTfJxYR%QHw@LwG(6#U_0klrKKrgS zmF;U?$162o<%B@VT)lF9eWfnMRPIBkPKJ1e1560|Gc~YuPJE22v2lExgQ_t`$oV6y zF^$QKcs2MhssRxgms6n{L5kSW#(*PSQU&)03ewV;KaHsi_}+<&t2R7Fw2hhEexI&F zYn)W<6j@g!u=3D<^nc30AkNtm-?FRt6D(Ku$=BFO)tr(dFB#%^T%;b?W0%0r$C`VD zLM2mH6SK!}u{I0Vex0X>mNpW8LG^;tCC;-maHiy!biXY{9@L}hg^?z(gf2 z4=*%!&l+7X*+$$^@~Tsuq;L8iSc&^ncfQVW!|CQJLdv9ce_qn6YS@$>=O_jxH-5tg zBIs9Ha?aw!C9>FDtbc{6(x#V~dil2eTa^6LddHiAy^nQ*jIi@|w zHm<0@bjqC$`DLnyyEzIRAWrIZTn$Rpo@K_*hy?wH*Rg{c9VW9DtxEdKFBnf#hj#a_?npCHr+n((lh!{|s%(c2Ey zDTci* z;pCWcS9iP~boO_wshZz$EvVKpY7HLQjTb27koRn>l%gH;z3~WF<3S})tJ;1BeJ&`^ z_-u2}>q_pQnA`RV@X^@E{7~y5g_HwSO!Q$kN!kYmp6qNIt(e9!#jmiNiZEb(Z{h`w}{_wODDAx}TGFvTTy>BBUX11`yz92MMt$K2&BCeBP* zIz!Kj7a}7OGnWJazNJx>V_)&V#8Q?DZNa0;7n@U-BBS5htJ5N?irIxPac%bv@3C;a zRNwxsJ05c2jQH}W3v%~k@N=Oqqin>j$ZalZ+fsXKY(E~Dj>dHn^cQ+5AM&JrKxdk)dm_r`~Q3BENvDMuY0js`Oq?)mq!h4cBG0kU~haL@b3W1o{vJG;KPgyh@IvdVbN&f1<262 z)A-VuPQ*Kr1UJGKm|-b!iDpqg%Tiv#c`_8%1eekrqcTz6aATz%9vC0_j;e5Ag<~tNk2w;+?QsDuXtO7+vt(DI)(b511t;j;rv#;^>pEOh zLwlKtIfCH@PF0ScsCAoSpyDnToS1Xu8h!g(UULt|cVa>>fM0ck5-tw&A)59~s?VF-hwHPTwkZi6K{dmn zPfu(+keA)|VDVF6hKt%RQKRdg)ZMg=4uE&3l3@Nh zszle1nf7C`Mshv^LK#)jmrmX#y}2!+XveNCyRzTJw&@X*ad?XIh$S6sr4(U6!AS2= zXw(Q2N|ZCtWvc!?4rN8sIW(_s43T9YLphvI*ntOTnZ#$4sYO^jEcwp>4++=y0N2P6 zOm80^gY_T{nH{i2CTy*jJmP=hClh7RdCdC$t-YI$DqRQBSBk2p`uoz?bwh&)ay|Fm z@hM)nZn6uLg6cY*cA0b~53*ce@_l{F!RFUoAE^1au9w)WV-31@qmJe@nv<1Di3!?o znDHAX)b!R30<_H23USaWcaNhVHPVDy_=xNOu1rW_SAX^JQfs zlCO$xJqj{B#gh%p;XAnm5<7C%b7PwJ4D&hEfWsMd#D^Ut*E%+ixnCBD()O%6-Qj(7 zY?~)DyX9T4b7wm-%k%EuHg6rM0WQq;;(DysM*HCo!U^nKUSZgyCL=C28UF@C5#qqi zw7z$t=eC*ow=h9aQq#ocM@L#}LSM7ku@mfnfZ_ZoFd8pF3dvwq+A`&}NxLUHeOWt&#RghEMl4_({iJNM}C zn%h)hguq=wIoeCoeiKxNdOTxYcXX`O(v+7ld2}oUeMM|t0K3u0dVY>f@6BQMB8IpUqSz;7RV{fSE7-5_{zs!zJ-z^V2-C&3PxZ!Y=M$54isD7V*0Q%6GLSohOv&<9I5*G5=kL78=LOUU*9y|9#~*ZfJy&nh=O66wV5yeH zu}(`E$ieqvDc+WC5X}1_o9CDHGk{V;6n|WtdZ~2R_=N z{|OcTLP*Z_DLE~NKu@s+6Kn3ks+_?(r@hWe=}fygQT=qQ(7J-&C7&Xdi3urw;}PbE zaGujq{3{dl)D`_r^zT^2pmY*!u7^(n^uUtg{Ez#1)TVRn;mwO3dPf>z^*EeaCgru9nSMi2d)<0$9GwR0h|M(e6mF z{<-u&N(jeVBk+niR0&ExMH~NE6{rzCNAe@hpVs9T%o;N ztgGX>j?H_Od2e*g{HZNg&T`I60~d6j2Bfe1r)imVhlrQZrr<{ODUy|g12=cZkn((P z)@>i^=AaHT4b4TqJEVL59o-#|i;A7n3j(-D;KyM;KM_rp+mtM4L5`4tJLD8KRf<(3 zK0(DVV*)nI5_qYHGo5qND?-mQD4OTmHn^pjsW+w+V*~U& zujMv-KuxRv`5R3+a(13E=Sgqd_fSAMJ}ro_O1TWzIk(5H_202W-$2_XCDxxGYL;!M z)ygpm8|=~xp*cTw6LrqKizp^t2k(l=ZKDR>I1Lg z!TYM6Pucls)4i1@v>nPOxG&xm?+(Vh$H%+RIZ5G+>vGgPrLbzlzf}sTvJbK%r<^J)P9@g0%W3p5FmR__%1M~BB_=OE=0OD- z|44C=di~(btfdT0wp$;qfuH5)=X5&C z>8$RwRVKRhE{`}XAb{^`G_bOq(rP;x=rDLvernLIjX$JKIIf8cl{#Ih#MN};8A|Y9 zRHdHt5sU5f7z?s77y}Eg!kCcGbEHdfBl?+KvTGw?(u3ZJFmkC3ivPbdoL|K9g<S{V67tPx@BnyCZ~@ z1()~r>~BEuv!uhR5!=m)f@=b$E>RlUnWk2OeR~Bevk2_IZ7^B zGS*zBaI!BT%-V}u>FLf9&1*7|{1Ex+%$4$3^OwSK)9uef#lmNouvU7m*@C+^ij?ll zk-lgb>#hI48BR5EUm|pronIIQ8aF9nCGmgKq@pp}+sybQ@O(Wus!Qwh5(H__bxGPE znAnDjUx5mo!V5az77#2|UpI*yA?LD-d9J<23<_RW z_-Vd<3QKd>2}^T!w3(k=GFJXF&|k_oJiJ9D<7c53Yz7S(8wxA1BK}2}+VD+zEZS`q zW%=*6tyBW-t=UA&uQ(pkl+ZY^djlaI+|?o6m+y{N$JK|%AAE|1LrFg8;j>S&j*R0s z&|a|ni&AyaaKCfIC&%cbTr|0jchXt_R%=c!nw|e~0Sdep+*sk^ZCbKi&UThF6y7~gIyD0dW1wp*gf2%{Ded6+X+iO;9mfBHKx z9(RyWrx(QL{hKdzxj1n>?k_|A8Yt?WA|}@nAbx|+l)N9Qv%({<3K!mv|7VArNrh|m zk!e2da((_ZEtknvlvtaM?o6|b`vIr`zaF5^zs5UKoV@mIVs%-xzJ`+PLu1i6V+IRo zW94O(`AelFIDqfpOdfX_Jejn)ojshe(%l}t4ftfRmKnR8ogFt1Ts`*GNF*$#glL|u zqX>T1+Ojz@G#0mRL&?!67*foOOp#BXw&R+I$#V$Qu3*MEjO%e+*2DFJSroRRnxSv$ zVnH@}i!WyZ{4+%;*)#@bOS`AWfyKIxrz>UJXeLkR<&0v+Xjbf^qGl(^*YNloxy<-w z34C;Yrm|MAd`|A0ylwy(`Z-&F0cf!~Mh(O`eK8|<#l+(rRC>`xC%=z+(qHuKc+~UE z?125Ari%7G_f@^WC-;R(dq%8CoLN-S+Em%PEBeMj^devMLUB?Yh%RY*QI>LCJ90b_ z&Q5zY#^+9bA!b^VGig!NBDrX>QMqVG&oMUmSP9Xqv5A82je|>OxJ*(-7|9m-i)Gm9 z53mdV0nhcvI}?tM42)ZcW8SF__t@w>@8ky;1wGf__@mg=;!mRn%C5(uRB+05YV=z_ zK*+$V>#9fMmP%^zTIZc3534CNjdxh{xOHIhM{I1qWu4#*22XVPQD#apc>3J;*_Y14 zP8@W!J+JjMdd|Tv*nweZy|^$?cKzm6*X3Rij1%>D4Q!|BTJ54XSE8*GK!+)w{NI9~ zV9O7X%L*KDDPE<32xHN~h#)STpuG;)HKJQ~cvFcEBfzsN*yB|usyJogPgSI@hcq*G zect-EscmBydvV%A`*wa^!Yya?6UzR#@VE#R4UuR1ET?4;+;*8#&y2+g# zrRaKW-6sj7q2kK-Hhr6+Gx8=O8%ka`FiG*9@$K-9zro+dVj3pRg=WgPkGzK@T<+Qy zDBgpEjro1AXfHCzXwjd0DeD;_zt{@-1%H!5ut1Kj5%LSp(VnSkuXdGqLCiAwR+sDC zb@sJpu0PY)dg=|mZ=nzyR4O_>v9z1YhJYU26J+$do*`Ht2oq@QouT&yi9-{7&t8{0 z67K+PO3u*_LH=-`AjR4b*}(j}e98gGsg?zOStDiz0tYO8QS`tz`hcl7DhX4Iu_a66 zMC123#+UpLn(^2tTkiy6pMCHg-K;-wsC~C55sK}ZUg|K3#8i9_p5ko_;~@atv=`Sw z)Tq#Dw#0jD4cM887lR1j=zD}SWQg~kz@dxq;Qs$8fBmUtv-rY(5^t}=t+9MRZt$yf z3ozjio@O2Q9XQf{_;kx@hqtAjwXOI81<{!n$^tv~@LN&il3G$zm34L0fFgo%?n9g|w4 zo=i}F(R%6R2aiA;$qy7DRk`@jUA-~xLtm|Rb%s0d*!^c53G>=OuYPe<%YRixwYVp{ zV}lbfEtv@EH&k!TmmUeXevI?acC=TDHgOI9PWUNqJ798uX1YIzdyLZl14H~+q_M`q z<{srR-evikZ+x~Y^^F3`I7Ydf9E;Q4m&8EH0-F6zx+`7x_*B^fBmwO9O^lV#hds&N zcrVoddy~sfHBwzA19t78DXGkL;PO(eoTt^R_7pj+Mx~G6(p2fHt@P}>wk)R;XTfOJ z;4w(cu~=Dq2}g5c(~KTdqhjR^pD_r&f5ZF`<#RdxS|fGxk!Hy9Cd6gk6bU*off#l*GdZqajeEq{rH=5%I#Qcnbk)A-`K9!9?ERMs(sHU9 zJLMF^j~`tycqsTO=ErtT?5jX`c2beKZ?MHO-om11lrc3=lh}d zl^Bh?+4qXW8)!Yyvw$e%q2O1k#{0oz5DCmOCD(W+uJ|-dpVeBF(;66^>M1&RzK3i^Sa=3!zF|4a=%atMs$D0N}~+2bK|Tc%#2Cd3}xFd6NF zs0#NTa05Ub{eC#!zmKJ7@uOdUH(|fhc4$}voDGWvSkG`%vRUh7kVNrK0A8E^HAfSE zRR&ki`GuTMw~}zU2yf$ZbV=>%oZsmQwjNvLnp=3|RHY|P(sof1T+o*L5#u#gqm~>z zt|e3*Jbbn<*L}lh?%gq$?d*DnCH=?Nr`XfR{hHFZZkKdV%1-xnQMw{!s_tEO_r3PK z@v-l?N89llQ9HxFUC6B+@1*)Wy0dU}F4mru;!M1Xwb;MXDUNm=@AMsqK>H!)f5?2# z((%r`zQsn>&LkBjky{(Jy60tZpFr(}>+!t9rFaiV9XVoS(?9nG%iNtP`CM6{mw3jaJHdTIu^O;O`Nvj`I9%%WHjWyONGhijTYe795_r zs}BZdOK&~=yWCD@;aP`-eLk$U?zNgY^$1)m?8hdIWJ3($OCKNH4MZ>kOlr6ijt;nIM(dMis-s(WEl%uQ)akw?Hbp7X!Aj;Amjq*QwF@sb?KL$6 zASlf%E*Xf@USSv)F(^F_sd9p+?FdqKGd~7~Qvpotz5%U^8C~YPX&^c=Qg33t$A71y zm-&4O_qDt<$h3+zBXRKAv6A<`>`iR;WZ#dZ*}3OfE*iRv1twf)>}08Sw5X?##+~|k z4*Hqga=1h*$wnGlBQnhZS|j}Z#j)V$-EYKO3|o@omg2#PoF$y=)H~g}Q{9I5^Zh4T zuS;|;1los2@Ts38ju5?Su>F&OEUC+V#WL=>;K8kbAH3&soC?Cr-x|)w#|r`2TJ5T% zN#D7vP0zPC)i&O#RjxRmys^IhcT0P>wST3kcApxxQhIVrOml(V>FANAJGR(21C0F+ z9tQpCFIt_4)Tk$a1lAyW=B#On?uYS`=X-Nn#|G7?JAQC!y&Bz2FLlO;3+ySbEYLV1 z#>NgzEYO_7?)4uoHXn84c)JIEV&P&sVCpxb3&5>@qgOi`y+6vm$R4)YgSII2RIIaU zk*jQxXU4>$skBb`&zLN9-!A^I?m6{{#>?`m=&?ykZ0H0l3%6IjU+s+KP50tEM_`8= z+y{u=+PkyA>*PV)6NN6D8|QMmyEDrDV3fNeO7BWgx716xu8m9EDtK!}8VR2DBkF3s z%cCw>oaX-!9G*}n^Ww}sLA_7x(Y*0KB*+o;3aiu3!(As1I&fx^O^VmKbN~l)3idtN z9p<{eANcf5wD_1gx6hbq6Wtg4(xM61AS^vb;N~>IgrnD)ZoqW^fN~C?j8>CooPgiT ze;P35vCJ3?_!>8o-dkfz$-XI1RYVz-zSHza&K)bwO1v$1VEU#D>q%?vWLQ4{ z9JPZzTX#;EYym&^;3{s6a+>|6k_+6w0{9$IP3~gfc>mKD^T26C>ds-&+pK7Q4wJg| z)L-*3UO_ z7&0(C-_#_LYVss$gvWzBEOrkF1tLx)lUyFjBOUELaNrysO*S%J;Gi~%OB*H411Xz~0_HDZ z;$fzqSB6w-cfJ1sjc*Amsa6kYrrgjkB?Z8mD%s=j-LQ)-1AoSQzSQis8O%R}$xF$% zVJEg|8=j_NTS9&vsHP-q8O*@bBqe5gAM^Xn>lz!jvz1QOZd?sEA>G%G>b@(U6e&6M z0s7%e=D*T>Q6!q*)sSFlO~6gKSox&UuYnh`<9`NB=&-fDr>aQz;aX}hqb%Yp$fdHsk-q_V<5jciUo-Ik*dSB{P-LYt`k(PPRCW>Q6@7e`!lFt-{WqG(gs-9066)5e+oDy(Mtf_@7d0h1mw(D z?N}hL?o?YnQY-F2geBY;mID|}$(|}}?}Ly>;h{n<`S3X<-n-LgzIOH|<%oBAfwMEX65;Iyp2?&SK|;@;4OP5bR%+FG_eR4=_Bw71zOjgA-p z3gy#H=08J$F7rq=r`j(nr@Lfzx!7EJa0`BGNsH>P9R;5DgdhCn>(WQ<2fX-48hArJ z)es_?Ny_b+{>fXE4dZdW;kL=6s<36B5ddQ5YbnNb7X(vymXPZrPf`jT8V;03WY5_) z!Q*RP?DAxHX6Ljno`{G1122D8l+o(7-IgJaR(MK!4H0z1)2Qd56p!AjmZ#&#CWxhD ziaX(NnTC$5;^l~w^j1MBaq6Cw;VY2xwh}s=oAYZW`Vh-amfXjpv1b}=NamD)`v39v z?(umQ<@)z?=sD?;5;+u2LMbV9zvQzs|8AcTBK?V zDDc}w+X#w^T2MLs#BGaML5dti1x2NZ3U1gI1cWV^_xjG7JI`du(?0JX?|XkTnQQKK zt!rk@nl)?IJnN9Mtx3AXQF@N4I8{`6a!2X>aVlX_K9x>IQvqG++#_vb6)#RoHZ4^% zPPr%L`U>s3Cdv2Y@mrI3*zNA<4Dsrv=X{{wW84{3zlY6h9e%ZLyB$<<=}uj?*SNs=$6Q{B1CAn_ZYrt+{9Z)8%CcN$peRqj$}mySa7S zA6uG+?3+7O-vAiXSCdZ*>--e&grVt*U3y32Ipvk7tFuZTaIAQG$`-EacO`A+obsBh zlQ(hkD(i!48kTO?th@WQEqz7j)mLoJopK(PWxLiYj_ZYO*>RqceOojSiJC(Pa3bjd${p!U<1$;!%G zo7|K+Hp$Ta{PrK?%XbacyM*0Sk0mel89P{SlvbvC0#n@G{Zn;wJ8PfW=4Yd|ms;@a zD4H^M>|kAsLS2Sy`Jm!nH4PW@^FlM}dCXK*oz+=)R%i0#Tc0aBRmD|jcGjKgUv1cD zSLfKlRTJ1EcLvo=O6n`Rmy9-QL6CDs@`Oe*Q>%|Q`CHv|yG60a9m)Jy@w(DIJ0DB) zK=VH+KtJ`cZJTQKy4<6`_nWcB{f0iObCNz2;K#d)^;4od9)GE0Pb+l&=Jb>w`yQe} zXlG~I4YKVxBJQUU8^>~S^%2lbxmMUh@_VD6Q;OJ7dSxEhX0! z(UKc}-dTLijoUuZomiW195Qy$`t>JlyRG!bx>W1X)QJ9@Hot4tt z;MKU3dDB<)QrhHanFqFLFxqkKjPhg8O?|Vp8bR8vMee4Q4ZTxk-|?edO@$=4ce)!=qLbn|W!2B}NV~3izUTH^ zS>Jt6r0N<=+TQQCrEHsSpq^2)rSHDprKLm47tPStpSz!`|uh zY-g$7_;K)C7i+R+Z1I$; z8>GDvE>fT^foW?uscjP9su-WOQ`VtK{k`{5B^ zD7k-Fac%L5<%3g?>(fAQl|Ou4>C9`2ckUjTs@O7q5HtGjF^$pb7c_*g&h(y;@z-j{ z99j23XXWW`CfMD7KYHkzp*o|VctJz|S$l4ok}i2`0Pya!>b~1qbM*~nwa4!$zSh4^ z!CiCptLod5nOv?P*&FrXlAhN2ntPtdokU8?`z{@-N!iQRT>9F{8)t2OckIBLy6OGq zHzW`9?0Hi?+1Adwt#*I$kW|gAin_{aJ5Mbi{l@sg$^G|hhW2}-?JU`*y$WTROMhIizFhjOoQ_?mK_yg)=W0n%r~Wa6_jq-HMv#?S6I5rSmR-^enXmlRPCngmL5F6_t7PN z=FJU$LE0%sts2b^wFlbG@4L0BjB8&Dw47ycYS}*Zk3(o=-lq6CY+Jb8HAM2}3pX#4 z{nAZEUptTK^OBc~N`6qJn`}=#Et9>nX~^(0ch9qaKAfeuXSv@O^_0JU7~0Xdc({JO zo-pys;%w;{?XS^k_nT}@a=R82s>Qu4hHn3L=RMDMUi$0KThlw2ZEGJrqorxvj*UaM zZ7gkXp7D}<*1o){{F$bavzyA2i~X(D&nj_ub=it=r%#|-4Szhw?zyJBs;i`idS+wUyp+AB&AHvW0$L!1OP%o?}Y5TT( zk;rHfO4xj3_-n)kc#HO~2C zrWfnyH+>pm;h<-e-{hXw?{ELNbJq_$-`u(GrJZO0$C%dQ_IbDT8huZD@fH2cO5V+? zi|6^_A5#+dMXSZhO^y}1y=t0HOW*FS)AIvv>O|upJ>HPaob)TJ(8CVZ)2_H7b;Iv3 z`JXqR9DewoqqlBtTXxw=1zVY?~7B^GE3s~+{mEKMnOFG`GN$WA8O{+G|DL(ju?HgX|)XiM!TUfT? zk7^%}q>}bQyiCFN|BLK!ZzC1k{>4RmSfjwTzQ2a0S1#%3Ta)Rhdw5pquEul9+# zV-~Z2*Xu#LSE>elLf@*md+rToPyea&#nU$zPkQS3%}@Pdn|?ibzUsNxlOH|im+2|7 z7dp=$UUT>_lE**3cF|6~`9NK~`^DqwUw1xp#JQWEDEn2XejU*%_j$G^IfMJh6-tiy z;FYl@zj)u>8sJ9%>d|*p<=?5eQt?dBY0*02dC|^?`?L<+9pbeprp{PKz@F2394|lh+AZQy*Qc@28+9F9 z=mVn>?w^>SFMVsY04?5g_4H%A`ro6G#G6I^G8N^So%`m^EGj84Qk!~?I#TQov$F4Z zR(-#7LS|jDUJ9S-qglgy{R56`#%SE7cNy!}t=WACE$lmZP2XfBr&ZmQWuHS+8@Fq+ z^MwcQD?caVC{-he?5Y@heTfqH^y-owQ_TbZ2G++3wz zb5*|R+<6mt4a>;b+|TDU+nz* z+4{oUeKSw3+tjIdSxxA*E;(ze?4OOx{x!eZ?#SD%Pg)$(KK&|vra^gaXVK{Gx|}Jw z_f1_zP1&-3(zaVi&U^KZ8&g@mb8qU^n=jw_mycv7PgD0+Jmm06FQ$g-uG+J1d28~N z6fdi~5rMi(^;}xTmdB5;oxSa`KkI_6wtO=$0V{uaPIAtq*U^mSnoBFTEFDu?zHMor zh3Ai+S-#ER4AhQ@-mBbiOKHkIYPDClDkbxj?)s|VUiu>csMT7?TQ1a*GhzCts{5~V z-;JrBx=s%O&h6BbZ+iYsPr>O~xQ+d;PbaUE(V$d!Ixc5L!E-y4mmUjhuF_pu37+lm zZk)e;>uUF?&+ue|QurEwUt>mV7k^ckRtr#SI70)8;*u}@`O?$%a^P1=`u-|AJ$ zdNuPjoKkYPHcnpW2OKHQhv=B&nVnw#*gO9)ISaJ#xC^>RcWy*N{UPVP@#*B8r@J6s zpOXA1GOSo`bX4S(0JwEOg_b2IkG2ut{Qv10l~=34c24DP~6F2j@i z=iLvK?s1EKNcT(YvE2!ihv~vL`MrL0L-Om_*7judr}y4-6>V>lXGs!k_=o_ z(mx}?U6^{6M6YBZsQX>6_TQ;cA!PK^|4@6Q{|DvCO!Yzis%Q7p*KR6K(C2RTV_ot? zq3)?1bNcKN*G|dksp3s{7G1Y~{afu9UAw8@o;xzjPT#V(Gjq|kndXn{VLlCP^;+k> zl$&cke_Mfm!Lv{Ix-y=iGE&wPyO*`$UHzCldz9w+Oa9zTH;oMJ{Y3AY5l0`?XJE0O ztU65t`SZ8-E^n&SeXV!DFr|2E>h5)Vcl7Auy4N}@MkH68>N1jY|98G3xa)(uO?Pf; zUwZJ-CH?02_E!ic*Xf%!{-endV?zpV6&I?uv;L--Iq zQ((sUCpOv@+@5S{m@gL|NdpdIF_=h<(+3AKl`t9vu%~B7C?fsW5tJ(%ub6q#mn^enPz4enND&66mXx&*=3N z-7jqKFp3-PZhbg8{Z6UU9bXr`v2)T+%~*EboOGcc2n#<}Gz=~7yY}fvtDY&-#qr^vyS}cZwAa{vRiEpu`<#DD{DaKh9sG=!+|s&S@8QrT zr{+}#r`<&OyxBu^t$S@}-L?MRk$O&E53mj{zEF>!H+*B)VQ1*oHg!5jf3@G)Gjt1S z$;f_npYE)kv8~_BB`tmDmrgA!>D^a1FJ0bQx27}gW;#dDDtV^2%kp~Krw04I=Fh4r zTRu=ff^ER_ex_epzZbV|?pLZepzBw~?r%VM)0-8us+v0MnmW^;W(D5Iq0f~}&**0c z{a81;Vg9beJNNBtE1G-3u6aLryWife>!%NVw?Uth8!T_-o7arz1+ptx^}U8E4SU+= zKfUKfJwvWnh7L;3y1QobF1@k3ho|P;LVc2n!)dx{T#aIbDRd3;aPz+q3H z*!hf3Q$t1_k=d;eTRgoXojPnhpYTded4tV)>z_B@w_y`SoQzh+clF)u6bMHwJg<5h^fS8>OHR|4` z^g5{Ig<(_1l$X|)%o(N^;tkdn@VmqIe79`7pFr4fP3oT`KCV5pn?2K%sT6e2Z@xCW z;kM2tBT99z*x>3>r|~GByZ*ITh3k-Ra6|0sJBR<~dqriN{cC0Q{<42=t(J-#1Ki!3 z+>Sav!v(0DRn;Olk0sZ2{tKP@P4{nVJ9?FPyT9#l{J_z5byv}z+`~r$GgInDKfP(> z=%@EEDES&??f104Y+6w_UEiBaZXS4{TvM`o$+vDct7`4kFN8IJ+R!Ui!N(}KvO+mO ze7{_^taH{fy(lHyq-%nOCGQL={(AeMRPpBaN3UDo_nO^Bsj{X{9lyza16^|l%Lh#_ z9zT%#0d7EQ_m4U?(AGN|rE|*O{>ahO zuOsxoZCBNt&Wc@ib2^V1JGv~nU7%#bzM5U5hi?6c`!L(C`LmMGI_-J0VrbPloptAQ zCeIs9zQ40(SH;lj1Ko?VR#E^aonINcwCuUPdNuXJ+<@lBL>yX*mTqM!DTg_$#}dt)8~fHt54#?grg2&&T-wtyY=>7 zc1Bfaa>u~k-M) zdvf}0N^!TIOY2Ne0m}a|{I1W~y0Exyw)Vt=*+0E*X0L1de7&>k&`wRa-r4!-u~mn3 z)*aHB9?wdnx0gKgf+}o#@#5lNB~KZt!nRip?W`NxnS6Sr&n5aLy<+?HftQr0k7u2+ zgKM_WuexM9@9&!X;@q8=%uSEOU)4vib*}5(S+PBRtm75$KFj*1RAj}yHCmgV?yr0C zM-QD{m(qK*pU9S%Ur;+4fXZp?gUxIT8>^%?1hw>_E6 zeqHpZi*`TMKH|Derq}tpm+kA9ZywT~>3!q2f8TOz-;PY5)6Tj7u;ELFWKP~(n#uJ3 z+2+G0WctkBcGdYe53R_IxNctS`^g1??gDwmziMc=-XMnU(e==8{8)&X5c(X+{~Mxr z;`U@V&M9Qs$R0@ahiIsF^%!jbvf^5OGccnb?4SW9FZD0(HS0HgGQGX`BdzMcGwa)K zD*4)Q-H7?lNzElqeU|qt&m4RB<)da7-MH=Xqeu7c*!Jkx%hSb6>h|bqn$}6F!|ST+ z(&eKrD9&mp{gR!e8>!2FrcdLh7G@rKr?F3Y=G2GYd4FLtM5_CVK1|ZEOLy+io}8+l zG{n!b_DQwYrbZ8K-~BHE-IerbD>9M8D+C(<@h9@0d=0aeA*) zkGU70r`B;S*H~_>G&{`)m^PhQbYgW~M$1Z*W$sq0$**_n(V*gqT48!xE9`J3b-xi$ zc=%r#-6EN-&EBL+*}A@FXnA(PImag#Nm{aLp~ka%V{)C|wpX4RaP*E-xQ*+p2&gq~ zJ@44MvKytWJZY=vN&I#v?z+UuPj+h4lK0?F)>nq~Qr)gXf639l$bS|6{9#4O%XLa; zw#`=gCl1WMGdDf3cky{;S9Bg*C+$pKM&hn}-0+~j=u1g04a(HJn?J6vk~|WpzVSP1hPKF{KC($K#lEPW{ZfIa9`$muoQR%tkmCTTfxJ^)fR( z-$qV0YO=JgZ?UasvH6XEx7XuW5$xt9ay=5zcoy6GaqI_+DVtrr$m^{4@nRpJ;A2~V zq)(5D{I=Zkwb-`f1RA-_^0oE1dcWmoIyDKsYr8DpDc*1OXncz;UyH5$R$oJWe(`d5 z5K24NwREY^_bwmXc1`o?F+R3(O!DbAAMfz72z$SAgaEVlJ*J51M>ulMUO_ObbmSLyv$-xl+WIcB<+kF8(omger--{aG^ z-RpeX)^CZ@^L^U3^E6u?wJ$4Qsb6mG(R6ouf3087^55+J{P5W8(BzIYhes#d1fAJh z+pb>ngV6=E-wm_PZe8(B9}d_!)SGd-$|w%lID*c|7kvz@7nM2#lNSc&7a+r%0{o=_ z^R^4)yd2;@6h?*)Z^AHK6=2>pWPaW}WSF;O7+w?LwE^Z!dB)is;4J~ZIl#=W8lN|# z7~UD+T>;)5;70?zC%`WTm^X@;WxG2EI0Uj9OK>;2T;GqGww}qf@vjE^R z0jDy+RRKOBz*7P|HNevX%$KWeyX@M<~YZIOFARXm+*psR`BtuwgNOmKE6#^8Y6@hSgP&YSqb?wFPT z#lR2N4RlV&&OhjY%e}u+7{d>?d}juJu<_Riez4`cIq-w^Aahdwz`sM-bY2Yn;A1?W z87++RfUT}d13%dGYXd)cBtX$0zbIi>!+;kQJ=!5-*p^O zpYof2ZNLYQwsHpk7GeD?>dL=4@PjMyOLM2NnziHX3pilg*F)GTaKr~&8A<~`coZDf z)y%*T<^syqVc>5OKGOTQ1%5Ec4E&veA8gz5V&Df?d48#X(w%aGPxAf+fgfzgAa5YR z;Daq+-X>svFy|-Avn}w0?bz8F_`&9XG4O*;Kh-Cv4`$4Rer4bXo6gL@5ALeZz~3Tl z`)hOH2OED!;0N=782LUG_`!C}?hE{2t7o1V!>Bhf=YDi%27d5Iy}u>!gOB$9ZGj&= z%KM)R{9rfEkp8~F54Q5#9cr$9s-r#1>(u&A7eCmJ!3BXIZ2Id1KiG7*YYRgMY~_40 z@PkQG58Ua3!3SIY4C$ZqgEcHm_Iu#36gK|Mzz??l*b?}`)=oADesHNT!wz9P*7%hU zqio=#!74Me{}_I-wRwIGFhAI~eP-YXTOGCpez56p3;bZ)mYsngZ2WzJA8d7Hvt+%d z_;M*qSE$^IDRa95{e+r_JO5IbnBOI?KZie3KI#PiSqdDg9SYMFF!E%@Uxt4WLt=7|LqDVD-2QSP~bSI_IRyg)88nJp^x3HfDUo3 zwg;VO72Ebc9~?(u+7|kM70!74s<7?5w*tNvck7pCDUE)kg7psw(~+$ zz|o@AdIicrJX!(%Hx&9SpntCdh9;Qyg#SqeYpcDbIm!E{3bX&I#qv=$;lg0UhEq6wq0vz;f25?>yM! z&5BLu7GcbEdI_UL9Jce2GtzU23FI|J0Ye9Tv;z6ARKW0K9G~bDGX`MYi3%7Tu=T6w z30vPnyTIUpGYaTms9@XDAdJBQpP~Tg|0rPi!B!97#VNy&vCZj3Yg`EE_o53s({X91*|6yZ4wUc7c&m|p+j7)(31|o_rM`u=s7me zj1Jhwzz+&z_`zDuY3>dDV78}2;a|dRCwOQkcV0MB*!tUX!Wf!h^Pdv_*jK>@!))%c2#^7VDgC;TOT=G3#0fPhPI7M@c zf@#v1upIyFz&}UW>c3tXg9koF0si$07=Ey6-XL7A0O#8ZM|%8}VhldERc#_&k;Hc1 z|E_$Dty%Xq;oCgEPU0W;c&D&&J`lF@9Ibk`b3{#0=iokm-P46_yKKIl@_?-`Y6;c_ zkMrw(Iq-w0c>iAlKllpoU!;SYYkaolN)B)td4Xpr#{Yz{mH7_=2Wch zV&PjA+7;ecuyNo3)f;U9eXiH6%^W3+Q3ecIbcn6ZaExNcsS$=l%yyC24-_ysV5`ra z!j{)#!kFpM4=~44ic`iMOQ~Y>*9v3!YZaG+#cxrJ;RhRkv-2i?FvlSL9f2Rrw&C9y z_`&QK{4XlT(0@^}>7=v_!w)uoY2XK!!BNb7J_a9L>T!!Obqi;+0tN@n7#IJJzz?=< zd@AsRjlVDOgUvrA)#qjQFW@h1yoJ@Kub z9INFV3*=R+fEoV;Vf2ZQQb7L#1sj8Le#YQ~k5oYCY6Zq>;Aa(#|Gco(+Y7>0SAP{| z|H5ZnjiCvKPrl4eRVs!P&q3L`^MZB3>{s~V_#bR-^0UGmJ8-@%JlNxJ3uBZ4Y~{Z< z@PiN4a@Ku3@GIGEe!$xHSuBvDi4D;@>53#S7H*esL?%~1Tti{-!6Z8r$^=gIc%HD; zVFLsid~kG zVD-6N7^4he&qU{H1(t)aSHMVPVLPl)x?O?1O#c$$O$x00PX#L{eJ*A?DPQNr z^oi)4Dx6Wwy38#f?eQYv(H?IS#?S#%2Ke6>W*i27G4S_8PzE1t^~@N!Og{LNgsuGN z31jfVXtpa{CCskrAT5l+0aJeb4+Va(mH$t|w(eg74wz(z!YcxYc4@yOULqkztX3f5=t7RKO%&rzT}LxVDd50Z~{ zM+Sbd=~M~Z_MQ}Qz~=vW;0IfI#tWPN%z&fpx*ex=N>jEoSsIb9tFy_P8^P3 z^tS|jaK`&@5}xAm?}ShAc(4doZ~PX6QD&@IfxL(*PrJed1!W|EIJ7134}`7V{$F8?e8HCQ z&jQY#fCD~STy*{+Y}?Xb8C7_{-K&Wv_zLg;jxdHFY}@`|;Ai;|g|x(otsg#$1v1tJ zvr2~oWf|acm15g2_74UhOur2OY=yoahu1rDxp5cyZW1Psb_LEyw(d`bty-b01YZWpcPf%=aW4bWL`e56?vvJBypM8WrF~>r?0{ho=E)vF!KTQ}u z@p%gHIj2}%eNFgh3LOf|gE|L)-23ke{9qfyd`sBsHa@!r04>suM9Cus0#M;Ob&)=oHf zIkw@%{gthIla^tui?OfCi`d%gB;is8bQUXM@WFPSei=>~e((tj@R0_$L|Satc#6QNLM8BSmAbsSqgT}S}ttc z%l2VCtqY%ZYZWj!wF()94uuH{_`sa6&-6HM50&2kW5t-|#ePXwB>U$y;dX^-3Rq7Z zwhIpXA2SXyI>cuvz&T4{r~+l1uYj=}Y-1Jb0mBcrezFy(3_m!dfKHo&)!S9V7#uL$ z0w>&dCA(ca&_3H0&={xy{}6><9#h{Knqc#n3S;=Or3&eaB<6Yz&1)1eIN*!|`qwGU z@c3E97#y(aKPPN`>^s6XHs}<_;Dh0lS61!K&Jja{wgWwIjzsMXR^=-Tm7FXJl69U3fuW>sW1i~Tda_-NaCf!?FxGotld5@jKK%fUON=t zR>1Isk5Rz?F_jI&54LhL#=!7n)K$77iQ$lMxq|7?KV%fpJXgW$`2t}K9kA8gLYy+w zUn-0~G3WGlg`X-|eg0Y)gAcat{ZoMV30oQ76t=RB2(|@G`=gw-!q#Ta3^?Eco-;!@ z>+x)1Ycq_yEU(4Fwq1;GG0F)x{uO~AY?|u>KiIZ+OW;SZQi1v*Zc(6qwkdGU!nXWY z0V7|q<@-0`5(PLZX*Oe3`a$v~o~S^+|Dk}97ud$kl*@EJEsVjz zLY-!%(Yac|_T%S;G5BEHFY#D~{YQC-Ip3fY&I^Gv@^vV%zbF& z54LgCS%Du+f8L?Mv1xU9X}|$nJ%2{n%D*Y#fXlqjw}opxem&rTPx1ayY9!WH&!)l1 zC?~jDal690zz?R+?NIp7zz??aYzzG0V?F=zzz?=#=k35Rsyo+E|Gk81Ka_!OvVLZ~ zur|S!fj-{qiar6O{9rp?&c`Xkj}fC!JX`_&{hfcUKI_D@wiMV_3K-jm)hMtoaj62^J72--ZHX`jA6%&b=N5%!3TSfPKi%UxVLSF` z31h4aHq8aXcK+r5!^5;3od<>OT8w!r%*x3*hH?^*Q=kn0tAN1)k5NEpl-8vlz%_vm z*z&zx_-W6Xl1Z);;dcmQXo4paEBra|gH;sgAE@?e$A~>|%er7I!^EHsgROqf3;bHe zwKukrcE|DFu5g@!9Xs?l82Vu9fwC=B!0==16wo35u>v|D*Y=K841Z}*Cty1kE)^c+ zIadkW{`!2t2V1@m3DeHdjOV+|Uz*WE8D#@=tqA|*z^`Pt<9e>r?FyW)p~0sOTi@O! zjG+mpe&AoCfLT4z_fikUv`;wSQLyd$kuU}yJWm16LBaNd*%thqmu*~hjvjact(I>LK#AviD6f4+R zg7X8*IutnOFnD0|Gv3GWWAp`R64SS$`9%eqE;_d=VDQ1K6z~^m8?7xJDr|it$0i0J zY@GP_DLZz!7Qn1LYlJBeF~U+W%d~lfp<#|>C!w=3V;QzJ4(H?)G7=r^g z&0awnz;^r&7d8&#d5m?zrq4Y^jG+%c zUNM@($Vi4C%>Ksz(ZH{y`%O1pk;LTHuF$M7K>_}^6fkta#Q3R08&^CgZ2OUV!{C8W zQh;9^lv7D}uNnDLZ{*jm5RXw8$j7=*h+};nbLn=x|31(JXFQ*Juy*o>aEK7KvkZ9*?Q$Q`!|?5a%SDNxn6XqBOHwhou zo-K^AE?BF%^0X?pd_OIW!2w&o>xD7=SlEZtZ<8-|3}zb-QLw(6vSF+Xw!VV>kD2C9 z;dDhRMf_O>G|vw9FLCG2k+2;*ON24j1)ILTw+BD?AjRzp-wOC(k{t?M&ssmpvltlb zf~itC4-4D)?NMPg@&8U3gAca-{zu_+<%2Ue*e_t(Uc17Qzz??VY8AG2wJG3$tq-|X z*xKan0S8Q9L%vT1e(-GXFQ6Zg7teFgfYqq9;$#2*N;|LtYdBCL17zjJSlAZ>sP|IUB4B^ z&;*kgntxKj@MD`5(iKTOT^P>q6*!lX=RmdRk9j;MXy;%%r!eNXZ)%>4jKAjtJ{MDKlm6e?@$;oZ0k-IrvJhJ31JK!Fm;Z9 zW#9+fx@!V|YTT-|%i9_jDsF2{;-!X`HMcdkHY^*rym8gi`cE}1TefmhYFsyGQ)^>m z&K17ivVLh>TT4A}xLnrQmXEV)QNxP*#Vc1d);FzetzW&WHIEj&Jd2hzw$-m#xwx^u znKxv1m9AS+RyDR>*4QdWb6XxpYvZ!UhEVoCjq)ywlp!j#sE`qnkZJ`l6*K+J}g z`W20hi|bdnEN;kun5aS;7T2rw>3G~pghRqb}fsy1!N%0ejn&6J(7s;!}I^{PCjg0Q?{P5si9E%_)Ms|Tj& zkZ)^V-k7g%YFyE zP@@us1E6tHzTM|o`==~kx+tkowdOo|If`~}Yd(U@W>w>g{Vs1Z1hmDC2P7WgeA%>Y<>l7WT%*iihaol37BnpW zM5F<^PfA_oh)9h2ClujM2EJrUzM*TkWyR2s!Q@@r_n>hGEOD=j-+J`Yx7p) zBK3f6I?3nDdR6n16;fZVQ+=N7)t>4b*U%*Lp9|r%Hfl@j7imCbBc1MJ2~lWy`58Ke z*>0?Fx#U9)a7EGrTUu8x(piq`Y;&inJoy=K(Q=&t@>jht`DJ-jSj=IWztk-&RgSz{ zeSkyyK-~hvL`uJMb?c&h9SlWG`j`C_!=2O@s@im#S)EUbf-8K8d~#rF%)-+&bIkmq&j1r-7jx$YR*#-U#azs;_^_s2FUrAYmlRH5K4I%t&Pi9 zUgnP8{fvQ z_PazE?dKrRX*I6NUp8%Pvj)y<_t&N9NbjQUx3TEz=JJNt#r4YGOtgNxZDq^K zWh4OlAM@isv37fsMKwxuJc`P zLMV@XG9{E}A=iGvq);AKw`rj~9J#ws4CUcPQ$u-JT%hGzWH8cFmLI$ySxw z=B`BDG*SU1oeW%8pNGoM)S$~vCGCfjn<>ge;&3a3l$%h>BNR_5<)L+-RLVyRr zr~o&j(FrpTg>5?k#U_{XD0EFPJ~y=H#1nig|u+K>LGfr#wr886};}8RQ(8*fsUEKdQ}I|Ri2F4 znqa;n4=Wi=1XERcc)7`{{SdmQtMYK739Ec872Kw*@=?^yYg~~`TIJ#RiuTi1c}QIY z`Mig|zdk}OFDIV7%9GiLr?2u5yH8-{A?2IG%0qWolJ58A12>8scYlX;4-;7j%-c_8 z<>7VBQYG`_d00J7XXT-Gzi!PO%2#1Bnw z<>6`nTFuyGSsvzxC%Ezub-^4>apfU)pXACz>S3BI53{FRT+!WY{*LTy5Jxzk;p~ll-d1zLw?h|2o$W&|Iec9t=SRSDdPlss? zyxgg;ao_eGm&|3m)ip1sUj%)=N~oc>=q9Uz?Qk) zrx3j*1@gX7An%(6@_tbuZ(o7D5^ZcD+sjkbh43yekhi`--d79cJysy^zYFAXXRfFR zY%i4s^5zuCTU#J+dx1Re)-7Z^{<}cl!Ma7Z5WO=BXCygwJn>!S{& zkbK7$$eULnZ*76Rjskf zRDrxV3*-&aBVvWr%eVr0GYaIbDv)< zfOv*kw*Hc|dppPtD%dqjvrMOsR9U3AUcS*fhnlIGIID_ycZ2lB6 zTjD+8F_CS@W#SpeU%Ddg-kd?cH+UZPcW0#ci2B#FSizfVY>V_BS(#3KUmWy4rx+f3 z4@Y{%>X-OZkeTWIDAHTgl1|N0dqM9DBAebTk>1_fp*1Gvc_jZ7>FrsSc5nVdZ;R(q zzG6L2PjRgNUY6cyrOm8-eZ@1(vYNJZYJp<(Zc=RJJ0a2=qT^+PmYbQzagpAw(z{k9 z^mtQ|>0KD<&5@pVNtc=4+(>W4>a=Um=<(FL>0K4+EtVejU}k!siu6th^llT`^zMlC zTBO%%VxC9xE0Nwb={+Yu<@-<1qa2S#dM`_Ff&6AxzDFXxk(cG#-|Zq>`QC{1CaGQM zQmxBO@3lzpIqA_KP(I$oVtNM;@7`W!N^fMBTEZhaL_E_by-#{`6r;CYvFV*0>9t9Z zuNIk^Ms=h&Nw0!q?hC!I26~@}^xjgMe#Ol6E{ODM^w|GCkg(E7EJxD-`~XkT=u&TBNr}uPA$0TIhX4Tr1zNVm*#b_im*3tn}s~;LXbSk4SI9bveCni)-aOQuU=Qy84$fdPPG| z$JpEYiCu z(EDDX_w`6`qx8OLh4Va;9g*H0(&G&llLNyhYWd^{HEJ@uJ%>NRa7 zdiMu*0K4oV0_g19$(57^1q(2`$80d}GYd=`s&L7{`;N`6z^hSzj+T``3 zUZ=6tm+yyx-n2;XF1?oH_#X7miu9)3tp31{BYqUqByfMwM2TS-I7kN zSH9HWkHv(?{@51jwUzaJKKjo{@1a|B?Ri(A_tQx4TIsFSax*L6&PeZB>Af!!<@;E%bgWvgsY9{zNRKz}n3=}$k>0b?vvKERB3t<`j`a3OZ?cJb9?AKUUazgW@zCR*$Ns%K(i?tc z&*PzWkzR}R=4gHDkMXCK@2*I%R(d^^@2ipCBhtIe>pdChJrU_`l%9PxTC}cx@MxsB z>~^(h%`sBGrvtq=BE5@_PTtap7H0e7wMg%^ujks|FFlX?8?H_}Y%kAB?W-pyn6_9Y7J z&GcqPdRre*`^zSJ&x>p2yDZXsXk79pq*(9LNN>*%)t`#Q_Wmx=`*NiBtn_H_W>&u2 zBE5amd)C+A??txq{g>BM*XV59aeDKVCFId?-`V3)zK>KTZ_DzFyXtv&l=fy+-~JNlT@dL#E4`6gZf0eg6X`uGJ+=?MR}@?M zu8#EHmEKwt^E{I4BE1)-_pDC)ljteKXLT9O(@?Ih86^zGkLT7wIikr*=ZWWPiLB=v@-&Ri2vrYAu?k z*A(e(eJXd|_)egAW2E0*qeL*4U$4zfxq&G*e+nw*PlW7lDzRyK^{U#=F`i;xCG19yH<+R%l%GW2*yEoEn zlin#>Zf52CcBHrL&+7mD@!K!Z`*ozZV^Z#m4QQI)(~;hqSJJ5#)eGet5a|6o(qj;I zrWG#GdoR*^CryTtb9j`XP9M`|D8@P_T?KC=*^1sCY_Z^ z{gn*7nFiNuhFNs;>*-WKIoRGIfnIB*H)g8lcYA0r%Okz5dL{El-(H3VdS8n4CY{ss zyxx{bZ{$C7{r&Jj@4iTHqx9^Hlx&x6<2{kyX6aqqC)r-^C56ZN?bngsq;r$6WTAzb z-qVrZaJ|ZLrMS8bN?`u z4inEX{$<&Wd-FefBLclMBfZL5$s4L!2Q!V@NblKR8TW=w^gbHsEsylpNN;u`)lF|{ zq_?Beq_;zT$Gk>0wGWKui) zb>o;ouPM@7b8+%J09u&oHAH%2bn)?hEoc9Z3-mr4=@ow>xh`^If!=kI-iy-HREX27 z4D{}a^j?wPds=R0<-0r5TQf3~YSTi>R~_j6Hqv`}LC@F8zl!u;(1~zX7rNAPWm+HUJs>^$74%LE^u8JC zjaigRmG+=_XQcPs*i6^;+v$PcGm+jj>D{B{X12XgM0%y;GO25Qe^49fy&LJJ8dIqi zCZ^c*{t@Zjq0b#Wr{!$#gh21e((e0L@1;#G&Ey14@1x=wX6d@>OzK@Z(3=$K%@$9| zuJ-cW61~M6hd0xhUfNx+O`m|VdEm)`-WB47dd1DTFWew$dTS!RTTjh&U2jbZ^g1HF z7U^y2p?tSTdbJ!M|!<3(bsHx(EGoUUh0gD`>G4|$9x0ZL3@5R(mQQg z@`V5`a%S86a%pbcSx`}z>AF5YH_#ha*1i57klsyBDfwr51I07UlHv)u{$*yMcWR_J zZMnuTsuwfUI5E=eH&N#gfBnXn(BQGXizB^Bm!?uWC3TtU)kk_4P0RHMa{|53MS5GM zry*9Cncl`o?^)@oYFvAs7wFv=>AfaBbunFLdiO+nwbOI$Z+@WnyGU(}jUvN2K?_r*dD83iWP}^h)(Ab!#t+1HH#1y^){R*EKRIC1&N@9qDb7 zo{jJM-OTpKn~`4270FjqV!hWRy^)JDUGou31HHqK?A~5BOOO86%*t0Ho?(_PklrKO z4%*8n13i9sV09Z$K6hpAYeTGO8Xu4JMmA+q&uSrh%L2VmMtbkAS34&IZ>HB6>Am~O zOiE40>FE}nuKL>&>Gf*Y_%CZ}x${EZ_qkNczJw9#ZH@HiZ%}_)l$7tv zK<~dIy+dxyeVHQEdoa?gy;0Xk(qVho2YP>t^xl`=8nt_~ULO28(%W~Fj^EyiUVET7 z=%}QY0%fAw(w@2x(M(I1F^w*>GH=^{nqIB3pQoiuc2GaLL{O?8SA4KW< zqx6GO`iD{aM^XC6QF>RD{z;VnX_Wq1lzuEqKOUu@h|=5{kh84&Wj{>+GM5m_x?k3F zu59WzxrAH(e3brOl>U8`{$rGWF-pG_rC*NHe~HpM$OFr|UodlyZ0faKLMWU1pD4XA zO1~MU--^=wf|j#v>fKyIDBJa|+QgmhHp9>Ie@A@R1$X(f?iZY{r1-tMbu(G_3re`0 zD~FtA-7gqnIvin8 zC_OStkBZV2QJNXdoMqh|a$%Yo#GGYQl~I}*yqsm-3|yFI1}$gVuI~;fzO0+U3YRkj zm9uP$8Kj(L-S^(Y^n_^nq$nMZ=-HoBqUFqB znC1#1XW0~206ELL5qy|t1fH{OiV<|qvMENuIm@~cY?x*QnzL+*5oFG?ZUh*n+oR>( zlG=aa$c6nGj(A9iBQMgubK*kkKcaLv@?&{0z;S#=K{-?Zl1m6>-M8IxuB;o`h3SF0 zgyRp2(u1QkBd?rg-8ap`^srn)DC@rMmvgDV$|c2mq*KwjM5{c^iffIRFpnC zN>@bb(NX%CD1B^{9uuX%J42qhz@$EU>Kmeqzp{{yLWs%BD_? z(z>Z9ux#q&AO*iBN}m#?PmR(akJ6__>G4te^eBBsl&+1^by0dkl%5!+Cq?Nqqx9q` zeO8p75~Zg`>9eEsIZ-;efYXv}YI?LhoUvv3jA;4HC_O7m&yLdPMQLUda+Xca%_W3% z{)*D)N9p-d`hqBZVU+%lD1A|szBo#MB1+ds=><``AxbZd(u<<>;war1rJJJkk|@12 zN;gO8Pe$oWqV%#Ty*x^ElRJB(w9Z)%cHa=ode5uyMvPU zqex^JZBTsr^f5^nibQF?upzP8%{K=T7pni-XxWi=y$gHZry zu3?&A2+zQrT@UliIa3bP6Pe)|gXQ$l_!!v_)00qP55V&92qPV~VA5d=AX2`j#n6_CnFzGY{v2@Euon7UWJ(ojBJN#e&c;%GnO+~S*(~d z(=g3!kdAbz(&Sa;`0uA`qUBSg^o3FSk|^D- zG~2_OeweO5zZfn5w$dZCjGk*)>X)gXM$7j^>F1;LpOj|%I5Q4QJ)U|$T0SrsqOyG> zqO^UDTZ`QOtkd!_!q+Ga(~~6^MEtc%vpvcF_*v>EpDuCy$5P*p_&^Rex*_R<5BwJD1A+ozCB9cAElpEda?4^r7$e@eCp+B zd3Xszc@7FLNk|_VrH@ydef=4ycUpRSw7elouZ_|hqjX1<{#KOU6{Vkx()*%xIC)O_ z2lmxJZ=^>lOEk8d>^S&-K*8hBzPKBSHZnuS4ww5Z#{?q4eEwup~>bbWcK+Y*Y<^O9~KBI>pdYT?(1x-CS| zJ~`BFLGC+4D_7~$*7`PeQ+>-aedX6x39ISjgYF}u-Bt^}>Co7)M4u~Nc6oCPJEgfv zJ7H-e_Ga&BgWgtCz1_ysG*5F1K4Nd3SU2sbN~1LwsqVp>=r|Q*UzTbLy5|YvU4q z!q9zOVbQ`aZ}NSLu4Gr4{6}tjYFuoGeFVqEyVmRas7<#e?BCpyt^&*5w8Ay~WCK)s zeW&R1?xpeHis@F8-~$ay>YEpJKVW=ScUS4rNwIw8uUfmRt#Nt%ss?=kQx3U)>3_Imrn%iqxZJmZTfUEJNNQnmzs~NShZGLzN&?C)rbDp#x^yB z?px#<3E!G^Rj-c(HZNM+ZDlqj&dBOK&dB^dW#lR(&M0j0Y8Jj2`Ve{YN^D=89(%gx z6?zMHvc5|Ap;u^!%6wUezLzgKTfMkeMXTnMlRajzxY1={D+KMr?;5I(#?_@6H-ry= zLBYiM3`za!6-!qx%N>;LDXTy!b*cKV`2?A|4}|C&i{dwbsxehxA05a3aO5Zt4#(U< zx^l&b-O1(!eu}bEAFj3{x9G&zmGD}AgM+oKTCFO2+6{VNdE(Z`t~d+1Ca5kt@se7k zPXn%KT$Y?1S0vr9Unl7uDV(z4T+~e}@VEHy>bVcUs;^tzd|BAnxjoRW{{1$&JzB30 z&(V8q8Op_Ht72H^ZS~}8z;&?UwzF0Adu;EA`g*rN^Db>$xpH~KinTiNt+3N~?i68b z@vX&_o1Gr6aSzuX{T0AmyJG198WhQj6!2rKxyXnH}HzxyDNS zu^2-p!wmNgBW0ND_Td_LMu5@#vd8d$5a0(qCVzfygMXGV&uW3c zCw!XcOjBIv@eakL;cQntFTjlZ(t{)*<2o7+K5&uua}8nZQm5&`37`1{{P@5{-oMuS z$&+hs)4$sL@qtbMM(=0)xc*HKN%Vi@{rJE|-v5O6r$pQ9@#~6T4*Y)&{D1R!yJC2h z`5%h+1^%}^{+Hr+1OEpe|3Pu7LVBn&#T21a>T!|xQ)O0Hr5+!v*tLz|dOYnha|^@$ zxVyz;xIg!pSySdi;BZ}E)zr0%p`up9BJV!| zPDcM^l?sN(1eh|Le`J75!M-1Jb?9~6zVMiOw{=~4Jl~bybKLfNzpF#<*Q#CXHV6+N zfXBBVVYoLa;78*YkI{b6WAgl|$CTwck169{JYK2zRgc+@-l{S*@t^4N%fdAtmkRUi zJRIs{j>ps!zmnsp{+4@8yplLm;u?i?k%+P_3UKg& zi@blE_p=?RDWnfg_;-3gK5&uuf6Mzh_kAb8-w$xDaGD$GWIt9Q-&&80y#MFkkIp0o zYq!sMKR&Rv+c&+xpJZL1DNWXW*ZaXte7kK_%;tgdyS~w5HUmHPcBIG52Xog4{t=3& zpykWS-52=rfvx?gd}5ncHqquKdDq&rrZmJ9l{rj~90O9`kz!9Q@%n9_jt~z}>dd z*C%-lAEbZYtZtp33XnNXU*>$}KUuut>Kqysb8LXIsS04$yVzs&j`Em(+ikBn;4y*! zxBypsOkc|`v2#bA_u~V1>#KbmJKu9C64>gYknK8#bu|#3tJsxC7<1bw%yvyzfP)@w z30$GrZKLp5;jql?OE~zzJ(c+^&!Nmr_TVCu*?BLiF-V2&AU zlZOQU;Q^+OOvlx;FN51gkJ)D92zKE|g@;S5UfV;z3da7Z0A{_{JVx)I9+MA!A{_ER z+GAFCeWn2Ay}|q04)=SQ{H4PG<^62;GagePzw?-S`isZZ-y0sEAlz4FC12`$h{x=Q zlRT~!p5pN&VZL7k|6;|w&jCC|em$<>@NVH<3izK;{1cDQ*Yd|brf#Mw*tNi~ydNLf zt_5ZWoR>TYAJ{l^0?yw(2Orot^Wpe&4MTa#h7WA#8h6f;pY6H`zP}#%nCIgIo8|&I zzE2qAIrzYKd@Y9Kb=+7*`uM=6vlNaW!%y@&_`r57FN5RrTH-nQz?Rpg-haE|7Wg9t zWS4tCK5&uuw<&F!*LV&-uxYLdIGa5OAJ{nLM}5*Bw+DD#uwr1#?k+qKm(-oHZeaULI{cpK}|cx2a(;YZTeldF(pWzQ z!@UB`GV{B0+`)K~^W1P@xbA!{jE0-v5JuabPlcJ2I9&mLgW`!EpQZTBz&}Jdt@2|t z72x9o7s-FO;wJAuS#h(+Zq7s4)?MZONP%tLT46gcoCfyWUK99F2ykV9#{{?{z#{`( z8sHHDJ|w`D$;!aC8Fu^P|HZlN8(MdGiT=sHuK;FW{Mcjm#h*P!`)!ZOGsSTsK4o#& z2*Q+cviDQ=Pk3A^-0U&idWFZ-!3K}1n=KwwXWUnSK6Uwk$JFspJ*Mt|?J>u$I}eIq zEB|%{)_qp~uX+4e;Yq^Q7v1gs_`r5tPYF2pdk#LZai#^Fhdl=$*f=xc^jD^`zbQ~2 zd|*2tz3KgwZH};&?OpH32R6<5aD1QRu92mQ4{UwTMR0t7>#o-1#tZN$c;(F z!3VbU(PB70uUh#jKR&SKwG@ueYpUnq16y9p0-gDugAZ&vErCvh=imdIPFuiP<~jJl z##sZ$mwCPC-~(G;>jItYJqI7ybk+x)n>_~~*f`e)oUeEeKCp2%!tv$#q37TOTX{CY zq0(e~JO>}x`g1qlQ~f_L-)1ed{(P_J;{#it%pB;3R&1=wBp ziQg#SLhq-4z9hh|e-;P-W#0duV%Lw$|5xEFy&qhxVCBEY`|*LT{MUOwbu~o6%73%> z;{#jy|Bv^>zdgXNUsW0IkS)C$I4HcNmD;RSNt=N(R?bv&wC92b&sjH zcLF>cd`NQ5dZ@>96=P|3l+3jUaSRv9&we~nfptHo*zIdShCI#t@quk@>GrQ5!?^vc zb-VVj_q+WoKV{J7rG~3e=O}jbvBG17u{0OyvN8oY7`RA&_R(ks{6{EuW%GU43Eqzn zY<(AU@TV$v<+QQ4_v4$WV0^)@^Eg_(m(tA6@6J!bWt3yMaJgd22QF1S%wtw3;J2xg zZaO2hQ08=myL5z0<##&5T{^(`l2N~K@PUiG-_?o7CwUG& zuyNR~G?gTC$F+3ufs5pa?~aktNnX@7dEo;WdH-->`_1J-&%p<_-(1{yOzU1PU$f_c zR|HtiD3v}Y$!oRu;{z9YzdPQgvq8So6l`2n6JXkj`6~lV{g}TZz#{`(8er{`F1{<9 zA9uO!_1M*q$F4p-cJ=SE+g~0_vP<(B;o%>}ll0?YxNa;Vj7C<~fgf$276g+g-8Y!B zRC!DpTRo=ipYym>_%@H(R<7|_mpXXJW9sHnkEt`pRdA@we|StCAN2n)c0O>Hj&=Xv z!<5mPYUHRs;^qb3XU=@4oKqzV7>+IlEp{r|)l2 z#Iw1yTMLdk(0W69WqW0y@MT5(4Rh7{z1GQRKwRl*`oCoz4X#>$&^rD>ajs8(U>yz4 zYxGdzdE6c}I6cFKC+1$&6Aez!2%Zg_b&GYEJZQ1*vd%|7*(am;y>{BnIvSjLj^Xk8 zf$m^mG&t7}<9M7;pFL=B<}-oEbKrnIXmHMflXzU#ls#y0mNkXPWxdxPG&sweQ{;1z zJ!o*|Gq=cRu{~&T<}B6d(hzY zEG#@fvIh-L&mugo&)@7pgR?%1@zAjfts0{oQ#3f&d#|w07+#|Ha=o{ybu>8Fd);`r za4U2v=C!5{x9CNoQ!(|9f@=l07u;5GYr$lf`3Ps2aanU6PBY`Z%uF7iHIw(% zE8;hlw&zc4e; z%~q`V+Wl+mXmDP;8{(|PU&Z8u250^Q;`GFPB@bH6S02NIcy?&^&+C+s4;oyxzJ+z3 zVGrTwKq+ubfFBLc&j^OKUD*PM`q~~exGH@@Jfc|HQG&vo?LmX9*7vc_SQyoNm0p3u zVb;;$s`aSbc428=7j*s*q92;OHv86k93yiaQ!~fD@`l(o#$3hw*3s=@ye4-PTr0S} z;I@J}PjcUuf`v1mYs7e~qcs2js#?9dHdv!=m^>afllNn0%8c`?E}wW7eI=%jaeWa} z_qSNrX7jUkL611jFLAe+bBTSs#BVp#H*xKde!ciK>-1mD;nG)2BeE}je7Bh~9BT~e z9Fv%b#SQUy>|yLZW#)MP$xKnZa;lujt- zzRy}mgLB`%S!dr)_Z82IVtrU|9v{{TV3(J`ZH#4Eclj!=aMHAl)@LR zqrp|{^R%5~V68o9aE^ibcn;Q!!td-sgR9cp#QlmnKlH(#6MA9!2tA6ab1qftdQsq9 zO1)liXTco>*I?(_Ug*>#^Jy)(rC{NV=R9$3i{>2i0WU$rMLhHY*BzL?d5xL=i~Abs^y}u<>C4%Qc^y1e%)V&w z|8^aGpFItwa9#&5wNCp66!TjDN$Y5EUh4-7&q{mH;Pl*XoxT}T%(3@H>u7L}y$7sw z4ICEdb@_MJ(crA}2p+HJU$6%a&N__Z*;yGXw7TEW;Hvd8ZC9886gIL44X#=r*LI%Q zTib&M=XqVn^9H>rbSmc9V;uaC@u__Xt%|9~n6%D&x$kb`n)94(#v9KGrIQD3#>1FA z!OWP9XM@sf;#k*-sn@h3e(H6Rxvn%mKa##!%(27+cPZw)$8#%mG&twIqpeeBw_>g* z=|}u%aIPmA-?_Fq#U3;`*EVNar|!Lq+5aE1js|D{3upR`KH~q)BGCSdxgA~)wRxUr z|L>^n8jVuuSA@wU`b5l_iMEUB^F!>R&v_3&c^_-0O!_zbVO#5HaP|YoBl}?|d(hzQ zhlX{I36ZiWv#ywZa)Naa8){e z^)c)0OWB#v)dhEpGoNd$qrsWaXRR|H2<5S>ZQayLeM4>3wrT1cnP08+rDpn{kZXX= z#5D?4fO8E%8!Ee1kekn?+`{xz<+(MsI=u_|pdQq5E%={-{=Q9qwK4XQ4W~XPQ(1!~i zDtNH)4;1=r*!lOvWUSDqnDyy}U7sG&(>adUJ>Pj>7XLGwt}Pxh{_H z1u36@Nqf>d{qbuv{qaXLefGSWzFc2rQwRF^rDpm*o_kB@n8bH}#0~MT_E1)Q_eT1l z^uw(Wh~H-(67%~Ky};?2zS#C7w0@oe+7cz^Q(@ge4ml#ZAeN`JeV`kY~2B>iIZV(}*m z5C6vt^;{zTGv=k@mF8vQ+sw%Rvv5p za;2;Ba}iKD#X1^XmEI|iXC12ZZffJ5+O8a>7lkwIM}w=<;WdhtbM&I{etXd1s`Os* zTE$%F#OF229}UiR4)vq2?oxV9!S@#X-fSHW&VAX3eIHkPZ^7Rv_(AgyYS%jQ+)IMO z53HlXRqOX_JMWSIY!4co_sIWkeIw=hP~op?oBE)^>39tN<9>MQt zr12d&<%tI8z2T#UXVCki!Ra~D`V~r#E%>;CPbl~?^4wk(P&mcFJ3r~FiR&7Cp)ALN>xzPEb!RdJxkH_1k_MpKz-acV{T<6GD1wY5WJTy|c z);b!T-xayu`aMdY*L(R{Ex(DwF-3#(v)a1~{~9yp-e+dsdVzdg=kHoagR{=FRIMBv zzqAJp&av?)>xU`-f0$n(ZeiaIo9$X(+td>c&hKb(znu5uo7jT}=lysap1t*=@FsiE z;HvfAtTX@cyF8S|+}X~)er7&s9SzQB=F}TM`_}NgPmZ#V24|mi;PLS~!5%a?kJqGi z=31T&=JA@cjt1xPnpgPi_>YX{&N|;Z8eEk=skgfD_?+c;g{VIooX3SzG~0f)J!o*Y zoo6CBpYVG`*YwT=d7ztzS0TsrQ}l_wgUd45VvS)WtdrI>ks#yT3DdEQ~2_T6LV_;)Mj zzTdQt2Is!_^PsU*P$!MXE z6#8(%Lj?~O{((Yo6#DE!?=QHo;NF6J3hsv8#;!uI7u;EJN5Qp%+Y4@k-9N2`-U7QU z;Y^?0B(0{Kd%Ua7c=_A}op8UIa$>D0opNIBC#Ej3-V;;D_*)4vb&q=`ab5fd9S8EH zt;1&eAl6#a>6=rn(`Rw7B%QuoWSu@{twuid{gvj1_&W2TIMyoi42bWxJ|zC8d06~C z^Qia-<`MBz=5cY{XDOdC@r%|c#M^M)kv=Kj&O9aF#k`l&x0vThKh!)|d}`r2&pc21 zW#;+fPZpl5%nPJnW1be@ZeA$_Z#T;Hve<@a*68#Ip!_(BP`|C-EH6^t5;!qQO<`Pvhas z5(@D*fXW9Au3CRa+m*qlr_=eM!By+e;(1Hc6Mv(me9+*k_2=;L#T*6x_K9|(!By+e zYrAq#)1&`}Fg$2*)%pu~hMJyz?LmX9)@SMM%E3*~TkS!EtJYia9Mbe0Z4Vk;wcd)y z>yVS}L4$K068C6o3-?uRg`ayd+K2|Hf1&lYN?Frq{vWZ92B$yP_J|70?LmX{I|Hoa zb8YYid(hxq8+^?=b5gAB-7bEAlzO7US#F&?UG8J{put&g7ap%y|85T&oaJ`oIaDtM zoimh$23M_DtusgV;17eo^K2ar&U^4)Jigc1!X7j@?=|}H92}+2+R+{~IM@9Bcy#YT z=(h(Au1d%MHtTbg&c;tc3MX4fgY*97EbAXtdUnAL_H}(OvW^C4eb|Toxk~8(e%I~e z*3sas+x6C;QaXs=-%Gj4IvSk!`$L82PJ7Vc^b8lCuh@eIr{`PNnS)30`}xLqt)s#D zeB(#f&y{}^e{Xc*te;s&gR9bIne`j%%*lT=b4;Eq_#ftfD}ABR*`^P9m>gGtIu$=DrK9qrv%I)~l@lTC*mrpHeTlv*3<`YX!F#+*WXF!7A#1UH?x=ujvZ{y#F4vl3C}Q z$>T$2@{Z4T<)_SL)~QR}|4OHhpSMokzhJH_<+@H;w6$9?&yn~HS~^;M2JLgFr|>Kg zvo9K)_LNbJvM@8NP|=1 zX+`RW2IqQgRGe#oXYE0Qa}6+t=WWe={$>vvT(utG6I1>#lWkmjg~}+jXq$4!%~k1( z#ILg6+01rU(!aO1Ydqvr zh-Xz|yhkgdlgFf)yw5XJW}HXzP?t|zr;fLp*DCE)tc*0<#qlFgG`MQLF3xAF^eG-R zIG?F9rJ_^*Nd&hG= zY}XB9JZNx!x1kTu5lv5=7xJLRd10OY&13N&#|S~8M%+2D`8SDT-rCAKd9*2JyEeCu z24}liu8|K}#hBSnpzuaTbTqgsJ<1eUFe^m<>oxg5>TI2Nvn@QbsnJ*kH9MF(?`|fK z{mkTjfSEeH#Y`P^+Qhy`Dvj~)xs< z(f@f)QNMf^_aA*?KS}z9Gkp^0)GjFgJ6|#04=dKh^vO@nnJeYurIUnw3}gt=awXy)1Q$puGWd2JlmO8L>?TyxGX{PPOtx<>xgx2~9D?|kcM zaE`q=2VJ*I?4h1rin(vhA@ZQXxobe&dxp|O%q*3UHlrO^ z@Tq3}aSheJoI7>vTPxktOc898KXVLY0!EMdN_>KtR6uCrtbCpuzcj!qG12drKo^o-yY$=_>4? zSQAGdo3%^x@4ltOk&l@DqTIIT@!~STzG!gOI(5$ZF#H=xP@s&|*-qBwb5?DS=5PJJ z!_51ao7r!rnfzi+CI309#>*Aimoj%Tqq96hze?$eh0gQS)YqARtbGr1{zof~HIM6a zly&OGxXI^B$6H5(^ZC+ytUs#sEc5xKig~_YY#j~G^SuL)=ZdTBL4$J+xz0NIcPeIm zZnTaDXMOIlj=!#$b%?o9ZA62!4(r79&%;XZEBL$STPyxMEO|a8{^pqc#H#&eR= z9`bkHjkXWdS*&c3IaKc}>peKqC@@3oEw=kGjlZ%|DPq_{0FEbB_Uv3^0$7enA42d_kJ}i#UcchbUVV&b2 z-&vJDD&E`rn3(UyQP#Nlc=M!q!aN~9+dL)aGZOrB#EZ>y#h*0K6UTSMe(zj@Ede#-5r|dz4({n!_*XLjMput(64LtT3 z`w!vwwIII3pmNdRycRrMc)GnW8l0X-@EoH;6!?BE^+$uN)*sb&mbIHbXmIB97#`ot z$LFNV2Q5A)wf-cY1NEXX?0nGRs`Mf8(~8;WXV`-VXJ0*2c+Rm04NlLqg=e8XXmEO- zD?FdE2Mtco^M&VTd(hzYyij<)WDgpgo>}VRite)r-?Ik|u1X)2&U3~5Y~l%f(BS-R z;t$q2e_6NXarv8dG&qmT3)cBQDf1M^cXMfNC6f;~hzc89=XLD2#P>-c%Lg$G_$aJRTJPcI7hDB?kbtI|i6_9#}4 zZFcVW#dy%*s`baMzgy|k=D#atT;;xhu#N`jzVt(-p%;ZYia7?RU=EzZq+;?!!Q%yU z4AL_KZ=e^2Va3#kV6R;V3%vo`KfBQTVf*{whF%n+T^@(@SMD3f#dWTuH}s+qW5fOq zZRhvvI8NE#_JZ3AZY`Ls(=VLijdgfx4HW;LL!&w7z8!;^#tqm_j}A7httin z&6;Z-5T9ozy}>*v{VwyC!c%eaoN1!9n9Rv>}+QJ$UQ%Pc)&cW^nilrE8hwOK;dBPXmC|J zWAjMsCn_B`&sNGd`SU!0X9rogGtG;Xo@HiCPAjj9t`UTJ)~C%?>5Sp?tv5p2;rL)}qrFF_(toO42pSF$$Xa7G}_?O`K^M`+1M}zbE!%{q3 zN>GUV#76Ubo^Y;Pmg&6;7gB{yq|+8OxGKF%yj(Fq*W1h+rZO8+a~4gERm8 z@f_o^WDnZQ@mPPT$fv^|G&u8l7|(%vQK;L42IsxWBihbmF=P)KoW~-*zt?EatB>M$ z{oi3f8l2^xWS#F^Gk4QJd`Iuhf*&Ivug~KIM3e~ zw4I;r#`ne>&F|^J`Pps@p5_o}{+{hV5)`@>YhvDSHNQgXmS#??_{>Nin0o{K@XO(S zoAXS3_9SkXM##Tw+eD0q0O#Me#lHK69A)R7V6V@I;qCOIFr=94^Fg=;wfPxpeuuW9?JSFWB=;BGS8#8^ zJ#a-Y3f+pyU9gXPy#wF#+Cj5F|M3HVTw=Tk7=JIqRE zJ!obu{m@LAzco{rznH1xf19a$tS6Nx?R%B#MgDbhJOdZg2fJIRZw@unXOm|7^4(_o zIPN>NFMS{P9pZ+VH6Qs8h_5gYimxK1ZDM*WEz*;z5J+xo(g3 zFDdOab3ET%=#7H+Hy@;Q0r|gLpm2h9G&rA8EYx=X?Q=YTRvpmd`Sae*ec$hWIi?qw z85fJ#_h7v!e8f5$oa?>C+Rkh1r|dz4^P0E>kMsGwJ!o*|bGLP#A1}pU6)40SUUf!; za~@l!?OdDv*!!ZvxiYgwUKIXieYrWG+i>11es`${+;OyH&tdA>Y%vE?(A)fCkA2hfs zeWlWN#mazQ6j<6)78+cYURTHdi} zn*XEUtRJO)Y6r%yvnI^vDLvWDerK4;@55%=zSvCpE6mjEQS;+UiR4e+pET2^IIpGG z#s9G0rSt_e{js6i%D$(HUumY#UT3B+dBl(BaWT_S@^RXRsn;Ac?dns^c_Y>U@}R*v zZ(J;9U)p+!nYBQ_Vvf&`TStR)e6F(o3#B&|yt?2!3!W{`b8U@vG&s+-hPd)ydQtd> zB6Vw+tI}J<-?84NK6uFd6Q#d5a}9jfOn=5TQTd!K9#G7+?)vUSG&t9~N%K1)@{`{y$Y0Fo zlUta-AU&S{NS_kN^B*x|C!Xzy?~?u&MfROkO4;z?N{7vSP9EpA^l@o#FLd(7f1%P= z#R`iHg|ijW(cr3eeCSszZBwl5p%;ZEis)!?RXXGI8tWYY6$Q78^ICbmbu>7yl{GxQ zdQo5vP5x+b-Zy>M`bMfY=W1U2INtct;Jo(z!8(20shHnEit}22w76a$+3bf{cS+wv zoAtuqs%`Q|gY!E}U3fOti^9hCpuyR$Zf$3~Vop##XmGY`JMYWfK*&5_E3R?C72wRX zE=K3P-m>6r3a*QD?v1uLBq&6`d0ve^pWW2s7+GhG=Dxg}e1f>fO^m{O6k)u~S#Yb; zC1%FPGBbHIhVW2k%sFD}a;tUf_)9b6=P7et=|9Zq(dVyjb`;~DJkj7h?qk+jcOO@9 z91Bh;g*bn;FB+WdI;Jr4q>ep``F(!oUUW1#zt7K*&ELt4c|aaCIDaQI=4a{j%@vB| zL*Mi%=A3q&bu>8VwA-!I9~|%WueFW_r=K>H|2LFAQt)hXrO|Br&#a@tRqM}KXWxcm zUPu079SzRwNYsA=2@26y=IH13ntB{Bb6rx7rB2v>#zAs94%-Tyv6cHW=5mc8oY7;x zV&SB4rD9Et_ck+m&^C0+`Ieb-qTi&~#Bn_ma~*ij9_kp^cj?rfXXxZp7awb;t#i!u z!DZ&VJ9oOA5It#f@I5~n||@A9L;>F4@KKDQ_x#;}orT^}a1C~y+Y7y|;MRg$3Kq^h6MH~hqoE3{TVTAu zG?T}3X7YZ~Oqnm`SjbOZVqOwc$2c#<)IHX{;<|Wi`@6(DnrU}DXOO2yys!0M@xf;L zZ`4e`&Nny2=b7pIOU)lsdX1T5b)$Ju9Ai>t>0k4Ck$_|VZF@$S%0PSo+HlZKe2{Xo@j8c6Xq74 zn7iabi@D2djCqA;mg|oOXFhSyqJ4LfHlMdP#o%Xs($RSCmutV*J0JYhdN0rSZLOoh zdA={ev$F&R=4JW^4bI=0U#RWMSkn{Fm*hc%tJW9cd3)0{tb}~f;Hve-c;3hvW^DlZ@KWDb;|mP zQpPCEc>H9+R~P)*f|rv&H(LrZe`??5=3EOsWIy9~h2E=dq8Ei9SVx1a(mTW}74shd zSN5R6d5`~Z>x{`&_+5t$J^s<)tb;aZ#x29BWsxa#y652@*!gr9`*sz2 zz2MHmLtkfEHQ4#L!>&&o?EItc>Qe$zdf3i(FSQ^z=$#ne5X>xya9l>LnT82{4i(m4mnlm3WtE2f{mV4eIK>v-tP zZxwosJ?ZrK)7JaMF~+3#i}}7Q`@TczK4y*^+vpAPspbLk9P^;~z2+hD73N{_r_GF` z8_nNT`FEI~kp6W=@~2;8eJ=i@JP%ukN5%PU|3}u*;C!|p_dDA6_tKuVhvO61Q|Ww{ zd`#PwNxdk%Oxu);2Iv3#)^43+HLmyanzE^NG&rv*JbQ}zE1kf6Xr;h8d z%DrFOLH59hm~U5lSiw{`^E}!*8k~7DrBVm>WsM4-rgVyZSs*CPwT=d7{pV;qJBSaP82LX1&48E#b}u?`kHGeaz(jdNbF?xK=73s>Ce{ zd9vRQ=53VjWyaH{n9uzNtfRsC+^-?dYus#D?I-jprruL?FC1_ z`Pv%&<~(JY$^Tk$Z5YMB2_wcE^RSpazNd(XcKyqYr>f(C-Y)JmQPJ_M^esE^axf8~IP+uL>02X&nvD ze&(8of1%PjdN2RauekO}M~iD8ivd_M^ZbDKMT0ZXd3b!kw$vUpIPcf4v3{%4`9+@B zTStR4Pu4WlbCJ?%{45?7SO=g_o3o!6Xgj}e`LI1`aDLzNC)WRN;fh$lx|#b)IlC}Las^T`Y4?M=bB`DF?sHxls2S) zXX|Ki`lD|0A1rN8dp1`}$ZO(`;@U_^@&A#*c2OjMG&t9mQ8)V;uesLR&weyG*HJMhn_0#^UanPQ-}Pivh;q$QXLIzM z8DH)@C9WNT;;|>jdyyhKdE9L#@3=pbPML?RE_iCQSN==~f9Yyj%gR9mbwoX1h;w<+U*3sZB_gB{OQyzIzR6*KvFLFPPGxZpkPqX3kot`1MdAC_(cr4| znmES5b~rqid@eKQ^8W>kv2DGMZjN)u%=wu*`6hEd=bX?Ax9CNIBt2{=&llH@MDcZ2 zj5pS>TKU)FHwb@7C`OMJ4Kc3)`bJX&a`pFUo@j7BXNc!f(#e0Y z@NZ>58l3((m*qb|+7NyYphBPhXmIw`u(orZ9Ot$6MT7JI#w9Q6#xWnkzo|fB$T}Ka zwLYrt{2oHA?X@pjtnC}keaG-<-9q4F1M)|MtJ2%W%+U|#=r?opxjBxPxk0(Uzh>OzdDmYs<1#(Hh2B#z=Sl9{RdBuF&VoA% zt`$swWj<{Mw-($2t6wstKh_UNHPyI=it+wNu_os4s$N0gipg&?Gv(}Tru>-a<)L0N z4~VJn>Gsf$X>(nCiJ3mQ)Jz{-VWyu}nd!e<%=GJ*&Gh$!W{$&;%nk8l<^l0<%!A@T znuo;yG>?d1G!Khksy5T!QE@yc7mtZ!y&>k_{o9Io9#R_fs`YVg=ksdb!-EFr^Xea3 zC!Yz$d@lMk>u7L37mc-t@_9zuq+&kDV4M8W;Czk|bCmQKrA;a3XJ>yG<41$@v$HvP zc<8OLp8Ej}u3Dd~?aGNwPpds>aMgOvI@9kw{9GIq;+mpz(cr3era$V#G!=7~n6>JB z`SQNF-ySqL?`5X(yiJ7vmd`IVIQwTc9wrZk z_?uQ83$*x~R_n91oolK-So;%t6_a~lf6t`5(7RyeNvJEPzq8;D*lW33p|``$s{Q}p z$GL9tY++OxD7;s(CT>y67=l}s#(GBFCcfS}<q`G< zrroh7Q9kqs^8$JHD2@9IF@5+j5SK%8rUyR4(Zd3_(m!vvxb*DvLX2Io3wNSt%#ePZ%Q zgLBUOuJuQi4lCxI8FRJ#XmHM%BX~B`ivs(QCmNi;b^nBQ`d)9(jJ+qVqrv%G^uM)^ ze@rpk{+x9*INLrhPEX9+$`CE)Z9QOV6HnmjZT3%>66%Qt=XXk1;_;YY0k5YQh2@Gl z=9j_NmlnJPZqbXvV#Um75p4fLxLJkfXK>c13(x$5=M_A+;5h|P6+BsRwAW>g7kc!k z%N;@ASuYB4tlf6TMAn%xlso{d-v|xG)MppmUvOW+y|DA|DfDjG_3SG2dcmCqcfj`7 zVAsE`@U#{l4oTKiIKzi3kJ`~F{*4GR-dJOc$>VH$$om{~yExWw@=*Te)~VMg&D8fQ zb6tG9ncrM`+)P`4Z>B$jXjg% z_&>;`Pl@CI3>D82kFVdX|6K93nL1oxo+tey=K13If0niHwD`By`5X6^mS#Q+q`%y} zNZf8-DDE&X7H?sutZmFor1O8E(4R}iZz()O=4H~4Fs~4gnpcXCH7^&(|23w3$UmMH zm`~F-`7?G_$ycHC73Nw;gY*9sxLMmdcU@!;8k}?2YCK(fQHXm$<&PHkfYNy@)=|<~ zAH_X|m@##y-pe}NCtUurV zqE8sh_u}W_fWoHM(coN*#&-oZGPq~~ON(BSm6;Bg&3i=p6z_l;Oc1e9<~jSkM$My zpuu^p<99if|2p+OMOJ$BqOih#G`MR02J2ld{y*!rFMLO#-(&uU(tFLnSNg4jxwp+W zK42XU&Ng=7d8J+yeqs+AoS!2+W}W;y@w?ytXdMmCJnMLzXZ+t=sy`Z>d9J7SFy3ev z>$-flwn6IB;C!~$jYsQ4!t3logY$f+`||V6`2Vw%KN_6RQTOt`TpxPzAEpRf;H;Z)W<5iBxz2fwxOPl)J@Z;K?=LcMthBY@R}{RF znLPG4pRe>S1ye2ZM~}}^#XO%rtI*FiqhD;^Q)#DSrJ)yv4#li8A;&lRJMX2~=D zH;Ze>qRg6gydpeb>6ryjo5>^Y#pI#gms_WtPng@4t}s)V&zc96e!k$_%+&o3Gi`dr z{1v6qS1OC^!jN_DSr0Scpp@Hh>O7(J6f^x-SIqA%TxuN+&d?n&_Zt@K{;wbtp^@0jWDk14Y6wMu6zRygStmMWs7!By$h zEykquFN?2N!~=h>;D$KAgA`*`9yB<=gS1Y}zVy@2%)6*wzcTY&WI!?h&i%L6(ct_$ z_h+r+A5_f0oqx_c8k~PS&oQ7}%Bs2_V3vBR56P2%w;s<+rDw_~j%V-AXRBi0 zVfOW$xubP7ILG;()(=)Xf}e^g>~9?n&huzg+qrf+${sX0*G@dErT%v+RWjqBvW^C) zKkh3f-Y9Jx|H*n$IM4oZb5(k~_(JRWC$yd4#k#~g8l2z7n#5C;pztYs(BN#>l(w^7 zx7vdSXFcZ>o^|%1!Rg_%VcPzL(w`PQmwh$=5T3D)2Iue9bZ9%zecG9GNL!(|7Ti*> zaAtnkQCxdFioWBn2;<$$Odf+~@@8p;hcY>qa82onX6m(vnK`>tvGQuYC>*4S9}TWb zU!wGI>!&KMD`x-G1^Ch6?En90i|4~V@xP<_-K4nwiV24*qO;$*W+lyQy7blJovk;N zM!)I0OxQ({ebL}NANRF>nNpS`c*t8zoZxpWRn=!Wj?4BsfC|x9@}t2yx5Tx~`NT2R z*dQ=&$R7=^N}q?OSfLPw*p>$ku1fDx8uP#Ow~DDN`COy)V+C`}a^8z;x;$ub*6nKh z>8m)Vu3J27l^+exy4A&5w^#$ng9c~a;y5zs94ZJ3n=96i3v7OOTFhIUT4#K1R&X4z zEt`EC$4ma1<7GYiUv(httw{c8aQ>d&|EoTm;2&?+fp)@#vfRzJjgAKA`nD{08+*{; zEcXcX<8?oz^j+rjm7Zpvt8`JpQ6Kp^UtVh+CRF&KRUzslPjc0I)Is|BdL!EFdxsuv zQwKCS?;Uoxj{gwzsM1)E$qy6R7f+nCV%kD?XS*cL@Pzq1rTFk1sFeNTGnB@-HEVNL z<&+9Z)US3zVDta95;Im`u896BrLQz|tfH@^SH=B`ImUY74fLYWt(aUdnElfq=bHVT zhpBTclcPWFkvua$bNp(Y=nB({@P$fmH?!ZJX2#DtGkJg4{5PfRs|(nd@;RI^`X*-H zf32DN#~aE=il{w$vPUG-@W|0b?%)T;=B*N&pH~M z=PBi79R|edk9Du=h6bm95RbqAS$7-J;H*QehqW)?e;F$BjP;dtv{+wlDTBhWVqW`V zttAf{oY%e)JbsQeB%L~=!TBs@6wjny6wa~-4bHz)n{R!k(lNc4oNK~et&>0358hkNM61nBT-Y1kJfc?IciE&L`akcfsrF zMWL>k+zGenMWLpc`?kZ@qi&vCqK#(WPQP%5<2p{qDy&efiSe#8ze{y}z|6Ab=VtPb zb3uN}Z=YF{)spO4)n zCeMeI4k+gOe~ooCIM?=rc#c%X6n?G9zG!g%4#^*_)5k;N^fS-kM}yNJbG~%u>|y*q z*JA#cjt1ws#=MZ{HCFOOgY%pn#lys_5Z3~E(BP_d?)TW2<2-EMKz%8V z%t>wMoO!=JXmHM%4_l|6Q}}(K_;c%MaP}?VU7?L1Qc62v+CGPUnKTss+d3Ltl}@>H z6?2SrdYq%dImWiO-lKF|^YO}K9{avWFADLuqAC|H{#I0at9Wnw4^cW_+m#NzDC}n) z4X#RW6OULwK`D{8@Oe?M-phHc8}_`^Rp_0CUMsl0@K8qXOZ}2t3Kq`j?-kchLebo! z2;;rfOdc@@N+<8ztW)M%Gj;izndU!broO*1*OmU+e81Aan`vLnjmn>PZ_IHN_lP^q z__s3CPdgNPpSE*e;@Ge+8l3Y|Kb}`=Cxr_Y@u0yuFI{4NbJ=E#GtZA$M}srZhB))Q zN=%+;aOSzfI(ZI=b8N)iC_h@vjUCOtjk!_!kEIXd_t?HuO#Wzaj_n~lK6k!h4;q~3 z&M+R2;h)-r23I|XAGiKjr6Y=&=QGyP;LLLr&!k=yUZS>9H#9iUajJ!Wzw|N1%#-N@ z9SzPr$MNV~AavU^Zmvq77Pl(qInq+Fa7K@H&dDgVntx{`#=Ey-O-vrgnGaF=Iy3#Y zjhW-prkKZfH|uC{9^ZYfAFcE)<~JxMudFA>ESY>O4ZSEd6jP7!=KJ@4bSkV6V|%?O z_bAD8xf`~>3%0)w+us3ipcjRjV(Of?$t`QJCcO~>{hX6pEYxl?J3CFN5Wznn23rhPF#h`Ysnq>bKC8rNbmeY3Uo zUUA$PNT>h!Obb8#8ux2r`a7PbizoE{h&>JIN0|r2XPXaIdXAYnEY@J!cToI6>qFv8 z&9wU*Mauo5(rGhwzM$X_7JOO3oS%7JzS24xoY&>$*2!~?nR-zk?7^DmV?XFgT>h&byI>saN924@{!CLd+tAI0x=RLtSh(coOe#C$HDIx{D-FFeM+ zUWaUJ9SzR1cCx;|(sBGQE7n@d2QAiG)){By&vWq!{0HkrVaz%joX_NG1AdNmtKRz` z=Yr3pxMw+qT>MN%+#>#wVom&n(mMHw$s@+6nDb%}dwTSKyEs3m*vmQ^oXdqW za}K8&xzY#CKT%4=PahItKIi$h`FW)=R;9yStMG7HXB(a+e$o7T@%oDB za9hFMSb2z|z;g{eXmC|}znD2CuURp-$dmI-Ub8sHIhVG;9w)*Xy;of0VWh%-iZI?$ z^BkqR9EMJQ+Y~zEChuhqu#N`jz08nx#%7Ew`a$7sij;*0SEWZ?#5tDUZVzJ#&ao6@ zM*C8?|7e%nxIg$p5q!cIL9h&PS5-7L4(snTk@DLf_<%AQ0UXJuf_9WIzeHsV(v@1 z$rA-L$ED7A$bE+keF%2BgK)EZn(ImHvkO0CH}j!y)8A8gx?%6zRp|ACIsdb69R)|< zdJMFoyS;JjtRv;V!kIekqPo}U426Tu%+up$_B+o^e%F~P=QcCt$33a?;dtF+oqMUT znyK#tX4(G54Vl{+N9)%u9|D`v*U_syf?pPR?TkDJHEzco|mm#*Jz z%Y^j!E}Zh86z^eOo3r*Z&k-MJX5aUjY2zaETzM`t&l4{#{GTfPpEu8!=N9v{IKDTl zLKleRyI$gj;&nwn51JQAf6BaA{2TKU@t+HS!^e?lDogcVeusgz0>=>z&hIcR!*iqr zg;VT7gL7V8uI=>j{FZ#s;PfoE&bV7r@Z|-sARo;?gsZHh!By!U;uVE|rM7czbE9=M zIM-3D@c6#(E_=}6yf)p8hlR7k*X==r^B#7!w(}n6d-kBgd5`mm_4(@WJMlZupIb+R zGtV_ep1-pP4bD9OWSugO= zjCC|P^Bhr|Yo|7!$82KWQ|W68-n8I&J|jOKLe5uj6q64D&bei0F*?t7b~kUKH1d3p zj=4C>6?cjWdC$@%u1P1rdC#(|7`?8vMX_?4UKHYYIsc z&L`H%V!UxbC?=0s---_rM?Z*%#M>yc?|{-a#ftl(-#Qvxl}?_t8UN8r-(r3PsbbcL zdgod$@^qd5qb+3Uko(gAwK+{O`do~SV}?#1hnva!EHh6aQYWnKUQfxzf#>;y8lNT|Ci%+3H$n<@lG>sJfzapzovA=On%=o zkBSenA3nI?sK4?=kNy#B>S%s9%pAwUbCC{V)Bz37xrlzO@Zp`p*^1N?4X#?h(E4Gr zEi_Z-7z1RcaE&7SqQNVO94vx_aQk4o>t?>u+5js|C*gVs5=2bmc!^d0%r zZ{6hM^DdqpNk@aTU1!?Qy6pYttCjY!uj_ERbu>8Z(2Hkd2@1E_g9c~2)>{$}%#xRJW@+uuAaeb`J{PiUL`$>-PRe<~eO%&$v0~>IrS<_}|MO zG&slqBpx0BD#Sdjve4jM55)6)>8y*-bv}EFKUnaT_R00|HP+GKTo2!1o!1oT>^!Jt)s#DnN8t0uaEt3^R$cnQ|~SGF4))EI!px=Xi}vCc`dDDPpBzoKG7EM%X_JR1>am0e}*U~ z+t;fu==9HyX7bp{OdIz!Q%=mi@^^^ink%MW@3e1{q)-ievNIyq1Msh{Qo_VDEy;(FF%Jp&N>>L zpTmyf@!EhYQfD+c*9PNwsuC35XV17f>p7wA?4PCfpuyQc%dOM5*A>hfn{wAEy~q3q zrIX}&x?U94Sx1BObHj(NljoG)%lY#O>u7M!pHEw-KPiK9>l(9j*wJ{Hfkcav% zuuePpZ4LIVi(^cRY3m)xp|tdC=hetmh5x&;6AS75=#1 z$&Uu7KjuT}9NWXaFUKLSgVH}BZJ2zRj1}Hv4;q}~|19hCmBw7BeaVOOmNvp8+9&T{ zK4cvY&ij|eh5rikSCxLU;HwKBB~PD^*IP$}^Z#nRsql~C_ngf04(f&m=bSu_$L)R4 z9yB=H`(x`ns$KD0F3RUG(k9qqOgzsXmC~f{CGzmZ4+7)YyTBE>t*IwD{VKkT-?~)rnFBn*J-^4 zcf+2?x(dAxyR2Hl-5K)%$q9R-AteDSLml`n|!$M zm@;$OI<3&z#=~68P)?pUFIC#FnCp$0-{ePwbG>n;n0=|wZ2U|_3ab^-(crxQYKSYl z=tbcVig+64s`NqebJjU!2E~7R=k3k8p zTkvK|H#bw?xL!!79XnX3eKEGB)9zRUi0k5*|HbqZYdG@k7RQ_{rZ2y3oj!iROy9p! za|8ZQNsI5Xh&ev5EA$w*$4FGTND)68oY(7Xtly@zp;&o`UKHZGEPunCe{Xx2w#jFe z(lzFXl@2K8?>2nJIvSk6+we{6_+xClZgH(wo@j8^jblSud^Y-one*ef1rLeyek9I2 z`O)CKA9=3ubMBF6P3bEN-pKq5QZt_?43oddf6Q0f7Y)vHXJ7j-Q#w@e2>W{8hi_JST~3 zXQMRlqhP%8Y(Y#OD;3edrId3IrkpRCDgVo6>J{r)d8ltZdl$3cLH3Z(+X_CS;7)P& zKc_ckp~2bz^b7i@l-3o~|6%KBaQd&b&N=!SGuP)X#hgPvXB`dxA9IMxqR!olIexw- zrVeOuJ|BpAK>Cf+;7@$js5G&sjYA09-7=M~8l z4bE$BzqrClr?5WbP#!cmf5Tx~+c~c0!+MWEKj$@Z4y>_Am{Lrhg!v+X!h~XF9GW$2 zT(P1tOrZG6S%J;(;WNM#MieujA=qon!9pJ>xKZ%zf}@SDTl9(RPuFC-qW@hk$1Kb3 zDm?WHGJXKeoQs24;@W+2)2gK4(-u1LAwE4~oBI9umjr2=WYzpRqn7t|(vXGb-*hGp4pN zkBfIQPl)$4Pm0IQrzs_p&y@6e<~d@17Zsg;zRo;X`t{~{;=9fB#a}m1iytx5SFcpe zd{~PobMKeDK>OsJvxRjuIOm*&cyyi;wzUThu1cqG>8P*w(aeY@E;HC0aSac}Nw+9W*|EFM?w)3~^ zFSG{@&fl)T+&beZo&zX<_!{eswdLf)MMmLs)|Z>}*}`3ge}&%5{<+6G8k}ukiN|gK zrafqIw*5)#+o}$+PEg%`A?+{LxnEyZloe|LdC=f2>*m4}-~W^cEx!M`rHl%z6|+8d z<;$@~gR?$&;(3i;6n3@;4bJCRds#nK*&bAId>*PikCPVP^Az)2!tb`{M5Sw#SN^8f zT_LNb{dT`~J~Ld0-)qQ+t)s!YhP=PX^C^4K z;LP(OJnqk$&sj7$kHy1yc5e3h=Jue$RqK!7;Y3l`&K@+lYW-1dSKi+A>|zfZT($lf zo_91o4SUews`WwZCn|jsKZ|RH`0j*`5gJ^z{r7smfr&wXIDJ-`K4X#>$UfX&8-fj;Xoab+R|5NQ{ zmlyE+IDXrHG&qmrEcx<$`JO#!aGozU^6~Y(9ajE?HpN^Uv=-a~H=807GwCW^s#u#J z*nI9J#v9L$#N_ctS@Do}%-dqh9JNkejx~3PV}6t87IDl!;*0fur?zumjps$u(cqj{ z>v*`yQ=mzdTQ}$bUvR#4>b}rS{+ATI#LTm_F2%|r%{(u+js{n)f7*J#Y^%)7-`(O0 z4-XW+s7QU#;Hvc=ae5xK2Mtb7Z{c~;9yB;TeTC<5_MpM(=`TDlQ?;lM8l0Zlg(seq z$b$x_r%`xzaz1EqdKe<)KcsX3{|S0g*vC2=T$SD;KG6CKr6cB(ln&~>JV%%s$P*3D zb7Tn5@e&kHvj+{%|95*>+m&5$%$oII_MpL4>8;`s#hf25um=s!`5``wR2>*IqxfC! z=j=y=v)nN}F86kO(BLe09FOOvuh@eIXSwuI{$DM^ne&vqYUeb6tKbu6-d|>BzunBo zD5afwj_hF_4bF39AM5mCn_~VS9|u@RgY*CRXvgC<4}D5~(BM2b=@)cvmuiZY{q&-6 zydpXpT$N6JIu!H&4dH$j4;q~RZ^&uZId?l1^Z#8s-8vea|L;;=TwzcsT&PH%b#v8v zm$oazO;5}T@}R+0>)m+f>qX&XisXX^SEWxV?NQA8=*qjrVl@8oxI~&t8~izsCD}M1~YSAuX&}?oeS^X!4oH&YjmO|EU?d5ipLaOM+z;{N%6^~vV)*C<5c zKt-5w7tdJ4?01xP`eedP-Y1*s6CIw|_Y9@mnz@Gb6ugUhZ>6)%^wU1(w<;x42lk~N z$uZ{LZ*jcjL4&isW#4jK*%u8?k8ox@(6-t%iso=d7(Z=GZa34no0wmrl52Yvp42(>p)JWAzpM{MrY@Y} zKZC1}2ZV)`*#3kFicU=a?z~>*gOS{e_u2K4GSxUo_K>c+P)*b3TdZ z{NgU@@x3PT=jG*dQ|dr}>}jT-4l~n#Bj!Hwhs^ZxwPyPMI&(vOlXs0e)N@ESIeTU?^u+TqYeo*;*);ugvtWo9PSlSP?O&eFq z^GLxzE%@gJkBIZ0=r`8U;Jkks#nY|~75=P9{%COiZR40YzpMFgd(hzgu4b#UVBfcr zn(tORE>G5BGwWz@)?oq<6QIIY_MpM}IY_K^&u^}4CiPz4lg1iJI$Erebg#--V!cRx z_E9>8|44ztiPq8J{NBR5t<$%2^j`WuXdMks|DwV_7ym{Q6fU)n2Ip^}#oFfl=CQlp z9>&X0%-nO&(>}Q#`;~PxIM-vpx6Wr=^YQz>IGzuj-_+o|FP_Fj=P1PYsO6b9=Xavw zZ%Cyx#un(kymrLr1=7*t^8(MYJNaDTyx6_q`0lj)=tG6RkUTf6=vCJX>u7Mci)REJ zFZNxe_p)6lSx1AjU5oL!UGaTs?TZ%QmzK_3=X&2;l`b$}qjX`xOUP%-X5Bt%9SzR= zzNL8F_Ur9IgY(+K_m-*uc1j;I^Q>_h`<|#5g(t0}!By$h^AFblq4duMFV}nddE&pU zqrv%kVvCL$87H<3Gd9 zvw?HWJWH51GnZa&=6S}Q+P^Zb7lo^=qruhb=Cy2vbu-!VGh;fhvkPGzS3;bF_DpL#J@X5mSMdL7>i%Qf+v_@xZ`@t1d`GBSwc?as z=!ISw&IF9XV@_fohO3JfURaVb#lEl{`x3KSU7`(?(GEV`I!Do!c7KN^`y4U3Ls z(T2>}#Hqt9Qe}q444ui0gDi0&!}xxk&*#IQpQP)fuf6*@pL2S8dVcIj3vSB3p9XTR zXQ7{(>|VyHs_g5R;U(FRp#&G;yzKi~lzl%rdB(n2Td-TWW|5VBJ}>*{W@P`|G@O$C z80O%l?E6W;ad;Mv$-aL*Ej-uwll-kVmc(r({%5ewpR?@qKG*Z2&jQPP_S$~U=jvOZ z{d%sZ`48S2%Xhr>v)KRRt?@p^9;;sS@pSL#T(Y<3^)By}IXZW0^;$MHpX+?}r@giO z^jLjrxkl$m&11`YKG(93wr`f}H5vH)&+Psi-g@2ky#Lb18(mMi?e@pN<@3DNOuWBm z_doD1SRU;o-FEx7(RRjMvivT+FU)0gbZ*nEWm56^lI4$hSIjkU)kN=ctJk{u1)o>V zU-s5=Tl212{uSh3^R8Py^lq4=>nzr1)BN{7zuR8mBkz{w|L)y3|F`#w`A6Oz^PTn_ z&DW~=S>9S^&-U(G{yc9jzj^O9%U|rhZjSyBk@d4-ev8k0=IH;~S+3=<>hn#@zwF&N z|DLy&Lv#+u>a~8p*ROAS{dH|ccZIm+~>;V zFt)$*x%RVmQ2%Y8E0aTgv_EEJjz7hJUi`8ZSc{HREZ_AGzf%+Kr}_Fl`(F4Rng8_t zE0e?T$c$9u_cwm%Ym~`h4Ew6_)BTaJQ6`7!j#cCPxzolPEfdS+(9eNt{C@8*`Wj_& z*pEF#&2xQ?GC9;l`+K)-pW3qfe2wnH-kYme0R#_ot|jey{De%j8fWU0=5RyOw?1ZW@EEZKAC0;(x$r>eKH7|Jdis z|#c3Gj#b0^BHG`x z{*}pLo&Qr`e`xo!sQ-q~mC2$0n?Bd)W?c1tzc<<^wEmSv`-GOqY`&u7dds8FF4g<@ z>34iTI);`*|KIbuK3|fmSBKWV?{j5xIA)(y%`;rh4}Fa?IUKWJ`CR``FQt0l=Z}4^ zOb&gfRpa}7nmtFaqcS=48U4Rk%hhK_^?sdyiLX~ChjspbpKG0;SG`})AN090IsEMX z!#;o1?z5`*$7Rv~gth4^lf(M9pc=oPKjxpSOb+Y0&J|2Q87B{Vr`zd`XG_JDFyk2R*Tya-GApr%p}lg|?Qpn{s9HEuX*A=dZQ< zytmE+Mdw|u{@rGM-0HbHfB$~?F>jr#*7sENgxxp1H3lv2FrK!z>a~tef6R^T%RW~o z-|~5Me%|{0N6WtAYyQ~ozv}%ByC1+q@3GzMdz$Vy?fx&k|JCmI;J<rfx9C%(qwpXAZr?c(Ubjb3(||t-_pL7U`6sZ}IpzAS&cII2~f%kXq z{-33aIN+ZKaWqhdu<9e-ICpFQxe8ju=;6jOsuI+xiUHYFWsU& z4*$blyE3X#Cf|C#JvM8*ru3;UDDK367({loA3{QvB}p?W_rS3XxJhxMeX8ohz6={XvYGWnLzTlRQ*K^69y zYvWLjGWnL}X>;3dVOc%P*C><2vRYA1%T4QUU!zREi1=Z^B9ckar+;Jhx|wG6eM-NJd%zWht}#oEAb z;dpZ>`(wskdCtCA8`&*f>mSR%YG14!+HLw-5#4cF%K60Zrtfk-lb`K;AwS3YN=`dZ z*=jU>w{x^#{ak15N=`q|S)U`*8RwLIk8`wtXxlEeXkYFH&N^IhW-Z zJ6Ghab5*|Axi0(lrz!jQPFsGNtLe!1Id|okJFm+*=bo$|^sv^K?{^-^uW%m9i_W{U zcHFFu4mZe$aW!-V4(YImhJJIqNfYy6Bvg zU+*bJdxk)d?LTk z`AmMl^MzbIY3Fsh?c9?;pYM@=RB14 zA!2P;{=D-@{(|#Z{-X1t+;N`BPdcB-x1G=AFF9Yxw*3z+>|<*)9h`)J1-J|^!*y7@1)-k~yaxB+EjZdX`f=_dkG6+CKSCaD1ATsuJlgL0T*nJxJaKpq z&cF+B9@cg0&`$-{b(WAf;T5End9*F^`7!cn`{VOVhg)z5UW0q^7CeOa;4ypz zpTOtv6+9EWnfEw62WQ{~I1iWL3S5Jm@Cw|8H{d?J4e!GH@F9E*pTU=~{&98Krp>}h zI1OjvMYsqr!Bw~cx8YTI9o~co@D4nJ58w%W3SYq2aLkU~!*WQ#DR>^v!3DSsFT-`X z1$W>zxCd{+LwFA!!$u?M1z-w?%w%18*3m(FI@EAUVPh^`< zwR89ip0V?Ap(YN`!5P_}qqYF&;SyYdYj9Jxo7xK8g*Rk>KClmO!@F|a^|KEj!pHC# zdt#m$E=f*IBPvHyr8jjg}F+4W`r{H<{S6u%& zxB!>oWw;KvWPk0T1Fyk7cuV%z7l!a2Jcf_p6Zjmyf@f?S6Z((Cb8tpZxp`lJ^Kc2S zz%{rDufSb+1Mb7y@GiVB-{r=32p_{|@FlEYHVe<4m7neUNy2G33opV&cu9Va>!%7g z;I^E0HLLJCya^BB9ryaZR_2Hb{M;dOc5E$2;m0Pnyf z_yC^3r}7J3pBL~o9J9~EP?LaD@I0J@3vd};hU;((?!aqsPkxab^AQDBtU9itrL#g&S}iUX@?s`dNoJ;Q_n@kKhA%0-wSc@HHH>{iZO61e}8B z;T&9m%kVN>hg)z5UW0q^7CeOa;4ypzpTOtvmHbk-%x7$$E;tU)!5MkM)i1z#xCB?^ zm$~{H+=N%)F1!Kv;ca*q-iHt6``mPo;WPMBez~ievi;EDSvV=@TumCz!i#VbUV^J| z18&2s@H)H+58xem1RuZ?_!Pd7f6dL;H5{}3>yRhllzhLdpNDgB0WQn0aP`Y@9d5xL zcn$8sTksIxgU9d@d;*`tSMW^gX3TMT4$i;}a2_tf6}SdB;T5O*(PrxZT@A{dCb8rDJ!^?0TZowUR4er5P@DSdE$M6w+0-wWI@QfX+ zg?Ws_b8rS;fb(z(uD~_839rCicmwXk+wd;D4w_ur{OHT zC_mu(EW%506>h+7cvXI_>t`L_ga>lL)$G6{_yC^3r|<=Q4ae+wI`p5AA9T}7!Siqq zF2H4Y8Lq=ExC5`jJ$MTq$`84*?ZIRC2tJWt=jzYlD|p6^*F#Mlo`W;+0-T3Sa0RZx zO?U^`5Z;5w z@DY3hpTk%1%sn^Ljl*+rMlQLrEx>uW1Xti1+=N%)F1#WCx|>!X-iCMOH@cdA_z*sZ z&)`dV>iIYQ%)&`H4QJs+xCk%7Rk#7S;Z=AY-h>D64m^Sn;0b&RU%=P$o7^&t*}1*o z1e}8B;T&9m%kVN>hg)*lO}7KD!992j9>RO@7(Rke;B)v2p0V?7VLWko4$jDLc4JD64m^Sn;0b&RU%=OJ%+582aVFrD{B}3~c{m3b;4-`n*Wni2 zk>BC^UxRz_7CeOa;4ypzpTOtv6+C0-3&R-Va>b2j4$i;}a2_tf6}SdB;T8FvZdzS< z1Mb7y@GiU$AHv7*8GH%rm$kweX5l29hO_V@T!fe4D%^nE@G86xZ^8q32Oi1qa?9`l zp1`N@1$+(1?!DA zb7Px_b8rDJ!^?0TZprU=eRkkAxCd{+LwFA!!$!3Xd}e#|Y0Q}_bDhGTX;B-AJ16g&^--~wEhA9vGThU;((?!aqs58i@@ za^3a62an++_yj(OuizQG&J+5K!*g&3UV!s(39i63xCyVoU3dfT!`tvKybmABAN1=# zdh+7coklkKkWM1ga_~rJc1A4iQI7goWd9I zH5{{RT%kSzr{H-w2N&QnybRaj7Tkf?;2yjM58*v{3?IQK@Hu=1&)D_4Fz<1A4$i;} za2_tf75O7>`PbkkyaIRO4Y&_)!@KfFUH|*=A$$y9>!SiqqF2H5^<8GYG za2;;J9e54y!CUYU-h;>R5qtul!&mT(UAGKlj>B_s240Xq;pQ<9m*5IqgPZV*+;aVN z;SIPCZ^OIrK70rt!)Nd%JZ0BN!x(1aB%Fq`@+aMx7vUnj1Xtk(+=f@>Pq{wV;Z1k| z@4zGY0G`07@CAGg$MQF0NWdw09?ro9xC}4Db+{#edMauicn$8sTksIxgU51vDr!gY z349J;!83MUG(0yB&%qgZ0nWoExFUaMDrz;j39rCicmwXk+wd;D4F}wa8{{BV+PQmkV z4lclDcp0w4Ew}@(!992j9>RO@7(Rke;B)v2o+;eSdmNsFGw_1E;$EXXT!Jfb4Q|3K za2MWy`|vir3-7~+^5@;yj^Q)-5}tbSrhXPq!f7}QFUntV(<;JCa20OAZFm)4hd1E? zyaSKqFS;=tz!UfszJRac*h4q{B;XW059j2Ln{ELv!^?0TZowURO@7k#*@L&>A-o5V z;UoA2K8LU1nb+M+HxAFi8F&HC!zH)^*Wf0+0(apJxDRi`yYN1I2p_{|@FlE2d>EGb zES!YXa28&Ki}G#v+AYCVxB<7}Rd^lVga_~rJc1A43497)z}Il>^*7^Bz$thh&cOw^ z3@^iVxCM9MHMj?F!9#ct9>YiQ349J;!832TnfEw62WQ{~I1iWL3S5Jm@Cw|8H{d?J z4e!GH@|WDYcL*QDXYeJge|R6BI}0b_G@OMO;Uc^QSK$WShF9fPH~w{a6CS`j@CZJD nC-5nJ0bj$h(#;qWa0;G>b8rDJ!^?0TZowUR4er5P@DTogarYOi literal 158340 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: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

+cbzHuLMYo*dutPhzLYzS!62n~e6gI@FYMfbj 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

E?t7T_V_f^qqEjRLME|YQ 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 diff --git a/tools/sdk/lib/libphy.a b/tools/sdk/lib/libphy.a index 05ab0629700e161c224ae09ed84f5164211e7ee3..dfd469518ea6fb047e49c27031288c8ddb4561b1 100644 GIT binary patch delta 31969 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≈2`%#CmZ`~?Fuc@FFh;TvG*39o`(BFtY}+$vm_js0II z4nJ$#O_p~>uaRG{J9JrMPQvC6hd$HRCzG+^g|PF4`4#_F!gs-LN7f648qukd-NR(= zs&E8dkRWPgJ&(1>u{XxA?0bcab9_%EbgKS%o*Ew%n(M-rf_<5Z3(XA+lqUu*(<)>o zyv}0Z;lya)XSaK*k1S9n$~U%jaP^9Xs)b!J00pK)-5gBvY2yWFGhTM%N0 zZjD1V;av`{bnre0A0UU?b?Y76YXJVLr6UFWfz94&{ZmuzKS&ud#OzY8Ml=sKwy6z~ zrSnx$Nt*h>Tv@K>sbl7ea@9^9H7}N{3e()Ep7!F0xA+}O5&w2#$>W>8N~+uQ4gZE> z=U@GvHu;zQHL=FB#G|D*#}eipUHuhocH&X|Hj^;#Xqx@I+xQ1PyHW@D$?6?3-{-#n zJ678~`(&ug*m0h`bN0#3-w@*BN@HW+!4GjUTjBDK>QX)ZUR4)g-RDJhDX7^dg|mqQ zerL0dIq+rmU)HmG8Kkwy9gue-S0J|+-Ur)B_;XlX16E8YG}TyA!Y6tL znWu*B7dv!*$jGGl*YD`W!(q@};BZ)Wf_-ITL%QFnVC;gP1%95G~`SJwT;p_4m{ z?sfr?*rs(1_?>Synt*~_h-`F`BZwRgZ71?tmv3zQw&rc|uCVH#YAydJS$HsR zr)0!M`c4*f3fT)%=CBl3e8@gvIR8FbD5*Z)H?32gD`m9#-TSHwmc3UU#9xM8XAXgJ z9ZBXdK+M$#RfJk&ZlpAQf%)=5)g^Q(9vUMeeItL5YqtM-B7Y}?lLE0G5pyNie*<0?e*Kwc+)clbO8 zv#Q6|so}xi3Y6(@9UVd^|V z)VCvFve|2}1MCnBc&54vN5GB|j)E-`ZUehOcm*s^9P74+rB9B9#eNzp7XKh&4z+Y@ zWOpq7L3)@o6f0D~;iaNF;~%8Qk*QN7yG5@So%f0dS;xOAIyJJ6KPo!!r(?prhv>8Y zZ?S#jw02<6IQSc3R`}k*mmJLB;jkgzq}_yhgAWkqjXBuC{Ba87dH?N0?nZ~_@?5!uw!&h!j5A`hf^46^U127u@!SNv z75=(rcEh`2+3<<#rg5$?7cZO~WcE#={v=qoTZUYM%*1dqM~a=uw<2RVEM5)EcFbKImp*P)YnhPbg3a8Ga<@`H{T zeYP318#+73m}8C@GQaI^ZQ!({;0!nd!K{1%toObpE)gbnj*Qc8)$Qic$ybR!)S>Ik zjcw*Z*KID=Uvp)ni&3B(#T9QQ>SW#M!wy|vyVhPpk40=5@&QK-nWu6ma=q5k2{QK0 z@Up@ux&W+i1U7mex;~e!am;zx*-%>o5<5rEhNV8;5yKmai7{llY;!Jv%NA~TO)!r? z5`**|$DncqacRJy&0u{c?*{9=*#qWj;)Z#bGO-TKu~^t&bIdiD&74UxJ2;RbGU=z4fy-SyC8C1y7mlGSPc#I6PRpL_6E zM`amPtiyE?dRwW?AN=4yD?WyR#7>a=!m<1_gR! z{Ot|n*wAT51#&txZmbnsK%ya2XZ#4T-q`hy7;>D%l-oMK3krdbuJD3gVCiIC;UkBx z2U&JH0>^(C+F*zBc`lF`O6Eajho*p^62{v8kGturra1nr!=R2RU}9xGdUFFA(DfBt z0Cu6=YSa-w1x%NEu|p^8QE!n$CtEtt|ILm9vaV3((8*foSLvA8Q9Zq|qsa*1_)&(O z1?EFJJM;kfW#Q4deFh5O0p_0)w1T$szCvQ7irrH&`|_0nEf0GH)U3We#1> zbL`N1=$%-O{G=mB&w+>;ZB(K__xgY%h^)u|&m8&*a4Z_+1{%RGWpChebKfH!UNXzO zyVko_C7Z2NT(_#r=KWmP8{IMSo38-X>*mQ6SCT8FC6@19LSDk&A2ZW>AcpVPa?Gi~ z(2bZ-bHjbt#KtvC9!j(anr7Al{$pGUW!3^dxienBV}xWU-CV$jw81qzqq=iX7e23= z1a$&3|61_fusU(b+Jd|rna7dk6|kIVwP>=Kscn|?PaSwI}_|@>kkjEkOafi!TP68Q-W&L{idN8N|SNM9|rr!XcV>CYx zpzrcx?|9?#9-zY{IdZ6s{sGkfArIhCO9AZ24sV+;qzYWijC9f zpSafd5B+P*pVC|#TRHwWF2<}`E9Nd(Ik$Rsx~ta3VG``Fyz;PYgTAV}vNe8$129DK~d{JOA8l~qVB9og^!vh3o1hh9VOZEuWY zua4&|qC0UB_qFcy3393(}HoZ~gugv`3)a2cc<<+@384mzeQoWr@+%P z=uVs>%aPk-_88#m<(&tK?;#(9T_l_XyV0R@7-CE%>_K4;M|Hw`VPkkY5pxRMS@;Z? ze@KG*RM>0>Uu(11VE@)i0WYOHg&V;9%i^qj0bD115zN2;K)n(CnXm!t!ah^ysByJ$ zFgQjNxVaknnm~4$jo~ zBY!T;UlM#FT+5~Y_u|ySUKFl})s{G0uMqz$XQ%un!9Nfqh0e1C~<>8?Ax;R(L;bFz#CF2f$5)Yr!$X zb>Qy8_241G$H3$H|1DwV6L6LYv%$xN`OL6Wcopp9!mD9_6Xvkd4#NoBIRjoI%twO< z9Q?L0hnzFQ-tB-0j7O~85B54?F7-D!_<0A{IXE6;9P4uR-9`8qI7^sg-8kXtu*{4< z1-+P$+E%aOtdxRt;Pt}i!4C;HfFBXQ0DfJV1M5NIM({~tYYC6RnC%Bc3la_ka}hv2 zmP`FH;v~RwY0iRVST4uODX?6DlT%^2>L&Mr?T=}R%u#=`@D}h?;jQ4s!rQ@Xg)6{Z zfk$~!c^90mQm`BRu<)~B{tlZPs04o~yaycWvGu*+SmAx(d|^&WMZ%n_N`yIuEfuZ> zdpC$v2Zu|1Zmb^surMdaM}<#-4+wMeJS%(#>=!-d|D?VJZE3paqf3ts?_u-R+P z;QFU9+`|G1;w)b%%-MgDFjoa$VLq(fEzD<(H-vY?z9W1TwpRFA*bsc)!OroKp>y-` zwsQ*3ASpNl&J{ifo+5l6TqN88UMqY7TrPakyd}$Zmv<`WC2pexHWyiOp@TFFnL0JH zTlA%(uZCSNd@JnD4xMGJy9ss-vTpNs(W#NqCN65EJY*fT4a~~a$a=#ci+&t7K_*hZ zlw)Q*U&=9)IfHwUl`P^aM5jh}iyopURlcly4w;odfqh5#80_!l_Sh(c$ zZX-J1pCvf--VUBhmUgC-u`TQUS&1WPxfJl7S*b(6&%w`;rJ*V^8sfzHvV)sIqs~`a zt%UiiD_)qd!@43{lPaBbM?t28a~yn)gC{zePdeNfC)fLg--6xh;3tIlz`h`i*I{0x z0n-U9^HtQ}9n8O|qxDM;zJXIocl)rHg7rBzsiPfgWPOfb5dC#n{tX+(@YU5iWYyNb z{)`$aph(u04~fqAUZFA%@pVKg48hZA7FgU?}u`mZib z7o8f}-P7Lt^NyJ7C59SV$E*~c?Ke2$*NE<=NJm$=;0U@;f~b*o%wf^_F71ee>mB^5 zgU<@{9oqn8o&vry8;rje@`p223i$FZTbMI@t}tJ|RlwIrWuoZR$hvd895KZbLyfFs z*cLl+ya~?#ZbyX`Qb3KYD?ICnSt~Kr$U5de(fQJ^(h>iV=+wwMeh*{3axQmE5Jj>M zVq`gL z9)xUd0CtEl*Fagqi(rQfa}6|7m}{U>!hHQX5R)?7;Ty&w{9-hn32-QA9^v3?92^GL z|6_zPqEjR5|1m_veGjvmF{mjY^JJrH>i$IkKnXM`g@Qgmu$ z9UtY086h#$$U3GCe6Px|4?7#?1}KvC|H5H1b$-_ZiGO81s+-L-C7$b=`3_#};F}$M zn=s$ImR(`5ahy)F-RMav;7Y7L_h5jn_lM8UQ6uaBH9#z5WG){nG1SOsOK6+1!R4 vYjejAbolWQQeSeC%^Bq6>MuvRGL_jdUwNtPVPU03Wo46-Sd>~$qm5HGnWK$0R@VK0zvnzV_m8!HYt3)Xn)TnyL9puySMgR?U-g2D74llgxzn3bKK<;uar=9Xn0x2%MU z|NGXfhh_aQoBh9K{6~5f`ugu}_P-nWUy4Kf|7K7BJ8|~EcbNV=jiYT_t=wzfa_6+a?$Q+%5kJpzOZ2PD*Pj$ak=tK!tJQwg=xJKWRiS1EL~ zSNo{UfrAI7hkokS%eSXrsPLk(cA)27--ZJTZC-CUoblDjAEx%6J7n>@-D6wdG~QC* zgkS$A{9+GvePm%pS$)u&mezQMg8eq_Bm7^H-FoB~;m^}P1}CL8<|M_XCk4qRjsBfh z-_{jdYbsu8-RG5;pYlHi`H{4btaWiU>lpG#$ww7SYbq92SAymItqC7{(JR+jez>|a&Mn!9|BKQZ1HDQYu&Sbx#y}hOe3;Ex%+36YeNpE}| z^woA>7v5gIyn1c-U}~H*KrM^y(<>M}+c_!Ny?b8&yOX9{*^3(*$_DTDjXe}TvFhAi zhZOcRkQ|6q4~E+WX2e*5nb`M0Gxn*Cx<7Q=!2Zgv-8wL-m0A<}G&fzH2?fT?>HA4I zN#%SnHodnhdOfaRizq~YnelPBg)jE?O%aQ4-JP|nG2HNA_4>-1n9wU@2DG{Eilmxb z0}+ATz%7C3yWR||J)!esIt+a^9GH(L7qH0$H0cHZ8GIg)z1fvl2W^^tZvCg^z(p z3-|C{s52crR`excCiL1_pXqB+yK?%5W;R<*fViH5_5i!Wrjto7>*ovigzLnmu} ziJ_CVUT)~*XteJ(yxhnj>jIUAPS*NEhECS{YC|V$eZ8TRwO(Tz88t@6?+l%+3-GdI z;wjLVAWz>8=*iG{6b~9PWL$ynX*y}>gwDbp+h4f9 zQow_tvEkWDgugU`zA^OX802sk+`?VJx}s!o zQ1sE@iNX(onb zn-53XX*JxJ?4ljIu_!qzXQ*YBgq)&el^%MfsFzwB`YZmg3Hj&s@_mySDh;*|T{B*eWs9YvF(*-V0YkV_x3~@0y+@u|weVGF^iGV*Y6OS;!mZ#z$B) z=;K7scus-?Jht80F#c{Al{okIg}XI;@&oLt>NjlpZl(xKI4nT;zA=2)i7W|5_H93VB< z;|OYA4Yt+A>^}xYW=N&+5;PlnoKYY^mQKWwGu@(A58S3&Pb5pj9mozOTU-%rl?<*Lo)+fH;u&GCKAsci5@m-l zmoat1ThK8-;l+zG;Q)iF?3<6oo)C4;~k0Ln~6uw70;FSiiGT1Traf3G-{G`Ek!n`V86Xw;@C>(`L z>MO9#UYr69FO(9N#z*GM?k!--K-rh~JA- z1^bh5HSCR8D6s$s(1(RLfY%9gkbOy*gD)3vjNbz8f==X3V@Oe`lIb$hsgeDn-$uQ^7gH%Q9DF$hp)K1Tw=6h%LC`^NcWPw4Ac$m4x>wOS ziJ?aJiyp(63@>J~#84yqMSnwdK2d!VCxa;;qrR66jx#=N@mXF)v&c9qd|FD!rUrWY z)uK})`$f-U%pfm@WmuLP*)RG7)CV92?OWM!)L^f`!^}VdYGl9Y!x@w9#jKYYYGl9Y zn?&CUn}baa@#3Epof_FMdM?;jSOqgZD?t>=e$mH+6<<{#y(}@*$bQkk7X3%qX}IIv zJwyDJe#@OS}r>?AbXqT`p0Oc_o%KJ8%vY)roqof=tR6a8gq;dA3fWI1J{ z$b2J$GzoVz8(R*0n=qdn8(hZmKLYqbGRWJo>2v(C=+wyi9JiNYgU^jg!hD|G&a%?! zaiUWr>rNMl&S%SFTO2-g?qFd)w;^3CIyJIi^h(kBF#4`A$FPrt`C!@#Lkjme2;17= zovdHZeS+vVMLPPT$d(K~qz)72L+Zoi(O&1)h|Y&mK7_I{K7al}n9rZDktP0p(HVP8 zn9rryyup+YrvGGy6ySrS<^(bt;6o}mG9OZVlO=wT!6PJw54h6}eXhX^C1!L7oPS#! zKGhx+=4iVIo4yV{6`dMcUk9f}=Yabina@l}E#bSJhV3NG2i%3ie5l=vc-3);SKtQ8 zph)%)ajIwe5^C?h|GSnK-i24J?GTZb>AneXyXOX!#If)$`BbZ&)h0Az-IcYQ)*Wvb z`Ca(HceM{Zn-dq9cO__bXL`@>V;3**Ik?8tYg9-jNv;veoh_FnkR-r6VY z5BM{-Ao};%wqkn<+cs>0j)CZnKZf!Ad1dqEf2<#Msg>zdKi!_55t(_ZFSKo6xjIza z`%gY!ZJ+(CqoVMZqi}d=an41dZyO&_-9pPg%Cch@2ij-6&KKO%l0PV%5hTp}p!_(j zFZqKUi|@O8kMzy^K>Z_JZ&`P}6<+m5_{^^G#`^GcuZCaW6+ZAv_}EKf^&(#7hDX+h zr#=^6{7iW6GvS-w+0(mOQBk*PMWaU*waF|R>MKh9YSRZr?cXTs_|hYriUxgKlyv5~ z;_xFyU2ke-EidYFBq4Pq-iWSxCfs}K^4O~76Mh^UX>EKu9Pn>y9{JMLil%HX6{pnE6B!MsT7RB*L+Hkj+u;?$ zJs%h4jLfX57@CBFD592yXMPxU*Rt^9W$ym>dUS4ixMBwPcvP=7g}HH7ZtJ|<;Dpv2 zZ*@Na=;f?h66$sE;*QbR9(y~|+Vs|W9R8T3w|)t94t{-i&HZ=ZAG-5kin=_srW~WUD!~z;qgElw5leC18w(B8?OSsoXoq^3(Epgg&&2^j17OgfAg;0 z{aR&=2?rt(H#Ijr*_SlGW9C~KNpGb>m^(6D6m6+X!bfJdKb5%jKxt`NRo%uBp^QWA zrVR;a)+`Iech3$N<@}VCG+vG4nF_@1Tb_{>&K}+DW)-mJW`=!ZW2R=hJDO54{@4|B zt8!6qw9o3^Kdgqc1onID+`IaQSM?38J(SvI0JX6#t)0itPt52R?$^rg8M<|2kM4<~ zKOai$-9DV%D(9l$kXCc!-FnlW$jdt`*HFn5`+i<{ps=v4>fY3mp`^ppqki}$XDRBYP^qb=6~`*tA8x$=RfnsFX{_seOp+OIyH3oa1V7P^vmJI+JsMD ziL8D9vl$V!eLt^P_DRdK#^+#J4_gY$H%?n%u|}{`N8;v&JqgSF`ca-eD)zkCbc{|c zHwiWXy9<`((sMn%1eWE?VVU13{?S~#;ABB2j0cuV^(<$}<=AG_?m7NMhif?{(0wk` z%iaWj7mQ}yH)ny1y!NOE!I+(0Jp+ts!sT(`-NKO=N|J?pfuofd)30{l&o}$rL&BbH z$E^P(!r1f`GRd;HGqEu;?Q(2A!A$hYn4aCT!)!QA%ovt)VK2vk znW*b4R;A*q%ketIN_hn{F@{Xbn5EzrV8+}7?gq<_@=9l7oWAO97TA&F9a0w93yy$g zf%m}Uh1=q`z+La^9l&gWF)3gsR;q6y);SzHPb=$OY{ZcD<+yqzk3SL%!*Sn1veI2f z0kS^S?}NJ_pD|w>G5Vfm!>6I+5^)>uHwu8n`pNqK82zh`D~t{UHes6xcK6cR9-+F~ zcnjYMtUoV!*wD#xt=rZ*BZI69Y%z4QzB!&Tbh6fW z8akQ#xE$MVL)QbIO2sM(dMBP727P7(>Cuou$D#8=X3P&pj2`56-n?g_gI z+W;^VkBlBs8J`WEcQ@lF*+!5aZW&Y{6*1^eBc?)_F=QSs#;gQ$C}zWs5l>DOz1Gml z&7ivh#~7SY>}bsxr1d(b8-Cj z9^7FB>4}9wmC*IMd=NYi4RJ3y=`gWFdIDnnA?VcDAxubaqEDt}%n7h}3L-4)d|gSj zYVPyRutE)UlcGxQ$12i!B1R?qsx4Hdgggxz49Bz6ZyJ@QIAmskw@a8i5geyfdJ=N{%W&j1O^~ z%Zc|)#9-yvz!oQt0F%5Asp3L^nb$e0H&)B*L*aSJv4NW~W8-MWhx!(Gi`usgPn31t z{Ob40&QjPd^r-53U(ZBoF`nj|qlsfj-nekERM+=6nfFt15|5&U$N3u0@HOYsKyd0<>Ru3uqG z0UB2D2!KaJ`@aS7-s~^=JK*PlSt;Y+f?o#SEdB@Z7osy$&;s-S245#GJl-|o|briQl}H@x2?PW zr(mswABRh|lN5Lieir;J@pr&q3jap&-)K^PKm60k=aPjTIs$(<4q=-3C;mq~&i{D` zF_^Ch;Lxx@43EDg9)ZqH{N7Fc5l#FlP5i5y_}7{~ufJO%WaEWh5X=r#!(R*kH*!ig zn*|V4+r)nZ{sydbXUPtH44>2dpQOGoo5cSJKM_M1?=+hY`Z-2Qa`za1Ii@b&zs&E` zB>xil+pt*RLO2Owx-|Ga z{K}4)HpSl!e|2YE)l$I+@Xx`&Rs6rfuR(46%#%8;35b$-7t0HTA-iXq(EL1|EebbHBJ1|CjRYB{Cl;}^UoeVtOfDcHt{#X?~sh) zSCgN*P0G*ne7AkK1Gh8@Sl+~6 z)x_W2#D5X~q#SSg&j#OWlK&z6xD4EB(!rzfOEb{^77_m5q(B5_mDEh{lYUkh&sjzi zk3i2R{y_Mv5x-83SU&t>tnr_hi}JcA@psbq_TM`NRZRjOgC87xVXS|;N&YVQCCI-C z^{|6~YLb7jiGKoq0K30I;?Kdi8zFotLV!zAN!-IE_F{Ilid+xP6XB=A z?=AUr;TOOkB>v6tSHn*i{~q`{vHr(mf8BrY2yAZ>@Ol&fKokFX6aQQjKY)oxCpO55 zh)?p5%3YD(TpxdAGGHVExHLwm-94V!q=IYUFU`3yncM+?2mHknUj={oNPL(e{zmxT z!-7}e^YHa^0Z-W;8-j%fai_Qq9)PbG`3(3BzFyDMKLcMct?5T$rsFaiZ#3NU3GlHr zc2~yC?+;%m?%*X&{DJup__~G9gl(`cDTdEw^CZ`gai?0nEM|o(k$=J&oS@!!zX@H3 zZ$jT28*0_!9j7Kq-C%RAqA>b0@$yr3F1l+P^`gi8UtyqS!jR^EQH6}*%4L@8D~uE6 zPAmK}3+v`Ss6zaQ)CC)LYGi+*Tuxk`>(7?POAs}({%naAt6umIi4Ce$7u`lwZ;#!^ z`grWt$zCDxcqy(YkT?gbelA);wy!t~A|1y;)O*k82ffF9-q5^)EJvln(D@9bWAbrz zXwEa3kA+(2W2ehkpy7J$fcfOFgVGG(CbRGoco8Zn{jy=x#x z)E!Dyj%pF%#T8;rqQUWrP11ILKjD`5X7TnU?oo0@tRcvPK}qvrYS*KmZX z?LqhdF3c}ge*s=byqn&fg33IR7Bb<9uG2$2ly_ zkF8&r$F`;LUT|w+9_MUfUIY_`Bhk=I;YF}~k;)y5fnF{g052Dg13y0;_ZNfW;UrQN4 zaWH5&m~UIjIpB2RTyVDVc<=<_Jn$6ZN#Lu5^TB1p1>kb9%}VFMc~~+E!Rv&1Lp~wA z5d56*ZdktBWm(?9ZwQxy-x4kZpB2uy1Ya)^UJAWAe3mUAhViYJI2FiXATw5g`6`%P z3I3gM75H=EYVeQ3tHD1DuLURPcx8E*`wDM>o-NGx)uUXty>n3@862W+7cPZeCR_&l zhVT~Hy~0~z-xKCg_ZQ*quwyVJatAmx-XQ!c>?(s_vJIzRnB(eq!W?h=VEko8d9XRc zd~rHMcoFP8gKraN{9OiD3A5}PVVgl4jf|&-slQ?~ovU%YZO&cC~7aOO(}r>E7z>tH_;=DWZ{!u7D{g!jO5!NPj@E-*(p z3ziEP>U_`lfH0@RXM`(qu}peS9L}9wn6LonRQJ6cm~-vd*r*?O+KyM-=VB4gG}-5= zcf#f?jL}#-Gc6UJ8d)z9-WL5JY=IGfKy+$k|6r%b1eM$oD`}>V5neNMkWKbyJB1Te zLPu#WTe1t0O-AYJ3F&3_>BRls}wMY$hwqL3eQZRxt?Lm(Ig33xPw^)K2 z*+0xVd8rzpEBsQj_ad8&3bQ7vt2^TUV!9>TE1d>QM(J%6)uN8L<(OJxZN$p=A&cz4 z*h!zH2B<+!;UqQA&T)gR2b+6Qk+5XH=rLd={Dj0%BkP!FMc)C-^|~7A)%l|6)X09( z;}|1#Iz1<=)-%M3H!?m4v)k0jy0LFX{}*frY`U=@M5jjfk94Xg;~0+d`m!F2URGBI zOZJa(8j*c{Z!i09O!&+$fhGGz58|y7_4zGvDRNP8sTV&|bZTV3=qDI6(TkZPG1SQZ ziB9QdYS@fPUiMRxeG=JZzv$aV{~Go*^3-H6{zK8Jk^Q2dWz1!3rl zh44B~@ye}7*SQPzu;&>&)Tw5+T!(K-Houq4&%BUb&$@;>ho<0;$nz>m!WxN{L?VLh z&vWAQRPu;PUiRyfy#ki3_l4h_Q&Po#iJ?YD6=kTRBVRWl9hK}VSh9b*vpo;p%=fbY zCE3-mWPiSMG!IwtR3~mK%w#8LDmp#cDVVB;*)zQ|AL5Og+vzqK6~OvCV`oLDM%LdM zi$omb2f~&c@hPHHBkTAa(dWZf81ZciB!eQ^Kh)_l4cFr3UcYK2dj+z|{>z<`X=>aE zIV1kIUNC%~TGtve?@J6dGHR`u zu7;)XnFQ$;JVEjJ#KV&PqIUqRE1aWf8Rpz{b@d3j9sVlI<`P)4zD-KO`ZhTuG1SPo zO;+ctVQQMwkdIv{@Y*gjN-Syb^@AGOFE`v$#?1EOmrD#avVXRdJ_G%m;f$Z5rmKsb z4Kvhx9px@x)XA%GMMujb`+GYTGjZ+ZdUdUm?BBzN$X7bsXR7HVW_a1JcJ@j?3tNp% z$!TsBof_FM`f0`tc5*I93xmBXIwyKnw1+**>@iL$vSBJO$1O6{i#jDym9S)-o;^l( zyDnZORmdXyhps7bFNySm3%C1&5)|DPlRg4*#S|LZrzCqU>{>6o8rin=V1p}pz3GM; zcr{QX>kFzt^c!G@W7GHl0@10F{W31xD*98fHdzj94p?2|wdM4@LbaYCPA)SRdKnL~ z06Ia9>=%7JV`S*xA~Dp+82T%&P|17{U~25@S+5P|ND+RtO4dap;j8PM8kDfF zv)mNpN*v>CjjUsG7$ZlgkHk_2p8)m|riKt1etFbBv5{r7$(JJ|KmR zksUuLG1SPsT&_~d*UO;PGRZq>#mFY>-CxKmzGo;EOLTZ z<1or$DWfF2pC!epk@fB`WsL0p#S%k}toO3qh?yWU)W|xff-!O=oENXgwI|LBX58qV z%ehjR8rd&;C1Xmxn8gx9jqDe_iZP45m^&nf8rd&;HDhk_Vw|ys=!7_{nIRR0q%bwI zZeT5Aq@u?qh8kHnuz@jB=kFwj8rd&;w`A``r@}fP7pg9E@B=@aIA2Y3r4b&JQ(Nhme4U-Xx#mw7QO@e-Wl{$|)tSklCoIi>UPb&?@oc4i+) zBb=IfDq+M@PkMY$kGNiTa6X=dC3~+cd9@CcP-fN*>8I>3mH@4G%Ud3sqmze5~|WMZ8Q6>HP>LMxy#F?8b86~=44bF58IMF%hTH% zT*?}jd-_C)r$+XRo-g`Uuw{&wb#Q^`)cVlTkHHL#U*c7IAGyfmr7V26Q;+_3yxWr= zkvjIkmNR>WbDG&JyzCd5EsL}YX5Zrk7vfsD$ID(p>0XaNmYS%M{r5U^7Gm9YrJ#z?Lxkey0Z6Fgvfs!C2{a zYLY|+Vaa~c3q&u1okOnl;;$v&=W!3Ps`9v$It~CevS0MwqVqf3M}_&FZMzeWC=2k5 z+FgW`VS5Sl%iJS``33Ij!u$evSeRenPQu1|_yz9#f#}e~UWe9zsZ%5SMK54Xwfp^P ze4Hvl6v_T-=k#@WZj~edhe2K)bC5;WN4pTdTIJ*|!u7YxYc3HFWGduw3Ybk(Bl|;6 z)gmlIA9A)Y!gJL_&QZ_AmB4${$tgiKk9tKHvYIs>ACPLOk^O6&@)A6Pu5%ht0_FtE zuXj3Jue#bb!%%RmSMWHP?NcNBMb91X>HNH9Jo!N{o}a$)55n_KD1R-0LZQ>imj*sc;4C9R{xw=2!3e;Sb~at@`c4{I>n8!d-K)0|xIA z{-X_eN1R~@Iw{Pryy=~~%3-gnwExewdbgQxM5uF;@FZzR`ue%r@ z4y?Z5Slfhmz&=A>>s7Rsl|JQhoy1Th`$caQoj*eOj4X{E7oERB_)0kA60Ag6XK$G# zPe}$vvYv*1FbeokNDt?&4DLae!#kFYqjd%BWP@jtf8*`I9MSpd*ORt5{3Qf87UnM@ z{v{lpgHM;R=~M88@IA1v3Gan{OZYw5mLt7*{=R@4%kuXHQ-l}8reos*(zcL_C4(Ya zuOJ!7!u%aU7B;=&yias$WF5aw^j)yo*mV4}qEjR5_;>kZh4`uL0v_Zfh(Ab(8ij`c z;OX&XbfO<@iZFi|Fi@Bub&U{S0XtTBCoDhVV%Y-NY2>H9I%kW%U=;Sh(8yS5FdJcE z{@Q>WnZG2sUzk50SS7p#c7yO}*xw2B2Ls!M*_lT246hSkk?n1s(`U5T0Kd>*MxN#A z%SGq+>Q@P`gxw-s3%eJap65@BPK~T*o_$74FxP8~+8{bQXqaU1yYx>B^DFR7N_jSh z99dU*vzis*d@|eDJHzK?U~z;mI(UpB_g5ZoaK6h<@K%+;AAK_MIY58OV@2qa2NG(R z_smtHJF5oPy%Oy!XjymBeX6)Me`v^bs5_#Cj~jg2;PWm!d)KOm`{5HPrnN~ZCOjZx zNYG3fS^Cc`@{cOwXQP8N-9MnXcDNI{UXAg$x7MlqTNf7Qs&Adk*Q@#Ju(Nx;>a0F= z4zE`=&h3w>C)=#C3cH8H^+78ssUjGBtHo)nZruiTIGG2_O?5Zbs~;j-R4E*J2r)QL zkTA0c?s9Au*t%fbgza%`iNY_zb`w4X%hSP_L{!yMxDOahR#(3Q%*3Y2JXoy% zDnsYTh)nqYl5NpRhQpw{!LhJxfPH0RMY`Yo!cz_O9B7O`YQ&Ivh*|avLnn6^y_pYy z#5&z$z`u^gO8JdZ?hPyL&no_in^(EXVD@2G@^$Sg7Ga*~Eqg&%)>|C6a-drU`pS#xO!ow;lDi)XbgU?Mo{}%Xlia_`SJy zk>26FM*P0;^^stHsB_CF>!$xjg(BuV8t`7{40ZUxlgjj8R{U?K_WciydI!nBko|bRvk>k$AgPNB3R!2LVW&y{Yqh z<|$X*@gLGAY;HZme$jV`&TBq^O~=2=X^I6XzKTs3*bk=88{;Ek-VF4q{~h)-gO3^f zr7+`98vMP%3CLqTiTtHQFL5dmz+bp9gLl{vgBJ_)M%pRN!}+=}5Ba;~38=)X3;a#J z7gYH3Yb&R>;K4)UNy7M=9qoIwCI0{@)0{YHQBF)d-mSbc8nds|%QHUvkkGtQESpv%=xCz@G*q9iv z_nGnA;N$jp<3EOFVhq`jjb)EvyB?dHL8m3o5i|Y)%ftfY*09uhFqx?91FO(jB=r7} zmSf8_V)Q|0OfK|vr!>=-VC#{1nGveb3qz}+>wSI3h#~WkZo#-xHd zt1+fOxIOG9Y`I|F^*k`|8R(c!;V`iRGB18sR0hrhvm)LkOpMVt3}X&KzZ)83X3M?L z7=1G_rX2bM5);jyAu)#Rel?zjTNxSp4rJjT(1XZl41cZy$=#b0a4X?EjI#Q!W!crx zJ4xARz_^j!vM(6%FW7JfO3>fIDH7C*(MaqmS?e4Qn5fIpV6id&@z z*uF7>$UI7H?4RH#g*V_1*Z0nIV12{COh954dVFL9jnMT4dj{-7zFX(7@t7z72?t}T zoAL9n8Tj%fSdVBi3_xN7WUaR~bh6gF8ai3)y$#(Rz|p?Np6)>gM++W_Bj6dZ>}du{ zz9{@97*C+C-W~T6mVz#4@xDT0=g8HttY;6n4=n3BWyFv<vCVaz1xy3@r*3|SBDw;1|Ta1iye>{_r-;W}jl>sy8{>H31xzoRcT)V14i zXU#BQ4_`qqXV);_?LK5;of>ttHyU%U=3iQ!h04c;CI*vz8(U+6+B0e@4n;%gv0!r4 zIlPa^cEX5??v9b9AtrP(m=v8pg6QOp@Fhi^NyJX^_qtKJ=u3n1#0bR3_u!zb*P}tM zM?>3-gOALQb1E-2jO#A4oN)M(7aW7(KG*h_#AmJ7e9tS;N@^yBSI(mI>1@bw+X`hJGb zy9?Jm>u+PV!TFL~#%(aed1a*U!MeGld~f@rPa;YsJLzM52_2KXejlQQGECe9)vm5^ zjIXWg$omzEZ%eoy=WI*%cW|o4`f63s$r0GPsh=*&k_z!4(FV8(d~^3AsNXVvrWnk%o)OvWta=K8Kv)hPw-69lrr5U3X$N zSvtLx%#|e)r%|nQ{?huV)giu0nS6$W!bs<1Jwz^2>e%2~(fIjtu6 z2G|@r_-1Sp>;mCD*b?D@BA{nc}Hwv!>^C$K!yaCL+oV*3>KJ9{Qz$ZoLlP=#+ForWL$1F0B#U$Zu*eSxp zVW;_UP8pN~=XS}s4)(Xg6|heWe*nv+IpcY-cMDg-zA4O@eZp0+Jn@X@61|yle^{=@ zsUPL7t-m~e9Nf(aN)9nFNIw#Tn<}< z&HenK0`NP@SOMDx!7RYVHW$rgE~*C!_kb-E<{FtlW@k(>w%dgl!mbo9fn6}&Y&IG{w}-|HY~gg)`wA>G4 zk8>I4zYz|He^$hm`u)O%urYgI^QoBKZyBGT0-+9Jc;0%pVqWV*}-|KMPmDw!vgdeFeCOa3y#UA9$F-UqKI% zjB4;KVUCdtgx7*^6XrO|#W%~=fS(ZF0_Mz3oeS?1!u7CRKU3cW%QZ83Z!FF~7s_<@ zA%lx!as&87VJ?jIZwS)C--(_D+Z=0P#%F`O2@eNzolHFk%s*s7&IJz^9uLkT+sK#% zXOU#&fj0@~gLerRfWHyu>~db1vrZ%?1~$OisD&_RsT5&OUtEYYrW8C_m{XiRRGg)7 ziiJ53>fbkTetb-H&YQKum0+&uS!osc9pP&5G2zwVuZ6jTXM{Ol^G66Mix-n{Vz9Pg zMK$2g!hEFYDash!Ez&WV%&;N$ueiS%vIFL`fmqs z6rC@jCSbH@*_&YJ3YWq1PYlGne}D>wH%JEOqpjowh)6p`=c}T6L*H-kcVs@CBb_6o zG0sPkoB^bsI5Kp;9ZEFxz7d=-C1?UOq$2+985ZDtG|k}6!hE0etniDluL<+b&szq+ zZ}2AuAJuFFzR(WrKMdxgpPk^G#dq=KtFUDmJW7}^eI^U%!dA&>&G#@58~ljDkAmF^ z(|uWk!1&(YVN3+;bId<0!iK4l^*Np_`YhN2VZOHsV$)^kh)#{H%U&xw-uc)T|11a_ z;ES8z8obrurw#s0nD1?l8GKxr?|Hry=CtyS!7IQj&D+Uyu8#9hk&a(7Dvh9MG{VkN zBkPzpqO*Z2Bfg91)W|x%+KA~ZG1U6nM$mPV!8b|Q8(eDe%?95s%oj`_3G;=~A%i~^ z=8LD#ggHkZ7qdqMQ6^F7^ZVa9() z=4%P0%P_mgW8`O=O77)xKDm#_my=Ns-|Nj2=90rcC=TD#9Tw)=;)pQU7Jm`u(&BSr zE-n5h%$I*3!)F6WU=ItQf~8NLe9Yi4Jht78EpXI8ucs#@h#Fb{$>u~^B5*CjzxcsQ zxeS{r-%{^~7_@JFM<>-Q@S_yqa>0j zv)mZlno38e-Fzuf40{!sZ|RU08O)!G#t-%M=g1vB-a(dI>t!-uz91bSr+C~*mZL&N Rsk#lbe3_~a-yCU(`F~=aiV6S# diff --git a/tools/sdk/lib/libpp.a b/tools/sdk/lib/libpp.a index bb93cbebbc09a254f1435f112dcdc57aadc01b89..cc25790e85b1e548e8b8644a90a9fd8589c10413 100644 GIT binary patch delta 75283 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%0Do+z7y$8uUSWZHGX30oz(OPKN6Ku7;z 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 JbNGKU{}pO+ihTe8 literal 107044 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 C99-l8 diff --git a/tools/sdk/lib/libssl.a b/tools/sdk/lib/libssl.a index 4b6beab41373f50b17adc99b271f1024218a3473..6ff625bf6a023f43ac03f5e162fab9ba2778ed79 100644 GIT binary patch literal 275704 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 a#@)^*yyMdJ@QzF4@QzF4&CY+DS^EeKj(kF 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 Gej$fST-0R^7u**{({fn@>tUYtq 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 YamD(7`f){5iR}-5Txox3*|X`t16vcKuK)l5 diff --git a/tools/sdk/lib/libwpa.a b/tools/sdk/lib/libwpa.a index 18d966d3b532ecaa3ae8ac373be9a03cf2f98419..506b9d4258877545dd93b79caf36d088d141573b 100644 GIT binary patch literal 170764 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 z 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 literal 124632 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

*&L2ADBYfyPb|b{ud`X5K4|i85!Qb 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 diff --git a/tools/sdk/lib/libwpa2.a b/tools/sdk/lib/libwpa2.a index 22eb3337932d2f0e13cbed6d193041bcaa051dbe..6f023dc7f10c03777c1b61dcd66100780df84d94 100644 GIT binary patch literal 475218 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 O4PTbU*&Fyk;Qt4h^2?h5 literal 362372 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 Lnq{wV1rCZ9}@E7yRxptlVtUY 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%0Do(|6sQ4_Hvitg-9_T|%{GRNpW7nULAAkt%?dy;I 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 literal 227700 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]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 Date: Tue, 23 May 2017 20:10:48 +0800 Subject: [PATCH 076/156] enable 8M and 16M flash sizes for generic board --- boards.txt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/boards.txt b/boards.txt index 76b5c1168..463ab5773 100644 --- a/boards.txt +++ b/boards.txt @@ -182,6 +182,20 @@ generic.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 generic.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 generic.menu.FlashSize.4M3M.upload.maximum_size=1044464 +generic.menu.FlashSize.8M=8M (7M SPIFFS) +generic.menu.FlashSize.8M.build.flash_size=8M +generic.menu.FlashSize.8M.build.flash_ld=eagle.flash.8m.ld +generic.menu.FlashSize.8M.build.spiffs_start=0x100000 +generic.menu.FlashSize.8M.build.spiffs_end=0x800000 +generic.menu.FlashSize.8M.build.spiffs_blocksize=8192 + +generic.menu.FlashSize.16M=16M (15M SPIFFS) +generic.menu.FlashSize.16M.build.flash_size=16M +generic.menu.FlashSize.16M.build.flash_ld=eagle.flash.16m.ld +generic.menu.FlashSize.16M.build.spiffs_start=0x100000 +generic.menu.FlashSize.16M.build.spiffs_end=0x1000000 +generic.menu.FlashSize.16M.build.spiffs_blocksize=8192 + generic.menu.ResetMethod.ck=ck generic.menu.ResetMethod.ck.upload.resetmethod=ck generic.menu.ResetMethod.nodemcu=nodemcu From 5116a46f09a4c52c9a0e37665c2c1841bf00bfb0 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Sat, 14 Oct 2017 23:11:56 +0800 Subject: [PATCH 077/156] WiFiClient,WiFiServer: update to match new err_t definition --- libraries/ESP8266WiFi/src/WiFiServer.cpp | 4 ++-- libraries/ESP8266WiFi/src/WiFiServer.h | 4 ++-- .../ESP8266WiFi/src/include/ClientContext.h | 24 +++++++------------ 3 files changed, 13 insertions(+), 19 deletions(-) diff --git a/libraries/ESP8266WiFi/src/WiFiServer.cpp b/libraries/ESP8266WiFi/src/WiFiServer.cpp index 3c65bf44f..380c4ad6e 100644 --- a/libraries/ESP8266WiFi/src/WiFiServer.cpp +++ b/libraries/ESP8266WiFi/src/WiFiServer.cpp @@ -151,7 +151,7 @@ T* slist_append_tail(T* head, T* item) { return head; } -int8_t WiFiServer::_accept(tcp_pcb* apcb, int8_t err) { +long WiFiServer::_accept(tcp_pcb* apcb, long err) { (void) err; DEBUGV("WS:ac\r\n"); ClientContext* client = new ClientContext(apcb, &WiFiServer::_s_discard, this); @@ -166,7 +166,7 @@ void WiFiServer::_discard(ClientContext* client) { DEBUGV("WS:dis\r\n"); } -int8_t WiFiServer::_s_accept(void *arg, tcp_pcb* newpcb, int8_t err) { +long WiFiServer::_s_accept(void *arg, tcp_pcb* newpcb, long err) { return reinterpret_cast(arg)->_accept(newpcb, err); } diff --git a/libraries/ESP8266WiFi/src/WiFiServer.h b/libraries/ESP8266WiFi/src/WiFiServer.h index 06f7d9c59..8d16e9faa 100644 --- a/libraries/ESP8266WiFi/src/WiFiServer.h +++ b/libraries/ESP8266WiFi/src/WiFiServer.h @@ -62,10 +62,10 @@ public: using Print::write; protected: - int8_t _accept(tcp_pcb* newpcb, int8_t err); + long _accept(tcp_pcb* newpcb, long err); void _discard(ClientContext* client); - static int8_t _s_accept(void *arg, tcp_pcb* newpcb, int8_t err); + static long _s_accept(void *arg, tcp_pcb* newpcb, long err); static void _s_discard(void* server, ClientContext* ctx); }; diff --git a/libraries/ESP8266WiFi/src/include/ClientContext.h b/libraries/ESP8266WiFi/src/include/ClientContext.h index de6d8e150..639b3587c 100644 --- a/libraries/ESP8266WiFi/src/include/ClientContext.h +++ b/libraries/ESP8266WiFi/src/include/ClientContext.h @@ -29,12 +29,6 @@ typedef void (*discard_cb_t)(void*, ClientContext*); extern "C" void esp_yield(); extern "C" void esp_schedule(); -#ifdef LWIP_OPEN_SRC -typedef err_t recv_ret_t; -#else -typedef int32_t recv_ret_t; -#endif - #include "DataSource.h" class ClientContext @@ -45,7 +39,7 @@ public: { tcp_setprio(pcb, TCP_PRIO_MIN); tcp_arg(pcb, this); - tcp_recv(pcb, (tcp_recv_fn) &_s_recv); + tcp_recv(pcb, &_s_recv); tcp_sent(pcb, &_s_sent); tcp_err(pcb, &_s_error); tcp_poll(pcb, &_s_poll, 1); @@ -78,7 +72,7 @@ public: tcp_poll(_pcb, NULL, 0); err = tcp_close(_pcb); if(err != ERR_OK) { - DEBUGV(":tc err %d\r\n", err); + DEBUGV(":tc err %d\r\n", (int) err); tcp_abort(_pcb); err = ERR_ABRT; } @@ -126,7 +120,7 @@ public: int connect(ip_addr_t* addr, uint16_t port) { - err_t err = tcp_connect(_pcb, addr, port, reinterpret_cast(&ClientContext::_s_connected)); + err_t err = tcp_connect(_pcb, addr, port, &ClientContext::_s_connected); if (err != ERR_OK) { return 0; } @@ -396,7 +390,7 @@ protected: break; } err_t err = tcp_write(_pcb, buf, next_chunk, TCP_WRITE_FLAG_COPY); - DEBUGV(":wrc %d %d %d\r\n", next_chunk, will_send, err); + DEBUGV(":wrc %d %d %d\r\n", next_chunk, will_send, (int) err); _datasource->release_buffer(buf, next_chunk); if (err == ERR_OK) { _written += next_chunk; @@ -456,7 +450,7 @@ protected: } } - recv_ret_t _recv(tcp_pcb* pcb, pbuf* pb, err_t err) + err_t _recv(tcp_pcb* pcb, pbuf* pb, err_t err) { (void) pcb; (void) err; @@ -481,7 +475,7 @@ protected: void _error(err_t err) { (void) err; - DEBUGV(":er %d %08x\r\n", err, (uint32_t) _datasource); + DEBUGV(":er %d 0x%08x\r\n", (int) err, (uint32_t) _datasource); tcp_arg(_pcb, NULL); tcp_sent(_pcb, NULL); tcp_recv(_pcb, NULL); @@ -490,7 +484,7 @@ protected: _notify_error(); } - int8_t _connected(void* pcb, int8_t err) + err_t _connected(struct tcp_pcb *pcb, err_t err) { (void) err; assert(pcb == _pcb); @@ -505,7 +499,7 @@ protected: return ERR_OK; } - static recv_ret_t _s_recv(void *arg, struct tcp_pcb *tpcb, struct pbuf *pb, err_t err) + static err_t _s_recv(void *arg, struct tcp_pcb *tpcb, struct pbuf *pb, err_t err) { return reinterpret_cast(arg)->_recv(tpcb, pb, err); } @@ -525,7 +519,7 @@ protected: return reinterpret_cast(arg)->_sent(tpcb, len); } - static int8_t _s_connected(void* arg, void* pcb, int8_t err) + static err_t _s_connected(void* arg, struct tcp_pcb *pcb, err_t err) { return reinterpret_cast(arg)->_connected(pcb, err); } From d24a358817f0c11f7087b3c8acbf24629b15998f Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Sun, 15 Oct 2017 14:04:05 +0800 Subject: [PATCH 078/156] esptool: update to 0.4.12 --- .../package_esp8266com_index.template.json | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/package/package_esp8266com_index.template.json b/package/package_esp8266com_index.template.json index b90a555cd..f7a6ca38a 100644 --- a/package/package_esp8266com_index.template.json +++ b/package/package_esp8266com_index.template.json @@ -82,7 +82,7 @@ { "packager": "esp8266", "name": "esptool", - "version": "0.4.9" + "version": "0.4.12" }, { "packager": "esp8266", @@ -100,49 +100,49 @@ "tools": [ { "name": "esptool", - "version": "0.4.9", + "version": "0.4.12", "systems": [ { "host": "i686-mingw32", - "url": "https://github.com/igrr/esptool-ck/releases/download/0.4.9/esptool-0.4.9-win32.zip", - "archiveFileName": "esptool-0.4.9-win32.zip", - "checksum": "SHA-256:9c4162cedf05fcb09fd829bfb90e34ae12458365980d79525a072ff5ca44751c", - "size": "32436" + "url": "https://github.com/igrr/esptool-ck/releases/download/0.4.12/esptool-0.4.12-win32.zip", + "archiveFileName": "esptool-0.4.12-win32.zip", + "checksum": "SHA-256:f47b3bcf7c29c7a184859bbea68c9d468cf3346ca41e202ed60a0a49d987f223", + "size": "16537" }, { "host": "x86_64-apple-darwin", - "url": "https://github.com/igrr/esptool-ck/releases/download/0.4.9/esptool-0.4.9-osx.tar.gz", - "archiveFileName": "esptool-0.4.9-osx.tar.gz", - "checksum": "SHA-256:57938b473765723a7e6602d55973017b7719bda69bdcff4250b24fcbf7a399f5", - "size": "29310" + "url": "https://github.com/igrr/esptool-ck/releases/download/0.4.12/esptool-0.4.12-osx.tar.gz", + "archiveFileName": "esptool-0.4.12-osx.tar.gz", + "checksum": "SHA-256:8232a70611768dca49321f488e3ada29648e28aa83a6d826fcbb871aed4a9c08", + "size": "31981" }, { "host": "i386-apple-darwin", - "url": "https://github.com/igrr/esptool-ck/releases/download/0.4.9/esptool-0.4.9-osx.tar.gz", - "archiveFileName": "esptool-0.4.9-osx.tar.gz", - "checksum": "SHA-256:57938b473765723a7e6602d55973017b7719bda69bdcff4250b24fcbf7a399f5", - "size": "29310" + "url": "https://github.com/igrr/esptool-ck/releases/download/0.4.12/esptool-0.4.12-osx.tar.gz", + "archiveFileName": "esptool-0.4.12-osx.tar.gz", + "checksum": "SHA-256:8232a70611768dca49321f488e3ada29648e28aa83a6d826fcbb871aed4a9c08", + "size": "31981" }, { "host": "x86_64-pc-linux-gnu", - "url": "https://github.com/igrr/esptool-ck/releases/download/0.4.9/esptool-0.4.9-linux64.tar.gz", - "archiveFileName": "esptool-0.4.9-linux64.tar.gz", - "checksum": "SHA-256:fab9d1be8a648bea6728ad5c9d18ce972508187700cf90baf1897ac9cdf4db15", - "size": "15564" + "url": "https://github.com/igrr/esptool-ck/releases/download/0.4.12/esptool-0.4.12-linux64.tar.gz", + "archiveFileName": "esptool-0.4.12-linux64.tar.gz", + "checksum": "SHA-256:f7ca7666557139bda7b2130022623a004a30d20ea47e1612b9b365783f00d8cb", + "size": "15542" }, { "host": "i686-pc-linux-gnu", - "url": "https://github.com/igrr/esptool-ck/releases/download/0.4.9/esptool-0.4.9-linux32.tar.gz", - "archiveFileName": "esptool-0.4.9-linux32.tar.gz", - "checksum": "SHA-256:bc4444d73d59be74608be5e1431353a0a9ae9e308e99c76a271d68a6ae145b7b", - "size": "15984" + "url": "https://github.com/igrr/esptool-ck/releases/download/0.4.12/esptool-0.4.12-linux32.tar.gz", + "archiveFileName": "esptool-0.4.12-linux32.tar.gz", + "checksum": "SHA-256:2d9970c8574908c35656e35f433082aeb7d79c1967067d7d2cff83f5ed2acbaa", + "size": "14668" }, { "host": "arm-linux-gnueabihf", - "url": "https://github.com/igrr/esptool-ck/releases/download/0.4.9/esptool-0.4.9-linux-armhf.tar.gz", - "archiveFileName": "esptool-0.4.9-linux-armhf.tar.gz", - "checksum": "SHA-256:d0364492599d90b8305125f8212de5be05397e4efde2fc7d0ed3676bb7018164", - "size": "13763" + "url": "https://github.com/igrr/esptool-ck/releases/download/0.4.12/esptool-0.4.12-linux-armhf.tar.gz", + "archiveFileName": "esptool-0.4.12-linux-armhf.tar.gz", + "checksum": "SHA-256:2ab4784c10020cdfc467175fe8885db702e7dd95fa5bdc428ec549257eae1a0e", + "size": "13097" } ] }, From c83e17b31efd5dddefc1bdbec0b8885488daaed5 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Sun, 15 Oct 2017 14:41:50 +0800 Subject: [PATCH 079/156] WiFiUpd: fix warning --- libraries/ESP8266WiFi/src/include/UdpContext.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/ESP8266WiFi/src/include/UdpContext.h b/libraries/ESP8266WiFi/src/include/UdpContext.h index 3fd224842..cb527ab0a 100644 --- a/libraries/ESP8266WiFi/src/include/UdpContext.h +++ b/libraries/ESP8266WiFi/src/include/UdpContext.h @@ -309,7 +309,7 @@ public: #endif err_t err = udp_sendto(_pcb, tx_copy, addr, port); if (err != ERR_OK) { - DEBUGV(":ust rc=%d\r\n", err); + DEBUGV(":ust rc=%d\r\n", (int) err); } #ifdef LWIP_MAYBE_XCC _pcb->ttl = old_ttl; From 1c8bcf6cb27439accc54b42797de7ed9ddd6d979 Mon Sep 17 00:00:00 2001 From: Juppit Date: Fri, 13 Oct 2017 12:44:18 +0200 Subject: [PATCH 080/156] fix gettimeofday() tp->tv_usec = micros() not micros() * 1000 --- cores/esp8266/time.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cores/esp8266/time.c b/cores/esp8266/time.c index a1866c2cf..1c2fc719a 100644 --- a/cores/esp8266/time.c +++ b/cores/esp8266/time.c @@ -101,7 +101,7 @@ int _gettimeofday_r(struct _reent* unused, struct timeval *tp, void *tzp) { ensureBootTimeIsSet(); tp->tv_sec = s_bootTime + millis() / 1000; - tp->tv_usec = micros() * 1000; + tp->tv_usec = micros(); } return 0; } From 84512ec811141bba31a96cd2008ccfb99c88bbd9 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Sun, 15 Oct 2017 14:59:37 +0800 Subject: [PATCH 081/156] fixes for SDK update - recompile liblwip_gcc.a with new err_t definitions - update espconn.h (function signature change, new function) - add option to build lwip with debug-prefix-map --- tools/sdk/lib/liblwip_gcc.a | Bin 1193962 -> 1102758 bytes tools/sdk/lwip/include/lwip/app/espconn.h | 10 +++++++++- tools/sdk/lwip/src/Makefile | 9 +++++++-- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/tools/sdk/lib/liblwip_gcc.a b/tools/sdk/lib/liblwip_gcc.a index 0e56b9be7bcd03ae2c9a1eb73167f514714a42cc..c01b09de5d46d18df3ffcd7e1dd35a96dc41e2f7 100644 GIT binary patch literal 1102758 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

K2UtGym#@$7Lz($ z*sAyj1?=5^Vu!a6Jhc7WFVAds*0;-Rs`hLD$*s#?c(A5-`{iA$i?3j_U)OF`#dXlS zvJQXR+~ZI3dt>oMgeJv8w;i6`yt&zZtG>VXh7I4?bZ+Yvwf}Q{CYG^AtWTGJcB^8I zn%{S5@x6*t{j(w(%%!INCp{}Wytlc>`&!(hV|OZ4AGLh-nafXqp!n7DfyFO(c&XQr zW2&c(E*3YG)?;{wnXS&ynw;_SC#Cgx^VVP1ugCiO^+;=^^>|@(j~C>4N%7CI9yRU% z_j(i}Xq)U;>{kBN_uu+PX`4J--gjel={NLVSykC5N6wsCRnwjeky zz?!_L1wML(##|`Wc3!@EuU)M8U zzTn1+nyQXl^HpR3_lh4xO zbmTeX&lx-Q!jTiEO*yB~NSicy#*}((^7xrErq)j>*Yxo->L({mnmlgo#AyxF)5edd zN_0t5*sM@qD9+-=g-(bH?8p5SD|Fl~v}nmAyTZIOde;_sgjndRNWgBSV#%&L*tJ+I8?!+Abttd!61Z1Zz|UtZ&NV7f+;z&b2YEcx%7Ds5hwYNf5jYs#4ahM3PTb`lXN$4?ZqZ=6z& zl4I4MuFLVE|3%(MDKgl8VL3vCvSO37h2@j9`OCU+{w*sudrMYjW!rs{lBWAAsi@da zd!pV?Y5F!M&9)nnlBP#0*{-6jV!O+juBdp3EX^wJ*Hk$lI4G~dB|~==D%K3qe|fkD zn~J8NFjZ_;tpzu!_^BqEF4DhdZ045R?fiEo&Gp+TY_|)jo_(_0t{q&l{akq{akK4t z{b{>huhjo4`Pok?gA5e5+pQp@CaENq&r2xohfT4A)T(J?GzrO|vy!HicZVgSV&CKV z&%b2VH>^&?3gh-_P>$l|*=oYanyi{Cos2DtGWoUu)54C6^pB~QHwtzrG$mK7 z^dP@`@g8wnPIo*MDy#Lccz7!4(|Ok6sR*t4G(!H#78lNu>o#K~5!%!VItbdHC)kdi zy|7bPA-fa%PH|!__I)JrOWs*$hBOb$V*fUL$pKw`gZ9xs_Tl9FS^(d7`Yc;WJ2o!& z-n$lul{K5VYw^_5!gnnWErDhicI&NW7k6a^^P!};aDW!Qdn#JmbWdnzd$!8%n0=_Y zM-Tlg?mkHWf2;g^7Ivcjg30F0sOIT=8=5h8R4nX;_0=j!Q~9MZ7wiA2WtZsx&|=@h zUISuw=dEX#>H84v&eZ%{Vm&Nt*(~YR)E0psQgPvExkxqE5xJUD5jesX7tYem4ykcv zXrbd>NC)P_U2$Q#9PG_X9ta(+jGfq1cGX0ww)X0+98@Q-Q=}?AXd6|!*I-#u*!N0S z#adQXKZAC|V}`QUi`v7f(j6D+A4^JmVO61Nb8$7hA0cgsg@;RO^O&S5$h$qN|HWh2 z7YY2Pw0<&4t8ffE<@Jg?+^Qsk#3;&QEoP>iFiu>Sz zU5-#3vRnqq3G>o7FbkAR+c9m7-4;qNp2~iJQ+Dv;Lf)`Sr8*U-?zMNLT9Qwhp^nWw-ZO8L>i7 zX=3*Q_)d9fjH)?}Op`er?Z*pa#VL3zj_fj2RI#{_A=vjG zH+_a?u=C%dqEJ~EQ(3=ZqHes_G-diolcmbKlr`=02i(oZT^p6Ui_${z8%*+AP?yw> zco}Yv(PXN<{k5!8?WG#pTl1!p>CzuGjT&O{>5#jRbX9+@A#`14ov43(75^lAHo%oE zjmE8Z7onya7?uuYr-PpCL`%-OE z_*9!M3QeiB-M*zc#RcQ_pW5V7q`2_p=D9W(P@7+u$GxXdQ++OAPyUf6d9|8J{eMoA zU2dWhZ>BzZDY8_(x1{P#6}XTJq>DzE9oZXiCEr1sO!YZZOSAf9kDIGlyyYd8FYR%| zWLoGtK>zwFGW0vu_IThh5UIbSaZNYa4eNKovero%PaWsR|!y*h7DbAwP;#XDrR?>~PIntXO=cg=VBW zJ4>d8uE*-%(TWU-PMtl5my0y3-FbpioegcMGtTb(c2ALcuCw`}jc?Gpv8+@-sXn@& ztBu;^=s^-WBOmZ1!Jd9T=iIetp_ccEoBont_yN>ivO9oWh3@C;U$dQ1+5Hb-H%oI4 zpuC0dhm!MG%%;et++-}x?y-}W-*j2>nf|5hDQBVBs<=;!HkIWqc5imtF0G1uuC=UF zp|bKwN$J9|yv1RahgS~LaBmf%Yp>gGN114yNSM`h-vUXqHpTK5m6c@R+tyUwev4l6F{n+iU3qT0W3f1> z4GU`7L5n{?K3loZlE>EFi#^)3Dznlhp;UX_w_H|f z&GmgG_M%#!SDMqqB`QkA<$^}Xu|lyhl;jk}ih{0eZWpA0!TyTH!l@*ODq?Wz?NDFE z^1}4u?Z80ACd}HqSf87ty}92AH`x}7|Bryze zXfPdyY4+8y$_Gm2;<2nydpqfG6pMwg>VFD{>HlvP^$RNrdL%BuvQ^>ILf;cQb)1&| z@84|mZuRv@XN0NHK1_ekIeibysM%7D|%c zHmvGiQV%NS*Z)#ry9`ilRk-B8txPtdhA@3h(P{{h2D=ceqZ>3<6Bp19Cn zPeRFASJGdXxPDt=%I4B$CwVC02ofx*!c%V-q|jhH4BJN)wFybGZ9}~rEVXwsNC(Mf z3F|i;*MUnFDOC>aO6&$y2`TffN^%xEu8x<*jAT{6=JPelF_xkeS}OL7bR>d8X-?_E z2&;5*QaSUK0!K`2sv~V5DI0{4^OKT)fg&~(n3Q`H^q(l^&{lw7^xd+k^uOtBwhoGW zD{|ms*&LhL)ece2!RPOnMWyKE>7mHaEr;wk`y>y3bD)-wQl!qiE)=HE7^lbP-6!&E89Q>ug;U2**F<@mF>d?>u{Mi0 ztWPX#r%gY7^wdcuyYVxokDPvCeI^=*O5Su=QpRpl{zjo#UTnUd{$JX>EHVF&ZeFhc zyQKg7rvJs}yQH~07K-U>X~pbd*M|J$DJC!O>ry={L~ow{H%tFZmLx^30f&3 zv$W7A%GWkoXl=xl0N=&*{i=HZhlhX7Q}!*F{Y1*5<*M3Pjfzx-7pIj!Kdnq<=w#Je zqyq9ID*v6#3(cD*2h_tk&70_d+my8~{ZHIn_ofY*{+P@$EGF|@!CFx**$mgp#J!JA z=6fc;W77XU(*L6T7gdT<)>O+cE9*9@`PHrDRL}29J}s@r{>kB^r6N6^>bg9pc1g3k zrT>?t|AkbZ(@bak70b(GFKb=eP;4{plx(Rsnp@P}G5=ep|5QU++Q#RlYOhM$PM5l= zzBoFSe=d^&sdSUlqW)MaRv|5GK$4c1c9Toe=C4Rn8SdCmZ1JUCq%tkIh5nZ(%hHxk zJB^CMPbU3{(mr-U+VWMgLZw|@#m|0K?@i=ID_Y9ae2aoFC>G0qd}+%2LaEG}Vh?MW zVregx=9P+3s?+jhR;tZhBrQBIHfpo9ua{PbB9wA%Yjq-T`OM_E^8dU#X)n27tK)~4 z0=r!(gchPW?Wd9KIx+IBO98@8>rr5>iI*aOq+4W=(@ToV+(atCZAQE z{+%~@`lPcaj~`b}%cq(m$4?$-a}i_y*omX36==g(>pM#;Sz)lP#(bSDXY{V0Gl5q6 zaZ}D4Q#ZarYt)iIWAvoD`k5-ogz?ixrsZr=!mZ1kmp*Cw$nob)RaG2!(rML4SEo~6 zVfsX^bM+P;IN3y}g7bRw_*^Ho1N`hXw!Re8#?$p6)!VVGL0**iWJtxPoSgRx=k?~9 zakf*DCY)E-uvXOVgt{rC8>(!~g)_#>2(jPsoVLeKHHm00Eewxdk$bI2v+H0$^&)|C8l5zE<}=RO23NMUTz zxo{<*6FhH!O=FX9s~<^!9YvMg>=2-%+Xp=_kpir9Bj zBy7uu?SxIWB4JxL+?ZgKZv?Up_AHCQ@~|N#{9kOmK2KF%{CrK3{T4qwNnqI>6~C*P z^#x*G@g)6Lr3CEZHj3Eat4PS@VSS4=rTw#qm}T)GgMdxxp++e$`;xA(lRjGMR}}HN zOp$;+oXfBRQ2`y+**y7Qt(1UH@G{hBnlcPvh5|Nl-iPy@GCIsnF=be)NI-{k86HMd zK!}wcjwz`Mx6Y% zrPGN}=b3W6nEE7iXi-8NY=xi3^pOJ9^BRY2(k|Vm8;;?qKw^(UZ>_&koq&bQ@CL zq{&)LX_?wb3*E;~Ip>`5y3p%hdd}0mwAkcCd!mjk;ZYM)r%jovgVh%dyUUJaV?Lkv zYLqXZCwqQDyW_r~-MBAk_w_Gmcf%L7%jbgswZ6akg8u&c1?@ijf_C&w{36?fzDZxi zuKyRb`^p!zoBjpu=qaba|G8iN^ncjlgYZDuagHW5-cPgL!vfCF|I04*^^+a@H35I= zyq=~?Wyj}pvE01B^pSQ-*pTGk$Fs7_j6UyZjccX!1jU^cna8#NJB|EZFD+mH3+sKn z(a2xTfKm?^{OuBU`1`z(KPuhJk$D$g*l1S$_NdT=uWz=a+pODFX(HbbD0{u{{biT) zpsyaF@wAjuK8`8OqkKm<@<-R9T$h?%?_*>myIHc!_Y7`#Mx*5}KBlxBmb+*8W4RYM z@;6`pI^ifnF8j z7IsYD*T~;z=8tk_e~eEr7xi^Zr~6zc{A6C=$gbIcvD?(hu1eGS9>x9rqf!3qV|CxB zf>3`ov0S!C8~q@?e9M$C-*33T7P8A_Men5(%IxsR{b^p`ZjJoS)ATAbM94mB8u?o~ zP;GnRud8gczrl_C4bzNYXJ=u@H?Go|<-q%lsEW`8Hjj{BD!vfZPN{Ed)Z%WR}H+tD%G%U376 z9kyZj_pr;e7?_lST9(*4pGq!WIqcGkH`^&*$$No~3X4%u&?Yvi>L!QU@EADU2 z$+~Zq9sYVNG7o<{H1aoB4?!Num8ALEUv(opzJYm-9k8<9?y|#o4j-JMqail?V{HDMM{?nwJ=6fdjrASc$Y0$g8OQqeGk;^lUoFlQ&grD*9F6LkXJp_qzOHhd&)^>ixA6tNQE1`uz)q+qdBlzgAs^xw_yO zqTkYB>3O^HJ5|+h;csm}jhUAVrFn*$Y6z}Z6h7SCFb98>vLTeGCxt%E)2fD0UjG(D zNh{ZtPCnLfY%1#NO1o1!uBdogFRp|dLV3E9@#$R~CPd|1bZKCE_xf`r$Dm^Bw$PBJ zJT1+qxgux?<%Q~o2~l}^s?#8qZ*hgd{Cyi{CVTA!7Rq&oJ2a-*CdEcqrR92}dR)w> zUW%zlObANK^%fk@$_Q;0i>X^hnoR%73*8H2W3n_q|Efx2d3rO!?Rzv#h|24)ZnHhz zYZ^lNR^>gYVWy}&9g!QP@-2RO%=a!JOmpOG2<7R><XrN>b=r3YCyrH5T3N1k`ilyTE19oV?htzlso6t-y3-MWp^ zpHSv(rDv0QDm{?Q6ZMZGvtZ93x0JSMMa)kcvx%llj~BDBMXPRlq?qUA=ZHMCwHLbM z8KSk)<_z(4H$D2bhR#N_(=)`<{)3!sIiv9IZ zL6;3lM}sRv=g6MzQ`tg4GITUJ+aDYHP^GDyap)Z$IvQLVdh!|dmdevnGb7~k@2Bau z%E^)w?5lqY{5FeGwzMuXK!bCc(>XJ2 zSWo<;!P$l*cv~HY(Fw(YrIaIeTO2CDm7z18Z8#gWjY}qYTQI)`JRD{2;bbj#dN^cHkccM;3H?Fh&tSXmH*xGeWY^xKhtwDj8v zJ^ePNkCuLxBL1l#>aKW-{wbt-kd6jdhJJ-OuS;5Y*_Ii!@IB&aD|9eV^kn6vnrrYkSZz(EeH-ZU+ z6=CwF?IPwpnaUG3cbUz7!4E6_g)#M;e^ZBqjt1x76u)bh#WqjdT0Bae>ikrJLY*Qu zXmDldmxNCFiP#KKIyZQ!Qm^ytLq~(RRp;qic`aO44&@@?w+r0Wo#|GevaDmbOK3s(&`DLU%=M z(BORB=p8zF2L^vx>B!*mN_|^Q2^|g2+u|FcU!|1Dve>q%{-X@nhK>g3GH|Vm{Ss2e zyg#S?O*&fI|N9CewAs5<5BP$yNqNPDw2k7o)?U+X;`i0TxF)!b(gT8ZC`;!xeD)C& zi{Y~`++6<@*w5OCSw5?mc}OrmPY=fDnZcB0A}pWm%f#$|D!je^Da=shdnSaLirCLm zO3e1N;Y$5en4{PxcrGmac}j`d{(87d{}kpcwh>cL>|>c11*_WA_Q21*Vq*5Q6mFq^ z3J)o^30?-vez{U&wqFVFsDBEp6x#$p1IvE3Qew7W1Gm&ag|&)p#O(7g8^0dhRO!30 z{CuF4nEh;oTj`&|CdD>l{CsXqdkH#zXcNItOQpo@hv(kKIM=tsMvR|5j5`J6hc-O? z)G8%rKiu>1J|&?yHo<*h+4ogS%=YQc>9!?%o&~lE9vt>VloGT3FqoZ9VK_Eow(nPs z#|5)}&k5d3JQG$KXrCcwpR-||QwVdg5wj0pWqf@we!d&rL3}4HpNo|ev(F{4j+ume zu@U3*=f=x|@%iguxhgQ24EFnp*T53jDkWzB>tI$;VLdit>fvw3?*?PWVWPN?{weVD zD0WGho|br*Tu&VO~}@<5P{#H@?L9d&cYo+0XA`Hi*I>#re4X8v4E^ zJ+-w4{}Y{^L}9b#EiWtOWxr}I&UyI;cJ{xQ*>o|R9%ge;*sz_CG@Ij$)7bt|<{@U! zh$*>jqu{WaZn}^2|4sDR_pXC=ej$8YoX;<}nayH2>LIl|2LIA*(wP6@XHEDSB%gn^ zyl=r_)2zIKX=BU!Ab9&!ob;{ed~O-CO=d8}+e9q!q$a%Sa;3y~G zKhEc@)<%wtrzF>-A44-MxUBZrRpr_-3g9!9N!_%=eTa@k@sM;ISh`n4KkaP&1MuF z>wY#I=ex<`eD33$!P)j`|#HHg#q*)oi|QHkX;r zO~yZkqda`0JpV?Pnay9}sE7C9IM?%?+I+6(8{&C=+ZcB=?hJsGT#-wp^ri^GO{ z_J_@eZ+vGz&l~gI)2#o;xOKAzy$2lYbvPW?JV%N1HP0~gDDzn3iE!kdX8HxDf5Y@E zOy_%|IqxlIv&i(jO~1$VhhZ*o6ds48%um8KCH+rul=;tQ^A|DeH9%&32Q=G!Y&P5L zJd=I$P3p`&jgK`R4@W&rf#bT4Z)E1{I=+ROm-Sua^o@YX%Qv924d1-XK7VdH-?q&9 zO4FY*eU0%eX2UlubKdvhxcC1j9A*9&TvMt;y?j<*9=>OpZ8)#8UdPI;liBQNHhg!(s-=#*~XKN({*zAoMrm8#y1+@X}s9@9^-V)96p~w*LEd5 zrI>lO@fzbl8~?@lL*tK)KQk_HeH+W#(U`WjtapU9{RsOSr|a|3dzgMS9M@C~%9WY+ zx6F(zmif!Z+*f9O3LMV?rW;>moUZ@FhI__*eKp_s7USEE8Hq95(;p)93OKH*o-lsK zc(w5h#(y?`4~}c64~;h&e`d@Oi}`vf-CyKuC)4*Z?qpnJ%y5j^PrAPdKgXCp$T;0o z#C25aTNyk7o8YsJ)BQzUJIzK9zS8(x#`NjQ*CgLJPWKvdt&+Yq7W{zOJZSusaq7bu z_S}PH|7(rc8^3P6(Kz*83_qJqFXuWx^zDu5bC~sN<4(r=8y{eNu<>EW={_iyb)xCR zjE5UD;AAet*NhodGV7NZf7AFX<8*%%*DAN82mjDG-7AHDpXon0X3)r-_qWE+89#6Q zit%g49~uAC_;cgb*DuP$7?gRryBP0fobJ)WzNhKw9xZf6tIU1|8K-Zkg-xC5jPaPS zF)lT}!uV=q`h8{l?-(;UWY<e82H8j2|_A+&JB@#WmIQroU|bs__Qnca0g2GMA@} zdzSFYV3e76HfB`HtRHIJ&-fT)hNjH+>3ePApMhqxKGrzh--QkLciCpP@f>5uk<8aE z-!;C?_zvT{jelm$0F>F!7Fr`#fX^M&tT(ppBOg7O=nolZ2vW5#>C9}CC0)+u~WKC*rJV$(?fpd z#&el`UBPp-{0yoZJ+38ik)H)|X`9<4xZcapf710{Tx0Y?7vsA(_HjMX2R*nidOU9# zfF3*$Jt{jIRJP|$4k9Fw5Q_0Y-=wkG_=&|kQp^NcD$m>P-T=pM;a%eo;P@?UG~NWa)IWvK6f>v$g}A1zuxr<5a9n3r8MlPvx6szO9o#m# zFSIwVhGT!|WLyKs_U&q13&(csW!xK%?b65iM{v~t1~}?GJ#UYC9>aBD)GhD)yxOfli;YI3*e}e`{AgEr{Gxk^>D23B^BaW$3r+T#CkQcV=VV6JU3)< z4+WF`(O|N#3?@5mTiCZ3bI$_PwDEj!M=@<%=!c5e2M-i~1gm~n7WXVL%lc1nJ2CGL zq3^csgSCqk{vE8U(3n3ZdseM!FpJnBnBA{c zFuNT0DXq0Z@zW)kynJUFoxI$qz}WW*rmeDnFm-ioFx&mhaGW1U2D1sq2ebchpMnkL znG(#;^D<(V5yd9DqnJoAGo&&|P#04D~x$psdfAY z`F3;WcVO-0`1~-K-^-?8_6>b3DB0{SZlZ!?&%RL=+*#Z@nEj+(@c!aGgS&}41+)Km z2|h^7dqDU+M9h5(e3Y2BB)Gr$xZq*plY+l2=3O*w>cnRRUnm|Ge3f`Y@O5JDYp`D+ zo)&zo`267Si+NwBwGJ%&uCEJb-ERtJ-4_P4?so(qApUW15Ai+0{H}i<%@!yf_Y;37cz}3e@E|ewMA)AuUK~71 z%smnMH1X2l^Tm$@&lE2Yrp})Xrq1~;HhI4xem?k{V!n}$K3Du&@VCV81+yP+48B85 z+Zpyt#s3L@SlmkItJZO?yGt;S$M*=Pp7#!>4)+W0{{P5(_xPx)tAF^Mxg;~moZPqw z8e}qo5R`-@pacbla7V&r5(2j15RyQmAqh!9P!PPUi)%R_BjXma2MxX zbE=D%1LyzLDD!mS6J4A>Jj=!D!#OTK0r&zJpA4M;Ut`&`fH%4L*}z*}yaD(M7heIK z|7#=vYTy^U_=Ui~EauJ-|ONx0)N=W?*{&ui_?cp zdi@h19u$(gUJEI_AL$&lk-|9idZv&###N>g9D3bC-|2PBIO6^BgT(%<*I+!?^|Bg` zOI^^9X%G%g7x^xI4C$_(BGbh=_G$Ve18+9)RR%77-d!88Z|ik+mx13&JRLts^q0oB z8~85buCMkO_}d2lp@Dy4;IdA3%gTC~6C9GPdtF@Cw=OR0Sa&@z(MG*4KHI<-7ciVcKf$uQzSBblG>pla2&%n8E)N5U?6*bQFp~kr; z)UhP@u`wSpaqXw+T<>XI*6J?Le1l$Z;9TQrez{-m@^g)+WA!=%-(ui*8~CFJ{)~aY zWZkSci`v{-2)wtY4cIjM?X*$ zUuNLf5XacU)Memz8u&v7zTLog893KYTF%=B{-J??Vc-E@g1@(chYei6RB>5-O9wxu z`*q*a9X-1A)Uc$l|Ca7%_8;goQYy|I&^i2=-@MEfU#K-W zyR#4e;WsY{IBw{C!he@fpZ>f28DEoM|26q*z9#>=ugSmrYx1A@n*7(lBAwjEVpx69#0zI`T3=n%BKIC+Iw!XD4E zyiWpE=L6*>td)Kqv!?5i#8=ZGLsdQfdgSNf2=RuBJ%h!A$aSo&HlS@uRm=ZS=dx-Y zz4&Apm_y@1vgffZ|1FEE$#bz(Epz@N9nE&vI`YpY|6=m5Q2bkfZWMm5pY8K>blY9` zlK%w~my!R+ivLldKN5Z}f$Z~jwA)>8lD`W-_GK2L>D zV3}XqN~)w+BG3J<5_=x6fbbCy0&bv5{-O!{2geLB5S)J$1Ec0$#X#`EQ4ExTfD^j@ zIkH(Vtg9pnB*IuYBAf z@z(t`_fr80O8PgT1drnR?W zlV0ep=xundx40#?w4pPmn1xq_x`o>tmNs?ZwX9ZC+xYtW_T*|BT59<=a`igyBn8~k zD_Y{^%{PR*trCBwxOy!*O*y(;53!xG#@3EbQIm)=?&ueqALE_nVpV-php5~`s`x3c zs_Rs|pi*8J>ArKlN0B6t@%`SVrzV^k*HJ{dZi<@=X5;nnNo3*2`^3%Wh`$&;Ndsy0 z#4G42Q@oORxp@-1HoS9HXH4GbDn(gJy%Jr$zus&J!_!HUdIZZ+dC9h`Nc{izUFPh+ zoB#+*TsYN*i(I(Mh1a<7P8V)>;T{(Ph#c-Cr92M59FjR)G6itxy2!&JRP%5sWg?H( zgFJfJrW_8lOyrr0gLRNc59#FL5X?lLML0B1J#bwYhi4}8Xxk`DO(9J|1Z8v%J zG{L$!tTU14P8_-}J%x~mLp~FEw&Tz|&j8nTaXMfkkMyZEVR40iK0J>k1TKtX0on5@*sfCL1{E zyKvu!_njy&)y<>4g*Z%ko#6SMHp+pDaX@|tj%^7yO?pV8Av zqicHb&4f~Qn#ssxAJ#T8`@OL0r>vLt>3TN+*Rp|H_d{MI5jW|)@8H~&w zPD#q+?NzNG#~YSm95Qk5|5gq}Zekvf=Uu4zu7Wa9F`hKv??7Q(=yW&u%Jm5#`I!C} zhsJsSHuz=}ag)y5hjY`8*9WOFn09cU&~_XGuFC+mM&e?Maj%m`-v_~zS3NkLo+8bBmAn+Ck$70H3`!Tjnd5_{B$-M8PlYwfIK$Cv- zyYS4KDc`Jt=cc7R=LnEUN55N)S|-xhzdMYPo=8W(8_d0t@3I{IEenYB4460R z?YcZ?izkv7Z$6@LX(fG~1N#OgvL%o4%2?6)lX~Pwan7+>=QsDrzX<0ujQq_#@_&l+ zdL#eY9{GR5`5Ght;~x2GaKUv({t&|@w2ga+?l$uI4s4y6&%XZ*pw|EL9{Jbc{BNlala`=*p(_mfB#DE|>*Pgh5+#Y3i```2BuWx*k7fI@mhwsb zJr>f!--DLK-}8#htswc@SK~5^Amh8f*(4<_s?vPBu*zPvQ7bf0I>+N=D z;^{8EA8;FE3lqm@@{mS6-KDcn*d!uxT|pkwh^M>ssle^y@q@%ZLLSnHr@Qn;z-@Le zq;qkQXOWAiyYy8!*U#Wx;_{G2JpDxcAYFsQ4&w*uCLEMQ8u9cnevt0OVbcht2XK&w zG~($leLHa59RQvOP9D;Tr@Qn$!0iJ3AnnIN9@2=XyL6zkZ`cQz<>GWN5B-1Qe#B9h ziKcSD2Kn<0ywJrtAJV_vi#!sLhn7=L+?6wiJisY$yn)m2qz?p~O&oHn0eNUS^NG81 z7LW%x>!~&HMi(Ci*hU<3IstiTIje}fa@LRsILE(>4g5+Mp9Odgamcw2kcXDDnYb&b zi#)*V0dF(#J6(J!;C;j)=OI8ITF#@yT{+vx1Dtw2W#Btpd>!CR#3AQZKptAo9^$T? z*U1C?I>5IK{D6z!0Qezs$TchE$a%kUp1E1>RZ-NdHmL0$kQV55Q zbrKWTI~wOOq4yuKi|RcGgAJZx20p^TPc!hT2F_T~@@ouSt{Yq(7$2JFJOght@U;eh znSozx;I|q0JqG@mf&a$9UpDZ)2L3Mt=YmhSm(TU55Bc)!qN{({;5mu7OK02ZvTQrH zQ7+1!Y4FT8c)n%O7a8<=;4C{5W#t(~SN>}9xJx&AF43j`z$kkgahLuxgMKe?%48q^ zrNQ%p!Sj2AF3%Z)pXp7vEZgm`2G3#Qu0Ed`bnesDevtpjx%w0s^pk*7pEZ!l_mya! zCmTGo4LbMTYMI=3%d+g(4F=CjgJ-=#zrvtj1)OEsm#;T?eq!+4XVAIVR@ckDwk-P$ z%KpaS;r?39v(KQvW6=K!oMqW(|7q~ZGl8xT`44gJhd#u?&m`X$aD8}&!86Oi7a90+ z1Lyu%EpwBB-(leLteq?WS%c2HwGQk98c#RyOasp|@WBQyV~A@@i9xS0@W}>VY2b4V zT*fr_qBF~&_XbYiQpbJmQ_wDH<79-3b1gjD#kTu$JQwF$n9sVi>`TDwT%57g%zs$g|G4L(}ztg}UGVtvNzRSS( z82H-;{-J??Vc=X(YMpxa*tZd7I{zSA5)2 zHRqq*vqx+x_ipi8rT^%TcxG-7TjkzS8$HjaTWc=CtW^4UgZkc@S0WP&_>Lc|^ngKs zbX1>7=ZZ9H z6+B9-6u(t^&|rLR&0@@KYogHh3d{NmonCk6Ua0ns68w13e&4e*ugJUGJNm?s_qFU` z>9|+J_6M}JD70(0{XVh1p1%8iDQQ;7Tj{m`s`5f!`#>CfS7G)$gp=Xpz1>A2`!76u z*0BmRLUp5aDl;W`J$pD=_d5)|%d@d|Lp!a4b)#a;sT7n75g3${7$yn!-8%F8k%T7C zuT?R;SLo7^XNtFXMJO|wBxNkFCTd7)BAIt8s~f{??`7% zVp#mjgjn2}_gXe1kgfB+ujZjZp(iwAbWTNOK_oY8=YXM=h3E%E7s3%ki{OSxC7lqd z6c<#A3o7Y?%Bl3fYD)y0ZcDVQ?q_9&c@E5zKrD3P=9Lxo3SBbFb6i;{P!fR?0?&G^ zyqCL6U+z{-7$_~uFuGfkO|Bim(%qiD-q+g^S0Vc|y06F?8>$T1pAb*!Wfe{sox7ys zjPh-Tcb_m~^tKJJ3>i@#@=e>uzK(&;%KKY)p$8A&%=c6b>oev0P~q(xB9lMvwuWxQ zxEzTbS5xuj6*hWQ$T#U1=s_V5719GPH2T6F|C5wE#!1doFMYN=l)3Y^;Qg;%d+_4j znWZ0gkN>FqwBd!3LeJ!oRbH`VQ|1Y~Ff+{eZQtHGuPg9usulh9=f4>2EBo~)yZ$og zoo>l3_ak>yuCK7H=Jqd2_jRkOB-fKtY~{Vt{ni`ZA@2^){EQ;+vp#F;>*FSEAN7#0 z(u;ArD70hDxRK$S4PW++TJ|65o;j~}PtDll4|$gPC;P4P%CcX7{&9YK`QDO|+lP$s zVgPpbjICMrW!HN}DPu!t+ly;$`+1fteGW~GfpP~=8nfryJN#2KLY~m|sM9K+F>h0P z`RiK7UQ}Dt^<~%lMJX?h4cptK{3G2(4%+CKJi+GMkT?A6OV8>q_<`ry$GQXe@3?Kx zwFfT#ba~EGB?#&s34VO-+Ti^=Z##JLq1x2&?8C2Yu}VMbKCS4}oE@20cr1kQfid$o z4o~q~HM!kq?Ok%uzAJbMIyO|4dA4o;UFv_2ebA={+1(lQ?JEv<@6MR~kFToxl1QJ% zidE6F9N*NkP@kFu{zZ!pFS`8F_3Jx#mAB2`v|(^zj`LyOVFVJMHjd_GkGeiATSv@yvPo{^`_9`cJv(yp z4s@$7^x5)q4@SdLU7nOCt1SPxni1V8?Nq#PBo{+WN8blezz{ll8S2N_fSw|o2g*aQ z4C}K$RM3^b;r+t=4Nqg*`4h7^qVDy6+8o{0Z*tIToK@tzZx{ER^wpeN& zVbC8*scAj((R1BpTY48|s%hlI;o-7fBP+J_ws*2j-^#4QqP~YRr$+nUk-7d1yT~ai zFWv65Qcg!@(CH~tr@kWsU6qCTT@e)7Z@p9$R^3DCRTRS1jOD>0|Dj>MKK#(vca|^j zuI^AKJb-z-qE}Yr#H=B`JIwJ)>NeR?VGm0$lje2IdSyT2Rz}Y!;uqD+`j$rhmq{(Zuf+@ z9}dlm7WFF1m>tU+n_3y_IwjPnDZ9Pavfox_uClMdy1yxVwXIeptL(nOCCro>|NHoR1G7AcF0>6EiJ296!NmpGS*q--BG(|j;{B^#5L8< zJkIdjE-CbEt0;?jBU`K?n}%~7+E~agf!4+}iHb1|7JBS|u=YrE{~FJikuBYmZ7NNh zuxK}?Y*PPiLTnwp_~(I3hjA0o-4wbq)#QY)!ujhH&f2e>HQ9C6WaX^AaMpk1s%O5!Reri^ zbWTy`qEo{#{J-#(KmVA%lK$FtNx7$M!qgEV&ye2PCHagJM5qymDhk2-TK1kC726SK z&{Fj90jK@ql3ZMaman-xzoM6KSAF4xp=&0ivzPah;d9si$biu`hmKrfTWbzs%qa4z zIrms`E&X(_=ivCyN`uQW8sO;$Yya+klXKXHk=&G%x7~pJE`wkRd(* z-{NuO4o7>Xe5*QIl~NHs-v5a#oa43!OLyiaxI&?w4`|Lwyhz1DwMTEwa%1mNEHA%l zLR?~njU~75hzA#rdd+Bm$j*VA2N9=mc!ejk%#*Pmx0gm_mrM+oc|!8*tjFn~@K9Ub zJJ{`cJ%=|Bob5Bh>W<6g!O$Y_wQeqG<(j4_M077j<2sd>Lehgn8J{`(m-Pwd3>~<0 zz|`TTzwNH*?P0D=453J*a!#Q$=lSlb5e%ahy)9<_mO>CT>&xs&Wx){-Rt%AQzZkNq zAn$RhPuAR6<+(*Xm&q9$IvqQHJy*m^cI&f?z*FfUO(pS5Q%cXwEg8{$vg>Hy^snYc% zF7)9#T#(304I_V#xTLL9{*A$~Gvs@14*SZ%@zZeEV#-E8rj3;2abv>9+=5Qy^sZ_5 z=l#8Vhv$kct333_P3Si2Vgk#_yo254l@$ZB)V-R>05%R4J|F?Hzx#cUbS1gff&Obf zJ?yxeuFq?J{#j8*3Y#smCEk;yAGNvvGo#9RN4m!!=|<1W{ZZ(j!BYEk%5*1w-s4@5 zW0VUk0UL01;NX3H-e={p8|Qz)q0c{dasCh3YG`i{H?@ShX(?RS+S1Zc*V#}XE*#u} zHylSB>Q+u|ZLS{{u2>yzb8oQ@<3|LAHMXo{X?RI(Q*&B;%N1_F#_AiI8#)`pgHdd7 zJ^z=%``*WTW|sZ>VjTLJSuSnXLnq$HWa2%lW91K%T>QTRymtdP%YWa;xBpoiJU-TZ zwU_cV|1eZ=T@U`Ny(a(nedI3$4-@;zI-D!{<9yT)@+o+OhoXPrx57AK;@I>nK&=Z` z&}5>-FmNW`U%LcQ^C(4?j=Ihg5P9!g@svoNKk&PCuD2;LzCUnPD&B7rmsjHB|1K$Q zgXjA`s3v{~$$Afb4+4gHg7grSTMDT4P`WDNS`Udq7_9Z+&Sgt0i}M`@A7kC*i?<~> zb$#{FnEz+h^(i~n+rvO(;(bql4}ZHc1aYdV+0dGw_t(A&zpg(ELC#AuU4Kt|#~|O- zkNKt@+Q(hsV}I{qFBN24(9dz3`K`qKIB%Btkj~RO@qVwVlXC6`kFIMA@;QE}x=MTq z9}6+aw%6emZ~M2gsMry&E3A3Bsdj_Mjn^Pm7YG1fq0Id zeT2F{fd-(S__ZHFo_!T_t`Um*!E@p-pjz($sOvdtB#3yL`z9!jN5*eLRd{6l0P=n6 zk#X-pbZ*a_ZG40YXdv}nWchvG5M1uf(Op|_}lXn$zzEoEiidtim{RY8A=81{!}lR6E&{yagS z#JNBJFn&`9LW6*RaDQkQ=xADM`3v~3U@Op8+iv-XyaCi_dH>9!Ck+Bm(8nD+X{X>P zoj)KP#BUlGpy_SEKsX&Z41OI|1AG7w^erOI4s=0K(8qt8hDhjL8* zB9DcVy@N9*BJiCXKnTtxYB@XLr{ElF?Q{Nz__x*~HxOuUXt9C|iKjW&LzmzpZXXWe ze+Izoh&zGyh9y?;T=HZD8Wvl@WfX%)@O^v8e!6_RH-pVDi;V@)%ixv)R&4=g#``7wUe{z!VYQ-Z#h_9xa<<7}cfe5H7f=)GzCNUwK_;&`L;0P+2#H#^Tz%eTqj=5$fcJH*?aRrL4) z;+@WKY1MngS31Lqe|QB-t#bHUx3rIluW_cZ-hU8Z?~FkdrhUw)z0B#yy8g8o7G3FV zqs%WDFdLkYS@z3UfM1i@K^-i615U2X3{a5A=4W&^XJ)cQx=mHPGS8ul968yN`4L+z zLr(69V^sFC^P>a&nL5UC$<;b_PTTeG~C3Ax_xRKI*-PLND|-Z7VQ0U?;XC^_kiFTbqq%(9zXHXdjsM_UDcR41o|-)# zVguQHH+V3+l_IU2HxW6#)BDBk9f^=iZBaGN&!GJg#t()-)&Wr1ECRnm{Q zXjv!Pq^)k?Ur~eOWfsXb%EB#jSi<6oK-YvvE4qt4V zejA(8=X?NHq~A_F;5-8}(tjis1o9|N#WPcYH2eX&6 z6|B@Zk&zYZ`yGf2;EUx}=s2R5vlsP+`Vsdz%bZs5)Cget!5ZD8?dZ-%%OE0ynp z4Lj2|gC@hIGkqG$S~7e(XA$?w5bn$%OF)Kjr;>Qc>3~pY=3P)I%PEGhomme7@9o@) z=5c0|-p}E?&z(8MbFDrbA?{8T?K^`OTiy@Q5KfdTr``c4W;xaT^p4VFuAxVbp~pN! zkNKj9<-Hn4IA=ddId?**kn?T2My3pB0UhSbT&U!58gkANIhJ=db%=eAvfgqQT3mtO zpl>RE(-z`KH37HirdL3a<-LrS*0Ifw^Eu~z2Q2+?C1*L!g083sy6kFDA%wODeY7d{ zTKFW_S#lT|G8H?GY+qN$bE%`x`8}G-X=wyYz}ZX2wo&*EIhzqS&T=Y~<$OTh+v&*O zP7uxMbjZ|aW!)_8zj83N%jSortn5_~XJ;3nojuw8QN1sFA^Kb(`_JtDR@T2@fzP>o zHVeS{_*zynSpew|IkLrxk4<2vG5R;m|P^>%K+|2@=V#@S310R`oq8;Sd5 zdU0-|P_?jeZYG{43m&J7c*uEz9=s(4evUsIK@0k*wRZ|Ecm9WH>Q-1b!`bpzFa_G` z7F*73^q?Cdw@(A=Q&IjS6=_^ZICm(extMW&EJ{0Ej5$A{nBLBJXz*6z{hU_fcT(qE z$4{QSs9QLIn+KNj)2+ZGP63_xGs+p{v{B~W#0#BYu|@Bp-ou;?r2m}FQ{tRL`n?~5 zGSNw;PwrzNO@(!Q*RaR-+>cZ5|DqY4`v-uM`V%lUIuCLw;8Y;~oQH^7&JYTH_!InM zte~@g!OCVk3B;&U7Zn)7Ho@TgPB-tib6RPCh0an3J^&sUEA)s2w3z&V~}pJ3TV z4g$+^o_qlKVyB9AJ#{O1>Y?Z+loCSSXGr0aqaZi(w^=I(=oY&t6p52HVt?cW; zZD;qA*!>d5d$apc=j?;{^=B^xB_(?e`<2!Imym;hJ#n72hokWEwe3quprR*yA3VUh zggl-N;4rpn(o25m^J7%pe=+4;?-My36qKCneUx)N0|l9slgshSzQM<`19JOh z;pC@sf)}^GK(*I-wxWoA1M*Lp4t+t8dIsJJiap7T5^}4??(#s3u&6sp)J29B7Bwe{ zJ;QLGCttjnqEy9sL{yn7CN05v{#E$#3`Hc_Rd(qhJ8DnIlSAKzMfUT)JCJuV4!dhv zysGELqCbGDs(M~b_P~94%Mfh#E-{Ars;b>$HJ>%fKM_AiRmC?Y+kT(E!DM&+6`fgG z<(I1X*lSp{_KPT9SPbUn2uj_8Y6iop5wSW|RN89ztHW@K=I zsikiNjjCLznEhVf7txt7Ba<$=Q8KGN7m2o`kd1aJ*oRyy_L!Tymbo7ODr5Lm1r_|A z5}nA&Ka3n|n8c5EW_%TR^xZnV84dR%l=BNbjNF^yJmvfX52N=v9Lo6x9y*`*?UeHi zJq&%0G!cQqYc++W~-nDBr1QGCTV;5 zqz2vlxKaKx&{)}@6tmyU+eo^=jmV^XKb6dCaZr`5-OEvrRr3YlbQGO0O6BuW4(+}; z)f%#&0q^)}xW0jDcg@7D7v)07-v$?51s5n6I)1wF7d)4ERVBR`@bfso+nIijvgFUp z;%JiPXU89l{K704VQ2d(+jH%>p?tNm{kUfu#6JXOPqGTeqts8K`-?qwFW{$|sQcek zj^E2(tsTO5qCbVq^c>RMc=Ifm{IzJhdgQ;0{DG1mg~P0Zi$FU9T7_B0526wqXtWBh z#u>F)AS_j$b@2*sLr&&NxF(F}SOxS51#Ud1KzoK&@S@A{@G&_&fv{D;x0;^}!7nNn zdn8+MUC1iPL&h9r?00LV2}Pi>rMnf)@8x|u?UQn3<{>i|&W4cW4$6-(u?wCdnblH_ z-^<(0I#&2P^QEYdkzUH_fs4tLIXUSY*LK&0-k74l1c~eCVQFaP?L_(l@jz5j1PHT= zcj0FP99zHw%;qJS6yT-2h~V|(aLrf3k_CJ-INkqeWkF&bDCmzI8vd!ajW;m0;e(J# z!~38zG2G}n`J6`#v#k7j5H3-6#v9+y=NphpPk|cx9=zT43ALXL(zPfvEDGcxkfL*3 zO7XooI}^noBpv{1me6a(gh|Dlk&!o731`PuUOzS)uu84f}LnTw13N z#jo9=|A%0AW%R{=hbD16UBO~ELs)r}Wv|=_=HK9C)Zba)e4f6B)6w+FCLoW2V1IYG zMvJ_to?nqI$^i0hBK?8z8?9x$qr%~?;0qu>hqVtQhhff%EC`O@fVM|y?$8!*7-8WD zX<6(&w;0@$Kg})1&QGTy+@X;69wXw|+9>$m{vj`$^RS#zc5kNL zTrJY>8)@j(%oG3J#Jt;ZdOF8!`(~b6qh6vvyLdlkJF*J4x%zEH4azJw;yP%#Gohu- z#t9{1x-~|=9{U(&>i@skU3ter&HZRx`!SB9?@<-5#qD1`fFft2QO9yQZf|=Wr}n&2 zyvb)j&b*&9j~99N6Ovaw>U@U4la#+3n04w}^j!OG{l6W%>tWV4jfTC=y85TVP8reP zk!5qiKFDUc~ApYf}UtkSm%8ZK{6eqcFuD zXiq}{Yak?_bdoh-+!RVVK@mYfI%6b$?2)$pNxb%vs`hsBo~mj;jhc*7wQpbmm8;tM zCQo~`S^JoyYrjR+KK?I&71BM&*=&&kxzgz>8ng;z4%Zn)FS?YXKLMGGtfF^-+(6_I zkX=BEABB|fLdqhDDC!24*JZ_fKph6^k^bmWAL8VblPv2EoUli+FMSD`8AOS`gj}oO zC1i8D%!X7whVnlx!IRPYLaVYTy8W_X5HdLFPLqskW?(eJ)GOU~(imiel5&wXbc~@nPdYOGDU9A+czNdsZ|bNFm5Yd`DF^kv1UL1DOhF zg;BIR9i4&xHeO5 zLkIB%GR1!ac?gi_z*_JjPS}Qby5-dRlP!4!Imd2EN-4;Oj%>Aks-S8$(wpV^B&N-U$9EMnBGf=N;zXAqq5$ZTo_+=)_XM2(+u>k(*{K$;G z%jPm!|Nq+VI%9xdChwAwVj^5Vcsz=NlXpMbczyumKF&ERKaBIdTKw2AO6U3jsJg=Z zt@P>>FodZqk(Z>VcAoQIv;DH%Yu<_Tv!-#>c}0c|-~(U?{?;34Hm&Cz<)vK;wl3i^x?N7lLx_JmUi>YiD`%f8Xt{AEVshHqToXlb z@u9Avvg8_SDb5R4K_HhQo1~KJlz-S&f$rlWQ{D}oe;KlQVXO((biNJQo+kGS^gr_L zt^p@Pw2U~@JRH9tf#||>IMC0Ksy){(%By8-RC;8TO7_cZt+njO>Cev<2&3Z`Ld8lw9Pn z+8ZQCS6wz5x+Bppn9HT5!3%dP;G?O>Jh-_-Y0 zO69NUmom9$ptmO2U7Nx>EX(BX!wo2{uHMSz?!&L;oaOkhjeqe>uH}@Rf*b^?d>446 z+s|0U4a1+Ul^YFubBNtFDWY3!tK70k#ifmEv8{5;VuYNt z99!&Mo=J--IX}d?YO%W{QlG+k@ww<}OJLM}d2Au5Za?PXE&TV%EMw9yJzV=1V-0V% z*f{W`#nzxWTWkSNwK49*QE)Z#*kUUs&ulT?@}Wnsk{s1y_k(s*oYTtRh4Z6Z>?Kgy zV()@ewb(0S>wKtJ_69Pg#ohsu)MAAou*GaRFuBEwk;4}2BRQ(Y#(~Bb8|u>7VqZ`s z4sE2-V$&azb(4$}dSi~=wHk#7SD=mUjpFU|s9_;S6b@Y0^cuSQU1?vvS;y{r8)ek} zly{|le~dDDJ5Z~AP-O624g7zVk}vaI7Kne7_WuIs`E96!%Q=SY8dNnQgH;8*dasY& zb!)z^CLlLcGqFI)dxKnQa`RNqcXBb8?&X?!D)QC*67oI(i5)nfx(dkmA!w+vM4pRt z1jVb+fYW#@PSwmvT`q!d?<2=(RO1San&#h!Z2FDtaJp4_2Pes5xx=fsAK6`eVU_Yy zv8aCw)KR^lSnl;c!E>1oi@glpzu`P@o(Gaj#60rnb6lpoQI+~6LFEU$fVx1&NWGQG z?m9nS*99_0hOp96bzLB1WD(D$t_ysu>svTib*+(6k^K1_tdr`Rz5~YD+q_!=^tLFw z>x03F7`Y^x|~8y5)^^i`hf>Lv=L9 zzOZ#&Hb@Tc<>^9^)dpz`@AKds-8Pg*Rlaf_|W}bDa~X zxuI7u2svEyU8r*WazkHd@}AmBsP+evDY06x5VYx_Js`BXelPDM#b;`nF*%iR$@Of! zHmmGX(0EfK{~91}e95S61Q_FK`fLXEVn6+^x0u;orw!45Uo3YeE8$4x_j(Dxjl_Pr!)D=^+E+@;0#JuaM%$W074@giIQ{2E23tIzz!|&{{$J zq0p*4fo`2M4LS7kPu(1Jj)G>;=;dczn!3+O|F1&MRgm+R%JF-7gO;M0xdEBLeF0;vlqlvN_a7K58Q@^7Sks?jK%A?*NKI2<*mp@4nue} zY*z!;O>*n_KAfu?yf?cyco*dr`N7^Lo_&q%GM?Qct{cJ&yT7B#r=Zj$q7)ZxxC4ZN zjzRE(OQVC12aQXq{X)Z1Y6|qQ%EBNsHVTFU;T`yHl~3>FmxJcUOAli?9?if-gJnPC z*SiPpu5ZJ>{Iw`_8+^cp^qKIf?oCzpba>tGm8)uN=Dl!Gpk@h5gt(_`Ruu-f^m5r> zGwZh))6>VxVt&>z;u8g*Ih#%$$Qvs&%Q@_aiT0U|*n1dqWHW$m&HN*|@_r0TpBM1M zV>WKS@)p6&dr*}fc^#zCb}}4<2_FHGvKiJKZwm4Uy#;)mwi55&sbG2 zry}o6o5O(;#4STs)$fs+Hs0pFK1Jq+AFFC>5ab0m1KyRr1^!4IV>1#IV;lIa>dQdJ zPPMJT-(nV{E?qEM0e{?5C{N)_s3Rc8l4y+`V2h^j16FuE04855>~i#K)C zm%<-VBq~9{JDAE?=37<&LJOyFwHdMLY<1u$VbfL z57gX@b};8`x!GY2QCTUCr$1salxhhLeE=OHH@Vyo7XQ&B86E|99Afo zMsR7FzJupcZkY=HfDByqrE~GCJRu6Gg14YZ@ViuoOGM$Zq7T8%p>jHngIYSp8f`j{ zpK(n)O}b|Fc$7@576Uj#xmL0!kzZX22d33XJ_q$4`RUxIW>voo52mSGa~!c1lj4q?1B)VabEY+aA*1e9c2Ddo!;kb&*^4XTga4G-gEM-idoxZ5%snpK&cfW}aleIw zX7QTe!to`(kt3hQ!R-KK2Tn^rJ)INIF+Pps=9Q!Np#G3fS|58ze|}>y-EXm2NPSqx zN&b>f2Dzs7B44JPd*8Xcbt*k&n+re^)E(sltXpGQswdZERQQ1cedPb^q?MGS&USl4w91r>G1c7 z@elAA0tO~zCVj0ZoDl5cnjs;LrxBdG)$%ky@im}9#@B!bC-fm#f##x5h9v5p)=Sm= z!wP8&>=##7PV42t96B_iwf;8INg!J%7u%)D1&877JH1#@(MT65PDe=Pq_Do>3dMSW znYbB|D1L*gw=D6oqYNV-u`&*BJ@FD%H=7mqjEf(zs+2{yUj&(?=Dq ziV`vt5`vPNXQH9FME4}sthg)8oTxqbIG7|kQ_^vQ%PRuPpQbp8PEV-7U`}$}S*}G; zgT~J=S(6wm6Dsx)F*D(mGy9Lh%4=3arXtMFLk!I^+33A!ye_n+4!5c}5&dS2#Avli z(tLB{L=;whHCV=4^NKC^qgc}KsLp(o)%_Y)7FfeL@Ubg`?+RK?a4nAH4`Y#cs4!F! z@Opp@RkspbkHfaA2z1FRu45(XT0BekW3*1b@Lng$NHSGQr0#neYomCSXnEPShA>jnvn)irb#}PCZyf&@JdW1U}4k z$ySlKNf@dKRtOp;;6{JjT0n5Eq7rL_Lv_4;F9B7_jouIR7dW6K z!IOe6gprbBIQ^z3aHG*E9FRotn4k*@w&O@Pm%L+zp^8BMy=p}X76^3#L7kvcf=3jU zKnqKlOJPbvHGyVGm|Fv?k{ewO^dcNklHfano}f39dpg+txyY zO*oRxCGY9NTSdT)0SLc?19}i_5VVRwsT3o)375b)de=&c0Y-VQ3kAw?xPtf&N^D=L8p>-l6yQSK&Ts3O=b zXp}%zv5OVEZfR|#F9NxMP%6AoDQzwz9- zXSrQwJPvxc67YvOz&Qh#7~C-qRLeIWK`XhHQsznN1q3l1UTe*|TZx>f=-eB` zZ8h*U0V`p>gbSszxYD;E`vt{GkSVzf3CN7{S}V%A0|(_0{u&3A=Ej^?Tr#1fN)hzO zL2g1NEIx4d6!xG9t0H(*&}srzMODu#-WHDNI{+Ujv}bLFqD1s0fDsDSR&X!R21O!x z8%J_rX$C5OJ#z08<^=>V33?8}D~d|MhY@V+9D>&rwP#%(t2Ew@rg+MHA-M=IIQftZ zYu8n>IO}8$q-*i-;XD)9k7xt}-cnGe5bLcn2o}UMh_$H7U$nGl=N^T`A zm+a_i0IUag6SU)?TL`aI>-swFdmoZDudWm94J9B63cCsL2N1xW&pIsGqi!MmamPY`h+*)fc-4TXDSU>kdwLO zB&wN|ThNL{xEC11&PVL(+B}teo(-g0Cqcd=&?x zpWqKJnNUfHFB~X=n{z0Ea32oaiV=JuXpIk5rb)Fi?Hv|+0|yHca`O%f5l}qIn)Pv) zhS^q=xD#WT@&cVtGYylNJI575xK!{p1$f7V)#Bo&B<@OKg@kY8fXM_O2wKB`WT#36 z=jggj?N}MNOOr;(y(n0}e_h z+=c_qM?i51?u67BrBWOi2$ZP!K)~WuilPW9gVC=`5!c1Yqg5d9R<|7C&vBq$0%ce< zAt6zU`*f}rU7`dvAr@Ll5W}ImwyuG^-xJ;{f}MiSBbedxR^3W$CJx)0N1%ly78(?y zN>-aCtBsP?X34~g^}8tfO;siDJvitf!aw3bJP`av&?v!sic0WLMJ1pK;MJCxKBib| zO&WIkev zhX~Hb zkt~(lJGd2zQVF@q9_0oC6ev_n<&LA}ibQaqpbH2d#*r+QyO3myYhvxlJx1^1fN+98 z;Z8KdiQp|9$;HY0H{q=!_*~E^!5%5LkU$qpxRAvZZ#BUmgm(df=1p{)1n*q(z6mCe zwOk;XfzQ^4{{{KqRC8{2s*>_0w-PSE0gDN01+60B&LeaM0&X`l`w|7zyEMWjI8rUV zIH9}y_*;3xEkddI2$c}Dij=Y)2ZU-8cL?>uf!YaDaKj4zCU9^h`o zstkhD;~82Q_xH?D3yVclc&IjEI}X%HaEVLSVkhAIO398dg1E)! zULi#Z(y^ZdQyGDS!)smCcq+VPl3{=_R1uH~mj*tQIT3&fY1Jk}BI>wlXP!ul64c>Hu8s^7grSOnOsvji zPE?nWR&6pQs^h+$dqrB5pfQJr#t5#*p=u_!S!EF170=LZNFndxpo0njfdlRmAmtX= zEF)-?fD+L#X89-G@`TT*@&w$>gT@ztLac$ZxI+eH0?IO5mOEnpA=y!at-Z(@Be)w! zvMD#3M%N^ql~@gB$u{2;LcLPxTr1gg-2 zM4>3lauAF1QdjUS_=WH8UKvBsTkF#N}stnAvdkSQUVGfOG2Xs zS_hK9N*c{!KB3ZKp_V}Mu|yn(EZh!8!reh6^m=(-`VJTJCi~sM_4Bp7xw;NC-kU0D$q$!`MX((7bEz42Rb#MXPFIk)r8X`FKi zIZTtE1L+(<4p*xHIeg>;vR^Y_Z@Xih?ZCO-!=(56fFy|*bNa%bmnk~U_zF6&(|GB{ zD-DyMmq)y$>PhD{3onfHm5G*rAM}0@$MZNW=&Tb@uf;*X^M5+@JO86Wzi-Duzw=f% z{my&6^gHi$((jG%HT}-JVDvlhnb7Yiz~}Tk?^w|9ykw!@xe%t`xjv=exuT@sxdx=) zxp<=AIjPg{ocic@PHXf#ea>SP4*H!#GX2hRkbdW|LccFS7}D>T;n1lDbPv9tfKazT z#|~CL?}a=Zc5PdmHGD3~L zLrX_(QS++Ol2eNsnwK0+XlkizUQyrhjihzdpEvwJ;XkVO=BCBNm)6xCt;NXV^5U}p zNH%q8KEJ6=7lH%o8o#j>NhNvm- zQj#jm5pg{$3y5e{nW{!9=ad!gGh zl&MTrzaBRh*&4RUwB1&v3v_ER*CVark#iUx zSt7zG8QLTUkM2N9#e_+!8?81%OGT||Ml!BCCF4aIpp{l;D8m>9N_Az1Um8F)!`pT+ zR}`fPpV6ar1T#jJU(JYD{#Nav>50)m=aQl#$m2!|RY`GuN!2^Wqgmo0pR~!t=Lb)h zV(cQy)oa~`V;E?EsNkUpRhjlN?N&jhl}qrP&&qTFLqLi*L#lslo!c$g9BYK6h8`tC z_XG-BC!I!Fpejx=8uub;IQ8pwBa9YbBn}U{W~k<-c_}hRs&QtGl-2dpjANA|JtE`l zGLhd`Y7Yhnf^LZw0SP%3*%D?n7_yW^+7NQvf-QTIM6U9@8YY9%cT=#|vAq|HFO(Pb zFMZ^ZI8nLM3$;@*h^4r>5^9<*qlNA2fD=uZMo|6uKjBwhh@;EVrPk5QN%B?neiKfm ziSmHzx~gr|bYXLb(2^0_DX3k=JbmktmQbBgw<5jmk$FXpf;Zd2#UQBxO^IG5E>@$q zitTk2q^p6qQ@m+zC^2w!KW1N0VfcrOq&=0DDpvJS!?x1xrlOAes<=v%cvCZ-R2k>w z?0u2M(nVrZsv8BIzdY`w!P#n)ErEF1x})mX)2mrO#}^fCL3eml-I+Xo@zGkN=cze1 zP5OskCD5D7nr4a7T-W1jOyN+ctszC*orv;_q_wm)v_OsX5*aAVs5((>d1M`)o?tdj zb|m9fwIs=so|Y#1u9Rj;lM*XM_cZ?Mrh~yL?#QVcHdRWg2+=W5oAmfePngRbPmr^p zQbLcYNgYe+SJ>N%MbI>et@!s(M)N#$zEDs~f{;8^mhTR^N> zCBM2?D$UtX)y%K-X_2Pw2^egTpl>i{|NdA?5hRJX_-HKQ~DYpdL60k^CQ-h&&jRUg&!Cu@;@BRVaYntI8ok|BDiYdSUV zs@061tT-O)@rrdkr7BTzsN&qLN)KUlnsSROtUB!@7X_yxLj|I;S6vXQD*=tO9=%Ru z{mP1zU<9}t5mm)0!Cs)4tACBtUe#?>#d@|U-Eq4a+gNuk)~NY8g6b<4HTJNjwPgBM z%{{Zkf2W8q4|;+#kf9V+iz{=e)HthA6Q(RkTz=KqYAFy9ab6k5_2m?mRvk>MrPQTz zda5KvFC6K6buFQk){V<$YfR?F0;we!94?$Js|RYjTjBajow>U6GgnQvI^ z91|DJ%2FK{v_(abbR7vtbs?eF^QydBARp&y*WpW|hgh0A+%LMs zI#$%xHFR_=S<#%tv9zHxwybtl3~aI5=H}M(t;$K2vt!j0X2)hvsEEy&R#iP|rq$6J zYi;XnYHjI=t1)-tY^zOu=mll1wvM{y){X|NqoqDZjXRnyXs{+#S4~>k(2}fEU2~I3 z;#UpYTAQ2s7J7YaC|Pxjr?t?&tuwZy#ahx_yR^e<$A@WRjrcN6jOX!^=QTAq$3Si9 z=#25!8#`kS^-CM9Hr`CL+F%xa-^Sk<+@l4vR=7lc{Ksl*Z&+!a*U-=ws{@;qkf4}d zF?Vuo_N-Ym;z2NB#;mGIR!ob**ML|U)w`~jdf+h4z}t(6nx>A}Vnl459B<5ct#N0z zH!N#i*?{JT6A@l+hp-UrEv*)ABzKM|gXh}ZpsM5h)X#5k>TFP9A!<*Xf`Fb9oi!H$ z+uYQ09%8Ap2{KJjMkkG*h{$TK?Tp(tFFLJyl2u>ZSsQEXY**c4d~|kf&fH0J6Wz~k zUKRZAjZip$wZ;3OF|=shNcvdy7pv{O&Zd?ntzu+H!%~D`%hIs?B*mSnAiMsg3Drr` zq-B~~#GIzi)fRlzg2-b<>`_X5XKg3k*4ebILC!gnxUIdiq25|q+q?qVXfX~Qu#*A3 z0wT{tCfk((2|7OU#HwR_5%`SpRn@Wa6V9?aTRUTXpF&d`Z~t2C@@Na))+<`jv(9sS zTJ3817SWFG;kKv_+DS7fQV_b}@)Zp$@ZqQyE8f?{i57yeT}C*1Qx}^#Yvv?nDMYrd zXlINo@A8{es&gU;8KBcX)1;*eSwS6YS^T@Xs3W!maiw70W2QtNn@ z8Z)GQHLV(&&Y_3mT%@37(G}tqVA!58W7?#d)iIeP>RMMoGDi)J#ItMLYnO@3T32+o ztw3wHH?_hs99Nay?B6mL$K^#Q&89M2&x7Gw6@&!-cTm?@+iq2zJu?=aP%|;E zlraEfeC0T)Vo62{HMX|3x8ge>&`1nmA1*yLUZXptN$;s^ZCf3~mu@PQU zS3JX#Js`?2&J%~VxAKAPxpZd4}XKy+Nv z-q2uS_FRVf6Wv;rXkMHcS>5?Y53THaqI{yubB00GFYRokt1zl*mE1V)z;q(RW$Th9 z@jN95bPO`m%J2_$=fG=D;OGb)ZLHi{L04(fsyHX6IEmkMi|Jsb*OEpb8Rt7m)*?8| z>G70A^!ASwY5eR?OUnme~1CosD8wbL&!z9cu-KEmS~G zjNdXL$0r8NyEJtMMh970sF6QD({b3>t%g1jS5nPIy5nlqIbAn&T8;Rh7WyC*)~s!7qBNzvr~NAr!&&3T1ALZ;vN1fXVpGceU8jR;?c4#-s-l$5AoM6`EyVjXDJ zu_fE+clM}uthzYK^-x<);HpU)8?ZJJ4^^FA72~3C*4%2Dfv{MXi96XB!paea&O|+! z%kYm{TBM|Ml9BOU=@-L-rd^^~FYl9Abyb`aW%`)R!G*({xvrOvR|hlL;4v;FM2%yX{Ncq#w(AFfn)@y##7w0C0K7 zYYS}#J&P`inU+q5cv-Q^`mjS5((c%?WJL$Y4Ur&m)Y;0hH*qaMIkH$x8tY_bA%l== zYjQ~)vTTLHqI7(rCextS%n%Hx3oAl zCaXS;i!Zf0ZmMs_m6dxjIAPZ8vn{$cVYba;)*Z4y?SIjnQ9%Te*(2i=~2wUk*)-5K6v`NsK1fiijJRAHMS&ee8se}rPwmX#2p;hxv&sBPfCDu zJ5(XycED=pW3$O1z)tKhVO>6KFBt~N?NBVw?NHbSWo^L^cOd2B--9g2?NH3$fI=+y zHhy@%09&8P|0p2kzKv~Agx4UGeD&DkGzRc)Y;h_l#8##--~tF|J`?5GP?B&64yY<0 z+yxNXqW~dB=u=5VVx7cch84k4iGzuB;(c*YPMr%$Z@_`-h0bkoOr#U19P+Ql!9+T7 zY?BfB>jCLz)^!yQxJmG90h!2u9S&{F9l(d;pv>Jkn8-t1+wum9NTd_jw)}-eB+`j% zo%yN(Cen#(dJt{RL^^Ro*2{MgF!7wYwuLVw(6;c~EZP=sp<^Pyjvu>FZL2E*jWYRa z04DMfr;YRp-xa__I&p-7@bjesOr#UX>js7XszE274?5+1V$g{@E(ur%`x(qsTyn;mJ@CC0-c@bj^A zCh`y;2uR(Y1Fmh^0i5}i|B}H^T-Wuc!M_hU*(iq(mNT(DaSTmD=cDLMq!VX6Q$9cO zz&2u8Zu?{+j~?^vLbVlC_eVZku63Ag@DpcjP)>tEC(cvS`RqB>Al?R?;{fsX2K{p2 z+9!7aXQDpDwVwAIbmHvel=BR5#w~F^YR<&6#C1FJq3|-$$kPu_&_3rg=(Le^J{C^M zV+I|CL^;H%zXt~&$=5N@d4Y*MdXBIQ)z(?oOa2YuVa!nGW`mzNrVXLGuH-1M>VOgP*weEguADB0q7q7x_7FF_Et4FuPD~?ac#?JPtD1H6l3p95)jI zaYEAj8+78@4<*2L8;v!1h-;o|;8cThz71UapHFJzojpQd0i20|xc1L_;9CCG1`lz~ z!w<`8KimSGHnA>lU1lQKf*-bvU8uG*4+BoVeJ-8+hk@%@;`b(W+wsA0tpm3~Gl4a} z2B1uCjixP>`CWsDxb8cffot3Oz&56S(er1(S&lOK_;mpw&wpp|^I>YzA~^UkHF=5i zA!sI^6R!m%{Y*?`pDU(~$wa;${ z&O|!#L4d5ATiKaNCytLI2z?)Lts9?xo(?*77={KVFL7?CXW}_=-KV$(o{4ngn$Aak znMfzD`>ftxPdahkFSu@FB3-ZH>_Uu7pmRM&{T_Assn2u3Nh7`!I3bU}0oVTIgQ&SK zJ%HfRbnJbLuQ5Wvwcq%i$kSbZK98X}qqyasi9Cy3oH`TdTS!^vLg0kt z;nSwN-(6xM0c~U0w5NB+#>}cRR-lhWAI!ptu>zV-^f5Okl4VWlLuen(lA3*8Y$Y)96090m|V^6)F6 z2no@15b!n^zYe&zQNEn$^7ElhJsv&|T+eZQ5xkB8K2E_z`TClII`9z-t-}Q1S_gh9 zp3Om9<^W&j;!gnAGWnue?PosJsC769TFy` zKkByQ(~mkP`6vhzw9ZYybsO;^NR3}eW+ciduE&J+ z2Aw$Tp-etJsoRT>r!cXszGkCtd}Kw(%rAgz8~H%wMDSA15#TIGoKHr=b%OIT7p4H@ z=tqrMHy?drVi`UH!^FDuV@TxTV=+wR(btaT*#deDH1c!RsYZT2x5h+%;=Dd3{R@Lm{7jdAI)vzU9|N4-f&9~fdjKhikEWpsgwE?}Cern_ zHTBVtaIuVjq=-B^`M|@(I263NWA(Dm+Qn9JM`yc&jT&oeZ(UYW+>C$zw&S*AvE277 zUW|{`7q>Sw*A}bnPX0?u5!zc7i-HtbT3qVp)i*3&u@pBvYw>SW#jPlE|EXBvwTl*lcWerjZK7f4Tf*8i(WG@iC9-Bpk#U%1k}wX}%KVv01;4?=xVd5aY)zs%#Y)P+LC&mvr(O*AUdD9dV`ywALXt_w%8UaZLC^{xg^ zxjNl}x#8(y`Ye&x36d$V?avr0v6i4b`h$6dm*X(yErA2RGz#jx%{}<);m~tAFS$wc zZNj-x+zNSZYaH}ry&QIRy>|lFWq?{Q*2C9C+@$kRi$7>_y)1s|8mI%)m* z{H4a3R|~#JH4~uD`vSOW$G93>UPMa2aC+5tWb}~Ne*>mtHmsYpJl@_jl4)O0kRs1(JN&O({#FrADVHDwS&h_@(uy&+0M z2s!6m2}OuEgm{w>LJ>mr|9cNe8XKdD z&3^}}>jlpFdob;Kd2{*~O!LyK!t9Y$e&XR7t8xnIxRa8#*s51T&ruxXA+>pryadD!$IOtZIp0rJhn{x#{a`4xvvUyf<^iZ6vP+TV!j zJ(zyfruiS?MknC>^@lD0=3&$C9X9>-Vbg~Wn??+8<%jE27t?%H@gK{dulR8v&Tn_v zbazY_t~A?2 zIxH;08CjEZ*sOh+_UG^f^Y$l0)BbE|9>eDM!#sv@Xikfojl(!SCz-!LE$Z@!;sq*K zE{w8s%h8oZ9WX|xvJpNkEN5E83MecBr7#mh7$kx;3U&HZEG=iVA>8HjSB>Rv9&P_S z?EFswlg?CPT_i};&HYn+pcA7KYh>Kv(Pg&sz(?f@gn$NTn3BkiaCmqlb&GD(Tn^h*JW~H0;v07E;GWMAGMv7Oalh&Fq7WZGM)7&Gi_c>? zCvwC8r^@BO5+)a(>EjUU&9oWV0z1eImIScKU8y7r15F zggRCpt{xf1^7Q*kh-k4>1-FPul-XGIHuOD_8^Hn~d8ZSZm zgXjz^p*{6v*pX?^`%^MQN3Jwxn8$<04DH}FZCE$Y8Z(6BE#dvfv_Av&NqdH5@cr#% zhGB4;%=(^V%y5gFg;yKXz9+7sXwPj`X3TBKYdPu+jbNAsncMkJv3X9oG3;o={UXnp z`wOqJsB=H!^^)^>iEwqyr_TNEC}ZxA!;Be9!O#lYaG&MN5Xjt@?=oh%!Uki$4uGK& zv?<4z!|RiGMk zV4eEqNUt=eJx5!oehX5Ltxo1SlH-t*dG6%s=HwfY{?nLEv@34)d(ZpLg%o@mUbZH}x)8=luWoHcnZ(#6JXN?vNrQK8w4?d<}&sS4XXFeP!o6HfccN>Rq>%)H&^#ExSm@ z7_&+DQDgp(@$KZaXS3{E#%z|wThc1z%H3=Cww9V_t*wGv>9) zd1B9($~ylXE|bh=wJ(f$UBjU-sgoNS^V+Ao@nc}VSdKPpz@^5#Zo1I;Hl%EFbAILt ze`?IpB=K?vebF4$Cpx*c@4-WKk~Im zbBr%W+QN7?(q6`Wk&X~96UMIS`PulvXAZvfNsXLt`u(Q!+1DE5THqIq`JcPZm|>#d z3iCNMeNtbBugj~R>D0(BuU25c2}FF#%!V2{-Si66=OWF=*JlObbD`_BYmFf)X3?k^I4SNEV8-DY^agbP47mV=8?@Zv!O;#H@ydKaw8i)mtz^I zk<(4@O&eP;zQc+()W~jq`_jg?#cO6mjqK{JkTzES56p%d*{#<=+F1E_nGH3vTd$$C zvGRXwHq^*&y;5SZu`>4tv&_`UuFQp|Gt4!>*KMN#rc)!kZN%4H(GSB}YvSw5dA8}) z$gZ4qXk+D^Xg1WyuAKE~WA$8SHq^+j{u|K7)`c(CVi~BB-MVDaCOg`WeBMYKYGhac zIbc`jWoAQ-?8=-=8!PjDW`I;`~dmPdZqHm+mmQmUGdM?^f zBd43boi>*5$!0^1?DE|~n`0wCL(GO6Ior)W~jK=9|vz<-N3T9r?V~bZX>u)A!TH{I50}YGjx1)21&# zdO++qnof=E?B5mpgS2lGl_44H$@-^8PB-0yy`LZ1)HfSy;hCzM_rgq()9ReZJ`o3$MV}?-1GFXgW1=y6LlM(=@VK3Z_qLWLM9tOlQdV zlg7Mf;(ZbAc~A6?F~i0AdNS%e@a26JnPKO=*CLO=Ie2h##0>4`E5)cYw0oj4?~|q& z&qm63jnRhpOuVNe4@5fOnDxw9oCqk-Mn|A{R*Vd81w$A0lx0M`n>7X$nL!Q zp6Lwv{*N&4wdj*!;a?l`1z}lWze`k~KbcOAoNjs!ZMsG_aV$eW)X3?k*EhW-(k8;Z zm!myH&D$9BJ}#F&&3`A;sgYg2tt8(Q&4wD;cSkLyhdp@T=(z=T63#`7)$D-I({64U8Es-dMP~aGo(k zxOx8>)*I3u#tb9xBYdjxAY(4edsHsV5cF}zEYD=&3gg*GFE-|~ypQFw3_)LD%<%Gm z8q$i=Le=!BfI)sDK>k|h8o$~{A@bI)ET$q zpAhYz2Ti9&PB(ouZEQQHU>TO58rk_|s5~i6Ju-`K( z!$YQ1Bd43rcX!q49NDZj8{XHiH)e?Y%c6GxyZ^6OO{Ye7|6c{P=@t3>%512S(@pP2 z8(a4SWV&pT!bZX>u(|gm#{%0GR4K=d+|IIO-&mvj~w-)Y8 zKUO~{nof=E>a8Djt2e&?i{<3=2aY07W*GknV?OH`DO^bZ_Fq57bZTT*hh@~eN9)VC zhB^P27&CPL24g-i`KK|%><7}n)$JpuQzN^&<#QJLWLJWrv~L;Zwb68HWcS}af;P<~ zo43t|8rfYpj--v-?q);nE83V|OdBiP&t^l7?8?SxH!RyuXya&a+c({GYGk+FC(_2Y zdp)zEMt0jh%XDt{9O2gFQBtNfU6H>917*(HS2)O#U4!I<4QI8B|$T`9}ZJMvR# zIyG{->BCKDH;vnk3vq+JLiirxM~vC!VVyC%JiKGP2PwNr_$NjAer!55a=Pi|Vzbw5 zsF9rwpKWnn_+0CEV|J0?G<9~1sA0^m7PXDTXJ451Pmapa#PkYiX#lApz7MIPA zmOasQYGijmHQ97NTjQ(1SRQtxm|@Ioq05Y0#ZaHdeCDD0(BFTTBt_UvAFheemx0kg`2u4;SG?4i&lj&C_ltZM zgZ%*!FESfy7P7YR2rEu@*LNy=s_F zjqKK|rRnUB(Z;wV(ssst&Uu_M-_+Gb^bPc%7nR{u)2Wf&J>5pyoEF*eonWjtYUFg& zH`8WdWHZrhsFBl6pKdz4mRu{mh0EGG@D|glk=;3PD{Tfv{#Tg|HFCP?+h}8XJ!Ur4 z$gT{mBbI*!Qq~KZT~{^;zi!OqXgAnx$Lx&Ao*LP0$78AYkIL5CZ1_C6y)nDD?4cjq z54)I7jqJAL>87(w%ShufNQ;d5{CS-5WTX>B-%I~_Q5j~MPL1rg<9^zl7TNG!V_bJ? zWVam;(8lWUMzf(tc6E5W>Fl2KxbQ(PYuoW<)2Wf&cJ#n*J8m-@YGk(^6ST21>@XW@ zWLE~(QMm1pvR=sS{64|_BI=kL10=w&kH%zBScGn4uX=8Q!h1pOe zyShDKI=lA7;FslRm!D&e8JjvxxB~3F1-(@;Aa=Ph! z_ZRKiwP!ZimH8*rsgYfo=g_8g*&T!PXk*u7jm(A` z*OaMFYGk)v>Y2`NP#bA)>)YIP zYGhXrn`v`qROa?(LyeqnI$w;&GO*2O3+-(?o@hEXvfGYZX=B@QyxCAAyY0A*HfKfo zPBR;7klJ>%VNIyJI;#=FmScHR2J zxEuIcu-gaXm}Xwo$Zj84OPhAldet!-YGik9(~!FDCmU#=6WKR0dun9YF0hd{Ru6m$ z8}p?`cI(J?HR|l1#`d$Y9>C+keo^HAeAB6s(@p1G7bk;9f|ZP0@=C@fRwd)~Qps>r z$@PRA2xkd%Rb5`W!mWh!g*ylr2($W}pB}>lt4GJ%u58GC`Y(AcCqRUeyv+a|5 zd*~+`cLcM2kv`dm7`82f`QbKpK1Z58bkj>{V+JM=&;7j4X##caR>>6#Z1}CtO(q{@%ex1*NY(8t! z2F(5kM+i4C9t)jqmh_X0lwaqE$BgrnPaF7I4Ev74-HdOAexmVh;6gHd4n)eY^Es4k zWg9^oF#9@;5*}y#GxT$ee*u@1;j;oMzs~0@viY1%8!-DvTq!)ycmniAWcXQ(lwap( z3EBKCqYZdF?C%m@W&9uLjQ^v}C*Y@z`D*G7Wcc5Rlwaq6Guixap$(Y*yxtMsZk!JN zQ{(F3uZ;OBX0~P0{{f`@I{ydB=AUhi^v`}BNy2Owq+T03&sp?S4=KOSPXn^~$)XLI z{Xv=vvz?my3DDac_XKw%!)Fhq{5qe#$>y^!ZNR*4?=Q@LG1QkrKg;+I@I*3vmLlcX z`79%w&vM#;>)@L60^!-lb)nBC!_PdV{5n5u19pBE(FT6lpYCSiWyW2huO!3IDx~~6 zKdZ@Bp2uhdUIzQ8gx4A~HtH4Q`@mbt@VN~szs~1&viaOW8!-FMd?vidm~l@(7=H`q zMFD*#kn-z%rjX5NKpQao*RY?D<9fz#LeC+?PcBk^ou5`@^TR$sT$Zs*9fi9Yp9dX( z4W7>+CVX%>dwzouJ*<8uA4xts(m9-kUq9leWV7d`w&UZ3`FPjqeS`-IpDkP>Tq-!q*AkD7;emQQ_x>HwkYQ{*Uli!aoWhjq|@-$J2y|3-j8@*-RI{MEDwE{wF&7 zrNZ|KKQ6pZ_zmIrg+CMCC;YoG|Bqb0jfL4i(CL>6&lhIgwX@;*+3_Y}o>!gziSReV zzXFjF>Hxy>9jIydzZX?`P_+;TB!bQU82%j&^zIra->xFL>zDM{`;TMEo6W%8Lneg|*hlB&1 zhg=yL_wKlva0lVB!i))V_KyhvTliz)uY~ss|0H}+m_zSXR}s#v+y?IUBdf> z886}dq~LzZaUJ0-;XL62;j@Jo2`>{~CA>y>gYXvN?ZUf-e-!r9s>;kh5w85zg=-5R zC47urto;-X~LHXUn{&^_(9>PgGF5F)D1mRPKPZ#EWyYtVsa>pEk(DBv6cMCr({G9NM!kdKO6lPny^Z%hR zhaGhK7sB5Pr{mt(*)$REBwQq1Dtw{vKZF+xFD2u@mLK+=;r$41AHAoj*9&EDlkgj4 z`=5PZ^e=_KC7aJU+Wee-8rgKVSu?K{$b#+MF0T&4oynG0Z_$SepFuXCQ^bCT=of&Q z7oVkFPu;ug`LftqHiTz8NLzr@!Y}bM+vtRK2?})yUxB$c$V-j z!cPlt75{ft#JJwU?aPFXdv8}Y|FM1ozF6yJ)c=P8@7!)eGu8|VY2Wg z!V87(6MkO!P2mrPe-W;Y8(^1LOR|-@qv)N%T;Dpl#y^d^ZTBMKslx0l<@{VKde|;$ z{;wB3Y#%h8&nDcmkCUw)-W1*;%(hWy6X3an<1FFh$T*hxIZ^ac!tC4SmYpm19756Q z_lf?5=x+*tD!gBqjT_ESE#Zd3YzK5UCkUS*JPOQh!RPbrFXpzz4B<@((;WgDJbcD?A^g})JIe>Asj8lJ^CK2o^3a0jw&ukONq#fI&L zECbsY&Z2JnWY`90e6HxzWZ9Xv>_b@g3bC0dyin}_DfUZ6zteQa*sr2)`93B#ZwP-Y ze1L5Gd67vKGeo~Y z^vkK6|9=QC626&iK9>tWA^bYow(t9*e%rdj>CP!>qldYWX zMei>9DZ;0T%^9MfE&62PaUq{pdBZd53J}|3LIz zqJJs+Pr~e|>6T3*TfUjX4a6o}^jxy7ODizT#(S*e#HJ_N%65|IgUPn+Il@;8-y-}3 z*~<2&@Q1=*2>&3=MrF5bAlz8EgK&T0GlWZo&lA2x_*&uB!p{nC6n;neGvNcmhsah} zag1%rdS+W*4X|6UqsXx1r;+F_L~kv6XVH%ry`SgsaAa zghvaP373=cR~kSBd@)(Qgv{R?+Vk{R!chh2Itakc=-s zyUDgKsx_?Qn!-84Cy;H~lSDrS%=Kd1`Y^F6Cfhoeh+Zc846>DBk?`GO|FGzfgP9lG z-`9%GYh=r7i|GFm{z`1VBU`>{Xkc?(mu&k+BeJb;3$e)qvkYvnFA$p($ySEGqMt52 zMrkCy~wnAkl|`Sq8?C z6pPI{WGh3N*k33%SBicOn11-&Whr%Ac7@nKB>D@&ZwhZETRne9wleP#eJ_}KF}5VR zNmX9#Q||1K6urLa%|!1c+?9;~b$)t_{cy6Cr%d>Avh4%ci@uC(WxikZhrlc|V^?0H zZuRqy@MpqbkgN7n0$V zpMhZdua9R!XNb)>viYAR_7@BPOZa}_mxSLH-YNVG*=?idRprSLZc29BNc65`tE-bl zKLyNnVf@lCu_-3ox|9je5Sux|*Ne?k;T2@7w>83>g+C%&nLibMk1*dy==@}o&Hfm& ztyeR#X$j_fh4ECPpG+PVZO37vk0hI)QsD~WIl>EsZxwz*_-*0uh5sO18R9Lf^34|R zEPR^qIl`9<-zFgYCkkI7e6#RF!Y>PdB78tN?bxb(8wj@+ z?jt-|c((AZ!jA~QBK)O9}<32 z_!;5#!Y>QIEBt}*C&Hfz?-AZB9P_K{pJS!E?NVKseF2(*<&@Iv9m!b^l1^Y4}oWB#o?Pm2DG z@Ot5wg&F7X{Dg7-=I2wFMSXL`1M}(gcen~it<+k;DU-XZJKNJ2^c(3q&;opV% z&H=ZMVNAH?6^LG2xUTRq!cBz3IB@gRN%Zc*J%#%U7Yd&xTqHa}_#EMB!ZU?05x!jb z8sYiE95>$8Nf>8t>#|bxRl<)6uMvJhnBxIDpRWqPAFBHB*_%7iGgdY|TW9F?48$=J|=S|-tdKgP@`gYOx2=5iO$R_Uq2HHE|2d&{el=-I+8gu|G8vp+%f6NOI^9w0ni_)Osv;Yq^h3C|FoEj&l~ zAHp1C(bdVnggL&V(;pOmMEGgp=Y?MveoOd$;g5uO35R_Otlqv8{RiRSgbxWPr&X0X zO*rgdU_Kj)&T$dlI_3%=C)`!Im+(o#{e{E62A0=Zq8AB|7oIF!E?gmesqhuTVc!JH zYoX{I8_})T65$7h!#)eP?9-x${TEDsN%T#^+l03Z?-JfEd_ef1FyBw%%9$cuSGc}# z6XE8<9M91CX(t@^m9TX=N%UdDeE)@8mSY+^E)hOg_&i~b_vh@xG5svBIik-M{+IBr z!gmUDEJWus?2BPOIWD5ppAvpfc(d>p;cdd(g+CSkLilIl--OeGsxoj~L|2|8gpU%= z6>cTmL73wrIzK&xdkYU09wE$F6SwR*;d6w;{vcL|Gey5pnByoqKUWI>Q}|}#JB05N zUM0-&6`jvD!hAQ1(>Dum5q?iN>{nvt|4Q_*FNx_tiT|IwA_Md4S3-xdBqc&G5^!rJfVd(nRt{zI63a9kNOg^w0) zB-~WEg>b%b*nh|BFzmBq+*fQ)6CNUbrtsOqWy0mc7YSb~e3dZAmUQd5NO-Yu*bm6c zd8g=)3qK{yu_B$%uuqUJ`-bRm3%@V?k??oIKM4OS{D*K78k1bUslxSzj}dMz%yB8* zvfBTsljz-rdkXgzE)*Uj%<(Fn|FeZTW~I}o33Dt;r(Ys`x$rf@^Mw})FBV=Ze5dez z!Vd~_yh>Mwr-U~Nzb^ca@cY6Xi_-boB^>s{vVG$_(b*5n+5ajWNBoV`s|nW-&J@lT zZYG>3%rP#V&jR7FKbMv5B+*Y1*8W_4zm@YdLHHbDj*sbVW(xDYS5Ci7_#eX83*RJs zi!jHvaenR+ep2`u;q}5V3vUzNF1$;4xA1quKL~SNO;?^|;p)P*gzE`65N<8pPPmKk z@xpzC`w5Q_9w|Ilc!Ka0;c3EQe>dAV!tpkZ|0OoJ3NIJFTlfLthlO7hent2V;kSj~ z7yd|im+)@kUxoh=PLh6Yslqjd>j*a!ZYkVWxTA1);hw^Sgog=_6fPE?AbgJS#ln{f zUn4wUc#$y2Cw2SkQsFy=!+wIctsfNqdExcKuL{2*{GsrFgtcGc0nw{TKf83{OyMJi zweMkL(X}7qaiSkD+)J46uyb|NUwEkS2;s@XQ-s4lj8<|@=n3f$m?E4ZTwC~P;YPx(g*i^C z%eRa0@xpzC`w5Q_)^|PgJ%G;VRAKg`bozzDbA;y#UoU*4@Lj_93a=K{K9$di{(|sZ z!tV%wB>ai+Zs9$`2ZcT9lNk2XwEdG~lDTyc`)r!tNc5({Eri<%cM|R^TqrzLc!Y3~ z@L1vL!siQLDtv|TwZhj4-zI#A@JiuT!p{q@7v3Zs_WiWFdPj8a2l}<>-wFRD{Ht() zfH1c$Y6{mCt}mP?+*Y_ixSMcq;l9FW3Wt3~ZM{lFpCo*d@TJ06312I`Q23w1ONH+g zzEAi;VfHh1^|L{Ev+x$-_k=$b-YNXK@HfKygu}k5RwoJe-!u+{YYNvDt}h(+QMF~8 ziQZbcop5L2?!x_r2MLc59w|Ilc!KZ+!WRo`U)O6yUm(0l_*UVi!gmYbC;YJRhS+DftKK;hDl03STCCrSSE_Hwxb(e7kVikJ#$!G0~q9enI$U;a7#<7yd{% z?00PbzZ89+@Q=a=g+1v%n<5+t*A}iT++6rr;r7DE37;T*qVOrgVV`ANm*JwHDU4=+ z&&PR(AKX?}?tAzf598RWVHGQNhN?5ZeFf4i(Q{1a_%^wsw=$jMz2uAD!F0yc6^P!= zbdJ%{L-gLJ&qm&TMK3g+<2eizeW>Xi-(ZC3BTZ*Jd9mo@OlP0{iK3U9&OYX4qL-V_ zzOfae&oZ6Q`)7+j$8`1soh$l0)7dw3f#{1&XMf4XqAxL>eH)jFzQT0&xmzjvD%05) zY_;f*na*c0Yeaw6boRqqEBXf0+1F{K=$lPvzoadqZ#A8Lh_;Eo-E{Vm*&+Ha(|O;p zTl77qvp)qt?%bFVP7y{mR@&4PZXlc`oFkks+(EcNxSMca;X>ho!b63Ng~tg`6fPC6 z5S}GGTX>G}0^vo%i-ng6FB4uNyi$0T@M_`5gx3f^E4)^CgYZV-&B9xRw+e3)-Y&dD zc$e^Q;XT58h4%{|5I!jENi26lI7K)Rt|?qcxSntW;Vj`C;auTX!ui4-gbRfKSDb%u zvH4#y{{zKls4&mz?zkH%Tr50Jc%pEraEZiJmw_{JF0YCDo@tER5^t6VfCW_%o&G3T`D3tna1AN+{%S>QFsCE(|cr-L~rJeREi zziQ0BDI5o$`fTuf#@B)we@>mp6UTuk-wXcI_(k_ko)l{{%kPnEP^D<5ci*#x=m*joH`aL}TvDrx-T^ z4>aa}G2EE%f*5Jcej$ueXBkSs90#5}0X)Tc5|}aS)XxQ9Xj}%KZOpzSR~c7;=NYpf z$qmMrgBKgm1>bIb1DNsZ^uGjrpYh#bj`vReVKC#^$uEGPHGT=a-gql`qwx;#8^&LO z-!bO99T>Y#KfKQQ#JD4vV?I;odr26(PVNlm_|N37;9rcpgEBj8a z!SUW{QwZi5(c}T(hQ`CeO^n&kqlNJ}FvpIj{S+|AdnaE2<~Y*itHF$KCv)8HlZ}^v z8Q)Hw#}nh*$$Xc>nZ~@9D>ml-INrEExYU?^Bc>U1-@MqE<8#k3ZUes7nEU1ejNb+`zMX#F2mfTu_X8X>{us=-ciQX#rx+!#FEI1fD1 zxBxuHxDR-u@j&ntW9}p6#$&)28kc~1P0up355!f*++XGyPX*s#JPW+onEfI64tFlg zedjJ?-a9Zhp8AX6hmALZ`EGaW+_sF3Cv)4rX#5U%lQFmRo5t+Z!1uq?emnR>V{ZRX zjCX*)Fy0AfoILHn0RLe84fq%1AHa;0r_C?mB;3Q0IVO6#aRSq|jM)dGt}(|)Z)ltY zZerX9+`_msn6dHn*%M#B0ET8ESkD_)O#Z;9}$J!Q+i@ z26NnU=EZF?&3Gla!uUS$CC013bBrGXUu(?mw!rvN@J+_thD(f}0xvgy7QE7UE%-rW z_H}s7cnkPx<89!z#yh|-8-E7gY`h!%w(+-M#@lnfe#G}b#=Q4rygl_3kbZ648|gmd zen@{d9*C6j_Ou^{G>&^wGW#N=8jl2L7#D$$FfIYtH!cG=Hl7Y{Zaf2=XM7>Jz466h zj=RphW`p|}Uk+xBJ@qTWgN-?!;Rs{a{n^GhgU1=Of5T+s+rVYU?CZdId-_}fo@M+f znDO@1p8?M`eja?C@dofB<5$497_;BQGUM04cN=s2F!r84KL9^s{5hDh_td#fo;T*0 z_Zy54f*E^Ho9aln7_;sL+YhO z%d)XC{oprww_s@ps@d<9*j;#x0S)Xw3cxuNt>Q$~b(Mxg*jKjk_b=X?!Bm-Nx*f z@PqMCq`w*uN9y4j5dClr{$%5G!L^KMfa@7w1a4wH8{E>Eb&zj-CAh0G`z7=;W_|QG zUJT~D-kC4!hB5Z!+rY)fd}cM?_ysWEYfhVW;AzI}qj0hD>tM#%)8;MkwZ`v&7Z~pV z-(>tbc!}}%;N`~q!7Gh_0WvqF@dZd3hfn)iNdIlj zGBOUI`ZY)ydrxLRfUk{jK)TPE?}Go?n0*3%H@+Qd9I@P7_AW5v?a2>-YZ|k>M;fmI zH!xK};vTMPujn{)a7;gY~G2RI7VZ0U0ID9VqF1XNm8+fqs$KVmhJHTff z?*)%D{sYW7eELZsEi>l33uYQ0fpnHJ`wcJ-pZ0B$UTfSF=>p?^NN+M`xt16YK)T$R zeFat;4@JuOeEJ-Y^f6=h8(@4s^-`p3ji(@e*_iJx*lb*Z^lf9l$AGc=Ty_r9kBzTF zy32ST(yxqfL%P?PW&Fwb9;A%hr=NR~#_)WW%(5_UpUkqtA^IA3K{~*g?}%U@0hXr_>6yly&o%?Un70f zcpuVtjDJGk_9>trzPqE1F=PBY8efdGt1;vKdm1y|pLuZE`A7#DGv5C! z;}u9tj2}VDJ_WRY8tM7Q&mm>6x$zNf z6Ev<1e$cof_%Y*bFv~&zxnSl^ZVhJMTpxUyaYOLc#>ar! zr+{T+9Q}>PjF-Q~xC5AVK^wN!vM$Jc|H&%j6Ty!dpA3G^xF2|f@oC^!jYoi47xXg{ z{I2n6@OI-8@J{1NVAcig%fPG)GGpxz7+(bb!}xM=0$JK12(s(t} z2F8yfWnIwbDWti^>yWlK-hh<#LYr5Rb}@bxX%FMANZF@=HXk76J7UNmAsuYI11al* z`lm?GHvR_bIAg}zPd5G$Dc7I&2avLV0r^*?vyFd8dX+I>kUGye34DVw+t3#q9|gYM zxITD=aYOKZ##vz25%bCgKVf_<_&H<7@4slww)joPCxH1b8!p=u{EqR7V7}Le`bpqV zj2X-Sg>io{>w-3e!K@4NFfiAd%y@sUCz);i?1Mn&yJ!Mq#^YxiuS8nUnD5VRWV{M# zj`2fC`92-`c@k;9@e4>h8Lvm$&6qLxy^Q%zo4&^1A{}7tBi>-Badq&S#`VC(#yQ~e z#*Di!HO>XIZvxA6EV#nB4fqmc#^bZk0&RMMuQfgyyui30_$K2*@Dk$zVD?|&vW&rJ z9g)X^A2gl_e$1Hf+j-iU@%U?vuK>Snya2q}_@Cf^8#4xwy~^b6nHr#(Cg8 zU z_@Bhr?g70C!8gmE1WM}AlyT^ zukb+O5yHj76NSr!8Gqo)JX?6K@B-n*!pnqL3a=IhR{F>7R3+CF&JoTR?k243J5=;y z;Zk8;uQ{UYx-1c0%m0|@YlSxpZxh}nyjNIbep1ku@9LRx500~hH6}-6Z#2e6V`(&I zMq^{j#pi6{dBTf@R|u~bepYy+Fk=^7`F9BK5k4TSV^r2eyS`htfpD&{jz8H$bjBsP zWk(1z{=n&s|8dNiAIFUIam?5r$IFBn!{c5K<(JV$teFx&c_4cqq}vrXUe zT4A=`JAIq*F5$hxYy)=oDQJ&$Tt_&3*E#BopH`w52#4=6H=BW?j})FLTrNCYc%CrZ zbX|E?2(um6>1@Y!yis_o@D5?N-8%aN!ikhBy{2#j;ap+1H9J2&gxRL-bhaZqX4|o2 zwii2Q8?j@y3p-vU%(h^suM%eauhZGa>6mT4j<*Z5o!9AXzjVyDUB`hi+jE_sBg{5j zr*{+XE6jFVXT!Ey$84Wv7BBhM$8pSd8pmv}am+Rv$E$^(72YVkRd|Q+9^nJR2|Rmu{%Z<15Y83u zAlyT^PV930cKym-Z<<$@g(%XCL1?+pC&Fj6hG!z%_q|aDJ|L z3|}7kH$Iu`)^7Ub{kOhc_shen`(BS_Cwaxi`?Cv!>?Hs9cy?j+?4;O7iR{7}*-7y+ zrLpY7jCQ5|z|XS$uMe$7gKFjx-Tffb|B@5AH46N!_W8NBn#a?ESk1Os{;p6C+WB5? zcDr6FxgejEN{W%vNO4m7k;tZDqV3j0K_Yv-@4w4sdo@ga6YE|huX>Q=|C>Vp*e?z8 zs`u;ZZ{bwmo^NeDG;dLEFrwYOj@@glP4e<;bgv#H{8u?QW#7h6w!O7`-GPTQ*Y&8* zX9NE?pH`?_elpjs-Z{Evj~@GXXTCkUR%~?b^`kR?+1L59e&>A@8xh+)U{cO1F%h~HyDyyBR=cyhv0Iaw|IybOOmb7?UsdztUA z4RN&p0@G&gVkhNzjn^DPPUObk+|fa1_l()?Zp_awKXPofiGzyUa9xgkBsn{|bG0!g z*(vxf%57BKDa(I|E{@Dh%579I+J7LN=#>a!1wFHRW%>7Ux_glIeU`tHIDGv#*^QI@ zyUBAGcF*YV&mOoxuZDjo1r%{P)7;Vi9ZV-K#0Cxe`^5wI`?pj0CYIfx+N!tn0{>P{ z&b@46&z=37P0pQrUW@s~xofjWWd`xQ>i$1DGq1+ojq1$GemU;Jd?A%t>#y?g`+cl& z?e&c_-)>xMXXBa&_GPXcXnRNIy1l7wN5xj{?3J0heQ0hhXx}-rT~f2{pBD65awl%a zPvU*R_}b|OSNi+u?<5?61y@2$X`8vO=Ku9BhJ9=8`)^^}Zp-{~UFyC~pZxN0=bruA zeiPf=eO9mJab87F?o?&bPW8wi6>WjT+l4z-weuhK^Wxm6`~si*l>adc_G0f!1-1N#>Ep;75}0Tl?Pbrd$A0B=zgoq4YrAD}#|rnc;WvDfTPxbfx@TY? zxQ7PVp~5{ax3Pa$I9(l!MElxD;jXkC`^GZPDexm*y31TU?jld~NpGnL+Km z8ZUi(D6jh64J-Gfn`rCyqrZEG!G5)=acbN5YhimVk8R7`l9%QG92Lj^iD~0~hq?#R zKGk;bp}YX6u1|2;H|2X(SK+?difKdTrgkiTt%%Qx>3K5@^V zTGb!3V)F+SEh0-m?bt`U6#qsU;IDjUxKjB{dLI4 z|Ba>PlYRGz`N<4Mj`OW0v6j4Ei1{h6;c_JwOX5?USghJo%ugheCQT{#Vu@<^(j+D6 zIohXG8;aUVO2m)H{bjr{-yRlABwfM95{XpIilrppqj$z2$8+gD&Mqx+zT?!3^XX$e zuNRRg(|Fr~#JyN9v6Yy-2|v|J@Z+TosJ;Y0$5%-O@6uo*7D(zm4VZogRv?kwswe6+NJC+h^D=?3 z`HmAkaxsz4&J02F&liEKPb%}04^Z`j$B|9)FXTk^3FmvszYQaBJs0XvhX3?O;|Uv`u-h}D+}_)t9M%xW-Csa{$##Y-7Q zP77XU#>EF|9eEWbdnuD?Q=@vx7%$~qx~Ylk-9;CPk#LvJfc)O6|0u*_ zVZN#J*)7ovSeK~_Se1#ea#9zPQ&>5vH-t4Dbb?*#O9>Xx3iaC zy`Vnar{2$e8w6=^koq8Z<*a~x8B-s62+X@x@M=Ek&JAvclDcLWlvdTxEuZ0~KEvYY z2iMd7Ij&Z_pg;KqZn5^^>ZY!v-Z|iNz0?<9g5IV2lo{uGsV`CQ7JSFDeSnJwuZI_3 z&qADgIwn#QqwrgkdjiW{jrCnET={rg8qJ&)8eQ&;Zlw|DN0yv~4^~CIA9KEh=aiJh zBhH=~R@r-Tb~{MD{H@UFJ!izVj*LS0EU*{vp9IURJ_6QaouwpxgH<}70wApYEY?}T z$D(PYn70?a0>2R_0=!`wOfM2---P>wBNGY5q1RPQ`IM^%wRB! zoIZ;68VtRqvK+&t9K)p?r%O3Tgyrz!JFpVL8Kbald;**WV^#xG5_}_0GP{07)wm0} zSL=lzFFqV%Fm@C0h(vJCkC-~Ld~BH)l!l1AXfHVTH>hyJ@}?wMu5|YHX%LJb!&38P z7fj?f^1`!AFqs<$+n!r=%DY@B*uk=t-31PUo%}tIg+X1Vf~Q@LMe76)(0+OexSm&s z-Q5$x%p2i5gWaCJjIcp2BLmwimcfVbi41nDPRZbLkm{vhj2!9&^Y^nb^O(bRw_z#N z1%Iw5$AWxrjRoXHP=i}zAvrnV|9o)6N^nYma0f5AksJigX|sr2(@TFE3)cz$)elMd z9}p}idO-{1AKXk%1ozR=Ep!_F9|X6O)58CWU%{jmQ}rE+B7e?j|W+Hz?bF(_tQ^Kz>O8GBIgFZx$FZh zcdLLKH+Ya6DL?pt_3%)8`0pM3fw{qI?j3!xcEgZQ%#S^TEflYy*N2Otq@RNYCI*kP zQ%~?cxBX*8FIY~ek9Pql0*)FGJi*Kc202{xN%Ejz9()CBCV&SA?By6d#R?i4^rWAs z$s?kQer7xTj0~=a516PB>b!(4ZGr(u=6t7LiWA7Co^f|v+q*9(bFb?nSH&fW#vG=(d4L3$i#0;1Nhwy z+j{Hyw5GQecEmsJdGjPIG4Y;p(Zw(&Xp*l>2vWZ*@0 zuv1{NsXruk9)1V=ZM|lf*^DX?7tqZ|L7fkCFLxDw2H@L-BUt#yhdwWjd_D*Hb{Mhm zO;dlUpAR2NSY3Q_-oOvX@O(O)H!PeNyM&p>F2?Nbn7tLV*_Fn$7T-eqIGi2=ORw3l znEnzr&NUXKDQ0m4hS#A9{+YIX9s7vChSw|ZPRL*KK@F^WxFy$cLo$S=Rk#DJ;o){W zC&TJqa~tOFz+_(73i&j54;tr%Tm2bsbUZ`w@_1zU&+^FVfyvg`2cF|Da5g8fNyCY& zX?PM1!$}V3(uV!S{pVTO_`=nf=A8r0e}Ov(13&WW(|9d+fX$d}Jr*}1{yNT$qZ;#m z;SRf=lV@SF^(4=KkrNkjf~N?71J{{126+$D^lM&(F#w|R7g#C(3U2`%=)ROE zYg9SRDZ5{|?G<0xBbhr{zL&EAvpK>kds=Wun-y-!OOeGA%o&3@+rl}6qbwePSPqd7 z^qcy_QWg$f6iYjF=xBHjcibVdOG5|P6>|8pRqjdkLfgTZ<28HEoFe!5Lf#VPtU^Vx zeEmYJXjhf;WnzKFm_4e>Nlru4_@tk!(H1*3B$jJQDE(Erq7`GgIFJs@wc1?Hg7zyk zp1C%K+7KQT;o;CMz&4~Yr(x*T<**EXj{iLj^TS;)Cp;;)<{qcb?MoD<<;bS77WowTFF=n5VtZ7?Z^(Rnqi4x>4o&nvI2^HI`& zVO@%_;&K=<9v+7ghlU9cqjdltM$ba8JdEBj@hvCvF!~50chkM0XuIioo;!@b#B3f$ zX~^%-htYn_;bC-4IL8j7KOo)i0RW6QEM zj1jLqsH;lD;ZAta+)(8tXNGBaMH&y9qu`gNVDx)cp;?MtD+Ob_ZO_l){R($-#=*nd zZ_61to|+9cV>9$RJ&Dr6U=H-&*arTR>k!J@fPL$sa+hM)_J-kU{EYC=`yZIjxeewo zqBJMNn66lkyXYF)S)#3m_8BzBPe-N3X$6}8Aw~anu0Y3~#8Q;{Hz09Oz5FGY;zG7T zcm$XFJcMtrEYy^+Q0(X5kOP(YQ^P_trXwpA)BLyRpy>L)`!foY?d8ah1qVq zRFx%VqL-5c3$76(k=GbFi0F2(2D8Mi-l1vooL_2aP9Np3d->o`tg5 zZ2W&<{$R}aj^qD?KR;Yy_Xy8l@)cY);JFiXcml(U{2|B^$zW#1A*%ePVOH*Gpuc1o>LAK$X_(c_%B-SkzGJVT z9<$WAdxHqWIzeN?-L zMl41(K8*9aJcSu4*YPaK6F^ih8hhQ|!B1+Y&p*BB5l|OAvhdRWL0caCfB8s4&YL{& zvErNICT%_!;;~n?kk^&h`e|2kUkz2S>tq}NX|s9gMMAfmkYV8Y2dRWV+!RPWts<`W;%=0Sl!_h20eF^K;>&{2lX_xXJNOw=}DB0fe zvKM7zN2ujDtx-EYUZZ}>u)4K;4rU$8!PBVYA>jhc>X=N4^5A5RgkNQv zkqgrXxTvbhoch(~;jv+cz8@*I8zY-GShh~$PZ=FiS6m%gl?^T@TEmceHa{vW zEEArHxkBKK)SX$y5`C?Ztb6Nl&kV?VMf{Ev0tgfMWp9kbGeV@+J=?V^xDgPFII11 zFBms-GjOQ`^k{?Yq$m^o7e=$0TgytXsEB^G|FnL`R@DgCua&JIHZLdhs;Y>St!@2m zZX2140_9gNizcboC{C2qO;Js@OY+)=PTO}dK!X5_+_9mVj!5TA7dus!_V8_SoX$CH zJqptOVJKnesv@0m6!)GkmCJZu~AH%?a;rl z9Y)*rq3zjBob9l`upLfYXE40dpbgZ&yF#>OHZd=MDbttnMMW@qJ;WhQcx%k482fOc zE%VxNPO`xTwa0|Fnb_Oh z+!!Y52kTu~->xj&GAs<8lAl6aD_s0^mo;VQ>VGZ9#h=F)wajFFh=ZBD8RGD5NIs9$ zzvK5dnEsu7SzKmFTc(@v^}V4?Hsf2(o9<=J^s<+7f+b1zW^NFR( z!w~0zXAru0GjuV837exRGo=qbu~c~&Djo{y;pfo9P$uS~P&`zgSU8$4E>BR%QD-6< z8KGNkHW?)2(h%#&gcdk;R2f!Q2Iqbn8djbhIJrBN1~cK!wwyYcFN@6Mi^Zh_G9Ttm z3YQx0veCo!e=WwvtA~pXVZ!ltQD!EMLLA12fML%kZ}8voyU&W|D&l|T%i=OamXT>a zd~xVA;Uk*xG%*9G2~Myi$=;0cG{NG8ov*y1e^nfAkw#&K4Q4_UY#>*dQY<_bU#uY$ z&ehWdpV4s8Rm^5$vnx*%b720j(BWVvyv4^hb-vkyDUvF)1&}sZ5F^)fJTY-5+xe)r*_+EoAn-tyWcJTf9K7cQqSKTKIz>6^E%WDtj zTZ%991`&>96hB?Nt@Br#?6>CWojPco(tM_>eQxu>eSNdZ7Rx3rc585S6b0Fzf)dG>G=N^ zCQTVzI%8bP-|{wn+&OLjPwf9I_tHsY+DsTb_P;v)cK=7dS(eiCCzZK{Pyu5n z{_VB+(~_L{|Gs1!ZVOMt&Bt;RO)npZkgnDfxkrvID!-ttWI86W2VlmylJQ{dq+`b- z#a=L}tZ4MOanmq?&5uXI5tJdCBBCiJ<&z8<&mNgsfO}+wUB!xkxtu7UUNrpz%My3} zu`KL4@!Mj4+)Krt6i-F`m>)ks6(N6M{`%qX%!+r|TP!s#^oa*2@#NI>kRzq)*V#n5*Md#t)3>~8giEoUzIm$_ax#A7sY&=vV5B-f z{_Q2H!;!?oj4ufn_QEXVc#i4EUD4sli{UZDrJH$JF0L$ToXUcIUfGTQfr5$U`0iGEHweX#JokN=5JK$SXeKy zuu3EUQ6)#q4h!ezg}L8xNoqYT=7rlJtTt3(CJ`QkF{>fk{GCnXHZ*h5O*1I0t+wG7xZh9B#cVI!qoeJb z2)B1EoE;q_G21_){ftFVOKl%6MJ3wXA{)m%N}M-6ETfg@LFn7DKyTB+jT4;?(rv%w zE|DCr_Jv_dlEYG^+up{x)xx*lXBHMT2|xuXHltv;lpbdV1uDCvk6D$=I1i6Q`DrD;i%q zdV*Ivb?oTUqOz&eP`WA8Cry}AGA@guyi-b0Hk`?e%DvJ_Q_h(>qnzc5a-T8|vvER4 zLCTBpUod(`DQrhiC@m@CUs2Hn&h%!q?SzHh{|duMSQApd-hB#tp5dK4cJ%b}B8Cx` zp#ZF<$aj=u(fBEqOY|AgyOK{VJZ(rHZ_uOVw7iYA@OrD^=^!R;z7owWl|*wpEW>s@6-@mQw4b zTC3KowbuMT?=@@f{SfVG&+qp-e|*2M-@G!J_dM%a&swu)&CFVBX0K;%lIWWDj*{XqZgHjD#J6=F-Oa6S1X3%b?)GkHmFlPy-_d-Qj(2ThZvNuP*C1)BzMZzIWm5}T zpn^ww-Q4M}369Vuzj)E21yQFmMlkiXE9#))=5nGP{Wz{=O?Q*3Z`*2JPf^#Q_50R0 zT~px{wQg+fTF<$o0&i?NBYzfV%wMLGp5&S@O|4z4JC$c@WG*FQtZnV`$wh10H*M_Z zip`l=GH3bHIWuO@UJ|WY-`trL>W1buO{ccDsV+nv?n>(DZ0~N5RK3@_xN7Nk*G-Pr zHg`AY>@1kSblIHa@}=I?(cIbH+N|rMt4sfyx?48nubyM)%vn5R!Tc3-B1|<<-YTl5 zq_T(m$kJsqRK3H=e_w%7_ck_f&2h}yrGIF>tJBHN)ZQ7E&03txh%=R|6d`-uaa+2h^=eeA4sYtpskgQ2npvy5sEWYTOr9f`&3<5za@7!|6mq1a}BK5EzjM*JGg5%HLvMzJ-sD4 zi=05G?a!ir2yJYSbU)jm3cv$^`>#sK7kaoMcItM*m6#mr`W9VnNr5K!%YE~ZJW+J? zR0*ze4#HeP{<2oha5w0=_UYzsx8cy-sad16^+=$aCb!}I(})_t9pBx3T-NwpjcViW z^7%^r{u^b7yYh5PNou>hcG{ZH;&OFQLSO89B#B(1IFq@Xt-I2@TQ{`mu11}3x5H4o zm+C>aY*Fr1&swzj#K_$#-L2czt~pEfuwF??tJ;yq>eld3b&vJj{V|k9s0g6~M)?BG zpZ!E>L%Ytne`Ilk&)|~}5 zx-I{h%N3OG3hMN}uTCdVmPPqC3ay?jZPARG^QSRaK1)_>i6S!4Ql;)MLo*D9G_qCKmsg|=hE!>r3}A)P zBMG!*wZ;l$yFx1iJf~|tQ){KxSF{fI%%BU4+Kst1iOWDtRx;x9Vn)fixSPcKbNaj- z!5-_?;&GmN+rWZNILP^>4hwQPtChI!cV=D=>kYV*4-gXt{p3|aBIn(aUYI%^28&qG z31t;mB?CyKB_scfq{9}S89r5V*el zbLld8#zNdscjBsKKy8X-WK>)GHSBLmfk(fw#jYL;oO+xP*K%#5qYaj`0*R z;lyREvs_#DsiQ2&Lw&_&7(7IW!8{gpV2TKxFtCVD80bSMs_8mwLwECPZM!>@?fO8i zo$VWHYueOO?o?Z*#@%>pR(EwpHJ$D35T&lBPP;8_%{7U3H=U0}u(oCOrgiE9@c^(A z*HEuXLYr5w)}4HxVA}jvy}7e_Ql4)vAg(nB>jZ?Ezr{7J1= z@0F>^{f{^-gt6|`YO)iRPxGHqO3s1~%Ntq)vp-LIjeuW5*q^m;kE8Ko-Df4^IA{}u z`~^Xxexg zn$`NE)|B?)YME*D``YA|0(Zsdc4f~u-n^*5-C1lnS5|&0aH-jSN;$t2xSDDA^)01Y zG}dSKI39C@QAmON5kX$1z||1De?aa&iw|Q&`w<@3qgztl>o|_Acuc{`p?}H}~4->*TOt|NGhxZ6@qJ)GPcq z+7Im|!e8wb9(rjTclDYlRP2Xq4)AeZ?y~~dyF+$`9lk*+# ze?D&MJ9KL`Y-5I&-Z#qofn#U6w0%F+juRWZwsY$`*&!_2XY|6V<-5JThZT~7bDiH1 z!H(^OZYiUwAv{UW4X1#N3x*&w_CS#9o+l}oK}b7T+iN5`*vSpC_8x4F9@Q-`?wi!8 z-LRhLEDylr5~j@`<{0ZROy42swCS3PM_w(!PxKWiQKGt=L2c7khb^m!GR`iPoV1aW6*(2mPD9oG(+kzr-{mwA`r` z`^ey8FCQ$9_4zN$y;{*h1{ZrdsxgfREstqM2N_)K<-hZC#vz_JOqGi1q-dc{L|kNW zv6u6eC340d^tHER#wR{y_)5==NtA1iX@F?C(aVv+#a@29movt|*N@m|+~OI}j8(XK z*+(UIN__o91{ZtzFzv^l`TEfvyJT?C8G(*JzkChpj!`l=oOgbsgPiN2$}``s)_Fc$ z+et<~%P>CKiHrU+!yhu7B@fx;SXO&EGPu~w*BkvYM!((5k-aV^DSPE z3=U;pjZQ_92R_jyE;6{-%P;qG&Tp;OxH8fIyq6<`i@kgjI-?Vv|L{7<;9@VQUl;1< zZC(c%9O~y(bSe`&cX}OUa7e2W9dGkquY(K@Y4Lq5$Hkb|Z1jEof85KF!6Dsw=t!UC z4X=X?E~b2B=Up%7{<*-|)Ta_IEo5-8$rq~Rf%{~GXU4#08TrwM2}6ICwv4C6W0L%= z@N#5uv6u5*>|io;UJ-@7Nht^O}_{tM~WN@e_e7}jD@hv_% zgc&od_RKh0w{*gFx7N#%!Qr}dbKd)FlTQw@gA5Kjo3Z1sO+G*dJcpwG`% zgZ{Gve%dbYqUn6wS&_M==`n(+-pH`vQK?aAkcAzshNo$bTK?aAk_$U?o3$(ofeV=Zn zmm`Biy3@U!YjCz_+6*_DxW{=pGC0K5RBkRU##y_y##Kq)_;{5(AcKp&{7iJlCpy=9 z9b|B^mv2Vr;6#V{3b2C=F81=R==kU6on8kS9G<67pfe${^Pbm11{ZrdpTT0EcFxo2 z`}V*l`7#zcGB_N|v*^?$d6?vNkio@X{sKA^6P>wU2N_)K z_K+FK7HY_5+N3q)L8}!Np$wS#dlmvBL+e=pciOy_`^{LsIp1?Id`x zm^Bu&xVDhuu+WYfB+hEfr4^V{4v*Hh0ao0p+Oh^ajj*>fTa5l<-RI{UUhH|P&kuDb=x;WBzF}8qy#8m5{L6-KHtgzy*MHc^-Po&_|H;VzVYpCb81gg7@PURY z^PqE>;hBb++$`vHh}%yA1!_@PmdQG0c=vA+Gz0yDyX1 zjQk&l^@(6kzryeY!zUYVHB8$+q;;<0s}0{^_;$lTFihJx*m>0O9>XsiPU{{K^vey8 zFkEH0(J&L?g}9xD`RRR-|J?9vhTk>ZPdE6WKgjSX!-p7NWcb5|*BS0Iyv6V(hOaVw zz2V0UGb2dI8||6E2OFMjn6Zwav&?XlVb^Bxb!nTCUupPi!?a0)&956~GSMKXy%E^` zGRNEhiILxD_!ovBGrZUED~8`OOj{+SMVllr?Tx^+O9D?eywvb1hCgEXbi?NvzRWQ9 z?qL5$!w(qdhblp*%rLV?1o=3_^@fi!e2n20hSwNohT33rli`mWKG*O?hA%bj=05Z1 zZikWIV)!n@_ZZ%7_-Vs082+o_xG&SZy1h>^6B<9Txxit;TeYK!MaXZ7KmvJWyPzJ(+JYC&ggd<`BuZ9 zFglkT`R9y$hmn8P$eo`bpVm$z|1YDz+sL0X@;yfWXV@RhU&I^>ZS!}HPN~{=L1%y% zomJ8~0J*Qv)kbHI;SU>bG2AM~&MmUD5xKXs)#!X4)_s#@yODq2@GlJi)^MT9CfFPZ z`(qp;CSCd_halI=;{5jbJRD)<(_t^4Z{)`r`AQ={*~r%!x%2Jg?VN7p=NopueYDT= zIpkjdTBCD=k$>Cp4~@>MyJ{E>4q;c{58Y(7=F@lAN4sxy89bG#PBhOPceL&;cEyN&z-Bmbq5 zKV{@E82+o_cZ_~o`3?EWz&`(jjJ(qDK}M&}$d59-(C`wYf0B_m8+oVU%|_>3*q_r+ zh$%zHZZ9+X*BYIh4CB*2#C_QCYle&UiAK=L8a~1>zTbn+D#Ke0f5tF=>Vy7H!;c#N zli~MZ<%y-wzKWgMp!akqRh_TQ6*yoJ?+eW8sP(Ggrz&>t` z;hBc<)gE+O4WDj!E9{T=5+nb#nEWsdHe7Fbvf-l)yKzNtXTFiUF-9*x$;ek3UT2t@-$S1HmL@RYLj*qC z@VSOBHoVR7mknQM_-4bm8vc%9W|<1v*Ei8yYW~bm-)+seK$3mmp@_TPaA&L@C%0jZ1^vRnGikL z?`OEb;X#In8y;nNoZ*8F*BL&{@KnQYOxPb6-#LW*9BbH3C+2nBZ-P9pGddqN{Bgru z3}0mU62qS{e3jvA4PS5gYlgpJ`1^)`Y?$vY!g2k=@MDI5ZTOFdUorew!+$f(6j8x` ziD5S$?#pVZk@KBK(060wUZ>v3`EDcV%r$(B;o}W2H++)eRfd_|I@sK3m+lKK-7SiRLjlg`H5%>YaZfxI|)vt~GcZUC9_$|YKH=I(N zJJ@&c2)xZwBOhSc&7S6UMj81y!|t7e*O_GG4Th&1o@IEsVfULgZ)cT}uQhzS;g1VL zDcK15aqlm@%`zi*?=rl6e*MJl#H}$r+3*pDXBwVsc%k9r4X-qOl4195 z$me05k#98IY4|+D7aG3I@Rf$IGkl}rZy5fT;r}%JBf~#4e81se8vd2xy@sDN{JP;c z4gbTid*9^CWB~7LJnv_CgyF1V{7wY@Lk%Bc_$b5pp$Pg*44-KDWWyT_pJw<>!TtLku5a*u7KpX^k~<+#3Y@4Th&1o@E&K2SFcKl7UwlUTfIBck}6f%*f9* z{0YPOJP0CELR<}{xUrzDw!@5kgqQPPhOnSN#>*KquQGDR z9~e_&{Mn8_O!9KZ7#ocKR4-?&uhGb7dpTob^Nf6fmosL?67r)aOpa9@a?CJR(CK|# zL7p`_99NL{&VP{i&VP_Mnz-aY$b08M$QK)(WrkN8wqq}=jC`%(^@iIFFEstBm15cf zS%uTbgeQpk4Kh4Y{1MOf;ttP;iBI>;ac}m_7}9y3r-?82+$g@x^DOaaJy1u_nEolu zcn{z7!`F!EpTge|pXQn0QqfmM&N$5{JoDQY`lrYr7GL4{DKY(1#`IN@r^LHF7m0uFd9e6l&%CdE(lft#dDips;y-&nK}??% zn|!C%<9WRpZ<)wHDlYcSH)~9ujQmV7{Zsf8;*p*iUm5NBQ{wTSKO>&#dAs;9&$o(? z^o$F$8J_vA&C#BzvkN`{O1#wbGvX6H|4xi|Yx2XGN{i>`#2@ucT|Uk8AH}@KLjP4U zzd?ZC71M`>d&K+(0p`0oeun^4mp|v3y1d=ks>c)nTuDbI{6eAe@w;xBsMCEnrr z9x;7e>^vmC#q)0Qw>&>1zRU9-@sB+JUQ9oixG#(E_l#q*-JahQ)6YeRv4rrgf0=l% zmot9AxA^E}wdLD9xJuhMJXdSWcY4StYRkvXaGjVwFMO!D#PeZZ7x|ImVP4L8;9EZA zM~nFlCcHq*cYW|OajoYMi4XV8IidfH&IRIGo-Y;8_snlK7J25I$K{?m5A=VDdyTl+ zGrtq1|BL)~@dnR)=h)?$cF|d$>G#tYM*ltWCp=RImw4u#<`tg#EyY!yM`%mGn7AA( zQ+mVIT5tBu?@;L%BR@jxcRceu)bD#fQQKXfS84lm&-^a+LC>_=9`Vd?Bj_(<^CGRk z_54X~|KNF>wl8_6UH6)2eltPenYdrq`VY@c0FECinehy5VIWX7~()wD0>S}8z zPnx8?Np*)!cDk#Iw#->DH<>SA6^1$^Z$&D;+;V2MP|wauPEr+(a=&Ww!R1LCnPXa| z^}kyN?%MOWy4POsd2vQ{>Q4nF>1qA%YtEeZZ>XeB}J^PDqVQJyUg3 z-LHBMo^a5i1sBSENoxE_Ra1Zc@RL&;rdCxSbZC*XS>H#}lJQdu>q=7hRy;A_g?Qku zavdw@>EBs&{7(*eCRH-?zKZds4;D-)C@IL)y%@)@yK*dvUt_y4wQXtfXLJfi$1bN&n!ebXr+SI{rOeSZ8ypXT+{o=cO`r zr_N6Gd8>y5Ne&@*zLeVgmVvu=-}jX#uXyp?znzx(=08#o7Ce*wQ=cJsM75){^>Uo& zYTA%%hOBsHzdw~$9eCw|eSWqmYUqFJtW@90`h9cRyySr^fl@k@Ze87nlUFhN^*%K#@yC6M(`h`=Yszp<#Pid;38C8us zbzpjY|DPQmomzS3`2H1-^r))1D)Y$!U#N&5;b_NiX_#0wy>rAAo%-`C;wvjsXM8I@ zJ5|+GcOSLE?R0d!F>g^r(}a>ECY9{Bu-{p+i+&H$&y0u9?5La3*meHJ1Fo+4?m?;+ zk5n~%ta5x))%1^bo;Cev!}8gg(0^LVPxtoxOy9noI%syo^al>DPeoJO8=B@V8ouz_S8e28Jp=o&KjGKGLPe1xII^|QE8YUios`mNQj~+N+e*gIs=a1^E zI#mCY_ud?R?d*_tpQm~Xzo~lol_#!v z;oP@R8@Q`hH8EKh%}>Uf{BCZebDycZuOfa28#CVQsrzeB_U>%_7P~vEv-LZA;=jUm zul2-l08}1dKX}gfXwh6ro0&|6+ZRi%)~mGAPm0R2JQku)_epbVFH5J1wJo(ZzO;aL z1q*%u$F(N<yu8U z`xFv8oqo!Nrs-#<@hX>o)JNkN;fnnQHgVw|1@%o|C*^(&LrS3HM4Y86D`tMuvC#rU^|mN|%{-xf6U||BHVk!EJ&P43;=T zBz-=vDP$Dj_RP)ewaL&U&wL#-QHHnC38&?B6egdAMcwUPo-;+vYoExATsdTJb>=h7 zf|I$GzHxcx9$CxWO5DL2Mo%)gl8<4T`<(m}`adFb4EAs3*t40Bsqizm!S~TMyHTH4)OEVYV~RR8iB#rc z#0xSzIl@Os>A1{I#C(jHi!-z5H{bX!feZY68U@mq>4k(0bUQbd&cMLn zm?FES^edVKwuxuO=fLUAUg^Yh;lfN-|Kp?Kl8oyJ%_C~LoO(z; zANke3BjF7o(<7KsNjsdan;7ye**)QI8} zDTTpu_z`~?RmE;oO8ecd%%onzV8M{dWUL##m=1hmtvhe68*76)q{C?(EGA%$!)o8jfj`UwIkxCsV%}KslseDoQgnj zT@oy3^11MWBHi1E^X#}!3dcHy5OuRGU#gI271H8EHanx|DC7$Y`MW}RQ!aCT3TQHr zB7rxE`I*$UA&|DW4;=YT1&&uBIi2L9uF8i-2Y#JWe3wGPB8`xE`@%x~#K#rVyOhy3 zt)pBSy-N|@#jY#pcPZ#+wPq=y_c%f5W?lL9V6#g}Rg9GUE$y(x{o;{rGBU^IXn9m#3 ztXwjbM>?5KO(=aLjPc3TC4ugA)kwx!J|>antskKPPStuBkW{Q(=tvHNDqu4d4LgD> zw${~h&MPgwc>5k1NNRbltK}D~5RzJ6>uNdgS6r>GceR?}k$f*o>C1er_Sh=0$xLmVXW`Vf`b^aJm^gQ8*{$? z-H(W|ys6V=y&Dc^reeZ2%^p1u)6yPX|-m z#w$y-UgB$qpDm=a-KkVY#IC|6r}B0MaJ;{C0ZVmyIiXur5_qP(NKx2N>H}jW+a-C+ z=_c{VdMzBcd(DxI*ZVTe+lvm_kCIy#hZc0a{fmlofV-kv-TC;C@?71j$owd9_?dzq z3)-CJWd%ix=92)`=>if^(1k8&X{xZthm5>bA@3-}UE$pCbUyy5e}yZ)D&2mx?rIk3 zU(xqkB&Ft;$Y4~moqtE^Uo??7Cq>_*Bu1jzd-N|eJ*M_2 zVjjm)?HII=imA$pm{vnnn^p3e#+b8_h~3lpKNJ+zEhfrZSB*cC3wOjlro<`rO?N1$ zzK*v;nUkF^r^(rhYKG_>_4_1>oT(BX2T|<|l3W^7tVxpY(QxP##7DTIubUyg%ra+< zl18jh62I;1KF!^}tb zsgEZ*wKX7=G{=4OA{eMZTLfL#x*Pa~oviY{w zeY1t`i%xeb8@^xAxHFreo6i=y?uR%rYSj~^79n2WSFDBGJ$`X&kglYD=m(QAplQtOmn7B&y=`~E}!U=u{A`((U0b2<>? z0GU?fW*5AK&6QdUqV6rZ3PY>W%~KRDVM9+zme}w$N3SX&g+FVRKXx{6J6ytMnTvK3 zn-DEuJLrZNIfW%``a4{@+NH+VbY66Fu((PZZBA^#pX_jOW4%AXeY4=(e_Ou z(Ot%7lG8nzP0-C>>LiiqE@!h-t1eJBBc)GvmR}3ex>5j}U}Smj^j|OafA^Ts{dY4* z`_cWpCR)N~ht_?n9UWZvdMsMP=2fk6w2}=Ug6aOmhVQW?Wy&Z%LlI(!R=AK4P-sj` zmyMenDq6{gabQUcwc)EHVW{Eg%@fq(;61+@<_ri4+-pYJHRg28+NIJ*!_Hx6&JNft%sDG zZT$bWbMW`M(Ehg_VZYC@_xl9@cen`;N8#q-ZDM_<_B zKNv5R5GWhBazKtoA6hPvSnvza53o`J| z*r_JRZ4*nparbdY{GaDI$K~|UaG9Lg<6I^-(oPbbH|Imcp^>BDLOeNG;wF-iYg=^a zCnqJzM538^pH3W!_jQGqc<;8gEzu8gb7|?s@7B1zs}JAWq8C4uP?8E<;EEvS{ELVD zB&9{J`nrno&(bQ)P%V>6(#M_R;3XS3?Mbys;s)l}gJbNZ43l%1)Fa8{5YFz?UlB5bHUg|?3CZ{C1 zG<9vbiPvKHd5nCNu4$1wU7VA2=*^k&hn@HZZf|SjO_lC8UKKZ%iBDi;&NYYeV!dqs z!Z}SR;MR8^pO&b4hm`U$D+|WKb>gYIQ+~0VH*Rd|Y+bj$yQyXEx|ZmpEiH;A2djw- zP?>P9P8BTbY*R%88BDc!HRi*RgOisF5@Vve8gM2tAg(8Q= z-OhH04nIl6`3jXsV7>Ol1l~&6;?T2Yt@n1lFmV9Pq2OD5(?;Chu8kJVSh}of#;jxi znUCgN!8lhh$*EATak4%CxTB*s`9scoSnlkW>+)#rCg(p^Zkb!#BYz5AUQcc9lpEdE zXX#~y^Dmm@!1?P=PKzroe3zfmR_C0Zp3zqCjzrHJPKWi_dCq>h3eb`J9n&l8NaDZR}xu{KEOHd-1*13 z)7?}T<*+_ldg5_Sa*w+#xqe#LwyBbM|J_ZzMDaeboul0R8BBcE>Tq&yag*#M*M=?# zoI1-nHl^ZxvcKQUtvhLJR!1M??bcT!{Lgxy)U9$}oVd4j*SQMl^tRkJoLraWc4KGv zneLF5%vv!!g!}rJoSpw&*R(XV?$tV2>m6#@RcU*s8g?VJZB$d6Eem=~bI*3MR;ff= zwX$e<)$wF)E46-CD+_X1Gh8`2O?(#Q_i80gY|`vMRx36SQXbf%GhVEArHflF9_g9E z7Yz+NIpfYjhoKA7XXQ&3-nzmUiS_4fUM$dC1t(`rW1#07#C+w3K3xzN@({|zC@F=K|h=W^y&VLk&Iwo zjSya`b*Evvq%4HNL1(v-!v`w7QY$~FA_zTt&lO(ITV59Au*O84{um>N>%4rqIFvIl z0a3#~UDImMSBOLT>_9;a_Tg~sH;co0`L>u-fDV1=aISZXDF^I7D<0~Z4 z672E8N?^iPO-%+@xlvLngS|GfiSB%tm2uVjC4{ZhzO}bfFDlpTs>B`_XRvpsIK&Y~ zdvzCmiYvk|A?ym{#1Tdp%ic=BFCpw}+PC(qH8A*uWZ2{37VOh+2ECsil-$H5c1zIP zt34%?Tb`F*LvAmh_ctUXPFO}&B@KhHAHx1Dfyqwvt}5zMi5~V2@L|}a%ypm7EgwBZ^)nceG$313Eu+PHYVDAKhaj)mNUK~c z43D|t@PoCb4qWB; z57#z~(V}mc{~P?>&N2tYd0gCUpZjQ72wxp`v}OOJz4p6%?VsIi|Ds;|SM=KF{uCDM z-xzkZW&ieG`#;cr7%RuW>(6_I|DxAE_nfd`@71uQE&EBoL48ou)k@HHe@u@jLEpnn zc9Pyk;{Vl;0pxwW()Xde!ZtUM;f%Uo5d#cO@Je3!OwdA?WMG0Gcu=;+YFfgg~3 zv*+F73p{^H+djJP(czfNJulXFsArD*r=EHD^q^-N+I)XZTz*R)e6Z3$uFyVmc)Vvi zA}4s}cW>7i9lq&8pSNXC7@fC`&M<|c!)wG=&$G2{^US%rz%%ENdtC5II!{boWN`3F zy4cGpbDlFn|5PtW1_%8PFW;)|2(7_4+!7WN`4`$8(mr)QvX`KPnD>5_zYF4l+3S zKpf`fbf)V()A8lg3G`t;gn+4cd|3d~vF3ggXZ24D^I0HA1{Y_Ms{QKabhyv(Oh^1& z&vdx?g#>ZwWPi!<55%E-{^I4x;7~q0(Wyw%;v0SJAcKp&yujCII^y?89&GZ}0Q$(_ zVDkVkr?Y-9`ZO-I9O&i9;7}hPKxcTOQ{{D#!J$6zU4A%^le`WxIGo2v(eZWTD6fMI z4t3@UbbNk}@jA%hke_v4&fvjEJoB8t*)xL#TeZfONuK$VfO0?v7kfE+$m#fg-!mQJ z`#m#Yz={qXapu2(U)7csep6fK2!-izYpmZfg9jr#)7E1}XNR^INI%ru1}{ejhkDCv zb@UlvIN37;3>OnOn;h2}UXBb7b&|PIh|9pkWu6(3xYaXd#qprSfWh}X@6`4g&kQg; z=b8H<^Om3wGv5Tvy_9<^e6R9Q>UpPl8~Gfa}{Tj4mMT(JnI8r;Q6yr3;>u=6tP?YxSPn0D!34ZrJ|pBADT=9!ndh|e-v=$8eiPZA^0LVqh} zq*cpUtwE>SFy}tVk1#yf@KVFH?Sp=^;g1+T%`oRN=yM(ef6DL`hOaivISTsUHvA*Q z_Zg-G(1B{A<_8}ktyME4cjD+F!@n{7C&RD9T3H74 z%X7Wq1%^*Ge1_rk4Lje0-lp>{=-JK_`(yO|vEOInJ}Bl`c#gX{VEwVYhK^?jxC56N z9%*y|5HYeKSAMTS3X_)D-)>+6Q^H~a^~?;57f7~&pmc&_12!xtOA#_%16cN*Sf`0s|fABFN) zQRG-z%P~b0bSeywHC%0&`(w~&d_3@xh8G$>-Z1@$pnsBKex@Acorcdc?An~ZE^RaN z%MD*;n6czw^E$&f8otXgeT1O@6T?3@?A|B&JUndV&l-Ng@ShF;#qd82yLUU@<`~+I zo~sP6Hq6*j(7DF&R}4R8nEqAJAF1m+aD`#+Q$fDgFh7S5@-qx?F?_z^PZ_?ac;g=0F4ijwhBkjO_4VM~bTqfuY zGwj;KJ`baf{2;^p_B+JoSD}Gt7@lL;wVAz5#&d!`<2Zqtm?1Df9uIt$Vb^~4cD5P0 z`=N-JGtX^^%eYKn#(V-Z<`dYpv3*?ka}dwWnGkKy-o@#iO;iC=ngYjVVWW#F>uQ%Lom%aJOU2WvGhF$-~>o6B;usPH4T*C_uA8&Z2Vdg>&cGehPXLzIGPQ$K`;L@I1o{3^Q&U;yy2Cep=G}lV`@6dEbPbG~HYzV#XkQyqt34 zeJeUgiJ6=To+%#Sne=)0ihQw{whFvdJlgXK;_;qO6i@X0Vew&}PZl5PnfJ^yJa>qX z_S_|2=y|Jnsps>>CwjhA+~k>e(Jh{D5P#J3H^rxU=3Of9ddc%$;&VJx_josh{CP2L zB={xq=RDI+{IciQ#f;IR^Ol%)5&Vw$yPn?_|G;xvWqgn4zTyWw7m6SD%$VpCo`;Kn z<2fsS)-&%n|LB?bq_m4jcar!`&kf>tJs&Biy@U?$LJK`Nig_oFocE!FJ@ZcU0MBjW ztY_YTj`Per&}z?{#r2+<-lDsNY?ZxHwQe4}_j&o_&Qd#0~IyN+s{=XicXe5~iE#I)sz%RA>2Jns>o?D<(SZ8>ya6t{YQN!;%FPvT9U zc}M+m&rE)Iu4k@^i#*duxzzK!V&=ieKJTt?s-YH{#EK-(kuAmBarUa!Nu1=@I|OaJ2)&%DQe!}FQq;Dg`- zG4t=Ef2o)yJojxIrrgMf8O|CO=Hl8mkJTSzbZAe6v}h{?wr!GSM!w2$o8dDJUtsuh z!`lttWcUulI}JZz_zA<$8h+I<&*qSSp22|!8|Jwi&z`_97=FWWqv`!rCa7{KUHUEba4PksGwEgdupM|Hu3IGMS6^Xru}MpTtdi|5tvOh<*^ zy!R_%UhLa$>*)!Gxvyx7vVVISxa;z}n-6IF$%Cm0>4%&5Pc;wU+dS;`=AqA|<3IQ8 zR68S8k~(Nm>cS<_3nOPd*R!OoPi0wJ)0t}i@gRW_GTD5$R}UvYi^*B%qoi0et8!OuECC;SRqo2hyTPid@h{lcU;je<5b%#w#U0GS1xuZP3+gT~8s(<;q%Cdg-%5CKU>1 z)_tL;aw#*MUyq@ZfvJk&cUK(naK-+6D~7#ZF?8Urj@| z<8O6;D)>jL`uviCCFv)R&zyE&b5cc~Ne#KOsD5Cd%7JN}v$%>jy+bKVTth)TNSxk&6{x$*bbZoC-l+B8T?X#jad-2Ohnx3%F!e-gZ}Z?6 z+NwtGeW>U4=0U0Ep_R>rd)xZH_Q#%EUh$qGrdEy6nV$1fPu;UU3ri|hp`4F_s?D!X z&+c51OH&i#%IZ%9=we7du~y3fq&bj4#mjZ1glzI;IZ6hS{zV}QES zx+{Ky{f3jO7OdYjzAig@=k1jPro`iqZ*AT?V}$%q^pAguLe&UgBtPvbNvjlHrJlEN z+p-Cz(_&rVsfwX@R}6W$V!yo=gI}*0G;r4{S4Supp4%*;ypp|t{$F*b?)9E0k1t6- zld4YPLnC<5C>d0e+By3CY_@yF-oo9Z&tGv~VO8mqCEEthmGznO5;0-h!?&xRAG$L; zddKd{0T=2-U;o1R%}E)Judb}_Grp~IN1PN--LF-i<4455<@o9z@6jPX;|{f?YT)=d zDW~x&{b}(h9_gvu-6K^J)Tg?dp*e)K=y!?X7JWY3A*Kh4|EAh+hyr_ZQ)`{^EO z-u`>E7v}BftFhkm_Maqcnzw(93dzmezlvz-^f2wG3e#^ZcKUVxRgG8VzMC4N^mr&; zB)#;(l^`Ggrt21iyr1jirugsoL+ux~=%1$Z_?G@_vVVFi+B~OCCjB_FxR4QqO!`^v z6d_4(lCi$Y%>P$uzi%@0|J#bvH<|gLp^&}}_oMrD#qFES{Qn8<_nWYv1jXsX`UTpS z+$~X5;=XDtp$(HNnJqy!mk-`Hj*B)?WG?Jr3>GkHQT z;P50MP46_*$T#k3KDf-xAZ{j&V(CsD{NSSQyNR^Fxaf4!l|uu?DLNBQ^>1oj8x?&F zPM0l|m7>jX-?D4;zvw*jTv*m114S3WnKDMhiY`Q_sDD@InyBbvLQBdH!{#U9@+f_g zHpNpP)c;JHVUBX*z9w*$q|gyXSvX5F>Aa;)=?TIS#nbsTu8i-pi)U~UQQ6D-mvFjl zpktS-{&+qpp5b!UAI}E~7r8T4Jc~3+%5Fh_4m#y!-&XMy&!aE~m(lMoKBh(TVNvNY zPF2a0yGWSRR^q0kjLLqf9F{C2a$I&J^5sd9sl-ZFBqjEo0!vPCB^ISeYNvEM*FyTE zQZJjx8^TPQwE8`(f62ju4mmQAn^0H+*u(AfM4^}mkoov~Ww_}rcv}IGlsO%a3O`~km zWm}OSl^DGa`E{bjl!sTWB-lJ>=Jh-d}V>97lNrq;@BXop}CY0XolAJr51N#gn zjwU!N4^Ed+TxIj&!X%kv;F2$pk}N;hiW#6ODR5w$~O2k>BL)!G??7P=W_A} z*D5GJ?>R~L8+k9wf({}YAxj}BlcF7*;uc){=k z$=ZkFISL-+GXEiW#BQEgFR^fMZB`{xb7O+I{Rl#_M zx}t;E>wjYDkS^iRB+LG%{v9i0*I^0^yjgG&9bk&_36}~l1*$`YL$FyR$pmZ}+u0!! zJ|ZiZ%j6+j6gWeIgYnK;aK-Ig4*r}Vbw%SLoPLJ#vy3ZDk^ZY{6CC`oQ@ec2=>L?I zLi)X=`xX*U!ca(~E4A~W)Jl~Y!p%u>aqgng6TA(+P*h+%iE_T8F&fPf3dS3KK%)Z4 zTvXGjkl!n0G>^MC1g%bGSuB;MsCX0OZc%u0c9v^?^)Z_8pVJsr`YOEHB^)m(WeN^YFL(5dpXfCvAFMhmDhO5R(G+Uyo0|dOxstyW=)JoDO z$sxR_y+knX3H_Vrb6i+OjyH28lTuRnlfnjI_t&GDh-J0ZzMuqD9&s(_!|BI$(P$LU zRp|GUQ27iX_-t1&>g0`M1jH89MEdaYp3s1dx1X->(UOaBPm6+f$X;?0?&TtMyY7pc z-*dNqK%vQH_$-%U!4*5UR9u3=KX4aP9msB0dR#VqWmx&RbmEt|?;Ne&p;66w3f-aH zj@~BVGFvM-8K(ApQL=9;@M0%h=IWe0Bv9v6I0Z#|X)=zxA39VF>Ld;^l;ABAQw>JB zo8D{O^j=biD)TqKdtC;yypS2K(0^#x+(Djmq2rW-tG}*i zWv0+R1>AC?(HR{k7t7&J>@OBFRx^My<9H7gJR?}`RFad}r(mOE`}00_yfjGnG$(O& z`mk>)y|^&GO_AKc$?oo07;|P0zeJJa(wKs8$QLxXezj{;ys??W<1{|dMGZZGcza4Y zJ;I&R17pr9?>&xmhO^G_vD%;d9gJ7RoVt`wz)*WG`Ji%WG>wYG`;R54*2j-YTE+L9 zyuYgs0SA9ZlGGKeMn5ghw^abkq^3ir>b@vZsX7+;$jF_~J_X!|qnbAqSf#+4h+0Sy zW&~83tDL&KnU5YO8P(zY`PM zi`eKQ^77`W>j-L$X*(%m#m96C+Zk@{Kq8^O?M#u?g_E~7>l(!fl5N#4*ek@I znhB)ac#M<^Kl!2r+!7sTF3Z`G)s@?+AE~M%z@7Mvc(O^o zN`hU7Vy3yGbcOzZbNwK95Z;-Cn(@I?Lt)~`K{Kf)ej$nyzYxXgIPVprB)D%V-Pc=$ z=F_p>BKq&^EuuW{Eno&gPnf}C3Z+~ z6j2?#L&%c@4jpRpz8&PXAt}q?{=vJ8(3g3kj5(sZe4(&gpFb*6JanXYR)JFq4r9{3 zUM3Fni8#j&NhweE_T^ba&m3>g?KIdT!kfpGoZ$WbIy8vjvgsXk9GN#nHmBxe23Hf) zOji4lRW+h>7F1@_^GBBWx@gSVFupEkSYdJ+XXZr8i}O{%(_%lZnlhcu0*5EDIbQ3& zGu-oVqIDr%HpRN~HTyW5{k6Vd_iCrRlub~`&wG!t+nmBOHf7G($!vmde%|}M?s9a4 zLViyBFG~9F=8Vn;pS+OYe0GA=_*BS?PEr)N{6PPSYi50?XF_KO&kJmi(^?Rn({?Rz zvR0KA8yeJ3?oCCF63k1&Lp-Sx3st!p$SEqpMJ~}LY=-b4jGEXC*Sc@9H%eil(_PAD zu+u$-P0-CBGP-osd6(|P_^ z&H`G!uKzWN-#D@W$n3mLKV?7hywRbglv?l4bYJRDvHS0gxwP{15m3KJc zDtaIKXi>ra5tE@a1G$|fJvb9!D)|C8>3nb$z$EF(O#S0C^Tb7NGW63kOpIRS{wEx{ z$?X$KgPWdyo(m0A<)eRChAG;Qb@Ib9V+=Frc_L3c`+c3Y*#A%56eR!2VaiPbA3F=N z^9qopQjn=uXp-}kx;5|t`kzc;pG*Ot%(Y&ixz(AHp8Uivw}V`+(()C|ago;PE+@(H zCOU3vc)cBx69IR)eHEAT`IMb6KXF!&B$G@QpExl{=9LeHo=o*#pvZ|%aA<&}z-8LH zHAp-YycA^yMfg-0Ou5L@!UpH$A?5O!au&{Tl722$a0-#Q z5J<{4;WBBaO!*{bo|LMcwLZyys56|$B;#T7eNs#$=lB%!lAuWrLw!q9$L&EOjY`Tyk1VC$``Ck1gbxgrb`-~5?VCE+v^43hitY+-LVGj$ zKU1swPllS-H*eHb;hoXqnak%kEt#=UpAdC*xX>UvA#yX*xrxXz#w&+?=Kpuo{kOKP zS>Ns^ZQr!f+vdilN#nWiG<9n*zD2Xpi%K^1G1JC&Gqbp!7Kx((rxBva!-3o1(6!Dx4_MQ# zOq#jx_cF8|fXzpxjawiT6&flF!$C zSaK5Gr)*89ZrZrU6^Sdu1@n(PHfoxwR=_@91I#llIWn@7^B>TqOg1Fb|MM29>GY=c zZB4vQbs1HO`-~;$W|KP^dH(@a(0ndwt^dZEK$p9~+&NReRAJh?bV^kO@&MAd zsmnDD+!@cC*H!AyQ!=Hbnj-nD+f}aQyt#anNA3?{LjES*DZ;UHlEc|@P6pg5o3m7R zm6g68Y>+F3T-4@`XUU5N4G)Pp*5qPnUAM7iZ8oXZ>)SiKv-@0|zH;kUlH3V!FhQo& zyrSCZJSV;d+-dU{FK0c}f1lfZ&#KGll0^%nwK#(Cs>xwFzYqVro(5=NEz>$xD<9F0 zVXIz1gSL%ogH6(w1--Z`*^U-VHJXS_DnXe7*j$Mdz!6QQB5&r4QQZnJz8i$a!tl-!nZP z7H40~F=L-z&9I&jdT&lz+=FAtkx zNe>I8{-@%G#mQ^B&f3u3yjnBucXuY+^?_PD+c(tKw6)3!Npo9N;~a|AtnTWHYC7B5 zAxd3MopyB>t4XxGTjbaTr5g8i9aDekBq^|;zklU-!;L<%u(oCOrgcrHb~fuCXCn>Vi0gVLJ#0Fk__D4E16chH(O?He}WMx`d{BGx3y zx?|HU{3-@-@qaoc|8SKzRgKfd5-!PPFANE297%%zPLD8_gSEn{wQlKcFX(YeQw{!= z-eJ-qPQ6wZ?6o^e{t?DH-*3Zl+@SqX-GqK@*J|^} zS0q&9umoEH zYs4mc^o9=dcuRd z`zJ0qiNg}Y?iAZ}Z&5{iLC2hxyxfP8?gLsw9AWgOk^9d59m0ODFl+C#I+1rsmeo4Y zhhcAz)(}S+y(D{$fL}tG`?fR)wVk&@^KNOI)jC*fD3`y8LmXjrh@LaqP#I0wD`K0! zS7mRp#x1gvt0;5!dc@e{I$=3>jOwY%B`k!o@|w=-T{S+r9rxB7Bqb%2TfQef9!X)r z2FqA)FWJ+#e$uN7JK6@ltiT>e<0;8wJ}VvWDWP249EREt%l^7S@VE_2u*cUi*4}2> zLoX{uotm7z0b*0#qQk279zGaRSU|QWnP{hOAk0TnAvsL|(xQH4v|4-Rll7bEU_@aC zwU=M4{C~p_0QU;&=^U-h$c_=jx*L#&d|0| zk*Uvw(^=)?J4m%ESj+UNcq7V6D8VMkl`KhPq&u*rqrK1Y5%zJGz}A%t;JUcJpz=c~R^U4Ci*-W?zwKLKcpl76 zM9XX=Z-o7Gr%E@ilJq#)?jB9?Bnv9E6g#x688GS zoc?I>V6U%RzvFq@(%wM6OxwMlvBC2ZIktJ@3a=6~#{x`V_<9oNTTVWu3Hs+N&oFtv z&~sMX9iDH}_D`P2X#1XLj{6Li192%E+DFcgwl{g^!?pW7Q^Uv?v;c9KOI)1oTTLnd7KKpTA zjtma-*>nAddE6&?9b|Br$9+9I75b;;Yg)073@-NaJG`8C<+K6O;RX3_&yQ*Qh>^eP z`CV=QX5{_+`66z)XU;S29cR#$%wQJ%Y|w&&6KOCv(Ud z;i{(%i7MJ}ghcsey zw*4qzH(&9*t9eKxHfP)O_bhHi@o;xD<&Z{fbUuMRI*nM+5+2fsP1?`Y^ldPQ<8?7U z=CelANh3Dr<&}>S86(G#9>VzW%2O*3dWN(V#8BPo;)SzHeg8$Okz{U zCIGt;#ly2K$U_>jNiTOWkp42vGQ6hz@LUVhNh3DpXEJ$o`Pr*^NFz4oXBv5;DqMd+ z$svu{)U_GpIYRO9ObLcX8gW?DIaYUvD<1x=hdiVahc!K->1<2q;B`kT{!N-r8gW?D zuhDdV=K7U|f1@!!mvL_|!{R5h1$a&V?$UJ9h)w?TEDM*7C!W7+9@2=zn!cDk#fs-m z%|jY-Sksq~M}Oq_Nb`_J9M<%uFq!F9=q#$jim!Z5ZBfl6|4ntBC2nlo((FOuj~D88LYHOvX$8%V18o@GOn5fH_~|YhW%RhRmff`5Kwah_%dS z@&HqZ?G|PmO**%xZq#@xFvF(ID`E0AG8vwc*+Cxoor5xborQ1Ics}TNYJ3XteHt$T z-a!ockHh3^W$xd7Ot_d{4_x8nd5oGf4PNurk$bl>^g%V zvoOaDhR$(}!C4m0v9R>5I$Y`dG+towu$~(^XIPl$Ul}^b5(fXw!rLtTdka5q;kPZk z-@@NmxEI<5BmZyfqpR9>z4+{^l@OTSPvG5FHynJTCWc$qaSk5tJM~&w+@|Zj#)^xdp0(L%U!=&FL z;7#Pw{8w7|H^g}PJZ#}T7Jh*kY2)*jMc)TZ`Rq%-AYI3SAFU0>CcOmCws0OXeuu(m zxJ54}hAcj#fhnK!&2o$9I1A6Q@F^CqA=Ywu4~CJ`Wbv#e)^Rw`;=e%ivn~Ib#echn zw_E)8X@1V>p0wz1Sy=AG(D6x2OU6y^#L)Di7JZ_HkG1e=7QTpB=gSt0{%Z^0PptEO zhedxJm^$Hj=>^ht-o0w^@3ZLtvhcqxo&Y{G8^73&m*raE{x@LC;n?qe(zSj*w)nrY z=m#x&T6&T{gILR#yD~H$M!MF|2w;Y_24Ri0_@`MsCtA49!fPyip@lmwd;>7$v(LGS zbRCDgiFLZ0t?H%8JgZ{(eJYGy%v6ySnGTjFm)nhZ;R(;Vy%-mEcyo){S%AMAMKjB^&{5u zbATzIyZ?uiu4NWmJfkh1a*ICK!pkfycXw#{XIb>~EPRcHZ@2J+7XGt^|6$<|iFJN` zWzqc^$u#mldXvU%V5X6Cje!<4(A~AES_p&EvMe1w_EsJ z;wE-?H$(EPN>X3X|6(Ej-=AwH97);p;4XmxZ6Q z@T(U7%EFmQhY7d9!jmk_bQ*o4$R#j}Y64RohDYXcTK|Vy^x+ofxWVv`weXP^F1PR$ z3oo$nA`91A_*4t8wy@0ObllFf=oeV{rxxb-0u#^QSokIj-(lhH7T#syCoTM}h5u&Z zmo5Cdg+H}0zk8eba36@lo`nZkm|Nfs&j<_i8?~WNv~Y!mWuB;Yb)rRIXkng`WaQLY zxWU3_TA05>HvAhc%ynu*zs$l{TKLx%{;h>&Ua8}Gmqq`*g&(po&!;e9{l&sBTKH89 zzinZz2^qg!OE5TY;Z%$d3|)TPsN>%iLVYjb}F)9y!uM(}!8~5f&b8;c*t`nGZ(J2^QwJJVQU(!ZjAI zw=mCsF#M}6e1U~GTloLg9XL$3n~i^X*zK7(u$yEbif;RRzu#U4dIYcG9|SCYF7hPb zqO<)co#S4+{U4?2950nx{1Y^tV}LS?K3UV*r}Hu4!g~T^8j-+^x8doYE<@)~&)^&j zM=Z>A8J_OxGW720GIXB2U@+$@JfoWNI!ohTz~^ery*=k^%uk?~XgmOz2XN7E9`MgK zW|&(w9uLelGx8h*%(_WD4fsxtF9W_;)?fOK0vBk^y<{UbE(K=&B@e%k9;q>ZIXzM1Cg7aYFc%{a#1M{06>FirJXw1Ha-}gxOLpMLwnCsg7 z)+g}?{)NWJ0bi%_iNL?rm}{`NYRolQ9#ulW{0_<=FB5Yec9+Jjzdo-qN%x||RXw1IC+{3{3 z%G|@ie6H3!)xf7}%71vVdl=3GzFO1S z-v3f#9`W>Rjkf{cr15s(+cjq1ntK=?1Aai$p8)1sCiTF4{-ef!27XFo&c`{oB+ouz zb0-7y_BBoa0NC8g@DcDoHJy2G?qpz|f1&AL0)MOVzk&T|yD6V#f%{U3!h}{&k$D^ELNOVP9)7`&xt9ry9J&!h0<#sMj*(-h~uBRHjU$-PZ3+{ zt;%2_hs+aTVA0+koY^bv&m54Jg@LAT5DvXM8de0LA*)tz`XIY(><}RTxT)IbaNzo# zb2-rVHMXjsH}ZG0wM{K`BdOV1^<&a5j?0>GtAqUOLQYuZ_mT2Xm?%&G@-gX?MD;_~ zgf}5szp$Ko{M^W-h#Zrle;IB4^0nd2I{D4_|Hq#{{)eBgsh^?QzgXi>)YOl?e&pw5 ziJy-t?*Hy*V#zH0&xrF4R2kX3K~7a}iPS?kKDl^_QMBdxA-l; zJ-AvF^=fb*VitNl%zHy0WZ@$$9J6qlg{NBhcni<9@FEM>TKF^zpJCxu7G^Tc`plB0 zwas=X_+$6_j2&GxPIZDm-UrUvfPj!?s*T8ZBG5{?&l}r2BUbKt{#bcNtka2AX5bnL zr!w1HS~;M-rP5nCFIKTXmhCO598g5U&Xa zd%5Bmh<4{~Px2mHapD(oh@CY%Yu2oPb)kQ1=szHP+jEHKw8{aqD-q36YYrfym7V)% zjPg>Z_?=ai12&8wyB_H&shQ+}aqRYgN~{ra#D`DzBm1AoeWB-jZm9S}-&6iq0(~Cs z+vm-`o-cOYsF^->*HFQXKGD8Ij_O(NWfXrB-!pldf57DF{!;%quQc1s9=9ku30Im# zC%O5HVwtg6xi5ba73(kc7Az{7*1j&!jSPxRd@Ej7o3*Z<*TyW4M#?5-l|>_w(za+t zAXX8K6tze4+r5-nMM|_HHTKjuUUp4IT1`c$rXszjB3x79)l_8ERAkmv^eC#?uy}FX zycKTjsV{-&z2np$6^(jc^wDo{RmtbkKKX}9}9Vcc4}D70f7DL~g^GH53AL9s_lG zvLAW8D?+gT=isyH{@os!w%#BQIFPa>AJ(jhugx4M^Tr?_D=X{4*T$4K^n2n)f;c4_3q$pC?4NrBG2#X zmWOg*R(=lhaJ$OG?Nlua)L%><-kHq9=f2i?82oKA4=ZledAR9a=3#DU+~ncswPD;8 zm4-a?48FBPEgCcjJ*cS-1(UY}&-gS8$bEL5Ek1NCq!eWwm$3uUJ-}lXk!x1hN#>otLp0I47ja)XvRR zM5kK;PcZ#EFA+1RLYXPry+?)O8@}^maUW5k%#k}U68qs5G>7-vd7)TWSI``O_s$Do z?A+2#UvfW~=<7*Uo}Sd@={A<9*GEL$KPJml&A&`}T5px74Z1w-!X;!VPxt<4dAj?D z$`kdf%gzfuy$w?5i+8Su3S)Z)c>(uJdW?D*1ESFx8EM5{HXD?l$#$Bz^Wm;4is?G= zB*l7gAK(jHLU%rK9qw_vK6Cf_K8rH*UmoI%#5yNLA3eP7Y z;7%+U`5z4NX=!!1t5zXll%gG#ClCn9*zA7{7Wp1v_-`EEVf~c<9|h+{=efD)*Uq!NmLr3ySwVS2{7jBa)YeySj>^k%Hp< zfzUufZhm1w&-|kbP$pfKPZ_aCvfSN_%Ablsl)Qqui-Sok95X*2XXxy?tR0BZ%_HY4eVQwYv1yF<370I+sES0h9WoS zbB5&kb``pnUTmiCC=Us2@t4#Dat4$Pn0#tq-;|;5j@lgstC-0l@x-??n~qi6R>2{@}#*+*Tl139~H-GM&8EsOOHj=gJN zY2R@tPC3)5>>C_VGyi{r;oX7(KsN&DhadLwXfGSX*D>OBw78 zsXb~+t}~%-ey=5CM|%@0=Jz^w!rb}2j!(&PCj4f8uLTo+H^0}SU6_Qv5;(=@)u$Zl zge!4N2ARpw+2o+_w|K6^Q&h)wBwFD+7?!Nli_db1MbXlVd_zC!yBuwyYSARKXTKv zzu)4nW;wcV%fy!W(l=IJcfp<4JaXf+_nbVc^xOq!+??n2ij_P0?yO@wnQ`~E7d;Ru zZio-KIhl1QOV*8!j0^1A8xI#oqH{W9J%`mt@^(D)Tqn|BKXXvNOV2m97u_5wUTEd| z!bnjxD>657lAGdkZLq*SZ89s`WGDB8c%;5Fn(IXCooL@+>BONWLvV*420M`pc8r^d z>^=W(chBzPig?tITbe)cZMqo0z)YRiclwF>6BnE~tOADvS9Zqd_j>vKyL_A0#djTu z=N=jNg89D6NltyXZ`Zj_ebl$BDLy3T+qK5ogbx|HCGnUK`8i~^Z^{(hwCN4W_N5%- z~nrRr}(Vk?KR@i#KGg zyFdp082zt|EIu_-QKe$-&?%L3IiMaqx0H$VLYX;Q=fNIEYqv6 zon4;cyZk2^rJMVl7s!vUD|aIc+RNrfChj>{R>Qdw60>-2q^vxvtRj-1H+@5;uV;-f ztK653wj}E71vh7MPqZkw!W6Tof-4a5lQ3(DHv0CDjJS_6Z0?PpSMVT~NxlB-J3oka zF5C6d!Dxm%Z~bd1DL-&=q?4EjVg~4&@OYu$^M{Jvf3y0e6+dxFVl)9p{YamO`)SvQ ziZ?%3{BP7y#g1XbW_uoD_mHCU!1Xo+gYo=J zHb-}7e=xz_PvTR)KEBkLFRh^Ga33jn|JPf>0pYPcLrZM_(Su~`?`$dcl_7$PH5H1jmM?xsZTb$ zeQO@_GE@4a{BG{^STNeFN4UIvc8~h(LFIn$l+0&FWra(MDmTn3YTI)~`Qx9L5f;+x(TvW&J@y=2DE*e|RLa_}0)fRQ#Tc za@-MSd3ARF@gQ4@f{uc11rHW{Q1EiW9+ci^3L{?I&c7dw?2UY|ms64F64|0lj)+s5(eb7jxSD$GsNT7s#@$aPJ=^;1 zP2Yi2kg%Lqo}F>epip>nd1VHMYmPGnw`1oyF`wrJYaaXe;yD}kR%Xna)i!T*YRzK@ zUNoTyAsT`ncaDzl!Z;0TIx@bghf_a0RdN&q zwfaf@!R2ijT0*{xR}b#O2Xt|q5^(BEdWi^p@(E_fF;Ig`MNS+A;lc0uG9`ToTdQr+ za^JW$twp1kL$p#zMI#pi4gKU2jhDG&fgxSDiaN#sM6Wj_0zZ_TK}aig^F49 zpYqKs$EUI>1h@?{F?WpIsIbSAA=F~u7S?Wrxd>zpP4b?QTKi78O1M_ zQm}c7&&eN%cKsdFq`S#bcNXiLiw8dVT)8i8xF3V|Sb5qTFU0c)9+f#`vc9jFc$Au= z=MOCY3-2XX{e`zPJ-+#R(cPL)Q!u`D%Dr*k21=PRu4}=WJZ;jf zxeW-1~u`P>Kh-7t+i1EL~W1O5f2lOO-x4&*6R%52Q|kkrMa?XsIcI>*?gCg&{R1a62q%qy)Lq zEikHp@C*D4$W_?EJcJb}y_D2HLU3Rl*X}}rlp~Hn0ZK1|Tqk`ic--{Q8O!uC5d7&+ zfgVVojtBuz3y$4dq@s}9s?Qn6@{V1_+I=4Ui(z)r-pPmk_1f1aIa7~?9 z1I{ovtoBZw!DU&G!KEHAE41D+&{I!b2ui@?0T!tX9|lg#;1SiSrx2%mKWD&;w*!0L zt>mdC&dA_Z+Nr0JCo`k2#z|dHFieJ;vc%?c#s{Bp@c4@tboUjdZ8`E zX&I-kbV8R)5MCAdLRZmemdAaYp=%rPzqj`R>A(6pa6c~!@u6E7{~V8Pd+4^eAS~kj z1;RqNbC=&Bwk}TS4(_zf_pWD9_jQ0WJY#uVyAyhVYAEvdk^dp8C+4jnewe!gOGIs< zM@S#%eU8Eqdh909$7eL+tntuJ(kFNWDf2}Zj4~&;!9&gwUp+0fwow3F!l=w2V~^xY0Z!d78m15z?d7U%*Sl|MWrkAoXdY z@AM%Q<9W@b=M!gmm%ufBIB}+TIO!vp+$^tv^pW)2+e;-bqQ3ii+^3#iOnj(!Bl%;* zIo>KHBE5w8Fz-v!M^OP0?`xzZeKhePj~6wiOEJv%xSutBEa}6&Umz{%;~4)UZv*9w zCm!X!#Bh%!E`@47gQPG!>HP4?OrN(6&f!xi!tox0H-!V<91y~%FiB|{a%H;UP=;KY zE;wCEbhui?NKpw(4a@RwqTf0u1B=iIMB(1v-NX$HtDiRz(G4%7{2Z^9;jZ{STqEA8 zq_1L;9)#$=kHlt?iRG^6`2ayD>v|Yu7Q5>Nxr;MA|8Y=K0#D+9_Ivo(gCcq`Zpi}G zgHdvNZGjF(x#`C-Uox7So%ERu!SNo&zx3mYU2hV#c>=M|V|_`VMeJ9lGO&EdAE>f0r&ajcyBT1 zPTB)J+`AI4=?h;5Ugm{}PiD9ucymBWum1r5_antjtf+{dL?u0xogT%0jIz^%*w-ri zH^x56>CG$0-K9a+R`+W}^AOey5Lh$%;IieVK^Ew~4B0&`NRGbzeTaK{kV)?QEV-8{ z{5lBka)pa{hR1>W3c~Z1nRyNJoEzu(+~OM zUKynF`^nwqKNH+{J$bHDcmZQ_wUWn^Qr&AL!~uOLAfw$Eg49}HHXrVb;()!reLrN( z+!Q*o*ie4XILgWNxyK+*hp^>_g)LTJQAU=J%IMeVxY<6k59s?oS&sKf-Ejs!N{L56 zkLqY;+#d_)!^GLSjumXW&ze)%ajP;0Ru~SPCnr25twVrNXVyA`TNpR46aAoq^nP?am0!0DGQz;W-D&%Zx5w zW{AFU(e1!|>Sj)G71%k!a65RUf$}n^iJ)n1N&7Cw=;{=zAr-!Iah?6o zQ&<`&!WLy~?rxR*4MKlNXc5Q{BDp;8z}(U8Paoy-rsEi`>XNtZh!OKP2LZ7Zpb{um^G7VqTVAHk+R-g<*%LB^h1$7W z-u?{E%-cqBRuX@uy#)ZE`qOdT^ zsOV+2aao{U1{;?nj7v3KSXsu2i|AwsPo$E{vJrrlWsx}AmE|J1bg3*uQDEJhr8zSn zeB6%h_za;c%gxdd;_Hd7EZd|Z{5|c`5Z)?2_s}j4;ce0o{tNcJ;pkCVhF@24XHivI zHwF$Y!*OxwQifSeD&Wkbau_1PBHpbG&xA9}@Hlav?N2ZB8Nu_k&js3Nx1ziT&McS9 z#977VT+pb-bxGQgD?t-A@?%w5AE|HSG74e!=;NFccXl}tNm6UuAG+e(e=!rS;>r7Z;zVn8n>%gL!af)D9JAtM&Vdb|}#f zi6X`Gx#(ktc1W}ajoP73J0uddLOYzJ9TKg*mOQJQn6D};qQ^iHK29JX##rSUk zEXJpaqum<32p78;4?6*gaQ|Vx&bl36!^;se0Q?6FFn^9XTsqAcSbjMpFO>58A`AWq zDY`GQ)_x%;pcq7w`FnBP)ah^MbQRSqAdBK z;oGvHXazhZtaGCH?vt?1DrQ!=d4Z!LucJ4<$v6c?P;xG;_rsdshq3*a)V~`b#>qPy zuC++oU*Xy%WqB9CbLeNw0%!28aHrNG$sJE3N5>_%LKE%-ZaX}UlH7cNxrv2xkRM`BIwgI` z@~L}Gg5}dB%K>2-$l0blGR1srcRSw0bZIoN?*o;y{QIDU(fnisJ16{aiJdl1H~Blz z!}%qTuIM26(f06WC6i^Q683zFU9n6yC{1N;Oh)jnbU%;$B`N%3z&#iFLunr+lMlAm zxtM&67TbHUjTwqy+>274Mvps|v+T1mOyuJ(Oj*(w-(fP~JBqioKmM_y;+ljro+k^k zsTn^K|E?i8693o`kDrQvJ&}g-vjG+mQ~|6fXaIPGpdH{VfFsWZm~bJ<808)nf#?`Q z9nUslA@XVbbpXt;@wWo(A^1H&CL%e0C%{&Kab@sz^mDNJw{)&O=2d{fA3@q4lmV8O zGvMqTwHW^@DEdRV-^D}@-i-hIg=r28!faNxN;Lz6^H>-0!yT;-=aFt>%0tu!4-$Nh zVUjrhP}n|&ZTt{`Ac8FW9r!1}>F8om7@fiUK4@Vv631_bZ4qpPS(rFcOnA=Y zFT&W>KQ1At9_|p(*myplqz!%B{XmGa<2AB)&!o92Sn1Y*Q_;DHi2V zGeR%;%!-!V@%*7CLNAE-FcMxQ&BjYUe!=u_xnr#w!MyBa7cds?xzYl>;$sUi5B9v9 zbc8=fT+ry-kw)>&y93V5pfrTV)JR7GharD}LnWe__X@x%07nQ11WYzXWglEPG&xqe z&@bx*ojKJ#0A~(<8nm-DG-1f!z?nmnv&FfRl_`(E5N1!hB}p678#L)j2LrGtyPy;e38k;};B$nruXN#a zW%TKk|C^<0l;12$x*d1smDjh( z@(V@po@(fSsyHi&{Xt_+pOvHy83CH)bU6TX`d8wZ%xP!vG`QGfCJbhHB7!?oW6gKM01+&ZF$$i zfqLI24qYZ|XCs80;LH&Iq@ArAwg%33!kIPfHE~vY-=V!6)Ly#H(%yzMXKC5cpUM1> zw3lL`>C8_{jODYC8hWX)yc_}=bN8eqZAd<7lDp#on7ix6F`2t;oz_I0!AHa0&f}aT zF?evla^2sYruKQYo>rIR6ZN*i77E8-Xu346MJJubJ z?397e$->UQV=P1BbmB(VqSM@R@RaTXEgz2KNF4thY)8U2cnta()=aG}R6&-#x8Rx0 zj$7xJcEY|8tYwBcej6yu={W_S`K>hJ*_pfmg9!JpQYg*70Jr1Oh$+s0mEyb^o>g)F zyA)@3i>f&PLwtTfyAG)+F;OFVDGeOV?bkfv@=N?d<BK}zt2GPGJqyEMlaiO&tN=Y0wJzeYf}B35i0 zxZp5bjh3k2vuGR# z6fW6_s*IB+8JD?mc>^vZwF~<_#Dg<2CvPDfsp(1LD3xPyHE1kNrdCg_g)Y

dq
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�+x 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

P6*v5|WX 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 literal 1193962 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 z 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 z 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

d$c~E(V_P@fIJ{Gm>=Kf8 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 io3g)7k(-$kB19VhBwxUza% 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 Date: Sun, 15 Oct 2017 10:01:12 +0300 Subject: [PATCH 082/156] fix link from md to rst (#3704) actual instructions in rst --- ISSUE_TEMPLATE.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md index 041742df4..a52d11fae 100644 --- a/ISSUE_TEMPLATE.md +++ b/ISSUE_TEMPLATE.md @@ -2,10 +2,10 @@ Please fill the info fields, it helps to get you faster support ;) if you have a stack dump decode it: -https://github.com/esp8266/Arduino/blob/master/doc/Troubleshooting/stack_dump.md +https://github.com/esp8266/Arduino/blob/master/doc/Troubleshooting/stack_dump.rst for better debug messages: -https://github.com/esp8266/Arduino/blob/master/doc/Troubleshooting/debugging.md +https://github.com/esp8266/Arduino/blob/master/doc/Troubleshooting/debugging.rst ----------------------------- Remove above ----------------------------- From 80aeacfb80ac0796a81d274fab26874dd91e8b49 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Fri, 22 Sep 2017 15:52:00 +0800 Subject: [PATCH 083/156] Fix erase size in ESP.eraseConfig SDK uses final 4 sectors of flash for configuration data. ESP.eraseConfig would only erase 2 sectors, so in some cases of corrupted data ("system param error"), users could not fix the issue using ESP.eraseConfig, and had to use esptool instead. Thanks @HugoML for reporting this. --- cores/esp8266/Esp.cpp | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/cores/esp8266/Esp.cpp b/cores/esp8266/Esp.cpp index 03dcf9ca0..a8e12f916 100644 --- a/cores/esp8266/Esp.cpp +++ b/cores/esp8266/Esp.cpp @@ -397,22 +397,16 @@ struct rst_info * EspClass::getResetInfoPtr(void) { bool EspClass::eraseConfig(void) { bool ret = true; - size_t cfgAddr = (ESP.getFlashChipSize() - 0x4000); - size_t cfgSize = (8*1024); + const size_t cfgSize = 0x4000; + size_t cfgAddr = ESP.getFlashChipSize() - cfgSize; - noInterrupts(); - while(cfgSize) { - - if(spi_flash_erase_sector((cfgAddr / SPI_FLASH_SEC_SIZE)) != SPI_FLASH_RESULT_OK) { - ret = false; + for (size_t offset = 0; offset < cfgSize; offset += SPI_FLASH_SEC_SIZE) { + if (!flashEraseSector((cfgAddr + offset) / SPI_FLASH_SEC_SIZE)) { + return false; } - - cfgSize -= SPI_FLASH_SEC_SIZE; - cfgAddr += SPI_FLASH_SEC_SIZE; } - interrupts(); - return ret; + return true; } uint32_t EspClass::getSketchSize() { From b81ef01ef769beb912f78458e6ba04b0c446e76d Mon Sep 17 00:00:00 2001 From: "E. van Harten" Date: Sun, 15 Oct 2017 09:03:28 +0200 Subject: [PATCH 084/156] Fix for redirect of HTTP Update, so that it always returns to the root / instead of /update (#3420) --- .../ESP8266HTTPUpdateServer/src/ESP8266HTTPUpdateServer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/ESP8266HTTPUpdateServer/src/ESP8266HTTPUpdateServer.cpp b/libraries/ESP8266HTTPUpdateServer/src/ESP8266HTTPUpdateServer.cpp index 7a87191d8..25236294e 100644 --- a/libraries/ESP8266HTTPUpdateServer/src/ESP8266HTTPUpdateServer.cpp +++ b/libraries/ESP8266HTTPUpdateServer/src/ESP8266HTTPUpdateServer.cpp @@ -14,7 +14,7 @@ static const char serverIndex[] PROGMEM = )"; static const char successResponse[] PROGMEM = - "Update Success! Rebooting...\n"; + "Update Success! Rebooting...\n"; ESP8266HTTPUpdateServer::ESP8266HTTPUpdateServer(bool serial_debug) { From 9fce9c792c4ede40608c1c1c05095bdab5ddefdd Mon Sep 17 00:00:00 2001 From: WereCatf Date: Sun, 15 Oct 2017 10:05:49 +0300 Subject: [PATCH 085/156] Add a workaround-delay in Serial.flush() (#3714) * Add a workaround-delay in Serial.flush() In relation to #2536 and #2502 Tested at 80MHz and 160MHz with flash-frequency at both 40MHz and 80MHz, the bug mentioned in the above issues manifests in all cases. The proposed workaround seems to work fine, I tested at 2400bps, 9600bps, 115200bps, 230400bps and 2Mbps and didn't see anomalous output. * Remove extraneous character * Update HardwareSerial.cpp --- cores/esp8266/HardwareSerial.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cores/esp8266/HardwareSerial.cpp b/cores/esp8266/HardwareSerial.cpp index 979b0c0da..d78b239f1 100644 --- a/cores/esp8266/HardwareSerial.cpp +++ b/cores/esp8266/HardwareSerial.cpp @@ -152,6 +152,9 @@ void HardwareSerial::flush() } uart_wait_tx_empty(_uart); + //Workaround for a bug in serial not actually being finished yet + //Wait for 8 data bits, 1 parity and 2 stop bits, just in case + delayMicroseconds(11000000 / uart_get_baudrate(_uart) + 1); } size_t HardwareSerial::write(uint8_t c) From 53d7cc01cf927ad9cd6386cbbd1b5c878b51dac8 Mon Sep 17 00:00:00 2001 From: ittacco Date: Sun, 15 Oct 2017 09:16:42 +0200 Subject: [PATCH 086/156] Optimize EEPROM::put (#2487) * EEPROM Library: Improved put function, compare data and only in case are different set _dirty flag, copy the data * It will grant that the _dirty flag is reset only at EEPROM.commit() and no changes are lost --- libraries/EEPROM/EEPROM.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libraries/EEPROM/EEPROM.h b/libraries/EEPROM/EEPROM.h index 09e582be7..3a26d02e6 100644 --- a/libraries/EEPROM/EEPROM.h +++ b/libraries/EEPROM/EEPROM.h @@ -52,9 +52,11 @@ public: const T &put(int address, const T &t) { if (address < 0 || address + sizeof(T) > _size) return t; + if (memcmp(_data + address, (const uint8_t*)&t, sizeof(T)) != 0) { + _dirty = true; + memcpy(_data + address, (const uint8_t*)&t, sizeof(T)); + } - memcpy(_data + address, (const uint8_t*) &t, sizeof(T)); - _dirty = true; return t; } From 0c897c37a6eab3eab34147219617945a32a9b155 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Sun, 15 Oct 2017 15:33:00 +0800 Subject: [PATCH 087/156] ci: add skip_cleanup for release deployment --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index bf280321f..29c925bb0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,6 +15,7 @@ script: deploy: provider: releases prerelease: true + skip_cleanup: true api_key: secure: A4FBmqyhlzy33oPeZVolg2Q/A3ZcJ3WnRQqQJ3NAPy+qGM5xcboOYtwcLL9vKaHZGfUB7lUP9QVZFGou1Wrmo9DnPvAoe3+XvCaDRGzVMxeIpu7UStbBD4Knbh98tlbMvZCXYRlT4VcusI9bMLK6UWw4sMdPislBh2FEfglTiag= file_glob: true From 5397813e5cddb0e16b1bc1031b1de7bf031ef5fe Mon Sep 17 00:00:00 2001 From: vdeconinck Date: Sat, 21 Oct 2017 22:20:41 +0200 Subject: [PATCH 088/156] Minimal file with a few ESP8266-specific keywords - github issue #3701 --- keywords.txt | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 keywords.txt diff --git a/keywords.txt b/keywords.txt new file mode 100644 index 000000000..3272304b9 --- /dev/null +++ b/keywords.txt @@ -0,0 +1,21 @@ +####################################### +# Syntax Coloring Map +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +####################################### +# Methods and Functions (KEYWORD2) +####################################### +analogWriteFreq KEYWORD2 +analogWriteRange KEYWORD2 +baudrate KEYWORD2 +swap KEYWORD2 + +###################################### +# Constants (LITERAL1) +####################################### +INPUT_PULLDOWN_16 LITERAL1 +PWMRANGE LITERAL1 From fdac1a26530c3d4a4cc30845eef70ee4e7e10788 Mon Sep 17 00:00:00 2001 From: Peter Lerup Date: Sun, 22 Oct 2017 07:32:53 +0200 Subject: [PATCH 089/156] Update SoftwareSerial to 3.3.0 (#3727) SoftwareSerial: update to 3.3.1 --- package/build_boards_manager_package.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/build_boards_manager_package.sh b/package/build_boards_manager_package.sh index 507226757..d5434b5ea 100755 --- a/package/build_boards_manager_package.sh +++ b/package/build_boards_manager_package.sh @@ -61,7 +61,7 @@ rm exclude.txt # Get additional libraries (TODO: add them as git submodule or subtree?) # SoftwareSerial library -curl -L -o SoftwareSerial.zip https://github.com/plerup/espsoftwareserial/archive/3.2.3.zip +curl -L -o SoftwareSerial.zip https://github.com/plerup/espsoftwareserial/archive/3.3.1.zip unzip -q SoftwareSerial.zip rm -rf SoftwareSerial.zip mv espsoftwareserial-* SoftwareSerial From 098172c5e459741057ac5d4fa656c9cfaac01a5e Mon Sep 17 00:00:00 2001 From: Julian Wolter Date: Sun, 22 Oct 2017 07:51:30 +0200 Subject: [PATCH 090/156] Increase version for PlatformIO (#3742) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index da97f8a4b..3066366ea 100644 --- a/package.json +++ b/package.json @@ -2,5 +2,5 @@ "name": "framework-arduinoespressif8266", "description": "Arduino Wiring-based Framework (ESP8266 Core)", "url": "https://github.com/esp8266/Arduino", - "version": "2.4.0-rc.1" + "version": "2.4.0-rc2" } From 2abbc36da4f1c159c03449780ad85faabfe2f4f8 Mon Sep 17 00:00:00 2001 From: James Stanley Date: Sun, 22 Oct 2017 06:53:01 +0100 Subject: [PATCH 091/156] Put WiFi into station mode in examples (#3731) --- .../examples/Arduino_Wifi_AVRISP/Arduino_Wifi_AVRISP.ino | 1 + .../ESP8266HTTPClient/examples/Authorization/Authorization.ino | 1 + .../examples/BasicHttpClient/BasicHttpClient.ino | 1 + .../examples/ReuseConnection/ReuseConnection.ino | 1 + .../examples/StreamHttpClient/StreamHttpClient.ino | 1 + .../examples/LLMNR_Web_Server/LLMNR_Web_Server.ino | 1 + libraries/ESP8266NetBIOS/examples/ESP_NBNST/ESP_NBNST.ino | 1 + .../examples/AdvancedWebServer/AdvancedWebServer.ino | 1 + libraries/ESP8266WebServer/examples/FSBrowser/FSBrowser.ino | 1 + .../ESP8266WebServer/examples/HelloServer/HelloServer.ino | 1 + .../ESP8266WebServer/examples/SDWebServer/SDWebServer.ino | 1 + .../examples/SimpleAuthentification/SimpleAuthentification.ino | 1 + libraries/ESP8266WiFi/examples/HTTPSRequest/HTTPSRequest.ino | 1 + .../examples/HTTPSRequestCACert/HTTPSRequestCACert.ino | 1 + libraries/ESP8266WiFi/examples/NTPClient/NTPClient.ino | 1 + .../ESP8266WiFi/examples/WiFiClientBasic/WiFiClientBasic.ino | 1 + libraries/ESP8266WiFi/examples/WiFiMulti/WiFiMulti.ino | 3 ++- .../examples/WiFiTelnetToSerial/WiFiTelnetToSerial.ino | 1 + libraries/ESP8266WiFi/examples/WiFiWebServer/WiFiWebServer.ino | 1 + libraries/ESP8266httpUpdate/examples/httpUpdate/httpUpdate.ino | 1 + .../examples/httpUpdateSPIFFS/httpUpdateSPIFFS.ino | 1 + .../ESP8266mDNS/examples/mDNS-SD_Extended/mDNS-SD_Extended.ino | 1 + .../ESP8266mDNS/examples/mDNS_Web_Server/mDNS_Web_Server.ino | 1 + 23 files changed, 24 insertions(+), 1 deletion(-) diff --git a/libraries/ESP8266AVRISP/examples/Arduino_Wifi_AVRISP/Arduino_Wifi_AVRISP.ino b/libraries/ESP8266AVRISP/examples/Arduino_Wifi_AVRISP/Arduino_Wifi_AVRISP.ino index 792d702c9..16c829e12 100644 --- a/libraries/ESP8266AVRISP/examples/Arduino_Wifi_AVRISP/Arduino_Wifi_AVRISP.ino +++ b/libraries/ESP8266AVRISP/examples/Arduino_Wifi_AVRISP/Arduino_Wifi_AVRISP.ino @@ -17,6 +17,7 @@ void setup() { Serial.println("Arduino AVR-ISP over TCP"); avrprog.setReset(false); // let the AVR run + WiFi.mode(WIFI_STA); WiFi.begin(ssid, pass); while (WiFi.waitForConnectResult() != WL_CONNECTED); diff --git a/libraries/ESP8266HTTPClient/examples/Authorization/Authorization.ino b/libraries/ESP8266HTTPClient/examples/Authorization/Authorization.ino index 64955e56b..5469249ed 100644 --- a/libraries/ESP8266HTTPClient/examples/Authorization/Authorization.ino +++ b/libraries/ESP8266HTTPClient/examples/Authorization/Authorization.ino @@ -31,6 +31,7 @@ void setup() { delay(1000); } + WiFi.mode(WIFI_STA); WiFiMulti.addAP("SSID", "PASSWORD"); } diff --git a/libraries/ESP8266HTTPClient/examples/BasicHttpClient/BasicHttpClient.ino b/libraries/ESP8266HTTPClient/examples/BasicHttpClient/BasicHttpClient.ino index 577926716..d4bcf9a51 100644 --- a/libraries/ESP8266HTTPClient/examples/BasicHttpClient/BasicHttpClient.ino +++ b/libraries/ESP8266HTTPClient/examples/BasicHttpClient/BasicHttpClient.ino @@ -31,6 +31,7 @@ void setup() { delay(1000); } + WiFi.mode(WIFI_STA); WiFiMulti.addAP("SSID", "PASSWORD"); } diff --git a/libraries/ESP8266HTTPClient/examples/ReuseConnection/ReuseConnection.ino b/libraries/ESP8266HTTPClient/examples/ReuseConnection/ReuseConnection.ino index c390515bf..83a9cd1bd 100644 --- a/libraries/ESP8266HTTPClient/examples/ReuseConnection/ReuseConnection.ino +++ b/libraries/ESP8266HTTPClient/examples/ReuseConnection/ReuseConnection.ino @@ -34,6 +34,7 @@ void setup() { delay(1000); } + WiFi.mode(WIFI_STA); WiFiMulti.addAP("SSID", "PASSWORD"); // allow reuse (if server supports it) diff --git a/libraries/ESP8266HTTPClient/examples/StreamHttpClient/StreamHttpClient.ino b/libraries/ESP8266HTTPClient/examples/StreamHttpClient/StreamHttpClient.ino index 7fa118254..46094370a 100644 --- a/libraries/ESP8266HTTPClient/examples/StreamHttpClient/StreamHttpClient.ino +++ b/libraries/ESP8266HTTPClient/examples/StreamHttpClient/StreamHttpClient.ino @@ -31,6 +31,7 @@ void setup() { delay(1000); } + WiFi.mode(WIFI_STA); WiFiMulti.addAP("SSID", "PASSWORD"); } diff --git a/libraries/ESP8266LLMNR/examples/LLMNR_Web_Server/LLMNR_Web_Server.ino b/libraries/ESP8266LLMNR/examples/LLMNR_Web_Server/LLMNR_Web_Server.ino index 960b26e9f..c2231430e 100644 --- a/libraries/ESP8266LLMNR/examples/LLMNR_Web_Server/LLMNR_Web_Server.ino +++ b/libraries/ESP8266LLMNR/examples/LLMNR_Web_Server/LLMNR_Web_Server.ino @@ -77,6 +77,7 @@ void setup(void) { Serial.begin(115200); // Connect to WiFi network + WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Serial.println(""); diff --git a/libraries/ESP8266NetBIOS/examples/ESP_NBNST/ESP_NBNST.ino b/libraries/ESP8266NetBIOS/examples/ESP_NBNST/ESP_NBNST.ino index 016439b0c..7642d401f 100755 --- a/libraries/ESP8266NetBIOS/examples/ESP_NBNST/ESP_NBNST.ino +++ b/libraries/ESP8266NetBIOS/examples/ESP_NBNST/ESP_NBNST.ino @@ -22,6 +22,7 @@ void setup() Serial.begin(115200); // Connect to WiFi network + WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Serial.println(""); diff --git a/libraries/ESP8266WebServer/examples/AdvancedWebServer/AdvancedWebServer.ino b/libraries/ESP8266WebServer/examples/AdvancedWebServer/AdvancedWebServer.ino index 87f96f032..3e87f72e2 100644 --- a/libraries/ESP8266WebServer/examples/AdvancedWebServer/AdvancedWebServer.ino +++ b/libraries/ESP8266WebServer/examples/AdvancedWebServer/AdvancedWebServer.ino @@ -93,6 +93,7 @@ void setup ( void ) { pinMode ( led, OUTPUT ); digitalWrite ( led, 0 ); Serial.begin ( 115200 ); + WiFi.mode ( WIFI_STA ); WiFi.begin ( ssid, password ); Serial.println ( "" ); diff --git a/libraries/ESP8266WebServer/examples/FSBrowser/FSBrowser.ino b/libraries/ESP8266WebServer/examples/FSBrowser/FSBrowser.ino index 4df717d70..047009950 100644 --- a/libraries/ESP8266WebServer/examples/FSBrowser/FSBrowser.ino +++ b/libraries/ESP8266WebServer/examples/FSBrowser/FSBrowser.ino @@ -179,6 +179,7 @@ void setup(void){ //WIFI INIT DBG_OUTPUT_PORT.printf("Connecting to %s\n", ssid); if (String(WiFi.SSID()) != String(ssid)) { + WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); } diff --git a/libraries/ESP8266WebServer/examples/HelloServer/HelloServer.ino b/libraries/ESP8266WebServer/examples/HelloServer/HelloServer.ino index 2022979ee..78d314b74 100644 --- a/libraries/ESP8266WebServer/examples/HelloServer/HelloServer.ino +++ b/libraries/ESP8266WebServer/examples/HelloServer/HelloServer.ino @@ -37,6 +37,7 @@ void setup(void){ pinMode(led, OUTPUT); digitalWrite(led, 0); Serial.begin(115200); + WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Serial.println(""); diff --git a/libraries/ESP8266WebServer/examples/SDWebServer/SDWebServer.ino b/libraries/ESP8266WebServer/examples/SDWebServer/SDWebServer.ino index 69bcaba90..aff3ac677 100644 --- a/libraries/ESP8266WebServer/examples/SDWebServer/SDWebServer.ino +++ b/libraries/ESP8266WebServer/examples/SDWebServer/SDWebServer.ino @@ -223,6 +223,7 @@ void setup(void){ DBG_OUTPUT_PORT.begin(115200); DBG_OUTPUT_PORT.setDebugOutput(true); DBG_OUTPUT_PORT.print("\n"); + WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); DBG_OUTPUT_PORT.print("Connecting to "); DBG_OUTPUT_PORT.println(ssid); diff --git a/libraries/ESP8266WebServer/examples/SimpleAuthentification/SimpleAuthentification.ino b/libraries/ESP8266WebServer/examples/SimpleAuthentification/SimpleAuthentification.ino index d4762e1be..139348f53 100644 --- a/libraries/ESP8266WebServer/examples/SimpleAuthentification/SimpleAuthentification.ino +++ b/libraries/ESP8266WebServer/examples/SimpleAuthentification/SimpleAuthentification.ino @@ -95,6 +95,7 @@ void handleNotFound(){ void setup(void){ Serial.begin(115200); + WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Serial.println(""); diff --git a/libraries/ESP8266WiFi/examples/HTTPSRequest/HTTPSRequest.ino b/libraries/ESP8266WiFi/examples/HTTPSRequest/HTTPSRequest.ino index 6d10d5115..390fe7e75 100644 --- a/libraries/ESP8266WiFi/examples/HTTPSRequest/HTTPSRequest.ino +++ b/libraries/ESP8266WiFi/examples/HTTPSRequest/HTTPSRequest.ino @@ -29,6 +29,7 @@ void setup() { Serial.println(); Serial.print("connecting to "); Serial.println(ssid); + WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); diff --git a/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/HTTPSRequestCACert.ino b/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/HTTPSRequestCACert.ino index ddb24f7a4..2fc0f2eb0 100644 --- a/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/HTTPSRequestCACert.ino +++ b/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/HTTPSRequestCACert.ino @@ -37,6 +37,7 @@ void setup() { Serial.println(); Serial.print("connecting to "); Serial.println(ssid); + WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); diff --git a/libraries/ESP8266WiFi/examples/NTPClient/NTPClient.ino b/libraries/ESP8266WiFi/examples/NTPClient/NTPClient.ino index 4176c511b..2eda6266c 100644 --- a/libraries/ESP8266WiFi/examples/NTPClient/NTPClient.ino +++ b/libraries/ESP8266WiFi/examples/NTPClient/NTPClient.ino @@ -49,6 +49,7 @@ void setup() // We start by connecting to a WiFi network Serial.print("Connecting to "); Serial.println(ssid); + WiFi.mode(WIFI_STA); WiFi.begin(ssid, pass); while (WiFi.status() != WL_CONNECTED) { diff --git a/libraries/ESP8266WiFi/examples/WiFiClientBasic/WiFiClientBasic.ino b/libraries/ESP8266WiFi/examples/WiFiClientBasic/WiFiClientBasic.ino index accb37bf8..178b2e661 100644 --- a/libraries/ESP8266WiFi/examples/WiFiClientBasic/WiFiClientBasic.ino +++ b/libraries/ESP8266WiFi/examples/WiFiClientBasic/WiFiClientBasic.ino @@ -13,6 +13,7 @@ void setup() { delay(10); // We start by connecting to a WiFi network + WiFi.mode(WIFI_STA); WiFiMulti.addAP("SSID", "passpasspass"); Serial.println(); diff --git a/libraries/ESP8266WiFi/examples/WiFiMulti/WiFiMulti.ino b/libraries/ESP8266WiFi/examples/WiFiMulti/WiFiMulti.ino index 70803254d..a4aa67823 100644 --- a/libraries/ESP8266WiFi/examples/WiFiMulti/WiFiMulti.ino +++ b/libraries/ESP8266WiFi/examples/WiFiMulti/WiFiMulti.ino @@ -12,6 +12,7 @@ void setup() { Serial.begin(115200); delay(10); + WiFi.mode(WIFI_STA); wifiMulti.addAP("ssid_from_AP_1", "your_password_for_AP_1"); wifiMulti.addAP("ssid_from_AP_2", "your_password_for_AP_2"); wifiMulti.addAP("ssid_from_AP_3", "your_password_for_AP_3"); @@ -30,4 +31,4 @@ void loop() { Serial.println("WiFi not connected!"); delay(1000); } -} \ No newline at end of file +} diff --git a/libraries/ESP8266WiFi/examples/WiFiTelnetToSerial/WiFiTelnetToSerial.ino b/libraries/ESP8266WiFi/examples/WiFiTelnetToSerial/WiFiTelnetToSerial.ino index 7770cdc29..fa8150840 100644 --- a/libraries/ESP8266WiFi/examples/WiFiTelnetToSerial/WiFiTelnetToSerial.ino +++ b/libraries/ESP8266WiFi/examples/WiFiTelnetToSerial/WiFiTelnetToSerial.ino @@ -30,6 +30,7 @@ WiFiClient serverClients[MAX_SRV_CLIENTS]; void setup() { Serial1.begin(115200); + WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Serial1.print("\nConnecting to "); Serial1.println(ssid); uint8_t i = 0; diff --git a/libraries/ESP8266WiFi/examples/WiFiWebServer/WiFiWebServer.ino b/libraries/ESP8266WiFi/examples/WiFiWebServer/WiFiWebServer.ino index fa40678a4..8ec652270 100644 --- a/libraries/ESP8266WiFi/examples/WiFiWebServer/WiFiWebServer.ino +++ b/libraries/ESP8266WiFi/examples/WiFiWebServer/WiFiWebServer.ino @@ -30,6 +30,7 @@ void setup() { Serial.print("Connecting to "); Serial.println(ssid); + WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { diff --git a/libraries/ESP8266httpUpdate/examples/httpUpdate/httpUpdate.ino b/libraries/ESP8266httpUpdate/examples/httpUpdate/httpUpdate.ino index c7da7139b..683b70a2c 100644 --- a/libraries/ESP8266httpUpdate/examples/httpUpdate/httpUpdate.ino +++ b/libraries/ESP8266httpUpdate/examples/httpUpdate/httpUpdate.ino @@ -32,6 +32,7 @@ void setup() { delay(1000); } + WiFi.mode(WIFI_STA); WiFiMulti.addAP("SSID", "PASSWORD"); } diff --git a/libraries/ESP8266httpUpdate/examples/httpUpdateSPIFFS/httpUpdateSPIFFS.ino b/libraries/ESP8266httpUpdate/examples/httpUpdateSPIFFS/httpUpdateSPIFFS.ino index 72659cf69..e8856e118 100644 --- a/libraries/ESP8266httpUpdate/examples/httpUpdateSPIFFS/httpUpdateSPIFFS.ino +++ b/libraries/ESP8266httpUpdate/examples/httpUpdateSPIFFS/httpUpdateSPIFFS.ino @@ -32,6 +32,7 @@ void setup() { delay(1000); } + WiFi.mode(WIFI_STA); WiFiMulti.addAP("SSID", "PASSWORD"); } diff --git a/libraries/ESP8266mDNS/examples/mDNS-SD_Extended/mDNS-SD_Extended.ino b/libraries/ESP8266mDNS/examples/mDNS-SD_Extended/mDNS-SD_Extended.ino index d3feedee5..111b06b4a 100644 --- a/libraries/ESP8266mDNS/examples/mDNS-SD_Extended/mDNS-SD_Extended.ino +++ b/libraries/ESP8266mDNS/examples/mDNS-SD_Extended/mDNS-SD_Extended.ino @@ -26,6 +26,7 @@ void setup() { Serial.println(hostString); WiFi.hostname(hostString); + WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(250); diff --git a/libraries/ESP8266mDNS/examples/mDNS_Web_Server/mDNS_Web_Server.ino b/libraries/ESP8266mDNS/examples/mDNS_Web_Server/mDNS_Web_Server.ino index 710ddcaea..233506ec9 100644 --- a/libraries/ESP8266mDNS/examples/mDNS_Web_Server/mDNS_Web_Server.ino +++ b/libraries/ESP8266mDNS/examples/mDNS_Web_Server/mDNS_Web_Server.ino @@ -31,6 +31,7 @@ void setup(void) Serial.begin(115200); // Connect to WiFi network + WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Serial.println(""); From 42aa983628087d58567aa8b936db04eb4cc1b262 Mon Sep 17 00:00:00 2001 From: Bryce Schober Date: Fri, 22 Sep 2017 16:37:45 -0700 Subject: [PATCH 092/156] Make DNSServer debug output like other ESP libs --- libraries/DNSServer/src/DNSServer.cpp | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/libraries/DNSServer/src/DNSServer.cpp b/libraries/DNSServer/src/DNSServer.cpp index 3c31717b0..e50fa4f26 100644 --- a/libraries/DNSServer/src/DNSServer.cpp +++ b/libraries/DNSServer/src/DNSServer.cpp @@ -144,17 +144,9 @@ void DNSServer::replyWithIP() - #ifdef DEBUG - DEBUG_OUTPUT.print("DNS responds: "); - DEBUG_OUTPUT.print(_resolvedIP[0]); - DEBUG_OUTPUT.print("."); - DEBUG_OUTPUT.print(_resolvedIP[1]); - DEBUG_OUTPUT.print("."); - DEBUG_OUTPUT.print(_resolvedIP[2]); - DEBUG_OUTPUT.print("."); - DEBUG_OUTPUT.print(_resolvedIP[3]); - DEBUG_OUTPUT.print(" for "); - DEBUG_OUTPUT.println(getDomainNameWithoutWwwPrefix()); + #ifdef DEBUG_ESP_DNS + DEBUG_ESP_PORT.printf("DNS responds: %s for %s\n", + IPAddress(_resolvedIP).toString().c_str(), getDomainNameWithoutWwwPrefix().c_str() ); #endif } From 20b7e480b5a3e9aeffc056020d816a2fad4cbe12 Mon Sep 17 00:00:00 2001 From: Bryce Schober Date: Fri, 22 Sep 2017 16:38:08 -0700 Subject: [PATCH 093/156] Make ESP8266mDNS debug output like other ESP libs --- libraries/ESP8266mDNS/ESP8266mDNS.cpp | 168 +++++++++++++------------- 1 file changed, 85 insertions(+), 83 deletions(-) diff --git a/libraries/ESP8266mDNS/ESP8266mDNS.cpp b/libraries/ESP8266mDNS/ESP8266mDNS.cpp index 766b980b8..66baf12af 100644 --- a/libraries/ESP8266mDNS/ESP8266mDNS.cpp +++ b/libraries/ESP8266mDNS/ESP8266mDNS.cpp @@ -59,9 +59,11 @@ extern "C" { -//#define MDNS_DEBUG_ERR -//#define MDNS_DEBUG_TX -//#define MDNS_DEBUG_RX +#ifdef DEBUG_ESP_MDNS +#define DEBUG_ESP_MDNS_ERR +#define DEBUG_ESP_MDNS_TX +#define DEBUG_ESP_MDNS_RX +#endif #define MDNS_NAME_REF 0xC000 @@ -187,8 +189,8 @@ void MDNSResponder::_restart() { bool MDNSResponder::_listen() { // Open the MDNS socket if it isn't already open. if (!_conn) { - #ifdef MDNS_DEBUG_RX - Serial.println("MDNS listening"); + #ifdef DEBUG_ESP_MDNS_RX + DEBUG_ESP_PORT.println("MDNS listening"); #endif ip_addr_t multicast_addr; multicast_addr.addr = (uint32_t) MDNS_MULTICAST_ADDR; @@ -280,8 +282,8 @@ void MDNSResponder::addService(char *name, char *proto, uint16_t port){ } int MDNSResponder::queryService(char *service, char *proto) { -#ifdef MDNS_DEBUG_TX - Serial.printf("queryService %s %s\n", service, proto); +#ifdef DEBUG_ESP_MDNS_TX + DEBUG_ESP_PORT.printf("queryService %s %s\n", service, proto); #endif if (_query != 0) { @@ -359,8 +361,8 @@ int MDNSResponder::queryService(char *service, char *proto) { _conn->send(); } -#ifdef MDNS_DEBUG_TX - Serial.println("Waiting for answers.."); +#ifdef DEBUG_ESP_MDNS_TX + DEBUG_ESP_PORT.println("Waiting for answers.."); #endif delay(1000); @@ -488,13 +490,13 @@ void MDNSResponder::_parsePacket(){ for(i=0; i<6; i++) packetHeader[i] = _conn_read16(); if ((packetHeader[1] & 0x8000) != 0) { // Read answers -#ifdef MDNS_DEBUG_RX - Serial.printf("Reading answers RX: REQ, ID:%u, Q:%u, A:%u, NS:%u, ADD:%u\n", packetHeader[0], packetHeader[2], packetHeader[3], packetHeader[4], packetHeader[5]); +#ifdef DEBUG_ESP_MDNS_RX + DEBUG_ESP_PORT.printf("Reading answers RX: REQ, ID:%u, Q:%u, A:%u, NS:%u, ADD:%u\n", packetHeader[0], packetHeader[2], packetHeader[3], packetHeader[4], packetHeader[5]); #endif if (!_waitingForAnswers) { -#ifdef MDNS_DEBUG_RX - Serial.println("Not expecting any answers right now, returning"); +#ifdef DEBUG_ESP_MDNS_RX + DEBUG_ESP_PORT.println("Not expecting any answers right now, returning"); #endif _conn->flush(); return; @@ -503,8 +505,8 @@ void MDNSResponder::_parsePacket(){ int numAnswers = packetHeader[3] + packetHeader[5]; // Assume that the PTR answer always comes first and that it is always accompanied by a TXT, SRV, AAAA (optional) and A answer in the same packet. if (numAnswers < 4) { -#ifdef MDNS_DEBUG_RX - Serial.printf("Expected a packet with 4 or more answers, got %u\n", numAnswers); +#ifdef DEBUG_ESP_MDNS_RX + DEBUG_ESP_PORT.printf("Expected a packet with 4 or more answers, got %u\n", numAnswers); #endif _conn->flush(); return; @@ -547,26 +549,26 @@ void MDNSResponder::_parsePacket(){ break; } if(stringsRead > 3){ -#ifdef MDNS_DEBUG_RX - Serial.println("failed to read the response name"); +#ifdef DEBUG_ESP_MDNS_RX + DEBUG_ESP_PORT.println("failed to read the response name"); #endif _conn->flush(); return; } _conn_readS(serviceName, tmp8); serviceName[tmp8] = '\0'; -#ifdef MDNS_DEBUG_RX - Serial.printf(" %d ", tmp8); +#ifdef DEBUG_ESP_MDNS_RX + DEBUG_ESP_PORT.printf(" %d ", tmp8); for (int n = 0; n < tmp8; n++) { - Serial.printf("%c", serviceName[n]); + DEBUG_ESP_PORT.printf("%c", serviceName[n]); } - Serial.println(); + DEBUG_ESP_PORT.println(); #endif if (serviceName[0] == '_') { if (strcmp(&serviceName[1], _query->_service) == 0) { serviceMatch = true; -#ifdef MDNS_DEBUG_RX - Serial.printf("found matching service: %s\n", _query->_service); +#ifdef DEBUG_ESP_MDNS_RX + DEBUG_ESP_PORT.printf("found matching service: %s\n", _query->_service); #endif } } @@ -585,16 +587,16 @@ void MDNSResponder::_parsePacket(){ if(answerType == MDNS_TYPE_TXT && answerRdlength < 1460){ while(--answerRdlength) _conn->read(); } else { -#ifdef MDNS_DEBUG_RX - Serial.printf("Data len too long! %u\n", answerRdlength); +#ifdef DEBUG_ESP_MDNS_RX + DEBUG_ESP_PORT.printf("Data len too long! %u\n", answerRdlength); #endif _conn->flush(); return; } } -#ifdef MDNS_DEBUG_RX - Serial.printf("type: %04x rdlength: %d\n", answerType, answerRdlength); +#ifdef DEBUG_ESP_MDNS_RX + DEBUG_ESP_PORT.printf("type: %04x rdlength: %d\n", answerType, answerRdlength); #endif if (answerType == MDNS_TYPE_PTR) { @@ -604,24 +606,24 @@ void MDNSResponder::_parsePacket(){ memcpy(answerHostName, hostName+1, answerRdlength-3); answerHostName[answerRdlength-3] = '\0'; } -#ifdef MDNS_DEBUG_RX - Serial.printf("PTR %d ", answerRdlength); +#ifdef DEBUG_ESP_MDNS_RX + DEBUG_ESP_PORT.printf("PTR %d ", answerRdlength); for (int n = 0; n < answerRdlength; n++) { - Serial.printf("%c", hostName[n]); + DEBUG_ESP_PORT.printf("%c", hostName[n]); } - Serial.println(); + DEBUG_ESP_PORT.println(); #endif } else if (answerType == MDNS_TYPE_TXT) { partsCollected |= 0x02; _conn_readS(hostName, answerRdlength); // Read rdata -#ifdef MDNS_DEBUG_RX - Serial.printf("TXT %d ", answerRdlength); +#ifdef DEBUG_ESP_MDNS_RX + DEBUG_ESP_PORT.printf("TXT %d ", answerRdlength); for (int n = 0; n < answerRdlength; n++) { - Serial.printf("%c", hostName[n]); + DEBUG_ESP_PORT.printf("%c", hostName[n]); } - Serial.println(); + DEBUG_ESP_PORT.println(); #endif } @@ -637,20 +639,20 @@ void MDNSResponder::_parsePacket(){ // Read hostname tmp8 = _conn_read8(); if (tmp8 & 0xC0) { // Compressed pointer (not supported) -#ifdef MDNS_DEBUG_RX - Serial.println("Skipping compressed pointer"); +#ifdef DEBUG_ESP_MDNS_RX + DEBUG_ESP_PORT.println("Skipping compressed pointer"); #endif tmp8 = _conn_read8(); } else { _conn_readS(answerHostName, tmp8); answerHostName[tmp8] = '\0'; -#ifdef MDNS_DEBUG_RX - Serial.printf("SRV %d ", tmp8); +#ifdef DEBUG_ESP_MDNS_RX + DEBUG_ESP_PORT.printf("SRV %d ", tmp8); for (int n = 0; n < tmp8; n++) { - Serial.printf("%02x ", answerHostName[n]); + DEBUG_ESP_PORT.printf("%02x ", answerHostName[n]); } - Serial.printf("\n%s\n", answerHostName); + DEBUG_ESP_PORT.printf("\n%s\n", answerHostName); #endif if (answerRdlength - (6 + 1 + tmp8) > 0) { // Skip any remaining rdata _conn_readS(hostName, answerRdlength - (6 + 1 + tmp8)); @@ -665,16 +667,16 @@ void MDNSResponder::_parsePacket(){ } } else { -#ifdef MDNS_DEBUG_RX - Serial.printf("Ignoring unsupported type %02x\n", tmp8); +#ifdef DEBUG_ESP_MDNS_RX + DEBUG_ESP_PORT.printf("Ignoring unsupported type %02x\n", tmp8); #endif for (int n = 0; n < answerRdlength; n++) (void)_conn_read8(); } if ((partsCollected == 0x0F) && serviceMatch) { -#ifdef MDNS_DEBUG_RX - Serial.println("All answers parsed, adding to _answers list.."); +#ifdef DEBUG_ESP_MDNS_RX + DEBUG_ESP_PORT.println("All answers parsed, adding to _answers list.."); #endif // Add new answer to answer list if (_answers == 0) { @@ -722,10 +724,10 @@ void MDNSResponder::_parsePacket(){ } if(hostNameLen > 0 && !_hostName.equals(hostName) && !_instanceName.equals(hostName)){ -#ifdef MDNS_DEBUG_ERR - Serial.printf("ERR_NO_HOST: %s\n", hostName); - Serial.printf("hostname: %s\n", _hostName.c_str() ); - Serial.printf("instance: %s\n", _instanceName.c_str() ); +#ifdef DEBUG_ESP_MDNS_ERR + DEBUG_ESP_PORT.printf("ERR_NO_HOST: %s\n", hostName); + DEBUG_ESP_PORT.printf("hostname: %s\n", _hostName.c_str() ); + DEBUG_ESP_PORT.printf("instance: %s\n", _instanceName.c_str() ); #endif _conn->flush(); return; @@ -749,15 +751,15 @@ void MDNSResponder::_parsePacket(){ protoNameLen = 0; localParsed = true; } else { -#ifdef MDNS_DEBUG_ERR - Serial.printf("ERR_FQDN: %s\n", serviceName); +#ifdef DEBUG_ESP_MDNS_ERR + DEBUG_ESP_PORT.printf("ERR_FQDN: %s\n", serviceName); #endif _conn->flush(); return; } } else { -#ifdef MDNS_DEBUG_ERR - Serial.printf("ERR_SERVICE: %s\n", serviceName); +#ifdef DEBUG_ESP_MDNS_ERR + DEBUG_ESP_PORT.printf("ERR_SERVICE: %s\n", serviceName); #endif _conn->flush(); return; @@ -778,8 +780,8 @@ void MDNSResponder::_parsePacket(){ _replyToTypeEnumRequest(interface); return; } else { -#ifdef MDNS_DEBUG_ERR - Serial.printf("ERR_PROTO: %s\n", protoName); +#ifdef DEBUG_ESP_MDNS_ERR + DEBUG_ESP_PORT.printf("ERR_PROTO: %s\n", protoName); #endif _conn->flush(); return; @@ -795,8 +797,8 @@ void MDNSResponder::_parsePacket(){ if(localNameLen == 5 && strcmp("local", localName) == 0 && tmp == 0){ localParsed = true; } else { -#ifdef MDNS_DEBUG_ERR - Serial.printf("ERR_FQDN: %s\n", localName); +#ifdef DEBUG_ESP_MDNS_ERR + DEBUG_ESP_PORT.printf("ERR_FQDN: %s\n", localName); #endif _conn->flush(); return; @@ -806,15 +808,15 @@ void MDNSResponder::_parsePacket(){ if(serviceNameLen > 0 && protoNameLen > 0){ servicePort = _getServicePort(serviceName, protoName); if(servicePort == 0){ -#ifdef MDNS_DEBUG_ERR - Serial.printf("ERR_NO_SERVICE: %s\n", serviceName); +#ifdef DEBUG_ESP_MDNS_ERR + DEBUG_ESP_PORT.printf("ERR_NO_SERVICE: %s\n", serviceName); #endif _conn->flush(); return; } } else if(serviceNameLen > 0 || protoNameLen > 0){ -#ifdef MDNS_DEBUG_ERR - Serial.printf("ERR_SERVICE_PROTO: %s\n", serviceName); +#ifdef DEBUG_ESP_MDNS_ERR + DEBUG_ESP_PORT.printf("ERR_SERVICE_PROTO: %s\n", serviceName); #endif _conn->flush(); return; @@ -822,8 +824,8 @@ void MDNSResponder::_parsePacket(){ // RESPOND -#ifdef MDNS_DEBUG_RX - Serial.printf("RX: REQ, ID:%u, Q:%u, A:%u, NS:%u, ADD:%u\n", packetHeader[0], packetHeader[2], packetHeader[3], packetHeader[4], packetHeader[5]); +#ifdef DEBUG_ESP_MDNS_RX + DEBUG_ESP_PORT.printf("RX: REQ, ID:%u, Q:%u, A:%u, NS:%u, ADD:%u\n", packetHeader[0], packetHeader[2], packetHeader[3], packetHeader[4], packetHeader[5]); #endif uint16_t currentType; @@ -849,25 +851,25 @@ void MDNSResponder::_parsePacket(){ } } -#ifdef MDNS_DEBUG_RX - Serial.printf("REQ: "); - if(hostNameLen > 0) Serial.printf("%s.", hostName); - if(serviceNameLen > 0) Serial.printf("_%s.", serviceName); - if(protoNameLen > 0) Serial.printf("_%s.", protoName); - Serial.printf("local. "); +#ifdef DEBUG_ESP_MDNS_RX + DEBUG_ESP_PORT.printf("REQ: "); + if(hostNameLen > 0) DEBUG_ESP_PORT.printf("%s.", hostName); + if(serviceNameLen > 0) DEBUG_ESP_PORT.printf("_%s.", serviceName); + if(protoNameLen > 0) DEBUG_ESP_PORT.printf("_%s.", protoName); + DEBUG_ESP_PORT.printf("local. "); - if(currentType == MDNS_TYPE_AAAA) Serial.printf(" AAAA "); - else if(currentType == MDNS_TYPE_A) Serial.printf(" A "); - else if(currentType == MDNS_TYPE_PTR) Serial.printf(" PTR "); - else if(currentType == MDNS_TYPE_SRV) Serial.printf(" SRV "); - else if(currentType == MDNS_TYPE_TXT) Serial.printf(" TXT "); - else Serial.printf(" 0x%04X ", currentType); + if(currentType == MDNS_TYPE_AAAA) DEBUG_ESP_PORT.printf(" AAAA "); + else if(currentType == MDNS_TYPE_A) DEBUG_ESP_PORT.printf(" A "); + else if(currentType == MDNS_TYPE_PTR) DEBUG_ESP_PORT.printf(" PTR "); + else if(currentType == MDNS_TYPE_SRV) DEBUG_ESP_PORT.printf(" SRV "); + else if(currentType == MDNS_TYPE_TXT) DEBUG_ESP_PORT.printf(" TXT "); + else DEBUG_ESP_PORT.printf(" 0x%04X ", currentType); - if(currentClass == MDNS_CLASS_IN) Serial.printf(" IN "); - else if(currentClass == MDNS_CLASS_IN_FLUSH_CACHE) Serial.printf(" IN[F] "); - else Serial.printf(" 0x%04X ", currentClass); + if(currentClass == MDNS_CLASS_IN) DEBUG_ESP_PORT.printf(" IN "); + else if(currentClass == MDNS_CLASS_IN_FLUSH_CACHE) DEBUG_ESP_PORT.printf(" IN[F] "); + else DEBUG_ESP_PORT.printf(" 0x%04X ", currentClass); - Serial.printf("\n"); + DEBUG_ESP_PORT.printf("\n"); #endif } uint8_t questionMask = 0; @@ -909,8 +911,8 @@ void MDNSResponder::_replyToTypeEnumRequest(IPAddress multicastInterface) { char *proto = servicePtr->_proto; //uint16_t port = servicePtr->_port; -#ifdef MDNS_DEBUG_TX - Serial.printf("TX: service:%s, proto:%s\n", service, proto); +#ifdef DEBUG_ESP_MDNS_TX + DEBUG_ESP_PORT.printf("TX: service:%s, proto:%s\n", service, proto); #endif char sdHostName[] = "_services"; @@ -996,8 +998,8 @@ void MDNSResponder::_replyToInstanceRequest(uint8_t questionMask, uint8_t respon if(questionMask == 0) return; if(responseMask == 0) return; -#ifdef MDNS_DEBUG_TX - Serial.printf("TX: qmask:%01X, rmask:%01X, service:%s, proto:%s, port:%u\n", questionMask, responseMask, service, proto, port); +#ifdef DEBUG_ESP_MDNS_TX + DEBUG_ESP_PORT.printf("TX: qmask:%01X, rmask:%01X, service:%s, proto:%s, port:%u\n", questionMask, responseMask, service, proto, port); #endif From 2fbc619569c2f4dd4c7501892bc6d2ce0feb01dc Mon Sep 17 00:00:00 2001 From: Christian Schuster Date: Tue, 17 Oct 2017 22:07:17 +0200 Subject: [PATCH 094/156] allocate HTTPUpload struct on demand (#2557) --- .../ESP8266WebServer/src/ESP8266WebServer.cpp | 5 ++ .../ESP8266WebServer/src/ESP8266WebServer.h | 5 +- libraries/ESP8266WebServer/src/Parsing.cpp | 49 ++++++++++--------- 3 files changed, 33 insertions(+), 26 deletions(-) diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp b/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp index 8bc385328..54386068b 100644 --- a/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp +++ b/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp @@ -279,6 +279,7 @@ void ESP8266WebServer::handleClient() { if (!_currentClient.connected()) { _currentClient = WiFiClient(); _currentStatus = HC_NONE; + _currentUpload.reset(); return; } @@ -288,6 +289,7 @@ void ESP8266WebServer::handleClient() { if (millis() - _statusChange > HTTP_MAX_DATA_WAIT) { _currentClient = WiFiClient(); _currentStatus = HC_NONE; + _currentUpload.reset(); } yield(); return; @@ -296,6 +298,7 @@ void ESP8266WebServer::handleClient() { if (!_parseRequest(_currentClient)) { _currentClient = WiFiClient(); _currentStatus = HC_NONE; + _currentUpload.reset(); return; } _currentClient.setTimeout(HTTP_MAX_SEND_WAIT); @@ -305,6 +308,7 @@ void ESP8266WebServer::handleClient() { if (!_currentClient.connected()) { _currentClient = WiFiClient(); _currentStatus = HC_NONE; + _currentUpload.reset(); return; } else { _currentStatus = HC_WAIT_CLOSE; @@ -317,6 +321,7 @@ void ESP8266WebServer::handleClient() { if (millis() - _statusChange > HTTP_MAX_CLOSE_WAIT) { _currentClient = WiFiClient(); _currentStatus = HC_NONE; + _currentUpload.reset(); } else { yield(); return; diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer.h b/libraries/ESP8266WebServer/src/ESP8266WebServer.h index cd410f5b3..1c31d8c78 100644 --- a/libraries/ESP8266WebServer/src/ESP8266WebServer.h +++ b/libraries/ESP8266WebServer/src/ESP8266WebServer.h @@ -25,6 +25,7 @@ #define ESP8266WEBSERVER_H #include +#include #include enum HTTPMethod { HTTP_ANY, HTTP_GET, HTTP_POST, HTTP_PUT, HTTP_PATCH, HTTP_DELETE, HTTP_OPTIONS }; @@ -93,7 +94,7 @@ public: String uri() { return _currentUri; } HTTPMethod method() { return _currentMethod; } WiFiClient client() { return _currentClient; } - HTTPUpload& upload() { return _currentUpload; } + HTTPUpload& upload() { return *_currentUpload; } String arg(String name); // get request argument value by name String arg(int i); // get request argument value by number @@ -177,7 +178,7 @@ protected: int _currentArgCount; RequestArgument* _currentArgs; - HTTPUpload _currentUpload; + std::unique_ptr _currentUpload; int _headerKeysCount; RequestArgument* _currentHeaders; diff --git a/libraries/ESP8266WebServer/src/Parsing.cpp b/libraries/ESP8266WebServer/src/Parsing.cpp index 84b2cceca..581439227 100644 --- a/libraries/ESP8266WebServer/src/Parsing.cpp +++ b/libraries/ESP8266WebServer/src/Parsing.cpp @@ -345,13 +345,13 @@ void ESP8266WebServer::_parseArguments(String data) { } void ESP8266WebServer::_uploadWriteByte(uint8_t b){ - if (_currentUpload.currentSize == HTTP_UPLOAD_BUFLEN){ + if (_currentUpload->currentSize == HTTP_UPLOAD_BUFLEN){ if(_currentHandler && _currentHandler->canUpload(_currentUri)) - _currentHandler->upload(*this, _currentUri, _currentUpload); - _currentUpload.totalSize += _currentUpload.currentSize; - _currentUpload.currentSize = 0; + _currentHandler->upload(*this, _currentUri, *_currentUpload); + _currentUpload->totalSize += _currentUpload->currentSize; + _currentUpload->currentSize = 0; } - _currentUpload.buf[_currentUpload.currentSize++] = b; + _currentUpload->buf[_currentUpload->currentSize++] = b; } uint8_t ESP8266WebServer::_uploadReadByte(WiFiClient& client){ @@ -453,21 +453,22 @@ bool ESP8266WebServer::_parseForm(WiFiClient& client, String boundary, uint32_t break; } } else { - _currentUpload.status = UPLOAD_FILE_START; - _currentUpload.name = argName; - _currentUpload.filename = argFilename; - _currentUpload.type = argType; - _currentUpload.totalSize = 0; - _currentUpload.currentSize = 0; + _currentUpload.reset(new HTTPUpload()); + _currentUpload->status = UPLOAD_FILE_START; + _currentUpload->name = argName; + _currentUpload->filename = argFilename; + _currentUpload->type = argType; + _currentUpload->totalSize = 0; + _currentUpload->currentSize = 0; #ifdef DEBUG_ESP_HTTP_SERVER DEBUG_OUTPUT.print("Start File: "); - DEBUG_OUTPUT.print(_currentUpload.filename); + DEBUG_OUTPUT.print(_currentUpload->filename); DEBUG_OUTPUT.print(" Type: "); - DEBUG_OUTPUT.println(_currentUpload.type); + DEBUG_OUTPUT.println(_currentUpload->type); #endif if(_currentHandler && _currentHandler->canUpload(_currentUri)) - _currentHandler->upload(*this, _currentUri, _currentUpload); - _currentUpload.status = UPLOAD_FILE_WRITE; + _currentHandler->upload(*this, _currentUri, *_currentUpload); + _currentUpload->status = UPLOAD_FILE_WRITE; uint8_t argByte = _uploadReadByte(client); readfile: while(argByte != 0x0D){ @@ -503,18 +504,18 @@ readfile: if (strstr((const char*)endBuf, boundary.c_str()) != NULL){ if(_currentHandler && _currentHandler->canUpload(_currentUri)) - _currentHandler->upload(*this, _currentUri, _currentUpload); - _currentUpload.totalSize += _currentUpload.currentSize; - _currentUpload.status = UPLOAD_FILE_END; + _currentHandler->upload(*this, _currentUri, *_currentUpload); + _currentUpload->totalSize += _currentUpload->currentSize; + _currentUpload->status = UPLOAD_FILE_END; if(_currentHandler && _currentHandler->canUpload(_currentUri)) - _currentHandler->upload(*this, _currentUri, _currentUpload); + _currentHandler->upload(*this, _currentUri, *_currentUpload); #ifdef DEBUG_ESP_HTTP_SERVER DEBUG_OUTPUT.print("End File: "); - DEBUG_OUTPUT.print(_currentUpload.filename); + DEBUG_OUTPUT.print(_currentUpload->filename); DEBUG_OUTPUT.print(" Type: "); - DEBUG_OUTPUT.print(_currentUpload.type); + DEBUG_OUTPUT.print(_currentUpload->type); DEBUG_OUTPUT.print(" Size: "); - DEBUG_OUTPUT.println(_currentUpload.totalSize); + DEBUG_OUTPUT.println(_currentUpload->totalSize); #endif line = client.readStringUntil(0x0D); client.readStringUntil(0x0A); @@ -604,8 +605,8 @@ String ESP8266WebServer::urlDecode(const String& text) } bool ESP8266WebServer::_parseFormUploadAborted(){ - _currentUpload.status = UPLOAD_FILE_ABORTED; + _currentUpload->status = UPLOAD_FILE_ABORTED; if(_currentHandler && _currentHandler->canUpload(_currentUri)) - _currentHandler->upload(*this, _currentUri, _currentUpload); + _currentHandler->upload(*this, _currentUri, *_currentUpload); return false; } From e71ec77a001e917ddbc1e8e722eb7f80a4cf6f80 Mon Sep 17 00:00:00 2001 From: Christian Schuster Date: Tue, 17 Oct 2017 22:08:50 +0200 Subject: [PATCH 095/156] minimize number of exit paths in ESP8266WebServer::handleClient (#2557) --- .../ESP8266WebServer/src/ESP8266WebServer.cpp | 83 +++++++++---------- 1 file changed, 38 insertions(+), 45 deletions(-) diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp b/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp index 54386068b..6220dfe4d 100644 --- a/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp +++ b/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp @@ -276,56 +276,49 @@ void ESP8266WebServer::handleClient() { _statusChange = millis(); } - if (!_currentClient.connected()) { + bool keepCurrentClient = false; + bool callYield = false; + + if (_currentClient.connected()) { + switch (_currentStatus) { + case HC_WAIT_READ: + // Wait for data from client to become available + if (_currentClient.available()) { + if (_parseRequest(_currentClient)) { + _currentClient.setTimeout(HTTP_MAX_SEND_WAIT); + _contentLength = CONTENT_LENGTH_NOT_SET; + _handleRequest(); + + if (_currentClient.connected()) { + _currentStatus = HC_WAIT_CLOSE; + _statusChange = millis(); + keepCurrentClient = true; + } + } + } else { // !_currentClient.available() + if (millis() - _statusChange <= HTTP_MAX_DATA_WAIT) { + keepCurrentClient = true; + } + callYield = true; + } + break; + case HC_WAIT_CLOSE: + // Wait for client to close the connection + if (millis() - _statusChange <= HTTP_MAX_CLOSE_WAIT) { + keepCurrentClient = true; + callYield = true; + } + } + } + + if (!keepCurrentClient) { _currentClient = WiFiClient(); _currentStatus = HC_NONE; _currentUpload.reset(); - return; } - // Wait for data from client to become available - if (_currentStatus == HC_WAIT_READ) { - if (!_currentClient.available()) { - if (millis() - _statusChange > HTTP_MAX_DATA_WAIT) { - _currentClient = WiFiClient(); - _currentStatus = HC_NONE; - _currentUpload.reset(); - } - yield(); - return; - } - - if (!_parseRequest(_currentClient)) { - _currentClient = WiFiClient(); - _currentStatus = HC_NONE; - _currentUpload.reset(); - return; - } - _currentClient.setTimeout(HTTP_MAX_SEND_WAIT); - _contentLength = CONTENT_LENGTH_NOT_SET; - _handleRequest(); - - if (!_currentClient.connected()) { - _currentClient = WiFiClient(); - _currentStatus = HC_NONE; - _currentUpload.reset(); - return; - } else { - _currentStatus = HC_WAIT_CLOSE; - _statusChange = millis(); - return; - } - } - - if (_currentStatus == HC_WAIT_CLOSE) { - if (millis() - _statusChange > HTTP_MAX_CLOSE_WAIT) { - _currentClient = WiFiClient(); - _currentStatus = HC_NONE; - _currentUpload.reset(); - } else { - yield(); - return; - } + if (callYield) { + yield(); } } From 5c01841430d5f93d5334c56f3b708995912a8675 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Tue, 31 Oct 2017 02:05:40 +0800 Subject: [PATCH 096/156] sdk: update to v2.1.0-14-g33f234f https://github.com/espressif/ESP8266_NONOS_SDK/commit/33f234f4a6defafec2f9442dcc0bb1ebdb80c42f --- tools/sdk/lib/libmain.a | Bin 212668 -> 212668 bytes tools/sdk/lib/libnet80211.a | Bin 330434 -> 330530 bytes tools/sdk/lib/libpp.a | Bin 237966 -> 237994 bytes tools/sdk/lib/libwpa.a | Bin 170764 -> 170764 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tools/sdk/lib/libmain.a b/tools/sdk/lib/libmain.a index c6d1675308f9f7ed241c0248711e2b7796f58fc4..3359b6870f7bd8facbda3dd6ac1fdf56f5cf4756 100644 GIT binary patch delta 293 zcmdn~nORs&t~(*NSx2fuM!?8e!N|bST*1)X z%GAQjz9FEtm+% zitQ47jQKn;k#?Y(?R`>Ayjx)+U|rMyUSYD|{^LB;a~2fw?LcugRumzK(uP||O1J0T fXPU@?qH4SB3nnvmRH4H6Ojc~DLMOj6ef9tVJw;ms delta 293 zcmdnKo!%$KD8BjSV<9b= z2*`@<5`2vLJTQ@VpqlM{QcS#CVIp8%)Bj#!vfuvWJkxU)6!GmqaWz&HA&An3TS!W` h=iO(T$bq72yX*@lGj>#=!uL#8Y^XvfzcPLH007-YT897t diff --git a/tools/sdk/lib/libnet80211.a b/tools/sdk/lib/libnet80211.a index b3b25eedc8920573f0223f035e5cf2a0140bce92..29393d5c226eff704ae93ffa8e1e1d923e9908ab 100644 GIT binary patch delta 3054 zcmZvd2~1Q+7{_Pc&MLC2>~bxL2dqY@iiHKmrZrN+ zBD(4a3W$n=vDRZXPveD+c-K;;sRuoXT5UZ-DkgX|+wa@=-gbTIBs1TC{_~q}=FOYk z_uYojZ5u;NqS_Bk>F-E!ytdz-Ytyv5#MYs+uTz!yW^T`1|!)+T`%Gdm;sg_#9%+1sK-&GZFIqu7=|lA7d%D$z%E%Zmjk> zcu?}&hYTyGYYuHOQoi3^On>?D=kyeAy9Uvd8T%(BCOP0#vJ}gg$g_rvqb6e(V=T)R zb0>vo$+=_2UhYaA5CGxn!dh_OQ^y$pi`szM8FhhXJHJOAvxDFD#;N=dZ=A#Lc;gCw z+Z)&MTNHVtC-J(+&dy8hLa*TYF;_hNSMp;TJcG=#JC|VYP6^jH(VpO(g&;X$d3oHq;>)iSLcNgQ}DKc+!Jae-3KOfxLq)@`FeZSD{mW zKIx9Ce;GzE7E$ubc_O7NuY;rO!~&iNNiH#pH^NE^1K}!#Xy~zCjFK$#VeWeIp2QZw zX^i|fglxdkHpr%s18xd0z_1ZR5sanK1-4_5*ivZSh%*vkD4^R0E(+J+7KlEtTvoS- zyJCVGES=i_r>UR$Ib(H@QYv~F(}EZ)1wKp)369fI5k>G>spw^FLL@^$-qaz{Uqd4y z$ri>AcoA!s4k?8mWg^yi4~cArn5QES!^cE8t&Alr%M|N~ackgo87{L7k=aU;T{@%| zLN;NNRwO=9lAP2Lqe~!X6DDy6Gxn*Hq)CSy12-kPghZY~Jkb$3VAw2TrQ{G-!rpLe z7+x0bjOkokVJwasFX5eAs?1N)5es2E5zbJ&kjgec)DdYeXx%J&Nee^4Qo_Tn^L67z zFtl96@_mp`p%Gjdq@Fg{?;FB{FCa^=za4D`OPmc7ig`FZD;E~t0;URFdRYWxHQuG+ zoeH!U!UVG8A{iU0*qg|%hTUlMxo{POlvx2UDnu`YdsL!Z4I?o~m!fD@__9)1j15tY ztyZ3B0shSVPbF;|oUX)!&+Nk3Nd;M}L%M8-&@G5WbY*P07qNb$LrNffi-_%Aj>KF4 zbH&f<@T?thkTTxx##kREW3vu92!<+ra!Yr{QWPRM@a3Jiz*r>s2w03k%BqFxDoi=W z&e%9;zJWiPOq_r>#8(d4UC|H@fm`uJX7*%kGAzF-g;=NQ@|METt(f;Y4GHQq0FOx5%*>Q#*wgxys&CS?y*jlWJ7jK@lO=wEYzs+-Y2p=$bfyr^pW zH^qy@cs?t@z}O6|G?`4&rhII$;5%o$&@0&-48)K}+NAo6RG*SYqvjRZV4=*!N2}VT z`gpKDrjVHwh|EIxtwGod)}W+$aTrN!^ZKIJa)Zi{M_OYN{Fp5&Lmp|3N%muERE9j# z$S4PLL>-{-3%*UpE3v_H5-V+vJkloBe*-nARj^#ZN(_0VO{$-Ynpa_ir5P(Rsj4(c;zAfKQ?nm&rp{IthU3mns!4t~0mpQbB841Mpq`sp;x!?$9CrKjqr;riZ= zNgbdQpvm+R9f4z2Jx(I$-Z dgAS{c$s?^XnZ#_x21~ulkXJ81zaq}2{0oDfVnhG{ delta 2623 zcmZ9N3vf(V7{|}KIZI?0o99MC%2F{By2}!s)HF4W=af#9=y(i6G?}Ox>d}@qUPD_Z zGB)ugY+e{aMh%HxQ?FD@>oMLn25rMoigr{>GorKof4TSWte%T1`O~F^zL=%yDZ&M;_8qTYSeh&=x;UrHQp`_a(ZM4G&qZQcCwx}GzC7g zhZcA$Xn1tIvd(H?8kb%_M^zr>ZG zx9pRx2_eEgqEE?5!z@DR;n!^)wU!7AwRKC1*8WPdh+(Spgqt26cj2LLqxVAb(a8UZ_ z{Shk)Ey7FeqCa>^6~4Ir`Mp$w+cNRaY=b-lf1J(5y#RP^}YgH1xnhg?U_%Wdl5m?7_T!!cj})|OYudu@4xyvtc$3wnPEy2VLN zoa!C3sK?cyyv4l7mEcf^Y^LHImC*5e8#x!$+$r9(v^Pf$mS^Z*j_MQAPsOer6ecbe)G|5RRP^W!=1 zy8Gp?yXZX;9JZ}he}9^CC=9w}rrItqkvk6^ujmu=)CehER5?oxlqvd!S!#nOPf%U~ z@LAebppxW8{dj>|5rHEa^`2T2`7$4p?1O_sUWizMIEi=#u?5kBuu(8kbLD7|{5Xh+ zMeySoDMSZTCqr|IM6iAxnLU%BnX#S`=3zaOhECDa^tB7s$Zm26UD}`)%Lz2ruf}6@ zn>lr-2b>})vs8`OS{Bl}QuU^GZxP)<#v!Mb;b}81;WUm;bGl8*8<7^!Y)*;}B5C)Q zl7rAAktP#pGu3lyqE=FA@+(R$S3PZ6p9%3Hjc1wOS%`9yBeYohqFgz(18XTzu6o

D| z)8v3kmF2XO(*mkT(i|>-b6Eo2he30?$Wts6qL1V974F_DCDgMLlN2NhQP(y}^w0lu zB+>`$aCQ-5tl{|Qe~#hwEgXHPz@f}niifwRiN`x>Y33~fimOt+<#fud!eWQhOeC!_ znHL+s6lNZy9XnADBnz?H*!`(0-hD0IKxbQ4S0RoXJgFM|&=yLs1{d9gSZ?q_aOt5X z)tF=zZAH?aZ=*BpI+G$qn&FD7fh(JmYp}-_;0yy#Vq8MAfiZ?3Nqb&LhicGyv>U%r zx_J$6<1@IlO1Hl|CBzp-87nu|EksT)A*R#v>#&Wf#b85daxDhiPb)c%qI#ruH-`wZ zEXu!ZoLgR|Rwk?R@ilAjKR?bxNA5%nptGg2lU}|>{hE$d7M)Xbi^?!VT)Z(&xvBAv zh;63kv)*lL+>|(HY6tRp6`fbEqCyklW&~^d8dNCr5p3l#x2^YH}D#!l?UhTsWU zzXmRAQK2|Y&WyF)mEfxFeBLfLJ4nC;dlUsB&^{0F*jSpfh5 diff --git a/tools/sdk/lib/libpp.a b/tools/sdk/lib/libpp.a index cc25790e85b1e548e8b8644a90a9fd8589c10413..f67aa22ef6c9486b7124770717406f5b0443a4e8 100644 GIT binary patch delta 1995 zcmY+EeMp^E9LJyYoNL~?>ZYl8;+oFP>rhL@myF43&DL1q#?=}+Vl0D8xNuB*f#Ef? z&An8@Wu3u-)rc%>EOG1^A!!&o&UexLh$?C!vGzMu0wzu$R# z&hxxInK3+>F_@qFaD8ocT|>i2(V-lVP364G9sMll=Eggn538RoTXVXCIyjp5+&_J5 zj+<3Jf7o}Y^TlsRK3a1I$Lyf9`?R{%;#m&Ts=o7D?$l1tupP+qEC)G1ws|dsdGqYr z>ext5NOe1-LH*b|^@CX{(GRGfO@2u4&AP3o;uDtj%}?=)w5rMY_Mv&x6Ve+?vi#Os zA?Bfq$Cu+Yi=}UqKlZ_fP0p>5Zc+Eek`k_iXQWN}(=>0<`Svp7>zoT)bU~_}a=@9a z)W7=dG;M}!b?MfLLaVx?*R5Z7>pr)B!>#+>`c1b!=GMpEdcdtuI19BplG@0*X79Ev zYUw?el?FWu&4w;WyEKsSTc9=YI}qf9UUp72>ZPnGb5*Hjbz__exDOAyTO@ISb23-h~^WulP_lM{!$AS8RI=k5T00s1*v zI4Q&zbP@#b0;V~3GdVy6M?@AKF1lUN(#CRE{DmWIq>%qbTQqsY%mvhDLuBi z@F{bx+^#lbpQwYe#lk)2%L+T&ycpKSDq`LV>thXNo$&e2J%51Qknnqxcn+&mys0R&PCTlk zzUa&FvN2aD^o(#9bVZmSz^X9wxg*B&a@Px2LLU(>hn^AUT|Fzzb(|CKhkljdsKv$3 zNXKa?FDxhEhW-}*9l9#K2=!y*jN!fIS-J~?)(e+IcM0>5crO{lyZV;!KImWo9{@Y{ zqY;yi1JHMcBhYigJo%4>yP%&6cS5fScS9@iwm9ai;BCT3!A}eKf)5LKL;<|)OyFx? z6#g3em+%;LMR)?bDts0Cukg3fbbKfrX9`>=d=1__N4GD(1XGe=nF~yRq_*wF{hH)!pUIX rZSK#h9}UI78_IU9mJ6as4v0TQzdjMOBrzA$&HFxm#2G)Sr*r=U_|iPr delta 2039 zcmY+FT})g>7>4KUEM;33SeCz5Kz;<43L<|kwNl+Gtu~SXcCk%co5o;5Vo?kxdd2o9 zNK`^dwszX27eI(@2p1&~4>qJFp^;iaNsNiu1Z@aOwTbkmdguDSyWc@N$?`tmJKubB zX3orEY%XPBE@dz$v3^f|eeJH=iK5O-hfUReD{FE*^Iq-Cu1ugEOvd`;C5UCFEE(hE;#(M6s#uo-tRF-?40rSw7}O2J`N4 z)zn2MG6PnVJ(;cdr&>Rl$ECW&`q|_JbgTb2Yau$T)VIGzpYvAFMPIqPYyE^IUeuV{s#L7xHl-Mcpc&8^ ziB(eEuYlIUZ$Oe8+HX(n)9d~)$5>@beS$g-;B)w~CYuMoQ=d6A@B{FfvnunBfFFW0 zp=5=5**KQ$)c1n3VR7s;;4~=m!>Z010E5f{EEN1dNwqpTDC#Vb57Ys_6}c?>&88e@ z@yxjcKSy#_ogBpEEto$x*&hh9U~=N9lf)Is?y-;;oDYkWm4n&1N@r)8a|-@F_{@2c zD?ww9v+K+W!aoF`IiFQ;O6mt!z+}=icu|sila+FTNAT-QjuaL&nWYL>jahh8|7it{ zeONbJUXvKohh2Ti=1QfjXzTV4rAD!ibTeP+%1e+-y&zHf-&BlUA$^l=blD~_-$O__@E*99{Bl>Hd5IbRJ{+KQ=xifA^T%~_aT_<*;trxU z;0-zKA?vu$Bjfm|$S=hGqnmgdk8SawqfOa?Gdk=Jb5$9b>on8|cR`1QKY}g_^DZq3 zvlf@lvAid#!XBt!*bVIz=CSV*<}-E2Ijl|qE=va=d|bF4%CpZ2xVZ0yXQ4~Nx1qla z^9pdoV-EyP6?Q`lg}GsT3C!WKe>VyDhd~vB4(X_az9+l~`o3@w+AYkta7Orb=y~Br z=zwq&Gy!jp^;^K%!Xa>p@X;`WLlW?k@!oI%U-@m}E6}^b7ody6m!M0+gV3LZhoEc1 zqtF!GKi0ek&J!L7zXMKV$8`iBOUIOb^;7+-Wp&sO`}8d<%Fu(el2!<)FbiP zpDC|^pT9g|ej^Kno1uG!gV24O{6X@;cun4ThkuFZyd3+^oxm(IY2` j&;JA&_3@l}$>~itLvGz|)^E5HBd43Z_FtdtnXLZ+k-{}7 diff --git a/tools/sdk/lib/libwpa.a b/tools/sdk/lib/libwpa.a index 506b9d4258877545dd93b79caf36d088d141573b..ce51e1c8547d7256bade8af4e8e0cf2aedadd344 100644 GIT binary patch delta 261 zcmeC##?`ZpYl1Ypg}JGbxuL;ErEGQ>d-4QTvCXU4@5{mjHcwEsm4tD?vajs4IZyd-4QTvCXU4@5{mjHcwEsm4tD?vajs4IZy Date: Wed, 1 Nov 2017 21:14:55 +0100 Subject: [PATCH 097/156] lwip2 integration --- .gitmodules | 3 + boards.txt | 3963 +++++++++++++++++---------- platform.txt | 3 +- tools/sdk/ld/eagle.app.v6.common.ld | 1 + tools/sdk/lwip2/Makefile | 6 + tools/sdk/lwip2/builder | 1 + 6 files changed, 2565 insertions(+), 1412 deletions(-) create mode 100644 .gitmodules create mode 100644 tools/sdk/lwip2/Makefile create mode 160000 tools/sdk/lwip2/builder diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..0dc945b63 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "lwip2"] + path = tools/sdk/lwip2/builder + url = https://github.com/d-a-v/esp82xx-nonos-linklayer.git diff --git a/boards.txt b/boards.txt index 463ab5773..633ac5442 100644 --- a/boards.txt +++ b/boards.txt @@ -1,3 +1,7 @@ +# +# this file is generated by tools/boards.txt.py and is likely to be overwritten +# + menu.BoardModel=Model menu.UploadSpeed=Upload Speed menu.CpuFrequency=CPU Frequency @@ -13,49 +17,231 @@ menu.LwIPVariant=lwIP Variant ############################################################## generic.name=Generic ESP8266 Module - +generic.build.board=ESP8266_GENERIC generic.upload.tool=esptool generic.upload.speed=115200 -generic.upload.resetmethod=ck -generic.upload.maximum_size=434160 generic.upload.maximum_data_size=81920 generic.upload.wait_for_upload_port=true generic.serial.disableDTR=true generic.serial.disableRTS=true - generic.build.mcu=esp8266 -generic.build.f_cpu=80000000L -generic.build.board=ESP8266_ESP01 generic.build.core=esp8266 generic.build.variant=generic -generic.build.flash_mode=qio generic.build.spiffs_pagesize=256 generic.build.debug_port= generic.build.debug_level= - generic.menu.CpuFrequency.80=80 MHz generic.menu.CpuFrequency.80.build.f_cpu=80000000L generic.menu.CpuFrequency.160=160 MHz generic.menu.CpuFrequency.160.build.f_cpu=160000000L - +generic.menu.ResetMethod.ck=ck +generic.menu.ResetMethod.ck.upload.resetmethod=ck +generic.menu.ResetMethod.nodemcu=nodemcu +generic.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu generic.menu.CrystalFreq.26=26 MHz generic.menu.CrystalFreq.40=40 MHz generic.menu.CrystalFreq.40.build.extra_flags=-DF_CRYSTAL=40000000 - generic.menu.FlashFreq.40=40MHz generic.menu.FlashFreq.40.build.flash_freq=40 generic.menu.FlashFreq.80=80MHz generic.menu.FlashFreq.80.build.flash_freq=80 - -generic.menu.FlashMode.dio=DIO -generic.menu.FlashMode.dio.build.flash_mode=dio generic.menu.FlashMode.qio=QIO generic.menu.FlashMode.qio.build.flash_mode=qio -generic.menu.FlashMode.dout=DOUT -generic.menu.FlashMode.dout.build.flash_mode=dout generic.menu.FlashMode.qout=QOUT generic.menu.FlashMode.qout.build.flash_mode=qout - +generic.menu.FlashMode.dio=DIO +generic.menu.FlashMode.dio.build.flash_mode=dio +generic.menu.FlashMode.dout=DOUT +generic.menu.FlashMode.dout.build.flash_mode=dout +generic.menu.FlashSize.512K0=512K (no SPIFFS) +generic.menu.FlashSize.512K0.build.flash_size=512K +generic.menu.FlashSize.512K0.build.flash_ld=eagle.flash.512k0.ld +generic.menu.FlashSize.512K0.build.spiffs_pagesize=256 +generic.menu.FlashSize.512K0.upload.maximum_size=499696 +generic.menu.FlashSize.512K64=512K (64K SPIFFS) +generic.menu.FlashSize.512K64.build.flash_size=512K +generic.menu.FlashSize.512K64.build.flash_ld=eagle.flash.512k64.ld +generic.menu.FlashSize.512K64.build.spiffs_pagesize=256 +generic.menu.FlashSize.512K64.upload.maximum_size=434160 +generic.menu.FlashSize.512K64.build.spiffs_start=0x6B000 +generic.menu.FlashSize.512K64.build.spiffs_end=0x7B000 +generic.menu.FlashSize.512K64.build.spiffs_blocksize=4096 +generic.menu.FlashSize.512K128=512K (128K SPIFFS) +generic.menu.FlashSize.512K128.build.flash_size=512K +generic.menu.FlashSize.512K128.build.flash_ld=eagle.flash.512k128.ld +generic.menu.FlashSize.512K128.build.spiffs_pagesize=256 +generic.menu.FlashSize.512K128.upload.maximum_size=368624 +generic.menu.FlashSize.512K128.build.spiffs_start=0x5B000 +generic.menu.FlashSize.512K128.build.spiffs_end=0x7B000 +generic.menu.FlashSize.512K128.build.spiffs_blocksize=4096 +generic.menu.FlashSize.1M0=1M (no SPIFFS) +generic.menu.FlashSize.1M0.build.flash_size=1M +generic.menu.FlashSize.1M0.build.flash_ld=eagle.flash.1m0.ld +generic.menu.FlashSize.1M0.build.spiffs_pagesize=256 +generic.menu.FlashSize.1M0.upload.maximum_size=1023984 +generic.menu.FlashSize.1M64=1M (64K SPIFFS) +generic.menu.FlashSize.1M64.build.flash_size=1M +generic.menu.FlashSize.1M64.build.flash_ld=eagle.flash.1m64.ld +generic.menu.FlashSize.1M64.build.spiffs_pagesize=256 +generic.menu.FlashSize.1M64.upload.maximum_size=958448 +generic.menu.FlashSize.1M64.build.spiffs_start=0xEB000 +generic.menu.FlashSize.1M64.build.spiffs_end=0xFB000 +generic.menu.FlashSize.1M64.build.spiffs_blocksize=4096 +generic.menu.FlashSize.1M128=1M (128K SPIFFS) +generic.menu.FlashSize.1M128.build.flash_size=1M +generic.menu.FlashSize.1M128.build.flash_ld=eagle.flash.1m128.ld +generic.menu.FlashSize.1M128.build.spiffs_pagesize=256 +generic.menu.FlashSize.1M128.upload.maximum_size=892912 +generic.menu.FlashSize.1M128.build.spiffs_start=0xDB000 +generic.menu.FlashSize.1M128.build.spiffs_end=0xFB000 +generic.menu.FlashSize.1M128.build.spiffs_blocksize=4096 +generic.menu.FlashSize.1M144=1M (144K SPIFFS) +generic.menu.FlashSize.1M144.build.flash_size=1M +generic.menu.FlashSize.1M144.build.flash_ld=eagle.flash.1m144.ld +generic.menu.FlashSize.1M144.build.spiffs_pagesize=256 +generic.menu.FlashSize.1M144.upload.maximum_size=876528 +generic.menu.FlashSize.1M144.build.spiffs_start=0xD7000 +generic.menu.FlashSize.1M144.build.spiffs_end=0xFB000 +generic.menu.FlashSize.1M144.build.spiffs_blocksize=4096 +generic.menu.FlashSize.1M160=1M (160K SPIFFS) +generic.menu.FlashSize.1M160.build.flash_size=1M +generic.menu.FlashSize.1M160.build.flash_ld=eagle.flash.1m160.ld +generic.menu.FlashSize.1M160.build.spiffs_pagesize=256 +generic.menu.FlashSize.1M160.upload.maximum_size=860144 +generic.menu.FlashSize.1M160.build.spiffs_start=0xD3000 +generic.menu.FlashSize.1M160.build.spiffs_end=0xFB000 +generic.menu.FlashSize.1M160.build.spiffs_blocksize=4096 +generic.menu.FlashSize.1M192=1M (192K SPIFFS) +generic.menu.FlashSize.1M192.build.flash_size=1M +generic.menu.FlashSize.1M192.build.flash_ld=eagle.flash.1m192.ld +generic.menu.FlashSize.1M192.build.spiffs_pagesize=256 +generic.menu.FlashSize.1M192.upload.maximum_size=827376 +generic.menu.FlashSize.1M192.build.spiffs_start=0xCB000 +generic.menu.FlashSize.1M192.build.spiffs_end=0xFB000 +generic.menu.FlashSize.1M192.build.spiffs_blocksize=4096 +generic.menu.FlashSize.1M256=1M (256K SPIFFS) +generic.menu.FlashSize.1M256.build.flash_size=1M +generic.menu.FlashSize.1M256.build.flash_ld=eagle.flash.1m256.ld +generic.menu.FlashSize.1M256.build.spiffs_pagesize=256 +generic.menu.FlashSize.1M256.upload.maximum_size=761840 +generic.menu.FlashSize.1M256.build.spiffs_start=0xBB000 +generic.menu.FlashSize.1M256.build.spiffs_end=0xFB000 +generic.menu.FlashSize.1M256.build.spiffs_blocksize=4096 +generic.menu.FlashSize.1M512=1M (512K SPIFFS) +generic.menu.FlashSize.1M512.build.flash_size=1M +generic.menu.FlashSize.1M512.build.flash_ld=eagle.flash.1m512.ld +generic.menu.FlashSize.1M512.build.spiffs_pagesize=256 +generic.menu.FlashSize.1M512.upload.maximum_size=499696 +generic.menu.FlashSize.1M512.build.spiffs_start=0x7B000 +generic.menu.FlashSize.1M512.build.spiffs_end=0xFB000 +generic.menu.FlashSize.1M512.build.spiffs_blocksize=8192 +generic.menu.FlashSize.2M=2M (1M SPIFFS) +generic.menu.FlashSize.2M.build.flash_size=2M +generic.menu.FlashSize.2M.build.flash_ld=eagle.flash.2m.ld +generic.menu.FlashSize.2M.build.spiffs_pagesize=256 +generic.menu.FlashSize.2M.upload.maximum_size=1044464 +generic.menu.FlashSize.2M.build.spiffs_start=0x100000 +generic.menu.FlashSize.2M.build.spiffs_end=0x1FB000 +generic.menu.FlashSize.2M.build.spiffs_blocksize=8192 +generic.menu.FlashSize.4M1M=4M (1M SPIFFS) +generic.menu.FlashSize.4M1M.build.flash_size=4M +generic.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +generic.menu.FlashSize.4M1M.build.spiffs_pagesize=256 +generic.menu.FlashSize.4M1M.upload.maximum_size=1044464 +generic.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +generic.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +generic.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +generic.menu.FlashSize.4M3M=4M (3M SPIFFS) +generic.menu.FlashSize.4M3M.build.flash_size=4M +generic.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +generic.menu.FlashSize.4M3M.build.spiffs_pagesize=256 +generic.menu.FlashSize.4M3M.upload.maximum_size=1044464 +generic.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +generic.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +generic.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +generic.menu.FlashSize.8M7M=8M (7M SPIFFS) +generic.menu.FlashSize.8M7M.build.flash_size=8M +generic.menu.FlashSize.8M7M.build.flash_ld=eagle.flash.8m.ld +generic.menu.FlashSize.8M7M.build.spiffs_pagesize=256 +generic.menu.FlashSize.8M7M.upload.maximum_size=1044464 +generic.menu.FlashSize.8M7M.build.spiffs_start=0x100000 +generic.menu.FlashSize.8M7M.build.spiffs_end=0x7FB000 +generic.menu.FlashSize.8M7M.build.spiffs_blocksize=8192 +generic.menu.FlashSize.16M15M=16M (15M SPIFFS) +generic.menu.FlashSize.16M15M.build.flash_size=16M +generic.menu.FlashSize.16M15M.build.flash_ld=eagle.flash.16m.ld +generic.menu.FlashSize.16M15M.build.spiffs_pagesize=256 +generic.menu.FlashSize.16M15M.upload.maximum_size=1044464 +generic.menu.FlashSize.16M15M.build.spiffs_start=0x100000 +generic.menu.FlashSize.16M15M.build.spiffs_end=0x17FB000 +generic.menu.FlashSize.16M15M.build.spiffs_blocksize=8192 +generic.menu.LwIPVariant.open=v2 +generic.menu.LwIPVariant.open.build.lwip_include=lwip2/include +generic.menu.LwIPVariant.open.build.lwip_lib=-llwip2 +generic.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +generic.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc +generic.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC +generic.menu.LwIPVariant.Espressif=Espressif (xcc) +generic.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip +generic.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC +generic.menu.LwIPVariant.OpenSource=Open Source (gcc) +generic.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src +generic.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC +generic.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" +generic.menu.Debug.Disabled=Disabled +generic.menu.Debug.Disabled.build.debug_port= +generic.menu.Debug.Serial=Serial +generic.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +generic.menu.Debug.Serial1=Serial1 +generic.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 +generic.menu.DebugLevel.None____=None +generic.menu.DebugLevel.None____.build.debug_level= +generic.menu.DebugLevel.SSL=SSL +generic.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL +generic.menu.DebugLevel.TLS_MEM=TLS_MEM +generic.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM +generic.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT +generic.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT +generic.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER +generic.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER +generic.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM +generic.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM +generic.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT +generic.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT +generic.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER +generic.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER +generic.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT +generic.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +generic.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER +generic.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +generic.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER +generic.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +generic.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT +generic.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +generic.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER +generic.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +generic.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER +generic.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +generic.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER +generic.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +generic.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER +generic.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +generic.menu.DebugLevel.CORE=CORE +generic.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE +generic.menu.DebugLevel.WIFI=WIFI +generic.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI +generic.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE +generic.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE +generic.menu.DebugLevel.UPDATER=UPDATER +generic.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER +generic.menu.DebugLevel.OTA=OTA +generic.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA +generic.menu.DebugLevel.NULL=NULL +generic.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +generic.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +generic.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +generic.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +generic.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" generic.menu.UploadSpeed.115200=115200 generic.menu.UploadSpeed.115200.upload.speed=115200 generic.menu.UploadSpeed.9600=9600 @@ -63,215 +249,176 @@ generic.menu.UploadSpeed.9600.upload.speed=9600 generic.menu.UploadSpeed.57600=57600 generic.menu.UploadSpeed.57600.upload.speed=57600 generic.menu.UploadSpeed.256000.windows=256000 -generic.menu.UploadSpeed.256000.upload.speed=256000 +generic.menu.UploadSpeed.256000.windows.upload.speed=256000 generic.menu.UploadSpeed.230400.linux=230400 +generic.menu.UploadSpeed.230400.linux.upload.speed=230400 generic.menu.UploadSpeed.230400.macosx=230400 -generic.menu.UploadSpeed.230400.upload.speed=230400 +generic.menu.UploadSpeed.230400.macosx.upload.speed=230400 generic.menu.UploadSpeed.460800.linux=460800 +generic.menu.UploadSpeed.460800.linux.upload.speed=460800 generic.menu.UploadSpeed.460800.macosx=460800 -generic.menu.UploadSpeed.460800.upload.speed=460800 +generic.menu.UploadSpeed.460800.macosx.upload.speed=460800 generic.menu.UploadSpeed.512000.windows=512000 -generic.menu.UploadSpeed.512000.upload.speed=512000 +generic.menu.UploadSpeed.512000.windows.upload.speed=512000 generic.menu.UploadSpeed.921600=921600 generic.menu.UploadSpeed.921600.upload.speed=921600 -generic.menu.FlashSize.512K64=512K (64K SPIFFS) -generic.menu.FlashSize.512K64.build.flash_size=512K -generic.menu.FlashSize.512K64.build.flash_ld=eagle.flash.512k64.ld -generic.menu.FlashSize.512K64.build.spiffs_start=0x6B000 -generic.menu.FlashSize.512K64.build.spiffs_end=0x7B000 -generic.menu.FlashSize.512K64.build.spiffs_blocksize=4096 -generic.menu.FlashSize.512K64.upload.maximum_size=434160 - -generic.menu.FlashSize.512K128=512K (128K SPIFFS) -generic.menu.FlashSize.512K128.build.flash_size=512K -generic.menu.FlashSize.512K128.build.flash_ld=eagle.flash.512k128.ld -generic.menu.FlashSize.512K128.build.spiffs_start=0x5B000 -generic.menu.FlashSize.512K128.build.spiffs_end=0x7B000 -generic.menu.FlashSize.512K128.build.spiffs_blocksize=4096 -generic.menu.FlashSize.512K128.upload.maximum_size=368624 - -generic.menu.FlashSize.512K0=512K (no SPIFFS) -generic.menu.FlashSize.512K0.build.flash_size=512K -generic.menu.FlashSize.512K0.build.flash_ld=eagle.flash.512k0.ld -generic.menu.FlashSize.512K0.upload.maximum_size=499696 - -generic.menu.FlashSize.1M512=1M (512K SPIFFS) -generic.menu.FlashSize.1M512.build.flash_size=1M -generic.menu.FlashSize.1M512.build.flash_ld=eagle.flash.1m512.ld -generic.menu.FlashSize.1M512.build.spiffs_start=0x7B000 -generic.menu.FlashSize.1M512.build.spiffs_end=0xFB000 -generic.menu.FlashSize.1M512.build.spiffs_blocksize=8192 -generic.menu.FlashSize.1M512.upload.maximum_size=499696 - -generic.menu.FlashSize.1M256=1M (256K SPIFFS) -generic.menu.FlashSize.1M256.build.flash_size=1M -generic.menu.FlashSize.1M256.build.flash_ld=eagle.flash.1m256.ld -generic.menu.FlashSize.1M256.build.spiffs_start=0xBB000 -generic.menu.FlashSize.1M256.build.spiffs_end=0xFB000 -generic.menu.FlashSize.1M256.build.spiffs_blocksize=4096 -generic.menu.FlashSize.1M256.upload.maximum_size=761840 - -generic.menu.FlashSize.1M192=1M (192K SPIFFS) -generic.menu.FlashSize.1M192.build.flash_size=1M -generic.menu.FlashSize.1M192.build.flash_ld=eagle.flash.1m192.ld -generic.menu.FlashSize.1M192.build.spiffs_start=0xCB000 -generic.menu.FlashSize.1M192.build.spiffs_end=0xFB000 -generic.menu.FlashSize.1M192.build.spiffs_blocksize=4096 -generic.menu.FlashSize.1M192.upload.maximum_size=827376 - -generic.menu.FlashSize.1M160=1M (160K SPIFFS) -generic.menu.FlashSize.1M160.build.flash_size=1M -generic.menu.FlashSize.1M160.build.flash_ld=eagle.flash.1m160.ld -generic.menu.FlashSize.1M160.build.spiffs_start=0xD3000 -generic.menu.FlashSize.1M160.build.spiffs_end=0xFB000 -generic.menu.FlashSize.1M160.build.spiffs_blocksize=4096 -generic.menu.FlashSize.1M160.upload.maximum_size=860144 - -generic.menu.FlashSize.1M144=1M (144K SPIFFS) -generic.menu.FlashSize.1M144.build.flash_size=1M -generic.menu.FlashSize.1M144.build.flash_ld=eagle.flash.1m144.ld -generic.menu.FlashSize.1M144.build.spiffs_start=0xD7000 -generic.menu.FlashSize.1M144.build.spiffs_end=0xFB000 -generic.menu.FlashSize.1M144.build.spiffs_blocksize=4096 -generic.menu.FlashSize.1M144.upload.maximum_size=876528 - -generic.menu.FlashSize.1M128=1M (128K SPIFFS) -generic.menu.FlashSize.1M128.build.flash_size=1M -generic.menu.FlashSize.1M128.build.flash_ld=eagle.flash.1m128.ld -generic.menu.FlashSize.1M128.build.spiffs_start=0xDB000 -generic.menu.FlashSize.1M128.build.spiffs_end=0xFB000 -generic.menu.FlashSize.1M128.build.spiffs_blocksize=4096 -generic.menu.FlashSize.1M128.upload.maximum_size=892912 - -generic.menu.FlashSize.1M64=1M (64K SPIFFS) -generic.menu.FlashSize.1M64.build.flash_size=1M -generic.menu.FlashSize.1M64.build.flash_ld=eagle.flash.1m64.ld -generic.menu.FlashSize.1M64.build.spiffs_start=0xEB000 -generic.menu.FlashSize.1M64.build.spiffs_end=0xFB000 -generic.menu.FlashSize.1M64.build.spiffs_blocksize=4096 -generic.menu.FlashSize.1M64.upload.maximum_size=958448 - -generic.menu.FlashSize.1M0=1M (no SPIFFS) -generic.menu.FlashSize.1M0.build.flash_size=1M -generic.menu.FlashSize.1M0.build.flash_ld=eagle.flash.1m0.ld -generic.menu.FlashSize.1M0.upload.maximum_size=1023984 - -generic.menu.FlashSize.2M=2M (1M SPIFFS) -generic.menu.FlashSize.2M.build.flash_size=2M -generic.menu.FlashSize.2M.build.flash_ld=eagle.flash.2m.ld -generic.menu.FlashSize.2M.build.spiffs_start=0x100000 -generic.menu.FlashSize.2M.build.spiffs_end=0x1FB000 -generic.menu.FlashSize.2M.build.spiffs_blocksize=8192 -generic.menu.FlashSize.2M.upload.maximum_size=1044464 - -generic.menu.FlashSize.4M1M=4M (1M SPIFFS) -generic.menu.FlashSize.4M1M.build.flash_size=4M -generic.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -generic.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -generic.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -generic.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -generic.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -generic.menu.FlashSize.4M1M.upload.maximum_size=1044464 - -generic.menu.FlashSize.4M3M=4M (3M SPIFFS) -generic.menu.FlashSize.4M3M.build.flash_size=4M -generic.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -generic.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -generic.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -generic.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -generic.menu.FlashSize.4M3M.upload.maximum_size=1044464 - -generic.menu.FlashSize.8M=8M (7M SPIFFS) -generic.menu.FlashSize.8M.build.flash_size=8M -generic.menu.FlashSize.8M.build.flash_ld=eagle.flash.8m.ld -generic.menu.FlashSize.8M.build.spiffs_start=0x100000 -generic.menu.FlashSize.8M.build.spiffs_end=0x800000 -generic.menu.FlashSize.8M.build.spiffs_blocksize=8192 - -generic.menu.FlashSize.16M=16M (15M SPIFFS) -generic.menu.FlashSize.16M.build.flash_size=16M -generic.menu.FlashSize.16M.build.flash_ld=eagle.flash.16m.ld -generic.menu.FlashSize.16M.build.spiffs_start=0x100000 -generic.menu.FlashSize.16M.build.spiffs_end=0x1000000 -generic.menu.FlashSize.16M.build.spiffs_blocksize=8192 - -generic.menu.ResetMethod.ck=ck -generic.menu.ResetMethod.ck.upload.resetmethod=ck -generic.menu.ResetMethod.nodemcu=nodemcu -generic.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu - -generic.menu.Debug.Disabled=Disabled -generic.menu.Debug.Disabled.build.debug_port= -generic.menu.Debug.Serial=Serial -generic.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -generic.menu.Debug.Serial1=Serial1 -generic.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 - -generic.menu.DebugLevel.None____=None -generic.menu.DebugLevel.None____.build.debug_level= -generic.menu.DebugLevel.Core____=Core -generic.menu.DebugLevel.Core____.build.debug_level=-DDEBUG_ESP_CORE -generic.menu.DebugLevel.SSL_____=Core + SSL -generic.menu.DebugLevel.SSL_____.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -generic.menu.DebugLevel.SSL_MEM_=Core + SSL + TLS Mem -generic.menu.DebugLevel.SSL_MEM_.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_TLS_MEM -generic.menu.DebugLevel.WiFic___=Core + WiFi -generic.menu.DebugLevel.WiFic___.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -generic.menu.DebugLevel.WiFi____=WiFi -generic.menu.DebugLevel.WiFi____.build.debug_level=-DDEBUG_ESP_WIFI -generic.menu.DebugLevel.HTTPClient=HTTPClient -generic.menu.DebugLevel.HTTPClient.build.debug_level=-DDEBUG_ESP_HTTP_CLIENT -generic.menu.DebugLevel.HTTPClient2=HTTPClient + SSL -generic.menu.DebugLevel.HTTPClient2.build.debug_level=-DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_SSL -generic.menu.DebugLevel.HTTPUpdate=HTTPUpdate -generic.menu.DebugLevel.HTTPUpdate.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -generic.menu.DebugLevel.HTTPUpdate2=HTTPClient + HTTPUpdate -generic.menu.DebugLevel.HTTPUpdate2.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_UPDATE -generic.menu.DebugLevel.HTTPUpdate3=HTTPClient + HTTPUpdate + Updater -generic.menu.DebugLevel.HTTPUpdate3.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -generic.menu.DebugLevel.HTTPServer=HTTPServer -generic.menu.DebugLevel.HTTPServer.build.debug_level=-DDEBUG_ESP_HTTP_SERVER -generic.menu.DebugLevel.UPDATER=Updater -generic.menu.DebugLevel.UPDATER.build.debug_level=-DDEBUG_ESP_UPDATER -generic.menu.DebugLevel.OTA_____=OTA -generic.menu.DebugLevel.OTA_____.build.debug_level=-DDEBUG_ESP_OTA -generic.menu.DebugLevel.OTA2____=OTA + Updater -generic.menu.DebugLevel.OTA2____.build.debug_level=-DDEBUG_ESP_OTA -DDEBUG_ESP_UPDATER -generic.menu.DebugLevel.all_____=All -generic.menu.DebugLevel.all_____.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_TLS_MEM - - ############################################################## -# ESP8285 chip has built-in 1MB flash - esp8285.name=Generic ESP8285 Module - +esp8285.build.board=ESP8266_ESP01 esp8285.upload.tool=esptool esp8285.upload.speed=115200 -esp8285.upload.resetmethod=ck -esp8285.upload.maximum_size=434160 esp8285.upload.maximum_data_size=81920 esp8285.upload.wait_for_upload_port=true esp8285.serial.disableDTR=true esp8285.serial.disableRTS=true - esp8285.build.mcu=esp8266 -esp8285.build.f_cpu=80000000L -esp8285.build.board=ESP8266_ESP01 esp8285.build.core=esp8266 esp8285.build.variant=generic -esp8285.build.flash_mode=dout -esp8285.build.flash_freq=40 esp8285.build.spiffs_pagesize=256 esp8285.build.debug_port= esp8285.build.debug_level= - esp8285.menu.CpuFrequency.80=80 MHz esp8285.menu.CpuFrequency.80.build.f_cpu=80000000L esp8285.menu.CpuFrequency.160=160 MHz esp8285.menu.CpuFrequency.160.build.f_cpu=160000000L - +esp8285.menu.ResetMethod.ck=ck +esp8285.menu.ResetMethod.ck.upload.resetmethod=ck +esp8285.menu.ResetMethod.nodemcu=nodemcu +esp8285.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu +esp8285.menu.CrystalFreq.26=26 MHz +esp8285.menu.CrystalFreq.40=40 MHz +esp8285.menu.CrystalFreq.40.build.extra_flags=-DF_CRYSTAL=40000000 +esp8285.build.flash_mode=dout +esp8285.build.flash_freq=40 +esp8285.menu.FlashSize.1M0=1M (no SPIFFS) +esp8285.menu.FlashSize.1M0.build.flash_size=1M +esp8285.menu.FlashSize.1M0.build.flash_ld=eagle.flash.1m0.ld +esp8285.menu.FlashSize.1M0.build.spiffs_pagesize=256 +esp8285.menu.FlashSize.1M0.upload.maximum_size=1023984 +esp8285.menu.FlashSize.1M64=1M (64K SPIFFS) +esp8285.menu.FlashSize.1M64.build.flash_size=1M +esp8285.menu.FlashSize.1M64.build.flash_ld=eagle.flash.1m64.ld +esp8285.menu.FlashSize.1M64.build.spiffs_pagesize=256 +esp8285.menu.FlashSize.1M64.upload.maximum_size=958448 +esp8285.menu.FlashSize.1M64.build.spiffs_start=0xEB000 +esp8285.menu.FlashSize.1M64.build.spiffs_end=0xFB000 +esp8285.menu.FlashSize.1M64.build.spiffs_blocksize=4096 +esp8285.menu.FlashSize.1M128=1M (128K SPIFFS) +esp8285.menu.FlashSize.1M128.build.flash_size=1M +esp8285.menu.FlashSize.1M128.build.flash_ld=eagle.flash.1m128.ld +esp8285.menu.FlashSize.1M128.build.spiffs_pagesize=256 +esp8285.menu.FlashSize.1M128.upload.maximum_size=892912 +esp8285.menu.FlashSize.1M128.build.spiffs_start=0xDB000 +esp8285.menu.FlashSize.1M128.build.spiffs_end=0xFB000 +esp8285.menu.FlashSize.1M128.build.spiffs_blocksize=4096 +esp8285.menu.FlashSize.1M144=1M (144K SPIFFS) +esp8285.menu.FlashSize.1M144.build.flash_size=1M +esp8285.menu.FlashSize.1M144.build.flash_ld=eagle.flash.1m144.ld +esp8285.menu.FlashSize.1M144.build.spiffs_pagesize=256 +esp8285.menu.FlashSize.1M144.upload.maximum_size=876528 +esp8285.menu.FlashSize.1M144.build.spiffs_start=0xD7000 +esp8285.menu.FlashSize.1M144.build.spiffs_end=0xFB000 +esp8285.menu.FlashSize.1M144.build.spiffs_blocksize=4096 +esp8285.menu.FlashSize.1M160=1M (160K SPIFFS) +esp8285.menu.FlashSize.1M160.build.flash_size=1M +esp8285.menu.FlashSize.1M160.build.flash_ld=eagle.flash.1m160.ld +esp8285.menu.FlashSize.1M160.build.spiffs_pagesize=256 +esp8285.menu.FlashSize.1M160.upload.maximum_size=860144 +esp8285.menu.FlashSize.1M160.build.spiffs_start=0xD3000 +esp8285.menu.FlashSize.1M160.build.spiffs_end=0xFB000 +esp8285.menu.FlashSize.1M160.build.spiffs_blocksize=4096 +esp8285.menu.FlashSize.1M192=1M (192K SPIFFS) +esp8285.menu.FlashSize.1M192.build.flash_size=1M +esp8285.menu.FlashSize.1M192.build.flash_ld=eagle.flash.1m192.ld +esp8285.menu.FlashSize.1M192.build.spiffs_pagesize=256 +esp8285.menu.FlashSize.1M192.upload.maximum_size=827376 +esp8285.menu.FlashSize.1M192.build.spiffs_start=0xCB000 +esp8285.menu.FlashSize.1M192.build.spiffs_end=0xFB000 +esp8285.menu.FlashSize.1M192.build.spiffs_blocksize=4096 +esp8285.menu.FlashSize.1M256=1M (256K SPIFFS) +esp8285.menu.FlashSize.1M256.build.flash_size=1M +esp8285.menu.FlashSize.1M256.build.flash_ld=eagle.flash.1m256.ld +esp8285.menu.FlashSize.1M256.build.spiffs_pagesize=256 +esp8285.menu.FlashSize.1M256.upload.maximum_size=761840 +esp8285.menu.FlashSize.1M256.build.spiffs_start=0xBB000 +esp8285.menu.FlashSize.1M256.build.spiffs_end=0xFB000 +esp8285.menu.FlashSize.1M256.build.spiffs_blocksize=4096 +esp8285.menu.FlashSize.1M512=1M (512K SPIFFS) +esp8285.menu.FlashSize.1M512.build.flash_size=1M +esp8285.menu.FlashSize.1M512.build.flash_ld=eagle.flash.1m512.ld +esp8285.menu.FlashSize.1M512.build.spiffs_pagesize=256 +esp8285.menu.FlashSize.1M512.upload.maximum_size=499696 +esp8285.menu.FlashSize.1M512.build.spiffs_start=0x7B000 +esp8285.menu.FlashSize.1M512.build.spiffs_end=0xFB000 +esp8285.menu.FlashSize.1M512.build.spiffs_blocksize=8192 +esp8285.menu.LwIPVariant.open=v2 +esp8285.menu.LwIPVariant.open.build.lwip_include=lwip2/include +esp8285.menu.LwIPVariant.open.build.lwip_lib=-llwip2 +esp8285.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +esp8285.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc +esp8285.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC +esp8285.menu.LwIPVariant.Espressif=Espressif (xcc) +esp8285.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip +esp8285.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC +esp8285.menu.LwIPVariant.OpenSource=Open Source (gcc) +esp8285.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src +esp8285.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC +esp8285.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" +esp8285.menu.Debug.Disabled=Disabled +esp8285.menu.Debug.Disabled.build.debug_port= +esp8285.menu.Debug.Serial=Serial +esp8285.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +esp8285.menu.Debug.Serial1=Serial1 +esp8285.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 +esp8285.menu.DebugLevel.None____=None +esp8285.menu.DebugLevel.None____.build.debug_level= +esp8285.menu.DebugLevel.SSL=SSL +esp8285.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL +esp8285.menu.DebugLevel.TLS_MEM=TLS_MEM +esp8285.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM +esp8285.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT +esp8285.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT +esp8285.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER +esp8285.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER +esp8285.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM +esp8285.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM +esp8285.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT +esp8285.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT +esp8285.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER +esp8285.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER +esp8285.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT +esp8285.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +esp8285.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER +esp8285.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +esp8285.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER +esp8285.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT +esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER +esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +esp8285.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER +esp8285.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +esp8285.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER +esp8285.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER +esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +esp8285.menu.DebugLevel.CORE=CORE +esp8285.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE +esp8285.menu.DebugLevel.WIFI=WIFI +esp8285.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI +esp8285.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE +esp8285.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE +esp8285.menu.DebugLevel.UPDATER=UPDATER +esp8285.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER +esp8285.menu.DebugLevel.OTA=OTA +esp8285.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA +esp8285.menu.DebugLevel.NULL=NULL +esp8285.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +esp8285.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +esp8285.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" esp8285.menu.UploadSpeed.115200=115200 esp8285.menu.UploadSpeed.115200.upload.speed=115200 esp8285.menu.UploadSpeed.9600=9600 @@ -279,104 +426,125 @@ esp8285.menu.UploadSpeed.9600.upload.speed=9600 esp8285.menu.UploadSpeed.57600=57600 esp8285.menu.UploadSpeed.57600.upload.speed=57600 esp8285.menu.UploadSpeed.256000.windows=256000 -esp8285.menu.UploadSpeed.256000.upload.speed=256000 +esp8285.menu.UploadSpeed.256000.windows.upload.speed=256000 esp8285.menu.UploadSpeed.230400.linux=230400 +esp8285.menu.UploadSpeed.230400.linux.upload.speed=230400 esp8285.menu.UploadSpeed.230400.macosx=230400 -esp8285.menu.UploadSpeed.230400.upload.speed=230400 +esp8285.menu.UploadSpeed.230400.macosx.upload.speed=230400 esp8285.menu.UploadSpeed.460800.linux=460800 +esp8285.menu.UploadSpeed.460800.linux.upload.speed=460800 esp8285.menu.UploadSpeed.460800.macosx=460800 -esp8285.menu.UploadSpeed.460800.upload.speed=460800 +esp8285.menu.UploadSpeed.460800.macosx.upload.speed=460800 esp8285.menu.UploadSpeed.512000.windows=512000 -esp8285.menu.UploadSpeed.512000.upload.speed=512000 +esp8285.menu.UploadSpeed.512000.windows.upload.speed=512000 esp8285.menu.UploadSpeed.921600=921600 esp8285.menu.UploadSpeed.921600.upload.speed=921600 -esp8285.menu.FlashSize.1M512=1M (512K SPIFFS) -esp8285.menu.FlashSize.1M512.build.flash_size=1M -esp8285.menu.FlashSize.1M512.build.flash_ld=eagle.flash.1m512.ld -esp8285.menu.FlashSize.1M512.build.spiffs_start=0x7B000 -esp8285.menu.FlashSize.1M512.build.spiffs_end=0xFB000 -esp8285.menu.FlashSize.1M512.build.spiffs_blocksize=8192 -esp8285.menu.FlashSize.1M512.upload.maximum_size=499696 - -esp8285.menu.FlashSize.1M256=1M (256K SPIFFS) -esp8285.menu.FlashSize.1M256.build.flash_size=1M -esp8285.menu.FlashSize.1M256.build.flash_ld=eagle.flash.1m256.ld -esp8285.menu.FlashSize.1M256.build.spiffs_start=0xBB000 -esp8285.menu.FlashSize.1M256.build.spiffs_end=0xFB000 -esp8285.menu.FlashSize.1M256.build.spiffs_blocksize=4096 -esp8285.menu.FlashSize.1M256.upload.maximum_size=761840 - -esp8285.menu.FlashSize.1M192=1M (192K SPIFFS) -esp8285.menu.FlashSize.1M192.build.flash_size=1M -esp8285.menu.FlashSize.1M192.build.flash_ld=eagle.flash.1m192.ld -esp8285.menu.FlashSize.1M192.build.spiffs_start=0xCB000 -esp8285.menu.FlashSize.1M192.build.spiffs_end=0xFB000 -esp8285.menu.FlashSize.1M192.build.spiffs_blocksize=4096 -esp8285.menu.FlashSize.1M192.upload.maximum_size=827376 - -esp8285.menu.FlashSize.1M160=1M (160K SPIFFS) -esp8285.menu.FlashSize.1M160.build.flash_size=1M -esp8285.menu.FlashSize.1M160.build.flash_ld=eagle.flash.1m160.ld -esp8285.menu.FlashSize.1M160.build.spiffs_start=0xD3000 -esp8285.menu.FlashSize.1M160.build.spiffs_end=0xFB000 -esp8285.menu.FlashSize.1M160.build.spiffs_blocksize=4096 -esp8285.menu.FlashSize.1M160.upload.maximum_size=860144 - -esp8285.menu.FlashSize.1M144=1M (144K SPIFFS) -esp8285.menu.FlashSize.1M144.build.flash_size=1M -esp8285.menu.FlashSize.1M144.build.flash_ld=eagle.flash.1m144.ld -esp8285.menu.FlashSize.1M144.build.spiffs_start=0xD7000 -esp8285.menu.FlashSize.1M144.build.spiffs_end=0xFB000 -esp8285.menu.FlashSize.1M144.build.spiffs_blocksize=4096 -esp8285.menu.FlashSize.1M144.upload.maximum_size=876528 - -esp8285.menu.FlashSize.1M128=1M (128K SPIFFS) -esp8285.menu.FlashSize.1M128.build.flash_size=1M -esp8285.menu.FlashSize.1M128.build.flash_ld=eagle.flash.1m128.ld -esp8285.menu.FlashSize.1M128.build.spiffs_start=0xDB000 -esp8285.menu.FlashSize.1M128.build.spiffs_end=0xFB000 -esp8285.menu.FlashSize.1M128.build.spiffs_blocksize=4096 -esp8285.menu.FlashSize.1M128.upload.maximum_size=892912 - -esp8285.menu.FlashSize.1M64=1M (64K SPIFFS) -esp8285.menu.FlashSize.1M64.build.flash_size=1M -esp8285.menu.FlashSize.1M64.build.flash_ld=eagle.flash.1m64.ld -esp8285.menu.FlashSize.1M64.build.spiffs_start=0xEB000 -esp8285.menu.FlashSize.1M64.build.spiffs_end=0xFB000 -esp8285.menu.FlashSize.1M64.build.spiffs_blocksize=4096 -esp8285.menu.FlashSize.1M64.upload.maximum_size=958448 - - ############################################################## - espduino.name=ESPDuino (ESP-13 Module) - +espduino.build.board=ESP8266_ESP13 +espduino.build.variant=ESPDuino espduino.upload.tool=esptool espduino.upload.speed=115200 -espduino.upload.resetmethod=ck -espduino.upload.maximum_size=1044464 espduino.upload.maximum_data_size=81920 espduino.upload.wait_for_upload_port=true espduino.serial.disableDTR=true espduino.serial.disableRTS=true - espduino.build.mcu=esp8266 -espduino.build.f_cpu=80000000L -espduino.build.board=ESP8266_ESP13 espduino.build.core=esp8266 -espduino.build.variant=ESPDuino -espduino.build.flash_mode=dio -espduino.build.flash_size=4M -espduino.build.flash_freq=40 +espduino.build.spiffs_pagesize=256 espduino.build.debug_port= espduino.build.debug_level= - espduino.menu.CpuFrequency.80=80 MHz espduino.menu.CpuFrequency.80.build.f_cpu=80000000L espduino.menu.CpuFrequency.160=160 MHz espduino.menu.CpuFrequency.160.build.f_cpu=160000000L - +espduino.upload.resetmethod=ck +espduino.build.flash_mode=dio +espduino.build.flash_freq=40 +espduino.menu.FlashSize.4M1M=4M (1M SPIFFS) +espduino.menu.FlashSize.4M1M.build.flash_size=4M +espduino.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +espduino.menu.FlashSize.4M1M.build.spiffs_pagesize=256 +espduino.menu.FlashSize.4M1M.upload.maximum_size=1044464 +espduino.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +espduino.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +espduino.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +espduino.menu.FlashSize.4M3M=4M (3M SPIFFS) +espduino.menu.FlashSize.4M3M.build.flash_size=4M +espduino.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +espduino.menu.FlashSize.4M3M.build.spiffs_pagesize=256 +espduino.menu.FlashSize.4M3M.upload.maximum_size=1044464 +espduino.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +espduino.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +espduino.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +espduino.menu.LwIPVariant.open=v2 +espduino.menu.LwIPVariant.open.build.lwip_include=lwip2/include +espduino.menu.LwIPVariant.open.build.lwip_lib=-llwip2 +espduino.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +espduino.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc +espduino.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC +espduino.menu.LwIPVariant.Espressif=Espressif (xcc) +espduino.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip +espduino.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC +espduino.menu.LwIPVariant.OpenSource=Open Source (gcc) +espduino.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src +espduino.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC +espduino.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" +espduino.menu.Debug.Disabled=Disabled +espduino.menu.Debug.Disabled.build.debug_port= +espduino.menu.Debug.Serial=Serial +espduino.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +espduino.menu.Debug.Serial1=Serial1 +espduino.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 +espduino.menu.DebugLevel.None____=None +espduino.menu.DebugLevel.None____.build.debug_level= +espduino.menu.DebugLevel.SSL=SSL +espduino.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL +espduino.menu.DebugLevel.TLS_MEM=TLS_MEM +espduino.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM +espduino.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT +espduino.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT +espduino.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER +espduino.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER +espduino.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM +espduino.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM +espduino.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT +espduino.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT +espduino.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER +espduino.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER +espduino.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT +espduino.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +espduino.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER +espduino.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +espduino.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER +espduino.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +espduino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT +espduino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +espduino.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER +espduino.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +espduino.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER +espduino.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +espduino.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER +espduino.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +espduino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER +espduino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +espduino.menu.DebugLevel.CORE=CORE +espduino.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE +espduino.menu.DebugLevel.WIFI=WIFI +espduino.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI +espduino.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE +espduino.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE +espduino.menu.DebugLevel.UPDATER=UPDATER +espduino.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER +espduino.menu.DebugLevel.OTA=OTA +espduino.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA +espduino.menu.DebugLevel.NULL=NULL +espduino.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +espduino.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +espduino.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +espduino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +espduino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" espduino.menu.UploadSpeed.115200=115200 espduino.menu.UploadSpeed.115200.upload.speed=115200 espduino.menu.UploadSpeed.9600=9600 @@ -384,537 +552,767 @@ espduino.menu.UploadSpeed.9600.upload.speed=9600 espduino.menu.UploadSpeed.57600=57600 espduino.menu.UploadSpeed.57600.upload.speed=57600 espduino.menu.UploadSpeed.256000.windows=256000 -espduino.menu.UploadSpeed.256000.upload.speed=256000 +espduino.menu.UploadSpeed.256000.windows.upload.speed=256000 espduino.menu.UploadSpeed.230400.linux=230400 +espduino.menu.UploadSpeed.230400.linux.upload.speed=230400 espduino.menu.UploadSpeed.230400.macosx=230400 -espduino.menu.UploadSpeed.230400.macosx=230400 -espduino.menu.UploadSpeed.230400.upload.speed=230400 +espduino.menu.UploadSpeed.230400.macosx.upload.speed=230400 espduino.menu.UploadSpeed.460800.linux=460800 +espduino.menu.UploadSpeed.460800.linux.upload.speed=460800 espduino.menu.UploadSpeed.460800.macosx=460800 -espduino.menu.UploadSpeed.460800.upload.speed=460800 +espduino.menu.UploadSpeed.460800.macosx.upload.speed=460800 espduino.menu.UploadSpeed.512000.windows=512000 -espduino.menu.UploadSpeed.512000.upload.speed=512000 +espduino.menu.UploadSpeed.512000.windows.upload.speed=512000 espduino.menu.UploadSpeed.921600=921600 espduino.menu.UploadSpeed.921600.upload.speed=921600 -espduino.menu.FlashSize.4M3M=4M (3M SPIFFS) -espduino.menu.FlashSize.4M3M.build.flash_size=4M -espduino.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -espduino.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -espduino.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -espduino.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -espduino.menu.FlashSize.4M3M.build.spiffs_pagesize=256 - -espduino.menu.FlashSize.4M1M=4M (1M SPIFFS) -espduino.menu.FlashSize.4M1M.build.flash_size=4M -espduino.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -espduino.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -espduino.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -espduino.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -espduino.menu.FlashSize.4M1M.build.spiffs_pagesize=256 ############################################################## huzzah.name=Adafruit HUZZAH ESP8266 - +huzzah.build.board=ESP8266_ESP12 +huzzah.build.variant=adafruit huzzah.upload.tool=esptool huzzah.upload.speed=115200 -huzzah.upload.resetmethod=nodemcu -huzzah.upload.maximum_size=1044464 huzzah.upload.maximum_data_size=81920 huzzah.upload.wait_for_upload_port=true huzzah.serial.disableDTR=true huzzah.serial.disableRTS=true - huzzah.build.mcu=esp8266 -huzzah.build.f_cpu=80000000L -huzzah.build.board=ESP8266_ESP12 huzzah.build.core=esp8266 -huzzah.build.variant=adafruit -huzzah.build.flash_mode=qio -huzzah.build.flash_size=4M -huzzah.build.flash_freq=40 +huzzah.build.spiffs_pagesize=256 huzzah.build.debug_port= huzzah.build.debug_level= - huzzah.menu.CpuFrequency.80=80 MHz huzzah.menu.CpuFrequency.80.build.f_cpu=80000000L huzzah.menu.CpuFrequency.160=160 MHz huzzah.menu.CpuFrequency.160.build.f_cpu=160000000L - +huzzah.upload.resetmethod=nodemcu +huzzah.build.flash_mode=qio +huzzah.build.flash_freq=40 +huzzah.menu.FlashSize.4M1M=4M (1M SPIFFS) +huzzah.menu.FlashSize.4M1M.build.flash_size=4M +huzzah.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +huzzah.menu.FlashSize.4M1M.build.spiffs_pagesize=256 +huzzah.menu.FlashSize.4M1M.upload.maximum_size=1044464 +huzzah.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +huzzah.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +huzzah.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +huzzah.menu.FlashSize.4M3M=4M (3M SPIFFS) +huzzah.menu.FlashSize.4M3M.build.flash_size=4M +huzzah.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +huzzah.menu.FlashSize.4M3M.build.spiffs_pagesize=256 +huzzah.menu.FlashSize.4M3M.upload.maximum_size=1044464 +huzzah.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +huzzah.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +huzzah.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +huzzah.menu.LwIPVariant.open=v2 +huzzah.menu.LwIPVariant.open.build.lwip_include=lwip2/include +huzzah.menu.LwIPVariant.open.build.lwip_lib=-llwip2 +huzzah.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +huzzah.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc +huzzah.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC +huzzah.menu.LwIPVariant.Espressif=Espressif (xcc) +huzzah.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip +huzzah.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC +huzzah.menu.LwIPVariant.OpenSource=Open Source (gcc) +huzzah.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src +huzzah.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC +huzzah.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" +huzzah.menu.Debug.Disabled=Disabled +huzzah.menu.Debug.Disabled.build.debug_port= +huzzah.menu.Debug.Serial=Serial +huzzah.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +huzzah.menu.Debug.Serial1=Serial1 +huzzah.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 +huzzah.menu.DebugLevel.None____=None +huzzah.menu.DebugLevel.None____.build.debug_level= +huzzah.menu.DebugLevel.SSL=SSL +huzzah.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL +huzzah.menu.DebugLevel.TLS_MEM=TLS_MEM +huzzah.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM +huzzah.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT +huzzah.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT +huzzah.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER +huzzah.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER +huzzah.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM +huzzah.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM +huzzah.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT +huzzah.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT +huzzah.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER +huzzah.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER +huzzah.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT +huzzah.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +huzzah.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER +huzzah.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +huzzah.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER +huzzah.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT +huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER +huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +huzzah.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER +huzzah.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +huzzah.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER +huzzah.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER +huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +huzzah.menu.DebugLevel.CORE=CORE +huzzah.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE +huzzah.menu.DebugLevel.WIFI=WIFI +huzzah.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI +huzzah.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE +huzzah.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE +huzzah.menu.DebugLevel.UPDATER=UPDATER +huzzah.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER +huzzah.menu.DebugLevel.OTA=OTA +huzzah.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA +huzzah.menu.DebugLevel.NULL=NULL +huzzah.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +huzzah.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +huzzah.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" huzzah.menu.UploadSpeed.115200=115200 huzzah.menu.UploadSpeed.115200.upload.speed=115200 huzzah.menu.UploadSpeed.9600=9600 huzzah.menu.UploadSpeed.9600.upload.speed=9600 huzzah.menu.UploadSpeed.57600=57600 huzzah.menu.UploadSpeed.57600.upload.speed=57600 -huzzah.menu.UploadSpeed.256000=256000 -huzzah.menu.UploadSpeed.256000.upload.speed=256000 +huzzah.menu.UploadSpeed.256000.windows=256000 +huzzah.menu.UploadSpeed.256000.windows.upload.speed=256000 +huzzah.menu.UploadSpeed.230400.linux=230400 +huzzah.menu.UploadSpeed.230400.linux.upload.speed=230400 +huzzah.menu.UploadSpeed.230400.macosx=230400 +huzzah.menu.UploadSpeed.230400.macosx.upload.speed=230400 +huzzah.menu.UploadSpeed.460800.linux=460800 +huzzah.menu.UploadSpeed.460800.linux.upload.speed=460800 +huzzah.menu.UploadSpeed.460800.macosx=460800 +huzzah.menu.UploadSpeed.460800.macosx.upload.speed=460800 +huzzah.menu.UploadSpeed.512000.windows=512000 +huzzah.menu.UploadSpeed.512000.windows.upload.speed=512000 huzzah.menu.UploadSpeed.921600=921600 huzzah.menu.UploadSpeed.921600.upload.speed=921600 -huzzah.menu.FlashSize.4M3M=4M (3M SPIFFS) -huzzah.menu.FlashSize.4M3M.build.flash_size=4M -huzzah.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -huzzah.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -huzzah.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -huzzah.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -huzzah.menu.FlashSize.4M3M.build.spiffs_pagesize=256 - -huzzah.menu.FlashSize.4M1M=4M (1M SPIFFS) -huzzah.menu.FlashSize.4M1M.build.flash_size=4M -huzzah.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -huzzah.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -huzzah.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -huzzah.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -huzzah.menu.FlashSize.4M1M.build.spiffs_pagesize=256 - ############################################################## espresso_lite_v1.name=ESPresso Lite 1.0 +espresso_lite_v1.build.board=ESP8266_ESPRESSO_LITE_V1 +espresso_lite_v1.build.variant=espresso_lite_v1 espresso_lite_v1.upload.tool=esptool espresso_lite_v1.upload.speed=115200 -espresso_lite_v1.upload.maximum_size=1044464 espresso_lite_v1.upload.maximum_data_size=81920 espresso_lite_v1.upload.wait_for_upload_port=true - +espresso_lite_v1.serial.disableDTR=true +espresso_lite_v1.serial.disableRTS=true espresso_lite_v1.build.mcu=esp8266 -espresso_lite_v1.build.f_cpu=80000000L -espresso_lite_v1.build.board=ESP8266_ESPRESSO_LITE_V1 espresso_lite_v1.build.core=esp8266 -espresso_lite_v1.build.variant=espresso_lite_v1 -espresso_lite_v1.build.flash_mode=dio -espresso_lite_v1.build.flash_size=4M -espresso_lite_v1.build.flash_freq=40 - +espresso_lite_v1.build.spiffs_pagesize=256 +espresso_lite_v1.build.debug_port= +espresso_lite_v1.build.debug_level= espresso_lite_v1.menu.CpuFrequency.80=80 MHz espresso_lite_v1.menu.CpuFrequency.80.build.f_cpu=80000000L espresso_lite_v1.menu.CpuFrequency.160=160 MHz espresso_lite_v1.menu.CpuFrequency.160.build.f_cpu=160000000L - -espresso_lite_v1.menu.UploadSpeed.115200=115200 -espresso_lite_v1.menu.UploadSpeed.115200.upload.speed=115200 -espresso_lite_v1.menu.UploadSpeed.57600=57600 -espresso_lite_v1.menu.UploadSpeed.57600.upload.speed=57600 -espresso_lite_v1.menu.UploadSpeed.256000.windows=256000 -espresso_lite_v1.menu.UploadSpeed.256000.upload.speed=256000 -espresso_lite_v1.menu.UploadSpeed.230400.linux=230400 -espresso_lite_v1.menu.UploadSpeed.230400.macosx=230400 -espresso_lite_v1.menu.UploadSpeed.230400.macosx=230400 -espresso_lite_v1.menu.UploadSpeed.230400.upload.speed=230400 -espresso_lite_v1.menu.UploadSpeed.460800.linux=460800 -espresso_lite_v1.menu.UploadSpeed.460800.macosx=460800 -espresso_lite_v1.menu.UploadSpeed.460800.upload.speed=460800 -espresso_lite_v1.menu.UploadSpeed.512000.windows=512000 -espresso_lite_v1.menu.UploadSpeed.512000.upload.speed=512000 -espresso_lite_v1.menu.UploadSpeed.921600=921600 -espresso_lite_v1.menu.UploadSpeed.921600.upload.speed=921600 - -espresso_lite_v1.menu.FlashSize.4M3M=4M (3M SPIFFS) -espresso_lite_v1.menu.FlashSize.4M3M.build.flash_size=4M -espresso_lite_v1.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -espresso_lite_v1.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -espresso_lite_v1.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -espresso_lite_v1.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -espresso_lite_v1.menu.FlashSize.4M3M.upload.maximum_size=1044464 - +espresso_lite_v1.build.flash_mode=dio +espresso_lite_v1.build.flash_freq=40 espresso_lite_v1.menu.FlashSize.4M1M=4M (1M SPIFFS) espresso_lite_v1.menu.FlashSize.4M1M.build.flash_size=4M espresso_lite_v1.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +espresso_lite_v1.menu.FlashSize.4M1M.build.spiffs_pagesize=256 +espresso_lite_v1.menu.FlashSize.4M1M.upload.maximum_size=1044464 espresso_lite_v1.menu.FlashSize.4M1M.build.spiffs_start=0x300000 espresso_lite_v1.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 espresso_lite_v1.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -espresso_lite_v1.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -espresso_lite_v1.menu.FlashSize.4M1M.upload.maximum_size=1044464 - -espresso_lite_v1.menu.ResetMethod.nodemcu=nodemcu -espresso_lite_v1.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu +espresso_lite_v1.menu.FlashSize.4M3M=4M (3M SPIFFS) +espresso_lite_v1.menu.FlashSize.4M3M.build.flash_size=4M +espresso_lite_v1.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +espresso_lite_v1.menu.FlashSize.4M3M.build.spiffs_pagesize=256 +espresso_lite_v1.menu.FlashSize.4M3M.upload.maximum_size=1044464 +espresso_lite_v1.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +espresso_lite_v1.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +espresso_lite_v1.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 espresso_lite_v1.menu.ResetMethod.ck=ck espresso_lite_v1.menu.ResetMethod.ck.upload.resetmethod=ck - +espresso_lite_v1.menu.ResetMethod.nodemcu=nodemcu +espresso_lite_v1.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu +espresso_lite_v1.menu.LwIPVariant.open=v2 +espresso_lite_v1.menu.LwIPVariant.open.build.lwip_include=lwip2/include +espresso_lite_v1.menu.LwIPVariant.open.build.lwip_lib=-llwip2 +espresso_lite_v1.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +espresso_lite_v1.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc +espresso_lite_v1.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC +espresso_lite_v1.menu.LwIPVariant.Espressif=Espressif (xcc) +espresso_lite_v1.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip +espresso_lite_v1.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC +espresso_lite_v1.menu.LwIPVariant.OpenSource=Open Source (gcc) +espresso_lite_v1.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src +espresso_lite_v1.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC +espresso_lite_v1.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" espresso_lite_v1.menu.Debug.Disabled=Disabled espresso_lite_v1.menu.Debug.Disabled.build.debug_port= espresso_lite_v1.menu.Debug.Serial=Serial espresso_lite_v1.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial espresso_lite_v1.menu.Debug.Serial1=Serial1 espresso_lite_v1.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 - espresso_lite_v1.menu.DebugLevel.None____=None espresso_lite_v1.menu.DebugLevel.None____.build.debug_level= -espresso_lite_v1.menu.DebugLevel.Core____=Core -espresso_lite_v1.menu.DebugLevel.Core____.build.debug_level=-DDEBUG_ESP_CORE -espresso_lite_v1.menu.DebugLevel.SSL_____=Core + SSL -espresso_lite_v1.menu.DebugLevel.SSL_____.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -espresso_lite_v1.menu.DebugLevel.SSL_MEM_=Core + SSL + TLS Mem -espresso_lite_v1.menu.DebugLevel.SSL_MEM_.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_TLS_MEM -espresso_lite_v1.menu.DebugLevel.WiFic___=Core + WiFi -espresso_lite_v1.menu.DebugLevel.WiFic___.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -espresso_lite_v1.menu.DebugLevel.WiFi____=WiFi -espresso_lite_v1.menu.DebugLevel.WiFi____.build.debug_level=-DDEBUG_ESP_WIFI -espresso_lite_v1.menu.DebugLevel.HTTPClient=HTTPClient -espresso_lite_v1.menu.DebugLevel.HTTPClient.build.debug_level=-DDEBUG_ESP_HTTP_CLIENT -espresso_lite_v1.menu.DebugLevel.HTTPClient2=HTTPClient + SSL -espresso_lite_v1.menu.DebugLevel.HTTPClient2.build.debug_level=-DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_SSL -espresso_lite_v1.menu.DebugLevel.HTTPUpdate=HTTPUpdate -espresso_lite_v1.menu.DebugLevel.HTTPUpdate.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -espresso_lite_v1.menu.DebugLevel.HTTPUpdate2=HTTPClient + HTTPUpdate -espresso_lite_v1.menu.DebugLevel.HTTPUpdate2.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_UPDATE -espresso_lite_v1.menu.DebugLevel.HTTPUpdate3=HTTPClient + HTTPUpdate + Updater -espresso_lite_v1.menu.DebugLevel.HTTPUpdate3.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -espresso_lite_v1.menu.DebugLevel.HTTPServer=HTTPServer -espresso_lite_v1.menu.DebugLevel.HTTPServer.build.debug_level=-DDEBUG_ESP_HTTP_SERVER -espresso_lite_v1.menu.DebugLevel.UPDATER=Updater -espresso_lite_v1.menu.DebugLevel.UPDATER.build.debug_level=-DDEBUG_ESP_UPDATER -espresso_lite_v1.menu.DebugLevel.OTA_____=OTA -espresso_lite_v1.menu.DebugLevel.OTA_____.build.debug_level=-DDEBUG_ESP_OTA -espresso_lite_v1.menu.DebugLevel.OTA2____=OTA + Updater -espresso_lite_v1.menu.DebugLevel.OTA2____.build.debug_level=-DDEBUG_ESP_OTA -DDEBUG_ESP_UPDATER -espresso_lite_v1.menu.DebugLevel.all_____=All -espresso_lite_v1.menu.DebugLevel.all_____.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_TLS_MEM - -espresso_lite_v1.build.debug_port= -espresso_lite_v1.build.debug_level= +espresso_lite_v1.menu.DebugLevel.SSL=SSL +espresso_lite_v1.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL +espresso_lite_v1.menu.DebugLevel.TLS_MEM=TLS_MEM +espresso_lite_v1.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM +espresso_lite_v1.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT +espresso_lite_v1.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT +espresso_lite_v1.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER +espresso_lite_v1.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER +espresso_lite_v1.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM +espresso_lite_v1.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM +espresso_lite_v1.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT +espresso_lite_v1.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT +espresso_lite_v1.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER +espresso_lite_v1.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER +espresso_lite_v1.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT +espresso_lite_v1.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +espresso_lite_v1.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER +espresso_lite_v1.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +espresso_lite_v1.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER +espresso_lite_v1.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT +espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER +espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +espresso_lite_v1.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER +espresso_lite_v1.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +espresso_lite_v1.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER +espresso_lite_v1.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER +espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +espresso_lite_v1.menu.DebugLevel.CORE=CORE +espresso_lite_v1.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE +espresso_lite_v1.menu.DebugLevel.WIFI=WIFI +espresso_lite_v1.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI +espresso_lite_v1.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE +espresso_lite_v1.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE +espresso_lite_v1.menu.DebugLevel.UPDATER=UPDATER +espresso_lite_v1.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER +espresso_lite_v1.menu.DebugLevel.OTA=OTA +espresso_lite_v1.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA +espresso_lite_v1.menu.DebugLevel.NULL=NULL +espresso_lite_v1.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +espresso_lite_v1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +espresso_lite_v1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +espresso_lite_v1.menu.UploadSpeed.115200=115200 +espresso_lite_v1.menu.UploadSpeed.115200.upload.speed=115200 +espresso_lite_v1.menu.UploadSpeed.9600=9600 +espresso_lite_v1.menu.UploadSpeed.9600.upload.speed=9600 +espresso_lite_v1.menu.UploadSpeed.57600=57600 +espresso_lite_v1.menu.UploadSpeed.57600.upload.speed=57600 +espresso_lite_v1.menu.UploadSpeed.256000.windows=256000 +espresso_lite_v1.menu.UploadSpeed.256000.windows.upload.speed=256000 +espresso_lite_v1.menu.UploadSpeed.230400.linux=230400 +espresso_lite_v1.menu.UploadSpeed.230400.linux.upload.speed=230400 +espresso_lite_v1.menu.UploadSpeed.230400.macosx=230400 +espresso_lite_v1.menu.UploadSpeed.230400.macosx.upload.speed=230400 +espresso_lite_v1.menu.UploadSpeed.460800.linux=460800 +espresso_lite_v1.menu.UploadSpeed.460800.linux.upload.speed=460800 +espresso_lite_v1.menu.UploadSpeed.460800.macosx=460800 +espresso_lite_v1.menu.UploadSpeed.460800.macosx.upload.speed=460800 +espresso_lite_v1.menu.UploadSpeed.512000.windows=512000 +espresso_lite_v1.menu.UploadSpeed.512000.windows.upload.speed=512000 +espresso_lite_v1.menu.UploadSpeed.921600=921600 +espresso_lite_v1.menu.UploadSpeed.921600.upload.speed=921600 ############################################################## espresso_lite_v2.name=ESPresso Lite 2.0 +espresso_lite_v2.build.board=ESP8266_ESPRESSO_LITE_V2 +espresso_lite_v2.build.variant=espresso_lite_v2 espresso_lite_v2.upload.tool=esptool espresso_lite_v2.upload.speed=115200 -espresso_lite_v2.upload.maximum_size=1044464 espresso_lite_v2.upload.maximum_data_size=81920 espresso_lite_v2.upload.wait_for_upload_port=true - +espresso_lite_v2.serial.disableDTR=true +espresso_lite_v2.serial.disableRTS=true espresso_lite_v2.build.mcu=esp8266 -espresso_lite_v2.build.f_cpu=80000000L -espresso_lite_v2.build.board=ESP8266_ESPRESSO_LITE_V2 espresso_lite_v2.build.core=esp8266 -espresso_lite_v2.build.variant=espresso_lite_v2 -espresso_lite_v2.build.flash_mode=dio -espresso_lite_v2.build.flash_size=4M -espresso_lite_v2.build.flash_freq=40 - +espresso_lite_v2.build.spiffs_pagesize=256 +espresso_lite_v2.build.debug_port= +espresso_lite_v2.build.debug_level= espresso_lite_v2.menu.CpuFrequency.80=80 MHz espresso_lite_v2.menu.CpuFrequency.80.build.f_cpu=80000000L espresso_lite_v2.menu.CpuFrequency.160=160 MHz espresso_lite_v2.menu.CpuFrequency.160.build.f_cpu=160000000L - -espresso_lite_v2.menu.UploadSpeed.115200=115200 -espresso_lite_v2.menu.UploadSpeed.115200.upload.speed=115200 -espresso_lite_v2.menu.UploadSpeed.57600=57600 -espresso_lite_v2.menu.UploadSpeed.57600.upload.speed=57600 -espresso_lite_v2.menu.UploadSpeed.256000.windows=256000 -espresso_lite_v2.menu.UploadSpeed.256000.upload.speed=256000 -espresso_lite_v2.menu.UploadSpeed.230400.linux=230400 -espresso_lite_v2.menu.UploadSpeed.230400.macosx=230400 -espresso_lite_v2.menu.UploadSpeed.230400.macosx=230400 -espresso_lite_v2.menu.UploadSpeed.230400.upload.speed=230400 -espresso_lite_v2.menu.UploadSpeed.460800.linux=460800 -espresso_lite_v2.menu.UploadSpeed.460800.macosx=460800 -espresso_lite_v2.menu.UploadSpeed.460800.upload.speed=460800 -espresso_lite_v2.menu.UploadSpeed.512000.windows=512000 -espresso_lite_v2.menu.UploadSpeed.512000.upload.speed=512000 -espresso_lite_v2.menu.UploadSpeed.921600=921600 -espresso_lite_v2.menu.UploadSpeed.921600.upload.speed=921600 - -espresso_lite_v2.menu.FlashSize.4M3M=4M (3M SPIFFS) -espresso_lite_v2.menu.FlashSize.4M3M.build.flash_size=4M -espresso_lite_v2.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -espresso_lite_v2.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -espresso_lite_v2.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -espresso_lite_v2.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -espresso_lite_v2.menu.FlashSize.4M3M.upload.maximum_size=1044464 - +espresso_lite_v2.build.flash_mode=dio +espresso_lite_v2.build.flash_freq=40 espresso_lite_v2.menu.FlashSize.4M1M=4M (1M SPIFFS) espresso_lite_v2.menu.FlashSize.4M1M.build.flash_size=4M espresso_lite_v2.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +espresso_lite_v2.menu.FlashSize.4M1M.build.spiffs_pagesize=256 +espresso_lite_v2.menu.FlashSize.4M1M.upload.maximum_size=1044464 espresso_lite_v2.menu.FlashSize.4M1M.build.spiffs_start=0x300000 espresso_lite_v2.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 espresso_lite_v2.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -espresso_lite_v2.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -espresso_lite_v2.menu.FlashSize.4M1M.upload.maximum_size=1044464 - +espresso_lite_v2.menu.FlashSize.4M3M=4M (3M SPIFFS) +espresso_lite_v2.menu.FlashSize.4M3M.build.flash_size=4M +espresso_lite_v2.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +espresso_lite_v2.menu.FlashSize.4M3M.build.spiffs_pagesize=256 +espresso_lite_v2.menu.FlashSize.4M3M.upload.maximum_size=1044464 +espresso_lite_v2.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +espresso_lite_v2.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +espresso_lite_v2.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 espresso_lite_v2.menu.ResetMethod.ck=ck espresso_lite_v2.menu.ResetMethod.ck.upload.resetmethod=ck espresso_lite_v2.menu.ResetMethod.nodemcu=nodemcu espresso_lite_v2.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu - +espresso_lite_v2.menu.LwIPVariant.open=v2 +espresso_lite_v2.menu.LwIPVariant.open.build.lwip_include=lwip2/include +espresso_lite_v2.menu.LwIPVariant.open.build.lwip_lib=-llwip2 +espresso_lite_v2.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +espresso_lite_v2.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc +espresso_lite_v2.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC +espresso_lite_v2.menu.LwIPVariant.Espressif=Espressif (xcc) +espresso_lite_v2.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip +espresso_lite_v2.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC +espresso_lite_v2.menu.LwIPVariant.OpenSource=Open Source (gcc) +espresso_lite_v2.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src +espresso_lite_v2.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC +espresso_lite_v2.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" espresso_lite_v2.menu.Debug.Disabled=Disabled espresso_lite_v2.menu.Debug.Disabled.build.debug_port= espresso_lite_v2.menu.Debug.Serial=Serial espresso_lite_v2.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial espresso_lite_v2.menu.Debug.Serial1=Serial1 espresso_lite_v2.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 - espresso_lite_v2.menu.DebugLevel.None____=None espresso_lite_v2.menu.DebugLevel.None____.build.debug_level= -espresso_lite_v2.menu.DebugLevel.Core____=Core -espresso_lite_v2.menu.DebugLevel.Core____.build.debug_level=-DDEBUG_ESP_CORE -espresso_lite_v2.menu.DebugLevel.SSL_____=Core + SSL -espresso_lite_v2.menu.DebugLevel.SSL_____.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -espresso_lite_v2.menu.DebugLevel.SSL_MEM_=Core + SSL + TLS Mem -espresso_lite_v2.menu.DebugLevel.SSL_MEM_.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_TLS_MEM -espresso_lite_v2.menu.DebugLevel.WiFic___=Core + WiFi -espresso_lite_v2.menu.DebugLevel.WiFic___.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -espresso_lite_v2.menu.DebugLevel.WiFi____=WiFi -espresso_lite_v2.menu.DebugLevel.WiFi____.build.debug_level=-DDEBUG_ESP_WIFI -espresso_lite_v2.menu.DebugLevel.HTTPClient=HTTPClient -espresso_lite_v2.menu.DebugLevel.HTTPClient.build.debug_level=-DDEBUG_ESP_HTTP_CLIENT -espresso_lite_v2.menu.DebugLevel.HTTPClient2=HTTPClient + SSL -espresso_lite_v2.menu.DebugLevel.HTTPClient2.build.debug_level=-DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_SSL -espresso_lite_v2.menu.DebugLevel.HTTPUpdate=HTTPUpdate -espresso_lite_v2.menu.DebugLevel.HTTPUpdate.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -espresso_lite_v2.menu.DebugLevel.HTTPUpdate2=HTTPClient + HTTPUpdate -espresso_lite_v2.menu.DebugLevel.HTTPUpdate2.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_UPDATE -espresso_lite_v2.menu.DebugLevel.HTTPUpdate3=HTTPClient + HTTPUpdate + Updater -espresso_lite_v2.menu.DebugLevel.HTTPUpdate3.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -espresso_lite_v2.menu.DebugLevel.HTTPServer=HTTPServer -espresso_lite_v2.menu.DebugLevel.HTTPServer.build.debug_level=-DDEBUG_ESP_HTTP_SERVER -espresso_lite_v2.menu.DebugLevel.UPDATER=Updater -espresso_lite_v2.menu.DebugLevel.UPDATER.build.debug_level=-DDEBUG_ESP_UPDATER -espresso_lite_v2.menu.DebugLevel.OTA_____=OTA -espresso_lite_v2.menu.DebugLevel.OTA_____.build.debug_level=-DDEBUG_ESP_OTA -espresso_lite_v2.menu.DebugLevel.OTA2____=OTA + Updater -espresso_lite_v2.menu.DebugLevel.OTA2____.build.debug_level=-DDEBUG_ESP_OTA -DDEBUG_ESP_UPDATER -espresso_lite_v2.menu.DebugLevel.all_____=All -espresso_lite_v2.menu.DebugLevel.all_____.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_TLS_MEM - -espresso_lite_v2.build.debug_port= -espresso_lite_v2.build.debug_level= +espresso_lite_v2.menu.DebugLevel.SSL=SSL +espresso_lite_v2.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL +espresso_lite_v2.menu.DebugLevel.TLS_MEM=TLS_MEM +espresso_lite_v2.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM +espresso_lite_v2.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT +espresso_lite_v2.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT +espresso_lite_v2.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER +espresso_lite_v2.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER +espresso_lite_v2.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM +espresso_lite_v2.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM +espresso_lite_v2.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT +espresso_lite_v2.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT +espresso_lite_v2.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER +espresso_lite_v2.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER +espresso_lite_v2.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT +espresso_lite_v2.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +espresso_lite_v2.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER +espresso_lite_v2.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +espresso_lite_v2.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER +espresso_lite_v2.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT +espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER +espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +espresso_lite_v2.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER +espresso_lite_v2.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +espresso_lite_v2.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER +espresso_lite_v2.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER +espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +espresso_lite_v2.menu.DebugLevel.CORE=CORE +espresso_lite_v2.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE +espresso_lite_v2.menu.DebugLevel.WIFI=WIFI +espresso_lite_v2.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI +espresso_lite_v2.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE +espresso_lite_v2.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE +espresso_lite_v2.menu.DebugLevel.UPDATER=UPDATER +espresso_lite_v2.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER +espresso_lite_v2.menu.DebugLevel.OTA=OTA +espresso_lite_v2.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA +espresso_lite_v2.menu.DebugLevel.NULL=NULL +espresso_lite_v2.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +espresso_lite_v2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +espresso_lite_v2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +espresso_lite_v2.menu.UploadSpeed.115200=115200 +espresso_lite_v2.menu.UploadSpeed.115200.upload.speed=115200 +espresso_lite_v2.menu.UploadSpeed.9600=9600 +espresso_lite_v2.menu.UploadSpeed.9600.upload.speed=9600 +espresso_lite_v2.menu.UploadSpeed.57600=57600 +espresso_lite_v2.menu.UploadSpeed.57600.upload.speed=57600 +espresso_lite_v2.menu.UploadSpeed.256000.windows=256000 +espresso_lite_v2.menu.UploadSpeed.256000.windows.upload.speed=256000 +espresso_lite_v2.menu.UploadSpeed.230400.linux=230400 +espresso_lite_v2.menu.UploadSpeed.230400.linux.upload.speed=230400 +espresso_lite_v2.menu.UploadSpeed.230400.macosx=230400 +espresso_lite_v2.menu.UploadSpeed.230400.macosx.upload.speed=230400 +espresso_lite_v2.menu.UploadSpeed.460800.linux=460800 +espresso_lite_v2.menu.UploadSpeed.460800.linux.upload.speed=460800 +espresso_lite_v2.menu.UploadSpeed.460800.macosx=460800 +espresso_lite_v2.menu.UploadSpeed.460800.macosx.upload.speed=460800 +espresso_lite_v2.menu.UploadSpeed.512000.windows=512000 +espresso_lite_v2.menu.UploadSpeed.512000.windows.upload.speed=512000 +espresso_lite_v2.menu.UploadSpeed.921600=921600 +espresso_lite_v2.menu.UploadSpeed.921600.upload.speed=921600 ############################################################## phoenix_v1.name=Phoenix 1.0 +phoenix_v1.build.board=ESP8266_PHOENIX_V1 +phoenix_v1.build.variant=phoenix_v1 phoenix_v1.upload.tool=esptool phoenix_v1.upload.speed=115200 -phoenix_v1.upload.maximum_size=1044464 phoenix_v1.upload.maximum_data_size=81920 phoenix_v1.upload.wait_for_upload_port=true - +phoenix_v1.serial.disableDTR=true +phoenix_v1.serial.disableRTS=true phoenix_v1.build.mcu=esp8266 -phoenix_v1.build.f_cpu=80000000L -phoenix_v1.build.board=ESP8266_PHOENIX_V1 phoenix_v1.build.core=esp8266 -phoenix_v1.build.variant=phoenix_v1 -phoenix_v1.build.flash_mode=dio -phoenix_v1.build.flash_size=4M -phoenix_v1.build.flash_freq=40 - +phoenix_v1.build.spiffs_pagesize=256 +phoenix_v1.build.debug_port= +phoenix_v1.build.debug_level= phoenix_v1.menu.CpuFrequency.80=80 MHz phoenix_v1.menu.CpuFrequency.80.build.f_cpu=80000000L phoenix_v1.menu.CpuFrequency.160=160 MHz phoenix_v1.menu.CpuFrequency.160.build.f_cpu=160000000L - -phoenix_v1.menu.UploadSpeed.115200=115200 -phoenix_v1.menu.UploadSpeed.115200.upload.speed=115200 -phoenix_v1.menu.UploadSpeed.57600=57600 -phoenix_v1.menu.UploadSpeed.57600.upload.speed=57600 -phoenix_v1.menu.UploadSpeed.256000.windows=256000 -phoenix_v1.menu.UploadSpeed.256000.upload.speed=256000 -phoenix_v1.menu.UploadSpeed.230400.linux=230400 -phoenix_v1.menu.UploadSpeed.230400.macosx=230400 -phoenix_v1.menu.UploadSpeed.230400.macosx=230400 -phoenix_v1.menu.UploadSpeed.230400.upload.speed=230400 -phoenix_v1.menu.UploadSpeed.460800.linux=460800 -phoenix_v1.menu.UploadSpeed.460800.macosx=460800 -phoenix_v1.menu.UploadSpeed.460800.upload.speed=460800 -phoenix_v1.menu.UploadSpeed.512000.windows=512000 -phoenix_v1.menu.UploadSpeed.512000.upload.speed=512000 -phoenix_v1.menu.UploadSpeed.921600=921600 -phoenix_v1.menu.UploadSpeed.921600.upload.speed=921600 - -phoenix_v1.menu.FlashSize.4M3M=4M (3M SPIFFS) -phoenix_v1.menu.FlashSize.4M3M.build.flash_size=4M -phoenix_v1.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -phoenix_v1.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -phoenix_v1.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -phoenix_v1.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -phoenix_v1.menu.FlashSize.4M3M.upload.maximum_size=1044464 - +phoenix_v1.build.flash_mode=dio +phoenix_v1.build.flash_freq=40 phoenix_v1.menu.FlashSize.4M1M=4M (1M SPIFFS) phoenix_v1.menu.FlashSize.4M1M.build.flash_size=4M phoenix_v1.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +phoenix_v1.menu.FlashSize.4M1M.build.spiffs_pagesize=256 +phoenix_v1.menu.FlashSize.4M1M.upload.maximum_size=1044464 phoenix_v1.menu.FlashSize.4M1M.build.spiffs_start=0x300000 phoenix_v1.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 phoenix_v1.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -phoenix_v1.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -phoenix_v1.menu.FlashSize.4M1M.upload.maximum_size=1044464 - -phoenix_v1.menu.ResetMethod.nodemcu=nodemcu -phoenix_v1.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu +phoenix_v1.menu.FlashSize.4M3M=4M (3M SPIFFS) +phoenix_v1.menu.FlashSize.4M3M.build.flash_size=4M +phoenix_v1.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +phoenix_v1.menu.FlashSize.4M3M.build.spiffs_pagesize=256 +phoenix_v1.menu.FlashSize.4M3M.upload.maximum_size=1044464 +phoenix_v1.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +phoenix_v1.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +phoenix_v1.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 phoenix_v1.menu.ResetMethod.ck=ck phoenix_v1.menu.ResetMethod.ck.upload.resetmethod=ck - +phoenix_v1.menu.ResetMethod.nodemcu=nodemcu +phoenix_v1.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu +phoenix_v1.menu.LwIPVariant.open=v2 +phoenix_v1.menu.LwIPVariant.open.build.lwip_include=lwip2/include +phoenix_v1.menu.LwIPVariant.open.build.lwip_lib=-llwip2 +phoenix_v1.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +phoenix_v1.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc +phoenix_v1.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC +phoenix_v1.menu.LwIPVariant.Espressif=Espressif (xcc) +phoenix_v1.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip +phoenix_v1.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC +phoenix_v1.menu.LwIPVariant.OpenSource=Open Source (gcc) +phoenix_v1.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src +phoenix_v1.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC +phoenix_v1.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" phoenix_v1.menu.Debug.Disabled=Disabled phoenix_v1.menu.Debug.Disabled.build.debug_port= phoenix_v1.menu.Debug.Serial=Serial phoenix_v1.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial phoenix_v1.menu.Debug.Serial1=Serial1 phoenix_v1.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 - phoenix_v1.menu.DebugLevel.None____=None phoenix_v1.menu.DebugLevel.None____.build.debug_level= -phoenix_v1.menu.DebugLevel.Core____=Core -phoenix_v1.menu.DebugLevel.Core____.build.debug_level=-DDEBUG_ESP_CORE -phoenix_v1.menu.DebugLevel.SSL_____=Core + SSL -phoenix_v1.menu.DebugLevel.SSL_____.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -phoenix_v1.menu.DebugLevel.SSL_MEM_=Core + SSL + TLS Mem -phoenix_v1.menu.DebugLevel.SSL_MEM_.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_TLS_MEM -phoenix_v1.menu.DebugLevel.WiFic___=Core + WiFi -phoenix_v1.menu.DebugLevel.WiFic___.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -phoenix_v1.menu.DebugLevel.WiFi____=WiFi -phoenix_v1.menu.DebugLevel.WiFi____.build.debug_level=-DDEBUG_ESP_WIFI -phoenix_v1.menu.DebugLevel.HTTPClient=HTTPClient -phoenix_v1.menu.DebugLevel.HTTPClient.build.debug_level=-DDEBUG_ESP_HTTP_CLIENT -phoenix_v1.menu.DebugLevel.HTTPClient2=HTTPClient + SSL -phoenix_v1.menu.DebugLevel.HTTPClient2.build.debug_level=-DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_SSL -phoenix_v1.menu.DebugLevel.HTTPUpdate=HTTPUpdate -phoenix_v1.menu.DebugLevel.HTTPUpdate.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -phoenix_v1.menu.DebugLevel.HTTPUpdate2=HTTPClient + HTTPUpdate -phoenix_v1.menu.DebugLevel.HTTPUpdate2.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_UPDATE -phoenix_v1.menu.DebugLevel.HTTPUpdate3=HTTPClient + HTTPUpdate + Updater -phoenix_v1.menu.DebugLevel.HTTPUpdate3.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -phoenix_v1.menu.DebugLevel.HTTPServer=HTTPServer -phoenix_v1.menu.DebugLevel.HTTPServer.build.debug_level=-DDEBUG_ESP_HTTP_SERVER -phoenix_v1.menu.DebugLevel.UPDATER=Updater -phoenix_v1.menu.DebugLevel.UPDATER.build.debug_level=-DDEBUG_ESP_UPDATER -phoenix_v1.menu.DebugLevel.OTA_____=OTA -phoenix_v1.menu.DebugLevel.OTA_____.build.debug_level=-DDEBUG_ESP_OTA -phoenix_v1.menu.DebugLevel.OTA2____=OTA + Updater -phoenix_v1.menu.DebugLevel.OTA2____.build.debug_level=-DDEBUG_ESP_OTA -DDEBUG_ESP_UPDATER -phoenix_v1.menu.DebugLevel.all_____=All -phoenix_v1.menu.DebugLevel.all_____.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_TLS_MEM - -phoenix_v1.build.debug_port= -phoenix_v1.build.debug_level= +phoenix_v1.menu.DebugLevel.SSL=SSL +phoenix_v1.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL +phoenix_v1.menu.DebugLevel.TLS_MEM=TLS_MEM +phoenix_v1.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM +phoenix_v1.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT +phoenix_v1.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT +phoenix_v1.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER +phoenix_v1.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER +phoenix_v1.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM +phoenix_v1.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM +phoenix_v1.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT +phoenix_v1.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT +phoenix_v1.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER +phoenix_v1.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER +phoenix_v1.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT +phoenix_v1.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +phoenix_v1.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER +phoenix_v1.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +phoenix_v1.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER +phoenix_v1.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT +phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER +phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +phoenix_v1.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER +phoenix_v1.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +phoenix_v1.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER +phoenix_v1.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER +phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +phoenix_v1.menu.DebugLevel.CORE=CORE +phoenix_v1.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE +phoenix_v1.menu.DebugLevel.WIFI=WIFI +phoenix_v1.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI +phoenix_v1.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE +phoenix_v1.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE +phoenix_v1.menu.DebugLevel.UPDATER=UPDATER +phoenix_v1.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER +phoenix_v1.menu.DebugLevel.OTA=OTA +phoenix_v1.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA +phoenix_v1.menu.DebugLevel.NULL=NULL +phoenix_v1.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +phoenix_v1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +phoenix_v1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +phoenix_v1.menu.UploadSpeed.115200=115200 +phoenix_v1.menu.UploadSpeed.115200.upload.speed=115200 +phoenix_v1.menu.UploadSpeed.9600=9600 +phoenix_v1.menu.UploadSpeed.9600.upload.speed=9600 +phoenix_v1.menu.UploadSpeed.57600=57600 +phoenix_v1.menu.UploadSpeed.57600.upload.speed=57600 +phoenix_v1.menu.UploadSpeed.256000.windows=256000 +phoenix_v1.menu.UploadSpeed.256000.windows.upload.speed=256000 +phoenix_v1.menu.UploadSpeed.230400.linux=230400 +phoenix_v1.menu.UploadSpeed.230400.linux.upload.speed=230400 +phoenix_v1.menu.UploadSpeed.230400.macosx=230400 +phoenix_v1.menu.UploadSpeed.230400.macosx.upload.speed=230400 +phoenix_v1.menu.UploadSpeed.460800.linux=460800 +phoenix_v1.menu.UploadSpeed.460800.linux.upload.speed=460800 +phoenix_v1.menu.UploadSpeed.460800.macosx=460800 +phoenix_v1.menu.UploadSpeed.460800.macosx.upload.speed=460800 +phoenix_v1.menu.UploadSpeed.512000.windows=512000 +phoenix_v1.menu.UploadSpeed.512000.windows.upload.speed=512000 +phoenix_v1.menu.UploadSpeed.921600=921600 +phoenix_v1.menu.UploadSpeed.921600.upload.speed=921600 ############################################################## phoenix_v2.name=Phoenix 2.0 +phoenix_v2.build.board=ESP8266_PHOENIX_V2 +phoenix_v2.build.variant=phoenix_v2 phoenix_v2.upload.tool=esptool phoenix_v2.upload.speed=115200 -phoenix_v2.upload.maximum_size=1044464 phoenix_v2.upload.maximum_data_size=81920 phoenix_v2.upload.wait_for_upload_port=true - +phoenix_v2.serial.disableDTR=true +phoenix_v2.serial.disableRTS=true phoenix_v2.build.mcu=esp8266 -phoenix_v2.build.f_cpu=80000000L -phoenix_v2.build.board=ESP8266_PHOENIX_V2 phoenix_v2.build.core=esp8266 -phoenix_v2.build.variant=phoenix_v2 -phoenix_v2.build.flash_mode=dio -phoenix_v2.build.flash_size=4M -phoenix_v2.build.flash_freq=40 - +phoenix_v2.build.spiffs_pagesize=256 +phoenix_v2.build.debug_port= +phoenix_v2.build.debug_level= phoenix_v2.menu.CpuFrequency.80=80 MHz phoenix_v2.menu.CpuFrequency.80.build.f_cpu=80000000L phoenix_v2.menu.CpuFrequency.160=160 MHz phoenix_v2.menu.CpuFrequency.160.build.f_cpu=160000000L - -phoenix_v2.menu.UploadSpeed.115200=115200 -phoenix_v2.menu.UploadSpeed.115200.upload.speed=115200 -phoenix_v2.menu.UploadSpeed.57600=57600 -phoenix_v2.menu.UploadSpeed.57600.upload.speed=57600 -phoenix_v2.menu.UploadSpeed.256000.windows=256000 -phoenix_v2.menu.UploadSpeed.256000.upload.speed=256000 -phoenix_v2.menu.UploadSpeed.230400.linux=230400 -phoenix_v2.menu.UploadSpeed.230400.macosx=230400 -phoenix_v2.menu.UploadSpeed.230400.macosx=230400 -phoenix_v2.menu.UploadSpeed.230400.upload.speed=230400 -phoenix_v2.menu.UploadSpeed.460800.linux=460800 -phoenix_v2.menu.UploadSpeed.460800.macosx=460800 -phoenix_v2.menu.UploadSpeed.460800.upload.speed=460800 -phoenix_v2.menu.UploadSpeed.512000.windows=512000 -phoenix_v2.menu.UploadSpeed.512000.upload.speed=512000 -phoenix_v2.menu.UploadSpeed.921600=921600 -phoenix_v2.menu.UploadSpeed.921600.upload.speed=921600 - -phoenix_v2.menu.FlashSize.4M3M=4M (3M SPIFFS) -phoenix_v2.menu.FlashSize.4M3M.build.flash_size=4M -phoenix_v2.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -phoenix_v2.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -phoenix_v2.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -phoenix_v2.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -phoenix_v2.menu.FlashSize.4M3M.upload.maximum_size=1044464 - +phoenix_v2.build.flash_mode=dio +phoenix_v2.build.flash_freq=40 phoenix_v2.menu.FlashSize.4M1M=4M (1M SPIFFS) phoenix_v2.menu.FlashSize.4M1M.build.flash_size=4M phoenix_v2.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +phoenix_v2.menu.FlashSize.4M1M.build.spiffs_pagesize=256 +phoenix_v2.menu.FlashSize.4M1M.upload.maximum_size=1044464 phoenix_v2.menu.FlashSize.4M1M.build.spiffs_start=0x300000 phoenix_v2.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 phoenix_v2.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -phoenix_v2.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -phoenix_v2.menu.FlashSize.4M1M.upload.maximum_size=1044464 - +phoenix_v2.menu.FlashSize.4M3M=4M (3M SPIFFS) +phoenix_v2.menu.FlashSize.4M3M.build.flash_size=4M +phoenix_v2.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +phoenix_v2.menu.FlashSize.4M3M.build.spiffs_pagesize=256 +phoenix_v2.menu.FlashSize.4M3M.upload.maximum_size=1044464 +phoenix_v2.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +phoenix_v2.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +phoenix_v2.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 phoenix_v2.menu.ResetMethod.ck=ck phoenix_v2.menu.ResetMethod.ck.upload.resetmethod=ck phoenix_v2.menu.ResetMethod.nodemcu=nodemcu phoenix_v2.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu - +phoenix_v2.menu.LwIPVariant.open=v2 +phoenix_v2.menu.LwIPVariant.open.build.lwip_include=lwip2/include +phoenix_v2.menu.LwIPVariant.open.build.lwip_lib=-llwip2 +phoenix_v2.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +phoenix_v2.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc +phoenix_v2.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC +phoenix_v2.menu.LwIPVariant.Espressif=Espressif (xcc) +phoenix_v2.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip +phoenix_v2.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC +phoenix_v2.menu.LwIPVariant.OpenSource=Open Source (gcc) +phoenix_v2.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src +phoenix_v2.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC +phoenix_v2.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" phoenix_v2.menu.Debug.Disabled=Disabled phoenix_v2.menu.Debug.Disabled.build.debug_port= phoenix_v2.menu.Debug.Serial=Serial phoenix_v2.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial phoenix_v2.menu.Debug.Serial1=Serial1 phoenix_v2.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 - phoenix_v2.menu.DebugLevel.None____=None phoenix_v2.menu.DebugLevel.None____.build.debug_level= -phoenix_v2.menu.DebugLevel.Core____=Core -phoenix_v2.menu.DebugLevel.Core____.build.debug_level=-DDEBUG_ESP_CORE -phoenix_v2.menu.DebugLevel.SSL_____=Core + SSL -phoenix_v2.menu.DebugLevel.SSL_____.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -phoenix_v2.menu.DebugLevel.SSL_MEM_=Core + SSL + TLS Mem -phoenix_v2.menu.DebugLevel.SSL_MEM_.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_TLS_MEM -phoenix_v2.menu.DebugLevel.WiFic___=Core + WiFi -phoenix_v2.menu.DebugLevel.WiFic___.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -phoenix_v2.menu.DebugLevel.WiFi____=WiFi -phoenix_v2.menu.DebugLevel.WiFi____.build.debug_level=-DDEBUG_ESP_WIFI -phoenix_v2.menu.DebugLevel.HTTPClient=HTTPClient -phoenix_v2.menu.DebugLevel.HTTPClient.build.debug_level=-DDEBUG_ESP_HTTP_CLIENT -phoenix_v2.menu.DebugLevel.HTTPClient2=HTTPClient + SSL -phoenix_v2.menu.DebugLevel.HTTPClient2.build.debug_level=-DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_SSL -phoenix_v2.menu.DebugLevel.HTTPUpdate=HTTPUpdate -phoenix_v2.menu.DebugLevel.HTTPUpdate.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -phoenix_v2.menu.DebugLevel.HTTPUpdate2=HTTPClient + HTTPUpdate -phoenix_v2.menu.DebugLevel.HTTPUpdate2.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_UPDATE -phoenix_v2.menu.DebugLevel.HTTPUpdate3=HTTPClient + HTTPUpdate + Updater -phoenix_v2.menu.DebugLevel.HTTPUpdate3.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -phoenix_v2.menu.DebugLevel.HTTPServer=HTTPServer -phoenix_v2.menu.DebugLevel.HTTPServer.build.debug_level=-DDEBUG_ESP_HTTP_SERVER -phoenix_v2.menu.DebugLevel.UPDATER=Updater -phoenix_v2.menu.DebugLevel.UPDATER.build.debug_level=-DDEBUG_ESP_UPDATER -phoenix_v2.menu.DebugLevel.OTA_____=OTA -phoenix_v2.menu.DebugLevel.OTA_____.build.debug_level=-DDEBUG_ESP_OTA -phoenix_v2.menu.DebugLevel.OTA2____=OTA + Updater -phoenix_v2.menu.DebugLevel.OTA2____.build.debug_level=-DDEBUG_ESP_OTA -DDEBUG_ESP_UPDATER -phoenix_v2.menu.DebugLevel.all_____=All -phoenix_v2.menu.DebugLevel.all_____.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_TLS_MEM - -phoenix_v2.build.debug_port= -phoenix_v2.build.debug_level= +phoenix_v2.menu.DebugLevel.SSL=SSL +phoenix_v2.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL +phoenix_v2.menu.DebugLevel.TLS_MEM=TLS_MEM +phoenix_v2.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM +phoenix_v2.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT +phoenix_v2.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT +phoenix_v2.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER +phoenix_v2.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER +phoenix_v2.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM +phoenix_v2.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM +phoenix_v2.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT +phoenix_v2.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT +phoenix_v2.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER +phoenix_v2.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER +phoenix_v2.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT +phoenix_v2.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +phoenix_v2.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER +phoenix_v2.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +phoenix_v2.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER +phoenix_v2.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT +phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER +phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +phoenix_v2.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER +phoenix_v2.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +phoenix_v2.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER +phoenix_v2.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER +phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +phoenix_v2.menu.DebugLevel.CORE=CORE +phoenix_v2.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE +phoenix_v2.menu.DebugLevel.WIFI=WIFI +phoenix_v2.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI +phoenix_v2.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE +phoenix_v2.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE +phoenix_v2.menu.DebugLevel.UPDATER=UPDATER +phoenix_v2.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER +phoenix_v2.menu.DebugLevel.OTA=OTA +phoenix_v2.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA +phoenix_v2.menu.DebugLevel.NULL=NULL +phoenix_v2.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +phoenix_v2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +phoenix_v2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +phoenix_v2.menu.UploadSpeed.115200=115200 +phoenix_v2.menu.UploadSpeed.115200.upload.speed=115200 +phoenix_v2.menu.UploadSpeed.9600=9600 +phoenix_v2.menu.UploadSpeed.9600.upload.speed=9600 +phoenix_v2.menu.UploadSpeed.57600=57600 +phoenix_v2.menu.UploadSpeed.57600.upload.speed=57600 +phoenix_v2.menu.UploadSpeed.256000.windows=256000 +phoenix_v2.menu.UploadSpeed.256000.windows.upload.speed=256000 +phoenix_v2.menu.UploadSpeed.230400.linux=230400 +phoenix_v2.menu.UploadSpeed.230400.linux.upload.speed=230400 +phoenix_v2.menu.UploadSpeed.230400.macosx=230400 +phoenix_v2.menu.UploadSpeed.230400.macosx.upload.speed=230400 +phoenix_v2.menu.UploadSpeed.460800.linux=460800 +phoenix_v2.menu.UploadSpeed.460800.linux.upload.speed=460800 +phoenix_v2.menu.UploadSpeed.460800.macosx=460800 +phoenix_v2.menu.UploadSpeed.460800.macosx.upload.speed=460800 +phoenix_v2.menu.UploadSpeed.512000.windows=512000 +phoenix_v2.menu.UploadSpeed.512000.windows.upload.speed=512000 +phoenix_v2.menu.UploadSpeed.921600=921600 +phoenix_v2.menu.UploadSpeed.921600.upload.speed=921600 ############################################################## nodemcu.name=NodeMCU 0.9 (ESP-12 Module) - +nodemcu.build.board=ESP8266_NODEMCU +nodemcu.build.variant=nodemcu nodemcu.upload.tool=esptool nodemcu.upload.speed=115200 -nodemcu.upload.resetmethod=nodemcu -nodemcu.upload.maximum_size=1044464 nodemcu.upload.maximum_data_size=81920 nodemcu.upload.wait_for_upload_port=true nodemcu.serial.disableDTR=true nodemcu.serial.disableRTS=true - nodemcu.build.mcu=esp8266 -nodemcu.build.f_cpu=80000000L -nodemcu.build.board=ESP8266_NODEMCU nodemcu.build.core=esp8266 -nodemcu.build.variant=nodemcu -nodemcu.build.flash_mode=qio -nodemcu.build.flash_size=4M -nodemcu.build.flash_freq=40 +nodemcu.build.spiffs_pagesize=256 nodemcu.build.debug_port= nodemcu.build.debug_level= - nodemcu.menu.CpuFrequency.80=80 MHz nodemcu.menu.CpuFrequency.80.build.f_cpu=80000000L nodemcu.menu.CpuFrequency.160=160 MHz nodemcu.menu.CpuFrequency.160.build.f_cpu=160000000L - +nodemcu.upload.resetmethod=nodemcu +nodemcu.build.flash_mode=qio +nodemcu.build.flash_freq=40 +nodemcu.menu.FlashSize.4M1M=4M (1M SPIFFS) +nodemcu.menu.FlashSize.4M1M.build.flash_size=4M +nodemcu.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +nodemcu.menu.FlashSize.4M1M.build.spiffs_pagesize=256 +nodemcu.menu.FlashSize.4M1M.upload.maximum_size=1044464 +nodemcu.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +nodemcu.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +nodemcu.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +nodemcu.menu.FlashSize.4M3M=4M (3M SPIFFS) +nodemcu.menu.FlashSize.4M3M.build.flash_size=4M +nodemcu.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +nodemcu.menu.FlashSize.4M3M.build.spiffs_pagesize=256 +nodemcu.menu.FlashSize.4M3M.upload.maximum_size=1044464 +nodemcu.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +nodemcu.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +nodemcu.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +nodemcu.menu.LwIPVariant.open=v2 +nodemcu.menu.LwIPVariant.open.build.lwip_include=lwip2/include +nodemcu.menu.LwIPVariant.open.build.lwip_lib=-llwip2 +nodemcu.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +nodemcu.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc +nodemcu.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC +nodemcu.menu.LwIPVariant.Espressif=Espressif (xcc) +nodemcu.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip +nodemcu.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC +nodemcu.menu.LwIPVariant.OpenSource=Open Source (gcc) +nodemcu.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src +nodemcu.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC +nodemcu.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" +nodemcu.menu.Debug.Disabled=Disabled +nodemcu.menu.Debug.Disabled.build.debug_port= +nodemcu.menu.Debug.Serial=Serial +nodemcu.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +nodemcu.menu.Debug.Serial1=Serial1 +nodemcu.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 +nodemcu.menu.DebugLevel.None____=None +nodemcu.menu.DebugLevel.None____.build.debug_level= +nodemcu.menu.DebugLevel.SSL=SSL +nodemcu.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL +nodemcu.menu.DebugLevel.TLS_MEM=TLS_MEM +nodemcu.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM +nodemcu.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT +nodemcu.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT +nodemcu.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER +nodemcu.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER +nodemcu.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM +nodemcu.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM +nodemcu.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT +nodemcu.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT +nodemcu.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER +nodemcu.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER +nodemcu.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT +nodemcu.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +nodemcu.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER +nodemcu.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +nodemcu.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER +nodemcu.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT +nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER +nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +nodemcu.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER +nodemcu.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +nodemcu.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER +nodemcu.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER +nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +nodemcu.menu.DebugLevel.CORE=CORE +nodemcu.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE +nodemcu.menu.DebugLevel.WIFI=WIFI +nodemcu.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI +nodemcu.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE +nodemcu.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE +nodemcu.menu.DebugLevel.UPDATER=UPDATER +nodemcu.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER +nodemcu.menu.DebugLevel.OTA=OTA +nodemcu.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA +nodemcu.menu.DebugLevel.NULL=NULL +nodemcu.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +nodemcu.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +nodemcu.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" nodemcu.menu.UploadSpeed.115200=115200 nodemcu.menu.UploadSpeed.115200.upload.speed=115200 nodemcu.menu.UploadSpeed.9600=9600 @@ -922,63 +1320,125 @@ nodemcu.menu.UploadSpeed.9600.upload.speed=9600 nodemcu.menu.UploadSpeed.57600=57600 nodemcu.menu.UploadSpeed.57600.upload.speed=57600 nodemcu.menu.UploadSpeed.256000.windows=256000 -nodemcu.menu.UploadSpeed.256000.upload.speed=256000 +nodemcu.menu.UploadSpeed.256000.windows.upload.speed=256000 nodemcu.menu.UploadSpeed.230400.linux=230400 +nodemcu.menu.UploadSpeed.230400.linux.upload.speed=230400 nodemcu.menu.UploadSpeed.230400.macosx=230400 -nodemcu.menu.UploadSpeed.230400.macosx=230400 -nodemcu.menu.UploadSpeed.230400.upload.speed=230400 +nodemcu.menu.UploadSpeed.230400.macosx.upload.speed=230400 nodemcu.menu.UploadSpeed.460800.linux=460800 +nodemcu.menu.UploadSpeed.460800.linux.upload.speed=460800 nodemcu.menu.UploadSpeed.460800.macosx=460800 -nodemcu.menu.UploadSpeed.460800.upload.speed=460800 +nodemcu.menu.UploadSpeed.460800.macosx.upload.speed=460800 nodemcu.menu.UploadSpeed.512000.windows=512000 -nodemcu.menu.UploadSpeed.512000.upload.speed=512000 +nodemcu.menu.UploadSpeed.512000.windows.upload.speed=512000 nodemcu.menu.UploadSpeed.921600=921600 nodemcu.menu.UploadSpeed.921600.upload.speed=921600 -nodemcu.menu.FlashSize.4M3M=4M (3M SPIFFS) -nodemcu.menu.FlashSize.4M3M.build.flash_size=4M -nodemcu.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -nodemcu.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -nodemcu.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -nodemcu.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -nodemcu.menu.FlashSize.4M3M.build.spiffs_pagesize=256 - -nodemcu.menu.FlashSize.4M1M=4M (1M SPIFFS) -nodemcu.menu.FlashSize.4M1M.build.flash_size=4M -nodemcu.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -nodemcu.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -nodemcu.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -nodemcu.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -nodemcu.menu.FlashSize.4M1M.build.spiffs_pagesize=256 - ############################################################## nodemcuv2.name=NodeMCU 1.0 (ESP-12E Module) - +nodemcuv2.build.board=ESP8266_NODEMCU +nodemcuv2.build.variant=nodemcu nodemcuv2.upload.tool=esptool nodemcuv2.upload.speed=115200 -nodemcuv2.upload.resetmethod=nodemcu -nodemcuv2.upload.maximum_size=1044464 nodemcuv2.upload.maximum_data_size=81920 nodemcuv2.upload.wait_for_upload_port=true nodemcuv2.serial.disableDTR=true nodemcuv2.serial.disableRTS=true - nodemcuv2.build.mcu=esp8266 -nodemcuv2.build.f_cpu=80000000L -nodemcuv2.build.board=ESP8266_NODEMCU nodemcuv2.build.core=esp8266 -nodemcuv2.build.variant=nodemcu -nodemcuv2.build.flash_mode=dio -nodemcuv2.build.flash_size=4M -nodemcuv2.build.flash_freq=40 +nodemcuv2.build.spiffs_pagesize=256 nodemcuv2.build.debug_port= nodemcuv2.build.debug_level= - nodemcuv2.menu.CpuFrequency.80=80 MHz nodemcuv2.menu.CpuFrequency.80.build.f_cpu=80000000L nodemcuv2.menu.CpuFrequency.160=160 MHz nodemcuv2.menu.CpuFrequency.160.build.f_cpu=160000000L - +nodemcuv2.upload.resetmethod=nodemcu +nodemcuv2.build.flash_mode=dio +nodemcuv2.build.flash_freq=40 +nodemcuv2.menu.FlashSize.4M1M=4M (1M SPIFFS) +nodemcuv2.menu.FlashSize.4M1M.build.flash_size=4M +nodemcuv2.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +nodemcuv2.menu.FlashSize.4M1M.build.spiffs_pagesize=256 +nodemcuv2.menu.FlashSize.4M1M.upload.maximum_size=1044464 +nodemcuv2.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +nodemcuv2.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +nodemcuv2.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +nodemcuv2.menu.FlashSize.4M3M=4M (3M SPIFFS) +nodemcuv2.menu.FlashSize.4M3M.build.flash_size=4M +nodemcuv2.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +nodemcuv2.menu.FlashSize.4M3M.build.spiffs_pagesize=256 +nodemcuv2.menu.FlashSize.4M3M.upload.maximum_size=1044464 +nodemcuv2.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +nodemcuv2.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +nodemcuv2.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +nodemcuv2.menu.LwIPVariant.open=v2 +nodemcuv2.menu.LwIPVariant.open.build.lwip_include=lwip2/include +nodemcuv2.menu.LwIPVariant.open.build.lwip_lib=-llwip2 +nodemcuv2.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +nodemcuv2.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc +nodemcuv2.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC +nodemcuv2.menu.LwIPVariant.Espressif=Espressif (xcc) +nodemcuv2.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip +nodemcuv2.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC +nodemcuv2.menu.LwIPVariant.OpenSource=Open Source (gcc) +nodemcuv2.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src +nodemcuv2.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC +nodemcuv2.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" +nodemcuv2.menu.Debug.Disabled=Disabled +nodemcuv2.menu.Debug.Disabled.build.debug_port= +nodemcuv2.menu.Debug.Serial=Serial +nodemcuv2.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +nodemcuv2.menu.Debug.Serial1=Serial1 +nodemcuv2.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 +nodemcuv2.menu.DebugLevel.None____=None +nodemcuv2.menu.DebugLevel.None____.build.debug_level= +nodemcuv2.menu.DebugLevel.SSL=SSL +nodemcuv2.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL +nodemcuv2.menu.DebugLevel.TLS_MEM=TLS_MEM +nodemcuv2.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM +nodemcuv2.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT +nodemcuv2.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT +nodemcuv2.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER +nodemcuv2.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER +nodemcuv2.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM +nodemcuv2.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM +nodemcuv2.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT +nodemcuv2.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT +nodemcuv2.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER +nodemcuv2.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER +nodemcuv2.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT +nodemcuv2.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +nodemcuv2.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER +nodemcuv2.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +nodemcuv2.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER +nodemcuv2.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT +nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER +nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +nodemcuv2.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER +nodemcuv2.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +nodemcuv2.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER +nodemcuv2.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER +nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +nodemcuv2.menu.DebugLevel.CORE=CORE +nodemcuv2.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE +nodemcuv2.menu.DebugLevel.WIFI=WIFI +nodemcuv2.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI +nodemcuv2.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE +nodemcuv2.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE +nodemcuv2.menu.DebugLevel.UPDATER=UPDATER +nodemcuv2.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER +nodemcuv2.menu.DebugLevel.OTA=OTA +nodemcuv2.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA +nodemcuv2.menu.DebugLevel.NULL=NULL +nodemcuv2.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +nodemcuv2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +nodemcuv2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" nodemcuv2.menu.UploadSpeed.115200=115200 nodemcuv2.menu.UploadSpeed.115200.upload.speed=115200 nodemcuv2.menu.UploadSpeed.9600=9600 @@ -986,70 +1446,117 @@ nodemcuv2.menu.UploadSpeed.9600.upload.speed=9600 nodemcuv2.menu.UploadSpeed.57600=57600 nodemcuv2.menu.UploadSpeed.57600.upload.speed=57600 nodemcuv2.menu.UploadSpeed.256000.windows=256000 -nodemcuv2.menu.UploadSpeed.256000.upload.speed=256000 +nodemcuv2.menu.UploadSpeed.256000.windows.upload.speed=256000 nodemcuv2.menu.UploadSpeed.230400.linux=230400 +nodemcuv2.menu.UploadSpeed.230400.linux.upload.speed=230400 nodemcuv2.menu.UploadSpeed.230400.macosx=230400 -nodemcuv2.menu.UploadSpeed.230400.macosx=230400 -nodemcuv2.menu.UploadSpeed.230400.upload.speed=230400 +nodemcuv2.menu.UploadSpeed.230400.macosx.upload.speed=230400 nodemcuv2.menu.UploadSpeed.460800.linux=460800 +nodemcuv2.menu.UploadSpeed.460800.linux.upload.speed=460800 nodemcuv2.menu.UploadSpeed.460800.macosx=460800 -nodemcuv2.menu.UploadSpeed.460800.upload.speed=460800 +nodemcuv2.menu.UploadSpeed.460800.macosx.upload.speed=460800 nodemcuv2.menu.UploadSpeed.512000.windows=512000 -nodemcuv2.menu.UploadSpeed.512000.upload.speed=512000 +nodemcuv2.menu.UploadSpeed.512000.windows.upload.speed=512000 nodemcuv2.menu.UploadSpeed.921600=921600 nodemcuv2.menu.UploadSpeed.921600.upload.speed=921600 -nodemcuv2.menu.FlashSize.4M3M=4M (3M SPIFFS) -nodemcuv2.menu.FlashSize.4M3M.build.flash_size=4M -nodemcuv2.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -nodemcuv2.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -nodemcuv2.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -nodemcuv2.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -nodemcuv2.menu.FlashSize.4M3M.build.spiffs_pagesize=256 - -nodemcuv2.menu.FlashSize.4M1M=4M (1M SPIFFS) -nodemcuv2.menu.FlashSize.4M1M.build.flash_size=4M -nodemcuv2.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -nodemcuv2.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -nodemcuv2.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -nodemcuv2.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -nodemcuv2.menu.FlashSize.4M1M.build.spiffs_pagesize=256 - - ############################################################## modwifi.name=Olimex MOD-WIFI-ESP8266(-DEV) - +modwifi.build.board=MOD_WIFI_ESP8266 modwifi.upload.tool=esptool modwifi.upload.speed=115200 -modwifi.upload.resetmethod=ck -modwifi.upload.maximum_size=1044464 modwifi.upload.maximum_data_size=81920 modwifi.upload.wait_for_upload_port=true modwifi.serial.disableDTR=true modwifi.serial.disableRTS=true - modwifi.build.mcu=esp8266 -modwifi.build.f_cpu=80000000L -modwifi.build.board=MOD_WIFI_ESP8266 modwifi.build.core=esp8266 modwifi.build.variant=generic -# Winbond W25Q16 flash -modwifi.build.flash_mode=qio -modwifi.build.flash_size=2M -modwifi.build.flash_freq=40 -modwifi.build.flash_ld=eagle.flash.2m.ld -modwifi.build.spiffs_start=0x100000 -modwifi.build.spiffs_end=0x1FB000 modwifi.build.spiffs_pagesize=256 -modwifi.build.spiffs_blocksize=8192 modwifi.build.debug_port= modwifi.build.debug_level= - modwifi.menu.CpuFrequency.80=80 MHz modwifi.menu.CpuFrequency.80.build.f_cpu=80000000L modwifi.menu.CpuFrequency.160=160 MHz modwifi.menu.CpuFrequency.160.build.f_cpu=160000000L - +modwifi.upload.resetmethod=ck +modwifi.build.flash_mode=qio +modwifi.build.flash_freq=40 +modwifi.menu.FlashSize.2M=2M (1M SPIFFS) +modwifi.menu.FlashSize.2M.build.flash_size=2M +modwifi.menu.FlashSize.2M.build.flash_ld=eagle.flash.2m.ld +modwifi.menu.FlashSize.2M.build.spiffs_pagesize=256 +modwifi.menu.FlashSize.2M.upload.maximum_size=1044464 +modwifi.menu.FlashSize.2M.build.spiffs_start=0x100000 +modwifi.menu.FlashSize.2M.build.spiffs_end=0x1FB000 +modwifi.menu.FlashSize.2M.build.spiffs_blocksize=8192 +modwifi.menu.LwIPVariant.open=v2 +modwifi.menu.LwIPVariant.open.build.lwip_include=lwip2/include +modwifi.menu.LwIPVariant.open.build.lwip_lib=-llwip2 +modwifi.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +modwifi.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc +modwifi.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC +modwifi.menu.LwIPVariant.Espressif=Espressif (xcc) +modwifi.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip +modwifi.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC +modwifi.menu.LwIPVariant.OpenSource=Open Source (gcc) +modwifi.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src +modwifi.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC +modwifi.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" +modwifi.menu.Debug.Disabled=Disabled +modwifi.menu.Debug.Disabled.build.debug_port= +modwifi.menu.Debug.Serial=Serial +modwifi.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +modwifi.menu.Debug.Serial1=Serial1 +modwifi.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 +modwifi.menu.DebugLevel.None____=None +modwifi.menu.DebugLevel.None____.build.debug_level= +modwifi.menu.DebugLevel.SSL=SSL +modwifi.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL +modwifi.menu.DebugLevel.TLS_MEM=TLS_MEM +modwifi.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM +modwifi.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT +modwifi.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT +modwifi.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER +modwifi.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER +modwifi.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM +modwifi.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM +modwifi.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT +modwifi.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT +modwifi.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER +modwifi.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER +modwifi.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT +modwifi.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +modwifi.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER +modwifi.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +modwifi.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER +modwifi.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT +modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER +modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +modwifi.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER +modwifi.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +modwifi.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER +modwifi.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER +modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +modwifi.menu.DebugLevel.CORE=CORE +modwifi.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE +modwifi.menu.DebugLevel.WIFI=WIFI +modwifi.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI +modwifi.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE +modwifi.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE +modwifi.menu.DebugLevel.UPDATER=UPDATER +modwifi.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER +modwifi.menu.DebugLevel.OTA=OTA +modwifi.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA +modwifi.menu.DebugLevel.NULL=NULL +modwifi.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +modwifi.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +modwifi.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" modwifi.menu.UploadSpeed.115200=115200 modwifi.menu.UploadSpeed.115200.upload.speed=115200 modwifi.menu.UploadSpeed.9600=9600 @@ -1057,53 +1564,130 @@ modwifi.menu.UploadSpeed.9600.upload.speed=9600 modwifi.menu.UploadSpeed.57600=57600 modwifi.menu.UploadSpeed.57600.upload.speed=57600 modwifi.menu.UploadSpeed.256000.windows=256000 -modwifi.menu.UploadSpeed.256000.upload.speed=256000 +modwifi.menu.UploadSpeed.256000.windows.upload.speed=256000 modwifi.menu.UploadSpeed.230400.linux=230400 +modwifi.menu.UploadSpeed.230400.linux.upload.speed=230400 modwifi.menu.UploadSpeed.230400.macosx=230400 -modwifi.menu.UploadSpeed.230400.macosx=230400 -modwifi.menu.UploadSpeed.230400.upload.speed=230400 +modwifi.menu.UploadSpeed.230400.macosx.upload.speed=230400 modwifi.menu.UploadSpeed.460800.linux=460800 +modwifi.menu.UploadSpeed.460800.linux.upload.speed=460800 modwifi.menu.UploadSpeed.460800.macosx=460800 -modwifi.menu.UploadSpeed.460800.upload.speed=460800 +modwifi.menu.UploadSpeed.460800.macosx.upload.speed=460800 modwifi.menu.UploadSpeed.512000.windows=512000 -modwifi.menu.UploadSpeed.512000.upload.speed=512000 +modwifi.menu.UploadSpeed.512000.windows.upload.speed=512000 modwifi.menu.UploadSpeed.921600=921600 modwifi.menu.UploadSpeed.921600.upload.speed=921600 ############################################################## thing.name=SparkFun ESP8266 Thing - +thing.build.board=ESP8266_THING +thing.build.variant=thing thing.upload.tool=esptool -thing.upload.speed=921600 -thing.upload.resetmethod=ck -thing.upload.maximum_size=434160 +thing.upload.speed=115200 thing.upload.maximum_data_size=81920 thing.upload.wait_for_upload_port=true thing.serial.disableDTR=true thing.serial.disableRTS=true - thing.build.mcu=esp8266 -thing.build.f_cpu=80000000L -thing.build.board=ESP8266_THING thing.build.core=esp8266 -thing.build.variant=thing -thing.build.flash_mode=qio -# flash chip: AT25SF041 (512 kbyte, 4Mbit) -thing.build.flash_size=512K -thing.build.flash_ld=eagle.flash.512k64.ld -thing.build.flash_freq=40 -thing.build.spiffs_start=0x6B000 -thing.build.spiffs_end=0x7B000 -thing.build.spiffs_blocksize=4096 thing.build.spiffs_pagesize=256 thing.build.debug_port= thing.build.debug_level= - thing.menu.CpuFrequency.80=80 MHz thing.menu.CpuFrequency.80.build.f_cpu=80000000L thing.menu.CpuFrequency.160=160 MHz thing.menu.CpuFrequency.160.build.f_cpu=160000000L - +thing.upload.resetmethod=ck +thing.build.flash_mode=qio +thing.build.flash_freq=40 +thing.menu.FlashSize.512K0=512K (no SPIFFS) +thing.menu.FlashSize.512K0.build.flash_size=512K +thing.menu.FlashSize.512K0.build.flash_ld=eagle.flash.512k0.ld +thing.menu.FlashSize.512K0.build.spiffs_pagesize=256 +thing.menu.FlashSize.512K0.upload.maximum_size=499696 +thing.menu.FlashSize.512K64=512K (64K SPIFFS) +thing.menu.FlashSize.512K64.build.flash_size=512K +thing.menu.FlashSize.512K64.build.flash_ld=eagle.flash.512k64.ld +thing.menu.FlashSize.512K64.build.spiffs_pagesize=256 +thing.menu.FlashSize.512K64.upload.maximum_size=434160 +thing.menu.FlashSize.512K64.build.spiffs_start=0x6B000 +thing.menu.FlashSize.512K64.build.spiffs_end=0x7B000 +thing.menu.FlashSize.512K64.build.spiffs_blocksize=4096 +thing.menu.FlashSize.512K128=512K (128K SPIFFS) +thing.menu.FlashSize.512K128.build.flash_size=512K +thing.menu.FlashSize.512K128.build.flash_ld=eagle.flash.512k128.ld +thing.menu.FlashSize.512K128.build.spiffs_pagesize=256 +thing.menu.FlashSize.512K128.upload.maximum_size=368624 +thing.menu.FlashSize.512K128.build.spiffs_start=0x5B000 +thing.menu.FlashSize.512K128.build.spiffs_end=0x7B000 +thing.menu.FlashSize.512K128.build.spiffs_blocksize=4096 +thing.menu.LwIPVariant.open=v2 +thing.menu.LwIPVariant.open.build.lwip_include=lwip2/include +thing.menu.LwIPVariant.open.build.lwip_lib=-llwip2 +thing.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +thing.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc +thing.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC +thing.menu.LwIPVariant.Espressif=Espressif (xcc) +thing.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip +thing.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC +thing.menu.LwIPVariant.OpenSource=Open Source (gcc) +thing.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src +thing.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC +thing.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" +thing.menu.Debug.Disabled=Disabled +thing.menu.Debug.Disabled.build.debug_port= +thing.menu.Debug.Serial=Serial +thing.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +thing.menu.Debug.Serial1=Serial1 +thing.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 +thing.menu.DebugLevel.None____=None +thing.menu.DebugLevel.None____.build.debug_level= +thing.menu.DebugLevel.SSL=SSL +thing.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL +thing.menu.DebugLevel.TLS_MEM=TLS_MEM +thing.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM +thing.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT +thing.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT +thing.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER +thing.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER +thing.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM +thing.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM +thing.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT +thing.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT +thing.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER +thing.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER +thing.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT +thing.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +thing.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER +thing.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +thing.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER +thing.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +thing.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT +thing.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +thing.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER +thing.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +thing.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER +thing.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +thing.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER +thing.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +thing.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER +thing.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +thing.menu.DebugLevel.CORE=CORE +thing.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE +thing.menu.DebugLevel.WIFI=WIFI +thing.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI +thing.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE +thing.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE +thing.menu.DebugLevel.UPDATER=UPDATER +thing.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER +thing.menu.DebugLevel.OTA=OTA +thing.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA +thing.menu.DebugLevel.NULL=NULL +thing.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +thing.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +thing.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +thing.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +thing.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" thing.menu.UploadSpeed.115200=115200 thing.menu.UploadSpeed.115200.upload.speed=115200 thing.menu.UploadSpeed.9600=9600 @@ -1111,48 +1695,130 @@ thing.menu.UploadSpeed.9600.upload.speed=9600 thing.menu.UploadSpeed.57600=57600 thing.menu.UploadSpeed.57600.upload.speed=57600 thing.menu.UploadSpeed.256000.windows=256000 -thing.menu.UploadSpeed.256000.upload.speed=256000 +thing.menu.UploadSpeed.256000.windows.upload.speed=256000 thing.menu.UploadSpeed.230400.linux=230400 +thing.menu.UploadSpeed.230400.linux.upload.speed=230400 thing.menu.UploadSpeed.230400.macosx=230400 -thing.menu.UploadSpeed.230400.upload.speed=230400 +thing.menu.UploadSpeed.230400.macosx.upload.speed=230400 thing.menu.UploadSpeed.460800.linux=460800 +thing.menu.UploadSpeed.460800.linux.upload.speed=460800 thing.menu.UploadSpeed.460800.macosx=460800 -thing.menu.UploadSpeed.460800.upload.speed=460800 +thing.menu.UploadSpeed.460800.macosx.upload.speed=460800 thing.menu.UploadSpeed.512000.windows=512000 -thing.menu.UploadSpeed.512000.upload.speed=512000 +thing.menu.UploadSpeed.512000.windows.upload.speed=512000 thing.menu.UploadSpeed.921600=921600 thing.menu.UploadSpeed.921600.upload.speed=921600 ############################################################## thingdev.name=SparkFun ESP8266 Thing Dev - +thingdev.build.board=ESP8266_THING_DEV +thingdev.build.variant=thing thingdev.upload.tool=esptool -thingdev.upload.speed=921600 -thingdev.upload.resetmethod=nodemcu -thingdev.upload.maximum_size=434160 +thingdev.upload.speed=115200 thingdev.upload.maximum_data_size=81920 thingdev.upload.wait_for_upload_port=true thingdev.serial.disableDTR=true thingdev.serial.disableRTS=true - thingdev.build.mcu=esp8266 -thingdev.build.f_cpu=80000000L -thingdev.build.board=ESP8266_THING_DEV thingdev.build.core=esp8266 -thingdev.build.variant=thing -thingdev.build.flash_mode=dio -# flash chip: AT25SF041 (512 kbyte, 4Mbit) -thingdev.build.flash_size=512K -thingdev.build.flash_ld=eagle.flash.512k64.ld -thingdev.build.flash_freq=40 +thingdev.build.spiffs_pagesize=256 thingdev.build.debug_port= thingdev.build.debug_level= - thingdev.menu.CpuFrequency.80=80 MHz thingdev.menu.CpuFrequency.80.build.f_cpu=80000000L thingdev.menu.CpuFrequency.160=160 MHz thingdev.menu.CpuFrequency.160.build.f_cpu=160000000L - +thingdev.upload.resetmethod=nodemcu +thingdev.build.flash_mode=dio +thingdev.build.flash_freq=40 +thingdev.menu.FlashSize.512K0=512K (no SPIFFS) +thingdev.menu.FlashSize.512K0.build.flash_size=512K +thingdev.menu.FlashSize.512K0.build.flash_ld=eagle.flash.512k0.ld +thingdev.menu.FlashSize.512K0.build.spiffs_pagesize=256 +thingdev.menu.FlashSize.512K0.upload.maximum_size=499696 +thingdev.menu.FlashSize.512K64=512K (64K SPIFFS) +thingdev.menu.FlashSize.512K64.build.flash_size=512K +thingdev.menu.FlashSize.512K64.build.flash_ld=eagle.flash.512k64.ld +thingdev.menu.FlashSize.512K64.build.spiffs_pagesize=256 +thingdev.menu.FlashSize.512K64.upload.maximum_size=434160 +thingdev.menu.FlashSize.512K64.build.spiffs_start=0x6B000 +thingdev.menu.FlashSize.512K64.build.spiffs_end=0x7B000 +thingdev.menu.FlashSize.512K64.build.spiffs_blocksize=4096 +thingdev.menu.FlashSize.512K128=512K (128K SPIFFS) +thingdev.menu.FlashSize.512K128.build.flash_size=512K +thingdev.menu.FlashSize.512K128.build.flash_ld=eagle.flash.512k128.ld +thingdev.menu.FlashSize.512K128.build.spiffs_pagesize=256 +thingdev.menu.FlashSize.512K128.upload.maximum_size=368624 +thingdev.menu.FlashSize.512K128.build.spiffs_start=0x5B000 +thingdev.menu.FlashSize.512K128.build.spiffs_end=0x7B000 +thingdev.menu.FlashSize.512K128.build.spiffs_blocksize=4096 +thingdev.menu.LwIPVariant.open=v2 +thingdev.menu.LwIPVariant.open.build.lwip_include=lwip2/include +thingdev.menu.LwIPVariant.open.build.lwip_lib=-llwip2 +thingdev.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +thingdev.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc +thingdev.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC +thingdev.menu.LwIPVariant.Espressif=Espressif (xcc) +thingdev.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip +thingdev.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC +thingdev.menu.LwIPVariant.OpenSource=Open Source (gcc) +thingdev.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src +thingdev.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC +thingdev.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" +thingdev.menu.Debug.Disabled=Disabled +thingdev.menu.Debug.Disabled.build.debug_port= +thingdev.menu.Debug.Serial=Serial +thingdev.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +thingdev.menu.Debug.Serial1=Serial1 +thingdev.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 +thingdev.menu.DebugLevel.None____=None +thingdev.menu.DebugLevel.None____.build.debug_level= +thingdev.menu.DebugLevel.SSL=SSL +thingdev.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL +thingdev.menu.DebugLevel.TLS_MEM=TLS_MEM +thingdev.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM +thingdev.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT +thingdev.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT +thingdev.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER +thingdev.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER +thingdev.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM +thingdev.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM +thingdev.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT +thingdev.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT +thingdev.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER +thingdev.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER +thingdev.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT +thingdev.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +thingdev.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER +thingdev.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +thingdev.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER +thingdev.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT +thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER +thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +thingdev.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER +thingdev.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +thingdev.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER +thingdev.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER +thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +thingdev.menu.DebugLevel.CORE=CORE +thingdev.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE +thingdev.menu.DebugLevel.WIFI=WIFI +thingdev.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI +thingdev.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE +thingdev.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE +thingdev.menu.DebugLevel.UPDATER=UPDATER +thingdev.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER +thingdev.menu.DebugLevel.OTA=OTA +thingdev.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA +thingdev.menu.DebugLevel.NULL=NULL +thingdev.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +thingdev.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +thingdev.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" thingdev.menu.UploadSpeed.115200=115200 thingdev.menu.UploadSpeed.115200.upload.speed=115200 thingdev.menu.UploadSpeed.9600=9600 @@ -1160,139 +1826,251 @@ thingdev.menu.UploadSpeed.9600.upload.speed=9600 thingdev.menu.UploadSpeed.57600=57600 thingdev.menu.UploadSpeed.57600.upload.speed=57600 thingdev.menu.UploadSpeed.256000.windows=256000 -thingdev.menu.UploadSpeed.256000.upload.speed=256000 +thingdev.menu.UploadSpeed.256000.windows.upload.speed=256000 thingdev.menu.UploadSpeed.230400.linux=230400 +thingdev.menu.UploadSpeed.230400.linux.upload.speed=230400 thingdev.menu.UploadSpeed.230400.macosx=230400 -thingdev.menu.UploadSpeed.230400.upload.speed=230400 +thingdev.menu.UploadSpeed.230400.macosx.upload.speed=230400 thingdev.menu.UploadSpeed.460800.linux=460800 +thingdev.menu.UploadSpeed.460800.linux.upload.speed=460800 thingdev.menu.UploadSpeed.460800.macosx=460800 -thingdev.menu.UploadSpeed.460800.upload.speed=460800 +thingdev.menu.UploadSpeed.460800.macosx.upload.speed=460800 thingdev.menu.UploadSpeed.512000.windows=512000 -thingdev.menu.UploadSpeed.512000.upload.speed=512000 +thingdev.menu.UploadSpeed.512000.windows.upload.speed=512000 thingdev.menu.UploadSpeed.921600=921600 thingdev.menu.UploadSpeed.921600.upload.speed=921600 ############################################################## esp210.name=SweetPea ESP-210 - +esp210.build.board=ESP8266_ESP210 esp210.upload.tool=esptool esp210.upload.speed=115200 -esp210.upload.resetmethod=ck -esp210.upload.maximum_size=1044464 esp210.upload.maximum_data_size=81920 esp210.upload.wait_for_upload_port=true esp210.serial.disableDTR=true esp210.serial.disableRTS=true - esp210.build.mcu=esp8266 -esp210.build.f_cpu=80000000L -esp210.build.board=ESP8266_ESP210 esp210.build.core=esp8266 esp210.build.variant=generic -esp210.build.flash_mode=qio -esp210.build.flash_size=4M -esp210.build.flash_freq=40 +esp210.build.spiffs_pagesize=256 esp210.build.debug_port= esp210.build.debug_level= - esp210.menu.CpuFrequency.80=80 MHz esp210.menu.CpuFrequency.80.build.f_cpu=80000000L esp210.menu.CpuFrequency.160=160 MHz esp210.menu.CpuFrequency.160.build.f_cpu=160000000L - -esp210.menu.UploadSpeed.57600=57600 -esp210.menu.UploadSpeed.57600.upload.speed=57600 -esp210.menu.UploadSpeed.115200=115200 -esp210.menu.UploadSpeed.115200.upload.speed=115200 -esp210.menu.UploadSpeed.256000.windows=256000 -esp210.menu.UploadSpeed.256000.upload.speed=256000 -esp210.menu.UploadSpeed.230400.linux=230400 -esp210.menu.UploadSpeed.230400.macosx=230400 -esp210.menu.UploadSpeed.230400.macosx=230400 -esp210.menu.UploadSpeed.230400.upload.speed=230400 -esp210.menu.UploadSpeed.460800.linux=460800 -esp210.menu.UploadSpeed.460800.macosx=460800 -esp210.menu.UploadSpeed.460800.upload.speed=460800 -esp210.menu.UploadSpeed.512000.windows=512000 -esp210.menu.UploadSpeed.512000.upload.speed=512000 -esp210.menu.UploadSpeed.921600=921600 -esp210.menu.UploadSpeed.921600.upload.speed=921600 - -esp210.menu.FlashSize.4M3M=4M (3M SPIFFS) -esp210.menu.FlashSize.4M3M.build.flash_size=4M -esp210.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -esp210.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -esp210.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -esp210.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -esp210.menu.FlashSize.4M3M.build.spiffs_pagesize=256 - +esp210.upload.resetmethod=ck +esp210.build.flash_mode=qio +esp210.build.flash_freq=40 esp210.menu.FlashSize.4M1M=4M (1M SPIFFS) esp210.menu.FlashSize.4M1M.build.flash_size=4M esp210.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +esp210.menu.FlashSize.4M1M.build.spiffs_pagesize=256 +esp210.menu.FlashSize.4M1M.upload.maximum_size=1044464 esp210.menu.FlashSize.4M1M.build.spiffs_start=0x300000 esp210.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 esp210.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -esp210.menu.FlashSize.4M1M.build.spiffs_pagesize=256 - -############################################################## -# wifio.name=Wifio -# -# wifio.upload.tool=esptool -# wifio.upload.speed=115200 -# wifio.upload.resetmethod=wifio -# wifio.upload.maximum_size=524288 -# wifio.upload.wait_for_upload_port=true -# -# wifio.build.mcu=esp8266 -# wifio.build.f_cpu=80000000L -# wifio.build.board=ESP8266_WIFIO -# wifio.build.core=esp8266 -# wifio.build.variant=wifio -# wifio.build.flash_mode=qio -# wifio.build.flash_size=512K -# wifio.build.flash_freq=40 -# wifio.build.flash_ld=eagle.flash.512k64.ld -# wifio.build.spiffs_start=0x6B000 -# wifio.build.spiffs_end=0x7B000 -# -# wifio.menu.CpuFrequency.80=80MHz -# wifio.menu.CpuFrequency.80.build.f_cpu=80000000L -# wifio.menu.CpuFrequency.160=160MHz -# wifio.menu.CpuFrequency.160.build.f_cpu=160000000L -# -# wifio.upload.tool=esptool -# +esp210.menu.FlashSize.4M3M=4M (3M SPIFFS) +esp210.menu.FlashSize.4M3M.build.flash_size=4M +esp210.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +esp210.menu.FlashSize.4M3M.build.spiffs_pagesize=256 +esp210.menu.FlashSize.4M3M.upload.maximum_size=1044464 +esp210.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +esp210.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +esp210.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +esp210.menu.LwIPVariant.open=v2 +esp210.menu.LwIPVariant.open.build.lwip_include=lwip2/include +esp210.menu.LwIPVariant.open.build.lwip_lib=-llwip2 +esp210.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +esp210.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc +esp210.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC +esp210.menu.LwIPVariant.Espressif=Espressif (xcc) +esp210.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip +esp210.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC +esp210.menu.LwIPVariant.OpenSource=Open Source (gcc) +esp210.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src +esp210.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC +esp210.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" +esp210.menu.Debug.Disabled=Disabled +esp210.menu.Debug.Disabled.build.debug_port= +esp210.menu.Debug.Serial=Serial +esp210.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +esp210.menu.Debug.Serial1=Serial1 +esp210.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 +esp210.menu.DebugLevel.None____=None +esp210.menu.DebugLevel.None____.build.debug_level= +esp210.menu.DebugLevel.SSL=SSL +esp210.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL +esp210.menu.DebugLevel.TLS_MEM=TLS_MEM +esp210.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM +esp210.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT +esp210.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT +esp210.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER +esp210.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER +esp210.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM +esp210.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM +esp210.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT +esp210.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT +esp210.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER +esp210.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER +esp210.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT +esp210.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +esp210.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER +esp210.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +esp210.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER +esp210.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +esp210.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT +esp210.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +esp210.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER +esp210.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +esp210.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER +esp210.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +esp210.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER +esp210.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +esp210.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER +esp210.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +esp210.menu.DebugLevel.CORE=CORE +esp210.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE +esp210.menu.DebugLevel.WIFI=WIFI +esp210.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI +esp210.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE +esp210.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE +esp210.menu.DebugLevel.UPDATER=UPDATER +esp210.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER +esp210.menu.DebugLevel.OTA=OTA +esp210.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA +esp210.menu.DebugLevel.NULL=NULL +esp210.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +esp210.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +esp210.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +esp210.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +esp210.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +esp210.menu.UploadSpeed.115200=115200 +esp210.menu.UploadSpeed.115200.upload.speed=115200 +esp210.menu.UploadSpeed.9600=9600 +esp210.menu.UploadSpeed.9600.upload.speed=9600 +esp210.menu.UploadSpeed.57600=57600 +esp210.menu.UploadSpeed.57600.upload.speed=57600 +esp210.menu.UploadSpeed.256000.windows=256000 +esp210.menu.UploadSpeed.256000.windows.upload.speed=256000 +esp210.menu.UploadSpeed.230400.linux=230400 +esp210.menu.UploadSpeed.230400.linux.upload.speed=230400 +esp210.menu.UploadSpeed.230400.macosx=230400 +esp210.menu.UploadSpeed.230400.macosx.upload.speed=230400 +esp210.menu.UploadSpeed.460800.linux=460800 +esp210.menu.UploadSpeed.460800.linux.upload.speed=460800 +esp210.menu.UploadSpeed.460800.macosx=460800 +esp210.menu.UploadSpeed.460800.macosx.upload.speed=460800 +esp210.menu.UploadSpeed.512000.windows=512000 +esp210.menu.UploadSpeed.512000.windows.upload.speed=512000 +esp210.menu.UploadSpeed.921600=921600 +esp210.menu.UploadSpeed.921600.upload.speed=921600 ############################################################## d1_mini.name=WeMos D1 R2 & mini - +d1_mini.build.board=ESP8266_WEMOS_D1R2MINI +d1_mini.build.variant=d1_mini d1_mini.upload.tool=esptool -d1_mini.upload.speed=460800 -d1_mini.upload.resetmethod=nodemcu -d1_mini.upload.maximum_size=1044464 +d1_mini.upload.speed=115200 d1_mini.upload.maximum_data_size=81920 d1_mini.upload.wait_for_upload_port=true d1_mini.serial.disableDTR=true d1_mini.serial.disableRTS=true - d1_mini.build.mcu=esp8266 -d1_mini.build.f_cpu=80000000L -d1_mini.build.board=ESP8266_WEMOS_D1MINI d1_mini.build.core=esp8266 -d1_mini.build.variant=d1_mini -d1_mini.build.flash_mode=dio -d1_mini.build.flash_size=4M -d1_mini.build.flash_freq=40 +d1_mini.build.spiffs_pagesize=256 d1_mini.build.debug_port= d1_mini.build.debug_level= - d1_mini.menu.CpuFrequency.80=80 MHz d1_mini.menu.CpuFrequency.80.build.f_cpu=80000000L d1_mini.menu.CpuFrequency.160=160 MHz d1_mini.menu.CpuFrequency.160.build.f_cpu=160000000L - -d1_mini.menu.UploadSpeed.921600=921600 -d1_mini.menu.UploadSpeed.921600.upload.speed=921600 +d1_mini.upload.resetmethod=nodemcu +d1_mini.build.flash_mode=dio +d1_mini.build.flash_freq=40 +d1_mini.menu.FlashSize.4M1M=4M (1M SPIFFS) +d1_mini.menu.FlashSize.4M1M.build.flash_size=4M +d1_mini.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +d1_mini.menu.FlashSize.4M1M.build.spiffs_pagesize=256 +d1_mini.menu.FlashSize.4M1M.upload.maximum_size=1044464 +d1_mini.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +d1_mini.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +d1_mini.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +d1_mini.menu.FlashSize.4M3M=4M (3M SPIFFS) +d1_mini.menu.FlashSize.4M3M.build.flash_size=4M +d1_mini.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +d1_mini.menu.FlashSize.4M3M.build.spiffs_pagesize=256 +d1_mini.menu.FlashSize.4M3M.upload.maximum_size=1044464 +d1_mini.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +d1_mini.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +d1_mini.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +d1_mini.menu.LwIPVariant.open=v2 +d1_mini.menu.LwIPVariant.open.build.lwip_include=lwip2/include +d1_mini.menu.LwIPVariant.open.build.lwip_lib=-llwip2 +d1_mini.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +d1_mini.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc +d1_mini.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC +d1_mini.menu.LwIPVariant.Espressif=Espressif (xcc) +d1_mini.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip +d1_mini.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC +d1_mini.menu.LwIPVariant.OpenSource=Open Source (gcc) +d1_mini.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src +d1_mini.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC +d1_mini.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" +d1_mini.menu.Debug.Disabled=Disabled +d1_mini.menu.Debug.Disabled.build.debug_port= +d1_mini.menu.Debug.Serial=Serial +d1_mini.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +d1_mini.menu.Debug.Serial1=Serial1 +d1_mini.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 +d1_mini.menu.DebugLevel.None____=None +d1_mini.menu.DebugLevel.None____.build.debug_level= +d1_mini.menu.DebugLevel.SSL=SSL +d1_mini.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL +d1_mini.menu.DebugLevel.TLS_MEM=TLS_MEM +d1_mini.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM +d1_mini.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT +d1_mini.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT +d1_mini.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER +d1_mini.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER +d1_mini.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM +d1_mini.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM +d1_mini.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT +d1_mini.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT +d1_mini.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER +d1_mini.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER +d1_mini.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT +d1_mini.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +d1_mini.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER +d1_mini.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +d1_mini.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER +d1_mini.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT +d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER +d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +d1_mini.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER +d1_mini.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +d1_mini.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER +d1_mini.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER +d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +d1_mini.menu.DebugLevel.CORE=CORE +d1_mini.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE +d1_mini.menu.DebugLevel.WIFI=WIFI +d1_mini.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI +d1_mini.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE +d1_mini.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE +d1_mini.menu.DebugLevel.UPDATER=UPDATER +d1_mini.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER +d1_mini.menu.DebugLevel.OTA=OTA +d1_mini.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA +d1_mini.menu.DebugLevel.NULL=NULL +d1_mini.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +d1_mini.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +d1_mini.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" d1_mini.menu.UploadSpeed.115200=115200 d1_mini.menu.UploadSpeed.115200.upload.speed=115200 d1_mini.menu.UploadSpeed.9600=9600 @@ -1300,64 +2078,296 @@ d1_mini.menu.UploadSpeed.9600.upload.speed=9600 d1_mini.menu.UploadSpeed.57600=57600 d1_mini.menu.UploadSpeed.57600.upload.speed=57600 d1_mini.menu.UploadSpeed.256000.windows=256000 -d1_mini.menu.UploadSpeed.256000.upload.speed=256000 +d1_mini.menu.UploadSpeed.256000.windows.upload.speed=256000 d1_mini.menu.UploadSpeed.230400.linux=230400 +d1_mini.menu.UploadSpeed.230400.linux.upload.speed=230400 d1_mini.menu.UploadSpeed.230400.macosx=230400 -d1_mini.menu.UploadSpeed.230400.macosx=230400 -d1_mini.menu.UploadSpeed.230400.upload.speed=230400 +d1_mini.menu.UploadSpeed.230400.macosx.upload.speed=230400 d1_mini.menu.UploadSpeed.460800.linux=460800 +d1_mini.menu.UploadSpeed.460800.linux.upload.speed=460800 d1_mini.menu.UploadSpeed.460800.macosx=460800 -d1_mini.menu.UploadSpeed.460800.upload.speed=460800 +d1_mini.menu.UploadSpeed.460800.macosx.upload.speed=460800 d1_mini.menu.UploadSpeed.512000.windows=512000 -d1_mini.menu.UploadSpeed.512000.upload.speed=512000 - - -d1_mini.menu.FlashSize.4M3M=4M (3M SPIFFS) -d1_mini.menu.FlashSize.4M3M.build.flash_size=4M -d1_mini.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -d1_mini.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -d1_mini.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -d1_mini.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -d1_mini.menu.FlashSize.4M3M.build.spiffs_pagesize=256 - -d1_mini.menu.FlashSize.4M1M=4M (1M SPIFFS) -d1_mini.menu.FlashSize.4M1M.build.flash_size=4M -d1_mini.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -d1_mini.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -d1_mini.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -d1_mini.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -d1_mini.menu.FlashSize.4M1M.build.spiffs_pagesize=256 +d1_mini.menu.UploadSpeed.512000.windows.upload.speed=512000 +d1_mini.menu.UploadSpeed.921600=921600 +d1_mini.menu.UploadSpeed.921600.upload.speed=921600 ############################################################## -d1.name=WeMos D1(Retired) +d1_mini_lite.name=Wemos D1 mini lite +d1_mini_lite.build.board=ESP8266_WEMOS_D1MINILITE +d1_mini_lite.build.variant=d1_mini +d1_mini_lite.upload.tool=esptool +d1_mini_lite.upload.speed=115200 +d1_mini_lite.upload.maximum_data_size=81920 +d1_mini_lite.upload.wait_for_upload_port=true +d1_mini_lite.serial.disableDTR=true +d1_mini_lite.serial.disableRTS=true +d1_mini_lite.build.mcu=esp8266 +d1_mini_lite.build.core=esp8266 +d1_mini_lite.build.spiffs_pagesize=256 +d1_mini_lite.build.debug_port= +d1_mini_lite.build.debug_level= +d1_mini_lite.menu.CpuFrequency.80=80 MHz +d1_mini_lite.menu.CpuFrequency.80.build.f_cpu=80000000L +d1_mini_lite.menu.CpuFrequency.160=160 MHz +d1_mini_lite.menu.CpuFrequency.160.build.f_cpu=160000000L +d1_mini_lite.upload.resetmethod=nodemcu +d1_mini_lite.build.flash_mode=dout +d1_mini_lite.build.flash_freq=40 +d1_mini_lite.menu.FlashSize.1M0=1M (no SPIFFS) +d1_mini_lite.menu.FlashSize.1M0.build.flash_size=1M +d1_mini_lite.menu.FlashSize.1M0.build.flash_ld=eagle.flash.1m0.ld +d1_mini_lite.menu.FlashSize.1M0.build.spiffs_pagesize=256 +d1_mini_lite.menu.FlashSize.1M0.upload.maximum_size=1023984 +d1_mini_lite.menu.FlashSize.1M64=1M (64K SPIFFS) +d1_mini_lite.menu.FlashSize.1M64.build.flash_size=1M +d1_mini_lite.menu.FlashSize.1M64.build.flash_ld=eagle.flash.1m64.ld +d1_mini_lite.menu.FlashSize.1M64.build.spiffs_pagesize=256 +d1_mini_lite.menu.FlashSize.1M64.upload.maximum_size=958448 +d1_mini_lite.menu.FlashSize.1M64.build.spiffs_start=0xEB000 +d1_mini_lite.menu.FlashSize.1M64.build.spiffs_end=0xFB000 +d1_mini_lite.menu.FlashSize.1M64.build.spiffs_blocksize=4096 +d1_mini_lite.menu.FlashSize.1M128=1M (128K SPIFFS) +d1_mini_lite.menu.FlashSize.1M128.build.flash_size=1M +d1_mini_lite.menu.FlashSize.1M128.build.flash_ld=eagle.flash.1m128.ld +d1_mini_lite.menu.FlashSize.1M128.build.spiffs_pagesize=256 +d1_mini_lite.menu.FlashSize.1M128.upload.maximum_size=892912 +d1_mini_lite.menu.FlashSize.1M128.build.spiffs_start=0xDB000 +d1_mini_lite.menu.FlashSize.1M128.build.spiffs_end=0xFB000 +d1_mini_lite.menu.FlashSize.1M128.build.spiffs_blocksize=4096 +d1_mini_lite.menu.FlashSize.1M144=1M (144K SPIFFS) +d1_mini_lite.menu.FlashSize.1M144.build.flash_size=1M +d1_mini_lite.menu.FlashSize.1M144.build.flash_ld=eagle.flash.1m144.ld +d1_mini_lite.menu.FlashSize.1M144.build.spiffs_pagesize=256 +d1_mini_lite.menu.FlashSize.1M144.upload.maximum_size=876528 +d1_mini_lite.menu.FlashSize.1M144.build.spiffs_start=0xD7000 +d1_mini_lite.menu.FlashSize.1M144.build.spiffs_end=0xFB000 +d1_mini_lite.menu.FlashSize.1M144.build.spiffs_blocksize=4096 +d1_mini_lite.menu.FlashSize.1M160=1M (160K SPIFFS) +d1_mini_lite.menu.FlashSize.1M160.build.flash_size=1M +d1_mini_lite.menu.FlashSize.1M160.build.flash_ld=eagle.flash.1m160.ld +d1_mini_lite.menu.FlashSize.1M160.build.spiffs_pagesize=256 +d1_mini_lite.menu.FlashSize.1M160.upload.maximum_size=860144 +d1_mini_lite.menu.FlashSize.1M160.build.spiffs_start=0xD3000 +d1_mini_lite.menu.FlashSize.1M160.build.spiffs_end=0xFB000 +d1_mini_lite.menu.FlashSize.1M160.build.spiffs_blocksize=4096 +d1_mini_lite.menu.FlashSize.1M192=1M (192K SPIFFS) +d1_mini_lite.menu.FlashSize.1M192.build.flash_size=1M +d1_mini_lite.menu.FlashSize.1M192.build.flash_ld=eagle.flash.1m192.ld +d1_mini_lite.menu.FlashSize.1M192.build.spiffs_pagesize=256 +d1_mini_lite.menu.FlashSize.1M192.upload.maximum_size=827376 +d1_mini_lite.menu.FlashSize.1M192.build.spiffs_start=0xCB000 +d1_mini_lite.menu.FlashSize.1M192.build.spiffs_end=0xFB000 +d1_mini_lite.menu.FlashSize.1M192.build.spiffs_blocksize=4096 +d1_mini_lite.menu.FlashSize.1M256=1M (256K SPIFFS) +d1_mini_lite.menu.FlashSize.1M256.build.flash_size=1M +d1_mini_lite.menu.FlashSize.1M256.build.flash_ld=eagle.flash.1m256.ld +d1_mini_lite.menu.FlashSize.1M256.build.spiffs_pagesize=256 +d1_mini_lite.menu.FlashSize.1M256.upload.maximum_size=761840 +d1_mini_lite.menu.FlashSize.1M256.build.spiffs_start=0xBB000 +d1_mini_lite.menu.FlashSize.1M256.build.spiffs_end=0xFB000 +d1_mini_lite.menu.FlashSize.1M256.build.spiffs_blocksize=4096 +d1_mini_lite.menu.FlashSize.1M512=1M (512K SPIFFS) +d1_mini_lite.menu.FlashSize.1M512.build.flash_size=1M +d1_mini_lite.menu.FlashSize.1M512.build.flash_ld=eagle.flash.1m512.ld +d1_mini_lite.menu.FlashSize.1M512.build.spiffs_pagesize=256 +d1_mini_lite.menu.FlashSize.1M512.upload.maximum_size=499696 +d1_mini_lite.menu.FlashSize.1M512.build.spiffs_start=0x7B000 +d1_mini_lite.menu.FlashSize.1M512.build.spiffs_end=0xFB000 +d1_mini_lite.menu.FlashSize.1M512.build.spiffs_blocksize=8192 +d1_mini_lite.menu.LwIPVariant.open=v2 +d1_mini_lite.menu.LwIPVariant.open.build.lwip_include=lwip2/include +d1_mini_lite.menu.LwIPVariant.open.build.lwip_lib=-llwip2 +d1_mini_lite.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +d1_mini_lite.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc +d1_mini_lite.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC +d1_mini_lite.menu.LwIPVariant.Espressif=Espressif (xcc) +d1_mini_lite.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip +d1_mini_lite.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC +d1_mini_lite.menu.LwIPVariant.OpenSource=Open Source (gcc) +d1_mini_lite.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src +d1_mini_lite.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC +d1_mini_lite.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" +d1_mini_lite.menu.Debug.Disabled=Disabled +d1_mini_lite.menu.Debug.Disabled.build.debug_port= +d1_mini_lite.menu.Debug.Serial=Serial +d1_mini_lite.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +d1_mini_lite.menu.Debug.Serial1=Serial1 +d1_mini_lite.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 +d1_mini_lite.menu.DebugLevel.None____=None +d1_mini_lite.menu.DebugLevel.None____.build.debug_level= +d1_mini_lite.menu.DebugLevel.SSL=SSL +d1_mini_lite.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL +d1_mini_lite.menu.DebugLevel.TLS_MEM=TLS_MEM +d1_mini_lite.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM +d1_mini_lite.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT +d1_mini_lite.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT +d1_mini_lite.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER +d1_mini_lite.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER +d1_mini_lite.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM +d1_mini_lite.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM +d1_mini_lite.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT +d1_mini_lite.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT +d1_mini_lite.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER +d1_mini_lite.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER +d1_mini_lite.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT +d1_mini_lite.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +d1_mini_lite.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER +d1_mini_lite.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +d1_mini_lite.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER +d1_mini_lite.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT +d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER +d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +d1_mini_lite.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER +d1_mini_lite.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +d1_mini_lite.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER +d1_mini_lite.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER +d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +d1_mini_lite.menu.DebugLevel.CORE=CORE +d1_mini_lite.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE +d1_mini_lite.menu.DebugLevel.WIFI=WIFI +d1_mini_lite.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI +d1_mini_lite.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE +d1_mini_lite.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE +d1_mini_lite.menu.DebugLevel.UPDATER=UPDATER +d1_mini_lite.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER +d1_mini_lite.menu.DebugLevel.OTA=OTA +d1_mini_lite.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA +d1_mini_lite.menu.DebugLevel.NULL=NULL +d1_mini_lite.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +d1_mini_lite.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +d1_mini_lite.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +d1_mini_lite.menu.UploadSpeed.115200=115200 +d1_mini_lite.menu.UploadSpeed.115200.upload.speed=115200 +d1_mini_lite.menu.UploadSpeed.9600=9600 +d1_mini_lite.menu.UploadSpeed.9600.upload.speed=9600 +d1_mini_lite.menu.UploadSpeed.57600=57600 +d1_mini_lite.menu.UploadSpeed.57600.upload.speed=57600 +d1_mini_lite.menu.UploadSpeed.256000.windows=256000 +d1_mini_lite.menu.UploadSpeed.256000.windows.upload.speed=256000 +d1_mini_lite.menu.UploadSpeed.230400.linux=230400 +d1_mini_lite.menu.UploadSpeed.230400.linux.upload.speed=230400 +d1_mini_lite.menu.UploadSpeed.230400.macosx=230400 +d1_mini_lite.menu.UploadSpeed.230400.macosx.upload.speed=230400 +d1_mini_lite.menu.UploadSpeed.460800.linux=460800 +d1_mini_lite.menu.UploadSpeed.460800.linux.upload.speed=460800 +d1_mini_lite.menu.UploadSpeed.460800.macosx=460800 +d1_mini_lite.menu.UploadSpeed.460800.macosx.upload.speed=460800 +d1_mini_lite.menu.UploadSpeed.512000.windows=512000 +d1_mini_lite.menu.UploadSpeed.512000.windows.upload.speed=512000 +d1_mini_lite.menu.UploadSpeed.921600=921600 +d1_mini_lite.menu.UploadSpeed.921600.upload.speed=921600 +############################################################## +d1.name=WeMos D1 R1 +d1.build.board=ESP8266_WEMOS_D1R1 +d1.build.variant=d1 d1.upload.tool=esptool -d1.upload.speed=460800 -d1.upload.resetmethod=nodemcu -d1.upload.maximum_size=1044464 +d1.upload.speed=115200 d1.upload.maximum_data_size=81920 d1.upload.wait_for_upload_port=true d1.serial.disableDTR=true d1.serial.disableRTS=true - d1.build.mcu=esp8266 -d1.build.f_cpu=80000000L -d1.build.board=ESP8266_WEMOS_D1MINI d1.build.core=esp8266 -d1.build.variant=d1 -d1.build.flash_mode=dio -d1.build.flash_size=4M -d1.build.flash_freq=40 +d1.build.spiffs_pagesize=256 d1.build.debug_port= d1.build.debug_level= - d1.menu.CpuFrequency.80=80 MHz d1.menu.CpuFrequency.80.build.f_cpu=80000000L d1.menu.CpuFrequency.160=160 MHz d1.menu.CpuFrequency.160.build.f_cpu=160000000L - -d1.menu.UploadSpeed.921600=921600 -d1.menu.UploadSpeed.921600.upload.speed=921600 +d1.upload.resetmethod=nodemcu +d1.build.flash_mode=dio +d1.build.flash_freq=40 +d1.menu.FlashSize.4M1M=4M (1M SPIFFS) +d1.menu.FlashSize.4M1M.build.flash_size=4M +d1.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +d1.menu.FlashSize.4M1M.build.spiffs_pagesize=256 +d1.menu.FlashSize.4M1M.upload.maximum_size=1044464 +d1.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +d1.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +d1.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +d1.menu.FlashSize.4M3M=4M (3M SPIFFS) +d1.menu.FlashSize.4M3M.build.flash_size=4M +d1.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +d1.menu.FlashSize.4M3M.build.spiffs_pagesize=256 +d1.menu.FlashSize.4M3M.upload.maximum_size=1044464 +d1.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +d1.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +d1.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +d1.menu.LwIPVariant.open=v2 +d1.menu.LwIPVariant.open.build.lwip_include=lwip2/include +d1.menu.LwIPVariant.open.build.lwip_lib=-llwip2 +d1.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +d1.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc +d1.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC +d1.menu.LwIPVariant.Espressif=Espressif (xcc) +d1.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip +d1.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC +d1.menu.LwIPVariant.OpenSource=Open Source (gcc) +d1.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src +d1.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC +d1.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" +d1.menu.Debug.Disabled=Disabled +d1.menu.Debug.Disabled.build.debug_port= +d1.menu.Debug.Serial=Serial +d1.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +d1.menu.Debug.Serial1=Serial1 +d1.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 +d1.menu.DebugLevel.None____=None +d1.menu.DebugLevel.None____.build.debug_level= +d1.menu.DebugLevel.SSL=SSL +d1.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL +d1.menu.DebugLevel.TLS_MEM=TLS_MEM +d1.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM +d1.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT +d1.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT +d1.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER +d1.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER +d1.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM +d1.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM +d1.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT +d1.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT +d1.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER +d1.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER +d1.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT +d1.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +d1.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER +d1.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +d1.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER +d1.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +d1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT +d1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +d1.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER +d1.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +d1.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER +d1.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +d1.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER +d1.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +d1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER +d1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +d1.menu.DebugLevel.CORE=CORE +d1.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE +d1.menu.DebugLevel.WIFI=WIFI +d1.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI +d1.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE +d1.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE +d1.menu.DebugLevel.UPDATER=UPDATER +d1.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER +d1.menu.DebugLevel.OTA=OTA +d1.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA +d1.menu.DebugLevel.NULL=NULL +d1.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +d1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +d1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +d1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +d1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" d1.menu.UploadSpeed.115200=115200 d1.menu.UploadSpeed.115200.upload.speed=115200 d1.menu.UploadSpeed.9600=9600 @@ -1365,70 +2375,128 @@ d1.menu.UploadSpeed.9600.upload.speed=9600 d1.menu.UploadSpeed.57600=57600 d1.menu.UploadSpeed.57600.upload.speed=57600 d1.menu.UploadSpeed.256000.windows=256000 -d1.menu.UploadSpeed.256000.upload.speed=256000 +d1.menu.UploadSpeed.256000.windows.upload.speed=256000 d1.menu.UploadSpeed.230400.linux=230400 +d1.menu.UploadSpeed.230400.linux.upload.speed=230400 d1.menu.UploadSpeed.230400.macosx=230400 -d1.menu.UploadSpeed.230400.macosx=230400 -d1.menu.UploadSpeed.230400.upload.speed=230400 +d1.menu.UploadSpeed.230400.macosx.upload.speed=230400 d1.menu.UploadSpeed.460800.linux=460800 +d1.menu.UploadSpeed.460800.linux.upload.speed=460800 d1.menu.UploadSpeed.460800.macosx=460800 -d1.menu.UploadSpeed.460800.upload.speed=460800 +d1.menu.UploadSpeed.460800.macosx.upload.speed=460800 d1.menu.UploadSpeed.512000.windows=512000 -d1.menu.UploadSpeed.512000.upload.speed=512000 - - -d1.menu.FlashSize.4M3M=4M (3M SPIFFS) -d1.menu.FlashSize.4M3M.build.flash_size=4M -d1.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -d1.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -d1.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -d1.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -d1.menu.FlashSize.4M3M.build.spiffs_pagesize=256 - -d1.menu.FlashSize.4M1M=4M (1M SPIFFS) -d1.menu.FlashSize.4M1M.build.flash_size=4M -d1.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -d1.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -d1.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -d1.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -d1.menu.FlashSize.4M1M.build.spiffs_pagesize=256 - +d1.menu.UploadSpeed.512000.windows.upload.speed=512000 +d1.menu.UploadSpeed.921600=921600 +d1.menu.UploadSpeed.921600.upload.speed=921600 ############################################################## - espino.name=ESPino (ESP-12 Module) - +espino.build.board=ESP8266_ESP12 +espino.build.variant=espino espino.upload.tool=esptool espino.upload.speed=115200 -espino.upload.resetmethod=ck -espino.upload.maximum_size=1044464 espino.upload.maximum_data_size=81920 espino.upload.wait_for_upload_port=true espino.serial.disableDTR=true espino.serial.disableRTS=true - espino.build.mcu=esp8266 -espino.build.f_cpu=80000000L -espino.build.board=ESP8266_ESP12 espino.build.core=esp8266 -espino.build.variant=espino -espino.build.flash_mode=qio -espino.build.flash_size=4M -espino.build.flash_freq=40 espino.build.spiffs_pagesize=256 espino.build.debug_port= espino.build.debug_level= - espino.menu.CpuFrequency.80=80 MHz espino.menu.CpuFrequency.80.build.f_cpu=80000000L espino.menu.CpuFrequency.160=160 MHz espino.menu.CpuFrequency.160.build.f_cpu=160000000L - -espino.menu.FlashMode.dio=DIO -espino.menu.FlashMode.dio.build.flash_mode=dio -espino.menu.FlashMode.qio=QIO -espino.menu.FlashMode.qio.build.flash_mode=qio - +espino.menu.ResetMethod.ck=ck +espino.menu.ResetMethod.ck.upload.resetmethod=ck +espino.menu.ResetMethod.nodemcu=nodemcu +espino.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu +espino.build.flash_mode=qio +espino.build.flash_freq=40 +espino.menu.FlashSize.4M1M=4M (1M SPIFFS) +espino.menu.FlashSize.4M1M.build.flash_size=4M +espino.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +espino.menu.FlashSize.4M1M.build.spiffs_pagesize=256 +espino.menu.FlashSize.4M1M.upload.maximum_size=1044464 +espino.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +espino.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +espino.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +espino.menu.FlashSize.4M3M=4M (3M SPIFFS) +espino.menu.FlashSize.4M3M.build.flash_size=4M +espino.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +espino.menu.FlashSize.4M3M.build.spiffs_pagesize=256 +espino.menu.FlashSize.4M3M.upload.maximum_size=1044464 +espino.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +espino.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +espino.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +espino.menu.LwIPVariant.open=v2 +espino.menu.LwIPVariant.open.build.lwip_include=lwip2/include +espino.menu.LwIPVariant.open.build.lwip_lib=-llwip2 +espino.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +espino.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc +espino.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC +espino.menu.LwIPVariant.Espressif=Espressif (xcc) +espino.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip +espino.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC +espino.menu.LwIPVariant.OpenSource=Open Source (gcc) +espino.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src +espino.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC +espino.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" +espino.menu.Debug.Disabled=Disabled +espino.menu.Debug.Disabled.build.debug_port= +espino.menu.Debug.Serial=Serial +espino.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +espino.menu.Debug.Serial1=Serial1 +espino.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 +espino.menu.DebugLevel.None____=None +espino.menu.DebugLevel.None____.build.debug_level= +espino.menu.DebugLevel.SSL=SSL +espino.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL +espino.menu.DebugLevel.TLS_MEM=TLS_MEM +espino.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM +espino.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT +espino.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT +espino.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER +espino.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER +espino.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM +espino.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM +espino.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT +espino.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT +espino.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER +espino.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER +espino.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT +espino.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +espino.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER +espino.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +espino.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER +espino.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +espino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT +espino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +espino.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER +espino.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +espino.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER +espino.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +espino.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER +espino.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +espino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER +espino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +espino.menu.DebugLevel.CORE=CORE +espino.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE +espino.menu.DebugLevel.WIFI=WIFI +espino.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI +espino.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE +espino.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE +espino.menu.DebugLevel.UPDATER=UPDATER +espino.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER +espino.menu.DebugLevel.OTA=OTA +espino.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA +espino.menu.DebugLevel.NULL=NULL +espino.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +espino.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +espino.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +espino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +espino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" espino.menu.UploadSpeed.115200=115200 espino.menu.UploadSpeed.115200.upload.speed=115200 espino.menu.UploadSpeed.9600=9600 @@ -1436,68 +2504,125 @@ espino.menu.UploadSpeed.9600.upload.speed=9600 espino.menu.UploadSpeed.57600=57600 espino.menu.UploadSpeed.57600.upload.speed=57600 espino.menu.UploadSpeed.256000.windows=256000 -espino.menu.UploadSpeed.256000.upload.speed=256000 +espino.menu.UploadSpeed.256000.windows.upload.speed=256000 espino.menu.UploadSpeed.230400.linux=230400 +espino.menu.UploadSpeed.230400.linux.upload.speed=230400 espino.menu.UploadSpeed.230400.macosx=230400 -espino.menu.UploadSpeed.230400.upload.speed=230400 +espino.menu.UploadSpeed.230400.macosx.upload.speed=230400 espino.menu.UploadSpeed.460800.linux=460800 +espino.menu.UploadSpeed.460800.linux.upload.speed=460800 espino.menu.UploadSpeed.460800.macosx=460800 -espino.menu.UploadSpeed.460800.upload.speed=460800 +espino.menu.UploadSpeed.460800.macosx.upload.speed=460800 espino.menu.UploadSpeed.512000.windows=512000 -espino.menu.UploadSpeed.512000.upload.speed=512000 +espino.menu.UploadSpeed.512000.windows.upload.speed=512000 espino.menu.UploadSpeed.921600=921600 espino.menu.UploadSpeed.921600.upload.speed=921600 -espino.menu.FlashSize.4M1M=4M (1M SPIFFS) -espino.menu.FlashSize.4M1M.build.flash_size=4M -espino.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -espino.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -espino.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -espino.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -espino.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -espino.menu.FlashSize.4M1M.upload.maximum_size=1044464 - -espino.menu.FlashSize.4M3M=4M (3M SPIFFS) -espino.menu.FlashSize.4M3M.build.flash_size=4M -espino.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -espino.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -espino.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -espino.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -espino.menu.FlashSize.4M3M.upload.maximum_size=1044464 - -espino.menu.ResetMethod.ck=ck -espino.menu.ResetMethod.ck.upload.resetmethod=ck -espino.menu.ResetMethod.nodemcu=nodemcu -espino.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu - ############################################################## espinotee.name=ThaiEasyElec's ESPino - +espinotee.build.board=ESP8266_ESP13 +espinotee.build.variant=espinotee espinotee.upload.tool=esptool espinotee.upload.speed=115200 -espinotee.upload.resetmethod=nodemcu -espinotee.upload.maximum_size=1044464 espinotee.upload.maximum_data_size=81920 espinotee.upload.wait_for_upload_port=true espinotee.serial.disableDTR=true espinotee.serial.disableRTS=true - espinotee.build.mcu=esp8266 -espinotee.build.f_cpu=80000000L -espinotee.build.board=ESP8266_ESP13 espinotee.build.core=esp8266 -espinotee.build.variant=espinotee -espinotee.build.flash_mode=qio -espinotee.build.flash_size=4M -espinotee.build.flash_freq=40 +espinotee.build.spiffs_pagesize=256 espinotee.build.debug_port= espinotee.build.debug_level= - espinotee.menu.CpuFrequency.80=80 MHz espinotee.menu.CpuFrequency.80.build.f_cpu=80000000L espinotee.menu.CpuFrequency.160=160 MHz espinotee.menu.CpuFrequency.160.build.f_cpu=160000000L - +espinotee.upload.resetmethod=nodemcu +espinotee.build.flash_mode=qio +espinotee.build.flash_freq=40 +espinotee.menu.FlashSize.4M1M=4M (1M SPIFFS) +espinotee.menu.FlashSize.4M1M.build.flash_size=4M +espinotee.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +espinotee.menu.FlashSize.4M1M.build.spiffs_pagesize=256 +espinotee.menu.FlashSize.4M1M.upload.maximum_size=1044464 +espinotee.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +espinotee.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +espinotee.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +espinotee.menu.FlashSize.4M3M=4M (3M SPIFFS) +espinotee.menu.FlashSize.4M3M.build.flash_size=4M +espinotee.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +espinotee.menu.FlashSize.4M3M.build.spiffs_pagesize=256 +espinotee.menu.FlashSize.4M3M.upload.maximum_size=1044464 +espinotee.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +espinotee.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +espinotee.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +espinotee.menu.LwIPVariant.open=v2 +espinotee.menu.LwIPVariant.open.build.lwip_include=lwip2/include +espinotee.menu.LwIPVariant.open.build.lwip_lib=-llwip2 +espinotee.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +espinotee.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc +espinotee.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC +espinotee.menu.LwIPVariant.Espressif=Espressif (xcc) +espinotee.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip +espinotee.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC +espinotee.menu.LwIPVariant.OpenSource=Open Source (gcc) +espinotee.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src +espinotee.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC +espinotee.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" +espinotee.menu.Debug.Disabled=Disabled +espinotee.menu.Debug.Disabled.build.debug_port= +espinotee.menu.Debug.Serial=Serial +espinotee.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +espinotee.menu.Debug.Serial1=Serial1 +espinotee.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 +espinotee.menu.DebugLevel.None____=None +espinotee.menu.DebugLevel.None____.build.debug_level= +espinotee.menu.DebugLevel.SSL=SSL +espinotee.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL +espinotee.menu.DebugLevel.TLS_MEM=TLS_MEM +espinotee.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM +espinotee.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT +espinotee.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT +espinotee.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER +espinotee.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER +espinotee.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM +espinotee.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM +espinotee.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT +espinotee.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT +espinotee.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER +espinotee.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER +espinotee.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT +espinotee.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +espinotee.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER +espinotee.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +espinotee.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER +espinotee.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT +espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER +espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +espinotee.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER +espinotee.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +espinotee.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER +espinotee.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER +espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +espinotee.menu.DebugLevel.CORE=CORE +espinotee.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE +espinotee.menu.DebugLevel.WIFI=WIFI +espinotee.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI +espinotee.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE +espinotee.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE +espinotee.menu.DebugLevel.UPDATER=UPDATER +espinotee.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER +espinotee.menu.DebugLevel.OTA=OTA +espinotee.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA +espinotee.menu.DebugLevel.NULL=NULL +espinotee.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +espinotee.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +espinotee.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" espinotee.menu.UploadSpeed.115200=115200 espinotee.menu.UploadSpeed.115200.upload.speed=115200 espinotee.menu.UploadSpeed.9600=9600 @@ -1505,146 +2630,189 @@ espinotee.menu.UploadSpeed.9600.upload.speed=9600 espinotee.menu.UploadSpeed.57600=57600 espinotee.menu.UploadSpeed.57600.upload.speed=57600 espinotee.menu.UploadSpeed.256000.windows=256000 -espinotee.menu.UploadSpeed.256000.upload.speed=256000 +espinotee.menu.UploadSpeed.256000.windows.upload.speed=256000 espinotee.menu.UploadSpeed.230400.linux=230400 +espinotee.menu.UploadSpeed.230400.linux.upload.speed=230400 espinotee.menu.UploadSpeed.230400.macosx=230400 -espinotee.menu.UploadSpeed.230400.macosx=230400 -espinotee.menu.UploadSpeed.230400.upload.speed=230400 +espinotee.menu.UploadSpeed.230400.macosx.upload.speed=230400 espinotee.menu.UploadSpeed.460800.linux=460800 +espinotee.menu.UploadSpeed.460800.linux.upload.speed=460800 espinotee.menu.UploadSpeed.460800.macosx=460800 -espinotee.menu.UploadSpeed.460800.upload.speed=460800 +espinotee.menu.UploadSpeed.460800.macosx.upload.speed=460800 espinotee.menu.UploadSpeed.512000.windows=512000 -espinotee.menu.UploadSpeed.512000.upload.speed=512000 +espinotee.menu.UploadSpeed.512000.windows.upload.speed=512000 espinotee.menu.UploadSpeed.921600=921600 espinotee.menu.UploadSpeed.921600.upload.speed=921600 -espinotee.menu.FlashSize.4M3M=4M (3M SPIFFS) -espinotee.menu.FlashSize.4M3M.build.flash_size=4M -espinotee.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -espinotee.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -espinotee.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -espinotee.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -espinotee.menu.FlashSize.4M3M.build.spiffs_pagesize=256 - -espinotee.menu.FlashSize.4M1M=4M (1M SPIFFS) -espinotee.menu.FlashSize.4M1M.build.flash_size=4M -espinotee.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -espinotee.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -espinotee.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -espinotee.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -espinotee.menu.FlashSize.4M1M.build.spiffs_pagesize=256 - ############################################################## wifinfo.name=WifInfo - +wifinfo.menu.ESPModule.ESP12.build.board=ESP8266_ESP12 +wifinfo.menu.ESPModule.ESP12.upload.maximum_size=1044464 +wifinfo.menu.ESPModule.ESP12.build.spiffs_pagesize=256 +wifinfo.menu.ESPModule.ESP12.build.flash_ld=eagle.flash.4m1m.ld +wifinfo.menu.ESPModule.ESP07192.build.spiffs_blocksize=4096 +wifinfo.menu.ESPModule.ESP07192.build.spiffs_end=0xFB000 +wifinfo.menu.ESPModule.ESP12=ESP12 (4M/1M SPIFFS) +wifinfo.menu.ESPModule.ESP12.build.spiffs_start=0x300000 +wifinfo.menu.ESPModule.ESP12.build.spiffs_end=0x3FB000 +wifinfo.menu.ESPModule.ESP07192.build.spiffs_start=0xCB000 +wifinfo.menu.ESPModule.ESP07192.build.board=ESP8266_ESP07 +wifinfo.menu.ESPModule.ESP12.build.spiffs_blocksize=8192 +wifinfo.menu.ESPModule.ESP12.build.flash_size=4M +wifinfo.build.board=WIFINFO +wifinfo.build.variant=wifinfo +wifinfo.menu.ESPModule.ESP07192.build.flash_ld=eagle.flash.1m192.ld +wifinfo.menu.ESPModule.ESP07192.build.flash_size=1M +wifinfo.menu.ESPModule.ESP07192=ESP07 (1M/192K SPIFFS) +wifinfo.menu.ESPModule.ESP07192.upload.maximum_size=827376 wifinfo.upload.tool=esptool wifinfo.upload.speed=115200 -wifinfo.upload.resetmethod=nodemcu -wifinfo.upload.maximum_size=434160 wifinfo.upload.maximum_data_size=81920 wifinfo.upload.wait_for_upload_port=true wifinfo.serial.disableDTR=true wifinfo.serial.disableRTS=true - wifinfo.build.mcu=esp8266 wifinfo.build.core=esp8266 -wifinfo.build.variant=wifinfo -wifinfo.build.board=WIFINFO wifinfo.build.spiffs_pagesize=256 -wifinfo.build.debug_port=Serial1 -wifinfo.build.debug_level=Wifinfo - +wifinfo.build.debug_port= +wifinfo.build.debug_level= +wifinfo.menu.CpuFrequency.80=80 MHz +wifinfo.menu.CpuFrequency.80.build.f_cpu=80000000L +wifinfo.menu.CpuFrequency.160=160 MHz +wifinfo.menu.CpuFrequency.160.build.f_cpu=160000000L +wifinfo.build.flash_mode=qio +wifinfo.menu.FlashFreq.40=40MHz +wifinfo.menu.FlashFreq.40.build.flash_freq=40 +wifinfo.menu.FlashFreq.80=80MHz +wifinfo.menu.FlashFreq.80.build.flash_freq=80 +wifinfo.menu.FlashSize.1M0=1M (no SPIFFS) +wifinfo.menu.FlashSize.1M0.build.flash_size=1M +wifinfo.menu.FlashSize.1M0.build.flash_ld=eagle.flash.1m0.ld +wifinfo.menu.FlashSize.1M0.build.spiffs_pagesize=256 +wifinfo.menu.FlashSize.1M0.upload.maximum_size=1023984 +wifinfo.menu.FlashSize.1M64=1M (64K SPIFFS) +wifinfo.menu.FlashSize.1M64.build.flash_size=1M +wifinfo.menu.FlashSize.1M64.build.flash_ld=eagle.flash.1m64.ld +wifinfo.menu.FlashSize.1M64.build.spiffs_pagesize=256 +wifinfo.menu.FlashSize.1M64.upload.maximum_size=958448 +wifinfo.menu.FlashSize.1M64.build.spiffs_start=0xEB000 +wifinfo.menu.FlashSize.1M64.build.spiffs_end=0xFB000 +wifinfo.menu.FlashSize.1M64.build.spiffs_blocksize=4096 +wifinfo.menu.FlashSize.1M128=1M (128K SPIFFS) +wifinfo.menu.FlashSize.1M128.build.flash_size=1M +wifinfo.menu.FlashSize.1M128.build.flash_ld=eagle.flash.1m128.ld +wifinfo.menu.FlashSize.1M128.build.spiffs_pagesize=256 +wifinfo.menu.FlashSize.1M128.upload.maximum_size=892912 +wifinfo.menu.FlashSize.1M128.build.spiffs_start=0xDB000 +wifinfo.menu.FlashSize.1M128.build.spiffs_end=0xFB000 +wifinfo.menu.FlashSize.1M128.build.spiffs_blocksize=4096 +wifinfo.menu.FlashSize.1M144=1M (144K SPIFFS) +wifinfo.menu.FlashSize.1M144.build.flash_size=1M +wifinfo.menu.FlashSize.1M144.build.flash_ld=eagle.flash.1m144.ld +wifinfo.menu.FlashSize.1M144.build.spiffs_pagesize=256 +wifinfo.menu.FlashSize.1M144.upload.maximum_size=876528 +wifinfo.menu.FlashSize.1M144.build.spiffs_start=0xD7000 +wifinfo.menu.FlashSize.1M144.build.spiffs_end=0xFB000 +wifinfo.menu.FlashSize.1M144.build.spiffs_blocksize=4096 +wifinfo.menu.FlashSize.1M160=1M (160K SPIFFS) +wifinfo.menu.FlashSize.1M160.build.flash_size=1M +wifinfo.menu.FlashSize.1M160.build.flash_ld=eagle.flash.1m160.ld +wifinfo.menu.FlashSize.1M160.build.spiffs_pagesize=256 +wifinfo.menu.FlashSize.1M160.upload.maximum_size=860144 +wifinfo.menu.FlashSize.1M160.build.spiffs_start=0xD3000 +wifinfo.menu.FlashSize.1M160.build.spiffs_end=0xFB000 +wifinfo.menu.FlashSize.1M160.build.spiffs_blocksize=4096 +wifinfo.menu.FlashSize.1M192=1M (192K SPIFFS) +wifinfo.menu.FlashSize.1M192.build.flash_size=1M +wifinfo.menu.FlashSize.1M192.build.flash_ld=eagle.flash.1m192.ld +wifinfo.menu.FlashSize.1M192.build.spiffs_pagesize=256 +wifinfo.menu.FlashSize.1M192.upload.maximum_size=827376 +wifinfo.menu.FlashSize.1M192.build.spiffs_start=0xCB000 +wifinfo.menu.FlashSize.1M192.build.spiffs_end=0xFB000 +wifinfo.menu.FlashSize.1M192.build.spiffs_blocksize=4096 +wifinfo.menu.FlashSize.1M256=1M (256K SPIFFS) +wifinfo.menu.FlashSize.1M256.build.flash_size=1M +wifinfo.menu.FlashSize.1M256.build.flash_ld=eagle.flash.1m256.ld +wifinfo.menu.FlashSize.1M256.build.spiffs_pagesize=256 +wifinfo.menu.FlashSize.1M256.upload.maximum_size=761840 +wifinfo.menu.FlashSize.1M256.build.spiffs_start=0xBB000 +wifinfo.menu.FlashSize.1M256.build.spiffs_end=0xFB000 +wifinfo.menu.FlashSize.1M256.build.spiffs_blocksize=4096 +wifinfo.menu.FlashSize.1M512=1M (512K SPIFFS) +wifinfo.menu.FlashSize.1M512.build.flash_size=1M +wifinfo.menu.FlashSize.1M512.build.flash_ld=eagle.flash.1m512.ld +wifinfo.menu.FlashSize.1M512.build.spiffs_pagesize=256 +wifinfo.menu.FlashSize.1M512.upload.maximum_size=499696 +wifinfo.menu.FlashSize.1M512.build.spiffs_start=0x7B000 +wifinfo.menu.FlashSize.1M512.build.spiffs_end=0xFB000 +wifinfo.menu.FlashSize.1M512.build.spiffs_blocksize=8192 +wifinfo.menu.LwIPVariant.open=v2 +wifinfo.menu.LwIPVariant.open.build.lwip_include=lwip2/include +wifinfo.menu.LwIPVariant.open.build.lwip_lib=-llwip2 +wifinfo.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +wifinfo.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc +wifinfo.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC +wifinfo.menu.LwIPVariant.Espressif=Espressif (xcc) +wifinfo.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip +wifinfo.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC +wifinfo.menu.LwIPVariant.OpenSource=Open Source (gcc) +wifinfo.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src +wifinfo.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC +wifinfo.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" wifinfo.menu.Debug.Disabled=Disabled wifinfo.menu.Debug.Disabled.build.debug_port= wifinfo.menu.Debug.Serial=Serial wifinfo.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial wifinfo.menu.Debug.Serial1=Serial1 wifinfo.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 - -wifinfo.menu.DebugLevel.None=None -wifinfo.menu.DebugLevel.None.build.debug_level= -wifinfo.menu.DebugLevel.Wifinfo=Wifinfo -wifinfo.menu.DebugLevel.Wifinfo.build.debug_level=-DDEBUG_ESP_WIFINFO - -#wifinfo.menu.ESPModule.ESP07512=ESP07 (1M/512K SPIFFS) -#wifinfo.menu.ESPModule.ESP07512.build.board=ESP8266_ESP07 -#wifinfo.menu.ESPModule.ESP07512.build.flash_size=1M -#wifinfo.menu.ESPModule.ESP07512.build.flash_ld=eagle.flash.1m512.ld -#wifinfo.menu.ESPModule.ESP07512.build.spiffs_start=0x7B000 -#wifinfo.menu.ESPModule.ESP07512.build.spiffs_end=0xFB000 -#wifinfo.menu.ESPModule.ESP07512.build.spiffs_blocksize=8192 -#wifinfo.menu.ESPModule.ESP07512.upload.maximum_size=499696 - -#wifinfo.menu.ESPModule.ESP07256=ESP07 (1M/256K SPIFFS) -#wifinfo.menu.ESPModule.ESP07256.build.board=ESP8266_ESP07 -#wifinfo.menu.ESPModule.ESP07256.build.flash_size=1M -#wifinfo.menu.ESPModule.ESP07256.build.flash_ld=eagle.flash.1m256.ld -#wifinfo.menu.ESPModule.ESP07256.build.spiffs_start=0xBB000 -#wifinfo.menu.ESPModule.ESP07256.build.spiffs_end=0xFB000 -##wifinfo.menu.ESPModule.ESP07256.build.spiffs_blocksize=4096 -#wifinfo.menu.ESPModule.ESP07256.upload.maximum_size=761840 - -wifinfo.menu.ESPModule.ESP07192=ESP07 (1M/192K SPIFFS) -wifinfo.menu.ESPModule.ESP07192.build.board=ESP8266_ESP07 -wifinfo.menu.ESPModule.ESP07192.build.flash_size=1M -wifinfo.menu.ESPModule.ESP07192.build.flash_ld=eagle.flash.1m192.ld -wifinfo.menu.ESPModule.ESP07192.build.spiffs_start=0xCB000 -wifinfo.menu.ESPModule.ESP07192.build.spiffs_end=0xFB000 -wifinfo.menu.ESPModule.ESP07192.build.spiffs_blocksize=4096 -wifinfo.menu.ESPModule.ESP07192.upload.maximum_size=827376 - -#wifinfo.menu.ESPModule.ESP07160=ESP07 (1M/160K SPIFFS) -#wifinfo.menu.ESPModule.ESP07160.build.board=ESP8266_ESP07 -#wifinfo.menu.ESPModule.ESP07160.build.flash_size=1M -#wifinfo.menu.ESPModule.ESP07160.build.flash_ld=eagle.flash.1m160.ld -#wifinfo.menu.ESPModule.ESP07160.build.spiffs_start=0xD3000 -#wifinfo.menu.ESPModule.ESP07160.build.spiffs_end=0xFB000 -#wifinfo.menu.ESPModule.ESP07160.build.spiffs_blocksize=4096 -#wifinfo.menu.ESPModule.ESP07160.upload.maximum_size=860144 -# -#wifinfo.menu.ESPModule.ESP07144=ESP07 (1M/144K SPIFFS) -#wifinfo.menu.ESPModule.ESP07144.build.board=ESP8266_ESP07 -#wifinfo.menu.ESPModule.ESP07144.build.flash_size=1M -#wifinfo.menu.ESPModule.ESP07144.build.flash_ld=eagle.flash.1m144.ld -#wifinfo.menu.ESPModule.ESP07144.build.spiffs_start=0xD7000 -#wifinfo.menu.ESPModule.ESP07144.build.spiffs_end=0xFB000 -#wifinfo.menu.ESPModule.ESP07144.build.spiffs_blocksize=4096 -#wifinfo.menu.ESPModule.ESP07144.upload.maximum_size=876528 -# -#wifinfo.menu.ESPModule.ESP07=ESP07 (1M/64K SPIFFS) -#wifinfo.menu.ESPModule.ESP07.build.board=ESP8266_ESP07 -#wifinfo.menu.ESPModule.ESP07.build.flash_size=1M -#wifinfo.menu.ESPModule.ESP07.build.flash_ld=eagle.flash.1m64.ld -#wifinfo.menu.ESPModule.ESP07.build.spiffs_start=0xEB000 -#wifinfo.menu.ESPModule.ESP07.build.spiffs_end=0xFB000 -#wifinfo.menu.ESPModule.ESP07.build.spiffs_blocksize=4096 -#wifinfo.menu.ESPModule.ESP07.upload.maximum_size=958448 - -wifinfo.menu.ESPModule.ESP12=ESP12 (4M/1M SPIFFS) -wifinfo.menu.ESPModule.ESP12.build.board=ESP8266_ESP12 -wifinfo.menu.ESPModule.ESP12.build.flash_size=4M -wifinfo.menu.ESPModule.ESP12.build.flash_ld=eagle.flash.4m1m.ld -wifinfo.menu.ESPModule.ESP12.build.spiffs_start=0x300000 -wifinfo.menu.ESPModule.ESP12.build.spiffs_end=0x3FB000 -wifinfo.menu.ESPModule.ESP12.build.spiffs_blocksize=8192 -wifinfo.menu.ESPModule.ESP12.build.spiffs_pagesize=256 -wifinfo.menu.ESPModule.ESP12.upload.maximum_size=1044464 - -wifinfo.menu.CpuFrequency.160=160 MHz -wifinfo.menu.CpuFrequency.160.build.f_cpu=160000000L -wifinfo.menu.CpuFrequency.80=80 MHz -wifinfo.menu.CpuFrequency.80.build.f_cpu=80000000L - -wifinfo.menu.FlashFreq.40=40MHz -wifinfo.menu.FlashFreq.40.build.flash_freq=40 -wifinfo.menu.FlashFreq.80=80MHz -wifinfo.menu.FlashFreq.80.build.flash_freq=80 - -wifinfo.menu.FlashMode.qio=QIO -wifinfo.menu.FlashMode.qio.build.flash_mode=qio -wifinfo.menu.FlashMode.dio=DIO -wifinfo.menu.FlashMode.dio.build.flash_mode=dio - +wifinfo.menu.DebugLevel.None____=None +wifinfo.menu.DebugLevel.None____.build.debug_level= +wifinfo.menu.DebugLevel.SSL=SSL +wifinfo.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL +wifinfo.menu.DebugLevel.TLS_MEM=TLS_MEM +wifinfo.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM +wifinfo.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT +wifinfo.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT +wifinfo.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER +wifinfo.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER +wifinfo.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM +wifinfo.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM +wifinfo.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT +wifinfo.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT +wifinfo.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER +wifinfo.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER +wifinfo.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT +wifinfo.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +wifinfo.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER +wifinfo.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +wifinfo.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER +wifinfo.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT +wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER +wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +wifinfo.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER +wifinfo.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +wifinfo.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER +wifinfo.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER +wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +wifinfo.menu.DebugLevel.CORE=CORE +wifinfo.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE +wifinfo.menu.DebugLevel.WIFI=WIFI +wifinfo.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI +wifinfo.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE +wifinfo.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE +wifinfo.menu.DebugLevel.UPDATER=UPDATER +wifinfo.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER +wifinfo.menu.DebugLevel.OTA=OTA +wifinfo.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA +wifinfo.menu.DebugLevel.NULL=NULL +wifinfo.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +wifinfo.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +wifinfo.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" wifinfo.menu.UploadSpeed.115200=115200 wifinfo.menu.UploadSpeed.115200.upload.speed=115200 wifinfo.menu.UploadSpeed.9600=9600 @@ -1652,358 +2820,267 @@ wifinfo.menu.UploadSpeed.9600.upload.speed=9600 wifinfo.menu.UploadSpeed.57600=57600 wifinfo.menu.UploadSpeed.57600.upload.speed=57600 wifinfo.menu.UploadSpeed.256000.windows=256000 -wifinfo.menu.UploadSpeed.256000.upload.speed=256000 +wifinfo.menu.UploadSpeed.256000.windows.upload.speed=256000 wifinfo.menu.UploadSpeed.230400.linux=230400 +wifinfo.menu.UploadSpeed.230400.linux.upload.speed=230400 wifinfo.menu.UploadSpeed.230400.macosx=230400 -wifinfo.menu.UploadSpeed.230400.upload.speed=230400 +wifinfo.menu.UploadSpeed.230400.macosx.upload.speed=230400 wifinfo.menu.UploadSpeed.460800.linux=460800 +wifinfo.menu.UploadSpeed.460800.linux.upload.speed=460800 wifinfo.menu.UploadSpeed.460800.macosx=460800 -wifinfo.menu.UploadSpeed.460800.upload.speed=460800 +wifinfo.menu.UploadSpeed.460800.macosx.upload.speed=460800 wifinfo.menu.UploadSpeed.512000.windows=512000 -wifinfo.menu.UploadSpeed.512000.upload.speed=512000 +wifinfo.menu.UploadSpeed.512000.windows.upload.speed=512000 wifinfo.menu.UploadSpeed.921600=921600 wifinfo.menu.UploadSpeed.921600.upload.speed=921600 - ############################################################## -coredev.name=Core Development Module - -coredev.upload.tool=esptool -coredev.upload.speed=115200 -coredev.upload.resetmethod=ck -coredev.upload.maximum_size=434160 -coredev.upload.maximum_data_size=81920 -coredev.upload.wait_for_upload_port=true -coredev.serial.disableDTR=true -coredev.serial.disableRTS=true - -coredev.build.mcu=esp8266 -coredev.build.f_cpu=80000000L -coredev.build.board=ESP8266_ESP01 -coredev.build.core=esp8266 -coredev.build.variant=generic -coredev.build.flash_mode=qio -coredev.build.spiffs_pagesize=256 -coredev.build.debug_port= -coredev.build.debug_level= -coredev.build.lwip_lib=-llwip -coredev.build.lwip_flags= - - -coredev.menu.LwIPVariant.Espressif=Espressif (xcc) -coredev.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip -coredev.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC -coredev.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) -coredev.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc -coredev.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -coredev.menu.LwIPVariant.OpenSource=Open Source (gcc) -coredev.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src -coredev.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC -coredev.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" - -coredev.menu.CpuFrequency.80=80 MHz -coredev.menu.CpuFrequency.80.build.f_cpu=80000000L -coredev.menu.CpuFrequency.160=160 MHz -coredev.menu.CpuFrequency.160.build.f_cpu=160000000L - -coredev.menu.FlashFreq.40=40MHz -coredev.menu.FlashFreq.40.build.flash_freq=40 -coredev.menu.FlashFreq.80=80MHz -coredev.menu.FlashFreq.80.build.flash_freq=80 - -coredev.menu.FlashMode.dio=DIO -coredev.menu.FlashMode.dio.build.flash_mode=dio -coredev.menu.FlashMode.qio=QIO -coredev.menu.FlashMode.qio.build.flash_mode=qio -coredev.menu.FlashMode.dout=DOUT -coredev.menu.FlashMode.dout.build.flash_mode=dout -coredev.menu.FlashMode.qout=QOUT -coredev.menu.FlashMode.qout.build.flash_mode=qout - -coredev.menu.UploadSpeed.115200=115200 -coredev.menu.UploadSpeed.115200.upload.speed=115200 -coredev.menu.UploadSpeed.9600=9600 -coredev.menu.UploadSpeed.9600.upload.speed=9600 -coredev.menu.UploadSpeed.57600=57600 -coredev.menu.UploadSpeed.57600.upload.speed=57600 -coredev.menu.UploadSpeed.256000.windows=256000 -coredev.menu.UploadSpeed.256000.upload.speed=256000 -coredev.menu.UploadSpeed.230400.linux=230400 -coredev.menu.UploadSpeed.230400.macosx=230400 -coredev.menu.UploadSpeed.230400.upload.speed=230400 -coredev.menu.UploadSpeed.460800.linux=460800 -coredev.menu.UploadSpeed.460800.macosx=460800 -coredev.menu.UploadSpeed.460800.upload.speed=460800 -coredev.menu.UploadSpeed.512000.windows=512000 -coredev.menu.UploadSpeed.512000.upload.speed=512000 -coredev.menu.UploadSpeed.921600=921600 -coredev.menu.UploadSpeed.921600.upload.speed=921600 - -coredev.menu.FlashSize.512K64=512K (64K SPIFFS) -coredev.menu.FlashSize.512K64.build.flash_size=512K -coredev.menu.FlashSize.512K64.build.flash_ld=eagle.flash.512k64.ld -coredev.menu.FlashSize.512K64.build.spiffs_start=0x6B000 -coredev.menu.FlashSize.512K64.build.spiffs_end=0x7B000 -coredev.menu.FlashSize.512K64.build.spiffs_blocksize=4096 -coredev.menu.FlashSize.512K64.upload.maximum_size=434160 - -coredev.menu.FlashSize.512K128=512K (128K SPIFFS) -coredev.menu.FlashSize.512K128.build.flash_size=512K -coredev.menu.FlashSize.512K128.build.flash_ld=eagle.flash.512k128.ld -coredev.menu.FlashSize.512K128.build.spiffs_start=0x5B000 -coredev.menu.FlashSize.512K128.build.spiffs_end=0x7B000 -coredev.menu.FlashSize.512K128.build.spiffs_blocksize=4096 -coredev.menu.FlashSize.512K128.upload.maximum_size=368624 - -coredev.menu.FlashSize.512K0=512K (no SPIFFS) -coredev.menu.FlashSize.512K0.build.flash_size=512K -coredev.menu.FlashSize.512K0.build.flash_ld=eagle.flash.512k0.ld -coredev.menu.FlashSize.512K0.upload.maximum_size=499696 - -coredev.menu.FlashSize.1M512=1M (512K SPIFFS) -coredev.menu.FlashSize.1M512.build.flash_size=1M -coredev.menu.FlashSize.1M512.build.flash_ld=eagle.flash.1m512.ld -coredev.menu.FlashSize.1M512.build.spiffs_start=0x7B000 -coredev.menu.FlashSize.1M512.build.spiffs_end=0xFB000 -coredev.menu.FlashSize.1M512.build.spiffs_blocksize=8192 -coredev.menu.FlashSize.1M512.upload.maximum_size=499696 - -coredev.menu.FlashSize.1M256=1M (256K SPIFFS) -coredev.menu.FlashSize.1M256.build.flash_size=1M -coredev.menu.FlashSize.1M256.build.flash_ld=eagle.flash.1m256.ld -coredev.menu.FlashSize.1M256.build.spiffs_start=0xBB000 -coredev.menu.FlashSize.1M256.build.spiffs_end=0xFB000 -coredev.menu.FlashSize.1M256.build.spiffs_blocksize=4096 -coredev.menu.FlashSize.1M256.upload.maximum_size=761840 - -coredev.menu.FlashSize.1M192=1M (192K SPIFFS) -coredev.menu.FlashSize.1M192.build.flash_size=1M -coredev.menu.FlashSize.1M192.build.flash_ld=eagle.flash.1m192.ld -coredev.menu.FlashSize.1M192.build.spiffs_start=0xCB000 -coredev.menu.FlashSize.1M192.build.spiffs_end=0xFB000 -coredev.menu.FlashSize.1M192.build.spiffs_blocksize=4096 -coredev.menu.FlashSize.1M192.upload.maximum_size=827376 - -coredev.menu.FlashSize.1M160=1M (160K SPIFFS) -coredev.menu.FlashSize.1M160.build.flash_size=1M -coredev.menu.FlashSize.1M160.build.flash_ld=eagle.flash.1m160.ld -coredev.menu.FlashSize.1M160.build.spiffs_start=0xD3000 -coredev.menu.FlashSize.1M160.build.spiffs_end=0xFB000 -coredev.menu.FlashSize.1M160.build.spiffs_blocksize=4096 -coredev.menu.FlashSize.1M160.upload.maximum_size=860144 - -coredev.menu.FlashSize.1M144=1M (144K SPIFFS) -coredev.menu.FlashSize.1M144.build.flash_size=1M -coredev.menu.FlashSize.1M144.build.flash_ld=eagle.flash.1m144.ld -coredev.menu.FlashSize.1M144.build.spiffs_start=0xD7000 -coredev.menu.FlashSize.1M144.build.spiffs_end=0xFB000 -coredev.menu.FlashSize.1M144.build.spiffs_blocksize=4096 -coredev.menu.FlashSize.1M144.upload.maximum_size=876528 - -coredev.menu.FlashSize.1M128=1M (128K SPIFFS) -coredev.menu.FlashSize.1M128.build.flash_size=1M -coredev.menu.FlashSize.1M128.build.flash_ld=eagle.flash.1m128.ld -coredev.menu.FlashSize.1M128.build.spiffs_start=0xDB000 -coredev.menu.FlashSize.1M128.build.spiffs_end=0xFB000 -coredev.menu.FlashSize.1M128.build.spiffs_blocksize=4096 -coredev.menu.FlashSize.1M128.upload.maximum_size=892912 - -coredev.menu.FlashSize.1M64=1M (64K SPIFFS) -coredev.menu.FlashSize.1M64.build.flash_size=1M -coredev.menu.FlashSize.1M64.build.flash_ld=eagle.flash.1m64.ld -coredev.menu.FlashSize.1M64.build.spiffs_start=0xEB000 -coredev.menu.FlashSize.1M64.build.spiffs_end=0xFB000 -coredev.menu.FlashSize.1M64.build.spiffs_blocksize=4096 -coredev.menu.FlashSize.1M64.upload.maximum_size=958448 - -coredev.menu.FlashSize.2M=2M (1M SPIFFS) -coredev.menu.FlashSize.2M.build.flash_size=2M -coredev.menu.FlashSize.2M.build.flash_ld=eagle.flash.2m.ld -coredev.menu.FlashSize.2M.build.spiffs_start=0x100000 -coredev.menu.FlashSize.2M.build.spiffs_end=0x1FB000 -coredev.menu.FlashSize.2M.build.spiffs_blocksize=8192 -coredev.menu.FlashSize.2M.upload.maximum_size=1044464 - -coredev.menu.FlashSize.4M1M=4M (1M SPIFFS) -coredev.menu.FlashSize.4M1M.build.flash_size=4M -coredev.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -coredev.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -coredev.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -coredev.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -coredev.menu.FlashSize.4M1M.build.spiffs_pagesize=256 -coredev.menu.FlashSize.4M1M.upload.maximum_size=1044464 - -coredev.menu.FlashSize.4M3M=4M (3M SPIFFS) -coredev.menu.FlashSize.4M3M.build.flash_size=4M -coredev.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -coredev.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -coredev.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -coredev.menu.FlashSize.4M3M.build.spiffs_pagesize=256 -coredev.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -coredev.menu.FlashSize.4M3M.upload.maximum_size=1044464 - -coredev.menu.FlashSize.8M7M=8M (7M SPIFFS) -coredev.menu.FlashSize.8M7M.build.flash_size=8M -coredev.menu.FlashSize.8M7M.build.flash_ld=eagle.flash.8m.ld -coredev.menu.FlashSize.8M7M.build.spiffs_start=0x100000 -coredev.menu.FlashSize.8M7M.build.spiffs_end=0x7FB000 -coredev.menu.FlashSize.8M7M.build.spiffs_pagesize=256 -coredev.menu.FlashSize.8M7M.build.spiffs_blocksize=8192 -coredev.menu.FlashSize.8M7M.upload.maximum_size=1044464 - -coredev.menu.FlashSize.16M15M=16M (15M SPIFFS) -coredev.menu.FlashSize.16M15M.build.flash_size=16M -coredev.menu.FlashSize.16M15M.build.flash_ld=eagle.flash.16m.ld -coredev.menu.FlashSize.16M15M.build.spiffs_start=0x100000 -coredev.menu.FlashSize.16M15M.build.spiffs_end=0x17FB000 -coredev.menu.FlashSize.16M15M.build.spiffs_pagesize=256 -coredev.menu.FlashSize.16M15M.build.spiffs_blocksize=8192 -coredev.menu.FlashSize.16M15M.upload.maximum_size=1044464 - -coredev.menu.ResetMethod.ck=ck -coredev.menu.ResetMethod.ck.upload.resetmethod=ck -coredev.menu.ResetMethod.nodemcu=nodemcu -coredev.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu - -coredev.menu.Debug.Disabled=Disabled -coredev.menu.Debug.Disabled.build.debug_port= -coredev.menu.Debug.Serial=Serial -coredev.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial -coredev.menu.Debug.Serial1=Serial1 -coredev.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 - -coredev.menu.DebugLevel.None____=None -coredev.menu.DebugLevel.None____.build.debug_level= -coredev.menu.DebugLevel.Core____=Core -coredev.menu.DebugLevel.Core____.build.debug_level=-DDEBUG_ESP_CORE -coredev.menu.DebugLevel.SSL_____=Core + SSL -coredev.menu.DebugLevel.SSL_____.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -coredev.menu.DebugLevel.SSL_MEM_=Core + SSL + TLS Mem -coredev.menu.DebugLevel.SSL_MEM_.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_TLS_MEM -coredev.menu.DebugLevel.WiFic___=Core + WiFi -coredev.menu.DebugLevel.WiFic___.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -coredev.menu.DebugLevel.WiFi____=WiFi -coredev.menu.DebugLevel.WiFi____.build.debug_level=-DDEBUG_ESP_WIFI -coredev.menu.DebugLevel.HTTPClient=HTTPClient -coredev.menu.DebugLevel.HTTPClient.build.debug_level=-DDEBUG_ESP_HTTP_CLIENT -coredev.menu.DebugLevel.HTTPClient2=HTTPClient + SSL -coredev.menu.DebugLevel.HTTPClient2.build.debug_level=-DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_SSL -coredev.menu.DebugLevel.HTTPUpdate=HTTPUpdate -coredev.menu.DebugLevel.HTTPUpdate.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -coredev.menu.DebugLevel.HTTPUpdate2=HTTPClient + HTTPUpdate -coredev.menu.DebugLevel.HTTPUpdate2.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_UPDATE -coredev.menu.DebugLevel.HTTPUpdate3=HTTPClient + HTTPUpdate + Updater -coredev.menu.DebugLevel.HTTPUpdate3.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -coredev.menu.DebugLevel.HTTPServer=HTTPServer -coredev.menu.DebugLevel.HTTPServer.build.debug_level=-DDEBUG_ESP_HTTP_SERVER -coredev.menu.DebugLevel.UPDATER=Updater -coredev.menu.DebugLevel.UPDATER.build.debug_level=-DDEBUG_ESP_UPDATER -coredev.menu.DebugLevel.OTA_____=OTA -coredev.menu.DebugLevel.OTA_____.build.debug_level=-DDEBUG_ESP_OTA -coredev.menu.DebugLevel.OTA2____=OTA + Updater -coredev.menu.DebugLevel.OTA2____.build.debug_level=-DDEBUG_ESP_OTA -DDEBUG_ESP_UPDATER -coredev.menu.DebugLevel.all_____=All -coredev.menu.DebugLevel.all_____.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_TLS_MEM - -############ Arduino boards with Esp8266 ############ - arduino-esp8266.name=Arduino - +arduino-esp8266.menu.BoardModel.starottodeved.build.board=ESP8266_ARDUINO_STAR_OTTO +arduino-esp8266.menu.BoardModel.primo.build.extra_flags=-DF_CRYSTAL=40000000 +arduino-esp8266.menu.BoardModel.starottodeved.build.extra_flags=-DF_CRYSTAL=40000000 +arduino-esp8266.menu.BoardModel.starottodeved.build.variant=arduino_uart +arduino-esp8266.menu.BoardModel.unowifideved.build.board=ESP8266_ARDUINO_UNOWIFI +arduino-esp8266.menu.BoardModel.unowifideved.build.extra_flags=-DF_CRYSTAL=40000000 +arduino-esp8266.menu.BoardModel.primo=Primo +arduino-esp8266.menu.BoardModel.unowifideved.build.variant=arduino_uart +arduino-esp8266.menu.BoardModel.primo.build.variant=arduino_spi +arduino-esp8266.menu.BoardModel.starottodeved=Star OTTO +arduino-esp8266.build.board=ESP8266_ARDUINO +arduino-esp8266.menu.BoardModel.primo.build.board=ESP8266_ARDUINO_PRIMO +arduino-esp8266.menu.BoardModel.unowifideved=Uno WiFi arduino-esp8266.upload.tool=esptool -arduino-esp8266.upload.speed=9600 -arduino-esp8266.upload.resetmethod=ck -arduino-esp8266.upload.maximum_size=1044464 +arduino-esp8266.upload.speed=115200 arduino-esp8266.upload.maximum_data_size=81920 arduino-esp8266.upload.wait_for_upload_port=true arduino-esp8266.serial.disableDTR=true arduino-esp8266.serial.disableRTS=true - arduino-esp8266.build.mcu=esp8266 -arduino-esp8266.build.f_cpu=80000000L -#arduino-esp8266.build.f_crystal=40000000 arduino-esp8266.build.core=esp8266 -arduino-esp8266.build.flash_mode=qio -arduino-esp8266.build.flash_size=4M -arduino-esp8266.build.flash_freq=40 +arduino-esp8266.build.variant=generic +arduino-esp8266.build.spiffs_pagesize=256 arduino-esp8266.build.debug_port= arduino-esp8266.build.debug_level= -arduino-esp8266.build.board=ESP8266_ARDUINO - -arduino-esp8266.menu.BoardModel.starottodeved=Star OTTO -arduino-esp8266.menu.BoardModel.starottodeved.build.board=ESP8266_ARDUINO_STAR_OTTO -arduino-esp8266.menu.BoardModel.starottodeved.build.variant=arduino_uart -arduino-esp8266.menu.BoardModel.starottodeved.build.extra_flags=-DF_CRYSTAL=40000000 - -arduino-esp8266.menu.BoardModel.primo=Primo -arduino-esp8266.menu.BoardModel.primo.build.board=ESP8266_ARDUINO_PRIMO -arduino-esp8266.menu.BoardModel.primo.build.variant=arduino_spi -arduino-esp8266.menu.BoardModel.primo.build.extra_flags=-DF_CRYSTAL=40000000 - -arduino-esp8266.menu.BoardModel.unowifideved=Uno WiFi -arduino-esp8266.menu.BoardModel.unowifideved.build.board=ESP8266_ARDUINO_UNOWIFI -arduino-esp8266.menu.BoardModel.unowifideved.build.variant=arduino_uart -arduino-esp8266.menu.BoardModel.unowifideved.build.extra_flags=-DF_CRYSTAL=40000000 - -arduino-esp8266.menu.UploadSpeed.9600=9600 -arduino-esp8266.menu.UploadSpeed.9600.upload.speed=9600 -arduino-esp8266.menu.UploadSpeed.19200=19200 -arduino-esp8266.menu.UploadSpeed.19200.upload.speed=19200 -arduino-esp8266.menu.UploadSpeed.57600=57600 -arduino-esp8266.menu.UploadSpeed.57600.upload.speed=57600 -arduino-esp8266.menu.UploadSpeed.115200=115200 -arduino-esp8266.menu.UploadSpeed.115200.upload.speed=115200 -arduino-esp8266.menu.UploadSpeed.230400=230400 -arduino-esp8266.menu.UploadSpeed.230400.upload.speed=230400 -arduino-esp8266.menu.UploadSpeed.460800=460800 -arduino-esp8266.menu.UploadSpeed.460800.upload.speed=460800 - +arduino-esp8266.menu.CpuFrequency.80=80 MHz +arduino-esp8266.menu.CpuFrequency.80.build.f_cpu=80000000L +arduino-esp8266.menu.CpuFrequency.160=160 MHz +arduino-esp8266.menu.CpuFrequency.160.build.f_cpu=160000000L +arduino-esp8266.build.flash_mode=qio +arduino-esp8266.build.flash_freq=40 arduino-esp8266.menu.FlashSize.4M1M=4M (1M SPIFFS) arduino-esp8266.menu.FlashSize.4M1M.build.flash_size=4M arduino-esp8266.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +arduino-esp8266.menu.FlashSize.4M1M.build.spiffs_pagesize=256 +arduino-esp8266.menu.FlashSize.4M1M.upload.maximum_size=1044464 arduino-esp8266.menu.FlashSize.4M1M.build.spiffs_start=0x300000 arduino-esp8266.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 arduino-esp8266.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -arduino-esp8266.menu.FlashSize.4M1M.build.spiffs_pagesize=256 - arduino-esp8266.menu.FlashSize.4M3M=4M (3M SPIFFS) arduino-esp8266.menu.FlashSize.4M3M.build.flash_size=4M arduino-esp8266.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +arduino-esp8266.menu.FlashSize.4M3M.build.spiffs_pagesize=256 +arduino-esp8266.menu.FlashSize.4M3M.upload.maximum_size=1044464 arduino-esp8266.menu.FlashSize.4M3M.build.spiffs_start=0x100000 arduino-esp8266.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 arduino-esp8266.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -arduino-esp8266.menu.FlashSize.4M3M.build.spiffs_pagesize=256 +arduino-esp8266.menu.LwIPVariant.open=v2 +arduino-esp8266.menu.LwIPVariant.open.build.lwip_include=lwip2/include +arduino-esp8266.menu.LwIPVariant.open.build.lwip_lib=-llwip2 +arduino-esp8266.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +arduino-esp8266.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc +arduino-esp8266.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC +arduino-esp8266.menu.LwIPVariant.Espressif=Espressif (xcc) +arduino-esp8266.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip +arduino-esp8266.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC +arduino-esp8266.menu.LwIPVariant.OpenSource=Open Source (gcc) +arduino-esp8266.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src +arduino-esp8266.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC +arduino-esp8266.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" +arduino-esp8266.menu.Debug.Disabled=Disabled +arduino-esp8266.menu.Debug.Disabled.build.debug_port= +arduino-esp8266.menu.Debug.Serial=Serial +arduino-esp8266.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +arduino-esp8266.menu.Debug.Serial1=Serial1 +arduino-esp8266.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 +arduino-esp8266.menu.DebugLevel.None____=None +arduino-esp8266.menu.DebugLevel.None____.build.debug_level= +arduino-esp8266.menu.DebugLevel.SSL=SSL +arduino-esp8266.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL +arduino-esp8266.menu.DebugLevel.TLS_MEM=TLS_MEM +arduino-esp8266.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM +arduino-esp8266.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT +arduino-esp8266.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT +arduino-esp8266.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER +arduino-esp8266.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER +arduino-esp8266.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM +arduino-esp8266.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM +arduino-esp8266.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT +arduino-esp8266.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT +arduino-esp8266.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER +arduino-esp8266.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER +arduino-esp8266.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT +arduino-esp8266.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +arduino-esp8266.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER +arduino-esp8266.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +arduino-esp8266.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER +arduino-esp8266.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT +arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER +arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +arduino-esp8266.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER +arduino-esp8266.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +arduino-esp8266.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER +arduino-esp8266.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER +arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +arduino-esp8266.menu.DebugLevel.CORE=CORE +arduino-esp8266.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE +arduino-esp8266.menu.DebugLevel.WIFI=WIFI +arduino-esp8266.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI +arduino-esp8266.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE +arduino-esp8266.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE +arduino-esp8266.menu.DebugLevel.UPDATER=UPDATER +arduino-esp8266.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER +arduino-esp8266.menu.DebugLevel.OTA=OTA +arduino-esp8266.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA +arduino-esp8266.menu.DebugLevel.NULL=NULL +arduino-esp8266.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +arduino-esp8266.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +arduino-esp8266.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +arduino-esp8266.menu.UploadSpeed.115200=115200 +arduino-esp8266.menu.UploadSpeed.115200.upload.speed=115200 +arduino-esp8266.menu.UploadSpeed.9600=9600 +arduino-esp8266.menu.UploadSpeed.9600.upload.speed=9600 +arduino-esp8266.menu.UploadSpeed.57600=57600 +arduino-esp8266.menu.UploadSpeed.57600.upload.speed=57600 +arduino-esp8266.menu.UploadSpeed.256000.windows=256000 +arduino-esp8266.menu.UploadSpeed.256000.windows.upload.speed=256000 +arduino-esp8266.menu.UploadSpeed.230400.linux=230400 +arduino-esp8266.menu.UploadSpeed.230400.linux.upload.speed=230400 +arduino-esp8266.menu.UploadSpeed.230400.macosx=230400 +arduino-esp8266.menu.UploadSpeed.230400.macosx.upload.speed=230400 +arduino-esp8266.menu.UploadSpeed.460800.linux=460800 +arduino-esp8266.menu.UploadSpeed.460800.linux.upload.speed=460800 +arduino-esp8266.menu.UploadSpeed.460800.macosx=460800 +arduino-esp8266.menu.UploadSpeed.460800.macosx.upload.speed=460800 +arduino-esp8266.menu.UploadSpeed.512000.windows=512000 +arduino-esp8266.menu.UploadSpeed.512000.windows.upload.speed=512000 +arduino-esp8266.menu.UploadSpeed.921600=921600 +arduino-esp8266.menu.UploadSpeed.921600.upload.speed=921600 ############################################################## - gen4iod.name=4D Systems gen4 IoD Range - +gen4iod.build.board=GEN4_IOD +gen4iod.build.f_cpu=160000000L +gen4iod.build.variant=generic gen4iod.upload.tool=esptool -gen4iod.upload.speed=921600 -gen4iod.upload.resetmethod=nodemcu -gen4iod.upload.maximum_size=434160 +gen4iod.upload.speed=115200 gen4iod.upload.maximum_data_size=81920 gen4iod.upload.wait_for_upload_port=true gen4iod.serial.disableDTR=true gen4iod.serial.disableRTS=true - gen4iod.build.mcu=esp8266 -gen4iod.build.f_cpu=160000000L -gen4iod.build.board=GEN4_IOD gen4iod.build.core=esp8266 -gen4iod.build.variant=generic -gen4iod.build.flash_mode=qio -# flash chip: AT25SF041 (512 kbyte, 4Mbit) -gen4iod.build.flash_size=512K -gen4iod.build.flash_ld=eagle.flash.512k0.ld -gen4iod.build.flash_freq=80 +gen4iod.build.spiffs_pagesize=256 gen4iod.build.debug_port= gen4iod.build.debug_level= - -gen4iod.menu.CpuFrequency.160=160 MHz -gen4iod.menu.CpuFrequency.160.build.f_cpu=160000000L gen4iod.menu.CpuFrequency.80=80 MHz gen4iod.menu.CpuFrequency.80.build.f_cpu=80000000L - +gen4iod.menu.CpuFrequency.160=160 MHz +gen4iod.menu.CpuFrequency.160.build.f_cpu=160000000L +gen4iod.build.flash_mode=qio +gen4iod.build.flash_freq=80 +gen4iod.menu.FlashSize.512K0=512K (no SPIFFS) +gen4iod.menu.FlashSize.512K0.build.flash_size=512K +gen4iod.menu.FlashSize.512K0.build.flash_ld=eagle.flash.512k0.ld +gen4iod.menu.FlashSize.512K0.build.spiffs_pagesize=256 +gen4iod.menu.FlashSize.512K0.upload.maximum_size=499696 +gen4iod.menu.FlashSize.512K64=512K (64K SPIFFS) +gen4iod.menu.FlashSize.512K64.build.flash_size=512K +gen4iod.menu.FlashSize.512K64.build.flash_ld=eagle.flash.512k64.ld +gen4iod.menu.FlashSize.512K64.build.spiffs_pagesize=256 +gen4iod.menu.FlashSize.512K64.upload.maximum_size=434160 +gen4iod.menu.FlashSize.512K64.build.spiffs_start=0x6B000 +gen4iod.menu.FlashSize.512K64.build.spiffs_end=0x7B000 +gen4iod.menu.FlashSize.512K64.build.spiffs_blocksize=4096 +gen4iod.menu.FlashSize.512K128=512K (128K SPIFFS) +gen4iod.menu.FlashSize.512K128.build.flash_size=512K +gen4iod.menu.FlashSize.512K128.build.flash_ld=eagle.flash.512k128.ld +gen4iod.menu.FlashSize.512K128.build.spiffs_pagesize=256 +gen4iod.menu.FlashSize.512K128.upload.maximum_size=368624 +gen4iod.menu.FlashSize.512K128.build.spiffs_start=0x5B000 +gen4iod.menu.FlashSize.512K128.build.spiffs_end=0x7B000 +gen4iod.menu.FlashSize.512K128.build.spiffs_blocksize=4096 +gen4iod.menu.LwIPVariant.open=v2 +gen4iod.menu.LwIPVariant.open.build.lwip_include=lwip2/include +gen4iod.menu.LwIPVariant.open.build.lwip_lib=-llwip2 +gen4iod.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +gen4iod.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc +gen4iod.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC +gen4iod.menu.LwIPVariant.Espressif=Espressif (xcc) +gen4iod.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip +gen4iod.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC +gen4iod.menu.LwIPVariant.OpenSource=Open Source (gcc) +gen4iod.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src +gen4iod.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC +gen4iod.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" +gen4iod.menu.Debug.Disabled=Disabled +gen4iod.menu.Debug.Disabled.build.debug_port= +gen4iod.menu.Debug.Serial=Serial +gen4iod.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +gen4iod.menu.Debug.Serial1=Serial1 +gen4iod.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 +gen4iod.menu.DebugLevel.None____=None +gen4iod.menu.DebugLevel.None____.build.debug_level= +gen4iod.menu.DebugLevel.SSL=SSL +gen4iod.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL +gen4iod.menu.DebugLevel.TLS_MEM=TLS_MEM +gen4iod.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM +gen4iod.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT +gen4iod.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT +gen4iod.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER +gen4iod.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER +gen4iod.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM +gen4iod.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM +gen4iod.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT +gen4iod.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT +gen4iod.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER +gen4iod.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER +gen4iod.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT +gen4iod.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +gen4iod.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER +gen4iod.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +gen4iod.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER +gen4iod.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT +gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER +gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +gen4iod.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER +gen4iod.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +gen4iod.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER +gen4iod.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER +gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +gen4iod.menu.DebugLevel.CORE=CORE +gen4iod.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE +gen4iod.menu.DebugLevel.WIFI=WIFI +gen4iod.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI +gen4iod.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE +gen4iod.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE +gen4iod.menu.DebugLevel.UPDATER=UPDATER +gen4iod.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER +gen4iod.menu.DebugLevel.OTA=OTA +gen4iod.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA +gen4iod.menu.DebugLevel.NULL=NULL +gen4iod.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +gen4iod.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +gen4iod.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" gen4iod.menu.UploadSpeed.115200=115200 gen4iod.menu.UploadSpeed.115200.upload.speed=115200 gen4iod.menu.UploadSpeed.9600=9600 @@ -2011,48 +3088,125 @@ gen4iod.menu.UploadSpeed.9600.upload.speed=9600 gen4iod.menu.UploadSpeed.57600=57600 gen4iod.menu.UploadSpeed.57600.upload.speed=57600 gen4iod.menu.UploadSpeed.256000.windows=256000 -gen4iod.menu.UploadSpeed.256000.upload.speed=256000 +gen4iod.menu.UploadSpeed.256000.windows.upload.speed=256000 gen4iod.menu.UploadSpeed.230400.linux=230400 +gen4iod.menu.UploadSpeed.230400.linux.upload.speed=230400 gen4iod.menu.UploadSpeed.230400.macosx=230400 -gen4iod.menu.UploadSpeed.230400.upload.speed=230400 +gen4iod.menu.UploadSpeed.230400.macosx.upload.speed=230400 gen4iod.menu.UploadSpeed.460800.linux=460800 +gen4iod.menu.UploadSpeed.460800.linux.upload.speed=460800 gen4iod.menu.UploadSpeed.460800.macosx=460800 -gen4iod.menu.UploadSpeed.460800.upload.speed=460800 +gen4iod.menu.UploadSpeed.460800.macosx.upload.speed=460800 gen4iod.menu.UploadSpeed.512000.windows=512000 -gen4iod.menu.UploadSpeed.512000.upload.speed=512000 +gen4iod.menu.UploadSpeed.512000.windows.upload.speed=512000 gen4iod.menu.UploadSpeed.921600=921600 gen4iod.menu.UploadSpeed.921600.upload.speed=921600 ############################################################## oak.name=DigiStump Oak - +oak.build.board=ESP8266_OAK +oak.build.variant=oak +oak.upload.maximum_size=1040368 oak.upload.tool=esptool oak.upload.speed=115200 -oak.upload.resetmethod=ck -oak.upload.maximum_size=1040368 oak.upload.maximum_data_size=81920 oak.upload.wait_for_upload_port=true oak.serial.disableDTR=true oak.serial.disableRTS=true - oak.build.mcu=esp8266 -oak.build.f_cpu=80000000L -oak.build.board=ESP8266_OAK oak.build.core=esp8266 -oak.build.variant=oak -oak.build.flash_mode=dio -oak.build.flash_size=4M -oak.build.flash_freq=40 +oak.build.spiffs_pagesize=256 oak.build.debug_port= oak.build.debug_level= - oak.menu.CpuFrequency.80=80 MHz oak.menu.CpuFrequency.80.build.f_cpu=80000000L oak.menu.CpuFrequency.160=160 MHz oak.menu.CpuFrequency.160.build.f_cpu=160000000L - -oak.menu.UploadSpeed.921600=921600 -oak.menu.UploadSpeed.921600.upload.speed=921600 +oak.build.flash_mode=dio +oak.build.flash_freq=40 +oak.menu.FlashSize.4M1M=4M (1M SPIFFS) +oak.menu.FlashSize.4M1M.build.flash_size=4M +oak.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +oak.menu.FlashSize.4M1M.build.spiffs_pagesize=256 +oak.menu.FlashSize.4M1M.upload.maximum_size=1044464 +oak.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +oak.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +oak.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +oak.menu.FlashSize.4M3M=4M (3M SPIFFS) +oak.menu.FlashSize.4M3M.build.flash_size=4M +oak.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +oak.menu.FlashSize.4M3M.build.spiffs_pagesize=256 +oak.menu.FlashSize.4M3M.upload.maximum_size=1044464 +oak.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +oak.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +oak.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +oak.menu.LwIPVariant.open=v2 +oak.menu.LwIPVariant.open.build.lwip_include=lwip2/include +oak.menu.LwIPVariant.open.build.lwip_lib=-llwip2 +oak.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +oak.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc +oak.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC +oak.menu.LwIPVariant.Espressif=Espressif (xcc) +oak.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip +oak.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC +oak.menu.LwIPVariant.OpenSource=Open Source (gcc) +oak.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src +oak.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC +oak.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" +oak.menu.Debug.Disabled=Disabled +oak.menu.Debug.Disabled.build.debug_port= +oak.menu.Debug.Serial=Serial +oak.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +oak.menu.Debug.Serial1=Serial1 +oak.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 +oak.menu.DebugLevel.None____=None +oak.menu.DebugLevel.None____.build.debug_level= +oak.menu.DebugLevel.SSL=SSL +oak.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL +oak.menu.DebugLevel.TLS_MEM=TLS_MEM +oak.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM +oak.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT +oak.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT +oak.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER +oak.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER +oak.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM +oak.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM +oak.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT +oak.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT +oak.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER +oak.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER +oak.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT +oak.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +oak.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER +oak.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +oak.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER +oak.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +oak.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT +oak.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +oak.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER +oak.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +oak.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER +oak.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +oak.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER +oak.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +oak.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER +oak.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +oak.menu.DebugLevel.CORE=CORE +oak.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE +oak.menu.DebugLevel.WIFI=WIFI +oak.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI +oak.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE +oak.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE +oak.menu.DebugLevel.UPDATER=UPDATER +oak.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER +oak.menu.DebugLevel.OTA=OTA +oak.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA +oak.menu.DebugLevel.NULL=NULL +oak.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +oak.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +oak.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +oak.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL +oak.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" oak.menu.UploadSpeed.115200=115200 oak.menu.UploadSpeed.115200.upload.speed=115200 oak.menu.UploadSpeed.9600=9600 @@ -2060,30 +3214,17 @@ oak.menu.UploadSpeed.9600.upload.speed=9600 oak.menu.UploadSpeed.57600=57600 oak.menu.UploadSpeed.57600.upload.speed=57600 oak.menu.UploadSpeed.256000.windows=256000 -oak.menu.UploadSpeed.256000.upload.speed=256000 +oak.menu.UploadSpeed.256000.windows.upload.speed=256000 oak.menu.UploadSpeed.230400.linux=230400 +oak.menu.UploadSpeed.230400.linux.upload.speed=230400 oak.menu.UploadSpeed.230400.macosx=230400 -oak.menu.UploadSpeed.230400.macosx=230400 -oak.menu.UploadSpeed.230400.upload.speed=230400 +oak.menu.UploadSpeed.230400.macosx.upload.speed=230400 oak.menu.UploadSpeed.460800.linux=460800 +oak.menu.UploadSpeed.460800.linux.upload.speed=460800 oak.menu.UploadSpeed.460800.macosx=460800 -oak.menu.UploadSpeed.460800.upload.speed=460800 +oak.menu.UploadSpeed.460800.macosx.upload.speed=460800 oak.menu.UploadSpeed.512000.windows=512000 -oak.menu.UploadSpeed.512000.upload.speed=512000 +oak.menu.UploadSpeed.512000.windows.upload.speed=512000 +oak.menu.UploadSpeed.921600=921600 +oak.menu.UploadSpeed.921600.upload.speed=921600 - -oak.menu.FlashSize.4M3M=4M (3M SPIFFS) -oak.menu.FlashSize.4M3M.build.flash_size=4M -oak.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld -oak.menu.FlashSize.4M3M.build.spiffs_start=0x100000 -oak.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 -oak.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -oak.menu.FlashSize.4M3M.build.spiffs_pagesize=256 - -oak.menu.FlashSize.4M1M=4M (1M SPIFFS) -oak.menu.FlashSize.4M1M.build.flash_size=4M -oak.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld -oak.menu.FlashSize.4M1M.build.spiffs_start=0x300000 -oak.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 -oak.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 -oak.menu.FlashSize.4M1M.build.spiffs_pagesize=256 diff --git a/platform.txt b/platform.txt index ac704db79..bde120e1c 100644 --- a/platform.txt +++ b/platform.txt @@ -18,12 +18,13 @@ compiler.warning_flags.more=-Wall compiler.warning_flags.all=-Wall -Wextra build.lwip_lib=-llwip_gcc +build.lwip_include=lwip/include build.lwip_flags=-DLWIP_OPEN_SRC compiler.path={runtime.tools.xtensa-lx106-elf-gcc.path}/bin/ compiler.sdk.path={runtime.platform.path}/tools/sdk compiler.libc.path={runtime.platform.path}/tools/sdk/libc/xtensa-lx106-elf -compiler.cpreprocessor.flags=-D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ "-I{compiler.sdk.path}/include" "-I{compiler.sdk.path}/lwip/include" "-I{compiler.libc.path}/include" "-I{build.path}/core" +compiler.cpreprocessor.flags=-D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ "-I{compiler.sdk.path}/include" "-I{compiler.sdk.path}/{build.lwip_include}" "-I{compiler.libc.path}/include" "-I{build.path}/core" compiler.c.cmd=xtensa-lx106-elf-gcc compiler.c.flags=-c {compiler.warning_flags} -Os -g -Wpointer-arith -Wno-implicit-function-declaration -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -falign-functions=4 -MMD -std=gnu99 -ffunction-sections -fdata-sections diff --git a/tools/sdk/ld/eagle.app.v6.common.ld b/tools/sdk/ld/eagle.app.v6.common.ld index dd36ae648..f6e1ddd4d 100644 --- a/tools/sdk/ld/eagle.app.v6.common.ld +++ b/tools/sdk/ld/eagle.app.v6.common.ld @@ -177,6 +177,7 @@ SECTIONS *libstdc++.a:(.literal .text .literal.* .text.*) *liblwip_gcc.a:(.literal .text .literal.* .text.*) *liblwip_src.a:(.literal .text .literal.* .text.*) + *liblwip2.a:(.literal .text .literal.* .text.*) *libaxtls.a:(.literal .text .literal.* .text.*) *libat.a:(.literal.* .text.*) *libcrypto.a:(.literal.* .text.*) diff --git a/tools/sdk/lwip2/Makefile b/tools/sdk/lwip2/Makefile new file mode 100644 index 000000000..d8864c94f --- /dev/null +++ b/tools/sdk/lwip2/Makefile @@ -0,0 +1,6 @@ + +all install clean: builder/Makefile.arduino + make -C builder -f Makefile.arduino $@ + +builder/Makefile.arduino: + git submodule update --init --recursive builder diff --git a/tools/sdk/lwip2/builder b/tools/sdk/lwip2/builder new file mode 160000 index 000000000..9b6966aea --- /dev/null +++ b/tools/sdk/lwip2/builder @@ -0,0 +1 @@ +Subproject commit 9b6966aea4c66ff5d1c6c077dee2641f848c4fdb From 84cf2f4b5e2e0c1374b4d91460dd68d651448ba8 Mon Sep 17 00:00:00 2001 From: david gauchard Date: Wed, 1 Nov 2017 22:03:48 +0100 Subject: [PATCH 098/156] lwip2: automatically clone lwip's git --- tools/sdk/lwip2/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/sdk/lwip2/Makefile b/tools/sdk/lwip2/Makefile index d8864c94f..451b48979 100644 --- a/tools/sdk/lwip2/Makefile +++ b/tools/sdk/lwip2/Makefile @@ -1,6 +1,6 @@ -all install clean: builder/Makefile.arduino +all install clean: builder/lwip2-src/README make -C builder -f Makefile.arduino $@ -builder/Makefile.arduino: +builder/lwip2-src/README: git submodule update --init --recursive builder From 7315095e464397ae3f4dc9f1d231278e61242b04 Mon Sep 17 00:00:00 2001 From: david gauchard Date: Wed, 1 Nov 2017 22:12:20 +0100 Subject: [PATCH 099/156] lwip2: build: include and lib --- tools/sdk/lib/liblwip2.a | Bin 0 -> 1039116 bytes tools/sdk/lwip2/include/README.md | 1 + tools/sdk/lwip2/include/arch/cc.h | 145 + tools/sdk/lwip2/include/arch/sys_arch.h | 5 + tools/sdk/lwip2/include/espconn.h | 0 tools/sdk/lwip2/include/gluedebug.h | 89 + tools/sdk/lwip2/include/lwip-err-t.h | 10 + tools/sdk/lwip2/include/lwip-git-hash.h | 6 + tools/sdk/lwip2/include/lwip/api.h | 400 +++ tools/sdk/lwip2/include/lwip/apps/FILES | 2 + tools/sdk/lwip2/include/lwip/apps/fs.h | 103 + tools/sdk/lwip2/include/lwip/apps/httpd.h | 236 ++ .../sdk/lwip2/include/lwip/apps/httpd_opts.h | 323 ++ tools/sdk/lwip2/include/lwip/apps/lwiperf.h | 84 + tools/sdk/lwip2/include/lwip/apps/mdns.h | 69 + tools/sdk/lwip2/include/lwip/apps/mdns_opts.h | 74 + tools/sdk/lwip2/include/lwip/apps/mdns_priv.h | 66 + tools/sdk/lwip2/include/lwip/apps/mqtt.h | 244 ++ tools/sdk/lwip2/include/lwip/apps/mqtt_opts.h | 103 + tools/sdk/lwip2/include/lwip/apps/netbiosns.h | 43 + .../lwip2/include/lwip/apps/netbiosns_opts.h | 59 + tools/sdk/lwip2/include/lwip/apps/snmp.h | 128 + tools/sdk/lwip2/include/lwip/apps/snmp_core.h | 364 ++ tools/sdk/lwip2/include/lwip/apps/snmp_mib2.h | 78 + tools/sdk/lwip2/include/lwip/apps/snmp_opts.h | 293 ++ .../sdk/lwip2/include/lwip/apps/snmp_scalar.h | 113 + .../sdk/lwip2/include/lwip/apps/snmp_table.h | 134 + .../lwip2/include/lwip/apps/snmp_threadsync.h | 114 + tools/sdk/lwip2/include/lwip/apps/snmpv3.h | 90 + tools/sdk/lwip2/include/lwip/apps/sntp.h | 76 + tools/sdk/lwip2/include/lwip/apps/sntp_opts.h | 173 + tools/sdk/lwip2/include/lwip/apps/tftp_opts.h | 105 + .../sdk/lwip2/include/lwip/apps/tftp_server.h | 94 + tools/sdk/lwip2/include/lwip/arch.h | 319 ++ tools/sdk/lwip2/include/lwip/autoip.h | 99 + tools/sdk/lwip2/include/lwip/debug.h | 167 + tools/sdk/lwip2/include/lwip/def.h | 141 + tools/sdk/lwip2/include/lwip/dhcp.h | 143 + tools/sdk/lwip2/include/lwip/dhcp6.h | 58 + tools/sdk/lwip2/include/lwip/dns.h | 130 + tools/sdk/lwip2/include/lwip/err.h | 119 + tools/sdk/lwip2/include/lwip/errno.h | 193 ++ tools/sdk/lwip2/include/lwip/etharp.h | 106 + tools/sdk/lwip2/include/lwip/ethip6.h | 68 + tools/sdk/lwip2/include/lwip/icmp.h | 110 + tools/sdk/lwip2/include/lwip/icmp6.h | 70 + tools/sdk/lwip2/include/lwip/igmp.h | 115 + tools/sdk/lwip2/include/lwip/inet.h | 172 + tools/sdk/lwip2/include/lwip/inet_chksum.h | 105 + tools/sdk/lwip2/include/lwip/init.h | 100 + tools/sdk/lwip2/include/lwip/ip.h | 319 ++ tools/sdk/lwip2/include/lwip/ip4.h | 111 + tools/sdk/lwip2/include/lwip/ip4_addr.h | 227 ++ tools/sdk/lwip2/include/lwip/ip4_frag.h | 100 + tools/sdk/lwip2/include/lwip/ip6.h | 93 + tools/sdk/lwip2/include/lwip/ip6_addr.h | 285 ++ tools/sdk/lwip2/include/lwip/ip6_frag.h | 120 + tools/sdk/lwip2/include/lwip/ip_addr.h | 407 +++ tools/sdk/lwip2/include/lwip/mem.h | 82 + tools/sdk/lwip2/include/lwip/memp.h | 155 + tools/sdk/lwip2/include/lwip/mld6.h | 99 + tools/sdk/lwip2/include/lwip/nd6.h | 84 + tools/sdk/lwip2/include/lwip/netbuf.h | 118 + tools/sdk/lwip2/include/lwip/netdb.h | 150 + tools/sdk/lwip2/include/lwip/netif.h | 474 +++ tools/sdk/lwip2/include/lwip/netifapi.h | 140 + tools/sdk/lwip2/include/lwip/opt.h | 2876 ++++++++++++++++ tools/sdk/lwip2/include/lwip/pbuf.h | 263 ++ tools/sdk/lwip2/include/lwip/priv/api_msg.h | 216 ++ tools/sdk/lwip2/include/lwip/priv/memp_priv.h | 183 + tools/sdk/lwip2/include/lwip/priv/memp_std.h | 146 + tools/sdk/lwip2/include/lwip/priv/nd6_priv.h | 144 + tools/sdk/lwip2/include/lwip/priv/tcp_priv.h | 507 +++ .../sdk/lwip2/include/lwip/priv/tcpip_priv.h | 160 + tools/sdk/lwip2/include/lwip/prot/autoip.h | 78 + tools/sdk/lwip2/include/lwip/prot/dhcp.h | 183 + tools/sdk/lwip2/include/lwip/prot/dns.h | 140 + tools/sdk/lwip2/include/lwip/prot/etharp.h | 91 + tools/sdk/lwip2/include/lwip/prot/ethernet.h | 170 + tools/sdk/lwip2/include/lwip/prot/icmp.h | 91 + tools/sdk/lwip2/include/lwip/prot/icmp6.h | 170 + tools/sdk/lwip2/include/lwip/prot/igmp.h | 90 + tools/sdk/lwip2/include/lwip/prot/ip.h | 51 + tools/sdk/lwip2/include/lwip/prot/ip4.h | 127 + tools/sdk/lwip2/include/lwip/prot/ip6.h | 169 + tools/sdk/lwip2/include/lwip/prot/mld6.h | 70 + tools/sdk/lwip2/include/lwip/prot/nd6.h | 277 ++ tools/sdk/lwip2/include/lwip/prot/tcp.h | 97 + tools/sdk/lwip2/include/lwip/prot/udp.h | 68 + tools/sdk/lwip2/include/lwip/raw.h | 118 + tools/sdk/lwip2/include/lwip/sio.h | 142 + tools/sdk/lwip2/include/lwip/snmp.h | 213 ++ tools/sdk/lwip2/include/lwip/sockets.h | 593 ++++ tools/sdk/lwip2/include/lwip/stats.h | 491 +++ tools/sdk/lwip2/include/lwip/sys.h | 455 +++ tools/sdk/lwip2/include/lwip/tcp.h | 433 +++ tools/sdk/lwip2/include/lwip/tcpip.h | 106 + tools/sdk/lwip2/include/lwip/timeouts.h | 121 + tools/sdk/lwip2/include/lwip/udp.h | 182 + tools/sdk/lwip2/include/lwipopts.h | 3002 +++++++++++++++++ tools/sdk/lwip2/include/netif/etharp.h | 3 + tools/sdk/lwip2/include/netif/ethernet.h | 77 + tools/sdk/lwip2/include/netif/lowpan6.h | 86 + tools/sdk/lwip2/include/netif/lowpan6_opts.h | 70 + tools/sdk/lwip2/include/netif/ppp/ccp.h | 156 + tools/sdk/lwip2/include/netif/ppp/chap-md5.h | 36 + tools/sdk/lwip2/include/netif/ppp/chap-new.h | 192 ++ tools/sdk/lwip2/include/netif/ppp/chap_ms.h | 44 + tools/sdk/lwip2/include/netif/ppp/eap.h | 169 + tools/sdk/lwip2/include/netif/ppp/ecp.h | 50 + tools/sdk/lwip2/include/netif/ppp/eui64.h | 94 + tools/sdk/lwip2/include/netif/ppp/fsm.h | 175 + tools/sdk/lwip2/include/netif/ppp/ipcp.h | 126 + tools/sdk/lwip2/include/netif/ppp/ipv6cp.h | 183 + tools/sdk/lwip2/include/netif/ppp/lcp.h | 171 + tools/sdk/lwip2/include/netif/ppp/magic.h | 122 + tools/sdk/lwip2/include/netif/ppp/mppe.h | 173 + .../lwip2/include/netif/ppp/polarssl/arc4.h | 81 + .../lwip2/include/netif/ppp/polarssl/des.h | 92 + .../lwip2/include/netif/ppp/polarssl/md4.h | 97 + .../lwip2/include/netif/ppp/polarssl/md5.h | 96 + .../lwip2/include/netif/ppp/polarssl/sha1.h | 96 + tools/sdk/lwip2/include/netif/ppp/ppp.h | 690 ++++ tools/sdk/lwip2/include/netif/ppp/ppp_impl.h | 629 ++++ tools/sdk/lwip2/include/netif/ppp/ppp_opts.h | 593 ++++ tools/sdk/lwip2/include/netif/ppp/pppapi.h | 137 + tools/sdk/lwip2/include/netif/ppp/pppcrypt.h | 136 + tools/sdk/lwip2/include/netif/ppp/pppdebug.h | 80 + tools/sdk/lwip2/include/netif/ppp/pppoe.h | 179 + tools/sdk/lwip2/include/netif/ppp/pppol2tp.h | 201 ++ tools/sdk/lwip2/include/netif/ppp/pppos.h | 118 + tools/sdk/lwip2/include/netif/ppp/upap.h | 123 + tools/sdk/lwip2/include/netif/ppp/vj.h | 161 + tools/sdk/lwip2/include/netif/slipif.h | 87 + tools/sdk/lwip2/include/posix/errno.h | 33 + tools/sdk/lwip2/include/posix/netdb.h | 33 + tools/sdk/lwip2/include/posix/sys/socket.h | 33 + 137 files changed, 26848 insertions(+) create mode 100644 tools/sdk/lib/liblwip2.a create mode 100644 tools/sdk/lwip2/include/README.md create mode 100644 tools/sdk/lwip2/include/arch/cc.h create mode 100644 tools/sdk/lwip2/include/arch/sys_arch.h create mode 100644 tools/sdk/lwip2/include/espconn.h create mode 100644 tools/sdk/lwip2/include/gluedebug.h create mode 100644 tools/sdk/lwip2/include/lwip-err-t.h create mode 100644 tools/sdk/lwip2/include/lwip-git-hash.h create mode 100644 tools/sdk/lwip2/include/lwip/api.h create mode 100644 tools/sdk/lwip2/include/lwip/apps/FILES create mode 100644 tools/sdk/lwip2/include/lwip/apps/fs.h create mode 100644 tools/sdk/lwip2/include/lwip/apps/httpd.h create mode 100644 tools/sdk/lwip2/include/lwip/apps/httpd_opts.h create mode 100644 tools/sdk/lwip2/include/lwip/apps/lwiperf.h create mode 100644 tools/sdk/lwip2/include/lwip/apps/mdns.h create mode 100644 tools/sdk/lwip2/include/lwip/apps/mdns_opts.h create mode 100644 tools/sdk/lwip2/include/lwip/apps/mdns_priv.h create mode 100644 tools/sdk/lwip2/include/lwip/apps/mqtt.h create mode 100644 tools/sdk/lwip2/include/lwip/apps/mqtt_opts.h create mode 100644 tools/sdk/lwip2/include/lwip/apps/netbiosns.h create mode 100644 tools/sdk/lwip2/include/lwip/apps/netbiosns_opts.h create mode 100644 tools/sdk/lwip2/include/lwip/apps/snmp.h create mode 100644 tools/sdk/lwip2/include/lwip/apps/snmp_core.h create mode 100644 tools/sdk/lwip2/include/lwip/apps/snmp_mib2.h create mode 100644 tools/sdk/lwip2/include/lwip/apps/snmp_opts.h create mode 100644 tools/sdk/lwip2/include/lwip/apps/snmp_scalar.h create mode 100644 tools/sdk/lwip2/include/lwip/apps/snmp_table.h create mode 100644 tools/sdk/lwip2/include/lwip/apps/snmp_threadsync.h create mode 100644 tools/sdk/lwip2/include/lwip/apps/snmpv3.h create mode 100644 tools/sdk/lwip2/include/lwip/apps/sntp.h create mode 100644 tools/sdk/lwip2/include/lwip/apps/sntp_opts.h create mode 100644 tools/sdk/lwip2/include/lwip/apps/tftp_opts.h create mode 100644 tools/sdk/lwip2/include/lwip/apps/tftp_server.h create mode 100644 tools/sdk/lwip2/include/lwip/arch.h create mode 100644 tools/sdk/lwip2/include/lwip/autoip.h create mode 100644 tools/sdk/lwip2/include/lwip/debug.h create mode 100644 tools/sdk/lwip2/include/lwip/def.h create mode 100644 tools/sdk/lwip2/include/lwip/dhcp.h create mode 100644 tools/sdk/lwip2/include/lwip/dhcp6.h create mode 100644 tools/sdk/lwip2/include/lwip/dns.h create mode 100644 tools/sdk/lwip2/include/lwip/err.h create mode 100644 tools/sdk/lwip2/include/lwip/errno.h create mode 100644 tools/sdk/lwip2/include/lwip/etharp.h create mode 100644 tools/sdk/lwip2/include/lwip/ethip6.h create mode 100644 tools/sdk/lwip2/include/lwip/icmp.h create mode 100644 tools/sdk/lwip2/include/lwip/icmp6.h create mode 100644 tools/sdk/lwip2/include/lwip/igmp.h create mode 100644 tools/sdk/lwip2/include/lwip/inet.h create mode 100644 tools/sdk/lwip2/include/lwip/inet_chksum.h create mode 100644 tools/sdk/lwip2/include/lwip/init.h create mode 100644 tools/sdk/lwip2/include/lwip/ip.h create mode 100644 tools/sdk/lwip2/include/lwip/ip4.h create mode 100644 tools/sdk/lwip2/include/lwip/ip4_addr.h create mode 100644 tools/sdk/lwip2/include/lwip/ip4_frag.h create mode 100644 tools/sdk/lwip2/include/lwip/ip6.h create mode 100644 tools/sdk/lwip2/include/lwip/ip6_addr.h create mode 100644 tools/sdk/lwip2/include/lwip/ip6_frag.h create mode 100644 tools/sdk/lwip2/include/lwip/ip_addr.h create mode 100644 tools/sdk/lwip2/include/lwip/mem.h create mode 100644 tools/sdk/lwip2/include/lwip/memp.h create mode 100644 tools/sdk/lwip2/include/lwip/mld6.h create mode 100644 tools/sdk/lwip2/include/lwip/nd6.h create mode 100644 tools/sdk/lwip2/include/lwip/netbuf.h create mode 100644 tools/sdk/lwip2/include/lwip/netdb.h create mode 100644 tools/sdk/lwip2/include/lwip/netif.h create mode 100644 tools/sdk/lwip2/include/lwip/netifapi.h create mode 100644 tools/sdk/lwip2/include/lwip/opt.h create mode 100644 tools/sdk/lwip2/include/lwip/pbuf.h create mode 100644 tools/sdk/lwip2/include/lwip/priv/api_msg.h create mode 100644 tools/sdk/lwip2/include/lwip/priv/memp_priv.h create mode 100644 tools/sdk/lwip2/include/lwip/priv/memp_std.h create mode 100644 tools/sdk/lwip2/include/lwip/priv/nd6_priv.h create mode 100644 tools/sdk/lwip2/include/lwip/priv/tcp_priv.h create mode 100644 tools/sdk/lwip2/include/lwip/priv/tcpip_priv.h create mode 100644 tools/sdk/lwip2/include/lwip/prot/autoip.h create mode 100644 tools/sdk/lwip2/include/lwip/prot/dhcp.h create mode 100644 tools/sdk/lwip2/include/lwip/prot/dns.h create mode 100644 tools/sdk/lwip2/include/lwip/prot/etharp.h create mode 100644 tools/sdk/lwip2/include/lwip/prot/ethernet.h create mode 100644 tools/sdk/lwip2/include/lwip/prot/icmp.h create mode 100644 tools/sdk/lwip2/include/lwip/prot/icmp6.h create mode 100644 tools/sdk/lwip2/include/lwip/prot/igmp.h create mode 100644 tools/sdk/lwip2/include/lwip/prot/ip.h create mode 100644 tools/sdk/lwip2/include/lwip/prot/ip4.h create mode 100644 tools/sdk/lwip2/include/lwip/prot/ip6.h create mode 100644 tools/sdk/lwip2/include/lwip/prot/mld6.h create mode 100644 tools/sdk/lwip2/include/lwip/prot/nd6.h create mode 100644 tools/sdk/lwip2/include/lwip/prot/tcp.h create mode 100644 tools/sdk/lwip2/include/lwip/prot/udp.h create mode 100644 tools/sdk/lwip2/include/lwip/raw.h create mode 100644 tools/sdk/lwip2/include/lwip/sio.h create mode 100644 tools/sdk/lwip2/include/lwip/snmp.h create mode 100644 tools/sdk/lwip2/include/lwip/sockets.h create mode 100644 tools/sdk/lwip2/include/lwip/stats.h create mode 100644 tools/sdk/lwip2/include/lwip/sys.h create mode 100644 tools/sdk/lwip2/include/lwip/tcp.h create mode 100644 tools/sdk/lwip2/include/lwip/tcpip.h create mode 100644 tools/sdk/lwip2/include/lwip/timeouts.h create mode 100644 tools/sdk/lwip2/include/lwip/udp.h create mode 100644 tools/sdk/lwip2/include/lwipopts.h create mode 100644 tools/sdk/lwip2/include/netif/etharp.h create mode 100644 tools/sdk/lwip2/include/netif/ethernet.h create mode 100644 tools/sdk/lwip2/include/netif/lowpan6.h create mode 100644 tools/sdk/lwip2/include/netif/lowpan6_opts.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/ccp.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/chap-md5.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/chap-new.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/chap_ms.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/eap.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/ecp.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/eui64.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/fsm.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/ipcp.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/ipv6cp.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/lcp.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/magic.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/mppe.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/polarssl/arc4.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/polarssl/des.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/polarssl/md4.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/polarssl/md5.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/polarssl/sha1.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/ppp.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/ppp_impl.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/ppp_opts.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/pppapi.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/pppcrypt.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/pppdebug.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/pppoe.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/pppol2tp.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/pppos.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/upap.h create mode 100644 tools/sdk/lwip2/include/netif/ppp/vj.h create mode 100644 tools/sdk/lwip2/include/netif/slipif.h create mode 100644 tools/sdk/lwip2/include/posix/errno.h create mode 100644 tools/sdk/lwip2/include/posix/netdb.h create mode 100644 tools/sdk/lwip2/include/posix/sys/socket.h diff --git a/tools/sdk/lib/liblwip2.a b/tools/sdk/lib/liblwip2.a new file mode 100644 index 0000000000000000000000000000000000000000..4c3ef868b9334ff6d0f71c2c03ae904bc3a3170e GIT binary patch literal 1039116 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�t)UY68 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≫*46rFfXM7sg3ww-2_qUFKF!R$B;Bn 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

2u zXh$tGc1Z$aQAw{b!*XL=T}xwiLsV`fL~9!Ap&#YCzgYObwr)k2hCFLT*UeMdBKa0% zto>GwpD2|p!=~r*=}y&BI5HT;2Zz$ivnEe92h}%X&0d@X+v+4Q3y=UYX8NvFO6gdf zb>auloQgAT84BK%l_`OxP0Q;

Z0CHQG=Ml-34+6KTyp`%mBS52OPGxp^1Q>&t7 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%0A31`q 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

    F)*snww`s8_mJ&n#VP3j zDW@AC%s&DhC(OL@feUqZfJeZS`G9V+@HB*H3G*QyhO9=X0pUy~pC`N+p*aU7KNpC6 z4MJ9pZ8KMjoHDX)53D1r!|@#RLmAoX+%EF%2%i+@dGmrW>);>4d3fN9w|DMk!}AR zrjE4#siH#}*`60U)R8`ahUid6w&%q;BIiR|)&=v)|IFIPA6gg#Nvosf&ZO+81%{uz6hIhMb3EF2qSQ=6K1*MUWle{)_y zpLR^!7Tzd2&mi0)Oq~an+|;4;8?}-j%E-1qIa}nL5pSVzBf=$0&TZzII;NgkKsZyM zkW)ss{mhME>N7ug32#UExbRa5cL?ue2yc(|^CG8=Y>)M;BB#y$!VZ{C(DpxHi<~mD zJ&x34e&P}GUc=_?B;j@lGlcozoyUnfe7S)Aom+t)xNah+jGQd;0+I9Of-v^EJVD_~ zMIIJT7WqJt^SDi-Eb{wB&hnOGpDSa$$3;#V*^d4GCUQQXV*9h_5u1^# z&#%D{z?uH1JG1EFbS&}X|kAab5_-z(;e3baYbG{|hj zS;FQV#kMQw&Oq*i4ywz$HxYTc$Z2n!Fvk&Vgqh!~6<;sR7b47g0h_;v>^_k{g77h6 z%AXPb5TQ9Qpih2T$xZvufB^1a@XRM=WPabCd|2c=5SsQ}4uJa#p8AxLlgse~7lyaz zR4VdH9m>eja|+v;xM1?QuQdYe`?nGFN37CsZqw9ZmILzrnT5N5ub$*{Q`A-%P^f}DgOxYh8P z;2eaPDPAkw10nl8>hwgonGBnEAf&f8x00DLxNY#6U}l^BqvgkhlM((^n8WxN$gsH= zA-%Qv3YiLU``|OdwE4E;1H!cVu`n+EW(-N2-+<|@&F{&n_@Tpb&jbg6W|aZxCqhPV z_1RattXQ}->Vu2G>{~5&5oULhPllZ$g!I-9`%E{DRvf2{I$&1U5XHlVnH>91+NnlJ zZ|&5QSwJ|BMKi&)GhOj)VbdOj8D%*cHrc<@TbrxNa;{xU9XY?QQoK&MGwj?fd@A@h z;nTod$*{i-A-%Q#AeoIH?h)#M%fNq9yhE5>(6hokKVBij=01e<*5+GeoWFGMQU{y^ zeqZrnVYcBfgxQ9_6YdR;hj&>hIM$;Z#t$6p%MIfPt{uD^#t$5_;<%?6H0Qg^N`T9Q zcf_^?YVF=)Yia926!w|yp+;PJIxXy~R757lgaflm+GMstGBW%#zQ@g^aE1eOF z%?eARGeOCxDCW6i?aWf#sF>%D)#3XTmU+HdzFP5m#dj#aSFt%S!j5r|D*0a&b6n_# zjfy!JEVIp9W;?gc=f{@Q6!%kHsklyYqvGX?FH(G|;;R*}Q+$)+jf%G@-l~|-)oq^t zpm>L3e$K+`ysUVi;&&8(toSpYyT|8^@`^!UZ(hb#cLE_rT7NL{L-0C>t4l=Dt=1w-xa^1_yfhCEB;Y& zGA=4MtqzJ$QQS*$k>dV}hbf++c%kA(#mg06q?qr~*!*0h_;$tosGHUKlj5fpzohtI zihoe-PkC`Abha84MxE3-8 zjd16K?fCgprE@)5^0q6td(wL&>`;c|^$zl)QutPsfk0u}+G>r&AsVz@0%B`_*K4x_YIvkSzBROTqR& z;zFf!Ia%ynqvSU!`EQi`E+xND$sbkn$CdmUC4XMYUsLiomHY!G|5(YtQgVJa)8-kA zT{vzS1&7O4@?5f%eVF1Z#S0W)qxfFM&nf;+aW-tbVI&HdN9N!ZE+1^~r}`_MO0qp( ziYJjJF29t=xKulv@-P5yzS3W;^j9mLYshjhc0JhMi`}Yp?j%bd?p5+XC^jdyjV$+cJ;3&!ZV=^?pK_%?PVqFwD-~a-_*TVtDSk-t zJBmLb^X3cgBe13W4;P+v!%%=rC5!wN#od%niQ)>yRZ4#nS<*d=EcYq%l}@AL z3l(3g_$so*y+O%uCX0Q3JA&mJjIrldrL$e}qe_2|;;$7a;&@t{T&SBKwkY}CWGTx-O8!T(l0su8^ZD6ICs*n8Rya7^LK*$nrd*O39}vo~ige#n&p{rg*2~cNJqfDaQ?)>^Oyrhbf+?n40!} z0k@%1#-%dKIK`vPsi>7bo{J^C-s{k!~Tp3hVQu2!xZ%}-T;!TQwr}%!w+Z8{i_zA^-SNyW#*A;XA+~)s);)9C6Q~aZ1K5Mjb zlN6^bHuHN@4_%Zztk}%&iOy+C&S!|${!qmu6`!Hl%;||8_ER?QG{rL%&sDrY@db*_ z{GQn4b4F{^%RO6hD=yjk(xitkhWXT?t{en#KQn8~o2)ofaR#_e{kT6;DxY<}IcE`F(90cY)$1 ziqBPif#Qo5U#{59VTyfz%-h;GbC@E(OUdt7yj}616#qrBna>nE{5v*l-^^!<{4FK_ zx8e^Kf1>yc#osA5bDm<8U;eder7P~FxU1ssihC+H^P;#PqZ>lG@NmVW6;~_f-)dQX zem&UoJjF{CHz~eQ@hZjq>aewQqvBf?-=_F3#rG=a*NUy3Cl#CdSSjNkCEu&~6~!MY z{z&m>ioaC+y<$F)w0Ypy-YuspZl}1DVt!58>YK06N}l^E`9Q^$ibpEuSD3AxUnrib zc#dLzrP=CVp!j0N=BwnAAAZN#>ffsPcE$Xhyw%yJ_(8>wDSkpRKLu^${zEapfNbYO z_A5T5_=w`8ioa3JZzo$jsfybx#)sgdI@yZ5D=t)AqPRlw2*v!ovYi7lbLP0GrJJGT zvlTB;yhQOD#g{2wt9YH_n-%{?F+b;Q^Rr#?V~U?pY(5Mwd45*OUswFL;sc5gD*iY})t;vR|%6_+UHSD5V_#c0Lj6;D+BOT~4H`SoUNr%CYz zip?B82fuKaDfv~3`PFA@XOm)n-`UC^QoK{KncElpFDUt5#rqY1p!kU5&lH>af3eB= zf13w0|1a`Wl)R5(Gv_Zl{PMJoJ4rD=L~Z5s6*nqASMf^4YZPCt_&UYEQv7Shw=2F= zF~5gx^YdrLdlbK@nBT^>`tK^{r?Rd53&m#6ANS#O@wkTDIVCgyFY=@k@%|BjbLX?tR6F6@RMuYsLRnY@R8IokY&_3-g22mQPXKU2#vv z#ftkX=7+4UoiU2571t`Bqxc-fEo7NPFn`}J`Mg5u+@N&$MQoey9g6w!X*);sN5xMn zeoFBk#V;!6N2{%!e=Gh-@qZM5srXyPd{^4qIZ1JQ#V0GyR@_~2Z^eBSo6ja=UW0C^ zlJm3LHr-mq(-qe%K1Z>679%$KIc{s`a>aZWW92t0HqT`w?rlnLp3#W>9wj%=Wkmj@ zl0T!^JfjhvmzDfA#r!b1&Cf@QKU4grVtz5)>L)5bNpYs)lNFz$xVz$>ii;GNDjuxZ zJR6d7ovGyG6;Dz8OT}{(pQCu0;ugg#6t7l%h2m=z^9$;>el{t-Tk(C0A6EQF#m_2! zUh&I{UsL=q#rqW>QhY=)zt?W_$#Jn|EKVQg6vh0TFssv1aaeJV;y#M|D;}!2Qt=qY zV-@og@iyHViuq-9JMY@0_yWZjDZWgxd0r-SwtOyT?QBwfm*RUBo9AT`_YX?`tm5Yt zzpVH*#cwNqPw~f!KT-UZ;_npmo9{ONX^J~2?yQ&}fw%gFiu)=apqO8WxB69zCn}zz zc!uKHiZSGLTuuPPaX4b*<(E+5`L zXDVwSJ*MAY7~DGssddme+FI@>=;)rPHicrQ5%KX9+WTi!>O`g}_<-}kn4!gr)?J(xK_sfT@>r;@T~2EbC@ z}G;Kzh>z?@^JP9Auda4#_D*eTBk?-ectzb4!d{FZPzm~-sZ9}Ye! zJO=z9;cD>b!oL8=VLq1cX|XJvS0}TI(uG+r&Z|?-L(^3_0`4Zv{BvHNI(gvU!pwhP zVdkIfcTuMZTp`>C%sF<-d0vhcE(cE)9tP&TI(0^a8-&M$IhRiP1aOP+FTocI&jPOz zo)5l4coFzoVgCKojlwIzzZSj(yh-?4@SVapg6|XNImdT{nTOwj|0;YJ_-WyLz|RYB z1HUBv0QjH64}sqn{sWlv>a@vo?vU`~V9u*k{v`NI;ho_B3jYI)Z&n$dm%v=xiu!MW zImb>u0L~Qt0L(dd$`6A%$4>qP%=M`t`r^$=Da%f%faJ>*$z3c zPWfms*NP&u9nKKuv&}ieQ@{&_dAu5hd5o3|UktuTcpaGUFw^F3;H!my2VN(<6?~KM z{oswltp6>-+re9f+2{RUcnA0q;lF`756`ro0q+og0sM?G`?D8>`D~N(@YH`3{BLr| zyG9=p<~em#xC{8d!r5Rq;OXar6NGubBn$K0KZT6G4u{Oi5k3jrOPJ?xk#HuM^X=4U zA2nE*eN?6JDd4ffJ-~ctoBBLwIp0n`9XvyL7?|_zl#c>06s`g<6&?@1gp7U|fpeAO z>xI$PI(!eDIzjMeVGQ4$yM@_}-!I%1{ID?V>QBPmz<(9)4t`pgW#QaA?e_$8?wynD4Pu zKj5M-6;1)S2)74cDBKaeMmP+ zJGe@ib|woC0P}r&+8hj?Bh2%W@7_~h3Ff=^RwI0WW11?ux1oDYOMfDa3I1%EEge&ZYA zf#4s7`F>y^(X+$9t4k6d22K+m4Q?;Y_i^~Ff$8!coLpi4ja|Ml*MBGxW`9y9JOeyb zcn+A)9cYLB4F3j!%y$d<+=0x$!<#I8F_>$*Qoa^EOPKc!dn9{V`=qw zD1JflKE($Vf2#O<#fdmJ)@GLCu;P3&?gi+|6c1Nit=POPDEjPo>@jUtyjn5)8mn`Q z;ycJGUb+t|enK((5v%ix;&;i?W)3Uk(VoZ zm15reTm9LJmnt^va*LfSmE5eaE%MDuzD@CCig%IIygZwC-h|D2Zo&ttlkVvpRqXg< za1c`t04_rI2T&uf|Yxt4ivYtLog z&syH0nD?z#ZsybE+&`e?pOUk@diY*(Vjw2ZQXE#CueeO{aK&67+1j6`c%I^B#j6#s zReX!$I~1FDv?TxLy)5C~O6L{D?!O1Z=VGPi*cQfM5$r(Q zD>eJ`a4jovl51AH7Rs8^uSbo4P$sDP;)ITmR6c`Ep6-SFoi;5y? z{creBD61fl!oD1CHGeX8e(J0DyFVP;;W)+rJ(eHnaY@4Ean6tcUOr47UQ}E$dDoB6 z{P&pCN;zFR?gdXBsRWJ9Z47mS}75p4(qve`rl``?t#~ea_qdmG1Mm zhi)94e8U6pOk3OKwwhggtE-!*JnV}k$x(4)1!XL6jhXLsy)D!cOwx%ufI432A`pBUfS$sOD!w`#~U z9i8l5$3megC5!XilFi3@^qI3d;$Dt1diD+@o|5NQLR>n&EWLl}8BU*c><)JeBOAza zWV6xfGuj}6S!9nN>igXxZg81*@J72UzDQgaF1@k9pRqF>)nS$9`7(As z_*8wy%k}B|>(hMoncsf4(%;iP;twUh=$`q~md(d**j!i>!dmzRaiQOhS#$oftLlG! z`#tN=s&GGHHl|i|UJ`z=dB%)p?w?=rrwQ&ylz;a__c;~SRqu0!#&h+FT;^Pk36mKF;`p}_*mnjZ1Ok96n2rnZ4g}WH%m!~e;weesMZ@RMC%%te zUOEZa5)*i1lfao4Un1u;e1QO`w0wzyv#~od4?lspKJQ>p@EyqGO1A(JgJUxP(PxNB z)aideFp*cDwD{|o$KV&>_;o}l_%Zp$1;9X%Gd%GdZ>D+@KeigbiJTPVlZyB)Yr&x) zpMJ#ONlr<^V$@FjHtM9JgkK^|4kVVc{GkSN>z%j| z7e0v(4T2;gRE*!m(8u@TdL{5lLTinnQpwCI+kTj5RJ&PXN z4UrSt&)vuf7fnjM0H%f~y!Retro0LNrlu3*lYxW}S!;pdW#oh8#H6|BISGe|q2O@* zCLCqVv|xMWJ>k1}C}ssY0hw@&`R$m>3P?zDInL^m%30-v4lXM(ocaVeI=OdYPfjZ5 zI1{?NYaq){{WERlxva0ElNL3%I0>hjjgr)jj8ov!XlW`hkqN!sM`56EDyuu8*z6gU z$`NxyAD0ge2A{OJWs#H6*X$XZ`ZnVXb5~$bxs%YJdRq?TH!kowe$zg}Zk8dP$2{Fs zL_#-4xu1VD5f|X6M~o83nP$JI$xZC$Q=E9ypl)P&c8$b#T!8J`L}DexA~^}QO#Yb# zMrj#-Gng$&^^m)XcOx7mrAZs?jbuw8w&)DraCzGeoYj)dp z+BH#aAhqb&F}WMr^4hbw?!YZZj7>HScOduhlV`e>Y(nkKAK6T& zMccKx8&}gJ+l@P&7Jm!hVKq1FxXG!q4(6Tw8QlCBz9UC_TwbJ;TjT%2t%2Q_nW5iQ zKpui;m*{RxKxcOHtfi2zfh-7_m+#+j$GzC>d~W?h$NeqMzJ|>XuOlPwZOj~>zjmJG zxSLob{jkxc9W%5!1u=c=t2-}+)!Vyb;{f(`osP)N4ob>GXVM^dnrg=990C-ydz}_8 zBO)2o8@n4hhBR5cYz<`Hp>c}I(-pMiTR)>C??YHWo!p7OWwG*}n!v1fcbl=>_TBEr zzQ{w^9GdPfk2>2_HrDyKnsc!oMhtFOAh;6SkpsxQ+rwqP{OccF)ouRba~(I&r7i#Z zM^@!DqNqJhLia#DryiTV+!0I(S;%Q@Smd~;nKNcGw--BZzS&yAt@)1Yoq^AAi`}1F zXj0}8@R}PfnR@b}o>=wWJ0lslU9@N&Aagg~9W7crQ#39T)Quncb33@)7l%k_7##Al zPCL1^ZaM1A6GxkgY2bgfDW2ryp5}w`-n*j);@Ml}*5k)5ib;Ds3$@@cSVigl!QOPY zdunE~Kecn}qz>tB8Zzn2agvjVLWFt~#E}V{1Szt|U`!^?f?S6|LVL%bIxu;VktJrj z{?z1TZo1ePOo{F*L)0W}CVHyeOb)m))leQ(xh6tNpp}VKF%dT=lW|TG6SA4s&h61@ zOeWJxk2BfHpoH6*uIuf{%Epe~h}*8vJ-w5cS4K*AGvdoT-dt(4@s}*N6h72IhtgJ? z9k06BMLiY6Y^SR+5$o%?z7od=fAV6>!$_SGNs7nKF3JX!yTXR!**HZhV$Z43e8t7` zb(5E`u;dHnrOj+fQ8puz1UF%*o7k1j9JPtK-A|N^6hBuC;UJ#giKco)m6MsL!JSN7 z!8y$qcCOwIK-9q~VoqdW6((+q?gh}M->JDVV2#Hc<2MGZ zd9%|dV0T&z>^g9Gm^lWc;9KW`9W6@{=aiqBbLu8yHaxOK`_u>G*ElK?uDglQXylU_v{*UeHc!sr4l5@- z?8zB$D1j_6;Ml`8%jjdnyKt~nQn+)>-sucl;8`!RsviJ7=E~<3ZDPn_rRz*$hOYIH zc`&nv&Log=jKm`PoPnEcQGHIiG2p4P%*J)WZvngyMP*n4?>e;%SYHskw%({hYqcV0 zNIQ`GY{mIdarKa04-Yd8m_NVMeD0>(0jwkHFnkmqIt*AzG|%v9Pt0I9Jfa3SAvBH? ze9WcmOknVU!6^(LgZDe<1vU}9GESN4;+Y$~>r8>rxBz}RyN3hAARE4QJ7h!Uy$uu? zaA47uy6GXKk~Uve2}eh;{APJ6*a}Z?b7v$#|0x^Jpd2n~WL!FufXh*QsN` zv~cDym!# zL5B=c4Fi^~brTp4i4UG~>)2^B>C@ra0hxPcgk9k&e^o+S)Xv6Z9W$QS19&Zy@mM;B z%!PGRkgU&~O0N4~T!ArfhE|UJI_|6`jSao$FFm)^DJ<-b|8p0%G!*c&O3wVnvlh0@ zZs=_`VpDY(dg4U_C=@g_HWoA&&SS~uFRiPeJ-ZPb80-Zyepjhj7n$;yjELqc zQx^$%>y&YW`1P@zt+MF`GmON~jHg<3#V+e6!Q{g$zL$f5u^6CrYYU1VPGU@=|1^`^ z1Y;=}>o`#HIF77J*VKd;d%G9oA18QkH<<~r5JB|mv4(M{&-Evn7I&^uabSlM z9y#y$tuX8z(Rd{fvKCAYEs55Z(K51C!S=G(SP>bl8Zt-S&_z)zJ~?cx8&gqEuro`4 zksNpC$g2rcFcW(P3gi0Y&GE4H%I3Pt!Js2ekG_=u^9H`S|# z+F{jo)x#?5s>V#L9WlrB&GVP= zpqN@Q6<*5YQ&-;%v3I1*F0tFDPH5be?kDSJ_~>EP(In~@pKom~UfR-33(-=V%JK5p z=4evQv@+JSJ&3G>MfFV!>M%7ie>SSJes0rGAEhy)##TF~nMKo#)+|3HxX??4YIUP( z#!sr2mQgW$xNaFurt!8ify*9h&lF&3ePeSIGifSvar2V;XpTMe)s>S*dNlE@iFLJO z#*P?2sn$D4t!&O-(lT>lgQr_R-;#i4ogooVT(Cqde2+3sG;}l`g7;c?mfHV z+};gMOUp|7^)napl5_j?ZeFrvVN>s>*$X^L@0l(07tU^I^tK9`8fW!}M>1Y3;Cb9q z+z&-Fwa=W_RgWKE2kQ zZEjfHR9`n{@th^jq=_TyDk>+AubNal0v!c9n~JK5LyD3rD#r{dPJ%KV2PQZCVI`Pp zjf3ah8g(YXV=QLkPE}k7rlStIJv`&Kz|&DqW*spuPWj{Twk*8= z*MtkaFI= z@_3PXXFx|Cx&XYJ=Y_n>V4Q4tI;+EwIt;tRQ-}9w)8T3JYIr*CC)+w-Paz!T>p6$L--2-z(zm zhM6sM@o`^{hqPoqJH2I7jnS`Qtu1_K;-u)O2m@#p*qUee4DPFTEF_(>7gu^}?>` zRq|QIl+QpnHX30eJTI_39_;Bqh1d2LV%uJQfKhuNE2exa?5#scd$eQiWx$xW_Xzgc zo){Rl$G@MkZG!SL7)nF8M|-KFN4ve+*vp4bHssb>8{OO38(rjGMQAS#-sZ2OjlF8v zv%N8GT6=@r*josDEDP;rh#vFD@8jWrwB7URp6$6Ij@sk1XltADaIyFIDYTa*dbGC~ zdb%Bqhdt)sI;KUp0zgLgjjM*9wr}~SHhO$-((YqK%MXa2XAPq@=%xZ5-~N zhH~5i8Oy;D68EtjJKNaH!;VjF=Yaj#ZQK)W>^XhBzsI3H_9@ohi*4+24f$TS@X)jN z-fg2-nS#G3;P6bG)q4}5%ds5K0E#e7VY(bW+H^l{V{aP{KF=fTtUW&J*Y>tndVgO| zdtrEMk8d^DIJ9vT_R0w2?7m}d>ut?|6ZAK(AhCXR7CEhFKnZCX%}x~9 z|AJngibq>?!`qYtFVC63^I|!A!ZWLEf0NtTi|+~{+O&1n-h?*xmckzOXzw(5YcJgs zk*OUJ@D3mwp7wY?b40AN<7~~x-||6bowaATZK&k|=d)v0 z&d_hhqcMr!^dx$lsm7e&TnY3xYcA&erYF|hx+h|K>#S60rH!%cTD7u-miHwzmpr=Y4mk%Grm5u z+}1~s+v-Fy@m0rTwp9mcwtL_==KQT%JngYX$DAK6l6Mevyyj=%__3YxdU3kh4w=7a z1RBRybU5x72ylQ_zTw?DZr~U0uuU`R6vx z@8f_LEtyTS%AA72-H6`AM%!V#m2kN3gi($x96ns$%(dNes*%C@k`ufK(bI(M5jG0nhVXXbI)sl2^Dg*3;R!CjjiUI7Fap!@(|!axyptz0&m5nT z8MjWDck8&^8~Ff)CZEvZ9lfas@Knf$i_QdubA?+F($nT02(M6lgYYc~?-G6j;XT59 z{=H3@Y5i4rFT&>(zbMRn?h|HN-xNN8@L$5z;kGF+_(NgNT70f_zEjK>->A>H>5AJc zE>O(B`Lz0cMZz-2s+K1z=6P$|&lHhUMz-w-n~s~qUvIW5iweTYA~$s#^qvM^hkaS# z5`<3+v(D(;TraFdKpi@Avd9Bqw+E$ICjp*1l#!D~ey+%`MtGC(ZiM#;uSfWMB{%I8 zcAkXnagnpF(%HZBVv(|vjL4+t=6ReUa^``YEOPGUx=)m|4qxdYvGZfENZ0fu{1aQ2rT07S&zD4ox6tm4+eYSJU zPbq#@@&71(SMkS+zf$Z&pI~kB<#o&ads@rve=Kty3d;?O7bsq)_&mic6l0AaGSS3E8d~_S;haO_;tk}DE?gWkBXCgv9z)k7bqT}c!c5_#k`lW zd0wdae8uK30;K(HR`UB5^N%#FomUj^SIqT}tj=J?^@>+2{-@&i$kNxn54Qc@r%H!^ z_F(@;5`Rb&P0PH8!j2ZstcNdU>4=WU>h~mzyboFW%>H28PgW|ODzey|pya#}jpC~m^UvaJ zx*HVVqWE^jcPchx1F47YN^aJ65cv~IzDx0L#s5(JKZ*}1HtRo#O|HRc^ZbS4?-ZMF z8;QOdlL#ks%pjbhxV>WjMV7sP>8Y5{U#z@TG5_Mq-lv?Qc!J_diuo5=R-b>|XPJLd zY582m{EICsU#r-B&q%JhH!Jx)itkr!)}0Xj$CUi9ivOngImLfh{HkK}_ibX6V>X-5 zLyFD#O>~YbIoDdW`erOAI*A;g2!|Ah73U~EO>u9zfJKr#b$jB(Kll};pddjONw7r{FdT(6(3S;zF{Ob zk1DxYPebJVJ3U*jWW^khTX_e?VZ~-VDRxd%^4^O3DITbJ3|YohV-?pbHtTYT4lm(u z8h+py*zrjg*xoyIq+G7`W-bNH;cJ+3=?8Mab{uZTOH_c%hqq(kBCsucDdi|5)ygQB z{0ycXEYYL+K{ZF2`)qzVl(cN}FZp5qZQe}&#US%<`=2mb>Y4esoJW@YF#ndflTnX! zW;`Qx!Z}Kt*0=0GC9Q}$H_d&M*yQ{G*Vd%l32*sXVV0HSG0K?)=L*Qo>g&QR_dCLz zZ+Tys^D7*iQJ+KT&xB7w__Z+0`h&2UQ$hZzUkn+?W4s4o5jeL%rv0!m>or%H&lor! zqYlT>oPQwag3E+?%!dhcF8K`Me&A~10bo9VXIze{e<55B=2$BO$CTx55@uTG3-frc z5{`g5)}lVkc#SagvtF3D5*%w$rvUt0Vdmj?!h^u~2s1x?_D=l@FvnfwQQ*gg$AEVV zPXKf7f;zR}7lkK-Igdd(=TkY4L9Pe$50A;`fIkxE+&RZxlrIN!tVO;WoPah)z6G2j zd>c4Z_zrL<;d{WR3O@kuF1#Jgzu~2w$G{wSk)Hrp2tNfrQ+PL+<16Ys2c9Cl7tHY$ z!T%sOepJeN6Mq7Ls(PZmxG7m%UAbFhzMeixE*b|a??cLt9T z=KbrL!l!~ccA|bZc#3d0@O0ts;90^wz>9=?fzK1>`MXBA1bmI~Xz;Iu&j4={t^#xH z#B|4l9~Q0w|3!EPc$e@z@bki#fL{{68q9eu+F1*JTlgmMhr+)G9}&I>{Dtr~@VCNj z=NuQ&&LiMB91!xO;ACO8|8(Ie!5xJE2IkTX)ZY!x7Jd#~N>1{Q5ywTA%Y}JNvFwtO zv;X8g7r|MGxYpTg6Z=ZbMjw4UT@JjJ z^SD~(HPC8;02t7r4yMR6XPjSH?+ak=6uGTJ=dRK>FuFICJw-0EMc*xUMD-)ps1 zosI<1hm@L>@^I}RZsY3w<@|sJk0+Fh?qHs%5SxclUzN9K4 zlo1)9I1-yRR_qNR=;~cQjJvkKD0g>iWop#K_LHp6R34geuQ+duEsH%qmC;wOf=L>al-9 z(A~or1u5=shCjW2SH{kF_tg996T(l0Bfem6BzaCo??{)p_7SJY!?~f1NBeXb;JRPZ zPMPZ-Wf%@04P~~^aEACo870%=B2~e}WxMM$cE;8{dl!eHlPNIMu>+ftBn=HO6Z2NuH%g=Tu`zL+{W^kZT% zmSaoboqf>tmcTRDTw`nZmSFMPw=mUI5DHCnzhh2!hbD)PB^K|_7Tvrp@jhp2#%TYj zc7Z(Kd0WZalzk~7|LYkg zHE|`C!IH|vlFHBv)Asm!J}}aC%0dHtJwr!)iOUL7ch~QmaIoSVEY%mS7@o$+>+9(+ zeSd6E_K=id@&0-T74PMCtZ$ny6p0KEMgpNwYG+WWCO_@NcBuuSAt|9O)Wzk9zk*ee zx;uMcdbA24jXCKmqW5DNJ9oVP(%b%$jJQKPzug}EY|nc~d_M%fy2KY>>g>)a2zf1g ztZ#Bgs32v?NtN{h_dhJ@bl>QT_Ae(zLQa>={u!Yzv-;oQi|^)K&arv+fn%djD)U_& z3PeJ2jiLCNp@jY$2Clv#-MKq`^{>P0ZVj)#%f;{Evmzn)g_6(~wCR2KZ%m2DIq8&y zT(r#Bn8v=8$v^xUkE`nHNc!rF!_Il>tIrFs&UKeY!cRo{Z%FIu4srJugxwds3~k)c zxN%Xp1*SQr-$5N@e%)??DERAlFje-->{(gi(_T}{u#3(DTAiWoQ`@)bw8!u7k%wZ z;&7UL|4<|pdf_RwRkqY2spjYm2~}=x&+L9cRqq!q@qKQEGI7>~yIm5Q7FSXgL}VP^ zs!+&xx$CUhG7?Aib2iie?UF)()%8cl&QhMl(uv4>LC}T#Pg0g&&yi7M{DuHB={7S3gxxON)=1 zl;@dxnrZ6kGgVKauOh?p?!Vmcl=+^$F@Yxs&Jm23C%^n-B$T*z3nGNNGwZT< zgGTu}ue~TQb!|ymmmW8!p_)z_<9Zb}+THu|ji{@&KNN5^NYvK$-M8;s-*zoXRF`R6 z*+1Y)fU0IjB)E=3s zpH~GoWkUZBen39H7`Nj^5{vf%lAu8m!<8dtlf0H{JUM@D@nxFD(@wzi}C@z}T4 zcYU0-&-;S^ulAQk?H3vQ*9FXBWzNmgl&l|Hf6Pw<^_g&L*c=+JkSWD?jICYy8>nOL${%rrv34b23c=cy zCs8wy@E`)ScIBVA?Ix~*Qe0pSV#GJ&CxN%yz6qm=MaYidTfp*7Z2QeZnF;*Xjo(|q zvLE95?E;p3&jkxuE$yb~EsD7_nqdu`sl9EDGwjUU%ZXoPm)==0b} zxF0`p{U5?_C=fSJnLCs|34F*OU&o9gM#Bq?!Fe|)<$7qjDZF>^rSJ(3-b_CS^7s|^ zL6n#R30CJUgW2F#iq{dH;79nit8;E7Z)D{prgAle_)X-b-~ePfe#?4rDA)yd;_oD< zq1%|`MNg*uKxek!>J7m^LIUT=l3YR_frSP`EpVA16fs|_*!>qy? zpTc)65>n>FIEJWK?F z*K@Wfg|D38n85_s>*SAuf#6r%d61l#iuF2! zhlnApIs)-g#!L%xfD-(UuiIn=AEx{mAFXsu&%|#q$*o1uCH)bk6_oWl)0-Hhlgp3p;sEO1%RrRfiIqqlo64D?Os0l-4K z+%qVBF^U}Q1W7x)0bna2>_l!2`v z%Tz?d7mx+-=VVG;fYT^OiO-YF{w$-(P3-Q4Al{rWTvs=^i?bzhfpYwsNUVfdBqw1N ztK*qEqr`_s?U*e|br1LLxzOxegI{BSb>$f_>GOy?N$f^h2XfXXu?kpnvmNIo@oaj| zZo5w62prh7q%%%s4%y_Bs)$Z-8g!DzG53LBE>cgbrlrInACo54kb}Wn5I3pTH2>5V z{8fI^WXeM*BvVM_j8Y)EFF$-`dY0sVcSC{}yqD<@=?;0~W-5lxyqr3>Aem4VO`s)^ z$CBOPwfGHq<_Au`nf%R0n1O%+hqk5)cknq@-e} zzLfVea_8iKW3T(L&;1W$n-~xK7^4Gc7O}%*rhOB&4){zuJk2{}LCXU^9_r3qkpavD z(1Bmuv21d3z{i|)Y^-&}V$(JT4yySId zqVAU_H&d~F3ex}Dq<=oPPJIdO*8RpuOTWW**yQP3ACH}H{qR#ww!ZUSf!$9*l+Cj4 z0rZ4-+xrJX9?3=moIr}S19Tx^K^lis#F1lApAP6|MYe zTz9hXBH$#qI2Q|#t{aGdUZp(X_vUC$^_BR=kn3$ToN=B>EhW(_G0#N3UaBDzK_hf_V4)s$R2AC>YT_tO+y`G^OdO?&e`3?i-dBv~$JthRFBABhoB7!65rHWd zY9$P@MWHPr%d1e1LhKplH3rs2{%br}SMyjf`3dmu#;*{|I~J>%JRcf(>0QhO7T5$> z(0{c`0Cm!LI85+Jn3n9N%c|oUV9y7wmJMR+lR#127imB2Asu;zTWlD z?DFpKL(VE<^(-^h!%hnf65%tJDQ19^=_OMmFBifMl;su?u z?&&C|J?}1pa3IU*eqegiENuT4-rcw>83i>B{{vI-+mZ3ECa)iug1;Co=s{C3zD}CW z^N$y!PBanpHNl2C2P2T1bFeR<*9F*X&cPmIKs;R6LXib#XJbmxdk*$&HBvcb(Oun{ z06R|}&5?{{&LEcC8FYw;aHlB>$NLN5u^uw8>oKH^Jv?UYX1tN^22*Srv23#W4C0q0-4W(8VsBv3li&u*tGf}V|33^RFToM!s?rg; z_ZrD4)0Yj$b~Z1UlVH+xM$>#xA=8nYA)ASv5e_F?0Nt#{;0GY#E2o3`PV7bi4*LlF zu4rlVa|thU!-*Ku9dpbXY?wkb9&I?LeQ zjelgZO+9CuVm^Qby<&UYZ(`f4=WZru0$QV2&pD==O0nIIr+Pa4DUDci!tHGoN3q#X zhmc2-IrmyR4}f#>o7m~z>T};l>fT`CR%6Y(^xtYK*fBQ>?kXQM+W_xwoQjjlOMHz{ z{{_qpp+WD!Tx#Mif^aB{bqaQLWW1|=k-gYnjUAC)fExkbr()0l(jxK9b2n7n1%p8;oYLDQB&RT>Y?% z%3`a}+K3;g{Ar{Z{|-Acb{<*0%`$tkc>Cm(uY!rxGpNcAA!{gOdl5%qfBYd@=b36! zbt?EM^rR#?0^7nlBz0DT?|3;{w@s&FW;kW_3ufk)2}K z$mXKhY9Z~Da#5VL*6U`cw_Z0JU(z)(urxH6(awymn~lH0v8B9ED|BLOibuMN`aIZi*2(^g;GS>?CoWUibdK; zD-*?1vl6F7SwvC$D2v!El~S3Nyjz*+>!pPuL^LHF_EswWB_%l?WnR59cLUU+K`H~a z3A?(w)Zd^J?USX)2b%+gdKi-IPC_u0bzKAGF-1QTOXc)VT!y?nYD-ooXI?7wVepnK zuhe>j%_8r^v`7{;N6x)JGjM9U0*Aq4^=k$x=ssF6%S+upMqwfY-k4w&VFp$=wn#H| zi;ZqA1FH~Qq?rmM;kk@3!}0J~5SRg{P+aqe=h*N%?Xd`{$Eyc$COD?HS=O}7XBGkBk~{zS5B>d;Z|J$S#fe)uK=BVnC! z2E6eya)icFnLx*Qit;_D7Ma1n{+CSrP|R5+Eggh8Ep2} zFyPx{I0y{F@U4wfH`nM+WN??k=?r$lQ+MJfl6gJUna;o(iPZp&RKVkWV9*&#II$U6 z-Pn0MFluZX$hgV)~| z!8n6^4NhmU9lmvCP}e(r6B%rSN5wI)y0J2!3F!o*P{ZK22B&R7aEB+wuW`-zT?en4 zsulU1zMDKH%zgpd8MPV)iw#a^a2|Z?d{WnIaT6IVg-1RaSlw7Ysap<@rK!K$M5u*F zWw7?=c*tNLyiq}D9FLQ?KYEHXqg`79Bd%JR@A1J&oz6`X0Q^zbrIUs z@^YhF$H3~wif~*lFErZI8Soe$SGC^$X!cpOnI=j!tGwUfQBiF<51VyH6pc6-n^XTc zQMAG?g$6rC7Ll$a{Fm^F@T_tktqgeX9VuZhLOOP&)Z?kikgdH7Jf}*s5dIdP#pf*t z?bz*QBImu9bu3dic-m$`tg~`k8Y^c$dFf}mJjrQ40?&M&At9R=oz3SQF!kAiGM{0| z=XNmj$y0=O*bce9QbOj}x_K~wH(?O-Cl>JkdF%dqD<2jtTwYw%ub^S!oZiO?Wa0mx z{vd$qq84J*dF%a3Vogg67R_&Jn!k811o5oq zINnq^{x9RWvO3pS_dW~Idf|93gzkMP;C!Rwt%QGmkl!cpJ`SMeKC=?Ox7xaA)BBQv zFUVEzy>;2``v2`9@tO7fy_MS2jD2tEb*t&6PEBv+fBV${=2q)?EB)67J3xMX{x1r4 zG-=UVp;-?;j`?i82K;VRgCp68BAyas^?8Td@v_TJ~@Y-V-v z75a$FMlB|W21OHb+2}rx&v=JVaj__195XRF;9}uUw8fn$Sr)+;{nMOTpX&^`!_B%A zi9{fpUieS$a3(^(iqBjKGv@BVV6lLxJ1=U#J1-l8@E#n7deZQ05dGnXV>48KNVhO2L_eYzk_grk3%@WNZ>^C%C9?KvV;jGh7)5 zOCOx!BI&t|3YOo{svbn1Svt_^2MZ|#%MrL07mz?E+?_m88f+HBzr?Zw8LrsZxCqX<}_#D*A+8lQG;|R4ZCB4 z^+hyqf-+*FvfTNC6*FuV53a!=u`Ux5iQ>H|{6?6yl8bc&tA<46n&QG8!9p2<$&gzD zBe>i%nJ7&TkjY^}f_nWEpKC)P8~J;>D~MpthwW#%i#aIbpgfLq$Bl8nu8tz>f_lgs zO?WFJ7v#tpP9@E)tr4^>8aY35aRqGlTSF!mPb{Q7vEOZBta}ny7 zBR3&JU!5aC-OO<53K}L|7z5W%N{(>-nXoHZ7ZHYrgA3veR}F%-X|zdlMY0zveAAl^ zIuE4Q$dHYg+t3SC+1ea`ZpWzP{T}ZBVk?1otcVh*R_O||C`484H zV7Ee6BU#bW+|^A}=uoIk*O^GJbl@V<+1`3;yGyf+Ttj11kmja_>bZ^ebq!5HoNF7V zSJx~KlGf4F-rmf0F)HK?F8ADe7f66xtHG^1U>2JQ76Wl7T(KITqjurRbye&a`hrMz zuITO4|tr%aAZ9XE#o(n>$w)t8o_iCf2IfwatAiR<%2o zg?005Yo^xLO*_`@>T(~hY-zjSLNsmx5troTA}uLJ6|DT?^)%y?=WSoSJ_+O9jO8`D zmP!S57Ll|b)D~TkhCOO5Z$m9sP`89gvJUYYa|xW`*730m>$sTfx*l$|j6PTjs*yWU zXIIzCj;3r}5XJk~Sl{ORx+_kT<={zPhDh z@koSZ!Jp=Ctm@$o#>%i=r?yMvm_(KVN(_oWEf4pWyVp%iIma#gT1a^YZrAHoMT2 z%jxQ=XpaL+5^G(3b`;2pK>*eIeo!mK<=zT{o~nO z6XAAU#3^cMn(oQ+KH94H1ySnLo9V*lrbWVab38UDQZBr_aPLjpM-F;z?YI-*Vn$<* z{O%?8uIuec@=kZH}86?i&a8`*kDwuk3=UxlH7#nA4uEN$T{0V%{&`{199XgEzecGhYX-C?e ziVdSwr(X*neKg0M1)|eq8BZQdpEFoImgk^T9j2W+^ao?3&H>_6hk3x`dE8iRoQ)!L zhKcTr?BqaBJ3J>Hb;!&o9!nd_Izy#)5ai-RAJZnz4t+Z6koDMnFwaAq%s)D{L*FkA z_8D*LO~S^>S?Y6UkB)j|`jj&dX_w5|GCGFQ(f3OO|7b96a(-6Jcb3R_Eb|AwX=jJC zZFFjfc}hFPLML3@@{NQ1Le118z6iqeAT%djA4Y+`8j;fCsBV3 zHjU?2Fi!8}yWq3DsPivus`C+8^MMZ%_7|NP72p^jI$j%03;hOcj0f|LGZs;|2!}K>DYLTz1GNju2!(dX9<|s6z%ic*L*$?ta)+;SoJr92V$fC z_1Neb2eQVEdMe4h)vQlBG^y~pV_o)h zxhm5ma?4klZjoJp>i@YVsSd=&&qgkttpFTvV%D+qK{pQDzUbBNqaHh9`(m$WAN4NY zN4-1tQSZrp)cfN;>iuIM^`gj>eaV**`=~c{AN7vkN4-^FqlaMUdPNV<@0?4mSE|Q< zisOyw>-4@U_G~@X4mnSt_4F+0DO287k8d`?XXk(&5Qb%8yE4UI4feI;fZ&9UD^l#W z%nLeBw8xH>+Iu*~9$$>*%~qYp>HZXZyJ2q@lxU9~61Df66nk5+&yK4)wfA(2y-M`1 z)ZP#%tG%5m_Oj43U`J4$+Iuy{-Uefj9S*g}o&{7B?FL`e)s8-Gs=ZHB>^%*8B?xDF z*}+zO!&2eL>;r=`rWw_$H1eA?sSMeQA#V($U$YiA#72^;+0mbKU2=y@#& zr@a_9wa0I6+4S=JQ85a{sSUCj#YHnn$tioL%hKs(DcsrJrIvG>FRd^Z5$w8ze)+Pf*m-U(^Js|QeVPVMpkPn8*P z>B1miXs;BT+Iu|3UKTE7?cDM>wee_*y?Yh~10>pGeN}s}rr6sAd)l$J_Fhi0*NsZ> z02F9%tg-ht^lUrC5uC=!+WTxD_3}|aO!aUhLS7^4)OHs1lo?iX90oiPFn;CO7{>N$ zM2fvi%q-03$U~f-YgmfCO&DRVg&yryU{ibJQ|w)Y#^NuKsZ)DXQ}kBiqP>-)TXCv4 zCFQ)4)rdDD&hs9MP0!nqVlTfWSTiHl-kcPBd8cCyJ)Dg84m0*TQtVv?d$+4G_!_^~ z6nmZcZ(e@;iS`aR_SU7?s~(8~87qc3wbz$ouLzZSi=_8R=xTbuCH7dBba!JU_Et*% z(dMNodf!E+#oZCX4|TX*1wC`P_fzOqrs#3^PO+y!??7+4?!eb{+zLI$RoyEW2J7)L zU#hTaI@~vQRSEt=%z{ixOA6E;zcXj;t^IbOM|)GTsl9wKR1@wy$h56Sp!VpS%f@TN zP4H3}nE^Tb6tu^|KPTGE;ohFP_|~BsL6|}8C7qRjew{dTf#Hy_J5%!5up6e^{er}x zn(^|{Yvw(X_u&t)g%Z^_qh%H=6?Q*0eR|ad zI^jfa=zjlRW!SYe)*f4mqzk(%-R|>BO}cRKZ&V2ZUx%^oe|}v%dnGe}STae6w||m5 zpwF*E7)=T1og(SNZYs;}=OlMPVfU5Sq$upB?CgG3at9Q~6245ZZp25cOQP>J_J-h;+j@MxU zdYtdLz2JxXpJHRKqZ^L!n3s+scl}cM1!#f!FQ@G1U+2P0@IQP2aXfwk_L=J|u@&H~ zRoJII&@Xl0(`7jOCI#rhbclYt+aD|MAuhE~WZa~Ndm88{bvn(=Oa#*(_9>4(BjVb8 zpMSV(pP7E{?FOfA-bF|*4=7KN-Pzo%QV>Hvc1%7TbF%(3Nr~tspYhsf$zp}injM;# zMp7q(f@gH@B?hOO2oH`-PVmSKP;lnNL)buzb3H*jYMKq7jWZm_Hu#@77v3j)75sCA z;kkO^<339F4Q$kB-62OsK1<}Ez(?2L>F^p@FHD;^2)_rPb;HNKlROGBr zzBFZTiwQFvfnD=cu|A@dJ z3s2X-BS%Hd2ksmGc8u$qIH2;B~&q%>BZCrHR)JX_SoJG}c^(%xxkio>Ib~$Mc4|aU zJB+L5^IVZrM%H{@By#Gv2s4iD!i@WJ;g8^dQ+O-hajS;s0Kk@%e-BF8F!aG%bG>Ib~!`%bOzSv4vng?>|LO8ClQEd!gp@5U{o< zoRg%SGP1TO*iDr01aKiQR=BINk(u@z4386L-muuHLw02+%<|K<4yTC@W#p*Tw_`fpMcT1G(V>j2?VHPUX~))!4rOF* z-(37_AP}e5*CE(1WQM~{#73sBOFOs)yj0|@U!}r~f4O0oC(u6$vKb<8fX{1{Hpz9u z)NyI&L2xdAphFosD)JM+JeKEe5w3zyr|~ZX7w+do?i}Pc?D8DsW$;-B*&!AWn`_-GmSpmFY0WDzfgDye8!3L`S4E`UJKvlgVcc@kyA$2 zI&g-_&x7yk!xRAAx3SSCWn{f~xH#89AWrkjmG$62=*k*QU02p%#&HF9fbA}}u@>XThL3cL6VyLd`ju)b2CGP0Hh?NZKq$Mca# z!KWK^KoFliVN~6qeS@5C2sU5r7lFBc3T4HH8Gp)S@Y!~eS#B&N+OLAo%@>=@8f`yk zfw`6nuFjccqh9V~C^cf;qV`h8?pJh-*k27y@? zXByrpJOKVh!i>X}WZ1kGJ~y>_BRLyCaJOI^1g6a&8NNrDHh(Id34aS2HlKjcO>I6+ z&cP4dHf)20x09j&0(@?&|1w$n6|Yc7+V`4GVIU;74u zSuVWiDd!2(&i=woehC>iOW|`w1ISwPzRg`-fH-1VJ7o;!aU?<;TU)a8TS7U zpPSl$i;Q-O?rrLT8UJ?;e_iw(CJ z=6zRnT)QFhJk7|@H+;Ea_PzAj+YR4uc#Gj*8Qx~tUCVOb4~*RNllBK0cK_Kg`ooQ! zYsP4N4l&F*7L^}nc#2_OgQ_#zaGha(QB!r?^X_6q7LM1T%9j~-&$>m&Jdkn8Ne3s#jhWQacjf4A;oy3RF6IFh@VXh^l@&^oaEg_Zv$}raw zQu&_@zhT&YuUF3N)>stYFPuEK*l?L)t^uU>XBciY++ui@;qwiZ!+>98-Cib z`?{d$yEO-e`TSVpGvDwjhMzV3lHtD@=EsuN&ZmamI(l-hQRpkF4!%K@;G+#6W0;>? zR{bT0`6XPHpKkbk!&e%<#qcABpE3NR;hl!xF+3QJyPh|0_z1(*WE?{`9jtxGdZWX2 zmi>bQofacsY2@8Teuj}>X!v5IbCr?bZR8Id`Bt*T?MX1>_6(x&2cz>B!*3eiZTJJS z*!dW&cGA)5Q~8mG7a2aq@Wo`Q8{Z|f0|s{$So_Ae7@ePxCEp$}^2dzaeR@vpY=fM3 zM#ARHM&~udZ;(a*U9!aIUu5ZTe+t(Ab_lwvlSSrD9xe~8ee45`&PcMv`CucTWaNjF z#m*Ek?XU|m)#%q6{dq>8&zSYtZyNmz$_4~LT3F@rk@to`{4%EiuMM!(v~XBc_Ck`xGrZ04 z4#T?)e?peDq+x)?&$7|sf9DfpoI=V)XE<5%yu`@I8~G$7KibG=k;Q&3nB${9oa+Rm z({A`=qu*!vV#7Z&{3Kc8xt%QIsTaUHp8BiN`A@Q>pMm;pYth#qjH78GG&m>)3OT(b-Fuv_#Mz>sS(>Bk=TG ze0HQd2a&~QvC%IxI+G0_Y4jJ9CI0PX4qo9-Hu6)+Ljw63M!w1Lm4^Rdc#q*6w9|U7 z5r)SZt})CrYTpCh&jjO=N-)$D%wki04Eqy2)^NGu!wes3c&gzUh8Gz=!SGVU%M7nG ze5T=V8NSf)rG_^f{(<4!4FANi8>dVE?QtW2%J6RuKX3SthF>-Oy5U`hcax<)d|>1s z8_w{P`JZLD$Z*Us=hn3BCK-0)dP!Hck;Brebn^yi%jjB-yxlNA|F8OI7}@F#{JGW>JHTMa*Hn4kYwJAXF3)3BR2V8a8)wT4xnYYi)N-2mkQhI0&al^@j^ zYWN_-TyQ{j$_;bb0PTxTGklC;E@z}V^9?UH%=HFTr_1oEhEF$qj$!vctMrH6+=cWr zucVIf4TgVU_zuHvena%P82J;1pEdkD!)^{lj{TF7|K0FghTk#FwTU&JX`J5>JNSN7 zg7XX)8a~kQaKl_VLG8HpT*PLLks+Y)KN^13Fc*E$KKX9L|1$ik;SlGMWE|lZf)VCo z5h^b-Ji_p3!{ZEB80I1qYG;<=I>U{Iml*Ca%w;Il&N{#e=Gqe~ck_fYPT64O8x3j}srK2dF~X+PvB z%B4?I1=f3X4dv(?u&X(Xa=Aa&QVyoPo^rV_G*J#_eBJm$+9i%J^to^gSg+GI%8_Vx z+m=%<*HUKea#U@>9x)`Ke{sLYDp;^HbU7 zr<7MG<-#sMrM#G*T6Qi!rM#G*dLP+9F2oPqMr_I#kfppf8NQS(<+a)Hm1N21YYn%v zpD+38p1VmNKFj{69L(pZx+l-qR!dCbm4QrS;DM41;ST>`Q8Hc zZw7PhM*bnVMEExF!NNZRbL>W)yTJV4R`Pw|qlBLUPZiz9Z7`n&livfk34a3Sn63bIlGXA|;XLpK!mLi02oD8wOh^49@HN7Gec~qJIQTZ< zk>I<9r-1JlJ{tTp;i=%qgloXR6s`roNX9k7_`G6xhcN5v`{b;k&Hq@Kb547Oc`0!b zBJ<3_1rwg+_ z&lcv~)d^%o441CAL^u&6?xjN9A7CE)jjM}a>Q z9tRF118AoloFiNT9wIym92aJOjumEpP8Mcc<>>@-QWu0^T3tDSA)3*EA89> zt`WWk%=Zu|zZG0Bd^h+w;fKL3!aoOh2yX><3jYDzBm6RWt?-|~X9>Rv=9rG>Vw?GG z;g7(V3ja6wd%~WNcQS>;;G2ch!M6+Z9mcza^TCgi(U7t}JSlu2_*vl?_&MQH@JqrI zz#QN4*u%kp6K4ClOPKdTz9T`Mx!_NP8^L~hAYTL?AbcV?N4NuADBK4=K=@p6On4)h zV?EkGAIw!-$rphq3SSE5Vsw;W2|il*IxyeCp!{a=Y+;t~31nml+Z>Mj$WZf^3l9OW z7LJ4agn3<@E<6#uL745sdBT-ojt6Ozb@g)Lqrle*SAlO4o&n~vq10~x-y?him}5iA zPXccdZUH|f+yVZz@N)30WHgLy6aFU5d&(|hUW4xlmw-7Qq<$IrQ(<1${(wNv>zd<4 z>dXXZ3-h|>IFa&t@BzZ}!7<_Ez@vqifXjrJfhP)gf)5v73qD%-OfVO9rv3B496ypb zgXalf1?B?0lwS`%Uie1vYVzQqeEWo1zNZVbd^xV94$JpEVV3VEVV3XZ!Ytn_g;~B_ zESATzeEE(FndQrORLE7}hlFQ<9}%7heq5N>0^d=gKJ({!;WjYeSD~Ew^NR3l@H=D_ zDC_M9hWU;P<+y#gu@RYNJpeZi@-T3=a50$UUCP-G4;3B-9xhx8=DRD@Vcj@HxB@&u zm}x&um}%#`E7YG2o+exio+G>n+$hYtaiTEuVX1I4c$qNsgigmV5GTfctlv6*VOi=} zFGkMB4_qlW9kY~^aX+GC`RSOYip+`uHw&ANSy-oa%))rgM?u<^8 z;TAIPeRQ3M*Ba&+M0MPJh3H>vERv3Z7z$ZQDVO3566z;V%}uJN&in{a6P;fGGHJgl-j7MoCBZht3F zo)n8soLD&-Lb#TJXHT!4;rqDw#9N9UE1Y%On?G>K!IDVej5C;cT{ENmmi~ zrrx-_YFb|W#vP+KXB2zF@iQNgCyFNl}V zFF!wR^l2L-vnpl|8eSS&@ch4v|FO3;v@M<$%H9p-tj6+5c^!?rD+>nS|KH|(JCJ;L z=9=XB|97Zh>-LXN`KaKJmu24j%uTz_*_rFT8ro4(ePVdj)M#0@|K{E;m?OdsAf6kp z$PMk-F=<0Qf5$)b%j2=d6L$Ij4u=0G6hA1kXu{}6a<-Snwj34nU!k<2I2=DHZI(Z? z;voe8s^XraikbJ_xoLWQzai%@$*c6sau-kVpQq-c2@B#MPtDC=lABkNTM*A3w4o-y zr6%T0ge1FaVyq`OYie%JhPaQjZs^Fb$j$BUh
  1. +9RIu$~zeAGoJ98pEKH`$cM}7 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⁢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 diff --git a/tools/sdk/lwip2/builder b/tools/sdk/lwip2/builder index 9b6966aea..693bfddbe 160000 --- a/tools/sdk/lwip2/builder +++ b/tools/sdk/lwip2/builder @@ -1 +1 @@ -Subproject commit 9b6966aea4c66ff5d1c6c077dee2641f848c4fdb +Subproject commit 693bfddbe274ade1b7aec731e8c688c073b976c5 diff --git a/tools/sdk/lwip2/include/arch/cc.h b/tools/sdk/lwip2/include/arch/cc.h index 98046e42c..5fd6f4d04 100644 --- a/tools/sdk/lwip2/include/arch/cc.h +++ b/tools/sdk/lwip2/include/arch/cc.h @@ -27,7 +27,7 @@ author: d. gauchard */ -// version for esp8266 sdk-2.0.0(656edbf) +// version for esp8266 sdk-2.0.0(656edbf) and later #ifndef LWIP2_ARCH_CC_H #define LWIP2_ARCH_CC_H @@ -48,12 +48,12 @@ extern "C" #include "ets_sys.h" #include "osapi.h" #include "esp-missing.h" -#ifdef __cplusplus -} -#endif void sntp_set_system_time (uint32_t t); +#ifdef __cplusplus +} +#endif #endif // defined(LWIP_BUILD) #include "mem.h" // useful for os_malloc used in esp-arduino's mDNS diff --git a/tools/sdk/lwip2/include/lwipopts.h b/tools/sdk/lwip2/include/lwipopts.h index a9c1c2a5d..55d25072d 100644 --- a/tools/sdk/lwip2/include/lwipopts.h +++ b/tools/sdk/lwip2/include/lwipopts.h @@ -2986,9 +2986,12 @@ -------------------------------------------------- */ #define SNTP_SERVER_DNS 1 // SNTP support DNS names through sntp_setservername / sntp_getservername -#define SNTP_SERVER_ADDRESS "pool.ntp.org" // default +// if SNTP_SERVER_ADDRESS is defined, it always overrides user's config +// so we do not define it. sntp server can come from dhcp server, or by +// user. +//#define SNTP_SERVER_ADDRESS "pool.ntp.org" // default #define SNTP_GET_SERVERS_FROM_DHCP 1 -#define SNTP_SET_SYSTEM_TIME(t) (sntp_set_system_time(t)) // implemented in lwip2-sntp.c +#define SNTP_SET_SYSTEM_TIME_US(t,us) do { struct timeval tv = { t, us }; settimeofday(&tv, NULL); } while (0) /* -------------------------------------------------- @@ -2998,5 +3001,6 @@ #include "lwip/debug.h" #include "arch/cc.h" #include "lwip-git-hash.h" +#include // settimeofday() + struct timeval #endif // MYLWIPOPTS_H From 03f1a540caa5af96a686db81fc3a21b9936dd4a7 Mon Sep 17 00:00:00 2001 From: Alessio Leoncini Date: Tue, 21 Nov 2017 05:56:05 +0100 Subject: [PATCH 118/156] Added constant time string comparison to avoid possible time-based attacks. (#3836) * Added constant time strings comparison to avoid possible time-based attacks * Fixed data types * Fixed indentation * Moved string comnparison in constant time to String class; modified function body to assure constant time comparison despite compiler optimizations * Removed wrong code * Fixed error and prevented compiler optimization to delete u1 local variable * Avoid timing attacks on string comparison * Minor * changed counter names, removed else --- cores/esp8266/WString.cpp | 27 +++++++++++++++++++ cores/esp8266/WString.h | 1 + libraries/ArduinoOTA/ArduinoOTA.cpp | 2 +- .../ESP8266WebServer/src/ESP8266WebServer.cpp | 2 +- 4 files changed, 30 insertions(+), 2 deletions(-) diff --git a/cores/esp8266/WString.cpp b/cores/esp8266/WString.cpp index acd62ce9b..6f2134e86 100644 --- a/cores/esp8266/WString.cpp +++ b/cores/esp8266/WString.cpp @@ -477,6 +477,33 @@ unsigned char String::equalsIgnoreCase(const String &s2) const { return 1; } +unsigned char String::equalsConstantTime(const String &s2) const { + // To avoid possible time-based attacks present function + // compares given strings in a constant time. + if(len != s2.len) + return 0; + //at this point lengths are the same + if(len == 0) + return 1; + //at this point lenghts are the same and non-zero + const char *p1 = buffer; + const char *p2 = s2.buffer; + unsigned int equalchars = 0; + unsigned int diffchars = 0; + while(*p1) { + if(*p1 == *p2) + ++equalchars; + else + ++diffchars; + ++p1; + ++p2; + } + //the following should force a constant time eval of the condition without a compiler "logical shortcut" + unsigned char equalcond = (equalchars == len); + unsigned char diffcond = (diffchars == 0); + return (equalcond & diffcond); //bitwise AND +} + unsigned char String::startsWith(const String &s2) const { if(len < s2.len) return 0; diff --git a/cores/esp8266/WString.h b/cores/esp8266/WString.h index a3bb40c13..fbf3c59b2 100644 --- a/cores/esp8266/WString.h +++ b/cores/esp8266/WString.h @@ -194,6 +194,7 @@ class String { unsigned char operator <=(const String &rhs) const; unsigned char operator >=(const String &rhs) const; unsigned char equalsIgnoreCase(const String &s) const; + unsigned char equalsConstantTime(const String &s) const; unsigned char startsWith(const String &prefix) const; unsigned char startsWith(const String &prefix, unsigned int offset) const; unsigned char endsWith(const String &suffix) const; diff --git a/libraries/ArduinoOTA/ArduinoOTA.cpp b/libraries/ArduinoOTA/ArduinoOTA.cpp index d3a4397c6..aaf4c5ff5 100644 --- a/libraries/ArduinoOTA/ArduinoOTA.cpp +++ b/libraries/ArduinoOTA/ArduinoOTA.cpp @@ -229,7 +229,7 @@ void ArduinoOTAClass::_onRx(){ String result = _challengemd5.toString(); ota_ip.addr = (uint32_t)_ota_ip; - if(result.equals(response)){ + if(result.equalsConstantTime(response)) { _state = OTA_RUNUPDATE; } else { _udp_ota->append("Authentication Failed", 21); diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp b/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp index 6220dfe4d..6b97505ee 100644 --- a/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp +++ b/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp @@ -119,7 +119,7 @@ bool ESP8266WebServer::authenticate(const char * username, const char * password return false; } sprintf(toencode, "%s:%s", username, password); - if(base64_encode_chars(toencode, toencodeLen, encoded) > 0 && authReq.equals(encoded)){ + if(base64_encode_chars(toencode, toencodeLen, encoded) > 0 && authReq.equalsConstantTime(encoded)) { authReq = String(); delete[] toencode; delete[] encoded; From 7de58d9671755e4d7259688af0514bcdc9ccf1ad Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 15 Nov 2017 18:57:09 +0100 Subject: [PATCH 119/156] Fixed broken links in ota_updates/readme.rst Replaced links to filesystem.md with filesystem.rst --- doc/ota_updates/readme.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/ota_updates/readme.rst b/doc/ota_updates/readme.rst index 4562fe98f..f05f796dc 100644 --- a/doc/ota_updates/readme.rst +++ b/doc/ota_updates/readme.rst @@ -57,7 +57,7 @@ Basic Requirements Flash chip size should be able to hold the old sketch (currently running) and the new sketch (OTA) at the same time. -Keep in mind that the File system and EEPROM for example needs space too (one time) see `flash layout <../filesystem.md#flash-layout>`__. +Keep in mind that the File system and EEPROM for example needs space too (one time) see `flash layout <../filesystem.rst#flash-layout>`__. .. code:: cpp @@ -226,7 +226,7 @@ If this is the case, then most likely ESP module has not been reset after initia The most common causes of OTA failure are as follows: \* not enough physical memory on the chip (e.g. ESP01 with 512K flash memory is not enough for OTA), \* too much memory declared for SPIFFS so new sketch will not fit between existing sketch and SPIFFS – see `Update process - memory view <#update-process---memory-view>`__, \* too little memory declared in Arduino IDE for your selected board (i.e. less than physical size), \* not resetting the ESP module after initial upload using serial port. -For more details regarding flash memory layout please check `File system `__. For overview where new sketch is stored, how it is copied and how memory is organized for the purpose of OTA see `Update process - memory view <#update-process---memory-view>`__. +For more details regarding flash memory layout please check `File system <../filesystem.rst>`__. For overview where new sketch is stored, how it is copied and how memory is organized for the purpose of OTA see `Update process - memory view <#update-process---memory-view>`__. Web Browser ----------- From 9dcc580aef055bd1c5226655abd5266c6049a54f Mon Sep 17 00:00:00 2001 From: Develo Date: Wed, 22 Nov 2017 10:22:11 -0300 Subject: [PATCH 120/156] Add compatibility check for ::config() method with arduino arg order (#3860) --- libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp | 24 ++++++++++++++++++++ libraries/ESP8266WiFi/src/ESP8266WiFiSTA.h | 3 +++ 2 files changed, 27 insertions(+) diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp index 136a60300..43f44153a 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp @@ -195,6 +195,14 @@ wl_status_t ESP8266WiFiSTAClass::begin() { return status(); } +static void +swap(IPAddress &lhs, IPAddress &rhs) +{ + IPAddress tmp = lhs; + lhs = rhs; + rhs = tmp; +} + /** * Change IP configuration settings disabling the dhcp client @@ -210,6 +218,22 @@ bool ESP8266WiFiSTAClass::config(IPAddress local_ip, IPAddress gateway, IPAddres return false; } + //Arduino has a different arg order: ip, dns, gateway, subnet. To allow compatibility, check first octet of 3rd arg. If 255, interpret as ESP order, otherwise Arduino order. + if(subnet[0] != 255) + { + //octet is not 255 => interpret as Arduino order + + if(dns1[0] == 0) + { + //arg order is arduino and 4th arg not given => assign it arduino default + dns1 = IPAddress(255,255,255,0); + } + + //current order is arduino: ip-dns-gway-subnet + swap(gateway, subnet); //after this, order is ip-gway-dns-subnet + swap(subnet, dns1); //after this, order is ip-gway-subnet-dns (correct ESP order) + } + struct ip_info info; info.ip.addr = static_cast(local_ip); info.gw.addr = static_cast(gateway); diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.h b/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.h index 4e87f8826..3de34f353 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.h +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.h @@ -39,6 +39,9 @@ class ESP8266WiFiSTAClass { wl_status_t begin(char* ssid, char *passphrase = NULL, int32_t channel = 0, const uint8_t* bssid = NULL, bool connect = true); wl_status_t begin(); + //The argument order for ESP is not the same as for Arduino. However, there is compatibility code under the hood + //to detect Arduino arg order, and handle it correctly. Be aware that the Arduino default value handling doesn't + //work here (see Arduino docs for gway/subnet defaults). In other words: at least 3 args must always be given. bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = (uint32_t)0x00000000, IPAddress dns2 = (uint32_t)0x00000000); bool reconnect(); From fecacf167cc570aa700af7057e9948a682793f32 Mon Sep 17 00:00:00 2001 From: Alessio Leoncini Date: Wed, 22 Nov 2017 18:30:11 +0100 Subject: [PATCH 121/156] Added Serial.setRxBufferSize method description in libraries reference document (#3862) * Added null pointer check * Fixed typo * Added Serial.setRxBufferSize method description in libraries reference document --- cores/esp8266/uart.c | 3 +++ doc/boards.rst | 2 +- doc/reference.rst | 10 ++++++++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/cores/esp8266/uart.c b/cores/esp8266/uart.c index 71e4ff8f7..74da8b84f 100644 --- a/cores/esp8266/uart.c +++ b/cores/esp8266/uart.c @@ -104,6 +104,9 @@ int uart_peek_char(uart_t* uart) int uart_read_char(uart_t* uart) { + if(uart == NULL) { + return -1; + } int data = uart_peek_char(uart); if(data != -1) { uart->rx_buffer->rpos = (uart->rx_buffer->rpos + 1) % uart->rx_buffer->size; diff --git a/doc/boards.rst b/doc/boards.rst index c60469867..5b75acc1c 100644 --- a/doc/boards.rst +++ b/doc/boards.rst @@ -58,7 +58,7 @@ This module is sold under many names for around $6.50 on AliExpress and it's one It's an open hardware design with an ESP-12E core and 4 MB of SPI flash. -Acording to the manufacturer, "with a micro USB cable, you can connect NodeMCU devkit to your laptop and flash it without any trouble". This is more or less true: the board comes with a CP2102 onboard USB to serial adapter which just works, well, the majority of the time. Sometimes flashing fails and you have to reset the board by holding down FLASH + +According to the manufacturer, "with a micro USB cable, you can connect NodeMCU devkit to your laptop and flash it without any trouble". This is more or less true: the board comes with a CP2102 onboard USB to serial adapter which just works, well, the majority of the time. Sometimes flashing fails and you have to reset the board by holding down FLASH + RST, then releasing FLASH, then releasing RST. This forces the CP2102 device to power cycle and to be re-numbered by Linux. The board also features a NCP1117 voltage regulator, a blue LED on GPIO16 and a 220k/100k Ohm voltage divider on the ADC input pin. diff --git a/doc/reference.rst b/doc/reference.rst index 840b74eec..bc74a8bf4 100644 --- a/doc/reference.rst +++ b/doc/reference.rst @@ -94,10 +94,11 @@ Serial ------ ``Serial`` object works much the same way as on a regular Arduino. Apart -from hardware FIFO (128 bytes for TX and RX) HardwareSerial has +from hardware FIFO (128 bytes for TX and RX) ``Serial`` has additional 256-byte TX and RX buffers. Both transmit and receive is interrupt-driven. Write and read functions only block the sketch -execution when the respective FIFO/buffers are full/empty. +execution when the respective FIFO/buffers are full/empty. Note that +the length of additional 256-bit buffer can be customized. ``Serial`` uses UART0, which is mapped to pins GPIO1 (TX) and GPIO3 (RX). Serial may be remapped to GPIO15 (TX) and GPIO13 (RX) by calling @@ -121,6 +122,9 @@ instead, call ``Serial1.setDebugOutput(true)``. You also need to use ``Serial.setDebugOutput(true)`` to enable output from ``printf()`` function. +The method ``Serial.setRxBufferSize(size_t size)`` allows to define the +receiving buffer depth. The default value is 256. + Both ``Serial`` and ``Serial1`` objects support 5, 6, 7, 8 data bits, odd (O), even (E), and no (N) parity, and 1 or 2 stop bits. To set the desired mode, call ``Serial.begin(baudrate, SERIAL_8N1)``, @@ -142,6 +146,8 @@ current speed. For example // Will print "Serial is 57600 bps" Serial.printf("Serial is %d bps", br); +| ``Serial`` and ``Serial1`` objects are both instances of the + ``HardwareSerial`` class. | I've done this also for official ESP8266 `Software Serial `__ library, see this `pull From c40d8a990e88888f966cb381a5b04222025a421b Mon Sep 17 00:00:00 2001 From: Shawn A Date: Wed, 22 Nov 2017 15:08:28 -0600 Subject: [PATCH 122/156] adds WiFi.getPersistent() (#3857) --- libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.cpp | 7 +++++++ libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.h | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.cpp index 7b90dc310..03255a68c 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.cpp +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.cpp @@ -303,6 +303,13 @@ void ESP8266WiFiGenericClass::persistent(bool persistent) { _persistent = persistent; } +/** + * gets the persistent state + * @return bool + */ +bool ESP8266WiFiGenericClass::getPersistent(){ + return _persistent; +} /** * set new mode diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.h b/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.h index 668c9223d..6264e3a55 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.h +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.h @@ -99,7 +99,7 @@ class ESP8266WiFiGenericClass { int hostByName(const char* aHostname, IPAddress& aResult); int hostByName(const char* aHostname, IPAddress& aResult, uint32_t timeout_ms); - + bool getPersistent(); protected: friend class ESP8266WiFiSTAClass; From 7b09ae5f69f8dccb5152d128c8484ec9a18adb11 Mon Sep 17 00:00:00 2001 From: Shawn A Date: Wed, 22 Nov 2017 16:01:22 -0600 Subject: [PATCH 123/156] Bug #3795 (#3858) * fixes #3795 * adds beacon_interval and authmode to softap_config_equal --- libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp index 2bd3b2d3d..6cf361b47 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp @@ -69,6 +69,12 @@ static bool softap_config_equal(const softap_config& lhs, const softap_config& r if(lhs.max_connection != rhs.max_connection) { return false; } + if(lhs.beacon_interval != rhs.beacon_interval) { + return false; + } + if(lhs.authmode != rhs.authmode) { + return false; + } return true; } From 6e75ae49ad1520692e625ae0e8583b1077d6eb9a Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Thu, 30 Nov 2017 00:10:50 +0200 Subject: [PATCH 124/156] CI: Use updated staging dev/platform without "_stage" suffix --- tests/common.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/common.sh b/tests/common.sh index c6fa2cdeb..b1e3737bd 100755 --- a/tests/common.sh +++ b/tests/common.sh @@ -127,7 +127,7 @@ function install_platformio() { pip install --user -U https://github.com/platformio/platformio/archive/develop.zip platformio platform install https://github.com/platformio/platform-espressif8266.git#feature/stage - sed -i 's/https:\/\/github\.com\/esp8266\/Arduino\.git/*/' ~/.platformio/platforms/espressif8266_stage/platform.json + sed -i 's/https:\/\/github\.com\/esp8266\/Arduino\.git/*/' ~/.platformio/platforms/espressif8266/platform.json ln -s $TRAVIS_BUILD_DIR ~/.platformio/packages/framework-arduinoespressif8266 # Install dependencies: # - esp8266/examples/ConfigFile From 3b0c3958377d868c6374699c0e45903c559b152e Mon Sep 17 00:00:00 2001 From: liebman Date: Thu, 7 Dec 2017 21:08:54 -0800 Subject: [PATCH 125/156] cleanup warnings (#3934) --- cores/esp8266/Esp.cpp | 1 - cores/esp8266/spiffs/spiffs_hydrogen.c | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/cores/esp8266/Esp.cpp b/cores/esp8266/Esp.cpp index a8e12f916..f4c0b2208 100644 --- a/cores/esp8266/Esp.cpp +++ b/cores/esp8266/Esp.cpp @@ -396,7 +396,6 @@ struct rst_info * EspClass::getResetInfoPtr(void) { } bool EspClass::eraseConfig(void) { - bool ret = true; const size_t cfgSize = 0x4000; size_t cfgAddr = ESP.getFlashChipSize() - cfgSize; diff --git a/cores/esp8266/spiffs/spiffs_hydrogen.c b/cores/esp8266/spiffs/spiffs_hydrogen.c index 235aaaa60..18c8bb414 100644 --- a/cores/esp8266/spiffs/spiffs_hydrogen.c +++ b/cores/esp8266/spiffs/spiffs_hydrogen.c @@ -14,6 +14,7 @@ static s32_t spiffs_fflush_cache(spiffs *fs, spiffs_file fh); #if SPIFFS_BUFFER_HELP u32_t SPIFFS_buffer_bytes_for_filedescs(spiffs *fs, u32_t num_descs) { + (void)fs; // unused, avoid warning return num_descs * sizeof(spiffs_fd); } #if SPIFFS_CACHE From 31abb6e5e1f0786c485910cf94fa5d8d0f0e2da6 Mon Sep 17 00:00:00 2001 From: Rotzbua Date: Fri, 8 Dec 2017 07:38:19 +0100 Subject: [PATCH 126/156] [doc] update HTTPSRequest.ino (#3925) add limitations of https connections --- libraries/ESP8266WiFi/examples/HTTPSRequest/HTTPSRequest.ino | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libraries/ESP8266WiFi/examples/HTTPSRequest/HTTPSRequest.ino b/libraries/ESP8266WiFi/examples/HTTPSRequest/HTTPSRequest.ino index 390fe7e75..4989fe85c 100644 --- a/libraries/ESP8266WiFi/examples/HTTPSRequest/HTTPSRequest.ino +++ b/libraries/ESP8266WiFi/examples/HTTPSRequest/HTTPSRequest.ino @@ -7,6 +7,11 @@ * esp8266/Arduino project continuous integration * build. * + * Limitations: + * only RSA certificates + * no support of Perfect Forward Secrecy (PFS) + * TLSv1.2 is supported since SDK 2.4.0-rc1 + * * Created by Ivan Grokhotkov, 2015. * This example is in public domain. */ From 7ff3ee91c4bbaee823bdb778ab2d6f4e7c67285e Mon Sep 17 00:00:00 2001 From: Rotzbua Date: Fri, 8 Dec 2017 08:25:18 +0100 Subject: [PATCH 127/156] [doc] update client-secure-class.rst (#3924) add limitations of tls connection --- doc/esp8266wifi/client-secure-class.rst | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/doc/esp8266wifi/client-secure-class.rst b/doc/esp8266wifi/client-secure-class.rst index cbfd24699..4a9449200 100644 --- a/doc/esp8266wifi/client-secure-class.rst +++ b/doc/esp8266wifi/client-secure-class.rst @@ -5,6 +5,29 @@ Client Secure Class Methods and properties described in this section are specific to ESP8266. They are not covered in `Arduino WiFi library `__ documentation. Before they are fully documented please refer to information below. +Supported crypto +~~~~~~~~~~~~~~~~ + +In the background the library `axtls `_ is used. The library supports only rsa certificates and no new eliptic curve certificates. TLSv1.2 is supported since SDK 2.4.0-rc1. + +The following ciphers and digests are supported by `specification `_: + +* Symmetric Ciphers + * AES128-SHA + * AES256-SHA + * AES128-SHA256 + * AES256-SHA256 +* Asymmetric Ciphers + * RSA 512/1024/2048/4096 bit encryption/decryption. + * RSA signing/verification +* Digests + * SHA1 + * MD5 + * SHA256/384/512 + * HMAC-SHA1 + * HMAC-MD5 + * HMAC-SHA256 + loadCertificate ~~~~~~~~~~~~~~~ From 7df28582858e5a935c721d131064e6e3082edfe8 Mon Sep 17 00:00:00 2001 From: Develo Date: Fri, 8 Dec 2017 15:58:46 -0300 Subject: [PATCH 128/156] Fix comment misnomer (#3939) --- libraries/ESP8266WiFi/examples/HTTPSRequest/HTTPSRequest.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/ESP8266WiFi/examples/HTTPSRequest/HTTPSRequest.ino b/libraries/ESP8266WiFi/examples/HTTPSRequest/HTTPSRequest.ino index 4989fe85c..c8c1ec442 100644 --- a/libraries/ESP8266WiFi/examples/HTTPSRequest/HTTPSRequest.ino +++ b/libraries/ESP8266WiFi/examples/HTTPSRequest/HTTPSRequest.ino @@ -10,7 +10,7 @@ * Limitations: * only RSA certificates * no support of Perfect Forward Secrecy (PFS) - * TLSv1.2 is supported since SDK 2.4.0-rc1 + * TLSv1.2 is supported since version 2.4.0-rc1 * * Created by Ivan Grokhotkov, 2015. * This example is in public domain. From bd261c05f1759e55f925943715fb19e1e57b4dc9 Mon Sep 17 00:00:00 2001 From: david gauchard Date: Tue, 12 Dec 2017 01:20:01 +0100 Subject: [PATCH 129/156] update and fix current generated boards.txt (#3940) less confusing lwip versions in menus fix #3850 fix #3707 fix #3640 fix #3098 fix #2740 fix #2683 fix #2550 --- boards.txt | 887 +++++++++++++++++++++++++++-------------------------- 1 file changed, 447 insertions(+), 440 deletions(-) diff --git a/boards.txt b/boards.txt index 633ac5442..416dd08ef 100644 --- a/boards.txt +++ b/boards.txt @@ -1,5 +1,5 @@ # -# this file is generated by tools/boards.txt.py and is likely to be overwritten +# this file is script-generated and is likely to be overwritten by ./tools/boards.txt.py # menu.BoardModel=Model @@ -14,12 +14,12 @@ menu.ESPModule=Module menu.Debug=Debug port menu.DebugLevel=Debug Level menu.LwIPVariant=lwIP Variant +menu.led=Builtin Led ############################################################## generic.name=Generic ESP8266 Module generic.build.board=ESP8266_GENERIC generic.upload.tool=esptool -generic.upload.speed=115200 generic.upload.maximum_data_size=81920 generic.upload.wait_for_upload_port=true generic.serial.disableDTR=true @@ -173,18 +173,18 @@ generic.menu.FlashSize.16M15M.build.flash_ld=eagle.flash.16m.ld generic.menu.FlashSize.16M15M.build.spiffs_pagesize=256 generic.menu.FlashSize.16M15M.upload.maximum_size=1044464 generic.menu.FlashSize.16M15M.build.spiffs_start=0x100000 -generic.menu.FlashSize.16M15M.build.spiffs_end=0x17FB000 +generic.menu.FlashSize.16M15M.build.spiffs_end=0xFFB000 generic.menu.FlashSize.16M15M.build.spiffs_blocksize=8192 -generic.menu.LwIPVariant.open=v2 +generic.menu.LwIPVariant.open=v2 Prebuilt (gcc) generic.menu.LwIPVariant.open.build.lwip_include=lwip2/include generic.menu.LwIPVariant.open.build.lwip_lib=-llwip2 -generic.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +generic.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt (gcc) generic.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc generic.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -generic.menu.LwIPVariant.Espressif=Espressif (xcc) +generic.menu.LwIPVariant.Espressif=v1.4 Espressif (xcc) generic.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip generic.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC -generic.menu.LwIPVariant.OpenSource=Open Source (gcc) +generic.menu.LwIPVariant.OpenSource=v1.4 Open Source (gcc) generic.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src generic.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC generic.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" @@ -236,30 +236,26 @@ generic.menu.DebugLevel.UPDATER=UPDATER generic.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER generic.menu.DebugLevel.OTA=OTA generic.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -generic.menu.DebugLevel.NULL=NULL -generic.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -generic.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -generic.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -generic.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -generic.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +generic.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +generic.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +generic.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +generic.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA generic.menu.UploadSpeed.115200=115200 generic.menu.UploadSpeed.115200.upload.speed=115200 generic.menu.UploadSpeed.9600=9600 generic.menu.UploadSpeed.9600.upload.speed=9600 generic.menu.UploadSpeed.57600=57600 generic.menu.UploadSpeed.57600.upload.speed=57600 -generic.menu.UploadSpeed.256000.windows=256000 -generic.menu.UploadSpeed.256000.windows.upload.speed=256000 generic.menu.UploadSpeed.230400.linux=230400 -generic.menu.UploadSpeed.230400.linux.upload.speed=230400 generic.menu.UploadSpeed.230400.macosx=230400 -generic.menu.UploadSpeed.230400.macosx.upload.speed=230400 +generic.menu.UploadSpeed.230400.upload.speed=230400 +generic.menu.UploadSpeed.256000.windows=256000 +generic.menu.UploadSpeed.256000.upload.speed=256000 generic.menu.UploadSpeed.460800.linux=460800 -generic.menu.UploadSpeed.460800.linux.upload.speed=460800 generic.menu.UploadSpeed.460800.macosx=460800 -generic.menu.UploadSpeed.460800.macosx.upload.speed=460800 +generic.menu.UploadSpeed.460800.upload.speed=460800 generic.menu.UploadSpeed.512000.windows=512000 -generic.menu.UploadSpeed.512000.windows.upload.speed=512000 +generic.menu.UploadSpeed.512000.upload.speed=512000 generic.menu.UploadSpeed.921600=921600 generic.menu.UploadSpeed.921600.upload.speed=921600 @@ -267,7 +263,6 @@ generic.menu.UploadSpeed.921600.upload.speed=921600 esp8285.name=Generic ESP8285 Module esp8285.build.board=ESP8266_ESP01 esp8285.upload.tool=esptool -esp8285.upload.speed=115200 esp8285.upload.maximum_data_size=81920 esp8285.upload.wait_for_upload_port=true esp8285.serial.disableDTR=true @@ -352,16 +347,16 @@ esp8285.menu.FlashSize.1M512.upload.maximum_size=499696 esp8285.menu.FlashSize.1M512.build.spiffs_start=0x7B000 esp8285.menu.FlashSize.1M512.build.spiffs_end=0xFB000 esp8285.menu.FlashSize.1M512.build.spiffs_blocksize=8192 -esp8285.menu.LwIPVariant.open=v2 +esp8285.menu.LwIPVariant.open=v2 Prebuilt (gcc) esp8285.menu.LwIPVariant.open.build.lwip_include=lwip2/include esp8285.menu.LwIPVariant.open.build.lwip_lib=-llwip2 -esp8285.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +esp8285.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt (gcc) esp8285.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc esp8285.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -esp8285.menu.LwIPVariant.Espressif=Espressif (xcc) +esp8285.menu.LwIPVariant.Espressif=v1.4 Espressif (xcc) esp8285.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip esp8285.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC -esp8285.menu.LwIPVariant.OpenSource=Open Source (gcc) +esp8285.menu.LwIPVariant.OpenSource=v1.4 Open Source (gcc) esp8285.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src esp8285.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC esp8285.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" @@ -413,30 +408,26 @@ esp8285.menu.DebugLevel.UPDATER=UPDATER esp8285.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER esp8285.menu.DebugLevel.OTA=OTA esp8285.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -esp8285.menu.DebugLevel.NULL=NULL -esp8285.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -esp8285.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -esp8285.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +esp8285.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +esp8285.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA esp8285.menu.UploadSpeed.115200=115200 esp8285.menu.UploadSpeed.115200.upload.speed=115200 esp8285.menu.UploadSpeed.9600=9600 esp8285.menu.UploadSpeed.9600.upload.speed=9600 esp8285.menu.UploadSpeed.57600=57600 esp8285.menu.UploadSpeed.57600.upload.speed=57600 -esp8285.menu.UploadSpeed.256000.windows=256000 -esp8285.menu.UploadSpeed.256000.windows.upload.speed=256000 esp8285.menu.UploadSpeed.230400.linux=230400 -esp8285.menu.UploadSpeed.230400.linux.upload.speed=230400 esp8285.menu.UploadSpeed.230400.macosx=230400 -esp8285.menu.UploadSpeed.230400.macosx.upload.speed=230400 +esp8285.menu.UploadSpeed.230400.upload.speed=230400 +esp8285.menu.UploadSpeed.256000.windows=256000 +esp8285.menu.UploadSpeed.256000.upload.speed=256000 esp8285.menu.UploadSpeed.460800.linux=460800 -esp8285.menu.UploadSpeed.460800.linux.upload.speed=460800 esp8285.menu.UploadSpeed.460800.macosx=460800 -esp8285.menu.UploadSpeed.460800.macosx.upload.speed=460800 +esp8285.menu.UploadSpeed.460800.upload.speed=460800 esp8285.menu.UploadSpeed.512000.windows=512000 -esp8285.menu.UploadSpeed.512000.windows.upload.speed=512000 +esp8285.menu.UploadSpeed.512000.upload.speed=512000 esp8285.menu.UploadSpeed.921600=921600 esp8285.menu.UploadSpeed.921600.upload.speed=921600 @@ -444,8 +435,16 @@ esp8285.menu.UploadSpeed.921600.upload.speed=921600 espduino.name=ESPDuino (ESP-13 Module) espduino.build.board=ESP8266_ESP13 espduino.build.variant=ESPDuino +espduino.menu.ResetMethod.v2=ESPduino-V2 +espduino.menu.ResetMethod.v2.upload.resetmethod=nodemcu +espduino.menu.ResetMethod.v1=ESPduino-V1 +espduino.menu.ResetMethod.v1.upload.resetmethod=ck +espduino.menu.UploadTool.esptool=Serial +espduino.menu.UploadTool.esptool.upload.tool=esptool +espduino.menu.UploadTool.esptool.upload.verbose=-vv +espduino.menu.UploadTool.espota=OTA +espduino.menu.UploadTool.espota.upload.tool=espota espduino.upload.tool=esptool -espduino.upload.speed=115200 espduino.upload.maximum_data_size=81920 espduino.upload.wait_for_upload_port=true espduino.serial.disableDTR=true @@ -459,7 +458,6 @@ espduino.menu.CpuFrequency.80=80 MHz espduino.menu.CpuFrequency.80.build.f_cpu=80000000L espduino.menu.CpuFrequency.160=160 MHz espduino.menu.CpuFrequency.160.build.f_cpu=160000000L -espduino.upload.resetmethod=ck espduino.build.flash_mode=dio espduino.build.flash_freq=40 espduino.menu.FlashSize.4M1M=4M (1M SPIFFS) @@ -478,16 +476,16 @@ espduino.menu.FlashSize.4M3M.upload.maximum_size=1044464 espduino.menu.FlashSize.4M3M.build.spiffs_start=0x100000 espduino.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 espduino.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -espduino.menu.LwIPVariant.open=v2 +espduino.menu.LwIPVariant.open=v2 Prebuilt (gcc) espduino.menu.LwIPVariant.open.build.lwip_include=lwip2/include espduino.menu.LwIPVariant.open.build.lwip_lib=-llwip2 -espduino.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +espduino.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt (gcc) espduino.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc espduino.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -espduino.menu.LwIPVariant.Espressif=Espressif (xcc) +espduino.menu.LwIPVariant.Espressif=v1.4 Espressif (xcc) espduino.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip espduino.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC -espduino.menu.LwIPVariant.OpenSource=Open Source (gcc) +espduino.menu.LwIPVariant.OpenSource=v1.4 Open Source (gcc) espduino.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src espduino.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC espduino.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" @@ -539,30 +537,26 @@ espduino.menu.DebugLevel.UPDATER=UPDATER espduino.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER espduino.menu.DebugLevel.OTA=OTA espduino.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -espduino.menu.DebugLevel.NULL=NULL -espduino.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -espduino.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -espduino.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -espduino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -espduino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +espduino.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +espduino.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +espduino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +espduino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA espduino.menu.UploadSpeed.115200=115200 espduino.menu.UploadSpeed.115200.upload.speed=115200 espduino.menu.UploadSpeed.9600=9600 espduino.menu.UploadSpeed.9600.upload.speed=9600 espduino.menu.UploadSpeed.57600=57600 espduino.menu.UploadSpeed.57600.upload.speed=57600 -espduino.menu.UploadSpeed.256000.windows=256000 -espduino.menu.UploadSpeed.256000.windows.upload.speed=256000 espduino.menu.UploadSpeed.230400.linux=230400 -espduino.menu.UploadSpeed.230400.linux.upload.speed=230400 espduino.menu.UploadSpeed.230400.macosx=230400 -espduino.menu.UploadSpeed.230400.macosx.upload.speed=230400 +espduino.menu.UploadSpeed.230400.upload.speed=230400 +espduino.menu.UploadSpeed.256000.windows=256000 +espduino.menu.UploadSpeed.256000.upload.speed=256000 espduino.menu.UploadSpeed.460800.linux=460800 -espduino.menu.UploadSpeed.460800.linux.upload.speed=460800 espduino.menu.UploadSpeed.460800.macosx=460800 -espduino.menu.UploadSpeed.460800.macosx.upload.speed=460800 +espduino.menu.UploadSpeed.460800.upload.speed=460800 espduino.menu.UploadSpeed.512000.windows=512000 -espduino.menu.UploadSpeed.512000.windows.upload.speed=512000 +espduino.menu.UploadSpeed.512000.upload.speed=512000 espduino.menu.UploadSpeed.921600=921600 espduino.menu.UploadSpeed.921600.upload.speed=921600 @@ -571,7 +565,6 @@ huzzah.name=Adafruit HUZZAH ESP8266 huzzah.build.board=ESP8266_ESP12 huzzah.build.variant=adafruit huzzah.upload.tool=esptool -huzzah.upload.speed=115200 huzzah.upload.maximum_data_size=81920 huzzah.upload.wait_for_upload_port=true huzzah.serial.disableDTR=true @@ -604,16 +597,16 @@ huzzah.menu.FlashSize.4M3M.upload.maximum_size=1044464 huzzah.menu.FlashSize.4M3M.build.spiffs_start=0x100000 huzzah.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 huzzah.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -huzzah.menu.LwIPVariant.open=v2 +huzzah.menu.LwIPVariant.open=v2 Prebuilt (gcc) huzzah.menu.LwIPVariant.open.build.lwip_include=lwip2/include huzzah.menu.LwIPVariant.open.build.lwip_lib=-llwip2 -huzzah.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +huzzah.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt (gcc) huzzah.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc huzzah.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -huzzah.menu.LwIPVariant.Espressif=Espressif (xcc) +huzzah.menu.LwIPVariant.Espressif=v1.4 Espressif (xcc) huzzah.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip huzzah.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC -huzzah.menu.LwIPVariant.OpenSource=Open Source (gcc) +huzzah.menu.LwIPVariant.OpenSource=v1.4 Open Source (gcc) huzzah.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src huzzah.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC huzzah.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" @@ -665,30 +658,26 @@ huzzah.menu.DebugLevel.UPDATER=UPDATER huzzah.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER huzzah.menu.DebugLevel.OTA=OTA huzzah.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -huzzah.menu.DebugLevel.NULL=NULL -huzzah.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -huzzah.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -huzzah.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +huzzah.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +huzzah.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA huzzah.menu.UploadSpeed.115200=115200 huzzah.menu.UploadSpeed.115200.upload.speed=115200 huzzah.menu.UploadSpeed.9600=9600 huzzah.menu.UploadSpeed.9600.upload.speed=9600 huzzah.menu.UploadSpeed.57600=57600 huzzah.menu.UploadSpeed.57600.upload.speed=57600 -huzzah.menu.UploadSpeed.256000.windows=256000 -huzzah.menu.UploadSpeed.256000.windows.upload.speed=256000 huzzah.menu.UploadSpeed.230400.linux=230400 -huzzah.menu.UploadSpeed.230400.linux.upload.speed=230400 huzzah.menu.UploadSpeed.230400.macosx=230400 -huzzah.menu.UploadSpeed.230400.macosx.upload.speed=230400 +huzzah.menu.UploadSpeed.230400.upload.speed=230400 +huzzah.menu.UploadSpeed.256000.windows=256000 +huzzah.menu.UploadSpeed.256000.upload.speed=256000 huzzah.menu.UploadSpeed.460800.linux=460800 -huzzah.menu.UploadSpeed.460800.linux.upload.speed=460800 huzzah.menu.UploadSpeed.460800.macosx=460800 -huzzah.menu.UploadSpeed.460800.macosx.upload.speed=460800 +huzzah.menu.UploadSpeed.460800.upload.speed=460800 huzzah.menu.UploadSpeed.512000.windows=512000 -huzzah.menu.UploadSpeed.512000.windows.upload.speed=512000 +huzzah.menu.UploadSpeed.512000.upload.speed=512000 huzzah.menu.UploadSpeed.921600=921600 huzzah.menu.UploadSpeed.921600.upload.speed=921600 @@ -697,7 +686,6 @@ espresso_lite_v1.name=ESPresso Lite 1.0 espresso_lite_v1.build.board=ESP8266_ESPRESSO_LITE_V1 espresso_lite_v1.build.variant=espresso_lite_v1 espresso_lite_v1.upload.tool=esptool -espresso_lite_v1.upload.speed=115200 espresso_lite_v1.upload.maximum_data_size=81920 espresso_lite_v1.upload.wait_for_upload_port=true espresso_lite_v1.serial.disableDTR=true @@ -733,16 +721,16 @@ espresso_lite_v1.menu.ResetMethod.ck=ck espresso_lite_v1.menu.ResetMethod.ck.upload.resetmethod=ck espresso_lite_v1.menu.ResetMethod.nodemcu=nodemcu espresso_lite_v1.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu -espresso_lite_v1.menu.LwIPVariant.open=v2 +espresso_lite_v1.menu.LwIPVariant.open=v2 Prebuilt (gcc) espresso_lite_v1.menu.LwIPVariant.open.build.lwip_include=lwip2/include espresso_lite_v1.menu.LwIPVariant.open.build.lwip_lib=-llwip2 -espresso_lite_v1.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +espresso_lite_v1.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt (gcc) espresso_lite_v1.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc espresso_lite_v1.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -espresso_lite_v1.menu.LwIPVariant.Espressif=Espressif (xcc) +espresso_lite_v1.menu.LwIPVariant.Espressif=v1.4 Espressif (xcc) espresso_lite_v1.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip espresso_lite_v1.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC -espresso_lite_v1.menu.LwIPVariant.OpenSource=Open Source (gcc) +espresso_lite_v1.menu.LwIPVariant.OpenSource=v1.4 Open Source (gcc) espresso_lite_v1.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src espresso_lite_v1.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC espresso_lite_v1.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" @@ -794,30 +782,26 @@ espresso_lite_v1.menu.DebugLevel.UPDATER=UPDATER espresso_lite_v1.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER espresso_lite_v1.menu.DebugLevel.OTA=OTA espresso_lite_v1.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -espresso_lite_v1.menu.DebugLevel.NULL=NULL -espresso_lite_v1.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -espresso_lite_v1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -espresso_lite_v1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +espresso_lite_v1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +espresso_lite_v1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA espresso_lite_v1.menu.UploadSpeed.115200=115200 espresso_lite_v1.menu.UploadSpeed.115200.upload.speed=115200 espresso_lite_v1.menu.UploadSpeed.9600=9600 espresso_lite_v1.menu.UploadSpeed.9600.upload.speed=9600 espresso_lite_v1.menu.UploadSpeed.57600=57600 espresso_lite_v1.menu.UploadSpeed.57600.upload.speed=57600 -espresso_lite_v1.menu.UploadSpeed.256000.windows=256000 -espresso_lite_v1.menu.UploadSpeed.256000.windows.upload.speed=256000 espresso_lite_v1.menu.UploadSpeed.230400.linux=230400 -espresso_lite_v1.menu.UploadSpeed.230400.linux.upload.speed=230400 espresso_lite_v1.menu.UploadSpeed.230400.macosx=230400 -espresso_lite_v1.menu.UploadSpeed.230400.macosx.upload.speed=230400 +espresso_lite_v1.menu.UploadSpeed.230400.upload.speed=230400 +espresso_lite_v1.menu.UploadSpeed.256000.windows=256000 +espresso_lite_v1.menu.UploadSpeed.256000.upload.speed=256000 espresso_lite_v1.menu.UploadSpeed.460800.linux=460800 -espresso_lite_v1.menu.UploadSpeed.460800.linux.upload.speed=460800 espresso_lite_v1.menu.UploadSpeed.460800.macosx=460800 -espresso_lite_v1.menu.UploadSpeed.460800.macosx.upload.speed=460800 +espresso_lite_v1.menu.UploadSpeed.460800.upload.speed=460800 espresso_lite_v1.menu.UploadSpeed.512000.windows=512000 -espresso_lite_v1.menu.UploadSpeed.512000.windows.upload.speed=512000 +espresso_lite_v1.menu.UploadSpeed.512000.upload.speed=512000 espresso_lite_v1.menu.UploadSpeed.921600=921600 espresso_lite_v1.menu.UploadSpeed.921600.upload.speed=921600 @@ -826,7 +810,6 @@ espresso_lite_v2.name=ESPresso Lite 2.0 espresso_lite_v2.build.board=ESP8266_ESPRESSO_LITE_V2 espresso_lite_v2.build.variant=espresso_lite_v2 espresso_lite_v2.upload.tool=esptool -espresso_lite_v2.upload.speed=115200 espresso_lite_v2.upload.maximum_data_size=81920 espresso_lite_v2.upload.wait_for_upload_port=true espresso_lite_v2.serial.disableDTR=true @@ -862,16 +845,16 @@ espresso_lite_v2.menu.ResetMethod.ck=ck espresso_lite_v2.menu.ResetMethod.ck.upload.resetmethod=ck espresso_lite_v2.menu.ResetMethod.nodemcu=nodemcu espresso_lite_v2.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu -espresso_lite_v2.menu.LwIPVariant.open=v2 +espresso_lite_v2.menu.LwIPVariant.open=v2 Prebuilt (gcc) espresso_lite_v2.menu.LwIPVariant.open.build.lwip_include=lwip2/include espresso_lite_v2.menu.LwIPVariant.open.build.lwip_lib=-llwip2 -espresso_lite_v2.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +espresso_lite_v2.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt (gcc) espresso_lite_v2.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc espresso_lite_v2.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -espresso_lite_v2.menu.LwIPVariant.Espressif=Espressif (xcc) +espresso_lite_v2.menu.LwIPVariant.Espressif=v1.4 Espressif (xcc) espresso_lite_v2.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip espresso_lite_v2.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC -espresso_lite_v2.menu.LwIPVariant.OpenSource=Open Source (gcc) +espresso_lite_v2.menu.LwIPVariant.OpenSource=v1.4 Open Source (gcc) espresso_lite_v2.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src espresso_lite_v2.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC espresso_lite_v2.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" @@ -923,30 +906,26 @@ espresso_lite_v2.menu.DebugLevel.UPDATER=UPDATER espresso_lite_v2.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER espresso_lite_v2.menu.DebugLevel.OTA=OTA espresso_lite_v2.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -espresso_lite_v2.menu.DebugLevel.NULL=NULL -espresso_lite_v2.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -espresso_lite_v2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -espresso_lite_v2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +espresso_lite_v2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +espresso_lite_v2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA espresso_lite_v2.menu.UploadSpeed.115200=115200 espresso_lite_v2.menu.UploadSpeed.115200.upload.speed=115200 espresso_lite_v2.menu.UploadSpeed.9600=9600 espresso_lite_v2.menu.UploadSpeed.9600.upload.speed=9600 espresso_lite_v2.menu.UploadSpeed.57600=57600 espresso_lite_v2.menu.UploadSpeed.57600.upload.speed=57600 -espresso_lite_v2.menu.UploadSpeed.256000.windows=256000 -espresso_lite_v2.menu.UploadSpeed.256000.windows.upload.speed=256000 espresso_lite_v2.menu.UploadSpeed.230400.linux=230400 -espresso_lite_v2.menu.UploadSpeed.230400.linux.upload.speed=230400 espresso_lite_v2.menu.UploadSpeed.230400.macosx=230400 -espresso_lite_v2.menu.UploadSpeed.230400.macosx.upload.speed=230400 +espresso_lite_v2.menu.UploadSpeed.230400.upload.speed=230400 +espresso_lite_v2.menu.UploadSpeed.256000.windows=256000 +espresso_lite_v2.menu.UploadSpeed.256000.upload.speed=256000 espresso_lite_v2.menu.UploadSpeed.460800.linux=460800 -espresso_lite_v2.menu.UploadSpeed.460800.linux.upload.speed=460800 espresso_lite_v2.menu.UploadSpeed.460800.macosx=460800 -espresso_lite_v2.menu.UploadSpeed.460800.macosx.upload.speed=460800 +espresso_lite_v2.menu.UploadSpeed.460800.upload.speed=460800 espresso_lite_v2.menu.UploadSpeed.512000.windows=512000 -espresso_lite_v2.menu.UploadSpeed.512000.windows.upload.speed=512000 +espresso_lite_v2.menu.UploadSpeed.512000.upload.speed=512000 espresso_lite_v2.menu.UploadSpeed.921600=921600 espresso_lite_v2.menu.UploadSpeed.921600.upload.speed=921600 @@ -955,7 +934,6 @@ phoenix_v1.name=Phoenix 1.0 phoenix_v1.build.board=ESP8266_PHOENIX_V1 phoenix_v1.build.variant=phoenix_v1 phoenix_v1.upload.tool=esptool -phoenix_v1.upload.speed=115200 phoenix_v1.upload.maximum_data_size=81920 phoenix_v1.upload.wait_for_upload_port=true phoenix_v1.serial.disableDTR=true @@ -991,16 +969,16 @@ phoenix_v1.menu.ResetMethod.ck=ck phoenix_v1.menu.ResetMethod.ck.upload.resetmethod=ck phoenix_v1.menu.ResetMethod.nodemcu=nodemcu phoenix_v1.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu -phoenix_v1.menu.LwIPVariant.open=v2 +phoenix_v1.menu.LwIPVariant.open=v2 Prebuilt (gcc) phoenix_v1.menu.LwIPVariant.open.build.lwip_include=lwip2/include phoenix_v1.menu.LwIPVariant.open.build.lwip_lib=-llwip2 -phoenix_v1.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +phoenix_v1.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt (gcc) phoenix_v1.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc phoenix_v1.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -phoenix_v1.menu.LwIPVariant.Espressif=Espressif (xcc) +phoenix_v1.menu.LwIPVariant.Espressif=v1.4 Espressif (xcc) phoenix_v1.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip phoenix_v1.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC -phoenix_v1.menu.LwIPVariant.OpenSource=Open Source (gcc) +phoenix_v1.menu.LwIPVariant.OpenSource=v1.4 Open Source (gcc) phoenix_v1.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src phoenix_v1.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC phoenix_v1.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" @@ -1052,30 +1030,26 @@ phoenix_v1.menu.DebugLevel.UPDATER=UPDATER phoenix_v1.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER phoenix_v1.menu.DebugLevel.OTA=OTA phoenix_v1.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -phoenix_v1.menu.DebugLevel.NULL=NULL -phoenix_v1.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -phoenix_v1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -phoenix_v1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +phoenix_v1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +phoenix_v1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA phoenix_v1.menu.UploadSpeed.115200=115200 phoenix_v1.menu.UploadSpeed.115200.upload.speed=115200 phoenix_v1.menu.UploadSpeed.9600=9600 phoenix_v1.menu.UploadSpeed.9600.upload.speed=9600 phoenix_v1.menu.UploadSpeed.57600=57600 phoenix_v1.menu.UploadSpeed.57600.upload.speed=57600 -phoenix_v1.menu.UploadSpeed.256000.windows=256000 -phoenix_v1.menu.UploadSpeed.256000.windows.upload.speed=256000 phoenix_v1.menu.UploadSpeed.230400.linux=230400 -phoenix_v1.menu.UploadSpeed.230400.linux.upload.speed=230400 phoenix_v1.menu.UploadSpeed.230400.macosx=230400 -phoenix_v1.menu.UploadSpeed.230400.macosx.upload.speed=230400 +phoenix_v1.menu.UploadSpeed.230400.upload.speed=230400 +phoenix_v1.menu.UploadSpeed.256000.windows=256000 +phoenix_v1.menu.UploadSpeed.256000.upload.speed=256000 phoenix_v1.menu.UploadSpeed.460800.linux=460800 -phoenix_v1.menu.UploadSpeed.460800.linux.upload.speed=460800 phoenix_v1.menu.UploadSpeed.460800.macosx=460800 -phoenix_v1.menu.UploadSpeed.460800.macosx.upload.speed=460800 +phoenix_v1.menu.UploadSpeed.460800.upload.speed=460800 phoenix_v1.menu.UploadSpeed.512000.windows=512000 -phoenix_v1.menu.UploadSpeed.512000.windows.upload.speed=512000 +phoenix_v1.menu.UploadSpeed.512000.upload.speed=512000 phoenix_v1.menu.UploadSpeed.921600=921600 phoenix_v1.menu.UploadSpeed.921600.upload.speed=921600 @@ -1084,7 +1058,6 @@ phoenix_v2.name=Phoenix 2.0 phoenix_v2.build.board=ESP8266_PHOENIX_V2 phoenix_v2.build.variant=phoenix_v2 phoenix_v2.upload.tool=esptool -phoenix_v2.upload.speed=115200 phoenix_v2.upload.maximum_data_size=81920 phoenix_v2.upload.wait_for_upload_port=true phoenix_v2.serial.disableDTR=true @@ -1120,16 +1093,16 @@ phoenix_v2.menu.ResetMethod.ck=ck phoenix_v2.menu.ResetMethod.ck.upload.resetmethod=ck phoenix_v2.menu.ResetMethod.nodemcu=nodemcu phoenix_v2.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu -phoenix_v2.menu.LwIPVariant.open=v2 +phoenix_v2.menu.LwIPVariant.open=v2 Prebuilt (gcc) phoenix_v2.menu.LwIPVariant.open.build.lwip_include=lwip2/include phoenix_v2.menu.LwIPVariant.open.build.lwip_lib=-llwip2 -phoenix_v2.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +phoenix_v2.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt (gcc) phoenix_v2.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc phoenix_v2.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -phoenix_v2.menu.LwIPVariant.Espressif=Espressif (xcc) +phoenix_v2.menu.LwIPVariant.Espressif=v1.4 Espressif (xcc) phoenix_v2.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip phoenix_v2.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC -phoenix_v2.menu.LwIPVariant.OpenSource=Open Source (gcc) +phoenix_v2.menu.LwIPVariant.OpenSource=v1.4 Open Source (gcc) phoenix_v2.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src phoenix_v2.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC phoenix_v2.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" @@ -1181,30 +1154,26 @@ phoenix_v2.menu.DebugLevel.UPDATER=UPDATER phoenix_v2.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER phoenix_v2.menu.DebugLevel.OTA=OTA phoenix_v2.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -phoenix_v2.menu.DebugLevel.NULL=NULL -phoenix_v2.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -phoenix_v2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -phoenix_v2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +phoenix_v2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +phoenix_v2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA phoenix_v2.menu.UploadSpeed.115200=115200 phoenix_v2.menu.UploadSpeed.115200.upload.speed=115200 phoenix_v2.menu.UploadSpeed.9600=9600 phoenix_v2.menu.UploadSpeed.9600.upload.speed=9600 phoenix_v2.menu.UploadSpeed.57600=57600 phoenix_v2.menu.UploadSpeed.57600.upload.speed=57600 -phoenix_v2.menu.UploadSpeed.256000.windows=256000 -phoenix_v2.menu.UploadSpeed.256000.windows.upload.speed=256000 phoenix_v2.menu.UploadSpeed.230400.linux=230400 -phoenix_v2.menu.UploadSpeed.230400.linux.upload.speed=230400 phoenix_v2.menu.UploadSpeed.230400.macosx=230400 -phoenix_v2.menu.UploadSpeed.230400.macosx.upload.speed=230400 +phoenix_v2.menu.UploadSpeed.230400.upload.speed=230400 +phoenix_v2.menu.UploadSpeed.256000.windows=256000 +phoenix_v2.menu.UploadSpeed.256000.upload.speed=256000 phoenix_v2.menu.UploadSpeed.460800.linux=460800 -phoenix_v2.menu.UploadSpeed.460800.linux.upload.speed=460800 phoenix_v2.menu.UploadSpeed.460800.macosx=460800 -phoenix_v2.menu.UploadSpeed.460800.macosx.upload.speed=460800 +phoenix_v2.menu.UploadSpeed.460800.upload.speed=460800 phoenix_v2.menu.UploadSpeed.512000.windows=512000 -phoenix_v2.menu.UploadSpeed.512000.windows.upload.speed=512000 +phoenix_v2.menu.UploadSpeed.512000.upload.speed=512000 phoenix_v2.menu.UploadSpeed.921600=921600 phoenix_v2.menu.UploadSpeed.921600.upload.speed=921600 @@ -1213,7 +1182,6 @@ nodemcu.name=NodeMCU 0.9 (ESP-12 Module) nodemcu.build.board=ESP8266_NODEMCU nodemcu.build.variant=nodemcu nodemcu.upload.tool=esptool -nodemcu.upload.speed=115200 nodemcu.upload.maximum_data_size=81920 nodemcu.upload.wait_for_upload_port=true nodemcu.serial.disableDTR=true @@ -1246,16 +1214,16 @@ nodemcu.menu.FlashSize.4M3M.upload.maximum_size=1044464 nodemcu.menu.FlashSize.4M3M.build.spiffs_start=0x100000 nodemcu.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 nodemcu.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -nodemcu.menu.LwIPVariant.open=v2 +nodemcu.menu.LwIPVariant.open=v2 Prebuilt (gcc) nodemcu.menu.LwIPVariant.open.build.lwip_include=lwip2/include nodemcu.menu.LwIPVariant.open.build.lwip_lib=-llwip2 -nodemcu.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +nodemcu.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt (gcc) nodemcu.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc nodemcu.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -nodemcu.menu.LwIPVariant.Espressif=Espressif (xcc) +nodemcu.menu.LwIPVariant.Espressif=v1.4 Espressif (xcc) nodemcu.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip nodemcu.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC -nodemcu.menu.LwIPVariant.OpenSource=Open Source (gcc) +nodemcu.menu.LwIPVariant.OpenSource=v1.4 Open Source (gcc) nodemcu.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src nodemcu.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC nodemcu.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" @@ -1307,30 +1275,26 @@ nodemcu.menu.DebugLevel.UPDATER=UPDATER nodemcu.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER nodemcu.menu.DebugLevel.OTA=OTA nodemcu.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -nodemcu.menu.DebugLevel.NULL=NULL -nodemcu.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -nodemcu.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -nodemcu.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +nodemcu.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +nodemcu.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA nodemcu.menu.UploadSpeed.115200=115200 nodemcu.menu.UploadSpeed.115200.upload.speed=115200 nodemcu.menu.UploadSpeed.9600=9600 nodemcu.menu.UploadSpeed.9600.upload.speed=9600 nodemcu.menu.UploadSpeed.57600=57600 nodemcu.menu.UploadSpeed.57600.upload.speed=57600 -nodemcu.menu.UploadSpeed.256000.windows=256000 -nodemcu.menu.UploadSpeed.256000.windows.upload.speed=256000 nodemcu.menu.UploadSpeed.230400.linux=230400 -nodemcu.menu.UploadSpeed.230400.linux.upload.speed=230400 nodemcu.menu.UploadSpeed.230400.macosx=230400 -nodemcu.menu.UploadSpeed.230400.macosx.upload.speed=230400 +nodemcu.menu.UploadSpeed.230400.upload.speed=230400 +nodemcu.menu.UploadSpeed.256000.windows=256000 +nodemcu.menu.UploadSpeed.256000.upload.speed=256000 nodemcu.menu.UploadSpeed.460800.linux=460800 -nodemcu.menu.UploadSpeed.460800.linux.upload.speed=460800 nodemcu.menu.UploadSpeed.460800.macosx=460800 -nodemcu.menu.UploadSpeed.460800.macosx.upload.speed=460800 +nodemcu.menu.UploadSpeed.460800.upload.speed=460800 nodemcu.menu.UploadSpeed.512000.windows=512000 -nodemcu.menu.UploadSpeed.512000.windows.upload.speed=512000 +nodemcu.menu.UploadSpeed.512000.upload.speed=512000 nodemcu.menu.UploadSpeed.921600=921600 nodemcu.menu.UploadSpeed.921600.upload.speed=921600 @@ -1339,7 +1303,6 @@ nodemcuv2.name=NodeMCU 1.0 (ESP-12E Module) nodemcuv2.build.board=ESP8266_NODEMCU nodemcuv2.build.variant=nodemcu nodemcuv2.upload.tool=esptool -nodemcuv2.upload.speed=115200 nodemcuv2.upload.maximum_data_size=81920 nodemcuv2.upload.wait_for_upload_port=true nodemcuv2.serial.disableDTR=true @@ -1372,16 +1335,16 @@ nodemcuv2.menu.FlashSize.4M3M.upload.maximum_size=1044464 nodemcuv2.menu.FlashSize.4M3M.build.spiffs_start=0x100000 nodemcuv2.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 nodemcuv2.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -nodemcuv2.menu.LwIPVariant.open=v2 +nodemcuv2.menu.LwIPVariant.open=v2 Prebuilt (gcc) nodemcuv2.menu.LwIPVariant.open.build.lwip_include=lwip2/include nodemcuv2.menu.LwIPVariant.open.build.lwip_lib=-llwip2 -nodemcuv2.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +nodemcuv2.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt (gcc) nodemcuv2.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc nodemcuv2.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -nodemcuv2.menu.LwIPVariant.Espressif=Espressif (xcc) +nodemcuv2.menu.LwIPVariant.Espressif=v1.4 Espressif (xcc) nodemcuv2.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip nodemcuv2.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC -nodemcuv2.menu.LwIPVariant.OpenSource=Open Source (gcc) +nodemcuv2.menu.LwIPVariant.OpenSource=v1.4 Open Source (gcc) nodemcuv2.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src nodemcuv2.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC nodemcuv2.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" @@ -1433,30 +1396,26 @@ nodemcuv2.menu.DebugLevel.UPDATER=UPDATER nodemcuv2.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER nodemcuv2.menu.DebugLevel.OTA=OTA nodemcuv2.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -nodemcuv2.menu.DebugLevel.NULL=NULL -nodemcuv2.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -nodemcuv2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -nodemcuv2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +nodemcuv2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +nodemcuv2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA nodemcuv2.menu.UploadSpeed.115200=115200 nodemcuv2.menu.UploadSpeed.115200.upload.speed=115200 nodemcuv2.menu.UploadSpeed.9600=9600 nodemcuv2.menu.UploadSpeed.9600.upload.speed=9600 nodemcuv2.menu.UploadSpeed.57600=57600 nodemcuv2.menu.UploadSpeed.57600.upload.speed=57600 -nodemcuv2.menu.UploadSpeed.256000.windows=256000 -nodemcuv2.menu.UploadSpeed.256000.windows.upload.speed=256000 nodemcuv2.menu.UploadSpeed.230400.linux=230400 -nodemcuv2.menu.UploadSpeed.230400.linux.upload.speed=230400 nodemcuv2.menu.UploadSpeed.230400.macosx=230400 -nodemcuv2.menu.UploadSpeed.230400.macosx.upload.speed=230400 +nodemcuv2.menu.UploadSpeed.230400.upload.speed=230400 +nodemcuv2.menu.UploadSpeed.256000.windows=256000 +nodemcuv2.menu.UploadSpeed.256000.upload.speed=256000 nodemcuv2.menu.UploadSpeed.460800.linux=460800 -nodemcuv2.menu.UploadSpeed.460800.linux.upload.speed=460800 nodemcuv2.menu.UploadSpeed.460800.macosx=460800 -nodemcuv2.menu.UploadSpeed.460800.macosx.upload.speed=460800 +nodemcuv2.menu.UploadSpeed.460800.upload.speed=460800 nodemcuv2.menu.UploadSpeed.512000.windows=512000 -nodemcuv2.menu.UploadSpeed.512000.windows.upload.speed=512000 +nodemcuv2.menu.UploadSpeed.512000.upload.speed=512000 nodemcuv2.menu.UploadSpeed.921600=921600 nodemcuv2.menu.UploadSpeed.921600.upload.speed=921600 @@ -1464,7 +1423,6 @@ nodemcuv2.menu.UploadSpeed.921600.upload.speed=921600 modwifi.name=Olimex MOD-WIFI-ESP8266(-DEV) modwifi.build.board=MOD_WIFI_ESP8266 modwifi.upload.tool=esptool -modwifi.upload.speed=115200 modwifi.upload.maximum_data_size=81920 modwifi.upload.wait_for_upload_port=true modwifi.serial.disableDTR=true @@ -1490,16 +1448,16 @@ modwifi.menu.FlashSize.2M.upload.maximum_size=1044464 modwifi.menu.FlashSize.2M.build.spiffs_start=0x100000 modwifi.menu.FlashSize.2M.build.spiffs_end=0x1FB000 modwifi.menu.FlashSize.2M.build.spiffs_blocksize=8192 -modwifi.menu.LwIPVariant.open=v2 +modwifi.menu.LwIPVariant.open=v2 Prebuilt (gcc) modwifi.menu.LwIPVariant.open.build.lwip_include=lwip2/include modwifi.menu.LwIPVariant.open.build.lwip_lib=-llwip2 -modwifi.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +modwifi.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt (gcc) modwifi.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc modwifi.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -modwifi.menu.LwIPVariant.Espressif=Espressif (xcc) +modwifi.menu.LwIPVariant.Espressif=v1.4 Espressif (xcc) modwifi.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip modwifi.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC -modwifi.menu.LwIPVariant.OpenSource=Open Source (gcc) +modwifi.menu.LwIPVariant.OpenSource=v1.4 Open Source (gcc) modwifi.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src modwifi.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC modwifi.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" @@ -1551,30 +1509,26 @@ modwifi.menu.DebugLevel.UPDATER=UPDATER modwifi.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER modwifi.menu.DebugLevel.OTA=OTA modwifi.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -modwifi.menu.DebugLevel.NULL=NULL -modwifi.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -modwifi.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -modwifi.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +modwifi.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +modwifi.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA modwifi.menu.UploadSpeed.115200=115200 modwifi.menu.UploadSpeed.115200.upload.speed=115200 modwifi.menu.UploadSpeed.9600=9600 modwifi.menu.UploadSpeed.9600.upload.speed=9600 modwifi.menu.UploadSpeed.57600=57600 modwifi.menu.UploadSpeed.57600.upload.speed=57600 -modwifi.menu.UploadSpeed.256000.windows=256000 -modwifi.menu.UploadSpeed.256000.windows.upload.speed=256000 modwifi.menu.UploadSpeed.230400.linux=230400 -modwifi.menu.UploadSpeed.230400.linux.upload.speed=230400 modwifi.menu.UploadSpeed.230400.macosx=230400 -modwifi.menu.UploadSpeed.230400.macosx.upload.speed=230400 +modwifi.menu.UploadSpeed.230400.upload.speed=230400 +modwifi.menu.UploadSpeed.256000.windows=256000 +modwifi.menu.UploadSpeed.256000.upload.speed=256000 modwifi.menu.UploadSpeed.460800.linux=460800 -modwifi.menu.UploadSpeed.460800.linux.upload.speed=460800 modwifi.menu.UploadSpeed.460800.macosx=460800 -modwifi.menu.UploadSpeed.460800.macosx.upload.speed=460800 +modwifi.menu.UploadSpeed.460800.upload.speed=460800 modwifi.menu.UploadSpeed.512000.windows=512000 -modwifi.menu.UploadSpeed.512000.windows.upload.speed=512000 +modwifi.menu.UploadSpeed.512000.upload.speed=512000 modwifi.menu.UploadSpeed.921600=921600 modwifi.menu.UploadSpeed.921600.upload.speed=921600 @@ -1583,7 +1537,6 @@ thing.name=SparkFun ESP8266 Thing thing.build.board=ESP8266_THING thing.build.variant=thing thing.upload.tool=esptool -thing.upload.speed=115200 thing.upload.maximum_data_size=81920 thing.upload.wait_for_upload_port=true thing.serial.disableDTR=true @@ -1621,16 +1574,16 @@ thing.menu.FlashSize.512K128.upload.maximum_size=368624 thing.menu.FlashSize.512K128.build.spiffs_start=0x5B000 thing.menu.FlashSize.512K128.build.spiffs_end=0x7B000 thing.menu.FlashSize.512K128.build.spiffs_blocksize=4096 -thing.menu.LwIPVariant.open=v2 +thing.menu.LwIPVariant.open=v2 Prebuilt (gcc) thing.menu.LwIPVariant.open.build.lwip_include=lwip2/include thing.menu.LwIPVariant.open.build.lwip_lib=-llwip2 -thing.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +thing.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt (gcc) thing.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc thing.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -thing.menu.LwIPVariant.Espressif=Espressif (xcc) +thing.menu.LwIPVariant.Espressif=v1.4 Espressif (xcc) thing.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip thing.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC -thing.menu.LwIPVariant.OpenSource=Open Source (gcc) +thing.menu.LwIPVariant.OpenSource=v1.4 Open Source (gcc) thing.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src thing.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC thing.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" @@ -1682,30 +1635,26 @@ thing.menu.DebugLevel.UPDATER=UPDATER thing.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER thing.menu.DebugLevel.OTA=OTA thing.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -thing.menu.DebugLevel.NULL=NULL -thing.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -thing.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -thing.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -thing.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -thing.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +thing.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +thing.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +thing.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +thing.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA thing.menu.UploadSpeed.115200=115200 thing.menu.UploadSpeed.115200.upload.speed=115200 thing.menu.UploadSpeed.9600=9600 thing.menu.UploadSpeed.9600.upload.speed=9600 thing.menu.UploadSpeed.57600=57600 thing.menu.UploadSpeed.57600.upload.speed=57600 -thing.menu.UploadSpeed.256000.windows=256000 -thing.menu.UploadSpeed.256000.windows.upload.speed=256000 thing.menu.UploadSpeed.230400.linux=230400 -thing.menu.UploadSpeed.230400.linux.upload.speed=230400 thing.menu.UploadSpeed.230400.macosx=230400 -thing.menu.UploadSpeed.230400.macosx.upload.speed=230400 +thing.menu.UploadSpeed.230400.upload.speed=230400 +thing.menu.UploadSpeed.256000.windows=256000 +thing.menu.UploadSpeed.256000.upload.speed=256000 thing.menu.UploadSpeed.460800.linux=460800 -thing.menu.UploadSpeed.460800.linux.upload.speed=460800 thing.menu.UploadSpeed.460800.macosx=460800 -thing.menu.UploadSpeed.460800.macosx.upload.speed=460800 +thing.menu.UploadSpeed.460800.upload.speed=460800 thing.menu.UploadSpeed.512000.windows=512000 -thing.menu.UploadSpeed.512000.windows.upload.speed=512000 +thing.menu.UploadSpeed.512000.upload.speed=512000 thing.menu.UploadSpeed.921600=921600 thing.menu.UploadSpeed.921600.upload.speed=921600 @@ -1714,7 +1663,6 @@ thingdev.name=SparkFun ESP8266 Thing Dev thingdev.build.board=ESP8266_THING_DEV thingdev.build.variant=thing thingdev.upload.tool=esptool -thingdev.upload.speed=115200 thingdev.upload.maximum_data_size=81920 thingdev.upload.wait_for_upload_port=true thingdev.serial.disableDTR=true @@ -1752,16 +1700,16 @@ thingdev.menu.FlashSize.512K128.upload.maximum_size=368624 thingdev.menu.FlashSize.512K128.build.spiffs_start=0x5B000 thingdev.menu.FlashSize.512K128.build.spiffs_end=0x7B000 thingdev.menu.FlashSize.512K128.build.spiffs_blocksize=4096 -thingdev.menu.LwIPVariant.open=v2 +thingdev.menu.LwIPVariant.open=v2 Prebuilt (gcc) thingdev.menu.LwIPVariant.open.build.lwip_include=lwip2/include thingdev.menu.LwIPVariant.open.build.lwip_lib=-llwip2 -thingdev.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +thingdev.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt (gcc) thingdev.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc thingdev.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -thingdev.menu.LwIPVariant.Espressif=Espressif (xcc) +thingdev.menu.LwIPVariant.Espressif=v1.4 Espressif (xcc) thingdev.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip thingdev.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC -thingdev.menu.LwIPVariant.OpenSource=Open Source (gcc) +thingdev.menu.LwIPVariant.OpenSource=v1.4 Open Source (gcc) thingdev.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src thingdev.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC thingdev.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" @@ -1813,30 +1761,26 @@ thingdev.menu.DebugLevel.UPDATER=UPDATER thingdev.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER thingdev.menu.DebugLevel.OTA=OTA thingdev.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -thingdev.menu.DebugLevel.NULL=NULL -thingdev.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -thingdev.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -thingdev.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +thingdev.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +thingdev.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA thingdev.menu.UploadSpeed.115200=115200 thingdev.menu.UploadSpeed.115200.upload.speed=115200 thingdev.menu.UploadSpeed.9600=9600 thingdev.menu.UploadSpeed.9600.upload.speed=9600 thingdev.menu.UploadSpeed.57600=57600 thingdev.menu.UploadSpeed.57600.upload.speed=57600 -thingdev.menu.UploadSpeed.256000.windows=256000 -thingdev.menu.UploadSpeed.256000.windows.upload.speed=256000 thingdev.menu.UploadSpeed.230400.linux=230400 -thingdev.menu.UploadSpeed.230400.linux.upload.speed=230400 thingdev.menu.UploadSpeed.230400.macosx=230400 -thingdev.menu.UploadSpeed.230400.macosx.upload.speed=230400 +thingdev.menu.UploadSpeed.230400.upload.speed=230400 +thingdev.menu.UploadSpeed.256000.windows=256000 +thingdev.menu.UploadSpeed.256000.upload.speed=256000 thingdev.menu.UploadSpeed.460800.linux=460800 -thingdev.menu.UploadSpeed.460800.linux.upload.speed=460800 thingdev.menu.UploadSpeed.460800.macosx=460800 -thingdev.menu.UploadSpeed.460800.macosx.upload.speed=460800 +thingdev.menu.UploadSpeed.460800.upload.speed=460800 thingdev.menu.UploadSpeed.512000.windows=512000 -thingdev.menu.UploadSpeed.512000.windows.upload.speed=512000 +thingdev.menu.UploadSpeed.512000.upload.speed=512000 thingdev.menu.UploadSpeed.921600=921600 thingdev.menu.UploadSpeed.921600.upload.speed=921600 @@ -1844,7 +1788,6 @@ thingdev.menu.UploadSpeed.921600.upload.speed=921600 esp210.name=SweetPea ESP-210 esp210.build.board=ESP8266_ESP210 esp210.upload.tool=esptool -esp210.upload.speed=115200 esp210.upload.maximum_data_size=81920 esp210.upload.wait_for_upload_port=true esp210.serial.disableDTR=true @@ -1878,16 +1821,16 @@ esp210.menu.FlashSize.4M3M.upload.maximum_size=1044464 esp210.menu.FlashSize.4M3M.build.spiffs_start=0x100000 esp210.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 esp210.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -esp210.menu.LwIPVariant.open=v2 +esp210.menu.LwIPVariant.open=v2 Prebuilt (gcc) esp210.menu.LwIPVariant.open.build.lwip_include=lwip2/include esp210.menu.LwIPVariant.open.build.lwip_lib=-llwip2 -esp210.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +esp210.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt (gcc) esp210.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc esp210.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -esp210.menu.LwIPVariant.Espressif=Espressif (xcc) +esp210.menu.LwIPVariant.Espressif=v1.4 Espressif (xcc) esp210.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip esp210.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC -esp210.menu.LwIPVariant.OpenSource=Open Source (gcc) +esp210.menu.LwIPVariant.OpenSource=v1.4 Open Source (gcc) esp210.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src esp210.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC esp210.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" @@ -1939,39 +1882,34 @@ esp210.menu.DebugLevel.UPDATER=UPDATER esp210.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER esp210.menu.DebugLevel.OTA=OTA esp210.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -esp210.menu.DebugLevel.NULL=NULL -esp210.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -esp210.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -esp210.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -esp210.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -esp210.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -esp210.menu.UploadSpeed.115200=115200 -esp210.menu.UploadSpeed.115200.upload.speed=115200 -esp210.menu.UploadSpeed.9600=9600 -esp210.menu.UploadSpeed.9600.upload.speed=9600 +esp210.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +esp210.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +esp210.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +esp210.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA esp210.menu.UploadSpeed.57600=57600 esp210.menu.UploadSpeed.57600.upload.speed=57600 -esp210.menu.UploadSpeed.256000.windows=256000 -esp210.menu.UploadSpeed.256000.windows.upload.speed=256000 +esp210.menu.UploadSpeed.9600=9600 +esp210.menu.UploadSpeed.9600.upload.speed=9600 +esp210.menu.UploadSpeed.115200=115200 +esp210.menu.UploadSpeed.115200.upload.speed=115200 esp210.menu.UploadSpeed.230400.linux=230400 -esp210.menu.UploadSpeed.230400.linux.upload.speed=230400 esp210.menu.UploadSpeed.230400.macosx=230400 -esp210.menu.UploadSpeed.230400.macosx.upload.speed=230400 +esp210.menu.UploadSpeed.230400.upload.speed=230400 +esp210.menu.UploadSpeed.256000.windows=256000 +esp210.menu.UploadSpeed.256000.upload.speed=256000 esp210.menu.UploadSpeed.460800.linux=460800 -esp210.menu.UploadSpeed.460800.linux.upload.speed=460800 esp210.menu.UploadSpeed.460800.macosx=460800 -esp210.menu.UploadSpeed.460800.macosx.upload.speed=460800 +esp210.menu.UploadSpeed.460800.upload.speed=460800 esp210.menu.UploadSpeed.512000.windows=512000 -esp210.menu.UploadSpeed.512000.windows.upload.speed=512000 +esp210.menu.UploadSpeed.512000.upload.speed=512000 esp210.menu.UploadSpeed.921600=921600 esp210.menu.UploadSpeed.921600.upload.speed=921600 ############################################################## d1_mini.name=WeMos D1 R2 & mini -d1_mini.build.board=ESP8266_WEMOS_D1R2MINI +d1_mini.build.board=ESP8266_WEMOS_D1MINI d1_mini.build.variant=d1_mini d1_mini.upload.tool=esptool -d1_mini.upload.speed=115200 d1_mini.upload.maximum_data_size=81920 d1_mini.upload.wait_for_upload_port=true d1_mini.serial.disableDTR=true @@ -2004,16 +1942,16 @@ d1_mini.menu.FlashSize.4M3M.upload.maximum_size=1044464 d1_mini.menu.FlashSize.4M3M.build.spiffs_start=0x100000 d1_mini.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 d1_mini.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -d1_mini.menu.LwIPVariant.open=v2 +d1_mini.menu.LwIPVariant.open=v2 Prebuilt (gcc) d1_mini.menu.LwIPVariant.open.build.lwip_include=lwip2/include d1_mini.menu.LwIPVariant.open.build.lwip_lib=-llwip2 -d1_mini.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +d1_mini.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt (gcc) d1_mini.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc d1_mini.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -d1_mini.menu.LwIPVariant.Espressif=Espressif (xcc) +d1_mini.menu.LwIPVariant.Espressif=v1.4 Espressif (xcc) d1_mini.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip d1_mini.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC -d1_mini.menu.LwIPVariant.OpenSource=Open Source (gcc) +d1_mini.menu.LwIPVariant.OpenSource=v1.4 Open Source (gcc) d1_mini.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src d1_mini.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC d1_mini.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" @@ -2065,39 +2003,147 @@ d1_mini.menu.DebugLevel.UPDATER=UPDATER d1_mini.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER d1_mini.menu.DebugLevel.OTA=OTA d1_mini.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -d1_mini.menu.DebugLevel.NULL=NULL -d1_mini.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -d1_mini.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -d1_mini.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -d1_mini.menu.UploadSpeed.115200=115200 -d1_mini.menu.UploadSpeed.115200.upload.speed=115200 +d1_mini.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +d1_mini.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +d1_mini.menu.UploadSpeed.921600=921600 +d1_mini.menu.UploadSpeed.921600.upload.speed=921600 d1_mini.menu.UploadSpeed.9600=9600 d1_mini.menu.UploadSpeed.9600.upload.speed=9600 d1_mini.menu.UploadSpeed.57600=57600 d1_mini.menu.UploadSpeed.57600.upload.speed=57600 -d1_mini.menu.UploadSpeed.256000.windows=256000 -d1_mini.menu.UploadSpeed.256000.windows.upload.speed=256000 +d1_mini.menu.UploadSpeed.115200=115200 +d1_mini.menu.UploadSpeed.115200.upload.speed=115200 d1_mini.menu.UploadSpeed.230400.linux=230400 -d1_mini.menu.UploadSpeed.230400.linux.upload.speed=230400 d1_mini.menu.UploadSpeed.230400.macosx=230400 -d1_mini.menu.UploadSpeed.230400.macosx.upload.speed=230400 +d1_mini.menu.UploadSpeed.230400.upload.speed=230400 +d1_mini.menu.UploadSpeed.256000.windows=256000 +d1_mini.menu.UploadSpeed.256000.upload.speed=256000 d1_mini.menu.UploadSpeed.460800.linux=460800 -d1_mini.menu.UploadSpeed.460800.linux.upload.speed=460800 d1_mini.menu.UploadSpeed.460800.macosx=460800 -d1_mini.menu.UploadSpeed.460800.macosx.upload.speed=460800 +d1_mini.menu.UploadSpeed.460800.upload.speed=460800 d1_mini.menu.UploadSpeed.512000.windows=512000 -d1_mini.menu.UploadSpeed.512000.windows.upload.speed=512000 -d1_mini.menu.UploadSpeed.921600=921600 -d1_mini.menu.UploadSpeed.921600.upload.speed=921600 +d1_mini.menu.UploadSpeed.512000.upload.speed=512000 ############################################################## -d1_mini_lite.name=Wemos D1 mini lite +d1_mini_pro.name=WeMos D1 mini Pro +d1_mini_pro.build.board=ESP8266_WEMOS_D1MINIPRO +d1_mini_pro.build.variant=d1_mini +d1_mini_pro.upload.tool=esptool +d1_mini_pro.upload.maximum_data_size=81920 +d1_mini_pro.upload.wait_for_upload_port=true +d1_mini_pro.serial.disableDTR=true +d1_mini_pro.serial.disableRTS=true +d1_mini_pro.build.mcu=esp8266 +d1_mini_pro.build.core=esp8266 +d1_mini_pro.build.spiffs_pagesize=256 +d1_mini_pro.build.debug_port= +d1_mini_pro.build.debug_level= +d1_mini_pro.menu.CpuFrequency.80=80 MHz +d1_mini_pro.menu.CpuFrequency.80.build.f_cpu=80000000L +d1_mini_pro.menu.CpuFrequency.160=160 MHz +d1_mini_pro.menu.CpuFrequency.160.build.f_cpu=160000000L +d1_mini_pro.upload.resetmethod=nodemcu +d1_mini_pro.build.flash_mode=dio +d1_mini_pro.build.flash_freq=40 +d1_mini_pro.menu.FlashSize.16M15M=16M (15M SPIFFS) +d1_mini_pro.menu.FlashSize.16M15M.build.flash_size=16M +d1_mini_pro.menu.FlashSize.16M15M.build.flash_ld=eagle.flash.16m.ld +d1_mini_pro.menu.FlashSize.16M15M.build.spiffs_pagesize=256 +d1_mini_pro.menu.FlashSize.16M15M.upload.maximum_size=1044464 +d1_mini_pro.menu.FlashSize.16M15M.build.spiffs_start=0x100000 +d1_mini_pro.menu.FlashSize.16M15M.build.spiffs_end=0xFFB000 +d1_mini_pro.menu.FlashSize.16M15M.build.spiffs_blocksize=8192 +d1_mini_pro.menu.LwIPVariant.open=v2 Prebuilt (gcc) +d1_mini_pro.menu.LwIPVariant.open.build.lwip_include=lwip2/include +d1_mini_pro.menu.LwIPVariant.open.build.lwip_lib=-llwip2 +d1_mini_pro.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt (gcc) +d1_mini_pro.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc +d1_mini_pro.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC +d1_mini_pro.menu.LwIPVariant.Espressif=v1.4 Espressif (xcc) +d1_mini_pro.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip +d1_mini_pro.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC +d1_mini_pro.menu.LwIPVariant.OpenSource=v1.4 Open Source (gcc) +d1_mini_pro.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src +d1_mini_pro.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC +d1_mini_pro.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" +d1_mini_pro.menu.Debug.Disabled=Disabled +d1_mini_pro.menu.Debug.Disabled.build.debug_port= +d1_mini_pro.menu.Debug.Serial=Serial +d1_mini_pro.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +d1_mini_pro.menu.Debug.Serial1=Serial1 +d1_mini_pro.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 +d1_mini_pro.menu.DebugLevel.None____=None +d1_mini_pro.menu.DebugLevel.None____.build.debug_level= +d1_mini_pro.menu.DebugLevel.SSL=SSL +d1_mini_pro.menu.DebugLevel.SSL.build.debug_level= -DDEBUG_ESP_SSL +d1_mini_pro.menu.DebugLevel.TLS_MEM=TLS_MEM +d1_mini_pro.menu.DebugLevel.TLS_MEM.build.debug_level= -DDEBUG_ESP_TLS_MEM +d1_mini_pro.menu.DebugLevel.HTTP_CLIENT=HTTP_CLIENT +d1_mini_pro.menu.DebugLevel.HTTP_CLIENT.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT +d1_mini_pro.menu.DebugLevel.HTTP_SERVER=HTTP_SERVER +d1_mini_pro.menu.DebugLevel.HTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_SERVER +d1_mini_pro.menu.DebugLevel.SSLTLS_MEM=SSL+TLS_MEM +d1_mini_pro.menu.DebugLevel.SSLTLS_MEM.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM +d1_mini_pro.menu.DebugLevel.SSLHTTP_CLIENT=SSL+HTTP_CLIENT +d1_mini_pro.menu.DebugLevel.SSLHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT +d1_mini_pro.menu.DebugLevel.SSLHTTP_SERVER=SSL+HTTP_SERVER +d1_mini_pro.menu.DebugLevel.SSLHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_SERVER +d1_mini_pro.menu.DebugLevel.TLS_MEMHTTP_CLIENT=TLS_MEM+HTTP_CLIENT +d1_mini_pro.menu.DebugLevel.TLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +d1_mini_pro.menu.DebugLevel.TLS_MEMHTTP_SERVER=TLS_MEM+HTTP_SERVER +d1_mini_pro.menu.DebugLevel.TLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +d1_mini_pro.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER=HTTP_CLIENT+HTTP_SERVER +d1_mini_pro.menu.DebugLevel.HTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +d1_mini_pro.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT=SSL+TLS_MEM+HTTP_CLIENT +d1_mini_pro.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENT.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT +d1_mini_pro.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER=SSL+TLS_MEM+HTTP_SERVER +d1_mini_pro.menu.DebugLevel.SSLTLS_MEMHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_SERVER +d1_mini_pro.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER=SSL+HTTP_CLIENT+HTTP_SERVER +d1_mini_pro.menu.DebugLevel.SSLHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +d1_mini_pro.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER=TLS_MEM+HTTP_CLIENT+HTTP_SERVER +d1_mini_pro.menu.DebugLevel.TLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +d1_mini_pro.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER +d1_mini_pro.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVER.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER +d1_mini_pro.menu.DebugLevel.CORE=CORE +d1_mini_pro.menu.DebugLevel.CORE.build.debug_level= -DDEBUG_ESP_CORE +d1_mini_pro.menu.DebugLevel.WIFI=WIFI +d1_mini_pro.menu.DebugLevel.WIFI.build.debug_level= -DDEBUG_ESP_WIFI +d1_mini_pro.menu.DebugLevel.HTTP_UPDATE=HTTP_UPDATE +d1_mini_pro.menu.DebugLevel.HTTP_UPDATE.build.debug_level= -DDEBUG_ESP_HTTP_UPDATE +d1_mini_pro.menu.DebugLevel.UPDATER=UPDATER +d1_mini_pro.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER +d1_mini_pro.menu.DebugLevel.OTA=OTA +d1_mini_pro.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA +d1_mini_pro.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +d1_mini_pro.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +d1_mini_pro.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +d1_mini_pro.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +d1_mini_pro.menu.UploadSpeed.921600=921600 +d1_mini_pro.menu.UploadSpeed.921600.upload.speed=921600 +d1_mini_pro.menu.UploadSpeed.9600=9600 +d1_mini_pro.menu.UploadSpeed.9600.upload.speed=9600 +d1_mini_pro.menu.UploadSpeed.57600=57600 +d1_mini_pro.menu.UploadSpeed.57600.upload.speed=57600 +d1_mini_pro.menu.UploadSpeed.115200=115200 +d1_mini_pro.menu.UploadSpeed.115200.upload.speed=115200 +d1_mini_pro.menu.UploadSpeed.230400.linux=230400 +d1_mini_pro.menu.UploadSpeed.230400.macosx=230400 +d1_mini_pro.menu.UploadSpeed.230400.upload.speed=230400 +d1_mini_pro.menu.UploadSpeed.256000.windows=256000 +d1_mini_pro.menu.UploadSpeed.256000.upload.speed=256000 +d1_mini_pro.menu.UploadSpeed.460800.linux=460800 +d1_mini_pro.menu.UploadSpeed.460800.macosx=460800 +d1_mini_pro.menu.UploadSpeed.460800.upload.speed=460800 +d1_mini_pro.menu.UploadSpeed.512000.windows=512000 +d1_mini_pro.menu.UploadSpeed.512000.upload.speed=512000 + +############################################################## +d1_mini_lite.name=Wemos D1 mini Lite d1_mini_lite.build.board=ESP8266_WEMOS_D1MINILITE d1_mini_lite.build.variant=d1_mini d1_mini_lite.upload.tool=esptool -d1_mini_lite.upload.speed=115200 d1_mini_lite.upload.maximum_data_size=81920 d1_mini_lite.upload.wait_for_upload_port=true d1_mini_lite.serial.disableDTR=true @@ -2175,16 +2221,16 @@ d1_mini_lite.menu.FlashSize.1M512.upload.maximum_size=499696 d1_mini_lite.menu.FlashSize.1M512.build.spiffs_start=0x7B000 d1_mini_lite.menu.FlashSize.1M512.build.spiffs_end=0xFB000 d1_mini_lite.menu.FlashSize.1M512.build.spiffs_blocksize=8192 -d1_mini_lite.menu.LwIPVariant.open=v2 +d1_mini_lite.menu.LwIPVariant.open=v2 Prebuilt (gcc) d1_mini_lite.menu.LwIPVariant.open.build.lwip_include=lwip2/include d1_mini_lite.menu.LwIPVariant.open.build.lwip_lib=-llwip2 -d1_mini_lite.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +d1_mini_lite.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt (gcc) d1_mini_lite.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc d1_mini_lite.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -d1_mini_lite.menu.LwIPVariant.Espressif=Espressif (xcc) +d1_mini_lite.menu.LwIPVariant.Espressif=v1.4 Espressif (xcc) d1_mini_lite.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip d1_mini_lite.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC -d1_mini_lite.menu.LwIPVariant.OpenSource=Open Source (gcc) +d1_mini_lite.menu.LwIPVariant.OpenSource=v1.4 Open Source (gcc) d1_mini_lite.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src d1_mini_lite.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC d1_mini_lite.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" @@ -2236,39 +2282,34 @@ d1_mini_lite.menu.DebugLevel.UPDATER=UPDATER d1_mini_lite.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER d1_mini_lite.menu.DebugLevel.OTA=OTA d1_mini_lite.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -d1_mini_lite.menu.DebugLevel.NULL=NULL -d1_mini_lite.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -d1_mini_lite.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -d1_mini_lite.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -d1_mini_lite.menu.UploadSpeed.115200=115200 -d1_mini_lite.menu.UploadSpeed.115200.upload.speed=115200 +d1_mini_lite.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +d1_mini_lite.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +d1_mini_lite.menu.UploadSpeed.921600=921600 +d1_mini_lite.menu.UploadSpeed.921600.upload.speed=921600 d1_mini_lite.menu.UploadSpeed.9600=9600 d1_mini_lite.menu.UploadSpeed.9600.upload.speed=9600 d1_mini_lite.menu.UploadSpeed.57600=57600 d1_mini_lite.menu.UploadSpeed.57600.upload.speed=57600 -d1_mini_lite.menu.UploadSpeed.256000.windows=256000 -d1_mini_lite.menu.UploadSpeed.256000.windows.upload.speed=256000 +d1_mini_lite.menu.UploadSpeed.115200=115200 +d1_mini_lite.menu.UploadSpeed.115200.upload.speed=115200 d1_mini_lite.menu.UploadSpeed.230400.linux=230400 -d1_mini_lite.menu.UploadSpeed.230400.linux.upload.speed=230400 d1_mini_lite.menu.UploadSpeed.230400.macosx=230400 -d1_mini_lite.menu.UploadSpeed.230400.macosx.upload.speed=230400 +d1_mini_lite.menu.UploadSpeed.230400.upload.speed=230400 +d1_mini_lite.menu.UploadSpeed.256000.windows=256000 +d1_mini_lite.menu.UploadSpeed.256000.upload.speed=256000 d1_mini_lite.menu.UploadSpeed.460800.linux=460800 -d1_mini_lite.menu.UploadSpeed.460800.linux.upload.speed=460800 d1_mini_lite.menu.UploadSpeed.460800.macosx=460800 -d1_mini_lite.menu.UploadSpeed.460800.macosx.upload.speed=460800 +d1_mini_lite.menu.UploadSpeed.460800.upload.speed=460800 d1_mini_lite.menu.UploadSpeed.512000.windows=512000 -d1_mini_lite.menu.UploadSpeed.512000.windows.upload.speed=512000 -d1_mini_lite.menu.UploadSpeed.921600=921600 -d1_mini_lite.menu.UploadSpeed.921600.upload.speed=921600 +d1_mini_lite.menu.UploadSpeed.512000.upload.speed=512000 ############################################################## d1.name=WeMos D1 R1 -d1.build.board=ESP8266_WEMOS_D1R1 +d1.build.board=ESP8266_WEMOS_D1MINI d1.build.variant=d1 d1.upload.tool=esptool -d1.upload.speed=115200 d1.upload.maximum_data_size=81920 d1.upload.wait_for_upload_port=true d1.serial.disableDTR=true @@ -2301,16 +2342,16 @@ d1.menu.FlashSize.4M3M.upload.maximum_size=1044464 d1.menu.FlashSize.4M3M.build.spiffs_start=0x100000 d1.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 d1.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -d1.menu.LwIPVariant.open=v2 +d1.menu.LwIPVariant.open=v2 Prebuilt (gcc) d1.menu.LwIPVariant.open.build.lwip_include=lwip2/include d1.menu.LwIPVariant.open.build.lwip_lib=-llwip2 -d1.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +d1.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt (gcc) d1.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc d1.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -d1.menu.LwIPVariant.Espressif=Espressif (xcc) +d1.menu.LwIPVariant.Espressif=v1.4 Espressif (xcc) d1.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip d1.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC -d1.menu.LwIPVariant.OpenSource=Open Source (gcc) +d1.menu.LwIPVariant.OpenSource=v1.4 Open Source (gcc) d1.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src d1.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC d1.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" @@ -2362,39 +2403,34 @@ d1.menu.DebugLevel.UPDATER=UPDATER d1.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER d1.menu.DebugLevel.OTA=OTA d1.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -d1.menu.DebugLevel.NULL=NULL -d1.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -d1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -d1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -d1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -d1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -d1.menu.UploadSpeed.115200=115200 -d1.menu.UploadSpeed.115200.upload.speed=115200 +d1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +d1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +d1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +d1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +d1.menu.UploadSpeed.921600=921600 +d1.menu.UploadSpeed.921600.upload.speed=921600 d1.menu.UploadSpeed.9600=9600 d1.menu.UploadSpeed.9600.upload.speed=9600 d1.menu.UploadSpeed.57600=57600 d1.menu.UploadSpeed.57600.upload.speed=57600 -d1.menu.UploadSpeed.256000.windows=256000 -d1.menu.UploadSpeed.256000.windows.upload.speed=256000 +d1.menu.UploadSpeed.115200=115200 +d1.menu.UploadSpeed.115200.upload.speed=115200 d1.menu.UploadSpeed.230400.linux=230400 -d1.menu.UploadSpeed.230400.linux.upload.speed=230400 d1.menu.UploadSpeed.230400.macosx=230400 -d1.menu.UploadSpeed.230400.macosx.upload.speed=230400 +d1.menu.UploadSpeed.230400.upload.speed=230400 +d1.menu.UploadSpeed.256000.windows=256000 +d1.menu.UploadSpeed.256000.upload.speed=256000 d1.menu.UploadSpeed.460800.linux=460800 -d1.menu.UploadSpeed.460800.linux.upload.speed=460800 d1.menu.UploadSpeed.460800.macosx=460800 -d1.menu.UploadSpeed.460800.macosx.upload.speed=460800 +d1.menu.UploadSpeed.460800.upload.speed=460800 d1.menu.UploadSpeed.512000.windows=512000 -d1.menu.UploadSpeed.512000.windows.upload.speed=512000 -d1.menu.UploadSpeed.921600=921600 -d1.menu.UploadSpeed.921600.upload.speed=921600 +d1.menu.UploadSpeed.512000.upload.speed=512000 ############################################################## espino.name=ESPino (ESP-12 Module) espino.build.board=ESP8266_ESP12 espino.build.variant=espino espino.upload.tool=esptool -espino.upload.speed=115200 espino.upload.maximum_data_size=81920 espino.upload.wait_for_upload_port=true espino.serial.disableDTR=true @@ -2430,16 +2466,16 @@ espino.menu.FlashSize.4M3M.upload.maximum_size=1044464 espino.menu.FlashSize.4M3M.build.spiffs_start=0x100000 espino.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 espino.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -espino.menu.LwIPVariant.open=v2 +espino.menu.LwIPVariant.open=v2 Prebuilt (gcc) espino.menu.LwIPVariant.open.build.lwip_include=lwip2/include espino.menu.LwIPVariant.open.build.lwip_lib=-llwip2 -espino.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +espino.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt (gcc) espino.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc espino.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -espino.menu.LwIPVariant.Espressif=Espressif (xcc) +espino.menu.LwIPVariant.Espressif=v1.4 Espressif (xcc) espino.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip espino.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC -espino.menu.LwIPVariant.OpenSource=Open Source (gcc) +espino.menu.LwIPVariant.OpenSource=v1.4 Open Source (gcc) espino.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src espino.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC espino.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" @@ -2491,30 +2527,26 @@ espino.menu.DebugLevel.UPDATER=UPDATER espino.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER espino.menu.DebugLevel.OTA=OTA espino.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -espino.menu.DebugLevel.NULL=NULL -espino.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -espino.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -espino.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -espino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -espino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +espino.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +espino.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +espino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +espino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA espino.menu.UploadSpeed.115200=115200 espino.menu.UploadSpeed.115200.upload.speed=115200 espino.menu.UploadSpeed.9600=9600 espino.menu.UploadSpeed.9600.upload.speed=9600 espino.menu.UploadSpeed.57600=57600 espino.menu.UploadSpeed.57600.upload.speed=57600 -espino.menu.UploadSpeed.256000.windows=256000 -espino.menu.UploadSpeed.256000.windows.upload.speed=256000 espino.menu.UploadSpeed.230400.linux=230400 -espino.menu.UploadSpeed.230400.linux.upload.speed=230400 espino.menu.UploadSpeed.230400.macosx=230400 -espino.menu.UploadSpeed.230400.macosx.upload.speed=230400 +espino.menu.UploadSpeed.230400.upload.speed=230400 +espino.menu.UploadSpeed.256000.windows=256000 +espino.menu.UploadSpeed.256000.upload.speed=256000 espino.menu.UploadSpeed.460800.linux=460800 -espino.menu.UploadSpeed.460800.linux.upload.speed=460800 espino.menu.UploadSpeed.460800.macosx=460800 -espino.menu.UploadSpeed.460800.macosx.upload.speed=460800 +espino.menu.UploadSpeed.460800.upload.speed=460800 espino.menu.UploadSpeed.512000.windows=512000 -espino.menu.UploadSpeed.512000.windows.upload.speed=512000 +espino.menu.UploadSpeed.512000.upload.speed=512000 espino.menu.UploadSpeed.921600=921600 espino.menu.UploadSpeed.921600.upload.speed=921600 @@ -2523,7 +2555,6 @@ espinotee.name=ThaiEasyElec's ESPino espinotee.build.board=ESP8266_ESP13 espinotee.build.variant=espinotee espinotee.upload.tool=esptool -espinotee.upload.speed=115200 espinotee.upload.maximum_data_size=81920 espinotee.upload.wait_for_upload_port=true espinotee.serial.disableDTR=true @@ -2556,16 +2587,16 @@ espinotee.menu.FlashSize.4M3M.upload.maximum_size=1044464 espinotee.menu.FlashSize.4M3M.build.spiffs_start=0x100000 espinotee.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 espinotee.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -espinotee.menu.LwIPVariant.open=v2 +espinotee.menu.LwIPVariant.open=v2 Prebuilt (gcc) espinotee.menu.LwIPVariant.open.build.lwip_include=lwip2/include espinotee.menu.LwIPVariant.open.build.lwip_lib=-llwip2 -espinotee.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +espinotee.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt (gcc) espinotee.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc espinotee.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -espinotee.menu.LwIPVariant.Espressif=Espressif (xcc) +espinotee.menu.LwIPVariant.Espressif=v1.4 Espressif (xcc) espinotee.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip espinotee.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC -espinotee.menu.LwIPVariant.OpenSource=Open Source (gcc) +espinotee.menu.LwIPVariant.OpenSource=v1.4 Open Source (gcc) espinotee.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src espinotee.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC espinotee.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" @@ -2617,30 +2648,26 @@ espinotee.menu.DebugLevel.UPDATER=UPDATER espinotee.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER espinotee.menu.DebugLevel.OTA=OTA espinotee.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -espinotee.menu.DebugLevel.NULL=NULL -espinotee.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -espinotee.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -espinotee.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +espinotee.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +espinotee.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA espinotee.menu.UploadSpeed.115200=115200 espinotee.menu.UploadSpeed.115200.upload.speed=115200 espinotee.menu.UploadSpeed.9600=9600 espinotee.menu.UploadSpeed.9600.upload.speed=9600 espinotee.menu.UploadSpeed.57600=57600 espinotee.menu.UploadSpeed.57600.upload.speed=57600 -espinotee.menu.UploadSpeed.256000.windows=256000 -espinotee.menu.UploadSpeed.256000.windows.upload.speed=256000 espinotee.menu.UploadSpeed.230400.linux=230400 -espinotee.menu.UploadSpeed.230400.linux.upload.speed=230400 espinotee.menu.UploadSpeed.230400.macosx=230400 -espinotee.menu.UploadSpeed.230400.macosx.upload.speed=230400 +espinotee.menu.UploadSpeed.230400.upload.speed=230400 +espinotee.menu.UploadSpeed.256000.windows=256000 +espinotee.menu.UploadSpeed.256000.upload.speed=256000 espinotee.menu.UploadSpeed.460800.linux=460800 -espinotee.menu.UploadSpeed.460800.linux.upload.speed=460800 espinotee.menu.UploadSpeed.460800.macosx=460800 -espinotee.menu.UploadSpeed.460800.macosx.upload.speed=460800 +espinotee.menu.UploadSpeed.460800.upload.speed=460800 espinotee.menu.UploadSpeed.512000.windows=512000 -espinotee.menu.UploadSpeed.512000.windows.upload.speed=512000 +espinotee.menu.UploadSpeed.512000.upload.speed=512000 espinotee.menu.UploadSpeed.921600=921600 espinotee.menu.UploadSpeed.921600.upload.speed=921600 @@ -2666,7 +2693,6 @@ wifinfo.menu.ESPModule.ESP07192.build.flash_size=1M wifinfo.menu.ESPModule.ESP07192=ESP07 (1M/192K SPIFFS) wifinfo.menu.ESPModule.ESP07192.upload.maximum_size=827376 wifinfo.upload.tool=esptool -wifinfo.upload.speed=115200 wifinfo.upload.maximum_data_size=81920 wifinfo.upload.wait_for_upload_port=true wifinfo.serial.disableDTR=true @@ -2746,16 +2772,16 @@ wifinfo.menu.FlashSize.1M512.upload.maximum_size=499696 wifinfo.menu.FlashSize.1M512.build.spiffs_start=0x7B000 wifinfo.menu.FlashSize.1M512.build.spiffs_end=0xFB000 wifinfo.menu.FlashSize.1M512.build.spiffs_blocksize=8192 -wifinfo.menu.LwIPVariant.open=v2 +wifinfo.menu.LwIPVariant.open=v2 Prebuilt (gcc) wifinfo.menu.LwIPVariant.open.build.lwip_include=lwip2/include wifinfo.menu.LwIPVariant.open.build.lwip_lib=-llwip2 -wifinfo.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +wifinfo.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt (gcc) wifinfo.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc wifinfo.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -wifinfo.menu.LwIPVariant.Espressif=Espressif (xcc) +wifinfo.menu.LwIPVariant.Espressif=v1.4 Espressif (xcc) wifinfo.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip wifinfo.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC -wifinfo.menu.LwIPVariant.OpenSource=Open Source (gcc) +wifinfo.menu.LwIPVariant.OpenSource=v1.4 Open Source (gcc) wifinfo.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src wifinfo.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC wifinfo.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" @@ -2807,30 +2833,26 @@ wifinfo.menu.DebugLevel.UPDATER=UPDATER wifinfo.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER wifinfo.menu.DebugLevel.OTA=OTA wifinfo.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -wifinfo.menu.DebugLevel.NULL=NULL -wifinfo.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -wifinfo.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -wifinfo.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +wifinfo.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +wifinfo.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA wifinfo.menu.UploadSpeed.115200=115200 wifinfo.menu.UploadSpeed.115200.upload.speed=115200 wifinfo.menu.UploadSpeed.9600=9600 wifinfo.menu.UploadSpeed.9600.upload.speed=9600 wifinfo.menu.UploadSpeed.57600=57600 wifinfo.menu.UploadSpeed.57600.upload.speed=57600 -wifinfo.menu.UploadSpeed.256000.windows=256000 -wifinfo.menu.UploadSpeed.256000.windows.upload.speed=256000 wifinfo.menu.UploadSpeed.230400.linux=230400 -wifinfo.menu.UploadSpeed.230400.linux.upload.speed=230400 wifinfo.menu.UploadSpeed.230400.macosx=230400 -wifinfo.menu.UploadSpeed.230400.macosx.upload.speed=230400 +wifinfo.menu.UploadSpeed.230400.upload.speed=230400 +wifinfo.menu.UploadSpeed.256000.windows=256000 +wifinfo.menu.UploadSpeed.256000.upload.speed=256000 wifinfo.menu.UploadSpeed.460800.linux=460800 -wifinfo.menu.UploadSpeed.460800.linux.upload.speed=460800 wifinfo.menu.UploadSpeed.460800.macosx=460800 -wifinfo.menu.UploadSpeed.460800.macosx.upload.speed=460800 +wifinfo.menu.UploadSpeed.460800.upload.speed=460800 wifinfo.menu.UploadSpeed.512000.windows=512000 -wifinfo.menu.UploadSpeed.512000.windows.upload.speed=512000 +wifinfo.menu.UploadSpeed.512000.upload.speed=512000 wifinfo.menu.UploadSpeed.921600=921600 wifinfo.menu.UploadSpeed.921600.upload.speed=921600 @@ -2850,7 +2872,6 @@ arduino-esp8266.build.board=ESP8266_ARDUINO arduino-esp8266.menu.BoardModel.primo.build.board=ESP8266_ARDUINO_PRIMO arduino-esp8266.menu.BoardModel.unowifideved=Uno WiFi arduino-esp8266.upload.tool=esptool -arduino-esp8266.upload.speed=115200 arduino-esp8266.upload.maximum_data_size=81920 arduino-esp8266.upload.wait_for_upload_port=true arduino-esp8266.serial.disableDTR=true @@ -2883,16 +2904,16 @@ arduino-esp8266.menu.FlashSize.4M3M.upload.maximum_size=1044464 arduino-esp8266.menu.FlashSize.4M3M.build.spiffs_start=0x100000 arduino-esp8266.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 arduino-esp8266.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -arduino-esp8266.menu.LwIPVariant.open=v2 +arduino-esp8266.menu.LwIPVariant.open=v2 Prebuilt (gcc) arduino-esp8266.menu.LwIPVariant.open.build.lwip_include=lwip2/include arduino-esp8266.menu.LwIPVariant.open.build.lwip_lib=-llwip2 -arduino-esp8266.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +arduino-esp8266.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt (gcc) arduino-esp8266.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc arduino-esp8266.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -arduino-esp8266.menu.LwIPVariant.Espressif=Espressif (xcc) +arduino-esp8266.menu.LwIPVariant.Espressif=v1.4 Espressif (xcc) arduino-esp8266.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip arduino-esp8266.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC -arduino-esp8266.menu.LwIPVariant.OpenSource=Open Source (gcc) +arduino-esp8266.menu.LwIPVariant.OpenSource=v1.4 Open Source (gcc) arduino-esp8266.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src arduino-esp8266.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC arduino-esp8266.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" @@ -2944,30 +2965,26 @@ arduino-esp8266.menu.DebugLevel.UPDATER=UPDATER arduino-esp8266.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER arduino-esp8266.menu.DebugLevel.OTA=OTA arduino-esp8266.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -arduino-esp8266.menu.DebugLevel.NULL=NULL -arduino-esp8266.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -arduino-esp8266.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -arduino-esp8266.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +arduino-esp8266.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +arduino-esp8266.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA arduino-esp8266.menu.UploadSpeed.115200=115200 arduino-esp8266.menu.UploadSpeed.115200.upload.speed=115200 arduino-esp8266.menu.UploadSpeed.9600=9600 arduino-esp8266.menu.UploadSpeed.9600.upload.speed=9600 arduino-esp8266.menu.UploadSpeed.57600=57600 arduino-esp8266.menu.UploadSpeed.57600.upload.speed=57600 -arduino-esp8266.menu.UploadSpeed.256000.windows=256000 -arduino-esp8266.menu.UploadSpeed.256000.windows.upload.speed=256000 arduino-esp8266.menu.UploadSpeed.230400.linux=230400 -arduino-esp8266.menu.UploadSpeed.230400.linux.upload.speed=230400 arduino-esp8266.menu.UploadSpeed.230400.macosx=230400 -arduino-esp8266.menu.UploadSpeed.230400.macosx.upload.speed=230400 +arduino-esp8266.menu.UploadSpeed.230400.upload.speed=230400 +arduino-esp8266.menu.UploadSpeed.256000.windows=256000 +arduino-esp8266.menu.UploadSpeed.256000.upload.speed=256000 arduino-esp8266.menu.UploadSpeed.460800.linux=460800 -arduino-esp8266.menu.UploadSpeed.460800.linux.upload.speed=460800 arduino-esp8266.menu.UploadSpeed.460800.macosx=460800 -arduino-esp8266.menu.UploadSpeed.460800.macosx.upload.speed=460800 +arduino-esp8266.menu.UploadSpeed.460800.upload.speed=460800 arduino-esp8266.menu.UploadSpeed.512000.windows=512000 -arduino-esp8266.menu.UploadSpeed.512000.windows.upload.speed=512000 +arduino-esp8266.menu.UploadSpeed.512000.upload.speed=512000 arduino-esp8266.menu.UploadSpeed.921600=921600 arduino-esp8266.menu.UploadSpeed.921600.upload.speed=921600 @@ -2977,7 +2994,6 @@ gen4iod.build.board=GEN4_IOD gen4iod.build.f_cpu=160000000L gen4iod.build.variant=generic gen4iod.upload.tool=esptool -gen4iod.upload.speed=115200 gen4iod.upload.maximum_data_size=81920 gen4iod.upload.wait_for_upload_port=true gen4iod.serial.disableDTR=true @@ -3014,16 +3030,16 @@ gen4iod.menu.FlashSize.512K128.upload.maximum_size=368624 gen4iod.menu.FlashSize.512K128.build.spiffs_start=0x5B000 gen4iod.menu.FlashSize.512K128.build.spiffs_end=0x7B000 gen4iod.menu.FlashSize.512K128.build.spiffs_blocksize=4096 -gen4iod.menu.LwIPVariant.open=v2 +gen4iod.menu.LwIPVariant.open=v2 Prebuilt (gcc) gen4iod.menu.LwIPVariant.open.build.lwip_include=lwip2/include gen4iod.menu.LwIPVariant.open.build.lwip_lib=-llwip2 -gen4iod.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +gen4iod.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt (gcc) gen4iod.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc gen4iod.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -gen4iod.menu.LwIPVariant.Espressif=Espressif (xcc) +gen4iod.menu.LwIPVariant.Espressif=v1.4 Espressif (xcc) gen4iod.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip gen4iod.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC -gen4iod.menu.LwIPVariant.OpenSource=Open Source (gcc) +gen4iod.menu.LwIPVariant.OpenSource=v1.4 Open Source (gcc) gen4iod.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src gen4iod.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC gen4iod.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" @@ -3075,30 +3091,26 @@ gen4iod.menu.DebugLevel.UPDATER=UPDATER gen4iod.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER gen4iod.menu.DebugLevel.OTA=OTA gen4iod.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -gen4iod.menu.DebugLevel.NULL=NULL -gen4iod.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -gen4iod.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -gen4iod.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" +gen4iod.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +gen4iod.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA gen4iod.menu.UploadSpeed.115200=115200 gen4iod.menu.UploadSpeed.115200.upload.speed=115200 gen4iod.menu.UploadSpeed.9600=9600 gen4iod.menu.UploadSpeed.9600.upload.speed=9600 gen4iod.menu.UploadSpeed.57600=57600 gen4iod.menu.UploadSpeed.57600.upload.speed=57600 -gen4iod.menu.UploadSpeed.256000.windows=256000 -gen4iod.menu.UploadSpeed.256000.windows.upload.speed=256000 gen4iod.menu.UploadSpeed.230400.linux=230400 -gen4iod.menu.UploadSpeed.230400.linux.upload.speed=230400 gen4iod.menu.UploadSpeed.230400.macosx=230400 -gen4iod.menu.UploadSpeed.230400.macosx.upload.speed=230400 +gen4iod.menu.UploadSpeed.230400.upload.speed=230400 +gen4iod.menu.UploadSpeed.256000.windows=256000 +gen4iod.menu.UploadSpeed.256000.upload.speed=256000 gen4iod.menu.UploadSpeed.460800.linux=460800 -gen4iod.menu.UploadSpeed.460800.linux.upload.speed=460800 gen4iod.menu.UploadSpeed.460800.macosx=460800 -gen4iod.menu.UploadSpeed.460800.macosx.upload.speed=460800 +gen4iod.menu.UploadSpeed.460800.upload.speed=460800 gen4iod.menu.UploadSpeed.512000.windows=512000 -gen4iod.menu.UploadSpeed.512000.windows.upload.speed=512000 +gen4iod.menu.UploadSpeed.512000.upload.speed=512000 gen4iod.menu.UploadSpeed.921600=921600 gen4iod.menu.UploadSpeed.921600.upload.speed=921600 @@ -3108,7 +3120,6 @@ oak.build.board=ESP8266_OAK oak.build.variant=oak oak.upload.maximum_size=1040368 oak.upload.tool=esptool -oak.upload.speed=115200 oak.upload.maximum_data_size=81920 oak.upload.wait_for_upload_port=true oak.serial.disableDTR=true @@ -3140,16 +3151,16 @@ oak.menu.FlashSize.4M3M.upload.maximum_size=1044464 oak.menu.FlashSize.4M3M.build.spiffs_start=0x100000 oak.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 oak.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 -oak.menu.LwIPVariant.open=v2 +oak.menu.LwIPVariant.open=v2 Prebuilt (gcc) oak.menu.LwIPVariant.open.build.lwip_include=lwip2/include oak.menu.LwIPVariant.open.build.lwip_lib=-llwip2 -oak.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +oak.menu.LwIPVariant.Prebuilt=v1.4 Prebuilt (gcc) oak.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc oak.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC -oak.menu.LwIPVariant.Espressif=Espressif (xcc) +oak.menu.LwIPVariant.Espressif=v1.4 Espressif (xcc) oak.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip oak.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC -oak.menu.LwIPVariant.OpenSource=Open Source (gcc) +oak.menu.LwIPVariant.OpenSource=v1.4 Open Source (gcc) oak.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src oak.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC oak.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" @@ -3201,30 +3212,26 @@ oak.menu.DebugLevel.UPDATER=UPDATER oak.menu.DebugLevel.UPDATER.build.debug_level= -DDEBUG_ESP_UPDATER oak.menu.DebugLevel.OTA=OTA oak.menu.DebugLevel.OTA.build.debug_level= -DDEBUG_ESP_OTA -oak.menu.DebugLevel.NULL=NULL -oak.menu.DebugLevel.NULL.build.debug_level= -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -oak.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -oak.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -oak.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA+NULL -oak.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTANULL.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_ESP_NULL -include "umm_malloc/umm_malloc_cfg.h" -oak.menu.UploadSpeed.115200=115200 -oak.menu.UploadSpeed.115200.upload.speed=115200 +oak.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +oak.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +oak.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA +oak.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +oak.menu.UploadSpeed.921600=921600 +oak.menu.UploadSpeed.921600.upload.speed=921600 oak.menu.UploadSpeed.9600=9600 oak.menu.UploadSpeed.9600.upload.speed=9600 oak.menu.UploadSpeed.57600=57600 oak.menu.UploadSpeed.57600.upload.speed=57600 -oak.menu.UploadSpeed.256000.windows=256000 -oak.menu.UploadSpeed.256000.windows.upload.speed=256000 +oak.menu.UploadSpeed.115200=115200 +oak.menu.UploadSpeed.115200.upload.speed=115200 oak.menu.UploadSpeed.230400.linux=230400 -oak.menu.UploadSpeed.230400.linux.upload.speed=230400 oak.menu.UploadSpeed.230400.macosx=230400 -oak.menu.UploadSpeed.230400.macosx.upload.speed=230400 +oak.menu.UploadSpeed.230400.upload.speed=230400 +oak.menu.UploadSpeed.256000.windows=256000 +oak.menu.UploadSpeed.256000.upload.speed=256000 oak.menu.UploadSpeed.460800.linux=460800 -oak.menu.UploadSpeed.460800.linux.upload.speed=460800 oak.menu.UploadSpeed.460800.macosx=460800 -oak.menu.UploadSpeed.460800.macosx.upload.speed=460800 +oak.menu.UploadSpeed.460800.upload.speed=460800 oak.menu.UploadSpeed.512000.windows=512000 -oak.menu.UploadSpeed.512000.windows.upload.speed=512000 -oak.menu.UploadSpeed.921600=921600 -oak.menu.UploadSpeed.921600.upload.speed=921600 +oak.menu.UploadSpeed.512000.upload.speed=512000 From cb723a59603dedd5301250432e128098248dbaf2 Mon Sep 17 00:00:00 2001 From: david gauchard Date: Wed, 13 Dec 2017 14:30:33 +0100 Subject: [PATCH 130/156] realloc bug: fix #3953 (#3957) fix #3699 --- cores/esp8266/umm_malloc/umm_malloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cores/esp8266/umm_malloc/umm_malloc.c b/cores/esp8266/umm_malloc/umm_malloc.c index 9a06332c3..030042a1f 100644 --- a/cores/esp8266/umm_malloc/umm_malloc.c +++ b/cores/esp8266/umm_malloc/umm_malloc.c @@ -1632,9 +1632,9 @@ static void *_umm_realloc( void *ptr, size_t size ) { if( (ptr = _umm_malloc( size )) ) { memcpy( ptr, oldptr, curSize ); + _umm_free( oldptr ); } - _umm_free( oldptr ); } /* Release the critical section... */ From cc9e799fc1ae8f74df4c6a103f6fe9465a6caa3c Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Wed, 13 Dec 2017 21:54:52 +0800 Subject: [PATCH 131/156] ci: split into multiple jobs --- .travis.yml | 15 +++++++++++-- tests/common.sh | 56 +++++++++++++++++++------------------------------ 2 files changed, 35 insertions(+), 36 deletions(-) diff --git a/.travis.yml b/.travis.yml index 29c925bb0..feb90d184 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,8 +3,18 @@ language: bash os: linux dist: trusty -env: - - BUILD_TYPE=build +matrix: + include: + - env: + - BUILD_TYPE=build + - env: + - BUILD_TYPE=platformio + - env: + - BUILD_TYPE=docs + - env: + - BUILD_TYPE=package + - env: + - BUILD_TYPE=host_tests install: - pip install --user -r doc/requirements.txt @@ -25,6 +35,7 @@ deploy: on: repo: esp8266/Arduino tags: true + condition: "$BUILD_TYPE = package" notifications: email: diff --git a/tests/common.sh b/tests/common.sh index b1e3737bd..9c7563032 100755 --- a/tests/common.sh +++ b/tests/common.sh @@ -169,31 +169,8 @@ function build_sketches_with_platformio() set -e } -function run_travis_ci_build() +function install_arduino() { - # Build documentation using Sphinx - echo -e "travis_fold:start:docs" - cd $TRAVIS_BUILD_DIR/doc - build_docs - echo -e "travis_fold:end:docs" - - # Build release package - echo -e "travis_fold:start:build_package" - cd $TRAVIS_BUILD_DIR/package - build_package - echo -e "travis_fold:end:build_package" - - if [ "$TRAVIS_TAG" != "" ]; then - echo "Skipping tests for tagged build" - return 0; - fi - - # Run host side tests - echo -e "travis_fold:start:host_tests" - cd $TRAVIS_BUILD_DIR/tests - run_host_tests - echo -e "travis_fold:end:host_tests" - # Install Arduino IDE and required libraries echo -e "travis_fold:start:sketch_test_env_prepare" cd $TRAVIS_BUILD_DIR @@ -202,7 +179,10 @@ function run_travis_ci_build() cd $TRAVIS_BUILD_DIR install_libraries echo -e "travis_fold:end:sketch_test_env_prepare" +} +function build_sketches_with_arduino() +{ # Compile sketches echo -e "travis_fold:start:sketch_test" build_sketches $HOME/arduino_ide $TRAVIS_BUILD_DIR/libraries "-l $HOME/Arduino/libraries" @@ -212,20 +192,28 @@ function run_travis_ci_build() echo -e "travis_fold:start:size_report" cat size.log echo -e "travis_fold:end:size_report" - - # PlatformIO - echo -e "travis_fold:start:install_platformio" - install_platformio - echo -e "travis_fold:end:install_platformio" - - echo -e "travis_fold:start:build_sketches_with_platformio" - build_sketches_with_platformio $TRAVIS_BUILD_DIR/libraries "--board nodemcuv2 --verbose" - echo -e "travis_fold:end:build_sketches_with_platformio" } set -e if [ "$BUILD_TYPE" = "build" ]; then - run_travis_ci_build + install_arduino + build_sketches_with_arduino +elif [ "$BUILD_TYPE" = "platformio" ]; then + # PlatformIO + install_platformio + build_sketches_with_platformio $TRAVIS_BUILD_DIR/libraries "--board nodemcuv2 --verbose" +elif [ "$BUILD_TYPE" = "docs" ]; then + # Build documentation using Sphinx + cd $TRAVIS_BUILD_DIR/doc + build_docs +elif [ "$BUILD_TYPE" = "package" ]; then + # Build release package + cd $TRAVIS_BUILD_DIR/package + build_package +elif [ "$BUILD_TYPE" = "host_tests" ]; then + # Run host side tests + cd $TRAVIS_BUILD_DIR/tests + run_host_tests fi From 4a0cdca28c60d223fa7a5fb71453da7596d27288 Mon Sep 17 00:00:00 2001 From: Sebastian Andersson Date: Thu, 14 Dec 2017 07:38:09 +0100 Subject: [PATCH 132/156] Export pgmspace symbols to C (#3955) --- cores/esp8266/pgmspace.cpp | 4 ++++ cores/esp8266/pgmspace.h | 12 +++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/cores/esp8266/pgmspace.cpp b/cores/esp8266/pgmspace.cpp index e705a32f6..f3c376dca 100644 --- a/cores/esp8266/pgmspace.cpp +++ b/cores/esp8266/pgmspace.cpp @@ -24,6 +24,8 @@ #include #include "pgmspace.h" +extern "C" { + size_t strnlen_P(PGM_P s, size_t size) { const char* cp; for (cp = s; size != 0 && pgm_read_byte(cp) != '\0'; cp++, size--); @@ -286,3 +288,5 @@ int vsnprintf_P(char* str, size_t strSize, PGM_P formatP, va_list ap) { return ret; } + +} // extern "C" diff --git a/cores/esp8266/pgmspace.h b/cores/esp8266/pgmspace.h index a785e2639..2e3a71f3a 100644 --- a/cores/esp8266/pgmspace.h +++ b/cores/esp8266/pgmspace.h @@ -4,16 +4,14 @@ #include #include -#ifdef __ets__ - #ifdef __cplusplus extern "C" { #endif + +#ifdef __ets__ + #include "ets_sys.h" #include "osapi.h" -#ifdef __cplusplus -} -#endif #define PROGMEM ICACHE_RODATA_ATTR #define PGM_P const char * @@ -136,4 +134,8 @@ static inline uint16_t pgm_read_word_inlined(const void* addr) { #define pgm_read_float_far(addr) pgm_read_float(addr) #define pgm_read_ptr_far(addr) pgm_read_ptr(addr) +#ifdef __cplusplus +} +#endif + #endif //__PGMSPACE_H_ From 58937dd489968f2850e2b883cc9695f9ac6be60b Mon Sep 17 00:00:00 2001 From: david gauchard Date: Thu, 14 Dec 2017 07:38:44 +0100 Subject: [PATCH 133/156] check nullptr in ESP8266WebServer (#3958) --- libraries/ESP8266WebServer/src/Parsing.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/ESP8266WebServer/src/Parsing.cpp b/libraries/ESP8266WebServer/src/Parsing.cpp index 581439227..eae25de06 100644 --- a/libraries/ESP8266WebServer/src/Parsing.cpp +++ b/libraries/ESP8266WebServer/src/Parsing.cpp @@ -179,6 +179,8 @@ bool ESP8266WebServer::_parseRequest(WiFiClient& client) { if (!isForm){ size_t plainLength; char* plainBuf = readBytesWithTimeout(client, contentLength, plainLength, HTTP_MAX_POST_WAIT); + if (!plainBuf) + return false; if (plainLength < contentLength) { free(plainBuf); return false; From 89e5a481a7edbd07040483ebc7d058cfb8ffb066 Mon Sep 17 00:00:00 2001 From: david gauchard Date: Sat, 16 Dec 2017 04:01:43 +0100 Subject: [PATCH 134/156] increase HTTP SEND/POST timeout to 5s (#3971) --- libraries/ESP8266WebServer/src/ESP8266WebServer.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer.h b/libraries/ESP8266WebServer/src/ESP8266WebServer.h index 1c31d8c78..6eeb9f978 100644 --- a/libraries/ESP8266WebServer/src/ESP8266WebServer.h +++ b/libraries/ESP8266WebServer/src/ESP8266WebServer.h @@ -40,8 +40,8 @@ enum HTTPAuthMethod { BASIC_AUTH, DIGEST_AUTH }; #define HTTP_UPLOAD_BUFLEN 2048 #endif -#define HTTP_MAX_DATA_WAIT 1000 //ms to wait for the client to send the request -#define HTTP_MAX_POST_WAIT 1000 //ms to wait for POST data to arrive +#define HTTP_MAX_DATA_WAIT 5000 //ms to wait for the client to send the request +#define HTTP_MAX_POST_WAIT 5000 //ms to wait for POST data to arrive #define HTTP_MAX_SEND_WAIT 5000 //ms to wait for data chunk to be ACKed #define HTTP_MAX_CLOSE_WAIT 2000 //ms to wait for the client to close the connection From 291fdfc14183240bd27bcb99515aa9a3fd24c674 Mon Sep 17 00:00:00 2001 From: Rotzbua Date: Sun, 17 Dec 2017 00:01:50 +0100 Subject: [PATCH 135/156] Update client-secure-examples.rst (#3907) fix link --- doc/esp8266wifi/client-secure-examples.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/esp8266wifi/client-secure-examples.rst b/doc/esp8266wifi/client-secure-examples.rst index 5d9fd0373..a21a3e773 100644 --- a/doc/esp8266wifi/client-secure-examples.rst +++ b/doc/esp8266wifi/client-secure-examples.rst @@ -178,4 +178,4 @@ Conclusion Programming a secure client is almost identical as programming a non-secure client. The difference gets down to one extra step to verify server's identity. Keep in mind limitations due to heavy memory usage that depends on the strength of the key used by the server and whether server is willing to negotiate the `TLS buffer size `__. For the list of functions provided to manage secure clients, please refer to the `Client Secure Class -:arrow\_right: `__ documentation. +:arrow\_right: `__ documentation. From affd1b37b866a903079c5d224cc5e245f828a34a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Doanh=20V=C4=83n=20L=C6=B0=C6=A1ng?= Date: Sun, 17 Dec 2017 10:00:09 +0700 Subject: [PATCH 136/156] Update generic-class.rst (#3875) --- doc/esp8266wifi/generic-class.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/esp8266wifi/generic-class.rst b/doc/esp8266wifi/generic-class.rst index 8ed48d537..671c15177 100644 --- a/doc/esp8266wifi/generic-class.rst +++ b/doc/esp8266wifi/generic-class.rst @@ -79,4 +79,4 @@ Other Function Calls Documentation for the above functions is not yet prepared. -For code samples please refer to separate section with `examples `__ dedicated specifically to the Generic Class. +For code samples please refer to separate section with `examples `__ dedicated specifically to the Generic Class. From 26980b39e35151117720220ef1d57f56a0a51acf Mon Sep 17 00:00:00 2001 From: david gauchard Date: Sun, 17 Dec 2017 17:16:41 +0100 Subject: [PATCH 137/156] fix #1002 ::Flush() wait for empty send buffer (#3967) * fix #1002 ::Flush() wait for empty send buffer * WiFiClient::Flush() guarantees that the data has been delivered option 1 of https://github.com/esp8266/Arduino/pull/3967#discussion_r156901071 10ms max wait according to loaded tcp echo/reply scheme --- libraries/ESP8266WiFi/src/WiFiClient.cpp | 2 +- libraries/ESP8266WiFi/src/WiFiUdp.cpp | 3 +-- .../ESP8266WiFi/src/include/ClientContext.h | 20 +++++++++++++++++-- libraries/Ethernet/src/EthernetUdp.cpp | 9 +++++++-- libraries/Ethernet/src/EthernetUdp.h | 3 +++ 5 files changed, 30 insertions(+), 7 deletions(-) diff --git a/libraries/ESP8266WiFi/src/WiFiClient.cpp b/libraries/ESP8266WiFi/src/WiFiClient.cpp index 576201c68..e4b2d1d73 100644 --- a/libraries/ESP8266WiFi/src/WiFiClient.cpp +++ b/libraries/ESP8266WiFi/src/WiFiClient.cpp @@ -259,7 +259,7 @@ size_t WiFiClient::peekBytes(uint8_t *buffer, size_t length) { void WiFiClient::flush() { if (_client) - _client->flush(); + _client->wait_until_sent(); } void WiFiClient::stop() diff --git a/libraries/ESP8266WiFi/src/WiFiUdp.cpp b/libraries/ESP8266WiFi/src/WiFiUdp.cpp index c163ccef9..5e4247308 100644 --- a/libraries/ESP8266WiFi/src/WiFiUdp.cpp +++ b/libraries/ESP8266WiFi/src/WiFiUdp.cpp @@ -243,8 +243,7 @@ int WiFiUDP::peek() void WiFiUDP::flush() { - if (_ctx) - _ctx->flush(); + endPacket(); } IPAddress WiFiUDP::remoteIP() diff --git a/libraries/ESP8266WiFi/src/include/ClientContext.h b/libraries/ESP8266WiFi/src/include/ClientContext.h index 639b3587c..b3784d25e 100644 --- a/libraries/ESP8266WiFi/src/include/ClientContext.h +++ b/libraries/ESP8266WiFi/src/include/ClientContext.h @@ -107,7 +107,7 @@ public: if(this != 0) { DEBUGV(":ur %d\r\n", _refcnt); if(--_refcnt == 0) { - flush(); + discard_received(); close(); if(_discard_cb) { _discard_cb(_discard_cb_arg, this); @@ -277,7 +277,7 @@ public: return copy_size; } - void flush() + void discard_received() { if(!_rx_buf) { return; @@ -290,6 +290,22 @@ public: _rx_buf_offset = 0; } + void wait_until_sent() + { + // fix option 1 in + // https://github.com/esp8266/Arduino/pull/3967#pullrequestreview-83451496 + // TODO: option 2 + + #define WAIT_TRIES_MS 10 // at most 10ms + + int tries = 1+ WAIT_TRIES_MS; + + while (state() == ESTABLISHED && tcp_sndbuf(_pcb) != TCP_SND_BUF && --tries) { + _write_some(); + delay(1); // esp_ schedule+yield + } + } + uint8_t state() const { if(!_pcb) { diff --git a/libraries/Ethernet/src/EthernetUdp.cpp b/libraries/Ethernet/src/EthernetUdp.cpp index b5dcb78cc..b9a2c867a 100644 --- a/libraries/Ethernet/src/EthernetUdp.cpp +++ b/libraries/Ethernet/src/EthernetUdp.cpp @@ -118,7 +118,7 @@ size_t EthernetUDP::write(const uint8_t *buffer, size_t size) int EthernetUDP::parsePacket() { // discard any remaining bytes in the last packet - flush(); + clear_remaining(); if (recvAvailable(_sock) > 0) { @@ -204,7 +204,7 @@ int EthernetUDP::peek() return b; } -void EthernetUDP::flush() +void EthernetUDP::clear_remaining() { // could this fail (loop endlessly) if _remaining > 0 and recv in read fails? // should only occur if recv fails after telling us the data is there, lets @@ -216,3 +216,8 @@ void EthernetUDP::flush() } } +void EthernetUDP::flush() +{ + endPacket(); +} + diff --git a/libraries/Ethernet/src/EthernetUdp.h b/libraries/Ethernet/src/EthernetUdp.h index 8a6b7ab5a..1e928d88a 100644 --- a/libraries/Ethernet/src/EthernetUdp.h +++ b/libraries/Ethernet/src/EthernetUdp.h @@ -49,6 +49,9 @@ private: uint16_t _remotePort; // remote port for the incoming packet whilst it's being processed uint16_t _offset; // offset into the packet being sent uint16_t _remaining; // remaining bytes of incoming packet yet to be processed + +protected: + void clear_remaining(); public: EthernetUDP(); // Constructor From 08cdf153d41e41e9ab97d2eddf782eb8afdb9192 Mon Sep 17 00:00:00 2001 From: aguaviva Date: Mon, 18 Dec 2017 01:34:38 +0100 Subject: [PATCH 138/156] added int16_t i2s_available(); it returns the number of samples than can be (#3988) written before blocking --- cores/esp8266/core_esp8266_i2s.c | 4 ++++ cores/esp8266/i2s.h | 1 + 2 files changed, 5 insertions(+) diff --git a/cores/esp8266/core_esp8266_i2s.c b/cores/esp8266/core_esp8266_i2s.c index a154ac85d..119e8e78a 100644 --- a/cores/esp8266/core_esp8266_i2s.c +++ b/cores/esp8266/core_esp8266_i2s.c @@ -65,6 +65,10 @@ bool ICACHE_FLASH_ATTR i2s_is_empty(){ return (i2s_slc_queue_len >= SLC_BUF_CNT-1); } +int16_t ICACHE_FLASH_ATTR i2s_available(){ + return (SLC_BUF_CNT - i2s_slc_queue_len) * SLC_BUF_LEN; +} + uint32_t ICACHE_FLASH_ATTR i2s_slc_queue_next_item(){ //pop the top off the queue uint8_t i; uint32_t item = i2s_slc_queue[0]; diff --git a/cores/esp8266/i2s.h b/cores/esp8266/i2s.h index f248d590c..fd8e0ab0e 100644 --- a/cores/esp8266/i2s.h +++ b/cores/esp8266/i2s.h @@ -48,6 +48,7 @@ bool i2s_write_sample_nb(uint32_t sample);//same as above but does not block whe bool i2s_write_lr(int16_t left, int16_t right);//combines both channels and calls i2s_write_sample with the result bool i2s_is_full();//returns true if DMA is full and can not take more bytes (overflow) bool i2s_is_empty();//returns true if DMA is empty (underflow) +int16_t i2s_available();// returns the number of samples than can be written before blocking #ifdef __cplusplus } From f8b577b6c392fdec7070b29c01953c131867f2e8 Mon Sep 17 00:00:00 2001 From: david gauchard Date: Mon, 18 Dec 2017 04:47:56 +0100 Subject: [PATCH 139/156] fix WiFiClient::availableForWrite() with no connexion (#3985) fix #3983 --- libraries/ESP8266WiFi/src/WiFiClient.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/ESP8266WiFi/src/WiFiClient.cpp b/libraries/ESP8266WiFi/src/WiFiClient.cpp index e4b2d1d73..828cbccf3 100644 --- a/libraries/ESP8266WiFi/src/WiFiClient.cpp +++ b/libraries/ESP8266WiFi/src/WiFiClient.cpp @@ -156,7 +156,7 @@ bool WiFiClient::getNoDelay() { size_t WiFiClient::availableForWrite () { - return _client->availableForWrite(); + return _client? _client->availableForWrite(): 0; } size_t WiFiClient::write(uint8_t b) From 022ea5a872db0750e9f0f45d29d5dda4e0c35647 Mon Sep 17 00:00:00 2001 From: david gauchard Date: Mon, 18 Dec 2017 12:56:18 +0100 Subject: [PATCH 140/156] consequence of ::flush() update: fix potential double free (#3990) --- libraries/ESP8266WiFi/src/include/UdpContext.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/ESP8266WiFi/src/include/UdpContext.h b/libraries/ESP8266WiFi/src/include/UdpContext.h index cb527ab0a..95f342080 100644 --- a/libraries/ESP8266WiFi/src/include/UdpContext.h +++ b/libraries/ESP8266WiFi/src/include/UdpContext.h @@ -288,7 +288,8 @@ public: data_size -= will_copy; } } - pbuf_free(_tx_buf_head); + if (_tx_buf_head) + pbuf_free(_tx_buf_head); _tx_buf_head = 0; _tx_buf_cur = 0; _tx_buf_offset = 0; From 355232ff6d327a86e1bd0b5a924bbf44ce6b492f Mon Sep 17 00:00:00 2001 From: david gauchard Date: Mon, 18 Dec 2017 14:35:47 +0100 Subject: [PATCH 141/156] boards.txt: missing -DESP8266 + debug menu for -DNDEBUG (#3974) * boards.txt: add missing -DESP8266 - fix #3973 * + debug menu NoAssert-NDEBUG => -DNDEBUG fix #3978 and saves ram+flash on behalf of @earlephilhower --- boards.txt | 58 +++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 53 insertions(+), 5 deletions(-) diff --git a/boards.txt b/boards.txt index 416dd08ef..1e8aada7e 100644 --- a/boards.txt +++ b/boards.txt @@ -40,7 +40,7 @@ generic.menu.ResetMethod.nodemcu=nodemcu generic.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu generic.menu.CrystalFreq.26=26 MHz generic.menu.CrystalFreq.40=40 MHz -generic.menu.CrystalFreq.40.build.extra_flags=-DF_CRYSTAL=40000000 +generic.menu.CrystalFreq.40.build.extra_flags=-DF_CRYSTAL=40000000 -DESP8266 generic.menu.FlashFreq.40=40MHz generic.menu.FlashFreq.40.build.flash_freq=40 generic.menu.FlashFreq.80=80MHz @@ -240,6 +240,8 @@ generic.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDA generic.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA generic.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA generic.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +generic.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG +generic.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG generic.menu.UploadSpeed.115200=115200 generic.menu.UploadSpeed.115200.upload.speed=115200 generic.menu.UploadSpeed.9600=9600 @@ -283,7 +285,7 @@ esp8285.menu.ResetMethod.nodemcu=nodemcu esp8285.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu esp8285.menu.CrystalFreq.26=26 MHz esp8285.menu.CrystalFreq.40=40 MHz -esp8285.menu.CrystalFreq.40.build.extra_flags=-DF_CRYSTAL=40000000 +esp8285.menu.CrystalFreq.40.build.extra_flags=-DF_CRYSTAL=40000000 -DESP8266 esp8285.build.flash_mode=dout esp8285.build.flash_freq=40 esp8285.menu.FlashSize.1M0=1M (no SPIFFS) @@ -412,6 +414,8 @@ esp8285.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDA esp8285.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA esp8285.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +esp8285.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG +esp8285.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG esp8285.menu.UploadSpeed.115200=115200 esp8285.menu.UploadSpeed.115200.upload.speed=115200 esp8285.menu.UploadSpeed.9600=9600 @@ -541,6 +545,8 @@ espduino.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPD espduino.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA espduino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA espduino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +espduino.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG +espduino.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG espduino.menu.UploadSpeed.115200=115200 espduino.menu.UploadSpeed.115200.upload.speed=115200 espduino.menu.UploadSpeed.9600=9600 @@ -662,6 +668,8 @@ huzzah.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDAT huzzah.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA huzzah.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +huzzah.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG +huzzah.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG huzzah.menu.UploadSpeed.115200=115200 huzzah.menu.UploadSpeed.115200.upload.speed=115200 huzzah.menu.UploadSpeed.9600=9600 @@ -786,6 +794,8 @@ espresso_lite_v1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UP espresso_lite_v1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA espresso_lite_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +espresso_lite_v1.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG +espresso_lite_v1.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG espresso_lite_v1.menu.UploadSpeed.115200=115200 espresso_lite_v1.menu.UploadSpeed.115200.upload.speed=115200 espresso_lite_v1.menu.UploadSpeed.9600=9600 @@ -910,6 +920,8 @@ espresso_lite_v2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UP espresso_lite_v2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA espresso_lite_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +espresso_lite_v2.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG +espresso_lite_v2.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG espresso_lite_v2.menu.UploadSpeed.115200=115200 espresso_lite_v2.menu.UploadSpeed.115200.upload.speed=115200 espresso_lite_v2.menu.UploadSpeed.9600=9600 @@ -1034,6 +1046,8 @@ phoenix_v1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+U phoenix_v1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA phoenix_v1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +phoenix_v1.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG +phoenix_v1.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG phoenix_v1.menu.UploadSpeed.115200=115200 phoenix_v1.menu.UploadSpeed.115200.upload.speed=115200 phoenix_v1.menu.UploadSpeed.9600=9600 @@ -1158,6 +1172,8 @@ phoenix_v2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+U phoenix_v2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA phoenix_v2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +phoenix_v2.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG +phoenix_v2.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG phoenix_v2.menu.UploadSpeed.115200=115200 phoenix_v2.menu.UploadSpeed.115200.upload.speed=115200 phoenix_v2.menu.UploadSpeed.9600=9600 @@ -1279,6 +1295,8 @@ nodemcu.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDA nodemcu.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA nodemcu.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +nodemcu.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG +nodemcu.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG nodemcu.menu.UploadSpeed.115200=115200 nodemcu.menu.UploadSpeed.115200.upload.speed=115200 nodemcu.menu.UploadSpeed.9600=9600 @@ -1400,6 +1418,8 @@ nodemcuv2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UP nodemcuv2.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA nodemcuv2.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +nodemcuv2.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG +nodemcuv2.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG nodemcuv2.menu.UploadSpeed.115200=115200 nodemcuv2.menu.UploadSpeed.115200.upload.speed=115200 nodemcuv2.menu.UploadSpeed.9600=9600 @@ -1513,6 +1533,8 @@ modwifi.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDA modwifi.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA modwifi.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +modwifi.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG +modwifi.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG modwifi.menu.UploadSpeed.115200=115200 modwifi.menu.UploadSpeed.115200.upload.speed=115200 modwifi.menu.UploadSpeed.9600=9600 @@ -1639,6 +1661,8 @@ thing.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATE thing.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA thing.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA thing.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +thing.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG +thing.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG thing.menu.UploadSpeed.115200=115200 thing.menu.UploadSpeed.115200.upload.speed=115200 thing.menu.UploadSpeed.9600=9600 @@ -1765,6 +1789,8 @@ thingdev.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPD thingdev.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA thingdev.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +thingdev.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG +thingdev.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG thingdev.menu.UploadSpeed.115200=115200 thingdev.menu.UploadSpeed.115200.upload.speed=115200 thingdev.menu.UploadSpeed.9600=9600 @@ -1886,6 +1912,8 @@ esp210.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDAT esp210.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA esp210.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA esp210.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +esp210.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG +esp210.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG esp210.menu.UploadSpeed.57600=57600 esp210.menu.UploadSpeed.57600.upload.speed=57600 esp210.menu.UploadSpeed.9600=9600 @@ -2007,6 +2035,8 @@ d1_mini.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDA d1_mini.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA d1_mini.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +d1_mini.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG +d1_mini.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG d1_mini.menu.UploadSpeed.921600=921600 d1_mini.menu.UploadSpeed.921600.upload.speed=921600 d1_mini.menu.UploadSpeed.9600=9600 @@ -2120,6 +2150,8 @@ d1_mini_pro.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+ d1_mini_pro.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA d1_mini_pro.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA d1_mini_pro.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +d1_mini_pro.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG +d1_mini_pro.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG d1_mini_pro.menu.UploadSpeed.921600=921600 d1_mini_pro.menu.UploadSpeed.921600.upload.speed=921600 d1_mini_pro.menu.UploadSpeed.9600=9600 @@ -2286,6 +2318,8 @@ d1_mini_lite.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE d1_mini_lite.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA d1_mini_lite.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +d1_mini_lite.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG +d1_mini_lite.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG d1_mini_lite.menu.UploadSpeed.921600=921600 d1_mini_lite.menu.UploadSpeed.921600.upload.speed=921600 d1_mini_lite.menu.UploadSpeed.9600=9600 @@ -2407,6 +2441,8 @@ d1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+O d1.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA d1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA d1.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +d1.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG +d1.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG d1.menu.UploadSpeed.921600=921600 d1.menu.UploadSpeed.921600.upload.speed=921600 d1.menu.UploadSpeed.9600=9600 @@ -2531,6 +2567,8 @@ espino.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDAT espino.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA espino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA espino.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +espino.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG +espino.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG espino.menu.UploadSpeed.115200=115200 espino.menu.UploadSpeed.115200.upload.speed=115200 espino.menu.UploadSpeed.9600=9600 @@ -2652,6 +2690,8 @@ espinotee.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UP espinotee.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA espinotee.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +espinotee.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG +espinotee.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG espinotee.menu.UploadSpeed.115200=115200 espinotee.menu.UploadSpeed.115200.upload.speed=115200 espinotee.menu.UploadSpeed.9600=9600 @@ -2837,6 +2877,8 @@ wifinfo.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDA wifinfo.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA wifinfo.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +wifinfo.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG +wifinfo.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG wifinfo.menu.UploadSpeed.115200=115200 wifinfo.menu.UploadSpeed.115200.upload.speed=115200 wifinfo.menu.UploadSpeed.9600=9600 @@ -2859,11 +2901,11 @@ wifinfo.menu.UploadSpeed.921600.upload.speed=921600 ############################################################## arduino-esp8266.name=Arduino arduino-esp8266.menu.BoardModel.starottodeved.build.board=ESP8266_ARDUINO_STAR_OTTO -arduino-esp8266.menu.BoardModel.primo.build.extra_flags=-DF_CRYSTAL=40000000 -arduino-esp8266.menu.BoardModel.starottodeved.build.extra_flags=-DF_CRYSTAL=40000000 +arduino-esp8266.menu.BoardModel.primo.build.extra_flags=-DF_CRYSTAL=40000000 -DESP8266 +arduino-esp8266.menu.BoardModel.starottodeved.build.extra_flags=-DF_CRYSTAL=40000000 -DESP8266 arduino-esp8266.menu.BoardModel.starottodeved.build.variant=arduino_uart arduino-esp8266.menu.BoardModel.unowifideved.build.board=ESP8266_ARDUINO_UNOWIFI -arduino-esp8266.menu.BoardModel.unowifideved.build.extra_flags=-DF_CRYSTAL=40000000 +arduino-esp8266.menu.BoardModel.unowifideved.build.extra_flags=-DF_CRYSTAL=40000000 -DESP8266 arduino-esp8266.menu.BoardModel.primo=Primo arduino-esp8266.menu.BoardModel.unowifideved.build.variant=arduino_uart arduino-esp8266.menu.BoardModel.primo.build.variant=arduino_spi @@ -2969,6 +3011,8 @@ arduino-esp8266.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPD arduino-esp8266.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA arduino-esp8266.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +arduino-esp8266.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG +arduino-esp8266.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG arduino-esp8266.menu.UploadSpeed.115200=115200 arduino-esp8266.menu.UploadSpeed.115200.upload.speed=115200 arduino-esp8266.menu.UploadSpeed.9600=9600 @@ -3095,6 +3139,8 @@ gen4iod.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDA gen4iod.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA gen4iod.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +gen4iod.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG +gen4iod.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG gen4iod.menu.UploadSpeed.115200=115200 gen4iod.menu.UploadSpeed.115200.upload.speed=115200 gen4iod.menu.UploadSpeed.9600=9600 @@ -3216,6 +3262,8 @@ oak.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA=CORE+WIFI+HTTP_UPDATE+UPDATER+ oak.menu.DebugLevel.COREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA oak.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA=SSL+TLS_MEM+HTTP_CLIENT+HTTP_SERVER+CORE+WIFI+HTTP_UPDATE+UPDATER+OTA oak.menu.DebugLevel.SSLTLS_MEMHTTP_CLIENTHTTP_SERVERCOREWIFIHTTP_UPDATEUPDATEROTA.build.debug_level= -DDEBUG_ESP_SSL -DDEBUG_ESP_TLS_MEM -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA +oak.menu.DebugLevel.NoAssert-NDEBUG=NoAssert-NDEBUG +oak.menu.DebugLevel.NoAssert-NDEBUG.build.debug_level= -DNDEBUG oak.menu.UploadSpeed.921600=921600 oak.menu.UploadSpeed.921600.upload.speed=921600 oak.menu.UploadSpeed.9600=9600 From d0a4900e2df2303b34636e6c94c39a6b985a663b Mon Sep 17 00:00:00 2001 From: Virgil Borcea Date: Thu, 21 Dec 2017 03:28:37 +0200 Subject: [PATCH 142/156] * extra validation breaking POST/DELETE rest calls (#4003) --- libraries/ESP8266WebServer/src/Parsing.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/libraries/ESP8266WebServer/src/Parsing.cpp b/libraries/ESP8266WebServer/src/Parsing.cpp index eae25de06..581439227 100644 --- a/libraries/ESP8266WebServer/src/Parsing.cpp +++ b/libraries/ESP8266WebServer/src/Parsing.cpp @@ -179,8 +179,6 @@ bool ESP8266WebServer::_parseRequest(WiFiClient& client) { if (!isForm){ size_t plainLength; char* plainBuf = readBytesWithTimeout(client, contentLength, plainLength, HTTP_MAX_POST_WAIT); - if (!plainBuf) - return false; if (plainLength < contentLength) { free(plainBuf); return false; From d5bb4a99f64a843e28b119d174b90c910516458f Mon Sep 17 00:00:00 2001 From: david gauchard Date: Thu, 21 Dec 2017 20:27:58 +0100 Subject: [PATCH 143/156] in example properly wait for NTP to be set (#4000) fix #3905 --- .../examples/HTTPSRequestCACert/HTTPSRequestCACert.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/HTTPSRequestCACert.ino b/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/HTTPSRequestCACert.ino index 2fc0f2eb0..1a63e6f65 100644 --- a/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/HTTPSRequestCACert.ino +++ b/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/HTTPSRequestCACert.ino @@ -53,7 +53,7 @@ void setup() { Serial.print("Setting time using SNTP"); configTime(8 * 3600, 0, "pool.ntp.org", "time.nist.gov"); time_t now = time(nullptr); - while (now < 1000) { + while (now < 8 * 3600 * 2) { delay(500); Serial.print("."); now = time(nullptr); From 9913e5210779d2f3c4197760d6813270dbba6232 Mon Sep 17 00:00:00 2001 From: david gauchard Date: Sun, 24 Dec 2017 21:48:25 +0100 Subject: [PATCH 144/156] handle tv.tv_usec in settimeofday() (#4001) optional settimeofday()'s callback fix #1679 --- cores/esp8266/coredecls.h | 13 +++++++++- cores/esp8266/sntp-lwip2.c | 21 ++++++++++++---- cores/esp8266/time.c | 24 +++++++------------ .../examples/NTP-TZ-DST/NTP-TZ-DST.ino | 14 ++++++++++- 4 files changed, 49 insertions(+), 23 deletions(-) diff --git a/cores/esp8266/coredecls.h b/cores/esp8266/coredecls.h index 809b1b2f6..9e06419ca 100644 --- a/cores/esp8266/coredecls.h +++ b/cores/esp8266/coredecls.h @@ -2,8 +2,19 @@ #ifndef __COREDECLS_H #define __COREDECLS_H -extern bool s_bootTimeSet; +#ifdef __cplusplus +extern "C" { +#endif // TODO: put declarations here, get rid of -Wno-implicit-function-declaration +extern bool timeshift64_is_set; + +void tune_timeshift64 (uint64_t now_us); +void settimeofday_cb (void (*cb)(void)); + +#ifdef __cplusplus +} +#endif + #endif // __COREDECLS_H diff --git a/cores/esp8266/sntp-lwip2.c b/cores/esp8266/sntp-lwip2.c index 0cb1a7165..2eabf1241 100644 --- a/cores/esp8266/sntp-lwip2.c +++ b/cores/esp8266/sntp-lwip2.c @@ -34,6 +34,7 @@ * TODOs: * settimeofday(): handle tv->tv_usec * sntp_mktm_r(): review, fix DST handling (this one is currently untouched from lwip-1.4) + * implement adjtime() */ #include @@ -42,6 +43,13 @@ #include #include "coredecls.h" +static void (*_settimeofday_cb)(void) = NULL; + +void settimeofday_cb (void (*cb)(void)) +{ + _settimeofday_cb = cb; +} + #if LWIP_VERSION_MAJOR == 1 #include @@ -58,10 +66,11 @@ int settimeofday(const struct timeval* tv, const struct timezone* tz) } if (tv) /* after*/ { + // can't call lwip1.4's static sntp_set_system_time() os_printf(stod14); // reset time subsystem - s_bootTimeSet = false; + timeshift64_is_set = false; return -1; } @@ -440,11 +449,13 @@ int settimeofday(const struct timeval* tv, const struct timezone* tz) } if (tv) /* after*/ { - sntp_set_system_time(tv->tv_sec); - // XXX FIXME TODO: efficiently use provided tv->tv_sec - // reset time subsystem - s_bootTimeSet = false; + tune_timeshift64(tv->tv_sec * 1000000ULL + tv->tv_usec); + + sntp_set_system_time(tv->tv_sec); + + if (_settimeofday_cb) + _settimeofday_cb(); } return 0; } diff --git a/cores/esp8266/time.c b/cores/esp8266/time.c index ab3fdfeca..19b0dee52 100644 --- a/cores/esp8266/time.c +++ b/cores/esp8266/time.c @@ -37,22 +37,13 @@ extern uint64_t micros64(); // time gap in seconds from 01.01.1900 (NTP time) to 01.01.1970 (UNIX time) #define DIFF1900TO1970 2208988800UL -bool s_bootTimeSet = false; -static uint64_t s_bootTime_us = 0; +bool timeshift64_is_set = false; +static uint64_t timeshift64 = 0; -// calculate offset used in gettimeofday -static void ensureBootTimeIsSet() +void tune_timeshift64 (uint64_t now_us) { - // Check just a bool flag instead of the full 64-bit s_bootTime for zero. - if (!s_bootTimeSet) - { - time_t now_s = sntp_get_current_timestamp(); - if (now_s) - { - s_bootTime_us = now_s * 1000000ULL - micros64(); - s_bootTimeSet = true; - } - } + timeshift64 = now_us - micros64(); + timeshift64_is_set = true; } static void setServer(int id, const char* name_or_ip) @@ -102,8 +93,9 @@ int _gettimeofday_r(struct _reent* unused, struct timeval *tp, void *tzp) (void) tzp; if (tp) { - ensureBootTimeIsSet(); - uint64_t currentTime_us = s_bootTime_us + micros64(); + if (!timeshift64_is_set) + tune_timeshift64(sntp_get_current_timestamp() * 1000000ULL); + uint64_t currentTime_us = timeshift64 + micros64(); tp->tv_sec = currentTime_us / 1000000ULL; tp->tv_usec = currentTime_us % 1000000ULL; } diff --git a/libraries/esp8266/examples/NTP-TZ-DST/NTP-TZ-DST.ino b/libraries/esp8266/examples/NTP-TZ-DST/NTP-TZ-DST.ino index 254eb65fe..ebcbd59f2 100644 --- a/libraries/esp8266/examples/NTP-TZ-DST/NTP-TZ-DST.ino +++ b/libraries/esp8266/examples/NTP-TZ-DST/NTP-TZ-DST.ino @@ -12,9 +12,10 @@ This example code is in the public domain. */ +#include #include // time() ctime() #include // struct timeval -#include +#include // settimeofday_cb() //////////////////////////////////////////////////////// @@ -32,8 +33,19 @@ #define TZ_SEC ((TZ)*3600) #define DST_SEC ((DST_MN)*60) +timeval cbtime; // time set in callback +bool cbtime_set = false; + +void time_is_set (void) +{ + gettimeofday(&cbtime, NULL); + cbtime_set = true; + Serial.println("------------------ settimeofday() was called ------------------"); +} + void setup() { Serial.begin(115200); + settimeofday_cb(time_is_set); #if NTP0_OR_LOCAL1 // local From e4043e9ba7d91a362d7167edd7777138a577b18c Mon Sep 17 00:00:00 2001 From: OverEasy Date: Mon, 25 Dec 2017 22:38:07 -0500 Subject: [PATCH 145/156] Fix boundary condition on resize (#4016) cbuf.size() must be at least one byte larger than cbuf.available() for logic to work. reject request to resize = available. --- cores/esp8266/cbuf.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cores/esp8266/cbuf.cpp b/cores/esp8266/cbuf.cpp index ca5977df4..e655ca6fc 100644 --- a/cores/esp8266/cbuf.cpp +++ b/cores/esp8266/cbuf.cpp @@ -39,7 +39,7 @@ size_t cbuf::resize(size_t newSize) { // not lose any data // if data can be lost use remove or flush before resize - if((newSize < bytes_available) || (newSize == _size)) { + if((newSize <= bytes_available) || (newSize == _size)) { return _size; } From ddda3749857d4950c8278a8a651a1e1ba122252d Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Tue, 26 Dec 2017 15:28:18 +0100 Subject: [PATCH 146/156] WiFiClientSecure: don't trash unread decrypted data when writing (#4024) * WiFiClientSecure: don't decrypt when testing for 'connected' * WiFiClientSecure: don't trash unread decrypted data when writing When application requests to write data, check if there is any unread decrypted data left. If there is, don't write immediately, but save the data to be written. When all decrypted data has been consumed by the application, send out the saved outgoing data. Fixes https://github.com/esp8266/Arduino/issues/2256. --- .../ESP8266WiFi/src/WiFiClientSecure.cpp | 110 +++++++++++++++++- 1 file changed, 108 insertions(+), 2 deletions(-) diff --git a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp index e7bcb1a4e..55d16adda 100644 --- a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp +++ b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp @@ -27,6 +27,7 @@ extern "C" #include "osapi.h" #include "ets_sys.h" } +#include #include #include "debug.h" #include "ESP8266WiFi.h" @@ -50,6 +51,26 @@ extern "C" #define SSL_DEBUG_OPTS 0 #endif + +typedef struct BufferItem +{ + BufferItem(const uint8_t* data_, size_t size_) + : size(size_), data(new uint8_t[size]) + { + if (data.get() != nullptr) { + memcpy(data.get(), data_, size); + } else { + DEBUGV(":wcs alloc %d failed\r\n", size_); + size = 0; + } + } + + size_t size; + std::unique_ptr data; +} BufferItem; + +typedef std::list BufferList; + class SSLContext { public: @@ -139,6 +160,10 @@ public: _available -= will_copy; if (_available == 0) { _read_ptr = nullptr; + /* Send pending outgoing data, if any */ + if (_hasWriteBuffers()) { + _writeBuffersSend(); + } } return will_copy; } @@ -155,10 +180,34 @@ public: --_available; if (_available == 0) { _read_ptr = nullptr; + /* Send pending outgoing data, if any */ + if (_hasWriteBuffers()) { + _writeBuffersSend(); + } } return result; } + int write(const uint8_t* src, size_t size) + { + if (!_available) { + if (_hasWriteBuffers()) { + int rc = _writeBuffersSend(); + if (rc < 0) { + return rc; + } + } + return _write(src, size); + } + /* Some received data is still present in the axtls fragment buffer. + We can't call ssl_write now, as that will overwrite the contents of + the fragment buffer, corrupting the received data. + Save a copy of the outgoing data, and call ssl_write when all + recevied data has been consumed by the application. + */ + return _writeBufferAdd(src, size); + } + int peek() { if (!_available) { @@ -193,6 +242,12 @@ public: return cb; } + // similar to availble, but doesn't return exact size + bool hasData() + { + return _available > 0 || (s_io_ctx && s_io_ctx->getSize() > 0); + } + bool loadObject(int type, Stream& stream, size_t size) { std::unique_ptr buf(new uint8_t[size]); @@ -282,12 +337,63 @@ protected: return _available; } + int _write(const uint8_t* src, size_t size) + { + if (!_ssl) { + return 0; + } + + int rc = ssl_write(_ssl, src, size); + if (rc >= 0) { + return rc; + } + DEBUGV(":wcs write rc=%d\r\n", rc); + return rc; + } + + int _writeBufferAdd(const uint8_t* data, size_t size) + { + if (!_ssl) { + return 0; + } + + _writeBuffers.emplace_back(data, size); + if (_writeBuffers.back().data.get() == nullptr) { + _writeBuffers.pop_back(); + return 0; + } + return size; + } + + int _writeBuffersSend() + { + while (!_writeBuffers.empty()) { + auto& first = _writeBuffers.front(); + int rc = _write(first.data.get(), first.size); + _writeBuffers.pop_front(); + if (rc < 0) { + if (_hasWriteBuffers()) { + DEBUGV(":wcs _writeBuffersSend dropping unsent data\r\n"); + _writeBuffers.clear(); + } + return rc; + } + } + return 0; + } + + bool _hasWriteBuffers() + { + return !_writeBuffers.empty(); + } + static SSL_CTX* _ssl_ctx; static int _ssl_ctx_refcnt; SSL* _ssl = nullptr; int _refcnt = 0; const uint8_t* _read_ptr = nullptr; size_t _available = 0; + BufferList _writeBuffers; bool _allowSelfSignedCerts = false; static ClientContext* s_io_ctx; }; @@ -371,7 +477,7 @@ size_t WiFiClientSecure::write(const uint8_t *buf, size_t size) return 0; } - int rc = ssl_write(*_ssl, buf, size); + int rc = _ssl->write(buf, size); if (rc >= 0) { return rc; } @@ -458,7 +564,7 @@ err x N N uint8_t WiFiClientSecure::connected() { if (_ssl) { - if (_ssl->available()) { + if (_ssl->hasData()) { return true; } if (_client && _client->state() == ESTABLISHED && _ssl->connected()) { From fac64900dd1d56d2724755346b72866a08d8db94 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Tue, 26 Dec 2017 18:01:28 +0100 Subject: [PATCH 147/156] Configurable WiFiClientSecure connect timeout, better default value (#4027) * WiFiClientSecure: use _timeout setting when connecting This timeout value can be customized via a call to setTimeout function. Closes https://github.com/esp8266/Arduino/issues/3944. * WiFiClientSecure: increase default connection timeout to 15 sec --- libraries/ESP8266WiFi/src/WiFiClientSecure.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp index 55d16adda..d94e41f8f 100644 --- a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp +++ b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp @@ -404,6 +404,8 @@ ClientContext* SSLContext::s_io_ctx = nullptr; WiFiClientSecure::WiFiClientSecure() { + // TLS handshake may take more than the 5 second default timeout + _timeout = 15000; } WiFiClientSecure::~WiFiClientSecure() @@ -459,7 +461,7 @@ int WiFiClientSecure::_connectSSL(const char* hostName) _ssl = new SSLContext; _ssl->ref(); } - _ssl->connect(_client, hostName, 5000); + _ssl->connect(_client, hostName, _timeout); auto status = ssl_handshake_status(*_ssl); if (status != SSL_OK) { From 9b3583d22741055e83419bfcd3aaa44d3337a6e9 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Thu, 14 Dec 2017 11:10:47 +0800 Subject: [PATCH 148/156] ESP8266WebServer: add CONTENT_LENGTH_UNKNOWN keyword --- libraries/ESP8266WebServer/keywords.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/ESP8266WebServer/keywords.txt b/libraries/ESP8266WebServer/keywords.txt index 22e3d74e4..4f35e1ffe 100644 --- a/libraries/ESP8266WebServer/keywords.txt +++ b/libraries/ESP8266WebServer/keywords.txt @@ -34,3 +34,4 @@ onNotFound KEYWORD2 HTTP_GET LITERAL1 HTTP_POST LITERAL1 HTTP_ANY LITERAL1 +CONTENT_LENGTH_UNKNOWN LITERAL1 From 4c08389961c60adeb343fc9581ca2e3856e09e04 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Thu, 14 Dec 2017 11:10:01 +0800 Subject: [PATCH 149/156] ESP8266WebServer: send empty chunk when done sending chunked response Fixes https://github.com/esp8266/Arduino/issues/3225 --- .../ESP8266WebServer/src/ESP8266WebServer.cpp | 32 +++++++++++++------ .../ESP8266WebServer/src/ESP8266WebServer.h | 1 + 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp b/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp index 6b97505ee..d1a0f0435 100644 --- a/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp +++ b/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp @@ -433,6 +433,9 @@ void ESP8266WebServer::sendContent(const String& content) { _currentClient.write(content.c_str(), len); if(_chunked){ _currentClient.write(footer, 2); + if (len == 0) { + _chunked = false; + } } } @@ -453,6 +456,9 @@ void ESP8266WebServer::sendContent_P(PGM_P content, size_t size) { _currentClient.write_P(content, size); if(_chunked){ _currentClient.write(footer, 2); + if (size == 0) { + _chunked = false; + } } } @@ -560,19 +566,27 @@ void ESP8266WebServer::_handleRequest() { } #endif } - - if (!handled) { - if(_notFoundHandler) { - _notFoundHandler(); - } - else { - send(404, "text/plain", String("Not found: ") + _currentUri); - } + if (!handled && _notFoundHandler) { + _notFoundHandler(); + handled = true; + } + if (!handled) { + send(404, "text/plain", String("Not found: ") + _currentUri); + handled = true; + } + if (handled) { + _finalizeResponse(); } - _currentUri = String(); } + +void ESP8266WebServer::_finalizeResponse() { + if (_chunked) { + sendContent(""); + } +} + String ESP8266WebServer::_responseCodeToString(int code) { switch (code) { case 100: return F("Continue"); diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer.h b/libraries/ESP8266WebServer/src/ESP8266WebServer.h index 6eeb9f978..6ccb7d06d 100644 --- a/libraries/ESP8266WebServer/src/ESP8266WebServer.h +++ b/libraries/ESP8266WebServer/src/ESP8266WebServer.h @@ -142,6 +142,7 @@ template size_t streamFile(T &file, const String& contentType){ protected: void _addRequestHandler(RequestHandler* handler); void _handleRequest(); + void _finalizeResponse(); bool _parseRequest(WiFiClient& client); void _parseArguments(String data); static String _responseCodeToString(int code); From db1cfc77729134a9b5b74047255663c7bd97ac29 Mon Sep 17 00:00:00 2001 From: Christopher Liebman Date: Mon, 4 Dec 2017 12:24:08 -0800 Subject: [PATCH 150/156] handle empty uri http.begin("http://www.google.com") yields an empty uri and makes a broken request "GET HTTPi/1.1" --- libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp b/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp index ef4c55157..0abc66fa4 100644 --- a/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp +++ b/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp @@ -44,6 +44,8 @@ public: virtual bool verify(WiFiClient& client, const char* host) { + (void)client; + (void)host; return true; } }; @@ -167,6 +169,7 @@ bool HTTPClient::beginInternal(String url, const char* expectedProtocol) _host = host; } _uri = url; + if (_protocol != expectedProtocol) { DEBUG_HTTPCLIENT("[HTTP-Client][begin] unexpected protocol: %s, expected %s\n", _protocol.c_str(), expectedProtocol); return false; @@ -871,7 +874,7 @@ bool HTTPClient::sendHeader(const char * type) return false; } - String header = String(type) + " " + _uri + F(" HTTP/1."); + String header = String(type) + " " + (_uri.length() ? _uri : F("/")) + F(" HTTP/1."); if(_useHTTP10) { header += "0"; @@ -908,6 +911,8 @@ bool HTTPClient::sendHeader(const char * type) header += _headers + "\r\n"; + DEBUG_HTTPCLIENT("[HTTP-Client] sending request header\n-----\n%s-----\n", header.c_str()); + return (_tcp->write((const uint8_t *) header.c_str(), header.length()) == header.length()); } From 7fc23c6f7aad85cdc6dc9260e9dc1d3da6f91762 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Thu, 28 Dec 2017 03:15:11 +0100 Subject: [PATCH 151/156] WiFiUDP: fix crash when calling destinationIP with no packet available (#4036) Fixes https://github.com/esp8266/Arduino/issues/3989. --- libraries/ESP8266WiFi/src/include/UdpContext.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libraries/ESP8266WiFi/src/include/UdpContext.h b/libraries/ESP8266WiFi/src/include/UdpContext.h index 95f342080..31fad1789 100644 --- a/libraries/ESP8266WiFi/src/include/UdpContext.h +++ b/libraries/ESP8266WiFi/src/include/UdpContext.h @@ -163,6 +163,9 @@ public: uint32_t getDestAddress() { + if (!_rx_buf) + return 0; + ip_hdr* iphdr = GET_IP_HDR(_rx_buf); return iphdr->dest.addr; } From 237f7d9b18ef2bba74ace907b401adb585397930 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Thu, 28 Dec 2017 03:53:31 +0100 Subject: [PATCH 152/156] ESP8266HTTPClient: allow changing connection timeout using setTimeout (#4038) Call Client::setTimeout before connection to influence connection timeout. Closes https://github.com/esp8266/Arduino/issues/3451. --- libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp b/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp index 0abc66fa4..ad8b14892 100644 --- a/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp +++ b/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp @@ -840,6 +840,7 @@ bool HTTPClient::connect(void) } _tcp = _transportTraits->create(); + _tcp->setTimeout(_tcpTimeout); if(!_tcp->connect(_host.c_str(), _port)) { DEBUG_HTTPCLIENT("[HTTP-Client] failed connect to %s:%u\n", _host.c_str(), _port); @@ -854,8 +855,6 @@ bool HTTPClient::connect(void) return false; } - // set Timeout for readBytesUntil and readStringUntil - _tcp->setTimeout(_tcpTimeout); #ifdef ESP8266 _tcp->setNoDelay(true); From a7984b65dceee7620b27f2e93358f2ad78a63671 Mon Sep 17 00:00:00 2001 From: Develo Date: Thu, 28 Dec 2017 00:41:45 -0300 Subject: [PATCH 153/156] Update a02-my-esp-crashes.rst (#3950) * Update a02-my-esp-crashes.rst Added section Other causes for crashes with ISR, Async callbacks, memory guidelines, stack. Fixes #1388 . * Update a02-my-esp-crashes.rst Minor typos and text fixes * Update a02-my-esp-crashes.rst Fixed stack size typo --- doc/faq/a02-my-esp-crashes.rst | 72 ++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/doc/faq/a02-my-esp-crashes.rst b/doc/faq/a02-my-esp-crashes.rst index ef86f017f..924b85f5d 100644 --- a/doc/faq/a02-my-esp-crashes.rst +++ b/doc/faq/a02-my-esp-crashes.rst @@ -10,6 +10,7 @@ My ESP crashes running some code. How to troubleshoot it? - `Exception <#exception>`__ - `Watchdog <#watchdog>`__ - `Check Where the Code Crashes <#check-where-the-code-crashes>`__ +- `Other Causes for Crashes <#other-causes-for-crashes>`__ - `If at the Wall, Enter an Issue Report <#if-at-the-wall-enter-an-issue-report>`__ - `Conclusion <#conclusion>`__ @@ -229,6 +230,77 @@ dropped. The same procedure applies to crashes caused by exceptions. able to correctly decode the stack trace dropped by some other application not compiled and loaded from your Arduino IDE. + +Other Causes for Crashes +~~~~~~~~~~~~~~~~~~~~~~~~ + +Interrupt Service Routines + By default, all functions are compiled into flash, which means that the + cache may kick in for that code. However, the cache currently can't be used + during hardware interrupts. That means that, if you use a hardware ISR, such as + attachInterrupt(gpio, myISR, CHANGE) for a GPIO change, the ISR must have the + ICACHE_RAM_ATTR attribute declared. Not only that, but the entire function tree + called from the ISR must also have the ICACHE_RAM_ATTR declared. + Be aware that every function that has this attribute reduces available memory. + + In addition, it is not possible to execute delay() or yield() from an ISR, + or do blocking operations, or operations that disable the interrupts, e.g.: read + a DHT. + + Finally, an ISR has very high restrictions on timing for the executed code, meaning + that executed code should not take longer than a very few microseconds. It is + considered best practice to set a flag within the ISR, and then from within the loop() + check and clear that flag, and execute code. + +Asynchronous Callbacks + Asynchronous CBs, such as for the Ticker or ESPAsync* libs, have looser restrictions + than ISRs, but some restrictions still apply. + It is not possible to execute delay() or yield() from an asynchronous callback. + Timing is not as tight as an ISR, but it should remain below a few milliseconds. This + is a guideline. The hard timing requirements depend on the WiFi configuration and + amount of traffic. In general, the CPU must not be hogged by the user code, as the + longer it is away from servicing the WiFi stack, the more likely that memory corruption + can happen. + +Memory, memory, memory + Running out of heap is the most common cause for crashes. Because the build process for + the ESP leaves out exceptions (they use memory), memory allocations that fail will do + so silently. A typical example is when setting or concatenating a large String. If + allocation has failed internally, then the internal string copy can corrupt data, and + the ESP will crash. + + In addition, doing many String concatenations in sequence, e.g.: using operator+() + multiple times, will cause memory fragmentation. When that happens, allocations may + silently fail even though there is enough total heap available. The reason for the + failure is that an allocation requires finding a single free memory block that is large + enough for the size being requested. A sequence of String concatenations causes many + allocations/deallocations/reallocations, which makes "holes" in the memory map. After + many such operations, it can happen that all available holes are too small to comply + with the requested size, even though the sum of all holes is greater than the requested + size. + + So why do these silent failures exist? On the one hand, there are specific interfaces that + must be adhered to. For example, the String object methods don't allow for error handling + at the user application level (i.e.: no old-school error returns). + On the other hand, some libraries don't have the allocation code accessible for + modification. For example, std::vector is available for use. The standard implementations + rely on exceptions for error handling, which is not available for the ESP, and in any + case there is no access to the underlying code. + +*Some techniques for reducing memory usage* + + * Don't use const char * with literals. Instead, use const char[] PROGMEM. This is particularly true if you intend to, e.g.: embed html strings. + * Don't use global static arrays, such as uint8_t buffer[1024]. Instead, allocate dynamically. This forces you to think about the size of the array, and its scope (lifetime), so that it gets released when it's no longer needed. If you are not certain about dynamic allocation, use std libs (e.g.: std:vector, std::string), or smart pointers. They are slightly less memory efficient than dynamically allocating yourself, but the provided memory safety is well worth it. + * If you use std libs like std::vector, make sure to call its ::reserve() method before filling it. This allows allocating only once, which reduces mem fragmentation, and makes sure that there are no empty unused slots left over in the container at the end. + +Stack +   The amount of stack in the ESP is tiny at only 4KB. For normal developement in large systems, it + is good practice to use and abuse the stack, because it is faster for allocation/deallocation, the scope of the object is well defined, and deallocation automatically happens in reverse order as allocation, which means no mem fragmentation. However, with the tiny amount of stack available in the ESP, that practice is not really viable, at least not for big objects. + * Large objects that have internally managed memory, such as String, std::string, std::vector, etc, are ok on the stack, because they internally allocate their buffers on the heap. + * Large arrays on the stack, such as uint8_t buffer[2048] should be avoided on the stack and be dynamically allocated (consider smart pointers). + * Objects that have large data members, such as large arrays, should be avoided on the stack, and be dynamicaly allocated (consider smart pointers). + + If at the Wall, Enter an Issue Report ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From 3838e58f62ca9fef905fcd005b613897963bb65a Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Thu, 28 Dec 2017 05:45:49 +0100 Subject: [PATCH 154/156] WiFiClientSecure: don't use the broken max_fragment_length extension (#4033) axTLS does not correctly implement max_fragment_length extension. This causes servers which understand this extension (currently GnuTLS- and WolfSSL-based) to reject the client hello. Until this is fixed in axTLS, remove the call to enable this extension from WiFiClientSecure. Fixes https://github.com/esp8266/Arduino/issues/3932. --- libraries/ESP8266WiFi/src/WiFiClientSecure.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp index d94e41f8f..cbe4631d8 100644 --- a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp +++ b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp @@ -113,7 +113,6 @@ public: { SSL_EXTENSIONS* ext = ssl_ext_new(); ssl_ext_set_host_name(ext, hostName); - ssl_ext_set_max_fragment_size(ext, 4096); if (_ssl) { /* Creating a new TLS session on top of a new TCP connection. ssl_free will want to send a close notify alert, but the old TCP connection From 7dd50360b9e9853abf60417646712161ff89ab29 Mon Sep 17 00:00:00 2001 From: Hans Winzell Date: Thu, 28 Dec 2017 13:47:10 +0100 Subject: [PATCH 155/156] Fix bug in WiFiClientBasic.ino (#3902) --- .../ESP8266WiFi/examples/WiFiClientBasic/WiFiClientBasic.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/ESP8266WiFi/examples/WiFiClientBasic/WiFiClientBasic.ino b/libraries/ESP8266WiFi/examples/WiFiClientBasic/WiFiClientBasic.ino index 178b2e661..7fb1a02fd 100644 --- a/libraries/ESP8266WiFi/examples/WiFiClientBasic/WiFiClientBasic.ino +++ b/libraries/ESP8266WiFi/examples/WiFiClientBasic/WiFiClientBasic.ino @@ -54,11 +54,11 @@ void loop() { } // This will send the request to the server - client.print("Send this data to server"); + client.println("Send this data to server"); //read back one line from server String line = client.readStringUntil('\r'); - client.println(line); + Serial.println(line); Serial.println("closing connection"); client.stop(); From 1540369c4012fbf45a8c1e4e058368631b548318 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Thu, 28 Dec 2017 16:21:55 +0100 Subject: [PATCH 156/156] Set architecture=esp8266 for bundled SD and Ethernet libraries (#4035) Fixes https://github.com/esp8266/Arduino/issues/3868. --- libraries/Ethernet/library.properties | 2 +- libraries/SD/library.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/Ethernet/library.properties b/libraries/Ethernet/library.properties index 1b48e875e..17fcae100 100644 --- a/libraries/Ethernet/library.properties +++ b/libraries/Ethernet/library.properties @@ -6,4 +6,4 @@ sentence=Enables network connection (local and Internet) using the Arduino Ether paragraph=With this library you can use the Arduino Ethernet (shield or board) to connect to Internet. The library provides both Client and server functionalities. The library permits you to connect to a local network also with DHCP and to resolve DNS. category=Communication url=http://www.arduino.cc/en/Reference/Ethernet -architectures=* +architectures=esp8266 diff --git a/libraries/SD/library.properties b/libraries/SD/library.properties index 47342171e..40891c831 100644 --- a/libraries/SD/library.properties +++ b/libraries/SD/library.properties @@ -6,4 +6,4 @@ sentence=Enables reading and writing on SD cards. For all Arduino boards. paragraph=Once an SD memory card is connected to the SPI interfare of the Arduino board you are enabled to create files and read/write on them. You can also move through directories on the SD card. category=Data Storage url=http://www.arduino.cc/en/Reference/SD -architectures=* +architectures=esp8266
  2. nTYs?^Y8xi{&^f%e;>O)$PAHG( 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 OBfTKNR}qg2@c#qPSyj;h literal 0 HcmV?d00001 diff --git a/tools/sdk/lwip2/include/README.md b/tools/sdk/lwip2/include/README.md new file mode 100644 index 000000000..8cc8ecd2d --- /dev/null +++ b/tools/sdk/lwip2/include/README.md @@ -0,0 +1 @@ +warning: this directory is re/over/written from lwip2 builder upon lwip2 rebuild diff --git a/tools/sdk/lwip2/include/arch/cc.h b/tools/sdk/lwip2/include/arch/cc.h new file mode 100644 index 000000000..98046e42c --- /dev/null +++ b/tools/sdk/lwip2/include/arch/cc.h @@ -0,0 +1,145 @@ + +/* + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products +derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. + +author: d. gauchard + +*/ + +// version for esp8266 sdk-2.0.0(656edbf) + +#ifndef LWIP2_ARCH_CC_H +#define LWIP2_ARCH_CC_H + +#include "stdint.h" + +#include "lwip-err-t.h" + +#ifdef LWIP_BUILD + +// define LWIP_BUILD only when building LWIP +// otherwise include files below would conflict +// with standard headers like atoi() +#ifdef __cplusplus +extern "C" +{ +#endif +#include "ets_sys.h" +#include "osapi.h" +#include "esp-missing.h" +#ifdef __cplusplus +} +#endif + +void sntp_set_system_time (uint32_t t); + +#endif // defined(LWIP_BUILD) + +#include "mem.h" // useful for os_malloc used in esp-arduino's mDNS + +typedef uint32_t sys_prot_t; // not really used +#define SYS_ARCH_DECL_PROTECT(lev) +#define SYS_ARCH_PROTECT(lev) os_intr_lock() +#define SYS_ARCH_UNPROTECT(lev) os_intr_unlock() + +/////////////////////////////// +//// DEBUG +#include "gluedebug.h" + +#if ULWIPDEBUG // debug 1:on or 0 +#define LWIP_DEBUG 1 +#define LWIP_PLATFORM_DIAG(x) do { os_printf x; } while(0) +#define LWIP_PLATFORM_ASSERT(x) do { os_printf("Assertion \"%s\" failed at line %d in %s\n", x, __LINE__, __FILE__); *(int*)0=0; } while(0) +//#define LWIP_PLATFORM_ASSERT(x) do { os_printf("Assertion \"%s\" failed at line %d in %s\n", x, __LINE__, __FILE__); while(1); } while(0) +#endif // ULWIPDEBUG + +#if !ULWIPASSERT +#define LWIP_NOASSERT 1 +#endif + +/////////////////////////////// +//// MISSING + +#define sys_now millis // arduino wire millis() definition returns 32 bits like sys_now() does +#define LWIP_RAND r_rand // old lwip uses this useful undocumented function +#define IPSTR "%d.%d.%d.%d" +#define IP2STR(ipaddr) ip4_addr1_16(ipaddr), \ + ip4_addr2_16(ipaddr), \ + ip4_addr3_16(ipaddr), \ + ip4_addr4_16(ipaddr) + +// ip_addr / ip_info: do not exist in lwip2 (only in lwip1.4) +struct ip_addr { + uint32_t addr; +}; +struct ip_info { + struct ip_addr ip; + struct ip_addr netmask; + struct ip_addr gw; +}; + +/////////////////////////////// +//// PROVIDED TO USER + +typedef struct ip4_addr ip4_addr_t; +extern int ntp_servers_number; +extern ip4_addr_t* ntp_servers; + +/////////////////////////////// +//// STUBS + +// these symbols must be renamed in the new implementation +// because they are known/used in blobs + +#define dhcp_cleanup dhcp_cleanup_LWIP2 +#define dhcp_release dhcp_release_LWIP2 +#define dhcp_start dhcp_start_LWIP2 +#define dhcp_stop dhcp_stop_LWIP2 +#define dhcps_start dhcps_start_LWIP2 +//#define dhcps_stop dhcps_stop_LWIP2 // void(void) +#define espconn_init espconn_init_LWIP2 +#define etharp_output etharp_output_LWIP2 +#define ethbroadcast ethbroadcast_LWIP2 +#define ethernet_input ethernet_input_LWIP2 +#define lwip_init lwip_init_LWIP2 +#define netif_add netif_add_LWIP2 +#define netif_default netif_default_LWIP2 +#define netif_remove netif_remove_LWIP2 +#define netif_set_addr netif_set_addr_LWIP2 +#define netif_set_default netif_set_default_LWIP2 +#define netif_set_down netif_set_down_LWIP2 +#define netif_set_up netif_set_up_LWIP2 +#define pbuf_alloc pbuf_alloc_LWIP2 +#define pbuf_free pbuf_free_LWIP2 +#define pbuf_ref pbuf_ref_LWIP2 +//#define sys_check_timeouts sys_check_timeouts_LWIP2 // void(void) + +#if !defined(LWIP_DEBUG) || !SYS_DEBUG +#define sys_timeout sys_timeout_LWIP2 +#endif + +#define sys_untimeout sys_untimeout_LWIP2 + +/////////////////////////////// +#endif // LWIP2_ARCH_CC_H diff --git a/tools/sdk/lwip2/include/arch/sys_arch.h b/tools/sdk/lwip2/include/arch/sys_arch.h new file mode 100644 index 000000000..abcf8afd0 --- /dev/null +++ b/tools/sdk/lwip2/include/arch/sys_arch.h @@ -0,0 +1,5 @@ + +#ifndef MYSYSARCH_H +#define MYSYSARCH_H + +#endif // MYSYSARCH_H \ No newline at end of file diff --git a/tools/sdk/lwip2/include/espconn.h b/tools/sdk/lwip2/include/espconn.h new file mode 100644 index 000000000..e69de29bb diff --git a/tools/sdk/lwip2/include/gluedebug.h b/tools/sdk/lwip2/include/gluedebug.h new file mode 100644 index 000000000..8750d6132 --- /dev/null +++ b/tools/sdk/lwip2/include/gluedebug.h @@ -0,0 +1,89 @@ + +#ifndef __GLUE_DEBUG_H +#define __GLUE_DEBUG_H + +///////////////////////////////////////////////////////////////////////////// +// user-definable + +// this is needed separately from lwipopts.h +// because it is shared by both sides of glue + +#define UDEBUG 0 // 0 or 1 (glue debug) +#define UDUMP 0 // 0 or 1 (glue / dump packet) +#define UDEBUGINDEX 0 // 0 or 1 (show debug line number) +#define UDEBUGSTORE 0 // 0 or 1 (store debug into buffer until doprint_allow=1=serial-available) + +#define ULWIPDEBUG 0 // 0 or 1 (trigger lwip debug) +#define ULWIPASSERT 0 // 0 or 1 (trigger lwip self-check, 0 saves flash) + +#define STRING_IN_FLASH 0 // *print("fmt is stored in flash") + +#define ROTBUFLEN_BIT 11 // (UDEBUGSTORE=1) doprint()'s buffer: 11=2048B + +#if ULWIPDEBUG +//#define LWIP_DBG_TYPES_ON (LWIP_DBG_ON|LWIP_DBG_TRACE|LWIP_DBG_STATE|LWIP_DBG_FRESH|LWIP_DBG_HALT) +//#define LWIP_DBG_TYPES_ON (LWIP_DBG_ON|LWIP_DBG_TRACE|LWIP_DBG_STATE|LWIP_DBG_FRESH) +#define LWIP_DBG_TYPES_ON (LWIP_DBG_ON) +#endif + +///////////////////////////////////////////////////////////////////////////// + +#if UDEBUG && UDEBUGSTORE +#warning use 'doprint_allow=1' right after Serial is enabled +extern int doprint_allow; +#endif + +// print definitions: +// uprint(): always used by glue, defined as doprint() in debug mode or nothing() +// os_printf(): can be redefined as doprint() +// doprint(): always print, can be os_printf_plus() or defined in doprint.c (buffered) +// in buffered mode: doprint_allow=1 is needed after Serial.begin + +#if STRING_IN_FLASH && !defined(USE_OPTIMIZE_PRINTF) +#define USE_OPTIMIZE_PRINTF // at least used in arduino/esp8266 +#endif +// os_printf_plus() missing in osapi.h (fixed in arduino's sdk-2.1): +extern int os_printf_plus (const char * format, ...) __attribute__ ((format (printf, 1, 2))); + +#include // os_printf* definitions + ICACHE_RODATA_ATTR + +#if UDEBUG && (UDEBUGINDEX || UDEBUGSTORE) +// doprint() is used + +#undef os_printf +#define os_printf(x...) do { doprint(x); } while (0) + +#if STRING_IN_FLASH + +#define doprint(fmt, ...) \ + do { \ + static const char flash_str[] ICACHE_RODATA_ATTR STORE_ATTR = fmt; \ + doprint_minus(flash_str, ##__VA_ARGS__); \ + } while(0) + +#else // !STRING_IN_FLASH + +#define doprint(fmt, ...) doprint_minus(fmt, ##__VA_ARGS__) + +#endif // !STRING_IN_FLASH + +int doprint_minus (const char* format, ...) __attribute__ ((format (printf, 1, 2))); // format in flash + +#else // !( UDEBUG && (UDEBUGINDEX || UDEBUGSTORE) ) + +#define doprint(x...) do { os_printf(x); } while (0) + +#endif // !( UDEBUG && (UDEBUGINDEX || UDEBUGSTORE) ) + +#if UDEBUG +#define uprint(x...) do { doprint(x); } while (0) +#else +#define uprint(x...) do { (void)0; } while (0) +#endif + +#define uerror(x...) do { doprint(x); } while (0) +#define uassert(assertion...) do { if ((assertion) == 0) { os_printf_plus("assert fail: " #assertion " @%s:%d\n", __FILE__, __LINE__); uhalt(); } } while (0) +#define uhalt() do { *((int*)0) = 0; /* this triggers gdb */ } while (0) +#define nl() do { uprint("\n"); } while (0) + +#endif diff --git a/tools/sdk/lwip2/include/lwip-err-t.h b/tools/sdk/lwip2/include/lwip-err-t.h new file mode 100644 index 000000000..f9ba97f19 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip-err-t.h @@ -0,0 +1,10 @@ +// script-generated, extracted from espressif SDK's lwIP arch/cc.h +#define LWIP_NO_STDINT_H 1 +typedef unsigned char u8_t; +typedef signed char s8_t; +typedef unsigned short u16_t; +typedef signed short s16_t; +typedef unsigned long u32_t; +typedef signed long s32_t; +typedef unsigned long mem_ptr_t; +#define LWIP_ERR_T s32_t diff --git a/tools/sdk/lwip2/include/lwip-git-hash.h b/tools/sdk/lwip2/include/lwip-git-hash.h new file mode 100644 index 000000000..587ff5854 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip-git-hash.h @@ -0,0 +1,6 @@ +// generated by makefiles/make-lwip2-hash +#ifndef LWIP_HASH_H +#define LWIP_HASH_H +#define LWIP_HASH 0x92f23d6 +#define LWIP_HASH_STR "92f23d6(tag:STABLE-2_0_3_RELEASE)" +#endif // LWIP_HASH_H diff --git a/tools/sdk/lwip2/include/lwip/api.h b/tools/sdk/lwip2/include/lwip/api.h new file mode 100644 index 000000000..516bd163d --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/api.h @@ -0,0 +1,400 @@ +/** + * @file + * netconn API (to be used from non-TCPIP threads) + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_API_H +#define LWIP_HDR_API_H + +#include "lwip/opt.h" + +#if LWIP_NETCONN || LWIP_SOCKET /* don't build if not configured for use in lwipopts.h */ +/* Note: Netconn API is always available when sockets are enabled - + * sockets are implemented on top of them */ + +#include "lwip/arch.h" +#include "lwip/netbuf.h" +#include "lwip/sys.h" +#include "lwip/ip_addr.h" +#include "lwip/err.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Throughout this file, IP addresses and port numbers are expected to be in + * the same byte order as in the corresponding pcb. + */ + +/* Flags for netconn_write (u8_t) */ +#define NETCONN_NOFLAG 0x00 +#define NETCONN_NOCOPY 0x00 /* Only for source code compatibility */ +#define NETCONN_COPY 0x01 +#define NETCONN_MORE 0x02 +#define NETCONN_DONTBLOCK 0x04 + +/* Flags for struct netconn.flags (u8_t) */ +/** Should this netconn avoid blocking? */ +#define NETCONN_FLAG_NON_BLOCKING 0x02 +/** Was the last connect action a non-blocking one? */ +#define NETCONN_FLAG_IN_NONBLOCKING_CONNECT 0x04 +/** If a nonblocking write has been rejected before, poll_tcp needs to + check if the netconn is writable again */ +#define NETCONN_FLAG_CHECK_WRITESPACE 0x10 +#if LWIP_IPV6 +/** If this flag is set then only IPv6 communication is allowed on the + netconn. As per RFC#3493 this features defaults to OFF allowing + dual-stack usage by default. */ +#define NETCONN_FLAG_IPV6_V6ONLY 0x20 +#endif /* LWIP_IPV6 */ + + +/* Helpers to process several netconn_types by the same code */ +#define NETCONNTYPE_GROUP(t) ((t)&0xF0) +#define NETCONNTYPE_DATAGRAM(t) ((t)&0xE0) +#if LWIP_IPV6 +#define NETCONN_TYPE_IPV6 0x08 +#define NETCONNTYPE_ISIPV6(t) (((t)&NETCONN_TYPE_IPV6) != 0) +#define NETCONNTYPE_ISUDPLITE(t) (((t)&0xF3) == NETCONN_UDPLITE) +#define NETCONNTYPE_ISUDPNOCHKSUM(t) (((t)&0xF3) == NETCONN_UDPNOCHKSUM) +#else /* LWIP_IPV6 */ +#define NETCONNTYPE_ISIPV6(t) (0) +#define NETCONNTYPE_ISUDPLITE(t) ((t) == NETCONN_UDPLITE) +#define NETCONNTYPE_ISUDPNOCHKSUM(t) ((t) == NETCONN_UDPNOCHKSUM) +#endif /* LWIP_IPV6 */ + +/** @ingroup netconn_common + * Protocol family and type of the netconn + */ +enum netconn_type { + NETCONN_INVALID = 0, + /** TCP IPv4 */ + NETCONN_TCP = 0x10, +#if LWIP_IPV6 + /** TCP IPv6 */ + NETCONN_TCP_IPV6 = NETCONN_TCP | NETCONN_TYPE_IPV6 /* 0x18 */, +#endif /* LWIP_IPV6 */ + /** UDP IPv4 */ + NETCONN_UDP = 0x20, + /** UDP IPv4 lite */ + NETCONN_UDPLITE = 0x21, + /** UDP IPv4 no checksum */ + NETCONN_UDPNOCHKSUM = 0x22, + +#if LWIP_IPV6 + /** UDP IPv6 (dual-stack by default, unless you call @ref netconn_set_ipv6only) */ + NETCONN_UDP_IPV6 = NETCONN_UDP | NETCONN_TYPE_IPV6 /* 0x28 */, + /** UDP IPv6 lite (dual-stack by default, unless you call @ref netconn_set_ipv6only) */ + NETCONN_UDPLITE_IPV6 = NETCONN_UDPLITE | NETCONN_TYPE_IPV6 /* 0x29 */, + /** UDP IPv6 no checksum (dual-stack by default, unless you call @ref netconn_set_ipv6only) */ + NETCONN_UDPNOCHKSUM_IPV6 = NETCONN_UDPNOCHKSUM | NETCONN_TYPE_IPV6 /* 0x2a */, +#endif /* LWIP_IPV6 */ + + /** Raw connection IPv4 */ + NETCONN_RAW = 0x40 +#if LWIP_IPV6 + /** Raw connection IPv6 (dual-stack by default, unless you call @ref netconn_set_ipv6only) */ + , NETCONN_RAW_IPV6 = NETCONN_RAW | NETCONN_TYPE_IPV6 /* 0x48 */ +#endif /* LWIP_IPV6 */ +}; + +/** Current state of the netconn. Non-TCP netconns are always + * in state NETCONN_NONE! */ +enum netconn_state { + NETCONN_NONE, + NETCONN_WRITE, + NETCONN_LISTEN, + NETCONN_CONNECT, + NETCONN_CLOSE +}; + +/** Used to inform the callback function about changes + * + * Event explanation: + * + * In the netconn implementation, there are three ways to block a client: + * + * - accept mbox (sys_arch_mbox_fetch(&conn->acceptmbox, &accept_ptr, 0); in netconn_accept()) + * - receive mbox (sys_arch_mbox_fetch(&conn->recvmbox, &buf, 0); in netconn_recv_data()) + * - send queue is full (sys_arch_sem_wait(LWIP_API_MSG_SEM(msg), 0); in lwip_netconn_do_write()) + * + * The events have to be seen as events signaling the state of these mboxes/semaphores. For non-blocking + * connections, you need to know in advance whether a call to a netconn function call would block or not, + * and these events tell you about that. + * + * RCVPLUS events say: Safe to perform a potentially blocking call call once more. + * They are counted in sockets - three RCVPLUS events for accept mbox means you are safe + * to call netconn_accept 3 times without being blocked. + * Same thing for receive mbox. + * + * RCVMINUS events say: Your call to to a possibly blocking function is "acknowledged". + * Socket implementation decrements the counter. + * + * For TX, there is no need to count, its merely a flag. SENDPLUS means you may send something. + * SENDPLUS occurs when enough data was delivered to peer so netconn_send() can be called again. + * A SENDMINUS event occurs when the next call to a netconn_send() would be blocking. + */ +enum netconn_evt { + NETCONN_EVT_RCVPLUS, + NETCONN_EVT_RCVMINUS, + NETCONN_EVT_SENDPLUS, + NETCONN_EVT_SENDMINUS, + NETCONN_EVT_ERROR +}; + +#if LWIP_IGMP || (LWIP_IPV6 && LWIP_IPV6_MLD) +/** Used for netconn_join_leave_group() */ +enum netconn_igmp { + NETCONN_JOIN, + NETCONN_LEAVE +}; +#endif /* LWIP_IGMP || (LWIP_IPV6 && LWIP_IPV6_MLD) */ + +#if LWIP_DNS +/* Used for netconn_gethostbyname_addrtype(), these should match the DNS_ADDRTYPE defines in dns.h */ +#define NETCONN_DNS_DEFAULT NETCONN_DNS_IPV4_IPV6 +#define NETCONN_DNS_IPV4 0 +#define NETCONN_DNS_IPV6 1 +#define NETCONN_DNS_IPV4_IPV6 2 /* try to resolve IPv4 first, try IPv6 if IPv4 fails only */ +#define NETCONN_DNS_IPV6_IPV4 3 /* try to resolve IPv6 first, try IPv4 if IPv6 fails only */ +#endif /* LWIP_DNS */ + +/* forward-declare some structs to avoid to include their headers */ +struct ip_pcb; +struct tcp_pcb; +struct udp_pcb; +struct raw_pcb; +struct netconn; +struct api_msg; + +/** A callback prototype to inform about events for a netconn */ +typedef void (* netconn_callback)(struct netconn *, enum netconn_evt, u16_t len); + +/** A netconn descriptor */ +struct netconn { + /** type of the netconn (TCP, UDP or RAW) */ + enum netconn_type type; + /** current state of the netconn */ + enum netconn_state state; + /** the lwIP internal protocol control block */ + union { + struct ip_pcb *ip; + struct tcp_pcb *tcp; + struct udp_pcb *udp; + struct raw_pcb *raw; + } pcb; + /** the last error this netconn had */ + err_t last_err; +#if !LWIP_NETCONN_SEM_PER_THREAD + /** sem that is used to synchronously execute functions in the core context */ + sys_sem_t op_completed; +#endif + /** mbox where received packets are stored until they are fetched + by the netconn application thread (can grow quite big) */ + sys_mbox_t recvmbox; +#if LWIP_TCP + /** mbox where new connections are stored until processed + by the application thread */ + sys_mbox_t acceptmbox; +#endif /* LWIP_TCP */ + /** only used for socket layer */ +#if LWIP_SOCKET + int socket; +#endif /* LWIP_SOCKET */ +#if LWIP_SO_SNDTIMEO + /** timeout to wait for sending data (which means enqueueing data for sending + in internal buffers) in milliseconds */ + s32_t send_timeout; +#endif /* LWIP_SO_RCVTIMEO */ +#if LWIP_SO_RCVTIMEO + /** timeout in milliseconds to wait for new data to be received + (or connections to arrive for listening netconns) */ + int recv_timeout; +#endif /* LWIP_SO_RCVTIMEO */ +#if LWIP_SO_RCVBUF + /** maximum amount of bytes queued in recvmbox + not used for TCP: adjust TCP_WND instead! */ + int recv_bufsize; + /** number of bytes currently in recvmbox to be received, + tested against recv_bufsize to limit bytes on recvmbox + for UDP and RAW, used for FIONREAD */ + int recv_avail; +#endif /* LWIP_SO_RCVBUF */ +#if LWIP_SO_LINGER + /** values <0 mean linger is disabled, values > 0 are seconds to linger */ + s16_t linger; +#endif /* LWIP_SO_LINGER */ + /** flags holding more netconn-internal state, see NETCONN_FLAG_* defines */ + u8_t flags; +#if LWIP_TCP + /** TCP: when data passed to netconn_write doesn't fit into the send buffer, + this temporarily stores how much is already sent. */ + size_t write_offset; + /** TCP: when data passed to netconn_write doesn't fit into the send buffer, + this temporarily stores the message. + Also used during connect and close. */ + struct api_msg *current_msg; +#endif /* LWIP_TCP */ + /** A callback function that is informed about events for this netconn */ + netconn_callback callback; +}; + +/** Register an Network connection event */ +#define API_EVENT(c,e,l) if (c->callback) { \ + (*c->callback)(c, e, l); \ + } + +/** Set conn->last_err to err but don't overwrite fatal errors */ +#define NETCONN_SET_SAFE_ERR(conn, err) do { if ((conn) != NULL) { \ + SYS_ARCH_DECL_PROTECT(netconn_set_safe_err_lev); \ + SYS_ARCH_PROTECT(netconn_set_safe_err_lev); \ + if (!ERR_IS_FATAL((conn)->last_err)) { \ + (conn)->last_err = err; \ + } \ + SYS_ARCH_UNPROTECT(netconn_set_safe_err_lev); \ +}} while(0); + +/* Network connection functions: */ + +/** @ingroup netconn_common + * Create new netconn connection + * @param t @ref netconn_type */ +#define netconn_new(t) netconn_new_with_proto_and_callback(t, 0, NULL) +#define netconn_new_with_callback(t, c) netconn_new_with_proto_and_callback(t, 0, c) +struct netconn *netconn_new_with_proto_and_callback(enum netconn_type t, u8_t proto, + netconn_callback callback); +err_t netconn_delete(struct netconn *conn); +/** Get the type of a netconn (as enum netconn_type). */ +#define netconn_type(conn) (conn->type) + +err_t netconn_getaddr(struct netconn *conn, ip_addr_t *addr, + u16_t *port, u8_t local); +/** @ingroup netconn_common */ +#define netconn_peer(c,i,p) netconn_getaddr(c,i,p,0) +/** @ingroup netconn_common */ +#define netconn_addr(c,i,p) netconn_getaddr(c,i,p,1) + +err_t netconn_bind(struct netconn *conn, const ip_addr_t *addr, u16_t port); +err_t netconn_connect(struct netconn *conn, const ip_addr_t *addr, u16_t port); +err_t netconn_disconnect (struct netconn *conn); +err_t netconn_listen_with_backlog(struct netconn *conn, u8_t backlog); +/** @ingroup netconn_tcp */ +#define netconn_listen(conn) netconn_listen_with_backlog(conn, TCP_DEFAULT_LISTEN_BACKLOG) +err_t netconn_accept(struct netconn *conn, struct netconn **new_conn); +err_t netconn_recv(struct netconn *conn, struct netbuf **new_buf); +err_t netconn_recv_tcp_pbuf(struct netconn *conn, struct pbuf **new_buf); +err_t netconn_sendto(struct netconn *conn, struct netbuf *buf, + const ip_addr_t *addr, u16_t port); +err_t netconn_send(struct netconn *conn, struct netbuf *buf); +err_t netconn_write_partly(struct netconn *conn, const void *dataptr, size_t size, + u8_t apiflags, size_t *bytes_written); +/** @ingroup netconn_tcp */ +#define netconn_write(conn, dataptr, size, apiflags) \ + netconn_write_partly(conn, dataptr, size, apiflags, NULL) +err_t netconn_close(struct netconn *conn); +err_t netconn_shutdown(struct netconn *conn, u8_t shut_rx, u8_t shut_tx); + +#if LWIP_IGMP || (LWIP_IPV6 && LWIP_IPV6_MLD) +err_t netconn_join_leave_group(struct netconn *conn, const ip_addr_t *multiaddr, + const ip_addr_t *netif_addr, enum netconn_igmp join_or_leave); +#endif /* LWIP_IGMP || (LWIP_IPV6 && LWIP_IPV6_MLD) */ +#if LWIP_DNS +#if LWIP_IPV4 && LWIP_IPV6 +err_t netconn_gethostbyname_addrtype(const char *name, ip_addr_t *addr, u8_t dns_addrtype); +#define netconn_gethostbyname(name, addr) netconn_gethostbyname_addrtype(name, addr, NETCONN_DNS_DEFAULT) +#else /* LWIP_IPV4 && LWIP_IPV6 */ +err_t netconn_gethostbyname(const char *name, ip_addr_t *addr); +#define netconn_gethostbyname_addrtype(name, addr, dns_addrtype) netconn_gethostbyname(name, addr) +#endif /* LWIP_IPV4 && LWIP_IPV6 */ +#endif /* LWIP_DNS */ + +#define netconn_err(conn) ((conn)->last_err) +#define netconn_recv_bufsize(conn) ((conn)->recv_bufsize) + +/** Set the blocking status of netconn calls (@todo: write/send is missing) */ +#define netconn_set_nonblocking(conn, val) do { if(val) { \ + (conn)->flags |= NETCONN_FLAG_NON_BLOCKING; \ +} else { \ + (conn)->flags &= ~ NETCONN_FLAG_NON_BLOCKING; }} while(0) +/** Get the blocking status of netconn calls (@todo: write/send is missing) */ +#define netconn_is_nonblocking(conn) (((conn)->flags & NETCONN_FLAG_NON_BLOCKING) != 0) + +#if LWIP_IPV6 +/** @ingroup netconn_common + * TCP: Set the IPv6 ONLY status of netconn calls (see NETCONN_FLAG_IPV6_V6ONLY) + */ +#define netconn_set_ipv6only(conn, val) do { if(val) { \ + (conn)->flags |= NETCONN_FLAG_IPV6_V6ONLY; \ +} else { \ + (conn)->flags &= ~ NETCONN_FLAG_IPV6_V6ONLY; }} while(0) +/** @ingroup netconn_common + * TCP: Get the IPv6 ONLY status of netconn calls (see NETCONN_FLAG_IPV6_V6ONLY) + */ +#define netconn_get_ipv6only(conn) (((conn)->flags & NETCONN_FLAG_IPV6_V6ONLY) != 0) +#endif /* LWIP_IPV6 */ + +#if LWIP_SO_SNDTIMEO +/** Set the send timeout in milliseconds */ +#define netconn_set_sendtimeout(conn, timeout) ((conn)->send_timeout = (timeout)) +/** Get the send timeout in milliseconds */ +#define netconn_get_sendtimeout(conn) ((conn)->send_timeout) +#endif /* LWIP_SO_SNDTIMEO */ +#if LWIP_SO_RCVTIMEO +/** Set the receive timeout in milliseconds */ +#define netconn_set_recvtimeout(conn, timeout) ((conn)->recv_timeout = (timeout)) +/** Get the receive timeout in milliseconds */ +#define netconn_get_recvtimeout(conn) ((conn)->recv_timeout) +#endif /* LWIP_SO_RCVTIMEO */ +#if LWIP_SO_RCVBUF +/** Set the receive buffer in bytes */ +#define netconn_set_recvbufsize(conn, recvbufsize) ((conn)->recv_bufsize = (recvbufsize)) +/** Get the receive buffer in bytes */ +#define netconn_get_recvbufsize(conn) ((conn)->recv_bufsize) +#endif /* LWIP_SO_RCVBUF*/ + +#if LWIP_NETCONN_SEM_PER_THREAD +void netconn_thread_init(void); +void netconn_thread_cleanup(void); +#else /* LWIP_NETCONN_SEM_PER_THREAD */ +#define netconn_thread_init() +#define netconn_thread_cleanup() +#endif /* LWIP_NETCONN_SEM_PER_THREAD */ + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_NETCONN || LWIP_SOCKET */ + +#endif /* LWIP_HDR_API_H */ diff --git a/tools/sdk/lwip2/include/lwip/apps/FILES b/tools/sdk/lwip2/include/lwip/apps/FILES new file mode 100644 index 000000000..adfc0f334 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/apps/FILES @@ -0,0 +1,2 @@ +This directory contains application headers. +Every application shall provide one api file APP.h and optionally one options file APP_opts.h diff --git a/tools/sdk/lwip2/include/lwip/apps/fs.h b/tools/sdk/lwip2/include/lwip/apps/fs.h new file mode 100644 index 000000000..bb176fa01 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/apps/fs.h @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2001-2003 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_APPS_FS_H +#define LWIP_HDR_APPS_FS_H + +#include "httpd_opts.h" +#include "lwip/err.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define FS_READ_EOF -1 +#define FS_READ_DELAYED -2 + +#if HTTPD_PRECALCULATED_CHECKSUM +struct fsdata_chksum { + u32_t offset; + u16_t chksum; + u16_t len; +}; +#endif /* HTTPD_PRECALCULATED_CHECKSUM */ + +#define FS_FILE_FLAGS_HEADER_INCLUDED 0x01 +#define FS_FILE_FLAGS_HEADER_PERSISTENT 0x02 + +struct fs_file { + const char *data; + int len; + int index; + void *pextension; +#if HTTPD_PRECALCULATED_CHECKSUM + const struct fsdata_chksum *chksum; + u16_t chksum_count; +#endif /* HTTPD_PRECALCULATED_CHECKSUM */ + u8_t flags; +#if LWIP_HTTPD_CUSTOM_FILES + u8_t is_custom_file; +#endif /* LWIP_HTTPD_CUSTOM_FILES */ +#if LWIP_HTTPD_FILE_STATE + void *state; +#endif /* LWIP_HTTPD_FILE_STATE */ +}; + +#if LWIP_HTTPD_FS_ASYNC_READ +typedef void (*fs_wait_cb)(void *arg); +#endif /* LWIP_HTTPD_FS_ASYNC_READ */ + +err_t fs_open(struct fs_file *file, const char *name); +void fs_close(struct fs_file *file); +#if LWIP_HTTPD_DYNAMIC_FILE_READ +#if LWIP_HTTPD_FS_ASYNC_READ +int fs_read_async(struct fs_file *file, char *buffer, int count, fs_wait_cb callback_fn, void *callback_arg); +#else /* LWIP_HTTPD_FS_ASYNC_READ */ +int fs_read(struct fs_file *file, char *buffer, int count); +#endif /* LWIP_HTTPD_FS_ASYNC_READ */ +#endif /* LWIP_HTTPD_DYNAMIC_FILE_READ */ +#if LWIP_HTTPD_FS_ASYNC_READ +int fs_is_file_ready(struct fs_file *file, fs_wait_cb callback_fn, void *callback_arg); +#endif /* LWIP_HTTPD_FS_ASYNC_READ */ +int fs_bytes_left(struct fs_file *file); + +#if LWIP_HTTPD_FILE_STATE +/** This user-defined function is called when a file is opened. */ +void *fs_state_init(struct fs_file *file, const char *name); +/** This user-defined function is called when a file is closed. */ +void fs_state_free(struct fs_file *file, void *state); +#endif /* #if LWIP_HTTPD_FILE_STATE */ + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_APPS_FS_H */ diff --git a/tools/sdk/lwip2/include/lwip/apps/httpd.h b/tools/sdk/lwip2/include/lwip/apps/httpd.h new file mode 100644 index 000000000..40f1811e5 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/apps/httpd.h @@ -0,0 +1,236 @@ +/** + * @file + * HTTP server + */ + +/* + * Copyright (c) 2001-2003 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + * This version of the file has been modified by Texas Instruments to offer + * simple server-side-include (SSI) and Common Gateway Interface (CGI) + * capability. + */ + +#ifndef LWIP_HDR_APPS_HTTPD_H +#define LWIP_HDR_APPS_HTTPD_H + +#include "httpd_opts.h" +#include "lwip/err.h" +#include "lwip/pbuf.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if LWIP_HTTPD_CGI + +/* + * Function pointer for a CGI script handler. + * + * This function is called each time the HTTPD server is asked for a file + * whose name was previously registered as a CGI function using a call to + * http_set_cgi_handler. The iIndex parameter provides the index of the + * CGI within the ppcURLs array passed to http_set_cgi_handler. Parameters + * pcParam and pcValue provide access to the parameters provided along with + * the URI. iNumParams provides a count of the entries in the pcParam and + * pcValue arrays. Each entry in the pcParam array contains the name of a + * parameter with the corresponding entry in the pcValue array containing the + * value for that parameter. Note that pcParam may contain multiple elements + * with the same name if, for example, a multi-selection list control is used + * in the form generating the data. + * + * The function should return a pointer to a character string which is the + * path and filename of the response that is to be sent to the connected + * browser, for example "/thanks.htm" or "/response/error.ssi". + * + * The maximum number of parameters that will be passed to this function via + * iNumParams is defined by LWIP_HTTPD_MAX_CGI_PARAMETERS. Any parameters in the incoming + * HTTP request above this number will be discarded. + * + * Requests intended for use by this CGI mechanism must be sent using the GET + * method (which encodes all parameters within the URI rather than in a block + * later in the request). Attempts to use the POST method will result in the + * request being ignored. + * + */ +typedef const char *(*tCGIHandler)(int iIndex, int iNumParams, char *pcParam[], + char *pcValue[]); + +/* + * Structure defining the base filename (URL) of a CGI and the associated + * function which is to be called when that URL is requested. + */ +typedef struct +{ + const char *pcCGIName; + tCGIHandler pfnCGIHandler; +} tCGI; + +void http_set_cgi_handlers(const tCGI *pCGIs, int iNumHandlers); + +#endif /* LWIP_HTTPD_CGI */ + +#if LWIP_HTTPD_CGI || LWIP_HTTPD_CGI_SSI + +#if LWIP_HTTPD_CGI_SSI +/** Define this generic CGI handler in your application. + * It is called once for every URI with parameters. + * The parameters can be stored to + */ +extern void httpd_cgi_handler(const char* uri, int iNumParams, char **pcParam, char **pcValue +#if defined(LWIP_HTTPD_FILE_STATE) && LWIP_HTTPD_FILE_STATE + , void *connection_state +#endif /* LWIP_HTTPD_FILE_STATE */ + ); +#endif /* LWIP_HTTPD_CGI_SSI */ + +#endif /* LWIP_HTTPD_CGI || LWIP_HTTPD_CGI_SSI */ + +#if LWIP_HTTPD_SSI + +/* + * Function pointer for the SSI tag handler callback. + * + * This function will be called each time the HTTPD server detects a tag of the + * form in a .shtml, .ssi or .shtm file where "name" appears as + * one of the tags supplied to http_set_ssi_handler in the ppcTags array. The + * returned insert string, which will be appended after the the string + * "" in file sent back to the client,should be written to pointer + * pcInsert. iInsertLen contains the size of the buffer pointed to by + * pcInsert. The iIndex parameter provides the zero-based index of the tag as + * found in the ppcTags array and identifies the tag that is to be processed. + * + * The handler returns the number of characters written to pcInsert excluding + * any terminating NULL or a negative number to indicate a failure (tag not + * recognized, for example). + * + * Note that the behavior of this SSI mechanism is somewhat different from the + * "normal" SSI processing as found in, for example, the Apache web server. In + * this case, the inserted text is appended following the SSI tag rather than + * replacing the tag entirely. This allows for an implementation that does not + * require significant additional buffering of output data yet which will still + * offer usable SSI functionality. One downside to this approach is when + * attempting to use SSI within JavaScript. The SSI tag is structured to + * resemble an HTML comment but this syntax does not constitute a comment + * within JavaScript and, hence, leaving the tag in place will result in + * problems in these cases. To work around this, any SSI tag which needs to + * output JavaScript code must do so in an encapsulated way, sending the whole + * HTML section as a single include. + */ +typedef u16_t (*tSSIHandler)( +#if LWIP_HTTPD_SSI_RAW + const char* ssi_tag_name, +#else /* LWIP_HTTPD_SSI_RAW */ + int iIndex, +#endif /* LWIP_HTTPD_SSI_RAW */ + char *pcInsert, int iInsertLen +#if LWIP_HTTPD_SSI_MULTIPART + , u16_t current_tag_part, u16_t *next_tag_part +#endif /* LWIP_HTTPD_SSI_MULTIPART */ +#if defined(LWIP_HTTPD_FILE_STATE) && LWIP_HTTPD_FILE_STATE + , void *connection_state +#endif /* LWIP_HTTPD_FILE_STATE */ + ); + +/** Set the SSI handler function + * (if LWIP_HTTPD_SSI_RAW==1, only the first argument is used) + */ +void http_set_ssi_handler(tSSIHandler pfnSSIHandler, + const char **ppcTags, int iNumTags); + +/** For LWIP_HTTPD_SSI_RAW==1, return this to indicate the tag is unknown. + * In this case, the webserver writes a warning into the page. + * You can also just return 0 to write nothing for unknown tags. + */ +#define HTTPD_SSI_TAG_UNKNOWN 0xFFFF + +#endif /* LWIP_HTTPD_SSI */ + +#if LWIP_HTTPD_SUPPORT_POST + +/* These functions must be implemented by the application */ + +/** Called when a POST request has been received. The application can decide + * whether to accept it or not. + * + * @param connection Unique connection identifier, valid until httpd_post_end + * is called. + * @param uri The HTTP header URI receiving the POST request. + * @param http_request The raw HTTP request (the first packet, normally). + * @param http_request_len Size of 'http_request'. + * @param content_len Content-Length from HTTP header. + * @param response_uri Filename of response file, to be filled when denying the + * request + * @param response_uri_len Size of the 'response_uri' buffer. + * @param post_auto_wnd Set this to 0 to let the callback code handle window + * updates by calling 'httpd_post_data_recved' (to throttle rx speed) + * default is 1 (httpd handles window updates automatically) + * @return ERR_OK: Accept the POST request, data may be passed in + * another err_t: Deny the POST request, send back 'bad request'. + */ +err_t httpd_post_begin(void *connection, const char *uri, const char *http_request, + u16_t http_request_len, int content_len, char *response_uri, + u16_t response_uri_len, u8_t *post_auto_wnd); + +/** Called for each pbuf of data that has been received for a POST. + * ATTENTION: The application is responsible for freeing the pbufs passed in! + * + * @param connection Unique connection identifier. + * @param p Received data. + * @return ERR_OK: Data accepted. + * another err_t: Data denied, http_post_get_response_uri will be called. + */ +err_t httpd_post_receive_data(void *connection, struct pbuf *p); + +/** Called when all data is received or when the connection is closed. + * The application must return the filename/URI of a file to send in response + * to this POST request. If the response_uri buffer is untouched, a 404 + * response is returned. + * + * @param connection Unique connection identifier. + * @param response_uri Filename of response file, to be filled when denying the request + * @param response_uri_len Size of the 'response_uri' buffer. + */ +void httpd_post_finished(void *connection, char *response_uri, u16_t response_uri_len); + +#if LWIP_HTTPD_POST_MANUAL_WND +void httpd_post_data_recved(void *connection, u16_t recved_len); +#endif /* LWIP_HTTPD_POST_MANUAL_WND */ + +#endif /* LWIP_HTTPD_SUPPORT_POST */ + +void httpd_init(void); + + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HTTPD_H */ diff --git a/tools/sdk/lwip2/include/lwip/apps/httpd_opts.h b/tools/sdk/lwip2/include/lwip/apps/httpd_opts.h new file mode 100644 index 000000000..340db15f6 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/apps/httpd_opts.h @@ -0,0 +1,323 @@ +/** + * @file + * HTTP server options list + */ + +/* + * Copyright (c) 2001-2003 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + * This version of the file has been modified by Texas Instruments to offer + * simple server-side-include (SSI) and Common Gateway Interface (CGI) + * capability. + */ + +#ifndef LWIP_HDR_APPS_HTTPD_OPTS_H +#define LWIP_HDR_APPS_HTTPD_OPTS_H + +#include "lwip/opt.h" + +/** + * @defgroup httpd_opts Options + * @ingroup httpd + * @{ + */ + +/** Set this to 1 to support CGI (old style) */ +#if !defined LWIP_HTTPD_CGI || defined __DOXYGEN__ +#define LWIP_HTTPD_CGI 0 +#endif + +/** Set this to 1 to support CGI (new style) */ +#if !defined LWIP_HTTPD_CGI_SSI || defined __DOXYGEN__ +#define LWIP_HTTPD_CGI_SSI 0 +#endif + +/** Set this to 1 to support SSI (Server-Side-Includes) */ +#if !defined LWIP_HTTPD_SSI || defined __DOXYGEN__ +#define LWIP_HTTPD_SSI 0 +#endif + +/** Set this to 1 to implement an SSI tag handler callback that gets a const char* + * to the tag (instead of an index into a pre-registered array of known tags) */ +#if !defined LWIP_HTTPD_SSI_RAW || defined __DOXYGEN__ +#define LWIP_HTTPD_SSI_RAW 0 +#endif + +/** Set this to 1 to support HTTP POST */ +#if !defined LWIP_HTTPD_SUPPORT_POST || defined __DOXYGEN__ +#define LWIP_HTTPD_SUPPORT_POST 0 +#endif + +/* The maximum number of parameters that the CGI handler can be sent. */ +#if !defined LWIP_HTTPD_MAX_CGI_PARAMETERS || defined __DOXYGEN__ +#define LWIP_HTTPD_MAX_CGI_PARAMETERS 16 +#endif + +/** LWIP_HTTPD_SSI_MULTIPART==1: SSI handler function is called with 2 more + * arguments indicating a counter for insert string that are too long to be + * inserted at once: the SSI handler function must then set 'next_tag_part' + * which will be passed back to it in the next call. */ +#if !defined LWIP_HTTPD_SSI_MULTIPART || defined __DOXYGEN__ +#define LWIP_HTTPD_SSI_MULTIPART 0 +#endif + +/* The maximum length of the string comprising the tag name */ +#if !defined LWIP_HTTPD_MAX_TAG_NAME_LEN || defined __DOXYGEN__ +#define LWIP_HTTPD_MAX_TAG_NAME_LEN 8 +#endif + +/* The maximum length of string that can be returned to replace any given tag */ +#if !defined LWIP_HTTPD_MAX_TAG_INSERT_LEN || defined __DOXYGEN__ +#define LWIP_HTTPD_MAX_TAG_INSERT_LEN 192 +#endif + +#if !defined LWIP_HTTPD_POST_MANUAL_WND || defined __DOXYGEN__ +#define LWIP_HTTPD_POST_MANUAL_WND 0 +#endif + +/** This string is passed in the HTTP header as "Server: " */ +#if !defined HTTPD_SERVER_AGENT || defined __DOXYGEN__ +#define HTTPD_SERVER_AGENT "lwIP/" LWIP_VERSION_STRING " (http://savannah.nongnu.org/projects/lwip)" +#endif + +/** Set this to 1 if you want to include code that creates HTTP headers + * at runtime. Default is off: HTTP headers are then created statically + * by the makefsdata tool. Static headers mean smaller code size, but + * the (readonly) fsdata will grow a bit as every file includes the HTTP + * header. */ +#if !defined LWIP_HTTPD_DYNAMIC_HEADERS || defined __DOXYGEN__ +#define LWIP_HTTPD_DYNAMIC_HEADERS 0 +#endif + +#if !defined HTTPD_DEBUG || defined __DOXYGEN__ +#define HTTPD_DEBUG LWIP_DBG_OFF +#endif + +/** Set this to 1 to use a memp pool for allocating + * struct http_state instead of the heap. + */ +#if !defined HTTPD_USE_MEM_POOL || defined __DOXYGEN__ +#define HTTPD_USE_MEM_POOL 0 +#endif + +/** The server port for HTTPD to use */ +#if !defined HTTPD_SERVER_PORT || defined __DOXYGEN__ +#define HTTPD_SERVER_PORT 80 +#endif + +/** Maximum retries before the connection is aborted/closed. + * - number of times pcb->poll is called -> default is 4*500ms = 2s; + * - reset when pcb->sent is called + */ +#if !defined HTTPD_MAX_RETRIES || defined __DOXYGEN__ +#define HTTPD_MAX_RETRIES 4 +#endif + +/** The poll delay is X*500ms */ +#if !defined HTTPD_POLL_INTERVAL || defined __DOXYGEN__ +#define HTTPD_POLL_INTERVAL 4 +#endif + +/** Priority for tcp pcbs created by HTTPD (very low by default). + * Lower priorities get killed first when running out of memory. + */ +#if !defined HTTPD_TCP_PRIO || defined __DOXYGEN__ +#define HTTPD_TCP_PRIO TCP_PRIO_MIN +#endif + +/** Set this to 1 to enable timing each file sent */ +#if !defined LWIP_HTTPD_TIMING || defined __DOXYGEN__ +#define LWIP_HTTPD_TIMING 0 +#endif +/** Set this to 1 to enable timing each file sent */ +#if !defined HTTPD_DEBUG_TIMING || defined __DOXYGEN__ +#define HTTPD_DEBUG_TIMING LWIP_DBG_OFF +#endif + +/** Set this to one to show error pages when parsing a request fails instead + of simply closing the connection. */ +#if !defined LWIP_HTTPD_SUPPORT_EXTSTATUS || defined __DOXYGEN__ +#define LWIP_HTTPD_SUPPORT_EXTSTATUS 0 +#endif + +/** Set this to 0 to drop support for HTTP/0.9 clients (to save some bytes) */ +#if !defined LWIP_HTTPD_SUPPORT_V09 || defined __DOXYGEN__ +#define LWIP_HTTPD_SUPPORT_V09 1 +#endif + +/** Set this to 1 to enable HTTP/1.1 persistent connections. + * ATTENTION: If the generated file system includes HTTP headers, these must + * include the "Connection: keep-alive" header (pass argument "-11" to makefsdata). + */ +#if !defined LWIP_HTTPD_SUPPORT_11_KEEPALIVE || defined __DOXYGEN__ +#define LWIP_HTTPD_SUPPORT_11_KEEPALIVE 0 +#endif + +/** Set this to 1 to support HTTP request coming in in multiple packets/pbufs */ +#if !defined LWIP_HTTPD_SUPPORT_REQUESTLIST || defined __DOXYGEN__ +#define LWIP_HTTPD_SUPPORT_REQUESTLIST 1 +#endif + +#if LWIP_HTTPD_SUPPORT_REQUESTLIST +/** Number of rx pbufs to enqueue to parse an incoming request (up to the first + newline) */ +#if !defined LWIP_HTTPD_REQ_QUEUELEN || defined __DOXYGEN__ +#define LWIP_HTTPD_REQ_QUEUELEN 5 +#endif + +/** Number of (TCP payload-) bytes (in pbufs) to enqueue to parse and incoming + request (up to the first double-newline) */ +#if !defined LWIP_HTTPD_REQ_BUFSIZE || defined __DOXYGEN__ +#define LWIP_HTTPD_REQ_BUFSIZE LWIP_HTTPD_MAX_REQ_LENGTH +#endif + +/** Defines the maximum length of a HTTP request line (up to the first CRLF, + copied from pbuf into this a global buffer when pbuf- or packet-queues + are received - otherwise the input pbuf is used directly) */ +#if !defined LWIP_HTTPD_MAX_REQ_LENGTH || defined __DOXYGEN__ +#define LWIP_HTTPD_MAX_REQ_LENGTH LWIP_MIN(1023, (LWIP_HTTPD_REQ_QUEUELEN * PBUF_POOL_BUFSIZE)) +#endif +#endif /* LWIP_HTTPD_SUPPORT_REQUESTLIST */ + +/** This is the size of a static buffer used when URIs end with '/'. + * In this buffer, the directory requested is concatenated with all the + * configured default file names. + * Set to 0 to disable checking default filenames on non-root directories. + */ +#if !defined LWIP_HTTPD_MAX_REQUEST_URI_LEN || defined __DOXYGEN__ +#define LWIP_HTTPD_MAX_REQUEST_URI_LEN 63 +#endif + +/** Maximum length of the filename to send as response to a POST request, + * filled in by the application when a POST is finished. + */ +#if !defined LWIP_HTTPD_POST_MAX_RESPONSE_URI_LEN || defined __DOXYGEN__ +#define LWIP_HTTPD_POST_MAX_RESPONSE_URI_LEN 63 +#endif + +/** Set this to 0 to not send the SSI tag (default is on, so the tag will + * be sent in the HTML page */ +#if !defined LWIP_HTTPD_SSI_INCLUDE_TAG || defined __DOXYGEN__ +#define LWIP_HTTPD_SSI_INCLUDE_TAG 1 +#endif + +/** Set this to 1 to call tcp_abort when tcp_close fails with memory error. + * This can be used to prevent consuming all memory in situations where the + * HTTP server has low priority compared to other communication. */ +#if !defined LWIP_HTTPD_ABORT_ON_CLOSE_MEM_ERROR || defined __DOXYGEN__ +#define LWIP_HTTPD_ABORT_ON_CLOSE_MEM_ERROR 0 +#endif + +/** Set this to 1 to kill the oldest connection when running out of + * memory for 'struct http_state' or 'struct http_ssi_state'. + * ATTENTION: This puts all connections on a linked list, so may be kind of slow. + */ +#if !defined LWIP_HTTPD_KILL_OLD_ON_CONNECTIONS_EXCEEDED || defined __DOXYGEN__ +#define LWIP_HTTPD_KILL_OLD_ON_CONNECTIONS_EXCEEDED 0 +#endif + +/** Set this to 1 to send URIs without extension without headers + * (who uses this at all??) */ +#if !defined LWIP_HTTPD_OMIT_HEADER_FOR_EXTENSIONLESS_URI || defined __DOXYGEN__ +#define LWIP_HTTPD_OMIT_HEADER_FOR_EXTENSIONLESS_URI 0 +#endif + +/** Default: Tags are sent from struct http_state and are therefore volatile */ +#if !defined HTTP_IS_TAG_VOLATILE || defined __DOXYGEN__ +#define HTTP_IS_TAG_VOLATILE(ptr) TCP_WRITE_FLAG_COPY +#endif + +/* By default, the httpd is limited to send 2*pcb->mss to keep resource usage low + when http is not an important protocol in the device. */ +#if !defined HTTPD_LIMIT_SENDING_TO_2MSS || defined __DOXYGEN__ +#define HTTPD_LIMIT_SENDING_TO_2MSS 1 +#endif + +/* Define this to a function that returns the maximum amount of data to enqueue. + The function have this signature: u16_t fn(struct tcp_pcb* pcb); */ +#if !defined HTTPD_MAX_WRITE_LEN || defined __DOXYGEN__ +#if HTTPD_LIMIT_SENDING_TO_2MSS +#define HTTPD_MAX_WRITE_LEN(pcb) (2 * tcp_mss(pcb)) +#endif +#endif + +/*------------------- FS OPTIONS -------------------*/ + +/** Set this to 1 and provide the functions: + * - "int fs_open_custom(struct fs_file *file, const char *name)" + * Called first for every opened file to allow opening files + * that are not included in fsdata(_custom).c + * - "void fs_close_custom(struct fs_file *file)" + * Called to free resources allocated by fs_open_custom(). + */ +#if !defined LWIP_HTTPD_CUSTOM_FILES || defined __DOXYGEN__ +#define LWIP_HTTPD_CUSTOM_FILES 0 +#endif + +/** Set this to 1 to support fs_read() to dynamically read file data. + * Without this (default=off), only one-block files are supported, + * and the contents must be ready after fs_open(). + */ +#if !defined LWIP_HTTPD_DYNAMIC_FILE_READ || defined __DOXYGEN__ +#define LWIP_HTTPD_DYNAMIC_FILE_READ 0 +#endif + +/** Set this to 1 to include an application state argument per file + * that is opened. This allows to keep a state per connection/file. + */ +#if !defined LWIP_HTTPD_FILE_STATE || defined __DOXYGEN__ +#define LWIP_HTTPD_FILE_STATE 0 +#endif + +/** HTTPD_PRECALCULATED_CHECKSUM==1: include precompiled checksums for + * predefined (MSS-sized) chunks of the files to prevent having to calculate + * the checksums at runtime. */ +#if !defined HTTPD_PRECALCULATED_CHECKSUM || defined __DOXYGEN__ +#define HTTPD_PRECALCULATED_CHECKSUM 0 +#endif + +/** LWIP_HTTPD_FS_ASYNC_READ==1: support asynchronous read operations + * (fs_read_async returns FS_READ_DELAYED and calls a callback when finished). + */ +#if !defined LWIP_HTTPD_FS_ASYNC_READ || defined __DOXYGEN__ +#define LWIP_HTTPD_FS_ASYNC_READ 0 +#endif + +/** Set this to 1 to include "fsdata_custom.c" instead of "fsdata.c" for the + * file system (to prevent changing the file included in CVS) */ +#if !defined HTTPD_USE_CUSTOM_FSDATA || defined __DOXYGEN__ +#define HTTPD_USE_CUSTOM_FSDATA 0 +#endif + +/** + * @} + */ + +#endif /* LWIP_HDR_APPS_HTTPD_OPTS_H */ diff --git a/tools/sdk/lwip2/include/lwip/apps/lwiperf.h b/tools/sdk/lwip2/include/lwip/apps/lwiperf.h new file mode 100644 index 000000000..7dbebb082 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/apps/lwiperf.h @@ -0,0 +1,84 @@ +/** + * @file + * lwIP iPerf server implementation + */ + +/* + * Copyright (c) 2014 Simon Goldschmidt + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Simon Goldschmidt + * + */ +#ifndef LWIP_HDR_APPS_LWIPERF_H +#define LWIP_HDR_APPS_LWIPERF_H + +#include "lwip/opt.h" +#include "lwip/ip_addr.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define LWIPERF_TCP_PORT_DEFAULT 5001 + +/** lwIPerf test results */ +enum lwiperf_report_type +{ + /** The server side test is done */ + LWIPERF_TCP_DONE_SERVER, + /** The client side test is done */ + LWIPERF_TCP_DONE_CLIENT, + /** Local error lead to test abort */ + LWIPERF_TCP_ABORTED_LOCAL, + /** Data check error lead to test abort */ + LWIPERF_TCP_ABORTED_LOCAL_DATAERROR, + /** Transmit error lead to test abort */ + LWIPERF_TCP_ABORTED_LOCAL_TXERROR, + /** Remote side aborted the test */ + LWIPERF_TCP_ABORTED_REMOTE +}; + +/** Prototype of a report function that is called when a session is finished. + This report function can show the test results. + @param report_type contains the test result */ +typedef void (*lwiperf_report_fn)(void *arg, enum lwiperf_report_type report_type, + const ip_addr_t* local_addr, u16_t local_port, const ip_addr_t* remote_addr, u16_t remote_port, + u32_t bytes_transferred, u32_t ms_duration, u32_t bandwidth_kbitpsec); + + +void* lwiperf_start_tcp_server(const ip_addr_t* local_addr, u16_t local_port, + lwiperf_report_fn report_fn, void* report_arg); +void* lwiperf_start_tcp_server_default(lwiperf_report_fn report_fn, void* report_arg); +void lwiperf_abort(void* lwiperf_session); + + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_APPS_LWIPERF_H */ diff --git a/tools/sdk/lwip2/include/lwip/apps/mdns.h b/tools/sdk/lwip2/include/lwip/apps/mdns.h new file mode 100644 index 000000000..d03681611 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/apps/mdns.h @@ -0,0 +1,69 @@ +/** + * @file + * MDNS responder + */ + + /* + * Copyright (c) 2015 Verisure Innovation AB + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Erik Ekman + * + */ +#ifndef LWIP_HDR_MDNS_H +#define LWIP_HDR_MDNS_H + +#include "lwip/apps/mdns_opts.h" +#include "lwip/netif.h" + +#if LWIP_MDNS_RESPONDER + +enum mdns_sd_proto { + DNSSD_PROTO_UDP = 0, + DNSSD_PROTO_TCP = 1 +}; + +#define MDNS_LABEL_MAXLEN 63 + +struct mdns_host; +struct mdns_service; + +/** Callback function to add text to a reply, called when generating the reply */ +typedef void (*service_get_txt_fn_t)(struct mdns_service *service, void *txt_userdata); + +void mdns_resp_init(void); + +err_t mdns_resp_add_netif(struct netif *netif, const char *hostname, u32_t dns_ttl); +err_t mdns_resp_remove_netif(struct netif *netif); + +err_t mdns_resp_add_service(struct netif *netif, const char *name, const char *service, enum mdns_sd_proto proto, u16_t port, u32_t dns_ttl, service_get_txt_fn_t txt_fn, void *txt_userdata); +err_t mdns_resp_add_service_txtitem(struct mdns_service *service, const char *txt, u8_t txt_len); +void mdns_resp_netif_settings_changed(struct netif *netif); + +#endif /* LWIP_MDNS_RESPONDER */ + +#endif /* LWIP_HDR_MDNS_H */ diff --git a/tools/sdk/lwip2/include/lwip/apps/mdns_opts.h b/tools/sdk/lwip2/include/lwip/apps/mdns_opts.h new file mode 100644 index 000000000..bf186bcce --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/apps/mdns_opts.h @@ -0,0 +1,74 @@ +/** + * @file + * MDNS responder + */ + + /* + * Copyright (c) 2015 Verisure Innovation AB + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Erik Ekman + * + */ + +#ifndef LWIP_HDR_APPS_MDNS_OPTS_H +#define LWIP_HDR_APPS_MDNS_OPTS_H + +#include "lwip/opt.h" + +/** + * @defgroup mdns_opts Options + * @ingroup mdns + * @{ + */ + +/** + * LWIP_MDNS_RESPONDER==1: Turn on multicast DNS module. UDP must be available for MDNS + * transport. IGMP is needed for IPv4 multicast. + */ +#ifndef LWIP_MDNS_RESPONDER +#define LWIP_MDNS_RESPONDER 0 +#endif /* LWIP_MDNS_RESPONDER */ + +/** The maximum number of services per netif */ +#ifndef MDNS_MAX_SERVICES +#define MDNS_MAX_SERVICES 1 +#endif + +/** + * MDNS_DEBUG: Enable debugging for multicast DNS. + */ +#ifndef MDNS_DEBUG +#define MDNS_DEBUG LWIP_DBG_OFF +#endif + +/** + * @} + */ + +#endif /* LWIP_HDR_APPS_MDNS_OPTS_H */ + diff --git a/tools/sdk/lwip2/include/lwip/apps/mdns_priv.h b/tools/sdk/lwip2/include/lwip/apps/mdns_priv.h new file mode 100644 index 000000000..8ee6db86a --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/apps/mdns_priv.h @@ -0,0 +1,66 @@ +/** + * @file + * MDNS responder private definitions + */ + + /* + * Copyright (c) 2015 Verisure Innovation AB + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Erik Ekman + * + */ +#ifndef LWIP_HDR_MDNS_PRIV_H +#define LWIP_HDR_MDNS_PRIV_H + +#include "lwip/apps/mdns_opts.h" +#include "lwip/pbuf.h" + +#if LWIP_MDNS_RESPONDER + +/* Domain struct and methods - visible for unit tests */ + +#define MDNS_DOMAIN_MAXLEN 256 +#define MDNS_READNAME_ERROR 0xFFFF + +struct mdns_domain { + /* Encoded domain name */ + u8_t name[MDNS_DOMAIN_MAXLEN]; + /* Total length of domain name, including zero */ + u16_t length; + /* Set if compression of this domain is not allowed */ + u8_t skip_compression; +}; + +err_t mdns_domain_add_label(struct mdns_domain *domain, const char *label, u8_t len); +u16_t mdns_readname(struct pbuf *p, u16_t offset, struct mdns_domain *domain); +int mdns_domain_eq(struct mdns_domain *a, struct mdns_domain *b); +u16_t mdns_compress_domain(struct pbuf *pbuf, u16_t *offset, struct mdns_domain *domain); + +#endif /* LWIP_MDNS_RESPONDER */ + +#endif /* LWIP_HDR_MDNS_PRIV_H */ diff --git a/tools/sdk/lwip2/include/lwip/apps/mqtt.h b/tools/sdk/lwip2/include/lwip/apps/mqtt.h new file mode 100644 index 000000000..34b230b88 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/apps/mqtt.h @@ -0,0 +1,244 @@ +/** + * @file + * MQTT client + */ + +/* + * Copyright (c) 2016 Erik Andersson + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Erik Andersson + * + */ +#ifndef LWIP_HDR_APPS_MQTT_CLIENT_H +#define LWIP_HDR_APPS_MQTT_CLIENT_H + +#include "lwip/apps/mqtt_opts.h" +#include "lwip/err.h" +#include "lwip/ip_addr.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct mqtt_client_t mqtt_client_t; + +/** @ingroup mqtt + * Default MQTT port */ +#define MQTT_PORT 1883 + +/*---------------------------------------------------------------------------------------------- */ +/* Connection with server */ + +/** + * @ingroup mqtt + * Client information and connection parameters */ +struct mqtt_connect_client_info_t { + /** Client identifier, must be set by caller */ + const char *client_id; + /** User name and password, set to NULL if not used */ + const char* client_user; + const char* client_pass; + /** keep alive time in seconds, 0 to disable keep alive functionality*/ + u16_t keep_alive; + /** will topic, set to NULL if will is not to be used, + will_msg, will_qos and will retain are then ignored */ + const char* will_topic; + const char* will_msg; + u8_t will_qos; + u8_t will_retain; +}; + +/** + * @ingroup mqtt + * Connection status codes */ +typedef enum +{ + MQTT_CONNECT_ACCEPTED = 0, + MQTT_CONNECT_REFUSED_PROTOCOL_VERSION = 1, + MQTT_CONNECT_REFUSED_IDENTIFIER = 2, + MQTT_CONNECT_REFUSED_SERVER = 3, + MQTT_CONNECT_REFUSED_USERNAME_PASS = 4, + MQTT_CONNECT_REFUSED_NOT_AUTHORIZED_ = 5, + MQTT_CONNECT_DISCONNECTED = 256, + MQTT_CONNECT_TIMEOUT = 257 +} mqtt_connection_status_t; + +/** + * @ingroup mqtt + * Function prototype for mqtt connection status callback. Called when + * client has connected to the server after initiating a mqtt connection attempt by + * calling mqtt_connect() or when connection is closed by server or an error + * + * @param client MQTT client itself + * @param arg Additional argument to pass to the callback function + * @param status Connect result code or disconnection notification @see mqtt_connection_status_t + * + */ +typedef void (*mqtt_connection_cb_t)(mqtt_client_t *client, void *arg, mqtt_connection_status_t status); + + +/** + * @ingroup mqtt + * Data callback flags */ +enum { + /** Flag set when last fragment of data arrives in data callback */ + MQTT_DATA_FLAG_LAST = 1 +}; + +/** + * @ingroup mqtt + * Function prototype for MQTT incoming publish data callback function. Called when data + * arrives to a subscribed topic @see mqtt_subscribe + * + * @param arg Additional argument to pass to the callback function + * @param data User data, pointed object, data may not be referenced after callback return, + NULL is passed when all publish data are delivered + * @param len Length of publish data fragment + * @param flags MQTT_DATA_FLAG_LAST set when this call contains the last part of data from publish message + * + */ +typedef void (*mqtt_incoming_data_cb_t)(void *arg, const u8_t *data, u16_t len, u8_t flags); + + +/** + * @ingroup mqtt + * Function prototype for MQTT incoming publish function. Called when an incoming publish + * arrives to a subscribed topic @see mqtt_subscribe + * + * @param arg Additional argument to pass to the callback function + * @param topic Zero terminated Topic text string, topic may not be referenced after callback return + * @param tot_len Total length of publish data, if set to 0 (no publish payload) data callback will not be invoked + */ +typedef void (*mqtt_incoming_publish_cb_t)(void *arg, const char *topic, u32_t tot_len); + + +/** + * @ingroup mqtt + * Function prototype for mqtt request callback. Called when a subscribe, unsubscribe + * or publish request has completed + * @param arg Pointer to user data supplied when invoking request + * @param err ERR_OK on success + * ERR_TIMEOUT if no response was received within timeout, + * ERR_ABRT if (un)subscribe was denied + */ +typedef void (*mqtt_request_cb_t)(void *arg, err_t err); + + +/** + * Pending request item, binds application callback to pending server requests + */ +struct mqtt_request_t +{ + /** Next item in list, NULL means this is the last in chain, + next pointing at itself means request is unallocated */ + struct mqtt_request_t *next; + /** Callback to upper layer */ + mqtt_request_cb_t cb; + void *arg; + /** MQTT packet identifier */ + u16_t pkt_id; + /** Expire time relative to element before this */ + u16_t timeout_diff; +}; + +/** Ring buffer */ +struct mqtt_ringbuf_t { + u16_t put; + u16_t get; + u8_t buf[MQTT_OUTPUT_RINGBUF_SIZE]; +}; + +/** MQTT client */ +struct mqtt_client_t +{ + /** Timers and timeouts */ + u16_t cyclic_tick; + u16_t keep_alive; + u16_t server_watchdog; + /** Packet identifier generator*/ + u16_t pkt_id_seq; + /** Packet identifier of pending incoming publish */ + u16_t inpub_pkt_id; + /** Connection state */ + u8_t conn_state; + struct tcp_pcb *conn; + /** Connection callback */ + void *connect_arg; + mqtt_connection_cb_t connect_cb; + /** Pending requests to server */ + struct mqtt_request_t *pend_req_queue; + struct mqtt_request_t req_list[MQTT_REQ_MAX_IN_FLIGHT]; + void *inpub_arg; + /** Incoming data callback */ + mqtt_incoming_data_cb_t data_cb; + mqtt_incoming_publish_cb_t pub_cb; + /** Input */ + u32_t msg_idx; + u8_t rx_buffer[MQTT_VAR_HEADER_BUFFER_LEN]; + /** Output ring-buffer */ + struct mqtt_ringbuf_t output; +}; + + +/** Connect to server */ +err_t mqtt_client_connect(mqtt_client_t *client, const ip_addr_t *ipaddr, u16_t port, mqtt_connection_cb_t cb, void *arg, + const struct mqtt_connect_client_info_t *client_info); + +/** Disconnect from server */ +void mqtt_disconnect(mqtt_client_t *client); + +/** Create new client */ +mqtt_client_t *mqtt_client_new(void); + +/** Check connection status */ +u8_t mqtt_client_is_connected(mqtt_client_t *client); + +/** Set callback to call for incoming publish */ +void mqtt_set_inpub_callback(mqtt_client_t *client, mqtt_incoming_publish_cb_t, + mqtt_incoming_data_cb_t data_cb, void *arg); + +/** Common function for subscribe and unsubscribe */ +err_t mqtt_sub_unsub(mqtt_client_t *client, const char *topic, u8_t qos, mqtt_request_cb_t cb, void *arg, u8_t sub); + +/** @ingroup mqtt + *Subscribe to topic */ +#define mqtt_subscribe(client, topic, qos, cb, arg) mqtt_sub_unsub(client, topic, qos, cb, arg, 1) +/** @ingroup mqtt + * Unsubscribe to topic */ +#define mqtt_unsubscribe(client, topic, cb, arg) mqtt_sub_unsub(client, topic, 0, cb, arg, 0) + + +/** Publish data to topic */ +err_t mqtt_publish(mqtt_client_t *client, const char *topic, const void *payload, u16_t payload_length, u8_t qos, u8_t retain, + mqtt_request_cb_t cb, void *arg); + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_APPS_MQTT_CLIENT_H */ diff --git a/tools/sdk/lwip2/include/lwip/apps/mqtt_opts.h b/tools/sdk/lwip2/include/lwip/apps/mqtt_opts.h new file mode 100644 index 000000000..ffefacd25 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/apps/mqtt_opts.h @@ -0,0 +1,103 @@ +/** + * @file + * MQTT client options + */ + +/* + * Copyright (c) 2016 Erik Andersson + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Erik Andersson + * + */ +#ifndef LWIP_HDR_APPS_MQTT_OPTS_H +#define LWIP_HDR_APPS_MQTT_OPTS_H + +#include "lwip/opt.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup mqtt_opts Options + * @ingroup mqtt + * @{ + */ + +/** + * Output ring-buffer size, must be able to fit largest outgoing publish message topic+payloads + */ +#ifndef MQTT_OUTPUT_RINGBUF_SIZE +#define MQTT_OUTPUT_RINGBUF_SIZE 256 +#endif + +/** + * Number of bytes in receive buffer, must be at least the size of the longest incoming topic + 8 + * If one wants to avoid fragmented incoming publish, set length to max incoming topic length + max payload length + 8 + */ +#ifndef MQTT_VAR_HEADER_BUFFER_LEN +#define MQTT_VAR_HEADER_BUFFER_LEN 128 +#endif + +/** + * Maximum number of pending subscribe, unsubscribe and publish requests to server . + */ +#ifndef MQTT_REQ_MAX_IN_FLIGHT +#define MQTT_REQ_MAX_IN_FLIGHT 4 +#endif + +/** + * Seconds between each cyclic timer call. + */ +#ifndef MQTT_CYCLIC_TIMER_INTERVAL +#define MQTT_CYCLIC_TIMER_INTERVAL 5 +#endif + +/** + * Publish, subscribe and unsubscribe request timeout in seconds. + */ +#ifndef MQTT_REQ_TIMEOUT +#define MQTT_REQ_TIMEOUT 30 +#endif + +/** + * Seconds for MQTT connect response timeout after sending connect request + */ +#ifndef MQTT_CONNECT_TIMOUT +#define MQTT_CONNECT_TIMOUT 100 +#endif + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_APPS_MQTT_OPTS_H */ diff --git a/tools/sdk/lwip2/include/lwip/apps/netbiosns.h b/tools/sdk/lwip2/include/lwip/apps/netbiosns.h new file mode 100644 index 000000000..c9f68d8d1 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/apps/netbiosns.h @@ -0,0 +1,43 @@ +/** + * @file + * NETBIOS name service responder + */ + +/* + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + */ +#ifndef LWIP_HDR_APPS_NETBIOS_H +#define LWIP_HDR_APPS_NETBIOS_H + +#include "lwip/apps/netbiosns_opts.h" + +void netbiosns_init(void); +#ifndef NETBIOS_LWIP_NAME +void netbiosns_set_name(const char* hostname); +#endif +void netbiosns_stop(void); + +#endif /* LWIP_HDR_APPS_NETBIOS_H */ diff --git a/tools/sdk/lwip2/include/lwip/apps/netbiosns_opts.h b/tools/sdk/lwip2/include/lwip/apps/netbiosns_opts.h new file mode 100644 index 000000000..0909ef7b9 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/apps/netbiosns_opts.h @@ -0,0 +1,59 @@ +/** + * @file + * NETBIOS name service responder options + */ + +/* + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + */ +#ifndef LWIP_HDR_APPS_NETBIOS_OPTS_H +#define LWIP_HDR_APPS_NETBIOS_OPTS_H + +#include "lwip/opt.h" + +/** + * @defgroup netbiosns_opts Options + * @ingroup netbiosns + * @{ + */ + +/** NetBIOS name of lwip device + * This must be uppercase until NETBIOS_STRCMP() is defined to a string + * comparision function that is case insensitive. + * If you want to use the netif's hostname, use this (with LWIP_NETIF_HOSTNAME): + * (ip_current_netif() != NULL ? ip_current_netif()->hostname != NULL ? ip_current_netif()->hostname : "" : "") + * + * If this is not defined, netbiosns_set_name() can be called at runtime to change the name. + */ +#ifdef __DOXYGEN__ +#define NETBIOS_LWIP_NAME "NETBIOSLWIPDEV" +#endif + +/** + * @} + */ + +#endif /* LWIP_HDR_APPS_NETBIOS_OPTS_H */ diff --git a/tools/sdk/lwip2/include/lwip/apps/snmp.h b/tools/sdk/lwip2/include/lwip/apps/snmp.h new file mode 100644 index 000000000..10e8ff434 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/apps/snmp.h @@ -0,0 +1,128 @@ +/** + * @file + * SNMP server main API - start and basic configuration + */ + +/* + * Copyright (c) 2001, 2002 Leon Woestenberg + * Copyright (c) 2001, 2002 Axon Digital Design B.V., The Netherlands. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Leon Woestenberg + * Martin Hentschel + * + */ +#ifndef LWIP_HDR_APPS_SNMP_H +#define LWIP_HDR_APPS_SNMP_H + +#include "lwip/apps/snmp_opts.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if LWIP_SNMP /* don't build if not configured for use in lwipopts.h */ + +#include "lwip/err.h" +#include "lwip/apps/snmp_core.h" + +/** SNMP variable binding descriptor (publically needed for traps) */ +struct snmp_varbind +{ + /** pointer to next varbind, NULL for last in list */ + struct snmp_varbind *next; + /** pointer to previous varbind, NULL for first in list */ + struct snmp_varbind *prev; + + /** object identifier */ + struct snmp_obj_id oid; + + /** value ASN1 type */ + u8_t type; + /** object value length */ + u16_t value_len; + /** object value */ + void *value; +}; + +/** + * @ingroup snmp_core + * Agent setup, start listening to port 161. + */ +void snmp_init(void); +void snmp_set_mibs(const struct snmp_mib **mibs, u8_t num_mibs); + +void snmp_set_device_enterprise_oid(const struct snmp_obj_id* device_enterprise_oid); +const struct snmp_obj_id* snmp_get_device_enterprise_oid(void); + +void snmp_trap_dst_enable(u8_t dst_idx, u8_t enable); +void snmp_trap_dst_ip_set(u8_t dst_idx, const ip_addr_t *dst); + +/** Generic trap: cold start */ +#define SNMP_GENTRAP_COLDSTART 0 +/** Generic trap: warm start */ +#define SNMP_GENTRAP_WARMSTART 1 +/** Generic trap: link down */ +#define SNMP_GENTRAP_LINKDOWN 2 +/** Generic trap: link up */ +#define SNMP_GENTRAP_LINKUP 3 +/** Generic trap: authentication failure */ +#define SNMP_GENTRAP_AUTH_FAILURE 4 +/** Generic trap: EGP neighbor lost */ +#define SNMP_GENTRAP_EGP_NEIGHBOR_LOSS 5 +/** Generic trap: enterprise specific */ +#define SNMP_GENTRAP_ENTERPRISE_SPECIFIC 6 + +err_t snmp_send_trap_generic(s32_t generic_trap); +err_t snmp_send_trap_specific(s32_t specific_trap, struct snmp_varbind *varbinds); +err_t snmp_send_trap(const struct snmp_obj_id* oid, s32_t generic_trap, s32_t specific_trap, struct snmp_varbind *varbinds); + +#define SNMP_AUTH_TRAPS_DISABLED 0 +#define SNMP_AUTH_TRAPS_ENABLED 1 +void snmp_set_auth_traps_enabled(u8_t enable); +u8_t snmp_get_auth_traps_enabled(void); + +const char * snmp_get_community(void); +const char * snmp_get_community_write(void); +const char * snmp_get_community_trap(void); +void snmp_set_community(const char * const community); +void snmp_set_community_write(const char * const community); +void snmp_set_community_trap(const char * const community); + +void snmp_coldstart_trap(void); +void snmp_authfail_trap(void); + +typedef void (*snmp_write_callback_fct)(const u32_t* oid, u8_t oid_len, void* callback_arg); +void snmp_set_write_callback(snmp_write_callback_fct write_callback, void* callback_arg); + +#endif /* LWIP_SNMP */ + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_APPS_SNMP_H */ diff --git a/tools/sdk/lwip2/include/lwip/apps/snmp_core.h b/tools/sdk/lwip2/include/lwip/apps/snmp_core.h new file mode 100644 index 000000000..e781c532b --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/apps/snmp_core.h @@ -0,0 +1,364 @@ +/** + * @file + * SNMP core API for implementing MIBs + */ + +/* + * Copyright (c) 2006 Axon Digital Design B.V., The Netherlands. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * Author: Christiaan Simons + * Martin Hentschel + */ + +#ifndef LWIP_HDR_APPS_SNMP_CORE_H +#define LWIP_HDR_APPS_SNMP_CORE_H + +#include "lwip/apps/snmp_opts.h" + +#if LWIP_SNMP /* don't build if not configured for use in lwipopts.h */ + +#include "lwip/ip_addr.h" +#include "lwip/err.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* basic ASN1 defines */ +#define SNMP_ASN1_CLASS_UNIVERSAL 0x00 +#define SNMP_ASN1_CLASS_APPLICATION 0x40 +#define SNMP_ASN1_CLASS_CONTEXT 0x80 +#define SNMP_ASN1_CLASS_PRIVATE 0xC0 + +#define SNMP_ASN1_CONTENTTYPE_PRIMITIVE 0x00 +#define SNMP_ASN1_CONTENTTYPE_CONSTRUCTED 0x20 + +/* universal tags (from ASN.1 spec.) */ +#define SNMP_ASN1_UNIVERSAL_END_OF_CONTENT 0 +#define SNMP_ASN1_UNIVERSAL_INTEGER 2 +#define SNMP_ASN1_UNIVERSAL_OCTET_STRING 4 +#define SNMP_ASN1_UNIVERSAL_NULL 5 +#define SNMP_ASN1_UNIVERSAL_OBJECT_ID 6 +#define SNMP_ASN1_UNIVERSAL_SEQUENCE_OF 16 + +/* application specific (SNMP) tags (from SNMPv2-SMI) */ +#define SNMP_ASN1_APPLICATION_IPADDR 0 /* [APPLICATION 0] IMPLICIT OCTET STRING (SIZE (4)) */ +#define SNMP_ASN1_APPLICATION_COUNTER 1 /* [APPLICATION 1] IMPLICIT INTEGER (0..4294967295) => u32_t */ +#define SNMP_ASN1_APPLICATION_GAUGE 2 /* [APPLICATION 2] IMPLICIT INTEGER (0..4294967295) => u32_t */ +#define SNMP_ASN1_APPLICATION_TIMETICKS 3 /* [APPLICATION 3] IMPLICIT INTEGER (0..4294967295) => u32_t */ +#define SNMP_ASN1_APPLICATION_OPAQUE 4 /* [APPLICATION 4] IMPLICIT OCTET STRING */ +#define SNMP_ASN1_APPLICATION_COUNTER64 6 /* [APPLICATION 6] IMPLICIT INTEGER (0..18446744073709551615) */ + +/* context specific (SNMP) tags (from RFC 1905) */ +#define SNMP_ASN1_CONTEXT_VARBIND_NO_SUCH_INSTANCE 1 + +/* full ASN1 type defines */ +#define SNMP_ASN1_TYPE_END_OF_CONTENT (SNMP_ASN1_CLASS_UNIVERSAL | SNMP_ASN1_CONTENTTYPE_PRIMITIVE | SNMP_ASN1_UNIVERSAL_END_OF_CONTENT) +#define SNMP_ASN1_TYPE_INTEGER (SNMP_ASN1_CLASS_UNIVERSAL | SNMP_ASN1_CONTENTTYPE_PRIMITIVE | SNMP_ASN1_UNIVERSAL_INTEGER) +#define SNMP_ASN1_TYPE_OCTET_STRING (SNMP_ASN1_CLASS_UNIVERSAL | SNMP_ASN1_CONTENTTYPE_PRIMITIVE | SNMP_ASN1_UNIVERSAL_OCTET_STRING) +#define SNMP_ASN1_TYPE_NULL (SNMP_ASN1_CLASS_UNIVERSAL | SNMP_ASN1_CONTENTTYPE_PRIMITIVE | SNMP_ASN1_UNIVERSAL_NULL) +#define SNMP_ASN1_TYPE_OBJECT_ID (SNMP_ASN1_CLASS_UNIVERSAL | SNMP_ASN1_CONTENTTYPE_PRIMITIVE | SNMP_ASN1_UNIVERSAL_OBJECT_ID) +#define SNMP_ASN1_TYPE_SEQUENCE (SNMP_ASN1_CLASS_UNIVERSAL | SNMP_ASN1_CONTENTTYPE_CONSTRUCTED | SNMP_ASN1_UNIVERSAL_SEQUENCE_OF) +#define SNMP_ASN1_TYPE_IPADDR (SNMP_ASN1_CLASS_APPLICATION | SNMP_ASN1_CONTENTTYPE_PRIMITIVE | SNMP_ASN1_APPLICATION_IPADDR) +#define SNMP_ASN1_TYPE_IPADDRESS SNMP_ASN1_TYPE_IPADDR +#define SNMP_ASN1_TYPE_COUNTER (SNMP_ASN1_CLASS_APPLICATION | SNMP_ASN1_CONTENTTYPE_PRIMITIVE | SNMP_ASN1_APPLICATION_COUNTER) +#define SNMP_ASN1_TYPE_COUNTER32 SNMP_ASN1_TYPE_COUNTER +#define SNMP_ASN1_TYPE_GAUGE (SNMP_ASN1_CLASS_APPLICATION | SNMP_ASN1_CONTENTTYPE_PRIMITIVE | SNMP_ASN1_APPLICATION_GAUGE) +#define SNMP_ASN1_TYPE_GAUGE32 SNMP_ASN1_TYPE_GAUGE +#define SNMP_ASN1_TYPE_UNSIGNED32 SNMP_ASN1_TYPE_GAUGE +#define SNMP_ASN1_TYPE_TIMETICKS (SNMP_ASN1_CLASS_APPLICATION | SNMP_ASN1_CONTENTTYPE_PRIMITIVE | SNMP_ASN1_APPLICATION_TIMETICKS) +#define SNMP_ASN1_TYPE_OPAQUE (SNMP_ASN1_CLASS_APPLICATION | SNMP_ASN1_CONTENTTYPE_PRIMITIVE | SNMP_ASN1_APPLICATION_OPAQUE) +#define SNMP_ASN1_TYPE_COUNTER64 (SNMP_ASN1_CLASS_APPLICATION | SNMP_ASN1_CONTENTTYPE_PRIMITIVE | SNMP_ASN1_APPLICATION_COUNTER64) + +#define SNMP_VARBIND_EXCEPTION_OFFSET 0xF0 +#define SNMP_VARBIND_EXCEPTION_MASK 0x0F + +/** error codes predefined by SNMP prot. */ +typedef enum { + SNMP_ERR_NOERROR = 0, +/* +outdated v1 error codes. do not use anmore! +#define SNMP_ERR_NOSUCHNAME 2 use SNMP_ERR_NOSUCHINSTANCE instead +#define SNMP_ERR_BADVALUE 3 use SNMP_ERR_WRONGTYPE,SNMP_ERR_WRONGLENGTH,SNMP_ERR_WRONGENCODING or SNMP_ERR_WRONGVALUE instead +#define SNMP_ERR_READONLY 4 use SNMP_ERR_NOTWRITABLE instead +*/ + SNMP_ERR_GENERROR = 5, + SNMP_ERR_NOACCESS = 6, + SNMP_ERR_WRONGTYPE = 7, + SNMP_ERR_WRONGLENGTH = 8, + SNMP_ERR_WRONGENCODING = 9, + SNMP_ERR_WRONGVALUE = 10, + SNMP_ERR_NOCREATION = 11, + SNMP_ERR_INCONSISTENTVALUE = 12, + SNMP_ERR_RESOURCEUNAVAILABLE = 13, + SNMP_ERR_COMMITFAILED = 14, + SNMP_ERR_UNDOFAILED = 15, + SNMP_ERR_NOTWRITABLE = 17, + SNMP_ERR_INCONSISTENTNAME = 18, + + SNMP_ERR_NOSUCHINSTANCE = SNMP_VARBIND_EXCEPTION_OFFSET + SNMP_ASN1_CONTEXT_VARBIND_NO_SUCH_INSTANCE +} snmp_err_t; + +/** internal object identifier representation */ +struct snmp_obj_id +{ + u8_t len; + u32_t id[SNMP_MAX_OBJ_ID_LEN]; +}; + +struct snmp_obj_id_const_ref +{ + u8_t len; + const u32_t* id; +}; + +extern const struct snmp_obj_id_const_ref snmp_zero_dot_zero; /* administrative identifier from SNMPv2-SMI */ + +/** SNMP variant value, used as reference in struct snmp_node_instance and table implementation */ +union snmp_variant_value +{ + void* ptr; + const void* const_ptr; + u32_t u32; + s32_t s32; +}; + + +/** +SNMP MIB node types + tree node is the only node the stack can process in order to walk the tree, + all other nodes are assumed to be leaf nodes. + This cannot be an enum because users may want to define their own node types. +*/ +#define SNMP_NODE_TREE 0x00 +/* predefined leaf node types */ +#define SNMP_NODE_SCALAR 0x01 +#define SNMP_NODE_SCALAR_ARRAY 0x02 +#define SNMP_NODE_TABLE 0x03 +#define SNMP_NODE_THREADSYNC 0x04 + +/** node "base class" layout, the mandatory fields for a node */ +struct snmp_node +{ + /** one out of SNMP_NODE_TREE or any leaf node type (like SNMP_NODE_SCALAR) */ + u8_t node_type; + /** the number assigned to this node which used as part of the full OID */ + u32_t oid; +}; + +/** SNMP node instance access types */ +typedef enum { + SNMP_NODE_INSTANCE_ACCESS_READ = 1, + SNMP_NODE_INSTANCE_ACCESS_WRITE = 2, + SNMP_NODE_INSTANCE_READ_ONLY = SNMP_NODE_INSTANCE_ACCESS_READ, + SNMP_NODE_INSTANCE_READ_WRITE = (SNMP_NODE_INSTANCE_ACCESS_READ | SNMP_NODE_INSTANCE_ACCESS_WRITE), + SNMP_NODE_INSTANCE_WRITE_ONLY = SNMP_NODE_INSTANCE_ACCESS_WRITE, + SNMP_NODE_INSTANCE_NOT_ACCESSIBLE = 0 +} snmp_access_t; + +struct snmp_node_instance; + +typedef s16_t (*node_instance_get_value_method)(struct snmp_node_instance*, void*); +typedef snmp_err_t (*node_instance_set_test_method)(struct snmp_node_instance*, u16_t, void*); +typedef snmp_err_t (*node_instance_set_value_method)(struct snmp_node_instance*, u16_t, void*); +typedef void (*node_instance_release_method)(struct snmp_node_instance*); + +#define SNMP_GET_VALUE_RAW_DATA 0x8000 + +/** SNMP node instance */ +struct snmp_node_instance +{ + /** prefilled with the node, get_instance() is called on; may be changed by user to any value to pass an arbitrary node between calls to get_instance() and get_value/test_value/set_value */ + const struct snmp_node* node; + /** prefilled with the instance id requested; for get_instance() this is the exact oid requested; for get_next_instance() this is the relative starting point, stack expects relative oid of next node here */ + struct snmp_obj_id instance_oid; + + /** ASN type for this object (see snmp_asn1.h for definitions) */ + u8_t asn1_type; + /** one out of instance access types defined above (SNMP_NODE_INSTANCE_READ_ONLY,...) */ + snmp_access_t access; + + /** returns object value for the given object identifier. Return values <0 to indicate an error */ + node_instance_get_value_method get_value; + /** tests length and/or range BEFORE setting */ + node_instance_set_test_method set_test; + /** sets object value, only called when set_test() was successful */ + node_instance_set_value_method set_value; + /** called in any case when the instance is not required anymore by stack (useful for freeing memory allocated in get_instance/get_next_instance methods) */ + node_instance_release_method release_instance; + + /** reference to pass arbitrary value between calls to get_instance() and get_value/test_value/set_value */ + union snmp_variant_value reference; + /** see reference (if reference is a pointer, the length of underlying data may be stored here or anything else) */ + u32_t reference_len; +}; + + +/** SNMP tree node */ +struct snmp_tree_node +{ + /** inherited "base class" members */ + struct snmp_node node; + u16_t subnode_count; + const struct snmp_node* const *subnodes; +}; + +#define SNMP_CREATE_TREE_NODE(oid, subnodes) \ + {{ SNMP_NODE_TREE, (oid) }, \ + (u16_t)LWIP_ARRAYSIZE(subnodes), (subnodes) } + +#define SNMP_CREATE_EMPTY_TREE_NODE(oid) \ + {{ SNMP_NODE_TREE, (oid) }, \ + 0, NULL } + +/** SNMP leaf node */ +struct snmp_leaf_node +{ + /** inherited "base class" members */ + struct snmp_node node; + snmp_err_t (*get_instance)(const u32_t *root_oid, u8_t root_oid_len, struct snmp_node_instance* instance); + snmp_err_t (*get_next_instance)(const u32_t *root_oid, u8_t root_oid_len, struct snmp_node_instance* instance); +}; + +/** represents a single mib with its base oid and root node */ +struct snmp_mib +{ + const u32_t *base_oid; + u8_t base_oid_len; + const struct snmp_node *root_node; +}; + +#define SNMP_MIB_CREATE(oid_list, root_node) { (oid_list), (u8_t)LWIP_ARRAYSIZE(oid_list), root_node } + +/** OID range structure */ +struct snmp_oid_range +{ + u32_t min; + u32_t max; +}; + +/** checks if incoming OID length and values are in allowed ranges */ +u8_t snmp_oid_in_range(const u32_t *oid_in, u8_t oid_len, const struct snmp_oid_range *oid_ranges, u8_t oid_ranges_len); + +typedef enum { + SNMP_NEXT_OID_STATUS_SUCCESS, + SNMP_NEXT_OID_STATUS_NO_MATCH, + SNMP_NEXT_OID_STATUS_BUF_TO_SMALL +} snmp_next_oid_status_t; + +/** state for next_oid_init / next_oid_check functions */ +struct snmp_next_oid_state +{ + const u32_t* start_oid; + u8_t start_oid_len; + + u32_t* next_oid; + u8_t next_oid_len; + u8_t next_oid_max_len; + + snmp_next_oid_status_t status; + void* reference; +}; + +void snmp_next_oid_init(struct snmp_next_oid_state *state, + const u32_t *start_oid, u8_t start_oid_len, + u32_t *next_oid_buf, u8_t next_oid_max_len); +u8_t snmp_next_oid_precheck(struct snmp_next_oid_state *state, const u32_t *oid, const u8_t oid_len); +u8_t snmp_next_oid_check(struct snmp_next_oid_state *state, const u32_t *oid, const u8_t oid_len, void* reference); + +void snmp_oid_assign(struct snmp_obj_id* target, const u32_t *oid, u8_t oid_len); +void snmp_oid_combine(struct snmp_obj_id* target, const u32_t *oid1, u8_t oid1_len, const u32_t *oid2, u8_t oid2_len); +void snmp_oid_prefix(struct snmp_obj_id* target, const u32_t *oid, u8_t oid_len); +void snmp_oid_append(struct snmp_obj_id* target, const u32_t *oid, u8_t oid_len); +u8_t snmp_oid_equal(const u32_t *oid1, u8_t oid1_len, const u32_t *oid2, u8_t oid2_len); +s8_t snmp_oid_compare(const u32_t *oid1, u8_t oid1_len, const u32_t *oid2, u8_t oid2_len); + +#if LWIP_IPV4 +u8_t snmp_oid_to_ip4(const u32_t *oid, ip4_addr_t *ip); +void snmp_ip4_to_oid(const ip4_addr_t *ip, u32_t *oid); +#endif /* LWIP_IPV4 */ +#if LWIP_IPV6 +u8_t snmp_oid_to_ip6(const u32_t *oid, ip6_addr_t *ip); +void snmp_ip6_to_oid(const ip6_addr_t *ip, u32_t *oid); +#endif /* LWIP_IPV6 */ +#if LWIP_IPV4 || LWIP_IPV6 +u8_t snmp_ip_to_oid(const ip_addr_t *ip, u32_t *oid); +u8_t snmp_ip_port_to_oid(const ip_addr_t *ip, u16_t port, u32_t *oid); + +u8_t snmp_oid_to_ip(const u32_t *oid, u8_t oid_len, ip_addr_t *ip); +u8_t snmp_oid_to_ip_port(const u32_t *oid, u8_t oid_len, ip_addr_t *ip, u16_t *port); +#endif /* LWIP_IPV4 || LWIP_IPV6 */ + +struct netif; +u8_t netif_to_num(const struct netif *netif); + +snmp_err_t snmp_set_test_ok(struct snmp_node_instance* instance, u16_t value_len, void* value); /* generic function which can be used if test is always successful */ + +err_t snmp_decode_bits(const u8_t *buf, u32_t buf_len, u32_t *bit_value); +err_t snmp_decode_truthvalue(const s32_t *asn1_value, u8_t *bool_value); +u8_t snmp_encode_bits(u8_t *buf, u32_t buf_len, u32_t bit_value, u8_t bit_count); +u8_t snmp_encode_truthvalue(s32_t *asn1_value, u32_t bool_value); + +struct snmp_statistics +{ + u32_t inpkts; + u32_t outpkts; + u32_t inbadversions; + u32_t inbadcommunitynames; + u32_t inbadcommunityuses; + u32_t inasnparseerrs; + u32_t intoobigs; + u32_t innosuchnames; + u32_t inbadvalues; + u32_t inreadonlys; + u32_t ingenerrs; + u32_t intotalreqvars; + u32_t intotalsetvars; + u32_t ingetrequests; + u32_t ingetnexts; + u32_t insetrequests; + u32_t ingetresponses; + u32_t intraps; + u32_t outtoobigs; + u32_t outnosuchnames; + u32_t outbadvalues; + u32_t outgenerrs; + u32_t outgetrequests; + u32_t outgetnexts; + u32_t outsetrequests; + u32_t outgetresponses; + u32_t outtraps; +}; + +extern struct snmp_statistics snmp_stats; + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_SNMP */ + +#endif /* LWIP_HDR_APPS_SNMP_CORE_H */ diff --git a/tools/sdk/lwip2/include/lwip/apps/snmp_mib2.h b/tools/sdk/lwip2/include/lwip/apps/snmp_mib2.h new file mode 100644 index 000000000..2f4a68935 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/apps/snmp_mib2.h @@ -0,0 +1,78 @@ +/** + * @file + * SNMP MIB2 API + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Dirk Ziegelmeier + * + */ +#ifndef LWIP_HDR_APPS_SNMP_MIB2_H +#define LWIP_HDR_APPS_SNMP_MIB2_H + +#include "lwip/apps/snmp_opts.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if LWIP_SNMP /* don't build if not configured for use in lwipopts.h */ +#if SNMP_LWIP_MIB2 + +#include "lwip/apps/snmp_core.h" + +extern const struct snmp_mib mib2; + +#if SNMP_USE_NETCONN +#include "lwip/apps/snmp_threadsync.h" +void snmp_mib2_lwip_synchronizer(snmp_threadsync_called_fn fn, void* arg); +extern struct snmp_threadsync_instance snmp_mib2_lwip_locks; +#endif + +#ifndef SNMP_SYSSERVICES +#define SNMP_SYSSERVICES ((1 << 6) | (1 << 3) | ((IP_FORWARD) << 2)) +#endif + +void snmp_mib2_set_sysdescr(const u8_t* str, const u16_t* len); /* read-only be defintion */ +void snmp_mib2_set_syscontact(u8_t *ocstr, u16_t *ocstrlen, u16_t bufsize); +void snmp_mib2_set_syscontact_readonly(const u8_t *ocstr, const u16_t *ocstrlen); +void snmp_mib2_set_sysname(u8_t *ocstr, u16_t *ocstrlen, u16_t bufsize); +void snmp_mib2_set_sysname_readonly(const u8_t *ocstr, const u16_t *ocstrlen); +void snmp_mib2_set_syslocation(u8_t *ocstr, u16_t *ocstrlen, u16_t bufsize); +void snmp_mib2_set_syslocation_readonly(const u8_t *ocstr, const u16_t *ocstrlen); + +#endif /* SNMP_LWIP_MIB2 */ +#endif /* LWIP_SNMP */ + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_APPS_SNMP_MIB2_H */ diff --git a/tools/sdk/lwip2/include/lwip/apps/snmp_opts.h b/tools/sdk/lwip2/include/lwip/apps/snmp_opts.h new file mode 100644 index 000000000..6c9ba7beb --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/apps/snmp_opts.h @@ -0,0 +1,293 @@ +/** + * @file + * SNMP server options list + */ + +/* + * Copyright (c) 2015 Dirk Ziegelmeier + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Dirk Ziegelmeier + * + */ +#ifndef LWIP_HDR_SNMP_OPTS_H +#define LWIP_HDR_SNMP_OPTS_H + +#include "lwip/opt.h" + +/** + * @defgroup snmp_opts Options + * @ingroup snmp + * @{ + */ + +/** + * LWIP_SNMP==1: This enables the lwIP SNMP agent. UDP must be available + * for SNMP transport. + * If you want to use your own SNMP agent, leave this disabled. + * To integrate MIB2 of an external agent, you need to enable + * LWIP_MIB2_CALLBACKS and MIB2_STATS. This will give you the callbacks + * and statistics counters you need to get MIB2 working. + */ +#if !defined LWIP_SNMP || defined __DOXYGEN__ +#define LWIP_SNMP 0 +#endif + +/** + * SNMP_USE_NETCONN: Use netconn API instead of raw API. + * Makes SNMP agent run in a worker thread, so blocking operations + * can be done in MIB calls. + */ +#if !defined SNMP_USE_NETCONN || defined __DOXYGEN__ +#define SNMP_USE_NETCONN 0 +#endif + +/** + * SNMP_USE_RAW: Use raw API. + * SNMP agent does not run in a worker thread, so blocking operations + * should not be done in MIB calls. + */ +#if !defined SNMP_USE_RAW || defined __DOXYGEN__ +#define SNMP_USE_RAW 1 +#endif + +#if SNMP_USE_NETCONN && SNMP_USE_RAW +#error SNMP stack can use only one of the APIs {raw, netconn} +#endif + +#if LWIP_SNMP && !SNMP_USE_NETCONN && !SNMP_USE_RAW +#error SNMP stack needs a receive API and UDP {raw, netconn} +#endif + +#if SNMP_USE_NETCONN +/** + * SNMP_STACK_SIZE: Stack size of SNMP netconn worker thread + */ +#if !defined SNMP_STACK_SIZE || defined __DOXYGEN__ +#define SNMP_STACK_SIZE DEFAULT_THREAD_STACKSIZE +#endif + +/** + * SNMP_THREAD_PRIO: SNMP netconn worker thread priority + */ +#if !defined SNMP_THREAD_PRIO || defined __DOXYGEN__ +#define SNMP_THREAD_PRIO DEFAULT_THREAD_PRIO +#endif +#endif /* SNMP_USE_NETCONN */ + +/** + * SNMP_TRAP_DESTINATIONS: Number of trap destinations. At least one trap + * destination is required + */ +#if !defined SNMP_TRAP_DESTINATIONS || defined __DOXYGEN__ +#define SNMP_TRAP_DESTINATIONS 1 +#endif + +/** + * Only allow SNMP write actions that are 'safe' (e.g. disabling netifs is not + * a safe action and disabled when SNMP_SAFE_REQUESTS = 1). + * Unsafe requests are disabled by default! + */ +#if !defined SNMP_SAFE_REQUESTS || defined __DOXYGEN__ +#define SNMP_SAFE_REQUESTS 1 +#endif + +/** + * The maximum length of strings used. + */ +#if !defined SNMP_MAX_OCTET_STRING_LEN || defined __DOXYGEN__ +#define SNMP_MAX_OCTET_STRING_LEN 127 +#endif + +/** + * The maximum number of Sub ID's inside an object identifier. + * Indirectly this also limits the maximum depth of SNMP tree. + */ +#if !defined SNMP_MAX_OBJ_ID_LEN || defined __DOXYGEN__ +#define SNMP_MAX_OBJ_ID_LEN 50 +#endif + +#if !defined SNMP_MAX_VALUE_SIZE || defined __DOXYGEN__ +/** + * The maximum size of a value. + */ +#define SNMP_MIN_VALUE_SIZE (2 * sizeof(u32_t*)) /* size required to store the basic types (8 bytes for counter64) */ +/** + * The minimum size of a value. + */ +#define SNMP_MAX_VALUE_SIZE LWIP_MAX(LWIP_MAX((SNMP_MAX_OCTET_STRING_LEN), sizeof(u32_t)*(SNMP_MAX_OBJ_ID_LEN)), SNMP_MIN_VALUE_SIZE) +#endif + +/** + * The snmp read-access community. Used for write-access and traps, too + * unless SNMP_COMMUNITY_WRITE or SNMP_COMMUNITY_TRAP are enabled, respectively. + */ +#if !defined SNMP_COMMUNITY || defined __DOXYGEN__ +#define SNMP_COMMUNITY "public" +#endif + +/** + * The snmp write-access community. + * Set this community to "" in order to disallow any write access. + */ +#if !defined SNMP_COMMUNITY_WRITE || defined __DOXYGEN__ +#define SNMP_COMMUNITY_WRITE "private" +#endif + +/** + * The snmp community used for sending traps. + */ +#if !defined SNMP_COMMUNITY_TRAP || defined __DOXYGEN__ +#define SNMP_COMMUNITY_TRAP "public" +#endif + +/** + * The maximum length of community string. + * If community names shall be adjusted at runtime via snmp_set_community() calls, + * enter here the possible maximum length (+1 for terminating null character). + */ +#if !defined SNMP_MAX_COMMUNITY_STR_LEN || defined __DOXYGEN__ +#define SNMP_MAX_COMMUNITY_STR_LEN LWIP_MAX(LWIP_MAX(sizeof(SNMP_COMMUNITY), sizeof(SNMP_COMMUNITY_WRITE)), sizeof(SNMP_COMMUNITY_TRAP)) +#endif + +/** + * The OID identifiying the device. This may be the enterprise OID itself or any OID located below it in tree. + */ +#if !defined SNMP_DEVICE_ENTERPRISE_OID || defined __DOXYGEN__ +#define SNMP_LWIP_ENTERPRISE_OID 26381 +/** + * IANA assigned enterprise ID for lwIP is 26381 + * @see http://www.iana.org/assignments/enterprise-numbers + * + * @note this enterprise ID is assigned to the lwIP project, + * all object identifiers living under this ID are assigned + * by the lwIP maintainers! + * @note don't change this define, use snmp_set_device_enterprise_oid() + * + * If you need to create your own private MIB you'll need + * to apply for your own enterprise ID with IANA: + * http://www.iana.org/numbers.html + */ +#define SNMP_DEVICE_ENTERPRISE_OID {1, 3, 6, 1, 4, 1, SNMP_LWIP_ENTERPRISE_OID} +/** + * Length of SNMP_DEVICE_ENTERPRISE_OID + */ +#define SNMP_DEVICE_ENTERPRISE_OID_LEN 7 +#endif + +/** + * SNMP_DEBUG: Enable debugging for SNMP messages. + */ +#if !defined SNMP_DEBUG || defined __DOXYGEN__ +#define SNMP_DEBUG LWIP_DBG_OFF +#endif + +/** + * SNMP_MIB_DEBUG: Enable debugging for SNMP MIBs. + */ +#if !defined SNMP_MIB_DEBUG || defined __DOXYGEN__ +#define SNMP_MIB_DEBUG LWIP_DBG_OFF +#endif + +/** + * Indicates if the MIB2 implementation of LWIP SNMP stack is used. + */ +#if !defined SNMP_LWIP_MIB2 || defined __DOXYGEN__ +#define SNMP_LWIP_MIB2 LWIP_SNMP +#endif + +/** + * Value return for sysDesc field of MIB2. + */ +#if !defined SNMP_LWIP_MIB2_SYSDESC || defined __DOXYGEN__ +#define SNMP_LWIP_MIB2_SYSDESC "lwIP" +#endif + +/** + * Value return for sysName field of MIB2. + * To make sysName field settable, call snmp_mib2_set_sysname() to provide the necessary buffers. + */ +#if !defined SNMP_LWIP_MIB2_SYSNAME || defined __DOXYGEN__ +#define SNMP_LWIP_MIB2_SYSNAME "FQDN-unk" +#endif + +/** + * Value return for sysContact field of MIB2. + * To make sysContact field settable, call snmp_mib2_set_syscontact() to provide the necessary buffers. + */ +#if !defined SNMP_LWIP_MIB2_SYSCONTACT || defined __DOXYGEN__ +#define SNMP_LWIP_MIB2_SYSCONTACT "" +#endif + +/** + * Value return for sysLocation field of MIB2. + * To make sysLocation field settable, call snmp_mib2_set_syslocation() to provide the necessary buffers. + */ +#if !defined SNMP_LWIP_MIB2_SYSLOCATION || defined __DOXYGEN__ +#define SNMP_LWIP_MIB2_SYSLOCATION "" +#endif + +/** + * This value is used to limit the repetitions processed in GetBulk requests (value == 0 means no limitation). + * This may be useful to limit the load for a single request. + * According to SNMP RFC 1905 it is allowed to not return all requested variables from a GetBulk request if system load would be too high. + * so the effect is that the client will do more requests to gather all data. + * For the stack this could be useful in case that SNMP processing is done in TCP/IP thread. In this situation a request with many + * repetitions could block the thread for a longer time. Setting limit here will keep the stack more responsive. + */ +#if !defined SNMP_LWIP_GETBULK_MAX_REPETITIONS || defined __DOXYGEN__ +#define SNMP_LWIP_GETBULK_MAX_REPETITIONS 0 +#endif + +/** + * @} + */ + +/* + ------------------------------------ + ---------- SNMPv3 options ---------- + ------------------------------------ +*/ + +/** + * LWIP_SNMP_V3==1: This enables EXPERIMENTAL SNMPv3 support. LWIP_SNMP must + * also be enabled. + * THIS IS UNDER DEVELOPMENT AND SHOULD NOT BE ENABLED IN PRODUCTS. + */ +#ifndef LWIP_SNMP_V3 +#define LWIP_SNMP_V3 0 +#endif + +#ifndef LWIP_SNMP_V3_CRYPTO +#define LWIP_SNMP_V3_CRYPTO LWIP_SNMP_V3 +#endif + +#ifndef LWIP_SNMP_V3_MBEDTLS +#define LWIP_SNMP_V3_MBEDTLS LWIP_SNMP_V3 +#endif + +#endif /* LWIP_HDR_SNMP_OPTS_H */ diff --git a/tools/sdk/lwip2/include/lwip/apps/snmp_scalar.h b/tools/sdk/lwip2/include/lwip/apps/snmp_scalar.h new file mode 100644 index 000000000..40a060c64 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/apps/snmp_scalar.h @@ -0,0 +1,113 @@ +/** + * @file + * SNMP server MIB API to implement scalar nodes + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Martin Hentschel + * + */ + +#ifndef LWIP_HDR_APPS_SNMP_SCALAR_H +#define LWIP_HDR_APPS_SNMP_SCALAR_H + +#include "lwip/apps/snmp_opts.h" +#include "lwip/apps/snmp_core.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if LWIP_SNMP /* don't build if not configured for use in lwipopts.h */ + +/** basic scalar node */ +struct snmp_scalar_node +{ + /** inherited "base class" members */ + struct snmp_leaf_node node; + u8_t asn1_type; + snmp_access_t access; + node_instance_get_value_method get_value; + node_instance_set_test_method set_test; + node_instance_set_value_method set_value; +}; + + +snmp_err_t snmp_scalar_get_instance(const u32_t *root_oid, u8_t root_oid_len, struct snmp_node_instance* instance); +snmp_err_t snmp_scalar_get_next_instance(const u32_t *root_oid, u8_t root_oid_len, struct snmp_node_instance* instance); + +#define SNMP_SCALAR_CREATE_NODE(oid, access, asn1_type, get_value_method, set_test_method, set_value_method) \ + {{{ SNMP_NODE_SCALAR, (oid) }, \ + snmp_scalar_get_instance, \ + snmp_scalar_get_next_instance }, \ + (asn1_type), (access), (get_value_method), (set_test_method), (set_value_method) } + +#define SNMP_SCALAR_CREATE_NODE_READONLY(oid, asn1_type, get_value_method) SNMP_SCALAR_CREATE_NODE(oid, SNMP_NODE_INSTANCE_READ_ONLY, asn1_type, get_value_method, NULL, NULL) + +/** scalar array node - a tree node which contains scalars only as children */ +struct snmp_scalar_array_node_def +{ + u32_t oid; + u8_t asn1_type; + snmp_access_t access; +}; + +typedef s16_t (*snmp_scalar_array_get_value_method)(const struct snmp_scalar_array_node_def*, void*); +typedef snmp_err_t (*snmp_scalar_array_set_test_method)(const struct snmp_scalar_array_node_def*, u16_t, void*); +typedef snmp_err_t (*snmp_scalar_array_set_value_method)(const struct snmp_scalar_array_node_def*, u16_t, void*); + +/** basic scalar array node */ +struct snmp_scalar_array_node +{ + /** inherited "base class" members */ + struct snmp_leaf_node node; + u16_t array_node_count; + const struct snmp_scalar_array_node_def* array_nodes; + snmp_scalar_array_get_value_method get_value; + snmp_scalar_array_set_test_method set_test; + snmp_scalar_array_set_value_method set_value; +}; + +snmp_err_t snmp_scalar_array_get_instance(const u32_t *root_oid, u8_t root_oid_len, struct snmp_node_instance* instance); +snmp_err_t snmp_scalar_array_get_next_instance(const u32_t *root_oid, u8_t root_oid_len, struct snmp_node_instance* instance); + +#define SNMP_SCALAR_CREATE_ARRAY_NODE(oid, array_nodes, get_value_method, set_test_method, set_value_method) \ + {{{ SNMP_NODE_SCALAR_ARRAY, (oid) }, \ + snmp_scalar_array_get_instance, \ + snmp_scalar_array_get_next_instance }, \ + (u16_t)LWIP_ARRAYSIZE(array_nodes), (array_nodes), (get_value_method), (set_test_method), (set_value_method) } + +#endif /* LWIP_SNMP */ + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_APPS_SNMP_SCALAR_H */ diff --git a/tools/sdk/lwip2/include/lwip/apps/snmp_table.h b/tools/sdk/lwip2/include/lwip/apps/snmp_table.h new file mode 100644 index 000000000..4988b51c2 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/apps/snmp_table.h @@ -0,0 +1,134 @@ +/** + * @file + * SNMP server MIB API to implement table nodes + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Martin Hentschel + * + */ + +#ifndef LWIP_HDR_APPS_SNMP_TABLE_H +#define LWIP_HDR_APPS_SNMP_TABLE_H + +#include "lwip/apps/snmp_opts.h" +#include "lwip/apps/snmp_core.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if LWIP_SNMP /* don't build if not configured for use in lwipopts.h */ + +/** default (customizable) read/write table */ +struct snmp_table_col_def +{ + u32_t index; + u8_t asn1_type; + snmp_access_t access; +}; + +/** table node */ +struct snmp_table_node +{ + /** inherited "base class" members */ + struct snmp_leaf_node node; + u16_t column_count; + const struct snmp_table_col_def* columns; + snmp_err_t (*get_cell_instance)(const u32_t* column, const u32_t* row_oid, u8_t row_oid_len, struct snmp_node_instance* cell_instance); + snmp_err_t (*get_next_cell_instance)(const u32_t* column, struct snmp_obj_id* row_oid, struct snmp_node_instance* cell_instance); + /** returns object value for the given object identifier */ + node_instance_get_value_method get_value; + /** tests length and/or range BEFORE setting */ + node_instance_set_test_method set_test; + /** sets object value, only called when set_test() was successful */ + node_instance_set_value_method set_value; +}; + +snmp_err_t snmp_table_get_instance(const u32_t *root_oid, u8_t root_oid_len, struct snmp_node_instance* instance); +snmp_err_t snmp_table_get_next_instance(const u32_t *root_oid, u8_t root_oid_len, struct snmp_node_instance* instance); + +#define SNMP_TABLE_CREATE(oid, columns, get_cell_instance_method, get_next_cell_instance_method, get_value_method, set_test_method, set_value_method) \ + {{{ SNMP_NODE_TABLE, (oid) }, \ + snmp_table_get_instance, \ + snmp_table_get_next_instance }, \ + (u16_t)LWIP_ARRAYSIZE(columns), (columns), \ + (get_cell_instance_method), (get_next_cell_instance_method), \ + (get_value_method), (set_test_method), (set_value_method)} + +#define SNMP_TABLE_GET_COLUMN_FROM_OID(oid) ((oid)[1]) /* first array value is (fixed) row entry (fixed to 1) and 2nd value is column, follow3ed by instance */ + + +/** simple read-only table */ +typedef enum { + SNMP_VARIANT_VALUE_TYPE_U32, + SNMP_VARIANT_VALUE_TYPE_S32, + SNMP_VARIANT_VALUE_TYPE_PTR, + SNMP_VARIANT_VALUE_TYPE_CONST_PTR +} snmp_table_column_data_type_t; + +struct snmp_table_simple_col_def +{ + u32_t index; + u8_t asn1_type; + snmp_table_column_data_type_t data_type; /* depending of what union member is used to store the value*/ +}; + +/** simple read-only table node */ +struct snmp_table_simple_node +{ + /* inherited "base class" members */ + struct snmp_leaf_node node; + u16_t column_count; + const struct snmp_table_simple_col_def* columns; + snmp_err_t (*get_cell_value)(const u32_t* column, const u32_t* row_oid, u8_t row_oid_len, union snmp_variant_value* value, u32_t* value_len); + snmp_err_t (*get_next_cell_instance_and_value)(const u32_t* column, struct snmp_obj_id* row_oid, union snmp_variant_value* value, u32_t* value_len); +}; + +snmp_err_t snmp_table_simple_get_instance(const u32_t *root_oid, u8_t root_oid_len, struct snmp_node_instance* instance); +snmp_err_t snmp_table_simple_get_next_instance(const u32_t *root_oid, u8_t root_oid_len, struct snmp_node_instance* instance); + +#define SNMP_TABLE_CREATE_SIMPLE(oid, columns, get_cell_value_method, get_next_cell_instance_and_value_method) \ + {{{ SNMP_NODE_TABLE, (oid) }, \ + snmp_table_simple_get_instance, \ + snmp_table_simple_get_next_instance }, \ + (u16_t)LWIP_ARRAYSIZE(columns), (columns), (get_cell_value_method), (get_next_cell_instance_and_value_method) } + +s16_t snmp_table_extract_value_from_s32ref(struct snmp_node_instance* instance, void* value); +s16_t snmp_table_extract_value_from_u32ref(struct snmp_node_instance* instance, void* value); +s16_t snmp_table_extract_value_from_refconstptr(struct snmp_node_instance* instance, void* value); + +#endif /* LWIP_SNMP */ + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_APPS_SNMP_TABLE_H */ diff --git a/tools/sdk/lwip2/include/lwip/apps/snmp_threadsync.h b/tools/sdk/lwip2/include/lwip/apps/snmp_threadsync.h new file mode 100644 index 000000000..a25dbf2d0 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/apps/snmp_threadsync.h @@ -0,0 +1,114 @@ +/** + * @file + * SNMP server MIB API to implement thread synchronization + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Dirk Ziegelmeier + * + */ + +#ifndef LWIP_HDR_APPS_SNMP_THREADSYNC_H +#define LWIP_HDR_APPS_SNMP_THREADSYNC_H + +#include "lwip/apps/snmp_opts.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if LWIP_SNMP /* don't build if not configured for use in lwipopts.h */ + +#include "lwip/apps/snmp_core.h" +#include "lwip/sys.h" + +typedef void (*snmp_threadsync_called_fn)(void* arg); +typedef void (*snmp_threadsync_synchronizer_fn)(snmp_threadsync_called_fn fn, void* arg); + + +/** Thread sync runtime data. For internal usage only. */ +struct threadsync_data +{ + union { + snmp_err_t err; + s16_t s16; + } retval; + union { + const u32_t *root_oid; + void *value; + } arg1; + union { + u8_t root_oid_len; + u16_t len; + } arg2; + const struct snmp_threadsync_node *threadsync_node; + struct snmp_node_instance proxy_instance; +}; + +/** Thread sync instance. Needed EXCATLY once for every thread to be synced into. */ +struct snmp_threadsync_instance +{ + sys_sem_t sem; + sys_mutex_t sem_usage_mutex; + snmp_threadsync_synchronizer_fn sync_fn; + struct threadsync_data data; +}; + +/** SNMP thread sync proxy leaf node */ +struct snmp_threadsync_node +{ + /* inherited "base class" members */ + struct snmp_leaf_node node; + + const struct snmp_leaf_node *target; + struct snmp_threadsync_instance *instance; +}; + +snmp_err_t snmp_threadsync_get_instance(const u32_t *root_oid, u8_t root_oid_len, struct snmp_node_instance* instance); +snmp_err_t snmp_threadsync_get_next_instance(const u32_t *root_oid, u8_t root_oid_len, struct snmp_node_instance* instance); + +/** Create thread sync proxy node */ +#define SNMP_CREATE_THREAD_SYNC_NODE(oid, target_leaf_node, threadsync_instance) \ + {{{ SNMP_NODE_THREADSYNC, (oid) }, \ + snmp_threadsync_get_instance, \ + snmp_threadsync_get_next_instance }, \ + (target_leaf_node), \ + (threadsync_instance) } + +/** Create thread sync instance data */ +void snmp_threadsync_init(struct snmp_threadsync_instance *instance, snmp_threadsync_synchronizer_fn sync_fn); + +#endif /* LWIP_SNMP */ + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_APPS_SNMP_THREADSYNC_H */ diff --git a/tools/sdk/lwip2/include/lwip/apps/snmpv3.h b/tools/sdk/lwip2/include/lwip/apps/snmpv3.h new file mode 100644 index 000000000..c99fed4e1 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/apps/snmpv3.h @@ -0,0 +1,90 @@ +/** + * @file + * Additional SNMPv3 functionality RFC3414 and RFC3826. + */ + +/* + * Copyright (c) 2016 Elias Oenal. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * Author: Elias Oenal + */ + +#ifndef LWIP_HDR_APPS_SNMP_V3_H +#define LWIP_HDR_APPS_SNMP_V3_H + +#include "lwip/apps/snmp_opts.h" +#include "lwip/err.h" + +#if LWIP_SNMP && LWIP_SNMP_V3 + +#define SNMP_V3_AUTH_ALGO_INVAL 0 +#define SNMP_V3_AUTH_ALGO_MD5 1 +#define SNMP_V3_AUTH_ALGO_SHA 2 + +#define SNMP_V3_PRIV_ALGO_INVAL 0 +#define SNMP_V3_PRIV_ALGO_DES 1 +#define SNMP_V3_PRIV_ALGO_AES 2 + +#define SNMP_V3_PRIV_MODE_DECRYPT 0 +#define SNMP_V3_PRIV_MODE_ENCRYPT 1 + +/* + * The following callback functions must be implemented by the application. + * There is a dummy implementation in snmpv3_dummy.c. + */ + +void snmpv3_get_engine_id(const char **id, u8_t *len); +err_t snmpv3_set_engine_id(const char* id, u8_t len); + +u32_t snmpv3_get_engine_boots(void); +void snmpv3_set_engine_boots(u32_t boots); + +u32_t snmpv3_get_engine_time(void); +void snmpv3_reset_engine_time(void); + +err_t snmpv3_get_user(const char* username, u8_t *auth_algo, u8_t *auth_key, u8_t *priv_algo, u8_t *priv_key); + +/* The following functions are provided by the SNMPv3 agent */ + +void snmpv3_engine_id_changed(void); + +void snmpv3_password_to_key_md5( + const u8_t *password, /* IN */ + u8_t passwordlen, /* IN */ + const u8_t *engineID, /* IN - pointer to snmpEngineID */ + u8_t engineLength, /* IN - length of snmpEngineID */ + u8_t *key); /* OUT - pointer to caller 16-octet buffer */ + +void snmpv3_password_to_key_sha( + const u8_t *password, /* IN */ + u8_t passwordlen, /* IN */ + const u8_t *engineID, /* IN - pointer to snmpEngineID */ + u8_t engineLength, /* IN - length of snmpEngineID */ + u8_t *key); /* OUT - pointer to caller 20-octet buffer */ + +#endif + +#endif /* LWIP_HDR_APPS_SNMP_V3_H */ diff --git a/tools/sdk/lwip2/include/lwip/apps/sntp.h b/tools/sdk/lwip2/include/lwip/apps/sntp.h new file mode 100644 index 000000000..40df9cc59 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/apps/sntp.h @@ -0,0 +1,76 @@ +/** + * @file + * SNTP client API + */ + +/* + * Copyright (c) 2007-2009 Frédéric Bernon, Simon Goldschmidt + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Frédéric Bernon, Simon Goldschmidt + * + */ +#ifndef LWIP_HDR_APPS_SNTP_H +#define LWIP_HDR_APPS_SNTP_H + +#include "lwip/apps/sntp_opts.h" +#include "lwip/ip_addr.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SNTP operating modes: default is to poll using unicast. + The mode has to be set before calling sntp_init(). */ +#define SNTP_OPMODE_POLL 0 +#define SNTP_OPMODE_LISTENONLY 1 +void sntp_setoperatingmode(u8_t operating_mode); +u8_t sntp_getoperatingmode(void); + +void sntp_init(void); +void sntp_stop(void); +u8_t sntp_enabled(void); + +void sntp_setserver(u8_t idx, const ip_addr_t *addr); +const ip_addr_t* sntp_getserver(u8_t idx); + +#if SNTP_SERVER_DNS +void sntp_setservername(u8_t idx, char *server); +char *sntp_getservername(u8_t idx); +#endif /* SNTP_SERVER_DNS */ + +#if SNTP_GET_SERVERS_FROM_DHCP +void sntp_servermode_dhcp(int set_servers_from_dhcp); +#else /* SNTP_GET_SERVERS_FROM_DHCP */ +#define sntp_servermode_dhcp(x) +#endif /* SNTP_GET_SERVERS_FROM_DHCP */ + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_APPS_SNTP_H */ diff --git a/tools/sdk/lwip2/include/lwip/apps/sntp_opts.h b/tools/sdk/lwip2/include/lwip/apps/sntp_opts.h new file mode 100644 index 000000000..f3651f90e --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/apps/sntp_opts.h @@ -0,0 +1,173 @@ +/** + * @file + * SNTP client options list + */ + +/* + * Copyright (c) 2007-2009 Frédéric Bernon, Simon Goldschmidt + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Frédéric Bernon, Simon Goldschmidt + * + */ +#ifndef LWIP_HDR_APPS_SNTP_OPTS_H +#define LWIP_HDR_APPS_SNTP_OPTS_H + +#include "lwip/opt.h" + +/** + * @defgroup sntp_opts Options + * @ingroup sntp + * @{ + */ + +/** SNTP macro to change system time in seconds + * Define SNTP_SET_SYSTEM_TIME_US(sec, us) to set the time in microseconds instead of this one + * if you need the additional precision. + */ +#if !defined SNTP_SET_SYSTEM_TIME || defined __DOXYGEN__ +#define SNTP_SET_SYSTEM_TIME(sec) LWIP_UNUSED_ARG(sec) +#endif + +/** The maximum number of SNTP servers that can be set */ +#if !defined SNTP_MAX_SERVERS || defined __DOXYGEN__ +#define SNTP_MAX_SERVERS LWIP_DHCP_MAX_NTP_SERVERS +#endif + +/** Set this to 1 to implement the callback function called by dhcp when + * NTP servers are received. */ +#if !defined SNTP_GET_SERVERS_FROM_DHCP || defined __DOXYGEN__ +#define SNTP_GET_SERVERS_FROM_DHCP LWIP_DHCP_GET_NTP_SRV +#endif + +/** Set this to 1 to support DNS names (or IP address strings) to set sntp servers + * One server address/name can be defined as default if SNTP_SERVER_DNS == 1: + * \#define SNTP_SERVER_ADDRESS "pool.ntp.org" + */ +#if !defined SNTP_SERVER_DNS || defined __DOXYGEN__ +#define SNTP_SERVER_DNS 0 +#endif + +/** + * SNTP_DEBUG: Enable debugging for SNTP. + */ +#if !defined SNTP_DEBUG || defined __DOXYGEN__ +#define SNTP_DEBUG LWIP_DBG_OFF +#endif + +/** SNTP server port */ +#if !defined SNTP_PORT || defined __DOXYGEN__ +#define SNTP_PORT 123 +#endif + +/** Set this to 1 to allow config of SNTP server(s) by DNS name */ +#if !defined SNTP_SERVER_DNS || defined __DOXYGEN__ +#define SNTP_SERVER_DNS 0 +#endif + +/** Sanity check: + * Define this to + * - 0 to turn off sanity checks (default; smaller code) + * - >= 1 to check address and port of the response packet to ensure the + * response comes from the server we sent the request to. + * - >= 2 to check returned Originate Timestamp against Transmit Timestamp + * sent to the server (to ensure response to older request). + * - >= 3 @todo: discard reply if any of the LI, Stratum, or Transmit Timestamp + * fields is 0 or the Mode field is not 4 (unicast) or 5 (broadcast). + * - >= 4 @todo: to check that the Root Delay and Root Dispersion fields are each + * greater than or equal to 0 and less than infinity, where infinity is + * currently a cozy number like one second. This check avoids using a + * server whose synchronization source has expired for a very long time. + */ +#if !defined SNTP_CHECK_RESPONSE || defined __DOXYGEN__ +#define SNTP_CHECK_RESPONSE 0 +#endif + +/** According to the RFC, this shall be a random delay + * between 1 and 5 minutes (in milliseconds) to prevent load peaks. + * This can be defined to a random generation function, + * which must return the delay in milliseconds as u32_t. + * Turned off by default. + */ +#if !defined SNTP_STARTUP_DELAY || defined __DOXYGEN__ +#define SNTP_STARTUP_DELAY 0 +#endif + +/** If you want the startup delay to be a function, define this + * to a function (including the brackets) and define SNTP_STARTUP_DELAY to 1. + */ +#if !defined SNTP_STARTUP_DELAY_FUNC || defined __DOXYGEN__ +#define SNTP_STARTUP_DELAY_FUNC SNTP_STARTUP_DELAY +#endif + +/** SNTP receive timeout - in milliseconds + * Also used as retry timeout - this shouldn't be too low. + * Default is 3 seconds. + */ +#if !defined SNTP_RECV_TIMEOUT || defined __DOXYGEN__ +#define SNTP_RECV_TIMEOUT 3000 +#endif + +/** SNTP update delay - in milliseconds + * Default is 1 hour. Must not be beolw 15 seconds by specification (i.e. 15000) + */ +#if !defined SNTP_UPDATE_DELAY || defined __DOXYGEN__ +#define SNTP_UPDATE_DELAY 3600000 +#endif + +/** SNTP macro to get system time, used with SNTP_CHECK_RESPONSE >= 2 + * to send in request and compare in response. + */ +#if !defined SNTP_GET_SYSTEM_TIME || defined __DOXYGEN__ +#define SNTP_GET_SYSTEM_TIME(sec, us) do { (sec) = 0; (us) = 0; } while(0) +#endif + +/** Default retry timeout (in milliseconds) if the response + * received is invalid. + * This is doubled with each retry until SNTP_RETRY_TIMEOUT_MAX is reached. + */ +#if !defined SNTP_RETRY_TIMEOUT || defined __DOXYGEN__ +#define SNTP_RETRY_TIMEOUT SNTP_RECV_TIMEOUT +#endif + +/** Maximum retry timeout (in milliseconds). */ +#if !defined SNTP_RETRY_TIMEOUT_MAX || defined __DOXYGEN__ +#define SNTP_RETRY_TIMEOUT_MAX (SNTP_RETRY_TIMEOUT * 10) +#endif + +/** Increase retry timeout with every retry sent + * Default is on to conform to RFC. + */ +#if !defined SNTP_RETRY_TIMEOUT_EXP || defined __DOXYGEN__ +#define SNTP_RETRY_TIMEOUT_EXP 1 +#endif + +/** + * @} + */ + +#endif /* LWIP_HDR_APPS_SNTP_OPTS_H */ diff --git a/tools/sdk/lwip2/include/lwip/apps/tftp_opts.h b/tools/sdk/lwip2/include/lwip/apps/tftp_opts.h new file mode 100644 index 000000000..6968a803b --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/apps/tftp_opts.h @@ -0,0 +1,105 @@ +/****************************************************************//** + * + * @file tftp_opts.h + * + * @author Logan Gunthorpe + * + * @brief Trivial File Transfer Protocol (RFC 1350) implementation options + * + * Copyright (c) Deltatee Enterprises Ltd. 2013 + * All rights reserved. + * + ********************************************************************/ + +/* + * Redistribution and use in source and binary forms, with or without + * modification,are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Author: Logan Gunthorpe + * + */ + +#ifndef LWIP_HDR_APPS_TFTP_OPTS_H +#define LWIP_HDR_APPS_TFTP_OPTS_H + +#include "lwip/opt.h" + +/** + * @defgroup tftp_opts Options + * @ingroup tftp + * @{ + */ + +/** + * Enable TFTP debug messages + */ +#if !defined TFTP_DEBUG || defined __DOXYGEN__ +#define TFTP_DEBUG LWIP_DBG_ON +#endif + +/** + * TFTP server port + */ +#if !defined TFTP_PORT || defined __DOXYGEN__ +#define TFTP_PORT 69 +#endif + +/** + * TFTP timeout + */ +#if !defined TFTP_TIMEOUT_MSECS || defined __DOXYGEN__ +#define TFTP_TIMEOUT_MSECS 10000 +#endif + +/** + * Max. number of retries when a file is read from server + */ +#if !defined TFTP_MAX_RETRIES || defined __DOXYGEN__ +#define TFTP_MAX_RETRIES 5 +#endif + +/** + * TFTP timer cyclic interval + */ +#if !defined TFTP_TIMER_MSECS || defined __DOXYGEN__ +#define TFTP_TIMER_MSECS 50 +#endif + +/** + * Max. length of TFTP filename + */ +#if !defined TFTP_MAX_FILENAME_LEN || defined __DOXYGEN__ +#define TFTP_MAX_FILENAME_LEN 20 +#endif + +/** + * Max. length of TFTP mode + */ +#if !defined TFTP_MAX_MODE_LEN || defined __DOXYGEN__ +#define TFTP_MAX_MODE_LEN 7 +#endif + +/** + * @} + */ + +#endif /* LWIP_HDR_APPS_TFTP_OPTS_H */ diff --git a/tools/sdk/lwip2/include/lwip/apps/tftp_server.h b/tools/sdk/lwip2/include/lwip/apps/tftp_server.h new file mode 100644 index 000000000..3fbe701e0 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/apps/tftp_server.h @@ -0,0 +1,94 @@ +/****************************************************************//** + * + * @file tftp_server.h + * + * @author Logan Gunthorpe + * + * @brief Trivial File Transfer Protocol (RFC 1350) + * + * Copyright (c) Deltatee Enterprises Ltd. 2013 + * All rights reserved. + * + ********************************************************************/ + +/* + * Redistribution and use in source and binary forms, with or without + * modification,are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Author: Logan Gunthorpe + * + */ + +#ifndef LWIP_HDR_APPS_TFTP_SERVER_H +#define LWIP_HDR_APPS_TFTP_SERVER_H + +#include "lwip/apps/tftp_opts.h" +#include "lwip/err.h" +#include "lwip/pbuf.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** @ingroup tftp + * TFTP context containing callback functions for TFTP transfers + */ +struct tftp_context { + /** + * Open file for read/write. + * @param fname Filename + * @param mode Mode string from TFTP RFC 1350 (netascii, octet, mail) + * @param write Flag indicating read (0) or write (!= 0) access + * @returns File handle supplied to other functions + */ + void* (*open)(const char* fname, const char* mode, u8_t write); + /** + * Close file handle + * @param handle File handle returned by open() + */ + void (*close)(void* handle); + /** + * Read from file + * @param handle File handle returned by open() + * @param buf Target buffer to copy read data to + * @param bytes Number of bytes to copy to buf + * @returns >= 0: Success; < 0: Error + */ + int (*read)(void* handle, void* buf, int bytes); + /** + * Write to file + * @param handle File handle returned by open() + * @param pbuf PBUF adjusted such that payload pointer points + * to the beginning of write data. In other words, + * TFTP headers are stripped off. + * @returns >= 0: Success; < 0: Error + */ + int (*write)(void* handle, struct pbuf* p); +}; + +err_t tftp_init(const struct tftp_context* ctx); + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_APPS_TFTP_SERVER_H */ diff --git a/tools/sdk/lwip2/include/lwip/arch.h b/tools/sdk/lwip2/include/lwip/arch.h new file mode 100644 index 000000000..55714e113 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/arch.h @@ -0,0 +1,319 @@ +/** + * @file + * Support for different processor and compiler architectures + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_ARCH_H +#define LWIP_HDR_ARCH_H + +#ifndef LITTLE_ENDIAN +#define LITTLE_ENDIAN 1234 +#endif + +#ifndef BIG_ENDIAN +#define BIG_ENDIAN 4321 +#endif + +#include "arch/cc.h" + +/** + * @defgroup compiler_abstraction Compiler/platform abstraction + * @ingroup sys_layer + * All defines related to this section must not be placed in lwipopts.h, + * but in arch/cc.h! + * These options cannot be \#defined in lwipopts.h since they are not options + * of lwIP itself, but options of the lwIP port to your system. + * @{ + */ + +/** Define the byte order of the system. + * Needed for conversion of network data to host byte order. + * Allowed values: LITTLE_ENDIAN and BIG_ENDIAN + */ +#ifndef BYTE_ORDER +#define BYTE_ORDER LITTLE_ENDIAN +#endif + +/** Define random number generator function of your system */ +#ifdef __DOXYGEN__ +#define LWIP_RAND() ((u32_t)rand()) +#endif + +/** Platform specific diagnostic output.\n + * Note the default implementation pulls in printf, which may + * in turn pull in a lot of standard libary code. In resource-constrained + * systems, this should be defined to something less resource-consuming. + */ +#ifndef LWIP_PLATFORM_DIAG +#define LWIP_PLATFORM_DIAG(x) do {printf x;} while(0) +#include +#include +#endif + +/** Platform specific assertion handling.\n + * Note the default implementation pulls in printf, fflush and abort, which may + * in turn pull in a lot of standard libary code. In resource-constrained + * systems, this should be defined to something less resource-consuming. + */ +#ifndef LWIP_PLATFORM_ASSERT +#define LWIP_PLATFORM_ASSERT(x) do {printf("Assertion \"%s\" failed at line %d in %s\n", \ + x, __LINE__, __FILE__); fflush(NULL); abort();} while(0) +#include +#include +#endif + +/** Define this to 1 in arch/cc.h of your port if you do not want to + * include stddef.h header to get size_t. You need to typedef size_t + * by yourself in this case. + */ +#ifndef LWIP_NO_STDDEF_H +#define LWIP_NO_STDDEF_H 0 +#endif + +#if !LWIP_NO_STDDEF_H +#include /* for size_t */ +#endif + +/** Define this to 1 in arch/cc.h of your port if your compiler does not provide + * the stdint.h header. You need to typedef the generic types listed in + * lwip/arch.h yourself in this case (u8_t, u16_t...). + */ +#ifndef LWIP_NO_STDINT_H +#define LWIP_NO_STDINT_H 0 +#endif + +/* Define generic types used in lwIP */ +#if !LWIP_NO_STDINT_H +#include +typedef uint8_t u8_t; +typedef int8_t s8_t; +typedef uint16_t u16_t; +typedef int16_t s16_t; +typedef uint32_t u32_t; +typedef int32_t s32_t; +typedef uintptr_t mem_ptr_t; +#endif + +/** Define this to 1 in arch/cc.h of your port if your compiler does not provide + * the inttypes.h header. You need to define the format strings listed in + * lwip/arch.h yourself in this case (X8_F, U16_F...). + */ +#ifndef LWIP_NO_INTTYPES_H +#define LWIP_NO_INTTYPES_H 0 +#endif + +/* Define (sn)printf formatters for these lwIP types */ +#if !LWIP_NO_INTTYPES_H +#include +#ifndef X8_F +#define X8_F "02" PRIx8 +#endif +#ifndef U16_F +#define U16_F PRIu16 +#endif +#ifndef S16_F +#define S16_F PRId16 +#endif +#ifndef X16_F +#define X16_F PRIx16 +#endif +#ifndef U32_F +#define U32_F PRIu32 +#endif +#ifndef S32_F +#define S32_F PRId32 +#endif +#ifndef X32_F +#define X32_F PRIx32 +#endif +#ifndef SZT_F +#define SZT_F PRIuPTR +#endif +#endif + +/** Define this to 1 in arch/cc.h of your port if your compiler does not provide + * the limits.h header. You need to define the type limits yourself in this case + * (e.g. INT_MAX). + */ +#ifndef LWIP_NO_LIMITS_H +#define LWIP_NO_LIMITS_H 0 +#endif + +/* Include limits.h? */ +#if !LWIP_NO_LIMITS_H +#include +#endif + +/** C++ const_cast(val) equivalent to remove constness from a value (GCC -Wcast-qual) */ +#ifndef LWIP_CONST_CAST +#define LWIP_CONST_CAST(target_type, val) ((target_type)((ptrdiff_t)val)) +#endif + +/** Get rid of alignment cast warnings (GCC -Wcast-align) */ +#ifndef LWIP_ALIGNMENT_CAST +#define LWIP_ALIGNMENT_CAST(target_type, val) LWIP_CONST_CAST(target_type, val) +#endif + +/** Get rid of warnings related to pointer-to-numeric and vice-versa casts, + * e.g. "conversion from 'u8_t' to 'void *' of greater size" + */ +#ifndef LWIP_PTR_NUMERIC_CAST +#define LWIP_PTR_NUMERIC_CAST(target_type, val) LWIP_CONST_CAST(target_type, val) +#endif + +/** Allocates a memory buffer of specified size that is of sufficient size to align + * its start address using LWIP_MEM_ALIGN. + * You can declare your own version here e.g. to enforce alignment without adding + * trailing padding bytes (see LWIP_MEM_ALIGN_BUFFER) or your own section placement + * requirements.\n + * e.g. if you use gcc and need 32 bit alignment:\n + * \#define LWIP_DECLARE_MEMORY_ALIGNED(variable_name, size) u8_t variable_name[size] \_\_attribute\_\_((aligned(4)))\n + * or more portable:\n + * \#define LWIP_DECLARE_MEMORY_ALIGNED(variable_name, size) u32_t variable_name[(size + sizeof(u32_t) - 1) / sizeof(u32_t)] + */ +#ifndef LWIP_DECLARE_MEMORY_ALIGNED +#define LWIP_DECLARE_MEMORY_ALIGNED(variable_name, size) u8_t variable_name[LWIP_MEM_ALIGN_BUFFER(size)] +#endif + +/** Calculate memory size for an aligned buffer - returns the next highest + * multiple of MEM_ALIGNMENT (e.g. LWIP_MEM_ALIGN_SIZE(3) and + * LWIP_MEM_ALIGN_SIZE(4) will both yield 4 for MEM_ALIGNMENT == 4). + */ +#ifndef LWIP_MEM_ALIGN_SIZE +#define LWIP_MEM_ALIGN_SIZE(size) (((size) + MEM_ALIGNMENT - 1U) & ~(MEM_ALIGNMENT-1U)) +#endif + +/** Calculate safe memory size for an aligned buffer when using an unaligned + * type as storage. This includes a safety-margin on (MEM_ALIGNMENT - 1) at the + * start (e.g. if buffer is u8_t[] and actual data will be u32_t*) + */ +#ifndef LWIP_MEM_ALIGN_BUFFER +#define LWIP_MEM_ALIGN_BUFFER(size) (((size) + MEM_ALIGNMENT - 1U)) +#endif + +/** Align a memory pointer to the alignment defined by MEM_ALIGNMENT + * so that ADDR % MEM_ALIGNMENT == 0 + */ +#ifndef LWIP_MEM_ALIGN +#define LWIP_MEM_ALIGN(addr) ((void *)(((mem_ptr_t)(addr) + MEM_ALIGNMENT - 1) & ~(mem_ptr_t)(MEM_ALIGNMENT-1))) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** Packed structs support. + * Placed BEFORE declaration of a packed struct.\n + * For examples of packed struct declarations, see include/lwip/prot/ subfolder.\n + * A port to GCC/clang is included in lwIP, if you use these compilers there is nothing to do here. + */ +#ifndef PACK_STRUCT_BEGIN +#define PACK_STRUCT_BEGIN +#endif /* PACK_STRUCT_BEGIN */ + +/** Packed structs support. + * Placed AFTER declaration of a packed struct.\n + * For examples of packed struct declarations, see include/lwip/prot/ subfolder.\n + * A port to GCC/clang is included in lwIP, if you use these compilers there is nothing to do here. + */ +#ifndef PACK_STRUCT_END +#define PACK_STRUCT_END +#endif /* PACK_STRUCT_END */ + +/** Packed structs support. + * Placed between end of declaration of a packed struct and trailing semicolon.\n + * For examples of packed struct declarations, see include/lwip/prot/ subfolder.\n + * A port to GCC/clang is included in lwIP, if you use these compilers there is nothing to do here. + */ +#ifndef PACK_STRUCT_STRUCT +#if defined(__GNUC__) || defined(__clang__) +#define PACK_STRUCT_STRUCT __attribute__((packed)) +#else +#define PACK_STRUCT_STRUCT +#endif +#endif /* PACK_STRUCT_STRUCT */ + +/** Packed structs support. + * Wraps u32_t and u16_t members.\n + * For examples of packed struct declarations, see include/lwip/prot/ subfolder.\n + * A port to GCC/clang is included in lwIP, if you use these compilers there is nothing to do here. + */ +#ifndef PACK_STRUCT_FIELD +#define PACK_STRUCT_FIELD(x) x +#endif /* PACK_STRUCT_FIELD */ + +/** Packed structs support. + * Wraps u8_t members, where some compilers warn that packing is not necessary.\n + * For examples of packed struct declarations, see include/lwip/prot/ subfolder.\n + * A port to GCC/clang is included in lwIP, if you use these compilers there is nothing to do here. + */ +#ifndef PACK_STRUCT_FLD_8 +#define PACK_STRUCT_FLD_8(x) PACK_STRUCT_FIELD(x) +#endif /* PACK_STRUCT_FLD_8 */ + +/** Packed structs support. + * Wraps members that are packed structs themselves, where some compilers warn that packing is not necessary.\n + * For examples of packed struct declarations, see include/lwip/prot/ subfolder.\n + * A port to GCC/clang is included in lwIP, if you use these compilers there is nothing to do here. + */ +#ifndef PACK_STRUCT_FLD_S +#define PACK_STRUCT_FLD_S(x) PACK_STRUCT_FIELD(x) +#endif /* PACK_STRUCT_FLD_S */ + +/** Packed structs support using \#include files before and after struct to be packed.\n + * The file included BEFORE the struct is "arch/bpstruct.h".\n + * The file included AFTER the struct is "arch/epstruct.h".\n + * This can be used to implement struct packing on MS Visual C compilers, see + * the Win32 port in the lwIP contrib repository for reference. + * For examples of packed struct declarations, see include/lwip/prot/ subfolder.\n + * A port to GCC/clang is included in lwIP, if you use these compilers there is nothing to do here. + */ +#ifdef __DOXYGEN__ +#define PACK_STRUCT_USE_INCLUDES +#endif + +/** Eliminates compiler warning about unused arguments (GCC -Wextra -Wunused). */ +#ifndef LWIP_UNUSED_ARG +#define LWIP_UNUSED_ARG(x) (void)x +#endif /* LWIP_UNUSED_ARG */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_ARCH_H */ diff --git a/tools/sdk/lwip2/include/lwip/autoip.h b/tools/sdk/lwip2/include/lwip/autoip.h new file mode 100644 index 000000000..1d85bccff --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/autoip.h @@ -0,0 +1,99 @@ +/** + * @file + * + * AutoIP Automatic LinkLocal IP Configuration + */ + +/* + * + * Copyright (c) 2007 Dominik Spies + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * Author: Dominik Spies + * + * This is a AutoIP implementation for the lwIP TCP/IP stack. It aims to conform + * with RFC 3927. + * + */ + +#ifndef LWIP_HDR_AUTOIP_H +#define LWIP_HDR_AUTOIP_H + +#include "lwip/opt.h" + +#if LWIP_IPV4 && LWIP_AUTOIP /* don't build if not configured for use in lwipopts.h */ + +#include "lwip/netif.h" +/* #include "lwip/udp.h" */ +#include "lwip/etharp.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** AutoIP Timing */ +#define AUTOIP_TMR_INTERVAL 100 +#define AUTOIP_TICKS_PER_SECOND (1000 / AUTOIP_TMR_INTERVAL) + +/** AutoIP state information per netif */ +struct autoip +{ + /** the currently selected, probed, announced or used LL IP-Address */ + ip4_addr_t llipaddr; + /** current AutoIP state machine state */ + u8_t state; + /** sent number of probes or announces, dependent on state */ + u8_t sent_num; + /** ticks to wait, tick is AUTOIP_TMR_INTERVAL long */ + u16_t ttw; + /** ticks until a conflict can be solved by defending */ + u8_t lastconflict; + /** total number of probed/used Link Local IP-Addresses */ + u8_t tried_llipaddr; +}; + + +void autoip_set_struct(struct netif *netif, struct autoip *autoip); +/** Remove a struct autoip previously set to the netif using autoip_set_struct() */ +#define autoip_remove_struct(netif) do { (netif)->autoip = NULL; } while (0) +err_t autoip_start(struct netif *netif); +err_t autoip_stop(struct netif *netif); +void autoip_arp_reply(struct netif *netif, struct etharp_hdr *hdr); +void autoip_tmr(void); +void autoip_network_changed(struct netif *netif); +u8_t autoip_supplied_address(const struct netif *netif); + +/* for lwIP internal use by ip4.c */ +u8_t autoip_accept_packet(struct netif *netif, const ip4_addr_t *addr); + +#define netif_autoip_data(netif) ((struct autoip*)netif_get_client_data(netif, LWIP_NETIF_CLIENT_DATA_INDEX_AUTOIP)) + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_IPV4 && LWIP_AUTOIP */ + +#endif /* LWIP_HDR_AUTOIP_H */ diff --git a/tools/sdk/lwip2/include/lwip/debug.h b/tools/sdk/lwip2/include/lwip/debug.h new file mode 100644 index 000000000..a142f1cff --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/debug.h @@ -0,0 +1,167 @@ +/** + * @file + * Debug messages infrastructure + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_DEBUG_H +#define LWIP_HDR_DEBUG_H + +#include "lwip/arch.h" +#include "lwip/opt.h" + +/** + * @defgroup debugging_levels LWIP_DBG_MIN_LEVEL and LWIP_DBG_TYPES_ON values + * @ingroup lwip_opts_debugmsg + * @{ + */ + +/** @name Debug level (LWIP_DBG_MIN_LEVEL) + * @{ + */ +/** Debug level: ALL messages*/ +#define LWIP_DBG_LEVEL_ALL 0x00 +/** Debug level: Warnings. bad checksums, dropped packets, ... */ +#define LWIP_DBG_LEVEL_WARNING 0x01 +/** Debug level: Serious. memory allocation failures, ... */ +#define LWIP_DBG_LEVEL_SERIOUS 0x02 +/** Debug level: Severe */ +#define LWIP_DBG_LEVEL_SEVERE 0x03 +/** + * @} + */ + +#define LWIP_DBG_MASK_LEVEL 0x03 +/* compatibility define only */ +#define LWIP_DBG_LEVEL_OFF LWIP_DBG_LEVEL_ALL + +/** @name Enable/disable debug messages completely (LWIP_DBG_TYPES_ON) + * @{ + */ +/** flag for LWIP_DEBUGF to enable that debug message */ +#define LWIP_DBG_ON 0x80U +/** flag for LWIP_DEBUGF to disable that debug message */ +#define LWIP_DBG_OFF 0x00U +/** + * @} + */ + +/** @name Debug message types (LWIP_DBG_TYPES_ON) + * @{ + */ +/** flag for LWIP_DEBUGF indicating a tracing message (to follow program flow) */ +#define LWIP_DBG_TRACE 0x40U +/** flag for LWIP_DEBUGF indicating a state debug message (to follow module states) */ +#define LWIP_DBG_STATE 0x20U +/** flag for LWIP_DEBUGF indicating newly added code, not thoroughly tested yet */ +#define LWIP_DBG_FRESH 0x10U +/** flag for LWIP_DEBUGF to halt after printing this debug message */ +#define LWIP_DBG_HALT 0x08U +/** + * @} + */ + +/** + * @} + */ + +/** + * @defgroup lwip_assertions Assertion handling + * @ingroup lwip_opts_debug + * @{ + */ +/** + * LWIP_NOASSERT: Disable LWIP_ASSERT checks: + * To disable assertions define LWIP_NOASSERT in arch/cc.h. + */ +#ifdef __DOXYGEN__ +#define LWIP_NOASSERT +#undef LWIP_NOASSERT +#endif +/** + * @} + */ + +#ifndef LWIP_NOASSERT +#define LWIP_ASSERT(message, assertion) do { if (!(assertion)) { \ + LWIP_PLATFORM_ASSERT(message); }} while(0) +#ifndef LWIP_PLATFORM_ASSERT +#error "If you want to use LWIP_ASSERT, LWIP_PLATFORM_ASSERT(message) needs to be defined in your arch/cc.h" +#endif +#else /* LWIP_NOASSERT */ +#define LWIP_ASSERT(message, assertion) +#endif /* LWIP_NOASSERT */ + +#ifndef LWIP_ERROR +#ifndef LWIP_NOASSERT +#define LWIP_PLATFORM_ERROR(message) LWIP_PLATFORM_ASSERT(message) +#elif defined LWIP_DEBUG +#define LWIP_PLATFORM_ERROR(message) LWIP_PLATFORM_DIAG((message)) +#else +#define LWIP_PLATFORM_ERROR(message) +#endif + +/* if "expression" isn't true, then print "message" and execute "handler" expression */ +#define LWIP_ERROR(message, expression, handler) do { if (!(expression)) { \ + LWIP_PLATFORM_ERROR(message); handler;}} while(0) +#endif /* LWIP_ERROR */ + +/** Enable debug message printing, but only if debug message type is enabled + * AND is of correct type AND is at least LWIP_DBG_LEVEL. + */ +#ifdef __DOXYGEN__ +#define LWIP_DEBUG +#undef LWIP_DEBUG +#endif + +#ifdef LWIP_DEBUG +#ifndef LWIP_PLATFORM_DIAG +#error "If you want to use LWIP_DEBUG, LWIP_PLATFORM_DIAG(message) needs to be defined in your arch/cc.h" +#endif +#define LWIP_DEBUGF(debug, message) do { \ + if ( \ + ((debug) & LWIP_DBG_ON) && \ + ((debug) & LWIP_DBG_TYPES_ON) && \ + ((s16_t)((debug) & LWIP_DBG_MASK_LEVEL) >= LWIP_DBG_MIN_LEVEL)) { \ + LWIP_PLATFORM_DIAG(message); \ + if ((debug) & LWIP_DBG_HALT) { \ + while(1); \ + } \ + } \ + } while(0) + +#else /* LWIP_DEBUG */ +#define LWIP_DEBUGF(debug, message) +#endif /* LWIP_DEBUG */ + +#endif /* LWIP_HDR_DEBUG_H */ diff --git a/tools/sdk/lwip2/include/lwip/def.h b/tools/sdk/lwip2/include/lwip/def.h new file mode 100644 index 000000000..82a9d896f --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/def.h @@ -0,0 +1,141 @@ +/** + * @file + * various utility macros + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_DEF_H +#define LWIP_HDR_DEF_H + +/* arch.h might define NULL already */ +#include "lwip/arch.h" +#include "lwip/opt.h" +#if LWIP_PERF +#include "arch/perf.h" +#else /* LWIP_PERF */ +#define PERF_START /* null definition */ +#define PERF_STOP(x) /* null definition */ +#endif /* LWIP_PERF */ + +#ifdef __cplusplus +extern "C" { +#endif + +#define LWIP_MAX(x , y) (((x) > (y)) ? (x) : (y)) +#define LWIP_MIN(x , y) (((x) < (y)) ? (x) : (y)) + +/* Get the number of entries in an array ('x' must NOT be a pointer!) */ +#define LWIP_ARRAYSIZE(x) (sizeof(x)/sizeof((x)[0])) + +/** Create u32_t value from bytes */ +#define LWIP_MAKEU32(a,b,c,d) (((u32_t)((a) & 0xff) << 24) | \ + ((u32_t)((b) & 0xff) << 16) | \ + ((u32_t)((c) & 0xff) << 8) | \ + (u32_t)((d) & 0xff)) + +#ifndef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL ((void *)0) +#endif +#endif + +#if BYTE_ORDER == BIG_ENDIAN +#define lwip_htons(x) (x) +#define lwip_ntohs(x) (x) +#define lwip_htonl(x) (x) +#define lwip_ntohl(x) (x) +#define PP_HTONS(x) (x) +#define PP_NTOHS(x) (x) +#define PP_HTONL(x) (x) +#define PP_NTOHL(x) (x) +#else /* BYTE_ORDER != BIG_ENDIAN */ +#ifndef lwip_htons +u16_t lwip_htons(u16_t x); +#endif +#define lwip_ntohs(x) lwip_htons(x) + +#ifndef lwip_htonl +u32_t lwip_htonl(u32_t x); +#endif +#define lwip_ntohl(x) lwip_htonl(x) + +/* These macros should be calculated by the preprocessor and are used + with compile-time constants only (so that there is no little-endian + overhead at runtime). */ +#define PP_HTONS(x) ((((x) & 0x00ffUL) << 8) | (((x) & 0xff00UL) >> 8)) +#define PP_NTOHS(x) PP_HTONS(x) +#define PP_HTONL(x) ((((x) & 0x000000ffUL) << 24) | \ + (((x) & 0x0000ff00UL) << 8) | \ + (((x) & 0x00ff0000UL) >> 8) | \ + (((x) & 0xff000000UL) >> 24)) +#define PP_NTOHL(x) PP_HTONL(x) +#endif /* BYTE_ORDER == BIG_ENDIAN */ + +/* Provide usual function names as macros for users, but this can be turned off */ +#ifndef LWIP_DONT_PROVIDE_BYTEORDER_FUNCTIONS +#define htons(x) lwip_htons(x) +#define ntohs(x) lwip_ntohs(x) +#define htonl(x) lwip_htonl(x) +#define ntohl(x) lwip_ntohl(x) +#endif + +/* Functions that are not available as standard implementations. + * In cc.h, you can #define these to implementations available on + * your platform to save some code bytes if you use these functions + * in your application, too. + */ + +#ifndef lwip_itoa +/* This can be #defined to itoa() or snprintf(result, bufsize, "%d", number) depending on your platform */ +void lwip_itoa(char* result, size_t bufsize, int number); +#endif +#ifndef lwip_strnicmp +/* This can be #defined to strnicmp() or strncasecmp() depending on your platform */ +int lwip_strnicmp(const char* str1, const char* str2, size_t len); +#endif +#ifndef lwip_stricmp +/* This can be #defined to stricmp() or strcasecmp() depending on your platform */ +int lwip_stricmp(const char* str1, const char* str2); +#endif +#ifndef lwip_strnstr +/* This can be #defined to strnstr() depending on your platform */ +char* lwip_strnstr(const char* buffer, const char* token, size_t n); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_DEF_H */ diff --git a/tools/sdk/lwip2/include/lwip/dhcp.h b/tools/sdk/lwip2/include/lwip/dhcp.h new file mode 100644 index 000000000..df932afb5 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/dhcp.h @@ -0,0 +1,143 @@ +/** + * @file + * DHCP client API + */ + +/* + * Copyright (c) 2001-2004 Leon Woestenberg + * Copyright (c) 2001-2004 Axon Digital Design B.V., The Netherlands. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Leon Woestenberg + * + */ +#ifndef LWIP_HDR_DHCP_H +#define LWIP_HDR_DHCP_H + +#include "lwip/opt.h" + +#if LWIP_DHCP /* don't build if not configured for use in lwipopts.h */ + +#include "lwip/netif.h" +#include "lwip/udp.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** period (in seconds) of the application calling dhcp_coarse_tmr() */ +#define DHCP_COARSE_TIMER_SECS 60 +/** period (in milliseconds) of the application calling dhcp_coarse_tmr() */ +#define DHCP_COARSE_TIMER_MSECS (DHCP_COARSE_TIMER_SECS * 1000UL) +/** period (in milliseconds) of the application calling dhcp_fine_tmr() */ +#define DHCP_FINE_TIMER_MSECS 500 + +#define DHCP_BOOT_FILE_LEN 128U + +/* AutoIP cooperation flags (struct dhcp.autoip_coop_state) */ +typedef enum { + DHCP_AUTOIP_COOP_STATE_OFF = 0, + DHCP_AUTOIP_COOP_STATE_ON = 1 +} dhcp_autoip_coop_state_enum_t; + +struct dhcp +{ + /** transaction identifier of last sent request */ + u32_t xid; + /** incoming msg */ + struct dhcp_msg *msg_in; + /** track PCB allocation state */ + u8_t pcb_allocated; + /** current DHCP state machine state */ + u8_t state; + /** retries of current request */ + u8_t tries; +#if LWIP_DHCP_AUTOIP_COOP + u8_t autoip_coop_state; +#endif + u8_t subnet_mask_given; + + struct pbuf *p_out; /* pbuf of outcoming msg */ + struct dhcp_msg *msg_out; /* outgoing msg */ + u16_t options_out_len; /* outgoing msg options length */ + u16_t request_timeout; /* #ticks with period DHCP_FINE_TIMER_SECS for request timeout */ + u16_t t1_timeout; /* #ticks with period DHCP_COARSE_TIMER_SECS for renewal time */ + u16_t t2_timeout; /* #ticks with period DHCP_COARSE_TIMER_SECS for rebind time */ + u16_t t1_renew_time; /* #ticks with period DHCP_COARSE_TIMER_SECS until next renew try */ + u16_t t2_rebind_time; /* #ticks with period DHCP_COARSE_TIMER_SECS until next rebind try */ + u16_t lease_used; /* #ticks with period DHCP_COARSE_TIMER_SECS since last received DHCP ack */ + u16_t t0_timeout; /* #ticks with period DHCP_COARSE_TIMER_SECS for lease time */ + ip_addr_t server_ip_addr; /* dhcp server address that offered this lease (ip_addr_t because passed to UDP) */ + ip4_addr_t offered_ip_addr; + ip4_addr_t offered_sn_mask; + ip4_addr_t offered_gw_addr; + + u32_t offered_t0_lease; /* lease period (in seconds) */ + u32_t offered_t1_renew; /* recommended renew time (usually 50% of lease period) */ + u32_t offered_t2_rebind; /* recommended rebind time (usually 87.5 of lease period) */ +#if LWIP_DHCP_BOOTP_FILE + ip4_addr_t offered_si_addr; + char boot_file_name[DHCP_BOOT_FILE_LEN]; +#endif /* LWIP_DHCP_BOOTPFILE */ +}; + + +void dhcp_set_struct(struct netif *netif, struct dhcp *dhcp); +/** Remove a struct dhcp previously set to the netif using dhcp_set_struct() */ +#define dhcp_remove_struct(netif) netif_set_client_data(netif, LWIP_NETIF_CLIENT_DATA_INDEX_DHCP, NULL) +void dhcp_cleanup(struct netif *netif); +err_t dhcp_start(struct netif *netif); +err_t dhcp_renew(struct netif *netif); +err_t dhcp_release(struct netif *netif); +void dhcp_stop(struct netif *netif); +void dhcp_inform(struct netif *netif); +void dhcp_network_changed(struct netif *netif); +#if DHCP_DOES_ARP_CHECK +void dhcp_arp_reply(struct netif *netif, const ip4_addr_t *addr); +#endif +u8_t dhcp_supplied_address(const struct netif *netif); +/* to be called every minute */ +void dhcp_coarse_tmr(void); +/* to be called every half second */ +void dhcp_fine_tmr(void); + +#if LWIP_DHCP_GET_NTP_SRV +/** This function must exist, in other to add offered NTP servers to + * the NTP (or SNTP) engine. + * See LWIP_DHCP_MAX_NTP_SERVERS */ +extern void dhcp_set_ntp_servers(u8_t num_ntp_servers, const ip4_addr_t* ntp_server_addrs); +#endif /* LWIP_DHCP_GET_NTP_SRV */ + +#define netif_dhcp_data(netif) ((struct dhcp*)netif_get_client_data(netif, LWIP_NETIF_CLIENT_DATA_INDEX_DHCP)) + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_DHCP */ + +#endif /*LWIP_HDR_DHCP_H*/ diff --git a/tools/sdk/lwip2/include/lwip/dhcp6.h b/tools/sdk/lwip2/include/lwip/dhcp6.h new file mode 100644 index 000000000..455336d37 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/dhcp6.h @@ -0,0 +1,58 @@ +/** + * @file + * + * IPv6 address autoconfiguration as per RFC 4862. + */ + +/* + * Copyright (c) 2010 Inico Technologies Ltd. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Ivan Delamer + * + * IPv6 address autoconfiguration as per RFC 4862. + * + * Please coordinate changes and requests with Ivan Delamer + * + */ + +#ifndef LWIP_HDR_IP6_DHCP6_H +#define LWIP_HDR_IP6_DHCP6_H + +#include "lwip/opt.h" + +#if LWIP_IPV6_DHCP6 /* don't build if not configured for use in lwipopts.h */ + + +struct dhcp6 +{ + /*@todo: implement DHCP6*/ +}; + +#endif /* LWIP_IPV6_DHCP6 */ + +#endif /* LWIP_HDR_IP6_DHCP6_H */ diff --git a/tools/sdk/lwip2/include/lwip/dns.h b/tools/sdk/lwip2/include/lwip/dns.h new file mode 100644 index 000000000..1453d7234 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/dns.h @@ -0,0 +1,130 @@ +/** + * @file + * DNS API + */ + +/** + * lwip DNS resolver header file. + + * Author: Jim Pettinato + * April 2007 + + * ported from uIP resolv.c Copyright (c) 2002-2003, Adam Dunkels. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef LWIP_HDR_DNS_H +#define LWIP_HDR_DNS_H + +#include "lwip/opt.h" + +#if LWIP_DNS + +#include "lwip/ip_addr.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** DNS timer period */ +#define DNS_TMR_INTERVAL 1000 + +/* DNS resolve types: */ +#define LWIP_DNS_ADDRTYPE_IPV4 0 +#define LWIP_DNS_ADDRTYPE_IPV6 1 +#define LWIP_DNS_ADDRTYPE_IPV4_IPV6 2 /* try to resolve IPv4 first, try IPv6 if IPv4 fails only */ +#define LWIP_DNS_ADDRTYPE_IPV6_IPV4 3 /* try to resolve IPv6 first, try IPv4 if IPv6 fails only */ +#if LWIP_IPV4 && LWIP_IPV6 +#ifndef LWIP_DNS_ADDRTYPE_DEFAULT +#define LWIP_DNS_ADDRTYPE_DEFAULT LWIP_DNS_ADDRTYPE_IPV4_IPV6 +#endif +#elif LWIP_IPV4 +#define LWIP_DNS_ADDRTYPE_DEFAULT LWIP_DNS_ADDRTYPE_IPV4 +#else +#define LWIP_DNS_ADDRTYPE_DEFAULT LWIP_DNS_ADDRTYPE_IPV6 +#endif + +#if DNS_LOCAL_HOSTLIST +/** struct used for local host-list */ +struct local_hostlist_entry { + /** static hostname */ + const char *name; + /** static host address in network byteorder */ + ip_addr_t addr; + struct local_hostlist_entry *next; +}; +#define DNS_LOCAL_HOSTLIST_ELEM(name, addr_init) {name, addr_init, NULL} +#if DNS_LOCAL_HOSTLIST_IS_DYNAMIC +#ifndef DNS_LOCAL_HOSTLIST_MAX_NAMELEN +#define DNS_LOCAL_HOSTLIST_MAX_NAMELEN DNS_MAX_NAME_LENGTH +#endif +#define LOCALHOSTLIST_ELEM_SIZE ((sizeof(struct local_hostlist_entry) + DNS_LOCAL_HOSTLIST_MAX_NAMELEN + 1)) +#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */ +#endif /* DNS_LOCAL_HOSTLIST */ + +#if LWIP_IPV4 +extern const ip_addr_t dns_mquery_v4group; +#endif /* LWIP_IPV4 */ +#if LWIP_IPV6 +extern const ip_addr_t dns_mquery_v6group; +#endif /* LWIP_IPV6 */ + +/** Callback which is invoked when a hostname is found. + * A function of this type must be implemented by the application using the DNS resolver. + * @param name pointer to the name that was looked up. + * @param ipaddr pointer to an ip_addr_t containing the IP address of the hostname, + * or NULL if the name could not be found (or on any other error). + * @param callback_arg a user-specified callback argument passed to dns_gethostbyname +*/ +typedef void (*dns_found_callback)(const char *name, const ip_addr_t *ipaddr, void *callback_arg); + +void dns_init(void); +void dns_tmr(void); +void dns_setserver(u8_t numdns, const ip_addr_t *dnsserver); +const ip_addr_t* dns_getserver(u8_t numdns); +err_t dns_gethostbyname(const char *hostname, ip_addr_t *addr, + dns_found_callback found, void *callback_arg); +err_t dns_gethostbyname_addrtype(const char *hostname, ip_addr_t *addr, + dns_found_callback found, void *callback_arg, + u8_t dns_addrtype); + + +#if DNS_LOCAL_HOSTLIST +size_t dns_local_iterate(dns_found_callback iterator_fn, void *iterator_arg); +err_t dns_local_lookup(const char *hostname, ip_addr_t *addr, u8_t dns_addrtype); +#if DNS_LOCAL_HOSTLIST_IS_DYNAMIC +int dns_local_removehost(const char *hostname, const ip_addr_t *addr); +err_t dns_local_addhost(const char *hostname, const ip_addr_t *addr); +#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */ +#endif /* DNS_LOCAL_HOSTLIST */ + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_DNS */ + +#endif /* LWIP_HDR_DNS_H */ diff --git a/tools/sdk/lwip2/include/lwip/err.h b/tools/sdk/lwip2/include/lwip/err.h new file mode 100644 index 000000000..84e528d1e --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/err.h @@ -0,0 +1,119 @@ +/** + * @file + * lwIP Error codes + */ +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_ERR_H +#define LWIP_HDR_ERR_H + +#include "lwip/opt.h" +#include "lwip/arch.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup infrastructure_errors Error codes + * @ingroup infrastructure + * @{ + */ + +/** Define LWIP_ERR_T in cc.h if you want to use + * a different type for your platform (must be signed). */ +#ifdef LWIP_ERR_T +typedef LWIP_ERR_T err_t; +#else /* LWIP_ERR_T */ +typedef s8_t err_t; +#endif /* LWIP_ERR_T*/ + +/** Definitions for error constants. */ +typedef enum { +/** No error, everything OK. */ + ERR_OK = 0, +/** Out of memory error. */ + ERR_MEM = -1, +/** Buffer error. */ + ERR_BUF = -2, +/** Timeout. */ + ERR_TIMEOUT = -3, +/** Routing problem. */ + ERR_RTE = -4, +/** Operation in progress */ + ERR_INPROGRESS = -5, +/** Illegal value. */ + ERR_VAL = -6, +/** Operation would block. */ + ERR_WOULDBLOCK = -7, +/** Address in use. */ + ERR_USE = -8, +/** Already connecting. */ + ERR_ALREADY = -9, +/** Conn already established.*/ + ERR_ISCONN = -10, +/** Not connected. */ + ERR_CONN = -11, +/** Low-level netif error */ + ERR_IF = -12, + +/** Connection aborted. */ + ERR_ABRT = -13, +/** Connection reset. */ + ERR_RST = -14, +/** Connection closed. */ + ERR_CLSD = -15, +/** Illegal argument. */ + ERR_ARG = -16 +} err_enum_t; + +#define ERR_IS_FATAL(e) ((e) <= ERR_ABRT) + +/** + * @} + */ + +#ifdef LWIP_DEBUG +extern const char *lwip_strerr(err_t err); +#else +#define lwip_strerr(x) "" +#endif /* LWIP_DEBUG */ + +#if !NO_SYS +int err_to_errno(err_t err); +#endif /* !NO_SYS */ + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_ERR_H */ diff --git a/tools/sdk/lwip2/include/lwip/errno.h b/tools/sdk/lwip2/include/lwip/errno.h new file mode 100644 index 000000000..641cffb09 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/errno.h @@ -0,0 +1,193 @@ +/** + * @file + * Posix Errno defines + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_ERRNO_H +#define LWIP_HDR_ERRNO_H + +#include "lwip/opt.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef LWIP_PROVIDE_ERRNO + +#define EPERM 1 /* Operation not permitted */ +#define ENOENT 2 /* No such file or directory */ +#define ESRCH 3 /* No such process */ +#define EINTR 4 /* Interrupted system call */ +#define EIO 5 /* I/O error */ +#define ENXIO 6 /* No such device or address */ +#define E2BIG 7 /* Arg list too long */ +#define ENOEXEC 8 /* Exec format error */ +#define EBADF 9 /* Bad file number */ +#define ECHILD 10 /* No child processes */ +#define EAGAIN 11 /* Try again */ +#define ENOMEM 12 /* Out of memory */ +#define EACCES 13 /* Permission denied */ +#define EFAULT 14 /* Bad address */ +#define ENOTBLK 15 /* Block device required */ +#define EBUSY 16 /* Device or resource busy */ +#define EEXIST 17 /* File exists */ +#define EXDEV 18 /* Cross-device link */ +#define ENODEV 19 /* No such device */ +#define ENOTDIR 20 /* Not a directory */ +#define EISDIR 21 /* Is a directory */ +#define EINVAL 22 /* Invalid argument */ +#define ENFILE 23 /* File table overflow */ +#define EMFILE 24 /* Too many open files */ +#define ENOTTY 25 /* Not a typewriter */ +#define ETXTBSY 26 /* Text file busy */ +#define EFBIG 27 /* File too large */ +#define ENOSPC 28 /* No space left on device */ +#define ESPIPE 29 /* Illegal seek */ +#define EROFS 30 /* Read-only file system */ +#define EMLINK 31 /* Too many links */ +#define EPIPE 32 /* Broken pipe */ +#define EDOM 33 /* Math argument out of domain of func */ +#define ERANGE 34 /* Math result not representable */ +#define EDEADLK 35 /* Resource deadlock would occur */ +#define ENAMETOOLONG 36 /* File name too long */ +#define ENOLCK 37 /* No record locks available */ +#define ENOSYS 38 /* Function not implemented */ +#define ENOTEMPTY 39 /* Directory not empty */ +#define ELOOP 40 /* Too many symbolic links encountered */ +#define EWOULDBLOCK EAGAIN /* Operation would block */ +#define ENOMSG 42 /* No message of desired type */ +#define EIDRM 43 /* Identifier removed */ +#define ECHRNG 44 /* Channel number out of range */ +#define EL2NSYNC 45 /* Level 2 not synchronized */ +#define EL3HLT 46 /* Level 3 halted */ +#define EL3RST 47 /* Level 3 reset */ +#define ELNRNG 48 /* Link number out of range */ +#define EUNATCH 49 /* Protocol driver not attached */ +#define ENOCSI 50 /* No CSI structure available */ +#define EL2HLT 51 /* Level 2 halted */ +#define EBADE 52 /* Invalid exchange */ +#define EBADR 53 /* Invalid request descriptor */ +#define EXFULL 54 /* Exchange full */ +#define ENOANO 55 /* No anode */ +#define EBADRQC 56 /* Invalid request code */ +#define EBADSLT 57 /* Invalid slot */ + +#define EDEADLOCK EDEADLK + +#define EBFONT 59 /* Bad font file format */ +#define ENOSTR 60 /* Device not a stream */ +#define ENODATA 61 /* No data available */ +#define ETIME 62 /* Timer expired */ +#define ENOSR 63 /* Out of streams resources */ +#define ENONET 64 /* Machine is not on the network */ +#define ENOPKG 65 /* Package not installed */ +#define EREMOTE 66 /* Object is remote */ +#define ENOLINK 67 /* Link has been severed */ +#define EADV 68 /* Advertise error */ +#define ESRMNT 69 /* Srmount error */ +#define ECOMM 70 /* Communication error on send */ +#define EPROTO 71 /* Protocol error */ +#define EMULTIHOP 72 /* Multihop attempted */ +#define EDOTDOT 73 /* RFS specific error */ +#define EBADMSG 74 /* Not a data message */ +#define EOVERFLOW 75 /* Value too large for defined data type */ +#define ENOTUNIQ 76 /* Name not unique on network */ +#define EBADFD 77 /* File descriptor in bad state */ +#define EREMCHG 78 /* Remote address changed */ +#define ELIBACC 79 /* Can not access a needed shared library */ +#define ELIBBAD 80 /* Accessing a corrupted shared library */ +#define ELIBSCN 81 /* .lib section in a.out corrupted */ +#define ELIBMAX 82 /* Attempting to link in too many shared libraries */ +#define ELIBEXEC 83 /* Cannot exec a shared library directly */ +#define EILSEQ 84 /* Illegal byte sequence */ +#define ERESTART 85 /* Interrupted system call should be restarted */ +#define ESTRPIPE 86 /* Streams pipe error */ +#define EUSERS 87 /* Too many users */ +#define ENOTSOCK 88 /* Socket operation on non-socket */ +#define EDESTADDRREQ 89 /* Destination address required */ +#define EMSGSIZE 90 /* Message too long */ +#define EPROTOTYPE 91 /* Protocol wrong type for socket */ +#define ENOPROTOOPT 92 /* Protocol not available */ +#define EPROTONOSUPPORT 93 /* Protocol not supported */ +#define ESOCKTNOSUPPORT 94 /* Socket type not supported */ +#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */ +#define EPFNOSUPPORT 96 /* Protocol family not supported */ +#define EAFNOSUPPORT 97 /* Address family not supported by protocol */ +#define EADDRINUSE 98 /* Address already in use */ +#define EADDRNOTAVAIL 99 /* Cannot assign requested address */ +#define ENETDOWN 100 /* Network is down */ +#define ENETUNREACH 101 /* Network is unreachable */ +#define ENETRESET 102 /* Network dropped connection because of reset */ +#define ECONNABORTED 103 /* Software caused connection abort */ +#define ECONNRESET 104 /* Connection reset by peer */ +#define ENOBUFS 105 /* No buffer space available */ +#define EISCONN 106 /* Transport endpoint is already connected */ +#define ENOTCONN 107 /* Transport endpoint is not connected */ +#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */ +#define ETOOMANYREFS 109 /* Too many references: cannot splice */ +#define ETIMEDOUT 110 /* Connection timed out */ +#define ECONNREFUSED 111 /* Connection refused */ +#define EHOSTDOWN 112 /* Host is down */ +#define EHOSTUNREACH 113 /* No route to host */ +#define EALREADY 114 /* Operation already in progress */ +#define EINPROGRESS 115 /* Operation now in progress */ +#define ESTALE 116 /* Stale NFS file handle */ +#define EUCLEAN 117 /* Structure needs cleaning */ +#define ENOTNAM 118 /* Not a XENIX named type file */ +#define ENAVAIL 119 /* No XENIX semaphores available */ +#define EISNAM 120 /* Is a named type file */ +#define EREMOTEIO 121 /* Remote I/O error */ +#define EDQUOT 122 /* Quota exceeded */ + +#define ENOMEDIUM 123 /* No medium found */ +#define EMEDIUMTYPE 124 /* Wrong medium type */ + +#ifndef errno +extern int errno; +#endif + +#else /* LWIP_PROVIDE_ERRNO */ + +/* Define LWIP_ERRNO_INCLUDE to to include the error defines here */ +#ifdef LWIP_ERRNO_INCLUDE +#include LWIP_ERRNO_INCLUDE +#endif /* LWIP_ERRNO_INCLUDE */ + +#endif /* LWIP_PROVIDE_ERRNO */ + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_ERRNO_H */ diff --git a/tools/sdk/lwip2/include/lwip/etharp.h b/tools/sdk/lwip2/include/lwip/etharp.h new file mode 100644 index 000000000..7080a19d0 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/etharp.h @@ -0,0 +1,106 @@ +/** + * @file + * Ethernet output function - handles OUTGOING ethernet level traffic, implements + * ARP resolving. + * To be used in most low-level netif implementations + */ + +/* + * Copyright (c) 2001-2003 Swedish Institute of Computer Science. + * Copyright (c) 2003-2004 Leon Woestenberg + * Copyright (c) 2003-2004 Axon Digital Design B.V., The Netherlands. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ + +#ifndef LWIP_HDR_NETIF_ETHARP_H +#define LWIP_HDR_NETIF_ETHARP_H + +#include "lwip/opt.h" + +#if LWIP_ARP || LWIP_ETHERNET /* don't build if not configured for use in lwipopts.h */ + +#include "lwip/pbuf.h" +#include "lwip/ip4_addr.h" +#include "lwip/netif.h" +#include "lwip/ip4.h" +#include "lwip/prot/ethernet.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if LWIP_IPV4 && LWIP_ARP /* don't build if not configured for use in lwipopts.h */ + +#include "lwip/prot/etharp.h" + +/** 1 seconds period */ +#define ARP_TMR_INTERVAL 1000 + +#if ARP_QUEUEING +/** struct for queueing outgoing packets for unknown address + * defined here to be accessed by memp.h + */ +struct etharp_q_entry { + struct etharp_q_entry *next; + struct pbuf *p; +}; +#endif /* ARP_QUEUEING */ + +#define etharp_init() /* Compatibility define, no init needed. */ +void etharp_tmr(void); +s8_t etharp_find_addr(struct netif *netif, const ip4_addr_t *ipaddr, + struct eth_addr **eth_ret, const ip4_addr_t **ip_ret); +u8_t etharp_get_entry(u8_t i, ip4_addr_t **ipaddr, struct netif **netif, struct eth_addr **eth_ret); +err_t etharp_output(struct netif *netif, struct pbuf *q, const ip4_addr_t *ipaddr); +err_t etharp_query(struct netif *netif, const ip4_addr_t *ipaddr, struct pbuf *q); +err_t etharp_request(struct netif *netif, const ip4_addr_t *ipaddr); +/** For Ethernet network interfaces, we might want to send "gratuitous ARP"; + * this is an ARP packet sent by a node in order to spontaneously cause other + * nodes to update an entry in their ARP cache. + * From RFC 3220 "IP Mobility Support for IPv4" section 4.6. */ +#define etharp_gratuitous(netif) etharp_request((netif), netif_ip4_addr(netif)) +void etharp_cleanup_netif(struct netif *netif); + +#if ETHARP_SUPPORT_STATIC_ENTRIES +err_t etharp_add_static_entry(const ip4_addr_t *ipaddr, struct eth_addr *ethaddr); +err_t etharp_remove_static_entry(const ip4_addr_t *ipaddr); +#endif /* ETHARP_SUPPORT_STATIC_ENTRIES */ + +#endif /* LWIP_IPV4 && LWIP_ARP */ + +void etharp_input(struct pbuf *p, struct netif *netif); + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_ARP || LWIP_ETHERNET */ + +#endif /* LWIP_HDR_NETIF_ETHARP_H */ diff --git a/tools/sdk/lwip2/include/lwip/ethip6.h b/tools/sdk/lwip2/include/lwip/ethip6.h new file mode 100644 index 000000000..5e88dffd0 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/ethip6.h @@ -0,0 +1,68 @@ +/** + * @file + * + * Ethernet output for IPv6. Uses ND tables for link-layer addressing. + */ + +/* + * Copyright (c) 2010 Inico Technologies Ltd. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Ivan Delamer + * + * + * Please coordinate changes and requests with Ivan Delamer + * + */ + +#ifndef LWIP_HDR_ETHIP6_H +#define LWIP_HDR_ETHIP6_H + +#include "lwip/opt.h" + +#if LWIP_IPV6 && LWIP_ETHERNET /* don't build if not configured for use in lwipopts.h */ + +#include "lwip/pbuf.h" +#include "lwip/ip6.h" +#include "lwip/ip6_addr.h" +#include "lwip/netif.h" + + +#ifdef __cplusplus +extern "C" { +#endif + + +err_t ethip6_output(struct netif *netif, struct pbuf *q, const ip6_addr_t *ip6addr); + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_IPV6 && LWIP_ETHERNET */ + +#endif /* LWIP_HDR_ETHIP6_H */ diff --git a/tools/sdk/lwip2/include/lwip/icmp.h b/tools/sdk/lwip2/include/lwip/icmp.h new file mode 100644 index 000000000..f5a31fd4c --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/icmp.h @@ -0,0 +1,110 @@ +/** + * @file + * ICMP API + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_ICMP_H +#define LWIP_HDR_ICMP_H + +#include "lwip/opt.h" +#include "lwip/pbuf.h" +#include "lwip/ip_addr.h" +#include "lwip/netif.h" +#include "lwip/prot/icmp.h" + +#if LWIP_IPV6 && LWIP_ICMP6 +#include "lwip/icmp6.h" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** ICMP destination unreachable codes */ +enum icmp_dur_type { + /** net unreachable */ + ICMP_DUR_NET = 0, + /** host unreachable */ + ICMP_DUR_HOST = 1, + /** protocol unreachable */ + ICMP_DUR_PROTO = 2, + /** port unreachable */ + ICMP_DUR_PORT = 3, + /** fragmentation needed and DF set */ + ICMP_DUR_FRAG = 4, + /** source route failed */ + ICMP_DUR_SR = 5 +}; + +/** ICMP time exceeded codes */ +enum icmp_te_type { + /** time to live exceeded in transit */ + ICMP_TE_TTL = 0, + /** fragment reassembly time exceeded */ + ICMP_TE_FRAG = 1 +}; + +#if LWIP_IPV4 && LWIP_ICMP /* don't build if not configured for use in lwipopts.h */ + +void icmp_input(struct pbuf *p, struct netif *inp); +void icmp_dest_unreach(struct pbuf *p, enum icmp_dur_type t); +void icmp_time_exceeded(struct pbuf *p, enum icmp_te_type t); + +#endif /* LWIP_IPV4 && LWIP_ICMP */ + +#if LWIP_IPV4 && LWIP_IPV6 +#if LWIP_ICMP && LWIP_ICMP6 +#define icmp_port_unreach(isipv6, pbuf) ((isipv6) ? \ + icmp6_dest_unreach(pbuf, ICMP6_DUR_PORT) : \ + icmp_dest_unreach(pbuf, ICMP_DUR_PORT)) +#elif LWIP_ICMP +#define icmp_port_unreach(isipv6, pbuf) do{ if(!(isipv6)) { icmp_dest_unreach(pbuf, ICMP_DUR_PORT);}}while(0) +#elif LWIP_ICMP6 +#define icmp_port_unreach(isipv6, pbuf) do{ if(isipv6) { icmp6_dest_unreach(pbuf, ICMP6_DUR_PORT);}}while(0) +#else +#define icmp_port_unreach(isipv6, pbuf) +#endif +#elif LWIP_IPV6 && LWIP_ICMP6 +#define icmp_port_unreach(isipv6, pbuf) icmp6_dest_unreach(pbuf, ICMP6_DUR_PORT) +#elif LWIP_IPV4 && LWIP_ICMP +#define icmp_port_unreach(isipv6, pbuf) icmp_dest_unreach(pbuf, ICMP_DUR_PORT) +#else /* (LWIP_IPV6 && LWIP_ICMP6) || (LWIP_IPV4 && LWIP_ICMP) */ +#define icmp_port_unreach(isipv6, pbuf) +#endif /* (LWIP_IPV6 && LWIP_ICMP6) || (LWIP_IPV4 && LWIP_ICMP) LWIP_IPV4*/ + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_ICMP_H */ diff --git a/tools/sdk/lwip2/include/lwip/icmp6.h b/tools/sdk/lwip2/include/lwip/icmp6.h new file mode 100644 index 000000000..a29dc8c1c --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/icmp6.h @@ -0,0 +1,70 @@ +/** + * @file + * + * IPv6 version of ICMP, as per RFC 4443. + */ + +/* + * Copyright (c) 2010 Inico Technologies Ltd. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Ivan Delamer + * + * + * Please coordinate changes and requests with Ivan Delamer + * + */ +#ifndef LWIP_HDR_ICMP6_H +#define LWIP_HDR_ICMP6_H + +#include "lwip/opt.h" +#include "lwip/pbuf.h" +#include "lwip/ip6_addr.h" +#include "lwip/netif.h" +#include "lwip/prot/icmp6.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if LWIP_ICMP6 && LWIP_IPV6 /* don't build if not configured for use in lwipopts.h */ + +void icmp6_input(struct pbuf *p, struct netif *inp); +void icmp6_dest_unreach(struct pbuf *p, enum icmp6_dur_code c); +void icmp6_packet_too_big(struct pbuf *p, u32_t mtu); +void icmp6_time_exceeded(struct pbuf *p, enum icmp6_te_code c); +void icmp6_param_problem(struct pbuf *p, enum icmp6_pp_code c, u32_t pointer); + +#endif /* LWIP_ICMP6 && LWIP_IPV6 */ + + +#ifdef __cplusplus +} +#endif + + +#endif /* LWIP_HDR_ICMP6_H */ diff --git a/tools/sdk/lwip2/include/lwip/igmp.h b/tools/sdk/lwip2/include/lwip/igmp.h new file mode 100644 index 000000000..ffd80e680 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/igmp.h @@ -0,0 +1,115 @@ +/** + * @file + * IGMP API + */ + +/* + * Copyright (c) 2002 CITEL Technologies Ltd. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of CITEL Technologies Ltd nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY CITEL TECHNOLOGIES AND CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL CITEL TECHNOLOGIES OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is a contribution to the lwIP TCP/IP stack. + * The Swedish Institute of Computer Science and Adam Dunkels + * are specifically granted permission to redistribute this + * source code. +*/ + +#ifndef LWIP_HDR_IGMP_H +#define LWIP_HDR_IGMP_H + +#include "lwip/opt.h" +#include "lwip/ip_addr.h" +#include "lwip/netif.h" +#include "lwip/pbuf.h" + +#if LWIP_IPV4 && LWIP_IGMP /* don't build if not configured for use in lwipopts.h */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* IGMP timer */ +#define IGMP_TMR_INTERVAL 100 /* Milliseconds */ +#define IGMP_V1_DELAYING_MEMBER_TMR (1000/IGMP_TMR_INTERVAL) +#define IGMP_JOIN_DELAYING_MEMBER_TMR (500 /IGMP_TMR_INTERVAL) + +/* Compatibility defines (don't use for new code) */ +#define IGMP_DEL_MAC_FILTER NETIF_DEL_MAC_FILTER +#define IGMP_ADD_MAC_FILTER NETIF_ADD_MAC_FILTER + +/** + * igmp group structure - there is + * a list of groups for each interface + * these should really be linked from the interface, but + * if we keep them separate we will not affect the lwip original code + * too much + * + * There will be a group for the all systems group address but this + * will not run the state machine as it is used to kick off reports + * from all the other groups + */ +struct igmp_group { + /** next link */ + struct igmp_group *next; + /** multicast address */ + ip4_addr_t group_address; + /** signifies we were the last person to report */ + u8_t last_reporter_flag; + /** current state of the group */ + u8_t group_state; + /** timer for reporting, negative is OFF */ + u16_t timer; + /** counter of simultaneous uses */ + u8_t use; +}; + +/* Prototypes */ +void igmp_init(void); +err_t igmp_start(struct netif *netif); +err_t igmp_stop(struct netif *netif); +void igmp_report_groups(struct netif *netif); +struct igmp_group *igmp_lookfor_group(struct netif *ifp, const ip4_addr_t *addr); +void igmp_input(struct pbuf *p, struct netif *inp, const ip4_addr_t *dest); +err_t igmp_joingroup(const ip4_addr_t *ifaddr, const ip4_addr_t *groupaddr); +err_t igmp_joingroup_netif(struct netif *netif, const ip4_addr_t *groupaddr); +err_t igmp_leavegroup(const ip4_addr_t *ifaddr, const ip4_addr_t *groupaddr); +err_t igmp_leavegroup_netif(struct netif *netif, const ip4_addr_t *groupaddr); +void igmp_tmr(void); + +/** @ingroup igmp + * Get list head of IGMP groups for netif. + * Note: The allsystems group IP is contained in the list as first entry. + * @see @ref netif_set_igmp_mac_filter() + */ +#define netif_igmp_data(netif) ((struct igmp_group *)netif_get_client_data(netif, LWIP_NETIF_CLIENT_DATA_INDEX_IGMP)) + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_IPV4 && LWIP_IGMP */ + +#endif /* LWIP_HDR_IGMP_H */ diff --git a/tools/sdk/lwip2/include/lwip/inet.h b/tools/sdk/lwip2/include/lwip/inet.h new file mode 100644 index 000000000..4a34f0265 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/inet.h @@ -0,0 +1,172 @@ +/** + * @file + * This file (together with sockets.h) aims to provide structs and functions from + * - arpa/inet.h + * - netinet/in.h + * + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_INET_H +#define LWIP_HDR_INET_H + +#include "lwip/opt.h" +#include "lwip/def.h" +#include "lwip/ip_addr.h" +#include "lwip/ip6_addr.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* If your port already typedef's in_addr_t, define IN_ADDR_T_DEFINED + to prevent this code from redefining it. */ +#if !defined(in_addr_t) && !defined(IN_ADDR_T_DEFINED) +typedef u32_t in_addr_t; +#endif + +struct in_addr { + in_addr_t s_addr; +}; + +struct in6_addr { + union { + u32_t u32_addr[4]; + u8_t u8_addr[16]; + } un; +#define s6_addr un.u8_addr +}; + +/** 255.255.255.255 */ +#define INADDR_NONE IPADDR_NONE +/** 127.0.0.1 */ +#define INADDR_LOOPBACK IPADDR_LOOPBACK +/** 0.0.0.0 */ +#define INADDR_ANY IPADDR_ANY +/** 255.255.255.255 */ +#define INADDR_BROADCAST IPADDR_BROADCAST + +/** This macro can be used to initialize a variable of type struct in6_addr + to the IPv6 wildcard address. */ +#define IN6ADDR_ANY_INIT {{{0,0,0,0}}} +/** This macro can be used to initialize a variable of type struct in6_addr + to the IPv6 loopback address. */ +#define IN6ADDR_LOOPBACK_INIT {{{0,0,0,PP_HTONL(1)}}} +/** This variable is initialized by the system to contain the wildcard IPv6 address. */ +extern const struct in6_addr in6addr_any; + +/* Definitions of the bits in an (IPv4) Internet address integer. + + On subnets, host and network parts are found according to + the subnet mask, not these masks. */ +#define IN_CLASSA(a) IP_CLASSA(a) +#define IN_CLASSA_NET IP_CLASSA_NET +#define IN_CLASSA_NSHIFT IP_CLASSA_NSHIFT +#define IN_CLASSA_HOST IP_CLASSA_HOST +#define IN_CLASSA_MAX IP_CLASSA_MAX + +#define IN_CLASSB(b) IP_CLASSB(b) +#define IN_CLASSB_NET IP_CLASSB_NET +#define IN_CLASSB_NSHIFT IP_CLASSB_NSHIFT +#define IN_CLASSB_HOST IP_CLASSB_HOST +#define IN_CLASSB_MAX IP_CLASSB_MAX + +#define IN_CLASSC(c) IP_CLASSC(c) +#define IN_CLASSC_NET IP_CLASSC_NET +#define IN_CLASSC_NSHIFT IP_CLASSC_NSHIFT +#define IN_CLASSC_HOST IP_CLASSC_HOST +#define IN_CLASSC_MAX IP_CLASSC_MAX + +#define IN_CLASSD(d) IP_CLASSD(d) +#define IN_CLASSD_NET IP_CLASSD_NET /* These ones aren't really */ +#define IN_CLASSD_NSHIFT IP_CLASSD_NSHIFT /* net and host fields, but */ +#define IN_CLASSD_HOST IP_CLASSD_HOST /* routing needn't know. */ +#define IN_CLASSD_MAX IP_CLASSD_MAX + +#define IN_MULTICAST(a) IP_MULTICAST(a) + +#define IN_EXPERIMENTAL(a) IP_EXPERIMENTAL(a) +#define IN_BADCLASS(a) IP_BADCLASS(a) + +#define IN_LOOPBACKNET IP_LOOPBACKNET + + +#ifndef INET_ADDRSTRLEN +#define INET_ADDRSTRLEN IP4ADDR_STRLEN_MAX +#endif +#if LWIP_IPV6 +#ifndef INET6_ADDRSTRLEN +#define INET6_ADDRSTRLEN IP6ADDR_STRLEN_MAX +#endif +#endif + +#if LWIP_IPV4 + +#define inet_addr_from_ip4addr(target_inaddr, source_ipaddr) ((target_inaddr)->s_addr = ip4_addr_get_u32(source_ipaddr)) +#define inet_addr_to_ip4addr(target_ipaddr, source_inaddr) (ip4_addr_set_u32(target_ipaddr, (source_inaddr)->s_addr)) +/* ATTENTION: the next define only works because both s_addr and ip4_addr_t are an u32_t effectively! */ +#define inet_addr_to_ip4addr_p(target_ip4addr_p, source_inaddr) ((target_ip4addr_p) = (ip4_addr_t*)&((source_inaddr)->s_addr)) + +/* directly map this to the lwip internal functions */ +#define inet_addr(cp) ipaddr_addr(cp) +#define inet_aton(cp, addr) ip4addr_aton(cp, (ip4_addr_t*)addr) +#define inet_ntoa(addr) ip4addr_ntoa((const ip4_addr_t*)&(addr)) +#define inet_ntoa_r(addr, buf, buflen) ip4addr_ntoa_r((const ip4_addr_t*)&(addr), buf, buflen) + +#endif /* LWIP_IPV4 */ + +#if LWIP_IPV6 +#define inet6_addr_from_ip6addr(target_in6addr, source_ip6addr) {(target_in6addr)->un.u32_addr[0] = (source_ip6addr)->addr[0]; \ + (target_in6addr)->un.u32_addr[1] = (source_ip6addr)->addr[1]; \ + (target_in6addr)->un.u32_addr[2] = (source_ip6addr)->addr[2]; \ + (target_in6addr)->un.u32_addr[3] = (source_ip6addr)->addr[3];} +#define inet6_addr_to_ip6addr(target_ip6addr, source_in6addr) {(target_ip6addr)->addr[0] = (source_in6addr)->un.u32_addr[0]; \ + (target_ip6addr)->addr[1] = (source_in6addr)->un.u32_addr[1]; \ + (target_ip6addr)->addr[2] = (source_in6addr)->un.u32_addr[2]; \ + (target_ip6addr)->addr[3] = (source_in6addr)->un.u32_addr[3];} +/* ATTENTION: the next define only works because both in6_addr and ip6_addr_t are an u32_t[4] effectively! */ +#define inet6_addr_to_ip6addr_p(target_ip6addr_p, source_in6addr) ((target_ip6addr_p) = (ip6_addr_t*)(source_in6addr)) + +/* directly map this to the lwip internal functions */ +#define inet6_aton(cp, addr) ip6addr_aton(cp, (ip6_addr_t*)addr) +#define inet6_ntoa(addr) ip6addr_ntoa((const ip6_addr_t*)&(addr)) +#define inet6_ntoa_r(addr, buf, buflen) ip6addr_ntoa_r((const ip6_addr_t*)&(addr), buf, buflen) + +#endif /* LWIP_IPV6 */ + + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_INET_H */ diff --git a/tools/sdk/lwip2/include/lwip/inet_chksum.h b/tools/sdk/lwip2/include/lwip/inet_chksum.h new file mode 100644 index 000000000..4e23d7f19 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/inet_chksum.h @@ -0,0 +1,105 @@ +/** + * @file + * IP checksum calculation functions + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_INET_CHKSUM_H +#define LWIP_HDR_INET_CHKSUM_H + +#include "lwip/opt.h" + +#include "lwip/pbuf.h" +#include "lwip/ip_addr.h" + +/** Swap the bytes in an u16_t: much like lwip_htons() for little-endian */ +#ifndef SWAP_BYTES_IN_WORD +#define SWAP_BYTES_IN_WORD(w) (((w) & 0xff) << 8) | (((w) & 0xff00) >> 8) +#endif /* SWAP_BYTES_IN_WORD */ + +/** Split an u32_t in two u16_ts and add them up */ +#ifndef FOLD_U32T +#define FOLD_U32T(u) (((u) >> 16) + ((u) & 0x0000ffffUL)) +#endif + +#if LWIP_CHECKSUM_ON_COPY +/** Function-like macro: same as MEMCPY but returns the checksum of copied data + as u16_t */ +# ifndef LWIP_CHKSUM_COPY +# define LWIP_CHKSUM_COPY(dst, src, len) lwip_chksum_copy(dst, src, len) +# ifndef LWIP_CHKSUM_COPY_ALGORITHM +# define LWIP_CHKSUM_COPY_ALGORITHM 1 +# endif /* LWIP_CHKSUM_COPY_ALGORITHM */ +# else /* LWIP_CHKSUM_COPY */ +# define LWIP_CHKSUM_COPY_ALGORITHM 0 +# endif /* LWIP_CHKSUM_COPY */ +#else /* LWIP_CHECKSUM_ON_COPY */ +# define LWIP_CHKSUM_COPY_ALGORITHM 0 +#endif /* LWIP_CHECKSUM_ON_COPY */ + +#ifdef __cplusplus +extern "C" { +#endif + +u16_t inet_chksum(const void *dataptr, u16_t len); +u16_t inet_chksum_pbuf(struct pbuf *p); +#if LWIP_CHKSUM_COPY_ALGORITHM +u16_t lwip_chksum_copy(void *dst, const void *src, u16_t len); +#endif /* LWIP_CHKSUM_COPY_ALGORITHM */ + +#if LWIP_IPV4 +u16_t inet_chksum_pseudo(struct pbuf *p, u8_t proto, u16_t proto_len, + const ip4_addr_t *src, const ip4_addr_t *dest); +u16_t inet_chksum_pseudo_partial(struct pbuf *p, u8_t proto, + u16_t proto_len, u16_t chksum_len, const ip4_addr_t *src, const ip4_addr_t *dest); +#endif /* LWIP_IPV4 */ + +#if LWIP_IPV6 +u16_t ip6_chksum_pseudo(struct pbuf *p, u8_t proto, u16_t proto_len, + const ip6_addr_t *src, const ip6_addr_t *dest); +u16_t ip6_chksum_pseudo_partial(struct pbuf *p, u8_t proto, u16_t proto_len, + u16_t chksum_len, const ip6_addr_t *src, const ip6_addr_t *dest); +#endif /* LWIP_IPV6 */ + + +u16_t ip_chksum_pseudo(struct pbuf *p, u8_t proto, u16_t proto_len, + const ip_addr_t *src, const ip_addr_t *dest); +u16_t ip_chksum_pseudo_partial(struct pbuf *p, u8_t proto, u16_t proto_len, + u16_t chksum_len, const ip_addr_t *src, const ip_addr_t *dest); + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_INET_H */ + diff --git a/tools/sdk/lwip2/include/lwip/init.h b/tools/sdk/lwip2/include/lwip/init.h new file mode 100644 index 000000000..3c234cb58 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/init.h @@ -0,0 +1,100 @@ +/** + * @file + * lwIP initialization API + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_INIT_H +#define LWIP_HDR_INIT_H + +#include "lwip/opt.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup lwip_version Version + * @ingroup lwip + * @{ + */ + +/** X.x.x: Major version of the stack */ +#define LWIP_VERSION_MAJOR 2 +/** x.X.x: Minor version of the stack */ +#define LWIP_VERSION_MINOR 0 +/** x.x.X: Revision of the stack */ +#define LWIP_VERSION_REVISION 3 +/** For release candidates, this is set to 1..254 + * For official releases, this is set to 255 (LWIP_RC_RELEASE) + * For development versions (Git), this is set to 0 (LWIP_RC_DEVELOPMENT) */ +#define LWIP_VERSION_RC LWIP_RC_RELEASE + +/** LWIP_VERSION_RC is set to LWIP_RC_RELEASE for official releases */ +#define LWIP_RC_RELEASE 255 +/** LWIP_VERSION_RC is set to LWIP_RC_DEVELOPMENT for Git versions */ +#define LWIP_RC_DEVELOPMENT 0 + +#define LWIP_VERSION_IS_RELEASE (LWIP_VERSION_RC == LWIP_RC_RELEASE) +#define LWIP_VERSION_IS_DEVELOPMENT (LWIP_VERSION_RC == LWIP_RC_DEVELOPMENT) +#define LWIP_VERSION_IS_RC ((LWIP_VERSION_RC != LWIP_RC_RELEASE) && (LWIP_VERSION_RC != LWIP_RC_DEVELOPMENT)) + +/* Some helper defines to get a version string */ +#define LWIP_VERSTR2(x) #x +#define LWIP_VERSTR(x) LWIP_VERSTR2(x) +#if LWIP_VERSION_IS_RELEASE +#define LWIP_VERSION_STRING_SUFFIX "" +#elif LWIP_VERSION_IS_DEVELOPMENT +#define LWIP_VERSION_STRING_SUFFIX "d" +#else +#define LWIP_VERSION_STRING_SUFFIX "rc" LWIP_VERSTR(LWIP_VERSION_RC) +#endif + +/** Provides the version of the stack */ +#define LWIP_VERSION (((u32_t)LWIP_VERSION_MAJOR) << 24 | ((u32_t)LWIP_VERSION_MINOR) << 16 | \ + ((u32_t)LWIP_VERSION_REVISION) << 8 | ((u32_t)LWIP_VERSION_RC)) +/** Provides the version of the stack as string */ +#define LWIP_VERSION_STRING LWIP_VERSTR(LWIP_VERSION_MAJOR) "." LWIP_VERSTR(LWIP_VERSION_MINOR) "." LWIP_VERSTR(LWIP_VERSION_REVISION) LWIP_VERSION_STRING_SUFFIX + +/** + * @} + */ + +/* Modules initialization */ +void lwip_init(void); + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_INIT_H */ diff --git a/tools/sdk/lwip2/include/lwip/ip.h b/tools/sdk/lwip2/include/lwip/ip.h new file mode 100644 index 000000000..0673be9b4 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/ip.h @@ -0,0 +1,319 @@ +/** + * @file + * IP API + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_IP_H +#define LWIP_HDR_IP_H + +#include "lwip/opt.h" + +#include "lwip/def.h" +#include "lwip/pbuf.h" +#include "lwip/ip_addr.h" +#include "lwip/err.h" +#include "lwip/netif.h" +#include "lwip/ip4.h" +#include "lwip/ip6.h" +#include "lwip/prot/ip.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* This is passed as the destination address to ip_output_if (not + to ip_output), meaning that an IP header already is constructed + in the pbuf. This is used when TCP retransmits. */ +#define LWIP_IP_HDRINCL NULL + +/** pbufs passed to IP must have a ref-count of 1 as their payload pointer + gets altered as the packet is passed down the stack */ +#ifndef LWIP_IP_CHECK_PBUF_REF_COUNT_FOR_TX +#define LWIP_IP_CHECK_PBUF_REF_COUNT_FOR_TX(p) LWIP_ASSERT("p->ref == 1", (p)->ref == 1) +#endif + +#if LWIP_NETIF_HWADDRHINT +#define IP_PCB_ADDRHINT ;u8_t addr_hint +#else +#define IP_PCB_ADDRHINT +#endif /* LWIP_NETIF_HWADDRHINT */ + +/** This is the common part of all PCB types. It needs to be at the + beginning of a PCB type definition. It is located here so that + changes to this common part are made in one location instead of + having to change all PCB structs. */ +#define IP_PCB \ + /* ip addresses in network byte order */ \ + ip_addr_t local_ip; \ + ip_addr_t remote_ip; \ + /* Socket options */ \ + u8_t so_options; \ + /* Type Of Service */ \ + u8_t tos; \ + /* Time To Live */ \ + u8_t ttl \ + /* link layer address resolution hint */ \ + IP_PCB_ADDRHINT + +struct ip_pcb { +/* Common members of all PCB types */ + IP_PCB; +}; + +/* + * Option flags per-socket. These are the same like SO_XXX in sockets.h + */ +#define SOF_REUSEADDR 0x04U /* allow local address reuse */ +#define SOF_KEEPALIVE 0x08U /* keep connections alive */ +#define SOF_BROADCAST 0x20U /* permit to send and to receive broadcast messages (see IP_SOF_BROADCAST option) */ + +/* These flags are inherited (e.g. from a listen-pcb to a connection-pcb): */ +#define SOF_INHERITED (SOF_REUSEADDR|SOF_KEEPALIVE) + +/** Global variables of this module, kept in a struct for efficient access using base+index. */ +struct ip_globals +{ + /** The interface that accepted the packet for the current callback invocation. */ + struct netif *current_netif; + /** The interface that received the packet for the current callback invocation. */ + struct netif *current_input_netif; +#if LWIP_IPV4 + /** Header of the input packet currently being processed. */ + struct ip_hdr *current_ip4_header; +#endif /* LWIP_IPV4 */ +#if LWIP_IPV6 + /** Header of the input IPv6 packet currently being processed. */ + struct ip6_hdr *current_ip6_header; +#endif /* LWIP_IPV6 */ + /** Total header length of current_ip4/6_header (i.e. after this, the UDP/TCP header starts) */ + u16_t current_ip_header_tot_len; + /** Source IP address of current_header */ + ip_addr_t current_iphdr_src; + /** Destination IP address of current_header */ + ip_addr_t current_iphdr_dest; +}; +extern struct ip_globals ip_data; + + +/** Get the interface that accepted the current packet. + * This may or may not be the receiving netif, depending on your netif/network setup. + * This function must only be called from a receive callback (udp_recv, + * raw_recv, tcp_accept). It will return NULL otherwise. */ +#define ip_current_netif() (ip_data.current_netif) +/** Get the interface that received the current packet. + * This function must only be called from a receive callback (udp_recv, + * raw_recv, tcp_accept). It will return NULL otherwise. */ +#define ip_current_input_netif() (ip_data.current_input_netif) +/** Total header length of ip(6)_current_header() (i.e. after this, the UDP/TCP header starts) */ +#define ip_current_header_tot_len() (ip_data.current_ip_header_tot_len) +/** Source IP address of current_header */ +#define ip_current_src_addr() (&ip_data.current_iphdr_src) +/** Destination IP address of current_header */ +#define ip_current_dest_addr() (&ip_data.current_iphdr_dest) + +#if LWIP_IPV4 && LWIP_IPV6 +/** Get the IPv4 header of the current packet. + * This function must only be called from a receive callback (udp_recv, + * raw_recv, tcp_accept). It will return NULL otherwise. */ +#define ip4_current_header() ((const struct ip_hdr*)(ip_data.current_ip4_header)) +/** Get the IPv6 header of the current packet. + * This function must only be called from a receive callback (udp_recv, + * raw_recv, tcp_accept). It will return NULL otherwise. */ +#define ip6_current_header() ((const struct ip6_hdr*)(ip_data.current_ip6_header)) +/** Returns TRUE if the current IP input packet is IPv6, FALSE if it is IPv4 */ +#define ip_current_is_v6() (ip6_current_header() != NULL) +/** Source IPv6 address of current_header */ +#define ip6_current_src_addr() (ip_2_ip6(&ip_data.current_iphdr_src)) +/** Destination IPv6 address of current_header */ +#define ip6_current_dest_addr() (ip_2_ip6(&ip_data.current_iphdr_dest)) +/** Get the transport layer protocol */ +#define ip_current_header_proto() (ip_current_is_v6() ? \ + IP6H_NEXTH(ip6_current_header()) :\ + IPH_PROTO(ip4_current_header())) +/** Get the transport layer header */ +#define ip_next_header_ptr() ((const void*)((ip_current_is_v6() ? \ + (const u8_t*)ip6_current_header() : (const u8_t*)ip4_current_header()) + ip_current_header_tot_len())) + +/** Source IP4 address of current_header */ +#define ip4_current_src_addr() (ip_2_ip4(&ip_data.current_iphdr_src)) +/** Destination IP4 address of current_header */ +#define ip4_current_dest_addr() (ip_2_ip4(&ip_data.current_iphdr_dest)) + +#elif LWIP_IPV4 /* LWIP_IPV4 && LWIP_IPV6 */ + +/** Get the IPv4 header of the current packet. + * This function must only be called from a receive callback (udp_recv, + * raw_recv, tcp_accept). It will return NULL otherwise. */ +#define ip4_current_header() ((const struct ip_hdr*)(ip_data.current_ip4_header)) +/** Always returns FALSE when only supporting IPv4 only */ +#define ip_current_is_v6() 0 +/** Get the transport layer protocol */ +#define ip_current_header_proto() IPH_PROTO(ip4_current_header()) +/** Get the transport layer header */ +#define ip_next_header_ptr() ((const void*)((const u8_t*)ip4_current_header() + ip_current_header_tot_len())) +/** Source IP4 address of current_header */ +#define ip4_current_src_addr() (&ip_data.current_iphdr_src) +/** Destination IP4 address of current_header */ +#define ip4_current_dest_addr() (&ip_data.current_iphdr_dest) + +#elif LWIP_IPV6 /* LWIP_IPV4 && LWIP_IPV6 */ + +/** Get the IPv6 header of the current packet. + * This function must only be called from a receive callback (udp_recv, + * raw_recv, tcp_accept). It will return NULL otherwise. */ +#define ip6_current_header() ((const struct ip6_hdr*)(ip_data.current_ip6_header)) +/** Always returns TRUE when only supporting IPv6 only */ +#define ip_current_is_v6() 1 +/** Get the transport layer protocol */ +#define ip_current_header_proto() IP6H_NEXTH(ip6_current_header()) +/** Get the transport layer header */ +#define ip_next_header_ptr() ((const void*)((const u8_t*)ip6_current_header())) +/** Source IP6 address of current_header */ +#define ip6_current_src_addr() (&ip_data.current_iphdr_src) +/** Destination IP6 address of current_header */ +#define ip6_current_dest_addr() (&ip_data.current_iphdr_dest) + +#endif /* LWIP_IPV6 */ + +/** Union source address of current_header */ +#define ip_current_src_addr() (&ip_data.current_iphdr_src) +/** Union destination address of current_header */ +#define ip_current_dest_addr() (&ip_data.current_iphdr_dest) + +/** Gets an IP pcb option (SOF_* flags) */ +#define ip_get_option(pcb, opt) ((pcb)->so_options & (opt)) +/** Sets an IP pcb option (SOF_* flags) */ +#define ip_set_option(pcb, opt) ((pcb)->so_options |= (opt)) +/** Resets an IP pcb option (SOF_* flags) */ +#define ip_reset_option(pcb, opt) ((pcb)->so_options &= ~(opt)) + +#if LWIP_IPV4 && LWIP_IPV6 +/** + * @ingroup ip + * Output IP packet, netif is selected by source address + */ +#define ip_output(p, src, dest, ttl, tos, proto) \ + (IP_IS_V6(dest) ? \ + ip6_output(p, ip_2_ip6(src), ip_2_ip6(dest), ttl, tos, proto) : \ + ip4_output(p, ip_2_ip4(src), ip_2_ip4(dest), ttl, tos, proto)) +/** + * @ingroup ip + * Output IP packet to specified interface + */ +#define ip_output_if(p, src, dest, ttl, tos, proto, netif) \ + (IP_IS_V6(dest) ? \ + ip6_output_if(p, ip_2_ip6(src), ip_2_ip6(dest), ttl, tos, proto, netif) : \ + ip4_output_if(p, ip_2_ip4(src), ip_2_ip4(dest), ttl, tos, proto, netif)) +/** + * @ingroup ip + * Output IP packet to interface specifying source address + */ +#define ip_output_if_src(p, src, dest, ttl, tos, proto, netif) \ + (IP_IS_V6(dest) ? \ + ip6_output_if_src(p, ip_2_ip6(src), ip_2_ip6(dest), ttl, tos, proto, netif) : \ + ip4_output_if_src(p, ip_2_ip4(src), ip_2_ip4(dest), ttl, tos, proto, netif)) +/** Output IP packet with addr_hint */ +#define ip_output_hinted(p, src, dest, ttl, tos, proto, addr_hint) \ + (IP_IS_V6(dest) ? \ + ip6_output_hinted(p, ip_2_ip6(src), ip_2_ip6(dest), ttl, tos, proto, addr_hint) : \ + ip4_output_hinted(p, ip_2_ip4(src), ip_2_ip4(dest), ttl, tos, proto, addr_hint)) +/** + * @ingroup ip + * Get netif for address combination. See \ref ip6_route and \ref ip4_route + */ +#define ip_route(src, dest) \ + (IP_IS_V6(dest) ? \ + ip6_route(ip_2_ip6(src), ip_2_ip6(dest)) : \ + ip4_route_src(ip_2_ip4(dest), ip_2_ip4(src))) +/** + * @ingroup ip + * Get netif for IP. + */ +#define ip_netif_get_local_ip(netif, dest) (IP_IS_V6(dest) ? \ + ip6_netif_get_local_ip(netif, ip_2_ip6(dest)) : \ + ip4_netif_get_local_ip(netif)) +#define ip_debug_print(is_ipv6, p) ((is_ipv6) ? ip6_debug_print(p) : ip4_debug_print(p)) + +err_t ip_input(struct pbuf *p, struct netif *inp); + +#elif LWIP_IPV4 /* LWIP_IPV4 && LWIP_IPV6 */ + +#define ip_output(p, src, dest, ttl, tos, proto) \ + ip4_output(p, src, dest, ttl, tos, proto) +#define ip_output_if(p, src, dest, ttl, tos, proto, netif) \ + ip4_output_if(p, src, dest, ttl, tos, proto, netif) +#define ip_output_if_src(p, src, dest, ttl, tos, proto, netif) \ + ip4_output_if_src(p, src, dest, ttl, tos, proto, netif) +#define ip_output_hinted(p, src, dest, ttl, tos, proto, addr_hint) \ + ip4_output_hinted(p, src, dest, ttl, tos, proto, addr_hint) +#define ip_route(src, dest) \ + ip4_route_src(dest, src) +#define ip_netif_get_local_ip(netif, dest) \ + ip4_netif_get_local_ip(netif) +#define ip_debug_print(is_ipv6, p) ip4_debug_print(p) + +#define ip_input ip4_input + +#elif LWIP_IPV6 /* LWIP_IPV4 && LWIP_IPV6 */ + +#define ip_output(p, src, dest, ttl, tos, proto) \ + ip6_output(p, src, dest, ttl, tos, proto) +#define ip_output_if(p, src, dest, ttl, tos, proto, netif) \ + ip6_output_if(p, src, dest, ttl, tos, proto, netif) +#define ip_output_if_src(p, src, dest, ttl, tos, proto, netif) \ + ip6_output_if_src(p, src, dest, ttl, tos, proto, netif) +#define ip_output_hinted(p, src, dest, ttl, tos, proto, addr_hint) \ + ip6_output_hinted(p, src, dest, ttl, tos, proto, addr_hint) +#define ip_route(src, dest) \ + ip6_route(src, dest) +#define ip_netif_get_local_ip(netif, dest) \ + ip6_netif_get_local_ip(netif, dest) +#define ip_debug_print(is_ipv6, p) ip6_debug_print(p) + +#define ip_input ip6_input + +#endif /* LWIP_IPV6 */ + +#define ip_route_get_local_ip(src, dest, netif, ipaddr) do { \ + (netif) = ip_route(src, dest); \ + (ipaddr) = ip_netif_get_local_ip(netif, dest); \ +}while(0) + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_IP_H */ + + diff --git a/tools/sdk/lwip2/include/lwip/ip4.h b/tools/sdk/lwip2/include/lwip/ip4.h new file mode 100644 index 000000000..48246ecc2 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/ip4.h @@ -0,0 +1,111 @@ +/** + * @file + * IPv4 API + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_IP4_H +#define LWIP_HDR_IP4_H + +#include "lwip/opt.h" + +#if LWIP_IPV4 + +#include "lwip/def.h" +#include "lwip/pbuf.h" +#include "lwip/ip4_addr.h" +#include "lwip/err.h" +#include "lwip/netif.h" +#include "lwip/prot/ip4.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef LWIP_HOOK_IP4_ROUTE_SRC +#define LWIP_IPV4_SRC_ROUTING 1 +#else +#define LWIP_IPV4_SRC_ROUTING 0 +#endif + +/** Currently, the function ip_output_if_opt() is only used with IGMP */ +#define IP_OPTIONS_SEND (LWIP_IPV4 && LWIP_IGMP) + +#define ip_init() /* Compatibility define, no init needed. */ +struct netif *ip4_route(const ip4_addr_t *dest); +#if LWIP_IPV4_SRC_ROUTING +struct netif *ip4_route_src(const ip4_addr_t *dest, const ip4_addr_t *src); +#else /* LWIP_IPV4_SRC_ROUTING */ +#define ip4_route_src(dest, src) ip4_route(dest) +#endif /* LWIP_IPV4_SRC_ROUTING */ +err_t ip4_input(struct pbuf *p, struct netif *inp); +err_t ip4_output(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *dest, + u8_t ttl, u8_t tos, u8_t proto); +err_t ip4_output_if(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *dest, + u8_t ttl, u8_t tos, u8_t proto, struct netif *netif); +err_t ip4_output_if_src(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *dest, + u8_t ttl, u8_t tos, u8_t proto, struct netif *netif); +#if LWIP_NETIF_HWADDRHINT +err_t ip4_output_hinted(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *dest, + u8_t ttl, u8_t tos, u8_t proto, u8_t *addr_hint); +#endif /* LWIP_NETIF_HWADDRHINT */ +#if IP_OPTIONS_SEND +err_t ip4_output_if_opt(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *dest, + u8_t ttl, u8_t tos, u8_t proto, struct netif *netif, void *ip_options, + u16_t optlen); +err_t ip4_output_if_opt_src(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *dest, + u8_t ttl, u8_t tos, u8_t proto, struct netif *netif, void *ip_options, + u16_t optlen); +#endif /* IP_OPTIONS_SEND */ + +#if LWIP_MULTICAST_TX_OPTIONS +void ip4_set_default_multicast_netif(struct netif* default_multicast_netif); +#endif /* LWIP_MULTICAST_TX_OPTIONS */ + +#define ip4_netif_get_local_ip(netif) (((netif) != NULL) ? netif_ip_addr4(netif) : NULL) + +#if IP_DEBUG +void ip4_debug_print(struct pbuf *p); +#else +#define ip4_debug_print(p) +#endif /* IP_DEBUG */ + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_IPV4 */ + +#endif /* LWIP_HDR_IP_H */ + + diff --git a/tools/sdk/lwip2/include/lwip/ip4_addr.h b/tools/sdk/lwip2/include/lwip/ip4_addr.h new file mode 100644 index 000000000..51b46b8d4 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/ip4_addr.h @@ -0,0 +1,227 @@ +/** + * @file + * IPv4 address API + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_IP4_ADDR_H +#define LWIP_HDR_IP4_ADDR_H + +#include "lwip/opt.h" +#include "lwip/def.h" + +#if LWIP_IPV4 + +#ifdef __cplusplus +extern "C" { +#endif + +/** This is the aligned version of ip4_addr_t, + used as local variable, on the stack, etc. */ +struct ip4_addr { + u32_t addr; +}; + +/** ip4_addr_t uses a struct for convenience only, so that the same defines can + * operate both on ip4_addr_t as well as on ip4_addr_p_t. */ +typedef struct ip4_addr ip4_addr_t; + +/** + * struct ipaddr2 is used in the definition of the ARP packet format in + * order to support compilers that don't have structure packing. + */ +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +struct ip4_addr2 { + PACK_STRUCT_FIELD(u16_t addrw[2]); +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +/* Forward declaration to not include netif.h */ +struct netif; + +/** 255.255.255.255 */ +#define IPADDR_NONE ((u32_t)0xffffffffUL) +/** 127.0.0.1 */ +#define IPADDR_LOOPBACK ((u32_t)0x7f000001UL) +/** 0.0.0.0 */ +#define IPADDR_ANY ((u32_t)0x00000000UL) +/** 255.255.255.255 */ +#define IPADDR_BROADCAST ((u32_t)0xffffffffUL) + +/* Definitions of the bits in an Internet address integer. + + On subnets, host and network parts are found according to + the subnet mask, not these masks. */ +#define IP_CLASSA(a) ((((u32_t)(a)) & 0x80000000UL) == 0) +#define IP_CLASSA_NET 0xff000000 +#define IP_CLASSA_NSHIFT 24 +#define IP_CLASSA_HOST (0xffffffff & ~IP_CLASSA_NET) +#define IP_CLASSA_MAX 128 + +#define IP_CLASSB(a) ((((u32_t)(a)) & 0xc0000000UL) == 0x80000000UL) +#define IP_CLASSB_NET 0xffff0000 +#define IP_CLASSB_NSHIFT 16 +#define IP_CLASSB_HOST (0xffffffff & ~IP_CLASSB_NET) +#define IP_CLASSB_MAX 65536 + +#define IP_CLASSC(a) ((((u32_t)(a)) & 0xe0000000UL) == 0xc0000000UL) +#define IP_CLASSC_NET 0xffffff00 +#define IP_CLASSC_NSHIFT 8 +#define IP_CLASSC_HOST (0xffffffff & ~IP_CLASSC_NET) + +#define IP_CLASSD(a) (((u32_t)(a) & 0xf0000000UL) == 0xe0000000UL) +#define IP_CLASSD_NET 0xf0000000 /* These ones aren't really */ +#define IP_CLASSD_NSHIFT 28 /* net and host fields, but */ +#define IP_CLASSD_HOST 0x0fffffff /* routing needn't know. */ +#define IP_MULTICAST(a) IP_CLASSD(a) + +#define IP_EXPERIMENTAL(a) (((u32_t)(a) & 0xf0000000UL) == 0xf0000000UL) +#define IP_BADCLASS(a) (((u32_t)(a) & 0xf0000000UL) == 0xf0000000UL) + +#define IP_LOOPBACKNET 127 /* official! */ + +/** Set an IP address given by the four byte-parts */ +#define IP4_ADDR(ipaddr, a,b,c,d) (ipaddr)->addr = PP_HTONL(LWIP_MAKEU32(a,b,c,d)) + +/** MEMCPY-like copying of IP addresses where addresses are known to be + * 16-bit-aligned if the port is correctly configured (so a port could define + * this to copying 2 u16_t's) - no NULL-pointer-checking needed. */ +#ifndef IPADDR2_COPY +#define IPADDR2_COPY(dest, src) SMEMCPY(dest, src, sizeof(ip4_addr_t)) +#endif + +/** Copy IP address - faster than ip4_addr_set: no NULL check */ +#define ip4_addr_copy(dest, src) ((dest).addr = (src).addr) +/** Safely copy one IP address to another (src may be NULL) */ +#define ip4_addr_set(dest, src) ((dest)->addr = \ + ((src) == NULL ? 0 : \ + (src)->addr)) +/** Set complete address to zero */ +#define ip4_addr_set_zero(ipaddr) ((ipaddr)->addr = 0) +/** Set address to IPADDR_ANY (no need for lwip_htonl()) */ +#define ip4_addr_set_any(ipaddr) ((ipaddr)->addr = IPADDR_ANY) +/** Set address to loopback address */ +#define ip4_addr_set_loopback(ipaddr) ((ipaddr)->addr = PP_HTONL(IPADDR_LOOPBACK)) +/** Check if an address is in the loopback region */ +#define ip4_addr_isloopback(ipaddr) (((ipaddr)->addr & PP_HTONL(IP_CLASSA_NET)) == PP_HTONL(((u32_t)IP_LOOPBACKNET) << 24)) +/** Safely copy one IP address to another and change byte order + * from host- to network-order. */ +#define ip4_addr_set_hton(dest, src) ((dest)->addr = \ + ((src) == NULL ? 0:\ + lwip_htonl((src)->addr))) +/** IPv4 only: set the IP address given as an u32_t */ +#define ip4_addr_set_u32(dest_ipaddr, src_u32) ((dest_ipaddr)->addr = (src_u32)) +/** IPv4 only: get the IP address as an u32_t */ +#define ip4_addr_get_u32(src_ipaddr) ((src_ipaddr)->addr) + +/** Get the network address by combining host address with netmask */ +#define ip4_addr_get_network(target, host, netmask) do { ((target)->addr = ((host)->addr) & ((netmask)->addr)); } while(0) + +/** + * Determine if two address are on the same network. + * + * @arg addr1 IP address 1 + * @arg addr2 IP address 2 + * @arg mask network identifier mask + * @return !0 if the network identifiers of both address match + */ +#define ip4_addr_netcmp(addr1, addr2, mask) (((addr1)->addr & \ + (mask)->addr) == \ + ((addr2)->addr & \ + (mask)->addr)) +#define ip4_addr_cmp(addr1, addr2) ((addr1)->addr == (addr2)->addr) + +#define ip4_addr_isany_val(addr1) ((addr1).addr == IPADDR_ANY) +#define ip4_addr_isany(addr1) ((addr1) == NULL || ip4_addr_isany_val(*(addr1))) + +#define ip4_addr_isbroadcast(addr1, netif) ip4_addr_isbroadcast_u32((addr1)->addr, netif) +u8_t ip4_addr_isbroadcast_u32(u32_t addr, const struct netif *netif); + +#define ip_addr_netmask_valid(netmask) ip4_addr_netmask_valid((netmask)->addr) +u8_t ip4_addr_netmask_valid(u32_t netmask); + +#define ip4_addr_ismulticast(addr1) (((addr1)->addr & PP_HTONL(0xf0000000UL)) == PP_HTONL(0xe0000000UL)) + +#define ip4_addr_islinklocal(addr1) (((addr1)->addr & PP_HTONL(0xffff0000UL)) == PP_HTONL(0xa9fe0000UL)) + +#define ip4_addr_debug_print_parts(debug, a, b, c, d) \ + LWIP_DEBUGF(debug, ("%" U16_F ".%" U16_F ".%" U16_F ".%" U16_F, a, b, c, d)) +#define ip4_addr_debug_print(debug, ipaddr) \ + ip4_addr_debug_print_parts(debug, \ + (u16_t)((ipaddr) != NULL ? ip4_addr1_16(ipaddr) : 0), \ + (u16_t)((ipaddr) != NULL ? ip4_addr2_16(ipaddr) : 0), \ + (u16_t)((ipaddr) != NULL ? ip4_addr3_16(ipaddr) : 0), \ + (u16_t)((ipaddr) != NULL ? ip4_addr4_16(ipaddr) : 0)) +#define ip4_addr_debug_print_val(debug, ipaddr) \ + ip4_addr_debug_print_parts(debug, \ + ip4_addr1_16(&(ipaddr)), \ + ip4_addr2_16(&(ipaddr)), \ + ip4_addr3_16(&(ipaddr)), \ + ip4_addr4_16(&(ipaddr))) + +/* Get one byte from the 4-byte address */ +#define ip4_addr1(ipaddr) (((const u8_t*)(&(ipaddr)->addr))[0]) +#define ip4_addr2(ipaddr) (((const u8_t*)(&(ipaddr)->addr))[1]) +#define ip4_addr3(ipaddr) (((const u8_t*)(&(ipaddr)->addr))[2]) +#define ip4_addr4(ipaddr) (((const u8_t*)(&(ipaddr)->addr))[3]) +/* These are cast to u16_t, with the intent that they are often arguments + * to printf using the U16_F format from cc.h. */ +#define ip4_addr1_16(ipaddr) ((u16_t)ip4_addr1(ipaddr)) +#define ip4_addr2_16(ipaddr) ((u16_t)ip4_addr2(ipaddr)) +#define ip4_addr3_16(ipaddr) ((u16_t)ip4_addr3(ipaddr)) +#define ip4_addr4_16(ipaddr) ((u16_t)ip4_addr4(ipaddr)) + +#define IP4ADDR_STRLEN_MAX 16 + +/** For backwards compatibility */ +#define ip_ntoa(ipaddr) ipaddr_ntoa(ipaddr) + +u32_t ipaddr_addr(const char *cp); +int ip4addr_aton(const char *cp, ip4_addr_t *addr); +/** returns ptr to static buffer; not reentrant! */ +char *ip4addr_ntoa(const ip4_addr_t *addr); +char *ip4addr_ntoa_r(const ip4_addr_t *addr, char *buf, int buflen); + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_IPV4 */ + +#endif /* LWIP_HDR_IP_ADDR_H */ diff --git a/tools/sdk/lwip2/include/lwip/ip4_frag.h b/tools/sdk/lwip2/include/lwip/ip4_frag.h new file mode 100644 index 000000000..ed5bf14a3 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/ip4_frag.h @@ -0,0 +1,100 @@ +/** + * @file + * IP fragmentation/reassembly + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Jani Monoses + * + */ + +#ifndef LWIP_HDR_IP4_FRAG_H +#define LWIP_HDR_IP4_FRAG_H + +#include "lwip/opt.h" +#include "lwip/err.h" +#include "lwip/pbuf.h" +#include "lwip/netif.h" +#include "lwip/ip_addr.h" +#include "lwip/ip.h" + +#if LWIP_IPV4 + +#ifdef __cplusplus +extern "C" { +#endif + +#if IP_REASSEMBLY +/* The IP reassembly timer interval in milliseconds. */ +#define IP_TMR_INTERVAL 1000 + +/** IP reassembly helper struct. + * This is exported because memp needs to know the size. + */ +struct ip_reassdata { + struct ip_reassdata *next; + struct pbuf *p; + struct ip_hdr iphdr; + u16_t datagram_len; + u8_t flags; + u8_t timer; +}; + +void ip_reass_init(void); +void ip_reass_tmr(void); +struct pbuf * ip4_reass(struct pbuf *p); +#endif /* IP_REASSEMBLY */ + +#if IP_FRAG +#if !LWIP_NETIF_TX_SINGLE_PBUF +#ifndef LWIP_PBUF_CUSTOM_REF_DEFINED +#define LWIP_PBUF_CUSTOM_REF_DEFINED +/** A custom pbuf that holds a reference to another pbuf, which is freed + * when this custom pbuf is freed. This is used to create a custom PBUF_REF + * that points into the original pbuf. */ +struct pbuf_custom_ref { + /** 'base class' */ + struct pbuf_custom pc; + /** pointer to the original pbuf that is referenced */ + struct pbuf *original; +}; +#endif /* LWIP_PBUF_CUSTOM_REF_DEFINED */ +#endif /* !LWIP_NETIF_TX_SINGLE_PBUF */ + +err_t ip4_frag(struct pbuf *p, struct netif *netif, const ip4_addr_t *dest); +#endif /* IP_FRAG */ + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_IPV4 */ + +#endif /* LWIP_HDR_IP4_FRAG_H */ diff --git a/tools/sdk/lwip2/include/lwip/ip6.h b/tools/sdk/lwip2/include/lwip/ip6.h new file mode 100644 index 000000000..099b94fb7 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/ip6.h @@ -0,0 +1,93 @@ +/** + * @file + * + * IPv6 layer. + */ + +/* + * Copyright (c) 2010 Inico Technologies Ltd. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Ivan Delamer + * + * + * Please coordinate changes and requests with Ivan Delamer + * + */ +#ifndef LWIP_HDR_IP6_H +#define LWIP_HDR_IP6_H + +#include "lwip/opt.h" + +#if LWIP_IPV6 /* don't build if not configured for use in lwipopts.h */ + +#include "lwip/ip6_addr.h" +#include "lwip/prot/ip6.h" +#include "lwip/def.h" +#include "lwip/pbuf.h" +#include "lwip/netif.h" + +#include "lwip/err.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct netif *ip6_route(const ip6_addr_t *src, const ip6_addr_t *dest); +const ip_addr_t *ip6_select_source_address(struct netif *netif, const ip6_addr_t * dest); +err_t ip6_input(struct pbuf *p, struct netif *inp); +err_t ip6_output(struct pbuf *p, const ip6_addr_t *src, const ip6_addr_t *dest, + u8_t hl, u8_t tc, u8_t nexth); +err_t ip6_output_if(struct pbuf *p, const ip6_addr_t *src, const ip6_addr_t *dest, + u8_t hl, u8_t tc, u8_t nexth, struct netif *netif); +err_t ip6_output_if_src(struct pbuf *p, const ip6_addr_t *src, const ip6_addr_t *dest, + u8_t hl, u8_t tc, u8_t nexth, struct netif *netif); +#if LWIP_NETIF_HWADDRHINT +err_t ip6_output_hinted(struct pbuf *p, const ip6_addr_t *src, const ip6_addr_t *dest, + u8_t hl, u8_t tc, u8_t nexth, u8_t *addr_hint); +#endif /* LWIP_NETIF_HWADDRHINT */ +#if LWIP_IPV6_MLD +err_t ip6_options_add_hbh_ra(struct pbuf * p, u8_t nexth, u8_t value); +#endif /* LWIP_IPV6_MLD */ + +#define ip6_netif_get_local_ip(netif, dest) (((netif) != NULL) ? \ + ip6_select_source_address(netif, dest) : NULL) + +#if IP6_DEBUG +void ip6_debug_print(struct pbuf *p); +#else +#define ip6_debug_print(p) +#endif /* IP6_DEBUG */ + + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_IPV6 */ + +#endif /* LWIP_HDR_IP6_H */ diff --git a/tools/sdk/lwip2/include/lwip/ip6_addr.h b/tools/sdk/lwip2/include/lwip/ip6_addr.h new file mode 100644 index 000000000..ee381aeb2 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/ip6_addr.h @@ -0,0 +1,285 @@ +/** + * @file + * + * IPv6 addresses. + */ + +/* + * Copyright (c) 2010 Inico Technologies Ltd. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Ivan Delamer + * + * Structs and macros for handling IPv6 addresses. + * + * Please coordinate changes and requests with Ivan Delamer + * + */ +#ifndef LWIP_HDR_IP6_ADDR_H +#define LWIP_HDR_IP6_ADDR_H + +#include "lwip/opt.h" +#include "def.h" + +#if LWIP_IPV6 /* don't build if not configured for use in lwipopts.h */ + + +#ifdef __cplusplus +extern "C" { +#endif + + +/** This is the aligned version of ip6_addr_t, + used as local variable, on the stack, etc. */ +struct ip6_addr { + u32_t addr[4]; +}; + +/** IPv6 address */ +typedef struct ip6_addr ip6_addr_t; + +/** Set an IPv6 partial address given by byte-parts */ +#define IP6_ADDR_PART(ip6addr, index, a,b,c,d) \ + (ip6addr)->addr[index] = PP_HTONL(LWIP_MAKEU32(a,b,c,d)) + +/** Set a full IPv6 address by passing the 4 u32_t indices in network byte order + (use PP_HTONL() for constants) */ +#define IP6_ADDR(ip6addr, idx0, idx1, idx2, idx3) do { \ + (ip6addr)->addr[0] = idx0; \ + (ip6addr)->addr[1] = idx1; \ + (ip6addr)->addr[2] = idx2; \ + (ip6addr)->addr[3] = idx3; } while(0) + +/** Access address in 16-bit block */ +#define IP6_ADDR_BLOCK1(ip6addr) ((u16_t)((lwip_htonl((ip6addr)->addr[0]) >> 16) & 0xffff)) +/** Access address in 16-bit block */ +#define IP6_ADDR_BLOCK2(ip6addr) ((u16_t)((lwip_htonl((ip6addr)->addr[0])) & 0xffff)) +/** Access address in 16-bit block */ +#define IP6_ADDR_BLOCK3(ip6addr) ((u16_t)((lwip_htonl((ip6addr)->addr[1]) >> 16) & 0xffff)) +/** Access address in 16-bit block */ +#define IP6_ADDR_BLOCK4(ip6addr) ((u16_t)((lwip_htonl((ip6addr)->addr[1])) & 0xffff)) +/** Access address in 16-bit block */ +#define IP6_ADDR_BLOCK5(ip6addr) ((u16_t)((lwip_htonl((ip6addr)->addr[2]) >> 16) & 0xffff)) +/** Access address in 16-bit block */ +#define IP6_ADDR_BLOCK6(ip6addr) ((u16_t)((lwip_htonl((ip6addr)->addr[2])) & 0xffff)) +/** Access address in 16-bit block */ +#define IP6_ADDR_BLOCK7(ip6addr) ((u16_t)((lwip_htonl((ip6addr)->addr[3]) >> 16) & 0xffff)) +/** Access address in 16-bit block */ +#define IP6_ADDR_BLOCK8(ip6addr) ((u16_t)((lwip_htonl((ip6addr)->addr[3])) & 0xffff)) + +/** Copy IPv6 address - faster than ip6_addr_set: no NULL check */ +#define ip6_addr_copy(dest, src) do{(dest).addr[0] = (src).addr[0]; \ + (dest).addr[1] = (src).addr[1]; \ + (dest).addr[2] = (src).addr[2]; \ + (dest).addr[3] = (src).addr[3];}while(0) +/** Safely copy one IPv6 address to another (src may be NULL) */ +#define ip6_addr_set(dest, src) do{(dest)->addr[0] = (src) == NULL ? 0 : (src)->addr[0]; \ + (dest)->addr[1] = (src) == NULL ? 0 : (src)->addr[1]; \ + (dest)->addr[2] = (src) == NULL ? 0 : (src)->addr[2]; \ + (dest)->addr[3] = (src) == NULL ? 0 : (src)->addr[3];}while(0) + +/** Set complete address to zero */ +#define ip6_addr_set_zero(ip6addr) do{(ip6addr)->addr[0] = 0; \ + (ip6addr)->addr[1] = 0; \ + (ip6addr)->addr[2] = 0; \ + (ip6addr)->addr[3] = 0;}while(0) + +/** Set address to ipv6 'any' (no need for lwip_htonl()) */ +#define ip6_addr_set_any(ip6addr) ip6_addr_set_zero(ip6addr) +/** Set address to ipv6 loopback address */ +#define ip6_addr_set_loopback(ip6addr) do{(ip6addr)->addr[0] = 0; \ + (ip6addr)->addr[1] = 0; \ + (ip6addr)->addr[2] = 0; \ + (ip6addr)->addr[3] = PP_HTONL(0x00000001UL);}while(0) +/** Safely copy one IPv6 address to another and change byte order + * from host- to network-order. */ +#define ip6_addr_set_hton(dest, src) do{(dest)->addr[0] = (src) == NULL ? 0 : lwip_htonl((src)->addr[0]); \ + (dest)->addr[1] = (src) == NULL ? 0 : lwip_htonl((src)->addr[1]); \ + (dest)->addr[2] = (src) == NULL ? 0 : lwip_htonl((src)->addr[2]); \ + (dest)->addr[3] = (src) == NULL ? 0 : lwip_htonl((src)->addr[3]);}while(0) + + +/** + * Determine if two IPv6 address are on the same network. + * + * @arg addr1 IPv6 address 1 + * @arg addr2 IPv6 address 2 + * @return !0 if the network identifiers of both address match + */ +#define ip6_addr_netcmp(addr1, addr2) (((addr1)->addr[0] == (addr2)->addr[0]) && \ + ((addr1)->addr[1] == (addr2)->addr[1])) + +#define ip6_addr_cmp(addr1, addr2) (((addr1)->addr[0] == (addr2)->addr[0]) && \ + ((addr1)->addr[1] == (addr2)->addr[1]) && \ + ((addr1)->addr[2] == (addr2)->addr[2]) && \ + ((addr1)->addr[3] == (addr2)->addr[3])) + +#define ip6_get_subnet_id(ip6addr) (lwip_htonl((ip6addr)->addr[2]) & 0x0000ffffUL) + +#define ip6_addr_isany_val(ip6addr) (((ip6addr).addr[0] == 0) && \ + ((ip6addr).addr[1] == 0) && \ + ((ip6addr).addr[2] == 0) && \ + ((ip6addr).addr[3] == 0)) +#define ip6_addr_isany(ip6addr) (((ip6addr) == NULL) || ip6_addr_isany_val(*(ip6addr))) + +#define ip6_addr_isloopback(ip6addr) (((ip6addr)->addr[0] == 0UL) && \ + ((ip6addr)->addr[1] == 0UL) && \ + ((ip6addr)->addr[2] == 0UL) && \ + ((ip6addr)->addr[3] == PP_HTONL(0x00000001UL))) + +#define ip6_addr_isglobal(ip6addr) (((ip6addr)->addr[0] & PP_HTONL(0xe0000000UL)) == PP_HTONL(0x20000000UL)) + +#define ip6_addr_islinklocal(ip6addr) (((ip6addr)->addr[0] & PP_HTONL(0xffc00000UL)) == PP_HTONL(0xfe800000UL)) + +#define ip6_addr_issitelocal(ip6addr) (((ip6addr)->addr[0] & PP_HTONL(0xffc00000UL)) == PP_HTONL(0xfec00000UL)) + +#define ip6_addr_isuniquelocal(ip6addr) (((ip6addr)->addr[0] & PP_HTONL(0xfe000000UL)) == PP_HTONL(0xfc000000UL)) + +#define ip6_addr_isipv4mappedipv6(ip6addr) (((ip6addr)->addr[0] == 0) && ((ip6addr)->addr[1] == 0) && (((ip6addr)->addr[2]) == PP_HTONL(0x0000FFFFUL))) + +#define ip6_addr_ismulticast(ip6addr) (((ip6addr)->addr[0] & PP_HTONL(0xff000000UL)) == PP_HTONL(0xff000000UL)) +#define ip6_addr_multicast_transient_flag(ip6addr) ((ip6addr)->addr[0] & PP_HTONL(0x00100000UL)) +#define ip6_addr_multicast_prefix_flag(ip6addr) ((ip6addr)->addr[0] & PP_HTONL(0x00200000UL)) +#define ip6_addr_multicast_rendezvous_flag(ip6addr) ((ip6addr)->addr[0] & PP_HTONL(0x00400000UL)) +#define ip6_addr_multicast_scope(ip6addr) ((lwip_htonl((ip6addr)->addr[0]) >> 16) & 0xf) +#define IP6_MULTICAST_SCOPE_RESERVED 0x0 +#define IP6_MULTICAST_SCOPE_RESERVED0 0x0 +#define IP6_MULTICAST_SCOPE_INTERFACE_LOCAL 0x1 +#define IP6_MULTICAST_SCOPE_LINK_LOCAL 0x2 +#define IP6_MULTICAST_SCOPE_RESERVED3 0x3 +#define IP6_MULTICAST_SCOPE_ADMIN_LOCAL 0x4 +#define IP6_MULTICAST_SCOPE_SITE_LOCAL 0x5 +#define IP6_MULTICAST_SCOPE_ORGANIZATION_LOCAL 0x8 +#define IP6_MULTICAST_SCOPE_GLOBAL 0xe +#define IP6_MULTICAST_SCOPE_RESERVEDF 0xf +#define ip6_addr_ismulticast_iflocal(ip6addr) (((ip6addr)->addr[0] & PP_HTONL(0xff8f0000UL)) == PP_HTONL(0xff010000UL)) +#define ip6_addr_ismulticast_linklocal(ip6addr) (((ip6addr)->addr[0] & PP_HTONL(0xff8f0000UL)) == PP_HTONL(0xff020000UL)) +#define ip6_addr_ismulticast_adminlocal(ip6addr) (((ip6addr)->addr[0] & PP_HTONL(0xff8f0000UL)) == PP_HTONL(0xff040000UL)) +#define ip6_addr_ismulticast_sitelocal(ip6addr) (((ip6addr)->addr[0] & PP_HTONL(0xff8f0000UL)) == PP_HTONL(0xff050000UL)) +#define ip6_addr_ismulticast_orglocal(ip6addr) (((ip6addr)->addr[0] & PP_HTONL(0xff8f0000UL)) == PP_HTONL(0xff080000UL)) +#define ip6_addr_ismulticast_global(ip6addr) (((ip6addr)->addr[0] & PP_HTONL(0xff8f0000UL)) == PP_HTONL(0xff0e0000UL)) + +/* @todo define get/set for well-know multicast addresses, e.g. ff02::1 */ +#define ip6_addr_isallnodes_iflocal(ip6addr) (((ip6addr)->addr[0] == PP_HTONL(0xff010000UL)) && \ + ((ip6addr)->addr[1] == 0UL) && \ + ((ip6addr)->addr[2] == 0UL) && \ + ((ip6addr)->addr[3] == PP_HTONL(0x00000001UL))) + +#define ip6_addr_isallnodes_linklocal(ip6addr) (((ip6addr)->addr[0] == PP_HTONL(0xff020000UL)) && \ + ((ip6addr)->addr[1] == 0UL) && \ + ((ip6addr)->addr[2] == 0UL) && \ + ((ip6addr)->addr[3] == PP_HTONL(0x00000001UL))) +#define ip6_addr_set_allnodes_linklocal(ip6addr) do{(ip6addr)->addr[0] = PP_HTONL(0xff020000UL); \ + (ip6addr)->addr[1] = 0; \ + (ip6addr)->addr[2] = 0; \ + (ip6addr)->addr[3] = PP_HTONL(0x00000001UL);}while(0) + +#define ip6_addr_isallrouters_linklocal(ip6addr) (((ip6addr)->addr[0] == PP_HTONL(0xff020000UL)) && \ + ((ip6addr)->addr[1] == 0UL) && \ + ((ip6addr)->addr[2] == 0UL) && \ + ((ip6addr)->addr[3] == PP_HTONL(0x00000002UL))) +#define ip6_addr_set_allrouters_linklocal(ip6addr) do{(ip6addr)->addr[0] = PP_HTONL(0xff020000UL); \ + (ip6addr)->addr[1] = 0; \ + (ip6addr)->addr[2] = 0; \ + (ip6addr)->addr[3] = PP_HTONL(0x00000002UL);}while(0) + +#define ip6_addr_issolicitednode(ip6addr) ( ((ip6addr)->addr[0] == PP_HTONL(0xff020000UL)) && \ + ((ip6addr)->addr[2] == PP_HTONL(0x00000001UL)) && \ + (((ip6addr)->addr[3] & PP_HTONL(0xff000000UL)) == PP_HTONL(0xff000000UL)) ) + +#define ip6_addr_set_solicitednode(ip6addr, if_id) do{(ip6addr)->addr[0] = PP_HTONL(0xff020000UL); \ + (ip6addr)->addr[1] = 0; \ + (ip6addr)->addr[2] = PP_HTONL(0x00000001UL); \ + (ip6addr)->addr[3] = (PP_HTONL(0xff000000UL) | (if_id));}while(0) + +#define ip6_addr_cmp_solicitednode(ip6addr, sn_addr) (((ip6addr)->addr[0] == PP_HTONL(0xff020000UL)) && \ + ((ip6addr)->addr[1] == 0) && \ + ((ip6addr)->addr[2] == PP_HTONL(0x00000001UL)) && \ + ((ip6addr)->addr[3] == (PP_HTONL(0xff000000UL) | (sn_addr)->addr[3]))) + +/* IPv6 address states. */ +#define IP6_ADDR_INVALID 0x00 +#define IP6_ADDR_TENTATIVE 0x08 +#define IP6_ADDR_TENTATIVE_1 0x09 /* 1 probe sent */ +#define IP6_ADDR_TENTATIVE_2 0x0a /* 2 probes sent */ +#define IP6_ADDR_TENTATIVE_3 0x0b /* 3 probes sent */ +#define IP6_ADDR_TENTATIVE_4 0x0c /* 4 probes sent */ +#define IP6_ADDR_TENTATIVE_5 0x0d /* 5 probes sent */ +#define IP6_ADDR_TENTATIVE_6 0x0e /* 6 probes sent */ +#define IP6_ADDR_TENTATIVE_7 0x0f /* 7 probes sent */ +#define IP6_ADDR_VALID 0x10 /* This bit marks an address as valid (preferred or deprecated) */ +#define IP6_ADDR_PREFERRED 0x30 +#define IP6_ADDR_DEPRECATED 0x10 /* Same as VALID (valid but not preferred) */ + +#define IP6_ADDR_TENTATIVE_COUNT_MASK 0x07 /* 1-7 probes sent */ + +#define ip6_addr_isinvalid(addr_state) (addr_state == IP6_ADDR_INVALID) +#define ip6_addr_istentative(addr_state) (addr_state & IP6_ADDR_TENTATIVE) +#define ip6_addr_isvalid(addr_state) (addr_state & IP6_ADDR_VALID) /* Include valid, preferred, and deprecated. */ +#define ip6_addr_ispreferred(addr_state) (addr_state == IP6_ADDR_PREFERRED) +#define ip6_addr_isdeprecated(addr_state) (addr_state == IP6_ADDR_DEPRECATED) + +#define ip6_addr_debug_print_parts(debug, a, b, c, d, e, f, g, h) \ + LWIP_DEBUGF(debug, ("%" X16_F ":%" X16_F ":%" X16_F ":%" X16_F ":%" X16_F ":%" X16_F ":%" X16_F ":%" X16_F, \ + a, b, c, d, e, f, g, h)) +#define ip6_addr_debug_print(debug, ipaddr) \ + ip6_addr_debug_print_parts(debug, \ + (u16_t)((ipaddr) != NULL ? IP6_ADDR_BLOCK1(ipaddr) : 0), \ + (u16_t)((ipaddr) != NULL ? IP6_ADDR_BLOCK2(ipaddr) : 0), \ + (u16_t)((ipaddr) != NULL ? IP6_ADDR_BLOCK3(ipaddr) : 0), \ + (u16_t)((ipaddr) != NULL ? IP6_ADDR_BLOCK4(ipaddr) : 0), \ + (u16_t)((ipaddr) != NULL ? IP6_ADDR_BLOCK5(ipaddr) : 0), \ + (u16_t)((ipaddr) != NULL ? IP6_ADDR_BLOCK6(ipaddr) : 0), \ + (u16_t)((ipaddr) != NULL ? IP6_ADDR_BLOCK7(ipaddr) : 0), \ + (u16_t)((ipaddr) != NULL ? IP6_ADDR_BLOCK8(ipaddr) : 0)) +#define ip6_addr_debug_print_val(debug, ipaddr) \ + ip6_addr_debug_print_parts(debug, \ + IP6_ADDR_BLOCK1(&(ipaddr)), \ + IP6_ADDR_BLOCK2(&(ipaddr)), \ + IP6_ADDR_BLOCK3(&(ipaddr)), \ + IP6_ADDR_BLOCK4(&(ipaddr)), \ + IP6_ADDR_BLOCK5(&(ipaddr)), \ + IP6_ADDR_BLOCK6(&(ipaddr)), \ + IP6_ADDR_BLOCK7(&(ipaddr)), \ + IP6_ADDR_BLOCK8(&(ipaddr))) + +#define IP6ADDR_STRLEN_MAX 46 + +int ip6addr_aton(const char *cp, ip6_addr_t *addr); +/** returns ptr to static buffer; not reentrant! */ +char *ip6addr_ntoa(const ip6_addr_t *addr); +char *ip6addr_ntoa_r(const ip6_addr_t *addr, char *buf, int buflen); + + + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_IPV6 */ + +#endif /* LWIP_HDR_IP6_ADDR_H */ diff --git a/tools/sdk/lwip2/include/lwip/ip6_frag.h b/tools/sdk/lwip2/include/lwip/ip6_frag.h new file mode 100644 index 000000000..6be274734 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/ip6_frag.h @@ -0,0 +1,120 @@ +/** + * @file + * + * IPv6 fragmentation and reassembly. + */ + +/* + * Copyright (c) 2010 Inico Technologies Ltd. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Ivan Delamer + * + * + * Please coordinate changes and requests with Ivan Delamer + * + */ +#ifndef LWIP_HDR_IP6_FRAG_H +#define LWIP_HDR_IP6_FRAG_H + +#include "lwip/opt.h" +#include "lwip/pbuf.h" +#include "lwip/ip6_addr.h" +#include "lwip/ip6.h" +#include "lwip/netif.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +#if LWIP_IPV6 && LWIP_IPV6_REASS /* don't build if not configured for use in lwipopts.h */ + +/** IP6_FRAG_COPYHEADER==1: for platforms where sizeof(void*) > 4, this needs to + * be enabled (to not overwrite part of the data). When enabled, the IPv6 header + * is copied instead of referencing it, which gives more room for struct ip6_reass_helper */ +#ifndef IPV6_FRAG_COPYHEADER +#define IPV6_FRAG_COPYHEADER 0 +#endif + +/** The IPv6 reassembly timer interval in milliseconds. */ +#define IP6_REASS_TMR_INTERVAL 1000 + +/* Copy the complete header of the first fragment to struct ip6_reassdata + or just point to its original location in the first pbuf? */ +#if IPV6_FRAG_COPYHEADER +#define IPV6_FRAG_HDRPTR +#define IPV6_FRAG_HDRREF(hdr) (&(hdr)) +#else /* IPV6_FRAG_COPYHEADER */ +#define IPV6_FRAG_HDRPTR * +#define IPV6_FRAG_HDRREF(hdr) (hdr) +#endif /* IPV6_FRAG_COPYHEADER */ + +/** IPv6 reassembly helper struct. + * This is exported because memp needs to know the size. + */ +struct ip6_reassdata { + struct ip6_reassdata *next; + struct pbuf *p; + struct ip6_hdr IPV6_FRAG_HDRPTR iphdr; + u32_t identification; + u16_t datagram_len; + u8_t nexth; + u8_t timer; +}; + +#define ip6_reass_init() /* Compatibility define */ +void ip6_reass_tmr(void); +struct pbuf *ip6_reass(struct pbuf *p); + +#endif /* LWIP_IPV6 && LWIP_IPV6_REASS */ + +#if LWIP_IPV6 && LWIP_IPV6_FRAG /* don't build if not configured for use in lwipopts.h */ + +#ifndef LWIP_PBUF_CUSTOM_REF_DEFINED +#define LWIP_PBUF_CUSTOM_REF_DEFINED +/** A custom pbuf that holds a reference to another pbuf, which is freed + * when this custom pbuf is freed. This is used to create a custom PBUF_REF + * that points into the original pbuf. */ +struct pbuf_custom_ref { + /** 'base class' */ + struct pbuf_custom pc; + /** pointer to the original pbuf that is referenced */ + struct pbuf *original; +}; +#endif /* LWIP_PBUF_CUSTOM_REF_DEFINED */ + +err_t ip6_frag(struct pbuf *p, struct netif *netif, const ip6_addr_t *dest); + +#endif /* LWIP_IPV6 && LWIP_IPV6_FRAG */ + + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_IP6_FRAG_H */ diff --git a/tools/sdk/lwip2/include/lwip/ip_addr.h b/tools/sdk/lwip2/include/lwip/ip_addr.h new file mode 100644 index 000000000..11f65d25b --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/ip_addr.h @@ -0,0 +1,407 @@ +/** + * @file + * IP address API (common IPv4 and IPv6) + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_IP_ADDR_H +#define LWIP_HDR_IP_ADDR_H + +#include "lwip/opt.h" +#include "lwip/def.h" + +#include "lwip/ip4_addr.h" +#include "lwip/ip6_addr.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** @ingroup ipaddr + * IP address types for use in ip_addr_t.type member. + * @see tcp_new_ip_type(), udp_new_ip_type(), raw_new_ip_type(). + */ +enum lwip_ip_addr_type { + /** IPv4 */ + IPADDR_TYPE_V4 = 0U, + /** IPv6 */ + IPADDR_TYPE_V6 = 6U, + /** IPv4+IPv6 ("dual-stack") */ + IPADDR_TYPE_ANY = 46U +}; + +#if LWIP_IPV4 && LWIP_IPV6 +/** + * @ingroup ipaddr + * A union struct for both IP version's addresses. + * ATTENTION: watch out for its size when adding IPv6 address scope! + */ +typedef struct ip_addr { + union { + ip6_addr_t ip6; + ip4_addr_t ip4; + } u_addr; + /** @ref lwip_ip_addr_type */ + u8_t type; +} ip_addr_t; + +extern const ip_addr_t ip_addr_any_type; + +/** @ingroup ip4addr */ +#define IPADDR4_INIT(u32val) { { { { u32val, 0ul, 0ul, 0ul } } }, IPADDR_TYPE_V4 } +/** @ingroup ip4addr */ +#define IPADDR4_INIT_BYTES(a,b,c,d) IPADDR4_INIT(PP_HTONL(LWIP_MAKEU32(a,b,c,d))) +/** @ingroup ip6addr */ +#define IPADDR6_INIT(a, b, c, d) { { { { a, b, c, d } } }, IPADDR_TYPE_V6 } +/** @ingroup ip6addr */ +#define IPADDR6_INIT_HOST(a, b, c, d) { { { { PP_HTONL(a), PP_HTONL(b), PP_HTONL(c), PP_HTONL(d) } } }, IPADDR_TYPE_V6 } + +/** @ingroup ipaddr */ +#define IP_IS_ANY_TYPE_VAL(ipaddr) (IP_GET_TYPE(&ipaddr) == IPADDR_TYPE_ANY) +/** @ingroup ipaddr */ +#define IPADDR_ANY_TYPE_INIT { { { { 0ul, 0ul, 0ul, 0ul } } }, IPADDR_TYPE_ANY } + +/** @ingroup ip4addr */ +#define IP_IS_V4_VAL(ipaddr) (IP_GET_TYPE(&ipaddr) == IPADDR_TYPE_V4) +/** @ingroup ip6addr */ +#define IP_IS_V6_VAL(ipaddr) (IP_GET_TYPE(&ipaddr) == IPADDR_TYPE_V6) +/** @ingroup ip4addr */ +#define IP_IS_V4(ipaddr) (((ipaddr) == NULL) || IP_IS_V4_VAL(*(ipaddr))) +/** @ingroup ip6addr */ +#define IP_IS_V6(ipaddr) (((ipaddr) != NULL) && IP_IS_V6_VAL(*(ipaddr))) + +#define IP_SET_TYPE_VAL(ipaddr, iptype) do { (ipaddr).type = (iptype); }while(0) +#define IP_SET_TYPE(ipaddr, iptype) do { if((ipaddr) != NULL) { IP_SET_TYPE_VAL(*(ipaddr), iptype); }}while(0) +#define IP_GET_TYPE(ipaddr) ((ipaddr)->type) + +#define IP_ADDR_PCB_VERSION_MATCH_EXACT(pcb, ipaddr) (IP_GET_TYPE(&pcb->local_ip) == IP_GET_TYPE(ipaddr)) +#define IP_ADDR_PCB_VERSION_MATCH(pcb, ipaddr) (IP_IS_ANY_TYPE_VAL(pcb->local_ip) || IP_ADDR_PCB_VERSION_MATCH_EXACT(pcb, ipaddr)) + +/** @ingroup ip6addr + * Convert generic ip address to specific protocol version + */ +#define ip_2_ip6(ipaddr) (&((ipaddr)->u_addr.ip6)) +/** @ingroup ip4addr + * Convert generic ip address to specific protocol version + */ +#define ip_2_ip4(ipaddr) (&((ipaddr)->u_addr.ip4)) + +/** @ingroup ip4addr */ +#define IP_ADDR4(ipaddr,a,b,c,d) do { IP4_ADDR(ip_2_ip4(ipaddr),a,b,c,d); \ + IP_SET_TYPE_VAL(*(ipaddr), IPADDR_TYPE_V4); } while(0) +/** @ingroup ip6addr */ +#define IP_ADDR6(ipaddr,i0,i1,i2,i3) do { IP6_ADDR(ip_2_ip6(ipaddr),i0,i1,i2,i3); \ + IP_SET_TYPE_VAL(*(ipaddr), IPADDR_TYPE_V6); } while(0) +/** @ingroup ip6addr */ +#define IP_ADDR6_HOST(ipaddr,i0,i1,i2,i3) IP_ADDR6(ipaddr,PP_HTONL(i0),PP_HTONL(i1),PP_HTONL(i2),PP_HTONL(i3)) + +/** @ingroup ipaddr */ +#define ip_addr_copy(dest, src) do{ IP_SET_TYPE_VAL(dest, IP_GET_TYPE(&src)); if(IP_IS_V6_VAL(src)){ \ + ip6_addr_copy(*ip_2_ip6(&(dest)), *ip_2_ip6(&(src))); }else{ \ + ip4_addr_copy(*ip_2_ip4(&(dest)), *ip_2_ip4(&(src))); }}while(0) +/** @ingroup ip6addr */ +#define ip_addr_copy_from_ip6(dest, src) do{ \ + ip6_addr_copy(*ip_2_ip6(&(dest)), src); IP_SET_TYPE_VAL(dest, IPADDR_TYPE_V6); }while(0) +/** @ingroup ip4addr */ +#define ip_addr_copy_from_ip4(dest, src) do{ \ + ip4_addr_copy(*ip_2_ip4(&(dest)), src); IP_SET_TYPE_VAL(dest, IPADDR_TYPE_V4); }while(0) +/** @ingroup ip4addr */ +#define ip_addr_set_ip4_u32(ipaddr, val) do{if(ipaddr){ip4_addr_set_u32(ip_2_ip4(ipaddr), val); \ + IP_SET_TYPE(ipaddr, IPADDR_TYPE_V4); }}while(0) +/** @ingroup ip4addr */ +#define ip_addr_get_ip4_u32(ipaddr) (((ipaddr) && IP_IS_V4(ipaddr)) ? \ + ip4_addr_get_u32(ip_2_ip4(ipaddr)) : 0) +/** @ingroup ipaddr */ +#define ip_addr_set(dest, src) do{ IP_SET_TYPE(dest, IP_GET_TYPE(src)); if(IP_IS_V6(src)){ \ + ip6_addr_set(ip_2_ip6(dest), ip_2_ip6(src)); }else{ \ + ip4_addr_set(ip_2_ip4(dest), ip_2_ip4(src)); }}while(0) +/** @ingroup ipaddr */ +#define ip_addr_set_ipaddr(dest, src) ip_addr_set(dest, src) +/** @ingroup ipaddr */ +#define ip_addr_set_zero(ipaddr) do{ \ + ip6_addr_set_zero(ip_2_ip6(ipaddr)); IP_SET_TYPE(ipaddr, 0); }while(0) +/** @ingroup ip5addr */ +#define ip_addr_set_zero_ip4(ipaddr) do{ \ + ip6_addr_set_zero(ip_2_ip6(ipaddr)); IP_SET_TYPE(ipaddr, IPADDR_TYPE_V4); }while(0) +/** @ingroup ip6addr */ +#define ip_addr_set_zero_ip6(ipaddr) do{ \ + ip6_addr_set_zero(ip_2_ip6(ipaddr)); IP_SET_TYPE(ipaddr, IPADDR_TYPE_V6); }while(0) +/** @ingroup ipaddr */ +#define ip_addr_set_any(is_ipv6, ipaddr) do{if(is_ipv6){ \ + ip6_addr_set_any(ip_2_ip6(ipaddr)); IP_SET_TYPE(ipaddr, IPADDR_TYPE_V6); }else{ \ + ip4_addr_set_any(ip_2_ip4(ipaddr)); IP_SET_TYPE(ipaddr, IPADDR_TYPE_V4); }}while(0) +/** @ingroup ipaddr */ +#define ip_addr_set_loopback(is_ipv6, ipaddr) do{if(is_ipv6){ \ + ip6_addr_set_loopback(ip_2_ip6(ipaddr)); IP_SET_TYPE(ipaddr, IPADDR_TYPE_V6); }else{ \ + ip4_addr_set_loopback(ip_2_ip4(ipaddr)); IP_SET_TYPE(ipaddr, IPADDR_TYPE_V4); }}while(0) +/** @ingroup ipaddr */ +#define ip_addr_set_hton(dest, src) do{if(IP_IS_V6(src)){ \ + ip6_addr_set_hton(ip_2_ip6(ipaddr), (src)); IP_SET_TYPE(dest, IPADDR_TYPE_V6); }else{ \ + ip4_addr_set_hton(ip_2_ip4(ipaddr), (src)); IP_SET_TYPE(dest, IPADDR_TYPE_V4); }}while(0) +/** @ingroup ipaddr */ +#define ip_addr_get_network(target, host, netmask) do{if(IP_IS_V6(host)){ \ + ip4_addr_set_zero(ip_2_ip4(target)); IP_SET_TYPE(target, IPADDR_TYPE_V6); } else { \ + ip4_addr_get_network(ip_2_ip4(target), ip_2_ip4(host), ip_2_ip4(netmask)); IP_SET_TYPE(target, IPADDR_TYPE_V4); }}while(0) +/** @ingroup ipaddr */ +#define ip_addr_netcmp(addr1, addr2, mask) ((IP_IS_V6(addr1) && IP_IS_V6(addr2)) ? \ + 0 : \ + ip4_addr_netcmp(ip_2_ip4(addr1), ip_2_ip4(addr2), mask)) +/** @ingroup ipaddr */ +#define ip_addr_cmp(addr1, addr2) ((IP_GET_TYPE(addr1) != IP_GET_TYPE(addr2)) ? 0 : (IP_IS_V6_VAL(*(addr1)) ? \ + ip6_addr_cmp(ip_2_ip6(addr1), ip_2_ip6(addr2)) : \ + ip4_addr_cmp(ip_2_ip4(addr1), ip_2_ip4(addr2)))) +/** @ingroup ipaddr */ +#define ip_addr_isany(ipaddr) ((IP_IS_V6(ipaddr)) ? \ + ip6_addr_isany(ip_2_ip6(ipaddr)) : \ + ip4_addr_isany(ip_2_ip4(ipaddr))) +/** @ingroup ipaddr */ +#define ip_addr_isany_val(ipaddr) ((IP_IS_V6_VAL(ipaddr)) ? \ + ip6_addr_isany_val(*ip_2_ip6(&(ipaddr))) : \ + ip4_addr_isany_val(*ip_2_ip4(&(ipaddr)))) +/** @ingroup ipaddr */ +#define ip_addr_isbroadcast(ipaddr, netif) ((IP_IS_V6(ipaddr)) ? \ + 0 : \ + ip4_addr_isbroadcast(ip_2_ip4(ipaddr), netif)) +/** @ingroup ipaddr */ +#define ip_addr_ismulticast(ipaddr) ((IP_IS_V6(ipaddr)) ? \ + ip6_addr_ismulticast(ip_2_ip6(ipaddr)) : \ + ip4_addr_ismulticast(ip_2_ip4(ipaddr))) +/** @ingroup ipaddr */ +#define ip_addr_isloopback(ipaddr) ((IP_IS_V6(ipaddr)) ? \ + ip6_addr_isloopback(ip_2_ip6(ipaddr)) : \ + ip4_addr_isloopback(ip_2_ip4(ipaddr))) +/** @ingroup ipaddr */ +#define ip_addr_islinklocal(ipaddr) ((IP_IS_V6(ipaddr)) ? \ + ip6_addr_islinklocal(ip_2_ip6(ipaddr)) : \ + ip4_addr_islinklocal(ip_2_ip4(ipaddr))) +#define ip_addr_debug_print(debug, ipaddr) do { if(IP_IS_V6(ipaddr)) { \ + ip6_addr_debug_print(debug, ip_2_ip6(ipaddr)); } else { \ + ip4_addr_debug_print(debug, ip_2_ip4(ipaddr)); }}while(0) +#define ip_addr_debug_print_val(debug, ipaddr) do { if(IP_IS_V6_VAL(ipaddr)) { \ + ip6_addr_debug_print_val(debug, *ip_2_ip6(&(ipaddr))); } else { \ + ip4_addr_debug_print_val(debug, *ip_2_ip4(&(ipaddr))); }}while(0) +/** @ingroup ipaddr */ +#define ipaddr_ntoa(addr) (((addr) == NULL) ? "NULL" : \ + ((IP_IS_V6(addr)) ? ip6addr_ntoa(ip_2_ip6(addr)) : ip4addr_ntoa(ip_2_ip4(addr)))) +/** @ingroup ipaddr */ +#define ipaddr_ntoa_r(addr, buf, buflen) (((addr) == NULL) ? "NULL" : \ + ((IP_IS_V6(addr)) ? ip6addr_ntoa_r(ip_2_ip6(addr), buf, buflen) : ip4addr_ntoa_r(ip_2_ip4(addr), buf, buflen))) +int ipaddr_aton(const char *cp, ip_addr_t *addr); + +/** @ingroup ipaddr */ +#define IPADDR_STRLEN_MAX IP6ADDR_STRLEN_MAX + +/** @ingroup ipaddr */ +#define ip4_2_ipv4_mapped_ipv6(ip6addr, ip4addr) do { \ + (ip6addr)->addr[3] = (ip4addr)->addr; \ + (ip6addr)->addr[2] = PP_HTONL(0x0000FFFFUL); \ + (ip6addr)->addr[1] = 0; \ + (ip6addr)->addr[0] = 0; } while(0); + +/** @ingroup ipaddr */ +#define unmap_ipv4_mapped_ipv6(ip4addr, ip6addr) \ + (ip4addr)->addr = (ip6addr)->addr[3]; + +#define IP46_ADDR_ANY(type) (((type) == IPADDR_TYPE_V6)? IP6_ADDR_ANY : IP4_ADDR_ANY) + +#else /* LWIP_IPV4 && LWIP_IPV6 */ + +#define IP_ADDR_PCB_VERSION_MATCH(addr, pcb) 1 +#define IP_ADDR_PCB_VERSION_MATCH_EXACT(pcb, ipaddr) 1 + +#if LWIP_IPV4 + +typedef ip4_addr_t ip_addr_t; +#define IPADDR4_INIT(u32val) { u32val } +#define IPADDR4_INIT_BYTES(a,b,c,d) IPADDR4_INIT(PP_HTONL(LWIP_MAKEU32(a,b,c,d))) +#define IP_IS_V4_VAL(ipaddr) 1 +#define IP_IS_V6_VAL(ipaddr) 0 +#define IP_IS_V4(ipaddr) 1 +#define IP_IS_V6(ipaddr) 0 +#define IP_IS_ANY_TYPE_VAL(ipaddr) 0 +#define IP_SET_TYPE_VAL(ipaddr, iptype) +#define IP_SET_TYPE(ipaddr, iptype) +#define IP_GET_TYPE(ipaddr) IPADDR_TYPE_V4 +#define ip_2_ip4(ipaddr) (ipaddr) +#define IP_ADDR4(ipaddr,a,b,c,d) IP4_ADDR(ipaddr,a,b,c,d) + +#define ip_addr_copy(dest, src) ip4_addr_copy(dest, src) +#define ip_addr_copy_from_ip4(dest, src) ip4_addr_copy(dest, src) +#define ip_addr_set_ip4_u32(ipaddr, val) ip4_addr_set_u32(ip_2_ip4(ipaddr), val) +#define ip_addr_get_ip4_u32(ipaddr) ip4_addr_get_u32(ip_2_ip4(ipaddr)) +#define ip_addr_set(dest, src) ip4_addr_set(dest, src) +#define ip_addr_set_ipaddr(dest, src) ip4_addr_set(dest, src) +#define ip_addr_set_zero(ipaddr) ip4_addr_set_zero(ipaddr) +#define ip_addr_set_zero_ip4(ipaddr) ip4_addr_set_zero(ipaddr) +#define ip_addr_set_any(is_ipv6, ipaddr) ip4_addr_set_any(ipaddr) +#define ip_addr_set_loopback(is_ipv6, ipaddr) ip4_addr_set_loopback(ipaddr) +#define ip_addr_set_hton(dest, src) ip4_addr_set_hton(dest, src) +#define ip_addr_get_network(target, host, mask) ip4_addr_get_network(target, host, mask) +#define ip_addr_netcmp(addr1, addr2, mask) ip4_addr_netcmp(addr1, addr2, mask) +#define ip_addr_cmp(addr1, addr2) ip4_addr_cmp(addr1, addr2) +#define ip_addr_isany(ipaddr) ip4_addr_isany(ipaddr) +#define ip_addr_isany_val(ipaddr) ip4_addr_isany_val(ipaddr) +#define ip_addr_isloopback(ipaddr) ip4_addr_isloopback(ipaddr) +#define ip_addr_islinklocal(ipaddr) ip4_addr_islinklocal(ipaddr) +#define ip_addr_isbroadcast(addr, netif) ip4_addr_isbroadcast(addr, netif) +#define ip_addr_ismulticast(ipaddr) ip4_addr_ismulticast(ipaddr) +#define ip_addr_debug_print(debug, ipaddr) ip4_addr_debug_print(debug, ipaddr) +#define ip_addr_debug_print_val(debug, ipaddr) ip4_addr_debug_print_val(debug, ipaddr) +#define ipaddr_ntoa(ipaddr) ip4addr_ntoa(ipaddr) +#define ipaddr_ntoa_r(ipaddr, buf, buflen) ip4addr_ntoa_r(ipaddr, buf, buflen) +#define ipaddr_aton(cp, addr) ip4addr_aton(cp, addr) + +#define IPADDR_STRLEN_MAX IP4ADDR_STRLEN_MAX + +#define IP46_ADDR_ANY(type) (IP4_ADDR_ANY) + +#else /* LWIP_IPV4 */ + +typedef ip6_addr_t ip_addr_t; +#define IPADDR6_INIT(a, b, c, d) { { a, b, c, d } } +#define IPADDR6_INIT_HOST(a, b, c, d) { { PP_HTONL(a), PP_HTONL(b), PP_HTONL(c), PP_HTONL(d) } } +#define IP_IS_V4_VAL(ipaddr) 0 +#define IP_IS_V6_VAL(ipaddr) 1 +#define IP_IS_V4(ipaddr) 0 +#define IP_IS_V6(ipaddr) 1 +#define IP_IS_ANY_TYPE_VAL(ipaddr) 0 +#define IP_SET_TYPE_VAL(ipaddr, iptype) +#define IP_SET_TYPE(ipaddr, iptype) +#define IP_GET_TYPE(ipaddr) IPADDR_TYPE_V6 +#define ip_2_ip6(ipaddr) (ipaddr) +#define IP_ADDR6(ipaddr,i0,i1,i2,i3) IP6_ADDR(ipaddr,i0,i1,i2,i3) +#define IP_ADDR6_HOST(ipaddr,i0,i1,i2,i3) IP_ADDR6(ipaddr,PP_HTONL(i0),PP_HTONL(i1),PP_HTONL(i2),PP_HTONL(i3)) + +#define ip_addr_copy(dest, src) ip6_addr_copy(dest, src) +#define ip_addr_copy_from_ip6(dest, src) ip6_addr_copy(dest, src) +#define ip_addr_set(dest, src) ip6_addr_set(dest, src) +#define ip_addr_set_ipaddr(dest, src) ip6_addr_set(dest, src) +#define ip_addr_set_zero(ipaddr) ip6_addr_set_zero(ipaddr) +#define ip_addr_set_zero_ip6(ipaddr) ip6_addr_set_zero(ipaddr) +#define ip_addr_set_any(is_ipv6, ipaddr) ip6_addr_set_any(ipaddr) +#define ip_addr_set_loopback(is_ipv6, ipaddr) ip6_addr_set_loopback(ipaddr) +#define ip_addr_set_hton(dest, src) ip6_addr_set_hton(dest, src) +#define ip_addr_get_network(target, host, mask) ip6_addr_set_zero(target) +#define ip_addr_netcmp(addr1, addr2, mask) 0 +#define ip_addr_cmp(addr1, addr2) ip6_addr_cmp(addr1, addr2) +#define ip_addr_isany(ipaddr) ip6_addr_isany(ipaddr) +#define ip_addr_isany_val(ipaddr) ip6_addr_isany_val(ipaddr) +#define ip_addr_isloopback(ipaddr) ip6_addr_isloopback(ipaddr) +#define ip_addr_islinklocal(ipaddr) ip6_addr_islinklocal(ipaddr) +#define ip_addr_isbroadcast(addr, netif) 0 +#define ip_addr_ismulticast(ipaddr) ip6_addr_ismulticast(ipaddr) +#define ip_addr_debug_print(debug, ipaddr) ip6_addr_debug_print(debug, ipaddr) +#define ip_addr_debug_print_val(debug, ipaddr) ip6_addr_debug_print_val(debug, ipaddr) +#define ipaddr_ntoa(ipaddr) ip6addr_ntoa(ipaddr) +#define ipaddr_ntoa_r(ipaddr, buf, buflen) ip6addr_ntoa_r(ipaddr, buf, buflen) +#define ipaddr_aton(cp, addr) ip6addr_aton(cp, addr) + +#define IPADDR_STRLEN_MAX IP6ADDR_STRLEN_MAX + +#define IP46_ADDR_ANY(type) (IP6_ADDR_ANY) + +#endif /* LWIP_IPV4 */ +#endif /* LWIP_IPV4 && LWIP_IPV6 */ + +#if LWIP_IPV4 + +extern const ip_addr_t ip_addr_any; +extern const ip_addr_t ip_addr_broadcast; + +/** + * @ingroup ip4addr + * Can be used as a fixed/const ip_addr_t + * for the IP wildcard. + * Defined to @ref IP4_ADDR_ANY when IPv4 is enabled. + * Defined to @ref IP6_ADDR_ANY in IPv6 only systems. + * Use this if you can handle IPv4 _AND_ IPv6 addresses. + * Use @ref IP4_ADDR_ANY or @ref IP6_ADDR_ANY when the IP + * type matters. + */ +#define IP_ADDR_ANY IP4_ADDR_ANY +/** + * @ingroup ip4addr + * Can be used as a fixed/const ip_addr_t + * for the IPv4 wildcard and the broadcast address + */ +#define IP4_ADDR_ANY (&ip_addr_any) +/** + * @ingroup ip4addr + * Can be used as a fixed/const ip4_addr_t + * for the wildcard and the broadcast address + */ +#define IP4_ADDR_ANY4 (ip_2_ip4(&ip_addr_any)) + +/** @ingroup ip4addr */ +#define IP_ADDR_BROADCAST (&ip_addr_broadcast) +/** @ingroup ip4addr */ +#define IP4_ADDR_BROADCAST (ip_2_ip4(&ip_addr_broadcast)) + +#endif /* LWIP_IPV4*/ + +#if LWIP_IPV6 + +extern const ip_addr_t ip6_addr_any; + +/** + * @ingroup ip6addr + * IP6_ADDR_ANY can be used as a fixed ip_addr_t + * for the IPv6 wildcard address + */ +#define IP6_ADDR_ANY (&ip6_addr_any) +/** + * @ingroup ip6addr + * IP6_ADDR_ANY6 can be used as a fixed ip6_addr_t + * for the IPv6 wildcard address + */ +#define IP6_ADDR_ANY6 (ip_2_ip6(&ip6_addr_any)) + +#if !LWIP_IPV4 +/** IPv6-only configurations */ +#define IP_ADDR_ANY IP6_ADDR_ANY +#endif /* !LWIP_IPV4 */ + +#endif + +#if LWIP_IPV4 && LWIP_IPV6 +/** @ingroup ipaddr */ +#define IP_ANY_TYPE (&ip_addr_any_type) +#else +#define IP_ANY_TYPE IP_ADDR_ANY +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_IP_ADDR_H */ diff --git a/tools/sdk/lwip2/include/lwip/mem.h b/tools/sdk/lwip2/include/lwip/mem.h new file mode 100644 index 000000000..ff208d25c --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/mem.h @@ -0,0 +1,82 @@ +/** + * @file + * Heap API + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_MEM_H +#define LWIP_HDR_MEM_H + +#include "lwip/opt.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if MEM_LIBC_MALLOC + +#include "lwip/arch.h" + +typedef size_t mem_size_t; +#define MEM_SIZE_F SZT_F + +#elif MEM_USE_POOLS + +typedef u16_t mem_size_t; +#define MEM_SIZE_F U16_F + +#else + +/* MEM_SIZE would have to be aligned, but using 64000 here instead of + * 65535 leaves some room for alignment... + */ +#if MEM_SIZE > 64000L +typedef u32_t mem_size_t; +#define MEM_SIZE_F U32_F +#else +typedef u16_t mem_size_t; +#define MEM_SIZE_F U16_F +#endif /* MEM_SIZE > 64000 */ +#endif + +void mem_init(void); +void *mem_trim(void *mem, mem_size_t size); +void *mem_malloc(mem_size_t size); +void *mem_calloc(mem_size_t count, mem_size_t size); +void mem_free(void *mem); + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_MEM_H */ diff --git a/tools/sdk/lwip2/include/lwip/memp.h b/tools/sdk/lwip2/include/lwip/memp.h new file mode 100644 index 000000000..562cd05bf --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/memp.h @@ -0,0 +1,155 @@ +/** + * @file + * Memory pool API + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ + +#ifndef LWIP_HDR_MEMP_H +#define LWIP_HDR_MEMP_H + +#include "lwip/opt.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* run once with empty definition to handle all custom includes in lwippools.h */ +#define LWIP_MEMPOOL(name,num,size,desc) +#include "lwip/priv/memp_std.h" + +/** Create the list of all memory pools managed by memp. MEMP_MAX represents a NULL pool at the end */ +typedef enum { +#define LWIP_MEMPOOL(name,num,size,desc) MEMP_##name, +#include "lwip/priv/memp_std.h" + MEMP_MAX +} memp_t; + +#include "lwip/priv/memp_priv.h" +#include "lwip/stats.h" + +extern const struct memp_desc* const memp_pools[MEMP_MAX]; + +/** + * @ingroup mempool + * Declare prototype for private memory pool if it is used in multiple files + */ +#define LWIP_MEMPOOL_PROTOTYPE(name) extern const struct memp_desc memp_ ## name + +#if MEMP_MEM_MALLOC + +#define LWIP_MEMPOOL_DECLARE(name,num,size,desc) \ + LWIP_MEMPOOL_DECLARE_STATS_INSTANCE(memp_stats_ ## name) \ + const struct memp_desc memp_ ## name = { \ + DECLARE_LWIP_MEMPOOL_DESC(desc) \ + LWIP_MEMPOOL_DECLARE_STATS_REFERENCE(memp_stats_ ## name) \ + LWIP_MEM_ALIGN_SIZE(size) \ + }; + +#else /* MEMP_MEM_MALLOC */ + +/** + * @ingroup mempool + * Declare a private memory pool + * Private mempools example: + * .h: only when pool is used in multiple .c files: LWIP_MEMPOOL_PROTOTYPE(my_private_pool); + * .c: + * - in global variables section: LWIP_MEMPOOL_DECLARE(my_private_pool, 10, sizeof(foo), "Some description") + * - call ONCE before using pool (e.g. in some init() function): LWIP_MEMPOOL_INIT(my_private_pool); + * - allocate: void* my_new_mem = LWIP_MEMPOOL_ALLOC(my_private_pool); + * - free: LWIP_MEMPOOL_FREE(my_private_pool, my_new_mem); + * + * To relocate a pool, declare it as extern in cc.h. Example for GCC: + * extern u8_t __attribute__((section(".onchip_mem"))) memp_memory_my_private_pool[]; + */ +#define LWIP_MEMPOOL_DECLARE(name,num,size,desc) \ + LWIP_DECLARE_MEMORY_ALIGNED(memp_memory_ ## name ## _base, ((num) * (MEMP_SIZE + MEMP_ALIGN_SIZE(size)))); \ + \ + LWIP_MEMPOOL_DECLARE_STATS_INSTANCE(memp_stats_ ## name) \ + \ + static struct memp *memp_tab_ ## name; \ + \ + const struct memp_desc memp_ ## name = { \ + DECLARE_LWIP_MEMPOOL_DESC(desc) \ + LWIP_MEMPOOL_DECLARE_STATS_REFERENCE(memp_stats_ ## name) \ + LWIP_MEM_ALIGN_SIZE(size), \ + (num), \ + memp_memory_ ## name ## _base, \ + &memp_tab_ ## name \ + }; + +#endif /* MEMP_MEM_MALLOC */ + +/** + * @ingroup mempool + * Initialize a private memory pool + */ +#define LWIP_MEMPOOL_INIT(name) memp_init_pool(&memp_ ## name) +/** + * @ingroup mempool + * Allocate from a private memory pool + */ +#define LWIP_MEMPOOL_ALLOC(name) memp_malloc_pool(&memp_ ## name) +/** + * @ingroup mempool + * Free element from a private memory pool + */ +#define LWIP_MEMPOOL_FREE(name, x) memp_free_pool(&memp_ ## name, (x)) + +#if MEM_USE_POOLS +/** This structure is used to save the pool one element came from. + * This has to be defined here as it is required for pool size calculation. */ +struct memp_malloc_helper +{ + memp_t poolnr; +#if MEMP_OVERFLOW_CHECK || (LWIP_STATS && MEM_STATS) + u16_t size; +#endif /* MEMP_OVERFLOW_CHECK || (LWIP_STATS && MEM_STATS) */ +}; +#endif /* MEM_USE_POOLS */ + +void memp_init(void); + +#if MEMP_OVERFLOW_CHECK +void *memp_malloc_fn(memp_t type, const char* file, const int line); +#define memp_malloc(t) memp_malloc_fn((t), __FILE__, __LINE__) +#else +void *memp_malloc(memp_t type); +#endif +void memp_free(memp_t type, void *mem); + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_MEMP_H */ diff --git a/tools/sdk/lwip2/include/lwip/mld6.h b/tools/sdk/lwip2/include/lwip/mld6.h new file mode 100644 index 000000000..7fa0797f2 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/mld6.h @@ -0,0 +1,99 @@ +/** + * @file + * + * Multicast listener discovery for IPv6. Aims to be compliant with RFC 2710. + * No support for MLDv2. + */ + +/* + * Copyright (c) 2010 Inico Technologies Ltd. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Ivan Delamer + * + * + * Please coordinate changes and requests with Ivan Delamer + * + */ + +#ifndef LWIP_HDR_MLD6_H +#define LWIP_HDR_MLD6_H + +#include "lwip/opt.h" + +#if LWIP_IPV6_MLD && LWIP_IPV6 /* don't build if not configured for use in lwipopts.h */ + +#include "lwip/pbuf.h" +#include "lwip/netif.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** MLD group */ +struct mld_group { + /** next link */ + struct mld_group *next; + /** multicast address */ + ip6_addr_t group_address; + /** signifies we were the last person to report */ + u8_t last_reporter_flag; + /** current state of the group */ + u8_t group_state; + /** timer for reporting */ + u16_t timer; + /** counter of simultaneous uses */ + u8_t use; +}; + +#define MLD6_TMR_INTERVAL 100 /* Milliseconds */ + +err_t mld6_stop(struct netif *netif); +void mld6_report_groups(struct netif *netif); +void mld6_tmr(void); +struct mld_group *mld6_lookfor_group(struct netif *ifp, const ip6_addr_t *addr); +void mld6_input(struct pbuf *p, struct netif *inp); +err_t mld6_joingroup(const ip6_addr_t *srcaddr, const ip6_addr_t *groupaddr); +err_t mld6_joingroup_netif(struct netif *netif, const ip6_addr_t *groupaddr); +err_t mld6_leavegroup(const ip6_addr_t *srcaddr, const ip6_addr_t *groupaddr); +err_t mld6_leavegroup_netif(struct netif *netif, const ip6_addr_t *groupaddr); + +/** @ingroup mld6 + * Get list head of MLD6 groups for netif. + * Note: The allnodes group IP is NOT in the list, since it must always + * be received for correct IPv6 operation. + * @see @ref netif_set_mld_mac_filter() + */ +#define netif_mld6_data(netif) ((struct mld_group *)netif_get_client_data(netif, LWIP_NETIF_CLIENT_DATA_INDEX_MLD6)) + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_IPV6_MLD && LWIP_IPV6 */ + +#endif /* LWIP_HDR_MLD6_H */ diff --git a/tools/sdk/lwip2/include/lwip/nd6.h b/tools/sdk/lwip2/include/lwip/nd6.h new file mode 100644 index 000000000..8204fa4cc --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/nd6.h @@ -0,0 +1,84 @@ +/** + * @file + * + * Neighbor discovery and stateless address autoconfiguration for IPv6. + * Aims to be compliant with RFC 4861 (Neighbor discovery) and RFC 4862 + * (Address autoconfiguration). + */ + +/* + * Copyright (c) 2010 Inico Technologies Ltd. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Ivan Delamer + * + * + * Please coordinate changes and requests with Ivan Delamer + * + */ + +#ifndef LWIP_HDR_ND6_H +#define LWIP_HDR_ND6_H + +#include "lwip/opt.h" + +#if LWIP_IPV6 /* don't build if not configured for use in lwipopts.h */ + +#include "lwip/ip6_addr.h" +#include "lwip/err.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** 1 second period */ +#define ND6_TMR_INTERVAL 1000 + +struct pbuf; +struct netif; + +void nd6_tmr(void); +void nd6_input(struct pbuf *p, struct netif *inp); +void nd6_clear_destination_cache(void); +struct netif *nd6_find_route(const ip6_addr_t *ip6addr); +err_t nd6_get_next_hop_addr_or_queue(struct netif *netif, struct pbuf *q, const ip6_addr_t *ip6addr, const u8_t **hwaddrp); +u16_t nd6_get_destination_mtu(const ip6_addr_t *ip6addr, struct netif *netif); +#if LWIP_ND6_TCP_REACHABILITY_HINTS +void nd6_reachability_hint(const ip6_addr_t *ip6addr); +#endif /* LWIP_ND6_TCP_REACHABILITY_HINTS */ +void nd6_cleanup_netif(struct netif *netif); +#if LWIP_IPV6_MLD +void nd6_adjust_mld_membership(struct netif *netif, s8_t addr_idx, u8_t new_state); +#endif /* LWIP_IPV6_MLD */ + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_IPV6 */ + +#endif /* LWIP_HDR_ND6_H */ diff --git a/tools/sdk/lwip2/include/lwip/netbuf.h b/tools/sdk/lwip2/include/lwip/netbuf.h new file mode 100644 index 000000000..e6865f80f --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/netbuf.h @@ -0,0 +1,118 @@ +/** + * @file + * netbuf API (for netconn API) + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_NETBUF_H +#define LWIP_HDR_NETBUF_H + +#include "lwip/opt.h" + +#if LWIP_NETCONN || LWIP_SOCKET /* don't build if not configured for use in lwipopts.h */ +/* Note: Netconn API is always available when sockets are enabled - + * sockets are implemented on top of them */ + +#include "lwip/pbuf.h" +#include "lwip/ip_addr.h" +#include "lwip/ip6_addr.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** This netbuf has dest-addr/port set */ +#define NETBUF_FLAG_DESTADDR 0x01 +/** This netbuf includes a checksum */ +#define NETBUF_FLAG_CHKSUM 0x02 + +/** "Network buffer" - contains data and addressing info */ +struct netbuf { + struct pbuf *p, *ptr; + ip_addr_t addr; + u16_t port; +#if LWIP_NETBUF_RECVINFO || LWIP_CHECKSUM_ON_COPY +#if LWIP_CHECKSUM_ON_COPY + u8_t flags; +#endif /* LWIP_CHECKSUM_ON_COPY */ + u16_t toport_chksum; +#if LWIP_NETBUF_RECVINFO + ip_addr_t toaddr; +#endif /* LWIP_NETBUF_RECVINFO */ +#endif /* LWIP_NETBUF_RECVINFO || LWIP_CHECKSUM_ON_COPY */ +}; + +/* Network buffer functions: */ +struct netbuf * netbuf_new (void); +void netbuf_delete (struct netbuf *buf); +void * netbuf_alloc (struct netbuf *buf, u16_t size); +void netbuf_free (struct netbuf *buf); +err_t netbuf_ref (struct netbuf *buf, + const void *dataptr, u16_t size); +void netbuf_chain (struct netbuf *head, struct netbuf *tail); + +err_t netbuf_data (struct netbuf *buf, + void **dataptr, u16_t *len); +s8_t netbuf_next (struct netbuf *buf); +void netbuf_first (struct netbuf *buf); + + +#define netbuf_copy_partial(buf, dataptr, len, offset) \ + pbuf_copy_partial((buf)->p, (dataptr), (len), (offset)) +#define netbuf_copy(buf,dataptr,len) netbuf_copy_partial(buf, dataptr, len, 0) +#define netbuf_take(buf, dataptr, len) pbuf_take((buf)->p, dataptr, len) +#define netbuf_len(buf) ((buf)->p->tot_len) +#define netbuf_fromaddr(buf) (&((buf)->addr)) +#define netbuf_set_fromaddr(buf, fromaddr) ip_addr_set(&((buf)->addr), fromaddr) +#define netbuf_fromport(buf) ((buf)->port) +#if LWIP_NETBUF_RECVINFO +#define netbuf_destaddr(buf) (&((buf)->toaddr)) +#define netbuf_set_destaddr(buf, destaddr) ip_addr_set(&((buf)->toaddr), destaddr) +#if LWIP_CHECKSUM_ON_COPY +#define netbuf_destport(buf) (((buf)->flags & NETBUF_FLAG_DESTADDR) ? (buf)->toport_chksum : 0) +#else /* LWIP_CHECKSUM_ON_COPY */ +#define netbuf_destport(buf) ((buf)->toport_chksum) +#endif /* LWIP_CHECKSUM_ON_COPY */ +#endif /* LWIP_NETBUF_RECVINFO */ +#if LWIP_CHECKSUM_ON_COPY +#define netbuf_set_chksum(buf, chksum) do { (buf)->flags = NETBUF_FLAG_CHKSUM; \ + (buf)->toport_chksum = chksum; } while(0) +#endif /* LWIP_CHECKSUM_ON_COPY */ + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_NETCONN || LWIP_SOCKET */ + +#endif /* LWIP_HDR_NETBUF_H */ diff --git a/tools/sdk/lwip2/include/lwip/netdb.h b/tools/sdk/lwip2/include/lwip/netdb.h new file mode 100644 index 000000000..d3d15dfac --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/netdb.h @@ -0,0 +1,150 @@ +/** + * @file + * NETDB API (sockets) + */ + +/* + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Simon Goldschmidt + * + */ +#ifndef LWIP_HDR_NETDB_H +#define LWIP_HDR_NETDB_H + +#include "lwip/opt.h" + +#if LWIP_DNS && LWIP_SOCKET + +#include "lwip/arch.h" +#include "lwip/inet.h" +#include "lwip/sockets.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* some rarely used options */ +#ifndef LWIP_DNS_API_DECLARE_H_ERRNO +#define LWIP_DNS_API_DECLARE_H_ERRNO 1 +#endif + +#ifndef LWIP_DNS_API_DEFINE_ERRORS +#define LWIP_DNS_API_DEFINE_ERRORS 1 +#endif + +#ifndef LWIP_DNS_API_DEFINE_FLAGS +#define LWIP_DNS_API_DEFINE_FLAGS 1 +#endif + +#ifndef LWIP_DNS_API_DECLARE_STRUCTS +#define LWIP_DNS_API_DECLARE_STRUCTS 1 +#endif + +#if LWIP_DNS_API_DEFINE_ERRORS +/** Errors used by the DNS API functions, h_errno can be one of them */ +#define EAI_NONAME 200 +#define EAI_SERVICE 201 +#define EAI_FAIL 202 +#define EAI_MEMORY 203 +#define EAI_FAMILY 204 + +#define HOST_NOT_FOUND 210 +#define NO_DATA 211 +#define NO_RECOVERY 212 +#define TRY_AGAIN 213 +#endif /* LWIP_DNS_API_DEFINE_ERRORS */ + +#if LWIP_DNS_API_DEFINE_FLAGS +/* input flags for struct addrinfo */ +#define AI_PASSIVE 0x01 +#define AI_CANONNAME 0x02 +#define AI_NUMERICHOST 0x04 +#define AI_NUMERICSERV 0x08 +#define AI_V4MAPPED 0x10 +#define AI_ALL 0x20 +#define AI_ADDRCONFIG 0x40 +#endif /* LWIP_DNS_API_DEFINE_FLAGS */ + +#if LWIP_DNS_API_DECLARE_STRUCTS +struct hostent { + char *h_name; /* Official name of the host. */ + char **h_aliases; /* A pointer to an array of pointers to alternative host names, + terminated by a null pointer. */ + int h_addrtype; /* Address type. */ + int h_length; /* The length, in bytes, of the address. */ + char **h_addr_list; /* A pointer to an array of pointers to network addresses (in + network byte order) for the host, terminated by a null pointer. */ +#define h_addr h_addr_list[0] /* for backward compatibility */ +}; + +struct addrinfo { + int ai_flags; /* Input flags. */ + int ai_family; /* Address family of socket. */ + int ai_socktype; /* Socket type. */ + int ai_protocol; /* Protocol of socket. */ + socklen_t ai_addrlen; /* Length of socket address. */ + struct sockaddr *ai_addr; /* Socket address of socket. */ + char *ai_canonname; /* Canonical name of service location. */ + struct addrinfo *ai_next; /* Pointer to next in list. */ +}; +#endif /* LWIP_DNS_API_DECLARE_STRUCTS */ + +#define NETDB_ELEM_SIZE (sizeof(struct addrinfo) + sizeof(struct sockaddr_storage) + DNS_MAX_NAME_LENGTH + 1) + +#if LWIP_DNS_API_DECLARE_H_ERRNO +/* application accessible error code set by the DNS API functions */ +extern int h_errno; +#endif /* LWIP_DNS_API_DECLARE_H_ERRNO*/ + +struct hostent *lwip_gethostbyname(const char *name); +int lwip_gethostbyname_r(const char *name, struct hostent *ret, char *buf, + size_t buflen, struct hostent **result, int *h_errnop); +void lwip_freeaddrinfo(struct addrinfo *ai); +int lwip_getaddrinfo(const char *nodename, + const char *servname, + const struct addrinfo *hints, + struct addrinfo **res); + +#if LWIP_COMPAT_SOCKETS +/** @ingroup netdbapi */ +#define gethostbyname(name) lwip_gethostbyname(name) +/** @ingroup netdbapi */ +#define gethostbyname_r(name, ret, buf, buflen, result, h_errnop) \ + lwip_gethostbyname_r(name, ret, buf, buflen, result, h_errnop) +/** @ingroup netdbapi */ +#define freeaddrinfo(addrinfo) lwip_freeaddrinfo(addrinfo) +/** @ingroup netdbapi */ +#define getaddrinfo(nodname, servname, hints, res) \ + lwip_getaddrinfo(nodname, servname, hints, res) +#endif /* LWIP_COMPAT_SOCKETS */ + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_DNS && LWIP_SOCKET */ + +#endif /* LWIP_HDR_NETDB_H */ diff --git a/tools/sdk/lwip2/include/lwip/netif.h b/tools/sdk/lwip2/include/lwip/netif.h new file mode 100644 index 000000000..67a2d24de --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/netif.h @@ -0,0 +1,474 @@ +/** + * @file + * netif API (to be used from TCPIP thread) + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_NETIF_H +#define LWIP_HDR_NETIF_H + +#include "lwip/opt.h" + +#define ENABLE_LOOPBACK (LWIP_NETIF_LOOPBACK || LWIP_HAVE_LOOPIF) + +#include "lwip/err.h" + +#include "lwip/ip_addr.h" + +#include "lwip/def.h" +#include "lwip/pbuf.h" +#include "lwip/stats.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Throughout this file, IP addresses are expected to be in + * the same byte order as in IP_PCB. */ + +/** Must be the maximum of all used hardware address lengths + across all types of interfaces in use. + This does not have to be changed, normally. */ +#ifndef NETIF_MAX_HWADDR_LEN +#define NETIF_MAX_HWADDR_LEN 6U +#endif + +/** + * @defgroup netif_flags Flags + * @ingroup netif + * @{ + */ + +/** Whether the network interface is 'up'. This is + * a software flag used to control whether this network + * interface is enabled and processes traffic. + * It must be set by the startup code before this netif can be used + * (also for dhcp/autoip). + */ +#define NETIF_FLAG_UP 0x01U +/** If set, the netif has broadcast capability. + * Set by the netif driver in its init function. */ +#define NETIF_FLAG_BROADCAST 0x02U +/** If set, the interface has an active link + * (set by the network interface driver). + * Either set by the netif driver in its init function (if the link + * is up at that time) or at a later point once the link comes up + * (if link detection is supported by the hardware). */ +#define NETIF_FLAG_LINK_UP 0x04U +/** If set, the netif is an ethernet device using ARP. + * Set by the netif driver in its init function. + * Used to check input packet types and use of DHCP. */ +#define NETIF_FLAG_ETHARP 0x08U +/** If set, the netif is an ethernet device. It might not use + * ARP or TCP/IP if it is used for PPPoE only. + */ +#define NETIF_FLAG_ETHERNET 0x10U +/** If set, the netif has IGMP capability. + * Set by the netif driver in its init function. */ +#define NETIF_FLAG_IGMP 0x20U +/** If set, the netif has MLD6 capability. + * Set by the netif driver in its init function. */ +#define NETIF_FLAG_MLD6 0x40U + +/** + * @} + */ + +enum lwip_internal_netif_client_data_index +{ +#if LWIP_DHCP + LWIP_NETIF_CLIENT_DATA_INDEX_DHCP, +#endif +#if LWIP_AUTOIP + LWIP_NETIF_CLIENT_DATA_INDEX_AUTOIP, +#endif +#if LWIP_IGMP + LWIP_NETIF_CLIENT_DATA_INDEX_IGMP, +#endif +#if LWIP_IPV6_MLD + LWIP_NETIF_CLIENT_DATA_INDEX_MLD6, +#endif + LWIP_NETIF_CLIENT_DATA_INDEX_MAX +}; + +#if LWIP_CHECKSUM_CTRL_PER_NETIF +#define NETIF_CHECKSUM_GEN_IP 0x0001 +#define NETIF_CHECKSUM_GEN_UDP 0x0002 +#define NETIF_CHECKSUM_GEN_TCP 0x0004 +#define NETIF_CHECKSUM_GEN_ICMP 0x0008 +#define NETIF_CHECKSUM_GEN_ICMP6 0x0010 +#define NETIF_CHECKSUM_CHECK_IP 0x0100 +#define NETIF_CHECKSUM_CHECK_UDP 0x0200 +#define NETIF_CHECKSUM_CHECK_TCP 0x0400 +#define NETIF_CHECKSUM_CHECK_ICMP 0x0800 +#define NETIF_CHECKSUM_CHECK_ICMP6 0x1000 +#define NETIF_CHECKSUM_ENABLE_ALL 0xFFFF +#define NETIF_CHECKSUM_DISABLE_ALL 0x0000 +#endif /* LWIP_CHECKSUM_CTRL_PER_NETIF */ + +struct netif; + +/** MAC Filter Actions, these are passed to a netif's igmp_mac_filter or + * mld_mac_filter callback function. */ +enum netif_mac_filter_action { + /** Delete a filter entry */ + NETIF_DEL_MAC_FILTER = 0, + /** Add a filter entry */ + NETIF_ADD_MAC_FILTER = 1 +}; + +/** Function prototype for netif init functions. Set up flags and output/linkoutput + * callback functions in this function. + * + * @param netif The netif to initialize + */ +typedef err_t (*netif_init_fn)(struct netif *netif); +/** Function prototype for netif->input functions. This function is saved as 'input' + * callback function in the netif struct. Call it when a packet has been received. + * + * @param p The received packet, copied into a pbuf + * @param inp The netif which received the packet + */ +typedef err_t (*netif_input_fn)(struct pbuf *p, struct netif *inp); + +#if LWIP_IPV4 +/** Function prototype for netif->output functions. Called by lwIP when a packet + * shall be sent. For ethernet netif, set this to 'etharp_output' and set + * 'linkoutput'. + * + * @param netif The netif which shall send a packet + * @param p The packet to send (p->payload points to IP header) + * @param ipaddr The IP address to which the packet shall be sent + */ +typedef err_t (*netif_output_fn)(struct netif *netif, struct pbuf *p, + const ip4_addr_t *ipaddr); +#endif /* LWIP_IPV4*/ + +#if LWIP_IPV6 +/** Function prototype for netif->output_ip6 functions. Called by lwIP when a packet + * shall be sent. For ethernet netif, set this to 'ethip6_output' and set + * 'linkoutput'. + * + * @param netif The netif which shall send a packet + * @param p The packet to send (p->payload points to IP header) + * @param ipaddr The IPv6 address to which the packet shall be sent + */ +typedef err_t (*netif_output_ip6_fn)(struct netif *netif, struct pbuf *p, + const ip6_addr_t *ipaddr); +#endif /* LWIP_IPV6 */ + +/** Function prototype for netif->linkoutput functions. Only used for ethernet + * netifs. This function is called by ARP when a packet shall be sent. + * + * @param netif The netif which shall send a packet + * @param p The packet to send (raw ethernet packet) + */ +typedef err_t (*netif_linkoutput_fn)(struct netif *netif, struct pbuf *p); +/** Function prototype for netif status- or link-callback functions. */ +typedef void (*netif_status_callback_fn)(struct netif *netif); +#if LWIP_IPV4 && LWIP_IGMP +/** Function prototype for netif igmp_mac_filter functions */ +typedef err_t (*netif_igmp_mac_filter_fn)(struct netif *netif, + const ip4_addr_t *group, enum netif_mac_filter_action action); +#endif /* LWIP_IPV4 && LWIP_IGMP */ +#if LWIP_IPV6 && LWIP_IPV6_MLD +/** Function prototype for netif mld_mac_filter functions */ +typedef err_t (*netif_mld_mac_filter_fn)(struct netif *netif, + const ip6_addr_t *group, enum netif_mac_filter_action action); +#endif /* LWIP_IPV6 && LWIP_IPV6_MLD */ + +#if LWIP_DHCP || LWIP_AUTOIP || LWIP_IGMP || LWIP_IPV6_MLD || (LWIP_NUM_NETIF_CLIENT_DATA > 0) +u8_t netif_alloc_client_data_id(void); +/** @ingroup netif_cd + * Set client data. Obtain ID from netif_alloc_client_data_id(). + */ +#define netif_set_client_data(netif, id, data) netif_get_client_data(netif, id) = (data) +/** @ingroup netif_cd + * Get client data. Obtain ID from netif_alloc_client_data_id(). + */ +#define netif_get_client_data(netif, id) (netif)->client_data[(id)] +#endif /* LWIP_DHCP || LWIP_AUTOIP || (LWIP_NUM_NETIF_CLIENT_DATA > 0) */ + +/** Generic data structure used for all lwIP network interfaces. + * The following fields should be filled in by the initialization + * function for the device driver: hwaddr_len, hwaddr[], mtu, flags */ +struct netif { + /** pointer to next in linked list */ + struct netif *next; + +#if LWIP_IPV4 + /** IP address configuration in network byte order */ + ip_addr_t ip_addr; + ip_addr_t netmask; + ip_addr_t gw; +#endif /* LWIP_IPV4 */ +#if LWIP_IPV6 + /** Array of IPv6 addresses for this netif. */ + ip_addr_t ip6_addr[LWIP_IPV6_NUM_ADDRESSES]; + /** The state of each IPv6 address (Tentative, Preferred, etc). + * @see ip6_addr.h */ + u8_t ip6_addr_state[LWIP_IPV6_NUM_ADDRESSES]; +#endif /* LWIP_IPV6 */ + /** This function is called by the network device driver + * to pass a packet up the TCP/IP stack. */ + netif_input_fn input; +#if LWIP_IPV4 + /** This function is called by the IP module when it wants + * to send a packet on the interface. This function typically + * first resolves the hardware address, then sends the packet. + * For ethernet physical layer, this is usually etharp_output() */ + netif_output_fn output; +#endif /* LWIP_IPV4 */ + /** This function is called by ethernet_output() when it wants + * to send a packet on the interface. This function outputs + * the pbuf as-is on the link medium. */ + netif_linkoutput_fn linkoutput; +#if LWIP_IPV6 + /** This function is called by the IPv6 module when it wants + * to send a packet on the interface. This function typically + * first resolves the hardware address, then sends the packet. + * For ethernet physical layer, this is usually ethip6_output() */ + netif_output_ip6_fn output_ip6; +#endif /* LWIP_IPV6 */ +#if LWIP_NETIF_STATUS_CALLBACK + /** This function is called when the netif state is set to up or down + */ + netif_status_callback_fn status_callback; +#endif /* LWIP_NETIF_STATUS_CALLBACK */ +#if LWIP_NETIF_LINK_CALLBACK + /** This function is called when the netif link is set to up or down + */ + netif_status_callback_fn link_callback; +#endif /* LWIP_NETIF_LINK_CALLBACK */ +#if LWIP_NETIF_REMOVE_CALLBACK + /** This function is called when the netif has been removed */ + netif_status_callback_fn remove_callback; +#endif /* LWIP_NETIF_REMOVE_CALLBACK */ + /** This field can be set by the device driver and could point + * to state information for the device. */ + void *state; +#ifdef netif_get_client_data + void* client_data[LWIP_NETIF_CLIENT_DATA_INDEX_MAX + LWIP_NUM_NETIF_CLIENT_DATA]; +#endif +#if LWIP_IPV6_AUTOCONFIG + /** is this netif enabled for IPv6 autoconfiguration */ + u8_t ip6_autoconfig_enabled; +#endif /* LWIP_IPV6_AUTOCONFIG */ +#if LWIP_IPV6_SEND_ROUTER_SOLICIT + /** Number of Router Solicitation messages that remain to be sent. */ + u8_t rs_count; +#endif /* LWIP_IPV6_SEND_ROUTER_SOLICIT */ +#if LWIP_NETIF_HOSTNAME + /* the hostname for this netif, NULL is a valid value */ + const char* hostname; +#endif /* LWIP_NETIF_HOSTNAME */ +#if LWIP_CHECKSUM_CTRL_PER_NETIF + u16_t chksum_flags; +#endif /* LWIP_CHECKSUM_CTRL_PER_NETIF*/ + /** maximum transfer unit (in bytes) */ + u16_t mtu; + /** number of bytes used in hwaddr */ + u8_t hwaddr_len; + /** link level hardware address of this interface */ + u8_t hwaddr[NETIF_MAX_HWADDR_LEN]; + /** flags (@see @ref netif_flags) */ + u8_t flags; + /** descriptive abbreviation */ + char name[2]; + /** number of this interface */ + u8_t num; +#if MIB2_STATS + /** link type (from "snmp_ifType" enum from snmp_mib2.h) */ + u8_t link_type; + /** (estimate) link speed */ + u32_t link_speed; + /** timestamp at last change made (up/down) */ + u32_t ts; + /** counters */ + struct stats_mib2_netif_ctrs mib2_counters; +#endif /* MIB2_STATS */ +#if LWIP_IPV4 && LWIP_IGMP + /** This function could be called to add or delete an entry in the multicast + filter table of the ethernet MAC.*/ + netif_igmp_mac_filter_fn igmp_mac_filter; +#endif /* LWIP_IPV4 && LWIP_IGMP */ +#if LWIP_IPV6 && LWIP_IPV6_MLD + /** This function could be called to add or delete an entry in the IPv6 multicast + filter table of the ethernet MAC. */ + netif_mld_mac_filter_fn mld_mac_filter; +#endif /* LWIP_IPV6 && LWIP_IPV6_MLD */ +#if LWIP_NETIF_HWADDRHINT + u8_t *addr_hint; +#endif /* LWIP_NETIF_HWADDRHINT */ +#if ENABLE_LOOPBACK + /* List of packets to be queued for ourselves. */ + struct pbuf *loop_first; + struct pbuf *loop_last; +#if LWIP_LOOPBACK_MAX_PBUFS + u16_t loop_cnt_current; +#endif /* LWIP_LOOPBACK_MAX_PBUFS */ +#endif /* ENABLE_LOOPBACK */ +}; + +#if LWIP_CHECKSUM_CTRL_PER_NETIF +#define NETIF_SET_CHECKSUM_CTRL(netif, chksumflags) do { \ + (netif)->chksum_flags = chksumflags; } while(0) +#define IF__NETIF_CHECKSUM_ENABLED(netif, chksumflag) if (((netif) == NULL) || (((netif)->chksum_flags & (chksumflag)) != 0)) +#else /* LWIP_CHECKSUM_CTRL_PER_NETIF */ +#define NETIF_SET_CHECKSUM_CTRL(netif, chksumflags) +#define IF__NETIF_CHECKSUM_ENABLED(netif, chksumflag) +#endif /* LWIP_CHECKSUM_CTRL_PER_NETIF */ + +/** The list of network interfaces. */ +extern struct netif *netif_list; +/** The default network interface. */ +extern struct netif *netif_default; + +void netif_init(void); + +struct netif *netif_add(struct netif *netif, +#if LWIP_IPV4 + const ip4_addr_t *ipaddr, const ip4_addr_t *netmask, const ip4_addr_t *gw, +#endif /* LWIP_IPV4 */ + void *state, netif_init_fn init, netif_input_fn input); +#if LWIP_IPV4 +void netif_set_addr(struct netif *netif, const ip4_addr_t *ipaddr, const ip4_addr_t *netmask, + const ip4_addr_t *gw); +#endif /* LWIP_IPV4 */ +void netif_remove(struct netif * netif); + +/* Returns a network interface given its name. The name is of the form + "et0", where the first two letters are the "name" field in the + netif structure, and the digit is in the num field in the same + structure. */ +struct netif *netif_find(const char *name); + +void netif_set_default(struct netif *netif); + +#if LWIP_IPV4 +void netif_set_ipaddr(struct netif *netif, const ip4_addr_t *ipaddr); +void netif_set_netmask(struct netif *netif, const ip4_addr_t *netmask); +void netif_set_gw(struct netif *netif, const ip4_addr_t *gw); +/** @ingroup netif_ip4 */ +#define netif_ip4_addr(netif) ((const ip4_addr_t*)ip_2_ip4(&((netif)->ip_addr))) +/** @ingroup netif_ip4 */ +#define netif_ip4_netmask(netif) ((const ip4_addr_t*)ip_2_ip4(&((netif)->netmask))) +/** @ingroup netif_ip4 */ +#define netif_ip4_gw(netif) ((const ip4_addr_t*)ip_2_ip4(&((netif)->gw))) +/** @ingroup netif_ip4 */ +#define netif_ip_addr4(netif) ((const ip_addr_t*)&((netif)->ip_addr)) +/** @ingroup netif_ip4 */ +#define netif_ip_netmask4(netif) ((const ip_addr_t*)&((netif)->netmask)) +/** @ingroup netif_ip4 */ +#define netif_ip_gw4(netif) ((const ip_addr_t*)&((netif)->gw)) +#endif /* LWIP_IPV4 */ + +void netif_set_up(struct netif *netif); +void netif_set_down(struct netif *netif); +/** @ingroup netif + * Ask if an interface is up + */ +#define netif_is_up(netif) (((netif)->flags & NETIF_FLAG_UP) ? (u8_t)1 : (u8_t)0) + +#if LWIP_NETIF_STATUS_CALLBACK +void netif_set_status_callback(struct netif *netif, netif_status_callback_fn status_callback); +#endif /* LWIP_NETIF_STATUS_CALLBACK */ +#if LWIP_NETIF_REMOVE_CALLBACK +void netif_set_remove_callback(struct netif *netif, netif_status_callback_fn remove_callback); +#endif /* LWIP_NETIF_REMOVE_CALLBACK */ + +void netif_set_link_up(struct netif *netif); +void netif_set_link_down(struct netif *netif); +/** Ask if a link is up */ +#define netif_is_link_up(netif) (((netif)->flags & NETIF_FLAG_LINK_UP) ? (u8_t)1 : (u8_t)0) + +#if LWIP_NETIF_LINK_CALLBACK +void netif_set_link_callback(struct netif *netif, netif_status_callback_fn link_callback); +#endif /* LWIP_NETIF_LINK_CALLBACK */ + +#if LWIP_NETIF_HOSTNAME +/** @ingroup netif */ +#define netif_set_hostname(netif, name) do { if((netif) != NULL) { (netif)->hostname = name; }}while(0) +/** @ingroup netif */ +#define netif_get_hostname(netif) (((netif) != NULL) ? ((netif)->hostname) : NULL) +#endif /* LWIP_NETIF_HOSTNAME */ + +#if LWIP_IGMP +/** @ingroup netif */ +#define netif_set_igmp_mac_filter(netif, function) do { if((netif) != NULL) { (netif)->igmp_mac_filter = function; }}while(0) +#define netif_get_igmp_mac_filter(netif) (((netif) != NULL) ? ((netif)->igmp_mac_filter) : NULL) +#endif /* LWIP_IGMP */ + +#if LWIP_IPV6 && LWIP_IPV6_MLD +/** @ingroup netif */ +#define netif_set_mld_mac_filter(netif, function) do { if((netif) != NULL) { (netif)->mld_mac_filter = function; }}while(0) +#define netif_get_mld_mac_filter(netif) (((netif) != NULL) ? ((netif)->mld_mac_filter) : NULL) +#define netif_mld_mac_filter(netif, addr, action) do { if((netif) && (netif)->mld_mac_filter) { (netif)->mld_mac_filter((netif), (addr), (action)); }}while(0) +#endif /* LWIP_IPV6 && LWIP_IPV6_MLD */ + +#if ENABLE_LOOPBACK +err_t netif_loop_output(struct netif *netif, struct pbuf *p); +void netif_poll(struct netif *netif); +#if !LWIP_NETIF_LOOPBACK_MULTITHREADING +void netif_poll_all(void); +#endif /* !LWIP_NETIF_LOOPBACK_MULTITHREADING */ +#endif /* ENABLE_LOOPBACK */ + +err_t netif_input(struct pbuf *p, struct netif *inp); + +#if LWIP_IPV6 +/** @ingroup netif_ip6 */ +#define netif_ip_addr6(netif, i) ((const ip_addr_t*)(&((netif)->ip6_addr[i]))) +/** @ingroup netif_ip6 */ +#define netif_ip6_addr(netif, i) ((const ip6_addr_t*)ip_2_ip6(&((netif)->ip6_addr[i]))) +void netif_ip6_addr_set(struct netif *netif, s8_t addr_idx, const ip6_addr_t *addr6); +void netif_ip6_addr_set_parts(struct netif *netif, s8_t addr_idx, u32_t i0, u32_t i1, u32_t i2, u32_t i3); +#define netif_ip6_addr_state(netif, i) ((netif)->ip6_addr_state[i]) +void netif_ip6_addr_set_state(struct netif* netif, s8_t addr_idx, u8_t state); +s8_t netif_get_ip6_addr_match(struct netif *netif, const ip6_addr_t *ip6addr); +void netif_create_ip6_linklocal_address(struct netif *netif, u8_t from_mac_48bit); +err_t netif_add_ip6_address(struct netif *netif, const ip6_addr_t *ip6addr, s8_t *chosen_idx); +#define netif_set_ip6_autoconfig_enabled(netif, action) do { if(netif) { (netif)->ip6_autoconfig_enabled = (action); }}while(0) +#endif /* LWIP_IPV6 */ + +#if LWIP_NETIF_HWADDRHINT +#define NETIF_SET_HWADDRHINT(netif, hint) ((netif)->addr_hint = (hint)) +#else /* LWIP_NETIF_HWADDRHINT */ +#define NETIF_SET_HWADDRHINT(netif, hint) +#endif /* LWIP_NETIF_HWADDRHINT */ + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_NETIF_H */ diff --git a/tools/sdk/lwip2/include/lwip/netifapi.h b/tools/sdk/lwip2/include/lwip/netifapi.h new file mode 100644 index 000000000..8bd2b4f76 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/netifapi.h @@ -0,0 +1,140 @@ +/** + * @file + * netif API (to be used from non-TCPIP threads) + */ + +/* + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + */ +#ifndef LWIP_HDR_NETIFAPI_H +#define LWIP_HDR_NETIFAPI_H + +#include "lwip/opt.h" + +#if LWIP_NETIF_API /* don't build if not configured for use in lwipopts.h */ + +#include "lwip/sys.h" +#include "lwip/netif.h" +#include "lwip/dhcp.h" +#include "lwip/autoip.h" +#include "lwip/priv/tcpip_priv.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if LWIP_MPU_COMPATIBLE +#define NETIFAPI_IPADDR_DEF(type, m) type m +#else /* LWIP_MPU_COMPATIBLE */ +#define NETIFAPI_IPADDR_DEF(type, m) const type * m +#endif /* LWIP_MPU_COMPATIBLE */ + +typedef void (*netifapi_void_fn)(struct netif *netif); +typedef err_t (*netifapi_errt_fn)(struct netif *netif); + +struct netifapi_msg { + struct tcpip_api_call_data call; + struct netif *netif; + union { + struct { +#if LWIP_IPV4 + NETIFAPI_IPADDR_DEF(ip4_addr_t, ipaddr); + NETIFAPI_IPADDR_DEF(ip4_addr_t, netmask); + NETIFAPI_IPADDR_DEF(ip4_addr_t, gw); +#endif /* LWIP_IPV4 */ + void *state; + netif_init_fn init; + netif_input_fn input; + } add; + struct { + netifapi_void_fn voidfunc; + netifapi_errt_fn errtfunc; + } common; + } msg; +}; + + +/* API for application */ +err_t netifapi_netif_add(struct netif *netif, +#if LWIP_IPV4 + const ip4_addr_t *ipaddr, const ip4_addr_t *netmask, const ip4_addr_t *gw, +#endif /* LWIP_IPV4 */ + void *state, netif_init_fn init, netif_input_fn input); + +#if LWIP_IPV4 +err_t netifapi_netif_set_addr(struct netif *netif, const ip4_addr_t *ipaddr, + const ip4_addr_t *netmask, const ip4_addr_t *gw); +#endif /* LWIP_IPV4*/ + +err_t netifapi_netif_common(struct netif *netif, netifapi_void_fn voidfunc, + netifapi_errt_fn errtfunc); + +/** @ingroup netifapi_netif */ +#define netifapi_netif_remove(n) netifapi_netif_common(n, netif_remove, NULL) +/** @ingroup netifapi_netif */ +#define netifapi_netif_set_up(n) netifapi_netif_common(n, netif_set_up, NULL) +/** @ingroup netifapi_netif */ +#define netifapi_netif_set_down(n) netifapi_netif_common(n, netif_set_down, NULL) +/** @ingroup netifapi_netif */ +#define netifapi_netif_set_default(n) netifapi_netif_common(n, netif_set_default, NULL) +/** @ingroup netifapi_netif */ +#define netifapi_netif_set_link_up(n) netifapi_netif_common(n, netif_set_link_up, NULL) +/** @ingroup netifapi_netif */ +#define netifapi_netif_set_link_down(n) netifapi_netif_common(n, netif_set_link_down, NULL) + +/** + * @defgroup netifapi_dhcp4 DHCPv4 + * @ingroup netifapi + * To be called from non-TCPIP threads + */ +/** @ingroup netifapi_dhcp4 */ +#define netifapi_dhcp_start(n) netifapi_netif_common(n, NULL, dhcp_start) +/** @ingroup netifapi_dhcp4 */ +#define netifapi_dhcp_stop(n) netifapi_netif_common(n, dhcp_stop, NULL) +/** @ingroup netifapi_dhcp4 */ +#define netifapi_dhcp_inform(n) netifapi_netif_common(n, dhcp_inform, NULL) +/** @ingroup netifapi_dhcp4 */ +#define netifapi_dhcp_renew(n) netifapi_netif_common(n, NULL, dhcp_renew) +/** @ingroup netifapi_dhcp4 */ +#define netifapi_dhcp_release(n) netifapi_netif_common(n, NULL, dhcp_release) + +/** + * @defgroup netifapi_autoip AUTOIP + * @ingroup netifapi + * To be called from non-TCPIP threads + */ +/** @ingroup netifapi_autoip */ +#define netifapi_autoip_start(n) netifapi_netif_common(n, NULL, autoip_start) +/** @ingroup netifapi_autoip */ +#define netifapi_autoip_stop(n) netifapi_netif_common(n, NULL, autoip_stop) + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_NETIF_API */ + +#endif /* LWIP_HDR_NETIFAPI_H */ diff --git a/tools/sdk/lwip2/include/lwip/opt.h b/tools/sdk/lwip2/include/lwip/opt.h new file mode 100644 index 000000000..fd459af14 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/opt.h @@ -0,0 +1,2876 @@ +/** + * @file + * + * lwIP Options Configuration + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ + +/* + * NOTE: || defined __DOXYGEN__ is a workaround for doxygen bug - + * without this, doxygen does not see the actual #define + */ + +#if !defined LWIP_HDR_OPT_H +#define LWIP_HDR_OPT_H + +/* + * Include user defined options first. Anything not defined in these files + * will be set to standard values. Override anything you don't like! + */ +#include "lwipopts.h" +#include "lwip/debug.h" + +/** + * @defgroup lwip_opts Options (lwipopts.h) + * @ingroup lwip + * + * @defgroup lwip_opts_debug Debugging + * @ingroup lwip_opts + * + * @defgroup lwip_opts_infrastructure Infrastructure + * @ingroup lwip_opts + * + * @defgroup lwip_opts_callback Callback-style APIs + * @ingroup lwip_opts + * + * @defgroup lwip_opts_threadsafe_apis Thread-safe APIs + * @ingroup lwip_opts + */ + + /* + ------------------------------------ + -------------- NO SYS -------------- + ------------------------------------ +*/ +/** + * @defgroup lwip_opts_nosys NO_SYS + * @ingroup lwip_opts_infrastructure + * @{ + */ +/** + * NO_SYS==1: Use lwIP without OS-awareness (no thread, semaphores, mutexes or + * mboxes). This means threaded APIs cannot be used (socket, netconn, + * i.e. everything in the 'api' folder), only the callback-style raw API is + * available (and you have to watch out for yourself that you don't access + * lwIP functions/structures from more than one context at a time!) + */ +#if !defined NO_SYS || defined __DOXYGEN__ +#define NO_SYS 0 +#endif +/** + * @} + */ + +/** + * @defgroup lwip_opts_timers Timers + * @ingroup lwip_opts_infrastructure + * @{ + */ +/** + * LWIP_TIMERS==0: Drop support for sys_timeout and lwip-internal cyclic timers. + * (the array of lwip-internal cyclic timers is still provided) + * (check NO_SYS_NO_TIMERS for compatibility to old versions) + */ +#if !defined LWIP_TIMERS || defined __DOXYGEN__ +#ifdef NO_SYS_NO_TIMERS +#define LWIP_TIMERS (!NO_SYS || (NO_SYS && !NO_SYS_NO_TIMERS)) +#else +#define LWIP_TIMERS 1 +#endif +#endif + +/** + * LWIP_TIMERS_CUSTOM==1: Provide your own timer implementation. + * Function prototypes in timeouts.h and the array of lwip-internal cyclic timers + * are still included, but the implementation is not. The following functions + * will be required: sys_timeouts_init(), sys_timeout(), sys_untimeout(), + * sys_timeouts_mbox_fetch() + */ +#if !defined LWIP_TIMERS_CUSTOM || defined __DOXYGEN__ +#define LWIP_TIMERS_CUSTOM 0 +#endif +/** + * @} + */ + +/** + * @defgroup lwip_opts_memcpy memcpy + * @ingroup lwip_opts_infrastructure + * @{ + */ +/** + * MEMCPY: override this if you have a faster implementation at hand than the + * one included in your C library + */ +#if !defined MEMCPY || defined __DOXYGEN__ +#define MEMCPY(dst,src,len) memcpy(dst,src,len) +#endif + +/** + * SMEMCPY: override this with care! Some compilers (e.g. gcc) can inline a + * call to memcpy() if the length is known at compile time and is small. + */ +#if !defined SMEMCPY || defined __DOXYGEN__ +#define SMEMCPY(dst,src,len) memcpy(dst,src,len) +#endif +/** + * @} + */ + +/* + ------------------------------------ + ----------- Core locking ----------- + ------------------------------------ +*/ +/** + * @defgroup lwip_opts_lock Core locking and MPU + * @ingroup lwip_opts_infrastructure + * @{ + */ +/** + * LWIP_MPU_COMPATIBLE: enables special memory management mechanism + * which makes lwip able to work on MPU (Memory Protection Unit) system + * by not passing stack-pointers to other threads + * (this decreases performance as memory is allocated from pools instead + * of keeping it on the stack) + */ +#if !defined LWIP_MPU_COMPATIBLE || defined __DOXYGEN__ +#define LWIP_MPU_COMPATIBLE 0 +#endif + +/** + * LWIP_TCPIP_CORE_LOCKING + * Creates a global mutex that is held during TCPIP thread operations. + * Can be locked by client code to perform lwIP operations without changing + * into TCPIP thread using callbacks. See LOCK_TCPIP_CORE() and + * UNLOCK_TCPIP_CORE(). + * Your system should provide mutexes supporting priority inversion to use this. + */ +#if !defined LWIP_TCPIP_CORE_LOCKING || defined __DOXYGEN__ +#define LWIP_TCPIP_CORE_LOCKING 1 +#endif + +/** + * LWIP_TCPIP_CORE_LOCKING_INPUT: when LWIP_TCPIP_CORE_LOCKING is enabled, + * this lets tcpip_input() grab the mutex for input packets as well, + * instead of allocating a message and passing it to tcpip_thread. + * + * ATTENTION: this does not work when tcpip_input() is called from + * interrupt context! + */ +#if !defined LWIP_TCPIP_CORE_LOCKING_INPUT || defined __DOXYGEN__ +#define LWIP_TCPIP_CORE_LOCKING_INPUT 0 +#endif + +/** + * SYS_LIGHTWEIGHT_PROT==1: enable inter-task protection (and task-vs-interrupt + * protection) for certain critical regions during buffer allocation, deallocation + * and memory allocation and deallocation. + * ATTENTION: This is required when using lwIP from more than one context! If + * you disable this, you must be sure what you are doing! + */ +#if !defined SYS_LIGHTWEIGHT_PROT || defined __DOXYGEN__ +#define SYS_LIGHTWEIGHT_PROT 1 +#endif +/** + * @} + */ + +/* + ------------------------------------ + ---------- Memory options ---------- + ------------------------------------ +*/ +/** + * @defgroup lwip_opts_mem Heap and memory pools + * @ingroup lwip_opts_infrastructure + * @{ + */ +/** + * MEM_LIBC_MALLOC==1: Use malloc/free/realloc provided by your C-library + * instead of the lwip internal allocator. Can save code size if you + * already use it. + */ +#if !defined MEM_LIBC_MALLOC || defined __DOXYGEN__ +#define MEM_LIBC_MALLOC 0 +#endif + +/** + * MEMP_MEM_MALLOC==1: Use mem_malloc/mem_free instead of the lwip pool allocator. + * Especially useful with MEM_LIBC_MALLOC but handle with care regarding execution + * speed (heap alloc can be much slower than pool alloc) and usage from interrupts + * (especially if your netif driver allocates PBUF_POOL pbufs for received frames + * from interrupt)! + * ATTENTION: Currently, this uses the heap for ALL pools (also for private pools, + * not only for internal pools defined in memp_std.h)! + */ +#if !defined MEMP_MEM_MALLOC || defined __DOXYGEN__ +#define MEMP_MEM_MALLOC 0 +#endif + +/** + * MEM_ALIGNMENT: should be set to the alignment of the CPU + * 4 byte alignment -> \#define MEM_ALIGNMENT 4 + * 2 byte alignment -> \#define MEM_ALIGNMENT 2 + */ +#if !defined MEM_ALIGNMENT || defined __DOXYGEN__ +#define MEM_ALIGNMENT 1 +#endif + +/** + * MEM_SIZE: the size of the heap memory. If the application will send + * a lot of data that needs to be copied, this should be set high. + */ +#if !defined MEM_SIZE || defined __DOXYGEN__ +#define MEM_SIZE 1600 +#endif + +/** + * MEMP_OVERFLOW_CHECK: memp overflow protection reserves a configurable + * amount of bytes before and after each memp element in every pool and fills + * it with a prominent default value. + * MEMP_OVERFLOW_CHECK == 0 no checking + * MEMP_OVERFLOW_CHECK == 1 checks each element when it is freed + * MEMP_OVERFLOW_CHECK >= 2 checks each element in every pool every time + * memp_malloc() or memp_free() is called (useful but slow!) + */ +#if !defined MEMP_OVERFLOW_CHECK || defined __DOXYGEN__ +#define MEMP_OVERFLOW_CHECK 0 +#endif + +/** + * MEMP_SANITY_CHECK==1: run a sanity check after each memp_free() to make + * sure that there are no cycles in the linked lists. + */ +#if !defined MEMP_SANITY_CHECK || defined __DOXYGEN__ +#define MEMP_SANITY_CHECK 0 +#endif + +/** + * MEM_USE_POOLS==1: Use an alternative to malloc() by allocating from a set + * of memory pools of various sizes. When mem_malloc is called, an element of + * the smallest pool that can provide the length needed is returned. + * To use this, MEMP_USE_CUSTOM_POOLS also has to be enabled. + */ +#if !defined MEM_USE_POOLS || defined __DOXYGEN__ +#define MEM_USE_POOLS 0 +#endif + +/** + * MEM_USE_POOLS_TRY_BIGGER_POOL==1: if one malloc-pool is empty, try the next + * bigger pool - WARNING: THIS MIGHT WASTE MEMORY but it can make a system more + * reliable. */ +#if !defined MEM_USE_POOLS_TRY_BIGGER_POOL || defined __DOXYGEN__ +#define MEM_USE_POOLS_TRY_BIGGER_POOL 0 +#endif + +/** + * MEMP_USE_CUSTOM_POOLS==1: whether to include a user file lwippools.h + * that defines additional pools beyond the "standard" ones required + * by lwIP. If you set this to 1, you must have lwippools.h in your + * include path somewhere. + */ +#if !defined MEMP_USE_CUSTOM_POOLS || defined __DOXYGEN__ +#define MEMP_USE_CUSTOM_POOLS 0 +#endif + +/** + * Set this to 1 if you want to free PBUF_RAM pbufs (or call mem_free()) from + * interrupt context (or another context that doesn't allow waiting for a + * semaphore). + * If set to 1, mem_malloc will be protected by a semaphore and SYS_ARCH_PROTECT, + * while mem_free will only use SYS_ARCH_PROTECT. mem_malloc SYS_ARCH_UNPROTECTs + * with each loop so that mem_free can run. + * + * ATTENTION: As you can see from the above description, this leads to dis-/ + * enabling interrupts often, which can be slow! Also, on low memory, mem_malloc + * can need longer. + * + * If you don't want that, at least for NO_SYS=0, you can still use the following + * functions to enqueue a deallocation call which then runs in the tcpip_thread + * context: + * - pbuf_free_callback(p); + * - mem_free_callback(m); + */ +#if !defined LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT || defined __DOXYGEN__ +#define LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT 0 +#endif +/** + * @} + */ + +/* + ------------------------------------------------ + ---------- Internal Memory Pool Sizes ---------- + ------------------------------------------------ +*/ +/** + * @defgroup lwip_opts_memp Internal memory pools + * @ingroup lwip_opts_infrastructure + * @{ + */ +/** + * MEMP_NUM_PBUF: the number of memp struct pbufs (used for PBUF_ROM and PBUF_REF). + * If the application sends a lot of data out of ROM (or other static memory), + * this should be set high. + */ +#if !defined MEMP_NUM_PBUF || defined __DOXYGEN__ +#define MEMP_NUM_PBUF 16 +#endif + +/** + * MEMP_NUM_RAW_PCB: Number of raw connection PCBs + * (requires the LWIP_RAW option) + */ +#if !defined MEMP_NUM_RAW_PCB || defined __DOXYGEN__ +#define MEMP_NUM_RAW_PCB 4 +#endif + +/** + * MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One + * per active UDP "connection". + * (requires the LWIP_UDP option) + */ +#if !defined MEMP_NUM_UDP_PCB || defined __DOXYGEN__ +#define MEMP_NUM_UDP_PCB 4 +#endif + +/** + * MEMP_NUM_TCP_PCB: the number of simultaneously active TCP connections. + * (requires the LWIP_TCP option) + */ +#if !defined MEMP_NUM_TCP_PCB || defined __DOXYGEN__ +#define MEMP_NUM_TCP_PCB 5 +#endif + +/** + * MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP connections. + * (requires the LWIP_TCP option) + */ +#if !defined MEMP_NUM_TCP_PCB_LISTEN || defined __DOXYGEN__ +#define MEMP_NUM_TCP_PCB_LISTEN 8 +#endif + +/** + * MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP segments. + * (requires the LWIP_TCP option) + */ +#if !defined MEMP_NUM_TCP_SEG || defined __DOXYGEN__ +#define MEMP_NUM_TCP_SEG 16 +#endif + +/** + * MEMP_NUM_REASSDATA: the number of IP packets simultaneously queued for + * reassembly (whole packets, not fragments!) + */ +#if !defined MEMP_NUM_REASSDATA || defined __DOXYGEN__ +#define MEMP_NUM_REASSDATA 5 +#endif + +/** + * MEMP_NUM_FRAG_PBUF: the number of IP fragments simultaneously sent + * (fragments, not whole packets!). + * This is only used with LWIP_NETIF_TX_SINGLE_PBUF==0 and only has to be > 1 + * with DMA-enabled MACs where the packet is not yet sent when netif->output + * returns. + */ +#if !defined MEMP_NUM_FRAG_PBUF || defined __DOXYGEN__ +#define MEMP_NUM_FRAG_PBUF 15 +#endif + +/** + * MEMP_NUM_ARP_QUEUE: the number of simultaneously queued outgoing + * packets (pbufs) that are waiting for an ARP request (to resolve + * their destination address) to finish. + * (requires the ARP_QUEUEING option) + */ +#if !defined MEMP_NUM_ARP_QUEUE || defined __DOXYGEN__ +#define MEMP_NUM_ARP_QUEUE 30 +#endif + +/** + * MEMP_NUM_IGMP_GROUP: The number of multicast groups whose network interfaces + * can be members at the same time (one per netif - allsystems group -, plus one + * per netif membership). + * (requires the LWIP_IGMP option) + */ +#if !defined MEMP_NUM_IGMP_GROUP || defined __DOXYGEN__ +#define MEMP_NUM_IGMP_GROUP 8 +#endif + +/** + * MEMP_NUM_SYS_TIMEOUT: the number of simultaneously active timeouts. + * The default number of timeouts is calculated here for all enabled modules. + * The formula expects settings to be either '0' or '1'. + */ +#if !defined MEMP_NUM_SYS_TIMEOUT || defined __DOXYGEN__ +#define MEMP_NUM_SYS_TIMEOUT (LWIP_TCP + IP_REASSEMBLY + LWIP_ARP + (2*LWIP_DHCP) + LWIP_AUTOIP + LWIP_IGMP + LWIP_DNS + (PPP_SUPPORT*6*MEMP_NUM_PPP_PCB) + (LWIP_IPV6 ? (1 + LWIP_IPV6_REASS + LWIP_IPV6_MLD) : 0)) +#endif + +/** + * MEMP_NUM_NETBUF: the number of struct netbufs. + * (only needed if you use the sequential API, like api_lib.c) + */ +#if !defined MEMP_NUM_NETBUF || defined __DOXYGEN__ +#define MEMP_NUM_NETBUF 2 +#endif + +/** + * MEMP_NUM_NETCONN: the number of struct netconns. + * (only needed if you use the sequential API, like api_lib.c) + */ +#if !defined MEMP_NUM_NETCONN || defined __DOXYGEN__ +#define MEMP_NUM_NETCONN 4 +#endif + +/** + * MEMP_NUM_TCPIP_MSG_API: the number of struct tcpip_msg, which are used + * for callback/timeout API communication. + * (only needed if you use tcpip.c) + */ +#if !defined MEMP_NUM_TCPIP_MSG_API || defined __DOXYGEN__ +#define MEMP_NUM_TCPIP_MSG_API 8 +#endif + +/** + * MEMP_NUM_TCPIP_MSG_INPKT: the number of struct tcpip_msg, which are used + * for incoming packets. + * (only needed if you use tcpip.c) + */ +#if !defined MEMP_NUM_TCPIP_MSG_INPKT || defined __DOXYGEN__ +#define MEMP_NUM_TCPIP_MSG_INPKT 8 +#endif + +/** + * MEMP_NUM_NETDB: the number of concurrently running lwip_addrinfo() calls + * (before freeing the corresponding memory using lwip_freeaddrinfo()). + */ +#if !defined MEMP_NUM_NETDB || defined __DOXYGEN__ +#define MEMP_NUM_NETDB 1 +#endif + +/** + * MEMP_NUM_LOCALHOSTLIST: the number of host entries in the local host list + * if DNS_LOCAL_HOSTLIST_IS_DYNAMIC==1. + */ +#if !defined MEMP_NUM_LOCALHOSTLIST || defined __DOXYGEN__ +#define MEMP_NUM_LOCALHOSTLIST 1 +#endif + +/** + * PBUF_POOL_SIZE: the number of buffers in the pbuf pool. + */ +#if !defined PBUF_POOL_SIZE || defined __DOXYGEN__ +#define PBUF_POOL_SIZE 16 +#endif + +/** MEMP_NUM_API_MSG: the number of concurrently active calls to various + * socket, netconn, and tcpip functions + */ +#if !defined MEMP_NUM_API_MSG || defined __DOXYGEN__ +#define MEMP_NUM_API_MSG MEMP_NUM_TCPIP_MSG_API +#endif + +/** MEMP_NUM_DNS_API_MSG: the number of concurrently active calls to netconn_gethostbyname + */ +#if !defined MEMP_NUM_DNS_API_MSG || defined __DOXYGEN__ +#define MEMP_NUM_DNS_API_MSG MEMP_NUM_TCPIP_MSG_API +#endif + +/** MEMP_NUM_SOCKET_SETGETSOCKOPT_DATA: the number of concurrently active calls + * to getsockopt/setsockopt + */ +#if !defined MEMP_NUM_SOCKET_SETGETSOCKOPT_DATA || defined __DOXYGEN__ +#define MEMP_NUM_SOCKET_SETGETSOCKOPT_DATA MEMP_NUM_TCPIP_MSG_API +#endif + +/** MEMP_NUM_NETIFAPI_MSG: the number of concurrently active calls to the + * netifapi functions + */ +#if !defined MEMP_NUM_NETIFAPI_MSG || defined __DOXYGEN__ +#define MEMP_NUM_NETIFAPI_MSG MEMP_NUM_TCPIP_MSG_API +#endif +/** + * @} + */ + +/* + --------------------------------- + ---------- ARP options ---------- + --------------------------------- +*/ +/** + * @defgroup lwip_opts_arp ARP + * @ingroup lwip_opts_ipv4 + * @{ + */ +/** + * LWIP_ARP==1: Enable ARP functionality. + */ +#if !defined LWIP_ARP || defined __DOXYGEN__ +#define LWIP_ARP 1 +#endif + +/** + * ARP_TABLE_SIZE: Number of active MAC-IP address pairs cached. + */ +#if !defined ARP_TABLE_SIZE || defined __DOXYGEN__ +#define ARP_TABLE_SIZE 10 +#endif + +/** the time an ARP entry stays valid after its last update, + * for ARP_TMR_INTERVAL = 1000, this is + * (60 * 5) seconds = 5 minutes. + */ +#if !defined ARP_MAXAGE || defined __DOXYGEN__ +#define ARP_MAXAGE 300 +#endif + +/** + * ARP_QUEUEING==1: Multiple outgoing packets are queued during hardware address + * resolution. By default, only the most recent packet is queued per IP address. + * This is sufficient for most protocols and mainly reduces TCP connection + * startup time. Set this to 1 if you know your application sends more than one + * packet in a row to an IP address that is not in the ARP cache. + */ +#if !defined ARP_QUEUEING || defined __DOXYGEN__ +#define ARP_QUEUEING 0 +#endif + +/** The maximum number of packets which may be queued for each + * unresolved address by other network layers. Defaults to 3, 0 means disabled. + * Old packets are dropped, new packets are queued. + */ +#if !defined ARP_QUEUE_LEN || defined __DOXYGEN__ +#define ARP_QUEUE_LEN 3 +#endif + +/** + * ETHARP_SUPPORT_VLAN==1: support receiving and sending ethernet packets with + * VLAN header. See the description of LWIP_HOOK_VLAN_CHECK and + * LWIP_HOOK_VLAN_SET hooks to check/set VLAN headers. + * Additionally, you can define ETHARP_VLAN_CHECK to an u16_t VLAN ID to check. + * If ETHARP_VLAN_CHECK is defined, only VLAN-traffic for this VLAN is accepted. + * If ETHARP_VLAN_CHECK is not defined, all traffic is accepted. + * Alternatively, define a function/define ETHARP_VLAN_CHECK_FN(eth_hdr, vlan) + * that returns 1 to accept a packet or 0 to drop a packet. + */ +#if !defined ETHARP_SUPPORT_VLAN || defined __DOXYGEN__ +#define ETHARP_SUPPORT_VLAN 0 +#endif + +/** LWIP_ETHERNET==1: enable ethernet support even though ARP might be disabled + */ +#if !defined LWIP_ETHERNET || defined __DOXYGEN__ +#define LWIP_ETHERNET LWIP_ARP +#endif + +/** ETH_PAD_SIZE: number of bytes added before the ethernet header to ensure + * alignment of payload after that header. Since the header is 14 bytes long, + * without this padding e.g. addresses in the IP header will not be aligned + * on a 32-bit boundary, so setting this to 2 can speed up 32-bit-platforms. + */ +#if !defined ETH_PAD_SIZE || defined __DOXYGEN__ +#define ETH_PAD_SIZE 0 +#endif + +/** ETHARP_SUPPORT_STATIC_ENTRIES==1: enable code to support static ARP table + * entries (using etharp_add_static_entry/etharp_remove_static_entry). + */ +#if !defined ETHARP_SUPPORT_STATIC_ENTRIES || defined __DOXYGEN__ +#define ETHARP_SUPPORT_STATIC_ENTRIES 0 +#endif + +/** ETHARP_TABLE_MATCH_NETIF==1: Match netif for ARP table entries. + * If disabled, duplicate IP address on multiple netifs are not supported + * (but this should only occur for AutoIP). + */ +#if !defined ETHARP_TABLE_MATCH_NETIF || defined __DOXYGEN__ +#define ETHARP_TABLE_MATCH_NETIF 0 +#endif +/** + * @} + */ + +/* + -------------------------------- + ---------- IP options ---------- + -------------------------------- +*/ +/** + * @defgroup lwip_opts_ipv4 IPv4 + * @ingroup lwip_opts + * @{ + */ +/** + * LWIP_IPV4==1: Enable IPv4 + */ +#if !defined LWIP_IPV4 || defined __DOXYGEN__ +#define LWIP_IPV4 1 +#endif + +/** + * IP_FORWARD==1: Enables the ability to forward IP packets across network + * interfaces. If you are going to run lwIP on a device with only one network + * interface, define this to 0. + */ +#if !defined IP_FORWARD || defined __DOXYGEN__ +#define IP_FORWARD 0 +#endif + +/** + * IP_REASSEMBLY==1: Reassemble incoming fragmented IP packets. Note that + * this option does not affect outgoing packet sizes, which can be controlled + * via IP_FRAG. + */ +#if !defined IP_REASSEMBLY || defined __DOXYGEN__ +#define IP_REASSEMBLY 1 +#endif + +/** + * IP_FRAG==1: Fragment outgoing IP packets if their size exceeds MTU. Note + * that this option does not affect incoming packet sizes, which can be + * controlled via IP_REASSEMBLY. + */ +#if !defined IP_FRAG || defined __DOXYGEN__ +#define IP_FRAG 1 +#endif + +#if !LWIP_IPV4 +/* disable IPv4 extensions when IPv4 is disabled */ +#undef IP_FORWARD +#define IP_FORWARD 0 +#undef IP_REASSEMBLY +#define IP_REASSEMBLY 0 +#undef IP_FRAG +#define IP_FRAG 0 +#endif /* !LWIP_IPV4 */ + +/** + * IP_OPTIONS_ALLOWED: Defines the behavior for IP options. + * IP_OPTIONS_ALLOWED==0: All packets with IP options are dropped. + * IP_OPTIONS_ALLOWED==1: IP options are allowed (but not parsed). + */ +#if !defined IP_OPTIONS_ALLOWED || defined __DOXYGEN__ +#define IP_OPTIONS_ALLOWED 1 +#endif + +/** + * IP_REASS_MAXAGE: Maximum time (in multiples of IP_TMR_INTERVAL - so seconds, normally) + * a fragmented IP packet waits for all fragments to arrive. If not all fragments arrived + * in this time, the whole packet is discarded. + */ +#if !defined IP_REASS_MAXAGE || defined __DOXYGEN__ +#define IP_REASS_MAXAGE 3 +#endif + +/** + * IP_REASS_MAX_PBUFS: Total maximum amount of pbufs waiting to be reassembled. + * Since the received pbufs are enqueued, be sure to configure + * PBUF_POOL_SIZE > IP_REASS_MAX_PBUFS so that the stack is still able to receive + * packets even if the maximum amount of fragments is enqueued for reassembly! + */ +#if !defined IP_REASS_MAX_PBUFS || defined __DOXYGEN__ +#define IP_REASS_MAX_PBUFS 10 +#endif + +/** + * IP_DEFAULT_TTL: Default value for Time-To-Live used by transport layers. + */ +#if !defined IP_DEFAULT_TTL || defined __DOXYGEN__ +#define IP_DEFAULT_TTL 255 +#endif + +/** + * IP_SOF_BROADCAST=1: Use the SOF_BROADCAST field to enable broadcast + * filter per pcb on udp and raw send operations. To enable broadcast filter + * on recv operations, you also have to set IP_SOF_BROADCAST_RECV=1. + */ +#if !defined IP_SOF_BROADCAST || defined __DOXYGEN__ +#define IP_SOF_BROADCAST 0 +#endif + +/** + * IP_SOF_BROADCAST_RECV (requires IP_SOF_BROADCAST=1) enable the broadcast + * filter on recv operations. + */ +#if !defined IP_SOF_BROADCAST_RECV || defined __DOXYGEN__ +#define IP_SOF_BROADCAST_RECV 0 +#endif + +/** + * IP_FORWARD_ALLOW_TX_ON_RX_NETIF==1: allow ip_forward() to send packets back + * out on the netif where it was received. This should only be used for + * wireless networks. + * ATTENTION: When this is 1, make sure your netif driver correctly marks incoming + * link-layer-broadcast/multicast packets as such using the corresponding pbuf flags! + */ +#if !defined IP_FORWARD_ALLOW_TX_ON_RX_NETIF || defined __DOXYGEN__ +#define IP_FORWARD_ALLOW_TX_ON_RX_NETIF 0 +#endif + +/** + * LWIP_RANDOMIZE_INITIAL_LOCAL_PORTS==1: randomize the local port for the first + * local TCP/UDP pcb (default==0). This can prevent creating predictable port + * numbers after booting a device. + */ +#if !defined LWIP_RANDOMIZE_INITIAL_LOCAL_PORTS || defined __DOXYGEN__ +#define LWIP_RANDOMIZE_INITIAL_LOCAL_PORTS 0 +#endif +/** + * @} + */ + +/* + ---------------------------------- + ---------- ICMP options ---------- + ---------------------------------- +*/ +/** + * @defgroup lwip_opts_icmp ICMP + * @ingroup lwip_opts_ipv4 + * @{ + */ +/** + * LWIP_ICMP==1: Enable ICMP module inside the IP stack. + * Be careful, disable that make your product non-compliant to RFC1122 + */ +#if !defined LWIP_ICMP || defined __DOXYGEN__ +#define LWIP_ICMP 1 +#endif + +/** + * ICMP_TTL: Default value for Time-To-Live used by ICMP packets. + */ +#if !defined ICMP_TTL || defined __DOXYGEN__ +#define ICMP_TTL (IP_DEFAULT_TTL) +#endif + +/** + * LWIP_BROADCAST_PING==1: respond to broadcast pings (default is unicast only) + */ +#if !defined LWIP_BROADCAST_PING || defined __DOXYGEN__ +#define LWIP_BROADCAST_PING 0 +#endif + +/** + * LWIP_MULTICAST_PING==1: respond to multicast pings (default is unicast only) + */ +#if !defined LWIP_MULTICAST_PING || defined __DOXYGEN__ +#define LWIP_MULTICAST_PING 0 +#endif +/** + * @} + */ + +/* + --------------------------------- + ---------- RAW options ---------- + --------------------------------- +*/ +/** + * @defgroup lwip_opts_raw RAW + * @ingroup lwip_opts_callback + * @{ + */ +/** + * LWIP_RAW==1: Enable application layer to hook into the IP layer itself. + */ +#if !defined LWIP_RAW || defined __DOXYGEN__ +#define LWIP_RAW 0 +#endif + +/** + * LWIP_RAW==1: Enable application layer to hook into the IP layer itself. + */ +#if !defined RAW_TTL || defined __DOXYGEN__ +#define RAW_TTL (IP_DEFAULT_TTL) +#endif +/** + * @} + */ + +/* + ---------------------------------- + ---------- DHCP options ---------- + ---------------------------------- +*/ +/** + * @defgroup lwip_opts_dhcp DHCP + * @ingroup lwip_opts_ipv4 + * @{ + */ +/** + * LWIP_DHCP==1: Enable DHCP module. + */ +#if !defined LWIP_DHCP || defined __DOXYGEN__ +#define LWIP_DHCP 0 +#endif +#if !LWIP_IPV4 +/* disable DHCP when IPv4 is disabled */ +#undef LWIP_DHCP +#define LWIP_DHCP 0 +#endif /* !LWIP_IPV4 */ + +/** + * DHCP_DOES_ARP_CHECK==1: Do an ARP check on the offered address. + */ +#if !defined DHCP_DOES_ARP_CHECK || defined __DOXYGEN__ +#define DHCP_DOES_ARP_CHECK ((LWIP_DHCP) && (LWIP_ARP)) +#endif + +/** + * LWIP_DHCP_CHECK_LINK_UP==1: dhcp_start() only really starts if the netif has + * NETIF_FLAG_LINK_UP set in its flags. As this is only an optimization and + * netif drivers might not set this flag, the default is off. If enabled, + * netif_set_link_up() must be called to continue dhcp starting. + */ +#if !defined LWIP_DHCP_CHECK_LINK_UP +#define LWIP_DHCP_CHECK_LINK_UP 0 +#endif + +/** + * LWIP_DHCP_BOOTP_FILE==1: Store offered_si_addr and boot_file_name. + */ +#if !defined LWIP_DHCP_BOOTP_FILE || defined __DOXYGEN__ +#define LWIP_DHCP_BOOTP_FILE 0 +#endif + +/** + * LWIP_DHCP_GETS_NTP==1: Request NTP servers with discover/select. For each + * response packet, an callback is called, which has to be provided by the port: + * void dhcp_set_ntp_servers(u8_t num_ntp_servers, ip_addr_t* ntp_server_addrs); +*/ +#if !defined LWIP_DHCP_GET_NTP_SRV || defined __DOXYGEN__ +#define LWIP_DHCP_GET_NTP_SRV 0 +#endif + +/** + * The maximum of NTP servers requested + */ +#if !defined LWIP_DHCP_MAX_NTP_SERVERS || defined __DOXYGEN__ +#define LWIP_DHCP_MAX_NTP_SERVERS 1 +#endif + +/** + * LWIP_DHCP_MAX_DNS_SERVERS > 0: Request DNS servers with discover/select. + * DHCP servers received in the response are passed to DNS via @ref dns_setserver() + * (up to the maximum limit defined here). + */ +#if !defined LWIP_DHCP_MAX_DNS_SERVERS || defined __DOXYGEN__ +#define LWIP_DHCP_MAX_DNS_SERVERS DNS_MAX_SERVERS +#endif +/** + * @} + */ + +/* + ------------------------------------ + ---------- AUTOIP options ---------- + ------------------------------------ +*/ +/** + * @defgroup lwip_opts_autoip AUTOIP + * @ingroup lwip_opts_ipv4 + * @{ + */ +/** + * LWIP_AUTOIP==1: Enable AUTOIP module. + */ +#if !defined LWIP_AUTOIP || defined __DOXYGEN__ +#define LWIP_AUTOIP 0 +#endif +#if !LWIP_IPV4 +/* disable AUTOIP when IPv4 is disabled */ +#undef LWIP_AUTOIP +#define LWIP_AUTOIP 0 +#endif /* !LWIP_IPV4 */ + +/** + * LWIP_DHCP_AUTOIP_COOP==1: Allow DHCP and AUTOIP to be both enabled on + * the same interface at the same time. + */ +#if !defined LWIP_DHCP_AUTOIP_COOP || defined __DOXYGEN__ +#define LWIP_DHCP_AUTOIP_COOP 0 +#endif + +/** + * LWIP_DHCP_AUTOIP_COOP_TRIES: Set to the number of DHCP DISCOVER probes + * that should be sent before falling back on AUTOIP (the DHCP client keeps + * running in this case). This can be set as low as 1 to get an AutoIP address + * very quickly, but you should be prepared to handle a changing IP address + * when DHCP overrides AutoIP. + */ +#if !defined LWIP_DHCP_AUTOIP_COOP_TRIES || defined __DOXYGEN__ +#define LWIP_DHCP_AUTOIP_COOP_TRIES 9 +#endif +/** + * @} + */ + +/* + ---------------------------------- + ----- SNMP MIB2 support ----- + ---------------------------------- +*/ +/** + * @defgroup lwip_opts_mib2 SNMP MIB2 callbacks + * @ingroup lwip_opts_infrastructure + * @{ + */ +/** + * LWIP_MIB2_CALLBACKS==1: Turn on SNMP MIB2 callbacks. + * Turn this on to get callbacks needed to implement MIB2. + * Usually MIB2_STATS should be enabled, too. + */ +#if !defined LWIP_MIB2_CALLBACKS || defined __DOXYGEN__ +#define LWIP_MIB2_CALLBACKS 0 +#endif +/** + * @} + */ + +/* + ---------------------------------- + ----- Multicast/IGMP options ----- + ---------------------------------- +*/ +/** + * @defgroup lwip_opts_igmp IGMP + * @ingroup lwip_opts_ipv4 + * @{ + */ +/** + * LWIP_IGMP==1: Turn on IGMP module. + */ +#if !defined LWIP_IGMP || defined __DOXYGEN__ +#define LWIP_IGMP 0 +#endif +#if !LWIP_IPV4 +#undef LWIP_IGMP +#define LWIP_IGMP 0 +#endif + +/** + * LWIP_MULTICAST_TX_OPTIONS==1: Enable multicast TX support like the socket options + * IP_MULTICAST_TTL/IP_MULTICAST_IF/IP_MULTICAST_LOOP + */ +#if !defined LWIP_MULTICAST_TX_OPTIONS || defined __DOXYGEN__ +#define LWIP_MULTICAST_TX_OPTIONS (LWIP_IGMP && LWIP_UDP) +#endif +/** + * @} + */ + +/* + ---------------------------------- + ---------- DNS options ----------- + ---------------------------------- +*/ +/** + * @defgroup lwip_opts_dns DNS + * @ingroup lwip_opts_callback + * @{ + */ +/** + * LWIP_DNS==1: Turn on DNS module. UDP must be available for DNS + * transport. + */ +#if !defined LWIP_DNS || defined __DOXYGEN__ +#define LWIP_DNS 0 +#endif + +/** DNS maximum number of entries to maintain locally. */ +#if !defined DNS_TABLE_SIZE || defined __DOXYGEN__ +#define DNS_TABLE_SIZE 4 +#endif + +/** DNS maximum host name length supported in the name table. */ +#if !defined DNS_MAX_NAME_LENGTH || defined __DOXYGEN__ +#define DNS_MAX_NAME_LENGTH 256 +#endif + +/** The maximum of DNS servers + * The first server can be initialized automatically by defining + * DNS_SERVER_ADDRESS(ipaddr), where 'ipaddr' is an 'ip_addr_t*' + */ +#if !defined DNS_MAX_SERVERS || defined __DOXYGEN__ +#define DNS_MAX_SERVERS 2 +#endif + +/** DNS do a name checking between the query and the response. */ +#if !defined DNS_DOES_NAME_CHECK || defined __DOXYGEN__ +#define DNS_DOES_NAME_CHECK 1 +#endif + +/** LWIP_DNS_SECURE: controls the security level of the DNS implementation + * Use all DNS security features by default. + * This is overridable but should only be needed by very small targets + * or when using against non standard DNS servers. */ +#if !defined LWIP_DNS_SECURE || defined __DOXYGEN__ +#define LWIP_DNS_SECURE (LWIP_DNS_SECURE_RAND_XID | LWIP_DNS_SECURE_NO_MULTIPLE_OUTSTANDING | LWIP_DNS_SECURE_RAND_SRC_PORT) +#endif + +/* A list of DNS security features follows */ +#define LWIP_DNS_SECURE_RAND_XID 1 +#define LWIP_DNS_SECURE_NO_MULTIPLE_OUTSTANDING 2 +#define LWIP_DNS_SECURE_RAND_SRC_PORT 4 + +/** DNS_LOCAL_HOSTLIST: Implements a local host-to-address list. If enabled, you have to define an initializer: + * \#define DNS_LOCAL_HOSTLIST_INIT {DNS_LOCAL_HOSTLIST_ELEM("host_ip4", IPADDR4_INIT_BYTES(1,2,3,4)), \ + * DNS_LOCAL_HOSTLIST_ELEM("host_ip6", IPADDR6_INIT_HOST(123, 234, 345, 456)} + * + * Instead, you can also use an external function: + * \#define DNS_LOOKUP_LOCAL_EXTERN(x) extern err_t my_lookup_function(const char *name, ip_addr_t *addr, u8_t dns_addrtype) + * that looks up the IP address and returns ERR_OK if found (LWIP_DNS_ADDRTYPE_xxx is passed in dns_addrtype). + */ +#if !defined DNS_LOCAL_HOSTLIST || defined __DOXYGEN__ +#define DNS_LOCAL_HOSTLIST 0 +#endif /* DNS_LOCAL_HOSTLIST */ + +/** If this is turned on, the local host-list can be dynamically changed + * at runtime. */ +#if !defined DNS_LOCAL_HOSTLIST_IS_DYNAMIC || defined __DOXYGEN__ +#define DNS_LOCAL_HOSTLIST_IS_DYNAMIC 0 +#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */ + +/** Set this to 1 to enable querying ".local" names via mDNS + * using a One-Shot Multicast DNS Query */ +#if !defined LWIP_DNS_SUPPORT_MDNS_QUERIES || defined __DOXYGEN__ +#define LWIP_DNS_SUPPORT_MDNS_QUERIES 0 +#endif +/** + * @} + */ + +/* + --------------------------------- + ---------- UDP options ---------- + --------------------------------- +*/ +/** + * @defgroup lwip_opts_udp UDP + * @ingroup lwip_opts_callback + * @{ + */ +/** + * LWIP_UDP==1: Turn on UDP. + */ +#if !defined LWIP_UDP || defined __DOXYGEN__ +#define LWIP_UDP 1 +#endif + +/** + * LWIP_UDPLITE==1: Turn on UDP-Lite. (Requires LWIP_UDP) + */ +#if !defined LWIP_UDPLITE || defined __DOXYGEN__ +#define LWIP_UDPLITE 0 +#endif + +/** + * UDP_TTL: Default Time-To-Live value. + */ +#if !defined UDP_TTL || defined __DOXYGEN__ +#define UDP_TTL (IP_DEFAULT_TTL) +#endif + +/** + * LWIP_NETBUF_RECVINFO==1: append destination addr and port to every netbuf. + */ +#if !defined LWIP_NETBUF_RECVINFO || defined __DOXYGEN__ +#define LWIP_NETBUF_RECVINFO 0 +#endif +/** + * @} + */ + +/* + --------------------------------- + ---------- TCP options ---------- + --------------------------------- +*/ +/** + * @defgroup lwip_opts_tcp TCP + * @ingroup lwip_opts_callback + * @{ + */ +/** + * LWIP_TCP==1: Turn on TCP. + */ +#if !defined LWIP_TCP || defined __DOXYGEN__ +#define LWIP_TCP 1 +#endif + +/** + * TCP_TTL: Default Time-To-Live value. + */ +#if !defined TCP_TTL || defined __DOXYGEN__ +#define TCP_TTL (IP_DEFAULT_TTL) +#endif + +/** + * TCP_WND: The size of a TCP window. This must be at least + * (2 * TCP_MSS) for things to work well. + * ATTENTION: when using TCP_RCV_SCALE, TCP_WND is the total size + * with scaling applied. Maximum window value in the TCP header + * will be TCP_WND >> TCP_RCV_SCALE + */ +#if !defined TCP_WND || defined __DOXYGEN__ +#define TCP_WND (4 * TCP_MSS) +#endif + +/** + * TCP_MAXRTX: Maximum number of retransmissions of data segments. + */ +#if !defined TCP_MAXRTX || defined __DOXYGEN__ +#define TCP_MAXRTX 12 +#endif + +/** + * TCP_SYNMAXRTX: Maximum number of retransmissions of SYN segments. + */ +#if !defined TCP_SYNMAXRTX || defined __DOXYGEN__ +#define TCP_SYNMAXRTX 6 +#endif + +/** + * TCP_QUEUE_OOSEQ==1: TCP will queue segments that arrive out of order. + * Define to 0 if your device is low on memory. + */ +#if !defined TCP_QUEUE_OOSEQ || defined __DOXYGEN__ +#define TCP_QUEUE_OOSEQ (LWIP_TCP) +#endif + +/** + * TCP_MSS: TCP Maximum segment size. (default is 536, a conservative default, + * you might want to increase this.) + * For the receive side, this MSS is advertised to the remote side + * when opening a connection. For the transmit size, this MSS sets + * an upper limit on the MSS advertised by the remote host. + */ +#if !defined TCP_MSS || defined __DOXYGEN__ +#define TCP_MSS 536 +#endif + +/** + * TCP_CALCULATE_EFF_SEND_MSS: "The maximum size of a segment that TCP really + * sends, the 'effective send MSS,' MUST be the smaller of the send MSS (which + * reflects the available reassembly buffer size at the remote host) and the + * largest size permitted by the IP layer" (RFC 1122) + * Setting this to 1 enables code that checks TCP_MSS against the MTU of the + * netif used for a connection and limits the MSS if it would be too big otherwise. + */ +#if !defined TCP_CALCULATE_EFF_SEND_MSS || defined __DOXYGEN__ +#define TCP_CALCULATE_EFF_SEND_MSS 1 +#endif + + +/** + * TCP_SND_BUF: TCP sender buffer space (bytes). + * To achieve good performance, this should be at least 2 * TCP_MSS. + */ +#if !defined TCP_SND_BUF || defined __DOXYGEN__ +#define TCP_SND_BUF (2 * TCP_MSS) +#endif + +/** + * TCP_SND_QUEUELEN: TCP sender buffer space (pbufs). This must be at least + * as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work. + */ +#if !defined TCP_SND_QUEUELEN || defined __DOXYGEN__ +#define TCP_SND_QUEUELEN ((4 * (TCP_SND_BUF) + (TCP_MSS - 1))/(TCP_MSS)) +#endif + +/** + * TCP_SNDLOWAT: TCP writable space (bytes). This must be less than + * TCP_SND_BUF. It is the amount of space which must be available in the + * TCP snd_buf for select to return writable (combined with TCP_SNDQUEUELOWAT). + */ +#if !defined TCP_SNDLOWAT || defined __DOXYGEN__ +#define TCP_SNDLOWAT LWIP_MIN(LWIP_MAX(((TCP_SND_BUF)/2), (2 * TCP_MSS) + 1), (TCP_SND_BUF) - 1) +#endif + +/** + * TCP_SNDQUEUELOWAT: TCP writable bufs (pbuf count). This must be less + * than TCP_SND_QUEUELEN. If the number of pbufs queued on a pcb drops below + * this number, select returns writable (combined with TCP_SNDLOWAT). + */ +#if !defined TCP_SNDQUEUELOWAT || defined __DOXYGEN__ +#define TCP_SNDQUEUELOWAT LWIP_MAX(((TCP_SND_QUEUELEN)/2), 5) +#endif + +/** + * TCP_OOSEQ_MAX_BYTES: The maximum number of bytes queued on ooseq per pcb. + * Default is 0 (no limit). Only valid for TCP_QUEUE_OOSEQ==1. + */ +#if !defined TCP_OOSEQ_MAX_BYTES || defined __DOXYGEN__ +#define TCP_OOSEQ_MAX_BYTES 0 +#endif + +/** + * TCP_OOSEQ_MAX_PBUFS: The maximum number of pbufs queued on ooseq per pcb. + * Default is 0 (no limit). Only valid for TCP_QUEUE_OOSEQ==1. + */ +#if !defined TCP_OOSEQ_MAX_PBUFS || defined __DOXYGEN__ +#define TCP_OOSEQ_MAX_PBUFS 0 +#endif + +/** + * TCP_LISTEN_BACKLOG: Enable the backlog option for tcp listen pcb. + */ +#if !defined TCP_LISTEN_BACKLOG || defined __DOXYGEN__ +#define TCP_LISTEN_BACKLOG 0 +#endif + +/** + * The maximum allowed backlog for TCP listen netconns. + * This backlog is used unless another is explicitly specified. + * 0xff is the maximum (u8_t). + */ +#if !defined TCP_DEFAULT_LISTEN_BACKLOG || defined __DOXYGEN__ +#define TCP_DEFAULT_LISTEN_BACKLOG 0xff +#endif + +/** + * TCP_OVERSIZE: The maximum number of bytes that tcp_write may + * allocate ahead of time in an attempt to create shorter pbuf chains + * for transmission. The meaningful range is 0 to TCP_MSS. Some + * suggested values are: + * + * 0: Disable oversized allocation. Each tcp_write() allocates a new + pbuf (old behaviour). + * 1: Allocate size-aligned pbufs with minimal excess. Use this if your + * scatter-gather DMA requires aligned fragments. + * 128: Limit the pbuf/memory overhead to 20%. + * TCP_MSS: Try to create unfragmented TCP packets. + * TCP_MSS/4: Try to create 4 fragments or less per TCP packet. + */ +#if !defined TCP_OVERSIZE || defined __DOXYGEN__ +#define TCP_OVERSIZE TCP_MSS +#endif + +/** + * LWIP_TCP_TIMESTAMPS==1: support the TCP timestamp option. + * The timestamp option is currently only used to help remote hosts, it is not + * really used locally. Therefore, it is only enabled when a TS option is + * received in the initial SYN packet from a remote host. + */ +#if !defined LWIP_TCP_TIMESTAMPS || defined __DOXYGEN__ +#define LWIP_TCP_TIMESTAMPS 0 +#endif + +/** + * TCP_WND_UPDATE_THRESHOLD: difference in window to trigger an + * explicit window update + */ +#if !defined TCP_WND_UPDATE_THRESHOLD || defined __DOXYGEN__ +#define TCP_WND_UPDATE_THRESHOLD LWIP_MIN((TCP_WND / 4), (TCP_MSS * 4)) +#endif + +/** + * LWIP_EVENT_API and LWIP_CALLBACK_API: Only one of these should be set to 1. + * LWIP_EVENT_API==1: The user defines lwip_tcp_event() to receive all + * events (accept, sent, etc) that happen in the system. + * LWIP_CALLBACK_API==1: The PCB callback function is called directly + * for the event. This is the default. + */ +#if !defined(LWIP_EVENT_API) && !defined(LWIP_CALLBACK_API) || defined __DOXYGEN__ +#define LWIP_EVENT_API 0 +#define LWIP_CALLBACK_API 1 +#else +#ifndef LWIP_EVENT_API +#define LWIP_EVENT_API 0 +#endif +#ifndef LWIP_CALLBACK_API +#define LWIP_CALLBACK_API 0 +#endif +#endif + +/** + * LWIP_WND_SCALE and TCP_RCV_SCALE: + * Set LWIP_WND_SCALE to 1 to enable window scaling. + * Set TCP_RCV_SCALE to the desired scaling factor (shift count in the + * range of [0..14]). + * When LWIP_WND_SCALE is enabled but TCP_RCV_SCALE is 0, we can use a large + * send window while having a small receive window only. + */ +#if !defined LWIP_WND_SCALE || defined __DOXYGEN__ +#define LWIP_WND_SCALE 0 +#define TCP_RCV_SCALE 0 +#endif +/** + * @} + */ + +/* + ---------------------------------- + ---------- Pbuf options ---------- + ---------------------------------- +*/ +/** + * @defgroup lwip_opts_pbuf PBUF + * @ingroup lwip_opts + * @{ + */ +/** + * PBUF_LINK_HLEN: the number of bytes that should be allocated for a + * link level header. The default is 14, the standard value for + * Ethernet. + */ +#if !defined PBUF_LINK_HLEN || defined __DOXYGEN__ +#if defined LWIP_HOOK_VLAN_SET && !defined __DOXYGEN__ +#define PBUF_LINK_HLEN (18 + ETH_PAD_SIZE) +#else /* LWIP_HOOK_VLAN_SET */ +#define PBUF_LINK_HLEN (14 + ETH_PAD_SIZE) +#endif /* LWIP_HOOK_VLAN_SET */ +#endif + +/** + * PBUF_LINK_ENCAPSULATION_HLEN: the number of bytes that should be allocated + * for an additional encapsulation header before ethernet headers (e.g. 802.11) + */ +#if !defined PBUF_LINK_ENCAPSULATION_HLEN || defined __DOXYGEN__ +#define PBUF_LINK_ENCAPSULATION_HLEN 0u +#endif + +/** + * PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. The default is + * designed to accommodate single full size TCP frame in one pbuf, including + * TCP_MSS, IP header, and link header. + */ +#if !defined PBUF_POOL_BUFSIZE || defined __DOXYGEN__ +#define PBUF_POOL_BUFSIZE LWIP_MEM_ALIGN_SIZE(TCP_MSS+40+PBUF_LINK_ENCAPSULATION_HLEN+PBUF_LINK_HLEN) +#endif +/** + * @} + */ + +/* + ------------------------------------------------ + ---------- Network Interfaces options ---------- + ------------------------------------------------ +*/ +/** + * @defgroup lwip_opts_netif NETIF + * @ingroup lwip_opts + * @{ + */ +/** + * LWIP_NETIF_HOSTNAME==1: use DHCP_OPTION_HOSTNAME with netif's hostname + * field. + */ +#if !defined LWIP_NETIF_HOSTNAME || defined __DOXYGEN__ +#define LWIP_NETIF_HOSTNAME 0 +#endif + +/** + * LWIP_NETIF_API==1: Support netif api (in netifapi.c) + */ +#if !defined LWIP_NETIF_API || defined __DOXYGEN__ +#define LWIP_NETIF_API 0 +#endif + +/** + * LWIP_NETIF_STATUS_CALLBACK==1: Support a callback function whenever an interface + * changes its up/down status (i.e., due to DHCP IP acquisition) + */ +#if !defined LWIP_NETIF_STATUS_CALLBACK || defined __DOXYGEN__ +#define LWIP_NETIF_STATUS_CALLBACK 0 +#endif + +/** + * LWIP_NETIF_LINK_CALLBACK==1: Support a callback function from an interface + * whenever the link changes (i.e., link down) + */ +#if !defined LWIP_NETIF_LINK_CALLBACK || defined __DOXYGEN__ +#define LWIP_NETIF_LINK_CALLBACK 0 +#endif + +/** + * LWIP_NETIF_REMOVE_CALLBACK==1: Support a callback function that is called + * when a netif has been removed + */ +#if !defined LWIP_NETIF_REMOVE_CALLBACK || defined __DOXYGEN__ +#define LWIP_NETIF_REMOVE_CALLBACK 0 +#endif + +/** + * LWIP_NETIF_HWADDRHINT==1: Cache link-layer-address hints (e.g. table + * indices) in struct netif. TCP and UDP can make use of this to prevent + * scanning the ARP table for every sent packet. While this is faster for big + * ARP tables or many concurrent connections, it might be counterproductive + * if you have a tiny ARP table or if there never are concurrent connections. + */ +#if !defined LWIP_NETIF_HWADDRHINT || defined __DOXYGEN__ +#define LWIP_NETIF_HWADDRHINT 0 +#endif + +/** + * LWIP_NETIF_TX_SINGLE_PBUF: if this is set to 1, lwIP tries to put all data + * to be sent into one single pbuf. This is for compatibility with DMA-enabled + * MACs that do not support scatter-gather. + * Beware that this might involve CPU-memcpy before transmitting that would not + * be needed without this flag! Use this only if you need to! + * + * @todo: TCP and IP-frag do not work with this, yet: + */ +#if !defined LWIP_NETIF_TX_SINGLE_PBUF || defined __DOXYGEN__ +#define LWIP_NETIF_TX_SINGLE_PBUF 0 +#endif /* LWIP_NETIF_TX_SINGLE_PBUF */ + +/** + * LWIP_NUM_NETIF_CLIENT_DATA: Number of clients that may store + * data in client_data member array of struct netif. + */ +#if !defined LWIP_NUM_NETIF_CLIENT_DATA || defined __DOXYGEN__ +#define LWIP_NUM_NETIF_CLIENT_DATA 0 +#endif +/** + * @} + */ + +/* + ------------------------------------ + ---------- LOOPIF options ---------- + ------------------------------------ +*/ +/** + * @defgroup lwip_opts_loop Loopback interface + * @ingroup lwip_opts_netif + * @{ + */ +/** + * LWIP_HAVE_LOOPIF==1: Support loop interface (127.0.0.1). + * This is only needed when no real netifs are available. If at least one other + * netif is available, loopback traffic uses this netif. + */ +#if !defined LWIP_HAVE_LOOPIF || defined __DOXYGEN__ +#define LWIP_HAVE_LOOPIF LWIP_NETIF_LOOPBACK +#endif + +/** + * LWIP_LOOPIF_MULTICAST==1: Support multicast/IGMP on loop interface (127.0.0.1). + */ +#if !defined LWIP_LOOPIF_MULTICAST || defined __DOXYGEN__ +#define LWIP_LOOPIF_MULTICAST 0 +#endif + +/** + * LWIP_NETIF_LOOPBACK==1: Support sending packets with a destination IP + * address equal to the netif IP address, looping them back up the stack. + */ +#if !defined LWIP_NETIF_LOOPBACK || defined __DOXYGEN__ +#define LWIP_NETIF_LOOPBACK 0 +#endif + +/** + * LWIP_LOOPBACK_MAX_PBUFS: Maximum number of pbufs on queue for loopback + * sending for each netif (0 = disabled) + */ +#if !defined LWIP_LOOPBACK_MAX_PBUFS || defined __DOXYGEN__ +#define LWIP_LOOPBACK_MAX_PBUFS 0 +#endif + +/** + * LWIP_NETIF_LOOPBACK_MULTITHREADING: Indicates whether threading is enabled in + * the system, as netifs must change how they behave depending on this setting + * for the LWIP_NETIF_LOOPBACK option to work. + * Setting this is needed to avoid reentering non-reentrant functions like + * tcp_input(). + * LWIP_NETIF_LOOPBACK_MULTITHREADING==1: Indicates that the user is using a + * multithreaded environment like tcpip.c. In this case, netif->input() + * is called directly. + * LWIP_NETIF_LOOPBACK_MULTITHREADING==0: Indicates a polling (or NO_SYS) setup. + * The packets are put on a list and netif_poll() must be called in + * the main application loop. + */ +#if !defined LWIP_NETIF_LOOPBACK_MULTITHREADING || defined __DOXYGEN__ +#define LWIP_NETIF_LOOPBACK_MULTITHREADING (!NO_SYS) +#endif +/** + * @} + */ + +/* + ------------------------------------ + ---------- Thread options ---------- + ------------------------------------ +*/ +/** + * @defgroup lwip_opts_thread Threading + * @ingroup lwip_opts_infrastructure + * @{ + */ +/** + * TCPIP_THREAD_NAME: The name assigned to the main tcpip thread. + */ +#if !defined TCPIP_THREAD_NAME || defined __DOXYGEN__ +#define TCPIP_THREAD_NAME "tcpip_thread" +#endif + +/** + * TCPIP_THREAD_STACKSIZE: The stack size used by the main tcpip thread. + * The stack size value itself is platform-dependent, but is passed to + * sys_thread_new() when the thread is created. + */ +#if !defined TCPIP_THREAD_STACKSIZE || defined __DOXYGEN__ +#define TCPIP_THREAD_STACKSIZE 0 +#endif + +/** + * TCPIP_THREAD_PRIO: The priority assigned to the main tcpip thread. + * The priority value itself is platform-dependent, but is passed to + * sys_thread_new() when the thread is created. + */ +#if !defined TCPIP_THREAD_PRIO || defined __DOXYGEN__ +#define TCPIP_THREAD_PRIO 1 +#endif + +/** + * TCPIP_MBOX_SIZE: The mailbox size for the tcpip thread messages + * The queue size value itself is platform-dependent, but is passed to + * sys_mbox_new() when tcpip_init is called. + */ +#if !defined TCPIP_MBOX_SIZE || defined __DOXYGEN__ +#define TCPIP_MBOX_SIZE 0 +#endif + +/** + * Define this to something that triggers a watchdog. This is called from + * tcpip_thread after processing a message. + */ +#if !defined LWIP_TCPIP_THREAD_ALIVE || defined __DOXYGEN__ +#define LWIP_TCPIP_THREAD_ALIVE() +#endif + +/** + * SLIPIF_THREAD_NAME: The name assigned to the slipif_loop thread. + */ +#if !defined SLIPIF_THREAD_NAME || defined __DOXYGEN__ +#define SLIPIF_THREAD_NAME "slipif_loop" +#endif + +/** + * SLIP_THREAD_STACKSIZE: The stack size used by the slipif_loop thread. + * The stack size value itself is platform-dependent, but is passed to + * sys_thread_new() when the thread is created. + */ +#if !defined SLIPIF_THREAD_STACKSIZE || defined __DOXYGEN__ +#define SLIPIF_THREAD_STACKSIZE 0 +#endif + +/** + * SLIPIF_THREAD_PRIO: The priority assigned to the slipif_loop thread. + * The priority value itself is platform-dependent, but is passed to + * sys_thread_new() when the thread is created. + */ +#if !defined SLIPIF_THREAD_PRIO || defined __DOXYGEN__ +#define SLIPIF_THREAD_PRIO 1 +#endif + +/** + * DEFAULT_THREAD_NAME: The name assigned to any other lwIP thread. + */ +#if !defined DEFAULT_THREAD_NAME || defined __DOXYGEN__ +#define DEFAULT_THREAD_NAME "lwIP" +#endif + +/** + * DEFAULT_THREAD_STACKSIZE: The stack size used by any other lwIP thread. + * The stack size value itself is platform-dependent, but is passed to + * sys_thread_new() when the thread is created. + */ +#if !defined DEFAULT_THREAD_STACKSIZE || defined __DOXYGEN__ +#define DEFAULT_THREAD_STACKSIZE 0 +#endif + +/** + * DEFAULT_THREAD_PRIO: The priority assigned to any other lwIP thread. + * The priority value itself is platform-dependent, but is passed to + * sys_thread_new() when the thread is created. + */ +#if !defined DEFAULT_THREAD_PRIO || defined __DOXYGEN__ +#define DEFAULT_THREAD_PRIO 1 +#endif + +/** + * DEFAULT_RAW_RECVMBOX_SIZE: The mailbox size for the incoming packets on a + * NETCONN_RAW. The queue size value itself is platform-dependent, but is passed + * to sys_mbox_new() when the recvmbox is created. + */ +#if !defined DEFAULT_RAW_RECVMBOX_SIZE || defined __DOXYGEN__ +#define DEFAULT_RAW_RECVMBOX_SIZE 0 +#endif + +/** + * DEFAULT_UDP_RECVMBOX_SIZE: The mailbox size for the incoming packets on a + * NETCONN_UDP. The queue size value itself is platform-dependent, but is passed + * to sys_mbox_new() when the recvmbox is created. + */ +#if !defined DEFAULT_UDP_RECVMBOX_SIZE || defined __DOXYGEN__ +#define DEFAULT_UDP_RECVMBOX_SIZE 0 +#endif + +/** + * DEFAULT_TCP_RECVMBOX_SIZE: The mailbox size for the incoming packets on a + * NETCONN_TCP. The queue size value itself is platform-dependent, but is passed + * to sys_mbox_new() when the recvmbox is created. + */ +#if !defined DEFAULT_TCP_RECVMBOX_SIZE || defined __DOXYGEN__ +#define DEFAULT_TCP_RECVMBOX_SIZE 0 +#endif + +/** + * DEFAULT_ACCEPTMBOX_SIZE: The mailbox size for the incoming connections. + * The queue size value itself is platform-dependent, but is passed to + * sys_mbox_new() when the acceptmbox is created. + */ +#if !defined DEFAULT_ACCEPTMBOX_SIZE || defined __DOXYGEN__ +#define DEFAULT_ACCEPTMBOX_SIZE 0 +#endif +/** + * @} + */ + +/* + ---------------------------------------------- + ---------- Sequential layer options ---------- + ---------------------------------------------- +*/ +/** + * @defgroup lwip_opts_netconn Netconn + * @ingroup lwip_opts_threadsafe_apis + * @{ + */ +/** + * LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c) + */ +#if !defined LWIP_NETCONN || defined __DOXYGEN__ +#define LWIP_NETCONN 1 +#endif + +/** LWIP_TCPIP_TIMEOUT==1: Enable tcpip_timeout/tcpip_untimeout to create + * timers running in tcpip_thread from another thread. + */ +#if !defined LWIP_TCPIP_TIMEOUT || defined __DOXYGEN__ +#define LWIP_TCPIP_TIMEOUT 0 +#endif + +/** LWIP_NETCONN_SEM_PER_THREAD==1: Use one (thread-local) semaphore per + * thread calling socket/netconn functions instead of allocating one + * semaphore per netconn (and per select etc.) + * ATTENTION: a thread-local semaphore for API calls is needed: + * - LWIP_NETCONN_THREAD_SEM_GET() returning a sys_sem_t* + * - LWIP_NETCONN_THREAD_SEM_ALLOC() creating the semaphore + * - LWIP_NETCONN_THREAD_SEM_FREE() freeing the semaphore + * The latter 2 can be invoked up by calling netconn_thread_init()/netconn_thread_cleanup(). + * Ports may call these for threads created with sys_thread_new(). + */ +#if !defined LWIP_NETCONN_SEM_PER_THREAD || defined __DOXYGEN__ +#define LWIP_NETCONN_SEM_PER_THREAD 0 +#endif + +/** LWIP_NETCONN_FULLDUPLEX==1: Enable code that allows reading from one thread, + * writing from a 2nd thread and closing from a 3rd thread at the same time. + * ATTENTION: This is currently really alpha! Some requirements: + * - LWIP_NETCONN_SEM_PER_THREAD==1 is required to use one socket/netconn from + * multiple threads at once + * - sys_mbox_free() has to unblock receive tasks waiting on recvmbox/acceptmbox + * and prevent a task pending on this during/after deletion + */ +#if !defined LWIP_NETCONN_FULLDUPLEX || defined __DOXYGEN__ +#define LWIP_NETCONN_FULLDUPLEX 0 +#endif +/** + * @} + */ + +/* + ------------------------------------ + ---------- Socket options ---------- + ------------------------------------ +*/ +/** + * @defgroup lwip_opts_socket Sockets + * @ingroup lwip_opts_threadsafe_apis + * @{ + */ +/** + * LWIP_SOCKET==1: Enable Socket API (require to use sockets.c) + */ +#if !defined LWIP_SOCKET || defined __DOXYGEN__ +#define LWIP_SOCKET 1 +#endif + +/* LWIP_SOCKET_SET_ERRNO==1: Set errno when socket functions cannot complete + * successfully, as required by POSIX. Default is POSIX-compliant. + */ +#if !defined LWIP_SOCKET_SET_ERRNO || defined __DOXYGEN__ +#define LWIP_SOCKET_SET_ERRNO 1 +#endif + +/** + * LWIP_COMPAT_SOCKETS==1: Enable BSD-style sockets functions names through defines. + * LWIP_COMPAT_SOCKETS==2: Same as ==1 but correctly named functions are created. + * While this helps code completion, it might conflict with existing libraries. + * (only used if you use sockets.c) + */ +#if !defined LWIP_COMPAT_SOCKETS || defined __DOXYGEN__ +#define LWIP_COMPAT_SOCKETS 1 +#endif + +/** + * LWIP_POSIX_SOCKETS_IO_NAMES==1: Enable POSIX-style sockets functions names. + * Disable this option if you use a POSIX operating system that uses the same + * names (read, write & close). (only used if you use sockets.c) + */ +#if !defined LWIP_POSIX_SOCKETS_IO_NAMES || defined __DOXYGEN__ +#define LWIP_POSIX_SOCKETS_IO_NAMES 1 +#endif + +/** + * LWIP_SOCKET_OFFSET==n: Increases the file descriptor number created by LwIP with n. + * This can be useful when there are multiple APIs which create file descriptors. + * When they all start with a different offset and you won't make them overlap you can + * re implement read/write/close/ioctl/fnctl to send the requested action to the right + * library (sharing select will need more work though). + */ +#if !defined LWIP_SOCKET_OFFSET || defined __DOXYGEN__ +#define LWIP_SOCKET_OFFSET 0 +#endif + +/** + * LWIP_TCP_KEEPALIVE==1: Enable TCP_KEEPIDLE, TCP_KEEPINTVL and TCP_KEEPCNT + * options processing. Note that TCP_KEEPIDLE and TCP_KEEPINTVL have to be set + * in seconds. (does not require sockets.c, and will affect tcp.c) + */ +#if !defined LWIP_TCP_KEEPALIVE || defined __DOXYGEN__ +#define LWIP_TCP_KEEPALIVE 0 +#endif + +/** + * LWIP_SO_SNDTIMEO==1: Enable send timeout for sockets/netconns and + * SO_SNDTIMEO processing. + */ +#if !defined LWIP_SO_SNDTIMEO || defined __DOXYGEN__ +#define LWIP_SO_SNDTIMEO 0 +#endif + +/** + * LWIP_SO_RCVTIMEO==1: Enable receive timeout for sockets/netconns and + * SO_RCVTIMEO processing. + */ +#if !defined LWIP_SO_RCVTIMEO || defined __DOXYGEN__ +#define LWIP_SO_RCVTIMEO 0 +#endif + +/** + * LWIP_SO_SNDRCVTIMEO_NONSTANDARD==1: SO_RCVTIMEO/SO_SNDTIMEO take an int + * (milliseconds, much like winsock does) instead of a struct timeval (default). + */ +#if !defined LWIP_SO_SNDRCVTIMEO_NONSTANDARD || defined __DOXYGEN__ +#define LWIP_SO_SNDRCVTIMEO_NONSTANDARD 0 +#endif + +/** + * LWIP_SO_RCVBUF==1: Enable SO_RCVBUF processing. + */ +#if !defined LWIP_SO_RCVBUF || defined __DOXYGEN__ +#define LWIP_SO_RCVBUF 0 +#endif + +/** + * LWIP_SO_LINGER==1: Enable SO_LINGER processing. + */ +#if !defined LWIP_SO_LINGER || defined __DOXYGEN__ +#define LWIP_SO_LINGER 0 +#endif + +/** + * If LWIP_SO_RCVBUF is used, this is the default value for recv_bufsize. + */ +#if !defined RECV_BUFSIZE_DEFAULT || defined __DOXYGEN__ +#define RECV_BUFSIZE_DEFAULT INT_MAX +#endif + +/** + * By default, TCP socket/netconn close waits 20 seconds max to send the FIN + */ +#if !defined LWIP_TCP_CLOSE_TIMEOUT_MS_DEFAULT || defined __DOXYGEN__ +#define LWIP_TCP_CLOSE_TIMEOUT_MS_DEFAULT 20000 +#endif + +/** + * SO_REUSE==1: Enable SO_REUSEADDR option. + */ +#if !defined SO_REUSE || defined __DOXYGEN__ +#define SO_REUSE 0 +#endif + +/** + * SO_REUSE_RXTOALL==1: Pass a copy of incoming broadcast/multicast packets + * to all local matches if SO_REUSEADDR is turned on. + * WARNING: Adds a memcpy for every packet if passing to more than one pcb! + */ +#if !defined SO_REUSE_RXTOALL || defined __DOXYGEN__ +#define SO_REUSE_RXTOALL 0 +#endif + +/** + * LWIP_FIONREAD_LINUXMODE==0 (default): ioctl/FIONREAD returns the amount of + * pending data in the network buffer. This is the way windows does it. It's + * the default for lwIP since it is smaller. + * LWIP_FIONREAD_LINUXMODE==1: ioctl/FIONREAD returns the size of the next + * pending datagram in bytes. This is the way linux does it. This code is only + * here for compatibility. + */ +#if !defined LWIP_FIONREAD_LINUXMODE || defined __DOXYGEN__ +#define LWIP_FIONREAD_LINUXMODE 0 +#endif +/** + * @} + */ + +/* + ---------------------------------------- + ---------- Statistics options ---------- + ---------------------------------------- +*/ +/** + * @defgroup lwip_opts_stats Statistics + * @ingroup lwip_opts_debug + * @{ + */ +/** + * LWIP_STATS==1: Enable statistics collection in lwip_stats. + */ +#if !defined LWIP_STATS || defined __DOXYGEN__ +#define LWIP_STATS 1 +#endif + +#if LWIP_STATS + +/** + * LWIP_STATS_DISPLAY==1: Compile in the statistics output functions. + */ +#if !defined LWIP_STATS_DISPLAY || defined __DOXYGEN__ +#define LWIP_STATS_DISPLAY 0 +#endif + +/** + * LINK_STATS==1: Enable link stats. + */ +#if !defined LINK_STATS || defined __DOXYGEN__ +#define LINK_STATS 1 +#endif + +/** + * ETHARP_STATS==1: Enable etharp stats. + */ +#if !defined ETHARP_STATS || defined __DOXYGEN__ +#define ETHARP_STATS (LWIP_ARP) +#endif + +/** + * IP_STATS==1: Enable IP stats. + */ +#if !defined IP_STATS || defined __DOXYGEN__ +#define IP_STATS 1 +#endif + +/** + * IPFRAG_STATS==1: Enable IP fragmentation stats. Default is + * on if using either frag or reass. + */ +#if !defined IPFRAG_STATS || defined __DOXYGEN__ +#define IPFRAG_STATS (IP_REASSEMBLY || IP_FRAG) +#endif + +/** + * ICMP_STATS==1: Enable ICMP stats. + */ +#if !defined ICMP_STATS || defined __DOXYGEN__ +#define ICMP_STATS 1 +#endif + +/** + * IGMP_STATS==1: Enable IGMP stats. + */ +#if !defined IGMP_STATS || defined __DOXYGEN__ +#define IGMP_STATS (LWIP_IGMP) +#endif + +/** + * UDP_STATS==1: Enable UDP stats. Default is on if + * UDP enabled, otherwise off. + */ +#if !defined UDP_STATS || defined __DOXYGEN__ +#define UDP_STATS (LWIP_UDP) +#endif + +/** + * TCP_STATS==1: Enable TCP stats. Default is on if TCP + * enabled, otherwise off. + */ +#if !defined TCP_STATS || defined __DOXYGEN__ +#define TCP_STATS (LWIP_TCP) +#endif + +/** + * MEM_STATS==1: Enable mem.c stats. + */ +#if !defined MEM_STATS || defined __DOXYGEN__ +#define MEM_STATS ((MEM_LIBC_MALLOC == 0) && (MEM_USE_POOLS == 0)) +#endif + +/** + * MEMP_STATS==1: Enable memp.c pool stats. + */ +#if !defined MEMP_STATS || defined __DOXYGEN__ +#define MEMP_STATS (MEMP_MEM_MALLOC == 0) +#endif + +/** + * SYS_STATS==1: Enable system stats (sem and mbox counts, etc). + */ +#if !defined SYS_STATS || defined __DOXYGEN__ +#define SYS_STATS (NO_SYS == 0) +#endif + +/** + * IP6_STATS==1: Enable IPv6 stats. + */ +#if !defined IP6_STATS || defined __DOXYGEN__ +#define IP6_STATS (LWIP_IPV6) +#endif + +/** + * ICMP6_STATS==1: Enable ICMP for IPv6 stats. + */ +#if !defined ICMP6_STATS || defined __DOXYGEN__ +#define ICMP6_STATS (LWIP_IPV6 && LWIP_ICMP6) +#endif + +/** + * IP6_FRAG_STATS==1: Enable IPv6 fragmentation stats. + */ +#if !defined IP6_FRAG_STATS || defined __DOXYGEN__ +#define IP6_FRAG_STATS (LWIP_IPV6 && (LWIP_IPV6_FRAG || LWIP_IPV6_REASS)) +#endif + +/** + * MLD6_STATS==1: Enable MLD for IPv6 stats. + */ +#if !defined MLD6_STATS || defined __DOXYGEN__ +#define MLD6_STATS (LWIP_IPV6 && LWIP_IPV6_MLD) +#endif + +/** + * ND6_STATS==1: Enable Neighbor discovery for IPv6 stats. + */ +#if !defined ND6_STATS || defined __DOXYGEN__ +#define ND6_STATS (LWIP_IPV6) +#endif + +/** + * MIB2_STATS==1: Stats for SNMP MIB2. + */ +#if !defined MIB2_STATS || defined __DOXYGEN__ +#define MIB2_STATS 0 +#endif + +#else + +#define LINK_STATS 0 +#define ETHARP_STATS 0 +#define IP_STATS 0 +#define IPFRAG_STATS 0 +#define ICMP_STATS 0 +#define IGMP_STATS 0 +#define UDP_STATS 0 +#define TCP_STATS 0 +#define MEM_STATS 0 +#define MEMP_STATS 0 +#define SYS_STATS 0 +#define LWIP_STATS_DISPLAY 0 +#define IP6_STATS 0 +#define ICMP6_STATS 0 +#define IP6_FRAG_STATS 0 +#define MLD6_STATS 0 +#define ND6_STATS 0 +#define MIB2_STATS 0 + +#endif /* LWIP_STATS */ +/** + * @} + */ + +/* + -------------------------------------- + ---------- Checksum options ---------- + -------------------------------------- +*/ +/** + * @defgroup lwip_opts_checksum Checksum + * @ingroup lwip_opts_infrastructure + * @{ + */ +/** + * LWIP_CHECKSUM_CTRL_PER_NETIF==1: Checksum generation/check can be enabled/disabled + * per netif. + * ATTENTION: if enabled, the CHECKSUM_GEN_* and CHECKSUM_CHECK_* defines must be enabled! + */ +#if !defined LWIP_CHECKSUM_CTRL_PER_NETIF || defined __DOXYGEN__ +#define LWIP_CHECKSUM_CTRL_PER_NETIF 0 +#endif + +/** + * CHECKSUM_GEN_IP==1: Generate checksums in software for outgoing IP packets. + */ +#if !defined CHECKSUM_GEN_IP || defined __DOXYGEN__ +#define CHECKSUM_GEN_IP 1 +#endif + +/** + * CHECKSUM_GEN_UDP==1: Generate checksums in software for outgoing UDP packets. + */ +#if !defined CHECKSUM_GEN_UDP || defined __DOXYGEN__ +#define CHECKSUM_GEN_UDP 1 +#endif + +/** + * CHECKSUM_GEN_TCP==1: Generate checksums in software for outgoing TCP packets. + */ +#if !defined CHECKSUM_GEN_TCP || defined __DOXYGEN__ +#define CHECKSUM_GEN_TCP 1 +#endif + +/** + * CHECKSUM_GEN_ICMP==1: Generate checksums in software for outgoing ICMP packets. + */ +#if !defined CHECKSUM_GEN_ICMP || defined __DOXYGEN__ +#define CHECKSUM_GEN_ICMP 1 +#endif + +/** + * CHECKSUM_GEN_ICMP6==1: Generate checksums in software for outgoing ICMP6 packets. + */ +#if !defined CHECKSUM_GEN_ICMP6 || defined __DOXYGEN__ +#define CHECKSUM_GEN_ICMP6 1 +#endif + +/** + * CHECKSUM_CHECK_IP==1: Check checksums in software for incoming IP packets. + */ +#if !defined CHECKSUM_CHECK_IP || defined __DOXYGEN__ +#define CHECKSUM_CHECK_IP 1 +#endif + +/** + * CHECKSUM_CHECK_UDP==1: Check checksums in software for incoming UDP packets. + */ +#if !defined CHECKSUM_CHECK_UDP || defined __DOXYGEN__ +#define CHECKSUM_CHECK_UDP 1 +#endif + +/** + * CHECKSUM_CHECK_TCP==1: Check checksums in software for incoming TCP packets. + */ +#if !defined CHECKSUM_CHECK_TCP || defined __DOXYGEN__ +#define CHECKSUM_CHECK_TCP 1 +#endif + +/** + * CHECKSUM_CHECK_ICMP==1: Check checksums in software for incoming ICMP packets. + */ +#if !defined CHECKSUM_CHECK_ICMP || defined __DOXYGEN__ +#define CHECKSUM_CHECK_ICMP 1 +#endif + +/** + * CHECKSUM_CHECK_ICMP6==1: Check checksums in software for incoming ICMPv6 packets + */ +#if !defined CHECKSUM_CHECK_ICMP6 || defined __DOXYGEN__ +#define CHECKSUM_CHECK_ICMP6 1 +#endif + +/** + * LWIP_CHECKSUM_ON_COPY==1: Calculate checksum when copying data from + * application buffers to pbufs. + */ +#if !defined LWIP_CHECKSUM_ON_COPY || defined __DOXYGEN__ +#define LWIP_CHECKSUM_ON_COPY 0 +#endif +/** + * @} + */ + +/* + --------------------------------------- + ---------- IPv6 options --------------- + --------------------------------------- +*/ +/** + * @defgroup lwip_opts_ipv6 IPv6 + * @ingroup lwip_opts + * @{ + */ +/** + * LWIP_IPV6==1: Enable IPv6 + */ +#if !defined LWIP_IPV6 || defined __DOXYGEN__ +#define LWIP_IPV6 0 +#endif + +/** + * LWIP_IPV6_NUM_ADDRESSES: Number of IPv6 addresses per netif. + */ +#if !defined LWIP_IPV6_NUM_ADDRESSES || defined __DOXYGEN__ +#define LWIP_IPV6_NUM_ADDRESSES 3 +#endif + +/** + * LWIP_IPV6_FORWARD==1: Forward IPv6 packets across netifs + */ +#if !defined LWIP_IPV6_FORWARD || defined __DOXYGEN__ +#define LWIP_IPV6_FORWARD 0 +#endif + +/** + * LWIP_IPV6_FRAG==1: Fragment outgoing IPv6 packets that are too big. + */ +#if !defined LWIP_IPV6_FRAG || defined __DOXYGEN__ +#define LWIP_IPV6_FRAG 0 +#endif + +/** + * LWIP_IPV6_REASS==1: reassemble incoming IPv6 packets that fragmented + */ +#if !defined LWIP_IPV6_REASS || defined __DOXYGEN__ +#define LWIP_IPV6_REASS (LWIP_IPV6) +#endif + +/** + * LWIP_IPV6_SEND_ROUTER_SOLICIT==1: Send router solicitation messages during + * network startup. + */ +#if !defined LWIP_IPV6_SEND_ROUTER_SOLICIT || defined __DOXYGEN__ +#define LWIP_IPV6_SEND_ROUTER_SOLICIT 1 +#endif + +/** + * LWIP_IPV6_AUTOCONFIG==1: Enable stateless address autoconfiguration as per RFC 4862. + */ +#if !defined LWIP_IPV6_AUTOCONFIG || defined __DOXYGEN__ +#define LWIP_IPV6_AUTOCONFIG (LWIP_IPV6) +#endif + +/** + * LWIP_IPV6_DUP_DETECT_ATTEMPTS=[0..7]: Number of duplicate address detection attempts. + */ +#if !defined LWIP_IPV6_DUP_DETECT_ATTEMPTS || defined __DOXYGEN__ +#define LWIP_IPV6_DUP_DETECT_ATTEMPTS 1 +#endif +/** + * @} + */ + +/** + * @defgroup lwip_opts_icmp6 ICMP6 + * @ingroup lwip_opts_ipv6 + * @{ + */ +/** + * LWIP_ICMP6==1: Enable ICMPv6 (mandatory per RFC) + */ +#if !defined LWIP_ICMP6 || defined __DOXYGEN__ +#define LWIP_ICMP6 (LWIP_IPV6) +#endif + +/** + * LWIP_ICMP6_DATASIZE: bytes from original packet to send back in + * ICMPv6 error messages. + */ +#if !defined LWIP_ICMP6_DATASIZE || defined __DOXYGEN__ +#define LWIP_ICMP6_DATASIZE 8 +#endif + +/** + * LWIP_ICMP6_HL: default hop limit for ICMPv6 messages + */ +#if !defined LWIP_ICMP6_HL || defined __DOXYGEN__ +#define LWIP_ICMP6_HL 255 +#endif +/** + * @} + */ + +/** + * @defgroup lwip_opts_mld6 Multicast listener discovery + * @ingroup lwip_opts_ipv6 + * @{ + */ +/** + * LWIP_IPV6_MLD==1: Enable multicast listener discovery protocol. + * If LWIP_IPV6 is enabled but this setting is disabled, the MAC layer must + * indiscriminately pass all inbound IPv6 multicast traffic to lwIP. + */ +#if !defined LWIP_IPV6_MLD || defined __DOXYGEN__ +#define LWIP_IPV6_MLD (LWIP_IPV6) +#endif + +/** + * MEMP_NUM_MLD6_GROUP: Max number of IPv6 multicast groups that can be joined. + * There must be enough groups so that each netif can join the solicited-node + * multicast group for each of its local addresses, plus one for MDNS if + * applicable, plus any number of groups to be joined on UDP sockets. + */ +#if !defined MEMP_NUM_MLD6_GROUP || defined __DOXYGEN__ +#define MEMP_NUM_MLD6_GROUP 4 +#endif +/** + * @} + */ + +/** + * @defgroup lwip_opts_nd6 Neighbor discovery + * @ingroup lwip_opts_ipv6 + * @{ + */ +/** + * LWIP_ND6_QUEUEING==1: queue outgoing IPv6 packets while MAC address + * is being resolved. + */ +#if !defined LWIP_ND6_QUEUEING || defined __DOXYGEN__ +#define LWIP_ND6_QUEUEING (LWIP_IPV6) +#endif + +/** + * MEMP_NUM_ND6_QUEUE: Max number of IPv6 packets to queue during MAC resolution. + */ +#if !defined MEMP_NUM_ND6_QUEUE || defined __DOXYGEN__ +#define MEMP_NUM_ND6_QUEUE 20 +#endif + +/** + * LWIP_ND6_NUM_NEIGHBORS: Number of entries in IPv6 neighbor cache + */ +#if !defined LWIP_ND6_NUM_NEIGHBORS || defined __DOXYGEN__ +#define LWIP_ND6_NUM_NEIGHBORS 10 +#endif + +/** + * LWIP_ND6_NUM_DESTINATIONS: number of entries in IPv6 destination cache + */ +#if !defined LWIP_ND6_NUM_DESTINATIONS || defined __DOXYGEN__ +#define LWIP_ND6_NUM_DESTINATIONS 10 +#endif + +/** + * LWIP_ND6_NUM_PREFIXES: number of entries in IPv6 on-link prefixes cache + */ +#if !defined LWIP_ND6_NUM_PREFIXES || defined __DOXYGEN__ +#define LWIP_ND6_NUM_PREFIXES 5 +#endif + +/** + * LWIP_ND6_NUM_ROUTERS: number of entries in IPv6 default router cache + */ +#if !defined LWIP_ND6_NUM_ROUTERS || defined __DOXYGEN__ +#define LWIP_ND6_NUM_ROUTERS 3 +#endif + +/** + * LWIP_ND6_MAX_MULTICAST_SOLICIT: max number of multicast solicit messages to send + * (neighbor solicit and router solicit) + */ +#if !defined LWIP_ND6_MAX_MULTICAST_SOLICIT || defined __DOXYGEN__ +#define LWIP_ND6_MAX_MULTICAST_SOLICIT 3 +#endif + +/** + * LWIP_ND6_MAX_UNICAST_SOLICIT: max number of unicast neighbor solicitation messages + * to send during neighbor reachability detection. + */ +#if !defined LWIP_ND6_MAX_UNICAST_SOLICIT || defined __DOXYGEN__ +#define LWIP_ND6_MAX_UNICAST_SOLICIT 3 +#endif + +/** + * Unused: See ND RFC (time in milliseconds). + */ +#if !defined LWIP_ND6_MAX_ANYCAST_DELAY_TIME || defined __DOXYGEN__ +#define LWIP_ND6_MAX_ANYCAST_DELAY_TIME 1000 +#endif + +/** + * Unused: See ND RFC + */ +#if !defined LWIP_ND6_MAX_NEIGHBOR_ADVERTISEMENT || defined __DOXYGEN__ +#define LWIP_ND6_MAX_NEIGHBOR_ADVERTISEMENT 3 +#endif + +/** + * LWIP_ND6_REACHABLE_TIME: default neighbor reachable time (in milliseconds). + * May be updated by router advertisement messages. + */ +#if !defined LWIP_ND6_REACHABLE_TIME || defined __DOXYGEN__ +#define LWIP_ND6_REACHABLE_TIME 30000 +#endif + +/** + * LWIP_ND6_RETRANS_TIMER: default retransmission timer for solicitation messages + */ +#if !defined LWIP_ND6_RETRANS_TIMER || defined __DOXYGEN__ +#define LWIP_ND6_RETRANS_TIMER 1000 +#endif + +/** + * LWIP_ND6_DELAY_FIRST_PROBE_TIME: Delay before first unicast neighbor solicitation + * message is sent, during neighbor reachability detection. + */ +#if !defined LWIP_ND6_DELAY_FIRST_PROBE_TIME || defined __DOXYGEN__ +#define LWIP_ND6_DELAY_FIRST_PROBE_TIME 5000 +#endif + +/** + * LWIP_ND6_ALLOW_RA_UPDATES==1: Allow Router Advertisement messages to update + * Reachable time and retransmission timers, and netif MTU. + */ +#if !defined LWIP_ND6_ALLOW_RA_UPDATES || defined __DOXYGEN__ +#define LWIP_ND6_ALLOW_RA_UPDATES 1 +#endif + +/** + * LWIP_ND6_TCP_REACHABILITY_HINTS==1: Allow TCP to provide Neighbor Discovery + * with reachability hints for connected destinations. This helps avoid sending + * unicast neighbor solicitation messages. + */ +#if !defined LWIP_ND6_TCP_REACHABILITY_HINTS || defined __DOXYGEN__ +#define LWIP_ND6_TCP_REACHABILITY_HINTS 1 +#endif + +/** + * LWIP_ND6_RDNSS_MAX_DNS_SERVERS > 0: Use IPv6 Router Advertisement Recursive + * DNS Server Option (as per RFC 6106) to copy a defined maximum number of DNS + * servers to the DNS module. + */ +#if !defined LWIP_ND6_RDNSS_MAX_DNS_SERVERS || defined __DOXYGEN__ +#define LWIP_ND6_RDNSS_MAX_DNS_SERVERS 0 +#endif +/** + * @} + */ + +/** + * LWIP_IPV6_DHCP6==1: enable DHCPv6 stateful address autoconfiguration. + */ +#if !defined LWIP_IPV6_DHCP6 || defined __DOXYGEN__ +#define LWIP_IPV6_DHCP6 0 +#endif + +/* + --------------------------------------- + ---------- Hook options --------------- + --------------------------------------- +*/ + +/** + * @defgroup lwip_opts_hooks Hooks + * @ingroup lwip_opts_infrastructure + * Hooks are undefined by default, define them to a function if you need them. + * @{ + */ + +/** + * LWIP_HOOK_FILENAME: Custom filename to #include in files that provide hooks. + * Declare your hook function prototypes in there, you may also #include all headers + * providing data types that are need in this file. + */ +#ifdef __DOXYGEN__ +#define LWIP_HOOK_FILENAME "path/to/my/lwip_hooks.h" +#endif + +/** + * LWIP_HOOK_TCP_ISN: + * Hook for generation of the Initial Sequence Number (ISN) for a new TCP + * connection. The default lwIP ISN generation algorithm is very basic and may + * allow for TCP spoofing attacks. This hook provides the means to implement + * the standardized ISN generation algorithm from RFC 6528 (see contrib/adons/tcp_isn), + * or any other desired algorithm as a replacement. + * Called from tcp_connect() and tcp_listen_input() when an ISN is needed for + * a new TCP connection, if TCP support (@ref LWIP_TCP) is enabled.\n + * Signature: u32_t my_hook_tcp_isn(const ip_addr_t* local_ip, u16_t local_port, const ip_addr_t* remote_ip, u16_t remote_port); + * - it may be necessary to use "struct ip_addr" (ip4_addr, ip6_addr) instead of "ip_addr_t" in function declarations\n + * Arguments: + * - local_ip: pointer to the local IP address of the connection + * - local_port: local port number of the connection (host-byte order) + * - remote_ip: pointer to the remote IP address of the connection + * - remote_port: remote port number of the connection (host-byte order)\n + * Return value: + * - the 32-bit Initial Sequence Number to use for the new TCP connection. + */ +#ifdef __DOXYGEN__ +#define LWIP_HOOK_TCP_ISN(local_ip, local_port, remote_ip, remote_port) +#endif + +/** + * LWIP_HOOK_IP4_INPUT(pbuf, input_netif): + * - called from ip_input() (IPv4) + * - pbuf: received struct pbuf passed to ip_input() + * - input_netif: struct netif on which the packet has been received + * Return values: + * - 0: Hook has not consumed the packet, packet is processed as normal + * - != 0: Hook has consumed the packet. + * If the hook consumed the packet, 'pbuf' is in the responsibility of the hook + * (i.e. free it when done). + */ +#ifdef __DOXYGEN__ +#define LWIP_HOOK_IP4_INPUT(pbuf, input_netif) +#endif + +/** + * LWIP_HOOK_IP4_ROUTE(dest): + * - called from ip_route() (IPv4) + * - dest: destination IPv4 address + * Returns the destination netif or NULL if no destination netif is found. In + * that case, ip_route() continues as normal. + */ +#ifdef __DOXYGEN__ +#define LWIP_HOOK_IP4_ROUTE() +#endif + +/** + * LWIP_HOOK_IP4_ROUTE_SRC(dest, src): + * - source-based routing for IPv4 (see LWIP_HOOK_IP4_ROUTE(), src may be NULL) + */ +#ifdef __DOXYGEN__ +#define LWIP_HOOK_IP4_ROUTE_SRC(dest, src) +#endif + +/** + * LWIP_HOOK_ETHARP_GET_GW(netif, dest): + * - called from etharp_output() (IPv4) + * - netif: the netif used for sending + * - dest: the destination IPv4 address + * Returns the IPv4 address of the gateway to handle the specified destination + * IPv4 address. If NULL is returned, the netif's default gateway is used. + * The returned address MUST be directly reachable on the specified netif! + * This function is meant to implement advanced IPv4 routing together with + * LWIP_HOOK_IP4_ROUTE(). The actual routing/gateway table implementation is + * not part of lwIP but can e.g. be hidden in the netif's state argument. +*/ +#ifdef __DOXYGEN__ +#define LWIP_HOOK_ETHARP_GET_GW(netif, dest) +#endif + +/** + * LWIP_HOOK_IP6_INPUT(pbuf, input_netif): + * - called from ip6_input() (IPv6) + * - pbuf: received struct pbuf passed to ip6_input() + * - input_netif: struct netif on which the packet has been received + * Return values: + * - 0: Hook has not consumed the packet, packet is processed as normal + * - != 0: Hook has consumed the packet. + * If the hook consumed the packet, 'pbuf' is in the responsibility of the hook + * (i.e. free it when done). + */ +#ifdef __DOXYGEN__ +#define LWIP_HOOK_IP6_INPUT(pbuf, input_netif) +#endif + +/** + * LWIP_HOOK_IP6_ROUTE(src, dest): + * - called from ip6_route() (IPv6) + * - src: sourc IPv6 address + * - dest: destination IPv6 address + * Returns the destination netif or NULL if no destination netif is found. In + * that case, ip6_route() continues as normal. + */ +#ifdef __DOXYGEN__ +#define LWIP_HOOK_IP6_ROUTE(src, dest) +#endif + +/** + * LWIP_HOOK_ND6_GET_GW(netif, dest): + * - called from nd6_get_next_hop_entry() (IPv6) + * - netif: the netif used for sending + * - dest: the destination IPv6 address + * Returns the IPv6 address of the next hop to handle the specified destination + * IPv6 address. If NULL is returned, a NDP-discovered router is used instead. + * The returned address MUST be directly reachable on the specified netif! + * This function is meant to implement advanced IPv6 routing together with + * LWIP_HOOK_IP6_ROUTE(). The actual routing/gateway table implementation is + * not part of lwIP but can e.g. be hidden in the netif's state argument. +*/ +#ifdef __DOXYGEN__ +#define LWIP_HOOK_ND6_GET_GW(netif, dest) +#endif + +/** + * LWIP_HOOK_VLAN_CHECK(netif, eth_hdr, vlan_hdr): + * - called from ethernet_input() if VLAN support is enabled + * - netif: struct netif on which the packet has been received + * - eth_hdr: struct eth_hdr of the packet + * - vlan_hdr: struct eth_vlan_hdr of the packet + * Return values: + * - 0: Packet must be dropped. + * - != 0: Packet must be accepted. + */ +#ifdef __DOXYGEN__ +#define LWIP_HOOK_VLAN_CHECK(netif, eth_hdr, vlan_hdr) +#endif + +/** + * LWIP_HOOK_VLAN_SET: + * Hook can be used to set prio_vid field of vlan_hdr. If you need to store data + * on per-netif basis to implement this callback, see @ref netif_cd. + * Called from ethernet_output() if VLAN support (@ref ETHARP_SUPPORT_VLAN) is enabled.\n + * Signature: s32_t my_hook_vlan_set(struct netif* netif, struct pbuf* pbuf, const struct eth_addr* src, const struct eth_addr* dst, u16_t eth_type);\n + * Arguments: + * - netif: struct netif that the packet will be sent through + * - p: struct pbuf packet to be sent + * - src: source eth address + * - dst: destination eth address + * - eth_type: ethernet type to packet to be sent\n + * + * + * Return values: + * - <0: Packet shall not contain VLAN header. + * - 0 <= return value <= 0xFFFF: Packet shall contain VLAN header. Return value is prio_vid in host byte order. + */ +#ifdef __DOXYGEN__ +#define LWIP_HOOK_VLAN_SET(netif, p, src, dst, eth_type) +#endif + +/** + * LWIP_HOOK_MEMP_AVAILABLE(memp_t_type): + * - called from memp_free() when a memp pool was empty and an item is now available + */ +#ifdef __DOXYGEN__ +#define LWIP_HOOK_MEMP_AVAILABLE(memp_t_type) +#endif + +/** + * LWIP_HOOK_UNKNOWN_ETH_PROTOCOL(pbuf, netif): + * Called from ethernet_input() when an unknown eth type is encountered. + * Return ERR_OK if packet is accepted, any error code otherwise. + * Payload points to ethernet header! + */ +#ifdef __DOXYGEN__ +#define LWIP_HOOK_UNKNOWN_ETH_PROTOCOL(pbuf, netif) +#endif +/** + * @} + */ + +/* + --------------------------------------- + ---------- Debugging options ---------- + --------------------------------------- +*/ +/** + * @defgroup lwip_opts_debugmsg Debug messages + * @ingroup lwip_opts_debug + * @{ + */ +/** + * LWIP_DBG_MIN_LEVEL: After masking, the value of the debug is + * compared against this value. If it is smaller, then debugging + * messages are written. + * @see debugging_levels + */ +#if !defined LWIP_DBG_MIN_LEVEL || defined __DOXYGEN__ +#define LWIP_DBG_MIN_LEVEL LWIP_DBG_LEVEL_ALL +#endif + +/** + * LWIP_DBG_TYPES_ON: A mask that can be used to globally enable/disable + * debug messages of certain types. + * @see debugging_levels + */ +#if !defined LWIP_DBG_TYPES_ON || defined __DOXYGEN__ +#define LWIP_DBG_TYPES_ON LWIP_DBG_ON +#endif + +/** + * ETHARP_DEBUG: Enable debugging in etharp.c. + */ +#if !defined ETHARP_DEBUG || defined __DOXYGEN__ +#define ETHARP_DEBUG LWIP_DBG_OFF +#endif + +/** + * NETIF_DEBUG: Enable debugging in netif.c. + */ +#if !defined NETIF_DEBUG || defined __DOXYGEN__ +#define NETIF_DEBUG LWIP_DBG_OFF +#endif + +/** + * PBUF_DEBUG: Enable debugging in pbuf.c. + */ +#if !defined PBUF_DEBUG || defined __DOXYGEN__ +#define PBUF_DEBUG LWIP_DBG_OFF +#endif + +/** + * API_LIB_DEBUG: Enable debugging in api_lib.c. + */ +#if !defined API_LIB_DEBUG || defined __DOXYGEN__ +#define API_LIB_DEBUG LWIP_DBG_OFF +#endif + +/** + * API_MSG_DEBUG: Enable debugging in api_msg.c. + */ +#if !defined API_MSG_DEBUG || defined __DOXYGEN__ +#define API_MSG_DEBUG LWIP_DBG_OFF +#endif + +/** + * SOCKETS_DEBUG: Enable debugging in sockets.c. + */ +#if !defined SOCKETS_DEBUG || defined __DOXYGEN__ +#define SOCKETS_DEBUG LWIP_DBG_OFF +#endif + +/** + * ICMP_DEBUG: Enable debugging in icmp.c. + */ +#if !defined ICMP_DEBUG || defined __DOXYGEN__ +#define ICMP_DEBUG LWIP_DBG_OFF +#endif + +/** + * IGMP_DEBUG: Enable debugging in igmp.c. + */ +#if !defined IGMP_DEBUG || defined __DOXYGEN__ +#define IGMP_DEBUG LWIP_DBG_OFF +#endif + +/** + * INET_DEBUG: Enable debugging in inet.c. + */ +#if !defined INET_DEBUG || defined __DOXYGEN__ +#define INET_DEBUG LWIP_DBG_OFF +#endif + +/** + * IP_DEBUG: Enable debugging for IP. + */ +#if !defined IP_DEBUG || defined __DOXYGEN__ +#define IP_DEBUG LWIP_DBG_OFF +#endif + +/** + * IP_REASS_DEBUG: Enable debugging in ip_frag.c for both frag & reass. + */ +#if !defined IP_REASS_DEBUG || defined __DOXYGEN__ +#define IP_REASS_DEBUG LWIP_DBG_OFF +#endif + +/** + * RAW_DEBUG: Enable debugging in raw.c. + */ +#if !defined RAW_DEBUG || defined __DOXYGEN__ +#define RAW_DEBUG LWIP_DBG_OFF +#endif + +/** + * MEM_DEBUG: Enable debugging in mem.c. + */ +#if !defined MEM_DEBUG || defined __DOXYGEN__ +#define MEM_DEBUG LWIP_DBG_OFF +#endif + +/** + * MEMP_DEBUG: Enable debugging in memp.c. + */ +#if !defined MEMP_DEBUG || defined __DOXYGEN__ +#define MEMP_DEBUG LWIP_DBG_OFF +#endif + +/** + * SYS_DEBUG: Enable debugging in sys.c. + */ +#if !defined SYS_DEBUG || defined __DOXYGEN__ +#define SYS_DEBUG LWIP_DBG_OFF +#endif + +/** + * TIMERS_DEBUG: Enable debugging in timers.c. + */ +#if !defined TIMERS_DEBUG || defined __DOXYGEN__ +#define TIMERS_DEBUG LWIP_DBG_OFF +#endif + +/** + * TCP_DEBUG: Enable debugging for TCP. + */ +#if !defined TCP_DEBUG || defined __DOXYGEN__ +#define TCP_DEBUG LWIP_DBG_OFF +#endif + +/** + * TCP_INPUT_DEBUG: Enable debugging in tcp_in.c for incoming debug. + */ +#if !defined TCP_INPUT_DEBUG || defined __DOXYGEN__ +#define TCP_INPUT_DEBUG LWIP_DBG_OFF +#endif + +/** + * TCP_FR_DEBUG: Enable debugging in tcp_in.c for fast retransmit. + */ +#if !defined TCP_FR_DEBUG || defined __DOXYGEN__ +#define TCP_FR_DEBUG LWIP_DBG_OFF +#endif + +/** + * TCP_RTO_DEBUG: Enable debugging in TCP for retransmit + * timeout. + */ +#if !defined TCP_RTO_DEBUG || defined __DOXYGEN__ +#define TCP_RTO_DEBUG LWIP_DBG_OFF +#endif + +/** + * TCP_CWND_DEBUG: Enable debugging for TCP congestion window. + */ +#if !defined TCP_CWND_DEBUG || defined __DOXYGEN__ +#define TCP_CWND_DEBUG LWIP_DBG_OFF +#endif + +/** + * TCP_WND_DEBUG: Enable debugging in tcp_in.c for window updating. + */ +#if !defined TCP_WND_DEBUG || defined __DOXYGEN__ +#define TCP_WND_DEBUG LWIP_DBG_OFF +#endif + +/** + * TCP_OUTPUT_DEBUG: Enable debugging in tcp_out.c output functions. + */ +#if !defined TCP_OUTPUT_DEBUG || defined __DOXYGEN__ +#define TCP_OUTPUT_DEBUG LWIP_DBG_OFF +#endif + +/** + * TCP_RST_DEBUG: Enable debugging for TCP with the RST message. + */ +#if !defined TCP_RST_DEBUG || defined __DOXYGEN__ +#define TCP_RST_DEBUG LWIP_DBG_OFF +#endif + +/** + * TCP_QLEN_DEBUG: Enable debugging for TCP queue lengths. + */ +#if !defined TCP_QLEN_DEBUG || defined __DOXYGEN__ +#define TCP_QLEN_DEBUG LWIP_DBG_OFF +#endif + +/** + * UDP_DEBUG: Enable debugging in UDP. + */ +#if !defined UDP_DEBUG || defined __DOXYGEN__ +#define UDP_DEBUG LWIP_DBG_OFF +#endif + +/** + * TCPIP_DEBUG: Enable debugging in tcpip.c. + */ +#if !defined TCPIP_DEBUG || defined __DOXYGEN__ +#define TCPIP_DEBUG LWIP_DBG_OFF +#endif + +/** + * SLIP_DEBUG: Enable debugging in slipif.c. + */ +#if !defined SLIP_DEBUG || defined __DOXYGEN__ +#define SLIP_DEBUG LWIP_DBG_OFF +#endif + +/** + * DHCP_DEBUG: Enable debugging in dhcp.c. + */ +#if !defined DHCP_DEBUG || defined __DOXYGEN__ +#define DHCP_DEBUG LWIP_DBG_OFF +#endif + +/** + * AUTOIP_DEBUG: Enable debugging in autoip.c. + */ +#if !defined AUTOIP_DEBUG || defined __DOXYGEN__ +#define AUTOIP_DEBUG LWIP_DBG_OFF +#endif + +/** + * DNS_DEBUG: Enable debugging for DNS. + */ +#if !defined DNS_DEBUG || defined __DOXYGEN__ +#define DNS_DEBUG LWIP_DBG_OFF +#endif + +/** + * IP6_DEBUG: Enable debugging for IPv6. + */ +#if !defined IP6_DEBUG || defined __DOXYGEN__ +#define IP6_DEBUG LWIP_DBG_OFF +#endif +/** + * @} + */ + +/* + -------------------------------------------------- + ---------- Performance tracking options ---------- + -------------------------------------------------- +*/ +/** + * @defgroup lwip_opts_perf Performance + * @ingroup lwip_opts_debug + * @{ + */ +/** + * LWIP_PERF: Enable performance testing for lwIP + * (if enabled, arch/perf.h is included) + */ +#if !defined LWIP_PERF || defined __DOXYGEN__ +#define LWIP_PERF 0 +#endif +/** + * @} + */ + +#endif /* LWIP_HDR_OPT_H */ diff --git a/tools/sdk/lwip2/include/lwip/pbuf.h b/tools/sdk/lwip2/include/lwip/pbuf.h new file mode 100644 index 000000000..90610461e --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/pbuf.h @@ -0,0 +1,263 @@ +/** + * @file + * pbuf API + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ + +#ifndef LWIP_HDR_PBUF_H +#define LWIP_HDR_PBUF_H + +#include "lwip/opt.h" +#include "lwip/err.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** LWIP_SUPPORT_CUSTOM_PBUF==1: Custom pbufs behave much like their pbuf type + * but they are allocated by external code (initialised by calling + * pbuf_alloced_custom()) and when pbuf_free gives up their last reference, they + * are freed by calling pbuf_custom->custom_free_function(). + * Currently, the pbuf_custom code is only needed for one specific configuration + * of IP_FRAG, unless required by external driver/application code. */ +#ifndef LWIP_SUPPORT_CUSTOM_PBUF +#define LWIP_SUPPORT_CUSTOM_PBUF ((IP_FRAG && !LWIP_NETIF_TX_SINGLE_PBUF) || (LWIP_IPV6 && LWIP_IPV6_FRAG)) +#endif + +/* @todo: We need a mechanism to prevent wasting memory in every pbuf + (TCP vs. UDP, IPv4 vs. IPv6: UDP/IPv4 packets may waste up to 28 bytes) */ + +#define PBUF_TRANSPORT_HLEN 20 +#if LWIP_IPV6 +#define PBUF_IP_HLEN 40 +#else +#define PBUF_IP_HLEN 20 +#endif + +/** + * @ingroup pbuf + * Enumeration of pbuf layers + */ +typedef enum { + /** Includes spare room for transport layer header, e.g. UDP header. + * Use this if you intend to pass the pbuf to functions like udp_send(). + */ + PBUF_TRANSPORT, + /** Includes spare room for IP header. + * Use this if you intend to pass the pbuf to functions like raw_send(). + */ + PBUF_IP, + /** Includes spare room for link layer header (ethernet header). + * Use this if you intend to pass the pbuf to functions like ethernet_output(). + * @see PBUF_LINK_HLEN + */ + PBUF_LINK, + /** Includes spare room for additional encapsulation header before ethernet + * headers (e.g. 802.11). + * Use this if you intend to pass the pbuf to functions like netif->linkoutput(). + * @see PBUF_LINK_ENCAPSULATION_HLEN + */ + PBUF_RAW_TX, + /** Use this for input packets in a netif driver when calling netif->input() + * in the most common case - ethernet-layer netif driver. */ + PBUF_RAW +} pbuf_layer; + +/** + * @ingroup pbuf + * Enumeration of pbuf types + */ +typedef enum { + /** pbuf data is stored in RAM, used for TX mostly, struct pbuf and its payload + are allocated in one piece of contiguous memory (so the first payload byte + can be calculated from struct pbuf). + pbuf_alloc() allocates PBUF_RAM pbufs as unchained pbufs (although that might + change in future versions). + This should be used for all OUTGOING packets (TX).*/ + PBUF_RAM, + /** pbuf data is stored in ROM, i.e. struct pbuf and its payload are located in + totally different memory areas. Since it points to ROM, payload does not + have to be copied when queued for transmission. */ + PBUF_ROM, + /** pbuf comes from the pbuf pool. Much like PBUF_ROM but payload might change + so it has to be duplicated when queued before transmitting, depending on + who has a 'ref' to it. */ + PBUF_REF, + /** pbuf payload refers to RAM. This one comes from a pool and should be used + for RX. Payload can be chained (scatter-gather RX) but like PBUF_RAM, struct + pbuf and its payload are allocated in one piece of contiguous memory (so + the first payload byte can be calculated from struct pbuf). + Don't use this for TX, if the pool becomes empty e.g. because of TCP queuing, + you are unable to receive TCP acks! */ + PBUF_POOL +} pbuf_type; + + +/** indicates this packet's data should be immediately passed to the application */ +#define PBUF_FLAG_PUSH 0x01U +/** indicates this is a custom pbuf: pbuf_free calls pbuf_custom->custom_free_function() + when the last reference is released (plus custom PBUF_RAM cannot be trimmed) */ +#define PBUF_FLAG_IS_CUSTOM 0x02U +/** indicates this pbuf is UDP multicast to be looped back */ +#define PBUF_FLAG_MCASTLOOP 0x04U +/** indicates this pbuf was received as link-level broadcast */ +#define PBUF_FLAG_LLBCAST 0x08U +/** indicates this pbuf was received as link-level multicast */ +#define PBUF_FLAG_LLMCAST 0x10U +/** indicates this pbuf includes a TCP FIN flag */ +#define PBUF_FLAG_TCP_FIN 0x20U + +/** Main packet buffer struct */ +struct pbuf { + /** next pbuf in singly linked pbuf chain */ + struct pbuf *next; + + /** pointer to the actual data in the buffer */ + void *payload; + + /** + * total length of this buffer and all next buffers in chain + * belonging to the same packet. + * + * For non-queue packet chains this is the invariant: + * p->tot_len == p->len + (p->next? p->next->tot_len: 0) + */ + u16_t tot_len; + + /** length of this buffer */ + u16_t len; + + /** pbuf_type as u8_t instead of enum to save space */ + u8_t /*pbuf_type*/ type; + + /** misc flags */ + u8_t flags; + + /** + * the reference count always equals the number of pointers + * that refer to this pbuf. This can be pointers from an application, + * the stack itself, or pbuf->next pointers from a chain. + */ + u16_t ref; +}; + + +/** Helper struct for const-correctness only. + * The only meaning of this one is to provide a const payload pointer + * for PBUF_ROM type. + */ +struct pbuf_rom { + /** next pbuf in singly linked pbuf chain */ + struct pbuf *next; + + /** pointer to the actual data in the buffer */ + const void *payload; +}; + +#if LWIP_SUPPORT_CUSTOM_PBUF +/** Prototype for a function to free a custom pbuf */ +typedef void (*pbuf_free_custom_fn)(struct pbuf *p); + +/** A custom pbuf: like a pbuf, but following a function pointer to free it. */ +struct pbuf_custom { + /** The actual pbuf */ + struct pbuf pbuf; + /** This function is called when pbuf_free deallocates this pbuf(_custom) */ + pbuf_free_custom_fn custom_free_function; +}; +#endif /* LWIP_SUPPORT_CUSTOM_PBUF */ + +/** Define this to 0 to prevent freeing ooseq pbufs when the PBUF_POOL is empty */ +#ifndef PBUF_POOL_FREE_OOSEQ +#define PBUF_POOL_FREE_OOSEQ 1 +#endif /* PBUF_POOL_FREE_OOSEQ */ +#if LWIP_TCP && TCP_QUEUE_OOSEQ && NO_SYS && PBUF_POOL_FREE_OOSEQ +extern volatile u8_t pbuf_free_ooseq_pending; +void pbuf_free_ooseq(void); +/** When not using sys_check_timeouts(), call PBUF_CHECK_FREE_OOSEQ() + at regular intervals from main level to check if ooseq pbufs need to be + freed! */ +#define PBUF_CHECK_FREE_OOSEQ() do { if(pbuf_free_ooseq_pending) { \ + /* pbuf_alloc() reported PBUF_POOL to be empty -> try to free some \ + ooseq queued pbufs now */ \ + pbuf_free_ooseq(); }}while(0) +#else /* LWIP_TCP && TCP_QUEUE_OOSEQ && NO_SYS && PBUF_POOL_FREE_OOSEQ */ + /* Otherwise declare an empty PBUF_CHECK_FREE_OOSEQ */ + #define PBUF_CHECK_FREE_OOSEQ() +#endif /* LWIP_TCP && TCP_QUEUE_OOSEQ && NO_SYS && PBUF_POOL_FREE_OOSEQ*/ + +/* Initializes the pbuf module. This call is empty for now, but may not be in future. */ +#define pbuf_init() + +struct pbuf *pbuf_alloc(pbuf_layer l, u16_t length, pbuf_type type); +#if LWIP_SUPPORT_CUSTOM_PBUF +struct pbuf *pbuf_alloced_custom(pbuf_layer l, u16_t length, pbuf_type type, + struct pbuf_custom *p, void *payload_mem, + u16_t payload_mem_len); +#endif /* LWIP_SUPPORT_CUSTOM_PBUF */ +void pbuf_realloc(struct pbuf *p, u16_t size); +u8_t pbuf_header(struct pbuf *p, s16_t header_size); +u8_t pbuf_header_force(struct pbuf *p, s16_t header_size); +void pbuf_ref(struct pbuf *p); +u8_t pbuf_free(struct pbuf *p); +u16_t pbuf_clen(const struct pbuf *p); +void pbuf_cat(struct pbuf *head, struct pbuf *tail); +void pbuf_chain(struct pbuf *head, struct pbuf *tail); +struct pbuf *pbuf_dechain(struct pbuf *p); +err_t pbuf_copy(struct pbuf *p_to, const struct pbuf *p_from); +u16_t pbuf_copy_partial(const struct pbuf *p, void *dataptr, u16_t len, u16_t offset); +err_t pbuf_take(struct pbuf *buf, const void *dataptr, u16_t len); +err_t pbuf_take_at(struct pbuf *buf, const void *dataptr, u16_t len, u16_t offset); +struct pbuf *pbuf_skip(struct pbuf* in, u16_t in_offset, u16_t* out_offset); +struct pbuf *pbuf_coalesce(struct pbuf *p, pbuf_layer layer); +#if LWIP_CHECKSUM_ON_COPY +err_t pbuf_fill_chksum(struct pbuf *p, u16_t start_offset, const void *dataptr, + u16_t len, u16_t *chksum); +#endif /* LWIP_CHECKSUM_ON_COPY */ +#if LWIP_TCP && TCP_QUEUE_OOSEQ && LWIP_WND_SCALE +void pbuf_split_64k(struct pbuf *p, struct pbuf **rest); +#endif /* LWIP_TCP && TCP_QUEUE_OOSEQ && LWIP_WND_SCALE */ + +u8_t pbuf_get_at(const struct pbuf* p, u16_t offset); +int pbuf_try_get_at(const struct pbuf* p, u16_t offset); +void pbuf_put_at(struct pbuf* p, u16_t offset, u8_t data); +u16_t pbuf_memcmp(const struct pbuf* p, u16_t offset, const void* s2, u16_t n); +u16_t pbuf_memfind(const struct pbuf* p, const void* mem, u16_t mem_len, u16_t start_offset); +u16_t pbuf_strstr(const struct pbuf* p, const char* substr); + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_PBUF_H */ diff --git a/tools/sdk/lwip2/include/lwip/priv/api_msg.h b/tools/sdk/lwip2/include/lwip/priv/api_msg.h new file mode 100644 index 000000000..f12b8b7d4 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/priv/api_msg.h @@ -0,0 +1,216 @@ +/** + * @file + * netconn API lwIP internal implementations (do not use in application code) + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_API_MSG_H +#define LWIP_HDR_API_MSG_H + +#include "lwip/opt.h" + +#if LWIP_NETCONN || LWIP_SOCKET /* don't build if not configured for use in lwipopts.h */ +/* Note: Netconn API is always available when sockets are enabled - + * sockets are implemented on top of them */ + +#include "lwip/arch.h" +#include "lwip/ip_addr.h" +#include "lwip/err.h" +#include "lwip/sys.h" +#include "lwip/igmp.h" +#include "lwip/api.h" +#include "lwip/priv/tcpip_priv.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if LWIP_MPU_COMPATIBLE +#if LWIP_NETCONN_SEM_PER_THREAD +#define API_MSG_M_DEF_SEM(m) *m +#else +#define API_MSG_M_DEF_SEM(m) API_MSG_M_DEF(m) +#endif +#else /* LWIP_MPU_COMPATIBLE */ +#define API_MSG_M_DEF_SEM(m) API_MSG_M_DEF(m) +#endif /* LWIP_MPU_COMPATIBLE */ + +/* For the netconn API, these values are use as a bitmask! */ +#define NETCONN_SHUT_RD 1 +#define NETCONN_SHUT_WR 2 +#define NETCONN_SHUT_RDWR (NETCONN_SHUT_RD | NETCONN_SHUT_WR) + +/* IP addresses and port numbers are expected to be in + * the same byte order as in the corresponding pcb. + */ +/** This struct includes everything that is necessary to execute a function + for a netconn in another thread context (mainly used to process netconns + in the tcpip_thread context to be thread safe). */ +struct api_msg { + /** The netconn which to process - always needed: it includes the semaphore + which is used to block the application thread until the function finished. */ + struct netconn *conn; + /** The return value of the function executed in tcpip_thread. */ + err_t err; + /** Depending on the executed function, one of these union members is used */ + union { + /** used for lwip_netconn_do_send */ + struct netbuf *b; + /** used for lwip_netconn_do_newconn */ + struct { + u8_t proto; + } n; + /** used for lwip_netconn_do_bind and lwip_netconn_do_connect */ + struct { + API_MSG_M_DEF_C(ip_addr_t, ipaddr); + u16_t port; + } bc; + /** used for lwip_netconn_do_getaddr */ + struct { + ip_addr_t API_MSG_M_DEF(ipaddr); + u16_t API_MSG_M_DEF(port); + u8_t local; + } ad; + /** used for lwip_netconn_do_write */ + struct { + const void *dataptr; + size_t len; + u8_t apiflags; +#if LWIP_SO_SNDTIMEO + u32_t time_started; +#endif /* LWIP_SO_SNDTIMEO */ + } w; + /** used for lwip_netconn_do_recv */ + struct { + u32_t len; + } r; +#if LWIP_TCP + /** used for lwip_netconn_do_close (/shutdown) */ + struct { + u8_t shut; +#if LWIP_SO_SNDTIMEO || LWIP_SO_LINGER + u32_t time_started; +#else /* LWIP_SO_SNDTIMEO || LWIP_SO_LINGER */ + u8_t polls_left; +#endif /* LWIP_SO_SNDTIMEO || LWIP_SO_LINGER */ + } sd; +#endif /* LWIP_TCP */ +#if LWIP_IGMP || (LWIP_IPV6 && LWIP_IPV6_MLD) + /** used for lwip_netconn_do_join_leave_group */ + struct { + API_MSG_M_DEF_C(ip_addr_t, multiaddr); + API_MSG_M_DEF_C(ip_addr_t, netif_addr); + enum netconn_igmp join_or_leave; + } jl; +#endif /* LWIP_IGMP || (LWIP_IPV6 && LWIP_IPV6_MLD) */ +#if TCP_LISTEN_BACKLOG + struct { + u8_t backlog; + } lb; +#endif /* TCP_LISTEN_BACKLOG */ + } msg; +#if LWIP_NETCONN_SEM_PER_THREAD + sys_sem_t* op_completed_sem; +#endif /* LWIP_NETCONN_SEM_PER_THREAD */ +}; + +#if LWIP_NETCONN_SEM_PER_THREAD +#define LWIP_API_MSG_SEM(msg) ((msg)->op_completed_sem) +#else /* LWIP_NETCONN_SEM_PER_THREAD */ +#define LWIP_API_MSG_SEM(msg) (&(msg)->conn->op_completed) +#endif /* LWIP_NETCONN_SEM_PER_THREAD */ + + +#if LWIP_DNS +/** As lwip_netconn_do_gethostbyname requires more arguments but doesn't require a netconn, + it has its own struct (to avoid struct api_msg getting bigger than necessary). + lwip_netconn_do_gethostbyname must be called using tcpip_callback instead of tcpip_apimsg + (see netconn_gethostbyname). */ +struct dns_api_msg { + /** Hostname to query or dotted IP address string */ +#if LWIP_MPU_COMPATIBLE + char name[DNS_MAX_NAME_LENGTH]; +#else /* LWIP_MPU_COMPATIBLE */ + const char *name; +#endif /* LWIP_MPU_COMPATIBLE */ + /** The resolved address is stored here */ + ip_addr_t API_MSG_M_DEF(addr); +#if LWIP_IPV4 && LWIP_IPV6 + /** Type of resolve call */ + u8_t dns_addrtype; +#endif /* LWIP_IPV4 && LWIP_IPV6 */ + /** This semaphore is posted when the name is resolved, the application thread + should wait on it. */ + sys_sem_t API_MSG_M_DEF_SEM(sem); + /** Errors are given back here */ + err_t API_MSG_M_DEF(err); +}; +#endif /* LWIP_DNS */ + +#if LWIP_TCP +extern u8_t netconn_aborted; +#endif /* LWIP_TCP */ + +void lwip_netconn_do_newconn (void *m); +void lwip_netconn_do_delconn (void *m); +void lwip_netconn_do_bind (void *m); +void lwip_netconn_do_connect (void *m); +void lwip_netconn_do_disconnect (void *m); +void lwip_netconn_do_listen (void *m); +void lwip_netconn_do_send (void *m); +void lwip_netconn_do_recv (void *m); +#if TCP_LISTEN_BACKLOG +void lwip_netconn_do_accepted (void *m); +#endif /* TCP_LISTEN_BACKLOG */ +void lwip_netconn_do_write (void *m); +void lwip_netconn_do_getaddr (void *m); +void lwip_netconn_do_close (void *m); +void lwip_netconn_do_shutdown (void *m); +#if LWIP_IGMP || (LWIP_IPV6 && LWIP_IPV6_MLD) +void lwip_netconn_do_join_leave_group(void *m); +#endif /* LWIP_IGMP || (LWIP_IPV6 && LWIP_IPV6_MLD) */ + +#if LWIP_DNS +void lwip_netconn_do_gethostbyname(void *arg); +#endif /* LWIP_DNS */ + +struct netconn* netconn_alloc(enum netconn_type t, netconn_callback callback); +void netconn_free(struct netconn *conn); + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_NETCONN || LWIP_SOCKET */ + +#endif /* LWIP_HDR_API_MSG_H */ diff --git a/tools/sdk/lwip2/include/lwip/priv/memp_priv.h b/tools/sdk/lwip2/include/lwip/priv/memp_priv.h new file mode 100644 index 000000000..f246061da --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/priv/memp_priv.h @@ -0,0 +1,183 @@ +/** + * @file + * memory pools lwIP internal implementations (do not use in application code) + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ + +#ifndef LWIP_HDR_MEMP_PRIV_H +#define LWIP_HDR_MEMP_PRIV_H + +#include "lwip/opt.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#include "lwip/mem.h" + +#if MEMP_OVERFLOW_CHECK +/* if MEMP_OVERFLOW_CHECK is turned on, we reserve some bytes at the beginning + * and at the end of each element, initialize them as 0xcd and check + * them later. */ +/* If MEMP_OVERFLOW_CHECK is >= 2, on every call to memp_malloc or memp_free, + * every single element in each pool is checked! + * This is VERY SLOW but also very helpful. */ +/* MEMP_SANITY_REGION_BEFORE and MEMP_SANITY_REGION_AFTER can be overridden in + * lwipopts.h to change the amount reserved for checking. */ +#ifndef MEMP_SANITY_REGION_BEFORE +#define MEMP_SANITY_REGION_BEFORE 16 +#endif /* MEMP_SANITY_REGION_BEFORE*/ +#if MEMP_SANITY_REGION_BEFORE > 0 +#define MEMP_SANITY_REGION_BEFORE_ALIGNED LWIP_MEM_ALIGN_SIZE(MEMP_SANITY_REGION_BEFORE) +#else +#define MEMP_SANITY_REGION_BEFORE_ALIGNED 0 +#endif /* MEMP_SANITY_REGION_BEFORE*/ +#ifndef MEMP_SANITY_REGION_AFTER +#define MEMP_SANITY_REGION_AFTER 16 +#endif /* MEMP_SANITY_REGION_AFTER*/ +#if MEMP_SANITY_REGION_AFTER > 0 +#define MEMP_SANITY_REGION_AFTER_ALIGNED LWIP_MEM_ALIGN_SIZE(MEMP_SANITY_REGION_AFTER) +#else +#define MEMP_SANITY_REGION_AFTER_ALIGNED 0 +#endif /* MEMP_SANITY_REGION_AFTER*/ + +/* MEMP_SIZE: save space for struct memp and for sanity check */ +#define MEMP_SIZE (LWIP_MEM_ALIGN_SIZE(sizeof(struct memp)) + MEMP_SANITY_REGION_BEFORE_ALIGNED) +#define MEMP_ALIGN_SIZE(x) (LWIP_MEM_ALIGN_SIZE(x) + MEMP_SANITY_REGION_AFTER_ALIGNED) + +#else /* MEMP_OVERFLOW_CHECK */ + +/* No sanity checks + * We don't need to preserve the struct memp while not allocated, so we + * can save a little space and set MEMP_SIZE to 0. + */ +#define MEMP_SIZE 0 +#define MEMP_ALIGN_SIZE(x) (LWIP_MEM_ALIGN_SIZE(x)) + +#endif /* MEMP_OVERFLOW_CHECK */ + +#if !MEMP_MEM_MALLOC || MEMP_OVERFLOW_CHECK +struct memp { + struct memp *next; +#if MEMP_OVERFLOW_CHECK + const char *file; + int line; +#endif /* MEMP_OVERFLOW_CHECK */ +}; +#endif /* !MEMP_MEM_MALLOC || MEMP_OVERFLOW_CHECK */ + +#if MEM_USE_POOLS && MEMP_USE_CUSTOM_POOLS +/* Use a helper type to get the start and end of the user "memory pools" for mem_malloc */ +typedef enum { + /* Get the first (via: + MEMP_POOL_HELPER_START = ((u8_t) 1*MEMP_POOL_A + 0*MEMP_POOL_B + 0*MEMP_POOL_C + 0)*/ + MEMP_POOL_HELPER_FIRST = ((u8_t) +#define LWIP_MEMPOOL(name,num,size,desc) +#define LWIP_MALLOC_MEMPOOL_START 1 +#define LWIP_MALLOC_MEMPOOL(num, size) * MEMP_POOL_##size + 0 +#define LWIP_MALLOC_MEMPOOL_END +#include "lwip/priv/memp_std.h" + ) , + /* Get the last (via: + MEMP_POOL_HELPER_END = ((u8_t) 0 + MEMP_POOL_A*0 + MEMP_POOL_B*0 + MEMP_POOL_C*1) */ + MEMP_POOL_HELPER_LAST = ((u8_t) +#define LWIP_MEMPOOL(name,num,size,desc) +#define LWIP_MALLOC_MEMPOOL_START +#define LWIP_MALLOC_MEMPOOL(num, size) 0 + MEMP_POOL_##size * +#define LWIP_MALLOC_MEMPOOL_END 1 +#include "lwip/priv/memp_std.h" + ) +} memp_pool_helper_t; + +/* The actual start and stop values are here (cast them over) + We use this helper type and these defines so we can avoid using const memp_t values */ +#define MEMP_POOL_FIRST ((memp_t) MEMP_POOL_HELPER_FIRST) +#define MEMP_POOL_LAST ((memp_t) MEMP_POOL_HELPER_LAST) +#endif /* MEM_USE_POOLS && MEMP_USE_CUSTOM_POOLS */ + +/** Memory pool descriptor */ +struct memp_desc { +#if defined(LWIP_DEBUG) || MEMP_OVERFLOW_CHECK || LWIP_STATS_DISPLAY + /** Textual description */ + const char *desc; +#endif /* LWIP_DEBUG || MEMP_OVERFLOW_CHECK || LWIP_STATS_DISPLAY */ +#if MEMP_STATS + /** Statistics */ + struct stats_mem *stats; +#endif + + /** Element size */ + u16_t size; + +#if !MEMP_MEM_MALLOC + /** Number of elements */ + u16_t num; + + /** Base address */ + u8_t *base; + + /** First free element of each pool. Elements form a linked list. */ + struct memp **tab; +#endif /* MEMP_MEM_MALLOC */ +}; + +#if defined(LWIP_DEBUG) || MEMP_OVERFLOW_CHECK || LWIP_STATS_DISPLAY +#define DECLARE_LWIP_MEMPOOL_DESC(desc) (desc), +#else +#define DECLARE_LWIP_MEMPOOL_DESC(desc) +#endif + +#if MEMP_STATS +#define LWIP_MEMPOOL_DECLARE_STATS_INSTANCE(name) static struct stats_mem name; +#define LWIP_MEMPOOL_DECLARE_STATS_REFERENCE(name) &name, +#else +#define LWIP_MEMPOOL_DECLARE_STATS_INSTANCE(name) +#define LWIP_MEMPOOL_DECLARE_STATS_REFERENCE(name) +#endif + +void memp_init_pool(const struct memp_desc *desc); + +#if MEMP_OVERFLOW_CHECK +void *memp_malloc_pool_fn(const struct memp_desc* desc, const char* file, const int line); +#define memp_malloc_pool(d) memp_malloc_pool_fn((d), __FILE__, __LINE__) +#else +void *memp_malloc_pool(const struct memp_desc *desc); +#endif +void memp_free_pool(const struct memp_desc* desc, void *mem); + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_MEMP_PRIV_H */ diff --git a/tools/sdk/lwip2/include/lwip/priv/memp_std.h b/tools/sdk/lwip2/include/lwip/priv/memp_std.h new file mode 100644 index 000000000..ce9fd5003 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/priv/memp_std.h @@ -0,0 +1,146 @@ +/** + * @file + * lwIP internal memory pools (do not use in application code) + * This file is deliberately included multiple times: once with empty + * definition of LWIP_MEMPOOL() to handle all includes and multiple times + * to build up various lists of mem pools. + */ + +/* + * SETUP: Make sure we define everything we will need. + * + * We have create three types of pools: + * 1) MEMPOOL - standard pools + * 2) MALLOC_MEMPOOL - to be used by mem_malloc in mem.c + * 3) PBUF_MEMPOOL - a mempool of pbuf's, so include space for the pbuf struct + * + * If the include'r doesn't require any special treatment of each of the types + * above, then will declare #2 & #3 to be just standard mempools. + */ +#ifndef LWIP_MALLOC_MEMPOOL +/* This treats "malloc pools" just like any other pool. + The pools are a little bigger to provide 'size' as the amount of user data. */ +#define LWIP_MALLOC_MEMPOOL(num, size) LWIP_MEMPOOL(POOL_##size, num, (size + LWIP_MEM_ALIGN_SIZE(sizeof(struct memp_malloc_helper))), "MALLOC_"#size) +#define LWIP_MALLOC_MEMPOOL_START +#define LWIP_MALLOC_MEMPOOL_END +#endif /* LWIP_MALLOC_MEMPOOL */ + +#ifndef LWIP_PBUF_MEMPOOL +/* This treats "pbuf pools" just like any other pool. + * Allocates buffers for a pbuf struct AND a payload size */ +#define LWIP_PBUF_MEMPOOL(name, num, payload, desc) LWIP_MEMPOOL(name, num, (MEMP_ALIGN_SIZE(sizeof(struct pbuf)) + MEMP_ALIGN_SIZE(payload)), desc) +#endif /* LWIP_PBUF_MEMPOOL */ + + +/* + * A list of internal pools used by LWIP. + * + * LWIP_MEMPOOL(pool_name, number_elements, element_size, pool_description) + * creates a pool name MEMP_pool_name. description is used in stats.c + */ +#if LWIP_RAW +LWIP_MEMPOOL(RAW_PCB, MEMP_NUM_RAW_PCB, sizeof(struct raw_pcb), "RAW_PCB") +#endif /* LWIP_RAW */ + +#if LWIP_UDP +LWIP_MEMPOOL(UDP_PCB, MEMP_NUM_UDP_PCB, sizeof(struct udp_pcb), "UDP_PCB") +#endif /* LWIP_UDP */ + +#if LWIP_TCP +LWIP_MEMPOOL(TCP_PCB, MEMP_NUM_TCP_PCB, sizeof(struct tcp_pcb), "TCP_PCB") +LWIP_MEMPOOL(TCP_PCB_LISTEN, MEMP_NUM_TCP_PCB_LISTEN, sizeof(struct tcp_pcb_listen), "TCP_PCB_LISTEN") +LWIP_MEMPOOL(TCP_SEG, MEMP_NUM_TCP_SEG, sizeof(struct tcp_seg), "TCP_SEG") +#endif /* LWIP_TCP */ + +#if LWIP_IPV4 && IP_REASSEMBLY +LWIP_MEMPOOL(REASSDATA, MEMP_NUM_REASSDATA, sizeof(struct ip_reassdata), "REASSDATA") +#endif /* LWIP_IPV4 && IP_REASSEMBLY */ +#if (IP_FRAG && !LWIP_NETIF_TX_SINGLE_PBUF) || (LWIP_IPV6 && LWIP_IPV6_FRAG) +LWIP_MEMPOOL(FRAG_PBUF, MEMP_NUM_FRAG_PBUF, sizeof(struct pbuf_custom_ref),"FRAG_PBUF") +#endif /* IP_FRAG && !LWIP_NETIF_TX_SINGLE_PBUF || (LWIP_IPV6 && LWIP_IPV6_FRAG) */ + +#if LWIP_NETCONN || LWIP_SOCKET +LWIP_MEMPOOL(NETBUF, MEMP_NUM_NETBUF, sizeof(struct netbuf), "NETBUF") +LWIP_MEMPOOL(NETCONN, MEMP_NUM_NETCONN, sizeof(struct netconn), "NETCONN") +#endif /* LWIP_NETCONN || LWIP_SOCKET */ + +#if NO_SYS==0 +LWIP_MEMPOOL(TCPIP_MSG_API, MEMP_NUM_TCPIP_MSG_API, sizeof(struct tcpip_msg), "TCPIP_MSG_API") +#if LWIP_MPU_COMPATIBLE +LWIP_MEMPOOL(API_MSG, MEMP_NUM_API_MSG, sizeof(struct api_msg), "API_MSG") +#if LWIP_DNS +LWIP_MEMPOOL(DNS_API_MSG, MEMP_NUM_DNS_API_MSG, sizeof(struct dns_api_msg), "DNS_API_MSG") +#endif +#if LWIP_SOCKET && !LWIP_TCPIP_CORE_LOCKING +LWIP_MEMPOOL(SOCKET_SETGETSOCKOPT_DATA, MEMP_NUM_SOCKET_SETGETSOCKOPT_DATA, sizeof(struct lwip_setgetsockopt_data), "SOCKET_SETGETSOCKOPT_DATA") +#endif +#if LWIP_NETIF_API +LWIP_MEMPOOL(NETIFAPI_MSG, MEMP_NUM_NETIFAPI_MSG, sizeof(struct netifapi_msg), "NETIFAPI_MSG") +#endif +#endif /* LWIP_MPU_COMPATIBLE */ +#if !LWIP_TCPIP_CORE_LOCKING_INPUT +LWIP_MEMPOOL(TCPIP_MSG_INPKT,MEMP_NUM_TCPIP_MSG_INPKT, sizeof(struct tcpip_msg), "TCPIP_MSG_INPKT") +#endif /* !LWIP_TCPIP_CORE_LOCKING_INPUT */ +#endif /* NO_SYS==0 */ + +#if LWIP_IPV4 && LWIP_ARP && ARP_QUEUEING +LWIP_MEMPOOL(ARP_QUEUE, MEMP_NUM_ARP_QUEUE, sizeof(struct etharp_q_entry), "ARP_QUEUE") +#endif /* LWIP_IPV4 && LWIP_ARP && ARP_QUEUEING */ + +#if LWIP_IGMP +LWIP_MEMPOOL(IGMP_GROUP, MEMP_NUM_IGMP_GROUP, sizeof(struct igmp_group), "IGMP_GROUP") +#endif /* LWIP_IGMP */ + +#if LWIP_TIMERS && !LWIP_TIMERS_CUSTOM +LWIP_MEMPOOL(SYS_TIMEOUT, MEMP_NUM_SYS_TIMEOUT, sizeof(struct sys_timeo), "SYS_TIMEOUT") +#endif /* LWIP_TIMERS && !LWIP_TIMERS_CUSTOM */ + +#if LWIP_DNS && LWIP_SOCKET +LWIP_MEMPOOL(NETDB, MEMP_NUM_NETDB, NETDB_ELEM_SIZE, "NETDB") +#endif /* LWIP_DNS && LWIP_SOCKET */ +#if LWIP_DNS && DNS_LOCAL_HOSTLIST && DNS_LOCAL_HOSTLIST_IS_DYNAMIC +LWIP_MEMPOOL(LOCALHOSTLIST, MEMP_NUM_LOCALHOSTLIST, LOCALHOSTLIST_ELEM_SIZE, "LOCALHOSTLIST") +#endif /* LWIP_DNS && DNS_LOCAL_HOSTLIST && DNS_LOCAL_HOSTLIST_IS_DYNAMIC */ + +#if LWIP_IPV6 && LWIP_ND6_QUEUEING +LWIP_MEMPOOL(ND6_QUEUE, MEMP_NUM_ND6_QUEUE, sizeof(struct nd6_q_entry), "ND6_QUEUE") +#endif /* LWIP_IPV6 && LWIP_ND6_QUEUEING */ + +#if LWIP_IPV6 && LWIP_IPV6_REASS +LWIP_MEMPOOL(IP6_REASSDATA, MEMP_NUM_REASSDATA, sizeof(struct ip6_reassdata), "IP6_REASSDATA") +#endif /* LWIP_IPV6 && LWIP_IPV6_REASS */ + +#if LWIP_IPV6 && LWIP_IPV6_MLD +LWIP_MEMPOOL(MLD6_GROUP, MEMP_NUM_MLD6_GROUP, sizeof(struct mld_group), "MLD6_GROUP") +#endif /* LWIP_IPV6 && LWIP_IPV6_MLD */ + + +/* + * A list of pools of pbuf's used by LWIP. + * + * LWIP_PBUF_MEMPOOL(pool_name, number_elements, pbuf_payload_size, pool_description) + * creates a pool name MEMP_pool_name. description is used in stats.c + * This allocates enough space for the pbuf struct and a payload. + * (Example: pbuf_payload_size=0 allocates only size for the struct) + */ +LWIP_PBUF_MEMPOOL(PBUF, MEMP_NUM_PBUF, 0, "PBUF_REF/ROM") +LWIP_PBUF_MEMPOOL(PBUF_POOL, PBUF_POOL_SIZE, PBUF_POOL_BUFSIZE, "PBUF_POOL") + + +/* + * Allow for user-defined pools; this must be explicitly set in lwipopts.h + * since the default is to NOT look for lwippools.h + */ +#if MEMP_USE_CUSTOM_POOLS +#include "lwippools.h" +#endif /* MEMP_USE_CUSTOM_POOLS */ + +/* + * REQUIRED CLEANUP: Clear up so we don't get "multiply defined" error later + * (#undef is ignored for something that is not defined) + */ +#undef LWIP_MEMPOOL +#undef LWIP_MALLOC_MEMPOOL +#undef LWIP_MALLOC_MEMPOOL_START +#undef LWIP_MALLOC_MEMPOOL_END +#undef LWIP_PBUF_MEMPOOL diff --git a/tools/sdk/lwip2/include/lwip/priv/nd6_priv.h b/tools/sdk/lwip2/include/lwip/priv/nd6_priv.h new file mode 100644 index 000000000..4bda0b793 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/priv/nd6_priv.h @@ -0,0 +1,144 @@ +/** + * @file + * + * Neighbor discovery and stateless address autoconfiguration for IPv6. + * Aims to be compliant with RFC 4861 (Neighbor discovery) and RFC 4862 + * (Address autoconfiguration). + */ + +/* + * Copyright (c) 2010 Inico Technologies Ltd. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Ivan Delamer + * + * + * Please coordinate changes and requests with Ivan Delamer + * + */ + +#ifndef LWIP_HDR_ND6_PRIV_H +#define LWIP_HDR_ND6_PRIV_H + +#include "lwip/opt.h" + +#if LWIP_IPV6 /* don't build if not configured for use in lwipopts.h */ + +#include "lwip/pbuf.h" +#include "lwip/ip6_addr.h" +#include "lwip/netif.h" + + +#ifdef __cplusplus +extern "C" { +#endif + +#if LWIP_ND6_QUEUEING +/** struct for queueing outgoing packets for unknown address + * defined here to be accessed by memp.h + */ +struct nd6_q_entry { + struct nd6_q_entry *next; + struct pbuf *p; +}; +#endif /* LWIP_ND6_QUEUEING */ + +/** Struct for tables. */ +struct nd6_neighbor_cache_entry { + ip6_addr_t next_hop_address; + struct netif *netif; + u8_t lladdr[NETIF_MAX_HWADDR_LEN]; + /*u32_t pmtu;*/ +#if LWIP_ND6_QUEUEING + /** Pointer to queue of pending outgoing packets on this entry. */ + struct nd6_q_entry *q; +#else /* LWIP_ND6_QUEUEING */ + /** Pointer to a single pending outgoing packet on this entry. */ + struct pbuf *q; +#endif /* LWIP_ND6_QUEUEING */ + u8_t state; + u8_t isrouter; + union { + u32_t reachable_time; /* in ms since value may originate from network packet */ + u32_t delay_time; /* ticks (ND6_TMR_INTERVAL) */ + u32_t probes_sent; + u32_t stale_time; /* ticks (ND6_TMR_INTERVAL) */ + } counter; +}; + +struct nd6_destination_cache_entry { + ip6_addr_t destination_addr; + ip6_addr_t next_hop_addr; + u16_t pmtu; + u32_t age; +}; + +struct nd6_prefix_list_entry { + ip6_addr_t prefix; + struct netif *netif; + u32_t invalidation_timer; /* in ms since value may originate from network packet */ +#if LWIP_IPV6_AUTOCONFIG + u8_t flags; +#define ND6_PREFIX_AUTOCONFIG_AUTONOMOUS 0x01 +#define ND6_PREFIX_AUTOCONFIG_ADDRESS_GENERATED 0x02 +#define ND6_PREFIX_AUTOCONFIG_ADDRESS_DUPLICATE 0x04 +#endif /* LWIP_IPV6_AUTOCONFIG */ +}; + +struct nd6_router_list_entry { + struct nd6_neighbor_cache_entry *neighbor_entry; + u32_t invalidation_timer; /* in ms since value may originate from network packet */ + u8_t flags; +}; + +enum nd6_neighbor_cache_entry_state { + ND6_NO_ENTRY = 0, + ND6_INCOMPLETE, + ND6_REACHABLE, + ND6_STALE, + ND6_DELAY, + ND6_PROBE +}; + +/* Router tables. */ +/* @todo make these static? and entries accessible through API? */ +extern struct nd6_neighbor_cache_entry neighbor_cache[]; +extern struct nd6_destination_cache_entry destination_cache[]; +extern struct nd6_prefix_list_entry prefix_list[]; +extern struct nd6_router_list_entry default_router_list[]; + +/* Default values, can be updated by a RA message. */ +extern u32_t reachable_time; +extern u32_t retrans_timer; + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_IPV6 */ + +#endif /* LWIP_HDR_ND6_PRIV_H */ diff --git a/tools/sdk/lwip2/include/lwip/priv/tcp_priv.h b/tools/sdk/lwip2/include/lwip/priv/tcp_priv.h new file mode 100644 index 000000000..73e8967e4 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/priv/tcp_priv.h @@ -0,0 +1,507 @@ +/** + * @file + * TCP internal implementations (do not use in application code) + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_TCP_PRIV_H +#define LWIP_HDR_TCP_PRIV_H + +#include "lwip/opt.h" + +#if LWIP_TCP /* don't build if not configured for use in lwipopts.h */ + +#include "lwip/tcp.h" +#include "lwip/mem.h" +#include "lwip/pbuf.h" +#include "lwip/ip.h" +#include "lwip/icmp.h" +#include "lwip/err.h" +#include "lwip/ip6.h" +#include "lwip/ip6_addr.h" +#include "lwip/prot/tcp.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Functions for interfacing with TCP: */ + +/* Lower layer interface to TCP: */ +void tcp_init (void); /* Initialize this module. */ +void tcp_tmr (void); /* Must be called every + TCP_TMR_INTERVAL + ms. (Typically 250 ms). */ +/* It is also possible to call these two functions at the right + intervals (instead of calling tcp_tmr()). */ +void tcp_slowtmr (void); +void tcp_fasttmr (void); + +/* Call this from a netif driver (watch out for threading issues!) that has + returned a memory error on transmit and now has free buffers to send more. + This iterates all active pcbs that had an error and tries to call + tcp_output, so use this with care as it might slow down the system. */ +void tcp_txnow (void); + +/* Only used by IP to pass a TCP segment to TCP: */ +void tcp_input (struct pbuf *p, struct netif *inp); +/* Used within the TCP code only: */ +struct tcp_pcb * tcp_alloc (u8_t prio); +void tcp_abandon (struct tcp_pcb *pcb, int reset); +err_t tcp_send_empty_ack(struct tcp_pcb *pcb); +void tcp_rexmit (struct tcp_pcb *pcb); +void tcp_rexmit_rto (struct tcp_pcb *pcb); +void tcp_rexmit_fast (struct tcp_pcb *pcb); +u32_t tcp_update_rcv_ann_wnd(struct tcp_pcb *pcb); +err_t tcp_process_refused_data(struct tcp_pcb *pcb); + +/** + * This is the Nagle algorithm: try to combine user data to send as few TCP + * segments as possible. Only send if + * - no previously transmitted data on the connection remains unacknowledged or + * - the TF_NODELAY flag is set (nagle algorithm turned off for this pcb) or + * - the only unsent segment is at least pcb->mss bytes long (or there is more + * than one unsent segment - with lwIP, this can happen although unsent->len < mss) + * - or if we are in fast-retransmit (TF_INFR) + */ +#define tcp_do_output_nagle(tpcb) ((((tpcb)->unacked == NULL) || \ + ((tpcb)->flags & (TF_NODELAY | TF_INFR)) || \ + (((tpcb)->unsent != NULL) && (((tpcb)->unsent->next != NULL) || \ + ((tpcb)->unsent->len >= (tpcb)->mss))) || \ + ((tcp_sndbuf(tpcb) == 0) || (tcp_sndqueuelen(tpcb) >= TCP_SND_QUEUELEN)) \ + ) ? 1 : 0) +#define tcp_output_nagle(tpcb) (tcp_do_output_nagle(tpcb) ? tcp_output(tpcb) : ERR_OK) + + +#define TCP_SEQ_LT(a,b) ((s32_t)((u32_t)(a) - (u32_t)(b)) < 0) +#define TCP_SEQ_LEQ(a,b) ((s32_t)((u32_t)(a) - (u32_t)(b)) <= 0) +#define TCP_SEQ_GT(a,b) ((s32_t)((u32_t)(a) - (u32_t)(b)) > 0) +#define TCP_SEQ_GEQ(a,b) ((s32_t)((u32_t)(a) - (u32_t)(b)) >= 0) +/* is b<=a<=c? */ +#if 0 /* see bug #10548 */ +#define TCP_SEQ_BETWEEN(a,b,c) ((c)-(b) >= (a)-(b)) +#endif +#define TCP_SEQ_BETWEEN(a,b,c) (TCP_SEQ_GEQ(a,b) && TCP_SEQ_LEQ(a,c)) + +#ifndef TCP_TMR_INTERVAL +#define TCP_TMR_INTERVAL 250 /* The TCP timer interval in milliseconds. */ +#endif /* TCP_TMR_INTERVAL */ + +#ifndef TCP_FAST_INTERVAL +#define TCP_FAST_INTERVAL TCP_TMR_INTERVAL /* the fine grained timeout in milliseconds */ +#endif /* TCP_FAST_INTERVAL */ + +#ifndef TCP_SLOW_INTERVAL +#define TCP_SLOW_INTERVAL (2*TCP_TMR_INTERVAL) /* the coarse grained timeout in milliseconds */ +#endif /* TCP_SLOW_INTERVAL */ + +#define TCP_FIN_WAIT_TIMEOUT 20000 /* milliseconds */ +#define TCP_SYN_RCVD_TIMEOUT 20000 /* milliseconds */ + +#define TCP_OOSEQ_TIMEOUT 6U /* x RTO */ + +#ifndef TCP_MSL +#define TCP_MSL 60000UL /* The maximum segment lifetime in milliseconds */ +#endif + +/* Keepalive values, compliant with RFC 1122. Don't change this unless you know what you're doing */ +#ifndef TCP_KEEPIDLE_DEFAULT +#define TCP_KEEPIDLE_DEFAULT 7200000UL /* Default KEEPALIVE timer in milliseconds */ +#endif + +#ifndef TCP_KEEPINTVL_DEFAULT +#define TCP_KEEPINTVL_DEFAULT 75000UL /* Default Time between KEEPALIVE probes in milliseconds */ +#endif + +#ifndef TCP_KEEPCNT_DEFAULT +#define TCP_KEEPCNT_DEFAULT 9U /* Default Counter for KEEPALIVE probes */ +#endif + +#define TCP_MAXIDLE TCP_KEEPCNT_DEFAULT * TCP_KEEPINTVL_DEFAULT /* Maximum KEEPALIVE probe time */ + +#define TCP_TCPLEN(seg) ((seg)->len + (((TCPH_FLAGS((seg)->tcphdr) & (TCP_FIN | TCP_SYN)) != 0) ? 1U : 0U)) + +/** Flags used on input processing, not on pcb->flags +*/ +#define TF_RESET (u8_t)0x08U /* Connection was reset. */ +#define TF_CLOSED (u8_t)0x10U /* Connection was successfully closed. */ +#define TF_GOT_FIN (u8_t)0x20U /* Connection was closed by the remote end. */ + + +#if LWIP_EVENT_API + +#define TCP_EVENT_ACCEPT(lpcb,pcb,arg,err,ret) ret = lwip_tcp_event(arg, (pcb),\ + LWIP_EVENT_ACCEPT, NULL, 0, err) +#define TCP_EVENT_SENT(pcb,space,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\ + LWIP_EVENT_SENT, NULL, space, ERR_OK) +#define TCP_EVENT_RECV(pcb,p,err,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\ + LWIP_EVENT_RECV, (p), 0, (err)) +#define TCP_EVENT_CLOSED(pcb,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\ + LWIP_EVENT_RECV, NULL, 0, ERR_OK) +#define TCP_EVENT_CONNECTED(pcb,err,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\ + LWIP_EVENT_CONNECTED, NULL, 0, (err)) +#define TCP_EVENT_POLL(pcb,ret) do { if ((pcb)->state != SYN_RCVD) { \ + ret = lwip_tcp_event((pcb)->callback_arg, (pcb), LWIP_EVENT_POLL, NULL, 0, ERR_OK); \ + } else { \ + ret = ERR_ARG; } } while(0) +#define TCP_EVENT_ERR(last_state,errf,arg,err) do { if (last_state != SYN_RCVD) { \ + lwip_tcp_event((arg), NULL, LWIP_EVENT_ERR, NULL, 0, (err)); } } while(0) + +#else /* LWIP_EVENT_API */ + +#define TCP_EVENT_ACCEPT(lpcb,pcb,arg,err,ret) \ + do { \ + if((lpcb)->accept != NULL) \ + (ret) = (lpcb)->accept((arg),(pcb),(err)); \ + else (ret) = ERR_ARG; \ + } while (0) + +#define TCP_EVENT_SENT(pcb,space,ret) \ + do { \ + if((pcb)->sent != NULL) \ + (ret) = (pcb)->sent((pcb)->callback_arg,(pcb),(space)); \ + else (ret) = ERR_OK; \ + } while (0) + +#define TCP_EVENT_RECV(pcb,p,err,ret) \ + do { \ + if((pcb)->recv != NULL) { \ + (ret) = (pcb)->recv((pcb)->callback_arg,(pcb),(p),(err));\ + } else { \ + (ret) = tcp_recv_null(NULL, (pcb), (p), (err)); \ + } \ + } while (0) + +#define TCP_EVENT_CLOSED(pcb,ret) \ + do { \ + if(((pcb)->recv != NULL)) { \ + (ret) = (pcb)->recv((pcb)->callback_arg,(pcb),NULL,ERR_OK);\ + } else { \ + (ret) = ERR_OK; \ + } \ + } while (0) + +#define TCP_EVENT_CONNECTED(pcb,err,ret) \ + do { \ + if((pcb)->connected != NULL) \ + (ret) = (pcb)->connected((pcb)->callback_arg,(pcb),(err)); \ + else (ret) = ERR_OK; \ + } while (0) + +#define TCP_EVENT_POLL(pcb,ret) \ + do { \ + if((pcb)->poll != NULL) \ + (ret) = (pcb)->poll((pcb)->callback_arg,(pcb)); \ + else (ret) = ERR_OK; \ + } while (0) + +#define TCP_EVENT_ERR(last_state,errf,arg,err) \ + do { \ + LWIP_UNUSED_ARG(last_state); \ + if((errf) != NULL) \ + (errf)((arg),(err)); \ + } while (0) + +#endif /* LWIP_EVENT_API */ + +/** Enabled extra-check for TCP_OVERSIZE if LWIP_DEBUG is enabled */ +#if TCP_OVERSIZE && defined(LWIP_DEBUG) +#define TCP_OVERSIZE_DBGCHECK 1 +#else +#define TCP_OVERSIZE_DBGCHECK 0 +#endif + +/** Don't generate checksum on copy if CHECKSUM_GEN_TCP is disabled */ +#define TCP_CHECKSUM_ON_COPY (LWIP_CHECKSUM_ON_COPY && CHECKSUM_GEN_TCP) + +/* This structure represents a TCP segment on the unsent, unacked and ooseq queues */ +struct tcp_seg { + struct tcp_seg *next; /* used when putting segments on a queue */ + struct pbuf *p; /* buffer containing data + TCP header */ + u16_t len; /* the TCP length of this segment */ +#if TCP_OVERSIZE_DBGCHECK + u16_t oversize_left; /* Extra bytes available at the end of the last + pbuf in unsent (used for asserting vs. + tcp_pcb.unsent_oversize only) */ +#endif /* TCP_OVERSIZE_DBGCHECK */ +#if TCP_CHECKSUM_ON_COPY + u16_t chksum; + u8_t chksum_swapped; +#endif /* TCP_CHECKSUM_ON_COPY */ + u8_t flags; +#define TF_SEG_OPTS_MSS (u8_t)0x01U /* Include MSS option. */ +#define TF_SEG_OPTS_TS (u8_t)0x02U /* Include timestamp option. */ +#define TF_SEG_DATA_CHECKSUMMED (u8_t)0x04U /* ALL data (not the header) is + checksummed into 'chksum' */ +#define TF_SEG_OPTS_WND_SCALE (u8_t)0x08U /* Include WND SCALE option */ + struct tcp_hdr *tcphdr; /* the TCP header */ +}; + +#define LWIP_TCP_OPT_EOL 0 +#define LWIP_TCP_OPT_NOP 1 +#define LWIP_TCP_OPT_MSS 2 +#define LWIP_TCP_OPT_WS 3 +#define LWIP_TCP_OPT_TS 8 + +#define LWIP_TCP_OPT_LEN_MSS 4 +#if LWIP_TCP_TIMESTAMPS +#define LWIP_TCP_OPT_LEN_TS 10 +#define LWIP_TCP_OPT_LEN_TS_OUT 12 /* aligned for output (includes NOP padding) */ +#else +#define LWIP_TCP_OPT_LEN_TS_OUT 0 +#endif +#if LWIP_WND_SCALE +#define LWIP_TCP_OPT_LEN_WS 3 +#define LWIP_TCP_OPT_LEN_WS_OUT 4 /* aligned for output (includes NOP padding) */ +#else +#define LWIP_TCP_OPT_LEN_WS_OUT 0 +#endif + +#define LWIP_TCP_OPT_LENGTH(flags) \ + (flags & TF_SEG_OPTS_MSS ? LWIP_TCP_OPT_LEN_MSS : 0) + \ + (flags & TF_SEG_OPTS_TS ? LWIP_TCP_OPT_LEN_TS_OUT : 0) + \ + (flags & TF_SEG_OPTS_WND_SCALE ? LWIP_TCP_OPT_LEN_WS_OUT : 0) + +/** This returns a TCP header option for MSS in an u32_t */ +#define TCP_BUILD_MSS_OPTION(mss) lwip_htonl(0x02040000 | ((mss) & 0xFFFF)) + +#if LWIP_WND_SCALE +#define TCPWNDSIZE_F U32_F +#define TCPWND_MAX 0xFFFFFFFFU +#define TCPWND_CHECK16(x) LWIP_ASSERT("window size > 0xFFFF", (x) <= 0xFFFF) +#define TCPWND_MIN16(x) ((u16_t)LWIP_MIN((x), 0xFFFF)) +#else /* LWIP_WND_SCALE */ +#define TCPWNDSIZE_F U16_F +#define TCPWND_MAX 0xFFFFU +#define TCPWND_CHECK16(x) +#define TCPWND_MIN16(x) x +#endif /* LWIP_WND_SCALE */ + +/* Global variables: */ +extern struct tcp_pcb *tcp_input_pcb; +extern u32_t tcp_ticks; +extern u8_t tcp_active_pcbs_changed; + +/* The TCP PCB lists. */ +union tcp_listen_pcbs_t { /* List of all TCP PCBs in LISTEN state. */ + struct tcp_pcb_listen *listen_pcbs; + struct tcp_pcb *pcbs; +}; +extern struct tcp_pcb *tcp_bound_pcbs; +extern union tcp_listen_pcbs_t tcp_listen_pcbs; +extern struct tcp_pcb *tcp_active_pcbs; /* List of all TCP PCBs that are in a + state in which they accept or send + data. */ +extern struct tcp_pcb *tcp_tw_pcbs; /* List of all TCP PCBs in TIME-WAIT. */ + +#define NUM_TCP_PCB_LISTS_NO_TIME_WAIT 3 +#define NUM_TCP_PCB_LISTS 4 +extern struct tcp_pcb ** const tcp_pcb_lists[NUM_TCP_PCB_LISTS]; + +/* Axioms about the above lists: + 1) Every TCP PCB that is not CLOSED is in one of the lists. + 2) A PCB is only in one of the lists. + 3) All PCBs in the tcp_listen_pcbs list is in LISTEN state. + 4) All PCBs in the tcp_tw_pcbs list is in TIME-WAIT state. +*/ +/* Define two macros, TCP_REG and TCP_RMV that registers a TCP PCB + with a PCB list or removes a PCB from a list, respectively. */ +#ifndef TCP_DEBUG_PCB_LISTS +#define TCP_DEBUG_PCB_LISTS 0 +#endif +#if TCP_DEBUG_PCB_LISTS +#define TCP_REG(pcbs, npcb) do {\ + struct tcp_pcb *tcp_tmp_pcb; \ + LWIP_DEBUGF(TCP_DEBUG, ("TCP_REG %p local port %d\n", (npcb), (npcb)->local_port)); \ + for (tcp_tmp_pcb = *(pcbs); \ + tcp_tmp_pcb != NULL; \ + tcp_tmp_pcb = tcp_tmp_pcb->next) { \ + LWIP_ASSERT("TCP_REG: already registered\n", tcp_tmp_pcb != (npcb)); \ + } \ + LWIP_ASSERT("TCP_REG: pcb->state != CLOSED", ((pcbs) == &tcp_bound_pcbs) || ((npcb)->state != CLOSED)); \ + (npcb)->next = *(pcbs); \ + LWIP_ASSERT("TCP_REG: npcb->next != npcb", (npcb)->next != (npcb)); \ + *(pcbs) = (npcb); \ + LWIP_ASSERT("TCP_RMV: tcp_pcbs sane", tcp_pcbs_sane()); \ + tcp_timer_needed(); \ + } while(0) +#define TCP_RMV(pcbs, npcb) do { \ + struct tcp_pcb *tcp_tmp_pcb; \ + LWIP_ASSERT("TCP_RMV: pcbs != NULL", *(pcbs) != NULL); \ + LWIP_DEBUGF(TCP_DEBUG, ("TCP_RMV: removing %p from %p\n", (npcb), *(pcbs))); \ + if(*(pcbs) == (npcb)) { \ + *(pcbs) = (*pcbs)->next; \ + } else for (tcp_tmp_pcb = *(pcbs); tcp_tmp_pcb != NULL; tcp_tmp_pcb = tcp_tmp_pcb->next) { \ + if(tcp_tmp_pcb->next == (npcb)) { \ + tcp_tmp_pcb->next = (npcb)->next; \ + break; \ + } \ + } \ + (npcb)->next = NULL; \ + LWIP_ASSERT("TCP_RMV: tcp_pcbs sane", tcp_pcbs_sane()); \ + LWIP_DEBUGF(TCP_DEBUG, ("TCP_RMV: removed %p from %p\n", (npcb), *(pcbs))); \ + } while(0) + +#else /* LWIP_DEBUG */ + +#define TCP_REG(pcbs, npcb) \ + do { \ + (npcb)->next = *pcbs; \ + *(pcbs) = (npcb); \ + tcp_timer_needed(); \ + } while (0) + +#define TCP_RMV(pcbs, npcb) \ + do { \ + if(*(pcbs) == (npcb)) { \ + (*(pcbs)) = (*pcbs)->next; \ + } \ + else { \ + struct tcp_pcb *tcp_tmp_pcb; \ + for (tcp_tmp_pcb = *pcbs; \ + tcp_tmp_pcb != NULL; \ + tcp_tmp_pcb = tcp_tmp_pcb->next) { \ + if(tcp_tmp_pcb->next == (npcb)) { \ + tcp_tmp_pcb->next = (npcb)->next; \ + break; \ + } \ + } \ + } \ + (npcb)->next = NULL; \ + } while(0) + +#endif /* LWIP_DEBUG */ + +#define TCP_REG_ACTIVE(npcb) \ + do { \ + TCP_REG(&tcp_active_pcbs, npcb); \ + tcp_active_pcbs_changed = 1; \ + } while (0) + +#define TCP_RMV_ACTIVE(npcb) \ + do { \ + TCP_RMV(&tcp_active_pcbs, npcb); \ + tcp_active_pcbs_changed = 1; \ + } while (0) + +#define TCP_PCB_REMOVE_ACTIVE(pcb) \ + do { \ + tcp_pcb_remove(&tcp_active_pcbs, pcb); \ + tcp_active_pcbs_changed = 1; \ + } while (0) + + +/* Internal functions: */ +struct tcp_pcb *tcp_pcb_copy(struct tcp_pcb *pcb); +void tcp_pcb_purge(struct tcp_pcb *pcb); +void tcp_pcb_remove(struct tcp_pcb **pcblist, struct tcp_pcb *pcb); + +void tcp_segs_free(struct tcp_seg *seg); +void tcp_seg_free(struct tcp_seg *seg); +struct tcp_seg *tcp_seg_copy(struct tcp_seg *seg); + +#define tcp_ack(pcb) \ + do { \ + if((pcb)->flags & TF_ACK_DELAY) { \ + (pcb)->flags &= ~TF_ACK_DELAY; \ + (pcb)->flags |= TF_ACK_NOW; \ + } \ + else { \ + (pcb)->flags |= TF_ACK_DELAY; \ + } \ + } while (0) + +#define tcp_ack_now(pcb) \ + do { \ + (pcb)->flags |= TF_ACK_NOW; \ + } while (0) + +err_t tcp_send_fin(struct tcp_pcb *pcb); +err_t tcp_enqueue_flags(struct tcp_pcb *pcb, u8_t flags); + +void tcp_rexmit_seg(struct tcp_pcb *pcb, struct tcp_seg *seg); + +void tcp_rst(u32_t seqno, u32_t ackno, + const ip_addr_t *local_ip, const ip_addr_t *remote_ip, + u16_t local_port, u16_t remote_port); + +u32_t tcp_next_iss(struct tcp_pcb *pcb); + +err_t tcp_keepalive(struct tcp_pcb *pcb); +err_t tcp_zero_window_probe(struct tcp_pcb *pcb); +void tcp_trigger_input_pcb_close(void); + +#if TCP_CALCULATE_EFF_SEND_MSS +u16_t tcp_eff_send_mss_impl(u16_t sendmss, const ip_addr_t *dest +#if LWIP_IPV6 || LWIP_IPV4_SRC_ROUTING + , const ip_addr_t *src +#endif /* LWIP_IPV6 || LWIP_IPV4_SRC_ROUTING */ + ); +#if LWIP_IPV6 || LWIP_IPV4_SRC_ROUTING +#define tcp_eff_send_mss(sendmss, src, dest) tcp_eff_send_mss_impl(sendmss, dest, src) +#else /* LWIP_IPV6 || LWIP_IPV4_SRC_ROUTING */ +#define tcp_eff_send_mss(sendmss, src, dest) tcp_eff_send_mss_impl(sendmss, dest) +#endif /* LWIP_IPV6 || LWIP_IPV4_SRC_ROUTING */ +#endif /* TCP_CALCULATE_EFF_SEND_MSS */ + +#if LWIP_CALLBACK_API +err_t tcp_recv_null(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err); +#endif /* LWIP_CALLBACK_API */ + +#if TCP_DEBUG || TCP_INPUT_DEBUG || TCP_OUTPUT_DEBUG +void tcp_debug_print(struct tcp_hdr *tcphdr); +void tcp_debug_print_flags(u8_t flags); +void tcp_debug_print_state(enum tcp_state s); +void tcp_debug_print_pcbs(void); +s16_t tcp_pcbs_sane(void); +#else +# define tcp_debug_print(tcphdr) +# define tcp_debug_print_flags(flags) +# define tcp_debug_print_state(s) +# define tcp_debug_print_pcbs() +# define tcp_pcbs_sane() 1 +#endif /* TCP_DEBUG */ + +/** External function (implemented in timers.c), called when TCP detects + * that a timer is needed (i.e. active- or time-wait-pcb found). */ +void tcp_timer_needed(void); + +void tcp_netif_ip_addr_changed(const ip_addr_t* old_addr, const ip_addr_t* new_addr); + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_TCP */ + +#endif /* LWIP_HDR_TCP_PRIV_H */ diff --git a/tools/sdk/lwip2/include/lwip/priv/tcpip_priv.h b/tools/sdk/lwip2/include/lwip/priv/tcpip_priv.h new file mode 100644 index 000000000..630efb140 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/priv/tcpip_priv.h @@ -0,0 +1,160 @@ +/** + * @file + * TCPIP API internal implementations (do not use in application code) + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_TCPIP_PRIV_H +#define LWIP_HDR_TCPIP_PRIV_H + +#include "lwip/opt.h" + +#if !NO_SYS /* don't build if not configured for use in lwipopts.h */ + +#include "lwip/tcpip.h" +#include "lwip/sys.h" +#include "lwip/timeouts.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct pbuf; +struct netif; + +#if LWIP_MPU_COMPATIBLE +#define API_VAR_REF(name) (*(name)) +#define API_VAR_DECLARE(type, name) type * name +#define API_VAR_ALLOC(type, pool, name, errorval) do { \ + name = (type *)memp_malloc(pool); \ + if (name == NULL) { \ + return errorval; \ + } \ + } while(0) +#define API_VAR_ALLOC_POOL(type, pool, name, errorval) do { \ + name = (type *)LWIP_MEMPOOL_ALLOC(pool); \ + if (name == NULL) { \ + return errorval; \ + } \ + } while(0) +#define API_VAR_FREE(pool, name) memp_free(pool, name) +#define API_VAR_FREE_POOL(pool, name) LWIP_MEMPOOL_FREE(pool, name) +#define API_EXPR_REF(expr) (&(expr)) +#if LWIP_NETCONN_SEM_PER_THREAD +#define API_EXPR_REF_SEM(expr) (expr) +#else +#define API_EXPR_REF_SEM(expr) API_EXPR_REF(expr) +#endif +#define API_EXPR_DEREF(expr) expr +#define API_MSG_M_DEF(m) m +#define API_MSG_M_DEF_C(t, m) t m +#else /* LWIP_MPU_COMPATIBLE */ +#define API_VAR_REF(name) name +#define API_VAR_DECLARE(type, name) type name +#define API_VAR_ALLOC(type, pool, name, errorval) +#define API_VAR_ALLOC_POOL(type, pool, name, errorval) +#define API_VAR_FREE(pool, name) +#define API_VAR_FREE_POOL(pool, name) +#define API_EXPR_REF(expr) expr +#define API_EXPR_REF_SEM(expr) API_EXPR_REF(expr) +#define API_EXPR_DEREF(expr) (*(expr)) +#define API_MSG_M_DEF(m) *m +#define API_MSG_M_DEF_C(t, m) const t * m +#endif /* LWIP_MPU_COMPATIBLE */ + +err_t tcpip_send_msg_wait_sem(tcpip_callback_fn fn, void *apimsg, sys_sem_t* sem); + +struct tcpip_api_call_data +{ +#if !LWIP_TCPIP_CORE_LOCKING + err_t err; +#if !LWIP_NETCONN_SEM_PER_THREAD + sys_sem_t sem; +#endif /* LWIP_NETCONN_SEM_PER_THREAD */ +#else /* !LWIP_TCPIP_CORE_LOCKING */ + u8_t dummy; /* avoid empty struct :-( */ +#endif /* !LWIP_TCPIP_CORE_LOCKING */ +}; +typedef err_t (*tcpip_api_call_fn)(struct tcpip_api_call_data* call); +err_t tcpip_api_call(tcpip_api_call_fn fn, struct tcpip_api_call_data *call); + +enum tcpip_msg_type { + TCPIP_MSG_API, + TCPIP_MSG_API_CALL, + TCPIP_MSG_INPKT, +#if LWIP_TCPIP_TIMEOUT && LWIP_TIMERS + TCPIP_MSG_TIMEOUT, + TCPIP_MSG_UNTIMEOUT, +#endif /* LWIP_TCPIP_TIMEOUT && LWIP_TIMERS */ + TCPIP_MSG_CALLBACK, + TCPIP_MSG_CALLBACK_STATIC +}; + +struct tcpip_msg { + enum tcpip_msg_type type; + union { + struct { + tcpip_callback_fn function; + void* msg; + } api_msg; + struct { + tcpip_api_call_fn function; + struct tcpip_api_call_data *arg; + sys_sem_t *sem; + } api_call; + struct { + struct pbuf *p; + struct netif *netif; + netif_input_fn input_fn; + } inp; + struct { + tcpip_callback_fn function; + void *ctx; + } cb; +#if LWIP_TCPIP_TIMEOUT && LWIP_TIMERS + struct { + u32_t msecs; + sys_timeout_handler h; + void *arg; + } tmo; +#endif /* LWIP_TCPIP_TIMEOUT && LWIP_TIMERS */ + } msg; +}; + +#ifdef __cplusplus +} +#endif + +#endif /* !NO_SYS */ + +#endif /* LWIP_HDR_TCPIP_PRIV_H */ diff --git a/tools/sdk/lwip2/include/lwip/prot/autoip.h b/tools/sdk/lwip2/include/lwip/prot/autoip.h new file mode 100644 index 000000000..fd3af8a9f --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/prot/autoip.h @@ -0,0 +1,78 @@ +/** + * @file + * AutoIP protocol definitions + */ + +/* + * + * Copyright (c) 2007 Dominik Spies + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * Author: Dominik Spies + * + * This is a AutoIP implementation for the lwIP TCP/IP stack. It aims to conform + * with RFC 3927. + * + */ + +#ifndef LWIP_HDR_PROT_AUTOIP_H +#define LWIP_HDR_PROT_AUTOIP_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* 169.254.0.0 */ +#define AUTOIP_NET 0xA9FE0000 +/* 169.254.1.0 */ +#define AUTOIP_RANGE_START (AUTOIP_NET | 0x0100) +/* 169.254.254.255 */ +#define AUTOIP_RANGE_END (AUTOIP_NET | 0xFEFF) + +/* RFC 3927 Constants */ +#define PROBE_WAIT 1 /* second (initial random delay) */ +#define PROBE_MIN 1 /* second (minimum delay till repeated probe) */ +#define PROBE_MAX 2 /* seconds (maximum delay till repeated probe) */ +#define PROBE_NUM 3 /* (number of probe packets) */ +#define ANNOUNCE_NUM 2 /* (number of announcement packets) */ +#define ANNOUNCE_INTERVAL 2 /* seconds (time between announcement packets) */ +#define ANNOUNCE_WAIT 2 /* seconds (delay before announcing) */ +#define MAX_CONFLICTS 10 /* (max conflicts before rate limiting) */ +#define RATE_LIMIT_INTERVAL 60 /* seconds (delay between successive attempts) */ +#define DEFEND_INTERVAL 10 /* seconds (min. wait between defensive ARPs) */ + +/* AutoIP client states */ +typedef enum { + AUTOIP_STATE_OFF = 0, + AUTOIP_STATE_PROBING = 1, + AUTOIP_STATE_ANNOUNCING = 2, + AUTOIP_STATE_BOUND = 3 +} autoip_state_enum_t; + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_PROT_AUTOIP_H */ diff --git a/tools/sdk/lwip2/include/lwip/prot/dhcp.h b/tools/sdk/lwip2/include/lwip/prot/dhcp.h new file mode 100644 index 000000000..112953cb8 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/prot/dhcp.h @@ -0,0 +1,183 @@ +/** + * @file + * DHCP protocol definitions + */ + +/* + * Copyright (c) 2001-2004 Leon Woestenberg + * Copyright (c) 2001-2004 Axon Digital Design B.V., The Netherlands. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Leon Woestenberg + * + */ +#ifndef LWIP_HDR_PROT_DHCP_H +#define LWIP_HDR_PROT_DHCP_H + +#include "lwip/opt.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define DHCP_CLIENT_PORT 68 +#define DHCP_SERVER_PORT 67 + + + /* DHCP message item offsets and length */ +#define DHCP_CHADDR_LEN 16U +#define DHCP_SNAME_OFS 44U +#define DHCP_SNAME_LEN 64U +#define DHCP_FILE_OFS 108U +#define DHCP_FILE_LEN 128U +#define DHCP_MSG_LEN 236U +#define DHCP_OPTIONS_OFS (DHCP_MSG_LEN + 4U) /* 4 byte: cookie */ + +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +/** minimum set of fields of any DHCP message */ +struct dhcp_msg +{ + PACK_STRUCT_FLD_8(u8_t op); + PACK_STRUCT_FLD_8(u8_t htype); + PACK_STRUCT_FLD_8(u8_t hlen); + PACK_STRUCT_FLD_8(u8_t hops); + PACK_STRUCT_FIELD(u32_t xid); + PACK_STRUCT_FIELD(u16_t secs); + PACK_STRUCT_FIELD(u16_t flags); + PACK_STRUCT_FLD_S(ip4_addr_p_t ciaddr); + PACK_STRUCT_FLD_S(ip4_addr_p_t yiaddr); + PACK_STRUCT_FLD_S(ip4_addr_p_t siaddr); + PACK_STRUCT_FLD_S(ip4_addr_p_t giaddr); + PACK_STRUCT_FLD_8(u8_t chaddr[DHCP_CHADDR_LEN]); + PACK_STRUCT_FLD_8(u8_t sname[DHCP_SNAME_LEN]); + PACK_STRUCT_FLD_8(u8_t file[DHCP_FILE_LEN]); + PACK_STRUCT_FIELD(u32_t cookie); +#define DHCP_MIN_OPTIONS_LEN 68U +/** make sure user does not configure this too small */ +#if ((defined(DHCP_OPTIONS_LEN)) && (DHCP_OPTIONS_LEN < DHCP_MIN_OPTIONS_LEN)) +# undef DHCP_OPTIONS_LEN +#endif +/** allow this to be configured in lwipopts.h, but not too small */ +#if (!defined(DHCP_OPTIONS_LEN)) +/** set this to be sufficient for your options in outgoing DHCP msgs */ +# define DHCP_OPTIONS_LEN DHCP_MIN_OPTIONS_LEN +#endif + PACK_STRUCT_FLD_8(u8_t options[DHCP_OPTIONS_LEN]); +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + + +/* DHCP client states */ +typedef enum { + DHCP_STATE_OFF = 0, + DHCP_STATE_REQUESTING = 1, + DHCP_STATE_INIT = 2, + DHCP_STATE_REBOOTING = 3, + DHCP_STATE_REBINDING = 4, + DHCP_STATE_RENEWING = 5, + DHCP_STATE_SELECTING = 6, + DHCP_STATE_INFORMING = 7, + DHCP_STATE_CHECKING = 8, + DHCP_STATE_PERMANENT = 9, /* not yet implemented */ + DHCP_STATE_BOUND = 10, + DHCP_STATE_RELEASING = 11, /* not yet implemented */ + DHCP_STATE_BACKING_OFF = 12 +} dhcp_state_enum_t; + +/* DHCP op codes */ +#define DHCP_BOOTREQUEST 1 +#define DHCP_BOOTREPLY 2 + +/* DHCP message types */ +#define DHCP_DISCOVER 1 +#define DHCP_OFFER 2 +#define DHCP_REQUEST 3 +#define DHCP_DECLINE 4 +#define DHCP_ACK 5 +#define DHCP_NAK 6 +#define DHCP_RELEASE 7 +#define DHCP_INFORM 8 + +/** DHCP hardware type, currently only ethernet is supported */ +#define DHCP_HTYPE_ETH 1 + +#define DHCP_MAGIC_COOKIE 0x63825363UL + +/* This is a list of options for BOOTP and DHCP, see RFC 2132 for descriptions */ + +/* BootP options */ +#define DHCP_OPTION_PAD 0 +#define DHCP_OPTION_SUBNET_MASK 1 /* RFC 2132 3.3 */ +#define DHCP_OPTION_ROUTER 3 +#define DHCP_OPTION_DNS_SERVER 6 +#define DHCP_OPTION_HOSTNAME 12 +#define DHCP_OPTION_IP_TTL 23 +#define DHCP_OPTION_MTU 26 +#define DHCP_OPTION_BROADCAST 28 +#define DHCP_OPTION_TCP_TTL 37 +#define DHCP_OPTION_NTP 42 +#define DHCP_OPTION_END 255 + +/* DHCP options */ +#define DHCP_OPTION_REQUESTED_IP 50 /* RFC 2132 9.1, requested IP address */ +#define DHCP_OPTION_LEASE_TIME 51 /* RFC 2132 9.2, time in seconds, in 4 bytes */ +#define DHCP_OPTION_OVERLOAD 52 /* RFC2132 9.3, use file and/or sname field for options */ + +#define DHCP_OPTION_MESSAGE_TYPE 53 /* RFC 2132 9.6, important for DHCP */ +#define DHCP_OPTION_MESSAGE_TYPE_LEN 1 + +#define DHCP_OPTION_SERVER_ID 54 /* RFC 2132 9.7, server IP address */ +#define DHCP_OPTION_PARAMETER_REQUEST_LIST 55 /* RFC 2132 9.8, requested option types */ + +#define DHCP_OPTION_MAX_MSG_SIZE 57 /* RFC 2132 9.10, message size accepted >= 576 */ +#define DHCP_OPTION_MAX_MSG_SIZE_LEN 2 + +#define DHCP_OPTION_T1 58 /* T1 renewal time */ +#define DHCP_OPTION_T2 59 /* T2 rebinding time */ +#define DHCP_OPTION_US 60 +#define DHCP_OPTION_CLIENT_ID 61 +#define DHCP_OPTION_TFTP_SERVERNAME 66 +#define DHCP_OPTION_BOOTFILE 67 + +/* possible combinations of overloading the file and sname fields with options */ +#define DHCP_OVERLOAD_NONE 0 +#define DHCP_OVERLOAD_FILE 1 +#define DHCP_OVERLOAD_SNAME 2 +#define DHCP_OVERLOAD_SNAME_FILE 3 + + +#ifdef __cplusplus +} +#endif + +#endif /*LWIP_HDR_PROT_DHCP_H*/ diff --git a/tools/sdk/lwip2/include/lwip/prot/dns.h b/tools/sdk/lwip2/include/lwip/prot/dns.h new file mode 100644 index 000000000..94782d6e9 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/prot/dns.h @@ -0,0 +1,140 @@ +/** + * @file + * DNS - host name to IP address resolver. + */ + +/* + * Port to lwIP from uIP + * by Jim Pettinato April 2007 + * + * security fixes and more by Simon Goldschmidt + * + * uIP version Copyright (c) 2002-2003, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef LWIP_HDR_PROT_DNS_H +#define LWIP_HDR_PROT_DNS_H + +#include "lwip/arch.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** DNS server port address */ +#ifndef DNS_SERVER_PORT +#define DNS_SERVER_PORT 53 +#endif + +/* DNS field TYPE used for "Resource Records" */ +#define DNS_RRTYPE_A 1 /* a host address */ +#define DNS_RRTYPE_NS 2 /* an authoritative name server */ +#define DNS_RRTYPE_MD 3 /* a mail destination (Obsolete - use MX) */ +#define DNS_RRTYPE_MF 4 /* a mail forwarder (Obsolete - use MX) */ +#define DNS_RRTYPE_CNAME 5 /* the canonical name for an alias */ +#define DNS_RRTYPE_SOA 6 /* marks the start of a zone of authority */ +#define DNS_RRTYPE_MB 7 /* a mailbox domain name (EXPERIMENTAL) */ +#define DNS_RRTYPE_MG 8 /* a mail group member (EXPERIMENTAL) */ +#define DNS_RRTYPE_MR 9 /* a mail rename domain name (EXPERIMENTAL) */ +#define DNS_RRTYPE_NULL 10 /* a null RR (EXPERIMENTAL) */ +#define DNS_RRTYPE_WKS 11 /* a well known service description */ +#define DNS_RRTYPE_PTR 12 /* a domain name pointer */ +#define DNS_RRTYPE_HINFO 13 /* host information */ +#define DNS_RRTYPE_MINFO 14 /* mailbox or mail list information */ +#define DNS_RRTYPE_MX 15 /* mail exchange */ +#define DNS_RRTYPE_TXT 16 /* text strings */ +#define DNS_RRTYPE_AAAA 28 /* IPv6 address */ +#define DNS_RRTYPE_SRV 33 /* service location */ +#define DNS_RRTYPE_ANY 255 /* any type */ + +/* DNS field CLASS used for "Resource Records" */ +#define DNS_RRCLASS_IN 1 /* the Internet */ +#define DNS_RRCLASS_CS 2 /* the CSNET class (Obsolete - used only for examples in some obsolete RFCs) */ +#define DNS_RRCLASS_CH 3 /* the CHAOS class */ +#define DNS_RRCLASS_HS 4 /* Hesiod [Dyer 87] */ +#define DNS_RRCLASS_ANY 255 /* any class */ +#define DNS_RRCLASS_FLUSH 0x800 /* Flush bit */ + +/* DNS protocol flags */ +#define DNS_FLAG1_RESPONSE 0x80 +#define DNS_FLAG1_OPCODE_STATUS 0x10 +#define DNS_FLAG1_OPCODE_INVERSE 0x08 +#define DNS_FLAG1_OPCODE_STANDARD 0x00 +#define DNS_FLAG1_AUTHORATIVE 0x04 +#define DNS_FLAG1_TRUNC 0x02 +#define DNS_FLAG1_RD 0x01 +#define DNS_FLAG2_RA 0x80 +#define DNS_FLAG2_ERR_MASK 0x0f +#define DNS_FLAG2_ERR_NONE 0x00 +#define DNS_FLAG2_ERR_NAME 0x03 + +#define DNS_HDR_GET_OPCODE(hdr) ((((hdr)->flags1) >> 3) & 0xF) + +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +/** DNS message header */ +struct dns_hdr { + PACK_STRUCT_FIELD(u16_t id); + PACK_STRUCT_FLD_8(u8_t flags1); + PACK_STRUCT_FLD_8(u8_t flags2); + PACK_STRUCT_FIELD(u16_t numquestions); + PACK_STRUCT_FIELD(u16_t numanswers); + PACK_STRUCT_FIELD(u16_t numauthrr); + PACK_STRUCT_FIELD(u16_t numextrarr); +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif +#define SIZEOF_DNS_HDR 12 + + +/* Multicast DNS definitions */ + +/** UDP port for multicast DNS queries */ +#ifndef DNS_MQUERY_PORT +#define DNS_MQUERY_PORT 5353 +#endif + +/* IPv4 group for multicast DNS queries: 224.0.0.251 */ +#ifndef DNS_MQUERY_IPV4_GROUP_INIT +#define DNS_MQUERY_IPV4_GROUP_INIT IPADDR4_INIT_BYTES(224,0,0,251) +#endif + +/* IPv6 group for multicast DNS queries: FF02::FB */ +#ifndef DNS_MQUERY_IPV6_GROUP_INIT +#define DNS_MQUERY_IPV6_GROUP_INIT IPADDR6_INIT_HOST(0xFF020000,0,0,0xFB) +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_PROT_DNS_H */ diff --git a/tools/sdk/lwip2/include/lwip/prot/etharp.h b/tools/sdk/lwip2/include/lwip/prot/etharp.h new file mode 100644 index 000000000..ec78305b8 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/prot/etharp.h @@ -0,0 +1,91 @@ +/** + * @file + * ARP protocol definitions + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_PROT_ETHARP_H +#define LWIP_HDR_PROT_ETHARP_H + +#include "lwip/arch.h" +#include "lwip/prot/ethernet.h" +#include "lwip/ip4_addr.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef ETHARP_HWADDR_LEN +#define ETHARP_HWADDR_LEN ETH_HWADDR_LEN +#endif + +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +/** the ARP message, see RFC 826 ("Packet format") */ +struct etharp_hdr { + PACK_STRUCT_FIELD(u16_t hwtype); + PACK_STRUCT_FIELD(u16_t proto); + PACK_STRUCT_FLD_8(u8_t hwlen); + PACK_STRUCT_FLD_8(u8_t protolen); + PACK_STRUCT_FIELD(u16_t opcode); + PACK_STRUCT_FLD_S(struct eth_addr shwaddr); + PACK_STRUCT_FLD_S(struct ip4_addr2 sipaddr); + PACK_STRUCT_FLD_S(struct eth_addr dhwaddr); + PACK_STRUCT_FLD_S(struct ip4_addr2 dipaddr); +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +#define SIZEOF_ETHARP_HDR 28 + +/* ARP hwtype values */ +enum etharp_hwtype { + HWTYPE_ETHERNET = 1 + /* others not used */ +}; + +/* ARP message types (opcodes) */ +enum etharp_opcode { + ARP_REQUEST = 1, + ARP_REPLY = 2 +}; + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_PROT_ETHARP_H */ diff --git a/tools/sdk/lwip2/include/lwip/prot/ethernet.h b/tools/sdk/lwip2/include/lwip/prot/ethernet.h new file mode 100644 index 000000000..e4baa29dc --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/prot/ethernet.h @@ -0,0 +1,170 @@ +/** + * @file + * Ethernet protocol definitions + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_PROT_ETHERNET_H +#define LWIP_HDR_PROT_ETHERNET_H + +#include "lwip/arch.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef ETH_HWADDR_LEN +#ifdef ETHARP_HWADDR_LEN +#define ETH_HWADDR_LEN ETHARP_HWADDR_LEN /* compatibility mode */ +#else +#define ETH_HWADDR_LEN 6 +#endif +#endif + +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +struct eth_addr { + PACK_STRUCT_FLD_8(u8_t addr[ETH_HWADDR_LEN]); +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +/** Ethernet header */ +struct eth_hdr { +#if ETH_PAD_SIZE + PACK_STRUCT_FLD_8(u8_t padding[ETH_PAD_SIZE]); +#endif + PACK_STRUCT_FLD_S(struct eth_addr dest); + PACK_STRUCT_FLD_S(struct eth_addr src); + PACK_STRUCT_FIELD(u16_t type); +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +#define SIZEOF_ETH_HDR (14 + ETH_PAD_SIZE) + +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +/** VLAN header inserted between ethernet header and payload + * if 'type' in ethernet header is ETHTYPE_VLAN. + * See IEEE802.Q */ +struct eth_vlan_hdr { + PACK_STRUCT_FIELD(u16_t prio_vid); + PACK_STRUCT_FIELD(u16_t tpid); +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +#define SIZEOF_VLAN_HDR 4 +#define VLAN_ID(vlan_hdr) (lwip_htons((vlan_hdr)->prio_vid) & 0xFFF) + +/** + * @ingroup ethernet + * A list of often ethtypes (although lwIP does not use all of them): */ +enum eth_type { + /** Internet protocol v4 */ + ETHTYPE_IP = 0x0800U, + /** Address resolution protocol */ + ETHTYPE_ARP = 0x0806U, + /** Wake on lan */ + ETHTYPE_WOL = 0x0842U, + /** RARP */ + ETHTYPE_RARP = 0x8035U, + /** Virtual local area network */ + ETHTYPE_VLAN = 0x8100U, + /** Internet protocol v6 */ + ETHTYPE_IPV6 = 0x86DDU, + /** PPP Over Ethernet Discovery Stage */ + ETHTYPE_PPPOEDISC = 0x8863U, + /** PPP Over Ethernet Session Stage */ + ETHTYPE_PPPOE = 0x8864U, + /** Jumbo Frames */ + ETHTYPE_JUMBO = 0x8870U, + /** Process field network */ + ETHTYPE_PROFINET = 0x8892U, + /** Ethernet for control automation technology */ + ETHTYPE_ETHERCAT = 0x88A4U, + /** Link layer discovery protocol */ + ETHTYPE_LLDP = 0x88CCU, + /** Serial real-time communication system */ + ETHTYPE_SERCOS = 0x88CDU, + /** Media redundancy protocol */ + ETHTYPE_MRP = 0x88E3U, + /** Precision time protocol */ + ETHTYPE_PTP = 0x88F7U, + /** Q-in-Q, 802.1ad */ + ETHTYPE_QINQ = 0x9100U +}; + +/** The 24-bit IANA IPv4-multicast OUI is 01-00-5e: */ +#define LL_IP4_MULTICAST_ADDR_0 0x01 +#define LL_IP4_MULTICAST_ADDR_1 0x00 +#define LL_IP4_MULTICAST_ADDR_2 0x5e + +/** IPv6 multicast uses this prefix */ +#define LL_IP6_MULTICAST_ADDR_0 0x33 +#define LL_IP6_MULTICAST_ADDR_1 0x33 + +/** MEMCPY-like macro to copy to/from struct eth_addr's that are local variables + * or known to be 32-bit aligned within the protocol header. */ +#ifndef ETHADDR32_COPY +#define ETHADDR32_COPY(dst, src) SMEMCPY(dst, src, ETH_HWADDR_LEN) +#endif + +/** MEMCPY-like macro to copy to/from struct eth_addr's that are no local + * variables and known to be 16-bit aligned within the protocol header. */ +#ifndef ETHADDR16_COPY +#define ETHADDR16_COPY(dst, src) SMEMCPY(dst, src, ETH_HWADDR_LEN) +#endif + +#define eth_addr_cmp(addr1, addr2) (memcmp((addr1)->addr, (addr2)->addr, ETH_HWADDR_LEN) == 0) + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_PROT_ETHERNET_H */ diff --git a/tools/sdk/lwip2/include/lwip/prot/icmp.h b/tools/sdk/lwip2/include/lwip/prot/icmp.h new file mode 100644 index 000000000..7d19385c7 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/prot/icmp.h @@ -0,0 +1,91 @@ +/** + * @file + * ICMP protocol definitions + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_PROT_ICMP_H +#define LWIP_HDR_PROT_ICMP_H + +#include "lwip/arch.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define ICMP_ER 0 /* echo reply */ +#define ICMP_DUR 3 /* destination unreachable */ +#define ICMP_SQ 4 /* source quench */ +#define ICMP_RD 5 /* redirect */ +#define ICMP_ECHO 8 /* echo */ +#define ICMP_TE 11 /* time exceeded */ +#define ICMP_PP 12 /* parameter problem */ +#define ICMP_TS 13 /* timestamp */ +#define ICMP_TSR 14 /* timestamp reply */ +#define ICMP_IRQ 15 /* information request */ +#define ICMP_IR 16 /* information reply */ +#define ICMP_AM 17 /* address mask request */ +#define ICMP_AMR 18 /* address mask reply */ + +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +/** This is the standard ICMP header only that the u32_t data + * is split to two u16_t like ICMP echo needs it. + * This header is also used for other ICMP types that do not + * use the data part. + */ +PACK_STRUCT_BEGIN +struct icmp_echo_hdr { + PACK_STRUCT_FLD_8(u8_t type); + PACK_STRUCT_FLD_8(u8_t code); + PACK_STRUCT_FIELD(u16_t chksum); + PACK_STRUCT_FIELD(u16_t id); + PACK_STRUCT_FIELD(u16_t seqno); +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +/* Compatibility defines, old versions used to combine type and code to an u16_t */ +#define ICMPH_TYPE(hdr) ((hdr)->type) +#define ICMPH_CODE(hdr) ((hdr)->code) +#define ICMPH_TYPE_SET(hdr, t) ((hdr)->type = (t)) +#define ICMPH_CODE_SET(hdr, c) ((hdr)->code = (c)) + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_PROT_ICMP_H */ diff --git a/tools/sdk/lwip2/include/lwip/prot/icmp6.h b/tools/sdk/lwip2/include/lwip/prot/icmp6.h new file mode 100644 index 000000000..346112042 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/prot/icmp6.h @@ -0,0 +1,170 @@ +/** + * @file + * ICMP6 protocol definitions + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_PROT_ICMP6_H +#define LWIP_HDR_PROT_ICMP6_H + +#include "lwip/arch.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** ICMP type */ +enum icmp6_type { + /** Destination unreachable */ + ICMP6_TYPE_DUR = 1, + /** Packet too big */ + ICMP6_TYPE_PTB = 2, + /** Time exceeded */ + ICMP6_TYPE_TE = 3, + /** Parameter problem */ + ICMP6_TYPE_PP = 4, + /** Private experimentation */ + ICMP6_TYPE_PE1 = 100, + /** Private experimentation */ + ICMP6_TYPE_PE2 = 101, + /** Reserved for expansion of error messages */ + ICMP6_TYPE_RSV_ERR = 127, + + /** Echo request */ + ICMP6_TYPE_EREQ = 128, + /** Echo reply */ + ICMP6_TYPE_EREP = 129, + /** Multicast listener query */ + ICMP6_TYPE_MLQ = 130, + /** Multicast listener report */ + ICMP6_TYPE_MLR = 131, + /** Multicast listener done */ + ICMP6_TYPE_MLD = 132, + /** Router solicitation */ + ICMP6_TYPE_RS = 133, + /** Router advertisement */ + ICMP6_TYPE_RA = 134, + /** Neighbor solicitation */ + ICMP6_TYPE_NS = 135, + /** Neighbor advertisement */ + ICMP6_TYPE_NA = 136, + /** Redirect */ + ICMP6_TYPE_RD = 137, + /** Multicast router advertisement */ + ICMP6_TYPE_MRA = 151, + /** Multicast router solicitation */ + ICMP6_TYPE_MRS = 152, + /** Multicast router termination */ + ICMP6_TYPE_MRT = 153, + /** Private experimentation */ + ICMP6_TYPE_PE3 = 200, + /** Private experimentation */ + ICMP6_TYPE_PE4 = 201, + /** Reserved for expansion of informational messages */ + ICMP6_TYPE_RSV_INF = 255 +}; + +/** ICMP destination unreachable codes */ +enum icmp6_dur_code { + /** No route to destination */ + ICMP6_DUR_NO_ROUTE = 0, + /** Communication with destination administratively prohibited */ + ICMP6_DUR_PROHIBITED = 1, + /** Beyond scope of source address */ + ICMP6_DUR_SCOPE = 2, + /** Address unreachable */ + ICMP6_DUR_ADDRESS = 3, + /** Port unreachable */ + ICMP6_DUR_PORT = 4, + /** Source address failed ingress/egress policy */ + ICMP6_DUR_POLICY = 5, + /** Reject route to destination */ + ICMP6_DUR_REJECT_ROUTE = 6 +}; + +/** ICMP time exceeded codes */ +enum icmp6_te_code { + /** Hop limit exceeded in transit */ + ICMP6_TE_HL = 0, + /** Fragment reassembly time exceeded */ + ICMP6_TE_FRAG = 1 +}; + +/** ICMP parameter code */ +enum icmp6_pp_code { + /** Erroneous header field encountered */ + ICMP6_PP_FIELD = 0, + /** Unrecognized next header type encountered */ + ICMP6_PP_HEADER = 1, + /** Unrecognized IPv6 option encountered */ + ICMP6_PP_OPTION = 2 +}; + +/** This is the standard ICMP6 header. */ +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +struct icmp6_hdr { + PACK_STRUCT_FLD_8(u8_t type); + PACK_STRUCT_FLD_8(u8_t code); + PACK_STRUCT_FIELD(u16_t chksum); + PACK_STRUCT_FIELD(u32_t data); +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +/** This is the ICMP6 header adapted for echo req/resp. */ +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +struct icmp6_echo_hdr { + PACK_STRUCT_FLD_8(u8_t type); + PACK_STRUCT_FLD_8(u8_t code); + PACK_STRUCT_FIELD(u16_t chksum); + PACK_STRUCT_FIELD(u16_t id); + PACK_STRUCT_FIELD(u16_t seqno); +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_PROT_ICMP6_H */ diff --git a/tools/sdk/lwip2/include/lwip/prot/igmp.h b/tools/sdk/lwip2/include/lwip/prot/igmp.h new file mode 100644 index 000000000..d60cb31ee --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/prot/igmp.h @@ -0,0 +1,90 @@ +/** + * @file + * IGMP protocol definitions + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_PROT_IGMP_H +#define LWIP_HDR_PROT_IGMP_H + +#include "lwip/arch.h" +#include "lwip/ip4_addr.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * IGMP constants + */ +#define IGMP_TTL 1 +#define IGMP_MINLEN 8 +#define ROUTER_ALERT 0x9404U +#define ROUTER_ALERTLEN 4 + +/* + * IGMP message types, including version number. + */ +#define IGMP_MEMB_QUERY 0x11 /* Membership query */ +#define IGMP_V1_MEMB_REPORT 0x12 /* Ver. 1 membership report */ +#define IGMP_V2_MEMB_REPORT 0x16 /* Ver. 2 membership report */ +#define IGMP_LEAVE_GROUP 0x17 /* Leave-group message */ + +/* Group membership states */ +#define IGMP_GROUP_NON_MEMBER 0 +#define IGMP_GROUP_DELAYING_MEMBER 1 +#define IGMP_GROUP_IDLE_MEMBER 2 + +/** + * IGMP packet format. + */ +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +struct igmp_msg { + PACK_STRUCT_FLD_8(u8_t igmp_msgtype); + PACK_STRUCT_FLD_8(u8_t igmp_maxresp); + PACK_STRUCT_FIELD(u16_t igmp_checksum); + PACK_STRUCT_FLD_S(ip4_addr_p_t igmp_group_address); +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_PROT_IGMP_H */ diff --git a/tools/sdk/lwip2/include/lwip/prot/ip.h b/tools/sdk/lwip2/include/lwip/prot/ip.h new file mode 100644 index 000000000..bbfae3675 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/prot/ip.h @@ -0,0 +1,51 @@ +/** + * @file + * IP protocol definitions + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_PROT_IP_H +#define LWIP_HDR_PROT_IP_H + +#include "lwip/arch.h" + +#define IP_PROTO_ICMP 1 +#define IP_PROTO_IGMP 2 +#define IP_PROTO_UDP 17 +#define IP_PROTO_UDPLITE 136 +#define IP_PROTO_TCP 6 + +/** This operates on a void* by loading the first byte */ +#define IP_HDR_GET_VERSION(ptr) ((*(u8_t*)(ptr)) >> 4) + +#endif /* LWIP_HDR_PROT_IP_H */ diff --git a/tools/sdk/lwip2/include/lwip/prot/ip4.h b/tools/sdk/lwip2/include/lwip/prot/ip4.h new file mode 100644 index 000000000..bd442c689 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/prot/ip4.h @@ -0,0 +1,127 @@ +/** + * @file + * IPv4 protocol definitions + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_PROT_IP4_H +#define LWIP_HDR_PROT_IP4_H + +#include "lwip/arch.h" +#include "lwip/ip4_addr.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** This is the packed version of ip4_addr_t, + used in network headers that are itself packed */ +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +struct ip4_addr_packed { + PACK_STRUCT_FIELD(u32_t addr); +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +typedef struct ip4_addr_packed ip4_addr_p_t; + +/* Size of the IPv4 header. Same as 'sizeof(struct ip_hdr)'. */ +#define IP_HLEN 20 + +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +/* The IPv4 header */ +struct ip_hdr { + /* version / header length */ + PACK_STRUCT_FLD_8(u8_t _v_hl); + /* type of service */ + PACK_STRUCT_FLD_8(u8_t _tos); + /* total length */ + PACK_STRUCT_FIELD(u16_t _len); + /* identification */ + PACK_STRUCT_FIELD(u16_t _id); + /* fragment offset field */ + PACK_STRUCT_FIELD(u16_t _offset); +#define IP_RF 0x8000U /* reserved fragment flag */ +#define IP_DF 0x4000U /* don't fragment flag */ +#define IP_MF 0x2000U /* more fragments flag */ +#define IP_OFFMASK 0x1fffU /* mask for fragmenting bits */ + /* time to live */ + PACK_STRUCT_FLD_8(u8_t _ttl); + /* protocol*/ + PACK_STRUCT_FLD_8(u8_t _proto); + /* checksum */ + PACK_STRUCT_FIELD(u16_t _chksum); + /* source and destination IP addresses */ + PACK_STRUCT_FLD_S(ip4_addr_p_t src); + PACK_STRUCT_FLD_S(ip4_addr_p_t dest); +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +/* Macros to get struct ip_hdr fields: */ +#define IPH_V(hdr) ((hdr)->_v_hl >> 4) +#define IPH_HL(hdr) ((hdr)->_v_hl & 0x0f) +#define IPH_TOS(hdr) ((hdr)->_tos) +#define IPH_LEN(hdr) ((hdr)->_len) +#define IPH_ID(hdr) ((hdr)->_id) +#define IPH_OFFSET(hdr) ((hdr)->_offset) +#define IPH_TTL(hdr) ((hdr)->_ttl) +#define IPH_PROTO(hdr) ((hdr)->_proto) +#define IPH_CHKSUM(hdr) ((hdr)->_chksum) + +/* Macros to set struct ip_hdr fields: */ +#define IPH_VHL_SET(hdr, v, hl) (hdr)->_v_hl = (u8_t)((((v) << 4) | (hl))) +#define IPH_TOS_SET(hdr, tos) (hdr)->_tos = (tos) +#define IPH_LEN_SET(hdr, len) (hdr)->_len = (len) +#define IPH_ID_SET(hdr, id) (hdr)->_id = (id) +#define IPH_OFFSET_SET(hdr, off) (hdr)->_offset = (off) +#define IPH_TTL_SET(hdr, ttl) (hdr)->_ttl = (u8_t)(ttl) +#define IPH_PROTO_SET(hdr, proto) (hdr)->_proto = (u8_t)(proto) +#define IPH_CHKSUM_SET(hdr, chksum) (hdr)->_chksum = (chksum) + + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_PROT_IP4_H */ diff --git a/tools/sdk/lwip2/include/lwip/prot/ip6.h b/tools/sdk/lwip2/include/lwip/prot/ip6.h new file mode 100644 index 000000000..6e1e2632b --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/prot/ip6.h @@ -0,0 +1,169 @@ +/** + * @file + * IPv6 protocol definitions + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_PROT_IP6_H +#define LWIP_HDR_PROT_IP6_H + +#include "lwip/arch.h" +#include "lwip/ip6_addr.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** This is the packed version of ip6_addr_t, + used in network headers that are itself packed */ +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +struct ip6_addr_packed { + PACK_STRUCT_FIELD(u32_t addr[4]); +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif +typedef struct ip6_addr_packed ip6_addr_p_t; + +#define IP6_HLEN 40 + +#define IP6_NEXTH_HOPBYHOP 0 +#define IP6_NEXTH_TCP 6 +#define IP6_NEXTH_UDP 17 +#define IP6_NEXTH_ENCAPS 41 +#define IP6_NEXTH_ROUTING 43 +#define IP6_NEXTH_FRAGMENT 44 +#define IP6_NEXTH_ICMP6 58 +#define IP6_NEXTH_NONE 59 +#define IP6_NEXTH_DESTOPTS 60 +#define IP6_NEXTH_UDPLITE 136 + +/** The IPv6 header. */ +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +struct ip6_hdr { + /** version / traffic class / flow label */ + PACK_STRUCT_FIELD(u32_t _v_tc_fl); + /** payload length */ + PACK_STRUCT_FIELD(u16_t _plen); + /** next header */ + PACK_STRUCT_FLD_8(u8_t _nexth); + /** hop limit */ + PACK_STRUCT_FLD_8(u8_t _hoplim); + /** source and destination IP addresses */ + PACK_STRUCT_FLD_S(ip6_addr_p_t src); + PACK_STRUCT_FLD_S(ip6_addr_p_t dest); +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +/* Hop-by-hop router alert option. */ +#define IP6_HBH_HLEN 8 +#define IP6_PAD1_OPTION 0 +#define IP6_PADN_ALERT_OPTION 1 +#define IP6_ROUTER_ALERT_OPTION 5 +#define IP6_ROUTER_ALERT_VALUE_MLD 0 +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +struct ip6_hbh_hdr { + /* next header */ + PACK_STRUCT_FLD_8(u8_t _nexth); + /* header length */ + PACK_STRUCT_FLD_8(u8_t _hlen); + /* router alert option type */ + PACK_STRUCT_FLD_8(u8_t _ra_opt_type); + /* router alert option data len */ + PACK_STRUCT_FLD_8(u8_t _ra_opt_dlen); + /* router alert option data */ + PACK_STRUCT_FIELD(u16_t _ra_opt_data); + /* PadN option type */ + PACK_STRUCT_FLD_8(u8_t _padn_opt_type); + /* PadN option data len */ + PACK_STRUCT_FLD_8(u8_t _padn_opt_dlen); +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +/* Fragment header. */ +#define IP6_FRAG_HLEN 8 +#define IP6_FRAG_OFFSET_MASK 0xfff8 +#define IP6_FRAG_MORE_FLAG 0x0001 +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +struct ip6_frag_hdr { + /* next header */ + PACK_STRUCT_FLD_8(u8_t _nexth); + /* reserved */ + PACK_STRUCT_FLD_8(u8_t reserved); + /* fragment offset */ + PACK_STRUCT_FIELD(u16_t _fragment_offset); + /* fragmented packet identification */ + PACK_STRUCT_FIELD(u32_t _identification); +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +#define IP6H_V(hdr) ((lwip_ntohl((hdr)->_v_tc_fl) >> 28) & 0x0f) +#define IP6H_TC(hdr) ((lwip_ntohl((hdr)->_v_tc_fl) >> 20) & 0xff) +#define IP6H_FL(hdr) (lwip_ntohl((hdr)->_v_tc_fl) & 0x000fffff) +#define IP6H_PLEN(hdr) (lwip_ntohs((hdr)->_plen)) +#define IP6H_NEXTH(hdr) ((hdr)->_nexth) +#define IP6H_NEXTH_P(hdr) ((u8_t *)(hdr) + 6) +#define IP6H_HOPLIM(hdr) ((hdr)->_hoplim) + +#define IP6H_VTCFL_SET(hdr, v, tc, fl) (hdr)->_v_tc_fl = (lwip_htonl((((u32_t)(v)) << 28) | (((u32_t)(tc)) << 20) | (fl))) +#define IP6H_PLEN_SET(hdr, plen) (hdr)->_plen = lwip_htons(plen) +#define IP6H_NEXTH_SET(hdr, nexth) (hdr)->_nexth = (nexth) +#define IP6H_HOPLIM_SET(hdr, hl) (hdr)->_hoplim = (u8_t)(hl) + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_PROT_IP6_H */ diff --git a/tools/sdk/lwip2/include/lwip/prot/mld6.h b/tools/sdk/lwip2/include/lwip/prot/mld6.h new file mode 100644 index 000000000..be3a006af --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/prot/mld6.h @@ -0,0 +1,70 @@ +/** + * @file + * MLD6 protocol definitions + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_PROT_MLD6_H +#define LWIP_HDR_PROT_MLD6_H + +#include "lwip/arch.h" +#include "lwip/prot/ip6.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** Multicast listener report/query/done message header. */ +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +struct mld_header { + PACK_STRUCT_FLD_8(u8_t type); + PACK_STRUCT_FLD_8(u8_t code); + PACK_STRUCT_FIELD(u16_t chksum); + PACK_STRUCT_FIELD(u16_t max_resp_delay); + PACK_STRUCT_FIELD(u16_t reserved); + PACK_STRUCT_FLD_S(ip6_addr_p_t multicast_address); + /* Options follow. */ +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_PROT_MLD6_H */ diff --git a/tools/sdk/lwip2/include/lwip/prot/nd6.h b/tools/sdk/lwip2/include/lwip/prot/nd6.h new file mode 100644 index 000000000..2d4903d15 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/prot/nd6.h @@ -0,0 +1,277 @@ +/** + * @file + * ND6 protocol definitions + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_PROT_ND6_H +#define LWIP_HDR_PROT_ND6_H + +#include "lwip/arch.h" +#include "lwip/ip6_addr.h" +#include "lwip/prot/ip6.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** Neighbor solicitation message header. */ +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +struct ns_header { + PACK_STRUCT_FLD_8(u8_t type); + PACK_STRUCT_FLD_8(u8_t code); + PACK_STRUCT_FIELD(u16_t chksum); + PACK_STRUCT_FIELD(u32_t reserved); + PACK_STRUCT_FLD_S(ip6_addr_p_t target_address); + /* Options follow. */ +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +/** Neighbor advertisement message header. */ +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +struct na_header { + PACK_STRUCT_FLD_8(u8_t type); + PACK_STRUCT_FLD_8(u8_t code); + PACK_STRUCT_FIELD(u16_t chksum); + PACK_STRUCT_FLD_8(u8_t flags); + PACK_STRUCT_FLD_8(u8_t reserved[3]); + PACK_STRUCT_FLD_S(ip6_addr_p_t target_address); + /* Options follow. */ +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif +#define ND6_FLAG_ROUTER (0x80) +#define ND6_FLAG_SOLICITED (0x40) +#define ND6_FLAG_OVERRIDE (0x20) + +/** Router solicitation message header. */ +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +struct rs_header { + PACK_STRUCT_FLD_8(u8_t type); + PACK_STRUCT_FLD_8(u8_t code); + PACK_STRUCT_FIELD(u16_t chksum); + PACK_STRUCT_FIELD(u32_t reserved); + /* Options follow. */ +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +/** Router advertisement message header. */ +#define ND6_RA_FLAG_MANAGED_ADDR_CONFIG (0x80) +#define ND6_RA_FLAG_OTHER_CONFIG (0x40) +#define ND6_RA_FLAG_HOME_AGENT (0x20) +#define ND6_RA_PREFERENCE_MASK (0x18) +#define ND6_RA_PREFERENCE_HIGH (0x08) +#define ND6_RA_PREFERENCE_MEDIUM (0x00) +#define ND6_RA_PREFERENCE_LOW (0x18) +#define ND6_RA_PREFERENCE_DISABLED (0x10) +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +struct ra_header { + PACK_STRUCT_FLD_8(u8_t type); + PACK_STRUCT_FLD_8(u8_t code); + PACK_STRUCT_FIELD(u16_t chksum); + PACK_STRUCT_FLD_8(u8_t current_hop_limit); + PACK_STRUCT_FLD_8(u8_t flags); + PACK_STRUCT_FIELD(u16_t router_lifetime); + PACK_STRUCT_FIELD(u32_t reachable_time); + PACK_STRUCT_FIELD(u32_t retrans_timer); + /* Options follow. */ +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +/** Redirect message header. */ +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +struct redirect_header { + PACK_STRUCT_FLD_8(u8_t type); + PACK_STRUCT_FLD_8(u8_t code); + PACK_STRUCT_FIELD(u16_t chksum); + PACK_STRUCT_FIELD(u32_t reserved); + PACK_STRUCT_FLD_S(ip6_addr_p_t target_address); + PACK_STRUCT_FLD_S(ip6_addr_p_t destination_address); + /* Options follow. */ +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +/** Link-layer address option. */ +#define ND6_OPTION_TYPE_SOURCE_LLADDR (0x01) +#define ND6_OPTION_TYPE_TARGET_LLADDR (0x02) +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +struct lladdr_option { + PACK_STRUCT_FLD_8(u8_t type); + PACK_STRUCT_FLD_8(u8_t length); + PACK_STRUCT_FLD_8(u8_t addr[NETIF_MAX_HWADDR_LEN]); +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +/** Prefix information option. */ +#define ND6_OPTION_TYPE_PREFIX_INFO (0x03) +#define ND6_PREFIX_FLAG_ON_LINK (0x80) +#define ND6_PREFIX_FLAG_AUTONOMOUS (0x40) +#define ND6_PREFIX_FLAG_ROUTER_ADDRESS (0x20) +#define ND6_PREFIX_FLAG_SITE_PREFIX (0x10) +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +struct prefix_option { + PACK_STRUCT_FLD_8(u8_t type); + PACK_STRUCT_FLD_8(u8_t length); + PACK_STRUCT_FLD_8(u8_t prefix_length); + PACK_STRUCT_FLD_8(u8_t flags); + PACK_STRUCT_FIELD(u32_t valid_lifetime); + PACK_STRUCT_FIELD(u32_t preferred_lifetime); + PACK_STRUCT_FLD_8(u8_t reserved2[3]); + PACK_STRUCT_FLD_8(u8_t site_prefix_length); + PACK_STRUCT_FLD_S(ip6_addr_p_t prefix); +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +/** Redirected header option. */ +#define ND6_OPTION_TYPE_REDIR_HDR (0x04) +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +struct redirected_header_option { + PACK_STRUCT_FLD_8(u8_t type); + PACK_STRUCT_FLD_8(u8_t length); + PACK_STRUCT_FLD_8(u8_t reserved[6]); + /* Portion of redirected packet follows. */ + /* PACK_STRUCT_FLD_8(u8_t redirected[8]); */ +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +/** MTU option. */ +#define ND6_OPTION_TYPE_MTU (0x05) +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +struct mtu_option { + PACK_STRUCT_FLD_8(u8_t type); + PACK_STRUCT_FLD_8(u8_t length); + PACK_STRUCT_FIELD(u16_t reserved); + PACK_STRUCT_FIELD(u32_t mtu); +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +/** Route information option. */ +#define ND6_OPTION_TYPE_ROUTE_INFO (24) +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +struct route_option { + PACK_STRUCT_FLD_8(u8_t type); + PACK_STRUCT_FLD_8(u8_t length); + PACK_STRUCT_FLD_8(u8_t prefix_length); + PACK_STRUCT_FLD_8(u8_t preference); + PACK_STRUCT_FIELD(u32_t route_lifetime); + PACK_STRUCT_FLD_S(ip6_addr_p_t prefix); +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +/** Recursive DNS Server Option. */ +#if LWIP_ND6_RDNSS_MAX_DNS_SERVERS +#define LWIP_RDNSS_OPTION_MAX_SERVERS LWIP_ND6_RDNSS_MAX_DNS_SERVERS +#else +#define LWIP_RDNSS_OPTION_MAX_SERVERS 1 +#endif +#define ND6_OPTION_TYPE_RDNSS (25) +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +struct rdnss_option { + PACK_STRUCT_FLD_8(u8_t type); + PACK_STRUCT_FLD_8(u8_t length); + PACK_STRUCT_FIELD(u16_t reserved); + PACK_STRUCT_FIELD(u32_t lifetime); + PACK_STRUCT_FLD_S(ip6_addr_p_t rdnss_address[LWIP_RDNSS_OPTION_MAX_SERVERS]); +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_PROT_ND6_H */ diff --git a/tools/sdk/lwip2/include/lwip/prot/tcp.h b/tools/sdk/lwip2/include/lwip/prot/tcp.h new file mode 100644 index 000000000..67fe7b9e5 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/prot/tcp.h @@ -0,0 +1,97 @@ +/** + * @file + * TCP protocol definitions + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_PROT_TCP_H +#define LWIP_HDR_PROT_TCP_H + +#include "lwip/arch.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Length of the TCP header, excluding options. */ +#define TCP_HLEN 20 + +/* Fields are (of course) in network byte order. + * Some fields are converted to host byte order in tcp_input(). + */ +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +struct tcp_hdr { + PACK_STRUCT_FIELD(u16_t src); + PACK_STRUCT_FIELD(u16_t dest); + PACK_STRUCT_FIELD(u32_t seqno); + PACK_STRUCT_FIELD(u32_t ackno); + PACK_STRUCT_FIELD(u16_t _hdrlen_rsvd_flags); + PACK_STRUCT_FIELD(u16_t wnd); + PACK_STRUCT_FIELD(u16_t chksum); + PACK_STRUCT_FIELD(u16_t urgp); +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +/* TCP header flags bits */ +#define TCP_FIN 0x01U +#define TCP_SYN 0x02U +#define TCP_RST 0x04U +#define TCP_PSH 0x08U +#define TCP_ACK 0x10U +#define TCP_URG 0x20U +#define TCP_ECE 0x40U +#define TCP_CWR 0x80U +/* Valid TCP header flags */ +#define TCP_FLAGS 0x3fU + +#define TCPH_HDRLEN(phdr) ((u16_t)(lwip_ntohs((phdr)->_hdrlen_rsvd_flags) >> 12)) +#define TCPH_FLAGS(phdr) ((u16_t)(lwip_ntohs((phdr)->_hdrlen_rsvd_flags) & TCP_FLAGS)) + +#define TCPH_HDRLEN_SET(phdr, len) (phdr)->_hdrlen_rsvd_flags = lwip_htons(((len) << 12) | TCPH_FLAGS(phdr)) +#define TCPH_FLAGS_SET(phdr, flags) (phdr)->_hdrlen_rsvd_flags = (((phdr)->_hdrlen_rsvd_flags & PP_HTONS(~TCP_FLAGS)) | lwip_htons(flags)) +#define TCPH_HDRLEN_FLAGS_SET(phdr, len, flags) (phdr)->_hdrlen_rsvd_flags = (u16_t)(lwip_htons((u16_t)((len) << 12) | (flags))) + +#define TCPH_SET_FLAG(phdr, flags ) (phdr)->_hdrlen_rsvd_flags = ((phdr)->_hdrlen_rsvd_flags | lwip_htons(flags)) +#define TCPH_UNSET_FLAG(phdr, flags) (phdr)->_hdrlen_rsvd_flags = ((phdr)->_hdrlen_rsvd_flags & ~lwip_htons(flags)) + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_PROT_TCP_H */ diff --git a/tools/sdk/lwip2/include/lwip/prot/udp.h b/tools/sdk/lwip2/include/lwip/prot/udp.h new file mode 100644 index 000000000..664f19a3e --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/prot/udp.h @@ -0,0 +1,68 @@ +/** + * @file + * UDP protocol definitions + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_PROT_UDP_H +#define LWIP_HDR_PROT_UDP_H + +#include "lwip/arch.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define UDP_HLEN 8 + +/* Fields are (of course) in network byte order. */ +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +struct udp_hdr { + PACK_STRUCT_FIELD(u16_t src); + PACK_STRUCT_FIELD(u16_t dest); /* src/dest UDP ports */ + PACK_STRUCT_FIELD(u16_t len); + PACK_STRUCT_FIELD(u16_t chksum); +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_PROT_UDP_H */ diff --git a/tools/sdk/lwip2/include/lwip/raw.h b/tools/sdk/lwip2/include/lwip/raw.h new file mode 100644 index 000000000..30aa14710 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/raw.h @@ -0,0 +1,118 @@ +/** + * @file + * raw API (to be used from TCPIP thread)\n + * See also @ref raw_raw + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_RAW_H +#define LWIP_HDR_RAW_H + +#include "lwip/opt.h" + +#if LWIP_RAW /* don't build if not configured for use in lwipopts.h */ + +#include "lwip/pbuf.h" +#include "lwip/def.h" +#include "lwip/ip.h" +#include "lwip/ip_addr.h" +#include "lwip/ip6_addr.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct raw_pcb; + +/** Function prototype for raw pcb receive callback functions. + * @param arg user supplied argument (raw_pcb.recv_arg) + * @param pcb the raw_pcb which received data + * @param p the packet buffer that was received + * @param addr the remote IP address from which the packet was received + * @return 1 if the packet was 'eaten' (aka. deleted), + * 0 if the packet lives on + * If returning 1, the callback is responsible for freeing the pbuf + * if it's not used any more. + */ +typedef u8_t (*raw_recv_fn)(void *arg, struct raw_pcb *pcb, struct pbuf *p, + const ip_addr_t *addr); + +/** the RAW protocol control block */ +struct raw_pcb { + /* Common members of all PCB types */ + IP_PCB; + + struct raw_pcb *next; + + u8_t protocol; + + /** receive callback function */ + raw_recv_fn recv; + /* user-supplied argument for the recv callback */ + void *recv_arg; +#if LWIP_IPV6 + /* fields for handling checksum computations as per RFC3542. */ + u16_t chksum_offset; + u8_t chksum_reqd; +#endif +}; + +/* The following functions is the application layer interface to the + RAW code. */ +struct raw_pcb * raw_new (u8_t proto); +struct raw_pcb * raw_new_ip_type(u8_t type, u8_t proto); +void raw_remove (struct raw_pcb *pcb); +err_t raw_bind (struct raw_pcb *pcb, const ip_addr_t *ipaddr); +err_t raw_connect (struct raw_pcb *pcb, const ip_addr_t *ipaddr); + +err_t raw_sendto (struct raw_pcb *pcb, struct pbuf *p, const ip_addr_t *ipaddr); +err_t raw_send (struct raw_pcb *pcb, struct pbuf *p); + +void raw_recv (struct raw_pcb *pcb, raw_recv_fn recv, void *recv_arg); + +/* The following functions are the lower layer interface to RAW. */ +u8_t raw_input (struct pbuf *p, struct netif *inp); +#define raw_init() /* Compatibility define, no init needed. */ + +void raw_netif_ip_addr_changed(const ip_addr_t* old_addr, const ip_addr_t* new_addr); + +/* for compatibility with older implementation */ +#define raw_new_ip6(proto) raw_new_ip_type(IPADDR_TYPE_V6, proto) + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_RAW */ + +#endif /* LWIP_HDR_RAW_H */ diff --git a/tools/sdk/lwip2/include/lwip/sio.h b/tools/sdk/lwip2/include/lwip/sio.h new file mode 100644 index 000000000..7643e1956 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/sio.h @@ -0,0 +1,142 @@ +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + */ + +/* + * This is the interface to the platform specific serial IO module + * It needs to be implemented by those platforms which need SLIP or PPP + */ + +#ifndef SIO_H +#define SIO_H + +#include "lwip/arch.h" +#include "lwip/opt.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* If you want to define sio_fd_t elsewhere or differently, + define this in your cc.h file. */ +#ifndef __sio_fd_t_defined +typedef void * sio_fd_t; +#endif + +/* The following functions can be defined to something else in your cc.h file + or be implemented in your custom sio.c file. */ + +#ifndef sio_open +/** + * Opens a serial device for communication. + * + * @param devnum device number + * @return handle to serial device if successful, NULL otherwise + */ +sio_fd_t sio_open(u8_t devnum); +#endif + +#ifndef sio_send +/** + * Sends a single character to the serial device. + * + * @param c character to send + * @param fd serial device handle + * + * @note This function will block until the character can be sent. + */ +void sio_send(u8_t c, sio_fd_t fd); +#endif + +#ifndef sio_recv +/** + * Receives a single character from the serial device. + * + * @param fd serial device handle + * + * @note This function will block until a character is received. + */ +u8_t sio_recv(sio_fd_t fd); +#endif + +#ifndef sio_read +/** + * Reads from the serial device. + * + * @param fd serial device handle + * @param data pointer to data buffer for receiving + * @param len maximum length (in bytes) of data to receive + * @return number of bytes actually received - may be 0 if aborted by sio_read_abort + * + * @note This function will block until data can be received. The blocking + * can be cancelled by calling sio_read_abort(). + */ +u32_t sio_read(sio_fd_t fd, u8_t *data, u32_t len); +#endif + +#ifndef sio_tryread +/** + * Tries to read from the serial device. Same as sio_read but returns + * immediately if no data is available and never blocks. + * + * @param fd serial device handle + * @param data pointer to data buffer for receiving + * @param len maximum length (in bytes) of data to receive + * @return number of bytes actually received + */ +u32_t sio_tryread(sio_fd_t fd, u8_t *data, u32_t len); +#endif + +#ifndef sio_write +/** + * Writes to the serial device. + * + * @param fd serial device handle + * @param data pointer to data to send + * @param len length (in bytes) of data to send + * @return number of bytes actually sent + * + * @note This function will block until all data can be sent. + */ +u32_t sio_write(sio_fd_t fd, u8_t *data, u32_t len); +#endif + +#ifndef sio_read_abort +/** + * Aborts a blocking sio_read() call. + * + * @param fd serial device handle + */ +void sio_read_abort(sio_fd_t fd); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* SIO_H */ diff --git a/tools/sdk/lwip2/include/lwip/snmp.h b/tools/sdk/lwip2/include/lwip/snmp.h new file mode 100644 index 000000000..8704d0b4d --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/snmp.h @@ -0,0 +1,213 @@ +/** + * @file + * SNMP support API for implementing netifs and statitics for MIB2 + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Dirk Ziegelmeier + * + */ +#ifndef LWIP_HDR_SNMP_H +#define LWIP_HDR_SNMP_H + +#include "lwip/opt.h" +#include "lwip/ip_addr.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct udp_pcb; +struct netif; + +/** + * @defgroup netif_mib2 MIB2 statistics + * @ingroup netif + */ + +/* MIB2 statistics functions */ +#if MIB2_STATS /* don't build if not configured for use in lwipopts.h */ +/** + * @ingroup netif_mib2 + * @see RFC1213, "MIB-II, 6. Definitions" + */ +enum snmp_ifType { + snmp_ifType_other=1, /* none of the following */ + snmp_ifType_regular1822, + snmp_ifType_hdh1822, + snmp_ifType_ddn_x25, + snmp_ifType_rfc877_x25, + snmp_ifType_ethernet_csmacd, + snmp_ifType_iso88023_csmacd, + snmp_ifType_iso88024_tokenBus, + snmp_ifType_iso88025_tokenRing, + snmp_ifType_iso88026_man, + snmp_ifType_starLan, + snmp_ifType_proteon_10Mbit, + snmp_ifType_proteon_80Mbit, + snmp_ifType_hyperchannel, + snmp_ifType_fddi, + snmp_ifType_lapb, + snmp_ifType_sdlc, + snmp_ifType_ds1, /* T-1 */ + snmp_ifType_e1, /* european equiv. of T-1 */ + snmp_ifType_basicISDN, + snmp_ifType_primaryISDN, /* proprietary serial */ + snmp_ifType_propPointToPointSerial, + snmp_ifType_ppp, + snmp_ifType_softwareLoopback, + snmp_ifType_eon, /* CLNP over IP [11] */ + snmp_ifType_ethernet_3Mbit, + snmp_ifType_nsip, /* XNS over IP */ + snmp_ifType_slip, /* generic SLIP */ + snmp_ifType_ultra, /* ULTRA technologies */ + snmp_ifType_ds3, /* T-3 */ + snmp_ifType_sip, /* SMDS */ + snmp_ifType_frame_relay +}; + +/** This macro has a precision of ~49 days because sys_now returns u32_t. \#define your own if you want ~490 days. */ +#ifndef MIB2_COPY_SYSUPTIME_TO +#define MIB2_COPY_SYSUPTIME_TO(ptrToVal) (*(ptrToVal) = (sys_now() / 10)) +#endif + +/** + * @ingroup netif_mib2 + * Increment stats member for SNMP MIB2 stats (struct stats_mib2_netif_ctrs) + */ +#define MIB2_STATS_NETIF_INC(n, x) do { ++(n)->mib2_counters.x; } while(0) +/** + * @ingroup netif_mib2 + * Add value to stats member for SNMP MIB2 stats (struct stats_mib2_netif_ctrs) + */ +#define MIB2_STATS_NETIF_ADD(n, x, val) do { (n)->mib2_counters.x += (val); } while(0) + +/** + * @ingroup netif_mib2 + * Init MIB2 statistic counters in netif + * @param netif Netif to init + * @param type one of enum @ref snmp_ifType + * @param speed your link speed here (units: bits per second) + */ +#define MIB2_INIT_NETIF(netif, type, speed) do { \ + (netif)->link_type = (type); \ + (netif)->link_speed = (speed);\ + (netif)->ts = 0; \ + (netif)->mib2_counters.ifinoctets = 0; \ + (netif)->mib2_counters.ifinucastpkts = 0; \ + (netif)->mib2_counters.ifinnucastpkts = 0; \ + (netif)->mib2_counters.ifindiscards = 0; \ + (netif)->mib2_counters.ifinerrors = 0; \ + (netif)->mib2_counters.ifinunknownprotos = 0; \ + (netif)->mib2_counters.ifoutoctets = 0; \ + (netif)->mib2_counters.ifoutucastpkts = 0; \ + (netif)->mib2_counters.ifoutnucastpkts = 0; \ + (netif)->mib2_counters.ifoutdiscards = 0; \ + (netif)->mib2_counters.ifouterrors = 0; } while(0) +#else /* MIB2_STATS */ +#ifndef MIB2_COPY_SYSUPTIME_TO +#define MIB2_COPY_SYSUPTIME_TO(ptrToVal) +#endif +#define MIB2_INIT_NETIF(netif, type, speed) +#define MIB2_STATS_NETIF_INC(n, x) +#define MIB2_STATS_NETIF_ADD(n, x, val) +#endif /* MIB2_STATS */ + +/* LWIP MIB2 callbacks */ +#if LWIP_MIB2_CALLBACKS /* don't build if not configured for use in lwipopts.h */ +/* network interface */ +void mib2_netif_added(struct netif *ni); +void mib2_netif_removed(struct netif *ni); + +#if LWIP_IPV4 && LWIP_ARP +/* ARP (for atTable and ipNetToMediaTable) */ +void mib2_add_arp_entry(struct netif *ni, ip4_addr_t *ip); +void mib2_remove_arp_entry(struct netif *ni, ip4_addr_t *ip); +#else /* LWIP_IPV4 && LWIP_ARP */ +#define mib2_add_arp_entry(ni,ip) +#define mib2_remove_arp_entry(ni,ip) +#endif /* LWIP_IPV4 && LWIP_ARP */ + +/* IP */ +#if LWIP_IPV4 +void mib2_add_ip4(struct netif *ni); +void mib2_remove_ip4(struct netif *ni); +void mib2_add_route_ip4(u8_t dflt, struct netif *ni); +void mib2_remove_route_ip4(u8_t dflt, struct netif *ni); +#endif /* LWIP_IPV4 */ + +/* UDP */ +#if LWIP_UDP +void mib2_udp_bind(struct udp_pcb *pcb); +void mib2_udp_unbind(struct udp_pcb *pcb); +#endif /* LWIP_UDP */ + +#else /* LWIP_MIB2_CALLBACKS */ +/* LWIP_MIB2_CALLBACKS support not available */ +/* define everything to be empty */ + +/* network interface */ +#define mib2_netif_added(ni) +#define mib2_netif_removed(ni) + +/* ARP */ +#define mib2_add_arp_entry(ni,ip) +#define mib2_remove_arp_entry(ni,ip) + +/* IP */ +#define mib2_add_ip4(ni) +#define mib2_remove_ip4(ni) +#define mib2_add_route_ip4(dflt, ni) +#define mib2_remove_route_ip4(dflt, ni) + +/* UDP */ +#define mib2_udp_bind(pcb) +#define mib2_udp_unbind(pcb) +#endif /* LWIP_MIB2_CALLBACKS */ + +/* for source-code compatibility reasons only, can be removed (not used internally) */ +#define NETIF_INIT_SNMP MIB2_INIT_NETIF +#define snmp_add_ifinoctets(ni,value) MIB2_STATS_NETIF_ADD(ni, ifinoctets, value) +#define snmp_inc_ifinucastpkts(ni) MIB2_STATS_NETIF_INC(ni, ifinucastpkts) +#define snmp_inc_ifinnucastpkts(ni) MIB2_STATS_NETIF_INC(ni, ifinnucastpkts) +#define snmp_inc_ifindiscards(ni) MIB2_STATS_NETIF_INC(ni, ifindiscards) +#define snmp_inc_ifinerrors(ni) MIB2_STATS_NETIF_INC(ni, ifinerrors) +#define snmp_inc_ifinunknownprotos(ni) MIB2_STATS_NETIF_INC(ni, ifinunknownprotos) +#define snmp_add_ifoutoctets(ni,value) MIB2_STATS_NETIF_ADD(ni, ifoutoctets, value) +#define snmp_inc_ifoutucastpkts(ni) MIB2_STATS_NETIF_INC(ni, ifoutucastpkts) +#define snmp_inc_ifoutnucastpkts(ni) MIB2_STATS_NETIF_INC(ni, ifoutnucastpkts) +#define snmp_inc_ifoutdiscards(ni) MIB2_STATS_NETIF_INC(ni, ifoutdiscards) +#define snmp_inc_ifouterrors(ni) MIB2_STATS_NETIF_INC(ni, ifouterrors) + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_SNMP_H */ diff --git a/tools/sdk/lwip2/include/lwip/sockets.h b/tools/sdk/lwip2/include/lwip/sockets.h new file mode 100644 index 000000000..2522056db --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/sockets.h @@ -0,0 +1,593 @@ +/** + * @file + * Socket API (to be used from non-TCPIP threads) + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ + + +#ifndef LWIP_HDR_SOCKETS_H +#define LWIP_HDR_SOCKETS_H + +#include "lwip/opt.h" + +#if LWIP_SOCKET /* don't build if not configured for use in lwipopts.h */ + +#include "lwip/ip_addr.h" +#include "lwip/err.h" +#include "lwip/inet.h" +#include "lwip/errno.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* If your port already typedef's sa_family_t, define SA_FAMILY_T_DEFINED + to prevent this code from redefining it. */ +#if !defined(sa_family_t) && !defined(SA_FAMILY_T_DEFINED) +typedef u8_t sa_family_t; +#endif +/* If your port already typedef's in_port_t, define IN_PORT_T_DEFINED + to prevent this code from redefining it. */ +#if !defined(in_port_t) && !defined(IN_PORT_T_DEFINED) +typedef u16_t in_port_t; +#endif + +#if LWIP_IPV4 +/* members are in network byte order */ +struct sockaddr_in { + u8_t sin_len; + sa_family_t sin_family; + in_port_t sin_port; + struct in_addr sin_addr; +#define SIN_ZERO_LEN 8 + char sin_zero[SIN_ZERO_LEN]; +}; +#endif /* LWIP_IPV4 */ + +#if LWIP_IPV6 +struct sockaddr_in6 { + u8_t sin6_len; /* length of this structure */ + sa_family_t sin6_family; /* AF_INET6 */ + in_port_t sin6_port; /* Transport layer port # */ + u32_t sin6_flowinfo; /* IPv6 flow information */ + struct in6_addr sin6_addr; /* IPv6 address */ + u32_t sin6_scope_id; /* Set of interfaces for scope */ +}; +#endif /* LWIP_IPV6 */ + +struct sockaddr { + u8_t sa_len; + sa_family_t sa_family; + char sa_data[14]; +}; + +struct sockaddr_storage { + u8_t s2_len; + sa_family_t ss_family; + char s2_data1[2]; + u32_t s2_data2[3]; +#if LWIP_IPV6 + u32_t s2_data3[3]; +#endif /* LWIP_IPV6 */ +}; + +/* If your port already typedef's socklen_t, define SOCKLEN_T_DEFINED + to prevent this code from redefining it. */ +#if !defined(socklen_t) && !defined(SOCKLEN_T_DEFINED) +typedef u32_t socklen_t; +#endif + +struct lwip_sock; + +#if !LWIP_TCPIP_CORE_LOCKING +/** Maximum optlen used by setsockopt/getsockopt */ +#define LWIP_SETGETSOCKOPT_MAXOPTLEN 16 + +/** This struct is used to pass data to the set/getsockopt_internal + * functions running in tcpip_thread context (only a void* is allowed) */ +struct lwip_setgetsockopt_data { + /** socket index for which to change options */ + int s; + /** level of the option to process */ + int level; + /** name of the option to process */ + int optname; + /** set: value to set the option to + * get: value of the option is stored here */ +#if LWIP_MPU_COMPATIBLE + u8_t optval[LWIP_SETGETSOCKOPT_MAXOPTLEN]; +#else + union { + void *p; + const void *pc; + } optval; +#endif + /** size of *optval */ + socklen_t optlen; + /** if an error occurs, it is temporarily stored here */ + err_t err; + /** semaphore to wake up the calling task */ + void* completed_sem; +}; +#endif /* !LWIP_TCPIP_CORE_LOCKING */ + +#if !defined(iovec) +struct iovec { + void *iov_base; + size_t iov_len; +}; +#endif + +struct msghdr { + void *msg_name; + socklen_t msg_namelen; + struct iovec *msg_iov; + int msg_iovlen; + void *msg_control; + socklen_t msg_controllen; + int msg_flags; +}; + +/* Socket protocol types (TCP/UDP/RAW) */ +#define SOCK_STREAM 1 +#define SOCK_DGRAM 2 +#define SOCK_RAW 3 + +/* + * Option flags per-socket. These must match the SOF_ flags in ip.h (checked in init.c) + */ +#define SO_REUSEADDR 0x0004 /* Allow local address reuse */ +#define SO_KEEPALIVE 0x0008 /* keep connections alive */ +#define SO_BROADCAST 0x0020 /* permit to send and to receive broadcast messages (see IP_SOF_BROADCAST option) */ + + +/* + * Additional options, not kept in so_options. + */ +#define SO_DEBUG 0x0001 /* Unimplemented: turn on debugging info recording */ +#define SO_ACCEPTCONN 0x0002 /* socket has had listen() */ +#define SO_DONTROUTE 0x0010 /* Unimplemented: just use interface addresses */ +#define SO_USELOOPBACK 0x0040 /* Unimplemented: bypass hardware when possible */ +#define SO_LINGER 0x0080 /* linger on close if data present */ +#define SO_DONTLINGER ((int)(~SO_LINGER)) +#define SO_OOBINLINE 0x0100 /* Unimplemented: leave received OOB data in line */ +#define SO_REUSEPORT 0x0200 /* Unimplemented: allow local address & port reuse */ +#define SO_SNDBUF 0x1001 /* Unimplemented: send buffer size */ +#define SO_RCVBUF 0x1002 /* receive buffer size */ +#define SO_SNDLOWAT 0x1003 /* Unimplemented: send low-water mark */ +#define SO_RCVLOWAT 0x1004 /* Unimplemented: receive low-water mark */ +#define SO_SNDTIMEO 0x1005 /* send timeout */ +#define SO_RCVTIMEO 0x1006 /* receive timeout */ +#define SO_ERROR 0x1007 /* get error status and clear */ +#define SO_TYPE 0x1008 /* get socket type */ +#define SO_CONTIMEO 0x1009 /* Unimplemented: connect timeout */ +#define SO_NO_CHECK 0x100a /* don't create UDP checksum */ + + +/* + * Structure used for manipulating linger option. + */ +struct linger { + int l_onoff; /* option on/off */ + int l_linger; /* linger time in seconds */ +}; + +/* + * Level number for (get/set)sockopt() to apply to socket itself. + */ +#define SOL_SOCKET 0xfff /* options for socket level */ + + +#define AF_UNSPEC 0 +#define AF_INET 2 +#if LWIP_IPV6 +#define AF_INET6 10 +#else /* LWIP_IPV6 */ +#define AF_INET6 AF_UNSPEC +#endif /* LWIP_IPV6 */ +#define PF_INET AF_INET +#define PF_INET6 AF_INET6 +#define PF_UNSPEC AF_UNSPEC + +#define IPPROTO_IP 0 +#define IPPROTO_ICMP 1 +#define IPPROTO_TCP 6 +#define IPPROTO_UDP 17 +#if LWIP_IPV6 +#define IPPROTO_IPV6 41 +#define IPPROTO_ICMPV6 58 +#endif /* LWIP_IPV6 */ +#define IPPROTO_UDPLITE 136 +#define IPPROTO_RAW 255 + +/* Flags we can use with send and recv. */ +#define MSG_PEEK 0x01 /* Peeks at an incoming message */ +#define MSG_WAITALL 0x02 /* Unimplemented: Requests that the function block until the full amount of data requested can be returned */ +#define MSG_OOB 0x04 /* Unimplemented: Requests out-of-band data. The significance and semantics of out-of-band data are protocol-specific */ +#define MSG_DONTWAIT 0x08 /* Nonblocking i/o for this operation only */ +#define MSG_MORE 0x10 /* Sender will send more */ + + +/* + * Options for level IPPROTO_IP + */ +#define IP_TOS 1 +#define IP_TTL 2 + +#if LWIP_TCP +/* + * Options for level IPPROTO_TCP + */ +#define TCP_NODELAY 0x01 /* don't delay send to coalesce packets */ +#define TCP_KEEPALIVE 0x02 /* send KEEPALIVE probes when idle for pcb->keep_idle milliseconds */ +#define TCP_KEEPIDLE 0x03 /* set pcb->keep_idle - Same as TCP_KEEPALIVE, but use seconds for get/setsockopt */ +#define TCP_KEEPINTVL 0x04 /* set pcb->keep_intvl - Use seconds for get/setsockopt */ +#define TCP_KEEPCNT 0x05 /* set pcb->keep_cnt - Use number of probes sent for get/setsockopt */ +#endif /* LWIP_TCP */ + +#if LWIP_IPV6 +/* + * Options for level IPPROTO_IPV6 + */ +#define IPV6_CHECKSUM 7 /* RFC3542: calculate and insert the ICMPv6 checksum for raw sockets. */ +#define IPV6_V6ONLY 27 /* RFC3493: boolean control to restrict AF_INET6 sockets to IPv6 communications only. */ +#endif /* LWIP_IPV6 */ + +#if LWIP_UDP && LWIP_UDPLITE +/* + * Options for level IPPROTO_UDPLITE + */ +#define UDPLITE_SEND_CSCOV 0x01 /* sender checksum coverage */ +#define UDPLITE_RECV_CSCOV 0x02 /* minimal receiver checksum coverage */ +#endif /* LWIP_UDP && LWIP_UDPLITE*/ + + +#if LWIP_MULTICAST_TX_OPTIONS +/* + * Options and types for UDP multicast traffic handling + */ +#define IP_MULTICAST_TTL 5 +#define IP_MULTICAST_IF 6 +#define IP_MULTICAST_LOOP 7 +#endif /* LWIP_MULTICAST_TX_OPTIONS */ + +#if LWIP_IGMP +/* + * Options and types related to multicast membership + */ +#define IP_ADD_MEMBERSHIP 3 +#define IP_DROP_MEMBERSHIP 4 + +typedef struct ip_mreq { + struct in_addr imr_multiaddr; /* IP multicast address of group */ + struct in_addr imr_interface; /* local IP address of interface */ +} ip_mreq; +#endif /* LWIP_IGMP */ + +/* + * The Type of Service provides an indication of the abstract + * parameters of the quality of service desired. These parameters are + * to be used to guide the selection of the actual service parameters + * when transmitting a datagram through a particular network. Several + * networks offer service precedence, which somehow treats high + * precedence traffic as more important than other traffic (generally + * by accepting only traffic above a certain precedence at time of high + * load). The major choice is a three way tradeoff between low-delay, + * high-reliability, and high-throughput. + * The use of the Delay, Throughput, and Reliability indications may + * increase the cost (in some sense) of the service. In many networks + * better performance for one of these parameters is coupled with worse + * performance on another. Except for very unusual cases at most two + * of these three indications should be set. + */ +#define IPTOS_TOS_MASK 0x1E +#define IPTOS_TOS(tos) ((tos) & IPTOS_TOS_MASK) +#define IPTOS_LOWDELAY 0x10 +#define IPTOS_THROUGHPUT 0x08 +#define IPTOS_RELIABILITY 0x04 +#define IPTOS_LOWCOST 0x02 +#define IPTOS_MINCOST IPTOS_LOWCOST + +/* + * The Network Control precedence designation is intended to be used + * within a network only. The actual use and control of that + * designation is up to each network. The Internetwork Control + * designation is intended for use by gateway control originators only. + * If the actual use of these precedence designations is of concern to + * a particular network, it is the responsibility of that network to + * control the access to, and use of, those precedence designations. + */ +#define IPTOS_PREC_MASK 0xe0 +#define IPTOS_PREC(tos) ((tos) & IPTOS_PREC_MASK) +#define IPTOS_PREC_NETCONTROL 0xe0 +#define IPTOS_PREC_INTERNETCONTROL 0xc0 +#define IPTOS_PREC_CRITIC_ECP 0xa0 +#define IPTOS_PREC_FLASHOVERRIDE 0x80 +#define IPTOS_PREC_FLASH 0x60 +#define IPTOS_PREC_IMMEDIATE 0x40 +#define IPTOS_PREC_PRIORITY 0x20 +#define IPTOS_PREC_ROUTINE 0x00 + + +/* + * Commands for ioctlsocket(), taken from the BSD file fcntl.h. + * lwip_ioctl only supports FIONREAD and FIONBIO, for now + * + * Ioctl's have the command encoded in the lower word, + * and the size of any in or out parameters in the upper + * word. The high 2 bits of the upper word are used + * to encode the in/out status of the parameter; for now + * we restrict parameters to at most 128 bytes. + */ +#if !defined(FIONREAD) || !defined(FIONBIO) +#define IOCPARM_MASK 0x7fU /* parameters must be < 128 bytes */ +#define IOC_VOID 0x20000000UL /* no parameters */ +#define IOC_OUT 0x40000000UL /* copy out parameters */ +#define IOC_IN 0x80000000UL /* copy in parameters */ +#define IOC_INOUT (IOC_IN|IOC_OUT) + /* 0x20000000 distinguishes new & + old ioctl's */ +#define _IO(x,y) (IOC_VOID|((x)<<8)|(y)) + +#define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) + +#define _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) +#endif /* !defined(FIONREAD) || !defined(FIONBIO) */ + +#ifndef FIONREAD +#define FIONREAD _IOR('f', 127, unsigned long) /* get # bytes to read */ +#endif +#ifndef FIONBIO +#define FIONBIO _IOW('f', 126, unsigned long) /* set/clear non-blocking i/o */ +#endif + +/* Socket I/O Controls: unimplemented */ +#ifndef SIOCSHIWAT +#define SIOCSHIWAT _IOW('s', 0, unsigned long) /* set high watermark */ +#define SIOCGHIWAT _IOR('s', 1, unsigned long) /* get high watermark */ +#define SIOCSLOWAT _IOW('s', 2, unsigned long) /* set low watermark */ +#define SIOCGLOWAT _IOR('s', 3, unsigned long) /* get low watermark */ +#define SIOCATMARK _IOR('s', 7, unsigned long) /* at oob mark? */ +#endif + +/* commands for fnctl */ +#ifndef F_GETFL +#define F_GETFL 3 +#endif +#ifndef F_SETFL +#define F_SETFL 4 +#endif + +/* File status flags and file access modes for fnctl, + these are bits in an int. */ +#ifndef O_NONBLOCK +#define O_NONBLOCK 1 /* nonblocking I/O */ +#endif +#ifndef O_NDELAY +#define O_NDELAY 1 /* same as O_NONBLOCK, for compatibility */ +#endif + +#ifndef SHUT_RD + #define SHUT_RD 0 + #define SHUT_WR 1 + #define SHUT_RDWR 2 +#endif + +/* FD_SET used for lwip_select */ +#ifndef FD_SET +#undef FD_SETSIZE +/* Make FD_SETSIZE match NUM_SOCKETS in socket.c */ +#define FD_SETSIZE MEMP_NUM_NETCONN +#define FDSETSAFESET(n, code) do { \ + if (((n) - LWIP_SOCKET_OFFSET < MEMP_NUM_NETCONN) && (((int)(n) - LWIP_SOCKET_OFFSET) >= 0)) { \ + code; }} while(0) +#define FDSETSAFEGET(n, code) (((n) - LWIP_SOCKET_OFFSET < MEMP_NUM_NETCONN) && (((int)(n) - LWIP_SOCKET_OFFSET) >= 0) ?\ + (code) : 0) +#define FD_SET(n, p) FDSETSAFESET(n, (p)->fd_bits[((n)-LWIP_SOCKET_OFFSET)/8] |= (1 << (((n)-LWIP_SOCKET_OFFSET) & 7))) +#define FD_CLR(n, p) FDSETSAFESET(n, (p)->fd_bits[((n)-LWIP_SOCKET_OFFSET)/8] &= ~(1 << (((n)-LWIP_SOCKET_OFFSET) & 7))) +#define FD_ISSET(n,p) FDSETSAFEGET(n, (p)->fd_bits[((n)-LWIP_SOCKET_OFFSET)/8] & (1 << (((n)-LWIP_SOCKET_OFFSET) & 7))) +#define FD_ZERO(p) memset((void*)(p), 0, sizeof(*(p))) + +typedef struct fd_set +{ + unsigned char fd_bits [(FD_SETSIZE+7)/8]; +} fd_set; + +#elif LWIP_SOCKET_OFFSET +#error LWIP_SOCKET_OFFSET does not work with external FD_SET! +#elif FD_SETSIZE < MEMP_NUM_NETCONN +#error "external FD_SETSIZE too small for number of sockets" +#endif /* FD_SET */ + +/** LWIP_TIMEVAL_PRIVATE: if you want to use the struct timeval provided + * by your system, set this to 0 and include in cc.h */ +#ifndef LWIP_TIMEVAL_PRIVATE +#define LWIP_TIMEVAL_PRIVATE 1 +#endif + +#if LWIP_TIMEVAL_PRIVATE +struct timeval { + long tv_sec; /* seconds */ + long tv_usec; /* and microseconds */ +}; +#endif /* LWIP_TIMEVAL_PRIVATE */ + +#define lwip_socket_init() /* Compatibility define, no init needed. */ +void lwip_socket_thread_init(void); /* LWIP_NETCONN_SEM_PER_THREAD==1: initialize thread-local semaphore */ +void lwip_socket_thread_cleanup(void); /* LWIP_NETCONN_SEM_PER_THREAD==1: destroy thread-local semaphore */ + +#if LWIP_COMPAT_SOCKETS == 2 +/* This helps code parsers/code completion by not having the COMPAT functions as defines */ +#define lwip_accept accept +#define lwip_bind bind +#define lwip_shutdown shutdown +#define lwip_getpeername getpeername +#define lwip_getsockname getsockname +#define lwip_setsockopt setsockopt +#define lwip_getsockopt getsockopt +#define lwip_close closesocket +#define lwip_connect connect +#define lwip_listen listen +#define lwip_recv recv +#define lwip_recvfrom recvfrom +#define lwip_send send +#define lwip_sendmsg sendmsg +#define lwip_sendto sendto +#define lwip_socket socket +#define lwip_select select +#define lwip_ioctlsocket ioctl + +#if LWIP_POSIX_SOCKETS_IO_NAMES +#define lwip_read read +#define lwip_write write +#define lwip_writev writev +#undef lwip_close +#define lwip_close close +#define closesocket(s) close(s) +#define lwip_fcntl fcntl +#define lwip_ioctl ioctl +#endif /* LWIP_POSIX_SOCKETS_IO_NAMES */ +#endif /* LWIP_COMPAT_SOCKETS == 2 */ + +int lwip_accept(int s, struct sockaddr *addr, socklen_t *addrlen); +int lwip_bind(int s, const struct sockaddr *name, socklen_t namelen); +int lwip_shutdown(int s, int how); +int lwip_getpeername (int s, struct sockaddr *name, socklen_t *namelen); +int lwip_getsockname (int s, struct sockaddr *name, socklen_t *namelen); +int lwip_getsockopt (int s, int level, int optname, void *optval, socklen_t *optlen); +int lwip_setsockopt (int s, int level, int optname, const void *optval, socklen_t optlen); +int lwip_close(int s); +int lwip_connect(int s, const struct sockaddr *name, socklen_t namelen); +int lwip_listen(int s, int backlog); +int lwip_recv(int s, void *mem, size_t len, int flags); +int lwip_read(int s, void *mem, size_t len); +int lwip_recvfrom(int s, void *mem, size_t len, int flags, + struct sockaddr *from, socklen_t *fromlen); +int lwip_send(int s, const void *dataptr, size_t size, int flags); +int lwip_sendmsg(int s, const struct msghdr *message, int flags); +int lwip_sendto(int s, const void *dataptr, size_t size, int flags, + const struct sockaddr *to, socklen_t tolen); +int lwip_socket(int domain, int type, int protocol); +int lwip_write(int s, const void *dataptr, size_t size); +int lwip_writev(int s, const struct iovec *iov, int iovcnt); +int lwip_select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset, + struct timeval *timeout); +int lwip_ioctl(int s, long cmd, void *argp); +int lwip_fcntl(int s, int cmd, int val); + +#if LWIP_COMPAT_SOCKETS +#if LWIP_COMPAT_SOCKETS != 2 +/** @ingroup socket */ +#define accept(s,addr,addrlen) lwip_accept(s,addr,addrlen) +/** @ingroup socket */ +#define bind(s,name,namelen) lwip_bind(s,name,namelen) +/** @ingroup socket */ +#define shutdown(s,how) lwip_shutdown(s,how) +/** @ingroup socket */ +#define getpeername(s,name,namelen) lwip_getpeername(s,name,namelen) +/** @ingroup socket */ +#define getsockname(s,name,namelen) lwip_getsockname(s,name,namelen) +/** @ingroup socket */ +#define setsockopt(s,level,optname,opval,optlen) lwip_setsockopt(s,level,optname,opval,optlen) +/** @ingroup socket */ +#define getsockopt(s,level,optname,opval,optlen) lwip_getsockopt(s,level,optname,opval,optlen) +/** @ingroup socket */ +#define closesocket(s) lwip_close(s) +/** @ingroup socket */ +#define connect(s,name,namelen) lwip_connect(s,name,namelen) +/** @ingroup socket */ +#define listen(s,backlog) lwip_listen(s,backlog) +/** @ingroup socket */ +#define recv(s,mem,len,flags) lwip_recv(s,mem,len,flags) +/** @ingroup socket */ +#define recvfrom(s,mem,len,flags,from,fromlen) lwip_recvfrom(s,mem,len,flags,from,fromlen) +/** @ingroup socket */ +#define send(s,dataptr,size,flags) lwip_send(s,dataptr,size,flags) +/** @ingroup socket */ +#define sendmsg(s,message,flags) lwip_sendmsg(s,message,flags) +/** @ingroup socket */ +#define sendto(s,dataptr,size,flags,to,tolen) lwip_sendto(s,dataptr,size,flags,to,tolen) +/** @ingroup socket */ +#define socket(domain,type,protocol) lwip_socket(domain,type,protocol) +/** @ingroup socket */ +#define select(maxfdp1,readset,writeset,exceptset,timeout) lwip_select(maxfdp1,readset,writeset,exceptset,timeout) +/** @ingroup socket */ +#define ioctlsocket(s,cmd,argp) lwip_ioctl(s,cmd,argp) + +#if LWIP_POSIX_SOCKETS_IO_NAMES +/** @ingroup socket */ +#define read(s,mem,len) lwip_read(s,mem,len) +/** @ingroup socket */ +#define write(s,dataptr,len) lwip_write(s,dataptr,len) +/** @ingroup socket */ +#define writev(s,iov,iovcnt) lwip_writev(s,iov,iovcnt) +/** @ingroup socket */ +#define close(s) lwip_close(s) +/** @ingroup socket */ +#define fcntl(s,cmd,val) lwip_fcntl(s,cmd,val) +/** @ingroup socket */ +#define ioctl(s,cmd,argp) lwip_ioctl(s,cmd,argp) +#endif /* LWIP_POSIX_SOCKETS_IO_NAMES */ +#endif /* LWIP_COMPAT_SOCKETS != 2 */ + +#if LWIP_IPV4 && LWIP_IPV6 +/** @ingroup socket */ +#define inet_ntop(af,src,dst,size) \ + (((af) == AF_INET6) ? ip6addr_ntoa_r((const ip6_addr_t*)(src),(dst),(size)) \ + : (((af) == AF_INET) ? ip4addr_ntoa_r((const ip4_addr_t*)(src),(dst),(size)) : NULL)) +/** @ingroup socket */ +#define inet_pton(af,src,dst) \ + (((af) == AF_INET6) ? ip6addr_aton((src),(ip6_addr_t*)(dst)) \ + : (((af) == AF_INET) ? ip4addr_aton((src),(ip4_addr_t*)(dst)) : 0)) +#elif LWIP_IPV4 /* LWIP_IPV4 && LWIP_IPV6 */ +#define inet_ntop(af,src,dst,size) \ + (((af) == AF_INET) ? ip4addr_ntoa_r((const ip4_addr_t*)(src),(dst),(size)) : NULL) +#define inet_pton(af,src,dst) \ + (((af) == AF_INET) ? ip4addr_aton((src),(ip4_addr_t*)(dst)) : 0) +#else /* LWIP_IPV4 && LWIP_IPV6 */ +#define inet_ntop(af,src,dst,size) \ + (((af) == AF_INET6) ? ip6addr_ntoa_r((const ip6_addr_t*)(src),(dst),(size)) : NULL) +#define inet_pton(af,src,dst) \ + (((af) == AF_INET6) ? ip6addr_aton((src),(ip6_addr_t*)(dst)) : 0) +#endif /* LWIP_IPV4 && LWIP_IPV6 */ + +#endif /* LWIP_COMPAT_SOCKETS */ + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_SOCKET */ + +#endif /* LWIP_HDR_SOCKETS_H */ diff --git a/tools/sdk/lwip2/include/lwip/stats.h b/tools/sdk/lwip2/include/lwip/stats.h new file mode 100644 index 000000000..5cde4a094 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/stats.h @@ -0,0 +1,491 @@ +/** + * @file + * Statistics API (to be used from TCPIP thread) + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_STATS_H +#define LWIP_HDR_STATS_H + +#include "lwip/opt.h" + +#include "lwip/mem.h" +#include "lwip/memp.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if LWIP_STATS + +#ifndef LWIP_STATS_LARGE +#define LWIP_STATS_LARGE 0 +#endif + +#if LWIP_STATS_LARGE +#define STAT_COUNTER u32_t +#define STAT_COUNTER_F U32_F +#else +#define STAT_COUNTER u16_t +#define STAT_COUNTER_F U16_F +#endif + +/** Protocol related stats */ +struct stats_proto { + STAT_COUNTER xmit; /* Transmitted packets. */ + STAT_COUNTER recv; /* Received packets. */ + STAT_COUNTER fw; /* Forwarded packets. */ + STAT_COUNTER drop; /* Dropped packets. */ + STAT_COUNTER chkerr; /* Checksum error. */ + STAT_COUNTER lenerr; /* Invalid length error. */ + STAT_COUNTER memerr; /* Out of memory error. */ + STAT_COUNTER rterr; /* Routing error. */ + STAT_COUNTER proterr; /* Protocol error. */ + STAT_COUNTER opterr; /* Error in options. */ + STAT_COUNTER err; /* Misc error. */ + STAT_COUNTER cachehit; +}; + +/** IGMP stats */ +struct stats_igmp { + STAT_COUNTER xmit; /* Transmitted packets. */ + STAT_COUNTER recv; /* Received packets. */ + STAT_COUNTER drop; /* Dropped packets. */ + STAT_COUNTER chkerr; /* Checksum error. */ + STAT_COUNTER lenerr; /* Invalid length error. */ + STAT_COUNTER memerr; /* Out of memory error. */ + STAT_COUNTER proterr; /* Protocol error. */ + STAT_COUNTER rx_v1; /* Received v1 frames. */ + STAT_COUNTER rx_group; /* Received group-specific queries. */ + STAT_COUNTER rx_general; /* Received general queries. */ + STAT_COUNTER rx_report; /* Received reports. */ + STAT_COUNTER tx_join; /* Sent joins. */ + STAT_COUNTER tx_leave; /* Sent leaves. */ + STAT_COUNTER tx_report; /* Sent reports. */ +}; + +/** Memory stats */ +struct stats_mem { +#if defined(LWIP_DEBUG) || LWIP_STATS_DISPLAY + const char *name; +#endif /* defined(LWIP_DEBUG) || LWIP_STATS_DISPLAY */ + STAT_COUNTER err; + mem_size_t avail; + mem_size_t used; + mem_size_t max; + STAT_COUNTER illegal; +}; + +/** System element stats */ +struct stats_syselem { + STAT_COUNTER used; + STAT_COUNTER max; + STAT_COUNTER err; +}; + +/** System stats */ +struct stats_sys { + struct stats_syselem sem; + struct stats_syselem mutex; + struct stats_syselem mbox; +}; + +/** SNMP MIB2 stats */ +struct stats_mib2 { + /* IP */ + u32_t ipinhdrerrors; + u32_t ipinaddrerrors; + u32_t ipinunknownprotos; + u32_t ipindiscards; + u32_t ipindelivers; + u32_t ipoutrequests; + u32_t ipoutdiscards; + u32_t ipoutnoroutes; + u32_t ipreasmoks; + u32_t ipreasmfails; + u32_t ipfragoks; + u32_t ipfragfails; + u32_t ipfragcreates; + u32_t ipreasmreqds; + u32_t ipforwdatagrams; + u32_t ipinreceives; + + /* TCP */ + u32_t tcpactiveopens; + u32_t tcppassiveopens; + u32_t tcpattemptfails; + u32_t tcpestabresets; + u32_t tcpoutsegs; + u32_t tcpretranssegs; + u32_t tcpinsegs; + u32_t tcpinerrs; + u32_t tcpoutrsts; + + /* UDP */ + u32_t udpindatagrams; + u32_t udpnoports; + u32_t udpinerrors; + u32_t udpoutdatagrams; + + /* ICMP */ + u32_t icmpinmsgs; + u32_t icmpinerrors; + u32_t icmpindestunreachs; + u32_t icmpintimeexcds; + u32_t icmpinparmprobs; + u32_t icmpinsrcquenchs; + u32_t icmpinredirects; + u32_t icmpinechos; + u32_t icmpinechoreps; + u32_t icmpintimestamps; + u32_t icmpintimestampreps; + u32_t icmpinaddrmasks; + u32_t icmpinaddrmaskreps; + u32_t icmpoutmsgs; + u32_t icmpouterrors; + u32_t icmpoutdestunreachs; + u32_t icmpouttimeexcds; + u32_t icmpoutechos; /* can be incremented by user application ('ping') */ + u32_t icmpoutechoreps; +}; + +/** + * @ingroup netif_mib2 + * SNMP MIB2 interface stats + */ +struct stats_mib2_netif_ctrs { + /** The total number of octets received on the interface, including framing characters */ + u32_t ifinoctets; + /** The number of packets, delivered by this sub-layer to a higher (sub-)layer, which were + * not addressed to a multicast or broadcast address at this sub-layer */ + u32_t ifinucastpkts; + /** The number of packets, delivered by this sub-layer to a higher (sub-)layer, which were + * addressed to a multicast or broadcast address at this sub-layer */ + u32_t ifinnucastpkts; + /** The number of inbound packets which were chosen to be discarded even though no errors had + * been detected to prevent their being deliverable to a higher-layer protocol. One possible + * reason for discarding such a packet could be to free up buffer space */ + u32_t ifindiscards; + /** For packet-oriented interfaces, the number of inbound packets that contained errors + * preventing them from being deliverable to a higher-layer protocol. For character- + * oriented or fixed-length interfaces, the number of inbound transmission units that + * contained errors preventing them from being deliverable to a higher-layer protocol. */ + u32_t ifinerrors; + /** For packet-oriented interfaces, the number of packets received via the interface which + * were discarded because of an unknown or unsupported protocol. For character-oriented + * or fixed-length interfaces that support protocol multiplexing the number of transmission + * units received via the interface which were discarded because of an unknown or unsupported + * protocol. For any interface that does not support protocol multiplexing, this counter will + * always be 0 */ + u32_t ifinunknownprotos; + /** The total number of octets transmitted out of the interface, including framing characters. */ + u32_t ifoutoctets; + /** The total number of packets that higher-level protocols requested be transmitted, and + * which were not addressed to a multicast or broadcast address at this sub-layer, including + * those that were discarded or not sent. */ + u32_t ifoutucastpkts; + /** The total number of packets that higher-level protocols requested be transmitted, and which + * were addressed to a multicast or broadcast address at this sub-layer, including + * those that were discarded or not sent. */ + u32_t ifoutnucastpkts; + /** The number of outbound packets which were chosen to be discarded even though no errors had + * been detected to prevent their being transmitted. One possible reason for discarding + * such a packet could be to free up buffer space. */ + u32_t ifoutdiscards; + /** For packet-oriented interfaces, the number of outbound packets that could not be transmitted + * because of errors. For character-oriented or fixed-length interfaces, the number of outbound + * transmission units that could not be transmitted because of errors. */ + u32_t ifouterrors; +}; + +/** lwIP stats container */ +struct stats_ { +#if LINK_STATS + /** Link level */ + struct stats_proto link; +#endif +#if ETHARP_STATS + /** ARP */ + struct stats_proto etharp; +#endif +#if IPFRAG_STATS + /** Fragmentation */ + struct stats_proto ip_frag; +#endif +#if IP_STATS + /** IP */ + struct stats_proto ip; +#endif +#if ICMP_STATS + /** ICMP */ + struct stats_proto icmp; +#endif +#if IGMP_STATS + /** IGMP */ + struct stats_igmp igmp; +#endif +#if UDP_STATS + /** UDP */ + struct stats_proto udp; +#endif +#if TCP_STATS + /** TCP */ + struct stats_proto tcp; +#endif +#if MEM_STATS + /** Heap */ + struct stats_mem mem; +#endif +#if MEMP_STATS + /** Internal memory pools */ + struct stats_mem *memp[MEMP_MAX]; +#endif +#if SYS_STATS + /** System */ + struct stats_sys sys; +#endif +#if IP6_STATS + /** IPv6 */ + struct stats_proto ip6; +#endif +#if ICMP6_STATS + /** ICMP6 */ + struct stats_proto icmp6; +#endif +#if IP6_FRAG_STATS + /** IPv6 fragmentation */ + struct stats_proto ip6_frag; +#endif +#if MLD6_STATS + /** Multicast listener discovery */ + struct stats_igmp mld6; +#endif +#if ND6_STATS + /** Neighbor discovery */ + struct stats_proto nd6; +#endif +#if MIB2_STATS + /** SNMP MIB2 */ + struct stats_mib2 mib2; +#endif +}; + +/** Global variable containing lwIP internal statistics. Add this to your debugger's watchlist. */ +extern struct stats_ lwip_stats; + +/** Init statistics */ +void stats_init(void); + +#define STATS_INC(x) ++lwip_stats.x +#define STATS_DEC(x) --lwip_stats.x +#define STATS_INC_USED(x, y) do { lwip_stats.x.used += y; \ + if (lwip_stats.x.max < lwip_stats.x.used) { \ + lwip_stats.x.max = lwip_stats.x.used; \ + } \ + } while(0) +#define STATS_GET(x) lwip_stats.x +#else /* LWIP_STATS */ +#define stats_init() +#define STATS_INC(x) +#define STATS_DEC(x) +#define STATS_INC_USED(x) +#endif /* LWIP_STATS */ + +#if TCP_STATS +#define TCP_STATS_INC(x) STATS_INC(x) +#define TCP_STATS_DISPLAY() stats_display_proto(&lwip_stats.tcp, "TCP") +#else +#define TCP_STATS_INC(x) +#define TCP_STATS_DISPLAY() +#endif + +#if UDP_STATS +#define UDP_STATS_INC(x) STATS_INC(x) +#define UDP_STATS_DISPLAY() stats_display_proto(&lwip_stats.udp, "UDP") +#else +#define UDP_STATS_INC(x) +#define UDP_STATS_DISPLAY() +#endif + +#if ICMP_STATS +#define ICMP_STATS_INC(x) STATS_INC(x) +#define ICMP_STATS_DISPLAY() stats_display_proto(&lwip_stats.icmp, "ICMP") +#else +#define ICMP_STATS_INC(x) +#define ICMP_STATS_DISPLAY() +#endif + +#if IGMP_STATS +#define IGMP_STATS_INC(x) STATS_INC(x) +#define IGMP_STATS_DISPLAY() stats_display_igmp(&lwip_stats.igmp, "IGMP") +#else +#define IGMP_STATS_INC(x) +#define IGMP_STATS_DISPLAY() +#endif + +#if IP_STATS +#define IP_STATS_INC(x) STATS_INC(x) +#define IP_STATS_DISPLAY() stats_display_proto(&lwip_stats.ip, "IP") +#else +#define IP_STATS_INC(x) +#define IP_STATS_DISPLAY() +#endif + +#if IPFRAG_STATS +#define IPFRAG_STATS_INC(x) STATS_INC(x) +#define IPFRAG_STATS_DISPLAY() stats_display_proto(&lwip_stats.ip_frag, "IP_FRAG") +#else +#define IPFRAG_STATS_INC(x) +#define IPFRAG_STATS_DISPLAY() +#endif + +#if ETHARP_STATS +#define ETHARP_STATS_INC(x) STATS_INC(x) +#define ETHARP_STATS_DISPLAY() stats_display_proto(&lwip_stats.etharp, "ETHARP") +#else +#define ETHARP_STATS_INC(x) +#define ETHARP_STATS_DISPLAY() +#endif + +#if LINK_STATS +#define LINK_STATS_INC(x) STATS_INC(x) +#define LINK_STATS_DISPLAY() stats_display_proto(&lwip_stats.link, "LINK") +#else +#define LINK_STATS_INC(x) +#define LINK_STATS_DISPLAY() +#endif + +#if MEM_STATS +#define MEM_STATS_AVAIL(x, y) lwip_stats.mem.x = y +#define MEM_STATS_INC(x) SYS_ARCH_INC(lwip_stats.mem.x, 1) +#define MEM_STATS_INC_USED(x, y) SYS_ARCH_INC(lwip_stats.mem.x, y) +#define MEM_STATS_DEC_USED(x, y) SYS_ARCH_DEC(lwip_stats.mem.x, y) +#define MEM_STATS_DISPLAY() stats_display_mem(&lwip_stats.mem, "HEAP") +#else +#define MEM_STATS_AVAIL(x, y) +#define MEM_STATS_INC(x) +#define MEM_STATS_INC_USED(x, y) +#define MEM_STATS_DEC_USED(x, y) +#define MEM_STATS_DISPLAY() +#endif + + #if MEMP_STATS +#define MEMP_STATS_DEC(x, i) STATS_DEC(memp[i]->x) +#define MEMP_STATS_DISPLAY(i) stats_display_memp(lwip_stats.memp[i], i) +#define MEMP_STATS_GET(x, i) STATS_GET(memp[i]->x) + #else +#define MEMP_STATS_DEC(x, i) +#define MEMP_STATS_DISPLAY(i) +#define MEMP_STATS_GET(x, i) 0 +#endif + +#if SYS_STATS +#define SYS_STATS_INC(x) STATS_INC(sys.x) +#define SYS_STATS_DEC(x) STATS_DEC(sys.x) +#define SYS_STATS_INC_USED(x) STATS_INC_USED(sys.x, 1) +#define SYS_STATS_DISPLAY() stats_display_sys(&lwip_stats.sys) +#else +#define SYS_STATS_INC(x) +#define SYS_STATS_DEC(x) +#define SYS_STATS_INC_USED(x) +#define SYS_STATS_DISPLAY() +#endif + +#if IP6_STATS +#define IP6_STATS_INC(x) STATS_INC(x) +#define IP6_STATS_DISPLAY() stats_display_proto(&lwip_stats.ip6, "IPv6") +#else +#define IP6_STATS_INC(x) +#define IP6_STATS_DISPLAY() +#endif + +#if ICMP6_STATS +#define ICMP6_STATS_INC(x) STATS_INC(x) +#define ICMP6_STATS_DISPLAY() stats_display_proto(&lwip_stats.icmp6, "ICMPv6") +#else +#define ICMP6_STATS_INC(x) +#define ICMP6_STATS_DISPLAY() +#endif + +#if IP6_FRAG_STATS +#define IP6_FRAG_STATS_INC(x) STATS_INC(x) +#define IP6_FRAG_STATS_DISPLAY() stats_display_proto(&lwip_stats.ip6_frag, "IPv6 FRAG") +#else +#define IP6_FRAG_STATS_INC(x) +#define IP6_FRAG_STATS_DISPLAY() +#endif + +#if MLD6_STATS +#define MLD6_STATS_INC(x) STATS_INC(x) +#define MLD6_STATS_DISPLAY() stats_display_igmp(&lwip_stats.mld6, "MLDv1") +#else +#define MLD6_STATS_INC(x) +#define MLD6_STATS_DISPLAY() +#endif + +#if ND6_STATS +#define ND6_STATS_INC(x) STATS_INC(x) +#define ND6_STATS_DISPLAY() stats_display_proto(&lwip_stats.nd6, "ND") +#else +#define ND6_STATS_INC(x) +#define ND6_STATS_DISPLAY() +#endif + +#if MIB2_STATS +#define MIB2_STATS_INC(x) STATS_INC(x) +#else +#define MIB2_STATS_INC(x) +#endif + +/* Display of statistics */ +#if LWIP_STATS_DISPLAY +void stats_display(void); +void stats_display_proto(struct stats_proto *proto, const char *name); +void stats_display_igmp(struct stats_igmp *igmp, const char *name); +void stats_display_mem(struct stats_mem *mem, const char *name); +void stats_display_memp(struct stats_mem *mem, int index); +void stats_display_sys(struct stats_sys *sys); +#else /* LWIP_STATS_DISPLAY */ +#define stats_display() +#define stats_display_proto(proto, name) +#define stats_display_igmp(igmp, name) +#define stats_display_mem(mem, name) +#define stats_display_memp(mem, index) +#define stats_display_sys(sys) +#endif /* LWIP_STATS_DISPLAY */ + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_STATS_H */ diff --git a/tools/sdk/lwip2/include/lwip/sys.h b/tools/sdk/lwip2/include/lwip/sys.h new file mode 100644 index 000000000..d12bae0f9 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/sys.h @@ -0,0 +1,455 @@ +/** + * @file + * OS abstraction layer + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + */ + +#ifndef LWIP_HDR_SYS_H +#define LWIP_HDR_SYS_H + +#include "lwip/opt.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if NO_SYS + +/* For a totally minimal and standalone system, we provide null + definitions of the sys_ functions. */ +typedef u8_t sys_sem_t; +typedef u8_t sys_mutex_t; +typedef u8_t sys_mbox_t; + +#define sys_sem_new(s, c) ERR_OK +#define sys_sem_signal(s) +#define sys_sem_wait(s) +#define sys_arch_sem_wait(s,t) +#define sys_sem_free(s) +#define sys_sem_valid(s) 0 +#define sys_sem_valid_val(s) 0 +#define sys_sem_set_invalid(s) +#define sys_sem_set_invalid_val(s) +#define sys_mutex_new(mu) ERR_OK +#define sys_mutex_lock(mu) +#define sys_mutex_unlock(mu) +#define sys_mutex_free(mu) +#define sys_mutex_valid(mu) 0 +#define sys_mutex_set_invalid(mu) +#define sys_mbox_new(m, s) ERR_OK +#define sys_mbox_fetch(m,d) +#define sys_mbox_tryfetch(m,d) +#define sys_mbox_post(m,d) +#define sys_mbox_trypost(m,d) +#define sys_mbox_free(m) +#define sys_mbox_valid(m) +#define sys_mbox_valid_val(m) +#define sys_mbox_set_invalid(m) +#define sys_mbox_set_invalid_val(m) + +#define sys_thread_new(n,t,a,s,p) + +#define sys_msleep(t) + +#else /* NO_SYS */ + +/** Return code for timeouts from sys_arch_mbox_fetch and sys_arch_sem_wait */ +#define SYS_ARCH_TIMEOUT 0xffffffffUL + +/** sys_mbox_tryfetch() returns SYS_MBOX_EMPTY if appropriate. + * For now we use the same magic value, but we allow this to change in future. + */ +#define SYS_MBOX_EMPTY SYS_ARCH_TIMEOUT + +#include "lwip/err.h" +#include "arch/sys_arch.h" + +/** Function prototype for thread functions */ +typedef void (*lwip_thread_fn)(void *arg); + +/* Function prototypes for functions to be implemented by platform ports + (in sys_arch.c) */ + +/* Mutex functions: */ + +/** Define LWIP_COMPAT_MUTEX if the port has no mutexes and binary semaphores + should be used instead */ +#ifndef LWIP_COMPAT_MUTEX +#define LWIP_COMPAT_MUTEX 0 +#endif + +#if LWIP_COMPAT_MUTEX +/* for old ports that don't have mutexes: define them to binary semaphores */ +#define sys_mutex_t sys_sem_t +#define sys_mutex_new(mutex) sys_sem_new(mutex, 1) +#define sys_mutex_lock(mutex) sys_sem_wait(mutex) +#define sys_mutex_unlock(mutex) sys_sem_signal(mutex) +#define sys_mutex_free(mutex) sys_sem_free(mutex) +#define sys_mutex_valid(mutex) sys_sem_valid(mutex) +#define sys_mutex_set_invalid(mutex) sys_sem_set_invalid(mutex) + +#else /* LWIP_COMPAT_MUTEX */ + +/** + * @ingroup sys_mutex + * Create a new mutex. + * Note that mutexes are expected to not be taken recursively by the lwIP code, + * so both implementation types (recursive or non-recursive) should work. + * @param mutex pointer to the mutex to create + * @return ERR_OK if successful, another err_t otherwise + */ +err_t sys_mutex_new(sys_mutex_t *mutex); +/** + * @ingroup sys_mutex + * Lock a mutex + * @param mutex the mutex to lock + */ +void sys_mutex_lock(sys_mutex_t *mutex); +/** + * @ingroup sys_mutex + * Unlock a mutex + * @param mutex the mutex to unlock + */ +void sys_mutex_unlock(sys_mutex_t *mutex); +/** + * @ingroup sys_mutex + * Delete a semaphore + * @param mutex the mutex to delete + */ +void sys_mutex_free(sys_mutex_t *mutex); +#ifndef sys_mutex_valid +/** + * @ingroup sys_mutex + * Check if a mutex is valid/allocated: return 1 for valid, 0 for invalid + */ +int sys_mutex_valid(sys_mutex_t *mutex); +#endif +#ifndef sys_mutex_set_invalid +/** + * @ingroup sys_mutex + * Set a mutex invalid so that sys_mutex_valid returns 0 + */ +void sys_mutex_set_invalid(sys_mutex_t *mutex); +#endif +#endif /* LWIP_COMPAT_MUTEX */ + +/* Semaphore functions: */ + +/** + * @ingroup sys_sem + * Create a new semaphore + * @param sem pointer to the semaphore to create + * @param count initial count of the semaphore + * @return ERR_OK if successful, another err_t otherwise + */ +err_t sys_sem_new(sys_sem_t *sem, u8_t count); +/** + * @ingroup sys_sem + * Signals a semaphore + * @param sem the semaphore to signal + */ +void sys_sem_signal(sys_sem_t *sem); +/** + * @ingroup sys_sem + * Wait for a semaphore for the specified timeout + * @param sem the semaphore to wait for + * @param timeout timeout in milliseconds to wait (0 = wait forever) + * @return time (in milliseconds) waited for the semaphore + * or SYS_ARCH_TIMEOUT on timeout + */ +u32_t sys_arch_sem_wait(sys_sem_t *sem, u32_t timeout); +/** + * @ingroup sys_sem + * Delete a semaphore + * @param sem semaphore to delete + */ +void sys_sem_free(sys_sem_t *sem); +/** Wait for a semaphore - forever/no timeout */ +#define sys_sem_wait(sem) sys_arch_sem_wait(sem, 0) +#ifndef sys_sem_valid +/** + * @ingroup sys_sem + * Check if a semaphore is valid/allocated: return 1 for valid, 0 for invalid + */ +int sys_sem_valid(sys_sem_t *sem); +#endif +#ifndef sys_sem_set_invalid +/** + * @ingroup sys_sem + * Set a semaphore invalid so that sys_sem_valid returns 0 + */ +void sys_sem_set_invalid(sys_sem_t *sem); +#endif +#ifndef sys_sem_valid_val +/** + * Same as sys_sem_valid() but taking a value, not a pointer + */ +#define sys_sem_valid_val(sem) sys_sem_valid(&(sem)) +#endif +#ifndef sys_sem_set_invalid_val +/** + * Same as sys_sem_set_invalid() but taking a value, not a pointer + */ +#define sys_sem_set_invalid_val(sem) sys_sem_set_invalid(&(sem)) +#endif + +#ifndef sys_msleep +/** + * @ingroup sys_misc + * Sleep for specified number of ms + */ +void sys_msleep(u32_t ms); /* only has a (close to) 1 ms resolution. */ +#endif + +/* Mailbox functions. */ + +/** + * @ingroup sys_mbox + * Create a new mbox of specified size + * @param mbox pointer to the mbox to create + * @param size (minimum) number of messages in this mbox + * @return ERR_OK if successful, another err_t otherwise + */ +err_t sys_mbox_new(sys_mbox_t *mbox, int size); +/** + * @ingroup sys_mbox + * Post a message to an mbox - may not fail + * -> blocks if full, only used from tasks not from ISR + * @param mbox mbox to posts the message + * @param msg message to post (ATTENTION: can be NULL) + */ +void sys_mbox_post(sys_mbox_t *mbox, void *msg); +/** + * @ingroup sys_mbox + * Try to post a message to an mbox - may fail if full or ISR + * @param mbox mbox to posts the message + * @param msg message to post (ATTENTION: can be NULL) + */ +err_t sys_mbox_trypost(sys_mbox_t *mbox, void *msg); +/** + * @ingroup sys_mbox + * Wait for a new message to arrive in the mbox + * @param mbox mbox to get a message from + * @param msg pointer where the message is stored + * @param timeout maximum time (in milliseconds) to wait for a message (0 = wait forever) + * @return time (in milliseconds) waited for a message, may be 0 if not waited + or SYS_ARCH_TIMEOUT on timeout + * The returned time has to be accurate to prevent timer jitter! + */ +u32_t sys_arch_mbox_fetch(sys_mbox_t *mbox, void **msg, u32_t timeout); +/* Allow port to override with a macro, e.g. special timeout for sys_arch_mbox_fetch() */ +#ifndef sys_arch_mbox_tryfetch +/** + * @ingroup sys_mbox + * Wait for a new message to arrive in the mbox + * @param mbox mbox to get a message from + * @param msg pointer where the message is stored + * @return 0 (milliseconds) if a message has been received + * or SYS_MBOX_EMPTY if the mailbox is empty + */ +u32_t sys_arch_mbox_tryfetch(sys_mbox_t *mbox, void **msg); +#endif +/** + * For now, we map straight to sys_arch implementation. + */ +#define sys_mbox_tryfetch(mbox, msg) sys_arch_mbox_tryfetch(mbox, msg) +/** + * @ingroup sys_mbox + * Delete an mbox + * @param mbox mbox to delete + */ +void sys_mbox_free(sys_mbox_t *mbox); +#define sys_mbox_fetch(mbox, msg) sys_arch_mbox_fetch(mbox, msg, 0) +#ifndef sys_mbox_valid +/** + * @ingroup sys_mbox + * Check if an mbox is valid/allocated: return 1 for valid, 0 for invalid + */ +int sys_mbox_valid(sys_mbox_t *mbox); +#endif +#ifndef sys_mbox_set_invalid +/** + * @ingroup sys_mbox + * Set an mbox invalid so that sys_mbox_valid returns 0 + */ +void sys_mbox_set_invalid(sys_mbox_t *mbox); +#endif +#ifndef sys_mbox_valid_val +/** + * Same as sys_mbox_valid() but taking a value, not a pointer + */ +#define sys_mbox_valid_val(mbox) sys_mbox_valid(&(mbox)) +#endif +#ifndef sys_mbox_set_invalid_val +/** + * Same as sys_mbox_set_invalid() but taking a value, not a pointer + */ +#define sys_mbox_set_invalid_val(mbox) sys_mbox_set_invalid(&(mbox)) +#endif + + +/** + * @ingroup sys_misc + * The only thread function: + * Creates a new thread + * ATTENTION: although this function returns a value, it MUST NOT FAIL (ports have to assert this!) + * @param name human-readable name for the thread (used for debugging purposes) + * @param thread thread-function + * @param arg parameter passed to 'thread' + * @param stacksize stack size in bytes for the new thread (may be ignored by ports) + * @param prio priority of the new thread (may be ignored by ports) */ +sys_thread_t sys_thread_new(const char *name, lwip_thread_fn thread, void *arg, int stacksize, int prio); + +#endif /* NO_SYS */ + +/* sys_init() must be called before anything else. */ +void sys_init(void); + +#ifndef sys_jiffies +/** + * Ticks/jiffies since power up. + */ +u32_t sys_jiffies(void); +#endif + +/** + * @ingroup sys_time + * Returns the current time in milliseconds, + * may be the same as sys_jiffies or at least based on it. + */ +u32_t sys_now(void); + +/* Critical Region Protection */ +/* These functions must be implemented in the sys_arch.c file. + In some implementations they can provide a more light-weight protection + mechanism than using semaphores. Otherwise semaphores can be used for + implementation */ +#ifndef SYS_ARCH_PROTECT +/** SYS_LIGHTWEIGHT_PROT + * define SYS_LIGHTWEIGHT_PROT in lwipopts.h if you want inter-task protection + * for certain critical regions during buffer allocation, deallocation and memory + * allocation and deallocation. + */ +#if SYS_LIGHTWEIGHT_PROT + +/** + * @ingroup sys_prot + * SYS_ARCH_DECL_PROTECT + * declare a protection variable. This macro will default to defining a variable of + * type sys_prot_t. If a particular port needs a different implementation, then + * this macro may be defined in sys_arch.h. + */ +#define SYS_ARCH_DECL_PROTECT(lev) sys_prot_t lev +/** + * @ingroup sys_prot + * SYS_ARCH_PROTECT + * Perform a "fast" protect. This could be implemented by + * disabling interrupts for an embedded system or by using a semaphore or + * mutex. The implementation should allow calling SYS_ARCH_PROTECT when + * already protected. The old protection level is returned in the variable + * "lev". This macro will default to calling the sys_arch_protect() function + * which should be implemented in sys_arch.c. If a particular port needs a + * different implementation, then this macro may be defined in sys_arch.h + */ +#define SYS_ARCH_PROTECT(lev) lev = sys_arch_protect() +/** + * @ingroup sys_prot + * SYS_ARCH_UNPROTECT + * Perform a "fast" set of the protection level to "lev". This could be + * implemented by setting the interrupt level to "lev" within the MACRO or by + * using a semaphore or mutex. This macro will default to calling the + * sys_arch_unprotect() function which should be implemented in + * sys_arch.c. If a particular port needs a different implementation, then + * this macro may be defined in sys_arch.h + */ +#define SYS_ARCH_UNPROTECT(lev) sys_arch_unprotect(lev) +sys_prot_t sys_arch_protect(void); +void sys_arch_unprotect(sys_prot_t pval); + +#else + +#define SYS_ARCH_DECL_PROTECT(lev) +#define SYS_ARCH_PROTECT(lev) +#define SYS_ARCH_UNPROTECT(lev) + +#endif /* SYS_LIGHTWEIGHT_PROT */ + +#endif /* SYS_ARCH_PROTECT */ + +/* + * Macros to set/get and increase/decrease variables in a thread-safe way. + * Use these for accessing variable that are used from more than one thread. + */ + +#ifndef SYS_ARCH_INC +#define SYS_ARCH_INC(var, val) do { \ + SYS_ARCH_DECL_PROTECT(old_level); \ + SYS_ARCH_PROTECT(old_level); \ + var += val; \ + SYS_ARCH_UNPROTECT(old_level); \ + } while(0) +#endif /* SYS_ARCH_INC */ + +#ifndef SYS_ARCH_DEC +#define SYS_ARCH_DEC(var, val) do { \ + SYS_ARCH_DECL_PROTECT(old_level); \ + SYS_ARCH_PROTECT(old_level); \ + var -= val; \ + SYS_ARCH_UNPROTECT(old_level); \ + } while(0) +#endif /* SYS_ARCH_DEC */ + +#ifndef SYS_ARCH_GET +#define SYS_ARCH_GET(var, ret) do { \ + SYS_ARCH_DECL_PROTECT(old_level); \ + SYS_ARCH_PROTECT(old_level); \ + ret = var; \ + SYS_ARCH_UNPROTECT(old_level); \ + } while(0) +#endif /* SYS_ARCH_GET */ + +#ifndef SYS_ARCH_SET +#define SYS_ARCH_SET(var, val) do { \ + SYS_ARCH_DECL_PROTECT(old_level); \ + SYS_ARCH_PROTECT(old_level); \ + var = val; \ + SYS_ARCH_UNPROTECT(old_level); \ + } while(0) +#endif /* SYS_ARCH_SET */ + + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_SYS_H */ diff --git a/tools/sdk/lwip2/include/lwip/tcp.h b/tools/sdk/lwip2/include/lwip/tcp.h new file mode 100644 index 000000000..34d1c1015 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/tcp.h @@ -0,0 +1,433 @@ +/** + * @file + * TCP API (to be used from TCPIP thread)\n + * See also @ref tcp_raw + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_TCP_H +#define LWIP_HDR_TCP_H + +#include "lwip/opt.h" + +#if LWIP_TCP /* don't build if not configured for use in lwipopts.h */ + +#include "lwip/mem.h" +#include "lwip/pbuf.h" +#include "lwip/ip.h" +#include "lwip/icmp.h" +#include "lwip/err.h" +#include "lwip/ip6.h" +#include "lwip/ip6_addr.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct tcp_pcb; + +/** Function prototype for tcp accept callback functions. Called when a new + * connection can be accepted on a listening pcb. + * + * @param arg Additional argument to pass to the callback function (@see tcp_arg()) + * @param newpcb The new connection pcb + * @param err An error code if there has been an error accepting. + * Only return ERR_ABRT if you have called tcp_abort from within the + * callback function! + */ +typedef err_t (*tcp_accept_fn)(void *arg, struct tcp_pcb *newpcb, err_t err); + +/** Function prototype for tcp receive callback functions. Called when data has + * been received. + * + * @param arg Additional argument to pass to the callback function (@see tcp_arg()) + * @param tpcb The connection pcb which received data + * @param p The received data (or NULL when the connection has been closed!) + * @param err An error code if there has been an error receiving + * Only return ERR_ABRT if you have called tcp_abort from within the + * callback function! + */ +typedef err_t (*tcp_recv_fn)(void *arg, struct tcp_pcb *tpcb, + struct pbuf *p, err_t err); + +/** Function prototype for tcp sent callback functions. Called when sent data has + * been acknowledged by the remote side. Use it to free corresponding resources. + * This also means that the pcb has now space available to send new data. + * + * @param arg Additional argument to pass to the callback function (@see tcp_arg()) + * @param tpcb The connection pcb for which data has been acknowledged + * @param len The amount of bytes acknowledged + * @return ERR_OK: try to send some data by calling tcp_output + * Only return ERR_ABRT if you have called tcp_abort from within the + * callback function! + */ +typedef err_t (*tcp_sent_fn)(void *arg, struct tcp_pcb *tpcb, + u16_t len); + +/** Function prototype for tcp poll callback functions. Called periodically as + * specified by @see tcp_poll. + * + * @param arg Additional argument to pass to the callback function (@see tcp_arg()) + * @param tpcb tcp pcb + * @return ERR_OK: try to send some data by calling tcp_output + * Only return ERR_ABRT if you have called tcp_abort from within the + * callback function! + */ +typedef err_t (*tcp_poll_fn)(void *arg, struct tcp_pcb *tpcb); + +/** Function prototype for tcp error callback functions. Called when the pcb + * receives a RST or is unexpectedly closed for any other reason. + * + * @note The corresponding pcb is already freed when this callback is called! + * + * @param arg Additional argument to pass to the callback function (@see tcp_arg()) + * @param err Error code to indicate why the pcb has been closed + * ERR_ABRT: aborted through tcp_abort or by a TCP timer + * ERR_RST: the connection was reset by the remote host + */ +typedef void (*tcp_err_fn)(void *arg, err_t err); + +/** Function prototype for tcp connected callback functions. Called when a pcb + * is connected to the remote side after initiating a connection attempt by + * calling tcp_connect(). + * + * @param arg Additional argument to pass to the callback function (@see tcp_arg()) + * @param tpcb The connection pcb which is connected + * @param err An unused error code, always ERR_OK currently ;-) @todo! + * Only return ERR_ABRT if you have called tcp_abort from within the + * callback function! + * + * @note When a connection attempt fails, the error callback is currently called! + */ +typedef err_t (*tcp_connected_fn)(void *arg, struct tcp_pcb *tpcb, err_t err); + +#if LWIP_WND_SCALE +#define RCV_WND_SCALE(pcb, wnd) (((wnd) >> (pcb)->rcv_scale)) +#define SND_WND_SCALE(pcb, wnd) (((wnd) << (pcb)->snd_scale)) +#define TCPWND16(x) ((u16_t)LWIP_MIN((x), 0xFFFF)) +#define TCP_WND_MAX(pcb) ((tcpwnd_size_t)(((pcb)->flags & TF_WND_SCALE) ? TCP_WND : TCPWND16(TCP_WND))) +typedef u32_t tcpwnd_size_t; +#else +#define RCV_WND_SCALE(pcb, wnd) (wnd) +#define SND_WND_SCALE(pcb, wnd) (wnd) +#define TCPWND16(x) (x) +#define TCP_WND_MAX(pcb) TCP_WND +typedef u16_t tcpwnd_size_t; +#endif + +#if LWIP_WND_SCALE || TCP_LISTEN_BACKLOG || LWIP_TCP_TIMESTAMPS +typedef u16_t tcpflags_t; +#else +typedef u8_t tcpflags_t; +#endif + +enum tcp_state { + CLOSED = 0, + LISTEN = 1, + SYN_SENT = 2, + SYN_RCVD = 3, + ESTABLISHED = 4, + FIN_WAIT_1 = 5, + FIN_WAIT_2 = 6, + CLOSE_WAIT = 7, + CLOSING = 8, + LAST_ACK = 9, + TIME_WAIT = 10 +}; + +/** + * members common to struct tcp_pcb and struct tcp_listen_pcb + */ +#define TCP_PCB_COMMON(type) \ + type *next; /* for the linked list */ \ + void *callback_arg; \ + enum tcp_state state; /* TCP state */ \ + u8_t prio; \ + /* ports are in host byte order */ \ + u16_t local_port + + +/** the TCP protocol control block for listening pcbs */ +struct tcp_pcb_listen { +/** Common members of all PCB types */ + IP_PCB; +/** Protocol specific PCB members */ + TCP_PCB_COMMON(struct tcp_pcb_listen); + +#if LWIP_CALLBACK_API + /* Function to call when a listener has been connected. */ + tcp_accept_fn accept; +#endif /* LWIP_CALLBACK_API */ + +#if TCP_LISTEN_BACKLOG + u8_t backlog; + u8_t accepts_pending; +#endif /* TCP_LISTEN_BACKLOG */ +}; + + +/** the TCP protocol control block */ +struct tcp_pcb { +/** common PCB members */ + IP_PCB; +/** protocol specific PCB members */ + TCP_PCB_COMMON(struct tcp_pcb); + + /* ports are in host byte order */ + u16_t remote_port; + + tcpflags_t flags; +#define TF_ACK_DELAY 0x01U /* Delayed ACK. */ +#define TF_ACK_NOW 0x02U /* Immediate ACK. */ +#define TF_INFR 0x04U /* In fast recovery. */ +#define TF_CLOSEPEND 0x08U /* If this is set, tcp_close failed to enqueue the FIN (retried in tcp_tmr) */ +#define TF_RXCLOSED 0x10U /* rx closed by tcp_shutdown */ +#define TF_FIN 0x20U /* Connection was closed locally (FIN segment enqueued). */ +#define TF_NODELAY 0x40U /* Disable Nagle algorithm */ +#define TF_NAGLEMEMERR 0x80U /* nagle enabled, memerr, try to output to prevent delayed ACK to happen */ +#if LWIP_WND_SCALE +#define TF_WND_SCALE 0x0100U /* Window Scale option enabled */ +#endif +#if TCP_LISTEN_BACKLOG +#define TF_BACKLOGPEND 0x0200U /* If this is set, a connection pcb has increased the backlog on its listener */ +#endif +#if LWIP_TCP_TIMESTAMPS +#define TF_TIMESTAMP 0x0400U /* Timestamp option enabled */ +#endif + + /* the rest of the fields are in host byte order + as we have to do some math with them */ + + /* Timers */ + u8_t polltmr, pollinterval; + u8_t last_timer; + u32_t tmr; + + /* receiver variables */ + u32_t rcv_nxt; /* next seqno expected */ + tcpwnd_size_t rcv_wnd; /* receiver window available */ + tcpwnd_size_t rcv_ann_wnd; /* receiver window to announce */ + u32_t rcv_ann_right_edge; /* announced right edge of window */ + + /* Retransmission timer. */ + s16_t rtime; + + u16_t mss; /* maximum segment size */ + + /* RTT (round trip time) estimation variables */ + u32_t rttest; /* RTT estimate in 500ms ticks */ + u32_t rtseq; /* sequence number being timed */ + s16_t sa, sv; /* @todo document this */ + + s16_t rto; /* retransmission time-out */ + u8_t nrtx; /* number of retransmissions */ + + /* fast retransmit/recovery */ + u8_t dupacks; + u32_t lastack; /* Highest acknowledged seqno. */ + + /* congestion avoidance/control variables */ + tcpwnd_size_t cwnd; + tcpwnd_size_t ssthresh; + + /* sender variables */ + u32_t snd_nxt; /* next new seqno to be sent */ + u32_t snd_wl1, snd_wl2; /* Sequence and acknowledgement numbers of last + window update. */ + u32_t snd_lbb; /* Sequence number of next byte to be buffered. */ + tcpwnd_size_t snd_wnd; /* sender window */ + tcpwnd_size_t snd_wnd_max; /* the maximum sender window announced by the remote host */ + + tcpwnd_size_t snd_buf; /* Available buffer space for sending (in bytes). */ +#define TCP_SNDQUEUELEN_OVERFLOW (0xffffU-3) + u16_t snd_queuelen; /* Number of pbufs currently in the send buffer. */ + +#if TCP_OVERSIZE + /* Extra bytes available at the end of the last pbuf in unsent. */ + u16_t unsent_oversize; +#endif /* TCP_OVERSIZE */ + + /* These are ordered by sequence number: */ + struct tcp_seg *unsent; /* Unsent (queued) segments. */ + struct tcp_seg *unacked; /* Sent but unacknowledged segments. */ +#if TCP_QUEUE_OOSEQ + struct tcp_seg *ooseq; /* Received out of sequence segments. */ +#endif /* TCP_QUEUE_OOSEQ */ + + struct pbuf *refused_data; /* Data previously received but not yet taken by upper layer */ + +#if LWIP_CALLBACK_API || TCP_LISTEN_BACKLOG + struct tcp_pcb_listen* listener; +#endif /* LWIP_CALLBACK_API || TCP_LISTEN_BACKLOG */ + +#if LWIP_CALLBACK_API + /* Function to be called when more send buffer space is available. */ + tcp_sent_fn sent; + /* Function to be called when (in-sequence) data has arrived. */ + tcp_recv_fn recv; + /* Function to be called when a connection has been set up. */ + tcp_connected_fn connected; + /* Function which is called periodically. */ + tcp_poll_fn poll; + /* Function to be called whenever a fatal error occurs. */ + tcp_err_fn errf; +#endif /* LWIP_CALLBACK_API */ + +#if LWIP_TCP_TIMESTAMPS + u32_t ts_lastacksent; + u32_t ts_recent; +#endif /* LWIP_TCP_TIMESTAMPS */ + + /* idle time before KEEPALIVE is sent */ + u32_t keep_idle; +#if LWIP_TCP_KEEPALIVE + u32_t keep_intvl; + u32_t keep_cnt; +#endif /* LWIP_TCP_KEEPALIVE */ + + /* Persist timer counter */ + u8_t persist_cnt; + /* Persist timer back-off */ + u8_t persist_backoff; + + /* KEEPALIVE counter */ + u8_t keep_cnt_sent; + +#if LWIP_WND_SCALE + u8_t snd_scale; + u8_t rcv_scale; +#endif +}; + +#if LWIP_EVENT_API + +enum lwip_event { + LWIP_EVENT_ACCEPT, + LWIP_EVENT_SENT, + LWIP_EVENT_RECV, + LWIP_EVENT_CONNECTED, + LWIP_EVENT_POLL, + LWIP_EVENT_ERR +}; + +err_t lwip_tcp_event(void *arg, struct tcp_pcb *pcb, + enum lwip_event, + struct pbuf *p, + u16_t size, + err_t err); + +#endif /* LWIP_EVENT_API */ + +/* Application program's interface: */ +struct tcp_pcb * tcp_new (void); +struct tcp_pcb * tcp_new_ip_type (u8_t type); + +void tcp_arg (struct tcp_pcb *pcb, void *arg); +#if LWIP_CALLBACK_API +void tcp_recv (struct tcp_pcb *pcb, tcp_recv_fn recv); +void tcp_sent (struct tcp_pcb *pcb, tcp_sent_fn sent); +void tcp_err (struct tcp_pcb *pcb, tcp_err_fn err); +void tcp_accept (struct tcp_pcb *pcb, tcp_accept_fn accept); +#endif /* LWIP_CALLBACK_API */ +void tcp_poll (struct tcp_pcb *pcb, tcp_poll_fn poll, u8_t interval); + +#if LWIP_TCP_TIMESTAMPS +#define tcp_mss(pcb) (((pcb)->flags & TF_TIMESTAMP) ? ((pcb)->mss - 12) : (pcb)->mss) +#else /* LWIP_TCP_TIMESTAMPS */ +#define tcp_mss(pcb) ((pcb)->mss) +#endif /* LWIP_TCP_TIMESTAMPS */ +#define tcp_sndbuf(pcb) (TCPWND16((pcb)->snd_buf)) +#define tcp_sndqueuelen(pcb) ((pcb)->snd_queuelen) +/** @ingroup tcp_raw */ +#define tcp_nagle_disable(pcb) ((pcb)->flags |= TF_NODELAY) +/** @ingroup tcp_raw */ +#define tcp_nagle_enable(pcb) ((pcb)->flags = (tcpflags_t)((pcb)->flags & ~TF_NODELAY)) +/** @ingroup tcp_raw */ +#define tcp_nagle_disabled(pcb) (((pcb)->flags & TF_NODELAY) != 0) + +#if TCP_LISTEN_BACKLOG +#define tcp_backlog_set(pcb, new_backlog) do { \ + LWIP_ASSERT("pcb->state == LISTEN (called for wrong pcb?)", (pcb)->state == LISTEN); \ + ((struct tcp_pcb_listen *)(pcb))->backlog = ((new_backlog) ? (new_backlog) : 1); } while(0) +void tcp_backlog_delayed(struct tcp_pcb* pcb); +void tcp_backlog_accepted(struct tcp_pcb* pcb); +#else /* TCP_LISTEN_BACKLOG */ +#define tcp_backlog_set(pcb, new_backlog) +#define tcp_backlog_delayed(pcb) +#define tcp_backlog_accepted(pcb) +#endif /* TCP_LISTEN_BACKLOG */ +#define tcp_accepted(pcb) /* compatibility define, not needed any more */ + +void tcp_recved (struct tcp_pcb *pcb, u16_t len); +err_t tcp_bind (struct tcp_pcb *pcb, const ip_addr_t *ipaddr, + u16_t port); +err_t tcp_connect (struct tcp_pcb *pcb, const ip_addr_t *ipaddr, + u16_t port, tcp_connected_fn connected); + +struct tcp_pcb * tcp_listen_with_backlog_and_err(struct tcp_pcb *pcb, u8_t backlog, err_t *err); +struct tcp_pcb * tcp_listen_with_backlog(struct tcp_pcb *pcb, u8_t backlog); +/** @ingroup tcp_raw */ +#define tcp_listen(pcb) tcp_listen_with_backlog(pcb, TCP_DEFAULT_LISTEN_BACKLOG) + +void tcp_abort (struct tcp_pcb *pcb); +err_t tcp_close (struct tcp_pcb *pcb); +err_t tcp_shutdown(struct tcp_pcb *pcb, int shut_rx, int shut_tx); + +/* Flags for "apiflags" parameter in tcp_write */ +#define TCP_WRITE_FLAG_COPY 0x01 +#define TCP_WRITE_FLAG_MORE 0x02 + +err_t tcp_write (struct tcp_pcb *pcb, const void *dataptr, u16_t len, + u8_t apiflags); + +void tcp_setprio (struct tcp_pcb *pcb, u8_t prio); + +#define TCP_PRIO_MIN 1 +#define TCP_PRIO_NORMAL 64 +#define TCP_PRIO_MAX 127 + +err_t tcp_output (struct tcp_pcb *pcb); + + +const char* tcp_debug_state_str(enum tcp_state s); + +/* for compatibility with older implementation */ +#define tcp_new_ip6() tcp_new_ip_type(IPADDR_TYPE_V6) + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_TCP */ + +#endif /* LWIP_HDR_TCP_H */ diff --git a/tools/sdk/lwip2/include/lwip/tcpip.h b/tools/sdk/lwip2/include/lwip/tcpip.h new file mode 100644 index 000000000..f2f6b469f --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/tcpip.h @@ -0,0 +1,106 @@ +/** + * @file + * Functions to sync with TCPIP thread + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_TCPIP_H +#define LWIP_HDR_TCPIP_H + +#include "lwip/opt.h" + +#if !NO_SYS /* don't build if not configured for use in lwipopts.h */ + +#include "lwip/err.h" +#include "lwip/timeouts.h" +#include "lwip/netif.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if LWIP_TCPIP_CORE_LOCKING +/** The global semaphore to lock the stack. */ +extern sys_mutex_t lock_tcpip_core; +/** Lock lwIP core mutex (needs @ref LWIP_TCPIP_CORE_LOCKING 1) */ +#define LOCK_TCPIP_CORE() sys_mutex_lock(&lock_tcpip_core) +/** Unlock lwIP core mutex (needs @ref LWIP_TCPIP_CORE_LOCKING 1) */ +#define UNLOCK_TCPIP_CORE() sys_mutex_unlock(&lock_tcpip_core) +#else /* LWIP_TCPIP_CORE_LOCKING */ +#define LOCK_TCPIP_CORE() +#define UNLOCK_TCPIP_CORE() +#endif /* LWIP_TCPIP_CORE_LOCKING */ + +struct pbuf; +struct netif; + +/** Function prototype for the init_done function passed to tcpip_init */ +typedef void (*tcpip_init_done_fn)(void *arg); +/** Function prototype for functions passed to tcpip_callback() */ +typedef void (*tcpip_callback_fn)(void *ctx); + +/* Forward declarations */ +struct tcpip_callback_msg; + +void tcpip_init(tcpip_init_done_fn tcpip_init_done, void *arg); + +err_t tcpip_inpkt(struct pbuf *p, struct netif *inp, netif_input_fn input_fn); +err_t tcpip_input(struct pbuf *p, struct netif *inp); + +err_t tcpip_callback_with_block(tcpip_callback_fn function, void *ctx, u8_t block); +/** + * @ingroup lwip_os + * @see tcpip_callback_with_block + */ +#define tcpip_callback(f, ctx) tcpip_callback_with_block(f, ctx, 1) + +struct tcpip_callback_msg* tcpip_callbackmsg_new(tcpip_callback_fn function, void *ctx); +void tcpip_callbackmsg_delete(struct tcpip_callback_msg* msg); +err_t tcpip_trycallback(struct tcpip_callback_msg* msg); + +/* free pbufs or heap memory from another context without blocking */ +err_t pbuf_free_callback(struct pbuf *p); +err_t mem_free_callback(void *m); + +#if LWIP_TCPIP_TIMEOUT && LWIP_TIMERS +err_t tcpip_timeout(u32_t msecs, sys_timeout_handler h, void *arg); +err_t tcpip_untimeout(sys_timeout_handler h, void *arg); +#endif /* LWIP_TCPIP_TIMEOUT && LWIP_TIMERS */ + +#ifdef __cplusplus +} +#endif + +#endif /* !NO_SYS */ + +#endif /* LWIP_HDR_TCPIP_H */ diff --git a/tools/sdk/lwip2/include/lwip/timeouts.h b/tools/sdk/lwip2/include/lwip/timeouts.h new file mode 100644 index 000000000..c9b93aa02 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/timeouts.h @@ -0,0 +1,121 @@ +/** + * @file + * Timer implementations + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * Simon Goldschmidt + * + */ +#ifndef LWIP_HDR_TIMEOUTS_H +#define LWIP_HDR_TIMEOUTS_H + +#include "lwip/opt.h" +#include "lwip/err.h" +#if !NO_SYS +#include "lwip/sys.h" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef LWIP_DEBUG_TIMERNAMES +#ifdef LWIP_DEBUG +#define LWIP_DEBUG_TIMERNAMES SYS_DEBUG +#else /* LWIP_DEBUG */ +#define LWIP_DEBUG_TIMERNAMES 0 +#endif /* LWIP_DEBUG*/ +#endif + +/** Function prototype for a stack-internal timer function that has to be + * called at a defined interval */ +typedef void (* lwip_cyclic_timer_handler)(void); + +/** This struct contains information about a stack-internal timer function + that has to be called at a defined interval */ +struct lwip_cyclic_timer { + u32_t interval_ms; + lwip_cyclic_timer_handler handler; +#if LWIP_DEBUG_TIMERNAMES + const char* handler_name; +#endif /* LWIP_DEBUG_TIMERNAMES */ +}; + +/** This array contains all stack-internal cyclic timers. To get the number of + * timers, use LWIP_ARRAYSIZE() */ +extern const struct lwip_cyclic_timer lwip_cyclic_timers[]; + +#if LWIP_TIMERS + +/** Function prototype for a timeout callback function. Register such a function + * using sys_timeout(). + * + * @param arg Additional argument to pass to the function - set up by sys_timeout() + */ +typedef void (* sys_timeout_handler)(void *arg); + +struct sys_timeo { + struct sys_timeo *next; + u32_t time; + sys_timeout_handler h; + void *arg; +#if LWIP_DEBUG_TIMERNAMES + const char* handler_name; +#endif /* LWIP_DEBUG_TIMERNAMES */ +}; + +void sys_timeouts_init(void); + +#if LWIP_DEBUG_TIMERNAMES +void sys_timeout_debug(u32_t msecs, sys_timeout_handler handler, void *arg, const char* handler_name); +#define sys_timeout(msecs, handler, arg) sys_timeout_debug(msecs, handler, arg, #handler) +#else /* LWIP_DEBUG_TIMERNAMES */ +void sys_timeout(u32_t msecs, sys_timeout_handler handler, void *arg); +#endif /* LWIP_DEBUG_TIMERNAMES */ + +void sys_untimeout(sys_timeout_handler handler, void *arg); +void sys_restart_timeouts(void); +#if NO_SYS +void sys_check_timeouts(void); +u32_t sys_timeouts_sleeptime(void); +#else /* NO_SYS */ +void sys_timeouts_mbox_fetch(sys_mbox_t *mbox, void **msg); +#endif /* NO_SYS */ + + +#endif /* LWIP_TIMERS */ + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_TIMEOUTS_H */ diff --git a/tools/sdk/lwip2/include/lwip/udp.h b/tools/sdk/lwip2/include/lwip/udp.h new file mode 100644 index 000000000..b92990739 --- /dev/null +++ b/tools/sdk/lwip2/include/lwip/udp.h @@ -0,0 +1,182 @@ +/** + * @file + * UDP API (to be used from TCPIP thread)\n + * See also @ref udp_raw + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_UDP_H +#define LWIP_HDR_UDP_H + +#include "lwip/opt.h" + +#if LWIP_UDP /* don't build if not configured for use in lwipopts.h */ + +#include "lwip/pbuf.h" +#include "lwip/netif.h" +#include "lwip/ip_addr.h" +#include "lwip/ip.h" +#include "lwip/ip6_addr.h" +#include "lwip/prot/udp.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define UDP_FLAGS_NOCHKSUM 0x01U +#define UDP_FLAGS_UDPLITE 0x02U +#define UDP_FLAGS_CONNECTED 0x04U +#define UDP_FLAGS_MULTICAST_LOOP 0x08U + +struct udp_pcb; + +/** Function prototype for udp pcb receive callback functions + * addr and port are in same byte order as in the pcb + * The callback is responsible for freeing the pbuf + * if it's not used any more. + * + * ATTENTION: Be aware that 'addr' might point into the pbuf 'p' so freeing this pbuf + * can make 'addr' invalid, too. + * + * @param arg user supplied argument (udp_pcb.recv_arg) + * @param pcb the udp_pcb which received data + * @param p the packet buffer that was received + * @param addr the remote IP address from which the packet was received + * @param port the remote port from which the packet was received + */ +typedef void (*udp_recv_fn)(void *arg, struct udp_pcb *pcb, struct pbuf *p, + const ip_addr_t *addr, u16_t port); + +/** the UDP protocol control block */ +struct udp_pcb { +/** Common members of all PCB types */ + IP_PCB; + +/* Protocol specific PCB members */ + + struct udp_pcb *next; + + u8_t flags; + /** ports are in host byte order */ + u16_t local_port, remote_port; + +#if LWIP_MULTICAST_TX_OPTIONS + /** outgoing network interface for multicast packets */ + ip_addr_t multicast_ip; + /** TTL for outgoing multicast packets */ + u8_t mcast_ttl; +#endif /* LWIP_MULTICAST_TX_OPTIONS */ + +#if LWIP_UDPLITE + /** used for UDP_LITE only */ + u16_t chksum_len_rx, chksum_len_tx; +#endif /* LWIP_UDPLITE */ + + /** receive callback function */ + udp_recv_fn recv; + /** user-supplied argument for the recv callback */ + void *recv_arg; +}; +/* udp_pcbs export for external reference (e.g. SNMP agent) */ +extern struct udp_pcb *udp_pcbs; + +/* The following functions is the application layer interface to the + UDP code. */ +struct udp_pcb * udp_new (void); +struct udp_pcb * udp_new_ip_type(u8_t type); +void udp_remove (struct udp_pcb *pcb); +err_t udp_bind (struct udp_pcb *pcb, const ip_addr_t *ipaddr, + u16_t port); +err_t udp_connect (struct udp_pcb *pcb, const ip_addr_t *ipaddr, + u16_t port); +void udp_disconnect (struct udp_pcb *pcb); +void udp_recv (struct udp_pcb *pcb, udp_recv_fn recv, + void *recv_arg); +err_t udp_sendto_if (struct udp_pcb *pcb, struct pbuf *p, + const ip_addr_t *dst_ip, u16_t dst_port, + struct netif *netif); +err_t udp_sendto_if_src(struct udp_pcb *pcb, struct pbuf *p, + const ip_addr_t *dst_ip, u16_t dst_port, + struct netif *netif, const ip_addr_t *src_ip); +err_t udp_sendto (struct udp_pcb *pcb, struct pbuf *p, + const ip_addr_t *dst_ip, u16_t dst_port); +err_t udp_send (struct udp_pcb *pcb, struct pbuf *p); + +#if LWIP_CHECKSUM_ON_COPY && CHECKSUM_GEN_UDP +err_t udp_sendto_if_chksum(struct udp_pcb *pcb, struct pbuf *p, + const ip_addr_t *dst_ip, u16_t dst_port, + struct netif *netif, u8_t have_chksum, + u16_t chksum); +err_t udp_sendto_chksum(struct udp_pcb *pcb, struct pbuf *p, + const ip_addr_t *dst_ip, u16_t dst_port, + u8_t have_chksum, u16_t chksum); +err_t udp_send_chksum(struct udp_pcb *pcb, struct pbuf *p, + u8_t have_chksum, u16_t chksum); +err_t udp_sendto_if_src_chksum(struct udp_pcb *pcb, struct pbuf *p, + const ip_addr_t *dst_ip, u16_t dst_port, struct netif *netif, + u8_t have_chksum, u16_t chksum, const ip_addr_t *src_ip); +#endif /* LWIP_CHECKSUM_ON_COPY && CHECKSUM_GEN_UDP */ + +#define udp_flags(pcb) ((pcb)->flags) +#define udp_setflags(pcb, f) ((pcb)->flags = (f)) + +/* The following functions are the lower layer interface to UDP. */ +void udp_input (struct pbuf *p, struct netif *inp); + +void udp_init (void); + +/* for compatibility with older implementation */ +#define udp_new_ip6() udp_new_ip_type(IPADDR_TYPE_V6) + +#if LWIP_MULTICAST_TX_OPTIONS +#define udp_set_multicast_netif_addr(pcb, ip4addr) ip_addr_copy_from_ip4((pcb)->multicast_ip, *(ip4addr)) +#define udp_get_multicast_netif_addr(pcb) ip_2_ip4(&(pcb)->multicast_ip) +#define udp_set_multicast_ttl(pcb, value) do { (pcb)->mcast_ttl = value; } while(0) +#define udp_get_multicast_ttl(pcb) ((pcb)->mcast_ttl) +#endif /* LWIP_MULTICAST_TX_OPTIONS */ + +#if UDP_DEBUG +void udp_debug_print(struct udp_hdr *udphdr); +#else +#define udp_debug_print(udphdr) +#endif + +void udp_netif_ip_addr_changed(const ip_addr_t* old_addr, const ip_addr_t* new_addr); + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_UDP */ + +#endif /* LWIP_HDR_UDP_H */ diff --git a/tools/sdk/lwip2/include/lwipopts.h b/tools/sdk/lwip2/include/lwipopts.h new file mode 100644 index 000000000..a9c1c2a5d --- /dev/null +++ b/tools/sdk/lwip2/include/lwipopts.h @@ -0,0 +1,3002 @@ +// this file will be overwritten upon lwip2 rebuild +#ifndef __CUSTOM_EXTRA_DEFINES__ +#define __CUSTOM_EXTRA_DEFINES__ + +#endif + +#ifndef MYLWIPOPTS_H +#define MYLWIPOPTS_H + +// opt.h version lwip-2.0.3 for esp8266 + +/** + * @file + * + * lwIP Options Configuration + */ + +/* + * Copyright (c) 2001-2004 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ + +/* + * NOTE: || defined __DOXYGEN__ is a workaround for doxygen bug - + * without this, doxygen does not see the actual #define + */ + +/* + * Include user defined options first. Anything not defined in these files + * will be set to standard values. Override anything you don't like! + */ +//#include "lwip/debug.h" // done at end of this file +#include "gluedebug.h" + +/** + * @defgroup lwip_opts Options (lwipopts.h) + * @ingroup lwip + * + * @defgroup lwip_opts_debug Debugging + * @ingroup lwip_opts + * + * @defgroup lwip_opts_infrastructure Infrastructure + * @ingroup lwip_opts + * + * @defgroup lwip_opts_callback Callback-style APIs + * @ingroup lwip_opts + * + * @defgroup lwip_opts_threadsafe_apis Thread-safe APIs + * @ingroup lwip_opts + */ + + /* + ------------------------------------ + -------------- NO SYS -------------- + ------------------------------------ +*/ +/** + * @defgroup lwip_opts_nosys NO_SYS + * @ingroup lwip_opts_infrastructure + * @{ + */ +/** + * NO_SYS==1: Use lwIP without OS-awareness (no thread, semaphores, mutexes or + * mboxes). This means threaded APIs cannot be used (socket, netconn, + * i.e. everything in the 'api' folder), only the callback-style raw API is + * available (and you have to watch out for yourself that you don't access + * lwIP functions/structures from more than one context at a time!) + */ +#if !defined NO_SYS || defined __DOXYGEN__ +#define NO_SYS 1 +#endif +/** + * @} + */ + +/** + * @defgroup lwip_opts_timers Timers + * @ingroup lwip_opts_infrastructure + * @{ + */ +/** + * LWIP_TIMERS==0: Drop support for sys_timeout and lwip-internal cyclic timers. + * (the array of lwip-internal cyclic timers is still provided) + * (check NO_SYS_NO_TIMERS for compatibility to old versions) + */ +#if !defined LWIP_TIMERS || defined __DOXYGEN__ +#ifdef NO_SYS_NO_TIMERS +#define LWIP_TIMERS (!NO_SYS || (NO_SYS && !NO_SYS_NO_TIMERS)) +#else +#define LWIP_TIMERS 1 +#endif +#endif + +/** + * LWIP_TIMERS_CUSTOM==1: Provide your own timer implementation. + * Function prototypes in timeouts.h and the array of lwip-internal cyclic timers + * are still included, but the implementation is not. The following functions + * will be required: sys_timeouts_init(), sys_timeout(), sys_untimeout(), + * sys_timeouts_mbox_fetch() + */ +#if !defined LWIP_TIMERS_CUSTOM || defined __DOXYGEN__ +#define LWIP_TIMERS_CUSTOM 0 +#endif +/** + * @} + */ + +/** + * @defgroup lwip_opts_memcpy memcpy + * @ingroup lwip_opts_infrastructure + * @{ + */ +/** + * MEMCPY: override this if you have a faster implementation at hand than the + * one included in your C library + */ +#if !defined MEMCPY || defined __DOXYGEN__ +#define MEMCPY(dst,src,len) os_memcpy(dst,src,len) +#endif + +/** + * SMEMCPY: override this with care! Some compilers (e.g. gcc) can inline a + * call to memcpy() if the length is known at compile time and is small. + */ +#if !defined SMEMCPY || defined __DOXYGEN__ +#define SMEMCPY(dst,src,len) os_memcpy(dst,src,len) +#endif + +/** + * MEMMOVE: override this if you have a faster implementation at hand than the + * one included in your C library. lwIP currently uses MEMMOVE only when IPv6 + * fragmentation support is enabled. + */ +#if !defined MEMMOVE || defined __DOXYGEN__ +#define MEMMOVE(dst,src,len) os_memmove(dst,src,len) +#endif +/** + * @} + */ + +/* + ------------------------------------ + ----------- Core locking ----------- + ------------------------------------ +*/ +/** + * @defgroup lwip_opts_lock Core locking and MPU + * @ingroup lwip_opts_infrastructure + * @{ + */ +/** + * LWIP_MPU_COMPATIBLE: enables special memory management mechanism + * which makes lwip able to work on MPU (Memory Protection Unit) system + * by not passing stack-pointers to other threads + * (this decreases performance as memory is allocated from pools instead + * of keeping it on the stack) + */ +#if !defined LWIP_MPU_COMPATIBLE || defined __DOXYGEN__ +#define LWIP_MPU_COMPATIBLE 0 +#endif + +/** + * LWIP_TCPIP_CORE_LOCKING + * Creates a global mutex that is held during TCPIP thread operations. + * Can be locked by client code to perform lwIP operations without changing + * into TCPIP thread using callbacks. See LOCK_TCPIP_CORE() and + * UNLOCK_TCPIP_CORE(). + * Your system should provide mutexes supporting priority inversion to use this. + */ +#if !defined LWIP_TCPIP_CORE_LOCKING || defined __DOXYGEN__ +#define LWIP_TCPIP_CORE_LOCKING 0 +#endif + +/** + * LWIP_TCPIP_CORE_LOCKING_INPUT: when LWIP_TCPIP_CORE_LOCKING is enabled, + * this lets tcpip_input() grab the mutex for input packets as well, + * instead of allocating a message and passing it to tcpip_thread. + * + * ATTENTION: this does not work when tcpip_input() is called from + * interrupt context! + */ +#if !defined LWIP_TCPIP_CORE_LOCKING_INPUT || defined __DOXYGEN__ +#define LWIP_TCPIP_CORE_LOCKING_INPUT 0 +#endif + +/** + * SYS_LIGHTWEIGHT_PROT==1: enable inter-task protection (and task-vs-interrupt + * protection) for certain critical regions during buffer allocation, deallocation + * and memory allocation and deallocation. + * ATTENTION: This is required when using lwIP from more than one context! If + * you disable this, you must be sure what you are doing! + */ +#if !defined SYS_LIGHTWEIGHT_PROT || defined __DOXYGEN__ +#define SYS_LIGHTWEIGHT_PROT 1 +#endif +/** + * @} + */ + +/* + ------------------------------------ + ---------- Memory options ---------- + ------------------------------------ +*/ +/** + * @defgroup lwip_opts_mem Heap and memory pools + * @ingroup lwip_opts_infrastructure + * @{ + */ +/** + * MEM_LIBC_MALLOC==1: Use malloc/free/realloc provided by your C-library + * instead of the lwip internal allocator. Can save code size if you + * already use it. + */ +#if !defined MEM_LIBC_MALLOC || defined __DOXYGEN__ +#define MEM_LIBC_MALLOC 1 +#endif + +/** + * MEMP_MEM_MALLOC==1: Use mem_malloc/mem_free instead of the lwip pool allocator. + * Especially useful with MEM_LIBC_MALLOC but handle with care regarding execution + * speed (heap alloc can be much slower than pool alloc) and usage from interrupts + * (especially if your netif driver allocates PBUF_POOL pbufs for received frames + * from interrupt)! + * ATTENTION: Currently, this uses the heap for ALL pools (also for private pools, + * not only for internal pools defined in memp_std.h)! + */ +#if !defined MEMP_MEM_MALLOC || defined __DOXYGEN__ +#define MEMP_MEM_MALLOC 1 +#endif + +/** + * MEM_ALIGNMENT: should be set to the alignment of the CPU + * 4 byte alignment -> \#define MEM_ALIGNMENT 4 + * 2 byte alignment -> \#define MEM_ALIGNMENT 2 + */ +#if !defined MEM_ALIGNMENT || defined __DOXYGEN__ +#define MEM_ALIGNMENT 4 +#endif + +/** + * MEM_SIZE: the size of the heap memory. If the application will send + * a lot of data that needs to be copied, this should be set high. + */ +#if !defined MEM_SIZE || defined __DOXYGEN__ +#define MEM_SIZE 16000 +#endif + +/** + * MEMP_OVERFLOW_CHECK: memp overflow protection reserves a configurable + * amount of bytes before and after each memp element in every pool and fills + * it with a prominent default value. + * MEMP_OVERFLOW_CHECK == 0 no checking + * MEMP_OVERFLOW_CHECK == 1 checks each element when it is freed + * MEMP_OVERFLOW_CHECK >= 2 checks each element in every pool every time + * memp_malloc() or memp_free() is called (useful but slow!) + */ +#if !defined MEMP_OVERFLOW_CHECK || defined __DOXYGEN__ +#define MEMP_OVERFLOW_CHECK 0 +#endif + +/** + * MEMP_SANITY_CHECK==1: run a sanity check after each memp_free() to make + * sure that there are no cycles in the linked lists. + */ +#if !defined MEMP_SANITY_CHECK || defined __DOXYGEN__ +#define MEMP_SANITY_CHECK 0 +#endif + +/** + * MEM_USE_POOLS==1: Use an alternative to malloc() by allocating from a set + * of memory pools of various sizes. When mem_malloc is called, an element of + * the smallest pool that can provide the length needed is returned. + * To use this, MEMP_USE_CUSTOM_POOLS also has to be enabled. + */ +#if !defined MEM_USE_POOLS || defined __DOXYGEN__ +#define MEM_USE_POOLS 0 +#endif + +/** + * MEM_USE_POOLS_TRY_BIGGER_POOL==1: if one malloc-pool is empty, try the next + * bigger pool - WARNING: THIS MIGHT WASTE MEMORY but it can make a system more + * reliable. */ +#if !defined MEM_USE_POOLS_TRY_BIGGER_POOL || defined __DOXYGEN__ +#define MEM_USE_POOLS_TRY_BIGGER_POOL 0 +#endif + +/** + * MEMP_USE_CUSTOM_POOLS==1: whether to include a user file lwippools.h + * that defines additional pools beyond the "standard" ones required + * by lwIP. If you set this to 1, you must have lwippools.h in your + * include path somewhere. + */ +#if !defined MEMP_USE_CUSTOM_POOLS || defined __DOXYGEN__ +#define MEMP_USE_CUSTOM_POOLS 0 +#endif + +/** + * Set this to 1 if you want to free PBUF_RAM pbufs (or call mem_free()) from + * interrupt context (or another context that doesn't allow waiting for a + * semaphore). + * If set to 1, mem_malloc will be protected by a semaphore and SYS_ARCH_PROTECT, + * while mem_free will only use SYS_ARCH_PROTECT. mem_malloc SYS_ARCH_UNPROTECTs + * with each loop so that mem_free can run. + * + * ATTENTION: As you can see from the above description, this leads to dis-/ + * enabling interrupts often, which can be slow! Also, on low memory, mem_malloc + * can need longer. + * + * If you don't want that, at least for NO_SYS=0, you can still use the following + * functions to enqueue a deallocation call which then runs in the tcpip_thread + * context: + * - pbuf_free_callback(p); + * - mem_free_callback(m); + */ +#if !defined LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT || defined __DOXYGEN__ +#define LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT 0 +#endif +/** + * @} + */ + +/* + ------------------------------------------------ + ---------- Internal Memory Pool Sizes ---------- + ------------------------------------------------ +*/ +/** + * @defgroup lwip_opts_memp Internal memory pools + * @ingroup lwip_opts_infrastructure + * @{ + */ +/** + * MEMP_NUM_PBUF: the number of memp struct pbufs (used for PBUF_ROM and PBUF_REF). + * If the application sends a lot of data out of ROM (or other static memory), + * this should be set high. + */ +#if !defined MEMP_NUM_PBUF || defined __DOXYGEN__ +#define MEMP_NUM_PBUF 10 +#endif + +/** + * MEMP_NUM_RAW_PCB: Number of raw connection PCBs + * (requires the LWIP_RAW option) + */ +#if !defined MEMP_NUM_RAW_PCB || defined __DOXYGEN__ +#define MEMP_NUM_RAW_PCB 4 +#endif + +/** + * MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One + * per active UDP "connection". + * (requires the LWIP_UDP option) + */ +#if !defined MEMP_NUM_UDP_PCB || defined __DOXYGEN__ +#define MEMP_NUM_UDP_PCB 4 +#endif + +/** + * MEMP_NUM_TCP_PCB: the number of simultaneously active TCP connections. + * (requires the LWIP_TCP option) + */ +#if !defined MEMP_NUM_TCP_PCB || defined __DOXYGEN__ +//#define MEMP_NUM_TCP_PCB (*(volatile uint32*)0x600011FC) // 5 +#define MEMP_NUM_TCP_PCB 5 +#endif + +/** + * MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP connections. + * (requires the LWIP_TCP option) + */ +#if !defined MEMP_NUM_TCP_PCB_LISTEN || defined __DOXYGEN__ +#define MEMP_NUM_TCP_PCB_LISTEN 2 +#endif + +/** + * MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP segments. + * (requires the LWIP_TCP option) + */ +#if !defined MEMP_NUM_TCP_SEG || defined __DOXYGEN__ +#define MEMP_NUM_TCP_SEG 10 // 5 +#endif + +/** + * MEMP_NUM_REASSDATA: the number of IP packets simultaneously queued for + * reassembly (whole packets, not fragments!) + */ +#if !defined MEMP_NUM_REASSDATA || defined __DOXYGEN__ +#define MEMP_NUM_REASSDATA 0 // 5 +#endif + +/** + * MEMP_NUM_FRAG_PBUF: the number of IP fragments simultaneously sent + * (fragments, not whole packets!). + * This is only used with LWIP_NETIF_TX_SINGLE_PBUF==0 and only has to be > 1 + * with DMA-enabled MACs where the packet is not yet sent when netif->output + * returns. + */ +#if !defined MEMP_NUM_FRAG_PBUF || defined __DOXYGEN__ +#define MEMP_NUM_FRAG_PBUF 0 // 15 +#endif + +/** + * MEMP_NUM_ARP_QUEUE: the number of simultaneously queued outgoing + * packets (pbufs) that are waiting for an ARP request (to resolve + * their destination address) to finish. + * (requires the ARP_QUEUEING option) + */ +#if !defined MEMP_NUM_ARP_QUEUE || defined __DOXYGEN__ +#define MEMP_NUM_ARP_QUEUE 10 // 30 +#endif + +/** + * MEMP_NUM_IGMP_GROUP: The number of multicast groups whose network interfaces + * can be members at the same time (one per netif - allsystems group -, plus one + * per netif membership). + * (requires the LWIP_IGMP option) + */ +#if !defined MEMP_NUM_IGMP_GROUP || defined __DOXYGEN__ +#define MEMP_NUM_IGMP_GROUP 8 +#endif + +/** + * MEMP_NUM_SYS_TIMEOUT: the number of simultaneously active timeouts. + * The default number of timeouts is calculated here for all enabled modules. + * The formula expects settings to be either '0' or '1'. + */ +#if !defined MEMP_NUM_SYS_TIMEOUT || defined __DOXYGEN__ +#define MEMP_NUM_SYS_TIMEOUT (LWIP_TCP + IP_REASSEMBLY + LWIP_ARP + (2*LWIP_DHCP) + LWIP_AUTOIP + LWIP_IGMP + LWIP_DNS + (PPP_SUPPORT*6*MEMP_NUM_PPP_PCB) + (LWIP_IPV6 ? (1 + LWIP_IPV6_REASS + LWIP_IPV6_MLD) : 0)) +#endif + +/** + * MEMP_NUM_NETBUF: the number of struct netbufs. + * (only needed if you use the sequential API, like api_lib.c) + */ +#if !defined MEMP_NUM_NETBUF || defined __DOXYGEN__ +#define MEMP_NUM_NETBUF 0 // 2 +#endif + +/** + * MEMP_NUM_NETCONN: the number of struct netconns. + * (only needed if you use the sequential API, like api_lib.c) + */ +#if !defined MEMP_NUM_NETCONN || defined __DOXYGEN__ +#define MEMP_NUM_NETCONN 0 // 4 +#endif + +/** + * MEMP_NUM_TCPIP_MSG_API: the number of struct tcpip_msg, which are used + * for callback/timeout API communication. + * (only needed if you use tcpip.c) + */ +#if !defined MEMP_NUM_TCPIP_MSG_API || defined __DOXYGEN__ +#define MEMP_NUM_TCPIP_MSG_API 4 // 8 +#endif + +/** + * MEMP_NUM_TCPIP_MSG_INPKT: the number of struct tcpip_msg, which are used + * for incoming packets. + * (only needed if you use tcpip.c) + */ +#if !defined MEMP_NUM_TCPIP_MSG_INPKT || defined __DOXYGEN__ +#define MEMP_NUM_TCPIP_MSG_INPKT 4 // 8 +#endif + +/** + * MEMP_NUM_NETDB: the number of concurrently running lwip_addrinfo() calls + * (before freeing the corresponding memory using lwip_freeaddrinfo()). + */ +#if !defined MEMP_NUM_NETDB || defined __DOXYGEN__ +#define MEMP_NUM_NETDB 1 +#endif + +/** + * MEMP_NUM_LOCALHOSTLIST: the number of host entries in the local host list + * if DNS_LOCAL_HOSTLIST_IS_DYNAMIC==1. + */ +#if !defined MEMP_NUM_LOCALHOSTLIST || defined __DOXYGEN__ +#define MEMP_NUM_LOCALHOSTLIST 0 // 1 +#endif + +/** + * PBUF_POOL_SIZE: the number of buffers in the pbuf pool. + */ +#if !defined PBUF_POOL_SIZE || defined __DOXYGEN__ +#define PBUF_POOL_SIZE 10 // 16 +#endif + +/** MEMP_NUM_API_MSG: the number of concurrently active calls to various + * socket, netconn, and tcpip functions + */ +#if !defined MEMP_NUM_API_MSG || defined __DOXYGEN__ +#define MEMP_NUM_API_MSG MEMP_NUM_TCPIP_MSG_API +#endif + +/** MEMP_NUM_DNS_API_MSG: the number of concurrently active calls to netconn_gethostbyname + */ +#if !defined MEMP_NUM_DNS_API_MSG || defined __DOXYGEN__ +#define MEMP_NUM_DNS_API_MSG MEMP_NUM_TCPIP_MSG_API +#endif + +/** MEMP_NUM_SOCKET_SETGETSOCKOPT_DATA: the number of concurrently active calls + * to getsockopt/setsockopt + */ +#if !defined MEMP_NUM_SOCKET_SETGETSOCKOPT_DATA || defined __DOXYGEN__ +#define MEMP_NUM_SOCKET_SETGETSOCKOPT_DATA MEMP_NUM_TCPIP_MSG_API +#endif + +/** MEMP_NUM_NETIFAPI_MSG: the number of concurrently active calls to the + * netifapi functions + */ +#if !defined MEMP_NUM_NETIFAPI_MSG || defined __DOXYGEN__ +#define MEMP_NUM_NETIFAPI_MSG MEMP_NUM_TCPIP_MSG_API +#endif +/** + * @} + */ + +/* + --------------------------------- + ---------- ARP options ---------- + --------------------------------- +*/ +/** + * @defgroup lwip_opts_arp ARP + * @ingroup lwip_opts_ipv4 + * @{ + */ +/** + * LWIP_ARP==1: Enable ARP functionality. + */ +#if !defined LWIP_ARP || defined __DOXYGEN__ +#define LWIP_ARP 1 +#endif + +/** + * ARP_TABLE_SIZE: Number of active MAC-IP address pairs cached. + */ +#if !defined ARP_TABLE_SIZE || defined __DOXYGEN__ +#define ARP_TABLE_SIZE 10 +#endif + +/** the time an ARP entry stays valid after its last update, + * for ARP_TMR_INTERVAL = 1000, this is + * (60 * 5) seconds = 5 minutes. + */ +#if !defined ARP_MAXAGE || defined __DOXYGEN__ +#define ARP_MAXAGE 300 +#endif + +/** + * ARP_QUEUEING==1: Multiple outgoing packets are queued during hardware address + * resolution. By default, only the most recent packet is queued per IP address. + * This is sufficient for most protocols and mainly reduces TCP connection + * startup time. Set this to 1 if you know your application sends more than one + * packet in a row to an IP address that is not in the ARP cache. + */ +#if !defined ARP_QUEUEING || defined __DOXYGEN__ +#define ARP_QUEUEING 1 // 0 +#endif + +/** The maximum number of packets which may be queued for each + * unresolved address by other network layers. Defaults to 3, 0 means disabled. + * Old packets are dropped, new packets are queued. + */ +#if !defined ARP_QUEUE_LEN || defined __DOXYGEN__ +#define ARP_QUEUE_LEN 3 // 0 // 3 +#endif + +/** + * ETHARP_SUPPORT_VLAN==1: support receiving and sending ethernet packets with + * VLAN header. See the description of LWIP_HOOK_VLAN_CHECK and + * LWIP_HOOK_VLAN_SET hooks to check/set VLAN headers. + * Additionally, you can define ETHARP_VLAN_CHECK to an u16_t VLAN ID to check. + * If ETHARP_VLAN_CHECK is defined, only VLAN-traffic for this VLAN is accepted. + * If ETHARP_VLAN_CHECK is not defined, all traffic is accepted. + * Alternatively, define a function/define ETHARP_VLAN_CHECK_FN(eth_hdr, vlan) + * that returns 1 to accept a packet or 0 to drop a packet. + */ +#if !defined ETHARP_SUPPORT_VLAN || defined __DOXYGEN__ +#define ETHARP_SUPPORT_VLAN 0 +#endif + +/** LWIP_ETHERNET==1: enable ethernet support even though ARP might be disabled + */ +#if !defined LWIP_ETHERNET || defined __DOXYGEN__ +#define LWIP_ETHERNET LWIP_ARP +#endif + +/** ETH_PAD_SIZE: number of bytes added before the ethernet header to ensure + * alignment of payload after that header. Since the header is 14 bytes long, + * without this padding e.g. addresses in the IP header will not be aligned + * on a 32-bit boundary, so setting this to 2 can speed up 32-bit-platforms. + */ +#if !defined ETH_PAD_SIZE || defined __DOXYGEN__ +#define ETH_PAD_SIZE 0 +#endif + +/** ETHARP_SUPPORT_STATIC_ENTRIES==1: enable code to support static ARP table + * entries (using etharp_add_static_entry/etharp_remove_static_entry). + */ +#if !defined ETHARP_SUPPORT_STATIC_ENTRIES || defined __DOXYGEN__ +#define ETHARP_SUPPORT_STATIC_ENTRIES 0 +#endif + +/** ETHARP_TABLE_MATCH_NETIF==1: Match netif for ARP table entries. + * If disabled, duplicate IP address on multiple netifs are not supported + * (but this should only occur for AutoIP). + */ +#if !defined ETHARP_TABLE_MATCH_NETIF || defined __DOXYGEN__ +#define ETHARP_TABLE_MATCH_NETIF !LWIP_SINGLE_NETIF +#endif +/** + * @} + */ + +/* + -------------------------------- + ---------- IP options ---------- + -------------------------------- +*/ +/** + * @defgroup lwip_opts_ipv4 IPv4 + * @ingroup lwip_opts + * @{ + */ +/** + * LWIP_IPV4==1: Enable IPv4 + */ +#if !defined LWIP_IPV4 || defined __DOXYGEN__ +#define LWIP_IPV4 1 +#endif + +/** + * IP_FORWARD==1: Enables the ability to forward IP packets across network + * interfaces. If you are going to run lwIP on a device with only one network + * interface, define this to 0. + */ +#if !defined IP_FORWARD || defined __DOXYGEN__ +#define IP_FORWARD 0 +#endif + +/** + * IP_REASSEMBLY==1: Reassemble incoming fragmented IP packets. Note that + * this option does not affect outgoing packet sizes, which can be controlled + * via IP_FRAG. + */ +#if !defined IP_REASSEMBLY || defined __DOXYGEN__ +#define IP_REASSEMBLY 0 // 1 +#endif + +/** + * IP_FRAG==1: Fragment outgoing IP packets if their size exceeds MTU. Note + * that this option does not affect incoming packet sizes, which can be + * controlled via IP_REASSEMBLY. + */ +#if !defined IP_FRAG || defined __DOXYGEN__ +#define IP_FRAG 0 // 1 +#endif + +#if !LWIP_IPV4 +/* disable IPv4 extensions when IPv4 is disabled */ +#undef IP_FORWARD +#define IP_FORWARD 0 +#undef IP_REASSEMBLY +#define IP_REASSEMBLY 0 +#undef IP_FRAG +#define IP_FRAG 0 +#endif /* !LWIP_IPV4 */ + +/** + * IP_OPTIONS_ALLOWED: Defines the behavior for IP options. + * IP_OPTIONS_ALLOWED==0: All packets with IP options are dropped. + * IP_OPTIONS_ALLOWED==1: IP options are allowed (but not parsed). + */ +#if !defined IP_OPTIONS_ALLOWED || defined __DOXYGEN__ +#define IP_OPTIONS_ALLOWED 1 +#endif + +/** + * IP_REASS_MAXAGE: Maximum time (in multiples of IP_TMR_INTERVAL - so seconds, normally) + * a fragmented IP packet waits for all fragments to arrive. If not all fragments arrived + * in this time, the whole packet is discarded. + */ +#if !defined IP_REASS_MAXAGE || defined __DOXYGEN__ +#define IP_REASS_MAXAGE 3 +#endif + +/** + * IP_REASS_MAX_PBUFS: Total maximum amount of pbufs waiting to be reassembled. + * Since the received pbufs are enqueued, be sure to configure + * PBUF_POOL_SIZE > IP_REASS_MAX_PBUFS so that the stack is still able to receive + * packets even if the maximum amount of fragments is enqueued for reassembly! + */ +#if !defined IP_REASS_MAX_PBUFS || defined __DOXYGEN__ +#define IP_REASS_MAX_PBUFS 10 +#endif + +/** + * IP_DEFAULT_TTL: Default value for Time-To-Live used by transport layers. + */ +#if !defined IP_DEFAULT_TTL || defined __DOXYGEN__ +#define IP_DEFAULT_TTL 255 +#endif + +/** + * IP_SOF_BROADCAST=1: Use the SOF_BROADCAST field to enable broadcast + * filter per pcb on udp and raw send operations. To enable broadcast filter + * on recv operations, you also have to set IP_SOF_BROADCAST_RECV=1. + */ +#if !defined IP_SOF_BROADCAST || defined __DOXYGEN__ +#define IP_SOF_BROADCAST 0 +#endif + +/** + * IP_SOF_BROADCAST_RECV (requires IP_SOF_BROADCAST=1) enable the broadcast + * filter on recv operations. + */ +#if !defined IP_SOF_BROADCAST_RECV || defined __DOXYGEN__ +#define IP_SOF_BROADCAST_RECV 0 +#endif + +/** + * IP_FORWARD_ALLOW_TX_ON_RX_NETIF==1: allow ip_forward() to send packets back + * out on the netif where it was received. This should only be used for + * wireless networks. + * ATTENTION: When this is 1, make sure your netif driver correctly marks incoming + * link-layer-broadcast/multicast packets as such using the corresponding pbuf flags! + */ +#if !defined IP_FORWARD_ALLOW_TX_ON_RX_NETIF || defined __DOXYGEN__ +#define IP_FORWARD_ALLOW_TX_ON_RX_NETIF 0 +#endif + +/** + * LWIP_RANDOMIZE_INITIAL_LOCAL_PORTS==1: randomize the local port for the first + * local TCP/UDP pcb (default==0). This can prevent creating predictable port + * numbers after booting a device. + */ +#if !defined LWIP_RANDOMIZE_INITIAL_LOCAL_PORTS || defined __DOXYGEN__ +#define LWIP_RANDOMIZE_INITIAL_LOCAL_PORTS 0 +#endif +/** + * @} + */ + +/* + ---------------------------------- + ---------- ICMP options ---------- + ---------------------------------- +*/ +/** + * @defgroup lwip_opts_icmp ICMP + * @ingroup lwip_opts_ipv4 + * @{ + */ +/** + * LWIP_ICMP==1: Enable ICMP module inside the IP stack. + * Be careful, disable that make your product non-compliant to RFC1122 + */ +#if !defined LWIP_ICMP || defined __DOXYGEN__ +#define LWIP_ICMP 1 +#endif + +/** + * ICMP_TTL: Default value for Time-To-Live used by ICMP packets. + */ +#if !defined ICMP_TTL || defined __DOXYGEN__ +#define ICMP_TTL (IP_DEFAULT_TTL) +#endif + +/** + * LWIP_BROADCAST_PING==1: respond to broadcast pings (default is unicast only) + */ +#if !defined LWIP_BROADCAST_PING || defined __DOXYGEN__ +#define LWIP_BROADCAST_PING 0 +#endif + +/** + * LWIP_MULTICAST_PING==1: respond to multicast pings (default is unicast only) + */ +#if !defined LWIP_MULTICAST_PING || defined __DOXYGEN__ +#define LWIP_MULTICAST_PING 0 +#endif +/** + * @} + */ + +/* + --------------------------------- + ---------- RAW options ---------- + --------------------------------- +*/ +/** + * @defgroup lwip_opts_raw RAW + * @ingroup lwip_opts_callback + * @{ + */ +/** + * LWIP_RAW==1: Enable application layer to hook into the IP layer itself. + */ +#if !defined LWIP_RAW || defined __DOXYGEN__ +#define LWIP_RAW 1 // 0 +#endif + +/** + * LWIP_RAW==1: Enable application layer to hook into the IP layer itself. + */ +#if !defined RAW_TTL || defined __DOXYGEN__ +#define RAW_TTL (IP_DEFAULT_TTL) +#endif +/** + * @} + */ + +/* + ---------------------------------- + ---------- DHCP options ---------- + ---------------------------------- +*/ +/** + * @defgroup lwip_opts_dhcp DHCP + * @ingroup lwip_opts_ipv4 + * @{ + */ +/** + * LWIP_DHCP==1: Enable DHCP module. + */ +#if !defined LWIP_DHCP || defined __DOXYGEN__ +#define LWIP_DHCP 1 // 0 +#endif +#if !LWIP_IPV4 +/* disable DHCP when IPv4 is disabled */ +#undef LWIP_DHCP +#define LWIP_DHCP 0 +#endif /* !LWIP_IPV4 */ + +/** + * DHCP_DOES_ARP_CHECK==1: Do an ARP check on the offered address. + */ +#if !defined DHCP_DOES_ARP_CHECK || defined __DOXYGEN__ +#define DHCP_DOES_ARP_CHECK 0 // ((LWIP_DHCP) && (LWIP_ARP)) +#endif + +/** + * LWIP_DHCP_CHECK_LINK_UP==1: dhcp_start() only really starts if the netif has + * NETIF_FLAG_LINK_UP set in its flags. As this is only an optimization and + * netif drivers might not set this flag, the default is off. If enabled, + * netif_set_link_up() must be called to continue dhcp starting. + */ +#if !defined LWIP_DHCP_CHECK_LINK_UP +#define LWIP_DHCP_CHECK_LINK_UP 0 +#endif + +/** + * LWIP_DHCP_BOOTP_FILE==1: Store offered_si_addr and boot_file_name. + */ +#if !defined LWIP_DHCP_BOOTP_FILE || defined __DOXYGEN__ +#define LWIP_DHCP_BOOTP_FILE 0 +#endif + +/** + * LWIP_DHCP_GETS_NTP==1: Request NTP servers with discover/select. For each + * response packet, an callback is called, which has to be provided by the port: + * void dhcp_set_ntp_servers(u8_t num_ntp_servers, ip_addr_t* ntp_server_addrs); +*/ +#if !defined LWIP_DHCP_GET_NTP_SRV || defined __DOXYGEN__ +#define LWIP_DHCP_GET_NTP_SRV 1 +#endif + +/** + * The maximum of NTP servers requested + */ +#if !defined LWIP_DHCP_MAX_NTP_SERVERS || defined __DOXYGEN__ +#define LWIP_DHCP_MAX_NTP_SERVERS 1 +#endif + +/** + * LWIP_DHCP_MAX_DNS_SERVERS > 0: Request DNS servers with discover/select. + * DHCP servers received in the response are passed to DNS via @ref dns_setserver() + * (up to the maximum limit defined here). + */ +#if !defined LWIP_DHCP_MAX_DNS_SERVERS || defined __DOXYGEN__ +#define LWIP_DHCP_MAX_DNS_SERVERS DNS_MAX_SERVERS +#endif +/** + * @} + */ + +/* + ------------------------------------ + ---------- AUTOIP options ---------- + ------------------------------------ +*/ +/** + * @defgroup lwip_opts_autoip AUTOIP + * @ingroup lwip_opts_ipv4 + * @{ + */ +/** + * LWIP_AUTOIP==1: Enable AUTOIP module. + */ +#if !defined LWIP_AUTOIP || defined __DOXYGEN__ +#define LWIP_AUTOIP 0 +#endif +#if !LWIP_IPV4 +/* disable AUTOIP when IPv4 is disabled */ +#undef LWIP_AUTOIP +#define LWIP_AUTOIP 0 +#endif /* !LWIP_IPV4 */ + +/** + * LWIP_DHCP_AUTOIP_COOP==1: Allow DHCP and AUTOIP to be both enabled on + * the same interface at the same time. + */ +#if !defined LWIP_DHCP_AUTOIP_COOP || defined __DOXYGEN__ +#define LWIP_DHCP_AUTOIP_COOP 0 +#endif + +/** + * LWIP_DHCP_AUTOIP_COOP_TRIES: Set to the number of DHCP DISCOVER probes + * that should be sent before falling back on AUTOIP (the DHCP client keeps + * running in this case). This can be set as low as 1 to get an AutoIP address + * very quickly, but you should be prepared to handle a changing IP address + * when DHCP overrides AutoIP. + */ +#if !defined LWIP_DHCP_AUTOIP_COOP_TRIES || defined __DOXYGEN__ +#define LWIP_DHCP_AUTOIP_COOP_TRIES 9 +#endif +/** + * @} + */ + +/* + ---------------------------------- + ----- SNMP MIB2 support ----- + ---------------------------------- +*/ +/** + * @defgroup lwip_opts_mib2 SNMP MIB2 callbacks + * @ingroup lwip_opts_infrastructure + * @{ + */ +/** + * LWIP_MIB2_CALLBACKS==1: Turn on SNMP MIB2 callbacks. + * Turn this on to get callbacks needed to implement MIB2. + * Usually MIB2_STATS should be enabled, too. + */ +#if !defined LWIP_MIB2_CALLBACKS || defined __DOXYGEN__ +#define LWIP_MIB2_CALLBACKS 0 +#endif +/** + * @} + */ + +/* + ---------------------------------- + -------- Multicast options ------- + ---------------------------------- +*/ +/** + * @defgroup lwip_opts_multicast Multicast + * @ingroup lwip_opts_infrastructure + * @{ + */ +/** + * LWIP_MULTICAST_TX_OPTIONS==1: Enable multicast TX support like the socket options + * IP_MULTICAST_TTL/IP_MULTICAST_IF/IP_MULTICAST_LOOP, as well as (currently only) + * core support for the corresponding IPv6 options. + */ +#if !defined LWIP_MULTICAST_TX_OPTIONS || defined __DOXYGEN__ +#define LWIP_MULTICAST_TX_OPTIONS ((LWIP_IGMP || LWIP_IPV6_MLD) && (LWIP_UDP || LWIP_RAW)) +#endif +/** + * @} + */ + +/* + ---------------------------------- + ---------- IGMP options ---------- + ---------------------------------- +*/ +/** + * @defgroup lwip_opts_igmp IGMP + * @ingroup lwip_opts_ipv4 + * @{ + */ +/** + * LWIP_IGMP==1: Turn on IGMP module. + */ +#if !defined LWIP_IGMP || defined __DOXYGEN__ +#define LWIP_IGMP 1 +#endif +#if !LWIP_IPV4 +#undef LWIP_IGMP +#define LWIP_IGMP 0 +#endif +/** + * @} + */ + +/* + ---------------------------------- + ---------- DNS options ----------- + ---------------------------------- +*/ +/** + * @defgroup lwip_opts_dns DNS + * @ingroup lwip_opts_callback + * @{ + */ +/** + * LWIP_DNS==1: Turn on DNS module. UDP must be available for DNS + * transport. + */ +#if !defined LWIP_DNS || defined __DOXYGEN__ +#define LWIP_DNS 1 // 0 +#endif + +/** DNS maximum number of entries to maintain locally. */ +#if !defined DNS_TABLE_SIZE || defined __DOXYGEN__ +#define DNS_TABLE_SIZE 3 // 4 +#endif + +/** DNS maximum host name length supported in the name table. */ +#if !defined DNS_MAX_NAME_LENGTH || defined __DOXYGEN__ +#define DNS_MAX_NAME_LENGTH 48 // 256 +#endif + +/** The maximum of DNS servers + * The first server can be initialized automatically by defining + * DNS_SERVER_ADDRESS(ipaddr), where 'ipaddr' is an 'ip_addr_t*' + */ +#if !defined DNS_MAX_SERVERS || defined __DOXYGEN__ +#define DNS_MAX_SERVERS 2 +#endif + +/** DNS do a name checking between the query and the response. */ +#if !defined DNS_DOES_NAME_CHECK || defined __DOXYGEN__ +#define DNS_DOES_NAME_CHECK 1 +#endif + +/** LWIP_DNS_SECURE: controls the security level of the DNS implementation + * Use all DNS security features by default. + * This is overridable but should only be needed by very small targets + * or when using against non standard DNS servers. */ +#if !defined LWIP_DNS_SECURE || defined __DOXYGEN__ +#define LWIP_DNS_SECURE (LWIP_DNS_SECURE_RAND_XID | LWIP_DNS_SECURE_NO_MULTIPLE_OUTSTANDING | LWIP_DNS_SECURE_RAND_SRC_PORT) +#endif + +/* A list of DNS security features follows */ +#define LWIP_DNS_SECURE_RAND_XID 1 +#define LWIP_DNS_SECURE_NO_MULTIPLE_OUTSTANDING 2 +#define LWIP_DNS_SECURE_RAND_SRC_PORT 4 + +/** DNS_LOCAL_HOSTLIST: Implements a local host-to-address list. If enabled, you have to define an initializer: + * \#define DNS_LOCAL_HOSTLIST_INIT {DNS_LOCAL_HOSTLIST_ELEM("host_ip4", IPADDR4_INIT_BYTES(1,2,3,4)), \ + * DNS_LOCAL_HOSTLIST_ELEM("host_ip6", IPADDR6_INIT_HOST(123, 234, 345, 456)} + * + * Instead, you can also use an external function: + * \#define DNS_LOOKUP_LOCAL_EXTERN(x) extern err_t my_lookup_function(const char *name, ip_addr_t *addr, u8_t dns_addrtype) + * that looks up the IP address and returns ERR_OK if found (LWIP_DNS_ADDRTYPE_xxx is passed in dns_addrtype). + */ +#if !defined DNS_LOCAL_HOSTLIST || defined __DOXYGEN__ +#define DNS_LOCAL_HOSTLIST 0 +#endif /* DNS_LOCAL_HOSTLIST */ + +/** If this is turned on, the local host-list can be dynamically changed + * at runtime. */ +#if !defined DNS_LOCAL_HOSTLIST_IS_DYNAMIC || defined __DOXYGEN__ +#define DNS_LOCAL_HOSTLIST_IS_DYNAMIC 0 +#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */ + +/** Set this to 1 to enable querying ".local" names via mDNS + * using a One-Shot Multicast DNS Query */ +#if !defined LWIP_DNS_SUPPORT_MDNS_QUERIES || defined __DOXYGEN__ +#define LWIP_DNS_SUPPORT_MDNS_QUERIES 1 +#endif +/** + * @} + */ + +/* + --------------------------------- + ---------- UDP options ---------- + --------------------------------- +*/ +/** + * @defgroup lwip_opts_udp UDP + * @ingroup lwip_opts_callback + * @{ + */ +/** + * LWIP_UDP==1: Turn on UDP. + */ +#if !defined LWIP_UDP || defined __DOXYGEN__ +#define LWIP_UDP 1 +#endif + +/** + * LWIP_UDPLITE==1: Turn on UDP-Lite. (Requires LWIP_UDP) + */ +#if !defined LWIP_UDPLITE || defined __DOXYGEN__ +#define LWIP_UDPLITE 0 +#endif + +/** + * UDP_TTL: Default Time-To-Live value. + */ +#if !defined UDP_TTL || defined __DOXYGEN__ +#define UDP_TTL (IP_DEFAULT_TTL) +#endif + +/** + * LWIP_NETBUF_RECVINFO==1: append destination addr and port to every netbuf. + */ +#if !defined LWIP_NETBUF_RECVINFO || defined __DOXYGEN__ +#define LWIP_NETBUF_RECVINFO 0 +#endif +/** + * @} + */ + +/* + --------------------------------- + ---------- TCP options ---------- + --------------------------------- +*/ +/** + * @defgroup lwip_opts_tcp TCP + * @ingroup lwip_opts_callback + * @{ + */ +/** + * LWIP_TCP==1: Turn on TCP. + */ +#if !defined LWIP_TCP || defined __DOXYGEN__ +#define LWIP_TCP 1 +#endif + +/** + * TCP_TTL: Default Time-To-Live value. + */ +#if !defined TCP_TTL || defined __DOXYGEN__ +#define TCP_TTL (IP_DEFAULT_TTL) +#endif + +/** + * TCP_WND: The size of a TCP window. This must be at least + * (2 * TCP_MSS) for things to work well. + * ATTENTION: when using TCP_RCV_SCALE, TCP_WND is the total size + * with scaling applied. Maximum window value in the TCP header + * will be TCP_WND >> TCP_RCV_SCALE + */ +#if !defined TCP_WND || defined __DOXYGEN__ +//#define TCP_WND (*(volatile uint32*)0x600011F0) // (4 * TCP_MSS) +#define TCP_WND (4 * TCP_MSS) +#endif + +/** + * TCP_MAXRTX: Maximum number of retransmissions of data segments. + */ +#if !defined TCP_MAXRTX || defined __DOXYGEN__ +//#define TCP_MAXRTX (*(volatile uint32*)0x600011E8) // 12 +#define TCP_MAXRTX 12 +#endif + +/** + * TCP_SYNMAXRTX: Maximum number of retransmissions of SYN segments. + */ +#if !defined TCP_SYNMAXRTX || defined __DOXYGEN__ +//#define TCP_SYNMAXRTX (*(volatile uint32*)0x600011E4) // 6 +#define TCP_SYNMAXRTX 6 +#endif + +/** + * TCP_QUEUE_OOSEQ==1: TCP will queue segments that arrive out of order. + * Define to 0 if your device is low on memory. + */ +#if !defined TCP_QUEUE_OOSEQ || defined __DOXYGEN__ +#define TCP_QUEUE_OOSEQ 0 // (LWIP_TCP) +#endif + +/** + * TCP_MSS: TCP Maximum segment size. (default is 536, a conservative default, + * you might want to increase this.) + * For the receive side, this MSS is advertised to the remote side + * when opening a connection. For the transmit size, this MSS sets + * an upper limit on the MSS advertised by the remote host. + */ +#if !defined TCP_MSS || defined __DOXYGEN__ +#define TCP_MSS 536 +#endif + +/** + * TCP_CALCULATE_EFF_SEND_MSS: "The maximum size of a segment that TCP really + * sends, the 'effective send MSS,' MUST be the smaller of the send MSS (which + * reflects the available reassembly buffer size at the remote host) and the + * largest size permitted by the IP layer" (RFC 1122) + * Setting this to 1 enables code that checks TCP_MSS against the MTU of the + * netif used for a connection and limits the MSS if it would be too big otherwise. + */ +#if !defined TCP_CALCULATE_EFF_SEND_MSS || defined __DOXYGEN__ +#define TCP_CALCULATE_EFF_SEND_MSS 1 +#endif + + +/** + * TCP_SND_BUF: TCP sender buffer space (bytes). + * To achieve good performance, this should be at least 2 * TCP_MSS. + */ +#if !defined TCP_SND_BUF || defined __DOXYGEN__ +#define TCP_SND_BUF (2 * TCP_MSS) +#endif + +/** + * TCP_SND_QUEUELEN: TCP sender buffer space (pbufs). This must be at least + * as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work. + */ +#if !defined TCP_SND_QUEUELEN || defined __DOXYGEN__ +#define TCP_SND_QUEUELEN ((4 * (TCP_SND_BUF) + (TCP_MSS - 1))/(TCP_MSS)) +#endif + +/** + * TCP_SNDLOWAT: TCP writable space (bytes). This must be less than + * TCP_SND_BUF. It is the amount of space which must be available in the + * TCP snd_buf for select to return writable (combined with TCP_SNDQUEUELOWAT). + */ +#if !defined TCP_SNDLOWAT || defined __DOXYGEN__ +#define TCP_SNDLOWAT LWIP_MIN(LWIP_MAX(((TCP_SND_BUF)/2), (2 * TCP_MSS) + 1), (TCP_SND_BUF) - 1) +#endif + +/** + * TCP_SNDQUEUELOWAT: TCP writable bufs (pbuf count). This must be less + * than TCP_SND_QUEUELEN. If the number of pbufs queued on a pcb drops below + * this number, select returns writable (combined with TCP_SNDLOWAT). + */ +#if !defined TCP_SNDQUEUELOWAT || defined __DOXYGEN__ +#define TCP_SNDQUEUELOWAT LWIP_MAX(((TCP_SND_QUEUELEN)/2), 5) +#endif + +/** + * TCP_OOSEQ_MAX_BYTES: The maximum number of bytes queued on ooseq per pcb. + * Default is 0 (no limit). Only valid for TCP_QUEUE_OOSEQ==1. + */ +#if !defined TCP_OOSEQ_MAX_BYTES || defined __DOXYGEN__ +#define TCP_OOSEQ_MAX_BYTES 0 +#endif + +/** + * TCP_OOSEQ_MAX_PBUFS: The maximum number of pbufs queued on ooseq per pcb. + * Default is 0 (no limit). Only valid for TCP_QUEUE_OOSEQ==1. + */ +#if !defined TCP_OOSEQ_MAX_PBUFS || defined __DOXYGEN__ +#define TCP_OOSEQ_MAX_PBUFS 0 +#endif + +/** + * TCP_LISTEN_BACKLOG: Enable the backlog option for tcp listen pcb. + */ +#if !defined TCP_LISTEN_BACKLOG || defined __DOXYGEN__ +#define TCP_LISTEN_BACKLOG 0 +#endif + +/** + * The maximum allowed backlog for TCP listen netconns. + * This backlog is used unless another is explicitly specified. + * 0xff is the maximum (u8_t). + */ +#if !defined TCP_DEFAULT_LISTEN_BACKLOG || defined __DOXYGEN__ +#define TCP_DEFAULT_LISTEN_BACKLOG 0xff +#endif + +/** + * TCP_OVERSIZE: The maximum number of bytes that tcp_write may + * allocate ahead of time in an attempt to create shorter pbuf chains + * for transmission. The meaningful range is 0 to TCP_MSS. Some + * suggested values are: + * + * 0: Disable oversized allocation. Each tcp_write() allocates a new + pbuf (old behaviour). + * 1: Allocate size-aligned pbufs with minimal excess. Use this if your + * scatter-gather DMA requires aligned fragments. + * 128: Limit the pbuf/memory overhead to 20%. + * TCP_MSS: Try to create unfragmented TCP packets. + * TCP_MSS/4: Try to create 4 fragments or less per TCP packet. + */ +#if !defined TCP_OVERSIZE || defined __DOXYGEN__ +#define TCP_OVERSIZE TCP_MSS +#endif + +/** + * LWIP_TCP_TIMESTAMPS==1: support the TCP timestamp option. + * The timestamp option is currently only used to help remote hosts, it is not + * really used locally. Therefore, it is only enabled when a TS option is + * received in the initial SYN packet from a remote host. + */ +#if !defined LWIP_TCP_TIMESTAMPS || defined __DOXYGEN__ +#define LWIP_TCP_TIMESTAMPS 0 +#endif + +/** + * TCP_WND_UPDATE_THRESHOLD: difference in window to trigger an + * explicit window update + */ +#if !defined TCP_WND_UPDATE_THRESHOLD || defined __DOXYGEN__ +#define TCP_WND_UPDATE_THRESHOLD LWIP_MIN((TCP_WND / 4), (TCP_MSS * 4)) +#endif + +/** + * LWIP_EVENT_API and LWIP_CALLBACK_API: Only one of these should be set to 1. + * LWIP_EVENT_API==1: The user defines lwip_tcp_event() to receive all + * events (accept, sent, etc) that happen in the system. + * LWIP_CALLBACK_API==1: The PCB callback function is called directly + * for the event. This is the default. + */ +#if !defined(LWIP_EVENT_API) && !defined(LWIP_CALLBACK_API) || defined __DOXYGEN__ +#define LWIP_EVENT_API 0 +#define LWIP_CALLBACK_API 1 +#else +#ifndef LWIP_EVENT_API +#define LWIP_EVENT_API 0 +#endif +#ifndef LWIP_CALLBACK_API +#define LWIP_CALLBACK_API 0 +#endif +#endif + +/** + * LWIP_WND_SCALE and TCP_RCV_SCALE: + * Set LWIP_WND_SCALE to 1 to enable window scaling. + * Set TCP_RCV_SCALE to the desired scaling factor (shift count in the + * range of [0..14]). + * When LWIP_WND_SCALE is enabled but TCP_RCV_SCALE is 0, we can use a large + * send window while having a small receive window only. + */ +#if !defined LWIP_WND_SCALE || defined __DOXYGEN__ +#define LWIP_WND_SCALE 0 +#define TCP_RCV_SCALE 0 +#endif +/** + * @} + */ + +/* + ---------------------------------- + ---------- Pbuf options ---------- + ---------------------------------- +*/ +/** + * @defgroup lwip_opts_pbuf PBUF + * @ingroup lwip_opts + * @{ + */ +/** + * PBUF_LINK_HLEN: the number of bytes that should be allocated for a + * link level header. The default is 14, the standard value for + * Ethernet. + */ +#if !defined PBUF_LINK_HLEN || defined __DOXYGEN__ +#if defined LWIP_HOOK_VLAN_SET && !defined __DOXYGEN__ +#define PBUF_LINK_HLEN (18 + ETH_PAD_SIZE) +#else /* LWIP_HOOK_VLAN_SET */ +#define PBUF_LINK_HLEN (14 + ETH_PAD_SIZE) +#endif /* LWIP_HOOK_VLAN_SET */ +#endif + +/** + * PBUF_LINK_ENCAPSULATION_HLEN: the number of bytes that should be allocated + * for an additional encapsulation header before ethernet headers (e.g. 802.11) + */ +#if !defined PBUF_LINK_ENCAPSULATION_HLEN || defined __DOXYGEN__ +#define PBUF_LINK_ENCAPSULATION_HLEN 36 // 0u # 36 is EP_OFFSET from original esp implementation +#endif + +/** + * PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. The default is + * designed to accommodate single full size TCP frame in one pbuf, including + * TCP_MSS, IP header, and link header. + */ +#if !defined PBUF_POOL_BUFSIZE || defined __DOXYGEN__ +#define PBUF_POOL_BUFSIZE LWIP_MEM_ALIGN_SIZE(TCP_MSS+40+PBUF_LINK_ENCAPSULATION_HLEN+PBUF_LINK_HLEN) +#endif + +/** + * LWIP_PBUF_REF_T: Refcount type in pbuf. + * Default width of u8_t can be increased if 255 refs are not enough for you. + */ +#ifndef LWIP_PBUF_REF_T +#define LWIP_PBUF_REF_T u8_t +#endif +/** + * @} + */ + +/* + ------------------------------------------------ + ---------- Network Interfaces options ---------- + ------------------------------------------------ +*/ +/** + * @defgroup lwip_opts_netif NETIF + * @ingroup lwip_opts + * @{ + */ +/** + * LWIP_SINGLE_NETIF==1: use a single netif only. This is the common case for + * small real-life targets. Some code like routing etc. can be left out. + */ +#if !defined LWIP_SINGLE_NETIF || defined __DOXYGEN__ +#define LWIP_SINGLE_NETIF 0 // AP+STA = 2 different netif +#endif + +/** + * LWIP_NETIF_HOSTNAME==1: use DHCP_OPTION_HOSTNAME with netif's hostname + * field. + */ +#if !defined LWIP_NETIF_HOSTNAME || defined __DOXYGEN__ +#define LWIP_NETIF_HOSTNAME 1 +#endif + +/** + * LWIP_NETIF_API==1: Support netif api (in netifapi.c) + */ +#if !defined LWIP_NETIF_API || defined __DOXYGEN__ +#define LWIP_NETIF_API 0 +#endif + +/** + * LWIP_NETIF_STATUS_CALLBACK==1: Support a callback function whenever an interface + * changes its up/down status (i.e., due to DHCP IP acquisition) + */ +#if !defined LWIP_NETIF_STATUS_CALLBACK || defined __DOXYGEN__ +#define LWIP_NETIF_STATUS_CALLBACK 1 +#endif + +/** + * LWIP_NETIF_EXT_STATUS_CALLBACK==1: Support an extended callback function + * for several netif related event that supports multiple subscribers. + * @see netif_ext_status_callback + */ +#if !defined LWIP_NETIF_EXT_STATUS_CALLBACK || defined __DOXYGEN__ +#define LWIP_NETIF_EXT_STATUS_CALLBACK 0 +#endif + +/** + * LWIP_NETIF_LINK_CALLBACK==1: Support a callback function from an interface + * whenever the link changes (i.e., link down) + */ +#if !defined LWIP_NETIF_LINK_CALLBACK || defined __DOXYGEN__ +#define LWIP_NETIF_LINK_CALLBACK 0 +#endif + +/** + * LWIP_NETIF_REMOVE_CALLBACK==1: Support a callback function that is called + * when a netif has been removed + */ +#if !defined LWIP_NETIF_REMOVE_CALLBACK || defined __DOXYGEN__ +#define LWIP_NETIF_REMOVE_CALLBACK 0 +#endif + +/** + * LWIP_NETIF_HWADDRHINT==1: Cache link-layer-address hints (e.g. table + * indices) in struct netif. TCP and UDP can make use of this to prevent + * scanning the ARP table for every sent packet. While this is faster for big + * ARP tables or many concurrent connections, it might be counterproductive + * if you have a tiny ARP table or if there never are concurrent connections. + */ +#if !defined LWIP_NETIF_HWADDRHINT || defined __DOXYGEN__ +#define LWIP_NETIF_HWADDRHINT 0 +#endif + +/** + * LWIP_NETIF_TX_SINGLE_PBUF: if this is set to 1, lwIP tries to put all data + * to be sent into one single pbuf. This is for compatibility with DMA-enabled + * MACs that do not support scatter-gather. + * Beware that this might involve CPU-memcpy before transmitting that would not + * be needed without this flag! Use this only if you need to! + * + * @todo: TCP and IP-frag do not work with this, yet: + */ +#if !defined LWIP_NETIF_TX_SINGLE_PBUF || defined __DOXYGEN__ +#define LWIP_NETIF_TX_SINGLE_PBUF 1 // MANDATORY FOR ESP8266 BLOBS !! +#endif /* LWIP_NETIF_TX_SINGLE_PBUF */ + +/** + * LWIP_NUM_NETIF_CLIENT_DATA: Number of clients that may store + * data in client_data member array of struct netif. + */ +#if !defined LWIP_NUM_NETIF_CLIENT_DATA || defined __DOXYGEN__ +#define LWIP_NUM_NETIF_CLIENT_DATA 0 +#endif +/** + * @} + */ + +/* + ------------------------------------ + ---------- LOOPIF options ---------- + ------------------------------------ +*/ +/** + * @defgroup lwip_opts_loop Loopback interface + * @ingroup lwip_opts_netif + * @{ + */ +/** + * LWIP_HAVE_LOOPIF==1: Support loop interface (127.0.0.1). + * This is only needed when no real netifs are available. If at least one other + * netif is available, loopback traffic uses this netif. + */ +#if !defined LWIP_HAVE_LOOPIF || defined __DOXYGEN__ +#define LWIP_HAVE_LOOPIF (LWIP_NETIF_LOOPBACK && !LWIP_SINGLE_NETIF) +#endif + +/** + * LWIP_LOOPIF_MULTICAST==1: Support multicast/IGMP on loop interface (127.0.0.1). + */ +#if !defined LWIP_LOOPIF_MULTICAST || defined __DOXYGEN__ +#define LWIP_LOOPIF_MULTICAST 0 +#endif + +/** + * LWIP_NETIF_LOOPBACK==1: Support sending packets with a destination IP + * address equal to the netif IP address, looping them back up the stack. + */ +#if !defined LWIP_NETIF_LOOPBACK || defined __DOXYGEN__ +#define LWIP_NETIF_LOOPBACK 0 +#endif + +/** + * LWIP_LOOPBACK_MAX_PBUFS: Maximum number of pbufs on queue for loopback + * sending for each netif (0 = disabled) + */ +#if !defined LWIP_LOOPBACK_MAX_PBUFS || defined __DOXYGEN__ +#define LWIP_LOOPBACK_MAX_PBUFS 0 +#endif + +/** + * LWIP_NETIF_LOOPBACK_MULTITHREADING: Indicates whether threading is enabled in + * the system, as netifs must change how they behave depending on this setting + * for the LWIP_NETIF_LOOPBACK option to work. + * Setting this is needed to avoid reentering non-reentrant functions like + * tcp_input(). + * LWIP_NETIF_LOOPBACK_MULTITHREADING==1: Indicates that the user is using a + * multithreaded environment like tcpip.c. In this case, netif->input() + * is called directly. + * LWIP_NETIF_LOOPBACK_MULTITHREADING==0: Indicates a polling (or NO_SYS) setup. + * The packets are put on a list and netif_poll() must be called in + * the main application loop. + */ +#if !defined LWIP_NETIF_LOOPBACK_MULTITHREADING || defined __DOXYGEN__ +#define LWIP_NETIF_LOOPBACK_MULTITHREADING (!NO_SYS) +#endif +/** + * @} + */ + +/* + ------------------------------------ + ---------- Thread options ---------- + ------------------------------------ +*/ +/** + * @defgroup lwip_opts_thread Threading + * @ingroup lwip_opts_infrastructure + * @{ + */ +/** + * TCPIP_THREAD_NAME: The name assigned to the main tcpip thread. + */ +#if !defined TCPIP_THREAD_NAME || defined __DOXYGEN__ +#define TCPIP_THREAD_NAME "tcpip_thread" +#endif + +/** + * TCPIP_THREAD_STACKSIZE: The stack size used by the main tcpip thread. + * The stack size value itself is platform-dependent, but is passed to + * sys_thread_new() when the thread is created. + */ +#if !defined TCPIP_THREAD_STACKSIZE || defined __DOXYGEN__ +#define TCPIP_THREAD_STACKSIZE 0 +#endif + +/** + * TCPIP_THREAD_PRIO: The priority assigned to the main tcpip thread. + * The priority value itself is platform-dependent, but is passed to + * sys_thread_new() when the thread is created. + */ +#if !defined TCPIP_THREAD_PRIO || defined __DOXYGEN__ +#define TCPIP_THREAD_PRIO 1 +#endif + +/** + * TCPIP_MBOX_SIZE: The mailbox size for the tcpip thread messages + * The queue size value itself is platform-dependent, but is passed to + * sys_mbox_new() when tcpip_init is called. + */ +#if !defined TCPIP_MBOX_SIZE || defined __DOXYGEN__ +#define TCPIP_MBOX_SIZE 0 +#endif + +/** + * Define this to something that triggers a watchdog. This is called from + * tcpip_thread after processing a message. + */ +#if !defined LWIP_TCPIP_THREAD_ALIVE || defined __DOXYGEN__ +#define LWIP_TCPIP_THREAD_ALIVE() +#endif + +/** + * SLIPIF_THREAD_NAME: The name assigned to the slipif_loop thread. + */ +#if !defined SLIPIF_THREAD_NAME || defined __DOXYGEN__ +#define SLIPIF_THREAD_NAME "slipif_loop" +#endif + +/** + * SLIP_THREAD_STACKSIZE: The stack size used by the slipif_loop thread. + * The stack size value itself is platform-dependent, but is passed to + * sys_thread_new() when the thread is created. + */ +#if !defined SLIPIF_THREAD_STACKSIZE || defined __DOXYGEN__ +#define SLIPIF_THREAD_STACKSIZE 0 +#endif + +/** + * SLIPIF_THREAD_PRIO: The priority assigned to the slipif_loop thread. + * The priority value itself is platform-dependent, but is passed to + * sys_thread_new() when the thread is created. + */ +#if !defined SLIPIF_THREAD_PRIO || defined __DOXYGEN__ +#define SLIPIF_THREAD_PRIO 1 +#endif + +/** + * DEFAULT_THREAD_NAME: The name assigned to any other lwIP thread. + */ +#if !defined DEFAULT_THREAD_NAME || defined __DOXYGEN__ +#define DEFAULT_THREAD_NAME "lwIP" +#endif + +/** + * DEFAULT_THREAD_STACKSIZE: The stack size used by any other lwIP thread. + * The stack size value itself is platform-dependent, but is passed to + * sys_thread_new() when the thread is created. + */ +#if !defined DEFAULT_THREAD_STACKSIZE || defined __DOXYGEN__ +#define DEFAULT_THREAD_STACKSIZE 0 +#endif + +/** + * DEFAULT_THREAD_PRIO: The priority assigned to any other lwIP thread. + * The priority value itself is platform-dependent, but is passed to + * sys_thread_new() when the thread is created. + */ +#if !defined DEFAULT_THREAD_PRIO || defined __DOXYGEN__ +#define DEFAULT_THREAD_PRIO 1 +#endif + +/** + * DEFAULT_RAW_RECVMBOX_SIZE: The mailbox size for the incoming packets on a + * NETCONN_RAW. The queue size value itself is platform-dependent, but is passed + * to sys_mbox_new() when the recvmbox is created. + */ +#if !defined DEFAULT_RAW_RECVMBOX_SIZE || defined __DOXYGEN__ +#define DEFAULT_RAW_RECVMBOX_SIZE 0 +#endif + +/** + * DEFAULT_UDP_RECVMBOX_SIZE: The mailbox size for the incoming packets on a + * NETCONN_UDP. The queue size value itself is platform-dependent, but is passed + * to sys_mbox_new() when the recvmbox is created. + */ +#if !defined DEFAULT_UDP_RECVMBOX_SIZE || defined __DOXYGEN__ +#define DEFAULT_UDP_RECVMBOX_SIZE 0 +#endif + +/** + * DEFAULT_TCP_RECVMBOX_SIZE: The mailbox size for the incoming packets on a + * NETCONN_TCP. The queue size value itself is platform-dependent, but is passed + * to sys_mbox_new() when the recvmbox is created. + */ +#if !defined DEFAULT_TCP_RECVMBOX_SIZE || defined __DOXYGEN__ +#define DEFAULT_TCP_RECVMBOX_SIZE 0 +#endif + +/** + * DEFAULT_ACCEPTMBOX_SIZE: The mailbox size for the incoming connections. + * The queue size value itself is platform-dependent, but is passed to + * sys_mbox_new() when the acceptmbox is created. + */ +#if !defined DEFAULT_ACCEPTMBOX_SIZE || defined __DOXYGEN__ +#define DEFAULT_ACCEPTMBOX_SIZE 0 +#endif +/** + * @} + */ + +/* + ---------------------------------------------- + ---------- Sequential layer options ---------- + ---------------------------------------------- +*/ +/** + * @defgroup lwip_opts_netconn Netconn + * @ingroup lwip_opts_threadsafe_apis + * @{ + */ +/** + * LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c) + */ +#if !defined LWIP_NETCONN || defined __DOXYGEN__ +#define LWIP_NETCONN 0 // 1 +#endif + +/** LWIP_TCPIP_TIMEOUT==1: Enable tcpip_timeout/tcpip_untimeout to create + * timers running in tcpip_thread from another thread. + */ +#if !defined LWIP_TCPIP_TIMEOUT || defined __DOXYGEN__ +#define LWIP_TCPIP_TIMEOUT 0 +#endif + +/** LWIP_NETCONN_SEM_PER_THREAD==1: Use one (thread-local) semaphore per + * thread calling socket/netconn functions instead of allocating one + * semaphore per netconn (and per select etc.) + * ATTENTION: a thread-local semaphore for API calls is needed: + * - LWIP_NETCONN_THREAD_SEM_GET() returning a sys_sem_t* + * - LWIP_NETCONN_THREAD_SEM_ALLOC() creating the semaphore + * - LWIP_NETCONN_THREAD_SEM_FREE() freeing the semaphore + * The latter 2 can be invoked up by calling netconn_thread_init()/netconn_thread_cleanup(). + * Ports may call these for threads created with sys_thread_new(). + */ +#if !defined LWIP_NETCONN_SEM_PER_THREAD || defined __DOXYGEN__ +#define LWIP_NETCONN_SEM_PER_THREAD 0 +#endif + +/** LWIP_NETCONN_FULLDUPLEX==1: Enable code that allows reading from one thread, + * writing from a 2nd thread and closing from a 3rd thread at the same time. + * ATTENTION: This is currently really alpha! Some requirements: + * - LWIP_NETCONN_SEM_PER_THREAD==1 is required to use one socket/netconn from + * multiple threads at once + * - sys_mbox_free() has to unblock receive tasks waiting on recvmbox/acceptmbox + * and prevent a task pending on this during/after deletion + */ +#if !defined LWIP_NETCONN_FULLDUPLEX || defined __DOXYGEN__ +#define LWIP_NETCONN_FULLDUPLEX 0 +#endif +/** + * @} + */ + +/* + ------------------------------------ + ---------- Socket options ---------- + ------------------------------------ +*/ +/** + * @defgroup lwip_opts_socket Sockets + * @ingroup lwip_opts_threadsafe_apis + * @{ + */ +/** + * LWIP_SOCKET==1: Enable Socket API (require to use sockets.c) + */ +#if !defined LWIP_SOCKET || defined __DOXYGEN__ +#define LWIP_SOCKET 0 // 1 +#endif + +/** LWIP_SOCKET_SET_ERRNO==1: Set errno when socket functions cannot complete + * successfully, as required by POSIX. Default is POSIX-compliant. + */ +#if !defined LWIP_SOCKET_SET_ERRNO || defined __DOXYGEN__ +#define LWIP_SOCKET_SET_ERRNO 1 +#endif + +/** + * LWIP_COMPAT_SOCKETS==1: Enable BSD-style sockets functions names through defines. + * LWIP_COMPAT_SOCKETS==2: Same as ==1 but correctly named functions are created. + * While this helps code completion, it might conflict with existing libraries. + * (only used if you use sockets.c) + */ +#if !defined LWIP_COMPAT_SOCKETS || defined __DOXYGEN__ +#define LWIP_COMPAT_SOCKETS 1 +#endif + +/** + * LWIP_POSIX_SOCKETS_IO_NAMES==1: Enable POSIX-style sockets functions names. + * Disable this option if you use a POSIX operating system that uses the same + * names (read, write & close). (only used if you use sockets.c) + */ +#if !defined LWIP_POSIX_SOCKETS_IO_NAMES || defined __DOXYGEN__ +#define LWIP_POSIX_SOCKETS_IO_NAMES 0 // 1 +#endif + +/** + * LWIP_SOCKET_OFFSET==n: Increases the file descriptor number created by LwIP with n. + * This can be useful when there are multiple APIs which create file descriptors. + * When they all start with a different offset and you won't make them overlap you can + * re implement read/write/close/ioctl/fnctl to send the requested action to the right + * library (sharing select will need more work though). + */ +#if !defined LWIP_SOCKET_OFFSET || defined __DOXYGEN__ +#define LWIP_SOCKET_OFFSET 0 +#endif + +/** + * LWIP_TCP_KEEPALIVE==1: Enable TCP_KEEPIDLE, TCP_KEEPINTVL and TCP_KEEPCNT + * options processing. Note that TCP_KEEPIDLE and TCP_KEEPINTVL have to be set + * in seconds. (does not require sockets.c, and will affect tcp.c) + */ +#if !defined LWIP_TCP_KEEPALIVE || defined __DOXYGEN__ +#define LWIP_TCP_KEEPALIVE 1 // 0 +#endif + +/** + * LWIP_SO_SNDTIMEO==1: Enable send timeout for sockets/netconns and + * SO_SNDTIMEO processing. + */ +#if !defined LWIP_SO_SNDTIMEO || defined __DOXYGEN__ +#define LWIP_SO_SNDTIMEO 0 +#endif + +/** + * LWIP_SO_RCVTIMEO==1: Enable receive timeout for sockets/netconns and + * SO_RCVTIMEO processing. + */ +#if !defined LWIP_SO_RCVTIMEO || defined __DOXYGEN__ +#define LWIP_SO_RCVTIMEO 0 +#endif + +/** + * LWIP_SO_SNDRCVTIMEO_NONSTANDARD==1: SO_RCVTIMEO/SO_SNDTIMEO take an int + * (milliseconds, much like winsock does) instead of a struct timeval (default). + */ +#if !defined LWIP_SO_SNDRCVTIMEO_NONSTANDARD || defined __DOXYGEN__ +#define LWIP_SO_SNDRCVTIMEO_NONSTANDARD 0 +#endif + +/** + * LWIP_SO_RCVBUF==1: Enable SO_RCVBUF processing. + */ +#if !defined LWIP_SO_RCVBUF || defined __DOXYGEN__ +#define LWIP_SO_RCVBUF 0 +#endif + +/** + * LWIP_SO_LINGER==1: Enable SO_LINGER processing. + */ +#if !defined LWIP_SO_LINGER || defined __DOXYGEN__ +#define LWIP_SO_LINGER 0 +#endif + +/** + * If LWIP_SO_RCVBUF is used, this is the default value for recv_bufsize. + */ +#if !defined RECV_BUFSIZE_DEFAULT || defined __DOXYGEN__ +#define RECV_BUFSIZE_DEFAULT INT_MAX +#endif + +/** + * By default, TCP socket/netconn close waits 20 seconds max to send the FIN + */ +#if !defined LWIP_TCP_CLOSE_TIMEOUT_MS_DEFAULT || defined __DOXYGEN__ +#define LWIP_TCP_CLOSE_TIMEOUT_MS_DEFAULT 20000 +#endif + +/** + * SO_REUSE==1: Enable SO_REUSEADDR option. + */ +#if !defined SO_REUSE || defined __DOXYGEN__ +#define SO_REUSE 1 // 0 +#endif + +/** + * SO_REUSE_RXTOALL==1: Pass a copy of incoming broadcast/multicast packets + * to all local matches if SO_REUSEADDR is turned on. + * WARNING: Adds a memcpy for every packet if passing to more than one pcb! + */ +#if !defined SO_REUSE_RXTOALL || defined __DOXYGEN__ +#define SO_REUSE_RXTOALL 0 +#endif + +/** + * LWIP_FIONREAD_LINUXMODE==0 (default): ioctl/FIONREAD returns the amount of + * pending data in the network buffer. This is the way windows does it. It's + * the default for lwIP since it is smaller. + * LWIP_FIONREAD_LINUXMODE==1: ioctl/FIONREAD returns the size of the next + * pending datagram in bytes. This is the way linux does it. This code is only + * here for compatibility. + */ +#if !defined LWIP_FIONREAD_LINUXMODE || defined __DOXYGEN__ +#define LWIP_FIONREAD_LINUXMODE 0 +#endif + +/** + * LWIP_SOCKET_SELECT==1 (default): enable select() for sockets (uses a netconn + * callback to keep track of events). + * This saves RAM (counters per socket) and code (netconn event callback), which + * should improve performance a bit). + */ +#if !defined LWIP_SOCKET_SELECT || defined __DOXYGEN__ +#define LWIP_SOCKET_SELECT 1 +#endif +/** + * @} + */ + +/* + ---------------------------------------- + ---------- Statistics options ---------- + ---------------------------------------- +*/ +/** + * @defgroup lwip_opts_stats Statistics + * @ingroup lwip_opts_debug + * @{ + */ +/** + * LWIP_STATS==1: Enable statistics collection in lwip_stats. + */ +#if !defined LWIP_STATS || defined __DOXYGEN__ +#define LWIP_STATS 0 // 1 +#endif + +#if LWIP_STATS + +/** + * LWIP_STATS_DISPLAY==1: Compile in the statistics output functions. + */ +#if !defined LWIP_STATS_DISPLAY || defined __DOXYGEN__ +#define LWIP_STATS_DISPLAY 0 +#endif + +/** + * LINK_STATS==1: Enable link stats. + */ +#if !defined LINK_STATS || defined __DOXYGEN__ +#define LINK_STATS 1 +#endif + +/** + * ETHARP_STATS==1: Enable etharp stats. + */ +#if !defined ETHARP_STATS || defined __DOXYGEN__ +#define ETHARP_STATS (LWIP_ARP) +#endif + +/** + * IP_STATS==1: Enable IP stats. + */ +#if !defined IP_STATS || defined __DOXYGEN__ +#define IP_STATS 1 +#endif + +/** + * IPFRAG_STATS==1: Enable IP fragmentation stats. Default is + * on if using either frag or reass. + */ +#if !defined IPFRAG_STATS || defined __DOXYGEN__ +#define IPFRAG_STATS (IP_REASSEMBLY || IP_FRAG) +#endif + +/** + * ICMP_STATS==1: Enable ICMP stats. + */ +#if !defined ICMP_STATS || defined __DOXYGEN__ +#define ICMP_STATS 1 +#endif + +/** + * IGMP_STATS==1: Enable IGMP stats. + */ +#if !defined IGMP_STATS || defined __DOXYGEN__ +#define IGMP_STATS (LWIP_IGMP) +#endif + +/** + * UDP_STATS==1: Enable UDP stats. Default is on if + * UDP enabled, otherwise off. + */ +#if !defined UDP_STATS || defined __DOXYGEN__ +#define UDP_STATS (LWIP_UDP) +#endif + +/** + * TCP_STATS==1: Enable TCP stats. Default is on if TCP + * enabled, otherwise off. + */ +#if !defined TCP_STATS || defined __DOXYGEN__ +#define TCP_STATS (LWIP_TCP) +#endif + +/** + * MEM_STATS==1: Enable mem.c stats. + */ +#if !defined MEM_STATS || defined __DOXYGEN__ +#define MEM_STATS ((MEM_LIBC_MALLOC == 0) && (MEM_USE_POOLS == 0)) +#endif + +/** + * MEMP_STATS==1: Enable memp.c pool stats. + */ +#if !defined MEMP_STATS || defined __DOXYGEN__ +#define MEMP_STATS (MEMP_MEM_MALLOC == 0) +#endif + +/** + * SYS_STATS==1: Enable system stats (sem and mbox counts, etc). + */ +#if !defined SYS_STATS || defined __DOXYGEN__ +#define SYS_STATS (NO_SYS == 0) +#endif + +/** + * IP6_STATS==1: Enable IPv6 stats. + */ +#if !defined IP6_STATS || defined __DOXYGEN__ +#define IP6_STATS (LWIP_IPV6) +#endif + +/** + * ICMP6_STATS==1: Enable ICMP for IPv6 stats. + */ +#if !defined ICMP6_STATS || defined __DOXYGEN__ +#define ICMP6_STATS (LWIP_IPV6 && LWIP_ICMP6) +#endif + +/** + * IP6_FRAG_STATS==1: Enable IPv6 fragmentation stats. + */ +#if !defined IP6_FRAG_STATS || defined __DOXYGEN__ +#define IP6_FRAG_STATS (LWIP_IPV6 && (LWIP_IPV6_FRAG || LWIP_IPV6_REASS)) +#endif + +/** + * MLD6_STATS==1: Enable MLD for IPv6 stats. + */ +#if !defined MLD6_STATS || defined __DOXYGEN__ +#define MLD6_STATS (LWIP_IPV6 && LWIP_IPV6_MLD) +#endif + +/** + * ND6_STATS==1: Enable Neighbor discovery for IPv6 stats. + */ +#if !defined ND6_STATS || defined __DOXYGEN__ +#define ND6_STATS (LWIP_IPV6) +#endif + +/** + * MIB2_STATS==1: Stats for SNMP MIB2. + */ +#if !defined MIB2_STATS || defined __DOXYGEN__ +#define MIB2_STATS 0 +#endif + +#else + +#define LINK_STATS 0 +#define ETHARP_STATS 0 +#define IP_STATS 0 +#define IPFRAG_STATS 0 +#define ICMP_STATS 0 +#define IGMP_STATS 0 +#define UDP_STATS 0 +#define TCP_STATS 0 +#define MEM_STATS 0 +#define MEMP_STATS 0 +#define SYS_STATS 0 +#define LWIP_STATS_DISPLAY 0 +#define IP6_STATS 0 +#define ICMP6_STATS 0 +#define IP6_FRAG_STATS 0 +#define MLD6_STATS 0 +#define ND6_STATS 0 +#define MIB2_STATS 0 + +#endif /* LWIP_STATS */ +/** + * @} + */ + +/* + -------------------------------------- + ---------- Checksum options ---------- + -------------------------------------- +*/ +/** + * @defgroup lwip_opts_checksum Checksum + * @ingroup lwip_opts_infrastructure + * @{ + */ +/** + * LWIP_CHECKSUM_CTRL_PER_NETIF==1: Checksum generation/check can be enabled/disabled + * per netif. + * ATTENTION: if enabled, the CHECKSUM_GEN_* and CHECKSUM_CHECK_* defines must be enabled! + */ +#if !defined LWIP_CHECKSUM_CTRL_PER_NETIF || defined __DOXYGEN__ +#define LWIP_CHECKSUM_CTRL_PER_NETIF 1 // 0 +#endif + +/** + * CHECKSUM_GEN_IP==1: Generate checksums in software for outgoing IP packets. + */ +#if !defined CHECKSUM_GEN_IP || defined __DOXYGEN__ +#define CHECKSUM_GEN_IP 1 +#endif + +/** + * CHECKSUM_GEN_UDP==1: Generate checksums in software for outgoing UDP packets. + */ +#if !defined CHECKSUM_GEN_UDP || defined __DOXYGEN__ +#define CHECKSUM_GEN_UDP 1 +#endif + +/** + * CHECKSUM_GEN_TCP==1: Generate checksums in software for outgoing TCP packets. + */ +#if !defined CHECKSUM_GEN_TCP || defined __DOXYGEN__ +#define CHECKSUM_GEN_TCP 1 +#endif + +/** + * CHECKSUM_GEN_ICMP==1: Generate checksums in software for outgoing ICMP packets. + */ +#if !defined CHECKSUM_GEN_ICMP || defined __DOXYGEN__ +#define CHECKSUM_GEN_ICMP 1 +#endif + +/** + * CHECKSUM_GEN_ICMP6==1: Generate checksums in software for outgoing ICMP6 packets. + */ +#if !defined CHECKSUM_GEN_ICMP6 || defined __DOXYGEN__ +#define CHECKSUM_GEN_ICMP6 1 +#endif + +/** + * CHECKSUM_CHECK_IP==1: Check checksums in software for incoming IP packets. + */ +#if !defined CHECKSUM_CHECK_IP || defined __DOXYGEN__ +#define CHECKSUM_CHECK_IP 1 +#endif + +/** + * CHECKSUM_CHECK_UDP==1: Check checksums in software for incoming UDP packets. + */ +#if !defined CHECKSUM_CHECK_UDP || defined __DOXYGEN__ +#define CHECKSUM_CHECK_UDP 1 +#endif + +/** + * CHECKSUM_CHECK_TCP==1: Check checksums in software for incoming TCP packets. + */ +#if !defined CHECKSUM_CHECK_TCP || defined __DOXYGEN__ +#define CHECKSUM_CHECK_TCP 1 +#endif + +/** + * CHECKSUM_CHECK_ICMP==1: Check checksums in software for incoming ICMP packets. + */ +#if !defined CHECKSUM_CHECK_ICMP || defined __DOXYGEN__ +#define CHECKSUM_CHECK_ICMP 1 +#endif + +/** + * CHECKSUM_CHECK_ICMP6==1: Check checksums in software for incoming ICMPv6 packets + */ +#if !defined CHECKSUM_CHECK_ICMP6 || defined __DOXYGEN__ +#define CHECKSUM_CHECK_ICMP6 1 +#endif + +/** + * LWIP_CHECKSUM_ON_COPY==1: Calculate checksum when copying data from + * application buffers to pbufs. + */ +#if !defined LWIP_CHECKSUM_ON_COPY || defined __DOXYGEN__ +#define LWIP_CHECKSUM_ON_COPY 0 +#endif +/** + * @} + */ + +/* + --------------------------------------- + ---------- IPv6 options --------------- + --------------------------------------- +*/ +/** + * @defgroup lwip_opts_ipv6 IPv6 + * @ingroup lwip_opts + * @{ + */ +/** + * LWIP_IPV6==1: Enable IPv6 + */ +#if !defined LWIP_IPV6 || defined __DOXYGEN__ +#define LWIP_IPV6 0 +#endif + +/** + * LWIP_IPV6_SCOPES==1: Enable support for IPv6 address scopes, ensuring that + * e.g. link-local addresses are really treated as link-local. Disable this + * setting only for single-interface configurations. + */ +#if !defined LWIP_IPV6_SCOPES || defined __DOXYGEN__ +#define LWIP_IPV6_SCOPES (LWIP_IPV6 && !LWIP_SINGLE_NETIF) +#endif + +/** + * LWIP_IPV6_SCOPES_DEBUG==1: Perform run-time checks to verify that addresses + * are properly zoned (see ip6_zone.h on what that means) where it matters. + * Enabling this setting is highly recommended when upgrading from an existing + * installation that is not yet scope-aware; otherwise it may be too expensive. + */ +#if !defined LWIP_IPV6_SCOPES_DEBUG || defined __DOXYGEN__ +#define LWIP_IPV6_SCOPES_DEBUG 0 +#endif + +/** + * LWIP_IPV6_NUM_ADDRESSES: Number of IPv6 addresses per netif. + */ +#if !defined LWIP_IPV6_NUM_ADDRESSES || defined __DOXYGEN__ +#define LWIP_IPV6_NUM_ADDRESSES 3 +#endif + +/** + * LWIP_IPV6_FORWARD==1: Forward IPv6 packets across netifs + */ +#if !defined LWIP_IPV6_FORWARD || defined __DOXYGEN__ +#define LWIP_IPV6_FORWARD 0 +#endif + +/** + * LWIP_IPV6_FRAG==1: Fragment outgoing IPv6 packets that are too big. + */ +#if !defined LWIP_IPV6_FRAG || defined __DOXYGEN__ +#define LWIP_IPV6_FRAG 0 +#endif + +/** + * LWIP_IPV6_REASS==1: reassemble incoming IPv6 packets that fragmented + */ +#if !defined LWIP_IPV6_REASS || defined __DOXYGEN__ +#define LWIP_IPV6_REASS (LWIP_IPV6) +#endif + +/** + * LWIP_IPV6_SEND_ROUTER_SOLICIT==1: Send router solicitation messages during + * network startup. + */ +#if !defined LWIP_IPV6_SEND_ROUTER_SOLICIT || defined __DOXYGEN__ +#define LWIP_IPV6_SEND_ROUTER_SOLICIT (LWIP_IPV6) // 1 +#endif + +/** + * LWIP_IPV6_AUTOCONFIG==1: Enable stateless address autoconfiguration as per RFC 4862. + */ +#if !defined LWIP_IPV6_AUTOCONFIG || defined __DOXYGEN__ +#define LWIP_IPV6_AUTOCONFIG (LWIP_IPV6) +#endif + +/** + * LWIP_IPV6_ADDRESS_LIFETIMES==1: Keep valid and preferred lifetimes for each + * IPv6 address. Required for LWIP_IPV6_AUTOCONFIG. May still be enabled + * otherwise, in which case the application may assign address lifetimes with + * the appropriate macros. Addresses with no lifetime are assumed to be static. + * If this option is disabled, all addresses are assumed to be static. + */ +#if !defined LWIP_IPV6_ADDRESS_LIFETIMES || defined __DOXYGEN__ +#define LWIP_IPV6_ADDRESS_LIFETIMES (LWIP_IPV6_AUTOCONFIG) +#endif + +/** + * LWIP_IPV6_DUP_DETECT_ATTEMPTS=[0..7]: Number of duplicate address detection attempts. + */ +#if !defined LWIP_IPV6_DUP_DETECT_ATTEMPTS || defined __DOXYGEN__ +#define LWIP_IPV6_DUP_DETECT_ATTEMPTS 1 +#endif +/** + * @} + */ + +/** + * @defgroup lwip_opts_icmp6 ICMP6 + * @ingroup lwip_opts_ipv6 + * @{ + */ +/** + * LWIP_ICMP6==1: Enable ICMPv6 (mandatory per RFC) + */ +#if !defined LWIP_ICMP6 || defined __DOXYGEN__ +#define LWIP_ICMP6 (LWIP_IPV6) +#endif + +/** + * LWIP_ICMP6_DATASIZE: bytes from original packet to send back in + * ICMPv6 error messages. + */ +#if !defined LWIP_ICMP6_DATASIZE || defined __DOXYGEN__ +#define LWIP_ICMP6_DATASIZE 8 +#endif + +/** + * LWIP_ICMP6_HL: default hop limit for ICMPv6 messages + */ +#if !defined LWIP_ICMP6_HL || defined __DOXYGEN__ +#define LWIP_ICMP6_HL 255 +#endif +/** + * @} + */ + +/** + * @defgroup lwip_opts_mld6 Multicast listener discovery + * @ingroup lwip_opts_ipv6 + * @{ + */ +/** + * LWIP_IPV6_MLD==1: Enable multicast listener discovery protocol. + * If LWIP_IPV6 is enabled but this setting is disabled, the MAC layer must + * indiscriminately pass all inbound IPv6 multicast traffic to lwIP. + */ +#if !defined LWIP_IPV6_MLD || defined __DOXYGEN__ +#define LWIP_IPV6_MLD (LWIP_IPV6) +#endif + +/** + * MEMP_NUM_MLD6_GROUP: Max number of IPv6 multicast groups that can be joined. + * There must be enough groups so that each netif can join the solicited-node + * multicast group for each of its local addresses, plus one for MDNS if + * applicable, plus any number of groups to be joined on UDP sockets. + */ +#if !defined MEMP_NUM_MLD6_GROUP || defined __DOXYGEN__ +#define MEMP_NUM_MLD6_GROUP 4 +#endif +/** + * @} + */ + +/** + * @defgroup lwip_opts_nd6 Neighbor discovery + * @ingroup lwip_opts_ipv6 + * @{ + */ +/** + * LWIP_ND6_QUEUEING==1: queue outgoing IPv6 packets while MAC address + * is being resolved. + */ +#if !defined LWIP_ND6_QUEUEING || defined __DOXYGEN__ +#define LWIP_ND6_QUEUEING (LWIP_IPV6) +#endif + +/** + * MEMP_NUM_ND6_QUEUE: Max number of IPv6 packets to queue during MAC resolution. + */ +#if !defined MEMP_NUM_ND6_QUEUE || defined __DOXYGEN__ +#define MEMP_NUM_ND6_QUEUE 20 +#endif + +/** + * LWIP_ND6_NUM_NEIGHBORS: Number of entries in IPv6 neighbor cache + */ +#if !defined LWIP_ND6_NUM_NEIGHBORS || defined __DOXYGEN__ +#define LWIP_ND6_NUM_NEIGHBORS 10 +#endif + +/** + * LWIP_ND6_NUM_DESTINATIONS: number of entries in IPv6 destination cache + */ +#if !defined LWIP_ND6_NUM_DESTINATIONS || defined __DOXYGEN__ +#define LWIP_ND6_NUM_DESTINATIONS 10 +#endif + +/** + * LWIP_ND6_NUM_PREFIXES: number of entries in IPv6 on-link prefixes cache + */ +#if !defined LWIP_ND6_NUM_PREFIXES || defined __DOXYGEN__ +#define LWIP_ND6_NUM_PREFIXES 5 +#endif + +/** + * LWIP_ND6_NUM_ROUTERS: number of entries in IPv6 default router cache + */ +#if !defined LWIP_ND6_NUM_ROUTERS || defined __DOXYGEN__ +#define LWIP_ND6_NUM_ROUTERS 3 +#endif + +/** + * LWIP_ND6_MAX_MULTICAST_SOLICIT: max number of multicast solicit messages to send + * (neighbor solicit and router solicit) + */ +#if !defined LWIP_ND6_MAX_MULTICAST_SOLICIT || defined __DOXYGEN__ +#define LWIP_ND6_MAX_MULTICAST_SOLICIT 3 +#endif + +/** + * LWIP_ND6_MAX_UNICAST_SOLICIT: max number of unicast neighbor solicitation messages + * to send during neighbor reachability detection. + */ +#if !defined LWIP_ND6_MAX_UNICAST_SOLICIT || defined __DOXYGEN__ +#define LWIP_ND6_MAX_UNICAST_SOLICIT 3 +#endif + +/** + * Unused: See ND RFC (time in milliseconds). + */ +#if !defined LWIP_ND6_MAX_ANYCAST_DELAY_TIME || defined __DOXYGEN__ +#define LWIP_ND6_MAX_ANYCAST_DELAY_TIME 1000 +#endif + +/** + * Unused: See ND RFC + */ +#if !defined LWIP_ND6_MAX_NEIGHBOR_ADVERTISEMENT || defined __DOXYGEN__ +#define LWIP_ND6_MAX_NEIGHBOR_ADVERTISEMENT 3 +#endif + +/** + * LWIP_ND6_REACHABLE_TIME: default neighbor reachable time (in milliseconds). + * May be updated by router advertisement messages. + */ +#if !defined LWIP_ND6_REACHABLE_TIME || defined __DOXYGEN__ +#define LWIP_ND6_REACHABLE_TIME 30000 +#endif + +/** + * LWIP_ND6_RETRANS_TIMER: default retransmission timer for solicitation messages + */ +#if !defined LWIP_ND6_RETRANS_TIMER || defined __DOXYGEN__ +#define LWIP_ND6_RETRANS_TIMER 1000 +#endif + +/** + * LWIP_ND6_DELAY_FIRST_PROBE_TIME: Delay before first unicast neighbor solicitation + * message is sent, during neighbor reachability detection. + */ +#if !defined LWIP_ND6_DELAY_FIRST_PROBE_TIME || defined __DOXYGEN__ +#define LWIP_ND6_DELAY_FIRST_PROBE_TIME 5000 +#endif + +/** + * LWIP_ND6_ALLOW_RA_UPDATES==1: Allow Router Advertisement messages to update + * Reachable time and retransmission timers, and netif MTU. + */ +#if !defined LWIP_ND6_ALLOW_RA_UPDATES || defined __DOXYGEN__ +#define LWIP_ND6_ALLOW_RA_UPDATES 1 +#endif + +/** + * LWIP_ND6_TCP_REACHABILITY_HINTS==1: Allow TCP to provide Neighbor Discovery + * with reachability hints for connected destinations. This helps avoid sending + * unicast neighbor solicitation messages. + */ +#if !defined LWIP_ND6_TCP_REACHABILITY_HINTS || defined __DOXYGEN__ +#define LWIP_ND6_TCP_REACHABILITY_HINTS 1 +#endif + +/** + * LWIP_ND6_RDNSS_MAX_DNS_SERVERS > 0: Use IPv6 Router Advertisement Recursive + * DNS Server Option (as per RFC 6106) to copy a defined maximum number of DNS + * servers to the DNS module. + */ +#if !defined LWIP_ND6_RDNSS_MAX_DNS_SERVERS || defined __DOXYGEN__ +#define LWIP_ND6_RDNSS_MAX_DNS_SERVERS 0 +#endif +/** + * @} + */ + +/** + * LWIP_IPV6_DHCP6==1: enable DHCPv6 stateful address autoconfiguration. + */ +#if !defined LWIP_IPV6_DHCP6 || defined __DOXYGEN__ +#define LWIP_IPV6_DHCP6 0 +#endif + +/* + --------------------------------------- + ---------- Hook options --------------- + --------------------------------------- +*/ + +/** + * @defgroup lwip_opts_hooks Hooks + * @ingroup lwip_opts_infrastructure + * Hooks are undefined by default, define them to a function if you need them. + * @{ + */ + +/** + * LWIP_HOOK_FILENAME: Custom filename to \#include in files that provide hooks. + * Declare your hook function prototypes in there, you may also \#include all headers + * providing data types that are need in this file. + */ +#ifdef __DOXYGEN__ +#define LWIP_HOOK_FILENAME "path/to/my/lwip_hooks.h" +#endif + +/** + * LWIP_HOOK_TCP_ISN: + * Hook for generation of the Initial Sequence Number (ISN) for a new TCP + * connection. The default lwIP ISN generation algorithm is very basic and may + * allow for TCP spoofing attacks. This hook provides the means to implement + * the standardized ISN generation algorithm from RFC 6528 (see contrib/adons/tcp_isn), + * or any other desired algorithm as a replacement. + * Called from tcp_connect() and tcp_listen_input() when an ISN is needed for + * a new TCP connection, if TCP support (@ref LWIP_TCP) is enabled.\n + * Signature: u32_t my_hook_tcp_isn(const ip_addr_t* local_ip, u16_t local_port, const ip_addr_t* remote_ip, u16_t remote_port); + * - it may be necessary to use "struct ip_addr" (ip4_addr, ip6_addr) instead of "ip_addr_t" in function declarations\n + * Arguments: + * - local_ip: pointer to the local IP address of the connection + * - local_port: local port number of the connection (host-byte order) + * - remote_ip: pointer to the remote IP address of the connection + * - remote_port: remote port number of the connection (host-byte order)\n + * Return value: + * - the 32-bit Initial Sequence Number to use for the new TCP connection. + */ +#ifdef __DOXYGEN__ +#define LWIP_HOOK_TCP_ISN(local_ip, local_port, remote_ip, remote_port) +#endif + +/** + * LWIP_HOOK_IP4_INPUT(pbuf, input_netif): + * - called from ip_input() (IPv4) + * - pbuf: received struct pbuf passed to ip_input() + * - input_netif: struct netif on which the packet has been received + * Return values: + * - 0: Hook has not consumed the packet, packet is processed as normal + * - != 0: Hook has consumed the packet. + * If the hook consumed the packet, 'pbuf' is in the responsibility of the hook + * (i.e. free it when done). + */ +#ifdef __DOXYGEN__ +#define LWIP_HOOK_IP4_INPUT(pbuf, input_netif) +#endif + +/** + * LWIP_HOOK_IP4_ROUTE(dest): + * - called from ip_route() (IPv4) + * - dest: destination IPv4 address + * Returns the destination netif or NULL if no destination netif is found. In + * that case, ip_route() continues as normal. + */ +#ifdef __DOXYGEN__ +#define LWIP_HOOK_IP4_ROUTE() +#endif + +/** + * LWIP_HOOK_IP4_ROUTE_SRC(dest, src): + * - source-based routing for IPv4 (see LWIP_HOOK_IP4_ROUTE(), src may be NULL) + */ +#ifdef __DOXYGEN__ +#define LWIP_HOOK_IP4_ROUTE_SRC(dest, src) +#endif + +/** + * LWIP_HOOK_ETHARP_GET_GW(netif, dest): + * - called from etharp_output() (IPv4) + * - netif: the netif used for sending + * - dest: the destination IPv4 address + * Returns the IPv4 address of the gateway to handle the specified destination + * IPv4 address. If NULL is returned, the netif's default gateway is used. + * The returned address MUST be directly reachable on the specified netif! + * This function is meant to implement advanced IPv4 routing together with + * LWIP_HOOK_IP4_ROUTE(). The actual routing/gateway table implementation is + * not part of lwIP but can e.g. be hidden in the netif's state argument. +*/ +#ifdef __DOXYGEN__ +#define LWIP_HOOK_ETHARP_GET_GW(netif, dest) +#endif + +/** + * LWIP_HOOK_IP6_INPUT(pbuf, input_netif): + * - called from ip6_input() (IPv6) + * - pbuf: received struct pbuf passed to ip6_input() + * - input_netif: struct netif on which the packet has been received + * Return values: + * - 0: Hook has not consumed the packet, packet is processed as normal + * - != 0: Hook has consumed the packet. + * If the hook consumed the packet, 'pbuf' is in the responsibility of the hook + * (i.e. free it when done). + */ +#ifdef __DOXYGEN__ +#define LWIP_HOOK_IP6_INPUT(pbuf, input_netif) +#endif + +/** + * LWIP_HOOK_IP6_ROUTE(src, dest): + * - called from ip6_route() (IPv6) + * - src: sourc IPv6 address + * - dest: destination IPv6 address + * Returns the destination netif or NULL if no destination netif is found. In + * that case, ip6_route() continues as normal. + */ +#ifdef __DOXYGEN__ +#define LWIP_HOOK_IP6_ROUTE(src, dest) +#endif + +/** + * LWIP_HOOK_ND6_GET_GW(netif, dest): + * - called from nd6_get_next_hop_entry() (IPv6) + * - netif: the netif used for sending + * - dest: the destination IPv6 address + * Returns the IPv6 address of the next hop to handle the specified destination + * IPv6 address. If NULL is returned, a NDP-discovered router is used instead. + * The returned address MUST be directly reachable on the specified netif! + * This function is meant to implement advanced IPv6 routing together with + * LWIP_HOOK_IP6_ROUTE(). The actual routing/gateway table implementation is + * not part of lwIP but can e.g. be hidden in the netif's state argument. +*/ +#ifdef __DOXYGEN__ +#define LWIP_HOOK_ND6_GET_GW(netif, dest) +#endif + +/** + * LWIP_HOOK_VLAN_CHECK(netif, eth_hdr, vlan_hdr): + * - called from ethernet_input() if VLAN support is enabled + * - netif: struct netif on which the packet has been received + * - eth_hdr: struct eth_hdr of the packet + * - vlan_hdr: struct eth_vlan_hdr of the packet + * Return values: + * - 0: Packet must be dropped. + * - != 0: Packet must be accepted. + */ +#ifdef __DOXYGEN__ +#define LWIP_HOOK_VLAN_CHECK(netif, eth_hdr, vlan_hdr) +#endif + +/** + * LWIP_HOOK_VLAN_SET: + * Hook can be used to set prio_vid field of vlan_hdr. If you need to store data + * on per-netif basis to implement this callback, see @ref netif_cd. + * Called from ethernet_output() if VLAN support (@ref ETHARP_SUPPORT_VLAN) is enabled.\n + * Signature: s32_t my_hook_vlan_set(struct netif* netif, struct pbuf* pbuf, const struct eth_addr* src, const struct eth_addr* dst, u16_t eth_type);\n + * Arguments: + * - netif: struct netif that the packet will be sent through + * - p: struct pbuf packet to be sent + * - src: source eth address + * - dst: destination eth address + * - eth_type: ethernet type to packet to be sent\n + * + * + * Return values: + * - <0: Packet shall not contain VLAN header. + * - 0 <= return value <= 0xFFFF: Packet shall contain VLAN header. Return value is prio_vid in host byte order. + */ +#ifdef __DOXYGEN__ +#define LWIP_HOOK_VLAN_SET(netif, p, src, dst, eth_type) +#endif + +/** + * LWIP_HOOK_MEMP_AVAILABLE(memp_t_type): + * - called from memp_free() when a memp pool was empty and an item is now available + */ +#ifdef __DOXYGEN__ +#define LWIP_HOOK_MEMP_AVAILABLE(memp_t_type) +#endif + +/** + * LWIP_HOOK_UNKNOWN_ETH_PROTOCOL(pbuf, netif): + * Called from ethernet_input() when an unknown eth type is encountered. + * Return ERR_OK if packet is accepted, any error code otherwise. + * Payload points to ethernet header! + */ +#ifdef __DOXYGEN__ +#define LWIP_HOOK_UNKNOWN_ETH_PROTOCOL(pbuf, netif) +#endif +/** + * @} + */ + +/* + --------------------------------------- + ---------- Debugging options ---------- + --------------------------------------- +*/ +/** + * @defgroup lwip_opts_debugmsg Debug messages + * @ingroup lwip_opts_debug + * @{ + */ +/** + * LWIP_DBG_MIN_LEVEL: After masking, the value of the debug is + * compared against this value. If it is smaller, then debugging + * messages are written. + * @see debugging_levels + */ +#if !defined LWIP_DBG_MIN_LEVEL || defined __DOXYGEN__ +#define LWIP_DBG_MIN_LEVEL LWIP_DBG_LEVEL_ALL +#endif + + +/** + * LWIP_DBG_TYPES_ON: A mask that can be used to globally enable/disable + * debug messages of certain types. + * @see debugging_levels + */ +#if !defined LWIP_DBG_TYPES_ON || defined __DOXYGEN__ +#define LWIP_DBG_TYPES_ON (LWIP_DBG_ON|LWIP_DBG_TRACE|LWIP_DBG_STATE|LWIP_DBG_FRESH) +#endif + +/** + * ETHARP_DEBUG: Enable debugging in etharp.c. + */ +#if !defined ETHARP_DEBUG || defined __DOXYGEN__ +#define ETHARP_DEBUG LWIP_DBG_OFF//LWIP_DBG_OFF +#endif + +/** + * NETIF_DEBUG: Enable debugging in netif.c. + */ +#if !defined NETIF_DEBUG || defined __DOXYGEN__ +#define NETIF_DEBUG LWIP_DBG_OFF//LWIP_DBG_OFF +#endif + +/** + * PBUF_DEBUG: Enable debugging in pbuf.c. + */ +#if !defined PBUF_DEBUG || defined __DOXYGEN__ +#define PBUF_DEBUG LWIP_DBG_OFF//LWIP_DBG_OFF +#endif + +/** + * API_LIB_DEBUG: Enable debugging in api_lib.c. + */ +#if !defined API_LIB_DEBUG || defined __DOXYGEN__ +#define API_LIB_DEBUG LWIP_DBG_OFF//LWIP_DBG_OFF +#endif + +/** + * API_MSG_DEBUG: Enable debugging in api_msg.c. + */ +#if !defined API_MSG_DEBUG || defined __DOXYGEN__ +#define API_MSG_DEBUG LWIP_DBG_OFF//LWIP_DBG_OFF +#endif + +/** + * SOCKETS_DEBUG: Enable debugging in sockets.c. + */ +#if !defined SOCKETS_DEBUG || defined __DOXYGEN__ +#define SOCKETS_DEBUG LWIP_DBG_OFF +#endif + +/** + * ICMP_DEBUG: Enable debugging in icmp.c. + */ +#if !defined ICMP_DEBUG || defined __DOXYGEN__ +#define ICMP_DEBUG LWIP_DBG_OFF//LWIP_DBG_OFF +#endif + +/** + * IGMP_DEBUG: Enable debugging in igmp.c. + */ +#if !defined IGMP_DEBUG || defined __DOXYGEN__ +#define IGMP_DEBUG LWIP_DBG_OFF//LWIP_DBG_OFF +#endif + +/** + * INET_DEBUG: Enable debugging in inet.c. + */ +#if !defined INET_DEBUG || defined __DOXYGEN__ +//#define INET_DEBUG LWIP_DBG_OFF +#define INET_DEBUG LWIP_DBG_TYPES_ON +#endif + +/** + * IP_DEBUG: Enable debugging for IP. + */ +#if !defined IP_DEBUG || defined __DOXYGEN__ +//#define IP_DEBUG LWIP_DBG_OFF +#define IP_DEBUG LWIP_DBG_TYPES_ON +#endif + +/** + * IP_REASS_DEBUG: Enable debugging in ip_frag.c for both frag & reass. + */ +#if !defined IP_REASS_DEBUG || defined __DOXYGEN__ +#define IP_REASS_DEBUG LWIP_DBG_OFF//LWIP_DBG_OFF +#endif + +/** + * RAW_DEBUG: Enable debugging in raw.c. + */ +#if !defined RAW_DEBUG || defined __DOXYGEN__ +#define RAW_DEBUG LWIP_DBG_OFF//LWIP_DBG_OFF +#endif + +/** + * MEM_DEBUG: Enable debugging in mem.c. + */ +#if !defined MEM_DEBUG || defined __DOXYGEN__ +#define MEM_DEBUG LWIP_DBG_OFF//LWIP_DBG_OFF +#endif + +/** + * MEMP_DEBUG: Enable debugging in memp.c. + */ +#if !defined MEMP_DEBUG || defined __DOXYGEN__ +#define MEMP_DEBUG LWIP_DBG_OFF//LWIP_DBG_OFF +#endif + +/** + * SYS_DEBUG: Enable debugging in sys.c. + */ +#if !defined SYS_DEBUG || defined __DOXYGEN__ +#define SYS_DEBUG LWIP_DBG_OFF//LWIP_DBG_OFF +#endif + +/** + * TIMERS_DEBUG: Enable debugging in timers.c. + */ +#if !defined TIMERS_DEBUG || defined __DOXYGEN__ +#define TIMERS_DEBUG LWIP_DBG_OFF +#endif + +/** + * TCP_DEBUG: Enable debugging for TCP. + */ +#if !defined TCP_DEBUG || defined __DOXYGEN__ +#define TCP_DEBUG LWIP_DBG_OFF//LWIP_DBG_OFF +#endif + +/** + * TCP_INPUT_DEBUG: Enable debugging in tcp_in.c for incoming debug. + */ +#if !defined TCP_INPUT_DEBUG || defined __DOXYGEN__ +#define TCP_INPUT_DEBUG LWIP_DBG_OFF//LWIP_DBG_OFF +#endif + +/** + * TCP_FR_DEBUG: Enable debugging in tcp_in.c for fast retransmit. + */ +#if !defined TCP_FR_DEBUG || defined __DOXYGEN__ +#define TCP_FR_DEBUG LWIP_DBG_OFF//LWIP_DBG_OFF +#endif + +/** + * TCP_RTO_DEBUG: Enable debugging in TCP for retransmit + * timeout. + */ +#if !defined TCP_RTO_DEBUG || defined __DOXYGEN__ +#define TCP_RTO_DEBUG LWIP_DBG_OFF//LWIP_DBG_OFF +#endif + +/** + * TCP_CWND_DEBUG: Enable debugging for TCP congestion window. + */ +#if !defined TCP_CWND_DEBUG || defined __DOXYGEN__ +#define TCP_CWND_DEBUG LWIP_DBG_OFF//LWIP_DBG_OFF +#endif + +/** + * TCP_WND_DEBUG: Enable debugging in tcp_in.c for window updating. + */ +#if !defined TCP_WND_DEBUG || defined __DOXYGEN__ +#define TCP_WND_DEBUG LWIP_DBG_OFF//LWIP_DBG_OFF +#endif + +/** + * TCP_OUTPUT_DEBUG: Enable debugging in tcp_out.c output functions. + */ +#if !defined TCP_OUTPUT_DEBUG || defined __DOXYGEN__ +#define TCP_OUTPUT_DEBUG LWIP_DBG_OFF//LWIP_DBG_OFF +#endif + +/** + * TCP_RST_DEBUG: Enable debugging for TCP with the RST message. + */ +#if !defined TCP_RST_DEBUG || defined __DOXYGEN__ +#define TCP_RST_DEBUG LWIP_DBG_OFF//LWIP_DBG_OFF +#endif + +/** + * TCP_QLEN_DEBUG: Enable debugging for TCP queue lengths. + */ +#if !defined TCP_QLEN_DEBUG || defined __DOXYGEN__ +#define TCP_QLEN_DEBUG LWIP_DBG_OFF//LWIP_DBG_OFF +#endif + +/** + * UDP_DEBUG: Enable debugging in UDP. + */ +#if !defined UDP_DEBUG || defined __DOXYGEN__ +//#define UDP_DEBUG LWIP_DBG_OFF +#define UDP_DEBUG LWIP_DBG_TYPES_ON +#endif + +/** + * TCPIP_DEBUG: Enable debugging in tcpip.c. + */ +#if !defined TCPIP_DEBUG || defined __DOXYGEN__ +#define TCPIP_DEBUG LWIP_DBG_OFF +//#define TCPIP_DEBUG LWIP_DBG_TYPES_ON +#endif + +/** + * SLIP_DEBUG: Enable debugging in slipif.c. + */ +#if !defined SLIP_DEBUG || defined __DOXYGEN__ +#define SLIP_DEBUG LWIP_DBG_OFF//LWIP_DBG_OFF +#endif + +/** + * DHCP_DEBUG: Enable debugging in dhcp.c. + */ +#if !defined DHCP_DEBUG || defined __DOXYGEN__ +//#define DHCP_DEBUG LWIP_DBG_OFF +#define DHCP_DEBUG LWIP_DBG_TYPES_ON +#endif + +/** + * AUTOIP_DEBUG: Enable debugging in autoip.c. + */ +#if !defined AUTOIP_DEBUG || defined __DOXYGEN__ +#define AUTOIP_DEBUG LWIP_DBG_OFF//LWIP_DBG_OFF +#endif + +/** + * DNS_DEBUG: Enable debugging for DNS. + */ +#if !defined DNS_DEBUG || defined __DOXYGEN__ +#define DNS_DEBUG LWIP_DBG_OFF//LWIP_DBG_OFF +#endif + +/** + * IP6_DEBUG: Enable debugging for IPv6. + */ +#if !defined IP6_DEBUG || defined __DOXYGEN__ +#define IP6_DEBUG LWIP_DBG_OFF//LWIP_DBG_OFF +#endif +/** + * @} + */ + +/* + -------------------------------------------------- + ---------- Performance tracking options ---------- + -------------------------------------------------- +*/ +/** + * @defgroup lwip_opts_perf Performance + * @ingroup lwip_opts_debug + * @{ + */ +/** + * LWIP_PERF: Enable performance testing for lwIP + * (if enabled, arch/perf.h is included) + */ +#if !defined LWIP_PERF || defined __DOXYGEN__ +#define LWIP_PERF 0 +#endif +/** + * @} + */ + + +/* + -------------------------------------------------- + ------------------ SNTP options ------------------ + -------------------------------------------------- +*/ +#define SNTP_SERVER_DNS 1 // SNTP support DNS names through sntp_setservername / sntp_getservername +#define SNTP_SERVER_ADDRESS "pool.ntp.org" // default +#define SNTP_GET_SERVERS_FROM_DHCP 1 +#define SNTP_SET_SYSTEM_TIME(t) (sntp_set_system_time(t)) // implemented in lwip2-sntp.c + +/* + -------------------------------------------------- + -------------------------------------------------- +*/ + +#include "lwip/debug.h" +#include "arch/cc.h" +#include "lwip-git-hash.h" + +#endif // MYLWIPOPTS_H diff --git a/tools/sdk/lwip2/include/netif/etharp.h b/tools/sdk/lwip2/include/netif/etharp.h new file mode 100644 index 000000000..b536fd280 --- /dev/null +++ b/tools/sdk/lwip2/include/netif/etharp.h @@ -0,0 +1,3 @@ +/* ARP has been moved to core/ipv4, provide this #include for compatibility only */ +#include "lwip/etharp.h" +#include "netif/ethernet.h" diff --git a/tools/sdk/lwip2/include/netif/ethernet.h b/tools/sdk/lwip2/include/netif/ethernet.h new file mode 100644 index 000000000..49649cbf8 --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ethernet.h @@ -0,0 +1,77 @@ +/** + * @file + * Ethernet input function - handles INCOMING ethernet level traffic + * To be used in most low-level netif implementations + */ + +/* + * Copyright (c) 2001-2003 Swedish Institute of Computer Science. + * Copyright (c) 2003-2004 Leon Woestenberg + * Copyright (c) 2003-2004 Axon Digital Design B.V., The Netherlands. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ + +#ifndef LWIP_HDR_NETIF_ETHERNET_H +#define LWIP_HDR_NETIF_ETHERNET_H + +#include "lwip/opt.h" + +#include "lwip/pbuf.h" +#include "lwip/netif.h" +#include "lwip/prot/ethernet.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if LWIP_ARP || LWIP_ETHERNET + +/** Define this to 1 and define LWIP_ARP_FILTER_NETIF_FN(pbuf, netif, type) + * to a filter function that returns the correct netif when using multiple + * netifs on one hardware interface where the netif's low-level receive + * routine cannot decide for the correct netif (e.g. when mapping multiple + * IP addresses to one hardware interface). + */ +#ifndef LWIP_ARP_FILTER_NETIF +#define LWIP_ARP_FILTER_NETIF 0 +#endif + +err_t ethernet_input(struct pbuf *p, struct netif *netif); +err_t ethernet_output(struct netif* netif, struct pbuf* p, const struct eth_addr* src, const struct eth_addr* dst, u16_t eth_type); + +extern const struct eth_addr ethbroadcast, ethzero; + +#endif /* LWIP_ARP || LWIP_ETHERNET */ + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_NETIF_ETHERNET_H */ diff --git a/tools/sdk/lwip2/include/netif/lowpan6.h b/tools/sdk/lwip2/include/netif/lowpan6.h new file mode 100644 index 000000000..4174644bb --- /dev/null +++ b/tools/sdk/lwip2/include/netif/lowpan6.h @@ -0,0 +1,86 @@ +/** + * @file + * + * 6LowPAN output for IPv6. Uses ND tables for link-layer addressing. Fragments packets to 6LowPAN units. + */ + +/* + * Copyright (c) 2015 Inico Technologies Ltd. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Ivan Delamer + * + * + * Please coordinate changes and requests with Ivan Delamer + * + */ + +#ifndef LWIP_HDR_LOWPAN6_H +#define LWIP_HDR_LOWPAN6_H + +#include "netif/lowpan6_opts.h" + +#if LWIP_IPV6 && LWIP_6LOWPAN /* don't build if not configured for use in lwipopts.h */ + +#include "lwip/pbuf.h" +#include "lwip/ip.h" +#include "lwip/ip_addr.h" +#include "lwip/netif.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** 1 second period */ +#define LOWPAN6_TMR_INTERVAL 1000 + +void lowpan6_tmr(void); + +err_t lowpan6_set_context(u8_t index, const ip6_addr_t * context); +err_t lowpan6_set_short_addr(u8_t addr_high, u8_t addr_low); + +#if LWIP_IPV4 +err_t lowpan4_output(struct netif *netif, struct pbuf *q, const ip4_addr_t *ipaddr); +#endif /* LWIP_IPV4 */ +err_t lowpan6_output(struct netif *netif, struct pbuf *q, const ip6_addr_t *ip6addr); +err_t lowpan6_input(struct pbuf * p, struct netif *netif); +err_t lowpan6_if_init(struct netif *netif); + +/* pan_id in network byte order. */ +err_t lowpan6_set_pan_id(u16_t pan_id); + +#if !NO_SYS +err_t tcpip_6lowpan_input(struct pbuf *p, struct netif *inp); +#endif /* !NO_SYS */ + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_IPV6 && LWIP_6LOWPAN */ + +#endif /* LWIP_HDR_LOWPAN6_H */ diff --git a/tools/sdk/lwip2/include/netif/lowpan6_opts.h b/tools/sdk/lwip2/include/netif/lowpan6_opts.h new file mode 100644 index 000000000..fb93ea05d --- /dev/null +++ b/tools/sdk/lwip2/include/netif/lowpan6_opts.h @@ -0,0 +1,70 @@ +/** + * @file + * 6LowPAN options list + */ + +/* + * Copyright (c) 2015 Inico Technologies Ltd. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Ivan Delamer + * + * + * Please coordinate changes and requests with Ivan Delamer + * + */ + +#ifndef LWIP_HDR_LOWPAN6_OPTS_H +#define LWIP_HDR_LOWPAN6_OPTS_H + +#include "lwip/opt.h" + +#ifndef LWIP_6LOWPAN +#define LWIP_6LOWPAN 0 +#endif + +#ifndef LWIP_6LOWPAN_NUM_CONTEXTS +#define LWIP_6LOWPAN_NUM_CONTEXTS 10 +#endif + +#ifndef LWIP_6LOWPAN_INFER_SHORT_ADDRESS +#define LWIP_6LOWPAN_INFER_SHORT_ADDRESS 1 +#endif + +#ifndef LWIP_6LOWPAN_IPHC +#define LWIP_6LOWPAN_IPHC 1 +#endif + +#ifndef LWIP_6LOWPAN_HW_CRC +#define LWIP_6LOWPAN_HW_CRC 1 +#endif + +#ifndef LOWPAN6_DEBUG +#define LOWPAN6_DEBUG LWIP_DBG_OFF +#endif + +#endif /* LWIP_HDR_LOWPAN6_OPTS_H */ diff --git a/tools/sdk/lwip2/include/netif/ppp/ccp.h b/tools/sdk/lwip2/include/netif/ppp/ccp.h new file mode 100644 index 000000000..14dd65962 --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/ccp.h @@ -0,0 +1,156 @@ +/* + * ccp.h - Definitions for PPP Compression Control Protocol. + * + * Copyright (c) 1994-2002 Paul Mackerras. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. The name(s) of the authors of this software must not be used to + * endorse or promote products derived from this software without + * prior written permission. + * + * 3. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by Paul Mackerras + * ". + * + * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO + * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY + * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $Id: ccp.h,v 1.12 2004/11/04 10:02:26 paulus Exp $ + */ + +#include "netif/ppp/ppp_opts.h" +#if PPP_SUPPORT && CCP_SUPPORT /* don't build if not configured for use in lwipopts.h */ + +#ifndef CCP_H +#define CCP_H + +/* + * CCP codes. + */ + +#define CCP_CONFREQ 1 +#define CCP_CONFACK 2 +#define CCP_TERMREQ 5 +#define CCP_TERMACK 6 +#define CCP_RESETREQ 14 +#define CCP_RESETACK 15 + +/* + * Max # bytes for a CCP option + */ + +#define CCP_MAX_OPTION_LENGTH 32 + +/* + * Parts of a CCP packet. + */ + +#define CCP_CODE(dp) ((dp)[0]) +#define CCP_ID(dp) ((dp)[1]) +#define CCP_LENGTH(dp) (((dp)[2] << 8) + (dp)[3]) +#define CCP_HDRLEN 4 + +#define CCP_OPT_CODE(dp) ((dp)[0]) +#define CCP_OPT_LENGTH(dp) ((dp)[1]) +#define CCP_OPT_MINLEN 2 + +#if BSDCOMPRESS_SUPPORT +/* + * Definitions for BSD-Compress. + */ + +#define CI_BSD_COMPRESS 21 /* config. option for BSD-Compress */ +#define CILEN_BSD_COMPRESS 3 /* length of config. option */ + +/* Macros for handling the 3rd byte of the BSD-Compress config option. */ +#define BSD_NBITS(x) ((x) & 0x1F) /* number of bits requested */ +#define BSD_VERSION(x) ((x) >> 5) /* version of option format */ +#define BSD_CURRENT_VERSION 1 /* current version number */ +#define BSD_MAKE_OPT(v, n) (((v) << 5) | (n)) + +#define BSD_MIN_BITS 9 /* smallest code size supported */ +#define BSD_MAX_BITS 15 /* largest code size supported */ +#endif /* BSDCOMPRESS_SUPPORT */ + +#if DEFLATE_SUPPORT +/* + * Definitions for Deflate. + */ + +#define CI_DEFLATE 26 /* config option for Deflate */ +#define CI_DEFLATE_DRAFT 24 /* value used in original draft RFC */ +#define CILEN_DEFLATE 4 /* length of its config option */ + +#define DEFLATE_MIN_SIZE 9 +#define DEFLATE_MAX_SIZE 15 +#define DEFLATE_METHOD_VAL 8 +#define DEFLATE_SIZE(x) (((x) >> 4) + 8) +#define DEFLATE_METHOD(x) ((x) & 0x0F) +#define DEFLATE_MAKE_OPT(w) ((((w) - 8) << 4) + DEFLATE_METHOD_VAL) +#define DEFLATE_CHK_SEQUENCE 0 +#endif /* DEFLATE_SUPPORT */ + +#if MPPE_SUPPORT +/* + * Definitions for MPPE. + */ + +#define CI_MPPE 18 /* config option for MPPE */ +#define CILEN_MPPE 6 /* length of config option */ +#endif /* MPPE_SUPPORT */ + +#if PREDICTOR_SUPPORT +/* + * Definitions for other, as yet unsupported, compression methods. + */ + +#define CI_PREDICTOR_1 1 /* config option for Predictor-1 */ +#define CILEN_PREDICTOR_1 2 /* length of its config option */ +#define CI_PREDICTOR_2 2 /* config option for Predictor-2 */ +#define CILEN_PREDICTOR_2 2 /* length of its config option */ +#endif /* PREDICTOR_SUPPORT */ + +typedef struct ccp_options { +#if DEFLATE_SUPPORT + unsigned int deflate :1; /* do Deflate? */ + unsigned int deflate_correct :1; /* use correct code for deflate? */ + unsigned int deflate_draft :1; /* use draft RFC code for deflate? */ +#endif /* DEFLATE_SUPPORT */ +#if BSDCOMPRESS_SUPPORT + unsigned int bsd_compress :1; /* do BSD Compress? */ +#endif /* BSDCOMPRESS_SUPPORT */ +#if PREDICTOR_SUPPORT + unsigned int predictor_1 :1; /* do Predictor-1? */ + unsigned int predictor_2 :1; /* do Predictor-2? */ +#endif /* PREDICTOR_SUPPORT */ + +#if MPPE_SUPPORT + u8_t mppe; /* MPPE bitfield */ +#endif /* MPPE_SUPPORT */ +#if BSDCOMPRESS_SUPPORT + u_short bsd_bits; /* # bits/code for BSD Compress */ +#endif /* BSDCOMPRESS_SUPPORT */ +#if DEFLATE_SUPPORT + u_short deflate_size; /* lg(window size) for Deflate */ +#endif /* DEFLATE_SUPPORT */ + u8_t method; /* code for chosen compression method */ +} ccp_options; + +extern const struct protent ccp_protent; + +void ccp_resetrequest(ppp_pcb *pcb); /* Issue a reset-request. */ + +#endif /* CCP_H */ +#endif /* PPP_SUPPORT && CCP_SUPPORT */ diff --git a/tools/sdk/lwip2/include/netif/ppp/chap-md5.h b/tools/sdk/lwip2/include/netif/ppp/chap-md5.h new file mode 100644 index 000000000..eb0269fe5 --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/chap-md5.h @@ -0,0 +1,36 @@ +/* + * chap-md5.h - New CHAP/MD5 implementation. + * + * Copyright (c) 2003 Paul Mackerras. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. The name(s) of the authors of this software must not be used to + * endorse or promote products derived from this software without + * prior written permission. + * + * 3. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by Paul Mackerras + * ". + * + * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO + * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY + * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "netif/ppp/ppp_opts.h" +#if PPP_SUPPORT && CHAP_SUPPORT /* don't build if not configured for use in lwipopts.h */ + +extern const struct chap_digest_type md5_digest; + +#endif /* PPP_SUPPORT && CHAP_SUPPORT */ diff --git a/tools/sdk/lwip2/include/netif/ppp/chap-new.h b/tools/sdk/lwip2/include/netif/ppp/chap-new.h new file mode 100644 index 000000000..64eae3220 --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/chap-new.h @@ -0,0 +1,192 @@ +/* + * chap-new.c - New CHAP implementation. + * + * Copyright (c) 2003 Paul Mackerras. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. The name(s) of the authors of this software must not be used to + * endorse or promote products derived from this software without + * prior written permission. + * + * 3. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by Paul Mackerras + * ". + * + * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO + * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY + * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "netif/ppp/ppp_opts.h" +#if PPP_SUPPORT && CHAP_SUPPORT /* don't build if not configured for use in lwipopts.h */ + +#ifndef CHAP_H +#define CHAP_H + +#include "ppp.h" + +/* + * CHAP packets begin with a standard header with code, id, len (2 bytes). + */ +#define CHAP_HDRLEN 4 + +/* + * Values for the code field. + */ +#define CHAP_CHALLENGE 1 +#define CHAP_RESPONSE 2 +#define CHAP_SUCCESS 3 +#define CHAP_FAILURE 4 + +/* + * CHAP digest codes. + */ +#define CHAP_MD5 5 +#if MSCHAP_SUPPORT +#define CHAP_MICROSOFT 0x80 +#define CHAP_MICROSOFT_V2 0x81 +#endif /* MSCHAP_SUPPORT */ + +/* + * Semi-arbitrary limits on challenge and response fields. + */ +#define MAX_CHALLENGE_LEN 64 +#define MAX_RESPONSE_LEN 64 + +/* + * These limits apply to challenge and response packets we send. + * The +4 is the +1 that we actually need rounded up. + */ +#define CHAL_MAX_PKTLEN (PPP_HDRLEN + CHAP_HDRLEN + 4 + MAX_CHALLENGE_LEN + MAXNAMELEN) +#define RESP_MAX_PKTLEN (PPP_HDRLEN + CHAP_HDRLEN + 4 + MAX_RESPONSE_LEN + MAXNAMELEN) + +/* bitmask of supported algorithms */ +#if MSCHAP_SUPPORT +#define MDTYPE_MICROSOFT_V2 0x1 +#define MDTYPE_MICROSOFT 0x2 +#endif /* MSCHAP_SUPPORT */ +#define MDTYPE_MD5 0x4 +#define MDTYPE_NONE 0 + +#if MSCHAP_SUPPORT +/* Return the digest alg. ID for the most preferred digest type. */ +#define CHAP_DIGEST(mdtype) \ + ((mdtype) & MDTYPE_MD5)? CHAP_MD5: \ + ((mdtype) & MDTYPE_MICROSOFT_V2)? CHAP_MICROSOFT_V2: \ + ((mdtype) & MDTYPE_MICROSOFT)? CHAP_MICROSOFT: \ + 0 +#else /* !MSCHAP_SUPPORT */ +#define CHAP_DIGEST(mdtype) \ + ((mdtype) & MDTYPE_MD5)? CHAP_MD5: \ + 0 +#endif /* MSCHAP_SUPPORT */ + +/* Return the bit flag (lsb set) for our most preferred digest type. */ +#define CHAP_MDTYPE(mdtype) ((mdtype) ^ ((mdtype) - 1)) & (mdtype) + +/* Return the bit flag for a given digest algorithm ID. */ +#if MSCHAP_SUPPORT +#define CHAP_MDTYPE_D(digest) \ + ((digest) == CHAP_MICROSOFT_V2)? MDTYPE_MICROSOFT_V2: \ + ((digest) == CHAP_MICROSOFT)? MDTYPE_MICROSOFT: \ + ((digest) == CHAP_MD5)? MDTYPE_MD5: \ + 0 +#else /* !MSCHAP_SUPPORT */ +#define CHAP_MDTYPE_D(digest) \ + ((digest) == CHAP_MD5)? MDTYPE_MD5: \ + 0 +#endif /* MSCHAP_SUPPORT */ + +/* Can we do the requested digest? */ +#if MSCHAP_SUPPORT +#define CHAP_CANDIGEST(mdtype, digest) \ + ((digest) == CHAP_MICROSOFT_V2)? (mdtype) & MDTYPE_MICROSOFT_V2: \ + ((digest) == CHAP_MICROSOFT)? (mdtype) & MDTYPE_MICROSOFT: \ + ((digest) == CHAP_MD5)? (mdtype) & MDTYPE_MD5: \ + 0 +#else /* !MSCHAP_SUPPORT */ +#define CHAP_CANDIGEST(mdtype, digest) \ + ((digest) == CHAP_MD5)? (mdtype) & MDTYPE_MD5: \ + 0 +#endif /* MSCHAP_SUPPORT */ + +/* + * The code for each digest type has to supply one of these. + */ +struct chap_digest_type { + int code; + +#if PPP_SERVER + /* + * Note: challenge and response arguments below are formatted as + * a length byte followed by the actual challenge/response data. + */ + void (*generate_challenge)(ppp_pcb *pcb, unsigned char *challenge); + int (*verify_response)(ppp_pcb *pcb, int id, const char *name, + const unsigned char *secret, int secret_len, + const unsigned char *challenge, const unsigned char *response, + char *message, int message_space); +#endif /* PPP_SERVER */ + void (*make_response)(ppp_pcb *pcb, unsigned char *response, int id, const char *our_name, + const unsigned char *challenge, const char *secret, int secret_len, + unsigned char *priv); + int (*check_success)(ppp_pcb *pcb, unsigned char *pkt, int len, unsigned char *priv); + void (*handle_failure)(ppp_pcb *pcb, unsigned char *pkt, int len); +}; + +/* + * Each interface is described by chap structure. + */ +#if CHAP_SUPPORT +typedef struct chap_client_state { + u8_t flags; + const char *name; + const struct chap_digest_type *digest; + unsigned char priv[64]; /* private area for digest's use */ +} chap_client_state; + +#if PPP_SERVER +typedef struct chap_server_state { + u8_t flags; + u8_t id; + const char *name; + const struct chap_digest_type *digest; + int challenge_xmits; + int challenge_pktlen; + unsigned char challenge[CHAL_MAX_PKTLEN]; +} chap_server_state; +#endif /* PPP_SERVER */ +#endif /* CHAP_SUPPORT */ + +#if 0 /* UNUSED */ +/* Hook for a plugin to validate CHAP challenge */ +extern int (*chap_verify_hook)(char *name, char *ourname, int id, + const struct chap_digest_type *digest, + unsigned char *challenge, unsigned char *response, + char *message, int message_space); +#endif /* UNUSED */ + +#if PPP_SERVER +/* Called by authentication code to start authenticating the peer. */ +extern void chap_auth_peer(ppp_pcb *pcb, const char *our_name, int digest_code); +#endif /* PPP_SERVER */ + +/* Called by auth. code to start authenticating us to the peer. */ +extern void chap_auth_with_peer(ppp_pcb *pcb, const char *our_name, int digest_code); + +/* Represents the CHAP protocol to the main pppd code */ +extern const struct protent chap_protent; + +#endif /* CHAP_H */ +#endif /* PPP_SUPPORT && CHAP_SUPPORT */ diff --git a/tools/sdk/lwip2/include/netif/ppp/chap_ms.h b/tools/sdk/lwip2/include/netif/ppp/chap_ms.h new file mode 100644 index 000000000..079529115 --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/chap_ms.h @@ -0,0 +1,44 @@ +/* + * chap_ms.h - Challenge Handshake Authentication Protocol definitions. + * + * Copyright (c) 1995 Eric Rosenquist. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The name(s) of the authors of this software must not be used to + * endorse or promote products derived from this software without + * prior written permission. + * + * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO + * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY + * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $Id: chap_ms.h,v 1.13 2004/11/15 22:13:26 paulus Exp $ + */ + +#include "netif/ppp/ppp_opts.h" +#if PPP_SUPPORT && MSCHAP_SUPPORT /* don't build if not configured for use in lwipopts.h */ + +#ifndef CHAPMS_INCLUDE +#define CHAPMS_INCLUDE + +extern const struct chap_digest_type chapms_digest; +extern const struct chap_digest_type chapms2_digest; + +#endif /* CHAPMS_INCLUDE */ + +#endif /* PPP_SUPPORT && MSCHAP_SUPPORT */ diff --git a/tools/sdk/lwip2/include/netif/ppp/eap.h b/tools/sdk/lwip2/include/netif/ppp/eap.h new file mode 100644 index 000000000..3ee9aaf81 --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/eap.h @@ -0,0 +1,169 @@ +/* + * eap.h - Extensible Authentication Protocol for PPP (RFC 2284) + * + * Copyright (c) 2001 by Sun Microsystems, Inc. + * All rights reserved. + * + * Non-exclusive rights to redistribute, modify, translate, and use + * this software in source and binary forms, in whole or in part, is + * hereby granted, provided that the above copyright notice is + * duplicated in any source form, and that neither the name of the + * copyright holder nor the author is used to endorse or promote + * products derived from this software. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. + * + * Original version by James Carlson + * + * $Id: eap.h,v 1.2 2003/06/11 23:56:26 paulus Exp $ + */ + +#include "netif/ppp/ppp_opts.h" +#if PPP_SUPPORT && EAP_SUPPORT /* don't build if not configured for use in lwipopts.h */ + +#ifndef PPP_EAP_H +#define PPP_EAP_H + +#include "ppp.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Packet header = Code, id, length. + */ +#define EAP_HEADERLEN 4 + + +/* EAP message codes. */ +#define EAP_REQUEST 1 +#define EAP_RESPONSE 2 +#define EAP_SUCCESS 3 +#define EAP_FAILURE 4 + +/* EAP types */ +#define EAPT_IDENTITY 1 +#define EAPT_NOTIFICATION 2 +#define EAPT_NAK 3 /* (response only) */ +#define EAPT_MD5CHAP 4 +#define EAPT_OTP 5 /* One-Time Password; RFC 1938 */ +#define EAPT_TOKEN 6 /* Generic Token Card */ +/* 7 and 8 are unassigned. */ +#define EAPT_RSA 9 /* RSA Public Key Authentication */ +#define EAPT_DSS 10 /* DSS Unilateral */ +#define EAPT_KEA 11 /* KEA */ +#define EAPT_KEA_VALIDATE 12 /* KEA-VALIDATE */ +#define EAPT_TLS 13 /* EAP-TLS */ +#define EAPT_DEFENDER 14 /* Defender Token (AXENT) */ +#define EAPT_W2K 15 /* Windows 2000 EAP */ +#define EAPT_ARCOT 16 /* Arcot Systems */ +#define EAPT_CISCOWIRELESS 17 /* Cisco Wireless */ +#define EAPT_NOKIACARD 18 /* Nokia IP smart card */ +#define EAPT_SRP 19 /* Secure Remote Password */ +/* 20 is deprecated */ + +/* EAP SRP-SHA1 Subtypes */ +#define EAPSRP_CHALLENGE 1 /* Request 1 - Challenge */ +#define EAPSRP_CKEY 1 /* Response 1 - Client Key */ +#define EAPSRP_SKEY 2 /* Request 2 - Server Key */ +#define EAPSRP_CVALIDATOR 2 /* Response 2 - Client Validator */ +#define EAPSRP_SVALIDATOR 3 /* Request 3 - Server Validator */ +#define EAPSRP_ACK 3 /* Response 3 - final ack */ +#define EAPSRP_LWRECHALLENGE 4 /* Req/resp 4 - Lightweight rechal */ + +#define SRPVAL_EBIT 0x00000001 /* Use shared key for ECP */ + +#define SRP_PSEUDO_ID "pseudo_" +#define SRP_PSEUDO_LEN 7 + +#define MD5_SIGNATURE_SIZE 16 +#define EAP_MIN_CHALLENGE_LENGTH 17 +#define EAP_MAX_CHALLENGE_LENGTH 24 +#define EAP_MIN_MAX_POWER_OF_TWO_CHALLENGE_LENGTH 3 /* 2^3-1 = 7, 17+7 = 24 */ + +#define EAP_STATES \ + "Initial", "Pending", "Closed", "Listen", "Identify", \ + "SRP1", "SRP2", "SRP3", "MD5Chall", "Open", "SRP4", "BadAuth" + +#define eap_client_active(pcb) ((pcb)->eap.es_client.ea_state == eapListen) +#if PPP_SERVER +#define eap_server_active(pcb) \ + ((pcb)->eap.es_server.ea_state >= eapIdentify && \ + (pcb)->eap.es_server.ea_state <= eapMD5Chall) +#endif /* PPP_SERVER */ + +/* + * Complete EAP state for one PPP session. + */ +enum eap_state_code { + eapInitial = 0, /* No EAP authentication yet requested */ + eapPending, /* Waiting for LCP (no timer) */ + eapClosed, /* Authentication not in use */ + eapListen, /* Client ready (and timer running) */ + eapIdentify, /* EAP Identify sent */ + eapSRP1, /* Sent EAP SRP-SHA1 Subtype 1 */ + eapSRP2, /* Sent EAP SRP-SHA1 Subtype 2 */ + eapSRP3, /* Sent EAP SRP-SHA1 Subtype 3 */ + eapMD5Chall, /* Sent MD5-Challenge */ + eapOpen, /* Completed authentication */ + eapSRP4, /* Sent EAP SRP-SHA1 Subtype 4 */ + eapBadAuth /* Failed authentication */ +}; + +struct eap_auth { + const char *ea_name; /* Our name */ + char ea_peer[MAXNAMELEN +1]; /* Peer's name */ + void *ea_session; /* Authentication library linkage */ + u_char *ea_skey; /* Shared encryption key */ + u_short ea_namelen; /* Length of our name */ + u_short ea_peerlen; /* Length of peer's name */ + enum eap_state_code ea_state; + u_char ea_id; /* Current id */ + u_char ea_requests; /* Number of Requests sent/received */ + u_char ea_responses; /* Number of Responses */ + u_char ea_type; /* One of EAPT_* */ + u32_t ea_keyflags; /* SRP shared key usage flags */ +}; + +#ifndef EAP_MAX_CHALLENGE_LENGTH +#define EAP_MAX_CHALLENGE_LENGTH 24 +#endif +typedef struct eap_state { + struct eap_auth es_client; /* Client (authenticatee) data */ +#if PPP_SERVER + struct eap_auth es_server; /* Server (authenticator) data */ +#endif /* PPP_SERVER */ + int es_savedtime; /* Saved timeout */ + int es_rechallenge; /* EAP rechallenge interval */ + int es_lwrechallenge; /* SRP lightweight rechallenge inter */ + u8_t es_usepseudo; /* Use SRP Pseudonym if offered one */ + int es_usedpseudo; /* Set if we already sent PN */ + int es_challen; /* Length of challenge string */ + u_char es_challenge[EAP_MAX_CHALLENGE_LENGTH]; +} eap_state; + +/* + * Timeouts. + */ +#if 0 /* moved to ppp_opts.h */ +#define EAP_DEFTIMEOUT 3 /* Timeout (seconds) for rexmit */ +#define EAP_DEFTRANSMITS 10 /* max # times to transmit */ +#define EAP_DEFREQTIME 20 /* Time to wait for peer request */ +#define EAP_DEFALLOWREQ 20 /* max # times to accept requests */ +#endif /* moved to ppp_opts.h */ + +void eap_authwithpeer(ppp_pcb *pcb, const char *localname); +void eap_authpeer(ppp_pcb *pcb, const char *localname); + +extern const struct protent eap_protent; + +#ifdef __cplusplus +} +#endif + +#endif /* PPP_EAP_H */ + +#endif /* PPP_SUPPORT && EAP_SUPPORT */ diff --git a/tools/sdk/lwip2/include/netif/ppp/ecp.h b/tools/sdk/lwip2/include/netif/ppp/ecp.h new file mode 100644 index 000000000..5cdce29d5 --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/ecp.h @@ -0,0 +1,50 @@ +/* + * ecp.h - Definitions for PPP Encryption Control Protocol. + * + * Copyright (c) 2002 Google, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The name(s) of the authors of this software must not be used to + * endorse or promote products derived from this software without + * prior written permission. + * + * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO + * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY + * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $Id: ecp.h,v 1.2 2003/01/10 07:12:36 fcusack Exp $ + */ + +#include "netif/ppp/ppp_opts.h" +#if PPP_SUPPORT && ECP_SUPPORT /* don't build if not configured for use in lwipopts.h */ + +typedef struct ecp_options { + bool required; /* Is ECP required? */ + unsigned enctype; /* Encryption type */ +} ecp_options; + +extern fsm ecp_fsm[]; +extern ecp_options ecp_wantoptions[]; +extern ecp_options ecp_gotoptions[]; +extern ecp_options ecp_allowoptions[]; +extern ecp_options ecp_hisoptions[]; + +extern const struct protent ecp_protent; + +#endif /* PPP_SUPPORT && ECP_SUPPORT */ diff --git a/tools/sdk/lwip2/include/netif/ppp/eui64.h b/tools/sdk/lwip2/include/netif/ppp/eui64.h new file mode 100644 index 000000000..20ac22eed --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/eui64.h @@ -0,0 +1,94 @@ +/* + * eui64.h - EUI64 routines for IPv6CP. + * + * Copyright (c) 1999 Tommi Komulainen. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The name(s) of the authors of this software must not be used to + * endorse or promote products derived from this software without + * prior written permission. + * + * 4. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by Tommi Komulainen + * ". + * + * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO + * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY + * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $Id: eui64.h,v 1.6 2002/12/04 23:03:32 paulus Exp $ +*/ + +#include "netif/ppp/ppp_opts.h" +#if PPP_SUPPORT && PPP_IPV6_SUPPORT /* don't build if not configured for use in lwipopts.h */ + +#ifndef EUI64_H +#define EUI64_H + +/* + * @todo: + * + * Maybe this should be done by processing struct in6_addr directly... + */ +typedef union +{ + u8_t e8[8]; + u16_t e16[4]; + u32_t e32[2]; +} eui64_t; + +#define eui64_iszero(e) (((e).e32[0] | (e).e32[1]) == 0) +#define eui64_equals(e, o) (((e).e32[0] == (o).e32[0]) && \ + ((e).e32[1] == (o).e32[1])) +#define eui64_zero(e) (e).e32[0] = (e).e32[1] = 0; + +#define eui64_copy(s, d) memcpy(&(d), &(s), sizeof(eui64_t)) + +#define eui64_magic(e) do { \ + (e).e32[0] = magic(); \ + (e).e32[1] = magic(); \ + (e).e8[0] &= ~2; \ + } while (0) +#define eui64_magic_nz(x) do { \ + eui64_magic(x); \ + } while (eui64_iszero(x)) +#define eui64_magic_ne(x, y) do { \ + eui64_magic(x); \ + } while (eui64_equals(x, y)) + +#define eui64_get(ll, cp) do { \ + eui64_copy((*cp), (ll)); \ + (cp) += sizeof(eui64_t); \ + } while (0) + +#define eui64_put(ll, cp) do { \ + eui64_copy((ll), (*cp)); \ + (cp) += sizeof(eui64_t); \ + } while (0) + +#define eui64_set32(e, l) do { \ + (e).e32[0] = 0; \ + (e).e32[1] = lwip_htonl(l); \ + } while (0) +#define eui64_setlo32(e, l) eui64_set32(e, l) + +char *eui64_ntoa(eui64_t); /* Returns ascii representation of id */ + +#endif /* EUI64_H */ +#endif /* PPP_SUPPORT && PPP_IPV6_SUPPORT */ diff --git a/tools/sdk/lwip2/include/netif/ppp/fsm.h b/tools/sdk/lwip2/include/netif/ppp/fsm.h new file mode 100644 index 000000000..b6915d3b8 --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/fsm.h @@ -0,0 +1,175 @@ +/* + * fsm.h - {Link, IP} Control Protocol Finite State Machine definitions. + * + * Copyright (c) 1984-2000 Carnegie Mellon University. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The name "Carnegie Mellon University" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For permission or any legal + * details, please contact + * Office of Technology Transfer + * Carnegie Mellon University + * 5000 Forbes Avenue + * Pittsburgh, PA 15213-3890 + * (412) 268-4387, fax: (412) 268-7395 + * tech-transfer@andrew.cmu.edu + * + * 4. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by Computing Services + * at Carnegie Mellon University (http://www.cmu.edu/computing/)." + * + * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO + * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE + * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $Id: fsm.h,v 1.10 2004/11/13 02:28:15 paulus Exp $ + */ + +#include "netif/ppp/ppp_opts.h" +#if PPP_SUPPORT /* don't build if not configured for use in lwipopts.h */ + +#ifndef FSM_H +#define FSM_H + +#include "ppp.h" + +/* + * Packet header = Code, id, length. + */ +#define HEADERLEN 4 + + +/* + * CP (LCP, IPCP, etc.) codes. + */ +#define CONFREQ 1 /* Configuration Request */ +#define CONFACK 2 /* Configuration Ack */ +#define CONFNAK 3 /* Configuration Nak */ +#define CONFREJ 4 /* Configuration Reject */ +#define TERMREQ 5 /* Termination Request */ +#define TERMACK 6 /* Termination Ack */ +#define CODEREJ 7 /* Code Reject */ + + +/* + * Each FSM is described by an fsm structure and fsm callbacks. + */ +typedef struct fsm { + ppp_pcb *pcb; /* PPP Interface */ + const struct fsm_callbacks *callbacks; /* Callback routines */ + const char *term_reason; /* Reason for closing protocol */ + u8_t seen_ack; /* Have received valid Ack/Nak/Rej to Req */ + /* -- This is our only flag, we might use u_int :1 if we have more flags */ + u16_t protocol; /* Data Link Layer Protocol field value */ + u8_t state; /* State */ + u8_t flags; /* Contains option bits */ + u8_t id; /* Current id */ + u8_t reqid; /* Current request id */ + u8_t retransmits; /* Number of retransmissions left */ + u8_t nakloops; /* Number of nak loops since last ack */ + u8_t rnakloops; /* Number of naks received */ + u8_t maxnakloops; /* Maximum number of nak loops tolerated + (necessary because IPCP require a custom large max nak loops value) */ + u8_t term_reason_len; /* Length of term_reason */ +} fsm; + + +typedef struct fsm_callbacks { + void (*resetci) /* Reset our Configuration Information */ + (fsm *); + int (*cilen) /* Length of our Configuration Information */ + (fsm *); + void (*addci) /* Add our Configuration Information */ + (fsm *, u_char *, int *); + int (*ackci) /* ACK our Configuration Information */ + (fsm *, u_char *, int); + int (*nakci) /* NAK our Configuration Information */ + (fsm *, u_char *, int, int); + int (*rejci) /* Reject our Configuration Information */ + (fsm *, u_char *, int); + int (*reqci) /* Request peer's Configuration Information */ + (fsm *, u_char *, int *, int); + void (*up) /* Called when fsm reaches PPP_FSM_OPENED state */ + (fsm *); + void (*down) /* Called when fsm leaves PPP_FSM_OPENED state */ + (fsm *); + void (*starting) /* Called when we want the lower layer */ + (fsm *); + void (*finished) /* Called when we don't want the lower layer */ + (fsm *); + void (*protreject) /* Called when Protocol-Reject received */ + (int); + void (*retransmit) /* Retransmission is necessary */ + (fsm *); + int (*extcode) /* Called when unknown code received */ + (fsm *, int, int, u_char *, int); + const char *proto_name; /* String name for protocol (for messages) */ +} fsm_callbacks; + + +/* + * Link states. + */ +#define PPP_FSM_INITIAL 0 /* Down, hasn't been opened */ +#define PPP_FSM_STARTING 1 /* Down, been opened */ +#define PPP_FSM_CLOSED 2 /* Up, hasn't been opened */ +#define PPP_FSM_STOPPED 3 /* Open, waiting for down event */ +#define PPP_FSM_CLOSING 4 /* Terminating the connection, not open */ +#define PPP_FSM_STOPPING 5 /* Terminating, but open */ +#define PPP_FSM_REQSENT 6 /* We've sent a Config Request */ +#define PPP_FSM_ACKRCVD 7 /* We've received a Config Ack */ +#define PPP_FSM_ACKSENT 8 /* We've sent a Config Ack */ +#define PPP_FSM_OPENED 9 /* Connection available */ + + +/* + * Flags - indicate options controlling FSM operation + */ +#define OPT_PASSIVE 1 /* Don't die if we don't get a response */ +#define OPT_RESTART 2 /* Treat 2nd OPEN as DOWN, UP */ +#define OPT_SILENT 4 /* Wait for peer to speak first */ + + +/* + * Timeouts. + */ +#if 0 /* moved to ppp_opts.h */ +#define DEFTIMEOUT 3 /* Timeout time in seconds */ +#define DEFMAXTERMREQS 2 /* Maximum Terminate-Request transmissions */ +#define DEFMAXCONFREQS 10 /* Maximum Configure-Request transmissions */ +#define DEFMAXNAKLOOPS 5 /* Maximum number of nak loops */ +#endif /* moved to ppp_opts.h */ + + +/* + * Prototypes + */ +void fsm_init(fsm *f); +void fsm_lowerup(fsm *f); +void fsm_lowerdown(fsm *f); +void fsm_open(fsm *f); +void fsm_close(fsm *f, const char *reason); +void fsm_input(fsm *f, u_char *inpacket, int l); +void fsm_protreject(fsm *f); +void fsm_sdata(fsm *f, u_char code, u_char id, const u_char *data, int datalen); + + +#endif /* FSM_H */ +#endif /* PPP_SUPPORT */ diff --git a/tools/sdk/lwip2/include/netif/ppp/ipcp.h b/tools/sdk/lwip2/include/netif/ppp/ipcp.h new file mode 100644 index 000000000..45f46b31f --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/ipcp.h @@ -0,0 +1,126 @@ +/* + * ipcp.h - IP Control Protocol definitions. + * + * Copyright (c) 1984-2000 Carnegie Mellon University. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The name "Carnegie Mellon University" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For permission or any legal + * details, please contact + * Office of Technology Transfer + * Carnegie Mellon University + * 5000 Forbes Avenue + * Pittsburgh, PA 15213-3890 + * (412) 268-4387, fax: (412) 268-7395 + * tech-transfer@andrew.cmu.edu + * + * 4. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by Computing Services + * at Carnegie Mellon University (http://www.cmu.edu/computing/)." + * + * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO + * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE + * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $Id: ipcp.h,v 1.14 2002/12/04 23:03:32 paulus Exp $ + */ + +#include "netif/ppp/ppp_opts.h" +#if PPP_SUPPORT && PPP_IPV4_SUPPORT /* don't build if not configured for use in lwipopts.h */ + +#ifndef IPCP_H +#define IPCP_H + +/* + * Options. + */ +#define CI_ADDRS 1 /* IP Addresses */ +#if VJ_SUPPORT +#define CI_COMPRESSTYPE 2 /* Compression Type */ +#endif /* VJ_SUPPORT */ +#define CI_ADDR 3 + +#if LWIP_DNS +#define CI_MS_DNS1 129 /* Primary DNS value */ +#define CI_MS_DNS2 131 /* Secondary DNS value */ +#endif /* LWIP_DNS */ +#if 0 /* UNUSED - WINS */ +#define CI_MS_WINS1 130 /* Primary WINS value */ +#define CI_MS_WINS2 132 /* Secondary WINS value */ +#endif /* UNUSED - WINS */ + +#if VJ_SUPPORT +#define MAX_STATES 16 /* from slcompress.h */ + +#define IPCP_VJMODE_OLD 1 /* "old" mode (option # = 0x0037) */ +#define IPCP_VJMODE_RFC1172 2 /* "old-rfc"mode (option # = 0x002d) */ +#define IPCP_VJMODE_RFC1332 3 /* "new-rfc"mode (option # = 0x002d, */ + /* maxslot and slot number compression) */ + +#define IPCP_VJ_COMP 0x002d /* current value for VJ compression option*/ +#define IPCP_VJ_COMP_OLD 0x0037 /* "old" (i.e, broken) value for VJ */ + /* compression option*/ +#endif /* VJ_SUPPORT */ + +typedef struct ipcp_options { + unsigned int neg_addr :1; /* Negotiate IP Address? */ + unsigned int old_addrs :1; /* Use old (IP-Addresses) option? */ + unsigned int req_addr :1; /* Ask peer to send IP address? */ +#if 0 /* UNUSED */ + unsigned int default_route :1; /* Assign default route through interface? */ + unsigned int replace_default_route :1; /* Replace default route through interface? */ +#endif /* UNUSED */ +#if 0 /* UNUSED - PROXY ARP */ + unsigned int proxy_arp :1; /* Make proxy ARP entry for peer? */ +#endif /* UNUSED - PROXY ARP */ +#if VJ_SUPPORT + unsigned int neg_vj :1; /* Van Jacobson Compression? */ + unsigned int old_vj :1; /* use old (short) form of VJ option? */ + unsigned int cflag :1; +#endif /* VJ_SUPPORT */ + unsigned int accept_local :1; /* accept peer's value for ouraddr */ + unsigned int accept_remote :1; /* accept peer's value for hisaddr */ +#if LWIP_DNS + unsigned int req_dns1 :1; /* Ask peer to send primary DNS address? */ + unsigned int req_dns2 :1; /* Ask peer to send secondary DNS address? */ +#endif /* LWIP_DNS */ + + u32_t ouraddr, hisaddr; /* Addresses in NETWORK BYTE ORDER */ +#if LWIP_DNS + u32_t dnsaddr[2]; /* Primary and secondary MS DNS entries */ +#endif /* LWIP_DNS */ +#if 0 /* UNUSED - WINS */ + u32_t winsaddr[2]; /* Primary and secondary MS WINS entries */ +#endif /* UNUSED - WINS */ + +#if VJ_SUPPORT + u16_t vj_protocol; /* protocol value to use in VJ option */ + u8_t maxslotindex; /* values for RFC1332 VJ compression neg. */ +#endif /* VJ_SUPPORT */ +} ipcp_options; + +#if 0 /* UNUSED, already defined by lwIP */ +char *ip_ntoa (u32_t); +#endif /* UNUSED, already defined by lwIP */ + +extern const struct protent ipcp_protent; + +#endif /* IPCP_H */ +#endif /* PPP_SUPPORT && PPP_IPV4_SUPPORT */ diff --git a/tools/sdk/lwip2/include/netif/ppp/ipv6cp.h b/tools/sdk/lwip2/include/netif/ppp/ipv6cp.h new file mode 100644 index 000000000..07d1ae318 --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/ipv6cp.h @@ -0,0 +1,183 @@ +/* + * ipv6cp.h - PPP IPV6 Control Protocol. + * + * Copyright (c) 1999 Tommi Komulainen. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The name(s) of the authors of this software must not be used to + * endorse or promote products derived from this software without + * prior written permission. + * + * 4. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by Tommi Komulainen + * ". + * + * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO + * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY + * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +/* Original version, based on RFC2023 : + + Copyright (c) 1995, 1996, 1997 Francis.Dupont@inria.fr, INRIA Rocquencourt, + Alain.Durand@imag.fr, IMAG, + Jean-Luc.Richier@imag.fr, IMAG-LSR. + + Copyright (c) 1998, 1999 Francis.Dupont@inria.fr, GIE DYADE, + Alain.Durand@imag.fr, IMAG, + Jean-Luc.Richier@imag.fr, IMAG-LSR. + + Ce travail a été fait au sein du GIE DYADE (Groupement d'Intérêt + Économique ayant pour membres BULL S.A. et l'INRIA). + + Ce logiciel informatique est disponible aux conditions + usuelles dans la recherche, c'est-à-dire qu'il peut + être utilisé, copié, modifié, distribué à l'unique + condition que ce texte soit conservé afin que + l'origine de ce logiciel soit reconnue. + + Le nom de l'Institut National de Recherche en Informatique + et en Automatique (INRIA), de l'IMAG, ou d'une personne morale + ou physique ayant participé à l'élaboration de ce logiciel ne peut + être utilisé sans son accord préalable explicite. + + Ce logiciel est fourni tel quel sans aucune garantie, + support ou responsabilité d'aucune sorte. + Ce logiciel est dérivé de sources d'origine + "University of California at Berkeley" et + "Digital Equipment Corporation" couvertes par des copyrights. + + L'Institut d'Informatique et de Mathématiques Appliquées de Grenoble (IMAG) + est une fédération d'unités mixtes de recherche du CNRS, de l'Institut National + Polytechnique de Grenoble et de l'Université Joseph Fourier regroupant + sept laboratoires dont le laboratoire Logiciels, Systèmes, Réseaux (LSR). + + This work has been done in the context of GIE DYADE (joint R & D venture + between BULL S.A. and INRIA). + + This software is available with usual "research" terms + with the aim of retain credits of the software. + Permission to use, copy, modify and distribute this software for any + purpose and without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies, + and the name of INRIA, IMAG, or any contributor not be used in advertising + or publicity pertaining to this material without the prior explicit + permission. The software is provided "as is" without any + warranties, support or liabilities of any kind. + This software is derived from source code from + "University of California at Berkeley" and + "Digital Equipment Corporation" protected by copyrights. + + Grenoble's Institute of Computer Science and Applied Mathematics (IMAG) + is a federation of seven research units funded by the CNRS, National + Polytechnic Institute of Grenoble and University Joseph Fourier. + The research unit in Software, Systems, Networks (LSR) is member of IMAG. +*/ + +/* + * Derived from : + * + * + * ipcp.h - IP Control Protocol definitions. + * + * Copyright (c) 1984-2000 Carnegie Mellon University. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The name "Carnegie Mellon University" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For permission or any legal + * details, please contact + * Office of Technology Transfer + * Carnegie Mellon University + * 5000 Forbes Avenue + * Pittsburgh, PA 15213-3890 + * (412) 268-4387, fax: (412) 268-7395 + * tech-transfer@andrew.cmu.edu + * + * 4. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by Computing Services + * at Carnegie Mellon University (http://www.cmu.edu/computing/)." + * + * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO + * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE + * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $Id: ipv6cp.h,v 1.7 2002/12/04 23:03:32 paulus Exp $ + */ + +#include "netif/ppp/ppp_opts.h" +#if PPP_SUPPORT && PPP_IPV6_SUPPORT /* don't build if not configured for use in lwipopts.h */ + +#ifndef IPV6CP_H +#define IPV6CP_H + +#include "eui64.h" + +/* + * Options. + */ +#define CI_IFACEID 1 /* Interface Identifier */ +#ifdef IPV6CP_COMP +#define CI_COMPRESSTYPE 2 /* Compression Type */ +#endif /* IPV6CP_COMP */ + +/* No compression types yet defined. + *#define IPV6CP_COMP 0x004f + */ +typedef struct ipv6cp_options { + unsigned int neg_ifaceid :1; /* Negotiate interface identifier? */ + unsigned int req_ifaceid :1; /* Ask peer to send interface identifier? */ + unsigned int accept_local :1; /* accept peer's value for iface id? */ + unsigned int opt_local :1; /* ourtoken set by option */ + unsigned int opt_remote :1; /* histoken set by option */ + unsigned int use_ip :1; /* use IP as interface identifier */ +#if 0 + unsigned int use_persistent :1; /* use uniquely persistent value for address */ +#endif +#ifdef IPV6CP_COMP + unsigned int neg_vj :1; /* Van Jacobson Compression? */ +#endif /* IPV6CP_COMP */ + +#ifdef IPV6CP_COMP + u_short vj_protocol; /* protocol value to use in VJ option */ +#endif /* IPV6CP_COMP */ + eui64_t ourid, hisid; /* Interface identifiers */ +} ipv6cp_options; + +extern const struct protent ipv6cp_protent; + +#endif /* IPV6CP_H */ +#endif /* PPP_SUPPORT && PPP_IPV6_SUPPORT */ diff --git a/tools/sdk/lwip2/include/netif/ppp/lcp.h b/tools/sdk/lwip2/include/netif/ppp/lcp.h new file mode 100644 index 000000000..12e2a05fc --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/lcp.h @@ -0,0 +1,171 @@ +/* + * lcp.h - Link Control Protocol definitions. + * + * Copyright (c) 1984-2000 Carnegie Mellon University. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The name "Carnegie Mellon University" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For permission or any legal + * details, please contact + * Office of Technology Transfer + * Carnegie Mellon University + * 5000 Forbes Avenue + * Pittsburgh, PA 15213-3890 + * (412) 268-4387, fax: (412) 268-7395 + * tech-transfer@andrew.cmu.edu + * + * 4. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by Computing Services + * at Carnegie Mellon University (http://www.cmu.edu/computing/)." + * + * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO + * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE + * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $Id: lcp.h,v 1.20 2004/11/14 22:53:42 carlsonj Exp $ + */ + +#include "netif/ppp/ppp_opts.h" +#if PPP_SUPPORT /* don't build if not configured for use in lwipopts.h */ + +#ifndef LCP_H +#define LCP_H + +#include "ppp.h" + +/* + * Options. + */ +#define CI_VENDOR 0 /* Vendor Specific */ +#define CI_MRU 1 /* Maximum Receive Unit */ +#define CI_ASYNCMAP 2 /* Async Control Character Map */ +#define CI_AUTHTYPE 3 /* Authentication Type */ +#define CI_QUALITY 4 /* Quality Protocol */ +#define CI_MAGICNUMBER 5 /* Magic Number */ +#define CI_PCOMPRESSION 7 /* Protocol Field Compression */ +#define CI_ACCOMPRESSION 8 /* Address/Control Field Compression */ +#define CI_FCSALTERN 9 /* FCS-Alternatives */ +#define CI_SDP 10 /* Self-Describing-Pad */ +#define CI_NUMBERED 11 /* Numbered-Mode */ +#define CI_CALLBACK 13 /* callback */ +#define CI_MRRU 17 /* max reconstructed receive unit; multilink */ +#define CI_SSNHF 18 /* short sequence numbers for multilink */ +#define CI_EPDISC 19 /* endpoint discriminator */ +#define CI_MPPLUS 22 /* Multi-Link-Plus-Procedure */ +#define CI_LDISC 23 /* Link-Discriminator */ +#define CI_LCPAUTH 24 /* LCP Authentication */ +#define CI_COBS 25 /* Consistent Overhead Byte Stuffing */ +#define CI_PREFELIS 26 /* Prefix Elision */ +#define CI_MPHDRFMT 27 /* MP Header Format */ +#define CI_I18N 28 /* Internationalization */ +#define CI_SDL 29 /* Simple Data Link */ + +/* + * LCP-specific packet types (code numbers). + */ +#define PROTREJ 8 /* Protocol Reject */ +#define ECHOREQ 9 /* Echo Request */ +#define ECHOREP 10 /* Echo Reply */ +#define DISCREQ 11 /* Discard Request */ +#define IDENTIF 12 /* Identification */ +#define TIMEREM 13 /* Time Remaining */ + +/* Value used as data for CI_CALLBACK option */ +#define CBCP_OPT 6 /* Use callback control protocol */ + +#if 0 /* moved to ppp_opts.h */ +#define DEFMRU 1500 /* Try for this */ +#define MINMRU 128 /* No MRUs below this */ +#define MAXMRU 16384 /* Normally limit MRU to this */ +#endif /* moved to ppp_opts.h */ + +/* An endpoint discriminator, used with multilink. */ +#define MAX_ENDP_LEN 20 /* maximum length of discriminator value */ +struct epdisc { + unsigned char class_; /* -- The word "class" is reserved in C++. */ + unsigned char length; + unsigned char value[MAX_ENDP_LEN]; +}; + +/* + * The state of options is described by an lcp_options structure. + */ +typedef struct lcp_options { + unsigned int passive :1; /* Don't die if we don't get a response */ + unsigned int silent :1; /* Wait for the other end to start first */ +#if 0 /* UNUSED */ + unsigned int restart :1; /* Restart vs. exit after close */ +#endif /* UNUSED */ + unsigned int neg_mru :1; /* Negotiate the MRU? */ + unsigned int neg_asyncmap :1; /* Negotiate the async map? */ +#if PAP_SUPPORT + unsigned int neg_upap :1; /* Ask for UPAP authentication? */ +#endif /* PAP_SUPPORT */ +#if CHAP_SUPPORT + unsigned int neg_chap :1; /* Ask for CHAP authentication? */ +#endif /* CHAP_SUPPORT */ +#if EAP_SUPPORT + unsigned int neg_eap :1; /* Ask for EAP authentication? */ +#endif /* EAP_SUPPORT */ + unsigned int neg_magicnumber :1; /* Ask for magic number? */ + unsigned int neg_pcompression :1; /* HDLC Protocol Field Compression? */ + unsigned int neg_accompression :1; /* HDLC Address/Control Field Compression? */ +#if LQR_SUPPORT + unsigned int neg_lqr :1; /* Negotiate use of Link Quality Reports */ +#endif /* LQR_SUPPORT */ + unsigned int neg_cbcp :1; /* Negotiate use of CBCP */ +#ifdef HAVE_MULTILINK + unsigned int neg_mrru :1; /* negotiate multilink MRRU */ +#endif /* HAVE_MULTILINK */ + unsigned int neg_ssnhf :1; /* negotiate short sequence numbers */ + unsigned int neg_endpoint :1; /* negotiate endpoint discriminator */ + + u16_t mru; /* Value of MRU */ +#ifdef HAVE_MULTILINK + u16_t mrru; /* Value of MRRU, and multilink enable */ +#endif /* MULTILINK */ +#if CHAP_SUPPORT + u8_t chap_mdtype; /* which MD types (hashing algorithm) */ +#endif /* CHAP_SUPPORT */ + u32_t asyncmap; /* Value of async map */ + u32_t magicnumber; + u8_t numloops; /* Number of loops during magic number neg. */ +#if LQR_SUPPORT + u32_t lqr_period; /* Reporting period for LQR 1/100ths second */ +#endif /* LQR_SUPPORT */ + struct epdisc endpoint; /* endpoint discriminator */ +} lcp_options; + +void lcp_open(ppp_pcb *pcb); +void lcp_close(ppp_pcb *pcb, const char *reason); +void lcp_lowerup(ppp_pcb *pcb); +void lcp_lowerdown(ppp_pcb *pcb); +void lcp_sprotrej(ppp_pcb *pcb, u_char *p, int len); /* send protocol reject */ + +extern const struct protent lcp_protent; + +#if 0 /* moved to ppp_opts.h */ +/* Default number of times we receive our magic number from the peer + before deciding the link is looped-back. */ +#define DEFLOOPBACKFAIL 10 +#endif /* moved to ppp_opts.h */ + +#endif /* LCP_H */ +#endif /* PPP_SUPPORT */ diff --git a/tools/sdk/lwip2/include/netif/ppp/magic.h b/tools/sdk/lwip2/include/netif/ppp/magic.h new file mode 100644 index 000000000..a2a9b530e --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/magic.h @@ -0,0 +1,122 @@ +/* + * magic.h - PPP Magic Number definitions. + * + * Copyright (c) 1984-2000 Carnegie Mellon University. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The name "Carnegie Mellon University" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For permission or any legal + * details, please contact + * Office of Technology Transfer + * Carnegie Mellon University + * 5000 Forbes Avenue + * Pittsburgh, PA 15213-3890 + * (412) 268-4387, fax: (412) 268-7395 + * tech-transfer@andrew.cmu.edu + * + * 4. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by Computing Services + * at Carnegie Mellon University (http://www.cmu.edu/computing/)." + * + * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO + * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE + * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $Id: magic.h,v 1.5 2003/06/11 23:56:26 paulus Exp $ + */ +/***************************************************************************** +* randm.h - Random number generator header file. +* +* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. +* Copyright (c) 1998 Global Election Systems Inc. +* +* The authors hereby grant permission to use, copy, modify, distribute, +* and license this software and its documentation for any purpose, provided +* that existing copyright notices are retained in all copies and that this +* notice and the following disclaimer are included verbatim in any +* distributions. No written agreement, license, or royalty fee is required +* for any of the authorized uses. +* +* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *AS IS* AND ANY EXPRESS OR +* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +* IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +****************************************************************************** +* REVISION HISTORY +* +* 03-01-01 Marc Boucher +* Ported to lwIP. +* 98-05-29 Guy Lancaster , Global Election Systems Inc. +* Extracted from avos. +*****************************************************************************/ + +#include "netif/ppp/ppp_opts.h" +#if PPP_SUPPORT /* don't build if not configured for use in lwipopts.h */ + +#ifndef MAGIC_H +#define MAGIC_H + +/*********************** +*** PUBLIC FUNCTIONS *** +***********************/ + +/* + * Initialize the random number generator. + */ +void magic_init(void); + +/* + * Randomize our random seed value. To be called for truely random events + * such as user operations and network traffic. + */ +void magic_randomize(void); + +/* + * Return a new random number. + */ +u32_t magic(void); /* Returns the next magic number */ + +/* + * Fill buffer with random bytes + * + * Use the random pool to generate random data. This degrades to pseudo + * random when used faster than randomness is supplied using magic_churnrand(). + * Thus it's important to make sure that the results of this are not + * published directly because one could predict the next result to at + * least some degree. Also, it's important to get a good seed before + * the first use. + */ +void magic_random_bytes(unsigned char *buf, u32_t buf_len); + +/* + * Return a new random number between 0 and (2^pow)-1 included. + */ +u32_t magic_pow(u8_t pow); + +#endif /* MAGIC_H */ + +#endif /* PPP_SUPPORT */ diff --git a/tools/sdk/lwip2/include/netif/ppp/mppe.h b/tools/sdk/lwip2/include/netif/ppp/mppe.h new file mode 100644 index 000000000..1ae8a5d92 --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/mppe.h @@ -0,0 +1,173 @@ +/* + * mppe.h - Definitions for MPPE + * + * Copyright (c) 2008 Paul Mackerras. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The name(s) of the authors of this software must not be used to + * endorse or promote products derived from this software without + * prior written permission. + * + * 4. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by Paul Mackerras + * ". + * + * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO + * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY + * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "netif/ppp/ppp_opts.h" +#if PPP_SUPPORT && MPPE_SUPPORT /* don't build if not configured for use in lwipopts.h */ + +#ifndef MPPE_H +#define MPPE_H + +#include "netif/ppp/pppcrypt.h" + +#define MPPE_PAD 4 /* MPPE growth per frame */ +#define MPPE_MAX_KEY_LEN 16 /* largest key length (128-bit) */ + +/* option bits for ccp_options.mppe */ +#define MPPE_OPT_40 0x01 /* 40 bit */ +#define MPPE_OPT_128 0x02 /* 128 bit */ +#define MPPE_OPT_STATEFUL 0x04 /* stateful mode */ +/* unsupported opts */ +#define MPPE_OPT_56 0x08 /* 56 bit */ +#define MPPE_OPT_MPPC 0x10 /* MPPC compression */ +#define MPPE_OPT_D 0x20 /* Unknown */ +#define MPPE_OPT_UNSUPPORTED (MPPE_OPT_56|MPPE_OPT_MPPC|MPPE_OPT_D) +#define MPPE_OPT_UNKNOWN 0x40 /* Bits !defined in RFC 3078 were set */ + +/* + * This is not nice ... the alternative is a bitfield struct though. + * And unfortunately, we cannot share the same bits for the option + * names above since C and H are the same bit. We could do a u_int32 + * but then we have to do a lwip_htonl() all the time and/or we still need + * to know which octet is which. + */ +#define MPPE_C_BIT 0x01 /* MPPC */ +#define MPPE_D_BIT 0x10 /* Obsolete, usage unknown */ +#define MPPE_L_BIT 0x20 /* 40-bit */ +#define MPPE_S_BIT 0x40 /* 128-bit */ +#define MPPE_M_BIT 0x80 /* 56-bit, not supported */ +#define MPPE_H_BIT 0x01 /* Stateless (in a different byte) */ + +/* Does not include H bit; used for least significant octet only. */ +#define MPPE_ALL_BITS (MPPE_D_BIT|MPPE_L_BIT|MPPE_S_BIT|MPPE_M_BIT|MPPE_H_BIT) + +/* Build a CI from mppe opts (see RFC 3078) */ +#define MPPE_OPTS_TO_CI(opts, ci) \ + do { \ + u_char *ptr = ci; /* u_char[4] */ \ + \ + /* H bit */ \ + if (opts & MPPE_OPT_STATEFUL) \ + *ptr++ = 0x0; \ + else \ + *ptr++ = MPPE_H_BIT; \ + *ptr++ = 0; \ + *ptr++ = 0; \ + \ + /* S,L bits */ \ + *ptr = 0; \ + if (opts & MPPE_OPT_128) \ + *ptr |= MPPE_S_BIT; \ + if (opts & MPPE_OPT_40) \ + *ptr |= MPPE_L_BIT; \ + /* M,D,C bits not supported */ \ + } while (/* CONSTCOND */ 0) + +/* The reverse of the above */ +#define MPPE_CI_TO_OPTS(ci, opts) \ + do { \ + const u_char *ptr = ci; /* u_char[4] */ \ + \ + opts = 0; \ + \ + /* H bit */ \ + if (!(ptr[0] & MPPE_H_BIT)) \ + opts |= MPPE_OPT_STATEFUL; \ + \ + /* S,L bits */ \ + if (ptr[3] & MPPE_S_BIT) \ + opts |= MPPE_OPT_128; \ + if (ptr[3] & MPPE_L_BIT) \ + opts |= MPPE_OPT_40; \ + \ + /* M,D,C bits */ \ + if (ptr[3] & MPPE_M_BIT) \ + opts |= MPPE_OPT_56; \ + if (ptr[3] & MPPE_D_BIT) \ + opts |= MPPE_OPT_D; \ + if (ptr[3] & MPPE_C_BIT) \ + opts |= MPPE_OPT_MPPC; \ + \ + /* Other bits */ \ + if (ptr[0] & ~MPPE_H_BIT) \ + opts |= MPPE_OPT_UNKNOWN; \ + if (ptr[1] || ptr[2]) \ + opts |= MPPE_OPT_UNKNOWN; \ + if (ptr[3] & ~MPPE_ALL_BITS) \ + opts |= MPPE_OPT_UNKNOWN; \ + } while (/* CONSTCOND */ 0) + +/* Shared MPPE padding between MSCHAP and MPPE */ +#define SHA1_PAD_SIZE 40 + +static const u8_t mppe_sha1_pad1[SHA1_PAD_SIZE] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +static const u8_t mppe_sha1_pad2[SHA1_PAD_SIZE] = { + 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, + 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, + 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, + 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2 +}; + +/* + * State for an MPPE (de)compressor. + */ +typedef struct ppp_mppe_state { + lwip_arc4_context arc4; + u8_t master_key[MPPE_MAX_KEY_LEN]; + u8_t session_key[MPPE_MAX_KEY_LEN]; + u8_t keylen; /* key length in bytes */ + /* NB: 128-bit == 16, 40-bit == 8! + * If we want to support 56-bit, the unit has to change to bits + */ + u8_t bits; /* MPPE control bits */ + u16_t ccount; /* 12-bit coherency count (seqno) */ + u16_t sanity_errors; /* take down LCP if too many */ + unsigned int stateful :1; /* stateful mode flag */ + unsigned int discard :1; /* stateful mode packet loss flag */ +} ppp_mppe_state; + +void mppe_set_key(ppp_pcb *pcb, ppp_mppe_state *state, u8_t *key); +void mppe_init(ppp_pcb *pcb, ppp_mppe_state *state, u8_t options); +void mppe_comp_reset(ppp_pcb *pcb, ppp_mppe_state *state); +err_t mppe_compress(ppp_pcb *pcb, ppp_mppe_state *state, struct pbuf **pb, u16_t protocol); +void mppe_decomp_reset(ppp_pcb *pcb, ppp_mppe_state *state); +err_t mppe_decompress(ppp_pcb *pcb, ppp_mppe_state *state, struct pbuf **pb); + +#endif /* MPPE_H */ +#endif /* PPP_SUPPORT && MPPE_SUPPORT */ diff --git a/tools/sdk/lwip2/include/netif/ppp/polarssl/arc4.h b/tools/sdk/lwip2/include/netif/ppp/polarssl/arc4.h new file mode 100644 index 000000000..4af724cd9 --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/polarssl/arc4.h @@ -0,0 +1,81 @@ +/** + * \file arc4.h + * + * Based on XySSL: Copyright (C) 2006-2008 Christophe Devine + * + * Copyright (C) 2009 Paul Bakker + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the names of PolarSSL or XySSL nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "netif/ppp/ppp_opts.h" +#if LWIP_INCLUDED_POLARSSL_ARC4 + +#ifndef LWIP_INCLUDED_POLARSSL_ARC4_H +#define LWIP_INCLUDED_POLARSSL_ARC4_H + +/** + * \brief ARC4 context structure + */ +typedef struct +{ + int x; /*!< permutation index */ + int y; /*!< permutation index */ + unsigned char m[256]; /*!< permutation table */ +} +arc4_context; + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief ARC4 key schedule + * + * \param ctx ARC4 context to be initialized + * \param key the secret key + * \param keylen length of the key + */ +void arc4_setup( arc4_context *ctx, unsigned char *key, int keylen ); + +/** + * \brief ARC4 cipher function + * + * \param ctx ARC4 context + * \param buf buffer to be processed + * \param buflen amount of data in buf + */ +void arc4_crypt( arc4_context *ctx, unsigned char *buf, int buflen ); + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_INCLUDED_POLARSSL_ARC4_H */ + +#endif /* LWIP_INCLUDED_POLARSSL_ARC4 */ diff --git a/tools/sdk/lwip2/include/netif/ppp/polarssl/des.h b/tools/sdk/lwip2/include/netif/ppp/polarssl/des.h new file mode 100644 index 000000000..e893890ed --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/polarssl/des.h @@ -0,0 +1,92 @@ +/** + * \file des.h + * + * Based on XySSL: Copyright (C) 2006-2008 Christophe Devine + * + * Copyright (C) 2009 Paul Bakker + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the names of PolarSSL or XySSL nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "netif/ppp/ppp_opts.h" +#if LWIP_INCLUDED_POLARSSL_DES + +#ifndef LWIP_INCLUDED_POLARSSL_DES_H +#define LWIP_INCLUDED_POLARSSL_DES_H + +#define DES_ENCRYPT 1 +#define DES_DECRYPT 0 + +/** + * \brief DES context structure + */ +typedef struct +{ + int mode; /*!< encrypt/decrypt */ + unsigned long sk[32]; /*!< DES subkeys */ +} +des_context; + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief DES key schedule (56-bit, encryption) + * + * \param ctx DES context to be initialized + * \param key 8-byte secret key + */ +void des_setkey_enc( des_context *ctx, unsigned char key[8] ); + +/** + * \brief DES key schedule (56-bit, decryption) + * + * \param ctx DES context to be initialized + * \param key 8-byte secret key + */ +void des_setkey_dec( des_context *ctx, unsigned char key[8] ); + +/** + * \brief DES-ECB block encryption/decryption + * + * \param ctx DES context + * \param input 64-bit input block + * \param output 64-bit output block + */ +void des_crypt_ecb( des_context *ctx, + const unsigned char input[8], + unsigned char output[8] ); + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_INCLUDED_POLARSSL_DES_H */ + +#endif /* LWIP_INCLUDED_POLARSSL_DES */ diff --git a/tools/sdk/lwip2/include/netif/ppp/polarssl/md4.h b/tools/sdk/lwip2/include/netif/ppp/polarssl/md4.h new file mode 100644 index 000000000..570445687 --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/polarssl/md4.h @@ -0,0 +1,97 @@ +/** + * \file md4.h + * + * Based on XySSL: Copyright (C) 2006-2008 Christophe Devine + * + * Copyright (C) 2009 Paul Bakker + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the names of PolarSSL or XySSL nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "netif/ppp/ppp_opts.h" +#if LWIP_INCLUDED_POLARSSL_MD4 + +#ifndef LWIP_INCLUDED_POLARSSL_MD4_H +#define LWIP_INCLUDED_POLARSSL_MD4_H + +/** + * \brief MD4 context structure + */ +typedef struct +{ + unsigned long total[2]; /*!< number of bytes processed */ + unsigned long state[4]; /*!< intermediate digest state */ + unsigned char buffer[64]; /*!< data block being processed */ +} +md4_context; + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief MD4 context setup + * + * \param ctx context to be initialized + */ +void md4_starts( md4_context *ctx ); + +/** + * \brief MD4 process buffer + * + * \param ctx MD4 context + * \param input buffer holding the data + * \param ilen length of the input data + */ +void md4_update( md4_context *ctx, const unsigned char *input, int ilen ); + +/** + * \brief MD4 final digest + * + * \param ctx MD4 context + * \param output MD4 checksum result + */ +void md4_finish( md4_context *ctx, unsigned char output[16] ); + +/** + * \brief Output = MD4( input buffer ) + * + * \param input buffer holding the data + * \param ilen length of the input data + * \param output MD4 checksum result + */ +void md4( unsigned char *input, int ilen, unsigned char output[16] ); + + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_INCLUDED_POLARSSL_MD4_H */ + +#endif /* LWIP_INCLUDED_POLARSSL_MD4 */ diff --git a/tools/sdk/lwip2/include/netif/ppp/polarssl/md5.h b/tools/sdk/lwip2/include/netif/ppp/polarssl/md5.h new file mode 100644 index 000000000..124401189 --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/polarssl/md5.h @@ -0,0 +1,96 @@ +/** + * \file md5.h + * + * Based on XySSL: Copyright (C) 2006-2008 Christophe Devine + * + * Copyright (C) 2009 Paul Bakker + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the names of PolarSSL or XySSL nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "netif/ppp/ppp_opts.h" +#if LWIP_INCLUDED_POLARSSL_MD5 + +#ifndef LWIP_INCLUDED_POLARSSL_MD5_H +#define LWIP_INCLUDED_POLARSSL_MD5_H + +/** + * \brief MD5 context structure + */ +typedef struct +{ + unsigned long total[2]; /*!< number of bytes processed */ + unsigned long state[4]; /*!< intermediate digest state */ + unsigned char buffer[64]; /*!< data block being processed */ +} +md5_context; + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief MD5 context setup + * + * \param ctx context to be initialized + */ +void md5_starts( md5_context *ctx ); + +/** + * \brief MD5 process buffer + * + * \param ctx MD5 context + * \param input buffer holding the data + * \param ilen length of the input data + */ +void md5_update( md5_context *ctx, const unsigned char *input, int ilen ); + +/** + * \brief MD5 final digest + * + * \param ctx MD5 context + * \param output MD5 checksum result + */ +void md5_finish( md5_context *ctx, unsigned char output[16] ); + +/** + * \brief Output = MD5( input buffer ) + * + * \param input buffer holding the data + * \param ilen length of the input data + * \param output MD5 checksum result + */ +void md5( unsigned char *input, int ilen, unsigned char output[16] ); + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_INCLUDED_POLARSSL_MD5_H */ + +#endif /* LWIP_INCLUDED_POLARSSL_MD5 */ diff --git a/tools/sdk/lwip2/include/netif/ppp/polarssl/sha1.h b/tools/sdk/lwip2/include/netif/ppp/polarssl/sha1.h new file mode 100644 index 000000000..a4c53e07c --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/polarssl/sha1.h @@ -0,0 +1,96 @@ +/** + * \file sha1.h + * + * Based on XySSL: Copyright (C) 2006-2008 Christophe Devine + * + * Copyright (C) 2009 Paul Bakker + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the names of PolarSSL or XySSL nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "netif/ppp/ppp_opts.h" +#if LWIP_INCLUDED_POLARSSL_SHA1 + +#ifndef LWIP_INCLUDED_POLARSSL_SHA1_H +#define LWIP_INCLUDED_POLARSSL_SHA1_H + +/** + * \brief SHA-1 context structure + */ +typedef struct +{ + unsigned long total[2]; /*!< number of bytes processed */ + unsigned long state[5]; /*!< intermediate digest state */ + unsigned char buffer[64]; /*!< data block being processed */ +} +sha1_context; + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief SHA-1 context setup + * + * \param ctx context to be initialized + */ +void sha1_starts( sha1_context *ctx ); + +/** + * \brief SHA-1 process buffer + * + * \param ctx SHA-1 context + * \param input buffer holding the data + * \param ilen length of the input data + */ +void sha1_update( sha1_context *ctx, const unsigned char *input, int ilen ); + +/** + * \brief SHA-1 final digest + * + * \param ctx SHA-1 context + * \param output SHA-1 checksum result + */ +void sha1_finish( sha1_context *ctx, unsigned char output[20] ); + +/** + * \brief Output = SHA-1( input buffer ) + * + * \param input buffer holding the data + * \param ilen length of the input data + * \param output SHA-1 checksum result + */ +void sha1( unsigned char *input, int ilen, unsigned char output[20] ); + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_INCLUDED_POLARSSL_SHA1_H */ + +#endif /* LWIP_INCLUDED_POLARSSL_SHA1 */ diff --git a/tools/sdk/lwip2/include/netif/ppp/ppp.h b/tools/sdk/lwip2/include/netif/ppp/ppp.h new file mode 100644 index 000000000..d9ea097ef --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/ppp.h @@ -0,0 +1,690 @@ +/***************************************************************************** +* ppp.h - Network Point to Point Protocol header file. +* +* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. +* portions Copyright (c) 1997 Global Election Systems Inc. +* +* The authors hereby grant permission to use, copy, modify, distribute, +* and license this software and its documentation for any purpose, provided +* that existing copyright notices are retained in all copies and that this +* notice and the following disclaimer are included verbatim in any +* distributions. No written agreement, license, or royalty fee is required +* for any of the authorized uses. +* +* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *AS IS* AND ANY EXPRESS OR +* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +* IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +****************************************************************************** +* REVISION HISTORY +* +* 03-01-01 Marc Boucher +* Ported to lwIP. +* 97-11-05 Guy Lancaster , Global Election Systems Inc. +* Original derived from BSD codes. +*****************************************************************************/ + +#include "netif/ppp/ppp_opts.h" +#if PPP_SUPPORT /* don't build if not configured for use in lwipopts.h */ + +#ifndef PPP_H +#define PPP_H + +#include "lwip/def.h" +#include "lwip/stats.h" +#include "lwip/mem.h" +#include "lwip/netif.h" +#include "lwip/sys.h" +#include "lwip/timeouts.h" +#if PPP_IPV6_SUPPORT +#include "lwip/ip6_addr.h" +#endif /* PPP_IPV6_SUPPORT */ + +/* Disable non-working or rarely used PPP feature, so rarely that we don't want to bloat ppp_opts.h with them */ +#ifndef PPP_OPTIONS +#define PPP_OPTIONS 0 +#endif + +#ifndef PPP_NOTIFY +#define PPP_NOTIFY 0 +#endif + +#ifndef PPP_REMOTENAME +#define PPP_REMOTENAME 0 +#endif + +#ifndef PPP_IDLETIMELIMIT +#define PPP_IDLETIMELIMIT 0 +#endif + +#ifndef PPP_LCP_ADAPTIVE +#define PPP_LCP_ADAPTIVE 0 +#endif + +#ifndef PPP_MAXCONNECT +#define PPP_MAXCONNECT 0 +#endif + +#ifndef PPP_ALLOWED_ADDRS +#define PPP_ALLOWED_ADDRS 0 +#endif + +#ifndef PPP_PROTOCOLNAME +#define PPP_PROTOCOLNAME 0 +#endif + +#ifndef PPP_STATS_SUPPORT +#define PPP_STATS_SUPPORT 0 +#endif + +#ifndef DEFLATE_SUPPORT +#define DEFLATE_SUPPORT 0 +#endif + +#ifndef BSDCOMPRESS_SUPPORT +#define BSDCOMPRESS_SUPPORT 0 +#endif + +#ifndef PREDICTOR_SUPPORT +#define PREDICTOR_SUPPORT 0 +#endif + +/************************* +*** PUBLIC DEFINITIONS *** +*************************/ + +/* + * The basic PPP frame. + */ +#define PPP_HDRLEN 4 /* octets for standard ppp header */ +#define PPP_FCSLEN 2 /* octets for FCS */ + +/* + * Values for phase. + */ +#define PPP_PHASE_DEAD 0 +#define PPP_PHASE_MASTER 1 +#define PPP_PHASE_HOLDOFF 2 +#define PPP_PHASE_INITIALIZE 3 +#define PPP_PHASE_SERIALCONN 4 +#define PPP_PHASE_DORMANT 5 +#define PPP_PHASE_ESTABLISH 6 +#define PPP_PHASE_AUTHENTICATE 7 +#define PPP_PHASE_CALLBACK 8 +#define PPP_PHASE_NETWORK 9 +#define PPP_PHASE_RUNNING 10 +#define PPP_PHASE_TERMINATE 11 +#define PPP_PHASE_DISCONNECT 12 + +/* Error codes. */ +#define PPPERR_NONE 0 /* No error. */ +#define PPPERR_PARAM 1 /* Invalid parameter. */ +#define PPPERR_OPEN 2 /* Unable to open PPP session. */ +#define PPPERR_DEVICE 3 /* Invalid I/O device for PPP. */ +#define PPPERR_ALLOC 4 /* Unable to allocate resources. */ +#define PPPERR_USER 5 /* User interrupt. */ +#define PPPERR_CONNECT 6 /* Connection lost. */ +#define PPPERR_AUTHFAIL 7 /* Failed authentication challenge. */ +#define PPPERR_PROTOCOL 8 /* Failed to meet protocol. */ +#define PPPERR_PEERDEAD 9 /* Connection timeout */ +#define PPPERR_IDLETIMEOUT 10 /* Idle Timeout */ +#define PPPERR_CONNECTTIME 11 /* Max connect time reached */ +#define PPPERR_LOOPBACK 12 /* Loopback detected */ + +/* Whether auth support is enabled at all */ +#define PPP_AUTH_SUPPORT (PAP_SUPPORT || CHAP_SUPPORT || EAP_SUPPORT) + +/************************ +*** PUBLIC DATA TYPES *** +************************/ + +/* + * Other headers require ppp_pcb definition for prototypes, but ppp_pcb + * require some structure definition from other headers as well, we are + * fixing the dependency loop here by declaring the ppp_pcb type then + * by including headers containing necessary struct definition for ppp_pcb + */ +typedef struct ppp_pcb_s ppp_pcb; + +/* Type definitions for BSD code. */ +#ifndef __u_char_defined +typedef unsigned long u_long; +typedef unsigned int u_int; +typedef unsigned short u_short; +typedef unsigned char u_char; +#endif + +#include "fsm.h" +#include "lcp.h" +#if CCP_SUPPORT +#include "ccp.h" +#endif /* CCP_SUPPORT */ +#if MPPE_SUPPORT +#include "mppe.h" +#endif /* MPPE_SUPPORT */ +#if PPP_IPV4_SUPPORT +#include "ipcp.h" +#endif /* PPP_IPV4_SUPPORT */ +#if PPP_IPV6_SUPPORT +#include "ipv6cp.h" +#endif /* PPP_IPV6_SUPPORT */ +#if PAP_SUPPORT +#include "upap.h" +#endif /* PAP_SUPPORT */ +#if CHAP_SUPPORT +#include "chap-new.h" +#endif /* CHAP_SUPPORT */ +#if EAP_SUPPORT +#include "eap.h" +#endif /* EAP_SUPPORT */ +#if VJ_SUPPORT +#include "vj.h" +#endif /* VJ_SUPPORT */ + +/* Link status callback function prototype */ +typedef void (*ppp_link_status_cb_fn)(ppp_pcb *pcb, int err_code, void *ctx); + +/* + * PPP configuration. + */ +typedef struct ppp_settings_s { + +#if PPP_SERVER && PPP_AUTH_SUPPORT + unsigned int auth_required :1; /* Peer is required to authenticate */ + unsigned int null_login :1; /* Username of "" and a password of "" are acceptable */ +#endif /* PPP_SERVER && PPP_AUTH_SUPPORT */ +#if PPP_REMOTENAME + unsigned int explicit_remote :1; /* remote_name specified with remotename opt */ +#endif /* PPP_REMOTENAME */ +#if PAP_SUPPORT + unsigned int refuse_pap :1; /* Don't proceed auth. with PAP */ +#endif /* PAP_SUPPORT */ +#if CHAP_SUPPORT + unsigned int refuse_chap :1; /* Don't proceed auth. with CHAP */ +#endif /* CHAP_SUPPORT */ +#if MSCHAP_SUPPORT + unsigned int refuse_mschap :1; /* Don't proceed auth. with MS-CHAP */ + unsigned int refuse_mschap_v2 :1; /* Don't proceed auth. with MS-CHAPv2 */ +#endif /* MSCHAP_SUPPORT */ +#if EAP_SUPPORT + unsigned int refuse_eap :1; /* Don't proceed auth. with EAP */ +#endif /* EAP_SUPPORT */ +#if LWIP_DNS + unsigned int usepeerdns :1; /* Ask peer for DNS adds */ +#endif /* LWIP_DNS */ + unsigned int persist :1; /* Persist mode, always try to open the connection */ +#if PRINTPKT_SUPPORT + unsigned int hide_password :1; /* Hide password in dumped packets */ +#endif /* PRINTPKT_SUPPORT */ + unsigned int noremoteip :1; /* Let him have no IP address */ + unsigned int lax_recv :1; /* accept control chars in asyncmap */ + unsigned int noendpoint :1; /* don't send/accept endpoint discriminator */ +#if PPP_LCP_ADAPTIVE + unsigned int lcp_echo_adaptive :1; /* request echo only if the link was idle */ +#endif /* PPP_LCP_ADAPTIVE */ +#if MPPE_SUPPORT + unsigned int require_mppe :1; /* Require MPPE (Microsoft Point to Point Encryption) */ + unsigned int refuse_mppe_40 :1; /* Allow MPPE 40-bit mode? */ + unsigned int refuse_mppe_128 :1; /* Allow MPPE 128-bit mode? */ + unsigned int refuse_mppe_stateful :1; /* Allow MPPE stateful mode? */ +#endif /* MPPE_SUPPORT */ + + u16_t listen_time; /* time to listen first (ms), waiting for peer to send LCP packet */ + +#if PPP_IDLETIMELIMIT + u16_t idle_time_limit; /* Disconnect if idle for this many seconds */ +#endif /* PPP_IDLETIMELIMIT */ +#if PPP_MAXCONNECT + u32_t maxconnect; /* Maximum connect time (seconds) */ +#endif /* PPP_MAXCONNECT */ + +#if PPP_AUTH_SUPPORT + /* auth data */ + const char *user; /* Username for PAP */ + const char *passwd; /* Password for PAP, secret for CHAP */ +#if PPP_REMOTENAME + char remote_name[MAXNAMELEN + 1]; /* Peer's name for authentication */ +#endif /* PPP_REMOTENAME */ + +#if PAP_SUPPORT + u8_t pap_timeout_time; /* Timeout (seconds) for auth-req retrans. */ + u8_t pap_max_transmits; /* Number of auth-reqs sent */ +#if PPP_SERVER + u8_t pap_req_timeout; /* Time to wait for auth-req from peer */ +#endif /* PPP_SERVER */ +#endif /* PAP_SUPPPORT */ + +#if CHAP_SUPPORT + u8_t chap_timeout_time; /* Timeout (seconds) for retransmitting req */ + u8_t chap_max_transmits; /* max # times to send challenge */ +#if PPP_SERVER + u8_t chap_rechallenge_time; /* Time to wait for auth-req from peer */ +#endif /* PPP_SERVER */ +#endif /* CHAP_SUPPPORT */ + +#if EAP_SUPPORT + u8_t eap_req_time; /* Time to wait (for retransmit/fail) */ + u8_t eap_allow_req; /* Max Requests allowed */ +#if PPP_SERVER + u8_t eap_timeout_time; /* Time to wait (for retransmit/fail) */ + u8_t eap_max_transmits; /* Max Requests allowed */ +#endif /* PPP_SERVER */ +#endif /* EAP_SUPPORT */ + +#endif /* PPP_AUTH_SUPPORT */ + + u8_t fsm_timeout_time; /* Timeout time in seconds */ + u8_t fsm_max_conf_req_transmits; /* Maximum Configure-Request transmissions */ + u8_t fsm_max_term_transmits; /* Maximum Terminate-Request transmissions */ + u8_t fsm_max_nak_loops; /* Maximum number of nak loops tolerated */ + + u8_t lcp_loopbackfail; /* Number of times we receive our magic number from the peer + before deciding the link is looped-back. */ + u8_t lcp_echo_interval; /* Interval between LCP echo-requests */ + u8_t lcp_echo_fails; /* Tolerance to unanswered echo-requests */ + +} ppp_settings; + +#if PPP_SERVER +struct ppp_addrs { +#if PPP_IPV4_SUPPORT + ip4_addr_t our_ipaddr, his_ipaddr, netmask; +#if LWIP_DNS + ip4_addr_t dns1, dns2; +#endif /* LWIP_DNS */ +#endif /* PPP_IPV4_SUPPORT */ +#if PPP_IPV6_SUPPORT + ip6_addr_t our6_ipaddr, his6_ipaddr; +#endif /* PPP_IPV6_SUPPORT */ +}; +#endif /* PPP_SERVER */ + +/* + * PPP interface control block. + */ +struct ppp_pcb_s { + ppp_settings settings; + const struct link_callbacks *link_cb; + void *link_ctx_cb; + void (*link_status_cb)(ppp_pcb *pcb, int err_code, void *ctx); /* Status change callback */ +#if PPP_NOTIFY_PHASE + void (*notify_phase_cb)(ppp_pcb *pcb, u8_t phase, void *ctx); /* Notify phase callback */ +#endif /* PPP_NOTIFY_PHASE */ + void *ctx_cb; /* Callbacks optional pointer */ + struct netif *netif; /* PPP interface */ + u8_t phase; /* where the link is at */ + u8_t err_code; /* Code indicating why interface is down. */ + + /* flags */ +#if PPP_IPV4_SUPPORT + unsigned int ask_for_local :1; /* request our address from peer */ + unsigned int ipcp_is_open :1; /* haven't called np_finished() */ + unsigned int ipcp_is_up :1; /* have called ipcp_up() */ + unsigned int if4_up :1; /* True when the IPv4 interface is up. */ +#if 0 /* UNUSED - PROXY ARP */ + unsigned int proxy_arp_set :1; /* Have created proxy arp entry */ +#endif /* UNUSED - PROXY ARP */ +#endif /* PPP_IPV4_SUPPORT */ +#if PPP_IPV6_SUPPORT + unsigned int ipv6cp_is_up :1; /* have called ip6cp_up() */ + unsigned int if6_up :1; /* True when the IPv6 interface is up. */ +#endif /* PPP_IPV6_SUPPORT */ + unsigned int lcp_echo_timer_running :1; /* set if a timer is running */ +#if VJ_SUPPORT + unsigned int vj_enabled :1; /* Flag indicating VJ compression enabled. */ +#endif /* VJ_SUPPORT */ +#if CCP_SUPPORT + unsigned int ccp_all_rejected :1; /* we rejected all peer's options */ +#endif /* CCP_SUPPORT */ +#if MPPE_SUPPORT + unsigned int mppe_keys_set :1; /* Have the MPPE keys been set? */ +#endif /* MPPE_SUPPORT */ + +#if PPP_AUTH_SUPPORT + /* auth data */ +#if PPP_SERVER && defined(HAVE_MULTILINK) + char peer_authname[MAXNAMELEN + 1]; /* The name by which the peer authenticated itself to us. */ +#endif /* PPP_SERVER && defined(HAVE_MULTILINK) */ + u16_t auth_pending; /* Records which authentication operations haven't completed yet. */ + u16_t auth_done; /* Records which authentication operations have been completed. */ + +#if PAP_SUPPORT + upap_state upap; /* PAP data */ +#endif /* PAP_SUPPORT */ + +#if CHAP_SUPPORT + chap_client_state chap_client; /* CHAP client data */ +#if PPP_SERVER + chap_server_state chap_server; /* CHAP server data */ +#endif /* PPP_SERVER */ +#endif /* CHAP_SUPPORT */ + +#if EAP_SUPPORT + eap_state eap; /* EAP data */ +#endif /* EAP_SUPPORT */ +#endif /* PPP_AUTH_SUPPORT */ + + fsm lcp_fsm; /* LCP fsm structure */ + lcp_options lcp_wantoptions; /* Options that we want to request */ + lcp_options lcp_gotoptions; /* Options that peer ack'd */ + lcp_options lcp_allowoptions; /* Options we allow peer to request */ + lcp_options lcp_hisoptions; /* Options that we ack'd */ + u16_t peer_mru; /* currently negotiated peer MRU */ + u8_t lcp_echos_pending; /* Number of outstanding echo msgs */ + u8_t lcp_echo_number; /* ID number of next echo frame */ + + u8_t num_np_open; /* Number of network protocols which we have opened. */ + u8_t num_np_up; /* Number of network protocols which have come up. */ + +#if VJ_SUPPORT + struct vjcompress vj_comp; /* Van Jacobson compression header. */ +#endif /* VJ_SUPPORT */ + +#if CCP_SUPPORT + fsm ccp_fsm; /* CCP fsm structure */ + ccp_options ccp_wantoptions; /* what to request the peer to use */ + ccp_options ccp_gotoptions; /* what the peer agreed to do */ + ccp_options ccp_allowoptions; /* what we'll agree to do */ + ccp_options ccp_hisoptions; /* what we agreed to do */ + u8_t ccp_localstate; /* Local state (mainly for handling reset-reqs and reset-acks). */ + u8_t ccp_receive_method; /* Method chosen on receive path */ + u8_t ccp_transmit_method; /* Method chosen on transmit path */ +#if MPPE_SUPPORT + ppp_mppe_state mppe_comp; /* MPPE "compressor" structure */ + ppp_mppe_state mppe_decomp; /* MPPE "decompressor" structure */ +#endif /* MPPE_SUPPORT */ +#endif /* CCP_SUPPORT */ + +#if PPP_IPV4_SUPPORT + fsm ipcp_fsm; /* IPCP fsm structure */ + ipcp_options ipcp_wantoptions; /* Options that we want to request */ + ipcp_options ipcp_gotoptions; /* Options that peer ack'd */ + ipcp_options ipcp_allowoptions; /* Options we allow peer to request */ + ipcp_options ipcp_hisoptions; /* Options that we ack'd */ +#endif /* PPP_IPV4_SUPPORT */ + +#if PPP_IPV6_SUPPORT + fsm ipv6cp_fsm; /* IPV6CP fsm structure */ + ipv6cp_options ipv6cp_wantoptions; /* Options that we want to request */ + ipv6cp_options ipv6cp_gotoptions; /* Options that peer ack'd */ + ipv6cp_options ipv6cp_allowoptions; /* Options we allow peer to request */ + ipv6cp_options ipv6cp_hisoptions; /* Options that we ack'd */ +#endif /* PPP_IPV6_SUPPORT */ +}; + +/************************ + *** PUBLIC FUNCTIONS *** + ************************/ + +/* + * WARNING: For multi-threads environment, all ppp_set_* functions most + * only be called while the PPP is in the dead phase (i.e. disconnected). + */ + +#if PPP_AUTH_SUPPORT +/* + * Set PPP authentication. + * + * Warning: Using PPPAUTHTYPE_ANY might have security consequences. + * RFC 1994 says: + * + * In practice, within or associated with each PPP server, there is a + * database which associates "user" names with authentication + * information ("secrets"). It is not anticipated that a particular + * named user would be authenticated by multiple methods. This would + * make the user vulnerable to attacks which negotiate the least secure + * method from among a set (such as PAP rather than CHAP). If the same + * secret was used, PAP would reveal the secret to be used later with + * CHAP. + * + * Instead, for each user name there should be an indication of exactly + * one method used to authenticate that user name. If a user needs to + * make use of different authentication methods under different + * circumstances, then distinct user names SHOULD be employed, each of + * which identifies exactly one authentication method. + * + * Default is none auth type, unset (NULL) user and passwd. + */ +#define PPPAUTHTYPE_NONE 0x00 +#define PPPAUTHTYPE_PAP 0x01 +#define PPPAUTHTYPE_CHAP 0x02 +#define PPPAUTHTYPE_MSCHAP 0x04 +#define PPPAUTHTYPE_MSCHAP_V2 0x08 +#define PPPAUTHTYPE_EAP 0x10 +#define PPPAUTHTYPE_ANY 0xff +void ppp_set_auth(ppp_pcb *pcb, u8_t authtype, const char *user, const char *passwd); + +/* + * If set, peer is required to authenticate. This is mostly necessary for PPP server support. + * + * Default is false. + */ +#define ppp_set_auth_required(ppp, boolval) (ppp->settings.auth_required = boolval) +#endif /* PPP_AUTH_SUPPORT */ + +#if PPP_IPV4_SUPPORT +/* + * Set PPP interface "our" and "his" IPv4 addresses. This is mostly necessary for PPP server + * support but it can also be used on a PPP link where each side choose its own IP address. + * + * Default is unset (0.0.0.0). + */ +#define ppp_set_ipcp_ouraddr(ppp, addr) do { ppp->ipcp_wantoptions.ouraddr = ip4_addr_get_u32(addr); \ + ppp->ask_for_local = ppp->ipcp_wantoptions.ouraddr != 0; } while(0) +#define ppp_set_ipcp_hisaddr(ppp, addr) (ppp->ipcp_wantoptions.hisaddr = ip4_addr_get_u32(addr)) +#if LWIP_DNS +/* + * Set DNS server addresses that are sent if the peer asks for them. This is mostly necessary + * for PPP server support. + * + * Default is unset (0.0.0.0). + */ +#define ppp_set_ipcp_dnsaddr(ppp, index, addr) (ppp->ipcp_allowoptions.dnsaddr[index] = ip4_addr_get_u32(addr)) + +/* + * If set, we ask the peer for up to 2 DNS server addresses. Received DNS server addresses are + * registered using the dns_setserver() function. + * + * Default is false. + */ +#define ppp_set_usepeerdns(ppp, boolval) (ppp->settings.usepeerdns = boolval) +#endif /* LWIP_DNS */ +#endif /* PPP_IPV4_SUPPORT */ + +#if MPPE_SUPPORT +/* Disable MPPE (Microsoft Point to Point Encryption). This parameter is exclusive. */ +#define PPP_MPPE_DISABLE 0x00 +/* Require the use of MPPE (Microsoft Point to Point Encryption). */ +#define PPP_MPPE_ENABLE 0x01 +/* Allow MPPE to use stateful mode. Stateless mode is still attempted first. */ +#define PPP_MPPE_ALLOW_STATEFUL 0x02 +/* Refuse the use of MPPE with 40-bit encryption. Conflict with PPP_MPPE_REFUSE_128. */ +#define PPP_MPPE_REFUSE_40 0x04 +/* Refuse the use of MPPE with 128-bit encryption. Conflict with PPP_MPPE_REFUSE_40. */ +#define PPP_MPPE_REFUSE_128 0x08 +/* + * Set MPPE configuration + * + * Default is disabled. + */ +void ppp_set_mppe(ppp_pcb *pcb, u8_t flags); +#endif /* MPPE_SUPPORT */ + +/* + * Wait for up to intval milliseconds for a valid PPP packet from the peer. + * At the end of this time, or when a valid PPP packet is received from the + * peer, we commence negotiation by sending our first LCP packet. + * + * Default is 0. + */ +#define ppp_set_listen_time(ppp, intval) (ppp->settings.listen_time = intval) + +/* + * If set, we will attempt to initiate a connection but if no reply is received from + * the peer, we will then just wait passively for a valid LCP packet from the peer. + * + * Default is false. + */ +#define ppp_set_passive(ppp, boolval) (ppp->lcp_wantoptions.passive = boolval) + +/* + * If set, we will not transmit LCP packets to initiate a connection until a valid + * LCP packet is received from the peer. This is what we usually call the server mode. + * + * Default is false. + */ +#define ppp_set_silent(ppp, boolval) (ppp->lcp_wantoptions.silent = boolval) + +/* + * If set, enable protocol field compression negotiation in both the receive and + * the transmit direction. + * + * Default is true. + */ +#define ppp_set_neg_pcomp(ppp, boolval) (ppp->lcp_wantoptions.neg_pcompression = \ + ppp->lcp_allowoptions.neg_pcompression = boolval) + +/* + * If set, enable Address/Control compression in both the receive and the transmit + * direction. + * + * Default is true. + */ +#define ppp_set_neg_accomp(ppp, boolval) (ppp->lcp_wantoptions.neg_accompression = \ + ppp->lcp_allowoptions.neg_accompression = boolval) + +/* + * If set, enable asyncmap negotiation. Otherwise forcing all control characters to + * be escaped for both the transmit and the receive direction. + * + * Default is true. + */ +#define ppp_set_neg_asyncmap(ppp, boolval) (ppp->lcp_wantoptions.neg_asyncmap = \ + ppp->lcp_allowoptions.neg_asyncmap = boolval) + +/* + * This option sets the Async-Control-Character-Map (ACCM) for this end of the link. + * The ACCM is a set of 32 bits, one for each of the ASCII control characters with + * values from 0 to 31, where a 1 bit indicates that the corresponding control + * character should not be used in PPP packets sent to this system. The map is + * an unsigned 32 bits integer where the least significant bit (00000001) represents + * character 0 and the most significant bit (80000000) represents character 31. + * We will then ask the peer to send these characters as a 2-byte escape sequence. + * + * Default is 0. + */ +#define ppp_set_asyncmap(ppp, intval) (ppp->lcp_wantoptions.asyncmap = intval) + +/* + * Set a PPP interface as the default network interface + * (used to output all packets for which no specific route is found). + */ +#define ppp_set_default(ppp) netif_set_default(ppp->netif) + +#if PPP_NOTIFY_PHASE +/* + * Set a PPP notify phase callback. + * + * This can be used for example to set a LED pattern depending on the + * current phase of the PPP session. + */ +typedef void (*ppp_notify_phase_cb_fn)(ppp_pcb *pcb, u8_t phase, void *ctx); +void ppp_set_notify_phase_callback(ppp_pcb *pcb, ppp_notify_phase_cb_fn notify_phase_cb); +#endif /* PPP_NOTIFY_PHASE */ + +/* + * Initiate a PPP connection. + * + * This can only be called if PPP is in the dead phase. + * + * Holdoff is the time to wait (in seconds) before initiating + * the connection. + * + * If this port connects to a modem, the modem connection must be + * established before calling this. + */ +err_t ppp_connect(ppp_pcb *pcb, u16_t holdoff); + +#if PPP_SERVER +/* + * Listen for an incoming PPP connection. + * + * This can only be called if PPP is in the dead phase. + * + * If this port connects to a modem, the modem connection must be + * established before calling this. + */ +err_t ppp_listen(ppp_pcb *pcb); +#endif /* PPP_SERVER */ + +/* + * Initiate the end of a PPP connection. + * Any outstanding packets in the queues are dropped. + * + * Setting nocarrier to 1 close the PPP connection without initiating the + * shutdown procedure. Always using nocarrier = 0 is still recommended, + * this is going to take a little longer time if your link is down, but + * is a safer choice for the PPP state machine. + * + * Return 0 on success, an error code on failure. + */ +err_t ppp_close(ppp_pcb *pcb, u8_t nocarrier); + +/* + * Release the control block. + * + * This can only be called if PPP is in the dead phase. + * + * You must use ppp_close() before if you wish to terminate + * an established PPP session. + * + * Return 0 on success, an error code on failure. + */ +err_t ppp_free(ppp_pcb *pcb); + +/* + * PPP IOCTL commands. + * + * Get the up status - 0 for down, non-zero for up. The argument must + * point to an int. + */ +#define PPPCTLG_UPSTATUS 0 + +/* + * Get the PPP error code. The argument must point to an int. + * Returns a PPPERR_* value. + */ +#define PPPCTLG_ERRCODE 1 + +/* + * Get the fd associated with a PPP over serial + */ +#define PPPCTLG_FD 2 + +/* + * Get and set parameters for the given connection. + * Return 0 on success, an error code on failure. + */ +err_t ppp_ioctl(ppp_pcb *pcb, u8_t cmd, void *arg); + +/* Get the PPP netif interface */ +#define ppp_netif(ppp) (ppp->netif) + +/* Set an lwIP-style status-callback for the selected PPP device */ +#define ppp_set_netif_statuscallback(ppp, status_cb) \ + netif_set_status_callback(ppp->netif, status_cb); + +/* Set an lwIP-style link-callback for the selected PPP device */ +#define ppp_set_netif_linkcallback(ppp, link_cb) \ + netif_set_link_callback(ppp->netif, link_cb); + +#endif /* PPP_H */ + +#endif /* PPP_SUPPORT */ diff --git a/tools/sdk/lwip2/include/netif/ppp/ppp_impl.h b/tools/sdk/lwip2/include/netif/ppp/ppp_impl.h new file mode 100644 index 000000000..1d4c7742f --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/ppp_impl.h @@ -0,0 +1,629 @@ +/***************************************************************************** +* ppp.h - Network Point to Point Protocol header file. +* +* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. +* portions Copyright (c) 1997 Global Election Systems Inc. +* +* The authors hereby grant permission to use, copy, modify, distribute, +* and license this software and its documentation for any purpose, provided +* that existing copyright notices are retained in all copies and that this +* notice and the following disclaimer are included verbatim in any +* distributions. No written agreement, license, or royalty fee is required +* for any of the authorized uses. +* +* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *AS IS* AND ANY EXPRESS OR +* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +* IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +****************************************************************************** +* REVISION HISTORY +* +* 03-01-01 Marc Boucher +* Ported to lwIP. +* 97-11-05 Guy Lancaster , Global Election Systems Inc. +* Original derived from BSD codes. +*****************************************************************************/ +#ifndef LWIP_HDR_PPP_IMPL_H +#define LWIP_HDR_PPP_IMPL_H + +#include "netif/ppp/ppp_opts.h" + +#if PPP_SUPPORT /* don't build if not configured for use in lwipopts.h */ + +#ifdef PPP_INCLUDE_SETTINGS_HEADER +#include "ppp_settings.h" +#endif + +#include /* formats */ +#include +#include +#include /* strtol() */ + +#include "lwip/netif.h" +#include "lwip/def.h" +#include "lwip/timeouts.h" + +#include "ppp.h" +#include "pppdebug.h" + +/* + * Memory used for control packets. + * + * PPP_CTRL_PBUF_MAX_SIZE is the amount of memory we allocate when we + * cannot figure out how much we are going to use before filling the buffer. + */ +#if PPP_USE_PBUF_RAM +#define PPP_CTRL_PBUF_TYPE PBUF_RAM +#define PPP_CTRL_PBUF_MAX_SIZE 512 +#else /* PPP_USE_PBUF_RAM */ +#define PPP_CTRL_PBUF_TYPE PBUF_POOL +#define PPP_CTRL_PBUF_MAX_SIZE PBUF_POOL_BUFSIZE +#endif /* PPP_USE_PBUF_RAM */ + +/* + * The basic PPP frame. + */ +#define PPP_ADDRESS(p) (((u_char *)(p))[0]) +#define PPP_CONTROL(p) (((u_char *)(p))[1]) +#define PPP_PROTOCOL(p) ((((u_char *)(p))[2] << 8) + ((u_char *)(p))[3]) + +/* + * Significant octet values. + */ +#define PPP_ALLSTATIONS 0xff /* All-Stations broadcast address */ +#define PPP_UI 0x03 /* Unnumbered Information */ +#define PPP_FLAG 0x7e /* Flag Sequence */ +#define PPP_ESCAPE 0x7d /* Asynchronous Control Escape */ +#define PPP_TRANS 0x20 /* Asynchronous transparency modifier */ + +/* + * Protocol field values. + */ +#define PPP_IP 0x21 /* Internet Protocol */ +#if 0 /* UNUSED */ +#define PPP_AT 0x29 /* AppleTalk Protocol */ +#define PPP_IPX 0x2b /* IPX protocol */ +#endif /* UNUSED */ +#if VJ_SUPPORT +#define PPP_VJC_COMP 0x2d /* VJ compressed TCP */ +#define PPP_VJC_UNCOMP 0x2f /* VJ uncompressed TCP */ +#endif /* VJ_SUPPORT */ +#if PPP_IPV6_SUPPORT +#define PPP_IPV6 0x57 /* Internet Protocol Version 6 */ +#endif /* PPP_IPV6_SUPPORT */ +#if CCP_SUPPORT +#define PPP_COMP 0xfd /* compressed packet */ +#endif /* CCP_SUPPORT */ +#define PPP_IPCP 0x8021 /* IP Control Protocol */ +#if 0 /* UNUSED */ +#define PPP_ATCP 0x8029 /* AppleTalk Control Protocol */ +#define PPP_IPXCP 0x802b /* IPX Control Protocol */ +#endif /* UNUSED */ +#if PPP_IPV6_SUPPORT +#define PPP_IPV6CP 0x8057 /* IPv6 Control Protocol */ +#endif /* PPP_IPV6_SUPPORT */ +#if CCP_SUPPORT +#define PPP_CCP 0x80fd /* Compression Control Protocol */ +#endif /* CCP_SUPPORT */ +#if ECP_SUPPORT +#define PPP_ECP 0x8053 /* Encryption Control Protocol */ +#endif /* ECP_SUPPORT */ +#define PPP_LCP 0xc021 /* Link Control Protocol */ +#if PAP_SUPPORT +#define PPP_PAP 0xc023 /* Password Authentication Protocol */ +#endif /* PAP_SUPPORT */ +#if LQR_SUPPORT +#define PPP_LQR 0xc025 /* Link Quality Report protocol */ +#endif /* LQR_SUPPORT */ +#if CHAP_SUPPORT +#define PPP_CHAP 0xc223 /* Cryptographic Handshake Auth. Protocol */ +#endif /* CHAP_SUPPORT */ +#if CBCP_SUPPORT +#define PPP_CBCP 0xc029 /* Callback Control Protocol */ +#endif /* CBCP_SUPPORT */ +#if EAP_SUPPORT +#define PPP_EAP 0xc227 /* Extensible Authentication Protocol */ +#endif /* EAP_SUPPORT */ + +/* + * The following struct gives the addresses of procedures to call + * for a particular lower link level protocol. + */ +struct link_callbacks { + /* Start a connection (e.g. Initiate discovery phase) */ + void (*connect) (ppp_pcb *pcb, void *ctx); +#if PPP_SERVER + /* Listen for an incoming connection (Passive mode) */ + void (*listen) (ppp_pcb *pcb, void *ctx); +#endif /* PPP_SERVER */ + /* End a connection (i.e. initiate disconnect phase) */ + void (*disconnect) (ppp_pcb *pcb, void *ctx); + /* Free lower protocol control block */ + err_t (*free) (ppp_pcb *pcb, void *ctx); + /* Write a pbuf to a ppp link, only used from PPP functions to send PPP packets. */ + err_t (*write)(ppp_pcb *pcb, void *ctx, struct pbuf *p); + /* Send a packet from lwIP core (IPv4 or IPv6) */ + err_t (*netif_output)(ppp_pcb *pcb, void *ctx, struct pbuf *p, u_short protocol); + /* configure the transmit-side characteristics of the PPP interface */ + void (*send_config)(ppp_pcb *pcb, void *ctx, u32_t accm, int pcomp, int accomp); + /* confire the receive-side characteristics of the PPP interface */ + void (*recv_config)(ppp_pcb *pcb, void *ctx, u32_t accm, int pcomp, int accomp); +}; + +/* + * What to do with network protocol (NP) packets. + */ +enum NPmode { + NPMODE_PASS, /* pass the packet through */ + NPMODE_DROP, /* silently drop the packet */ + NPMODE_ERROR, /* return an error */ + NPMODE_QUEUE /* save it up for later. */ +}; + +/* + * Statistics. + */ +#if PPP_STATS_SUPPORT +struct pppstat { + unsigned int ppp_ibytes; /* bytes received */ + unsigned int ppp_ipackets; /* packets received */ + unsigned int ppp_ierrors; /* receive errors */ + unsigned int ppp_obytes; /* bytes sent */ + unsigned int ppp_opackets; /* packets sent */ + unsigned int ppp_oerrors; /* transmit errors */ +}; + +#if VJ_SUPPORT +struct vjstat { + unsigned int vjs_packets; /* outbound packets */ + unsigned int vjs_compressed; /* outbound compressed packets */ + unsigned int vjs_searches; /* searches for connection state */ + unsigned int vjs_misses; /* times couldn't find conn. state */ + unsigned int vjs_uncompressedin; /* inbound uncompressed packets */ + unsigned int vjs_compressedin; /* inbound compressed packets */ + unsigned int vjs_errorin; /* inbound unknown type packets */ + unsigned int vjs_tossed; /* inbound packets tossed because of error */ +}; +#endif /* VJ_SUPPORT */ + +struct ppp_stats { + struct pppstat p; /* basic PPP statistics */ +#if VJ_SUPPORT + struct vjstat vj; /* VJ header compression statistics */ +#endif /* VJ_SUPPORT */ +}; + +#if CCP_SUPPORT +struct compstat { + unsigned int unc_bytes; /* total uncompressed bytes */ + unsigned int unc_packets; /* total uncompressed packets */ + unsigned int comp_bytes; /* compressed bytes */ + unsigned int comp_packets; /* compressed packets */ + unsigned int inc_bytes; /* incompressible bytes */ + unsigned int inc_packets; /* incompressible packets */ + unsigned int ratio; /* recent compression ratio << 8 */ +}; + +struct ppp_comp_stats { + struct compstat c; /* packet compression statistics */ + struct compstat d; /* packet decompression statistics */ +}; +#endif /* CCP_SUPPORT */ + +#endif /* PPP_STATS_SUPPORT */ + +#if PPP_IDLETIMELIMIT +/* + * The following structure records the time in seconds since + * the last NP packet was sent or received. + */ +struct ppp_idle { + time_t xmit_idle; /* time since last NP packet sent */ + time_t recv_idle; /* time since last NP packet received */ +}; +#endif /* PPP_IDLETIMELIMIT */ + +/* values for epdisc.class */ +#define EPD_NULL 0 /* null discriminator, no data */ +#define EPD_LOCAL 1 +#define EPD_IP 2 +#define EPD_MAC 3 +#define EPD_MAGIC 4 +#define EPD_PHONENUM 5 + +/* + * Global variables. + */ +#ifdef HAVE_MULTILINK +extern u8_t multilink; /* enable multilink operation */ +extern u8_t doing_multilink; +extern u8_t multilink_master; +extern u8_t bundle_eof; +extern u8_t bundle_terminating; +#endif + +#ifdef MAXOCTETS +extern unsigned int maxoctets; /* Maximum octetes per session (in bytes) */ +extern int maxoctets_dir; /* Direction : + 0 - in+out (default) + 1 - in + 2 - out + 3 - max(in,out) */ +extern int maxoctets_timeout; /* Timeout for check of octets limit */ +#define PPP_OCTETS_DIRECTION_SUM 0 +#define PPP_OCTETS_DIRECTION_IN 1 +#define PPP_OCTETS_DIRECTION_OUT 2 +#define PPP_OCTETS_DIRECTION_MAXOVERAL 3 +/* same as previos, but little different on RADIUS side */ +#define PPP_OCTETS_DIRECTION_MAXSESSION 4 +#endif + +/* Data input may be used by CCP and ECP, remove this entry + * from struct protent to save some flash + */ +#define PPP_DATAINPUT 0 + +/* + * The following struct gives the addresses of procedures to call + * for a particular protocol. + */ +struct protent { + u_short protocol; /* PPP protocol number */ + /* Initialization procedure */ + void (*init) (ppp_pcb *pcb); + /* Process a received packet */ + void (*input) (ppp_pcb *pcb, u_char *pkt, int len); + /* Process a received protocol-reject */ + void (*protrej) (ppp_pcb *pcb); + /* Lower layer has come up */ + void (*lowerup) (ppp_pcb *pcb); + /* Lower layer has gone down */ + void (*lowerdown) (ppp_pcb *pcb); + /* Open the protocol */ + void (*open) (ppp_pcb *pcb); + /* Close the protocol */ + void (*close) (ppp_pcb *pcb, const char *reason); +#if PRINTPKT_SUPPORT + /* Print a packet in readable form */ + int (*printpkt) (const u_char *pkt, int len, + void (*printer) (void *, const char *, ...), + void *arg); +#endif /* PRINTPKT_SUPPORT */ +#if PPP_DATAINPUT + /* Process a received data packet */ + void (*datainput) (ppp_pcb *pcb, u_char *pkt, int len); +#endif /* PPP_DATAINPUT */ +#if PRINTPKT_SUPPORT + const char *name; /* Text name of protocol */ + const char *data_name; /* Text name of corresponding data protocol */ +#endif /* PRINTPKT_SUPPORT */ +#if PPP_OPTIONS + option_t *options; /* List of command-line options */ + /* Check requested options, assign defaults */ + void (*check_options) (void); +#endif /* PPP_OPTIONS */ +#if DEMAND_SUPPORT + /* Configure interface for demand-dial */ + int (*demand_conf) (int unit); + /* Say whether to bring up link for this pkt */ + int (*active_pkt) (u_char *pkt, int len); +#endif /* DEMAND_SUPPORT */ +}; + +/* Table of pointers to supported protocols */ +extern const struct protent* const protocols[]; + + +/* Values for auth_pending, auth_done */ +#if PAP_SUPPORT +#define PAP_WITHPEER 0x1 +#define PAP_PEER 0x2 +#endif /* PAP_SUPPORT */ +#if CHAP_SUPPORT +#define CHAP_WITHPEER 0x4 +#define CHAP_PEER 0x8 +#endif /* CHAP_SUPPORT */ +#if EAP_SUPPORT +#define EAP_WITHPEER 0x10 +#define EAP_PEER 0x20 +#endif /* EAP_SUPPORT */ + +/* Values for auth_done only */ +#if CHAP_SUPPORT +#define CHAP_MD5_WITHPEER 0x40 +#define CHAP_MD5_PEER 0x80 +#if MSCHAP_SUPPORT +#define CHAP_MS_SHIFT 8 /* LSB position for MS auths */ +#define CHAP_MS_WITHPEER 0x100 +#define CHAP_MS_PEER 0x200 +#define CHAP_MS2_WITHPEER 0x400 +#define CHAP_MS2_PEER 0x800 +#endif /* MSCHAP_SUPPORT */ +#endif /* CHAP_SUPPORT */ + +/* Supported CHAP protocols */ +#if CHAP_SUPPORT + +#if MSCHAP_SUPPORT +#define CHAP_MDTYPE_SUPPORTED (MDTYPE_MICROSOFT_V2 | MDTYPE_MICROSOFT | MDTYPE_MD5) +#else /* MSCHAP_SUPPORT */ +#define CHAP_MDTYPE_SUPPORTED (MDTYPE_MD5) +#endif /* MSCHAP_SUPPORT */ + +#else /* CHAP_SUPPORT */ +#define CHAP_MDTYPE_SUPPORTED (MDTYPE_NONE) +#endif /* CHAP_SUPPORT */ + +#if PPP_STATS_SUPPORT +/* + * PPP statistics structure + */ +struct pppd_stats { + unsigned int bytes_in; + unsigned int bytes_out; + unsigned int pkts_in; + unsigned int pkts_out; +}; +#endif /* PPP_STATS_SUPPORT */ + + +/* + * PPP private functions + */ + + +/* + * Functions called from lwIP core. + */ + +/* initialize the PPP subsystem */ +int ppp_init(void); + +/* + * Functions called from PPP link protocols. + */ + +/* Create a new PPP control block */ +ppp_pcb *ppp_new(struct netif *pppif, const struct link_callbacks *callbacks, void *link_ctx_cb, + ppp_link_status_cb_fn link_status_cb, void *ctx_cb); + +/* Initiate LCP open request */ +void ppp_start(ppp_pcb *pcb); + +/* Called when link failed to setup */ +void ppp_link_failed(ppp_pcb *pcb); + +/* Called when link is normally down (i.e. it was asked to end) */ +void ppp_link_end(ppp_pcb *pcb); + +/* function called to process input packet */ +void ppp_input(ppp_pcb *pcb, struct pbuf *pb); + +/* helper function, merge a pbuf chain into one pbuf */ +struct pbuf *ppp_singlebuf(struct pbuf *p); + + +/* + * Functions called by PPP protocols. + */ + +/* function called by all PPP subsystems to send packets */ +err_t ppp_write(ppp_pcb *pcb, struct pbuf *p); + +/* functions called by auth.c link_terminated() */ +void ppp_link_terminated(ppp_pcb *pcb); + +void new_phase(ppp_pcb *pcb, int p); + +int ppp_send_config(ppp_pcb *pcb, int mtu, u32_t accm, int pcomp, int accomp); +int ppp_recv_config(ppp_pcb *pcb, int mru, u32_t accm, int pcomp, int accomp); + +#if PPP_IPV4_SUPPORT +int sifaddr(ppp_pcb *pcb, u32_t our_adr, u32_t his_adr, u32_t netmask); +int cifaddr(ppp_pcb *pcb, u32_t our_adr, u32_t his_adr); +#if 0 /* UNUSED - PROXY ARP */ +int sifproxyarp(ppp_pcb *pcb, u32_t his_adr); +int cifproxyarp(ppp_pcb *pcb, u32_t his_adr); +#endif /* UNUSED - PROXY ARP */ +#if LWIP_DNS +int sdns(ppp_pcb *pcb, u32_t ns1, u32_t ns2); +int cdns(ppp_pcb *pcb, u32_t ns1, u32_t ns2); +#endif /* LWIP_DNS */ +#if VJ_SUPPORT +int sifvjcomp(ppp_pcb *pcb, int vjcomp, int cidcomp, int maxcid); +#endif /* VJ_SUPPORT */ +int sifup(ppp_pcb *pcb); +int sifdown (ppp_pcb *pcb); +u32_t get_mask(u32_t addr); +#endif /* PPP_IPV4_SUPPORT */ + +#if PPP_IPV6_SUPPORT +int sif6addr(ppp_pcb *pcb, eui64_t our_eui64, eui64_t his_eui64); +int cif6addr(ppp_pcb *pcb, eui64_t our_eui64, eui64_t his_eui64); +int sif6up(ppp_pcb *pcb); +int sif6down (ppp_pcb *pcb); +#endif /* PPP_IPV6_SUPPORT */ + +#if DEMAND_SUPPORT +int sifnpmode(ppp_pcb *pcb, int proto, enum NPmode mode); +#endif /* DEMAND_SUPPORt */ + +void netif_set_mtu(ppp_pcb *pcb, int mtu); +int netif_get_mtu(ppp_pcb *pcb); + +#if CCP_SUPPORT +#if 0 /* unused */ +int ccp_test(ppp_pcb *pcb, u_char *opt_ptr, int opt_len, int for_transmit); +#endif /* unused */ +void ccp_set(ppp_pcb *pcb, u8_t isopen, u8_t isup, u8_t receive_method, u8_t transmit_method); +void ccp_reset_comp(ppp_pcb *pcb); +void ccp_reset_decomp(ppp_pcb *pcb); +#if 0 /* unused */ +int ccp_fatal_error(ppp_pcb *pcb); +#endif /* unused */ +#endif /* CCP_SUPPORT */ + +#if PPP_IDLETIMELIMIT +int get_idle_time(ppp_pcb *pcb, struct ppp_idle *ip); +#endif /* PPP_IDLETIMELIMIT */ + +#if DEMAND_SUPPORT +int get_loop_output(void); +#endif /* DEMAND_SUPPORT */ + +/* Optional protocol names list, to make our messages a little more informative. */ +#if PPP_PROTOCOLNAME +const char * protocol_name(int proto); +#endif /* PPP_PROTOCOLNAME */ + +/* Optional stats support, to get some statistics on the PPP interface */ +#if PPP_STATS_SUPPORT +void print_link_stats(void); /* Print stats, if available */ +void reset_link_stats(int u); /* Reset (init) stats when link goes up */ +void update_link_stats(int u); /* Get stats at link termination */ +#endif /* PPP_STATS_SUPPORT */ + + + +/* + * Inline versions of get/put char/short/long. + * Pointer is advanced; we assume that both arguments + * are lvalues and will already be in registers. + * cp MUST be u_char *. + */ +#define GETCHAR(c, cp) { \ + (c) = *(cp)++; \ +} +#define PUTCHAR(c, cp) { \ + *(cp)++ = (u_char) (c); \ +} +#define GETSHORT(s, cp) { \ + (s) = *(cp)++ << 8; \ + (s) |= *(cp)++; \ +} +#define PUTSHORT(s, cp) { \ + *(cp)++ = (u_char) ((s) >> 8); \ + *(cp)++ = (u_char) (s); \ +} +#define GETLONG(l, cp) { \ + (l) = *(cp)++ << 8; \ + (l) |= *(cp)++; (l) <<= 8; \ + (l) |= *(cp)++; (l) <<= 8; \ + (l) |= *(cp)++; \ +} +#define PUTLONG(l, cp) { \ + *(cp)++ = (u_char) ((l) >> 24); \ + *(cp)++ = (u_char) ((l) >> 16); \ + *(cp)++ = (u_char) ((l) >> 8); \ + *(cp)++ = (u_char) (l); \ +} + +#define INCPTR(n, cp) ((cp) += (n)) +#define DECPTR(n, cp) ((cp) -= (n)) + +/* + * System dependent definitions for user-level 4.3BSD UNIX implementation. + */ +#define TIMEOUT(f, a, t) do { sys_untimeout((f), (a)); sys_timeout((t)*1000, (f), (a)); } while(0) +#define TIMEOUTMS(f, a, t) do { sys_untimeout((f), (a)); sys_timeout((t), (f), (a)); } while(0) +#define UNTIMEOUT(f, a) sys_untimeout((f), (a)) + +#define BZERO(s, n) memset(s, 0, n) +#define BCMP(s1, s2, l) memcmp(s1, s2, l) + +#define PRINTMSG(m, l) { ppp_info("Remote message: %0.*v", l, m); } + +/* + * MAKEHEADER - Add Header fields to a packet. + */ +#define MAKEHEADER(p, t) { \ + PUTCHAR(PPP_ALLSTATIONS, p); \ + PUTCHAR(PPP_UI, p); \ + PUTSHORT(t, p); } + +/* Procedures exported from auth.c */ +void link_required(ppp_pcb *pcb); /* we are starting to use the link */ +void link_terminated(ppp_pcb *pcb); /* we are finished with the link */ +void link_down(ppp_pcb *pcb); /* the LCP layer has left the Opened state */ +void upper_layers_down(ppp_pcb *pcb); /* take all NCPs down */ +void link_established(ppp_pcb *pcb); /* the link is up; authenticate now */ +void start_networks(ppp_pcb *pcb); /* start all the network control protos */ +void continue_networks(ppp_pcb *pcb); /* start network [ip, etc] control protos */ +#if PPP_AUTH_SUPPORT +#if PPP_SERVER +int auth_check_passwd(ppp_pcb *pcb, char *auser, int userlen, char *apasswd, int passwdlen, const char **msg, int *msglen); + /* check the user name and passwd against configuration */ +void auth_peer_fail(ppp_pcb *pcb, int protocol); + /* peer failed to authenticate itself */ +void auth_peer_success(ppp_pcb *pcb, int protocol, int prot_flavor, const char *name, int namelen); + /* peer successfully authenticated itself */ +#endif /* PPP_SERVER */ +void auth_withpeer_fail(ppp_pcb *pcb, int protocol); + /* we failed to authenticate ourselves */ +void auth_withpeer_success(ppp_pcb *pcb, int protocol, int prot_flavor); + /* we successfully authenticated ourselves */ +#endif /* PPP_AUTH_SUPPORT */ +void np_up(ppp_pcb *pcb, int proto); /* a network protocol has come up */ +void np_down(ppp_pcb *pcb, int proto); /* a network protocol has gone down */ +void np_finished(ppp_pcb *pcb, int proto); /* a network protocol no longer needs link */ +#if PPP_AUTH_SUPPORT +int get_secret(ppp_pcb *pcb, const char *client, const char *server, char *secret, int *secret_len, int am_server); + /* get "secret" for chap */ +#endif /* PPP_AUTH_SUPPORT */ + +/* Procedures exported from ipcp.c */ +/* int parse_dotted_ip (char *, u32_t *); */ + +/* Procedures exported from demand.c */ +#if DEMAND_SUPPORT +void demand_conf (void); /* config interface(s) for demand-dial */ +void demand_block (void); /* set all NPs to queue up packets */ +void demand_unblock (void); /* set all NPs to pass packets */ +void demand_discard (void); /* set all NPs to discard packets */ +void demand_rexmit (int, u32_t); /* retransmit saved frames for an NP*/ +int loop_chars (unsigned char *, int); /* process chars from loopback */ +int loop_frame (unsigned char *, int); /* should we bring link up? */ +#endif /* DEMAND_SUPPORT */ + +/* Procedures exported from multilink.c */ +#ifdef HAVE_MULTILINK +void mp_check_options (void); /* Check multilink-related options */ +int mp_join_bundle (void); /* join our link to an appropriate bundle */ +void mp_exit_bundle (void); /* have disconnected our link from bundle */ +void mp_bundle_terminated (void); +char *epdisc_to_str (struct epdisc *); /* string from endpoint discrim. */ +int str_to_epdisc (struct epdisc *, char *); /* endpt disc. from str */ +#else +#define mp_bundle_terminated() /* nothing */ +#define mp_exit_bundle() /* nothing */ +#define doing_multilink 0 +#define multilink_master 0 +#endif + +/* Procedures exported from utils.c. */ +void ppp_print_string(const u_char *p, int len, void (*printer) (void *, const char *, ...), void *arg); /* Format a string for output */ +int ppp_slprintf(char *buf, int buflen, const char *fmt, ...); /* sprintf++ */ +int ppp_vslprintf(char *buf, int buflen, const char *fmt, va_list args); /* vsprintf++ */ +size_t ppp_strlcpy(char *dest, const char *src, size_t len); /* safe strcpy */ +size_t ppp_strlcat(char *dest, const char *src, size_t len); /* safe strncpy */ +void ppp_dbglog(const char *fmt, ...); /* log a debug message */ +void ppp_info(const char *fmt, ...); /* log an informational message */ +void ppp_notice(const char *fmt, ...); /* log a notice-level message */ +void ppp_warn(const char *fmt, ...); /* log a warning message */ +void ppp_error(const char *fmt, ...); /* log an error message */ +void ppp_fatal(const char *fmt, ...); /* log an error message and die(1) */ +#if PRINTPKT_SUPPORT +void ppp_dump_packet(ppp_pcb *pcb, const char *tag, unsigned char *p, int len); + /* dump packet to debug log if interesting */ +#endif /* PRINTPKT_SUPPORT */ + + +#endif /* PPP_SUPPORT */ +#endif /* LWIP_HDR_PPP_IMPL_H */ diff --git a/tools/sdk/lwip2/include/netif/ppp/ppp_opts.h b/tools/sdk/lwip2/include/netif/ppp/ppp_opts.h new file mode 100644 index 000000000..fa79c090f --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/ppp_opts.h @@ -0,0 +1,593 @@ +/* + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + */ + +#ifndef LWIP_PPP_OPTS_H +#define LWIP_PPP_OPTS_H + +#include "lwip/opt.h" + +/** + * PPP_SUPPORT==1: Enable PPP. + */ +#ifndef PPP_SUPPORT +#define PPP_SUPPORT 0 +#endif + +/** + * PPPOE_SUPPORT==1: Enable PPP Over Ethernet + */ +#ifndef PPPOE_SUPPORT +#define PPPOE_SUPPORT 0 +#endif + +/** + * PPPOL2TP_SUPPORT==1: Enable PPP Over L2TP + */ +#ifndef PPPOL2TP_SUPPORT +#define PPPOL2TP_SUPPORT 0 +#endif + +/** + * PPPOL2TP_AUTH_SUPPORT==1: Enable PPP Over L2TP Auth (enable MD5 support) + */ +#ifndef PPPOL2TP_AUTH_SUPPORT +#define PPPOL2TP_AUTH_SUPPORT PPPOL2TP_SUPPORT +#endif + +/** + * PPPOS_SUPPORT==1: Enable PPP Over Serial + */ +#ifndef PPPOS_SUPPORT +#define PPPOS_SUPPORT PPP_SUPPORT +#endif + +/** + * LWIP_PPP_API==1: Enable PPP API (in pppapi.c) + */ +#ifndef LWIP_PPP_API +#define LWIP_PPP_API (PPP_SUPPORT && (NO_SYS == 0)) +#endif + +/** + * MEMP_NUM_PPP_PCB: the number of simultaneously active PPP + * connections (requires the PPP_SUPPORT option) + */ +#ifndef MEMP_NUM_PPP_PCB +#define MEMP_NUM_PPP_PCB 1 +#endif + +#if PPP_SUPPORT + +/** + * MEMP_NUM_PPPOS_INTERFACES: the number of concurrently active PPPoS + * interfaces (only used with PPPOS_SUPPORT==1) + */ +#ifndef MEMP_NUM_PPPOS_INTERFACES +#define MEMP_NUM_PPPOS_INTERFACES MEMP_NUM_PPP_PCB +#endif + +/** + * MEMP_NUM_PPPOE_INTERFACES: the number of concurrently active PPPoE + * interfaces (only used with PPPOE_SUPPORT==1) + */ +#ifndef MEMP_NUM_PPPOE_INTERFACES +#define MEMP_NUM_PPPOE_INTERFACES 1 +#endif + +/** + * MEMP_NUM_PPPOL2TP_INTERFACES: the number of concurrently active PPPoL2TP + * interfaces (only used with PPPOL2TP_SUPPORT==1) + */ +#ifndef MEMP_NUM_PPPOL2TP_INTERFACES +#define MEMP_NUM_PPPOL2TP_INTERFACES 1 +#endif + +/** + * MEMP_NUM_PPP_API_MSG: Number of concurrent PPP API messages (in pppapi.c) + */ +#ifndef MEMP_NUM_PPP_API_MSG +#define MEMP_NUM_PPP_API_MSG 5 +#endif + +/** + * PPP_DEBUG: Enable debugging for PPP. + */ +#ifndef PPP_DEBUG +#define PPP_DEBUG LWIP_DBG_OFF +#endif + +/** + * PPP_INPROC_IRQ_SAFE==1 call pppos_input() using tcpip_callback(). + * + * Please read the "PPPoS input path" chapter in the PPP documentation about this option. + */ +#ifndef PPP_INPROC_IRQ_SAFE +#define PPP_INPROC_IRQ_SAFE 0 +#endif + +/** + * PRINTPKT_SUPPORT==1: Enable PPP print packet support + * + * Mandatory for debugging, it displays exchanged packet content in debug trace. + */ +#ifndef PRINTPKT_SUPPORT +#define PRINTPKT_SUPPORT 0 +#endif + +/** + * PPP_IPV4_SUPPORT==1: Enable PPP IPv4 support + */ +#ifndef PPP_IPV4_SUPPORT +#define PPP_IPV4_SUPPORT (LWIP_IPV4) +#endif + +/** + * PPP_IPV6_SUPPORT==1: Enable PPP IPv6 support + */ +#ifndef PPP_IPV6_SUPPORT +#define PPP_IPV6_SUPPORT (LWIP_IPV6) +#endif + +/** + * PPP_NOTIFY_PHASE==1: Support PPP notify phase support + * + * PPP notify phase support allows you to set a callback which is + * called on change of the internal PPP state machine. + * + * This can be used for example to set a LED pattern depending on the + * current phase of the PPP session. + */ +#ifndef PPP_NOTIFY_PHASE +#define PPP_NOTIFY_PHASE 0 +#endif + +/** + * pbuf_type PPP is using for LCP, PAP, CHAP, EAP, CCP, IPCP and IP6CP packets. + * + * Memory allocated must be single buffered for PPP to works, it requires pbuf + * that are not going to be chained when allocated. This requires setting + * PBUF_POOL_BUFSIZE to at least 512 bytes, which is quite huge for small systems. + * + * Setting PPP_USE_PBUF_RAM to 1 makes PPP use memory from heap where continuous + * buffers are required, allowing you to use a smaller PBUF_POOL_BUFSIZE. + */ +#ifndef PPP_USE_PBUF_RAM +#define PPP_USE_PBUF_RAM 0 +#endif + +/** + * PPP_FCS_TABLE: Keep a 256*2 byte table to speed up FCS calculation for PPPoS + */ +#ifndef PPP_FCS_TABLE +#define PPP_FCS_TABLE 1 +#endif + +/** + * PAP_SUPPORT==1: Support PAP. + */ +#ifndef PAP_SUPPORT +#define PAP_SUPPORT 0 +#endif + +/** + * CHAP_SUPPORT==1: Support CHAP. + */ +#ifndef CHAP_SUPPORT +#define CHAP_SUPPORT 0 +#endif + +/** + * MSCHAP_SUPPORT==1: Support MSCHAP. + */ +#ifndef MSCHAP_SUPPORT +#define MSCHAP_SUPPORT 0 +#endif +#if MSCHAP_SUPPORT +/* MSCHAP requires CHAP support */ +#undef CHAP_SUPPORT +#define CHAP_SUPPORT 1 +#endif /* MSCHAP_SUPPORT */ + +/** + * EAP_SUPPORT==1: Support EAP. + */ +#ifndef EAP_SUPPORT +#define EAP_SUPPORT 0 +#endif + +/** + * CCP_SUPPORT==1: Support CCP. + */ +#ifndef CCP_SUPPORT +#define CCP_SUPPORT 0 +#endif + +/** + * MPPE_SUPPORT==1: Support MPPE. + */ +#ifndef MPPE_SUPPORT +#define MPPE_SUPPORT 0 +#endif +#if MPPE_SUPPORT +/* MPPE requires CCP support */ +#undef CCP_SUPPORT +#define CCP_SUPPORT 1 +/* MPPE requires MSCHAP support */ +#undef MSCHAP_SUPPORT +#define MSCHAP_SUPPORT 1 +/* MSCHAP requires CHAP support */ +#undef CHAP_SUPPORT +#define CHAP_SUPPORT 1 +#endif /* MPPE_SUPPORT */ + +/** + * CBCP_SUPPORT==1: Support CBCP. CURRENTLY NOT SUPPORTED! DO NOT SET! + */ +#ifndef CBCP_SUPPORT +#define CBCP_SUPPORT 0 +#endif + +/** + * ECP_SUPPORT==1: Support ECP. CURRENTLY NOT SUPPORTED! DO NOT SET! + */ +#ifndef ECP_SUPPORT +#define ECP_SUPPORT 0 +#endif + +/** + * DEMAND_SUPPORT==1: Support dial on demand. CURRENTLY NOT SUPPORTED! DO NOT SET! + */ +#ifndef DEMAND_SUPPORT +#define DEMAND_SUPPORT 0 +#endif + +/** + * LQR_SUPPORT==1: Support Link Quality Report. Do nothing except exchanging some LCP packets. + */ +#ifndef LQR_SUPPORT +#define LQR_SUPPORT 0 +#endif + +/** + * PPP_SERVER==1: Enable PPP server support (waiting for incoming PPP session). + * + * Currently only supported for PPPoS. + */ +#ifndef PPP_SERVER +#define PPP_SERVER 0 +#endif + +#if PPP_SERVER +/* + * PPP_OUR_NAME: Our name for authentication purposes + */ +#ifndef PPP_OUR_NAME +#define PPP_OUR_NAME "lwIP" +#endif +#endif /* PPP_SERVER */ + +/** + * VJ_SUPPORT==1: Support VJ header compression. + */ +#ifndef VJ_SUPPORT +#define VJ_SUPPORT 1 +#endif +/* VJ compression is only supported for TCP over IPv4 over PPPoS. */ +#if !PPPOS_SUPPORT || !PPP_IPV4_SUPPORT || !LWIP_TCP +#undef VJ_SUPPORT +#define VJ_SUPPORT 0 +#endif /* !PPPOS_SUPPORT */ + +/** + * PPP_MD5_RANDM==1: Use MD5 for better randomness. + * Enabled by default if CHAP, EAP, or L2TP AUTH support is enabled. + */ +#ifndef PPP_MD5_RANDM +#define PPP_MD5_RANDM (CHAP_SUPPORT || EAP_SUPPORT || PPPOL2TP_AUTH_SUPPORT) +#endif + +/** + * PolarSSL embedded library + * + * + * lwIP contains some files fetched from the latest BSD release of + * the PolarSSL project (PolarSSL 0.10.1-bsd) for ciphers and encryption + * methods we need for lwIP PPP support. + * + * The PolarSSL files were cleaned to contain only the necessary struct + * fields and functions needed for lwIP. + * + * The PolarSSL API was not changed at all, so if you are already using + * PolarSSL you can choose to skip the compilation of the included PolarSSL + * library into lwIP. + * + * If you are not using the embedded copy you must include external + * libraries into your arch/cc.h port file. + * + * Beware of the stack requirements which can be a lot larger if you are not + * using our cleaned PolarSSL library. + */ + +/** + * LWIP_USE_EXTERNAL_POLARSSL: Use external PolarSSL library + */ +#ifndef LWIP_USE_EXTERNAL_POLARSSL +#define LWIP_USE_EXTERNAL_POLARSSL 0 +#endif + +/** + * LWIP_USE_EXTERNAL_MBEDTLS: Use external mbed TLS library + */ +#ifndef LWIP_USE_EXTERNAL_MBEDTLS +#define LWIP_USE_EXTERNAL_MBEDTLS 0 +#endif + +/* + * PPP Timeouts + */ + +/** + * FSM_DEFTIMEOUT: Timeout time in seconds + */ +#ifndef FSM_DEFTIMEOUT +#define FSM_DEFTIMEOUT 6 +#endif + +/** + * FSM_DEFMAXTERMREQS: Maximum Terminate-Request transmissions + */ +#ifndef FSM_DEFMAXTERMREQS +#define FSM_DEFMAXTERMREQS 2 +#endif + +/** + * FSM_DEFMAXCONFREQS: Maximum Configure-Request transmissions + */ +#ifndef FSM_DEFMAXCONFREQS +#define FSM_DEFMAXCONFREQS 10 +#endif + +/** + * FSM_DEFMAXNAKLOOPS: Maximum number of nak loops + */ +#ifndef FSM_DEFMAXNAKLOOPS +#define FSM_DEFMAXNAKLOOPS 5 +#endif + +/** + * UPAP_DEFTIMEOUT: Timeout (seconds) for retransmitting req + */ +#ifndef UPAP_DEFTIMEOUT +#define UPAP_DEFTIMEOUT 6 +#endif + +/** + * UPAP_DEFTRANSMITS: Maximum number of auth-reqs to send + */ +#ifndef UPAP_DEFTRANSMITS +#define UPAP_DEFTRANSMITS 10 +#endif + +#if PPP_SERVER +/** + * UPAP_DEFREQTIME: Time to wait for auth-req from peer + */ +#ifndef UPAP_DEFREQTIME +#define UPAP_DEFREQTIME 30 +#endif +#endif /* PPP_SERVER */ + +/** + * CHAP_DEFTIMEOUT: Timeout (seconds) for retransmitting req + */ +#ifndef CHAP_DEFTIMEOUT +#define CHAP_DEFTIMEOUT 6 +#endif + +/** + * CHAP_DEFTRANSMITS: max # times to send challenge + */ +#ifndef CHAP_DEFTRANSMITS +#define CHAP_DEFTRANSMITS 10 +#endif + +#if PPP_SERVER +/** + * CHAP_DEFRECHALLENGETIME: If this option is > 0, rechallenge the peer every n seconds + */ +#ifndef CHAP_DEFRECHALLENGETIME +#define CHAP_DEFRECHALLENGETIME 0 +#endif +#endif /* PPP_SERVER */ + +/** + * EAP_DEFREQTIME: Time to wait for peer request + */ +#ifndef EAP_DEFREQTIME +#define EAP_DEFREQTIME 6 +#endif + +/** + * EAP_DEFALLOWREQ: max # times to accept requests + */ +#ifndef EAP_DEFALLOWREQ +#define EAP_DEFALLOWREQ 10 +#endif + +#if PPP_SERVER +/** + * EAP_DEFTIMEOUT: Timeout (seconds) for rexmit + */ +#ifndef EAP_DEFTIMEOUT +#define EAP_DEFTIMEOUT 6 +#endif + +/** + * EAP_DEFTRANSMITS: max # times to transmit + */ +#ifndef EAP_DEFTRANSMITS +#define EAP_DEFTRANSMITS 10 +#endif +#endif /* PPP_SERVER */ + +/** + * LCP_DEFLOOPBACKFAIL: Default number of times we receive our magic number from the peer + * before deciding the link is looped-back. + */ +#ifndef LCP_DEFLOOPBACKFAIL +#define LCP_DEFLOOPBACKFAIL 10 +#endif + +/** + * LCP_ECHOINTERVAL: Interval in seconds between keepalive echo requests, 0 to disable. + */ +#ifndef LCP_ECHOINTERVAL +#define LCP_ECHOINTERVAL 0 +#endif + +/** + * LCP_MAXECHOFAILS: Number of unanswered echo requests before failure. + */ +#ifndef LCP_MAXECHOFAILS +#define LCP_MAXECHOFAILS 3 +#endif + +/** + * PPP_MAXIDLEFLAG: Max Xmit idle time (in ms) before resend flag char. + */ +#ifndef PPP_MAXIDLEFLAG +#define PPP_MAXIDLEFLAG 100 +#endif + +/** + * PPP Packet sizes + */ + +/** + * PPP_MRU: Default MRU + */ +#ifndef PPP_MRU +#define PPP_MRU 1500 +#endif + +/** + * PPP_DEFMRU: Default MRU to try + */ +#ifndef PPP_DEFMRU +#define PPP_DEFMRU 1500 +#endif + +/** + * PPP_MAXMRU: Normally limit MRU to this (pppd default = 16384) + */ +#ifndef PPP_MAXMRU +#define PPP_MAXMRU 1500 +#endif + +/** + * PPP_MINMRU: No MRUs below this + */ +#ifndef PPP_MINMRU +#define PPP_MINMRU 128 +#endif + +/** + * PPPOL2TP_DEFMRU: Default MTU and MRU for L2TP + * Default = 1500 - PPPoE(6) - PPP Protocol(2) - IPv4 header(20) - UDP Header(8) + * - L2TP Header(6) - HDLC Header(2) - PPP Protocol(2) - MPPE Header(2) - PPP Protocol(2) + */ +#if PPPOL2TP_SUPPORT +#ifndef PPPOL2TP_DEFMRU +#define PPPOL2TP_DEFMRU 1450 +#endif +#endif /* PPPOL2TP_SUPPORT */ + +/** + * MAXNAMELEN: max length of hostname or name for auth + */ +#ifndef MAXNAMELEN +#define MAXNAMELEN 256 +#endif + +/** + * MAXSECRETLEN: max length of password or secret + */ +#ifndef MAXSECRETLEN +#define MAXSECRETLEN 256 +#endif + +/* ------------------------------------------------------------------------- */ + +/* + * Build triggers for embedded PolarSSL + */ +#if !LWIP_USE_EXTERNAL_POLARSSL && !LWIP_USE_EXTERNAL_MBEDTLS + +/* CHAP, EAP, L2TP AUTH and MD5 Random require MD5 support */ +#if CHAP_SUPPORT || EAP_SUPPORT || PPPOL2TP_AUTH_SUPPORT || PPP_MD5_RANDM +#define LWIP_INCLUDED_POLARSSL_MD5 1 +#endif /* CHAP_SUPPORT || EAP_SUPPORT || PPPOL2TP_AUTH_SUPPORT || PPP_MD5_RANDM */ + +#if MSCHAP_SUPPORT + +/* MSCHAP require MD4 support */ +#define LWIP_INCLUDED_POLARSSL_MD4 1 +/* MSCHAP require SHA1 support */ +#define LWIP_INCLUDED_POLARSSL_SHA1 1 +/* MSCHAP require DES support */ +#define LWIP_INCLUDED_POLARSSL_DES 1 + +/* MS-CHAP support is required for MPPE */ +#if MPPE_SUPPORT +/* MPPE require ARC4 support */ +#define LWIP_INCLUDED_POLARSSL_ARC4 1 +#endif /* MPPE_SUPPORT */ + +#endif /* MSCHAP_SUPPORT */ + +#endif /* !LWIP_USE_EXTERNAL_POLARSSL && !LWIP_USE_EXTERNAL_MBEDTLS */ + +/* Default value if unset */ +#ifndef LWIP_INCLUDED_POLARSSL_MD4 +#define LWIP_INCLUDED_POLARSSL_MD4 0 +#endif /* LWIP_INCLUDED_POLARSSL_MD4 */ +#ifndef LWIP_INCLUDED_POLARSSL_MD5 +#define LWIP_INCLUDED_POLARSSL_MD5 0 +#endif /* LWIP_INCLUDED_POLARSSL_MD5 */ +#ifndef LWIP_INCLUDED_POLARSSL_SHA1 +#define LWIP_INCLUDED_POLARSSL_SHA1 0 +#endif /* LWIP_INCLUDED_POLARSSL_SHA1 */ +#ifndef LWIP_INCLUDED_POLARSSL_DES +#define LWIP_INCLUDED_POLARSSL_DES 0 +#endif /* LWIP_INCLUDED_POLARSSL_DES */ +#ifndef LWIP_INCLUDED_POLARSSL_ARC4 +#define LWIP_INCLUDED_POLARSSL_ARC4 0 +#endif /* LWIP_INCLUDED_POLARSSL_ARC4 */ + +#endif /* PPP_SUPPORT */ + +#endif /* LWIP_PPP_OPTS_H */ diff --git a/tools/sdk/lwip2/include/netif/ppp/pppapi.h b/tools/sdk/lwip2/include/netif/ppp/pppapi.h new file mode 100644 index 000000000..913d93f74 --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/pppapi.h @@ -0,0 +1,137 @@ +/* + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + */ + +#ifndef LWIP_PPPAPI_H +#define LWIP_PPPAPI_H + +#include "netif/ppp/ppp_opts.h" + +#if LWIP_PPP_API /* don't build if not configured for use in lwipopts.h */ + +#include "lwip/sys.h" +#include "lwip/netif.h" +#include "lwip/priv/tcpip_priv.h" +#include "netif/ppp/ppp.h" +#if PPPOS_SUPPORT +#include "netif/ppp/pppos.h" +#endif /* PPPOS_SUPPORT */ + +#ifdef __cplusplus +extern "C" { +#endif + +struct pppapi_msg_msg { + ppp_pcb *ppp; + union { +#if PPP_NOTIFY_PHASE + struct { + ppp_notify_phase_cb_fn notify_phase_cb; + } setnotifyphasecb; +#endif /* PPP_NOTIFY_PHASE */ +#if PPPOS_SUPPORT + struct { + struct netif *pppif; + pppos_output_cb_fn output_cb; + ppp_link_status_cb_fn link_status_cb; + void *ctx_cb; + } serialcreate; +#endif /* PPPOS_SUPPORT */ +#if PPPOE_SUPPORT + struct { + struct netif *pppif; + struct netif *ethif; + const char *service_name; + const char *concentrator_name; + ppp_link_status_cb_fn link_status_cb; + void *ctx_cb; + } ethernetcreate; +#endif /* PPPOE_SUPPORT */ +#if PPPOL2TP_SUPPORT + struct { + struct netif *pppif; + struct netif *netif; + API_MSG_M_DEF_C(ip_addr_t, ipaddr); + u16_t port; +#if PPPOL2TP_AUTH_SUPPORT + const u8_t *secret; + u8_t secret_len; +#endif /* PPPOL2TP_AUTH_SUPPORT */ + ppp_link_status_cb_fn link_status_cb; + void *ctx_cb; + } l2tpcreate; +#endif /* PPPOL2TP_SUPPORT */ + struct { + u16_t holdoff; + } connect; + struct { + u8_t nocarrier; + } close; + struct { + u8_t cmd; + void *arg; + } ioctl; + } msg; +}; + +struct pppapi_msg { + struct tcpip_api_call_data call; + struct pppapi_msg_msg msg; +}; + +/* API for application */ +err_t pppapi_set_default(ppp_pcb *pcb); +#if PPP_NOTIFY_PHASE +err_t pppapi_set_notify_phase_callback(ppp_pcb *pcb, ppp_notify_phase_cb_fn notify_phase_cb); +#endif /* PPP_NOTIFY_PHASE */ +#if PPPOS_SUPPORT +ppp_pcb *pppapi_pppos_create(struct netif *pppif, pppos_output_cb_fn output_cb, ppp_link_status_cb_fn link_status_cb, void *ctx_cb); +#endif /* PPPOS_SUPPORT */ +#if PPPOE_SUPPORT +ppp_pcb *pppapi_pppoe_create(struct netif *pppif, struct netif *ethif, const char *service_name, + const char *concentrator_name, ppp_link_status_cb_fn link_status_cb, + void *ctx_cb); +#endif /* PPPOE_SUPPORT */ +#if PPPOL2TP_SUPPORT +ppp_pcb *pppapi_pppol2tp_create(struct netif *pppif, struct netif *netif, ip_addr_t *ipaddr, u16_t port, + const u8_t *secret, u8_t secret_len, + ppp_link_status_cb_fn link_status_cb, void *ctx_cb); +#endif /* PPPOL2TP_SUPPORT */ +err_t pppapi_connect(ppp_pcb *pcb, u16_t holdoff); +#if PPP_SERVER +err_t pppapi_listen(ppp_pcb *pcb); +#endif /* PPP_SERVER */ +err_t pppapi_close(ppp_pcb *pcb, u8_t nocarrier); +err_t pppapi_free(ppp_pcb *pcb); +err_t pppapi_ioctl(ppp_pcb *pcb, u8_t cmd, void *arg); + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_PPP_API */ + +#endif /* LWIP_PPPAPI_H */ diff --git a/tools/sdk/lwip2/include/netif/ppp/pppcrypt.h b/tools/sdk/lwip2/include/netif/ppp/pppcrypt.h new file mode 100644 index 000000000..a7b2099f2 --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/pppcrypt.h @@ -0,0 +1,136 @@ +/* + * pppcrypt.c - PPP/DES linkage for MS-CHAP and EAP SRP-SHA1 + * + * Extracted from chap_ms.c by James Carlson. + * + * Copyright (c) 1995 Eric Rosenquist. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The name(s) of the authors of this software must not be used to + * endorse or promote products derived from this software without + * prior written permission. + * + * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO + * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY + * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "netif/ppp/ppp_opts.h" +#if PPP_SUPPORT /* don't build if not configured for use in lwipopts.h */ + +/* This header file is included in all PPP modules needing hashes and/or ciphers */ + +#ifndef PPPCRYPT_H +#define PPPCRYPT_H + +/* + * If included PolarSSL copy is not used, user is expected to include + * external libraries in arch/cc.h (which is included by lwip/arch.h). + */ +#include "lwip/arch.h" + +/* + * Map hashes and ciphers functions to PolarSSL + */ +#if !LWIP_USE_EXTERNAL_MBEDTLS + +#include "netif/ppp/polarssl/md4.h" +#define lwip_md4_context md4_context +#define lwip_md4_init(context) +#define lwip_md4_starts md4_starts +#define lwip_md4_update md4_update +#define lwip_md4_finish md4_finish +#define lwip_md4_free(context) + +#include "netif/ppp/polarssl/md5.h" +#define lwip_md5_context md5_context +#define lwip_md5_init(context) +#define lwip_md5_starts md5_starts +#define lwip_md5_update md5_update +#define lwip_md5_finish md5_finish +#define lwip_md5_free(context) + +#include "netif/ppp/polarssl/sha1.h" +#define lwip_sha1_context sha1_context +#define lwip_sha1_init(context) +#define lwip_sha1_starts sha1_starts +#define lwip_sha1_update sha1_update +#define lwip_sha1_finish sha1_finish +#define lwip_sha1_free(context) + +#include "netif/ppp/polarssl/des.h" +#define lwip_des_context des_context +#define lwip_des_init(context) +#define lwip_des_setkey_enc des_setkey_enc +#define lwip_des_crypt_ecb des_crypt_ecb +#define lwip_des_free(context) + +#include "netif/ppp/polarssl/arc4.h" +#define lwip_arc4_context arc4_context +#define lwip_arc4_init(context) +#define lwip_arc4_setup arc4_setup +#define lwip_arc4_crypt arc4_crypt +#define lwip_arc4_free(context) + +#endif /* !LWIP_USE_EXTERNAL_MBEDTLS */ + +/* + * Map hashes and ciphers functions to mbed TLS + */ +#if LWIP_USE_EXTERNAL_MBEDTLS + +#define lwip_md4_context mbedtls_md4_context +#define lwip_md4_init mbedtls_md4_init +#define lwip_md4_starts mbedtls_md4_starts +#define lwip_md4_update mbedtls_md4_update +#define lwip_md4_finish mbedtls_md4_finish +#define lwip_md4_free mbedtls_md4_free + +#define lwip_md5_context mbedtls_md5_context +#define lwip_md5_init mbedtls_md5_init +#define lwip_md5_starts mbedtls_md5_starts +#define lwip_md5_update mbedtls_md5_update +#define lwip_md5_finish mbedtls_md5_finish +#define lwip_md5_free mbedtls_md5_free + +#define lwip_sha1_context mbedtls_sha1_context +#define lwip_sha1_init mbedtls_sha1_init +#define lwip_sha1_starts mbedtls_sha1_starts +#define lwip_sha1_update mbedtls_sha1_update +#define lwip_sha1_finish mbedtls_sha1_finish +#define lwip_sha1_free mbedtls_sha1_free + +#define lwip_des_context mbedtls_des_context +#define lwip_des_init mbedtls_des_init +#define lwip_des_setkey_enc mbedtls_des_setkey_enc +#define lwip_des_crypt_ecb mbedtls_des_crypt_ecb +#define lwip_des_free mbedtls_des_free + +#define lwip_arc4_context mbedtls_arc4_context +#define lwip_arc4_init mbedtls_arc4_init +#define lwip_arc4_setup mbedtls_arc4_setup +#define lwip_arc4_crypt(context, buffer, length) mbedtls_arc4_crypt(context, length, buffer, buffer) +#define lwip_arc4_free mbedtls_arc4_free + +#endif /* LWIP_USE_EXTERNAL_MBEDTLS */ + +void pppcrypt_56_to_64_bit_key(u_char *key, u_char *des_key); + +#endif /* PPPCRYPT_H */ + +#endif /* PPP_SUPPORT */ diff --git a/tools/sdk/lwip2/include/netif/ppp/pppdebug.h b/tools/sdk/lwip2/include/netif/ppp/pppdebug.h new file mode 100644 index 000000000..7ead04591 --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/pppdebug.h @@ -0,0 +1,80 @@ +/***************************************************************************** +* pppdebug.h - System debugging utilities. +* +* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. +* portions Copyright (c) 1998 Global Election Systems Inc. +* portions Copyright (c) 2001 by Cognizant Pty Ltd. +* +* The authors hereby grant permission to use, copy, modify, distribute, +* and license this software and its documentation for any purpose, provided +* that existing copyright notices are retained in all copies and that this +* notice and the following disclaimer are included verbatim in any +* distributions. No written agreement, license, or royalty fee is required +* for any of the authorized uses. +* +* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *AS IS* AND ANY EXPRESS OR +* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +* IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +****************************************************************************** +* REVISION HISTORY (please don't use tabs!) +* +* 03-01-01 Marc Boucher +* Ported to lwIP. +* 98-07-29 Guy Lancaster , Global Election Systems Inc. +* Original. +* +***************************************************************************** +*/ + +#include "netif/ppp/ppp_opts.h" +#if PPP_SUPPORT /* don't build if not configured for use in lwipopts.h */ + +#ifndef PPPDEBUG_H +#define PPPDEBUG_H + +/* Trace levels. */ +#define LOG_CRITICAL (PPP_DEBUG | LWIP_DBG_LEVEL_SEVERE) +#define LOG_ERR (PPP_DEBUG | LWIP_DBG_LEVEL_SEVERE) +#define LOG_NOTICE (PPP_DEBUG | LWIP_DBG_LEVEL_WARNING) +#define LOG_WARNING (PPP_DEBUG | LWIP_DBG_LEVEL_WARNING) +#define LOG_INFO (PPP_DEBUG) +#define LOG_DETAIL (PPP_DEBUG) +#define LOG_DEBUG (PPP_DEBUG) + +#if PPP_DEBUG + +#define MAINDEBUG(a) LWIP_DEBUGF(LWIP_DBG_LEVEL_WARNING, a) +#define SYSDEBUG(a) LWIP_DEBUGF(LWIP_DBG_LEVEL_WARNING, a) +#define FSMDEBUG(a) LWIP_DEBUGF(LWIP_DBG_LEVEL_WARNING, a) +#define LCPDEBUG(a) LWIP_DEBUGF(LWIP_DBG_LEVEL_WARNING, a) +#define IPCPDEBUG(a) LWIP_DEBUGF(LWIP_DBG_LEVEL_WARNING, a) +#define IPV6CPDEBUG(a) LWIP_DEBUGF(LWIP_DBG_LEVEL_WARNING, a) +#define UPAPDEBUG(a) LWIP_DEBUGF(LWIP_DBG_LEVEL_WARNING, a) +#define CHAPDEBUG(a) LWIP_DEBUGF(LWIP_DBG_LEVEL_WARNING, a) +#define PPPDEBUG(a, b) LWIP_DEBUGF(a, b) + +#else /* PPP_DEBUG */ + +#define MAINDEBUG(a) +#define SYSDEBUG(a) +#define FSMDEBUG(a) +#define LCPDEBUG(a) +#define IPCPDEBUG(a) +#define IPV6CPDEBUG(a) +#define UPAPDEBUG(a) +#define CHAPDEBUG(a) +#define PPPDEBUG(a, b) + +#endif /* PPP_DEBUG */ + +#endif /* PPPDEBUG_H */ + +#endif /* PPP_SUPPORT */ diff --git a/tools/sdk/lwip2/include/netif/ppp/pppoe.h b/tools/sdk/lwip2/include/netif/ppp/pppoe.h new file mode 100644 index 000000000..9f8f2892b --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/pppoe.h @@ -0,0 +1,179 @@ +/***************************************************************************** +* pppoe.h - PPP Over Ethernet implementation for lwIP. +* +* Copyright (c) 2006 by Marc Boucher, Services Informatiques (MBSI) inc. +* +* The authors hereby grant permission to use, copy, modify, distribute, +* and license this software and its documentation for any purpose, provided +* that existing copyright notices are retained in all copies and that this +* notice and the following disclaimer are included verbatim in any +* distributions. No written agreement, license, or royalty fee is required +* for any of the authorized uses. +* +* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *AS IS* AND ANY EXPRESS OR +* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +* IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +****************************************************************************** +* REVISION HISTORY +* +* 06-01-01 Marc Boucher +* Ported to lwIP. +*****************************************************************************/ + + + +/* based on NetBSD: if_pppoe.c,v 1.64 2006/01/31 23:50:15 martin Exp */ + +/*- + * Copyright (c) 2002 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Martin Husemann . + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the NetBSD + * Foundation, Inc. and its contributors. + * 4. Neither the name of The NetBSD Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +#include "netif/ppp/ppp_opts.h" +#if PPP_SUPPORT && PPPOE_SUPPORT /* don't build if not configured for use in lwipopts.h */ + +#ifndef PPP_OE_H +#define PPP_OE_H + +#include "ppp.h" +#include "lwip/etharp.h" + +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +struct pppoehdr { + PACK_STRUCT_FLD_8(u8_t vertype); + PACK_STRUCT_FLD_8(u8_t code); + PACK_STRUCT_FIELD(u16_t session); + PACK_STRUCT_FIELD(u16_t plen); +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/bpstruct.h" +#endif +PACK_STRUCT_BEGIN +struct pppoetag { + PACK_STRUCT_FIELD(u16_t tag); + PACK_STRUCT_FIELD(u16_t len); +} PACK_STRUCT_STRUCT; +PACK_STRUCT_END +#ifdef PACK_STRUCT_USE_INCLUDES +# include "arch/epstruct.h" +#endif + + +#define PPPOE_STATE_INITIAL 0 +#define PPPOE_STATE_PADI_SENT 1 +#define PPPOE_STATE_PADR_SENT 2 +#define PPPOE_STATE_SESSION 3 +/* passive */ +#define PPPOE_STATE_PADO_SENT 1 + +#define PPPOE_HEADERLEN sizeof(struct pppoehdr) +#define PPPOE_VERTYPE 0x11 /* VER=1, TYPE = 1 */ + +#define PPPOE_TAG_EOL 0x0000 /* end of list */ +#define PPPOE_TAG_SNAME 0x0101 /* service name */ +#define PPPOE_TAG_ACNAME 0x0102 /* access concentrator name */ +#define PPPOE_TAG_HUNIQUE 0x0103 /* host unique */ +#define PPPOE_TAG_ACCOOKIE 0x0104 /* AC cookie */ +#define PPPOE_TAG_VENDOR 0x0105 /* vendor specific */ +#define PPPOE_TAG_RELAYSID 0x0110 /* relay session id */ +#define PPPOE_TAG_SNAME_ERR 0x0201 /* service name error */ +#define PPPOE_TAG_ACSYS_ERR 0x0202 /* AC system error */ +#define PPPOE_TAG_GENERIC_ERR 0x0203 /* gerneric error */ + +#define PPPOE_CODE_PADI 0x09 /* Active Discovery Initiation */ +#define PPPOE_CODE_PADO 0x07 /* Active Discovery Offer */ +#define PPPOE_CODE_PADR 0x19 /* Active Discovery Request */ +#define PPPOE_CODE_PADS 0x65 /* Active Discovery Session confirmation */ +#define PPPOE_CODE_PADT 0xA7 /* Active Discovery Terminate */ + +#ifndef PPPOE_MAX_AC_COOKIE_LEN +#define PPPOE_MAX_AC_COOKIE_LEN 64 +#endif + +struct pppoe_softc { + struct pppoe_softc *next; + struct netif *sc_ethif; /* ethernet interface we are using */ + ppp_pcb *pcb; /* PPP PCB */ + + struct eth_addr sc_dest; /* hardware address of concentrator */ + u16_t sc_session; /* PPPoE session id */ + u8_t sc_state; /* discovery phase or session connected */ + +#ifdef PPPOE_TODO + u8_t *sc_service_name; /* if != NULL: requested name of service */ + u8_t *sc_concentrator_name; /* if != NULL: requested concentrator id */ +#endif /* PPPOE_TODO */ + u8_t sc_ac_cookie[PPPOE_MAX_AC_COOKIE_LEN]; /* content of AC cookie we must echo back */ + u8_t sc_ac_cookie_len; /* length of cookie data */ +#ifdef PPPOE_SERVER + u8_t *sc_hunique; /* content of host unique we must echo back */ + u8_t sc_hunique_len; /* length of host unique */ +#endif + u8_t sc_padi_retried; /* number of PADI retries already done */ + u8_t sc_padr_retried; /* number of PADR retries already done */ +}; + + +#define pppoe_init() /* compatibility define, no initialization needed */ + +ppp_pcb *pppoe_create(struct netif *pppif, + struct netif *ethif, + const char *service_name, const char *concentrator_name, + ppp_link_status_cb_fn link_status_cb, void *ctx_cb); + +/* + * Functions called from lwIP + * DO NOT CALL FROM lwIP USER APPLICATION. + */ +void pppoe_disc_input(struct netif *netif, struct pbuf *p); +void pppoe_data_input(struct netif *netif, struct pbuf *p); + +#endif /* PPP_OE_H */ + +#endif /* PPP_SUPPORT && PPPOE_SUPPORT */ diff --git a/tools/sdk/lwip2/include/netif/ppp/pppol2tp.h b/tools/sdk/lwip2/include/netif/ppp/pppol2tp.h new file mode 100644 index 000000000..f03950e65 --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/pppol2tp.h @@ -0,0 +1,201 @@ +/** + * @file + * Network Point to Point Protocol over Layer 2 Tunneling Protocol header file. + * + */ + +/* + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + */ + +#include "netif/ppp/ppp_opts.h" +#if PPP_SUPPORT && PPPOL2TP_SUPPORT /* don't build if not configured for use in lwipopts.h */ + +#ifndef PPPOL2TP_H +#define PPPOL2TP_H + +#include "ppp.h" + +/* Timeout */ +#define PPPOL2TP_CONTROL_TIMEOUT (5*1000) /* base for quick timeout calculation */ +#define PPPOL2TP_SLOW_RETRY (60*1000) /* persistent retry interval */ + +#define PPPOL2TP_MAXSCCRQ 4 /* retry SCCRQ four times (quickly) */ +#define PPPOL2TP_MAXICRQ 4 /* retry IRCQ four times */ +#define PPPOL2TP_MAXICCN 4 /* retry ICCN four times */ + +/* L2TP header flags */ +#define PPPOL2TP_HEADERFLAG_CONTROL 0x8000 +#define PPPOL2TP_HEADERFLAG_LENGTH 0x4000 +#define PPPOL2TP_HEADERFLAG_SEQUENCE 0x0800 +#define PPPOL2TP_HEADERFLAG_OFFSET 0x0200 +#define PPPOL2TP_HEADERFLAG_PRIORITY 0x0100 +#define PPPOL2TP_HEADERFLAG_VERSION 0x0002 + +/* Mandatory bits for control: Control, Length, Sequence, Version 2 */ +#define PPPOL2TP_HEADERFLAG_CONTROL_MANDATORY (PPPOL2TP_HEADERFLAG_CONTROL|PPPOL2TP_HEADERFLAG_LENGTH|PPPOL2TP_HEADERFLAG_SEQUENCE|PPPOL2TP_HEADERFLAG_VERSION) +/* Forbidden bits for control: Offset, Priority */ +#define PPPOL2TP_HEADERFLAG_CONTROL_FORBIDDEN (PPPOL2TP_HEADERFLAG_OFFSET|PPPOL2TP_HEADERFLAG_PRIORITY) + +/* Mandatory bits for data: Version 2 */ +#define PPPOL2TP_HEADERFLAG_DATA_MANDATORY (PPPOL2TP_HEADERFLAG_VERSION) + +/* AVP (Attribute Value Pair) header */ +#define PPPOL2TP_AVPHEADERFLAG_MANDATORY 0x8000 +#define PPPOL2TP_AVPHEADERFLAG_HIDDEN 0x4000 +#define PPPOL2TP_AVPHEADERFLAG_LENGTHMASK 0x03ff + +/* -- AVP - Message type */ +#define PPPOL2TP_AVPTYPE_MESSAGE 0 /* Message type */ + +/* Control Connection Management */ +#define PPPOL2TP_MESSAGETYPE_SCCRQ 1 /* Start Control Connection Request */ +#define PPPOL2TP_MESSAGETYPE_SCCRP 2 /* Start Control Connection Reply */ +#define PPPOL2TP_MESSAGETYPE_SCCCN 3 /* Start Control Connection Connected */ +#define PPPOL2TP_MESSAGETYPE_STOPCCN 4 /* Stop Control Connection Notification */ +#define PPPOL2TP_MESSAGETYPE_HELLO 6 /* Hello */ +/* Call Management */ +#define PPPOL2TP_MESSAGETYPE_OCRQ 7 /* Outgoing Call Request */ +#define PPPOL2TP_MESSAGETYPE_OCRP 8 /* Outgoing Call Reply */ +#define PPPOL2TP_MESSAGETYPE_OCCN 9 /* Outgoing Call Connected */ +#define PPPOL2TP_MESSAGETYPE_ICRQ 10 /* Incoming Call Request */ +#define PPPOL2TP_MESSAGETYPE_ICRP 11 /* Incoming Call Reply */ +#define PPPOL2TP_MESSAGETYPE_ICCN 12 /* Incoming Call Connected */ +#define PPPOL2TP_MESSAGETYPE_CDN 14 /* Call Disconnect Notify */ +/* Error reporting */ +#define PPPOL2TP_MESSAGETYPE_WEN 15 /* WAN Error Notify */ +/* PPP Session Control */ +#define PPPOL2TP_MESSAGETYPE_SLI 16 /* Set Link Info */ + +/* -- AVP - Result code */ +#define PPPOL2TP_AVPTYPE_RESULTCODE 1 /* Result code */ +#define PPPOL2TP_RESULTCODE 1 /* General request to clear control connection */ + +/* -- AVP - Protocol version (!= L2TP Header version) */ +#define PPPOL2TP_AVPTYPE_VERSION 2 +#define PPPOL2TP_VERSION 0x0100 /* L2TP Protocol version 1, revision 0 */ + +/* -- AVP - Framing capabilities */ +#define PPPOL2TP_AVPTYPE_FRAMINGCAPABILITIES 3 /* Bearer capabilities */ +#define PPPOL2TP_FRAMINGCAPABILITIES 0x00000003 /* Async + Sync framing */ + +/* -- AVP - Bearer capabilities */ +#define PPPOL2TP_AVPTYPE_BEARERCAPABILITIES 4 /* Bearer capabilities */ +#define PPPOL2TP_BEARERCAPABILITIES 0x00000003 /* Analog + Digital Access */ + +/* -- AVP - Tie breaker */ +#define PPPOL2TP_AVPTYPE_TIEBREAKER 5 + +/* -- AVP - Host name */ +#define PPPOL2TP_AVPTYPE_HOSTNAME 7 /* Host name */ +#define PPPOL2TP_HOSTNAME "lwIP" /* FIXME: make it configurable */ + +/* -- AVP - Vendor name */ +#define PPPOL2TP_AVPTYPE_VENDORNAME 8 /* Vendor name */ +#define PPPOL2TP_VENDORNAME "lwIP" /* FIXME: make it configurable */ + +/* -- AVP - Assign tunnel ID */ +#define PPPOL2TP_AVPTYPE_TUNNELID 9 /* Assign Tunnel ID */ + +/* -- AVP - Receive window size */ +#define PPPOL2TP_AVPTYPE_RECEIVEWINDOWSIZE 10 /* Receive window size */ +#define PPPOL2TP_RECEIVEWINDOWSIZE 8 /* FIXME: make it configurable */ + +/* -- AVP - Challenge */ +#define PPPOL2TP_AVPTYPE_CHALLENGE 11 /* Challenge */ + +/* -- AVP - Cause code */ +#define PPPOL2TP_AVPTYPE_CAUSECODE 12 /* Cause code*/ + +/* -- AVP - Challenge response */ +#define PPPOL2TP_AVPTYPE_CHALLENGERESPONSE 13 /* Challenge response */ +#define PPPOL2TP_AVPTYPE_CHALLENGERESPONSE_SIZE 16 + +/* -- AVP - Assign session ID */ +#define PPPOL2TP_AVPTYPE_SESSIONID 14 /* Assign Session ID */ + +/* -- AVP - Call serial number */ +#define PPPOL2TP_AVPTYPE_CALLSERIALNUMBER 15 /* Call Serial Number */ + +/* -- AVP - Framing type */ +#define PPPOL2TP_AVPTYPE_FRAMINGTYPE 19 /* Framing Type */ +#define PPPOL2TP_FRAMINGTYPE 0x00000001 /* Sync framing */ + +/* -- AVP - TX Connect Speed */ +#define PPPOL2TP_AVPTYPE_TXCONNECTSPEED 24 /* TX Connect Speed */ +#define PPPOL2TP_TXCONNECTSPEED 100000000 /* Connect speed: 100 Mbits/s */ + +/* L2TP Session state */ +#define PPPOL2TP_STATE_INITIAL 0 +#define PPPOL2TP_STATE_SCCRQ_SENT 1 +#define PPPOL2TP_STATE_ICRQ_SENT 2 +#define PPPOL2TP_STATE_ICCN_SENT 3 +#define PPPOL2TP_STATE_DATA 4 + +#define PPPOL2TP_OUTPUT_DATA_HEADER_LEN 6 /* Our data header len */ + +/* + * PPPoL2TP interface control block. + */ +typedef struct pppol2tp_pcb_s pppol2tp_pcb; +struct pppol2tp_pcb_s { + ppp_pcb *ppp; /* PPP PCB */ + u8_t phase; /* L2TP phase */ + struct udp_pcb *udp; /* UDP L2TP Socket */ + struct netif *netif; /* Output interface, used as a default route */ + ip_addr_t remote_ip; /* LNS IP Address */ + u16_t remote_port; /* LNS port */ +#if PPPOL2TP_AUTH_SUPPORT + const u8_t *secret; /* Secret string */ + u8_t secret_len; /* Secret string length */ + u8_t secret_rv[16]; /* Random vector */ + u8_t challenge_hash[16]; /* Challenge response */ + u8_t send_challenge; /* Boolean whether the next sent packet should contains a challenge response */ +#endif /* PPPOL2TP_AUTH_SUPPORT */ + + u16_t tunnel_port; /* Tunnel port */ + u16_t our_ns; /* NS to peer */ + u16_t peer_nr; /* NR from peer */ + u16_t peer_ns; /* NS from peer */ + u16_t source_tunnel_id; /* Tunnel ID assigned by peer */ + u16_t remote_tunnel_id; /* Tunnel ID assigned to peer */ + u16_t source_session_id; /* Session ID assigned by peer */ + u16_t remote_session_id; /* Session ID assigned to peer */ + + u8_t sccrq_retried; /* number of SCCRQ retries already done */ + u8_t icrq_retried; /* number of ICRQ retries already done */ + u8_t iccn_retried; /* number of ICCN retries already done */ +}; + + +/* Create a new L2TP session. */ +ppp_pcb *pppol2tp_create(struct netif *pppif, + struct netif *netif, const ip_addr_t *ipaddr, u16_t port, + const u8_t *secret, u8_t secret_len, + ppp_link_status_cb_fn link_status_cb, void *ctx_cb); + +#endif /* PPPOL2TP_H */ +#endif /* PPP_SUPPORT && PPPOL2TP_SUPPORT */ diff --git a/tools/sdk/lwip2/include/netif/ppp/pppos.h b/tools/sdk/lwip2/include/netif/ppp/pppos.h new file mode 100644 index 000000000..d924a9fc7 --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/pppos.h @@ -0,0 +1,118 @@ +/** + * @file + * Network Point to Point Protocol over Serial header file. + * + */ + +/* + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + */ + +#include "netif/ppp/ppp_opts.h" +#if PPP_SUPPORT && PPPOS_SUPPORT /* don't build if not configured for use in lwipopts.h */ + +#ifndef PPPOS_H +#define PPPOS_H + +#include "lwip/sys.h" + +#include "ppp.h" +#include "vj.h" + +/* PPP packet parser states. Current state indicates operation yet to be + * completed. */ +enum { + PDIDLE = 0, /* Idle state - waiting. */ + PDSTART, /* Process start flag. */ + PDADDRESS, /* Process address field. */ + PDCONTROL, /* Process control field. */ + PDPROTOCOL1, /* Process protocol field 1. */ + PDPROTOCOL2, /* Process protocol field 2. */ + PDDATA /* Process data byte. */ +}; + +/* PPPoS serial output callback function prototype */ +typedef u32_t (*pppos_output_cb_fn)(ppp_pcb *pcb, u8_t *data, u32_t len, void *ctx); + +/* + * Extended asyncmap - allows any character to be escaped. + */ +typedef u8_t ext_accm[32]; + +/* + * PPPoS interface control block. + */ +typedef struct pppos_pcb_s pppos_pcb; +struct pppos_pcb_s { + /* -- below are data that will NOT be cleared between two sessions */ + ppp_pcb *ppp; /* PPP PCB */ + pppos_output_cb_fn output_cb; /* PPP serial output callback */ + + /* -- below are data that will be cleared between two sessions + * + * last_xmit must be the first member of cleared members, because it is + * used to know which part must not be cleared. + */ + u32_t last_xmit; /* Time of last transmission. */ + ext_accm out_accm; /* Async-Ctl-Char-Map for output. */ + + /* flags */ + unsigned int open :1; /* Set if PPPoS is open */ + unsigned int pcomp :1; /* Does peer accept protocol compression? */ + unsigned int accomp :1; /* Does peer accept addr/ctl compression? */ + + /* PPPoS rx */ + ext_accm in_accm; /* Async-Ctl-Char-Map for input. */ + struct pbuf *in_head, *in_tail; /* The input packet. */ + u16_t in_protocol; /* The input protocol code. */ + u16_t in_fcs; /* Input Frame Check Sequence value. */ + u8_t in_state; /* The input process state. */ + u8_t in_escaped; /* Escape next character. */ +}; + +/* Create a new PPPoS session. */ +ppp_pcb *pppos_create(struct netif *pppif, pppos_output_cb_fn output_cb, + ppp_link_status_cb_fn link_status_cb, void *ctx_cb); + +#if !NO_SYS && !PPP_INPROC_IRQ_SAFE +/* Pass received raw characters to PPPoS to be decoded through lwIP TCPIP thread. */ +err_t pppos_input_tcpip(ppp_pcb *ppp, u8_t *s, int l); +#endif /* !NO_SYS && !PPP_INPROC_IRQ_SAFE */ + +/* PPP over Serial: this is the input function to be called for received data. */ +void pppos_input(ppp_pcb *ppp, u8_t* data, int len); + + +/* + * Functions called from lwIP + * DO NOT CALL FROM lwIP USER APPLICATION. + */ +#if !NO_SYS && !PPP_INPROC_IRQ_SAFE +err_t pppos_input_sys(struct pbuf *p, struct netif *inp); +#endif /* !NO_SYS && !PPP_INPROC_IRQ_SAFE */ + +#endif /* PPPOS_H */ +#endif /* PPP_SUPPORT && PPPOL2TP_SUPPORT */ diff --git a/tools/sdk/lwip2/include/netif/ppp/upap.h b/tools/sdk/lwip2/include/netif/ppp/upap.h new file mode 100644 index 000000000..7da792ecc --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/upap.h @@ -0,0 +1,123 @@ +/* + * upap.h - User/Password Authentication Protocol definitions. + * + * Copyright (c) 1984-2000 Carnegie Mellon University. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The name "Carnegie Mellon University" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For permission or any legal + * details, please contact + * Office of Technology Transfer + * Carnegie Mellon University + * 5000 Forbes Avenue + * Pittsburgh, PA 15213-3890 + * (412) 268-4387, fax: (412) 268-7395 + * tech-transfer@andrew.cmu.edu + * + * 4. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by Computing Services + * at Carnegie Mellon University (http://www.cmu.edu/computing/)." + * + * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO + * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE + * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $Id: upap.h,v 1.8 2002/12/04 23:03:33 paulus Exp $ + */ + +#include "netif/ppp/ppp_opts.h" +#if PPP_SUPPORT && PAP_SUPPORT /* don't build if not configured for use in lwipopts.h */ + +#ifndef UPAP_H +#define UPAP_H + +#include "ppp.h" + +/* + * Packet header = Code, id, length. + */ +#define UPAP_HEADERLEN 4 + + +/* + * UPAP codes. + */ +#define UPAP_AUTHREQ 1 /* Authenticate-Request */ +#define UPAP_AUTHACK 2 /* Authenticate-Ack */ +#define UPAP_AUTHNAK 3 /* Authenticate-Nak */ + + +/* + * Client states. + */ +#define UPAPCS_INITIAL 0 /* Connection down */ +#define UPAPCS_CLOSED 1 /* Connection up, haven't requested auth */ +#define UPAPCS_PENDING 2 /* Connection down, have requested auth */ +#define UPAPCS_AUTHREQ 3 /* We've sent an Authenticate-Request */ +#define UPAPCS_OPEN 4 /* We've received an Ack */ +#define UPAPCS_BADAUTH 5 /* We've received a Nak */ + +/* + * Server states. + */ +#define UPAPSS_INITIAL 0 /* Connection down */ +#define UPAPSS_CLOSED 1 /* Connection up, haven't requested auth */ +#define UPAPSS_PENDING 2 /* Connection down, have requested auth */ +#define UPAPSS_LISTEN 3 /* Listening for an Authenticate */ +#define UPAPSS_OPEN 4 /* We've sent an Ack */ +#define UPAPSS_BADAUTH 5 /* We've sent a Nak */ + + +/* + * Timeouts. + */ +#if 0 /* moved to ppp_opts.h */ +#define UPAP_DEFTIMEOUT 3 /* Timeout (seconds) for retransmitting req */ +#define UPAP_DEFREQTIME 30 /* Time to wait for auth-req from peer */ +#endif /* moved to ppp_opts.h */ + +/* + * Each interface is described by upap structure. + */ +#if PAP_SUPPORT +typedef struct upap_state { + const char *us_user; /* User */ + u8_t us_userlen; /* User length */ + const char *us_passwd; /* Password */ + u8_t us_passwdlen; /* Password length */ + u8_t us_clientstate; /* Client state */ +#if PPP_SERVER + u8_t us_serverstate; /* Server state */ +#endif /* PPP_SERVER */ + u8_t us_id; /* Current id */ + u8_t us_transmits; /* Number of auth-reqs sent */ +} upap_state; +#endif /* PAP_SUPPORT */ + + +void upap_authwithpeer(ppp_pcb *pcb, const char *user, const char *password); +#if PPP_SERVER +void upap_authpeer(ppp_pcb *pcb); +#endif /* PPP_SERVER */ + +extern const struct protent pap_protent; + +#endif /* UPAP_H */ +#endif /* PPP_SUPPORT && PAP_SUPPORT */ diff --git a/tools/sdk/lwip2/include/netif/ppp/vj.h b/tools/sdk/lwip2/include/netif/ppp/vj.h new file mode 100644 index 000000000..7f389c846 --- /dev/null +++ b/tools/sdk/lwip2/include/netif/ppp/vj.h @@ -0,0 +1,161 @@ +/* + * Definitions for tcp compression routines. + * + * $Id: vj.h,v 1.7 2010/02/22 17:52:09 goldsimon Exp $ + * + * Copyright (c) 1989 Regents of the University of California. + * All rights reserved. + * + * Redistribution and use in source and binary forms are permitted + * provided that the above copyright notice and this paragraph are + * duplicated in all such forms and that any documentation, + * advertising materials, and other materials related to such + * distribution and use acknowledge that the software was developed + * by the University of California, Berkeley. The name of the + * University may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. + * + * Van Jacobson (van@helios.ee.lbl.gov), Dec 31, 1989: + * - Initial distribution. + */ + +#include "netif/ppp/ppp_opts.h" +#if PPP_SUPPORT && VJ_SUPPORT /* don't build if not configured for use in lwipopts.h */ + +#ifndef VJ_H +#define VJ_H + +#include "lwip/ip.h" +#include "lwip/priv/tcp_priv.h" + +#define MAX_SLOTS 16 /* must be > 2 and < 256 */ +#define MAX_HDR 128 + +/* + * Compressed packet format: + * + * The first octet contains the packet type (top 3 bits), TCP + * 'push' bit, and flags that indicate which of the 4 TCP sequence + * numbers have changed (bottom 5 bits). The next octet is a + * conversation number that associates a saved IP/TCP header with + * the compressed packet. The next two octets are the TCP checksum + * from the original datagram. The next 0 to 15 octets are + * sequence number changes, one change per bit set in the header + * (there may be no changes and there are two special cases where + * the receiver implicitly knows what changed -- see below). + * + * There are 5 numbers which can change (they are always inserted + * in the following order): TCP urgent pointer, window, + * acknowlegement, sequence number and IP ID. (The urgent pointer + * is different from the others in that its value is sent, not the + * change in value.) Since typical use of SLIP links is biased + * toward small packets (see comments on MTU/MSS below), changes + * use a variable length coding with one octet for numbers in the + * range 1 - 255 and 3 octets (0, MSB, LSB) for numbers in the + * range 256 - 65535 or 0. (If the change in sequence number or + * ack is more than 65535, an uncompressed packet is sent.) + */ + +/* + * Packet types (must not conflict with IP protocol version) + * + * The top nibble of the first octet is the packet type. There are + * three possible types: IP (not proto TCP or tcp with one of the + * control flags set); uncompressed TCP (a normal IP/TCP packet but + * with the 8-bit protocol field replaced by an 8-bit connection id -- + * this type of packet syncs the sender & receiver); and compressed + * TCP (described above). + * + * LSB of 4-bit field is TCP "PUSH" bit (a worthless anachronism) and + * is logically part of the 4-bit "changes" field that follows. Top + * three bits are actual packet type. For backward compatibility + * and in the interest of conserving bits, numbers are chosen so the + * IP protocol version number (4) which normally appears in this nibble + * means "IP packet". + */ + +/* packet types */ +#define TYPE_IP 0x40 +#define TYPE_UNCOMPRESSED_TCP 0x70 +#define TYPE_COMPRESSED_TCP 0x80 +#define TYPE_ERROR 0x00 + +/* Bits in first octet of compressed packet */ +#define NEW_C 0x40 /* flag bits for what changed in a packet */ +#define NEW_I 0x20 +#define NEW_S 0x08 +#define NEW_A 0x04 +#define NEW_W 0x02 +#define NEW_U 0x01 + +/* reserved, special-case values of above */ +#define SPECIAL_I (NEW_S|NEW_W|NEW_U) /* echoed interactive traffic */ +#define SPECIAL_D (NEW_S|NEW_A|NEW_W|NEW_U) /* unidirectional data */ +#define SPECIALS_MASK (NEW_S|NEW_A|NEW_W|NEW_U) + +#define TCP_PUSH_BIT 0x10 + + +/* + * "state" data for each active tcp conversation on the wire. This is + * basically a copy of the entire IP/TCP header from the last packet + * we saw from the conversation together with a small identifier + * the transmit & receive ends of the line use to locate saved header. + */ +struct cstate { + struct cstate *cs_next; /* next most recently used state (xmit only) */ + u16_t cs_hlen; /* size of hdr (receive only) */ + u8_t cs_id; /* connection # associated with this state */ + u8_t cs_filler; + union { + char csu_hdr[MAX_HDR]; + struct ip_hdr csu_ip; /* ip/tcp hdr from most recent packet */ + } vjcs_u; +}; +#define cs_ip vjcs_u.csu_ip +#define cs_hdr vjcs_u.csu_hdr + + +struct vjstat { + u32_t vjs_packets; /* outbound packets */ + u32_t vjs_compressed; /* outbound compressed packets */ + u32_t vjs_searches; /* searches for connection state */ + u32_t vjs_misses; /* times couldn't find conn. state */ + u32_t vjs_uncompressedin; /* inbound uncompressed packets */ + u32_t vjs_compressedin; /* inbound compressed packets */ + u32_t vjs_errorin; /* inbound unknown type packets */ + u32_t vjs_tossed; /* inbound packets tossed because of error */ +}; + +/* + * all the state data for one serial line (we need one of these per line). + */ +struct vjcompress { + struct cstate *last_cs; /* most recently used tstate */ + u8_t last_recv; /* last rcvd conn. id */ + u8_t last_xmit; /* last sent conn. id */ + u16_t flags; + u8_t maxSlotIndex; + u8_t compressSlot; /* Flag indicating OK to compress slot ID. */ +#if LINK_STATS + struct vjstat stats; +#endif + struct cstate tstate[MAX_SLOTS]; /* xmit connection states */ + struct cstate rstate[MAX_SLOTS]; /* receive connection states */ +}; + +/* flag values */ +#define VJF_TOSS 1U /* tossing rcvd frames because of input err */ + +extern void vj_compress_init (struct vjcompress *comp); +extern u8_t vj_compress_tcp (struct vjcompress *comp, struct pbuf **pb); +extern void vj_uncompress_err (struct vjcompress *comp); +extern int vj_uncompress_uncomp(struct pbuf *nb, struct vjcompress *comp); +extern int vj_uncompress_tcp (struct pbuf **nb, struct vjcompress *comp); + +#endif /* VJ_H */ + +#endif /* PPP_SUPPORT && VJ_SUPPORT */ diff --git a/tools/sdk/lwip2/include/netif/slipif.h b/tools/sdk/lwip2/include/netif/slipif.h new file mode 100644 index 000000000..65ba31f83 --- /dev/null +++ b/tools/sdk/lwip2/include/netif/slipif.h @@ -0,0 +1,87 @@ +/** + * @file + * + * SLIP netif API + */ + +/* + * Copyright (c) 2001, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef LWIP_HDR_NETIF_SLIPIF_H +#define LWIP_HDR_NETIF_SLIPIF_H + +#include "lwip/opt.h" +#include "lwip/netif.h" + +/** Set this to 1 to start a thread that blocks reading on the serial line + * (using sio_read()). + */ +#ifndef SLIP_USE_RX_THREAD +#define SLIP_USE_RX_THREAD !NO_SYS +#endif + +/** Set this to 1 to enable functions to pass in RX bytes from ISR context. + * If enabled, slipif_received_byte[s]() process incoming bytes and put assembled + * packets on a queue, which is fed into lwIP from slipif_poll(). + * If disabled, slipif_poll() polls the serial line (using sio_tryread()). + */ +#ifndef SLIP_RX_FROM_ISR +#define SLIP_RX_FROM_ISR 0 +#endif + +/** Set this to 1 (default for SLIP_RX_FROM_ISR) to queue incoming packets + * received by slipif_received_byte[s]() as long as PBUF_POOL pbufs are available. + * If disabled, packets will be dropped if more than one packet is received. + */ +#ifndef SLIP_RX_QUEUE +#define SLIP_RX_QUEUE SLIP_RX_FROM_ISR +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +err_t slipif_init(struct netif * netif); +void slipif_poll(struct netif *netif); +#if SLIP_RX_FROM_ISR +void slipif_process_rxqueue(struct netif *netif); +void slipif_received_byte(struct netif *netif, u8_t data); +void slipif_received_bytes(struct netif *netif, u8_t *data, u8_t len); +#endif /* SLIP_RX_FROM_ISR */ + +#ifdef __cplusplus +} +#endif + +#endif /* LWIP_HDR_NETIF_SLIPIF_H */ + diff --git a/tools/sdk/lwip2/include/posix/errno.h b/tools/sdk/lwip2/include/posix/errno.h new file mode 100644 index 000000000..5917c75e2 --- /dev/null +++ b/tools/sdk/lwip2/include/posix/errno.h @@ -0,0 +1,33 @@ +/** + * @file + * This file is a posix wrapper for lwip/errno.h. + */ + +/* + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + */ + +#include "lwip/errno.h" diff --git a/tools/sdk/lwip2/include/posix/netdb.h b/tools/sdk/lwip2/include/posix/netdb.h new file mode 100644 index 000000000..12d4c7f56 --- /dev/null +++ b/tools/sdk/lwip2/include/posix/netdb.h @@ -0,0 +1,33 @@ +/** + * @file + * This file is a posix wrapper for lwip/netdb.h. + */ + +/* + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + */ + +#include "lwip/netdb.h" diff --git a/tools/sdk/lwip2/include/posix/sys/socket.h b/tools/sdk/lwip2/include/posix/sys/socket.h new file mode 100644 index 000000000..0ed9baf3d --- /dev/null +++ b/tools/sdk/lwip2/include/posix/sys/socket.h @@ -0,0 +1,33 @@ +/** + * @file + * This file is a posix wrapper for lwip/sockets.h. + */ + +/* + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + */ + +#include "lwip/sockets.h" From 32ec86e7de56a2e62cd9883186a6c946d9ff3f9f Mon Sep 17 00:00:00 2001 From: Develo Date: Tue, 26 Sep 2017 14:46:44 -0300 Subject: [PATCH 100/156] Create Policy.md --- Policy.md | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 Policy.md diff --git a/Policy.md b/Policy.md new file mode 100644 index 000000000..227328533 --- /dev/null +++ b/Policy.md @@ -0,0 +1,62 @@ +This document describes rules that are in effect for this repository, meant for handling issues by contributors in the issue tracker and PRs. +# Opening New Issues +1. The issue tracker is precisely that: a tool to track issues in the core code, and not a discussion forum. Opening an issues means that a problem has been found in the core code, and that it should be addressed by a contributor. +2. Questions of type "How do I..." or "Can you please help me with..." or "Can the ESP do..." won't be handled here. Such questions should be directed at a discussion forum, like esp8266.com or stackoverflow. All issues of this type will be closed with a simple reference to the policy. Example: + * how do I connect to wifi + * how do I connect two ESPs + * can I send http data over a public network +3. Issues that are obviously user error, programming language errors, lack of knowledge or experience with the use semantics of the core libs, or similar, will be closed with a reference to the policy. Examples: + * sketch crashes due to a char[] in it that is not null terminated + * trying to use yield/delay, or libs that use yield/delay, from inside async callbacks + * Use of new/malloc without matching delete/free (mem leak) +4. Issues about topics already handled in the documentation will be closed in a similar manner. Example: + * can't flash with error espcomm failed +5. Issues must be provided with a minimalist sketch. Issues with an incomplete sketch, or a huge sketch, will be closed. Maximum effort must be put forth by the person opening the issue to reduce the relevant code that reproduces the issue, so that investigation can be taken up. MCVE is a must. +6. Issues with accompanied investigation that shows the root of the problem should be given priority +7. Duplicate issues will be closed with a reference to the original + +# Triaging +1. Any contributor of the project can participate in the triaging process, if he/she chooses to do so +2. An issue that needs to be closed, either due to not complying with this policy, or for other reasons, should be closed by a contributor +3. Issues that are accepted should be marked with appropriate labels, e.g.: component: xyz +4. If an issue is deemed to require specialized knowledge (e.g.: TLS, HTTP parser, SDK integration, etc), contributor(s) relevant to the affected code should be /cc’ed, as this can help grab attention by the right person +5. Severe issues should be assigned to the current milestone (i.e.: the next version to be released), or the milestone following. It is ok to push back issues depending on available resources. +6. Issues that could impact functionality for many users should be considered severe. +7. Issues caused by the SDK or chip should not be marked severe, as there usually isn’t much to be done. Common sense should be applied when deciding. Such issues should be documented in a KID (Known Issues Document), possibly on the Wiki, for reference by users. Example: + * ARP issue + * Extra channel change beacon announced by the SoftAP + * Wakeup ROM bug in the ESP chip +8. Issues with feature requests should be discussed for viability/desirability. Example: + * Support for new board. If the new board is not widely used, doesn’t have a manufacturer webpage, etc, then it isn’t desirable to support it. If the new board is essentially a duplicate of another, it isn’t desirable to duplicate the existing one. +9. Feature requests or changes that are meant to address a very specific/limited use case, especially if at the expense of increased code complexity, may be denied, or may be required to be redesigned, generalized, or simplified +10. Feature requests that are not accompanied by a PR: + * could be closed immediately (denied) + * could be closed after some predetermined period of time (left as candidate for somebody to pick up) + * could be deemed interesting enough to work on, but without a specific project or target, and hence accumulated in a long-term feature request list. Such feature requests should in general not be targeted for a deadline or release. +11. In some cases, feedback may be requested from the requestor, either as additional info for clarification, additional testing, or other. If no feedback is provided after 30 days, the issue may be closed by a contributor. + +# Compatibility +1. Compatibility with the Arduino build system is first priority. Compatibility with PlatformIO and make are also maintained, but are second priority. +2. Feature requests should consider compatibility with Arduino + * ESP-specific APIs should be added with care, and should be marked as such (Example: ESP8266WiFi) + * APIs of common libraries should maintain compatibility (Example: Wire, SPI, Servo) + * ESP-specific extensions to compatible APIs are ok, especially if required to fully use certain peripherals, but such functions should be clearly marked as ESP-specific +3. When making changes that are likely to impact PlatformIO or make, relevant people should be notified. Check whether some corresponding changes are needed on the build system side. When an issue related to one of these build systems is reported, redirect the issue reporter to the respective issue tracker. +4. The core libs are implemented as a wrapper layer over the Espressif SDK. Due to the requirements and limitations imposed by the SDK, there are inherent differences between the behavior of this core and the standard Arduino core (Example: using long delay()s is not allowed here). Compatibility can’t be maintained in such cases, and differences should be clearly documented. + +# Pull requests +1. All pull requests should undergo peer review by at least one contributor other than the requestor +2. All pull requests should consider updates to the documentation +3. All pull requests should consider updates to regressions, where possible +4. Pull requests that address an outstanding issue, particularly an issue deemed to be severe, should be given priority +5. If a feature requests is accepted, the PR should then be updated based on feedback, then merged. + +# Other +A table should be maintained for relating maintainers and components. When triaging, this is essential to figure out is someone in particular should be consulted about specific changes. + +A stable release cadence should be established, e.g.: every 6 months. + +Regression testing should be revisited and streamlined with the release process. Running regression tests should be done before merging a PR to reduce overhead for a release. + + + From 23ceb828c5b1d38187928832bfc132d994a05362 Mon Sep 17 00:00:00 2001 From: Develo Date: Tue, 26 Sep 2017 14:52:46 -0300 Subject: [PATCH 101/156] Update and rename Policy.md to POLICY.md --- Policy.md => POLICY.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) rename Policy.md => POLICY.md (88%) diff --git a/Policy.md b/POLICY.md similarity index 88% rename from Policy.md rename to POLICY.md index 227328533..7ca090a0c 100644 --- a/Policy.md +++ b/POLICY.md @@ -1,19 +1,22 @@ This document describes rules that are in effect for this repository, meant for handling issues by contributors in the issue tracker and PRs. # Opening New Issues 1. The issue tracker is precisely that: a tool to track issues in the core code, and not a discussion forum. Opening an issues means that a problem has been found in the core code, and that it should be addressed by a contributor. -2. Questions of type "How do I..." or "Can you please help me with..." or "Can the ESP do..." won't be handled here. Such questions should be directed at a discussion forum, like esp8266.com or stackoverflow. All issues of this type will be closed with a simple reference to the policy. Example: +2. When opening an issue, a template is presented with fields to fill out. The requested information is important. If the template is ignored, or not enough info about the issue is provided, the issue may be closed due to lack of info. Example: + * Using WifiMulti and FS crashes with error. Why? (no basic info, no IDE settings, no sketch provided) +3. Questions of type "How do I..." or "Can you please help me with..." or "Can the ESP do..." won't be handled here. Such questions should be directed at a discussion forum, like esp8266.com or stackoverflow. All issues of this type will be closed with a simple reference to the policy. Example: * how do I connect to wifi * how do I connect two ESPs * can I send http data over a public network -3. Issues that are obviously user error, programming language errors, lack of knowledge or experience with the use semantics of the core libs, or similar, will be closed with a reference to the policy. Examples: + * my wiring/project/code doesn't work, help! +4. Issues that are obviously user error, programming language errors, lack of knowledge or experience with the use semantics of the core libs, or similar, will be closed with a reference to the policy. Examples: * sketch crashes due to a char[] in it that is not null terminated * trying to use yield/delay, or libs that use yield/delay, from inside async callbacks * Use of new/malloc without matching delete/free (mem leak) -4. Issues about topics already handled in the documentation will be closed in a similar manner. Example: +5. Issues about topics already handled in the documentation will be closed in a similar manner. Example: * can't flash with error espcomm failed -5. Issues must be provided with a minimalist sketch. Issues with an incomplete sketch, or a huge sketch, will be closed. Maximum effort must be put forth by the person opening the issue to reduce the relevant code that reproduces the issue, so that investigation can be taken up. MCVE is a must. -6. Issues with accompanied investigation that shows the root of the problem should be given priority -7. Duplicate issues will be closed with a reference to the original +6. Issues must be provided with a minimalist sketch. Issues with an incomplete sketch, or a huge sketch, will be closed. Maximum effort must be put forth by the person opening the issue to reduce the relevant code that reproduces the issue, so that investigation can be taken up. MCVE is a must. +7. Issues with accompanied investigation that shows the root of the problem should be given priority +8. Duplicate issues will be closed with a reference to the original # Triaging 1. Any contributor of the project can participate in the triaging process, if he/she chooses to do so From 063c2379a4316a9f9a52176c9d486caaa19cc55a Mon Sep 17 00:00:00 2001 From: Develo Date: Thu, 2 Nov 2017 01:36:18 -0300 Subject: [PATCH 102/156] Update POLICY.md Included review feedback from igrr included feedback in PR (typos) --- POLICY.md | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/POLICY.md b/POLICY.md index 7ca090a0c..8ff05c83e 100644 --- a/POLICY.md +++ b/POLICY.md @@ -1,10 +1,10 @@ This document describes rules that are in effect for this repository, meant for handling issues by contributors in the issue tracker and PRs. # Opening New Issues -1. The issue tracker is precisely that: a tool to track issues in the core code, and not a discussion forum. Opening an issues means that a problem has been found in the core code, and that it should be addressed by a contributor. +1. The issue tracker is precisely that: a tool to track issues in the core code, and not a discussion forum. Opening an issue means that a problem has been found in the core code, and that it should be addressed by a contributor. 2. When opening an issue, a template is presented with fields to fill out. The requested information is important. If the template is ignored, or not enough info about the issue is provided, the issue may be closed due to lack of info. Example: * Using WifiMulti and FS crashes with error. Why? (no basic info, no IDE settings, no sketch provided) 3. Questions of type "How do I..." or "Can you please help me with..." or "Can the ESP do..." won't be handled here. Such questions should be directed at a discussion forum, like esp8266.com or stackoverflow. All issues of this type will be closed with a simple reference to the policy. Example: - * how do I connect to wifi + * how do I connect to wifi * how do I connect two ESPs * can I send http data over a public network * my wiring/project/code doesn't work, help! @@ -15,28 +15,29 @@ This document describes rules that are in effect for this repository, meant for 5. Issues about topics already handled in the documentation will be closed in a similar manner. Example: * can't flash with error espcomm failed 6. Issues must be provided with a minimalist sketch. Issues with an incomplete sketch, or a huge sketch, will be closed. Maximum effort must be put forth by the person opening the issue to reduce the relevant code that reproduces the issue, so that investigation can be taken up. MCVE is a must. -7. Issues with accompanied investigation that shows the root of the problem should be given priority -8. Duplicate issues will be closed with a reference to the original +7. Issues for unmerged PRs will be closed. If there is an issue with a PR, the explanation should be added to the PR itself. +8. Issues with accompanied investigation that shows the root of the problem should be given priority +9. Duplicate issues will be closed with a reference to the original # Triaging 1. Any contributor of the project can participate in the triaging process, if he/she chooses to do so 2. An issue that needs to be closed, either due to not complying with this policy, or for other reasons, should be closed by a contributor 3. Issues that are accepted should be marked with appropriate labels, e.g.: component: xyz -4. If an issue is deemed to require specialized knowledge (e.g.: TLS, HTTP parser, SDK integration, etc), contributor(s) relevant to the affected code should be /cc’ed, as this can help grab attention by the right person +4. If an issue is deemed to require specialized knowledge (e.g.: TLS, HTTP parser, SDK integration, etc), contributor(s) relevant to the affected code should be /cc’ed, as this can help grab attention 5. Severe issues should be assigned to the current milestone (i.e.: the next version to be released), or the milestone following. It is ok to push back issues depending on available resources. 6. Issues that could impact functionality for many users should be considered severe. 7. Issues caused by the SDK or chip should not be marked severe, as there usually isn’t much to be done. Common sense should be applied when deciding. Such issues should be documented in a KID (Known Issues Document), possibly on the Wiki, for reference by users. Example: - * ARP issue + * ARP issue * Extra channel change beacon announced by the SoftAP - * Wakeup ROM bug in the ESP chip + * Wakeup ROM bug in the ESP chip 8. Issues with feature requests should be discussed for viability/desirability. Example: - * Support for new board. If the new board is not widely used, doesn’t have a manufacturer webpage, etc, then it isn’t desirable to support it. If the new board is essentially a duplicate of another, it isn’t desirable to duplicate the existing one. + * Support for new board. If the new board is not widely used, doesn’t have a manufacturer webpage, etc, then it isn’t desirable to support it. If the new board is essentially a duplicate of another, it isn’t desirable to duplicate the existing one. 9. Feature requests or changes that are meant to address a very specific/limited use case, especially if at the expense of increased code complexity, may be denied, or may be required to be redesigned, generalized, or simplified 10. Feature requests that are not accompanied by a PR: - * could be closed immediately (denied) - * could be closed after some predetermined period of time (left as candidate for somebody to pick up) - * could be deemed interesting enough to work on, but without a specific project or target, and hence accumulated in a long-term feature request list. Such feature requests should in general not be targeted for a deadline or release. -11. In some cases, feedback may be requested from the requestor, either as additional info for clarification, additional testing, or other. If no feedback is provided after 30 days, the issue may be closed by a contributor. + * could be closed immediately (denied) + * could be closed after some predetermined period of time (left as candidate for somebody to pick up) + * could be deemed interesting enough to work on, but without a specific project or target, and hence accumulated in a long-term feature request list. Such feature requests will in general not be targeted for a deadline or release. +11. In some cases, feedback may be requested from the issue reporter, either as additional info for clarification, additional testing, or other. If no feedback is provided after 30 days, the issue may be closed by a contributor. # Compatibility 1. Compatibility with the Arduino build system is first priority. Compatibility with PlatformIO and make are also maintained, but are second priority. @@ -48,14 +49,15 @@ This document describes rules that are in effect for this repository, meant for 4. The core libs are implemented as a wrapper layer over the Espressif SDK. Due to the requirements and limitations imposed by the SDK, there are inherent differences between the behavior of this core and the standard Arduino core (Example: using long delay()s is not allowed here). Compatibility can’t be maintained in such cases, and differences should be clearly documented. # Pull requests -1. All pull requests should undergo peer review by at least one contributor other than the requestor +1. All pull requests should undergo peer review by at least one contributor other than the creator 2. All pull requests should consider updates to the documentation -3. All pull requests should consider updates to regressions, where possible +3. All pull requests should consider updates to regression tests, where possible 4. Pull requests that address an outstanding issue, particularly an issue deemed to be severe, should be given priority -5. If a feature requests is accepted, the PR should then be updated based on feedback, then merged. +5. If a PR is accepted, then it should undergo review and updated based on the feedback provided, then merged +6. Pull requests that don't meet the above will be denied and closed # Other -A table should be maintained for relating maintainers and components. When triaging, this is essential to figure out is someone in particular should be consulted about specific changes. +A table should be maintained for relating maintainers and components. When triaging, this is essential to figure out if someone in particular should be consulted about specific changes. A stable release cadence should be established, e.g.: every 6 months. From dfcaa1b85464f16156d0920dd6ddff5697ac13dc Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Tue, 10 May 2016 21:26:38 +0800 Subject: [PATCH 103/156] Use min and max from std:: --- cores/esp8266/Arduino.h | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/cores/esp8266/Arduino.h b/cores/esp8266/Arduino.h index 90e2da25d..12286db86 100644 --- a/cores/esp8266/Arduino.h +++ b/cores/esp8266/Arduino.h @@ -236,7 +236,7 @@ void optimistic_yield(uint32_t interval_us); #endif #ifdef __cplusplus - +#include #include "pgmspace.h" #include "WCharacter.h" @@ -247,11 +247,8 @@ void optimistic_yield(uint32_t interval_us); #include "Updater.h" #include "debug.h" -#ifndef _GLIBCXX_VECTOR -// arduino is not compatible with std::vector -#define min(a,b) ((a)<(b)?(a):(b)) -#define max(a,b) ((a)>(b)?(a):(b)) -#endif +using std::min; +using std::max; #define _min(a,b) ((a)<(b)?(a):(b)) #define _max(a,b) ((a)>(b)?(a):(b)) From 7ad89e58cd53a874a4352ee9f11b3ac1f069e957 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Tue, 10 May 2016 21:39:02 +0800 Subject: [PATCH 104/156] Use isnan and isinf from std:: --- cores/esp8266/Arduino.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cores/esp8266/Arduino.h b/cores/esp8266/Arduino.h index 12286db86..0264aeac0 100644 --- a/cores/esp8266/Arduino.h +++ b/cores/esp8266/Arduino.h @@ -249,6 +249,8 @@ void optimistic_yield(uint32_t interval_us); using std::min; using std::max; +using std::isinf; +using std::isnan; #define _min(a,b) ((a)<(b)?(a):(b)) #define _max(a,b) ((a)>(b)?(a):(b)) From 303a71deeaac71cf69c2fc5d9aa4215a7950466f Mon Sep 17 00:00:00 2001 From: devyte Date: Sun, 5 Nov 2017 02:19:46 -0300 Subject: [PATCH 105/156] Servo: fix arg types for std::min/max --- libraries/Servo/src/Servo.h | 2 +- libraries/Servo/src/esp8266/Servo.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/Servo/src/Servo.h b/libraries/Servo/src/Servo.h index b55fdb8f2..d4bf861ba 100644 --- a/libraries/Servo/src/Servo.h +++ b/libraries/Servo/src/Servo.h @@ -77,7 +77,7 @@ class Servo public: Servo(); uint8_t attach(int pin); // attach the given pin to the next free channel, sets pinMode, returns channel number or 0 if failure - uint8_t attach(int pin, int min, int max); // as above but also sets min and max values for writes. + uint8_t attach(int pin, uint16_t min, uint16_t max); // as above but also sets min and max values for writes. void detach(); void write(int value); // if value is < 200 its treated as an angle, otherwise as pulse width in microseconds void writeMicroseconds(int value); // Write pulse width in microseconds diff --git a/libraries/Servo/src/esp8266/Servo.cpp b/libraries/Servo/src/esp8266/Servo.cpp index ef73f94d2..dd15168cb 100644 --- a/libraries/Servo/src/esp8266/Servo.cpp +++ b/libraries/Servo/src/esp8266/Servo.cpp @@ -221,7 +221,7 @@ uint8_t Servo::attach(int pin) return attach(pin, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH); } -uint8_t Servo::attach(int pin, int minUs, int maxUs) +uint8_t Servo::attach(int pin, uint16_t minUs, uint16_t maxUs) { ServoTimerSequence timerId; @@ -235,8 +235,8 @@ uint8_t Servo::attach(int pin, int minUs, int maxUs) // keep the min and max within 200-3000 us, these are extreme // ranges and should support extreme servos while maintaining // reasonable ranges - _maxUs = max(250, min(3000, maxUs)); - _minUs = max(200, min(_maxUs, minUs)); + _maxUs = max((uint16_t)250, min((uint16_t)3000, maxUs)); + _minUs = max((uint16_t)200, min(_maxUs, minUs)); // initialize the timerId if it has not already been initialized timerId = SERVO_INDEX_TO_TIMER(_servoIndex); From 5b925697ec1bee4ec8e366acace20cfd1fb51d18 Mon Sep 17 00:00:00 2001 From: Brandon White Date: Fri, 10 Nov 2017 08:53:49 -0600 Subject: [PATCH 106/156] Added micros64 and used to fix and improve gettimeofday. --- cores/esp8266/Arduino.h | 1 + cores/esp8266/core_esp8266_wiring.c | 7 +++++++ cores/esp8266/time.c | 19 ++++++++++++------- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/cores/esp8266/Arduino.h b/cores/esp8266/Arduino.h index 0264aeac0..cc3525015 100644 --- a/cores/esp8266/Arduino.h +++ b/cores/esp8266/Arduino.h @@ -202,6 +202,7 @@ void analogWriteRange(uint32_t range); unsigned long millis(void); unsigned long micros(void); +uint64_t micros64(void); void delay(unsigned long); void delayMicroseconds(unsigned int us); unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout); diff --git a/cores/esp8266/core_esp8266_wiring.c b/cores/esp8266/core_esp8266_wiring.c index fbbb5bfcf..4b55a711e 100644 --- a/cores/esp8266/core_esp8266_wiring.c +++ b/cores/esp8266/core_esp8266_wiring.c @@ -71,6 +71,13 @@ unsigned long ICACHE_RAM_ATTR micros() { return system_get_time(); } +uint64_t ICACHE_RAM_ATTR micros64() { + uint32_t low32_us = system_get_time(); + uint32_t high32_us = micros_overflow_count + ((low32_us < micros_at_last_overflow_tick) ? 1 : 0); + uint64_t duration64_us = (uint64_t)high32_us << 32 | low32_us; + return duration64_us; +} + void ICACHE_RAM_ATTR delayMicroseconds(unsigned int us) { os_delay_us(us); } diff --git a/cores/esp8266/time.c b/cores/esp8266/time.c index 1c2fc719a..27f6640ca 100644 --- a/cores/esp8266/time.c +++ b/cores/esp8266/time.c @@ -31,23 +31,27 @@ struct timeval { extern char* sntp_asctime(const struct tm *t); extern struct tm* sntp_localtime(const time_t *clock); +extern uint64_t micros64(); // time gap in seconds from 01.01.1900 (NTP time) to 01.01.1970 (UNIX time) #define DIFF1900TO1970 2208988800UL static int s_daylightOffset_sec = 0; static long s_timezone_sec = 0; -static time_t s_bootTime = 0; +static bool s_bootTimeSet = false; +static uint64_t s_bootTime_us = 0; // calculate offset used in gettimeofday static void ensureBootTimeIsSet() { - if (!s_bootTime) + // Check just a bool flag instead of the full 64-bit s_bootTime for zero. + if (!s_bootTimeSet) { - time_t now = sntp_get_current_timestamp(); - if (now) + time_t now_s = sntp_get_current_timestamp(); + if (now_s) { - s_bootTime = now - millis() / 1000; + s_bootTime_us = now_s * 1000000ULL - micros64(); + s_bootTimeSet = true; } } } @@ -100,8 +104,9 @@ int _gettimeofday_r(struct _reent* unused, struct timeval *tp, void *tzp) if (tp) { ensureBootTimeIsSet(); - tp->tv_sec = s_bootTime + millis() / 1000; - tp->tv_usec = micros(); + uint64_t currentTime_us = s_bootTime_us + micros64(); + tp->tv_sec = currentTime_us / 1000000ULL; + tp->tv_usec = currentTime_us % 1000000ULL; } return 0; } From 9f2dcd6892d3c8e1e22be995fbce32135eab6e10 Mon Sep 17 00:00:00 2001 From: Develo Date: Thu, 16 Nov 2017 13:41:24 -0300 Subject: [PATCH 107/156] Fix ESP8266LLMNR for build with lwip2 (#3821) * Fix for build with lwip2 * Fix for lwip2: Removed unnecessary #ifdefs * Remove duplicate define for BIT --- libraries/ESP8266LLMNR/ESP8266LLMNR.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/libraries/ESP8266LLMNR/ESP8266LLMNR.cpp b/libraries/ESP8266LLMNR/ESP8266LLMNR.cpp index 1b855f009..f4ab21aad 100644 --- a/libraries/ESP8266LLMNR/ESP8266LLMNR.cpp +++ b/libraries/ESP8266LLMNR/ESP8266LLMNR.cpp @@ -50,7 +50,7 @@ extern "C" { //#define LLMNR_DEBUG -#define BIT(x) (1 << (x)) +//BIT(x) is defined in tools/sdk/c_types.h #define FLAGS_QR BIT(15) #define FLAGS_OP_SHIFT 11 @@ -226,14 +226,15 @@ void LLMNRResponder::_process_packet() { Serial.println("(no matching RRs)"); #endif - struct ip_info remote_ip_info; - remote_ip_info.ip.addr = _conn->getRemoteAddress(); + ip_addr_t remote_ip; + remote_ip.addr = _conn->getRemoteAddress(); + struct ip_info ip_info; bool match_ap = false; if (wifi_get_opmode() & SOFTAP_MODE) { wifi_get_ip_info(SOFTAP_IF, &ip_info); - if (ip_info.ip.addr && ip_addr_netcmp(&remote_ip_info.ip, &ip_info.ip, &ip_info.netmask)) - match_ap = true; + if (ip_info.ip.addr && ip_addr_netcmp(&remote_ip, &ip_info.ip, &ip_info.netmask)) + match_ap = true; } if (!match_ap) wifi_get_ip_info(STATION_IF, &ip_info); @@ -272,8 +273,8 @@ void LLMNRResponder::_process_packet() { }; _conn->append(reinterpret_cast(rr), sizeof(rr)); } - _conn->setMulticastInterface(remote_ip_info.ip); - _conn->send(&remote_ip_info.ip, _conn->getRemotePort()); + _conn->setMulticastInterface(remote_ip); + _conn->send(&remote_ip, _conn->getRemotePort()); } #if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_LLMNR) From d1e8fe99a23c0e4641199f7a5ee3b0b8ca334443 Mon Sep 17 00:00:00 2001 From: Luc Date: Fri, 17 Nov 2017 04:33:19 +0100 Subject: [PATCH 108/156] Fix compilation with LWIP v2 (#3822) --- libraries/ESP8266SSDP/ESP8266SSDP.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/ESP8266SSDP/ESP8266SSDP.cpp b/libraries/ESP8266SSDP/ESP8266SSDP.cpp index effece24a..2c9739709 100644 --- a/libraries/ESP8266SSDP/ESP8266SSDP.cpp +++ b/libraries/ESP8266SSDP/ESP8266SSDP.cpp @@ -201,7 +201,7 @@ bool SSDPClass::begin(){ void SSDPClass::_send(ssdp_method_t method){ char buffer[1460]; - uint32_t ip = WiFi.localIP(); + IPAddress ip = WiFi.localIP(); char valueBuffer[strlen_P(_ssdp_notify_template)+1]; strcpy_P(valueBuffer, (method == NONE)?_ssdp_response_template:_ssdp_notify_template); @@ -214,7 +214,7 @@ void SSDPClass::_send(ssdp_method_t method){ _uuid, (method == NONE)?"ST":"NT", _deviceType, - IP2STR(&ip), _port, _schemaURL + ip[0], ip[1], ip[2], ip[3], _port, _schemaURL ); _server->append(buffer, len); @@ -244,11 +244,11 @@ void SSDPClass::_send(ssdp_method_t method){ } void SSDPClass::schema(WiFiClient client){ - uint32_t ip = WiFi.localIP(); + IPAddress ip = WiFi.localIP(); char buffer[strlen_P(_ssdp_schema_template)+1]; strcpy_P(buffer, _ssdp_schema_template); client.printf(buffer, - IP2STR(&ip), _port, + ip[0], ip[1], ip[2], ip[3], _port, _deviceType, _friendlyName, _presentationURL, From 397592fce7ce0b9b8d8fa1c6f4d97addf6ab905c Mon Sep 17 00:00:00 2001 From: Shawn A Date: Fri, 17 Nov 2017 12:20:40 -0600 Subject: [PATCH 109/156] fixes #3793 (#3794) wifi_softap_set_config always fails, password cannot be 0 unless authmode is open, no documentation found, trial and error. --- libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp index a424eece1..ee88ff43e 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp @@ -265,6 +265,7 @@ bool ESP8266WiFiAPClass::softAPdisconnect(bool wifioff) { struct softap_config conf; *conf.ssid = 0; *conf.password = 0; + conf.authmode = AUTH_OPEN; ETS_UART_INTR_DISABLE(); if(WiFi._persistent) { ret = wifi_softap_set_config(&conf); From bec6a4d302ce0a8244adb6fed9665b1a6d25fe9c Mon Sep 17 00:00:00 2001 From: Luc Date: Fri, 17 Nov 2017 22:02:22 +0100 Subject: [PATCH 110/156] Fix ESP8266NetBIOS to compile with lwip V2 (#3823) * Fix to compile with lwip V2 * Add changes suggested --- libraries/ESP8266NetBIOS/ESP8266NetBIOS.cpp | 21 +++++++++++++++++++-- libraries/ESP8266NetBIOS/ESP8266NetBIOS.h | 11 ++++++++++- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/libraries/ESP8266NetBIOS/ESP8266NetBIOS.cpp b/libraries/ESP8266NetBIOS/ESP8266NetBIOS.cpp index 98c77f7d3..896e031fd 100755 --- a/libraries/ESP8266NetBIOS/ESP8266NetBIOS.cpp +++ b/libraries/ESP8266NetBIOS/ESP8266NetBIOS.cpp @@ -17,6 +17,12 @@ extern "C" { #define NBNSQ_TYPE_NB (0x0020) #define NBNSQ_CLASS_IN (0x0001) +#ifndef LWIP_PLATFORM_HTONS +#define LWIP_PLATFORM_HTONS(_n) ((u16_t)((((_n) & 0xff) << 8) | (((_n) >> 8) & 0xff))) +#endif +#ifndef LWIP_PLATFORM_HTONL +#define LWIP_PLATFORM_HTONL(_n) ((u32_t)( (((_n) & 0xff) << 24) | (((_n) & 0xff00) << 8) | (((_n) >> 8) & 0xff00) | (((_n) >> 24) & 0xff) )) +#endif // Definice struktury NBNS dotazu (alespon veci, ktere jsem vypozoroval): struct NBNSQUESTION { @@ -140,7 +146,7 @@ bool ESP8266NetBIOS::begin(const char *name) } // presuneme jmeno zarizeni se soucasnou upravou na UPPER case - for (int i = 0; i < n; ++i) { + for (size_t i = 0; i < n; ++i) { _name[i] = toupper(name[i]); } _name[n] = '\0'; @@ -168,8 +174,15 @@ void ESP8266NetBIOS::end() } } -void ESP8266NetBIOS::_recv(udp_pcb *upcb, pbuf *pb, ip_addr_t *addr, u16_t port) +#if LWIP_VERSION_MAJOR == 1 +void ESP8266NetBIOS::_recv(udp_pcb *upcb, pbuf *pb, ip_addr_t *addr, uint16_t port) +#else +void ESP8266NetBIOS::_recv(udp_pcb *upcb, pbuf *pb, const ip_addr_t *addr, uint16_t port) +#endif { + (void)upcb; + (void)addr; + (void)port; while(pb != NULL) { uint8_t * data = (uint8_t*)((pb)->payload); size_t len = pb->len; @@ -256,7 +269,11 @@ void ESP8266NetBIOS::_recv(udp_pcb *upcb, pbuf *pb, ip_addr_t *addr, u16_t port) } } +#if LWIP_VERSION_MAJOR == 1 void ESP8266NetBIOS::_s_recv(void *arg, udp_pcb *upcb, pbuf *p, struct ip_addr *addr, uint16_t port) +#else +void ESP8266NetBIOS::_s_recv(void *arg, udp_pcb *upcb, pbuf *p, const ip_addr_t *addr, uint16_t port) +#endif { reinterpret_cast(arg)->_recv(upcb, p, addr, port); } diff --git a/libraries/ESP8266NetBIOS/ESP8266NetBIOS.h b/libraries/ESP8266NetBIOS/ESP8266NetBIOS.h index 0fad651f2..1c5b1d969 100755 --- a/libraries/ESP8266NetBIOS/ESP8266NetBIOS.h +++ b/libraries/ESP8266NetBIOS/ESP8266NetBIOS.h @@ -2,6 +2,10 @@ #ifndef __ESPNBNS_h__ #define __ESPNBNS_h__ +extern "C" { +#include "lwip/init.h" // LWIP_VERSION_ +#include +} #include #define NBNS_PORT 137 @@ -15,7 +19,6 @@ struct udp_pcb; struct pbuf; -struct ip_addr; class ESP8266NetBIOS { @@ -24,8 +27,14 @@ protected: char _name[NBNS_MAX_HOSTNAME_LEN + 1]; void _getnbname(char *nbname, char *name, uint8_t maxlen); void _makenbname(char *name, char *nbname, uint8_t outlen); + +#if LWIP_VERSION_MAJOR == 1 void _recv(udp_pcb *upcb, pbuf *pb, struct ip_addr *addr, uint16_t port); static void _s_recv(void *arg, udp_pcb *upcb, pbuf *p, struct ip_addr *addr, uint16_t port); +#else + void _recv(udp_pcb *upcb, pbuf *pb, const ip_addr_t *addr, uint16_t port); + static void _s_recv(void *arg, udp_pcb *upcb, pbuf *p, const ip_addr_t *addr, uint16_t port); +#endif public: ESP8266NetBIOS(); ~ESP8266NetBIOS(); From 78b0f44348e53d1ee5aa8ea99066e30d97d11556 Mon Sep 17 00:00:00 2001 From: Shawn A Date: Fri, 17 Nov 2017 17:28:34 -0600 Subject: [PATCH 111/156] fixes #3795 (#3796) don't ignore ret when handling AP enable/disable in softAPdisconnect --- libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp index ee88ff43e..2bd3b2d3d 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp @@ -278,7 +278,7 @@ bool ESP8266WiFiAPClass::softAPdisconnect(bool wifioff) { DEBUG_WIFI("[APdisconnect] set_config failed!\n"); } - if(wifioff) { + if(ret && wifioff) { ret = WiFi.enableAP(false); } From 117bc875ffdd1f4b11af0dd236e0e12a84748e53 Mon Sep 17 00:00:00 2001 From: Mystic-Mirage Date: Mon, 20 Nov 2017 00:42:15 +0200 Subject: [PATCH 112/156] Fix too wide 'word' type -- it should be 16-bit instead of 32-bit (#3851) --- cores/esp8266/Arduino.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cores/esp8266/Arduino.h b/cores/esp8266/Arduino.h index cc3525015..66e2eeca5 100644 --- a/cores/esp8266/Arduino.h +++ b/cores/esp8266/Arduino.h @@ -178,7 +178,7 @@ void ets_intr_unlock(); #define _NOP() do { __asm__ volatile ("nop"); } while (0) #endif -typedef unsigned int word; +typedef uint16_t word; #define bit(b) (1UL << (b)) #define _BV(b) (1UL << (b)) From 1b76e9bf72c05933ed912d2603bfa2d057db800e Mon Sep 17 00:00:00 2001 From: Develo Date: Mon, 20 Nov 2017 14:39:27 -0300 Subject: [PATCH 113/156] Clear dirty flag in begin and reallocate only if necessary, add getConstDataPtr method (#2217) (#3849) --- libraries/EEPROM/EEPROM.cpp | 13 +++++++++++-- libraries/EEPROM/EEPROM.h | 1 + 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/libraries/EEPROM/EEPROM.cpp b/libraries/EEPROM/EEPROM.cpp index b7909d0c3..b5b8bfc15 100644 --- a/libraries/EEPROM/EEPROM.cpp +++ b/libraries/EEPROM/EEPROM.cpp @@ -56,16 +56,21 @@ void EEPROMClass::begin(size_t size) { size = (size + 3) & (~3); - if (_data) { + //In case begin() is called a 2nd+ time, don't reallocate if size is the same + if(_data && size != _size) { delete[] _data; + _data = new uint8_t[size]; + } else if(!_data) { + _data = new uint8_t[size]; } - _data = new uint8_t[size]; _size = size; noInterrupts(); spi_flash_read(_sector * SPI_FLASH_SEC_SIZE, reinterpret_cast(_data), _size); interrupts(); + + _dirty = false; //make sure dirty is cleared in case begin() is called 2nd+ time } void EEPROMClass::end() { @@ -131,6 +136,10 @@ uint8_t * EEPROMClass::getDataPtr() { return &_data[0]; } +uint8_t const * EEPROMClass::getConstDataPtr() { + return &_data[0]; +} + #if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_EEPROM) EEPROMClass EEPROM; #endif diff --git a/libraries/EEPROM/EEPROM.h b/libraries/EEPROM/EEPROM.h index 3a26d02e6..934a995a0 100644 --- a/libraries/EEPROM/EEPROM.h +++ b/libraries/EEPROM/EEPROM.h @@ -38,6 +38,7 @@ public: void end(); uint8_t * getDataPtr(); + uint8_t const * getConstDataPtr(); template T &get(int address, T &t) { From 422f35938a68b6343c1bf0c03d6a1c4636b8bc7b Mon Sep 17 00:00:00 2001 From: Develo Date: Mon, 20 Nov 2017 16:25:52 -0300 Subject: [PATCH 114/156] Added length and operator[] methods, added some constness, missed dirty clear (#3855) * Added length and operator[] methods, added some constness, missed _dirty clear * Added forgotten const --- libraries/EEPROM/EEPROM.cpp | 7 ++++--- libraries/EEPROM/EEPROM.h | 19 ++++++++++++------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/libraries/EEPROM/EEPROM.cpp b/libraries/EEPROM/EEPROM.cpp index b5b8bfc15..0ec376abc 100644 --- a/libraries/EEPROM/EEPROM.cpp +++ b/libraries/EEPROM/EEPROM.cpp @@ -83,10 +83,11 @@ void EEPROMClass::end() { } _data = 0; _size = 0; + _dirty = false; } -uint8_t EEPROMClass::read(int address) { +uint8_t EEPROMClass::read(int const address) { if (address < 0 || (size_t)address >= _size) return 0; if(!_data) @@ -95,7 +96,7 @@ uint8_t EEPROMClass::read(int address) { return _data[address]; } -void EEPROMClass::write(int address, uint8_t value) { +void EEPROMClass::write(int const address, uint8_t const value) { if (address < 0 || (size_t)address >= _size) return; if(!_data) @@ -136,7 +137,7 @@ uint8_t * EEPROMClass::getDataPtr() { return &_data[0]; } -uint8_t const * EEPROMClass::getConstDataPtr() { +uint8_t const * EEPROMClass::getConstDataPtr() const { return &_data[0]; } diff --git a/libraries/EEPROM/EEPROM.h b/libraries/EEPROM/EEPROM.h index 934a995a0..54a9c1e33 100644 --- a/libraries/EEPROM/EEPROM.h +++ b/libraries/EEPROM/EEPROM.h @@ -32,16 +32,16 @@ public: EEPROMClass(void); void begin(size_t size); - uint8_t read(int address); - void write(int address, uint8_t val); + uint8_t read(int const address); + void write(int const address, uint8_t const val); bool commit(); void end(); uint8_t * getDataPtr(); - uint8_t const * getConstDataPtr(); + uint8_t const * getConstDataPtr() const; template - T &get(int address, T &t) { + T &get(int const address, T &t) { if (address < 0 || address + sizeof(T) > _size) return t; @@ -50,17 +50,22 @@ public: } template - const T &put(int address, const T &t) { + const T &put(int const address, const T &t) { if (address < 0 || address + sizeof(T) > _size) return t; if (memcmp(_data + address, (const uint8_t*)&t, sizeof(T)) != 0) { - _dirty = true; - memcpy(_data + address, (const uint8_t*)&t, sizeof(T)); + _dirty = true; + memcpy(_data + address, (const uint8_t*)&t, sizeof(T)); } return t; } + size_t length() {return _size;} + + uint8_t& operator[](int const address) {return getDataPtr()[address];} + uint8_t const & operator[](int const address) const {return getConstDataPtr()[address];} + protected: uint32_t _sector; uint8_t* _data; From cb0a30c22bb2c70e89b35dfe7ed7865e3571dbfa Mon Sep 17 00:00:00 2001 From: Develo Date: Mon, 20 Nov 2017 17:51:25 -0300 Subject: [PATCH 115/156] Removed unused function that serves no purpose (#3854) --- cores/esp8266/Schedule.cpp | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/cores/esp8266/Schedule.cpp b/cores/esp8266/Schedule.cpp index 0f78f943e..6fabd942a 100644 --- a/cores/esp8266/Schedule.cpp +++ b/cores/esp8266/Schedule.cpp @@ -14,26 +14,6 @@ static scheduled_fn_t* sLastUnused = 0; static int sCount = 0; -static void init_lists() __attribute__((unused)); -static void init_lists() -{ - if (sCount != 0) { - return; - } - while (sCount < SCHEDULED_FN_INITIAL_COUNT) { - scheduled_fn_t* it = new scheduled_fn_t; - if (sCount == 0) { - sFirstUnused = it; - } - else { - sLastUnused->mNext = it; - } - sLastUnused = it; - ++sCount; - } - sLastUnused->mNext = NULL; -} - static scheduled_fn_t* get_fn() { scheduled_fn_t* result = NULL; // try to get an item from unused items list From 2f09ea71176258e327115119786f1e2611604650 Mon Sep 17 00:00:00 2001 From: Develo Date: Mon, 20 Nov 2017 21:46:12 -0300 Subject: [PATCH 116/156] refactor of WiFiMulti::run to reduce complexity and remove dead code (#3847) --- .../ESP8266WiFi/src/ESP8266WiFiMulti.cpp | 110 ++++++++++-------- 1 file changed, 63 insertions(+), 47 deletions(-) diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiMulti.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiMulti.cpp index b7fba7ddb..080073907 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiMulti.cpp +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiMulti.cpp @@ -40,16 +40,33 @@ bool ESP8266WiFiMulti::addAP(const char* ssid, const char *passphrase) { wl_status_t ESP8266WiFiMulti::run(void) { - int8_t scanResult; wl_status_t status = WiFi.status(); if(status == WL_DISCONNECTED || status == WL_NO_SSID_AVAIL || status == WL_IDLE_STATUS || status == WL_CONNECT_FAILED) { - scanResult = WiFi.scanComplete(); + int8_t scanResult = WiFi.scanComplete(); + if(scanResult == WIFI_SCAN_RUNNING) { - // scan is running - return WL_NO_SSID_AVAIL; - } else if(scanResult > 0) { - // scan done analyze + // scan is running, do nothing yet + status = WL_NO_SSID_AVAIL; + return status; + } + + if(scanResult == 0) { + // scan done, no ssids found. Start another scan. + DEBUG_WIFI_MULTI("[WIFI] scan done\n"); + DEBUG_WIFI_MULTI("[WIFI] no networks found\n"); + WiFi.scanDelete(); + DEBUG_WIFI_MULTI("\n\n"); + delay(0); + WiFi.disconnect(); + DEBUG_WIFI_MULTI("[WIFI] start scan\n"); + // scan wifi async mode + WiFi.scanNetworks(true); + return status; + } + + if(scanResult > 0) { + // scan done, analyze WifiAPlist_t bestNetwork { NULL, NULL }; int bestNetworkDb = INT_MIN; uint8 bestBSSID[6]; @@ -58,48 +75,44 @@ wl_status_t ESP8266WiFiMulti::run(void) { DEBUG_WIFI_MULTI("[WIFI] scan done\n"); delay(0); - if(scanResult <= 0) { - DEBUG_WIFI_MULTI("[WIFI] no networks found\n"); - } else { - DEBUG_WIFI_MULTI("[WIFI] %d networks found\n", scanResult); - for(int8_t i = 0; i < scanResult; ++i) { + DEBUG_WIFI_MULTI("[WIFI] %d networks found\n", scanResult); + for(int8_t i = 0; i < scanResult; ++i) { - String ssid_scan; - int32_t rssi_scan; - uint8_t sec_scan; - uint8_t* BSSID_scan; - int32_t chan_scan; - bool hidden_scan; + String ssid_scan; + int32_t rssi_scan; + uint8_t sec_scan; + uint8_t* BSSID_scan; + int32_t chan_scan; + bool hidden_scan; - WiFi.getNetworkInfo(i, ssid_scan, sec_scan, rssi_scan, BSSID_scan, chan_scan, hidden_scan); + WiFi.getNetworkInfo(i, ssid_scan, sec_scan, rssi_scan, BSSID_scan, chan_scan, hidden_scan); - bool known = false; - for(uint32_t x = 0; x < APlist.size(); x++) { - WifiAPlist_t entry = APlist[x]; + bool known = false; + for(uint32_t x = 0; x < APlist.size(); x++) { + WifiAPlist_t entry = APlist[x]; - if(ssid_scan == entry.ssid) { // SSID match - known = true; - if(rssi_scan > bestNetworkDb) { // best network - if(sec_scan == ENC_TYPE_NONE || entry.passphrase) { // check for passphrase if not open wlan - bestNetworkDb = rssi_scan; - bestChannel = chan_scan; - memcpy((void*) &bestNetwork, (void*) &entry, sizeof(bestNetwork)); - memcpy((void*) &bestBSSID, (void*) BSSID_scan, sizeof(bestBSSID)); - } + if(ssid_scan == entry.ssid) { // SSID match + known = true; + if(rssi_scan > bestNetworkDb) { // best network + if(sec_scan == ENC_TYPE_NONE || entry.passphrase) { // check for passphrase if not open wlan + bestNetworkDb = rssi_scan; + bestChannel = chan_scan; + memcpy((void*) &bestNetwork, (void*) &entry, sizeof(bestNetwork)); + memcpy((void*) &bestBSSID, (void*) BSSID_scan, sizeof(bestBSSID)); } - break; } + break; } - - if(known) { - DEBUG_WIFI_MULTI(" ---> "); - } else { - DEBUG_WIFI_MULTI(" "); - } - - DEBUG_WIFI_MULTI(" %d: [%d][%02X:%02X:%02X:%02X:%02X:%02X] %s (%d) %c\n", i, chan_scan, BSSID_scan[0], BSSID_scan[1], BSSID_scan[2], BSSID_scan[3], BSSID_scan[4], BSSID_scan[5], ssid_scan.c_str(), rssi_scan, (sec_scan == ENC_TYPE_NONE) ? ' ' : '*'); - delay(0); } + + if(known) { + DEBUG_WIFI_MULTI(" ---> "); + } else { + DEBUG_WIFI_MULTI(" "); + } + + DEBUG_WIFI_MULTI(" %d: [%d][%02X:%02X:%02X:%02X:%02X:%02X] %s (%d) %c\n", i, chan_scan, BSSID_scan[0], BSSID_scan[1], BSSID_scan[2], BSSID_scan[3], BSSID_scan[4], BSSID_scan[5], ssid_scan.c_str(), rssi_scan, (sec_scan == ENC_TYPE_NONE) ? ' ' : '*'); + delay(0); } // clean up ram @@ -146,15 +159,18 @@ wl_status_t ESP8266WiFiMulti::run(void) { } else { DEBUG_WIFI_MULTI("[WIFI] no matching wifi found!\n"); } - } else { - // start scan - DEBUG_WIFI_MULTI("[WIFI] delete old wifi config...\n"); - WiFi.disconnect(); - DEBUG_WIFI_MULTI("[WIFI] start scan\n"); - // scan wifi async mode - WiFi.scanNetworks(true); + return status; } + + + // scan failed, or some other condition not handled above. Start another scan. + DEBUG_WIFI_MULTI("[WIFI] delete old wifi config...\n"); + WiFi.disconnect(); + + DEBUG_WIFI_MULTI("[WIFI] start scan\n"); + // scan wifi async mode + WiFi.scanNetworks(true); } return status; } From cbfbc1ad637182a0b1979bcff6b0e75ae9f57e7e Mon Sep 17 00:00:00 2001 From: david gauchard Date: Tue, 14 Nov 2017 22:34:43 +0100 Subject: [PATCH 117/156] lwip2 fixes and time/ntp management core: +settimeofday() core: +coredecls.h +sntp-lwip2.c core: fix clock_gettime() with micros64() core: honor DST in configTime() core: internal clock is automatically started examples: +esp8266/NTP-TZ-DST.ino lwip2: sntp client removed lwip2: fix crashing with WiFi.softAPConfig(ip,ip,ip) fix #3852 --- cores/esp8266/coredecls.h | 9 + cores/esp8266/sntp-lwip2.c | 452 ++++++++++++++++++ cores/esp8266/time.c | 15 +- .../examples/NTP-TZ-DST/NTP-TZ-DST.ino | 128 +++++ tools/sdk/lib/liblwip2.a | Bin 1039116 -> 994162 bytes tools/sdk/lwip2/builder | 2 +- tools/sdk/lwip2/include/arch/cc.h | 8 +- tools/sdk/lwip2/include/lwipopts.h | 8 +- 8 files changed, 607 insertions(+), 15 deletions(-) create mode 100644 cores/esp8266/coredecls.h create mode 100644 cores/esp8266/sntp-lwip2.c create mode 100644 libraries/esp8266/examples/NTP-TZ-DST/NTP-TZ-DST.ino diff --git a/cores/esp8266/coredecls.h b/cores/esp8266/coredecls.h new file mode 100644 index 000000000..809b1b2f6 --- /dev/null +++ b/cores/esp8266/coredecls.h @@ -0,0 +1,9 @@ + +#ifndef __COREDECLS_H +#define __COREDECLS_H + +extern bool s_bootTimeSet; + +// TODO: put declarations here, get rid of -Wno-implicit-function-declaration + +#endif // __COREDECLS_H diff --git a/cores/esp8266/sntp-lwip2.c b/cores/esp8266/sntp-lwip2.c new file mode 100644 index 000000000..0cb1a7165 --- /dev/null +++ b/cores/esp8266/sntp-lwip2.c @@ -0,0 +1,452 @@ +/* + * sntp-lwip2.c - ESP8266-specific functions for SNTP and lwIP-v2 + * Copyright (c) 2015 Espressif (license is tools/sdk/lwip/src/core/sntp.c's) + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * + * History: + * This code is extracted from lwip1.4-espressif's sntp.c + * which is a patched version of the original lwip1's sntp. + * (check the mix-up in tools/sdk/lwip/src/core/sntp.c) + * It is moved here as-is and cleaned for maintainability and + * because it does not belong to lwip. + * + * TODOs: + * settimeofday(): handle tv->tv_usec + * sntp_mktm_r(): review, fix DST handling (this one is currently untouched from lwip-1.4) + */ + +#include +#include +#include +#include +#include "coredecls.h" + +#if LWIP_VERSION_MAJOR == 1 + +#include + +static const char stod14[] PROGMEM = "settimeofday() can't set time!\n"; + +int settimeofday(const struct timeval* tv, const struct timezone* tz) +{ + if (tz) /*before*/ + { + sntp_set_timezone(tz->tz_minuteswest / 60); + // apparently tz->tz_dsttime is a bitfield and should not be further used (cf man) + sntp_set_daylight(0); + } + if (tv) /* after*/ + { + os_printf(stod14); + + // reset time subsystem + s_bootTimeSet = false; + + return -1; + } + return 0; +} + +#endif // lwip 1.4 only + +#if LWIP_VERSION_MAJOR == 2 + +#include + +static uint32 realtime_stamp = 0; +static uint16 dst = 0; +static sint8 time_zone = 8; // espressif HQ's default timezone +LOCAL os_timer_t sntp_timer; + +/*****************************************/ +#define SECSPERMIN 60L +#define MINSPERHOUR 60L +#define HOURSPERDAY 24L +#define SECSPERHOUR (SECSPERMIN * MINSPERHOUR) +#define SECSPERDAY (SECSPERHOUR * HOURSPERDAY) +#define DAYSPERWEEK 7 +#define MONSPERYEAR 12 + +#define YEAR_BASE 1900 +#define EPOCH_YEAR 1970 +#define EPOCH_WDAY 4 +#define EPOCH_YEARS_SINCE_LEAP 2 +#define EPOCH_YEARS_SINCE_CENTURY 70 +#define EPOCH_YEARS_SINCE_LEAP_CENTURY 370 + +#define isleap(y) ((((y) % 4) == 0 && ((y) % 100) != 0) || ((y) % 400) == 0) + +int __tznorth; +int __tzyear; +char reult[100]; +static const int mon_lengths[2][12] = { + {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, + {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} +} ; + +static const int year_lengths[2] = { + 365, + 366 +} ; +struct tm +{ + int tm_sec; + int tm_min; + int tm_hour; + int tm_mday; + int tm_mon; + int tm_year; + int tm_wday; + int tm_yday; + int tm_isdst; +}; + +struct tm res_buf; +typedef struct __tzrule_struct +{ + char ch; + int m; + int n; + int d; + int s; + time_t change; + int offset; +} __tzrule_type; + +__tzrule_type sntp__tzrule[2]; +struct tm * +sntp_mktm_r(const time_t * tim_p ,struct tm *res ,int is_gmtime) +{ + long days, rem; + time_t lcltime; + int y; + int yleap; + const int *ip; + + /* base decision about std/dst time on current time */ + lcltime = *tim_p; + + days = ((long)lcltime) / SECSPERDAY; + rem = ((long)lcltime) % SECSPERDAY; + while (rem < 0) + { + rem += SECSPERDAY; + --days; + } + while (rem >= SECSPERDAY) + { + rem -= SECSPERDAY; + ++days; + } + + /* compute hour, min, and sec */ + res->tm_hour = (int) (rem / SECSPERHOUR); + rem %= SECSPERHOUR; + res->tm_min = (int) (rem / SECSPERMIN); + res->tm_sec = (int) (rem % SECSPERMIN); + + /* compute day of week */ + if ((res->tm_wday = ((EPOCH_WDAY + days) % DAYSPERWEEK)) < 0) + res->tm_wday += DAYSPERWEEK; + + /* compute year & day of year */ + y = EPOCH_YEAR; + if (days >= 0) + { + for (;;) + { + yleap = isleap(y); + if (days < year_lengths[yleap]) + break; + y++; + days -= year_lengths[yleap]; + } + } + else + { + do + { + --y; + yleap = isleap(y); + days += year_lengths[yleap]; + } while (days < 0); + } + + res->tm_year = y - YEAR_BASE; + res->tm_yday = days; + ip = mon_lengths[yleap]; + for (res->tm_mon = 0; days >= ip[res->tm_mon]; ++res->tm_mon) + days -= ip[res->tm_mon]; + res->tm_mday = days + 1; + + if (!is_gmtime) + { + int offset; + int hours, mins, secs; + +// TZ_LOCK; +// if (_daylight) +// { +// if (y == __tzyear || __tzcalc_limits (y)) +// res->tm_isdst = (__tznorth +// ? (*tim_p >= __tzrule[0].change && *tim_p < __tzrule[1].change) +// : (*tim_p >= __tzrule[0].change || *tim_p < __tzrule[1].change)); +// else +// res->tm_isdst = -1; +// } +// else + res->tm_isdst = -1; + + offset = (res->tm_isdst == 1 ? sntp__tzrule[1].offset : sntp__tzrule[0].offset); + + hours = offset / SECSPERHOUR; + offset = offset % SECSPERHOUR; + + mins = offset / SECSPERMIN; + secs = offset % SECSPERMIN; + + res->tm_sec -= secs; + res->tm_min -= mins; + res->tm_hour -= hours; + + if (res->tm_sec >= SECSPERMIN) + { + res->tm_min += 1; + res->tm_sec -= SECSPERMIN; + } + else if (res->tm_sec < 0) + { + res->tm_min -= 1; + res->tm_sec += SECSPERMIN; + } + if (res->tm_min >= MINSPERHOUR) + { + res->tm_hour += 1; + res->tm_min -= MINSPERHOUR; + } + else if (res->tm_min < 0) + { + res->tm_hour -= 1; + res->tm_min += MINSPERHOUR; + } + if (res->tm_hour >= HOURSPERDAY) + { + ++res->tm_yday; + ++res->tm_wday; + if (res->tm_wday > 6) + res->tm_wday = 0; + ++res->tm_mday; + res->tm_hour -= HOURSPERDAY; + if (res->tm_mday > ip[res->tm_mon]) + { + res->tm_mday -= ip[res->tm_mon]; + res->tm_mon += 1; + if (res->tm_mon == 12) + { + res->tm_mon = 0; + res->tm_year += 1; + res->tm_yday = 0; + } + } + } + else if (res->tm_hour < 0) + { + res->tm_yday -= 1; + res->tm_wday -= 1; + if (res->tm_wday < 0) + res->tm_wday = 6; + res->tm_mday -= 1; + res->tm_hour += 24; + if (res->tm_mday == 0) + { + res->tm_mon -= 1; + if (res->tm_mon < 0) + { + res->tm_mon = 11; + res->tm_year -= 1; + res->tm_yday = 365 + isleap(res->tm_year); + } + res->tm_mday = ip[res->tm_mon]; + } + } +// TZ_UNLOCK; + } + else + res->tm_isdst = 0; +// os_printf("res %d %d %d %d %d\n",res->tm_year,res->tm_mon,res->tm_mday,res->tm_yday,res->tm_hour); + return (res); +} +struct tm * +sntp_localtime_r(const time_t * tim_p , + struct tm *res) +{ + return sntp_mktm_r (tim_p, res, 0); +} + +struct tm * +sntp_localtime(const time_t * tim_p) +{ + return sntp_localtime_r (tim_p, &res_buf); +} + +int sntp__tzcalc_limits(int year) +{ + int days, year_days, years; + int i, j; + + if (year < EPOCH_YEAR) + return 0; + + __tzyear = year; + + years = (year - EPOCH_YEAR); + + year_days = years * 365 + + (years - 1 + EPOCH_YEARS_SINCE_LEAP) / 4 - (years - 1 + EPOCH_YEARS_SINCE_CENTURY) / 100 + + (years - 1 + EPOCH_YEARS_SINCE_LEAP_CENTURY) / 400; + + for (i = 0; i < 2; ++i) + { + if (sntp__tzrule[i].ch == 'J') + days = year_days + sntp__tzrule[i].d + (isleap(year) && sntp__tzrule[i].d >= 60); + else if (sntp__tzrule[i].ch == 'D') + days = year_days + sntp__tzrule[i].d; + else + { + int yleap = isleap(year); + int m_day, m_wday, wday_diff; + const int *ip = mon_lengths[yleap]; + + days = year_days; + + for (j = 1; j < sntp__tzrule[i].m; ++j) + days += ip[j-1]; + + m_wday = (EPOCH_WDAY + days) % DAYSPERWEEK; + + wday_diff = sntp__tzrule[i].d - m_wday; + if (wday_diff < 0) + wday_diff += DAYSPERWEEK; + m_day = (sntp__tzrule[i].n - 1) * DAYSPERWEEK + wday_diff; + + while (m_day >= ip[j-1]) + m_day -= DAYSPERWEEK; + + days += m_day; + } + + /* store the change-over time in GMT form by adding offset */ + sntp__tzrule[i].change = days * SECSPERDAY + sntp__tzrule[i].s + sntp__tzrule[i].offset; + } + + __tznorth = (sntp__tzrule[0].change < sntp__tzrule[1].change); + + return 1; +} + +char* sntp_asctime_r(struct tm *tim_p ,char *result) +{ + static const char day_name[7][4] = { + "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" + }; + static const char mon_name[12][4] = { + "Jan", "Feb", "Mar", "Apr", "May", "Jun", + "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" + }; + os_sprintf (result, "%s %s %02d %02d:%02d:%02d %02d\n", + day_name[tim_p->tm_wday], + mon_name[tim_p->tm_mon], + tim_p->tm_mday, tim_p->tm_hour, tim_p->tm_min, + tim_p->tm_sec, 1900 + tim_p->tm_year); + return result; +} + +char* sntp_asctime(struct tm *tim_p) +{ + return sntp_asctime_r (tim_p, reult); +} + +uint32 ICACHE_RAM_ATTR sntp_get_current_timestamp(void) +{ + return realtime_stamp; +} + +char* sntp_get_real_time(time_t t) +{ + return sntp_asctime(sntp_localtime (&t)); +} + +sint8 sntp_get_timezone(void) +{ + return time_zone; +} + +bool sntp_set_timezone(sint8 timezone) +{ + if(timezone >= -11 || timezone <= 13) { + time_zone = timezone; + return true; + } else { + return false; + } +} + +void sntp_set_daylight(int daylight) +{ + dst = daylight; +} + +void ICACHE_RAM_ATTR sntp_time_inc (void) +{ + realtime_stamp++; +} + +static void sntp_set_system_time (uint32_t t) +{ + realtime_stamp = t + time_zone * 60 * 60 + dst; + os_timer_disarm(&sntp_timer); + os_timer_setfn(&sntp_timer, (os_timer_func_t *)sntp_time_inc, NULL); + os_timer_arm(&sntp_timer, 1000, 1); +} + +int settimeofday(const struct timeval* tv, const struct timezone* tz) +{ + if (tz) /*before*/ + { + sntp_set_timezone(tz->tz_minuteswest / 60); + // apparently tz->tz_dsttime is a bitfield and should not be further used (cf man) + sntp_set_daylight(0); + } + if (tv) /* after*/ + { + sntp_set_system_time(tv->tv_sec); + // XXX FIXME TODO: efficiently use provided tv->tv_sec + + // reset time subsystem + s_bootTimeSet = false; + } + return 0; +} + +#endif // lwip2 only diff --git a/cores/esp8266/time.c b/cores/esp8266/time.c index 27f6640ca..ab3fdfeca 100644 --- a/cores/esp8266/time.c +++ b/cores/esp8266/time.c @@ -17,9 +17,10 @@ */ #include +#include #include #include "sntp.h" - +#include "coredecls.h" #ifndef _TIMEVAL_DEFINED #define _TIMEVAL_DEFINED @@ -36,9 +37,7 @@ extern uint64_t micros64(); // time gap in seconds from 01.01.1900 (NTP time) to 01.01.1970 (UNIX time) #define DIFF1900TO1970 2208988800UL -static int s_daylightOffset_sec = 0; -static long s_timezone_sec = 0; -static bool s_bootTimeSet = false; +bool s_bootTimeSet = false; static uint64_t s_bootTime_us = 0; // calculate offset used in gettimeofday @@ -73,17 +72,17 @@ void configTime(int timezone, int daylightOffset_sec, const char* server1, const setServer(1, server2); setServer(2, server3); - s_timezone_sec = timezone; - s_daylightOffset_sec = daylightOffset_sec; sntp_set_timezone(timezone/3600); + sntp_set_daylight(daylightOffset_sec); sntp_init(); } int clock_gettime(clockid_t unused, struct timespec *tp) { (void) unused; - tp->tv_sec = millis() / 1000; - tp->tv_nsec = micros() * 1000; + uint64_t m = micros64(); + tp->tv_sec = m / 1000000; + tp->tv_nsec = (m % 1000000) * 1000; return 0; } diff --git a/libraries/esp8266/examples/NTP-TZ-DST/NTP-TZ-DST.ino b/libraries/esp8266/examples/NTP-TZ-DST/NTP-TZ-DST.ino new file mode 100644 index 000000000..254eb65fe --- /dev/null +++ b/libraries/esp8266/examples/NTP-TZ-DST/NTP-TZ-DST.ino @@ -0,0 +1,128 @@ +/* + NTP-TZ-DST + NetWork Time Protocol - Time Zone - Daylight Saving Time + + This example shows how to read and set time, + and how to use NTP (set NTP0_OR_LOCAL1 to 0 below) + or an external RTC (set NTP0_OR_LOCAL1 to 1 below) + + TZ and DST below have to be manually set + according to your local settings. + + This example code is in the public domain. +*/ + +#include // time() ctime() +#include // struct timeval +#include + +//////////////////////////////////////////////////////// + +#define SSID "open" +#define SSIDPWD "" +#define TZ 1 // (utc+) TZ in hours +#define DST_MN 60 // use 60mn for summer time in some countries + +#define NTP0_OR_LOCAL1 1 // 0:use NTP 1:fake external RTC +#define RTC_TEST 1510592825 // 1510592825 = Monday 13 November 2017 17:07:05 UTC + +//////////////////////////////////////////////////////// + +#define TZ_MN ((TZ)*60) +#define TZ_SEC ((TZ)*3600) +#define DST_SEC ((DST_MN)*60) + +void setup() { + Serial.begin(115200); + +#if NTP0_OR_LOCAL1 + // local + + ESP.eraseConfig(); + time_t rtc = RTC_TEST; + timeval tv = { rtc, 0 }; + timezone tz = { TZ_MN + DST_MN, 0 }; + settimeofday(&tv, &tz); + +#else // ntp + + configTime(TZ_SEC, DST_SEC, "pool.ntp.org"); + WiFi.mode(WIFI_STA); + WiFi.begin(SSID, SSIDPWD); + // don't wait, observe time changing when ntp timestamp is received + +#endif // ntp +} + +// for testing purpose: +extern "C" int clock_gettime(clockid_t unused, struct timespec *tp); + +#define PTM(w) \ + Serial.print(":" #w "="); \ + Serial.print(tm->tm_##w); + +void printTm (const char* what, const tm* tm) { + Serial.print(what); + PTM(isdst); PTM(yday); PTM(wday); + PTM(year); PTM(mon); PTM(mday); + PTM(hour); PTM(min); PTM(sec); +} + +timeval tv; +timespec tp; +time_t now; +uint32_t now_ms, now_us; + +void loop() { + + gettimeofday(&tv, nullptr); + clock_gettime(0, &tp); + now = time(nullptr); + now_ms = millis(); + now_us = micros(); + + // localtime / gmtime every second change + static time_t lastv = 0; + if (lastv != tv.tv_sec) { + lastv = tv.tv_sec; + Serial.println(); + printTm("localtime", localtime(&now)); + Serial.println(); + printTm("gmtime ", gmtime(&now)); + Serial.println(); + Serial.println(); + } + + // time from boot + Serial.print("clock:"); + Serial.print((uint32_t)tp.tv_sec); + Serial.print("/"); + Serial.print((uint32_t)tp.tv_nsec); + Serial.print("ns"); + + // time from boot + Serial.print(" millis:"); + Serial.print(now_ms); + Serial.print(" micros:"); + Serial.print(now_us); + + // EPOCH+tz+dst + Serial.print(" gtod:"); + Serial.print((uint32_t)tv.tv_sec); + Serial.print("/"); + Serial.print((uint32_t)tv.tv_usec); + Serial.print("us"); + + // EPOCH+tz+dst + Serial.print(" time:"); + Serial.print((uint32_t)now); + + // human readable + Serial.print(" ctime:(UTC+"); + Serial.print((uint32_t)(TZ * 60 + DST_MN)); + Serial.print("mn)"); + Serial.print(ctime(&now)); + + // simple drifting loop + delay(100); +} diff --git a/tools/sdk/lib/liblwip2.a b/tools/sdk/lib/liblwip2.a index 4c3ef868b9334ff6d0f71c2c03ae904bc3a3170e..ad0064ef8260654645f1c7069a73a15b71e6ccb1 100644 GIT binary patch delta 160246 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�He(Q@NXIyP0V^YYA%I?wz~=b6AU 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 delta 195725 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 z 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

Ua7E@>od! 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 literal 266874 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ͣ>>#Pf zV$!)=bZTUi&UZ!M2LC?AKN8-H?K~>{3-~`#d@1T{5}#(_obQof9nYs+>fmYc^Mu(! z5)xho|3<|O)BXilCq%lg}AqUl0E(#n%Y4bBGJmXQz=fKQEY_Nk12z9Y3vD%(i|jIyJJ{ z7Qd;=bUNU3d^Wicu2IgnTZB12n>sst`U$fGX%*~E`ol!0MmFi^h&~WL<1n2T_-j<$ z1)@_Uo4CtFX9v|+gxL}0j9Hgs`c2WPkxkqmh~5f+r!YIBI)!;X|17SF%nv)63WRyh zt`ue`(^6q}EZr!~j-QRf>`dbIn(6SGy;bo*u&K`+8%-N(WK*AC5uF`)0l8MQ11Uq8 z9Y|LQSHsU2=5=F+(&s9Dr7%0v9##CDFguF6g$ICNSKI+M$CPt$GSAe=rfdfy4)rc* z>0q;u(?zF7Hv8y|U1kFZu2^iSk4@9Bb#~H zUlE=6z+Q5%WGB-+VRkZcye#v~jwR=NKf+rP*UWd%xjAV=jcn$--$t7NG62^f@o7Vi z>2*rzH^SDd9dTk$l-g^K4X zE>m2q7}&F2HW5r7bl!$4UFT<#(sdq6lwPK|UU7@!Rf^Xs-lTYo;>Q$sDDG5zSn)B% zCl&MA+w5;Fj)P$ybHf3}X^OKHPgPu~n9l|#9XXTcE90d#i@$NDb7~xyhn$0>74iIgsYTIlj0SM*C^hgxLvXH z9-XA=yhkUzTiF~?d_-}#;?s)J>D05o806Q(0~Pam#*_*Bb_`EaJWa9l9-ZW^OzHKC zTNJNSyiV~Z#ak3R@6k#69ZK(1d|2@@#U~Xz?I=kn7WYoGU(S1Uq6d_orZ`LSRK1ve#P4qJMYnn{a&Rz@6n0grSubu*-kV0bl#&A zd$!Yzo~$@k@i@iVirL08apx&^-lLQBo0Psn@fyV&6t^qhs(6QD=RG<}|A5kuD0cc` z#D>q+CZBv}Hq2*W!%n+P?1w5nUGXHv&UJK4`Og_J^9er~HdnVaTcg$Q zgdh7`pi{yArGJB9#nT2g(Q$6wlmI+ArK}WTRA0yaGrQqf8;j-B?9yPvwAr4cV|oi6 za{qB17ygciM};28_Sp`u5N8lwvpw77s%bdaa>a(8v7^t^(74mcXc+>`Gs^&%Wv9;y z&FS;fE8+DTnsJ(q7U}={zenLh*?UaJ1i8Yv*O^bdB8{Ce@$!H5inM{dj1n+cB=@Zt zcRw)3wK&(_ml2mT(Vm`=@qXAp&hzlm{T@%QH8N=bJ=}ppOUbfR6M_XXnFY}|rtQUO zLHA`93nMh^GH%F;E1I7&Jz-z@L>r@I`}vcS@5ByeCES+guZp!j1-&p(mZ=m~Bzz`l zXN3|5wj~V6v{Q5Kp~ZG!W6qY09Vy!j`fe_`V0}S+aX~_EL1Jb>zqW#;P{Dv;!DlK8 z1_nC^Ven;BOHS*WoVJ4gp@Iu53NG4M{=*P9BE%lOl5PE_3jDT5O8S zJ$?ye{^N3(`xlUVjst(A7xv-mgLc55bk8+~h0RDOHX}79D`A?QThJ@BAU0SK=PBsD z_P1+)G`a83(`NROmw<9!OzU345!XKty4gb7aT!jzre8tTv8KQoS6l^JOy#V zf>9*N!sbtwVj`ELl6It82_Q#X^J~Rp$bKZ}NO+abnFl!G195GqJso{J)%CN$ZCJ9g&~bcH zHhjjR%~bfSu+U~N7CPFHjSU~~GqKR-A6V#UWAeguyvWBFAv!X84xHx@ueO+^P zsJ#BX_C=_=zI?R1+HHG;8rk|7y|g)$F?yUe`eWN4qn%hS%}mki2{eToo0yM(&3#(S zgolML8w*S8(^@c>iQT8QOxPlc#qw!(pOy6Vc1>|(l~Zl#vjt=F%J4Sy(y`~{pN&Lf z6{EW!hfc?Hsv-2*Sh&BY<+KHM

Xfuy*_^8c7W%cd?-2Zi z;Jt!h6nsGN+k!t5%=@r5um1}EMsNz|N~@#(&yT53-pjD^{(^b`!pidm^PYv3mk8!R zF|+cCf@cVxEtvN^tp2Hj7YS|^yj-wayEFcuC*Z`R-oizE;RL3g&AG?Dqox`)146 z3+C&cto(MtcM9hF46M%Y1n(C7N5QWO-Y;0KubS^E>h%bQ4+! z3+Dgvw{~t7e3#&R1wSHqyWqzK|3UEcg89lFn-^aXW_iEh_XU3__}_xR5FFrotSNhn z;68%+uc)m~j^Map{LA2^&ar~|Vgs9Yir|@os|C*$tk$%RZ%snpCb&azm*DdRuNQoY z;L8MGBlw4cZx(#J;GYZT{{XjT{I%fU3jV#|rv$4tc2mX|g#0zZYK`6KyeH%z2<96j ztPcUMOB?-E!F>et1x;2bM=)PJW#t8eM++V+SgpgGyefr!w&0TlHwd0DxJB?1!7Bvw z<&xI7wSqSazF6@01^+T zAoyQ`KNtL!;2_Q?)=za0!ua1;$hnqgb&e8zj9~R{CzE!#ke3K96MVej$%1DHo-Ozk z!3}~J2wo(ZuQjngcM0apO{{#2V09nF_`g-iecu;zjMob}Ur%H0+$;DY!H){&dtt2p(}LA~ zA7lS@A?J%>tUg~RYMIv*mP3O1T%nZ@6dV_vFZfu&>OPV2pQ8y5Ijckc)@)CjZHgS@F{{D1h)!aD!4;%m*7hU zUm=)p*|GWFBKR)B_X>VY@b3ig7W_xSe-`|bV7|h~=KH?jgM#@w9;?GQ{aD8TfJ-t? zS&obKZf*?h8W)!OlJ^1CGhmnpxv6Ks499V7ukG`}_C8J_<;a^G*SokzYB&2`441me z?`0U)NyhE0B&&Q)TIOqQ#sxE9E0^nOWt8LEi(5H%n{S2SN;3K@w`tfd&m^0C)%u&^ zX>^JjXEm+FZlOgBKX)vwO{kr+}9lo(5iF_yjPYEvL=dV6G{Vxz@YU z@KW#=!>hoT8SVyiO^Nzk>-~}8^T7N^&XlvBZ!>%en9t%;{(Ugll*reB`MeqVI`DSG z+rWI*o$@=uTvH-*t@jzjJHRg(ejNN)!+!$rH~cJ^>q|_#7yM7dFMtmkei8h+;a9-l z7=9JZbtk5M1DtC3O)%G;D1Q&!-|#=cTz8`U1F-si9r$B#p^ZqoCcm@n9nCx8|FQFu0b(vKA7+RCKrJD8*TEj;8w%M;4=+#y?LeKvEZ`}mxH+; z#k5?9-ej21zh7c_3it}coS*nCAN5ZFb8U(|8@$bM4fv;qIY0f}@EPFy4KD&eVt5Jo zw}#IIKVf(|nCn!u-wA%sFz2Ti4fA&uT)(0Y*SQZE-VA=%@D}ighWYQ|KQ(*>_`im) z0`uW)+Tr?l*zk|RT+5>TCUB$oF6t}+e{A?nFrS&Eoaci78s^-UhI0$A3%T)kX5?(} zQHJR=*R?1g4jyKh^K+5m@!(R!6Tsz$dA^%unD^PH8Lk4)Has0X$1uCDbHED> zvy9D#8^KErH-T3e=KS1k_$)BjyJ%-Ec%$JB;4Ox~59WFob*=zkZTNQZj|~3|e3Rk3 z!M7QH1bmm_9bm3^(ay`@hYi04-fs9E@GisegP%0~Pw+E_KLK;Si*`N(|JCqU;QfXV zf!{Xlp|AeaFz>$|G#mwgZa5A6jp4rFP*~gNeYvRNW5Ah)IZqBUJPI5)JQ~ckFZwnH zTx@t8xZE&*H&khO7I=o?x!`KU^TD--c`Y{2Fn=3#hGEWut%f=8ooToOywWh|y|WFU z2jUjqkUe(zG(P;@T-RTJ0z}yQRgEtU#Lz#2>#IUzrmjx z{u2D9;cvja)~0?s&f77=ycXkn7v)ETx!y${0gfByGakbXPXY7)!%&CUT&0F*fXfY^ z0-j`;zgL=O_;fJWxR~|~@EpS};JJp|z+B^^4zIRv7LCcN^w!pw2U_ zegkFrQpmaXMVtKn(`APFe8|;?d0ob}FY4R?zR57J(fI#nDCh5`?lR2lwO<=#J(lPq^lpB5dJ+6Xs%pKe~FI(n$$nqk= z%gFGR+qu{+Unux0!8Z!#JZtqI6ud+5(}G_X{HEZK1#{lCHu?KU%j)?AoCmqZDL1Ts z=VF-Ge^x$C@EpMl1gqx_OxkYB(Wcxs3cgJ6j|AT)nAbx#E$0`@PYUMzV&(ent`?HYPGABx0NS1uu~nEKLh(LCc7|f?s$u za`6(^^a&GdZ*gke=54G>7$}8-p&xkTADVzm>Ga%q)i!=DM8suPd++@u+|QZlRXy+R zD2ki>c4n16?-d30(cD|Uj-}1;og(TM+;ns-Aa#pfsMhq+s{O0J&Z$Z)NZEpG@q54W za<4&Yi_>=HUcEPW>w(;>4(48YeMZ{H&egZ1t2)@kIw;?c@+UGQ2bwl|O`G>NT~J$; zIbuvzz)J)I?+)EKEu%JP;D~Ac&xjOWQT4<(@o76^HL=B&FK!-DleqV*6NaAs*D?D? z#?z<7QR3!puJ)rMF#hVP3D;R%Ix!K8mAY;`URH3;=;GK!qfox!+*s+K1G%`ax}qv8 z5rJnZ2SM(zol2s{&4Gz(q$mHZh@WLh1NXcgJ2j_VTbgCy$tTOTfE25WuR&#=A1A0`7^; z*H75kkTGG{?CAxgHl1_ri?45hfADf~*1*yyzA7o{et3+x zI6qbzs~CLiE!7nhDypWIADcM!>X(llc6|cvTpa#S;`&6aV(!5lv}AQfERm=#-?Gw~ zxuB>|;^xW``4juvzF!y{-&}a0W>{%ac1@oX$DpQk1>!jI^!yXYSiJ+)so}oP!94{Z zPmV(!omcDCK0UuU)N5{`mnh1FZXz@Dvb~9-?1`Zh6V^n`OVpfD8uJr1v#Og*Yi1^D z0y!G(#R)eVuM(vFTPdc0XqUey6qiy>U4n3 z1N(RX`Ow~b{}bkg%ieoG3#T}xdy1lo_x~Qxoq|!_gx~Hg+<)Mzs*qEhvSr30J9gjQ z`T2cj{BjL$1X45n-*!I#CUrcd;kj4JN^yK@Q|Ai&7w~v-d__lG|IhV!OYi?`isOB4 z_>Zx?i=@_KIG=M(rVnZsueJ}nA=jhGDH&ao7WNlynd!C#f*!6|gK_o0CwbaGgbgpp zS&O%*n{zNz;FOG%!7!lDbHN~d!6GjoCvdI^2D#L8c_7GauMBO3ULnYCF9CGAtCH#P zNHx-JbT4N)ts=tHs7u>@Due8Mmw7NtfKh3aYk!C9ZFE)kmj|v0UKw)!ithoc?>a&E zM)>TmqtQ9o?dJUmlE4eaI1U6;zGUE~_WPI>X`1JU!OLzeVsnf#EJE7on=`h?%bbNl@4Y!el z{_}KYF*)M%YkYXgAHXsHXQ++v3i3do%Z%ZbC(fx5Stg4WuoD)Ps})@2@m)9@kf5)aC`fQaI$KE=pO+ z=WG4HLzdD>bo^$hr*!QAX8XLUkP!~e z*I1WMw9QF*ofM3=Iw|`}k?2Y%n)(4tB9$Ek!}yU`48bB zayAi7mx+M8GUp@J0oe9%1?EJ~`GCmZ(?=d336*fL44-{Y!bjgOr0uJS)zp_hBfcI{ zDfGnq9i)-ntt!=-OmziQsSnncN}$s-Xz2BI)=ZA?D|}n_BX4- z`VUZkAvxe*Pris8^mn2!`&-B%pZ7ETi{~R%#6Jxkz`rC99P_yj>wk}&?szldqJJq} zO0D;=eUkZ4Xa3i*BRhU6`G*t-{aTdO|Iy3fd_4~kRVxnB$6WYS$DS*J7I9dtDAX7NcQ|7Sd?bhCCa=FT0^TI6P_GTcSS_q$n> zX!q`SQ61@C){j^#Kj*MZ4`e;hH22V@OiWYfvl8w-7CEOz{9o>;2QM(|`#BICe-7*a zA*KvE9v3nFhku99$OmYP7yL)~IFbJd#lPO6^j~Az$CSSR4NY$+hy8wZ=QpYzbRYOF z8Es`L4UbeSALG>OW4#y*N{P!XL?^)#o z{WK=seGlY0{w?(H4;)@`pO04gPm=R}{;LW9DK=N3KZr&ABe}>wm-0W+9V=bnV5(&v)6|2%n`&&SyPz3l8Weco>J zU!cuue4*&U^G#_3r?p{sD!^ zz$k0vZ8b{&O>Xjt|? zB4_(wQ|IHWzyp2WF7*$xF7kc0ivP(r$P1DEGe{8*zH41$5tM5w+Eo@q9S5Ps9-GZK zD*12H>u_)&iW&~CfliDglQxwyrL1i4Z>)>2nMc20APcXZMG3r&sQwEf^xBC7@B&B2 zJ97u3knS}|1`c`ypKi0uUgmxcJ_`Til>!#c={FY5<85R?0@G1*{rliU9}n*8Yyqkq zc=_OMWJk)$qQV87q;nSG!`q~0kE6$+`Q6{c8D3mImdm{ zRXrES@mv^mpHe9o;W#&n(zt(gnKrQXm*?kBf`{&(-2dw14RLll_i2~Cj&2X(8ztR6 zD*aa4yO*9kqmKD_MqK^g=2>-|4X=i*aNOtAQ7MiRyxee8y?;P6@f>rCc>BS5yt2N& zpW_Tiw)t+Yhj}G$HDuc%o2_JX-I9E_A&}~L`EETub@Hx&!dp;St`zFssrhbQ2<|8o zTIDtz1pDKTnpS~ugEfD@Nqv`&@*;60HwuBRkHh|RCh;F-;yU`F92~mOSb#&`dbr)2 z8s6z%$Z8z640?xfQOPdEf4QJ~TAp+CnXG{2s&WwH@Y|SsV^$yAh|5(YE@maFM(j|H zcr}i7Bd$~_|HR_}`mno79e>5+KldK@MPJJOBR`|65m`$a8`7WBk~cT5$gXx9mk=Clah0+>gvZc z8HYpBP{<3h_lJ7%Al7ZwG@$Mg#U;$6stf{eYvstdV9u?grRz}Nqnr{BRT_w6cdPgh z7)Iw|q%45pQqFOuY4{jpHOfZf=qHFPI}X5~XpOxO1`3cE#dEwZqj%!)Bgn^CS=rN& zcqk9Ip*8rJt7@Xw!9k5b~(FYdF%@j1MzabIGm&nc#>FB7r#TNA?3=Tvfs zr(4HASB|Uv{>vz5&?QtDsydvfzUb2vROOvWA9!6lf_K%m-V_{8P`RDR`h1rE%mu&_-Mz{>X zTd`$71mvRn%5DL?LEwMv_y$#9_6VRH9#4E6FzJu@_%qBGap8?q&QFkY*`s#st>Bf<$j1iqq4BDyj~K?40(oN%R+y$i(ZUG4yqM@?KKG$t#BJMaa@n z6ik&~WHx-{*`v;#VaE4RKCNeFM3Y@4jf9I10EV!HQUcuT}30VcsCwUhb!|mFz zTLruJyeDk)$pPliym@;14jpIm>u89dKoL#rxS8&=%;;mtPDVyUd2iELaLfJ&1CLq* zgWPnsFby=*z?1*GfxIcu`I2rTrKy&@lV}hNh2_1np^G3ZfXwKiqw}$Z!SMScXjR^e zCUVc1gTvLxx%f{Qr*0z;G2IX4g9;N>+IltJ<{f~b6M}6jgSx=l7p&d9K4=nNn?2Z@ zcU~N_YoPw5kQG73v-zt+HVLv{K<^tRs}FqQHt<~ciCb?Qd?qxWRi3D82&ecjtoWh) z?-;rXQ}~@hT`G))OilQiSjdLI?ywoXT0?vXG?;pFm}BKJ0Td9T`uz+CmO*?!?( z*em9>|CHY#Bj0m>0I|xnii6)Tbnkl7Ul6Wh@5HvrL)Jo{93@lpmXIn2I*Q6H2oCi8auO&;t8*J#l@MnftE6q5_`8& za;EV=NBX){?B7Pp3lhJt(q+%p(y33N9wO^luL~$tA4^DF;XzY1gH!aEo8?5VEKU10 zeJfX{E~l<)TM`oRy1wc@eE8Wed#;XTb?d5`wu62|RbuvA9nU(~@iX?Zp2M#8&v7%{ zp?$KVfj)yH4FfXVbfob5JApnEqQ^&PVQvZJJJIMQ#G_*vM0#9qMKR)VD=wXToO4=9eY%Lw#hU93~4~B#eY>R4f=YD=V(t!%CKQ57$~{LV4gYRP`W} zBGj7#kE$w*Ar^M9IZzdlgXGCNJ6fj9a5KY|1Akbh%5qGv0S`4j#AFJ4Jd7J7<}g?>!)melxFxK+Ex5-7*jaGG*f9WRI@dj?Kg4R$Qfv+*DDp3&yz1i>|{uNq7xR4*| zP9D@-FNgU$qPKeJ+_A<8ip#^ID6-ECvw@0@pNxSABYSPm%BoPs9>oiXlB3}+)69#` zSM@(S+UWX4 z*db!T;-e%CwreQ^?RBzHknr9v(=gbhZ~=ptum=yTgKVfUT2B|4Ev(0~ZFHQ}=zyC~ck93HPk^$aFq z58xL?Jp_7_>2!J5x{*UimFIT_6eN1Am!;qGGSBKB>3*I~+gpr!SXUce_%n7sYi2fz zrepVk;7ZSR z7BJu!z^kgR_u+HS%}4?=L_h{}6F>qIxCsQJf+T^2piE{!uxPlMqag`Nn3PFWMC$-f zwXGHuYHjOOhn6}bT8kE1tF}^$7O4Y{rMA`qmH+#$v-iC#gRRf+`}O;t@Arl&e%6PHbm2Hh` zSEjWq+ZxrbOlw!RmD=Ts5@ozh5m?HLRkUntRM9f6Xj!DHspz*v(Q;lY;b~&|R-#%z zf){H+xw4>KTTrenDAyL0D+|iC1?6IauXedsyIiSVuGKE@pf>N(IV@APH&~XyyuJ&M z-oVQ-f#Kg_pYx86_!>osfE?dDB2f1DZ(r>2U=DkY9<*BR<@P3vC9KX-Xx{xyt$!iUL`$^G1!p}1Z6y9b_TP|gqGi6s($818J(eW34zN15%y zg~a(A^0R`4bID_OY*HBfxvmW1CazC2t%Lar8oRwm1vEVj`U{EXm`@LlA%8t!PM%c zXZflzhNZ<)#vDQ0zT-n)XimUcHa}8IEbf)m#z{D7E5UX@FmfxwPvKz$FAoTP?Z~YJ zJB41p3m4zw@)rSVwd*Y4g%+bYY3HXt*Y&pUBklUC zwh9$XO!Hag%Oh2OA!2M|%ZW_Iv1n@GJro45;Z}|>zKW3{gsHgI$qM0>hlZqm6YTW^BexR#&JWDkO29oyX$b^<{6O(m zf+2oj=2ikK0=6@@64*9iwa{&V`;jzI6&`mEJCPWqB*pa^f}WImWL3@C8B{pzBpAo> zf{trsIxes1IL%wf0i4Cb65?QJovmZGUB+2w3*6e)Ii7sqBwxOP%9HPlx$eN~)rm=QhV?*V*x~i&iT_Pro%^jOPuA!-_aanau*K}R@ z4d=MFRc+s#+o@_@)zaRKAD}h1WmWLUAXQYgxviq5xwU<4Jp*m+)i{z0jB03K)l$<2 zh=Kzd$0>nPFO>~-z!eQkS{gx!b&ObzE0#30Re=D3%*#jkR4Puw0z(E$$0uU6lnM_# z6L14A-YDV*)+KuQ8;f6yxq;R4cO6bXxq&3X%jItm;aMhsU5RxCCrT_&O1Xjf#030Z zCo*G&(kwVdIAbI>Cb6I75{thvLidb>K0=`!H?bG~o|8z**hF%A!nsyB$@_*xOa&Io2P#0e!{D9c5Ko{5xTjYvUB zdpItPQ3d+N1p;EOuV9kok|_KaiX30sg(A&Y|3Z-&*MW!mo-Oo2^7s72zMu>c$$cmX zMW>8A#YL{HK3B{SFingX_!al(+(3;H|D_UPN_76W$rtTc z`dU>HeiQP0tDBgN)a#`1{fhP}0YhQ0w3x$&-y6=6*jIcN{c*;&JdSm~`F`E3mOAh) z_UV4n**a#eytP*P;!sh(AaNM_A|BMaF25OF(NJB{)^K5svn0H-qNOq1&{To%RM)lF zJM~M#RTayf%7%)n_LYu&{JAAubpa0U6qi<%7M9E}EU7rNaAC!QX~i=fe5M)`L5yTwT#zTib@D7|89Xs@ov5t*xOMAI0Vusr?^2RMgirHa0s;XErT& zN{jQeDyEe!a4x7>Rk5rsTvt=kf}>J3IH%v;cdhYsy|$*+sq;ltR5#-!e%rFj^J}Ww zE5eQK6;0tKQ31=E+8XNcLy90z{WtOG!Sb3`QHCD@udb1)&-uEKfOnSK&{k2^+R)xm z6>fCuYr@q|O_ML6wWhXB#8CB#-2+S=Ue%xr3}XAz+MY~hgyriYgS&$PtMc9_1gvV!tK1-TaMR7x2y;B)(YpANIYHq?L4^7%56^o`N z8K7~^ELtedrQ^5G$uMhX;heIH;=)<8<|4Oc(jID-gxg>$?62ZM3btlnk(zd_SFn<3 zuXSdly|EP)h}IxwO{BizCi&F5F48uqu^GR@kv|=pif(unXfh48tDM%hF#8O_QUOQH?fVXF(bFKb29Y-=2+7FPIKPhCx`C<>+vYoHiT8cJcX z3ocpam>$H6cPa{+n;RXZ3F9;I4NVQGCiGUxN2;X4w%lq*noV_+NGn`WR#7^0Mn(Rt z8Ej@!wn=0f>_u;DchUGOCjSXng zXke`@5K~u?af1Dy!wH9nxuy99vkIk=%qxRVY*_P3=9bN!Hg^^~e|FA9iIn#4TUk@> zRIFsnq6`_JYL_)}lxhjL*Q0?=i?k@yDA9!@wZN8`i*lv1xYRYbS5&TQuW56n9NO3y zo2qIe1u#2*K}AtX{*2jdY^5{LDeT&6tMcs_W{NS|YLJ(+0%JmrvjW|?d4&`PEi5TK ztLuP=W@~cq(lZ*=*b=U;t}tV8!*YMvmeMc{5mka42#lz0e%ry&i7GHdwRD$?>2v24 zlIVw^OL<{wnZF{hU{N|1{&HQ~pc$=OA-IF zdBvCwO6L_$^J|5JAjV=drn70HxrG}WE2_ioVPb!1i&Q1%4AwSl)#N{8PI+)zQ0{Xa zOi}D#Ep?{JveumHhB^+N>>JJ14(nEWbA5B0Kh$H`t*JH@Tov}mTgq>4X_pdWzi8uV zXa^2Xf{@nK+`1%;HjKm+%%;!GYg=nf(-5edJuPNS!g**l-G5n2dDH#L7=GwTRpM}=`} zoLMw;T7DVEWRwp|U#3nhGP;Z#T}MQk)?C$&3DIJ; zDJeGPww4PTD*Wzhnu4^%$P%))HC(rZQ=d>~`E&j(jDNNdVk&BHZpT824QWYBhb3Bd zQyW)lZKiYkGR(AMCVCVrW=cQCHa=TT?7pqx>V}n0!OZB)p%<3^s*sh|Wfg_B8QL?a z0%$pAaKc=3BYdZX9cWy~d3M2D`ZK_mz6W>^JkuV6rz1bHEjK=Epd+0) z4W8-wwh*gxe_&hw+()PFlzA>NpXd_vWn^sQ#M~{XqfBD#S_z%oq;#Yc=i^F#ZX?r? zPCNxy(z&C|c1g^=aXRu4+jg}P*y?!&a3e%i%{53>manO;A^PL&Wxh&`y z*=74-tju3yE8E%(XFC?h|3;UN(cLN{EZu4$Ff#xf-o^m)22 zo4Sut3Bqkn*qN8bv!co>%%AG~VydpGTvmr=5aw1>96p72?9Nyphbt?&GoTaTHn~GM zjHL}0-5qG%kQ(uZ3M-Wh$+4Jkxg>DL`p+fC`q@hHpijCf6XC*iG3@ z==ek^NMIbE9f;#}WHAZ%o$WY_aSg#UJ>xjM6_~J<$47!3O0BapID}cuxZVr=VW0BQ z^CI%Bi$7hekw2kiT_Tk>Cx4>H7KM}CgKB6Kro>iFiAvia)3s=hP1#jj39aziTi*eL01rQaH_rAiUAAr0@ zTq&$`3QVaN~zjapL>P~!@ zf{)8K>nz`Oo%r}JOB+XCi|;agHa)-bvd0D#-;cm&(=d8hWwd|Tv4ZW3?>5E%h~qcu zUmFk!M&kHOAuVr0wf_Skmh(_}#!=pLo#Yh+9cP>EEQq&x$#3Hjw(ig{|JSEBZ29(g z%J=YcEPYY2%r^*c^ZfvPHVtK*4~AR<<80hv0By%z-;TEDbnsevE*hRqLlL(_-by2j z7aPalk!pDZuR?nPjrt9TxAIat$s2@q(zSLFR`U2eR4p%fHO7M;zPyu^yr7ZCeCU2W z2}|=NAM-Euqd&P5--`wQQi?oumTv<1(3B$XWAJrXenm!}Wz3xBI6)i0mGbEF!Kdx0 z{*G@0_2tskmWzBRk_n8P4S6@KgjODZ>ZHid4Uk7Z%HxvR%HxtyH8HJ}Wl|Pi^J?&^{3D7~~FehsV15;j(^SYqk{aexTj9wGYGa zj7&cxRF8%_-PSS4n@siWkR+I4w_Cg1&oRE^lS+T1yxXl-Zv2|(IR3-juA9IeA9{6u zBGbqbnWj67Oip&jxtyHfgx_G{=L7~P{C40**rg(H!fzIh!fzIu!q0sYIMI2W zk40x-rW2jBe7fkI?c*RW?sy*$CpL5zfyHAK4iOt$CMY`B2$p{`F(cvf;N2V|tY6^W zi30t1jZgCNEYc1CJcY{?UZC(IVrB@p7~VaFh_4<4HbZVb@u{Tx>pGVO2G;`bo+c2- zx`C-I+)8+B*G%9P$l(~cj`&3Ufx8}_^!IT6g~11LebZplS#9KJnG+|OHbxbhb~dim zpSTiN&ZoqOacw3>TB=H%WZKed(!ujEuA7L#!#XEU%D^AEYv9Sl@&5FK6I>e>VVT{&)|0 zKxY{eCzO%Pn=}>FIOexVO>u#xDeMF z#6dq_;v_Z@IF@5dnn34FVkj1A8^GM+e8kX+pE8)+rhhT`BV7Nc==^m6iV0f68Thx~RJ4NTAZ7ZL@ zcd>UHhv6v$53%LhZRiU? zC${thhQ0`N;v^Ot9DmAYW&XqPEC!u8$;`_MC@<<+4LWfW<_Nk$hF))Ql9{hhGW15! ziTN#HI{to;a#{>dI!(y(dpFYC5iB4-D-Mp|c_V$L!M1JiEi%;EKE|`(h=>87#mv%T zutsoig;NwBsPGVlg9;B)z4rQYXoz7L3$jn)SoyJS2ks0%0As-OuMr7V_wutbTfI0 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