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.cpp
- 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;
+}
+
