diff --git a/hardware/esp8266com/esp8266/cores/esp8266/Arduino.h b/hardware/esp8266com/esp8266/cores/esp8266/Arduino.h index 1057240dbf..f75f9ebf14 100644 --- a/hardware/esp8266com/esp8266/cores/esp8266/Arduino.h +++ b/hardware/esp8266com/esp8266/cores/esp8266/Arduino.h @@ -33,11 +33,10 @@ extern "C" { #include #include +#include "stdlib_noniso.h" #include "binary.h" #include "pgmspace.h" - - void yield(void); #define HIGH 0x1 diff --git a/hardware/esp8266com/esp8266/cores/esp8266/HardwareSerial.cpp b/hardware/esp8266com/esp8266/cores/esp8266/HardwareSerial.cpp index 27cc35e964..907e297330 100644 --- a/hardware/esp8266com/esp8266/cores/esp8266/HardwareSerial.cpp +++ b/hardware/esp8266com/esp8266/cores/esp8266/HardwareSerial.cpp @@ -101,7 +101,7 @@ UARTnr_t uart_get_debug(); // #################################################################################################### // #################################################################################################### -void ICACHE_FLASH_ATTR uart_interrupt_handler(uart_t* uart) { +void uart_interrupt_handler(uart_t* uart) { // -------------- UART 0 -------------- uint32_t status = READ_PERI_REG(UART_INT_ST(0)); diff --git a/hardware/tools/esp8266/sdk/changelog.txt b/hardware/tools/esp8266/sdk/changelog.txt index e9453c59d2..12e9aa55ef 100644 --- a/hardware/tools/esp8266/sdk/changelog.txt +++ b/hardware/tools/esp8266/sdk/changelog.txt @@ -1,3 +1,63 @@ +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 ------------------------------------------- diff --git a/hardware/tools/esp8266/sdk/include/espconn.h b/hardware/tools/esp8266/sdk/include/espconn.h index b111244008..0107349213 100644 --- a/hardware/tools/esp8266/sdk/include/espconn.h +++ b/hardware/tools/esp8266/sdk/include/espconn.h @@ -111,6 +111,23 @@ enum { ESPCONN_MAX }; +struct espconn_packet{ + uint16 sent_length; /* sent length successful*/ + uint16 snd_buf_size; /* Available buffer size for sending */ + uint16 snd_queuelen; /* Available buffer space for sending */ + uint16 total_queuelen; /* total Available buffer space for sending */ + uint32 packseqno; /* seqno to be sent */ + uint32 packseq_nxt; /* seqno expected */ + uint32 packnum; +}; + +struct mdns_info { + char *host_name; + char *server_name; + uint16 server_port; + unsigned long ipAddr; + char *txt_data; +}; /****************************************************************************** * FunctionName : espconn_connect * Description : The function given as the connect @@ -213,6 +230,16 @@ sint8 espconn_regist_time(struct espconn *espconn, uint32 interval, uint8 type_f sint8 espconn_get_connection_info(struct espconn *pespconn, remot_info **pcon_info, uint8 typeflags); +/****************************************************************************** + * FunctionName : espconn_get_packet_info + * Description : get the packet info with host + * Parameters : espconn -- the espconn used to disconnect the connection + * infoarg -- the packet info + * Returns : the errur code +*******************************************************************************/ + +sint8 espconn_get_packet_info(struct espconn *espconn, struct espconn_packet* infoarg); + /****************************************************************************** * FunctionName : espconn_regist_sentcb * Description : Used to specify the function that should be called when data @@ -471,5 +498,85 @@ sint8 espconn_recv_hold(struct espconn *pespconn); *******************************************************************************/ sint8 espconn_recv_unhold(struct espconn *pespconn); +/****************************************************************************** + * FunctionName : espconn_mdns_init + * Description : register a device with mdns + * Parameters : ipAddr -- the ip address of device + * hostname -- the hostname of device + * Returns : none +*******************************************************************************/ + +void espconn_mdns_init(struct mdns_info *info); +/****************************************************************************** + * FunctionName : espconn_mdns_close + * Description : close a device with mdns + * Parameters : a + * Returns : none +*******************************************************************************/ + +void espconn_mdns_close(void); +/****************************************************************************** + * FunctionName : espconn_mdns_server_register + * Description : register a device with mdns + * Parameters : a + * Returns : none +*******************************************************************************/ +void espconn_mdns_server_register(void); + +/****************************************************************************** + * FunctionName : espconn_mdns_server_unregister + * Description : unregister a device with mdns + * Parameters : a + * Returns : none +*******************************************************************************/ +void espconn_mdns_server_unregister(void); + +/****************************************************************************** + * FunctionName : espconn_mdns_get_servername + * Description : get server name of device with mdns + * Parameters : a + * Returns : none +*******************************************************************************/ + +char* espconn_mdns_get_servername(void); +/****************************************************************************** + * FunctionName : espconn_mdns_set_servername + * Description : set server name of device with mdns + * Parameters : a + * Returns : none +*******************************************************************************/ +void espconn_mdns_set_servername(const char *name); + +/****************************************************************************** + * FunctionName : espconn_mdns_set_hostname + * Description : set host name of device with mdns + * Parameters : a + * Returns : none +*******************************************************************************/ +void espconn_mdns_set_hostname(char *name); + +/****************************************************************************** + * FunctionName : espconn_mdns_get_hostname + * Description : get host name of device with mdns + * Parameters : a + * Returns : none +*******************************************************************************/ +char* espconn_mdns_get_hostname(void); + +/****************************************************************************** + * FunctionName : espconn_mdns_disable + * Description : disable a device with mdns + * Parameters : a + * Returns : none +*******************************************************************************/ +void espconn_mdns_disable(void); + +/****************************************************************************** + * FunctionName : espconn_mdns_enable + * Description : disable a device with mdns + * Parameters : a + * Returns : none +*******************************************************************************/ +void espconn_mdns_enable(void); #endif diff --git a/hardware/tools/esp8266/sdk/include/user_interface.h b/hardware/tools/esp8266/sdk/include/user_interface.h index 1096832cc7..1fa01edd99 100644 --- a/hardware/tools/esp8266/sdk/include/user_interface.h +++ b/hardware/tools/esp8266/sdk/include/user_interface.h @@ -181,6 +181,8 @@ bool wifi_station_scan(struct scan_config *config, scan_done_cb_t cb); uint8 wifi_station_get_auto_connect(void); bool wifi_station_set_auto_connect(uint8 set); +bool wifi_station_set_reconnect_policy(bool set); + enum { STATION_IDLE = 0, STATION_CONNECTING, @@ -229,8 +231,14 @@ struct station_info { }; struct dhcps_lease { - uint32 start_ip; - uint32 end_ip; + struct ip_addr start_ip; + struct ip_addr end_ip; +}; + +enum dhcps_offer_option{ + OFFER_START = 0x00, + OFFER_ROUTER = 0x01, + OFFER_END }; struct station_info * wifi_softap_get_station_info(void); @@ -241,6 +249,7 @@ bool wifi_softap_dhcps_start(void); bool wifi_softap_dhcps_stop(void); bool wifi_softap_set_dhcps_lease(struct dhcps_lease *please); enum dhcp_status wifi_softap_dhcps_status(void); +bool wifi_softap_dhcps_set_offer_option(uint8 level, void* optarg); #define STATION_IF 0x00 #define SOFTAP_IF 0x01 @@ -286,4 +295,96 @@ enum sleep_type { bool wifi_set_sleep_type(enum sleep_type type); enum sleep_type wifi_get_sleep_type(void); +enum { + EVENT_STAMODE_CONNECTED = 0, + EVENT_STAMODE_DISCONNECTED, + EVENT_STAMODE_AUTHMODE_CHANGE, + EVENT_STAMODE_GOT_IP, + EVENT_SOFTAPMODE_STACONNECTED, + EVENT_SOFTAPMODE_STADISCONNECTED, + EVENT_MAX +}; + +enum { + REASON_UNSPECIFIED = 1, + REASON_AUTH_EXPIRE = 2, + REASON_AUTH_LEAVE = 3, + REASON_ASSOC_EXPIRE = 4, + REASON_ASSOC_TOOMANY = 5, + REASON_NOT_AUTHED = 6, + REASON_NOT_ASSOCED = 7, + REASON_ASSOC_LEAVE = 8, + REASON_ASSOC_NOT_AUTHED = 9, + REASON_DISASSOC_PWRCAP_BAD = 10, /* 11h */ + REASON_DISASSOC_SUPCHAN_BAD = 11, /* 11h */ + REASON_IE_INVALID = 13, /* 11i */ + REASON_MIC_FAILURE = 14, /* 11i */ + REASON_4WAY_HANDSHAKE_TIMEOUT = 15, /* 11i */ + REASON_GROUP_KEY_UPDATE_TIMEOUT = 16, /* 11i */ + REASON_IE_IN_4WAY_DIFFERS = 17, /* 11i */ + REASON_GROUP_CIPHER_INVALID = 18, /* 11i */ + REASON_PAIRWISE_CIPHER_INVALID = 19, /* 11i */ + REASON_AKMP_INVALID = 20, /* 11i */ + REASON_UNSUPP_RSN_IE_VERSION = 21, /* 11i */ + REASON_INVALID_RSN_IE_CAP = 22, /* 11i */ + REASON_802_1X_AUTH_FAILED = 23, /* 11i */ + REASON_CIPHER_SUITE_REJECTED = 24, /* 11i */ + + REASON_BEACON_TIMEOUT = 200, + REASON_NO_AP_FOUND = 201, +}; + +typedef struct { + uint8 ssid[32]; + uint8 ssid_len; + uint8 bssid[6]; + uint8 channel; +} Event_StaMode_Connected_t; + +typedef struct { + uint8 ssid[32]; + uint8 ssid_len; + uint8 bssid[6]; + uint8 reason; +} Event_StaMode_Disconnected_t; + +typedef struct { + uint8 old_mode; + uint8 new_mode; +} Event_StaMode_AuthMode_Change_t; + +typedef struct { + struct ip_addr ip; + struct ip_addr mask; + struct ip_addr gw; +} Event_StaMode_Got_IP_t; + +typedef struct { + uint8 mac[6]; + uint8 aid; +} Event_SoftAPMode_StaConnected_t; + +typedef struct { + uint8 mac[6]; + uint8 aid; +} Event_SoftAPMode_StaDisconnected_t; + +typedef union { + Event_StaMode_Connected_t connected; + Event_StaMode_Disconnected_t disconnected; + Event_StaMode_AuthMode_Change_t auth_change; + Event_StaMode_Got_IP_t got_ip; + Event_SoftAPMode_StaConnected_t sta_connected; + Event_SoftAPMode_StaDisconnected_t sta_disconnected; +} Event_Info_u; + +typedef struct _esp_event { + uint32 event; + Event_Info_u event_info; +} System_Event_t; + +typedef void (* wifi_event_handler_cb_t)(System_Event_t *event); + +void wifi_set_event_handler_cb(wifi_event_handler_cb_t cb); + #endif diff --git a/hardware/tools/esp8266/sdk/ld/eagle.app.v6.ld b/hardware/tools/esp8266/sdk/ld/eagle.app.v6.ld index f5096aa169..e290c93a20 100644 --- a/hardware/tools/esp8266/sdk/ld/eagle.app.v6.ld +++ b/hardware/tools/esp8266/sdk/ld/eagle.app.v6.ld @@ -2,10 +2,10 @@ /* Linker Script for ld -N */ MEMORY { - dport0_0_seg : org = 0x3FF00000, len = 0x10 - dram0_0_seg : org = 0x3FFE8000, len = 0x14000 - iram1_0_seg : org = 0x40100000, len = 0x8000 - irom0_0_seg : org = 0x40240000, len = 0x32000 + dport0_0_seg : org = 0x3FF00000, len = 0x10 + dram0_0_seg : org = 0x3FFE8000, len = 0x14000 + iram1_0_seg : org = 0x40100000, len = 0x8000 + irom0_0_seg : org = 0x40240000, len = 0x3C000 } PHDRS diff --git a/hardware/tools/esp8266/sdk/lib/liblwip.a b/hardware/tools/esp8266/sdk/lib/liblwip.a index 1cfca2841e..d3c356dcea 100644 Binary files a/hardware/tools/esp8266/sdk/lib/liblwip.a and b/hardware/tools/esp8266/sdk/lib/liblwip.a differ diff --git a/hardware/tools/esp8266/sdk/lib/libmain.a b/hardware/tools/esp8266/sdk/lib/libmain.a index 2b889d385c..265466dc11 100644 Binary files a/hardware/tools/esp8266/sdk/lib/libmain.a and b/hardware/tools/esp8266/sdk/lib/libmain.a differ diff --git a/hardware/tools/esp8266/sdk/lib/libnet80211.a b/hardware/tools/esp8266/sdk/lib/libnet80211.a index 84faea50a7..1e908b85c4 100644 Binary files a/hardware/tools/esp8266/sdk/lib/libnet80211.a and b/hardware/tools/esp8266/sdk/lib/libnet80211.a differ diff --git a/hardware/tools/esp8266/sdk/lib/libphy.a b/hardware/tools/esp8266/sdk/lib/libphy.a index 5702e4ef9a..cb026f941c 100644 Binary files a/hardware/tools/esp8266/sdk/lib/libphy.a and b/hardware/tools/esp8266/sdk/lib/libphy.a differ diff --git a/hardware/tools/esp8266/sdk/lib/libpp.a b/hardware/tools/esp8266/sdk/lib/libpp.a index d7168ddde8..d28457b1e7 100644 Binary files a/hardware/tools/esp8266/sdk/lib/libpp.a and b/hardware/tools/esp8266/sdk/lib/libpp.a differ diff --git a/hardware/tools/esp8266/sdk/lib/libsmartconfig.a b/hardware/tools/esp8266/sdk/lib/libsmartconfig.a index a73493874b..39bfe39d2f 100644 Binary files a/hardware/tools/esp8266/sdk/lib/libsmartconfig.a and b/hardware/tools/esp8266/sdk/lib/libsmartconfig.a differ diff --git a/hardware/tools/esp8266/sdk/lib/libssl.a b/hardware/tools/esp8266/sdk/lib/libssl.a index d4660259ce..6c54acc2d6 100644 Binary files a/hardware/tools/esp8266/sdk/lib/libssl.a and b/hardware/tools/esp8266/sdk/lib/libssl.a differ diff --git a/hardware/tools/esp8266/sdk/lib/libwpa.a b/hardware/tools/esp8266/sdk/lib/libwpa.a index 7ae2590109..c3d04200d9 100644 Binary files a/hardware/tools/esp8266/sdk/lib/libwpa.a and b/hardware/tools/esp8266/sdk/lib/libwpa.a differ diff --git a/hardware/tools/esp8266/sdk/version b/hardware/tools/esp8266/sdk/version index 108c1c6484..5fc0980134 100644 --- a/hardware/tools/esp8266/sdk/version +++ b/hardware/tools/esp8266/sdk/version @@ -1 +1 @@ -1.0.1_b2_15_04_10 \ No newline at end of file +1.0.1_15_04_24 \ No newline at end of file