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:
bridadan
Date:
Wed Jul 15 23:22:31 2015 +0000
Revision:
16:b2f781416464
Parent:
15:d29439d50306
Moved some underscored_functions to camelCase, added functions and data structures to prepare for multiple sockets, added ATParser dependency

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sam_grove 12:8db9b116cf76 1 /* WiFiRadioInterface Example
sam_grove 11:288c15b80a26 2 * Copyright (c) 2015 ARM Limited
sam_grove 11:288c15b80a26 3 *
sam_grove 11:288c15b80a26 4 * Licensed under the Apache License, Version 2.0 (the "License");
sam_grove 11:288c15b80a26 5 * you may not use this file except in compliance with the License.
sam_grove 11:288c15b80a26 6 * You may obtain a copy of the License at
sam_grove 11:288c15b80a26 7 *
sam_grove 11:288c15b80a26 8 * http://www.apache.org/licenses/LICENSE-2.0
sam_grove 11:288c15b80a26 9 *
sam_grove 11:288c15b80a26 10 * Unless required by applicable law or agreed to in writing, software
sam_grove 11:288c15b80a26 11 * distributed under the License is distributed on an "AS IS" BASIS,
sam_grove 11:288c15b80a26 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
sam_grove 11:288c15b80a26 13 * See the License for the specific language governing permissions and
sam_grove 11:288c15b80a26 14 * limitations under the License.
sam_grove 11:288c15b80a26 15 */
sam_grove 11:288c15b80a26 16
sam_grove 11:288c15b80a26 17 #include "WiFiRadioInterface.h"
sam_grove 11:288c15b80a26 18
bridadan 16:b2f781416464 19 WiFiRadioInterface::WiFiRadioInterface(PinName tx, PinName rx)
bridadan 16:b2f781416464 20 : serial(tx, rx), atParser(&serial)
sam_grove 11:288c15b80a26 21 {
sam_grove 11:288c15b80a26 22
sam_grove 11:288c15b80a26 23 }
sam_grove 11:288c15b80a26 24
bridadan 16:b2f781416464 25 WiFiRadioInterface::WiFiRadioInterface(PinName tx, PinName rx, const char *ap, const char *pass_phrase, wifi_security_t security, uint32_t timeout_ms)
bridadan 16:b2f781416464 26 : serial(tx, rx), atParser(&serial)
sam_grove 11:288c15b80a26 27 {
sam_grove 11:288c15b80a26 28
sam_grove 11:288c15b80a26 29 }
sam_grove 11:288c15b80a26 30
sam_grove 11:288c15b80a26 31 int32_t WiFiRadioInterface::init(void) const
sam_grove 11:288c15b80a26 32 {
sam_grove 11:288c15b80a26 33 return -1;
sam_grove 11:288c15b80a26 34 }
sam_grove 11:288c15b80a26 35
sam_grove 11:288c15b80a26 36 int32_t WiFiRadioInterface::init(const char *ip, const char *mask, const char *gateway) const
sam_grove 11:288c15b80a26 37 {
sam_grove 11:288c15b80a26 38 return -1;
sam_grove 11:288c15b80a26 39 }
sam_grove 11:288c15b80a26 40
sam_grove 11:288c15b80a26 41 int32_t WiFiRadioInterface::connect(uint32_t timeout_ms) const
sam_grove 11:288c15b80a26 42 {
sam_grove 11:288c15b80a26 43 return -1;
sam_grove 11:288c15b80a26 44 }
sam_grove 11:288c15b80a26 45
sam_grove 11:288c15b80a26 46 int32_t WiFiRadioInterface::connect(const char *ap, const char *pass_phrase, wifi_security_t security, uint32_t timeout_ms) const
sam_grove 11:288c15b80a26 47 {
sam_grove 11:288c15b80a26 48 return -1;
sam_grove 11:288c15b80a26 49 }
sam_grove 11:288c15b80a26 50
sam_grove 11:288c15b80a26 51 int32_t WiFiRadioInterface::disconnect(void) const
sam_grove 11:288c15b80a26 52 {
sam_grove 11:288c15b80a26 53 return -1;
sam_grove 11:288c15b80a26 54 }
sam_grove 11:288c15b80a26 55
sam_grove 11:288c15b80a26 56 char *WiFiRadioInterface::getIPAddress(void) const
sam_grove 11:288c15b80a26 57 {
sam_grove 11:288c15b80a26 58 return 0;
sam_grove 11:288c15b80a26 59 }
sam_grove 11:288c15b80a26 60
sam_grove 11:288c15b80a26 61 char *WiFiRadioInterface::getGateway(void) const
sam_grove 11:288c15b80a26 62 {
sam_grove 11:288c15b80a26 63 return 0;
sam_grove 11:288c15b80a26 64 }
sam_grove 11:288c15b80a26 65
sam_grove 11:288c15b80a26 66 char *WiFiRadioInterface::getNetworkMask(void) const
sam_grove 11:288c15b80a26 67 {
sam_grove 11:288c15b80a26 68 return 0;
sam_grove 11:288c15b80a26 69 }
sam_grove 11:288c15b80a26 70
sam_grove 11:288c15b80a26 71 char *WiFiRadioInterface::getMACAddress(void) const
sam_grove 11:288c15b80a26 72 {
sam_grove 11:288c15b80a26 73 return 0;
sam_grove 11:288c15b80a26 74 }
sam_grove 11:288c15b80a26 75
sam_grove 11:288c15b80a26 76 int32_t WiFiRadioInterface::isConnected(void) const
sam_grove 11:288c15b80a26 77 {
sam_grove 11:288c15b80a26 78 return -1;
sam_grove 11:288c15b80a26 79 }
sam_grove 13:0186e9e35a24 80
bridadan 16:b2f781416464 81 SocketInterface *WiFiRadioInterface::allocateSocket(socket_protocol_t socketProtocol) const
bridadan 16:b2f781416464 82 {
bridadan 16:b2f781416464 83 return 0;
bridadan 16:b2f781416464 84 }
bridadan 16:b2f781416464 85
bridadan 16:b2f781416464 86 int WiFiRadioInterface::deallocateSocket(SocketInterface *socket) const
sam_grove 13:0186e9e35a24 87 {
sam_grove 13:0186e9e35a24 88 return 0;
sam_grove 13:0186e9e35a24 89 }
sam_grove 13:0186e9e35a24 90
bridadan 16:b2f781416464 91 WiFiSocket::WiFiSocket(uint32_t handle, ATParser *atParser)
bridadan 16:b2f781416464 92 : handle(handle), atParser(atParser)
bridadan 16:b2f781416464 93 {
bridadan 16:b2f781416464 94 return;
bridadan 16:b2f781416464 95 }
bridadan 16:b2f781416464 96
bridadan 16:b2f781416464 97 const char *WiFiSocket::getHostByName(const char *name) const
bridadan 16:b2f781416464 98 {
bridadan 16:b2f781416464 99 return 0;
bridadan 16:b2f781416464 100 }
bridadan 16:b2f781416464 101
bridadan 16:b2f781416464 102 int32_t WiFiSocket::setAddress(const char* addr) const
sam_grove 13:0186e9e35a24 103 {
sam_grove 13:0186e9e35a24 104 return -1;
sam_grove 13:0186e9e35a24 105 }
sam_grove 13:0186e9e35a24 106
bridadan 16:b2f781416464 107 int32_t WiFiSocket::setPort(uint16_t port) const
sam_grove 13:0186e9e35a24 108 {
sam_grove 13:0186e9e35a24 109 return -1;
sam_grove 13:0186e9e35a24 110 }
sam_grove 13:0186e9e35a24 111
bridadan 16:b2f781416464 112 int32_t WiFiSocket::setAddressPort(const char* addr, uint16_t port) const
sam_grove 13:0186e9e35a24 113 {
sam_grove 13:0186e9e35a24 114 return -1;
sam_grove 13:0186e9e35a24 115 }
sam_grove 13:0186e9e35a24 116
bridadan 16:b2f781416464 117 const char *WiFiSocket::getAddress(void) const
sam_grove 13:0186e9e35a24 118 {
sam_grove 13:0186e9e35a24 119 return 0;
sam_grove 13:0186e9e35a24 120 }
sam_grove 13:0186e9e35a24 121
bridadan 16:b2f781416464 122 uint16_t WiFiSocket::getPort(void) const
bridadan 16:b2f781416464 123 {
bridadan 16:b2f781416464 124 return 0;
bridadan 16:b2f781416464 125 }
bridadan 16:b2f781416464 126
bridadan 16:b2f781416464 127
bridadan 16:b2f781416464 128 int32_t WiFiSocket::bind(uint16_t port) const
sam_grove 13:0186e9e35a24 129 {
sam_grove 13:0186e9e35a24 130 return -1;
sam_grove 13:0186e9e35a24 131 }
sam_grove 13:0186e9e35a24 132
bridadan 16:b2f781416464 133 int32_t WiFiSocket::listen(void) const
sam_grove 13:0186e9e35a24 134 {
sam_grove 13:0186e9e35a24 135 return -1;
sam_grove 13:0186e9e35a24 136 }
sam_grove 13:0186e9e35a24 137
bridadan 16:b2f781416464 138 int32_t WiFiSocket::accept() const
sam_grove 13:0186e9e35a24 139 {
sam_grove 13:0186e9e35a24 140 return -1;
sam_grove 13:0186e9e35a24 141 }
sam_grove 13:0186e9e35a24 142
bridadan 16:b2f781416464 143 int32_t WiFiSocket::open() const
sam_grove 13:0186e9e35a24 144 {
sam_grove 13:0186e9e35a24 145 return -1;
sam_grove 13:0186e9e35a24 146 }
sam_grove 13:0186e9e35a24 147
bridadan 16:b2f781416464 148 int32_t WiFiSocket::send(const void *data, uint32_t amount, uint32_t timeout_ms) const
bridadan 16:b2f781416464 149 {
bridadan 16:b2f781416464 150 return -1;
bridadan 16:b2f781416464 151 }
bridadan 16:b2f781416464 152
bridadan 16:b2f781416464 153 uint32_t WiFiSocket::recv(const void *data, uint32_t amount, uint32_t timeout_ms) const
sam_grove 13:0186e9e35a24 154 {
sam_grove 13:0186e9e35a24 155 return 0;
sam_grove 13:0186e9e35a24 156 }
sam_grove 13:0186e9e35a24 157
bridadan 16:b2f781416464 158 int32_t WiFiSocket::close() const
sam_grove 13:0186e9e35a24 159 {
sam_grove 13:0186e9e35a24 160 return -1;
bridadan 16:b2f781416464 161 }