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 gs fan

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/

/media/uploads/gsfan/gs_im_002.jpg /media/uploads/gsfan/gs1011m_2.jpg

ゲインスパン Wi-Fi モジュール ライブラリ

ゲインスパン社の低電力 Wi-Fiモジュール(無線LAN) GS1011 シリーズ用のライブラリです。

解説: http://mbed.org/users/gsfan/notebook/gainspan_wifi/

Committer:
gsfan
Date:
Thu Nov 08 01:28:45 2012 +0000
Revision:
20:151b5a4fdd29
Parent:
19:cad912f5a6ba
Child:
22:9b077e2823ce
suport httpd cgi handler

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gsfan 0:2f6062c6d018 1 /**
gsfan 0:2f6062c6d018 2 * Gainspan wi-fi module library for mbed
gsfan 0:2f6062c6d018 3 * Copyright (c) 2012 gsfan
gsfan 0:2f6062c6d018 4 * Released under the MIT License: http://mbed.org/license/mit
gsfan 0:2f6062c6d018 5 */
gsfan 0:2f6062c6d018 6
gsfan 0:2f6062c6d018 7 /** @file
gsfan 0:2f6062c6d018 8 * @brief Gainspan wi-fi module library for mbed
gsfan 0:2f6062c6d018 9 * GS1011MIC, GS1011MIP, GainSpan WiFi Breakout, etc.
gsfan 0:2f6062c6d018 10 * module configuration: ATB=115200
gsfan 0:2f6062c6d018 11 */
gsfan 0:2f6062c6d018 12
gsfan 7:b75b7fc144ff 13 #ifndef _GSWIFI_H_
gsfan 7:b75b7fc144ff 14 #define _GSWIFI_H_
gsfan 7:b75b7fc144ff 15
gsfan 0:2f6062c6d018 16 #include "mbed.h"
gsfan 18:4b97804c37d1 17 #include "GSwifi_net.h"
gsfan 0:2f6062c6d018 18 #include "RingBuffer.h"
gsfan 0:2f6062c6d018 19 #include "host.h"
gsfan 0:2f6062c6d018 20 #include "ipaddr.h"
gsfan 0:2f6062c6d018 21
gsfan 0:2f6062c6d018 22 #define GS_BAUD 115200
gsfan 1:b127c6c5241d 23 #define GS_UART_DIRECT
gsfan 0:2f6062c6d018 24
gsfan 0:2f6062c6d018 25 #define GS_BULK
gsfan 0:2f6062c6d018 26
gsfan 0:2f6062c6d018 27 #define GS_TIMEOUT 10000 // ms
gsfan 0:2f6062c6d018 28 #define GS_TIMEOUT2 30000 // ms
gsfan 0:2f6062c6d018 29 #define GS_CMD_SIZE 100
gsfan 0:2f6062c6d018 30 #if defined(TARGET_LPC1768) || defined(TARGET_LPC2368)
gsfan 18:4b97804c37d1 31 //#define GS_DATA_SIZE 1500
gsfan 18:4b97804c37d1 32 #define GS_DATA_SIZE 1000
gsfan 0:2f6062c6d018 33 #elif defined(TARGET_LPC11U24)
gsfan 16:aea56cce3bf5 34 #define GS_DATA_SIZE 500
gsfan 0:2f6062c6d018 35 #endif
gsfan 0:2f6062c6d018 36
gsfan 0:2f6062c6d018 37 /**
gsfan 0:2f6062c6d018 38 * Wi-Fi security
gsfan 0:2f6062c6d018 39 */
gsfan 0:2f6062c6d018 40 enum GSSECURITY {
gsfan 0:2f6062c6d018 41 GSSEC_AUTO = 0,
gsfan 0:2f6062c6d018 42 GSSEC_NONE = 0,
gsfan 0:2f6062c6d018 43 GSSEC_OPEN = 1,
gsfan 0:2f6062c6d018 44 GSSEC_WEP = 2,
gsfan 0:2f6062c6d018 45 GSSEC_WPA_PSK = 4,
gsfan 0:2f6062c6d018 46 GSSEC_WPA2_PSK = 8,
gsfan 0:2f6062c6d018 47 GSSEC_WPA_ENT = 16,
gsfan 0:2f6062c6d018 48 GSSEC_WPA2_ENT = 32,
gsfan 0:2f6062c6d018 49 GSSEC_WPS_BUTTON = 64,
gsfan 0:2f6062c6d018 50 };
gsfan 0:2f6062c6d018 51
gsfan 0:2f6062c6d018 52 /**
gsfan 0:2f6062c6d018 53 * TCP/IP protocol
gsfan 0:2f6062c6d018 54 */
gsfan 0:2f6062c6d018 55 enum GSPROTOCOL {
gsfan 0:2f6062c6d018 56 GSPROT_UDP = 0,
gsfan 0:2f6062c6d018 57 GSPROT_TCP = 1,
gsfan 0:2f6062c6d018 58 GSPROT_HTTPGET,
gsfan 0:2f6062c6d018 59 GSPROT_HTTPPOST,
gsfan 18:4b97804c37d1 60 GSPROT_HTTPD,
gsfan 0:2f6062c6d018 61 };
gsfan 0:2f6062c6d018 62
gsfan 0:2f6062c6d018 63 /**
gsfan 0:2f6062c6d018 64 * Client/Server
gsfan 0:2f6062c6d018 65 */
gsfan 0:2f6062c6d018 66 enum GSTYPE {
gsfan 0:2f6062c6d018 67 GSTYPE_CLIENT = 0,
gsfan 0:2f6062c6d018 68 GSTYPE_SERVER = 1,
gsfan 0:2f6062c6d018 69 };
gsfan 0:2f6062c6d018 70
gsfan 0:2f6062c6d018 71 enum GSRESPONCE {
gsfan 0:2f6062c6d018 72 GSRES_NORMAL,
gsfan 0:2f6062c6d018 73 GSRES_CONNECT,
gsfan 0:2f6062c6d018 74 GSRES_WPS,
gsfan 0:2f6062c6d018 75 GSRES_MACADDRESS,
gsfan 0:2f6062c6d018 76 GSRES_DHCP,
gsfan 0:2f6062c6d018 77 GSRES_DNSLOOKUP,
gsfan 0:2f6062c6d018 78 GSRES_HTTP,
gsfan 1:b127c6c5241d 79 GSRES_RSSI,
gsfan 5:6def1d0df519 80 GSRES_TIME,
gsfan 0:2f6062c6d018 81 };
gsfan 0:2f6062c6d018 82
gsfan 0:2f6062c6d018 83 enum GSMODE {
gsfan 0:2f6062c6d018 84 GSMODE_COMMAND,
gsfan 0:2f6062c6d018 85 GSMODE_DATA_RX,
gsfan 0:2f6062c6d018 86 GSMODE_DATA_RXUDP,
gsfan 0:2f6062c6d018 87 GSMODE_DATA_RX_BULK,
gsfan 0:2f6062c6d018 88 GSMODE_DATA_RXUDP_BULK,
gsfan 0:2f6062c6d018 89 GSMODE_DATA_RXHTTP,
gsfan 0:2f6062c6d018 90 };
gsfan 0:2f6062c6d018 91
gsfan 0:2f6062c6d018 92 enum GSSTATUS {
gsfan 0:2f6062c6d018 93 GSSTAT_READY,
gsfan 0:2f6062c6d018 94 GSSTAT_STANDBY,
gsfan 0:2f6062c6d018 95 GSSTAT_WAKEUP,
gsfan 0:2f6062c6d018 96 GSSTAT_DEEPSLEEP,
gsfan 0:2f6062c6d018 97 };
gsfan 0:2f6062c6d018 98
gsfan 0:2f6062c6d018 99 /**
gsfan 0:2f6062c6d018 100 * data receive callback function
gsfan 0:2f6062c6d018 101 */
gsfan 1:b127c6c5241d 102 typedef void (*onGsReceiveFunc)(int cid, int len);
gsfan 0:2f6062c6d018 103
gsfan 0:2f6062c6d018 104 struct GS_Socket {
gsfan 0:2f6062c6d018 105 GSTYPE type;
gsfan 0:2f6062c6d018 106 GSPROTOCOL protocol;
gsfan 0:2f6062c6d018 107 bool connect;
gsfan 0:2f6062c6d018 108 Host host;
gsfan 0:2f6062c6d018 109 RingBuffer *data;
gsfan 1:b127c6c5241d 110 int lcid;
gsfan 0:2f6062c6d018 111 int received;
gsfan 0:2f6062c6d018 112 onGsReceiveFunc onGsReceive;
gsfan 0:2f6062c6d018 113 };
gsfan 0:2f6062c6d018 114
gsfan 0:2f6062c6d018 115 /**
gsfan 0:2f6062c6d018 116 * GSwifi class
gsfan 0:2f6062c6d018 117 */
gsfan 0:2f6062c6d018 118 class GSwifi {
gsfan 0:2f6062c6d018 119 public:
gsfan 0:2f6062c6d018 120 /**
gsfan 0:2f6062c6d018 121 * default constructor
gsfan 0:2f6062c6d018 122 */
gsfan 10:698c5e96b5b1 123 GSwifi (PinName p_tx, PinName p_rx, int baud = GS_BAUD);
gsfan 0:2f6062c6d018 124 /**
gsfan 0:2f6062c6d018 125 * Default constructor (with hardware fllow controll)
gsfan 0:2f6062c6d018 126 */
gsfan 10:698c5e96b5b1 127 GSwifi (PinName p_tx, PinName p_rx, PinName p_cts, PinName p_rts, int baud = GS_BAUD);
gsfan 0:2f6062c6d018 128 /**
gsfan 0:2f6062c6d018 129 * send command
gsfan 0:2f6062c6d018 130 */
gsfan 12:63e714550791 131 int command (const char *cmd, GSRESPONCE res, int timeout = GS_TIMEOUT);
gsfan 0:2f6062c6d018 132 /**
gsfan 0:2f6062c6d018 133 * recv responce
gsfan 0:2f6062c6d018 134 */
gsfan 0:2f6062c6d018 135 int cmdResponse (GSRESPONCE res, int ms);
gsfan 0:2f6062c6d018 136 /**
gsfan 0:2f6062c6d018 137 * associate infrastructure
gsfan 0:2f6062c6d018 138 * @param sec GSSEC_OPEN, GSSEC_WEP, GSSEC_WPA_PSK, GSSEC_WPA2_PSK, GSSEC_WPS_BUTTON
gsfan 2:c6e0e97901b3 139 * @param ssid SSID
gsfan 2:c6e0e97901b3 140 * @param pass pass phrase
gsfan 2:c6e0e97901b3 141 * @param dhcp 0:static ip, 1:dhcp
gsfan 2:c6e0e97901b3 142 * @retval 0 success
gsfan 2:c6e0e97901b3 143 * @retval -1 failure
gsfan 0:2f6062c6d018 144 */
gsfan 19:cad912f5a6ba 145 int connect (GSSECURITY sec, const char *ssid, const char *pass, int dhcp = 1);
gsfan 0:2f6062c6d018 146 /**
gsfan 0:2f6062c6d018 147 * adhock
gsfan 0:2f6062c6d018 148 * @param sec GSSEC_OPEN or GSSEC_WEP
gsfan 2:c6e0e97901b3 149 * @param ssid SSID
gsfan 2:c6e0e97901b3 150 * @param pass 10 or 26 hexadecimal digits
gsfan 2:c6e0e97901b3 151 * @param ipaddr my ip address
gsfan 2:c6e0e97901b3 152 * @param netmask subnet mask
gsfan 2:c6e0e97901b3 153 * @retval 0 success
gsfan 2:c6e0e97901b3 154 * @retval -1 failure
gsfan 0:2f6062c6d018 155 */
gsfan 19:cad912f5a6ba 156 int adhock (GSSECURITY sec, const char *ssid, const char *pass, IpAddr ipaddr, IpAddr netmask);
gsfan 0:2f6062c6d018 157 /**
gsfan 0:2f6062c6d018 158 * limited AP
gsfan 0:2f6062c6d018 159 * @param sec GSSEC_OPEN or GSSEC_WEP
gsfan 2:c6e0e97901b3 160 * @param ssid SSID
gsfan 0:2f6062c6d018 161 * @param pass 10 or 26 hexadecimal digits
gsfan 2:c6e0e97901b3 162 * @param ipaddr my ip address (dhcp start address)
gsfan 2:c6e0e97901b3 163 * @param netmask subnet mask
gsfan 2:c6e0e97901b3 164 * @retval 0 success
gsfan 2:c6e0e97901b3 165 * @retval -1 failure
gsfan 0:2f6062c6d018 166 * firmware: s2w-secureweb, s2w-web, s2w-wpsweb
gsfan 0:2f6062c6d018 167 */
gsfan 20:151b5a4fdd29 168 int limitedap (GSSECURITY sec, const char *ssid, const char *pass, IpAddr ipaddr, IpAddr netmask, bool prov = false);
gsfan 0:2f6062c6d018 169 /**
gsfan 0:2f6062c6d018 170 * unassociate
gsfan 0:2f6062c6d018 171 */
gsfan 0:2f6062c6d018 172 int disconnect ();
gsfan 0:2f6062c6d018 173
gsfan 0:2f6062c6d018 174 /**
gsfan 0:2f6062c6d018 175 * use DHCP
gsfan 0:2f6062c6d018 176 */
gsfan 0:2f6062c6d018 177 int setAddress ();
gsfan 0:2f6062c6d018 178 /**
gsfan 0:2f6062c6d018 179 * use static ip address
gsfan 0:2f6062c6d018 180 */
gsfan 0:2f6062c6d018 181 int setAddress (IpAddr ipaddr, IpAddr netmask, IpAddr gateway, IpAddr nameserver);
gsfan 0:2f6062c6d018 182 /**
gsfan 1:b127c6c5241d 183 * get ip address
gsfan 1:b127c6c5241d 184 */
gsfan 1:b127c6c5241d 185 int getAddress (IpAddr &ipaddr, IpAddr &netmask, IpAddr &gateway, IpAddr &nameserver);
gsfan 1:b127c6c5241d 186 /**
gsfan 0:2f6062c6d018 187 * resolv hostname
gsfan 2:c6e0e97901b3 188 * @param name hostname
gsfan 2:c6e0e97901b3 189 * @param addr resolved ip address
gsfan 0:2f6062c6d018 190 */
gsfan 0:2f6062c6d018 191 int getHostByName (const char* name, IpAddr &addr);
gsfan 0:2f6062c6d018 192 /**
gsfan 0:2f6062c6d018 193 * resolv hostname
gsfan 2:c6e0e97901b3 194 * @param host.name hostname
gsfan 2:c6e0e97901b3 195 * @param host.ipaddr resolved ip address
gsfan 0:2f6062c6d018 196 */
gsfan 0:2f6062c6d018 197 int getHostByName (Host &host);
gsfan 0:2f6062c6d018 198 /**
gsfan 0:2f6062c6d018 199 * RF power
gsfan 0:2f6062c6d018 200 * @param power 0(high)-7(low)
gsfan 0:2f6062c6d018 201 */
gsfan 0:2f6062c6d018 202 int setRFPower (int power);
gsfan 0:2f6062c6d018 203 /**
gsfan 0:2f6062c6d018 204 * power save mode
gsfan 6:a423f0d197de 205 * @param active rx radio 0:switched off, 1:always on
gsfan 6:a423f0d197de 206 * @param save power save 0:disable, 1:enable
gsfan 0:2f6062c6d018 207 */
gsfan 2:c6e0e97901b3 208 int powerSave (int active, int save);
gsfan 0:2f6062c6d018 209 /**
gsfan 0:2f6062c6d018 210 * standby mode
gsfan 0:2f6062c6d018 211 * @param msec wakeup after
gsfan 0:2f6062c6d018 212 * wakeup after msec or alarm1/2
gsfan 0:2f6062c6d018 213 * core off, save to RTC ram
gsfan 0:2f6062c6d018 214 */
gsfan 0:2f6062c6d018 215 int standby (int msec);
gsfan 0:2f6062c6d018 216 /**
gsfan 0:2f6062c6d018 217 * restore standby
gsfan 0:2f6062c6d018 218 */
gsfan 0:2f6062c6d018 219 int wakeup ();
gsfan 0:2f6062c6d018 220 /**
gsfan 0:2f6062c6d018 221 * deep sleep mode
gsfan 0:2f6062c6d018 222 */
gsfan 0:2f6062c6d018 223 int deepSleep ();
gsfan 0:2f6062c6d018 224 /**
gsfan 0:2f6062c6d018 225 * wifi connected
gsfan 0:2f6062c6d018 226 */
gsfan 0:2f6062c6d018 227 bool isConnected ();
gsfan 0:2f6062c6d018 228 /**
gsfan 0:2f6062c6d018 229 * status
gsfan 2:c6e0e97901b3 230 * @return GSSTATUS
gsfan 0:2f6062c6d018 231 */
gsfan 0:2f6062c6d018 232 GSSTATUS getStatus ();
gsfan 1:b127c6c5241d 233 /**
gsfan 2:c6e0e97901b3 234 * RSSI
gsfan 6:a423f0d197de 235 * @return RSSI (dBm)
gsfan 1:b127c6c5241d 236 */
gsfan 1:b127c6c5241d 237 int getRssi ();
gsfan 5:6def1d0df519 238 /**
gsfan 5:6def1d0df519 239 * set NTP server
gsfan 6:a423f0d197de 240 * @param host SNTP server
gsfan 6:a423f0d197de 241 * @param sec time sync interval, 0:one time
gsfan 5:6def1d0df519 242 */
gsfan 5:6def1d0df519 243 int ntpdate (Host host, int sec = 0);
gsfan 5:6def1d0df519 244 /**
gsfan 6:a423f0d197de 245 * set system time
gsfan 6:a423f0d197de 246 * @param time date time (UTC)
gsfan 5:6def1d0df519 247 */
gsfan 5:6def1d0df519 248 int setTime (time_t time);
gsfan 6:a423f0d197de 249 /**
gsfan 5:6def1d0df519 250 * get RTC time
gsfan 6:a423f0d197de 251 * @return date time (UTC)
gsfan 5:6def1d0df519 252 */
gsfan 5:6def1d0df519 253 time_t getTime ();
gsfan 6:a423f0d197de 254 /**
gsfan 6:a423f0d197de 255 * GPIO output
gsfan 6:a423f0d197de 256 * @param port 10,11,30,31
gsfan 6:a423f0d197de 257 * @param out 0:set(high), 1:reset(low)
gsfan 6:a423f0d197de 258 */
gsfan 6:a423f0d197de 259 int gpioOut (int port, int out);
gsfan 0:2f6062c6d018 260
gsfan 0:2f6062c6d018 261 /**
gsfan 2:c6e0e97901b3 262 * main polling
gsfan 0:2f6062c6d018 263 */
gsfan 0:2f6062c6d018 264 void poll();
gsfan 0:2f6062c6d018 265
gsfan 0:2f6062c6d018 266 /**
gsfan 0:2f6062c6d018 267 * tcp/udp client
gsfan 6:a423f0d197de 268 * @return CID, -1:failure
gsfan 0:2f6062c6d018 269 */
gsfan 0:2f6062c6d018 270 int open (Host &host, GSPROTOCOL pro, onGsReceiveFunc ponGsReceive = NULL);
gsfan 0:2f6062c6d018 271 /**
gsfan 0:2f6062c6d018 272 * tcp/udp server
gsfan 6:a423f0d197de 273 * @return CID, -1:failure
gsfan 0:2f6062c6d018 274 */
gsfan 0:2f6062c6d018 275 int listen (int port, GSPROTOCOL pro, onGsReceiveFunc ponGsReceive = NULL);
gsfan 18:4b97804c37d1 276 /*
gsfan 18:4b97804c37d1 277 template<typename T>
gsfan 18:4b97804c37d1 278 int listen2 (T* tptr, int port, GSPROTOCOL pro, void (T::*mptr)(int,int)) {
gsfan 18:4b97804c37d1 279 if((mptr != NULL) && (tptr != NULL)) {
gsfan 18:4b97804c37d1 280 return listen(port, pro, reinterpret_cast<onGsReceiveFunc>(mptr));
gsfan 18:4b97804c37d1 281 }
gsfan 18:4b97804c37d1 282 }
gsfan 18:4b97804c37d1 283 */
gsfan 0:2f6062c6d018 284 /**
gsfan 0:2f6062c6d018 285 * close client/server
gsfan 0:2f6062c6d018 286 */
gsfan 0:2f6062c6d018 287 int close (int cid);
gsfan 0:2f6062c6d018 288 /**
gsfan 0:2f6062c6d018 289 * send data tcp(s/c), udp(c)
gsfan 0:2f6062c6d018 290 */
gsfan 19:cad912f5a6ba 291 int send (int cid, const char *buf, int len);
gsfan 0:2f6062c6d018 292 /**
gsfan 0:2f6062c6d018 293 * send data udp(s)
gsfan 0:2f6062c6d018 294 */
gsfan 19:cad912f5a6ba 295 int send (int cid, const char *buf, int len, Host &host);
gsfan 0:2f6062c6d018 296 /**
gsfan 0:2f6062c6d018 297 * recv data tcp(s/c), udp(c)
gsfan 6:a423f0d197de 298 * @return length
gsfan 0:2f6062c6d018 299 */
gsfan 0:2f6062c6d018 300 int recv (int cid, char *buf, int len);
gsfan 0:2f6062c6d018 301 /**
gsfan 0:2f6062c6d018 302 * recv data udp(s)
gsfan 6:a423f0d197de 303 * @return length
gsfan 0:2f6062c6d018 304 */
gsfan 0:2f6062c6d018 305 int recv (int cid, char *buf, int len, Host &host);
gsfan 0:2f6062c6d018 306 /**
gsfan 0:2f6062c6d018 307 * tcp/udp connected
gsfan 0:2f6062c6d018 308 */
gsfan 0:2f6062c6d018 309 bool isConnected (int cid);
gsfan 0:2f6062c6d018 310
gsfan 0:2f6062c6d018 311 /**
gsfan 18:4b97804c37d1 312 * http request (GET method)
gsfan 0:2f6062c6d018 313 */
gsfan 19:cad912f5a6ba 314 int httpGet (Host &host, const char *uri, const char *user, const char *pwd, int ssl = 0, onGsReceiveFunc ponGsReceive = NULL);
gsfan 19:cad912f5a6ba 315 int httpGet (Host &host, const char *uri, int ssl = 0, onGsReceiveFunc ponGsReceive = NULL);
gsfan 0:2f6062c6d018 316 /**
gsfan 18:4b97804c37d1 317 * http request (POST method)
gsfan 15:5febfc399099 318 */
gsfan 19:cad912f5a6ba 319 int httpPost (Host &host, const char *uri, const char *body, const char *user, const char *pwd, int ssl = 0, onGsReceiveFunc ponGsReceive = NULL);
gsfan 19:cad912f5a6ba 320 int httpPost (Host &host, const char *uri, const char *body, int ssl = 0, onGsReceiveFunc ponGsReceive = NULL);
gsfan 18:4b97804c37d1 321
gsfan 15:5febfc399099 322 /**
gsfan 0:2f6062c6d018 323 * certificate
gsfan 0:2f6062c6d018 324 */
gsfan 19:cad912f5a6ba 325 int certAdd (const char *name, const char *cert, int len);
gsfan 0:2f6062c6d018 326
gsfan 20:151b5a4fdd29 327 #ifdef GS_USE_SMTP
gsfan 18:4b97804c37d1 328 /**
gsfan 18:4b97804c37d1 329 * send mail (smtp)
gsfan 18:4b97804c37d1 330 * @param host SMTP server
gsfan 18:4b97804c37d1 331 * @param to To address
gsfan 18:4b97804c37d1 332 * @param from From address
gsfan 18:4b97804c37d1 333 * @param subject Subject
gsfan 18:4b97804c37d1 334 * @param mesg Message
gsfan 18:4b97804c37d1 335 * @param user username (SMTP Auth)
gsfan 18:4b97804c37d1 336 * @param pwd password (SMTP Auth)
gsfan 18:4b97804c37d1 337 * @retval 0 success
gsfan 18:4b97804c37d1 338 * @retval -1 failure
gsfan 18:4b97804c37d1 339 */
gsfan 19:cad912f5a6ba 340 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 341 #endif
gsfan 18:4b97804c37d1 342
gsfan 20:151b5a4fdd29 343 #ifdef GS_USE_HTTPD
gsfan 18:4b97804c37d1 344 /**
gsfan 18:4b97804c37d1 345 * start http server
gsfan 18:4b97804c37d1 346 * @param port
gsfan 18:4b97804c37d1 347 */
gsfan 18:4b97804c37d1 348 int httpd (int port = 80);
gsfan 18:4b97804c37d1 349 /**
gsfan 18:4b97804c37d1 350 * attach uri to dirctory handler
gsfan 18:4b97804c37d1 351 */
gsfan 18:4b97804c37d1 352 void send_httpd_error (int cid, int err);
gsfan 18:4b97804c37d1 353 /**
gsfan 18:4b97804c37d1 354 * attach uri to dirctory handler
gsfan 18:4b97804c37d1 355 */
gsfan 19:cad912f5a6ba 356 int attach_httpd (const char *uri, const char *dir);
gsfan 18:4b97804c37d1 357 /**
gsfan 18:4b97804c37d1 358 * attach uri to cgi handler
gsfan 18:4b97804c37d1 359 */
gsfan 19:cad912f5a6ba 360 int attach_httpd (const char *uri, onHttpdCgiFunc ponHttpCgi);
gsfan 20:151b5a4fdd29 361 #endif
gsfan 18:4b97804c37d1 362
gsfan 18:4b97804c37d1 363 /**
gsfan 18:4b97804c37d1 364 * base64 encode
gsfan 18:4b97804c37d1 365 */
gsfan 19:cad912f5a6ba 366 int base64encode (char *input, int length, char *output, int len);
gsfan 18:4b97804c37d1 367 /**
gsfan 18:4b97804c37d1 368 * url encode
gsfan 18:4b97804c37d1 369 */
gsfan 15:5febfc399099 370 int urlencode (char *str, char *buf, int len);
gsfan 20:151b5a4fdd29 371 /**
gsfan 20:151b5a4fdd29 372 * url decode
gsfan 20:151b5a4fdd29 373 */
gsfan 20:151b5a4fdd29 374 int urldecode (char *str, char *buf, int len);
gsfan 15:5febfc399099 375
gsfan 18:4b97804c37d1 376 #ifdef DEBUF
gsfan 0:2f6062c6d018 377 void test ();
gsfan 0:2f6062c6d018 378 int getc();
gsfan 0:2f6062c6d018 379 void putc(char c);
gsfan 0:2f6062c6d018 380 int readable();
gsfan 18:4b97804c37d1 381 #endif
gsfan 0:2f6062c6d018 382
gsfan 0:2f6062c6d018 383 protected:
gsfan 18:4b97804c37d1 384 void poll_cmd ();
gsfan 0:2f6062c6d018 385 int x2i (char c);
gsfan 0:2f6062c6d018 386 char i2x (int i);
gsfan 0:2f6062c6d018 387 void isr_recv ();
gsfan 2:c6e0e97901b3 388 void newSock (int cid, GSTYPE type, GSPROTOCOL pro, onGsReceiveFunc ponGsReceive);
gsfan 20:151b5a4fdd29 389 int from_hex (int ch);
gsfan 20:151b5a4fdd29 390 int to_hex (int code);
gsfan 0:2f6062c6d018 391
gsfan 20:151b5a4fdd29 392 #ifdef GS_USE_SMTP
gsfan 18:4b97804c37d1 393 int wait_smtp (int cid, int code);
gsfan 20:151b5a4fdd29 394 #endif
gsfan 18:4b97804c37d1 395
gsfan 20:151b5a4fdd29 396 #ifdef GS_USE_HTTPD
gsfan 19:cad912f5a6ba 397 int httpd_request (int cid, GS_httpd *gshttpd, char *dir);
gsfan 19:cad912f5a6ba 398 char *mimetype (char *file);
gsfan 20:151b5a4fdd29 399 #endif
gsfan 18:4b97804c37d1 400
gsfan 0:2f6062c6d018 401 private:
gsfan 0:2f6062c6d018 402 Serial _gs;
gsfan 0:2f6062c6d018 403 bool _rts;
gsfan 0:2f6062c6d018 404 volatile bool _connect;
gsfan 0:2f6062c6d018 405 volatile GSSTATUS _status;
gsfan 0:2f6062c6d018 406 volatile int _gs_ok, _gs_failure, _gs_enter;
gsfan 18:4b97804c37d1 407 volatile int _response;
gsfan 0:2f6062c6d018 408 GSMODE _gs_mode;
gsfan 0:2f6062c6d018 409 int _escape;
gsfan 1:b127c6c5241d 410 int _cid, _rssi;
gsfan 0:2f6062c6d018 411 IpAddr _ipaddr, _netmask, _gateway, _nameserver, _resolv;
gsfan 0:2f6062c6d018 412 Host _from, _to;
gsfan 4:a8d38857f3fd 413 char _mac[6];
gsfan 0:2f6062c6d018 414 RingBuffer _buf_cmd;
gsfan 0:2f6062c6d018 415 struct GS_Socket _gs_sock[16];
gsfan 5:6def1d0df519 416 time_t _time;
gsfan 18:4b97804c37d1 417
gsfan 20:151b5a4fdd29 418 #ifdef GS_USE_HTTPD
gsfan 18:4b97804c37d1 419 struct GS_httpd _httpd[16];
gsfan 18:4b97804c37d1 420 struct GS_httpd_handler _handler[10];
gsfan 18:4b97804c37d1 421 int _handler_count;
gsfan 20:151b5a4fdd29 422
gsfan 20:151b5a4fdd29 423 void poll_httpd (int cid, int len);
gsfan 20:151b5a4fdd29 424 #endif
gsfan 0:2f6062c6d018 425 };
gsfan 7:b75b7fc144ff 426
gsfan 7:b75b7fc144ff 427 #endif