Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: ESP8266
Fork of ESP8266Interface by
Diff: ESP8266Interface.h
- Revision:
- 55:c0808849cb89
- Parent:
- 53:8ded612adb96
diff -r e78fad32cfff -r c0808849cb89 ESP8266Interface.h
--- a/ESP8266Interface.h Fri Apr 01 17:28:04 2016 +0000
+++ b/ESP8266Interface.h Wed Apr 06 13:49:41 2016 +0000
@@ -28,50 +28,184 @@
class ESP8266Interface : 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);
- virtual ~ESP8266Interface();
- // Implementation of WiFiInterface
- virtual int32_t connect(
+ /** Start the interface
+ /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
+ /return 0 on success, negative on failure
+ */
+ virtual int connect(
const char *ssid,
const char *pass,
- ns_security_t security = NS_SECURITY_NONE);
+ nsapi_security_t security = NSAPI_SECURITY_NONE);
+
+ /** 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();
+
+protected:
+ /** Create a socket
+ /param proto The type of socket to open, TCP or UDP
+ /return The alocated socket or null on failure
+ */
+ virtual void *socket_create(nsapi_protocol_t proto);
+
+ /** Destroy a socket
+ /param socket Previously allocated socket
+ */
+ virtual void socket_destroy(void *handle);
- virtual int32_t disconnect();
+ /** Set socket options
+ \param handle Socket handle
+ \param optname Option ID
+ \param optval Option value
+ \param optlen Length of the option value
+ \return 0 on success, negative on failure
+ */
+ virtual int socket_set_option(void *handle, int optname, const void *optval, unsigned int optlen);
+
+ /** Get socket options
+ \param handle Socket handle
+ \param optname Option ID
+ \param optval Buffer pointer where to write the option value
+ \param optlen Length of the option value
+ \return 0 on success, negative on failure
+ */
+ virtual int socket_get_option(void *handle, int optname, void *optval, unsigned int *optlen);
+
+ /** Bind a server socket to a specific port
+ \param handle Socket handle
+ \param port The port to listen for incoming connections on
+ \return 0 on success, negative on failure.
+ */
+ virtual int socket_bind(void *handle, int port);
+
+ /** 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);
+
+ /** Check if the socket is connected
+ \param handle Socket handle
+ \return true if connected, false otherwise
+ */
+ virtual bool socket_is_connected(void *handle);
- // Implementation of NetworkInterface
- virtual const char *getIPAddress();
- virtual const char *getMACAddress();
+ /** Accept a new connection.
+ \param handle Socket handle
+ \param socket A TCPSocket instance that will handle the incoming connection.
+ \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 **connection);
+
+ /** 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);
- virtual SocketInterface *createSocket(ns_protocol_t proto);
- virtual void destroySocket(SocketInterface *socket);
+ /** 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);
+
+ /** Close the socket
+ \param handle Socket handle
+ \param shutdown free the left-over data in message queues
+ */
+ virtual int socket_close(void *handle, bool shutdown);
+ /** Register a callback on when a new connection is ready
+ \param handle Socket handle
+ \param callback Function to call when accept will succeed, may be called in
+ interrupt context.
+ \param id Argument to pass to callback
+ */
+ virtual void socket_attach_accept(void *handle, void (*callback)(void *), void *id);
+
+ /** Register a callback on when send is ready
+ \param handle Socket handle
+ \param callback Function to call when accept will succeed, may be called in
+ interrupt context.
+ \param id Argument to pass to callback
+ */
+ virtual void socket_attach_send(void *handle, void (*callback)(void *), void *id);
+
+ /** Register a callback on when recv is ready
+ \param handle Socket handle
+ \param callback Function to call when accept will succeed, may be called in
+ interrupt context.
+ \param id Argument to pass to callback
+ */
+ virtual void socket_attach_recv(void *handle, void (*callback)(void *), void *id);
+
private:
-
ESP8266 _esp;
bool _ids[ESP8266_SOCKET_COUNT];
-
- // Implementation of the SocketInterface for the ESP8266
- class ESP8266Socket : public SocketInterface
- {
- public:
-
- // ESP8266 specific details
- ESP8266 *_esp;
- ns_protocol_t _proto;
- int _id;
-
- ESP8266Socket(ESP8266 *esp, ns_protocol_t proto, int id)
- : _esp(esp), _proto(proto), _id(id) {}
-
- // Implementation of SocketInterface
- virtual int32_t open(const char *ip, uint16_t port);
- virtual int32_t close();
-
- virtual int32_t send(const void *data, uint32_t size);
- virtual int32_t recv(void *data, uint32_t size);
- };
};
#endif
+
