modified by ohneta

Dependencies:   ATParser

Dependents:   ESP8266Interface

Fork of ESP8266 by NetworkSocketAPI

Committer:
ohneta
Date:
Wed Nov 11 03:40:18 2015 +0000
Revision:
15:1ff5d44d5e30
Parent:
9:dcf3aa250bc1
check of disconnected on close()

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