OneNet_IoT_demo for ASC platform
Dependencies: Common_lib ESP8266 EdpKit_lib cJSON_lib driver_mbed_HP20x driver_mbed_TH02 wifi_example
Fork of mbed-os-example-esp8266 by
Diff: esp8266-driver/ESP8266Interface.h
- Revision:
- 2:1dbc3aa8ae3a
- Parent:
- 1:b4a718e62e0b
diff -r b4a718e62e0b -r 1dbc3aa8ae3a esp8266-driver/ESP8266Interface.h --- a/esp8266-driver/ESP8266Interface.h Thu Jan 12 22:05:15 2017 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,275 +0,0 @@ -/* ESP8266 implementation of NetworkInterfaceAPI - * Copyright (c) 2015 ARM Limited - * - * 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. - */ - -#ifndef ESP8266_INTERFACE_H -#define ESP8266_INTERFACE_H - -#include "mbed.h" -#include "ESP8266.h" - - -#define ESP8266_SOCKET_COUNT 5 - -/** ESP8266Interface class - * Implementation of the NetworkStack for the ESP8266 - */ -class ESP8266Interface : public NetworkStack, public WiFiInterface -{ -public: - /** ESP8266Interface lifetime - * @param tx TX pin - * @param rx RX pin - * @param debug Enable debugging - */ - ESP8266Interface(PinName tx, PinName rx, bool debug = false); - - /** Start the interface - * - * Attempts to connect to a WiFi network. Requires ssid and passphrase to be set. - * If passphrase is invalid, NSAPI_ERROR_AUTH_ERROR is returned. - * - * @return 0 on success, negative error code on failure - */ - virtual int connect(); - - /** Start the interface - * - * Attempts to connect to a WiFi network. - * - * @param ssid Name of the network to connect to - * @param pass Security passphrase to connect to the network - * @param security Type of encryption for connection (Default: NSAPI_SECURITY_NONE) - * @param channel This parameter is not supported, setting it to anything else than 0 will result in NSAPI_ERROR_UNSUPPORTED - * @return 0 on success, or error code on failure - */ - virtual int connect(const char *ssid, const char *pass, nsapi_security_t security = NSAPI_SECURITY_NONE, - uint8_t channel = 0); - - /** Set the WiFi network credentials - * - * @param ssid Name of the network to connect to - * @param pass Security passphrase to connect to the network - * @param security Type of encryption for connection - * (defaults to NSAPI_SECURITY_NONE) - * @return 0 on success, or error code on failure - */ - virtual int set_credentials(const char *ssid, const char *pass, nsapi_security_t security = NSAPI_SECURITY_NONE); - - /** Set the WiFi network channel - NOT SUPPORTED - * - * This function is not supported and will return NSAPI_ERROR_UNSUPPORTED - * - * @param channel Channel on which the connection is to be made, or 0 for any (Default: 0) - * @return Not supported, returns NSAPI_ERROR_UNSUPPORTED - */ - virtual int set_channel(uint8_t channel); - - /** Stop the interface - * @return 0 on success, negative on failure - */ - virtual int disconnect(); - - /** Get the internally stored IP address - * @return IP address of the interface or null if not yet connected - */ - virtual const char *get_ip_address(); - - /** Get the internally stored MAC address - * @return MAC address of the interface - */ - virtual const char *get_mac_address(); - - /** Get the local gateway - * - * @return Null-terminated representation of the local gateway - * or null if no network mask has been recieved - */ - virtual const char *get_gateway(); - - /** Get the local network mask - * - * @return Null-terminated representation of the local network mask - * or null if no network mask has been recieved - */ - virtual const char *get_netmask(); - - /** Gets the current radio signal strength for active connection - * - * @return Connection strength in dBm (negative value) - */ - virtual int8_t get_rssi(); - - /** Scan for available networks - * - * This function will block. - * - * @param ap Pointer to allocated array to store discovered AP - * @param count Size of allocated @a res array, or 0 to only count available AP - * @param timeout Timeout in milliseconds; 0 for no timeout (Default: 0) - * @return Number of entries in @a, or if @a count was 0 number of available networks, negative on error - * see @a nsapi_error - */ - virtual int scan(WiFiAccessPoint *res, unsigned count); - - /** Translates a hostname to an IP address with specific version - * - * The hostname may be either a domain name or an IP address. If the - * hostname is an IP address, no network transactions will be performed. - * - * If no stack-specific DNS resolution is provided, the hostname - * will be resolve using a UDP socket on the stack. - * - * @param address Destination for the host SocketAddress - * @param host Hostname to resolve - * @param version IP version of address to resolve, NSAPI_UNSPEC indicates - * version is chosen by the stack (defaults to NSAPI_UNSPEC) - * @return 0 on success, negative error code on failure - */ - using NetworkInterface::gethostbyname; - - /** Add a domain name server to list of servers to query - * - * @param addr Destination for the host address - * @return 0 on success, negative error code on failure - */ - using NetworkInterface::add_dns_server; - -protected: - /** Open a socket - * @param handle Handle in which to store new socket - * @param proto Type of socket to open, NSAPI_TCP or NSAPI_UDP - * @return 0 on success, negative on failure - */ - virtual int socket_open(void **handle, nsapi_protocol_t proto); - - /** Close the socket - * @param handle Socket handle - * @return 0 on success, negative on failure - * @note On failure, any memory associated with the socket must still - * be cleaned up - */ - virtual int socket_close(void *handle); - - /** Bind a server socket to a specific port - * @param handle Socket handle - * @param address Local address to listen for incoming connections on - * @return 0 on success, negative on failure. - */ - virtual int socket_bind(void *handle, const SocketAddress &address); - - /** Start listening for incoming connections - * @param handle Socket handle - * @param backlog Number of pending connections that can be queued up at any - * one time [Default: 1] - * @return 0 on success, negative on failure - */ - virtual int socket_listen(void *handle, int backlog); - - /** Connects this TCP socket to the server - * @param handle Socket handle - * @param address SocketAddress to connect to - * @return 0 on success, negative on failure - */ - virtual int socket_connect(void *handle, const SocketAddress &address); - - /** Accept a new connection. - * @param handle Handle in which to store new socket - * @param server Socket handle to server to accept from - * @return 0 on success, negative on failure - * @note This call is not-blocking, if this call would block, must - * immediately return NSAPI_ERROR_WOULD_WAIT - */ - virtual int socket_accept(void *handle, void **socket, SocketAddress *address); - - /** Send data to the remote host - * @param handle Socket handle - * @param data The buffer to send to the host - * @param size The length of the buffer to send - * @return Number of written bytes on success, negative on failure - * @note This call is not-blocking, if this call would block, must - * immediately return NSAPI_ERROR_WOULD_WAIT - */ - virtual int socket_send(void *handle, const void *data, unsigned size); - - /** Receive data from the remote host - * @param handle Socket handle - * @param data The buffer in which to store the data received from the host - * @param size The maximum length of the buffer - * @return Number of received bytes on success, negative on failure - * @note This call is not-blocking, if this call would block, must - * immediately return NSAPI_ERROR_WOULD_WAIT - */ - virtual int socket_recv(void *handle, void *data, unsigned size); - - /** Send a packet to a remote endpoint - * @param handle Socket handle - * @param address The remote SocketAddress - * @param data The packet to be sent - * @param size The length of the packet to be sent - * @return The number of written bytes on success, negative on failure - * @note This call is not-blocking, if this call would block, must - * immediately return NSAPI_ERROR_WOULD_WAIT - */ - virtual int socket_sendto(void *handle, const SocketAddress &address, const void *data, unsigned size); - - /** Receive a packet from a remote endpoint - * @param handle Socket handle - * @param address Destination for the remote SocketAddress or null - * @param buffer The buffer for storing the incoming packet data - * If a packet is too long to fit in the supplied buffer, - * excess bytes are discarded - * @param size The length of the buffer - * @return The number of received bytes on success, negative on failure - * @note This call is not-blocking, if this call would block, must - * immediately return NSAPI_ERROR_WOULD_WAIT - */ - virtual int socket_recvfrom(void *handle, SocketAddress *address, void *buffer, unsigned size); - - /** Register a callback on state change of the socket - * @param handle Socket handle - * @param callback Function to call on state change - * @param data Argument to pass to callback - * @note Callback may be called in an interrupt context. - */ - virtual void socket_attach(void *handle, void (*callback)(void *), void *data); - - /** Provide access to the NetworkStack object - * - * @return The underlying NetworkStack object - */ - virtual NetworkStack *get_stack() - { - return this; - } - -private: - ESP8266 _esp; - bool _ids[ESP8266_SOCKET_COUNT]; - - char ap_ssid[33]; /* 32 is what 802.11 defines as longest possible name; +1 for the \0 */ - nsapi_security_t ap_sec; - uint8_t ap_ch; - char ap_pass[64]; /* The longest allowed passphrase */ - - void event(); - - struct { - void (*callback)(void *); - void *data; - } _cbs[ESP8266_SOCKET_COUNT]; -}; - -#endif