GainSpan Wi-Fi library see: http://mbed.org/users/gsfan/notebook/gainspan_wifi/
Dependents: GSwifi_httpd GSwifi_websocket GSwifi_tcpclient GSwifi_tcpserver ... more
Fork of GSwifi by
GainSpan Wi-Fi library
The GS1011 is an ultra low power 802.11b wireless module from GainSpan.
see: http://mbed.org/users/gsfan/notebook/gainspan_wifi/
ゲインスパン Wi-Fi モジュール ライブラリ
ゲインスパン社の低電力 Wi-Fiモジュール(無線LAN) GS1011 シリーズ用のライブラリです。
解説: http://mbed.org/users/gsfan/notebook/gainspan_wifi/
GSwifi.h@42:9b3c38d66fa8, 2013-12-18 (annotated)
- Committer:
- gsfan
- Date:
- Wed Dec 18 01:16:04 2013 +0000
- Revision:
- 42:9b3c38d66fa8
- Parent:
- 41:0afda15e9bb4
fix reconnect
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gsfan | 25:f6e5622d2930 | 1 | /* Copyright (C) 2013 gsfan, MIT License |
gsfan | 25:f6e5622d2930 | 2 | * |
gsfan | 25:f6e5622d2930 | 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software |
gsfan | 25:f6e5622d2930 | 4 | * and associated documentation files (the "Software"), to deal in the Software without restriction, |
gsfan | 25:f6e5622d2930 | 5 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, |
gsfan | 25:f6e5622d2930 | 6 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is |
gsfan | 25:f6e5622d2930 | 7 | * furnished to do so, subject to the following conditions: |
gsfan | 25:f6e5622d2930 | 8 | * |
gsfan | 25:f6e5622d2930 | 9 | * The above copyright notice and this permission notice shall be included in all copies or |
gsfan | 25:f6e5622d2930 | 10 | * substantial portions of the Software. |
gsfan | 25:f6e5622d2930 | 11 | * |
gsfan | 25:f6e5622d2930 | 12 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING |
gsfan | 25:f6e5622d2930 | 13 | * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
gsfan | 25:f6e5622d2930 | 14 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, |
gsfan | 25:f6e5622d2930 | 15 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
gsfan | 25:f6e5622d2930 | 16 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
gsfan | 0:2f6062c6d018 | 17 | */ |
gsfan | 0:2f6062c6d018 | 18 | /** @file |
gsfan | 0:2f6062c6d018 | 19 | * @brief Gainspan wi-fi module library for mbed |
gsfan | 0:2f6062c6d018 | 20 | * GS1011MIC, GS1011MIP, GainSpan WiFi Breakout, etc. |
gsfan | 0:2f6062c6d018 | 21 | */ |
gsfan | 0:2f6062c6d018 | 22 | |
gsfan | 7:b75b7fc144ff | 23 | #ifndef _GSWIFI_H_ |
gsfan | 7:b75b7fc144ff | 24 | #define _GSWIFI_H_ |
gsfan | 7:b75b7fc144ff | 25 | |
gsfan | 26:b347ee3a1087 | 26 | #include "dbg.h" |
gsfan | 0:2f6062c6d018 | 27 | #include "mbed.h" |
gsfan | 25:f6e5622d2930 | 28 | #include "CBuffer.h" |
gsfan | 26:b347ee3a1087 | 29 | #include "GSFunctionPointer.h" |
gsfan | 0:2f6062c6d018 | 30 | #include "host.h" |
gsfan | 0:2f6062c6d018 | 31 | #include "ipaddr.h" |
gsfan | 26:b347ee3a1087 | 32 | #include "GSwifi_conf.h" |
gsfan | 36:a70b11e1560f | 33 | #include <ctype.h> |
gsfan | 35:515ec79792d3 | 34 | #include <stdlib.h> |
gsfan | 36:a70b11e1560f | 35 | #include <string.h> |
gsfan | 0:2f6062c6d018 | 36 | |
gsfan | 25:f6e5622d2930 | 37 | |
gsfan | 23:a783c62c36d0 | 38 | #ifdef GS_UART_DIRECT |
gsfan | 36:a70b11e1560f | 39 | #if defined(TARGET_LPC1768) || defined(TARGET_LPC2368) || defined(TARGET_LPC11U24) |
gsfan | 36:a70b11e1560f | 40 | #define _gs_getc() _uart->RBR |
gsfan | 36:a70b11e1560f | 41 | #define _gs_putc(c) while(!(_uart->LSR & (1<<5))); _uart->THR = c |
gsfan | 33:b5a5a1e6325f | 42 | #elif defined(TARGET_KL25Z) |
gsfan | 33:b5a5a1e6325f | 43 | #error "no support GS_UART_DIRECT" |
gsfan | 23:a783c62c36d0 | 44 | #endif |
gsfan | 33:b5a5a1e6325f | 45 | #else // GS_UART_DIRECT |
gsfan | 23:a783c62c36d0 | 46 | #define _gs_getc() _gs.getc() |
gsfan | 23:a783c62c36d0 | 47 | #define _gs_putc(c) _gs.putc(c) |
gsfan | 23:a783c62c36d0 | 48 | #endif |
gsfan | 23:a783c62c36d0 | 49 | |
gsfan | 26:b347ee3a1087 | 50 | #ifdef GS_SYSLOG |
gsfan | 26:b347ee3a1087 | 51 | #define LOG(...) printf("" __VA_ARGS__) |
gsfan | 26:b347ee3a1087 | 52 | #else |
gsfan | 26:b347ee3a1087 | 53 | #define LOG(...) |
gsfan | 26:b347ee3a1087 | 54 | #endif |
gsfan | 26:b347ee3a1087 | 55 | |
gsfan | 26:b347ee3a1087 | 56 | |
gsfan | 0:2f6062c6d018 | 57 | /** |
gsfan | 25:f6e5622d2930 | 58 | * GSwifi class |
gsfan | 25:f6e5622d2930 | 59 | */ |
gsfan | 25:f6e5622d2930 | 60 | class GSwifi { |
gsfan | 25:f6e5622d2930 | 61 | public: |
gsfan | 25:f6e5622d2930 | 62 | |
gsfan | 25:f6e5622d2930 | 63 | /** |
gsfan | 0:2f6062c6d018 | 64 | * Wi-Fi security |
gsfan | 0:2f6062c6d018 | 65 | */ |
gsfan | 0:2f6062c6d018 | 66 | enum GSSECURITY { |
gsfan | 0:2f6062c6d018 | 67 | GSSEC_AUTO = 0, |
gsfan | 0:2f6062c6d018 | 68 | GSSEC_NONE = 0, |
gsfan | 0:2f6062c6d018 | 69 | GSSEC_OPEN = 1, |
gsfan | 0:2f6062c6d018 | 70 | GSSEC_WEP = 2, |
gsfan | 0:2f6062c6d018 | 71 | GSSEC_WPA_PSK = 4, |
gsfan | 0:2f6062c6d018 | 72 | GSSEC_WPA2_PSK = 8, |
gsfan | 0:2f6062c6d018 | 73 | GSSEC_WPA_ENT = 16, |
gsfan | 0:2f6062c6d018 | 74 | GSSEC_WPA2_ENT = 32, |
gsfan | 0:2f6062c6d018 | 75 | GSSEC_WPS_BUTTON = 64, |
gsfan | 28:fbba4c58d14c | 76 | GSSEC_WPS_PIN, |
gsfan | 0:2f6062c6d018 | 77 | }; |
gsfan | 0:2f6062c6d018 | 78 | |
gsfan | 0:2f6062c6d018 | 79 | /** |
gsfan | 0:2f6062c6d018 | 80 | * TCP/IP protocol |
gsfan | 0:2f6062c6d018 | 81 | */ |
gsfan | 0:2f6062c6d018 | 82 | enum GSPROTOCOL { |
gsfan | 0:2f6062c6d018 | 83 | GSPROT_UDP = 0, |
gsfan | 0:2f6062c6d018 | 84 | GSPROT_TCP = 1, |
gsfan | 0:2f6062c6d018 | 85 | GSPROT_HTTPGET, |
gsfan | 0:2f6062c6d018 | 86 | GSPROT_HTTPPOST, |
gsfan | 18:4b97804c37d1 | 87 | GSPROT_HTTPD, |
gsfan | 0:2f6062c6d018 | 88 | }; |
gsfan | 0:2f6062c6d018 | 89 | |
gsfan | 0:2f6062c6d018 | 90 | /** |
gsfan | 0:2f6062c6d018 | 91 | * Client/Server |
gsfan | 0:2f6062c6d018 | 92 | */ |
gsfan | 0:2f6062c6d018 | 93 | enum GSTYPE { |
gsfan | 0:2f6062c6d018 | 94 | GSTYPE_CLIENT = 0, |
gsfan | 0:2f6062c6d018 | 95 | GSTYPE_SERVER = 1, |
gsfan | 0:2f6062c6d018 | 96 | }; |
gsfan | 0:2f6062c6d018 | 97 | |
gsfan | 0:2f6062c6d018 | 98 | enum GSRESPONCE { |
gsfan | 23:a783c62c36d0 | 99 | GSRES_NONE, |
gsfan | 0:2f6062c6d018 | 100 | GSRES_NORMAL, |
gsfan | 0:2f6062c6d018 | 101 | GSRES_CONNECT, |
gsfan | 0:2f6062c6d018 | 102 | GSRES_WPS, |
gsfan | 0:2f6062c6d018 | 103 | GSRES_MACADDRESS, |
gsfan | 0:2f6062c6d018 | 104 | GSRES_DHCP, |
gsfan | 0:2f6062c6d018 | 105 | GSRES_DNSLOOKUP, |
gsfan | 0:2f6062c6d018 | 106 | GSRES_HTTP, |
gsfan | 1:b127c6c5241d | 107 | GSRES_RSSI, |
gsfan | 5:6def1d0df519 | 108 | GSRES_TIME, |
gsfan | 40:72f70748f6e8 | 109 | GSRES_STATUS, |
gsfan | 0:2f6062c6d018 | 110 | }; |
gsfan | 0:2f6062c6d018 | 111 | |
gsfan | 0:2f6062c6d018 | 112 | enum GSMODE { |
gsfan | 0:2f6062c6d018 | 113 | GSMODE_COMMAND, |
gsfan | 0:2f6062c6d018 | 114 | GSMODE_DATA_RX, |
gsfan | 0:2f6062c6d018 | 115 | GSMODE_DATA_RXUDP, |
gsfan | 0:2f6062c6d018 | 116 | GSMODE_DATA_RX_BULK, |
gsfan | 0:2f6062c6d018 | 117 | GSMODE_DATA_RXUDP_BULK, |
gsfan | 0:2f6062c6d018 | 118 | GSMODE_DATA_RXHTTP, |
gsfan | 0:2f6062c6d018 | 119 | }; |
gsfan | 0:2f6062c6d018 | 120 | |
gsfan | 0:2f6062c6d018 | 121 | enum GSSTATUS { |
gsfan | 0:2f6062c6d018 | 122 | GSSTAT_READY, |
gsfan | 0:2f6062c6d018 | 123 | GSSTAT_STANDBY, |
gsfan | 0:2f6062c6d018 | 124 | GSSTAT_WAKEUP, |
gsfan | 0:2f6062c6d018 | 125 | GSSTAT_DEEPSLEEP, |
gsfan | 0:2f6062c6d018 | 126 | }; |
gsfan | 0:2f6062c6d018 | 127 | |
gsfan | 0:2f6062c6d018 | 128 | /** |
gsfan | 0:2f6062c6d018 | 129 | * data receive callback function |
gsfan | 0:2f6062c6d018 | 130 | */ |
gsfan | 1:b127c6c5241d | 131 | typedef void (*onGsReceiveFunc)(int cid, int len); |
gsfan | 0:2f6062c6d018 | 132 | |
gsfan | 0:2f6062c6d018 | 133 | struct GS_Socket { |
gsfan | 0:2f6062c6d018 | 134 | GSTYPE type; |
gsfan | 0:2f6062c6d018 | 135 | GSPROTOCOL protocol; |
gsfan | 0:2f6062c6d018 | 136 | bool connect; |
gsfan | 0:2f6062c6d018 | 137 | Host host; |
gsfan | 25:f6e5622d2930 | 138 | CircBuffer<char> *data; |
gsfan | 1:b127c6c5241d | 139 | int lcid; |
gsfan | 26:b347ee3a1087 | 140 | bool received; |
gsfan | 26:b347ee3a1087 | 141 | // onGsReceiveFunc onGsReceive; |
gsfan | 26:b347ee3a1087 | 142 | GSFunctionPointer onGsReceive; |
gsfan | 26:b347ee3a1087 | 143 | }; |
gsfan | 26:b347ee3a1087 | 144 | |
gsfan | 35:515ec79792d3 | 145 | #ifdef GS_ENABLE_HTTPD |
gsfan | 26:b347ee3a1087 | 146 | enum GSHTTPDMODE { |
gsfan | 26:b347ee3a1087 | 147 | GSHTTPDMODE_REQUEST, |
gsfan | 26:b347ee3a1087 | 148 | GSHTTPDMODE_HEAD, |
gsfan | 26:b347ee3a1087 | 149 | GSHTTPDMODE_SPACE, |
gsfan | 26:b347ee3a1087 | 150 | GSHTTPDMODE_BODY, |
gsfan | 26:b347ee3a1087 | 151 | GSHTTPDMODE_ERROR, |
gsfan | 26:b347ee3a1087 | 152 | GSHTTPDMODE_WEBSOCKET, |
gsfan | 26:b347ee3a1087 | 153 | GSHTTPDMODE_WEBSOCKET_MASK, |
gsfan | 26:b347ee3a1087 | 154 | GSHTTPDMODE_WEBSOCKET_BODY, |
gsfan | 0:2f6062c6d018 | 155 | }; |
gsfan | 0:2f6062c6d018 | 156 | |
gsfan | 26:b347ee3a1087 | 157 | struct GS_httpd { |
gsfan | 26:b347ee3a1087 | 158 | GSHTTPDMODE mode; |
gsfan | 26:b347ee3a1087 | 159 | int type; |
gsfan | 26:b347ee3a1087 | 160 | char *buf; // body |
gsfan | 26:b347ee3a1087 | 161 | int len; // length of buf |
gsfan | 26:b347ee3a1087 | 162 | char *uri; |
gsfan | 26:b347ee3a1087 | 163 | char *file; |
gsfan | 26:b347ee3a1087 | 164 | char *query; |
gsfan | 26:b347ee3a1087 | 165 | int length; // content-length |
gsfan | 26:b347ee3a1087 | 166 | int keepalive; |
gsfan | 26:b347ee3a1087 | 167 | Host host; |
gsfan | 35:515ec79792d3 | 168 | #ifdef GS_ENABLE_WEBSOCKET |
gsfan | 26:b347ee3a1087 | 169 | int websocket; |
gsfan | 26:b347ee3a1087 | 170 | char *websocket_key; |
gsfan | 26:b347ee3a1087 | 171 | int websocket_flg; |
gsfan | 26:b347ee3a1087 | 172 | char websocket_mask[4]; |
gsfan | 26:b347ee3a1087 | 173 | int websocket_payload; |
gsfan | 26:b347ee3a1087 | 174 | #endif |
gsfan | 26:b347ee3a1087 | 175 | }; |
gsfan | 26:b347ee3a1087 | 176 | |
gsfan | 26:b347ee3a1087 | 177 | typedef void (*onHttpdCgiFunc)(int cid, GS_httpd *gshttpd); |
gsfan | 26:b347ee3a1087 | 178 | |
gsfan | 26:b347ee3a1087 | 179 | struct GS_httpd_handler { |
gsfan | 26:b347ee3a1087 | 180 | char *uri; |
gsfan | 26:b347ee3a1087 | 181 | char *dir; |
gsfan | 26:b347ee3a1087 | 182 | onHttpdCgiFunc onHttpCgi; |
gsfan | 26:b347ee3a1087 | 183 | }; |
gsfan | 35:515ec79792d3 | 184 | #endif // GS_ENABLE_HTTPD |
gsfan | 26:b347ee3a1087 | 185 | |
gsfan | 25:f6e5622d2930 | 186 | // ----- GSwifi.cpp ----- |
gsfan | 0:2f6062c6d018 | 187 | /** |
gsfan | 41:0afda15e9bb4 | 188 | * default constructor (no fllow controll) |
gsfan | 41:0afda15e9bb4 | 189 | * @param p_tx mbed TXD pin (GS RXD) |
gsfan | 41:0afda15e9bb4 | 190 | * @param p_rx mbed RXD pin (GS TXD) |
gsfan | 41:0afda15e9bb4 | 191 | * @param p_reset GS RESET pin |
gsfan | 41:0afda15e9bb4 | 192 | * @param p_alarm GS ALARM pin |
gsfan | 41:0afda15e9bb4 | 193 | * @param baud uart baud rate |
gsfan | 0:2f6062c6d018 | 194 | */ |
gsfan | 25:f6e5622d2930 | 195 | GSwifi (PinName p_tx, PinName p_rx, PinName p_reset, PinName p_alarm = NC, int baud = GS_BAUD); |
gsfan | 0:2f6062c6d018 | 196 | /** |
gsfan | 41:0afda15e9bb4 | 197 | * default constructor (with hardware fllow controll) |
gsfan | 41:0afda15e9bb4 | 198 | * @param p_tx mbed TXD pin (GS RXD) |
gsfan | 41:0afda15e9bb4 | 199 | * @param p_rx mbed RXD pin (GS TXD) |
gsfan | 41:0afda15e9bb4 | 200 | * @param p_cts mbed CTS pin (GS RTS) |
gsfan | 41:0afda15e9bb4 | 201 | * @param p_rts mbed RTS pin (GS CTS) |
gsfan | 41:0afda15e9bb4 | 202 | * @param p_reset GS RESET pin |
gsfan | 41:0afda15e9bb4 | 203 | * @param p_alarm GS ALARM pin |
gsfan | 41:0afda15e9bb4 | 204 | * @param baud uart baud rate |
gsfan | 0:2f6062c6d018 | 205 | */ |
gsfan | 25:f6e5622d2930 | 206 | GSwifi (PinName p_tx, PinName p_rx, PinName p_cts, PinName p_rts, PinName p_reset, PinName p_alarm = NC, int baud = GS_BAUD); |
gsfan | 25:f6e5622d2930 | 207 | /** |
gsfan | 41:0afda15e9bb4 | 208 | * polling |
gsfan | 0:2f6062c6d018 | 209 | */ |
gsfan | 37:e61ea8267415 | 210 | void poll(); |
gsfan | 37:e61ea8267415 | 211 | /** |
gsfan | 41:0afda15e9bb4 | 212 | * send command |
gsfan | 37:e61ea8267415 | 213 | */ |
gsfan | 12:63e714550791 | 214 | int command (const char *cmd, GSRESPONCE res, int timeout = GS_TIMEOUT); |
gsfan | 0:2f6062c6d018 | 215 | /** |
gsfan | 26:b347ee3a1087 | 216 | * reset recv responce |
gsfan | 0:2f6062c6d018 | 217 | */ |
gsfan | 26:b347ee3a1087 | 218 | void resetResponse (GSRESPONCE res); |
gsfan | 26:b347ee3a1087 | 219 | /** |
gsfan | 26:b347ee3a1087 | 220 | * wait recv responce |
gsfan | 26:b347ee3a1087 | 221 | */ |
gsfan | 26:b347ee3a1087 | 222 | int waitResponse (int ms); |
gsfan | 0:2f6062c6d018 | 223 | /** |
gsfan | 0:2f6062c6d018 | 224 | * associate infrastructure |
gsfan | 0:2f6062c6d018 | 225 | * @param sec GSSEC_OPEN, GSSEC_WEP, GSSEC_WPA_PSK, GSSEC_WPA2_PSK, GSSEC_WPS_BUTTON |
gsfan | 2:c6e0e97901b3 | 226 | * @param ssid SSID |
gsfan | 2:c6e0e97901b3 | 227 | * @param pass pass phrase |
gsfan | 2:c6e0e97901b3 | 228 | * @param dhcp 0:static ip, 1:dhcp |
gsfan | 41:0afda15e9bb4 | 229 | * @param reconnect auto re-connect time |
gsfan | 41:0afda15e9bb4 | 230 | * @param name my host name |
gsfan | 2:c6e0e97901b3 | 231 | * @retval 0 success |
gsfan | 2:c6e0e97901b3 | 232 | * @retval -1 failure |
gsfan | 0:2f6062c6d018 | 233 | */ |
gsfan | 41:0afda15e9bb4 | 234 | int connect (GSSECURITY sec, const char *ssid, const char *pass, int dhcp = 1, int reconnect = GS_RECONNECT, char *name = NULL); |
gsfan | 0:2f6062c6d018 | 235 | /** |
gsfan | 0:2f6062c6d018 | 236 | * adhock |
gsfan | 0:2f6062c6d018 | 237 | * @param sec GSSEC_OPEN or GSSEC_WEP |
gsfan | 2:c6e0e97901b3 | 238 | * @param ssid SSID |
gsfan | 2:c6e0e97901b3 | 239 | * @param pass 10 or 26 hexadecimal digits |
gsfan | 2:c6e0e97901b3 | 240 | * @param ipaddr my ip address |
gsfan | 2:c6e0e97901b3 | 241 | * @param netmask subnet mask |
gsfan | 2:c6e0e97901b3 | 242 | * @retval 0 success |
gsfan | 2:c6e0e97901b3 | 243 | * @retval -1 failure |
gsfan | 0:2f6062c6d018 | 244 | */ |
gsfan | 19:cad912f5a6ba | 245 | int adhock (GSSECURITY sec, const char *ssid, const char *pass, IpAddr ipaddr, IpAddr netmask); |
gsfan | 0:2f6062c6d018 | 246 | /** |
gsfan | 0:2f6062c6d018 | 247 | * limited AP |
gsfan | 0:2f6062c6d018 | 248 | * @param sec GSSEC_OPEN or GSSEC_WEP |
gsfan | 2:c6e0e97901b3 | 249 | * @param ssid SSID |
gsfan | 0:2f6062c6d018 | 250 | * @param pass 10 or 26 hexadecimal digits |
gsfan | 2:c6e0e97901b3 | 251 | * @param ipaddr my ip address (dhcp start address) |
gsfan | 2:c6e0e97901b3 | 252 | * @param netmask subnet mask |
gsfan | 41:0afda15e9bb4 | 253 | * @param dns my host name |
gsfan | 2:c6e0e97901b3 | 254 | * @retval 0 success |
gsfan | 2:c6e0e97901b3 | 255 | * @retval -1 failure |
gsfan | 0:2f6062c6d018 | 256 | * firmware: s2w-secureweb, s2w-web, s2w-wpsweb |
gsfan | 0:2f6062c6d018 | 257 | */ |
gsfan | 22:9b077e2823ce | 258 | int limitedap (GSSECURITY sec, const char *ssid, const char *pass, IpAddr ipaddr, IpAddr netmask, char *dns = NULL); |
gsfan | 0:2f6062c6d018 | 259 | /** |
gsfan | 0:2f6062c6d018 | 260 | * unassociate |
gsfan | 0:2f6062c6d018 | 261 | */ |
gsfan | 0:2f6062c6d018 | 262 | int disconnect (); |
gsfan | 28:fbba4c58d14c | 263 | /** |
gsfan | 28:fbba4c58d14c | 264 | * re-connect |
gsfan | 28:fbba4c58d14c | 265 | */ |
gsfan | 28:fbba4c58d14c | 266 | int reconnect (); |
gsfan | 37:e61ea8267415 | 267 | /** |
gsfan | 37:e61ea8267415 | 268 | * main polling |
gsfan | 37:e61ea8267415 | 269 | */ |
gsfan | 37:e61ea8267415 | 270 | int setBaud (int baud); |
gsfan | 37:e61ea8267415 | 271 | /** |
gsfan | 37:e61ea8267415 | 272 | * change radio region |
gsfan | 37:e61ea8267415 | 273 | */ |
gsfan | 37:e61ea8267415 | 274 | int setRegion (int reg = GS_WREGDOMAIN); |
gsfan | 0:2f6062c6d018 | 275 | |
gsfan | 0:2f6062c6d018 | 276 | /** |
gsfan | 0:2f6062c6d018 | 277 | * use DHCP |
gsfan | 0:2f6062c6d018 | 278 | */ |
gsfan | 35:515ec79792d3 | 279 | int setAddress (char *name = NULL); |
gsfan | 0:2f6062c6d018 | 280 | /** |
gsfan | 0:2f6062c6d018 | 281 | * use static ip address |
gsfan | 0:2f6062c6d018 | 282 | */ |
gsfan | 0:2f6062c6d018 | 283 | int setAddress (IpAddr ipaddr, IpAddr netmask, IpAddr gateway, IpAddr nameserver); |
gsfan | 0:2f6062c6d018 | 284 | /** |
gsfan | 1:b127c6c5241d | 285 | * get ip address |
gsfan | 1:b127c6c5241d | 286 | */ |
gsfan | 1:b127c6c5241d | 287 | int getAddress (IpAddr &ipaddr, IpAddr &netmask, IpAddr &gateway, IpAddr &nameserver); |
gsfan | 1:b127c6c5241d | 288 | /** |
gsfan | 26:b347ee3a1087 | 289 | * get mac address |
gsfan | 26:b347ee3a1087 | 290 | */ |
gsfan | 29:1c4419512941 | 291 | int getMacAddress (char *mac); |
gsfan | 26:b347ee3a1087 | 292 | /** |
gsfan | 0:2f6062c6d018 | 293 | * resolv hostname |
gsfan | 2:c6e0e97901b3 | 294 | * @param name hostname |
gsfan | 2:c6e0e97901b3 | 295 | * @param addr resolved ip address |
gsfan | 0:2f6062c6d018 | 296 | */ |
gsfan | 0:2f6062c6d018 | 297 | int getHostByName (const char* name, IpAddr &addr); |
gsfan | 0:2f6062c6d018 | 298 | /** |
gsfan | 0:2f6062c6d018 | 299 | * resolv hostname |
gsfan | 2:c6e0e97901b3 | 300 | * @param host.name hostname |
gsfan | 2:c6e0e97901b3 | 301 | * @param host.ipaddr resolved ip address |
gsfan | 0:2f6062c6d018 | 302 | */ |
gsfan | 0:2f6062c6d018 | 303 | int getHostByName (Host &host); |
gsfan | 0:2f6062c6d018 | 304 | /** |
gsfan | 37:e61ea8267415 | 305 | * wifi connected |
gsfan | 37:e61ea8267415 | 306 | */ |
gsfan | 37:e61ea8267415 | 307 | bool isConnected (); |
gsfan | 37:e61ea8267415 | 308 | /** |
gsfan | 37:e61ea8267415 | 309 | * status |
gsfan | 37:e61ea8267415 | 310 | * @return GSSTATUS |
gsfan | 37:e61ea8267415 | 311 | */ |
gsfan | 37:e61ea8267415 | 312 | GSSTATUS getStatus (); |
gsfan | 37:e61ea8267415 | 313 | /** |
gsfan | 37:e61ea8267415 | 314 | * RSSI |
gsfan | 37:e61ea8267415 | 315 | * @return RSSI (dBm) |
gsfan | 37:e61ea8267415 | 316 | */ |
gsfan | 37:e61ea8267415 | 317 | int getRssi (); |
gsfan | 39:3360db93c65c | 318 | |
gsfan | 39:3360db93c65c | 319 | char *getSsid () { |
gsfan | 39:3360db93c65c | 320 | return _ssid; |
gsfan | 39:3360db93c65c | 321 | } |
gsfan | 39:3360db93c65c | 322 | char *getPass () { |
gsfan | 39:3360db93c65c | 323 | return _pass; |
gsfan | 39:3360db93c65c | 324 | } |
gsfan | 37:e61ea8267415 | 325 | #ifndef GS_LIB_TINY |
gsfan | 37:e61ea8267415 | 326 | /** |
gsfan | 0:2f6062c6d018 | 327 | * RF power |
gsfan | 0:2f6062c6d018 | 328 | * @param power 0(high)-7(low) |
gsfan | 0:2f6062c6d018 | 329 | */ |
gsfan | 0:2f6062c6d018 | 330 | int setRFPower (int power); |
gsfan | 0:2f6062c6d018 | 331 | /** |
gsfan | 0:2f6062c6d018 | 332 | * power save mode |
gsfan | 6:a423f0d197de | 333 | * @param active rx radio 0:switched off, 1:always on |
gsfan | 6:a423f0d197de | 334 | * @param save power save 0:disable, 1:enable |
gsfan | 0:2f6062c6d018 | 335 | */ |
gsfan | 2:c6e0e97901b3 | 336 | int powerSave (int active, int save); |
gsfan | 0:2f6062c6d018 | 337 | /** |
gsfan | 0:2f6062c6d018 | 338 | * standby mode |
gsfan | 0:2f6062c6d018 | 339 | * @param msec wakeup after |
gsfan | 0:2f6062c6d018 | 340 | * wakeup after msec or alarm1/2 |
gsfan | 0:2f6062c6d018 | 341 | * core off, save to RTC ram |
gsfan | 0:2f6062c6d018 | 342 | */ |
gsfan | 0:2f6062c6d018 | 343 | int standby (int msec); |
gsfan | 0:2f6062c6d018 | 344 | /** |
gsfan | 0:2f6062c6d018 | 345 | * restore standby |
gsfan | 0:2f6062c6d018 | 346 | */ |
gsfan | 0:2f6062c6d018 | 347 | int wakeup (); |
gsfan | 0:2f6062c6d018 | 348 | /** |
gsfan | 0:2f6062c6d018 | 349 | * deep sleep mode |
gsfan | 0:2f6062c6d018 | 350 | */ |
gsfan | 0:2f6062c6d018 | 351 | int deepSleep (); |
gsfan | 37:e61ea8267415 | 352 | |
gsfan | 5:6def1d0df519 | 353 | /** |
gsfan | 5:6def1d0df519 | 354 | * set NTP server |
gsfan | 6:a423f0d197de | 355 | * @param host SNTP server |
gsfan | 6:a423f0d197de | 356 | * @param sec time sync interval, 0:one time |
gsfan | 5:6def1d0df519 | 357 | */ |
gsfan | 5:6def1d0df519 | 358 | int ntpdate (Host host, int sec = 0); |
gsfan | 5:6def1d0df519 | 359 | /** |
gsfan | 6:a423f0d197de | 360 | * set system time |
gsfan | 6:a423f0d197de | 361 | * @param time date time (UTC) |
gsfan | 5:6def1d0df519 | 362 | */ |
gsfan | 5:6def1d0df519 | 363 | int setTime (time_t time); |
gsfan | 6:a423f0d197de | 364 | /** |
gsfan | 5:6def1d0df519 | 365 | * get RTC time |
gsfan | 6:a423f0d197de | 366 | * @return date time (UTC) |
gsfan | 5:6def1d0df519 | 367 | */ |
gsfan | 5:6def1d0df519 | 368 | time_t getTime (); |
gsfan | 6:a423f0d197de | 369 | /** |
gsfan | 6:a423f0d197de | 370 | * GPIO output |
gsfan | 6:a423f0d197de | 371 | * @param port 10,11,30,31 |
gsfan | 6:a423f0d197de | 372 | * @param out 0:set(high), 1:reset(low) |
gsfan | 6:a423f0d197de | 373 | */ |
gsfan | 6:a423f0d197de | 374 | int gpioOut (int port, int out); |
gsfan | 0:2f6062c6d018 | 375 | /** |
gsfan | 25:f6e5622d2930 | 376 | * Web server |
gsfan | 25:f6e5622d2930 | 377 | */ |
gsfan | 25:f6e5622d2930 | 378 | int provisioning (char *user, char *pass); |
gsfan | 25:f6e5622d2930 | 379 | /** |
gsfan | 25:f6e5622d2930 | 380 | * certificate |
gsfan | 25:f6e5622d2930 | 381 | */ |
gsfan | 25:f6e5622d2930 | 382 | int certAdd (const char *name, const char *cert, int len); |
gsfan | 37:e61ea8267415 | 383 | #endif |
gsfan | 0:2f6062c6d018 | 384 | |
gsfan | 25:f6e5622d2930 | 385 | // ----- GSwifi_sock.cpp ----- |
gsfan | 0:2f6062c6d018 | 386 | /** |
gsfan | 0:2f6062c6d018 | 387 | * tcp/udp client |
gsfan | 6:a423f0d197de | 388 | * @return CID, -1:failure |
gsfan | 0:2f6062c6d018 | 389 | */ |
gsfan | 36:a70b11e1560f | 390 | int open (Host &host, GSPROTOCOL pro, int port = 0); |
gsfan | 28:fbba4c58d14c | 391 | |
gsfan | 36:a70b11e1560f | 392 | int open (Host &host, GSPROTOCOL pro, onGsReceiveFunc ponGsReceive, int port = 0) { |
gsfan | 36:a70b11e1560f | 393 | int cid = open(host, pro, port); |
gsfan | 28:fbba4c58d14c | 394 | if (cid >= 0) _gs_sock[cid].onGsReceive.attach(ponGsReceive); |
gsfan | 28:fbba4c58d14c | 395 | return cid; |
gsfan | 28:fbba4c58d14c | 396 | } |
gsfan | 28:fbba4c58d14c | 397 | template<typename T> |
gsfan | 36:a70b11e1560f | 398 | int open (Host &host, GSPROTOCOL pro, T *object, void (T::*member)(int, int), int port = 0) { |
gsfan | 36:a70b11e1560f | 399 | int cid = open(host, pro, port); |
gsfan | 28:fbba4c58d14c | 400 | if (cid >= 0) _gs_sock[cid].onGsReceive.attach(object, member); |
gsfan | 28:fbba4c58d14c | 401 | return cid; |
gsfan | 28:fbba4c58d14c | 402 | } |
gsfan | 0:2f6062c6d018 | 403 | /** |
gsfan | 0:2f6062c6d018 | 404 | * tcp/udp server |
gsfan | 6:a423f0d197de | 405 | * @return CID, -1:failure |
gsfan | 0:2f6062c6d018 | 406 | */ |
gsfan | 28:fbba4c58d14c | 407 | int listen (int port, GSPROTOCOL pro); |
gsfan | 28:fbba4c58d14c | 408 | |
gsfan | 28:fbba4c58d14c | 409 | int listen (int port, GSPROTOCOL pro, onGsReceiveFunc ponGsReceive) { |
gsfan | 28:fbba4c58d14c | 410 | int cid = listen(port, pro); |
gsfan | 28:fbba4c58d14c | 411 | if (cid >= 0) _gs_sock[cid].onGsReceive.attach(ponGsReceive); |
gsfan | 28:fbba4c58d14c | 412 | return cid; |
gsfan | 28:fbba4c58d14c | 413 | } |
gsfan | 26:b347ee3a1087 | 414 | template<typename T> |
gsfan | 28:fbba4c58d14c | 415 | int listen (int port, GSPROTOCOL pro, T *object, void (T::*member)(int, int)) { |
gsfan | 28:fbba4c58d14c | 416 | int cid = listen(port, pro); |
gsfan | 28:fbba4c58d14c | 417 | if (cid >= 0) _gs_sock[cid].onGsReceive.attach(object, member); |
gsfan | 28:fbba4c58d14c | 418 | return cid; |
gsfan | 26:b347ee3a1087 | 419 | } |
gsfan | 0:2f6062c6d018 | 420 | /** |
gsfan | 0:2f6062c6d018 | 421 | * close client/server |
gsfan | 0:2f6062c6d018 | 422 | */ |
gsfan | 0:2f6062c6d018 | 423 | int close (int cid); |
gsfan | 0:2f6062c6d018 | 424 | /** |
gsfan | 0:2f6062c6d018 | 425 | * send data tcp(s/c), udp(c) |
gsfan | 0:2f6062c6d018 | 426 | */ |
gsfan | 19:cad912f5a6ba | 427 | int send (int cid, const char *buf, int len); |
gsfan | 0:2f6062c6d018 | 428 | /** |
gsfan | 0:2f6062c6d018 | 429 | * send data udp(s) |
gsfan | 0:2f6062c6d018 | 430 | */ |
gsfan | 19:cad912f5a6ba | 431 | int send (int cid, const char *buf, int len, Host &host); |
gsfan | 0:2f6062c6d018 | 432 | /** |
gsfan | 0:2f6062c6d018 | 433 | * recv data tcp(s/c), udp(c) |
gsfan | 6:a423f0d197de | 434 | * @return length |
gsfan | 0:2f6062c6d018 | 435 | */ |
gsfan | 0:2f6062c6d018 | 436 | int recv (int cid, char *buf, int len); |
gsfan | 0:2f6062c6d018 | 437 | /** |
gsfan | 0:2f6062c6d018 | 438 | * recv data udp(s) |
gsfan | 6:a423f0d197de | 439 | * @return length |
gsfan | 0:2f6062c6d018 | 440 | */ |
gsfan | 0:2f6062c6d018 | 441 | int recv (int cid, char *buf, int len, Host &host); |
gsfan | 0:2f6062c6d018 | 442 | /** |
gsfan | 0:2f6062c6d018 | 443 | * tcp/udp connected |
gsfan | 0:2f6062c6d018 | 444 | */ |
gsfan | 0:2f6062c6d018 | 445 | bool isConnected (int cid); |
gsfan | 0:2f6062c6d018 | 446 | |
gsfan | 35:515ec79792d3 | 447 | #ifdef GS_ENABLE_HTTP |
gsfan | 25:f6e5622d2930 | 448 | // ----- GSwifi_http.cpp ----- |
gsfan | 0:2f6062c6d018 | 449 | /** |
gsfan | 18:4b97804c37d1 | 450 | * http request (GET method) |
gsfan | 0:2f6062c6d018 | 451 | */ |
gsfan | 19:cad912f5a6ba | 452 | int httpGet (Host &host, const char *uri, const char *user, const char *pwd, int ssl = 0, onGsReceiveFunc ponGsReceive = NULL); |
gsfan | 29:1c4419512941 | 453 | int httpGet (Host &host, const char *uri, int ssl = 0, onGsReceiveFunc ponGsReceive = NULL) { |
gsfan | 29:1c4419512941 | 454 | return httpGet (host, uri, NULL, NULL, ssl, ponGsReceive); |
gsfan | 29:1c4419512941 | 455 | } |
gsfan | 0:2f6062c6d018 | 456 | /** |
gsfan | 18:4b97804c37d1 | 457 | * http request (POST method) |
gsfan | 15:5febfc399099 | 458 | */ |
gsfan | 19:cad912f5a6ba | 459 | int httpPost (Host &host, const char *uri, const char *body, const char *user, const char *pwd, int ssl = 0, onGsReceiveFunc ponGsReceive = NULL); |
gsfan | 29:1c4419512941 | 460 | int httpPost (Host &host, const char *uri, const char *body, int ssl = 0, onGsReceiveFunc ponGsReceive = NULL) { |
gsfan | 29:1c4419512941 | 461 | return httpPost (host, uri, body, NULL, NULL, ssl, ponGsReceive); |
gsfan | 29:1c4419512941 | 462 | } |
gsfan | 29:1c4419512941 | 463 | /** |
gsfan | 29:1c4419512941 | 464 | * websocket request (Upgrade method) |
gsfan | 29:1c4419512941 | 465 | */ |
gsfan | 29:1c4419512941 | 466 | int wsOpen (Host &host, const char *uri, const char *user, const char *pwd, onGsReceiveFunc ponGsReceive = NULL); |
gsfan | 29:1c4419512941 | 467 | int wsOpen (Host &host, const char *uri, onGsReceiveFunc ponGsReceive = NULL) { |
gsfan | 29:1c4419512941 | 468 | return wsOpen (host, uri, NULL, NULL, ponGsReceive); |
gsfan | 29:1c4419512941 | 469 | } |
gsfan | 29:1c4419512941 | 470 | /** |
gsfan | 29:1c4419512941 | 471 | * send data websocket |
gsfan | 29:1c4419512941 | 472 | */ |
gsfan | 29:1c4419512941 | 473 | int wsSend (int cid, const char *buf, int len, const char *mask = NULL); |
gsfan | 18:4b97804c37d1 | 474 | |
gsfan | 15:5febfc399099 | 475 | /** |
gsfan | 25:f6e5622d2930 | 476 | * base64 encode |
gsfan | 25:f6e5622d2930 | 477 | */ |
gsfan | 25:f6e5622d2930 | 478 | int base64encode (char *input, int length, char *output, int len); |
gsfan | 25:f6e5622d2930 | 479 | /** |
gsfan | 25:f6e5622d2930 | 480 | * url encode |
gsfan | 0:2f6062c6d018 | 481 | */ |
gsfan | 25:f6e5622d2930 | 482 | int urlencode (char *str, char *buf, int len); |
gsfan | 25:f6e5622d2930 | 483 | /** |
gsfan | 25:f6e5622d2930 | 484 | * url decode |
gsfan | 25:f6e5622d2930 | 485 | */ |
gsfan | 25:f6e5622d2930 | 486 | int urldecode (char *str, char *buf, int len); |
gsfan | 35:515ec79792d3 | 487 | #endif |
gsfan | 0:2f6062c6d018 | 488 | |
gsfan | 35:515ec79792d3 | 489 | #ifdef GS_ENABLE_SMTP |
gsfan | 25:f6e5622d2930 | 490 | // ----- GSwifi_smtp.cpp ----- |
gsfan | 18:4b97804c37d1 | 491 | /** |
gsfan | 18:4b97804c37d1 | 492 | * send mail (smtp) |
gsfan | 18:4b97804c37d1 | 493 | * @param host SMTP server |
gsfan | 18:4b97804c37d1 | 494 | * @param to To address |
gsfan | 18:4b97804c37d1 | 495 | * @param from From address |
gsfan | 18:4b97804c37d1 | 496 | * @param subject Subject |
gsfan | 18:4b97804c37d1 | 497 | * @param mesg Message |
gsfan | 18:4b97804c37d1 | 498 | * @param user username (SMTP Auth) |
gsfan | 18:4b97804c37d1 | 499 | * @param pwd password (SMTP Auth) |
gsfan | 18:4b97804c37d1 | 500 | * @retval 0 success |
gsfan | 18:4b97804c37d1 | 501 | * @retval -1 failure |
gsfan | 18:4b97804c37d1 | 502 | */ |
gsfan | 19:cad912f5a6ba | 503 | int mail (Host &host, const char *to, const char *from, const char *subject, const char *mesg, const char *user = NULL, const char *pwd = NULL); |
gsfan | 20:151b5a4fdd29 | 504 | #endif |
gsfan | 18:4b97804c37d1 | 505 | |
gsfan | 35:515ec79792d3 | 506 | #ifdef GS_ENABLE_HTTPD |
gsfan | 25:f6e5622d2930 | 507 | // ----- GSwifi_httpd.cpp ----- |
gsfan | 18:4b97804c37d1 | 508 | /** |
gsfan | 18:4b97804c37d1 | 509 | * start http server |
gsfan | 18:4b97804c37d1 | 510 | * @param port |
gsfan | 18:4b97804c37d1 | 511 | */ |
gsfan | 18:4b97804c37d1 | 512 | int httpd (int port = 80); |
gsfan | 18:4b97804c37d1 | 513 | /** |
gsfan | 18:4b97804c37d1 | 514 | * attach uri to dirctory handler |
gsfan | 18:4b97804c37d1 | 515 | */ |
gsfan | 18:4b97804c37d1 | 516 | void send_httpd_error (int cid, int err); |
gsfan | 18:4b97804c37d1 | 517 | /** |
gsfan | 18:4b97804c37d1 | 518 | * attach uri to dirctory handler |
gsfan | 18:4b97804c37d1 | 519 | */ |
gsfan | 19:cad912f5a6ba | 520 | int attach_httpd (const char *uri, const char *dir); |
gsfan | 18:4b97804c37d1 | 521 | /** |
gsfan | 18:4b97804c37d1 | 522 | * attach uri to cgi handler |
gsfan | 18:4b97804c37d1 | 523 | */ |
gsfan | 19:cad912f5a6ba | 524 | int attach_httpd (const char *uri, onHttpdCgiFunc ponHttpCgi); |
gsfan | 20:151b5a4fdd29 | 525 | #endif |
gsfan | 18:4b97804c37d1 | 526 | |
gsfan | 22:9b077e2823ce | 527 | #ifdef DEBUG |
gsfan | 23:a783c62c36d0 | 528 | void dump (); |
gsfan | 0:2f6062c6d018 | 529 | void test (); |
gsfan | 0:2f6062c6d018 | 530 | int getc(); |
gsfan | 0:2f6062c6d018 | 531 | void putc(char c); |
gsfan | 0:2f6062c6d018 | 532 | int readable(); |
gsfan | 18:4b97804c37d1 | 533 | #endif |
gsfan | 0:2f6062c6d018 | 534 | |
gsfan | 0:2f6062c6d018 | 535 | protected: |
gsfan | 35:515ec79792d3 | 536 | void reset (); |
gsfan | 35:515ec79792d3 | 537 | int autobaud (int flg); |
gsfan | 37:e61ea8267415 | 538 | int acquireUart (int ms = GS_TIMEOUT); |
gsfan | 37:e61ea8267415 | 539 | void releaseUart (); |
gsfan | 36:a70b11e1560f | 540 | |
gsfan | 36:a70b11e1560f | 541 | inline void _gs_puts (char *s) { |
gsfan | 36:a70b11e1560f | 542 | int i; |
gsfan | 36:a70b11e1560f | 543 | for (i = 0; i < strlen(s); i++) { |
gsfan | 36:a70b11e1560f | 544 | _gs_putc(s[i]); |
gsfan | 36:a70b11e1560f | 545 | } |
gsfan | 36:a70b11e1560f | 546 | } |
gsfan | 35:515ec79792d3 | 547 | |
gsfan | 26:b347ee3a1087 | 548 | void parseResponse (); |
gsfan | 26:b347ee3a1087 | 549 | void parseCmdResponse (char *buf); |
gsfan | 26:b347ee3a1087 | 550 | |
gsfan | 0:2f6062c6d018 | 551 | int x2i (char c); |
gsfan | 0:2f6062c6d018 | 552 | char i2x (int i); |
gsfan | 0:2f6062c6d018 | 553 | void isr_recv (); |
gsfan | 20:151b5a4fdd29 | 554 | int from_hex (int ch); |
gsfan | 20:151b5a4fdd29 | 555 | int to_hex (int code); |
gsfan | 0:2f6062c6d018 | 556 | |
gsfan | 26:b347ee3a1087 | 557 | void newSock (int cid, GSTYPE type, GSPROTOCOL pro); |
gsfan | 26:b347ee3a1087 | 558 | |
gsfan | 26:b347ee3a1087 | 559 | void newSock (int cid, GSTYPE type, GSPROTOCOL pro, onGsReceiveFunc ponGsReceive) { |
gsfan | 28:fbba4c58d14c | 560 | newSock(cid, type, pro); |
gsfan | 26:b347ee3a1087 | 561 | _gs_sock[cid].onGsReceive.attach(ponGsReceive); |
gsfan | 26:b347ee3a1087 | 562 | } |
gsfan | 26:b347ee3a1087 | 563 | template<typename T> |
gsfan | 26:b347ee3a1087 | 564 | void newSock (int cid, GSTYPE type, GSPROTOCOL pro, T *object, void (T::*member)(int, int)) { |
gsfan | 28:fbba4c58d14c | 565 | newSock(cid, type, pro); |
gsfan | 26:b347ee3a1087 | 566 | _gs_sock[cid].onGsReceive.attach(object, member); |
gsfan | 26:b347ee3a1087 | 567 | } |
gsfan | 25:f6e5622d2930 | 568 | |
gsfan | 29:1c4419512941 | 569 | int wait_ws (int cid, int code); |
gsfan | 29:1c4419512941 | 570 | |
gsfan | 35:515ec79792d3 | 571 | #ifdef GS_ENABLE_SMTP |
gsfan | 18:4b97804c37d1 | 572 | int wait_smtp (int cid, int code); |
gsfan | 20:151b5a4fdd29 | 573 | #endif |
gsfan | 18:4b97804c37d1 | 574 | |
gsfan | 35:515ec79792d3 | 575 | #ifdef GS_ENABLE_HTTPD |
gsfan | 23:a783c62c36d0 | 576 | int get_handler (char *uri); |
gsfan | 19:cad912f5a6ba | 577 | int httpd_request (int cid, GS_httpd *gshttpd, char *dir); |
gsfan | 19:cad912f5a6ba | 578 | char *mimetype (char *file); |
gsfan | 31:0abdc584823d | 579 | int strnicmp (const char *p1, const char *p2, int n); |
gsfan | 20:151b5a4fdd29 | 580 | #endif |
gsfan | 18:4b97804c37d1 | 581 | |
gsfan | 0:2f6062c6d018 | 582 | private: |
gsfan | 0:2f6062c6d018 | 583 | Serial _gs; |
gsfan | 35:515ec79792d3 | 584 | int _baud; |
gsfan | 0:2f6062c6d018 | 585 | bool _rts; |
gsfan | 36:a70b11e1560f | 586 | #if defined(TARGET_LPC1768) || defined(TARGET_LPC2368) |
gsfan | 36:a70b11e1560f | 587 | LPC_UART1_TypeDef *_uart; |
gsfan | 36:a70b11e1560f | 588 | #elif defined(TARGET_LPC11U24) |
gsfan | 36:a70b11e1560f | 589 | LPC_USART_Type *_uart; |
gsfan | 36:a70b11e1560f | 590 | #endif |
gsfan | 26:b347ee3a1087 | 591 | DigitalInOut _reset; |
gsfan | 26:b347ee3a1087 | 592 | DigitalInOut *_alarm; |
gsfan | 40:72f70748f6e8 | 593 | volatile bool _connect, _dhcp; |
gsfan | 0:2f6062c6d018 | 594 | volatile GSSTATUS _status; |
gsfan | 26:b347ee3a1087 | 595 | volatile bool _gs_ok, _gs_failure; |
gsfan | 26:b347ee3a1087 | 596 | volatile int _gs_flg; |
gsfan | 26:b347ee3a1087 | 597 | volatile GSRESPONCE _gs_res; |
gsfan | 35:515ec79792d3 | 598 | volatile GSMODE _gs_mode; |
gsfan | 35:515ec79792d3 | 599 | volatile bool _escape; |
gsfan | 35:515ec79792d3 | 600 | volatile int _cid, _rssi; |
gsfan | 0:2f6062c6d018 | 601 | IpAddr _ipaddr, _netmask, _gateway, _nameserver, _resolv; |
gsfan | 0:2f6062c6d018 | 602 | Host _from, _to; |
gsfan | 4:a8d38857f3fd | 603 | char _mac[6]; |
gsfan | 25:f6e5622d2930 | 604 | CircBuffer<char> _buf_cmd; |
gsfan | 0:2f6062c6d018 | 605 | struct GS_Socket _gs_sock[16]; |
gsfan | 5:6def1d0df519 | 606 | time_t _time; |
gsfan | 28:fbba4c58d14c | 607 | GSSECURITY _sec; |
gsfan | 26:b347ee3a1087 | 608 | char *_ssid, *_pass; |
gsfan | 41:0afda15e9bb4 | 609 | int _reconnect; |
gsfan | 18:4b97804c37d1 | 610 | |
gsfan | 35:515ec79792d3 | 611 | #ifdef GS_ENABLE_HTTPD |
gsfan | 18:4b97804c37d1 | 612 | struct GS_httpd _httpd[16]; |
gsfan | 18:4b97804c37d1 | 613 | struct GS_httpd_handler _handler[10]; |
gsfan | 18:4b97804c37d1 | 614 | int _handler_count; |
gsfan | 20:151b5a4fdd29 | 615 | |
gsfan | 20:151b5a4fdd29 | 616 | void poll_httpd (int cid, int len); |
gsfan | 35:515ec79792d3 | 617 | #ifdef GS_ENABLE_WEBSOCKET |
gsfan | 23:a783c62c36d0 | 618 | void poll_websocket (int cid, int len); |
gsfan | 23:a783c62c36d0 | 619 | void send_websocket_accept (int cid); |
gsfan | 23:a783c62c36d0 | 620 | #endif |
gsfan | 20:151b5a4fdd29 | 621 | #endif |
gsfan | 0:2f6062c6d018 | 622 | }; |
gsfan | 7:b75b7fc144ff | 623 | |
gsfan | 7:b75b7fc144ff | 624 | #endif |