Driver for the ESP8266 WiFi module using ATParser library. Espressif Firmware.

Dependencies:   ATParser

Dependents:   ESP8266Interface

Fork of ESP8266 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.

Committer:
sam_grove
Date:
Sun Jul 26 21:53:38 2015 +0000
Revision:
9:dcf3aa250bc1
Parent:
8:80048194de79
Child:
14:13cef05d740c
Updates

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sarahmarshy 8:80048194de79 1 /* ESP8266Interface Example
sarahmarshy 8:80048194de79 2 * Copyright (c) 2015 ARM Limited
sarahmarshy 8:80048194de79 3 *
sarahmarshy 8:80048194de79 4 * Licensed under the Apache License, Version 2.0 (the "License");
sarahmarshy 8:80048194de79 5 * you may not use this file except in compliance with the License.
sarahmarshy 8:80048194de79 6 * You may obtain a copy of the License at
sarahmarshy 8:80048194de79 7 *
sarahmarshy 8:80048194de79 8 * http://www.apache.org/licenses/LICENSE-2.0
sarahmarshy 8:80048194de79 9 *
sarahmarshy 8:80048194de79 10 * Unless required by applicable law or agreed to in writing, software
sarahmarshy 8:80048194de79 11 * distributed under the License is distributed on an "AS IS" BASIS,
sarahmarshy 8:80048194de79 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
sarahmarshy 8:80048194de79 13 * See the License for the specific language governing permissions and
sarahmarshy 8:80048194de79 14 * limitations under the License.
sarahmarshy 8:80048194de79 15 */
sarahmarshy 8:80048194de79 16
sarahmarshy 8:80048194de79 17 #ifndef ESP8266_H
sarahmarshy 8:80048194de79 18 #define ESP8266_H
sarahmarshy 8:80048194de79 19
sarahmarshy 8:80048194de79 20 #include "ATParser.h"
sarahmarshy 8:80048194de79 21 #include <string>
sarahmarshy 8:80048194de79 22
sarahmarshy 8:80048194de79 23 /** ESP8266Interface class.
sarahmarshy 8:80048194de79 24 This is an interface to a ESP8266 radio.
sarahmarshy 8:80048194de79 25 */
sarahmarshy 8:80048194de79 26 class ESP8266
sarahmarshy 8:80048194de79 27 {
sarahmarshy 8:80048194de79 28 public:
sarahmarshy 8:80048194de79 29 ESP8266(PinName tx, PinName rx);
sarahmarshy 8:80048194de79 30
sarahmarshy 8:80048194de79 31 /**
sarahmarshy 8:80048194de79 32 * Test startup of ESP8266
sarahmarshy 8:80048194de79 33 *
sarahmarshy 8:80048194de79 34 * @return true only if ESP8266 AT system working correctly
sarahmarshy 8:80048194de79 35 */
sarahmarshy 8:80048194de79 36 bool startup(void);
sarahmarshy 8:80048194de79 37
sarahmarshy 8:80048194de79 38 /**
sarahmarshy 8:80048194de79 39 * Reset ESP8266
sarahmarshy 8:80048194de79 40 *
sarahmarshy 8:80048194de79 41 * @return true only if ESP8266 resets successfully
sarahmarshy 8:80048194de79 42 */
sarahmarshy 8:80048194de79 43 bool reset(void);
sarahmarshy 8:80048194de79 44
sarahmarshy 8:80048194de79 45 /**
sarahmarshy 8:80048194de79 46 * Set WiFi mode
sarahmarshy 8:80048194de79 47 *
sarahmarshy 8:80048194de79 48 * @param mode mode of WiFi 1-client, 2-host, 3-both
sarahmarshy 8:80048194de79 49 * @return true only if ESP8266 enables/disables DHCP successfully
sarahmarshy 8:80048194de79 50 */
sarahmarshy 8:80048194de79 51 bool wifiMode(int mode);
sarahmarshy 8:80048194de79 52
sarahmarshy 8:80048194de79 53 /**
sarahmarshy 8:80048194de79 54 * Enable/Disable multiple connections
sarahmarshy 8:80048194de79 55 *
sarahmarshy 8:80048194de79 56 * @param enabled multiple connections enabled when true
sarahmarshy 8:80048194de79 57 * @return true only if ESP8266 enables/disables multiple connections successfully
sarahmarshy 8:80048194de79 58 */
sarahmarshy 8:80048194de79 59 bool multipleConnections(bool enabled);
sarahmarshy 8:80048194de79 60
sarahmarshy 8:80048194de79 61 /**
sarahmarshy 8:80048194de79 62 * Enable/Disable DHCP
sarahmarshy 8:80048194de79 63 *
sarahmarshy 8:80048194de79 64 * @param mode mode of DHCP 0-softAP, 1-station, 2-both
sarahmarshy 8:80048194de79 65 * @param enabled DHCP enabled when true
sarahmarshy 8:80048194de79 66 * @return true only if ESP8266 enables/disables DHCP successfully
sarahmarshy 8:80048194de79 67 */
sarahmarshy 8:80048194de79 68 bool dhcp(int mode, bool enabled);
sarahmarshy 8:80048194de79 69
sarahmarshy 8:80048194de79 70 /**
sarahmarshy 8:80048194de79 71 * Connect ESP8266 to AP
sarahmarshy 8:80048194de79 72 *
sarahmarshy 8:80048194de79 73 * @param ap the name of the AP
sarahmarshy 8:80048194de79 74 * @param passPhrase the password of AP
sarahmarshy 8:80048194de79 75 * @return true only if ESP8266 is connected successfully
sarahmarshy 8:80048194de79 76 */
sarahmarshy 8:80048194de79 77 bool connect(const char *ap, const char *passPhrase);
sarahmarshy 8:80048194de79 78
sarahmarshy 8:80048194de79 79 /**
sarahmarshy 8:80048194de79 80 * Disconnect ESP8266 from AP
sarahmarshy 8:80048194de79 81 *
sarahmarshy 8:80048194de79 82 * @return true only if ESP8266 is disconnected successfully
sarahmarshy 8:80048194de79 83 */
sarahmarshy 8:80048194de79 84 bool disconnect(void);
sarahmarshy 8:80048194de79 85
sarahmarshy 8:80048194de79 86 /**
sarahmarshy 8:80048194de79 87 * Get the IP address of ESP8266
sarahmarshy 8:80048194de79 88 *
sarahmarshy 8:80048194de79 89 * @param ip data placeholder for IP address
sarahmarshy 8:80048194de79 90 * @return true only if ESP8266 is assigned an IP address
sarahmarshy 8:80048194de79 91 */
sarahmarshy 8:80048194de79 92 bool getIPAddress(char* ip);
sarahmarshy 8:80048194de79 93
sarahmarshy 8:80048194de79 94 /**
sarahmarshy 8:80048194de79 95 * Check if ESP8266 is conenected
sarahmarshy 8:80048194de79 96 *
sarahmarshy 8:80048194de79 97 * @return true only if the chip has an IP address
sarahmarshy 8:80048194de79 98 */
sarahmarshy 8:80048194de79 99 bool isConnected(void);
sarahmarshy 8:80048194de79 100
sarahmarshy 8:80048194de79 101 /**
sarahmarshy 8:80048194de79 102 * Open a socketed connection
sarahmarshy 8:80048194de79 103 *
sarahmarshy 8:80048194de79 104 * @param sockType the type of socket to open "UDP" or "TCP"
sarahmarshy 8:80048194de79 105 * @param id id to give the new socket, valid 0-4
sarahmarshy 8:80048194de79 106 * @param port port to open connection with
sarahmarshy 8:80048194de79 107 * @param addr the IP address of the destination
sarahmarshy 8:80048194de79 108 * @return true only if socket opened successfully
sarahmarshy 8:80048194de79 109 */
sam_grove 9:dcf3aa250bc1 110 bool openSocket(string sockType, int id, int port, const char* addr);
sarahmarshy 8:80048194de79 111
sarahmarshy 8:80048194de79 112 /**
sarahmarshy 8:80048194de79 113 * Sends data to an open socket
sarahmarshy 8:80048194de79 114 *
sarahmarshy 8:80048194de79 115 * @param id id of socket to send to
sarahmarshy 8:80048194de79 116 * @param data data to be sent
sarahmarshy 8:80048194de79 117 * @param amount amount of data to be sent - max 1024
sarahmarshy 8:80048194de79 118 * @return true only if data sent successfully
sarahmarshy 8:80048194de79 119 */
sarahmarshy 8:80048194de79 120 bool sendData(int id, const void *data, uint32_t amount);
sarahmarshy 8:80048194de79 121
sarahmarshy 8:80048194de79 122 /**
sarahmarshy 8:80048194de79 123 * Receives data from an open socket
sarahmarshy 8:80048194de79 124 *
sarahmarshy 8:80048194de79 125 * @param data placeholder for returned information
sarahmarshy 8:80048194de79 126 * @param amount number of bytes to be received
sarahmarshy 8:80048194de79 127 * @return the number of bytes actually received
sarahmarshy 8:80048194de79 128 */
sarahmarshy 8:80048194de79 129 uint32_t recv(void *data, uint32_t amount);
sarahmarshy 8:80048194de79 130
sarahmarshy 8:80048194de79 131 /**
sarahmarshy 8:80048194de79 132 * Closes a socket
sarahmarshy 8:80048194de79 133 *
sarahmarshy 8:80048194de79 134 * @param id id of socket to close, valid only 0-4
sarahmarshy 8:80048194de79 135 * @return true only if socket is closed successfully
sarahmarshy 8:80048194de79 136 */
sarahmarshy 8:80048194de79 137 bool close(int id);
sarahmarshy 8:80048194de79 138
sarahmarshy 8:80048194de79 139 /**
sarahmarshy 8:80048194de79 140 * Allows timeout to be changed between commands
sarahmarshy 8:80048194de79 141 *
sarahmarshy 8:80048194de79 142 * @param timeout_ms timeout of the connection
sarahmarshy 8:80048194de79 143 */
sarahmarshy 8:80048194de79 144 void setTimeout(uint32_t timeout_ms);
sarahmarshy 8:80048194de79 145
sarahmarshy 8:80048194de79 146 private:
sarahmarshy 8:80048194de79 147 BufferedSerial serial;
sarahmarshy 8:80048194de79 148 ATParser atParser;
sarahmarshy 8:80048194de79 149 };
sarahmarshy 8:80048194de79 150
sarahmarshy 8:80048194de79 151 #endif