21 #if DEVICE_SERIAL && DEVICE_INTERRUPTIN && defined(MBED_CONF_EVENTS_PRESENT) && defined(MBED_CONF_NSAPI_PRESENT) && defined(MBED_CONF_RTOS_API_PRESENT)    25 #include "drivers/BufferedSerial.h"    26 #include "netsocket/nsapi_types.h"    27 #include "netsocket/WiFiAccessPoint.h"    29 #include "platform/ATCmdParser.h"    30 #include "platform/Callback.h"    31 #include "platform/mbed_chrono.h"    32 #include "platform/mbed_error.h"    33 #include "rtos/Mutex.h"    34 #include "rtos/ThisThread.h"    40 #ifndef ESP8266_CONNECT_TIMEOUT    41 #define ESP8266_CONNECT_TIMEOUT 15s    43 #ifndef ESP8266_SEND_TIMEOUT    44 #define ESP8266_SEND_TIMEOUT    2s    46 #ifndef ESP8266_RECV_TIMEOUT    47 #define ESP8266_RECV_TIMEOUT    std::chrono::seconds(2)    49 #ifndef ESP8266_MISC_TIMEOUT    50 #define ESP8266_MISC_TIMEOUT    std::chrono::seconds(2)    52 #ifndef ESP8266_DNS_TIMEOUT    53 #define ESP8266_DNS_TIMEOUT     15s    56 #define ESP8266_SCAN_TIME_MIN 0ms    57 #define ESP8266_SCAN_TIME_MAX 1500ms    58 #define ESP8266_SCAN_TIME_MIN_DEFAULT 120ms    59 #define ESP8266_SCAN_TIME_MAX_DEFAULT 360ms    62 #define ESP8266_SDK_VERSION 2000000    63 #define ESP8266_SDK_VERSION_MAJOR ESP8266_SDK_VERSION/1000000    65 #define ESP8266_AT_VERSION 1000000    66 #define ESP8266_AT_VERSION_MAJOR ESP8266_AT_VERSION/1000000    67 #define ESP8266_AT_VERSION_TCP_PASSIVE_MODE 1070000    68 #define ESP8266_AT_VERSION_WIFI_SCAN_CHANGE 1060000    70 #define FW_AT_LEAST_VERSION(MAJOR,MINOR,PATCH,NUSED,REF) \    71     (((MAJOR)*1000000+(MINOR)*10000+(PATCH)*100) >= REF ? true : false)    73 struct esp8266_socket {
    75     nsapi_protocol_t proto;
    87     ESP8266(PinName tx, PinName rx, 
bool debug = 
false, PinName rts = NC, PinName cts = NC);
    96     struct fw_sdk_version {
   100         fw_sdk_version(
int major, 
int minor, 
int patch) : major(major), minor(minor), patch(patch) {}
   110     struct fw_at_version {
   114         fw_at_version(
int major, 
int minor, 
int patch) : major(major), minor(minor), patch(patch) {}
   122     bool at_available(
void);
   136     struct fw_sdk_version sdk_version(void);
   143     struct fw_at_version at_version(void);
   151     bool startup(
int mode);
   167     bool dhcp(
bool enabled, 
int mode);
   176     nsapi_error_t connect(
const char *ap, 
const char *passPhrase);
   183     bool disconnect(
void);
   191     bool ip_info_print(
int enable);
   198     const char *ip_addr(
void);
   209     bool set_ip_addr(
const char *ip, 
const char *gateway, 
const char *netmask);
   216     const char *mac_addr(
void);
   223     const char *gateway();
   230     const char *netmask();
   255              std::chrono::duration<unsigned, std::milli> t_max,
   256              std::chrono::duration<unsigned, std::milli> t_min);
   264     bool dns_lookup(
const char *name, 
char *ip);
   278     nsapi_error_t open_udp(
int id, 
const char *addr, 
int port, 
int local_port = 0, 
int udp_mode = 0);
   291     nsapi_error_t open_tcp(
int id, 
const char *addr, 
int port, 
int keepalive = 0);
   311     int32_t recv_udp(
struct esp8266_socket *socket, 
void *data, uint32_t amount, mbed::chrono::milliseconds_u32 timeout = ESP8266_RECV_TIMEOUT);
   321     int32_t recv_tcp(
int id, 
void *data, uint32_t amount, mbed::chrono::milliseconds_u32 timeout = ESP8266_RECV_TIMEOUT);
   336     void set_timeout(mbed::chrono::milliseconds_u32 timeout = ESP8266_MISC_TIMEOUT);
   361     template <
typename T, 
typename M>
   362     void sigio(T *obj, M method)
   385     bool set_sntp_config(
bool enable, 
int timezone = 0, 
const char *server0 = 
nullptr,
   386                          const char *server1 = 
nullptr, 
const char *server2 = 
nullptr);
   399     bool get_sntp_config(
bool *enable, 
int *timezone, 
char *server0,
   400                          char *server1, 
char *server2);
   413     bool get_sntp_time(std::tm *t);
   415     template <
typename T, 
typename M>
   416     void attach(T *obj, M method)
   426     int8_t default_wifi_mode();
   431     bool set_default_wifi_mode(
const int8_t mode);
   440     bool set_country_code_policy(
bool track_ap, 
const char *country_code, 
int channel_start, 
int channels);
   446     nsapi_connection_status_t connection_status() 
const;
   453     bool start_uart_hw_flow_ctrl();
   460     bool stop_uart_hw_flow_ctrl();
   465     bool cond_enable_tcp_passive_mode();
   473     void bg_process_oob(std::chrono::duration<uint32_t, std::milli> timeout, 
bool all);
   484     static const int8_t WIFIMODE_STATION = 1;
   485     static const int8_t WIFIMODE_SOFTAP = 2;
   486     static const int8_t WIFIMODE_STATION_SOFTAP = 3;
   487     static const int8_t SOCKET_COUNT = 5;
   495     int uart_enable_input(
bool lock);
   499     struct fw_sdk_version _sdk_v;
   500     struct fw_at_version _at_v;
   504     int32_t _recv_tcp_passive(
int id, 
void *data, uint32_t amount, std::chrono::duration<uint32_t, std::milli> timeout);
   528     } *_packets, * *_packets_end;
   529     void _clear_socket_packets(
int id);
   530     void _clear_socket_sending(
int id);
   537     void _process_oob(std::chrono::duration<uint32_t, std::milli> timeout, 
bool all);
   540     void _oob_packet_hdlr();
   541     void _oob_connect_err();
   542     void _oob_conn_already();
   544     void _oob_socket0_closed();
   545     void _oob_socket1_closed();
   546     void _oob_socket2_closed();
   547     void _oob_socket3_closed();
   548     void _oob_socket4_closed();
   549     void _oob_connection_status();
   550     void _oob_socket_close_err();
   551     void _oob_watchdog_reset();
   553     void _oob_tcp_data_hdlr();
   555     void _oob_scan_results();
   556     void _oob_send_ok_received();
   557     void _oob_send_fail_received();
   568     int _sock_sending_id;
   572     char _gateway_buffer[16];
   573     char _netmask_buffer[16];
   574     char _mac_buffer[18];
   579         nsapi_protocol_t proto;
   581         int32_t tcp_data_avbl; 
   582         int32_t tcp_data_rcvd;
   585     struct _sock_info _sock_i[SOCKET_COUNT];
   588     struct _scan_results {
   593     struct _scan_results _scan_r;
   596     nsapi_connection_status_t _conn_status;
 
signed int nsapi_error_t
Type used to represent error codes. 
signed int nsapi_size_or_error_t
Type used to represent either a size or error passed through sockets. 
The Mutex class is used to synchronize the execution of threads. 
Class providing buffered UART communication functionality using separate circular buffer for send and...
Parser class for parsing AT commands. 
Callback class based on template specialization.