ESP8266 Socket Library. AT Thinker firmware.

Dependents:   ESP8266_MQTT_HelloWorld ESP8266_IFTTT_Test ECE_4180_Lab_4 websocketmbed ... more

Fork of ESP8266Interface by ESP8266

This repository has been superceded

This project has moved to https://developer.mbed.org/teams/ESP8266/code/esp8266-driver/

This library works with the AT Thinker firmware.

Note

This library is currently in Beta. It is not feature complete and has some bugs, proceed with caution! Fixes and patches are welcome and appreciated!

Currently the ESP8266Interface Library has the following Abilities:

Working

  • TCP Client
  • UDP Client
  • Transparent mode (single connection of 1 type at a time)
  • Station Mode (connects to AP)

To be implemented

  • TCP Server
  • UDP Server
  • Multi Connection Mode (able to have up to 5 sockets at a time)
  • AP Mode (Make ESP Chip act like access point)
  • DNS Support (currently websites must be looked up by IP)
  • Error Recovery

Nice but not necessary

  • colorized text for ESP AT Commands in Command line (easier to differentiate from other text)
Committer:
samux
Date:
Fri Aug 24 13:48:36 2012 +0000
Revision:
1:fb4494783863
Child:
12:c5f0eac67a8a
first commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
samux 1:fb4494783863 1 #include "WiflyInterface.h"
samux 1:fb4494783863 2
samux 1:fb4494783863 3 WiflyInterface::WiflyInterface( PinName tx, PinName rx, PinName reset, PinName tcp_status,
samux 1:fb4494783863 4 const char * ssid, const char * phrase, Security sec) :
samux 1:fb4494783863 5 Wifly(tx, rx, reset, tcp_status, ssid, phrase, sec)
samux 1:fb4494783863 6 {
samux 1:fb4494783863 7 ip_set = false;
samux 1:fb4494783863 8 }
samux 1:fb4494783863 9
samux 1:fb4494783863 10 int WiflyInterface::init()
samux 1:fb4494783863 11 {
samux 1:fb4494783863 12 state.dhcp = true;
samux 1:fb4494783863 13 reset();
samux 1:fb4494783863 14 return 0;
samux 1:fb4494783863 15 }
samux 1:fb4494783863 16
samux 1:fb4494783863 17 int WiflyInterface::init(const char* ip, const char* mask, const char* gateway)
samux 1:fb4494783863 18 {
samux 1:fb4494783863 19 state.dhcp = false;
samux 1:fb4494783863 20 this->ip = ip;
samux 1:fb4494783863 21 strcpy(ip_string, ip);
samux 1:fb4494783863 22 ip_set = true;
samux 1:fb4494783863 23 this->netmask = mask;
samux 1:fb4494783863 24 this->gateway = gateway;
samux 1:fb4494783863 25 reset();
samux 1:fb4494783863 26
samux 1:fb4494783863 27 return 0;
samux 1:fb4494783863 28 }
samux 1:fb4494783863 29
samux 1:fb4494783863 30 int WiflyInterface::connect()
samux 1:fb4494783863 31 {
samux 1:fb4494783863 32 return join();
samux 1:fb4494783863 33 }
samux 1:fb4494783863 34
samux 1:fb4494783863 35 int WiflyInterface::disconnect()
samux 1:fb4494783863 36 {
samux 1:fb4494783863 37 return Wifly::disconnect();
samux 1:fb4494783863 38 }
samux 1:fb4494783863 39
samux 1:fb4494783863 40 char * WiflyInterface::getIPAddress()
samux 1:fb4494783863 41 {
samux 1:fb4494783863 42 char * match = 0;
samux 1:fb4494783863 43 if (!ip_set) {
samux 1:fb4494783863 44 if (!sendCommand("get ip a\r", NULL, ip_string))
samux 1:fb4494783863 45 return NULL;
samux 1:fb4494783863 46 exit();
samux 1:fb4494783863 47 flush();
samux 1:fb4494783863 48 match = strstr(ip_string, "<");
samux 1:fb4494783863 49 if (match != NULL) {
samux 1:fb4494783863 50 *match = '\0';
samux 1:fb4494783863 51 }
samux 1:fb4494783863 52 if (strlen(ip_string) < 6) {
samux 1:fb4494783863 53 match = strstr(ip_string, ">");
samux 1:fb4494783863 54 if (match != NULL) {
samux 1:fb4494783863 55 int len = strlen(match + 1);
samux 1:fb4494783863 56 memcpy(ip_string, match + 1, len);
samux 1:fb4494783863 57 }
samux 1:fb4494783863 58 }
samux 1:fb4494783863 59 ip_set = true;
samux 1:fb4494783863 60 }
samux 1:fb4494783863 61 return ip_string;
samux 1:fb4494783863 62 }