Christopher Haster / ESP8266Interface

Dependencies:   ESP8266

Fork of ESP8266Interface by NetworkSocketAPI

Branch:
api-changes
Revision:
40:83c6b4129468
Parent:
39:7e85bf8003fa
Child:
41:3f4d5f4862d2
--- a/ESP8266Interface.cpp	Wed Feb 24 19:07:08 2016 -0600
+++ b/ESP8266Interface.cpp	Wed Feb 24 22:17:45 2016 -0600
@@ -15,21 +15,23 @@
  */
 
 #include "ESP8266Interface.h"
-#include "ESP8266SocketInterface.h"
 
+// ESP8266Interface implementation
 ESP8266Interface::ESP8266Interface(PinName tx, PinName rx, bool debug)
     : _esp(tx, rx, debug)
 {
     memset(_ids, 0, sizeof(_ids));
 }
 
+ESP8266Interface::~ESP8266Interface()
+{
+}
+
 int32_t ESP8266Interface::connect(
     const char *ap, 
     const char *pass_phrase, 
     wifi_security_t)
 {
-    _esp.setTimeout(getTimeout());
-
     if (!_esp.startup(3)) return -1;
     if (!_esp.dhcp(true, 1)) return -1;
     if (!_esp.connect(ap, pass_phrase)) return -1;
@@ -58,12 +60,6 @@
     return _mac_address;
 }
 
-void ESP8266Interface::setTimeout(uint32_t timeout)
-{
-    NetworkInterface::setTimeout(timeout);
-    _esp.setTimeout(timeout);
-}
-
 SocketInterface *ESP8266Interface::createSocket(socket_protocol_t proto)
 {
     // Look for an unused socket
@@ -81,13 +77,67 @@
         return 0;
     }
 
-    return new ESP8266SocketInterface(&_esp, proto, id);
+    return new ESP8266Interface::ESP8266Socket(&_esp, proto, id);
 }
 
 void ESP8266Interface::destroySocket(SocketInterface *iface)
 {
-    ESP8266SocketInterface *socket = (ESP8266SocketInterface *)iface;
+    ESP8266Interface::ESP8266Socket *socket = (ESP8266Interface::ESP8266Socket *)iface;
     _ids[socket->getID()] = false;
     delete socket;
 }
 
+
+// ESP8266Socket implementation
+ESP8266Interface::ESP8266Socket::ESP8266Socket(
+        ESP8266 *esp,
+        socket_protocol_t proto,
+        int id)
+    : _esp(esp)
+    , _proto(proto)
+    , _id(id)
+{
+}
+
+ESP8266Interface::ESP8266Socket::~ESP8266Socket()
+{
+}
+
+int32_t ESP8266Interface::ESP8266Socket::open(const char *ip, uint16_t port)
+{
+    const char *proto = (_proto == SOCK_UDP) ? "UDP" : "TCP";
+
+    if (!_esp->open(proto, _id, ip, port)) {
+        return -1;
+    }
+
+    return 0;
+}
+
+int32_t ESP8266Interface::ESP8266Socket::close()
+{
+    if (!_esp->close(_id)) {
+        return -1;
+    }
+
+    return 0;
+}
+
+int32_t ESP8266Interface::ESP8266Socket::send(const void *data, uint32_t amount)
+{
+    if (!_esp->send(_id, data, amount)) {
+        return -1;
+    }
+
+    return 0;
+}
+
+int32_t ESP8266Interface::ESP8266Socket::recv(void *data, uint32_t amount)
+{
+    return _esp->recv(_id, data, amount);
+}
+
+int ESP8266Interface::ESP8266Socket::getID() const {
+    return _id;
+}
+