private fork

Fork of GSwifiInterface by gs fan

Committer:
gsfan
Date:
Thu Oct 31 08:34:45 2013 +0000
Revision:
10:7d8134e7df01
Parent:
9:4565d3d3d13b
Child:
11:71d67fea5ace
fix command responce

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gsfan 5:78943b3945b5 1 /* Copyright (C) 2012 mbed.org, MIT License
gsfan 5:78943b3945b5 2 *
gsfan 5:78943b3945b5 3 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
gsfan 5:78943b3945b5 4 * and associated documentation files (the "Software"), to deal in the Software without restriction,
gsfan 5:78943b3945b5 5 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
gsfan 5:78943b3945b5 6 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
gsfan 5:78943b3945b5 7 * furnished to do so, subject to the following conditions:
gsfan 5:78943b3945b5 8 *
gsfan 5:78943b3945b5 9 * The above copyright notice and this permission notice shall be included in all copies or
gsfan 5:78943b3945b5 10 * substantial portions of the Software.
gsfan 5:78943b3945b5 11 *
gsfan 5:78943b3945b5 12 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
gsfan 5:78943b3945b5 13 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
gsfan 5:78943b3945b5 14 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
gsfan 5:78943b3945b5 15 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
gsfan 5:78943b3945b5 16 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
gsfan 5:78943b3945b5 17 *
gsfan 5:78943b3945b5 18 * @section DESCRIPTION
gsfan 5:78943b3945b5 19 *
gsfan 5:78943b3945b5 20 * GainSpan GS1011, Wi-Fi module
gsfan 5:78943b3945b5 21 *
gsfan 5:78943b3945b5 22 * http://www.gainspan.com/modules
gsfan 5:78943b3945b5 23 */
gsfan 5:78943b3945b5 24 /* Copyright (C) 2013 gsfan, MIT License
gsfan 5:78943b3945b5 25 * port to the GainSpan Wi-FI module GS1011
gsfan 5:78943b3945b5 26 */
gsfan 8:64184a968e3b 27 /** @file
gsfan 8:64184a968e3b 28 * @brief Gainspan wi-fi module library for mbed
gsfan 8:64184a968e3b 29 * GS1011MIC, GS1011MIP, GainSpan WiFi Breakout, etc.
gsfan 8:64184a968e3b 30 */
gsfan 5:78943b3945b5 31
gsfan 5:78943b3945b5 32 #ifndef GSwifi_H
gsfan 5:78943b3945b5 33 #define GSwifi_H
gsfan 5:78943b3945b5 34
gsfan 5:78943b3945b5 35 #include "mbed.h"
gsfan 8:64184a968e3b 36 #include "rtos.h"
gsfan 8:64184a968e3b 37 #include "RawSerial.h"
gsfan 5:78943b3945b5 38 #include "CBuffer.h"
gsfan 8:64184a968e3b 39 #include <ctype.h>
gsfan 8:64184a968e3b 40 #include <stdlib.h>
gsfan 8:64184a968e3b 41 #include <string.h>
gsfan 8:64184a968e3b 42
gsfan 9:4565d3d3d13b 43 //#define DEBUG
gsfan 5:78943b3945b5 44
gsfan 5:78943b3945b5 45 #define DEFAULT_WAIT_RESP_TIMEOUT 500
gsfan 8:64184a968e3b 46 #define CFG_TIMEOUT 30000 // ms
gsfan 5:78943b3945b5 47 #define CFG_CMD_SIZE 100
gsfan 8:64184a968e3b 48 #if defined(TARGET_LPC1768) || defined(TARGET_LPC2368)
gsfan 8:64184a968e3b 49 #define CFG_DATA_SIZE 1024
gsfan 8:64184a968e3b 50 #elif defined(TARGET_LPC11U24)
gsfan 8:64184a968e3b 51 #define CFG_DATA_SIZE 128
gsfan 8:64184a968e3b 52 #elif defined(TARGET_LPC4088)
gsfan 8:64184a968e3b 53 #define CFG_DATA_SIZE 4096
gsfan 8:64184a968e3b 54 #endif
gsfan 5:78943b3945b5 55
gsfan 8:64184a968e3b 56
gsfan 8:64184a968e3b 57 //#define CFG_UART_DIRECT
gsfan 5:78943b3945b5 58 #define CFG_UART_BAUD 9600
gsfan 8:64184a968e3b 59 #define CFG_WREGDOMAIN 2 // 0:FCC, 1:ETSI, 2:TELEC
gsfan 8:64184a968e3b 60 #define CFG_DHCPNAME "mbed-gswifi"
gsfan 8:64184a968e3b 61 #define CFG_DNSNAME "setup.local"
gsfan 6:6a6396b56405 62 #define MAX_TRY_JOIN 3
gsfan 5:78943b3945b5 63
gsfan 8:64184a968e3b 64 #define MSG_TABLE_NUM 15
gsfan 8:64184a968e3b 65 #define RES_TABLE_NUM 10
gsfan 5:78943b3945b5 66
gsfan 5:78943b3945b5 67 //Debug is disabled by default
gsfan 8:64184a968e3b 68 #if defined(DEBUG) and (!defined(TARGET_LPC11U24))
gsfan 8:64184a968e3b 69 #define DBG(x, ...) std::printf("[DBG]" x "\r\n", ##__VA_ARGS__);
gsfan 8:64184a968e3b 70 #define WARN(x, ...) std::printf("[WARN]" x "\r\n", ##__VA_ARGS__);
gsfan 8:64184a968e3b 71 #define ERR(x, ...) std::printf("[ERR]" x "\r\n", ##__VA_ARGS__);
gsfan 8:64184a968e3b 72 #define INFO(x, ...) std::printf("[INFO]" x "\r\n", ##__VA_ARGS__);
gsfan 5:78943b3945b5 73 #else
gsfan 5:78943b3945b5 74 #define DBG(x, ...)
gsfan 5:78943b3945b5 75 #define WARN(x, ...)
gsfan 5:78943b3945b5 76 #define ERR(x, ...)
gsfan 5:78943b3945b5 77 #define INFO(x, ...)
gsfan 5:78943b3945b5 78 #endif
gsfan 5:78943b3945b5 79
gsfan 5:78943b3945b5 80
gsfan 8:64184a968e3b 81 /** GSwifi class
gsfan 8:64184a968e3b 82 */
gsfan 5:78943b3945b5 83 class GSwifi
gsfan 5:78943b3945b5 84 {
gsfan 5:78943b3945b5 85
gsfan 5:78943b3945b5 86 public:
gsfan 5:78943b3945b5 87
gsfan 8:64184a968e3b 88 /** Wi-Fi mode
gsfan 8:64184a968e3b 89 */
gsfan 8:64184a968e3b 90 enum WiFiMode {
gsfan 8:64184a968e3b 91 WM_INFRASTRUCTURE,
gsfan 8:64184a968e3b 92 WM_ADHOCK,
gsfan 8:64184a968e3b 93 WM_LIMITEDAP,
gsfan 8:64184a968e3b 94 };
gsfan 8:64184a968e3b 95
gsfan 8:64184a968e3b 96 /** Wi-Fi security
gsfan 8:64184a968e3b 97 */
gsfan 5:78943b3945b5 98 enum Security {
gsfan 5:78943b3945b5 99 SEC_AUTO = 0,
gsfan 5:78943b3945b5 100 SEC_NONE = 0,
gsfan 5:78943b3945b5 101 SEC_OPEN = 1,
gsfan 5:78943b3945b5 102 SEC_WEP = 2,
gsfan 5:78943b3945b5 103 SEC_WPA_PSK = 4,
gsfan 5:78943b3945b5 104 SEC_WPA2_PSK = 8,
gsfan 5:78943b3945b5 105 SEC_WPA_ENT = 16,
gsfan 5:78943b3945b5 106 SEC_WPA2_ENT = 32,
gsfan 5:78943b3945b5 107 SEC_WPS_BUTTON = 64,
gsfan 8:64184a968e3b 108 SEC_WPS_PIN,
gsfan 5:78943b3945b5 109 };
gsfan 5:78943b3945b5 110
gsfan 8:64184a968e3b 111 /** TCP/IP protocol
gsfan 8:64184a968e3b 112 */
gsfan 5:78943b3945b5 113 enum Protocol {
gsfan 5:78943b3945b5 114 PROTO_UDP = 0,
gsfan 5:78943b3945b5 115 PROTO_TCP = 1,
gsfan 5:78943b3945b5 116 PROTO_HTTPGET,
gsfan 5:78943b3945b5 117 PROTO_HTTPPOST,
gsfan 5:78943b3945b5 118 PROTO_HTTPD,
gsfan 5:78943b3945b5 119 };
gsfan 5:78943b3945b5 120
gsfan 8:64184a968e3b 121 /** Client/Server
gsfan 8:64184a968e3b 122 */
gsfan 8:64184a968e3b 123 enum Type {
gsfan 8:64184a968e3b 124 TYPE_CLIENT = 0,
gsfan 8:64184a968e3b 125 TYPE_SERVER = 1,
gsfan 8:64184a968e3b 126 };
gsfan 8:64184a968e3b 127
gsfan 5:78943b3945b5 128 enum Response {
gsfan 5:78943b3945b5 129 RES_NULL,
gsfan 5:78943b3945b5 130 RES_CONNECT,
gsfan 5:78943b3945b5 131 RES_WPS,
gsfan 5:78943b3945b5 132 RES_MACADDRESS,
gsfan 5:78943b3945b5 133 RES_DHCP,
gsfan 5:78943b3945b5 134 RES_DNSLOOKUP,
gsfan 5:78943b3945b5 135 RES_HTTP,
gsfan 5:78943b3945b5 136 RES_RSSI,
gsfan 5:78943b3945b5 137 RES_TIME,
gsfan 8:64184a968e3b 138 RES_STATUS,
gsfan 5:78943b3945b5 139 };
gsfan 5:78943b3945b5 140
gsfan 5:78943b3945b5 141 enum Mode {
gsfan 5:78943b3945b5 142 MODE_COMMAND,
gsfan 8:64184a968e3b 143 MODE_CMDRESP,
gsfan 8:64184a968e3b 144 MODE_ESCAPE,
gsfan 5:78943b3945b5 145 MODE_DATA_RX,
gsfan 8:64184a968e3b 146 MODE_DATA_RX_BULK,
gsfan 5:78943b3945b5 147 MODE_DATA_RXUDP,
gsfan 8:64184a968e3b 148 MODE_DATA_RXUDP_BULK,
gsfan 5:78943b3945b5 149 MODE_DATA_RXHTTP,
gsfan 8:64184a968e3b 150 MODE_DATA_RAW,
gsfan 5:78943b3945b5 151 };
gsfan 5:78943b3945b5 152
gsfan 5:78943b3945b5 153 enum Status {
gsfan 8:64184a968e3b 154 STAT_NONE,
gsfan 5:78943b3945b5 155 STAT_READY,
gsfan 5:78943b3945b5 156 STAT_STANDBY,
gsfan 5:78943b3945b5 157 STAT_WAKEUP,
gsfan 5:78943b3945b5 158 STAT_DEEPSLEEP,
gsfan 5:78943b3945b5 159 };
gsfan 5:78943b3945b5 160
gsfan 8:64184a968e3b 161 // ----- GSwifi.cpp -----
gsfan 8:64184a968e3b 162 /** Constructor
gsfan 8:64184a968e3b 163 * \param tx mbed pin to use for tx line of Serial interface
gsfan 8:64184a968e3b 164 * \param rx mbed pin to use for rx line of Serial interface
gsfan 8:64184a968e3b 165 * \param cts mbed pin to use for cts line of Serial interface
gsfan 8:64184a968e3b 166 * \param rts mbed pin to use for rts line of Serial interface
gsfan 8:64184a968e3b 167 * \param reset reset pin of the wifi module
gsfan 8:64184a968e3b 168 * \param alarm alarm pin of the wifi module
gsfan 8:64184a968e3b 169 * \param baud baud rate of Serial interface
gsfan 8:64184a968e3b 170 */
gsfan 8:64184a968e3b 171 GSwifi (PinName tx, PinName rx, PinName cts, PinName rts, PinName reset, PinName alarm, int baud);
gsfan 5:78943b3945b5 172
gsfan 8:64184a968e3b 173 /** Connect the wifi module to the ssid contained in the constructor.
gsfan 8:64184a968e3b 174 * @param sec Security type (NONE, WEP_128 or WPA)
gsfan 8:64184a968e3b 175 * @param ssid ssid of the network
gsfan 8:64184a968e3b 176 * @param phrase WEP or WPA key
gsfan 8:64184a968e3b 177 * @return 0 if connected, -1 otherwise
gsfan 8:64184a968e3b 178 */
gsfan 8:64184a968e3b 179 int join (Security sec, const char *ssid, const char *phrase);
gsfan 5:78943b3945b5 180
gsfan 8:64184a968e3b 181 /** Connect the wifi module to the adhock in the constructor.
gsfan 8:64184a968e3b 182 * @param sec Security type (NONE, WEP_128 or WPA)
gsfan 8:64184a968e3b 183 * @param ssid ssid of the network
gsfan 8:64184a968e3b 184 * @param phrase WEP or WPA key
gsfan 8:64184a968e3b 185 * @return 0 if connected, -1 otherwise
gsfan 8:64184a968e3b 186 */
gsfan 8:64184a968e3b 187 int adhock (Security sec, const char *ssid, const char *phrase);
gsfan 5:78943b3945b5 188
gsfan 8:64184a968e3b 189 /** Connect the wifi module to the limited AP in the constructor.
gsfan 8:64184a968e3b 190 * @param sec Security type (NONE, WEP_128 or WPA)
gsfan 8:64184a968e3b 191 * @param ssid ssid of the network
gsfan 8:64184a968e3b 192 * @param phrase WEP or WPA key
gsfan 8:64184a968e3b 193 * @return 0 if connected, -1 otherwise
gsfan 8:64184a968e3b 194 */
gsfan 8:64184a968e3b 195 int limitedap (Security sec, const char *ssid, const char *phrase);
gsfan 5:78943b3945b5 196
gsfan 8:64184a968e3b 197 /** Disconnect the wifi module from the access point
gsfan 8:64184a968e3b 198 * @returns 0 if successful
gsfan 8:64184a968e3b 199 */
gsfan 8:64184a968e3b 200 int disconnect ();
gsfan 5:78943b3945b5 201
gsfan 8:64184a968e3b 202 /** Check if a tcp link is active
gsfan 8:64184a968e3b 203 * @returns true if successful
gsfan 8:64184a968e3b 204 */
gsfan 8:64184a968e3b 205 bool isConnected();
gsfan 5:78943b3945b5 206
gsfan 8:64184a968e3b 207 int setSsid (Security sec, const char *ssid, const char *phrase);
gsfan 8:64184a968e3b 208
gsfan 8:64184a968e3b 209 void poll ();
gsfan 5:78943b3945b5 210
gsfan 5:78943b3945b5 211 static GSwifi * getInstance() {
gsfan 5:78943b3945b5 212 return _inst;
gsfan 5:78943b3945b5 213 };
gsfan 5:78943b3945b5 214
gsfan 8:64184a968e3b 215 // ----- GSwifi_util.cpp -----
gsfan 8:64184a968e3b 216 int setRegion (int reg);
gsfan 8:64184a968e3b 217
gsfan 8:64184a968e3b 218 /** RSSI
gsfan 8:64184a968e3b 219 * @return RSSI (dBm)
gsfan 8:64184a968e3b 220 */
gsfan 8:64184a968e3b 221 int getRssi ();
gsfan 8:64184a968e3b 222
gsfan 8:64184a968e3b 223 /** power save mode
gsfan 8:64184a968e3b 224 * @param active rx radio 0:switched off, 1:always on
gsfan 8:64184a968e3b 225 * @param save power save 0:disable, 1:enable
gsfan 8:64184a968e3b 226 */
gsfan 8:64184a968e3b 227 int powerSave (int active, int save);
gsfan 8:64184a968e3b 228
gsfan 8:64184a968e3b 229 /** RF power
gsfan 8:64184a968e3b 230 * @param power 0(high)-7(low)
gsfan 8:64184a968e3b 231 */
gsfan 8:64184a968e3b 232 int setRfPower (int power);
gsfan 8:64184a968e3b 233
gsfan 8:64184a968e3b 234 /** set system time
gsfan 8:64184a968e3b 235 * @param time date time (UTC)
gsfan 8:64184a968e3b 236 */
gsfan 8:64184a968e3b 237 int setTime (time_t time);
gsfan 8:64184a968e3b 238
gsfan 8:64184a968e3b 239 /** get system time
gsfan 8:64184a968e3b 240 * @return date time (UTC)
gsfan 8:64184a968e3b 241 */
gsfan 8:64184a968e3b 242 time_t getTime ();
gsfan 8:64184a968e3b 243
gsfan 8:64184a968e3b 244 /** set NTP server
gsfan 8:64184a968e3b 245 * @param host SNTP server
gsfan 8:64184a968e3b 246 * @param sec time sync interval, 0:one time
gsfan 8:64184a968e3b 247 */
gsfan 8:64184a968e3b 248 int ntpdate (char *host, int sec = 0);
gsfan 8:64184a968e3b 249
gsfan 8:64184a968e3b 250 /** GPIO output
gsfan 8:64184a968e3b 251 * @param port 10,11,30,31
gsfan 8:64184a968e3b 252 * @param out 0:set(high), 1:reset(low)
gsfan 8:64184a968e3b 253 */
gsfan 8:64184a968e3b 254 int setGpio (int port, int out);
gsfan 8:64184a968e3b 255
gsfan 8:64184a968e3b 256 /** Web server
gsfan 8:64184a968e3b 257 */
gsfan 8:64184a968e3b 258 int provisioning (char *user, char *pass);
gsfan 8:64184a968e3b 259
gsfan 8:64184a968e3b 260 /** standby mode
gsfan 8:64184a968e3b 261 * @param msec wakeup after
gsfan 8:64184a968e3b 262 * wakeup after msec or alarm1/2
gsfan 8:64184a968e3b 263 * core off, save to RTC ram
gsfan 8:64184a968e3b 264 */
gsfan 8:64184a968e3b 265 int standby (int msec);
gsfan 8:64184a968e3b 266
gsfan 8:64184a968e3b 267 /** deep sleep mode
gsfan 8:64184a968e3b 268 */
gsfan 8:64184a968e3b 269 int deepSleep ();
gsfan 8:64184a968e3b 270
gsfan 8:64184a968e3b 271 /** restore standby or deep sleep
gsfan 8:64184a968e3b 272 */
gsfan 8:64184a968e3b 273 int wakeup ();
gsfan 8:64184a968e3b 274
gsfan 8:64184a968e3b 275 // ----- GSwifi_sock.cpp -----
gsfan 8:64184a968e3b 276 /** Resolv hostname
gsfan 8:64184a968e3b 277 * @param name hostname
gsfan 8:64184a968e3b 278 * @param ip resolved ip address
gsfan 8:64184a968e3b 279 */
gsfan 8:64184a968e3b 280 int getHostByName(const char * host, char * ip);
gsfan 8:64184a968e3b 281
gsfan 8:64184a968e3b 282 /** TCP/UDP client
gsfan 8:64184a968e3b 283 * @return CID, -1:failure
gsfan 8:64184a968e3b 284 */
gsfan 8:64184a968e3b 285 int open (Protocol proto, const char *ip, int port, int src = 0);
gsfan 8:64184a968e3b 286
gsfan 8:64184a968e3b 287 /** TCP/UDP server
gsfan 8:64184a968e3b 288 * @return CID, -1:failure
gsfan 8:64184a968e3b 289 */
gsfan 8:64184a968e3b 290 int listen (Protocol proto, int port);
gsfan 8:64184a968e3b 291
gsfan 8:64184a968e3b 292 /** close client/server
gsfan 8:64184a968e3b 293 */
gsfan 8:64184a968e3b 294 int close (int cid);
gsfan 8:64184a968e3b 295
gsfan 8:64184a968e3b 296 /** send data tcp(s/c), udp(c)
gsfan 8:64184a968e3b 297 */
gsfan 8:64184a968e3b 298 int send (int cid, const char *buf, int len);
gsfan 8:64184a968e3b 299
gsfan 8:64184a968e3b 300 /*
gsfan 8:64184a968e3b 301 * send data udp(s)
gsfan 8:64184a968e3b 302 */
gsfan 8:64184a968e3b 303 int sendto (int cid, const char *buf, int len, const char *ip, int port);
gsfan 8:64184a968e3b 304
gsfan 8:64184a968e3b 305 /** recv data tcp(s/c), udp(c)
gsfan 8:64184a968e3b 306 * @return length
gsfan 8:64184a968e3b 307 */
gsfan 8:64184a968e3b 308 int recv (int cid, char *buf, int len);
gsfan 8:64184a968e3b 309
gsfan 8:64184a968e3b 310 /** recv data udp(s)
gsfan 8:64184a968e3b 311 * @return length
gsfan 8:64184a968e3b 312 */
gsfan 8:64184a968e3b 313 int recvfrom (int cid, char *buf, int len, char *ip, int *port);
gsfan 8:64184a968e3b 314
gsfan 8:64184a968e3b 315 /** readable recv data
gsfan 8:64184a968e3b 316 */
gsfan 8:64184a968e3b 317 int readable (int cid);
gsfan 8:64184a968e3b 318
gsfan 8:64184a968e3b 319 /** tcp/udp connected
gsfan 8:64184a968e3b 320 */
gsfan 8:64184a968e3b 321 bool isConnected (int cid);
gsfan 8:64184a968e3b 322
gsfan 8:64184a968e3b 323 int accept (int cid);
gsfan 8:64184a968e3b 324 int getRemote(int cid, char **ip, int *port);
gsfan 8:64184a968e3b 325
gsfan 8:64184a968e3b 326 // ----- GSwifi_http.cpp -----
gsfan 8:64184a968e3b 327 int httpGet (const char *host, int port, const char *uri, bool ssl = false, const char *user = NULL, const char *pwd = NULL);
gsfan 8:64184a968e3b 328 int httpPost (const char *host, int port, const char *uri, const char *body, bool ssl = false, const char *user = NULL, const char *pwd = NULL);
gsfan 8:64184a968e3b 329 int base64encode (const char *input, int length, char *output, int len);
gsfan 8:64184a968e3b 330 int urlencode (const char *str, char *buf, int len);
gsfan 8:64184a968e3b 331 int urldecode (const char *str, char *buf, int len);
gsfan 8:64184a968e3b 332
gsfan 8:64184a968e3b 333 // ----- GSwifi_msg.cpp -----
gsfan 8:64184a968e3b 334
gsfan 8:64184a968e3b 335 // ----- GSwifi_at.cpp -----
gsfan 8:64184a968e3b 336 /** Send a command to the wifi module. Check if the module is in command mode. If not enter in command mode
gsfan 8:64184a968e3b 337 * @param cmd string to be sent
gsfan 8:64184a968e3b 338 * @param res need response
gsfan 8:64184a968e3b 339 * @param timeout
gsfan 8:64184a968e3b 340 * @returns 0 if successful
gsfan 8:64184a968e3b 341 */
gsfan 8:64184a968e3b 342 int sendCommand(const char * cmd, Response res = RES_NULL, int timeout = DEFAULT_WAIT_RESP_TIMEOUT);
gsfan 8:64184a968e3b 343
gsfan 8:64184a968e3b 344 /** Send a command to the wifi module. Check if the module is in command mode. If not enter in command mode
gsfan 8:64184a968e3b 345 * @param data string to be sent
gsfan 8:64184a968e3b 346 * @param res need response
gsfan 8:64184a968e3b 347 * @param timeout
gsfan 8:64184a968e3b 348 * @param cmd
gsfan 8:64184a968e3b 349 * @returns 0 if successful
gsfan 8:64184a968e3b 350 */
gsfan 8:64184a968e3b 351 int sendData(const char * data, int len, int timeout = DEFAULT_WAIT_RESP_TIMEOUT, const char * cmd = NULL);
gsfan 8:64184a968e3b 352
gsfan 5:78943b3945b5 353
gsfan 5:78943b3945b5 354 protected:
gsfan 5:78943b3945b5 355
gsfan 5:78943b3945b5 356 static GSwifi * _inst;
gsfan 8:64184a968e3b 357 #ifdef RTOS_H
gsfan 8:64184a968e3b 358 Thread *_threadPoll;
gsfan 8:64184a968e3b 359 Mutex _mutexUart;
gsfan 8:64184a968e3b 360 #endif
gsfan 5:78943b3945b5 361
gsfan 8:64184a968e3b 362 // Serial _gs;
gsfan 8:64184a968e3b 363 RawSerial _gs;
gsfan 8:64184a968e3b 364 int _baud;
gsfan 8:64184a968e3b 365 DigitalIn *_cts;
gsfan 8:64184a968e3b 366 DigitalOut *_rts;
gsfan 8:64184a968e3b 367 int _flow;
gsfan 8:64184a968e3b 368 #if defined(TARGET_LPC1768) || defined(TARGET_LPC2368) || defined(TARGET_LPC4088)
gsfan 8:64184a968e3b 369 LPC_UART1_TypeDef *_uart;
gsfan 8:64184a968e3b 370 #elif defined(TARGET_LPC11U24)
gsfan 8:64184a968e3b 371 LPC_USART_Type *_uart;
gsfan 8:64184a968e3b 372 #endif
gsfan 8:64184a968e3b 373 DigitalInOut _reset;
gsfan 8:64184a968e3b 374 DigitalInOut *_alarm;
gsfan 5:78943b3945b5 375
gsfan 8:64184a968e3b 376 struct STATE {
gsfan 8:64184a968e3b 377 WiFiMode wm;
gsfan 8:64184a968e3b 378 Security sec;
gsfan 8:64184a968e3b 379 char ssid[35];
gsfan 8:64184a968e3b 380 char pass[66];
gsfan 8:64184a968e3b 381 char ip[16];
gsfan 8:64184a968e3b 382 char netmask[16];
gsfan 8:64184a968e3b 383 char gateway[16];
gsfan 8:64184a968e3b 384 char nameserver[16];
gsfan 8:64184a968e3b 385 char mac[18];
gsfan 8:64184a968e3b 386 char resolv[16];
gsfan 8:64184a968e3b 387 char name[32];
gsfan 8:64184a968e3b 388 int rssi;
gsfan 5:78943b3945b5 389 bool dhcp;
gsfan 8:64184a968e3b 390 time_t time;
gsfan 8:64184a968e3b 391
gsfan 8:64184a968e3b 392 bool associated;
gsfan 8:64184a968e3b 393 volatile Mode mode;
gsfan 8:64184a968e3b 394 volatile Status status;
gsfan 5:78943b3945b5 395 bool escape;
gsfan 8:64184a968e3b 396 volatile bool ok, failure;
gsfan 10:7d8134e7df01 397 volatile Response res;
gsfan 5:78943b3945b5 398 int cid, acid;
gsfan 5:78943b3945b5 399 int n;
gsfan 8:64184a968e3b 400 CircBuffer<char> *buf;
gsfan 8:64184a968e3b 401 } _state;
gsfan 5:78943b3945b5 402
gsfan 8:64184a968e3b 403 struct CONNECTION {
gsfan 8:64184a968e3b 404 Protocol protocol;
gsfan 8:64184a968e3b 405 Type type;
gsfan 5:78943b3945b5 406 bool connected;
gsfan 5:78943b3945b5 407 char ip[16];
gsfan 5:78943b3945b5 408 int port;
gsfan 5:78943b3945b5 409 CircBuffer<char> *buf;
gsfan 8:64184a968e3b 410 volatile bool received;
gsfan 8:64184a968e3b 411 volatile int parent;
gsfan 8:64184a968e3b 412 volatile bool accept;
gsfan 8:64184a968e3b 413 } _con[16];
gsfan 8:64184a968e3b 414
gsfan 8:64184a968e3b 415
gsfan 8:64184a968e3b 416 // ----- GSwifi.cpp -----
gsfan 8:64184a968e3b 417 #ifdef RTOS_H
gsfan 8:64184a968e3b 418 static void threadPoll (void const *args);
gsfan 8:64184a968e3b 419 #endif
gsfan 8:64184a968e3b 420
gsfan 8:64184a968e3b 421 // ----- GSwifi_util.cpp -----
gsfan 8:64184a968e3b 422 int x2i (char c);
gsfan 8:64184a968e3b 423 char i2x (int i);
gsfan 8:64184a968e3b 424 int from_hex (int ch);
gsfan 8:64184a968e3b 425 int to_hex (int code);
gsfan 8:64184a968e3b 426
gsfan 8:64184a968e3b 427 // ----- GSwifi_msg.cpp -----
gsfan 8:64184a968e3b 428 void recvData (char c);
gsfan 8:64184a968e3b 429 int parseMessage ();
gsfan 8:64184a968e3b 430 void msgOk (const char*);
gsfan 8:64184a968e3b 431 void msgError (const char*);
gsfan 8:64184a968e3b 432 void msgConnect (const char*);
gsfan 8:64184a968e3b 433 void msgDisconnect (const char*);
gsfan 8:64184a968e3b 434 void msgDisassociated (const char*);
gsfan 8:64184a968e3b 435 void msgReset (const char*);
gsfan 8:64184a968e3b 436 void msgOutofStandby (const char*);
gsfan 8:64184a968e3b 437 void msgOutofDeepsleep (const char*);
gsfan 8:64184a968e3b 438 void resNormal (const char*);
gsfan 8:64184a968e3b 439 void resConnect (const char*);
gsfan 8:64184a968e3b 440 void resWps (const char*);
gsfan 8:64184a968e3b 441 void resMacAddress (const char*);
gsfan 8:64184a968e3b 442 void resIp (const char*);
gsfan 8:64184a968e3b 443 void resLookup (const char*);
gsfan 8:64184a968e3b 444 void resRssi (const char*);
gsfan 8:64184a968e3b 445 void resTime (const char*);
gsfan 8:64184a968e3b 446 void resChannel (const char*);
gsfan 8:64184a968e3b 447 void resStatus (const char*);
gsfan 5:78943b3945b5 448
gsfan 8:64184a968e3b 449 // ----- GSwifi_at.cpp -----
gsfan 8:64184a968e3b 450 void clearFlags ();
gsfan 8:64184a968e3b 451 int cmdAT ();
gsfan 8:64184a968e3b 452 int cmdE (bool n);
gsfan 8:64184a968e3b 453 int cmdR (bool n);
gsfan 8:64184a968e3b 454 int cmdNMAC (const char *s = NULL);
gsfan 8:64184a968e3b 455 int cmdWREGDOMAIN (int n = CFG_WREGDOMAIN);
gsfan 8:64184a968e3b 456 int cmdWS ();
gsfan 8:64184a968e3b 457 int cmdWM (int n);
gsfan 8:64184a968e3b 458 int cmdWA (const char *s);
gsfan 8:64184a968e3b 459 int cmdWD ();
gsfan 8:64184a968e3b 460 int cmdWWPS (bool n, const char *p = NULL);
gsfan 8:64184a968e3b 461 int cmdNSTAT ();
gsfan 8:64184a968e3b 462 int cmdWSTATUS ();
gsfan 8:64184a968e3b 463 int cmdWRSSI ();
gsfan 8:64184a968e3b 464 int cmdWAUTH (int n);
gsfan 8:64184a968e3b 465 int cmdWWEP (int n, const char *s);
gsfan 8:64184a968e3b 466 int cmdWPAPSK (const char *s, const char *p);
gsfan 8:64184a968e3b 467 int cmdWRXACTIVE (bool n);
gsfan 8:64184a968e3b 468 int cmdWRXPS (bool n);
gsfan 8:64184a968e3b 469 int cmdWP (int n);
gsfan 8:64184a968e3b 470 int cmdNDHCP (bool n, const char *s = NULL, int m = CFG_TIMEOUT);
gsfan 8:64184a968e3b 471 int cmdDHCPSRVR (bool n);
gsfan 8:64184a968e3b 472 int cmdNSET (const char *s, const char *t, const char *u);
gsfan 8:64184a968e3b 473 int cmdDNS (bool n, const char *s);
gsfan 8:64184a968e3b 474 int cmdDNSLOOKUP (const char *s);
gsfan 8:64184a968e3b 475 int cmdDNSSET (const char *s);
gsfan 8:64184a968e3b 476 int cmdSTORENWCONN ();
gsfan 8:64184a968e3b 477 int cmdRESTORENWCONN ();
gsfan 8:64184a968e3b 478 int cmdBDATA (bool n);
gsfan 8:64184a968e3b 479 int cmdNCTCP (const char *s, int n);
gsfan 8:64184a968e3b 480 int cmdNCUDP (const char *s, int n, int m = 0);
gsfan 8:64184a968e3b 481 int cmdNSTCP (int n);
gsfan 8:64184a968e3b 482 int cmdNSUDP (int n);
gsfan 8:64184a968e3b 483 int cmdNCLOSE (int n);
gsfan 8:64184a968e3b 484 int cmdNCLOSEALL ();
gsfan 8:64184a968e3b 485 int cmdHTTPCONF (int n, const char *s);
gsfan 8:64184a968e3b 486 int cmdHTTPCONFDEL (int n);
gsfan 8:64184a968e3b 487 int cmdHTTPOPEN (const char *s, int n = 80, bool m = false);
gsfan 8:64184a968e3b 488 int cmdHTTPSEND (int n, bool m, const char *s, int t = 0);
gsfan 8:64184a968e3b 489 int cmdHTTPCLOSE (int n);
gsfan 8:64184a968e3b 490 int cmdPSDPSLEEP (int n = 0);
gsfan 8:64184a968e3b 491 int cmdPSSTBY (int n, int m = 0);
gsfan 8:64184a968e3b 492 int cmdWEBPROV (const char *s, const char *p);
gsfan 8:64184a968e3b 493 int cmdSETTIME (const char *s, const char *t);
gsfan 8:64184a968e3b 494 int cmdGETTIME ();
gsfan 8:64184a968e3b 495 int cmdNTIMESYNC (bool n, const char *s, int m = 0);
gsfan 8:64184a968e3b 496 int cmdDGPIO (int n, int m);
gsfan 8:64184a968e3b 497
gsfan 8:64184a968e3b 498 // ----- GSwifi_hal.cpp -----
gsfan 8:64184a968e3b 499 void setReset (bool flg);
gsfan 8:64184a968e3b 500 void setAlarm (bool flg);
gsfan 8:64184a968e3b 501 void isrUart ();
gsfan 8:64184a968e3b 502 int getUart ();
gsfan 8:64184a968e3b 503 void putUart (char c);
gsfan 8:64184a968e3b 504 void setRts (bool flg);
gsfan 8:64184a968e3b 505 int lockUart (int ms);
gsfan 8:64184a968e3b 506 void unlockUart ();
gsfan 8:64184a968e3b 507 void initUart (PinName cts, PinName rts, PinName alarm, int baud);
gsfan 8:64184a968e3b 508
gsfan 5:78943b3945b5 509 };
gsfan 5:78943b3945b5 510
samux 1:fb4494783863 511 #endif