Christopher Haster / ESP8266Interface

Dependencies:   ESP8266

Fork of ESP8266Interface by NetworkSocketAPI

Branch:
api-changes
Revision:
40:83c6b4129468
Parent:
38:eb1e46561a19
Child:
42:4bf09cadf328
--- a/ESP8266Interface.h	Wed Feb 24 19:07:08 2016 -0600
+++ b/ESP8266Interface.h	Wed Feb 24 22:17:45 2016 -0600
@@ -22,6 +22,7 @@
 
 #define ESP8266_SOCKET_COUNT 5
 
+
 /** ESP8266Interface class
  *  Implementation of the NetworkInterface for the ESP8266
  */
@@ -29,6 +30,7 @@
 {
 public:
     ESP8266Interface(PinName tx, PinName rx, bool debug = false);
+    virtual ~ESP8266Interface();
 
     // Implementation of WiFiInterface
     virtual int32_t connect(
@@ -42,8 +44,6 @@
     virtual const char *getIPAddress();
     virtual const char *getMACAddress();
 
-    virtual void setTimeout(uint32_t timeout);
-
     virtual SocketInterface *createSocket(socket_protocol_t proto);
     virtual void destroySocket(SocketInterface *socket);
 
@@ -53,6 +53,38 @@
     bool _ids[ESP8266_SOCKET_COUNT];
     const char *_ip_address;
     const char *_mac_address;
+
+    class ESP8266Socket;
+};
+
+
+/** ESP8266Socket class
+ *  Implementation of the SocketInterface for the ESP8266
+ */
+class ESP8266Interface::ESP8266Socket : public SocketInterface
+{
+public:
+    // ESP8266 specific methods
+    ESP8266Socket(
+        ESP8266 *esp,
+        socket_protocol_t proto,
+        int id);
+
+    virtual ~ESP8266Socket();
+
+    int getID() const;
+
+    // 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 len);
+    virtual int32_t recv(void *data, uint32_t len);
+
+private:
+    ESP8266 *_esp;
+    socket_protocol_t _proto;
+    int _id;
 };