Socket interface for ESP8266. Implements the NetworkSocketAPI. Requires device to use the Espressif Firmware.

Dependencies:   ESP8266

Dependents:   ESP8266InterfaceTests HelloESP8266Interface

Fork of ESP8266Interface by NetworkSocketAPI

Note

This library assumes your ESP8266 is running the Espressif Firmware. For instructions on how to update your ESP8266 to use the correct firmware see the Firmware Update Wiki Page.

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 implimented

  • 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:
Christopher Haster
Date:
Wed Feb 24 22:25:19 2016 -0600
Branch:
api-changes
Revision:
42:4bf09cadf328
Parent:
40:83c6b4129468
Child:
46:6b1bd1268074
Moved ESP8266Socket entirely into ESP8266Interface.cpp

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sarahmarshy 18:9fc7976c7b27 1 /* ESP8266Interface Example
sarahmarshy 18:9fc7976c7b27 2 * Copyright (c) 2015 ARM Limited
sarahmarshy 18:9fc7976c7b27 3 *
sarahmarshy 18:9fc7976c7b27 4 * Licensed under the Apache License, Version 2.0 (the "License");
sarahmarshy 18:9fc7976c7b27 5 * you may not use this file except in compliance with the License.
sarahmarshy 18:9fc7976c7b27 6 * You may obtain a copy of the License at
sarahmarshy 18:9fc7976c7b27 7 *
sarahmarshy 18:9fc7976c7b27 8 * http://www.apache.org/licenses/LICENSE-2.0
sarahmarshy 18:9fc7976c7b27 9 *
sarahmarshy 18:9fc7976c7b27 10 * Unless required by applicable law or agreed to in writing, software
sarahmarshy 18:9fc7976c7b27 11 * distributed under the License is distributed on an "AS IS" BASIS,
sarahmarshy 18:9fc7976c7b27 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
sarahmarshy 18:9fc7976c7b27 13 * See the License for the specific language governing permissions and
sarahmarshy 18:9fc7976c7b27 14 * limitations under the License.
sarahmarshy 18:9fc7976c7b27 15 */
sarahmarshy 18:9fc7976c7b27 16
Christopher Haster 34:9c26a3dcdc1f 17 #ifndef ESP8266_INTERFACE_H
Christopher Haster 34:9c26a3dcdc1f 18 #define ESP8266_INTERFACE_H
sarahmarshy 18:9fc7976c7b27 19
sarahmarshy 18:9fc7976c7b27 20 #include "WiFiInterface.h"
sarahmarshy 23:fd0f3197c30b 21 #include "ESP8266.h"
Christopher Haster 34:9c26a3dcdc1f 22
Christopher Haster 34:9c26a3dcdc1f 23 #define ESP8266_SOCKET_COUNT 5
sarahmarshy 18:9fc7976c7b27 24
Christopher Haster 40:83c6b4129468 25
Christopher Haster 34:9c26a3dcdc1f 26 /** ESP8266Interface class
Christopher Haster 34:9c26a3dcdc1f 27 * Implementation of the NetworkInterface for the ESP8266
sarahmarshy 18:9fc7976c7b27 28 */
sarahmarshy 18:9fc7976c7b27 29 class ESP8266Interface : public WiFiInterface
sarahmarshy 18:9fc7976c7b27 30 {
sarahmarshy 18:9fc7976c7b27 31 public:
Christopher Haster 34:9c26a3dcdc1f 32 ESP8266Interface(PinName tx, PinName rx, bool debug = false);
Christopher Haster 40:83c6b4129468 33 virtual ~ESP8266Interface();
Christopher Haster 34:9c26a3dcdc1f 34
Christopher Haster 34:9c26a3dcdc1f 35 // Implementation of WiFiInterface
Christopher Haster 34:9c26a3dcdc1f 36 virtual int32_t connect(
Christopher Haster 34:9c26a3dcdc1f 37 const char *ssid,
Christopher Haster 34:9c26a3dcdc1f 38 const char *pass,
Christopher Haster 38:eb1e46561a19 39 wifi_security_t security = WI_NONE);
Christopher Haster 34:9c26a3dcdc1f 40
Christopher Haster 34:9c26a3dcdc1f 41 virtual int32_t disconnect();
Christopher Haster 34:9c26a3dcdc1f 42
Christopher Haster 34:9c26a3dcdc1f 43 // Implementation of NetworkInterface
Christopher Haster 34:9c26a3dcdc1f 44 virtual const char *getIPAddress();
Christopher Haster 34:9c26a3dcdc1f 45 virtual const char *getMACAddress();
Christopher Haster 34:9c26a3dcdc1f 46
Christopher Haster 34:9c26a3dcdc1f 47 virtual SocketInterface *createSocket(socket_protocol_t proto);
Christopher Haster 34:9c26a3dcdc1f 48 virtual void destroySocket(SocketInterface *socket);
Christopher Haster 34:9c26a3dcdc1f 49
Christopher Haster 34:9c26a3dcdc1f 50 private:
Christopher Haster 34:9c26a3dcdc1f 51 ESP8266 _esp;
sarahmarshy 18:9fc7976c7b27 52
Christopher Haster 34:9c26a3dcdc1f 53 bool _ids[ESP8266_SOCKET_COUNT];
Christopher Haster 34:9c26a3dcdc1f 54 const char *_ip_address;
Christopher Haster 34:9c26a3dcdc1f 55 const char *_mac_address;
sarahmarshy 18:9fc7976c7b27 56 };
sarahmarshy 18:9fc7976c7b27 57
Christopher Haster 34:9c26a3dcdc1f 58
sarahmarshy 18:9fc7976c7b27 59 #endif