Real-time bike tracker using Adafruit Ultimate GPS, Huzzah wifi, and Pubnub
Dependencies: MBed_Adafruit-GPS-Library mbed
Huzzah.cpp@6:5bc3eeabdca3, 2017-04-23 (annotated)
- Committer:
- ECE4180
- Date:
- Sun Apr 23 15:24:21 2017 +0000
- Revision:
- 6:5bc3eeabdca3
- Parent:
- 3:ceca81e8ac2b
For Notebook Page
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ECE4180 | 1:0701bf58c9fa | 1 | #include "Huzzah.h" |
ECE4180 | 1:0701bf58c9fa | 2 | |
ECE4180 | 1:0701bf58c9fa | 3 | |
ECE4180 | 1:0701bf58c9fa | 4 | extern Serial pc; |
ECE4180 | 1:0701bf58c9fa | 5 | extern volatile int tx_in; |
ECE4180 | 1:0701bf58c9fa | 6 | extern volatile int tx_out; |
ECE4180 | 1:0701bf58c9fa | 7 | extern volatile int rx_in; |
ECE4180 | 1:0701bf58c9fa | 8 | extern volatile int rx_out; |
ECE4180 | 1:0701bf58c9fa | 9 | extern char tx_buffer[4096]; |
ECE4180 | 1:0701bf58c9fa | 10 | extern char rx_buffer[4096]; |
ECE4180 | 1:0701bf58c9fa | 11 | |
ECE4180 | 1:0701bf58c9fa | 12 | |
ECE4180 | 1:0701bf58c9fa | 13 | Huzzah::Huzzah(PinName tx_pin, PinName rx_pin, string ssid, string pwd) |
ECE4180 | 1:0701bf58c9fa | 14 | :esp(tx_pin, rx_pin), ssid(ssid), pwd(pwd) |
ECE4180 | 1:0701bf58c9fa | 15 | { |
ECE4180 | 1:0701bf58c9fa | 16 | tx_in=0; |
ECE4180 | 1:0701bf58c9fa | 17 | tx_out=0; |
ECE4180 | 1:0701bf58c9fa | 18 | rx_in=0; |
ECE4180 | 1:0701bf58c9fa | 19 | rx_out=0; |
ECE4180 | 1:0701bf58c9fa | 20 | esp.baud(9600); |
ECE4180 | 3:ceca81e8ac2b | 21 | socket = false; |
ECE4180 | 1:0701bf58c9fa | 22 | } |
ECE4180 | 1:0701bf58c9fa | 23 | |
ECE4180 | 1:0701bf58c9fa | 24 | |
ECE4180 | 1:0701bf58c9fa | 25 | Huzzah::Huzzah(PinName tx_pin, PinName rx_pin) |
ECE4180 | 1:0701bf58c9fa | 26 | :esp(tx_pin, rx_pin), ssid(""), pwd("") |
ECE4180 | 1:0701bf58c9fa | 27 | { |
ECE4180 | 1:0701bf58c9fa | 28 | tx_in=0; |
ECE4180 | 1:0701bf58c9fa | 29 | tx_out=0; |
ECE4180 | 1:0701bf58c9fa | 30 | rx_in=0; |
ECE4180 | 1:0701bf58c9fa | 31 | rx_out=0; |
ECE4180 | 1:0701bf58c9fa | 32 | esp.baud(9600); |
ECE4180 | 3:ceca81e8ac2b | 33 | socket = false; |
ECE4180 | 1:0701bf58c9fa | 34 | } |
ECE4180 | 1:0701bf58c9fa | 35 | |
ECE4180 | 1:0701bf58c9fa | 36 | |
ECE4180 | 1:0701bf58c9fa | 37 | void Huzzah::setssid(string s) |
ECE4180 | 1:0701bf58c9fa | 38 | { |
ECE4180 | 1:0701bf58c9fa | 39 | ssid = s; |
ECE4180 | 1:0701bf58c9fa | 40 | } |
ECE4180 | 1:0701bf58c9fa | 41 | |
ECE4180 | 1:0701bf58c9fa | 42 | |
ECE4180 | 1:0701bf58c9fa | 43 | void Huzzah::setpwd(string s) |
ECE4180 | 1:0701bf58c9fa | 44 | { |
ECE4180 | 1:0701bf58c9fa | 45 | pwd = s; |
ECE4180 | 1:0701bf58c9fa | 46 | } |
ECE4180 | 1:0701bf58c9fa | 47 | |
ECE4180 | 1:0701bf58c9fa | 48 | |
ECE4180 | 1:0701bf58c9fa | 49 | string Huzzah::get_ip() |
ECE4180 | 1:0701bf58c9fa | 50 | { |
ECE4180 | 1:0701bf58c9fa | 51 | strcpy(cmdbuff, "print(wifi.sta.getip())\r\n"); |
ECE4180 | 1:0701bf58c9fa | 52 | send_cmd(); |
ECE4180 | 1:0701bf58c9fa | 53 | getreply(); |
ECE4180 | 1:0701bf58c9fa | 54 | string s(replybuff); |
ECE4180 | 1:0701bf58c9fa | 55 | return s; |
ECE4180 | 1:0701bf58c9fa | 56 | } |
ECE4180 | 1:0701bf58c9fa | 57 | |
ECE4180 | 1:0701bf58c9fa | 58 | |
ECE4180 | 3:ceca81e8ac2b | 59 | void Huzzah::open_socket(string host, string port) |
ECE4180 | 1:0701bf58c9fa | 60 | { |
ECE4180 | 3:ceca81e8ac2b | 61 | pc.printf("opening socket!\r\n"); |
ECE4180 | 1:0701bf58c9fa | 62 | string conn("conn:connect("); |
ECE4180 | 1:0701bf58c9fa | 63 | conn += port + "\,\"" + host + "\")\r\n"; |
ECE4180 | 1:0701bf58c9fa | 64 | |
ECE4180 | 2:834f8d2ebe3f | 65 | sprintf(cmdbuff, "conn=net.createConnection(net.TCP, false)\r\n"); |
ECE4180 | 1:0701bf58c9fa | 66 | send_cmd(); |
ECE4180 | 1:0701bf58c9fa | 67 | getreply(); |
ECE4180 | 1:0701bf58c9fa | 68 | wait(0.2); |
ECE4180 | 1:0701bf58c9fa | 69 | sprintf(cmdbuff, "print(conn)\r\n" ); |
ECE4180 | 1:0701bf58c9fa | 70 | send_cmd(); |
ECE4180 | 1:0701bf58c9fa | 71 | getreply(); |
ECE4180 | 1:0701bf58c9fa | 72 | wait(0.2); |
ECE4180 | 1:0701bf58c9fa | 73 | sprintf(cmdbuff, "conn:on(\"receive\", function(conn, pl) print(pl) end)\r\n"); |
ECE4180 | 1:0701bf58c9fa | 74 | send_cmd(); |
ECE4180 | 1:0701bf58c9fa | 75 | getreply(); |
ECE4180 | 1:0701bf58c9fa | 76 | wait(0.2); |
ECE4180 | 1:0701bf58c9fa | 77 | sprintf(cmdbuff, conn.c_str()); |
ECE4180 | 1:0701bf58c9fa | 78 | send_cmd(); |
ECE4180 | 1:0701bf58c9fa | 79 | getreply(); |
ECE4180 | 6:5bc3eeabdca3 | 80 | wait(1.0); |
ECE4180 | 3:ceca81e8ac2b | 81 | |
ECE4180 | 3:ceca81e8ac2b | 82 | this->socket = true; |
ECE4180 | 3:ceca81e8ac2b | 83 | pc.printf("socket opened\r\n"); |
ECE4180 | 3:ceca81e8ac2b | 84 | |
ECE4180 | 3:ceca81e8ac2b | 85 | } |
ECE4180 | 3:ceca81e8ac2b | 86 | |
ECE4180 | 3:ceca81e8ac2b | 87 | |
ECE4180 | 3:ceca81e8ac2b | 88 | void Huzzah::http_get(string request, string host, string port) |
ECE4180 | 3:ceca81e8ac2b | 89 | { |
ECE4180 | 3:ceca81e8ac2b | 90 | |
ECE4180 | 3:ceca81e8ac2b | 91 | if (!this->socket) { |
ECE4180 | 3:ceca81e8ac2b | 92 | this->open_socket(host, port); |
ECE4180 | 3:ceca81e8ac2b | 93 | } |
ECE4180 | 3:ceca81e8ac2b | 94 | |
ECE4180 | 3:ceca81e8ac2b | 95 | string r("conn:send(\""); |
ECE4180 | 3:ceca81e8ac2b | 96 | r += request + "\")\r\n"; |
ECE4180 | 3:ceca81e8ac2b | 97 | |
ECE4180 | 3:ceca81e8ac2b | 98 | string conn("conn:connect("); |
ECE4180 | 3:ceca81e8ac2b | 99 | conn += port + "\,\"" + host + "\")\r\n"; |
ECE4180 | 3:ceca81e8ac2b | 100 | |
ECE4180 | 3:ceca81e8ac2b | 101 | sprintf(cmdbuff, "conn=net.createConnection(net.TCP, false)\r\n"); |
ECE4180 | 3:ceca81e8ac2b | 102 | send_cmd(); |
ECE4180 | 3:ceca81e8ac2b | 103 | getreply(); |
ECE4180 | 3:ceca81e8ac2b | 104 | wait(0.2); |
ECE4180 | 3:ceca81e8ac2b | 105 | sprintf(cmdbuff, "print(conn)\r\n" ); |
ECE4180 | 3:ceca81e8ac2b | 106 | send_cmd(); |
ECE4180 | 3:ceca81e8ac2b | 107 | getreply(); |
ECE4180 | 3:ceca81e8ac2b | 108 | wait(0.2); |
ECE4180 | 3:ceca81e8ac2b | 109 | sprintf(cmdbuff, "conn:on(\"receive\", function(conn, pl) print(pl) end)\r\n"); |
ECE4180 | 3:ceca81e8ac2b | 110 | send_cmd(); |
ECE4180 | 3:ceca81e8ac2b | 111 | getreply(); |
ECE4180 | 3:ceca81e8ac2b | 112 | wait(0.2); |
ECE4180 | 3:ceca81e8ac2b | 113 | sprintf(cmdbuff, conn.c_str()); |
ECE4180 | 3:ceca81e8ac2b | 114 | send_cmd(); |
ECE4180 | 3:ceca81e8ac2b | 115 | getreply(); |
ECE4180 | 6:5bc3eeabdca3 | 116 | wait(0.5); |
ECE4180 | 3:ceca81e8ac2b | 117 | |
ECE4180 | 1:0701bf58c9fa | 118 | sprintf(cmdbuff, r.c_str()); |
ECE4180 | 1:0701bf58c9fa | 119 | send_cmd(); |
ECE4180 | 6:5bc3eeabdca3 | 120 | wait(0.5); |
ECE4180 | 1:0701bf58c9fa | 121 | send_cmd(); |
ECE4180 | 1:0701bf58c9fa | 122 | getreply(); |
ECE4180 | 2:834f8d2ebe3f | 123 | wait(0.5); |
ECE4180 | 3:ceca81e8ac2b | 124 | |
ECE4180 | 3:ceca81e8ac2b | 125 | sprintf(cmdbuff, "conn:close()\r\n"); |
ECE4180 | 2:834f8d2ebe3f | 126 | send_cmd(); |
ECE4180 | 2:834f8d2ebe3f | 127 | getreply(); |
ECE4180 | 3:ceca81e8ac2b | 128 | wait(0.5); |
ECE4180 | 3:ceca81e8ac2b | 129 | sprintf(cmdbuff, "conn = nil\r\n"); |
ECE4180 | 3:ceca81e8ac2b | 130 | send_cmd(); |
ECE4180 | 3:ceca81e8ac2b | 131 | getreply(); |
ECE4180 | 3:ceca81e8ac2b | 132 | |
ECE4180 | 1:0701bf58c9fa | 133 | } |
ECE4180 | 1:0701bf58c9fa | 134 | |
ECE4180 | 1:0701bf58c9fa | 135 | |
ECE4180 | 1:0701bf58c9fa | 136 | void Huzzah::send_cmd() |
ECE4180 | 1:0701bf58c9fa | 137 | { |
ECE4180 | 1:0701bf58c9fa | 138 | int i; |
ECE4180 | 1:0701bf58c9fa | 139 | char temp_char; |
ECE4180 | 1:0701bf58c9fa | 140 | bool empty; |
ECE4180 | 1:0701bf58c9fa | 141 | i = 0; |
ECE4180 | 1:0701bf58c9fa | 142 | // Start Critical Section - don't interrupt while changing global buffer variables |
ECE4180 | 1:0701bf58c9fa | 143 | NVIC_DisableIRQ(UART1_IRQn); |
ECE4180 | 1:0701bf58c9fa | 144 | empty = (tx_in == tx_out); |
ECE4180 | 1:0701bf58c9fa | 145 | while ((i==0) || (cmdbuff[i-1] != '\n')) { |
ECE4180 | 1:0701bf58c9fa | 146 | // Wait if buffer full |
ECE4180 | 1:0701bf58c9fa | 147 | if (((tx_in + 1) % buffer_size) == tx_out) { |
ECE4180 | 1:0701bf58c9fa | 148 | // End Critical Section - need to let interrupt routine empty buffer by sending |
ECE4180 | 1:0701bf58c9fa | 149 | NVIC_EnableIRQ(UART1_IRQn); |
ECE4180 | 1:0701bf58c9fa | 150 | while (((tx_in + 1) % buffer_size) == tx_out) { |
ECE4180 | 1:0701bf58c9fa | 151 | } |
ECE4180 | 1:0701bf58c9fa | 152 | // Start Critical Section - don't interrupt while changing global buffer variables |
ECE4180 | 1:0701bf58c9fa | 153 | NVIC_DisableIRQ(UART1_IRQn); |
ECE4180 | 1:0701bf58c9fa | 154 | } |
ECE4180 | 1:0701bf58c9fa | 155 | tx_buffer[tx_in] = cmdbuff[i]; |
ECE4180 | 1:0701bf58c9fa | 156 | i++; |
ECE4180 | 1:0701bf58c9fa | 157 | tx_in = (tx_in + 1) % buffer_size; |
ECE4180 | 1:0701bf58c9fa | 158 | } |
ECE4180 | 1:0701bf58c9fa | 159 | if (esp.writeable() && (empty)) { |
ECE4180 | 1:0701bf58c9fa | 160 | temp_char = tx_buffer[tx_out]; |
ECE4180 | 1:0701bf58c9fa | 161 | tx_out = (tx_out + 1) % buffer_size; |
ECE4180 | 1:0701bf58c9fa | 162 | // Send first character to start tx interrupts, if stopped |
ECE4180 | 1:0701bf58c9fa | 163 | esp.putc(temp_char); |
ECE4180 | 1:0701bf58c9fa | 164 | } |
ECE4180 | 1:0701bf58c9fa | 165 | // End Critical Section |
ECE4180 | 1:0701bf58c9fa | 166 | NVIC_EnableIRQ(UART1_IRQn); |
ECE4180 | 1:0701bf58c9fa | 167 | return; |
ECE4180 | 1:0701bf58c9fa | 168 | } |
ECE4180 | 1:0701bf58c9fa | 169 | |
ECE4180 | 1:0701bf58c9fa | 170 | |
ECE4180 | 1:0701bf58c9fa | 171 | void Huzzah::getreply() |
ECE4180 | 1:0701bf58c9fa | 172 | { |
ECE4180 | 1:0701bf58c9fa | 173 | read_line(); |
ECE4180 | 1:0701bf58c9fa | 174 | sscanf(rx_line,replybuff); |
ECE4180 | 1:0701bf58c9fa | 175 | } |
ECE4180 | 1:0701bf58c9fa | 176 | |
ECE4180 | 1:0701bf58c9fa | 177 | |
ECE4180 | 1:0701bf58c9fa | 178 | void Huzzah::read_line() |
ECE4180 | 1:0701bf58c9fa | 179 | { |
ECE4180 | 1:0701bf58c9fa | 180 | int i; |
ECE4180 | 1:0701bf58c9fa | 181 | i = 0; |
ECE4180 | 1:0701bf58c9fa | 182 | // Start Critical Section - don't interrupt while changing global buffer variables |
ECE4180 | 1:0701bf58c9fa | 183 | NVIC_DisableIRQ(UART1_IRQn); |
ECE4180 | 1:0701bf58c9fa | 184 | // Loop reading rx buffer characters until end of line character |
ECE4180 | 1:0701bf58c9fa | 185 | while ((i==0) || (rx_line[i-1] != '\r')) { |
ECE4180 | 1:0701bf58c9fa | 186 | // Wait if buffer empty |
ECE4180 | 1:0701bf58c9fa | 187 | if (rx_in == rx_out) { |
ECE4180 | 1:0701bf58c9fa | 188 | // End Critical Section - need to allow rx interrupt to get new characters for buffer |
ECE4180 | 1:0701bf58c9fa | 189 | NVIC_EnableIRQ(UART1_IRQn); |
ECE4180 | 1:0701bf58c9fa | 190 | while (rx_in == rx_out) { |
ECE4180 | 1:0701bf58c9fa | 191 | } |
ECE4180 | 1:0701bf58c9fa | 192 | // Start Critical Section - don't interrupt while changing global buffer variables |
ECE4180 | 1:0701bf58c9fa | 193 | NVIC_DisableIRQ(UART1_IRQn); |
ECE4180 | 1:0701bf58c9fa | 194 | } |
ECE4180 | 1:0701bf58c9fa | 195 | rx_line[i] = rx_buffer[rx_out]; |
ECE4180 | 1:0701bf58c9fa | 196 | i++; |
ECE4180 | 1:0701bf58c9fa | 197 | rx_out = (rx_out + 1) % buffer_size; |
ECE4180 | 1:0701bf58c9fa | 198 | } |
ECE4180 | 1:0701bf58c9fa | 199 | // End Critical Section |
ECE4180 | 1:0701bf58c9fa | 200 | NVIC_EnableIRQ(UART1_IRQn); |
ECE4180 | 1:0701bf58c9fa | 201 | rx_line[i-1] = 0; |
ECE4180 | 1:0701bf58c9fa | 202 | return; |
ECE4180 | 1:0701bf58c9fa | 203 | } |
ECE4180 | 1:0701bf58c9fa | 204 | |
ECE4180 | 1:0701bf58c9fa | 205 | |
ECE4180 | 1:0701bf58c9fa | 206 | void Huzzah::espsendcmd() |
ECE4180 | 1:0701bf58c9fa | 207 | { |
ECE4180 | 1:0701bf58c9fa | 208 | esp.printf("%s", configsnd); |
ECE4180 | 1:0701bf58c9fa | 209 | } |
ECE4180 | 1:0701bf58c9fa | 210 | |
ECE4180 | 1:0701bf58c9fa | 211 | |
ECE4180 | 1:0701bf58c9fa | 212 | void Huzzah::espgetreply() |
ECE4180 | 1:0701bf58c9fa | 213 | { |
ECE4180 | 1:0701bf58c9fa | 214 | Timer t; |
ECE4180 | 1:0701bf58c9fa | 215 | memset(configbuf, '\0', sizeof(configbuf)); |
ECE4180 | 1:0701bf58c9fa | 216 | t.start(); |
ECE4180 | 1:0701bf58c9fa | 217 | ended=0; |
ECE4180 | 1:0701bf58c9fa | 218 | count=0; |
ECE4180 | 1:0701bf58c9fa | 219 | while(!ended) { |
ECE4180 | 1:0701bf58c9fa | 220 | if(esp.readable()) { |
ECE4180 | 1:0701bf58c9fa | 221 | configbuf[count] = esp.getc(); |
ECE4180 | 1:0701bf58c9fa | 222 | count++; |
ECE4180 | 1:0701bf58c9fa | 223 | } |
ECE4180 | 1:0701bf58c9fa | 224 | if(t.read() > timeout) { |
ECE4180 | 1:0701bf58c9fa | 225 | ended = 1; |
ECE4180 | 1:0701bf58c9fa | 226 | t.stop(); |
ECE4180 | 1:0701bf58c9fa | 227 | t.reset(); |
ECE4180 | 1:0701bf58c9fa | 228 | } |
ECE4180 | 1:0701bf58c9fa | 229 | } |
ECE4180 | 1:0701bf58c9fa | 230 | } |
ECE4180 | 1:0701bf58c9fa | 231 | |
ECE4180 | 1:0701bf58c9fa | 232 | |
ECE4180 | 1:0701bf58c9fa | 233 | void Huzzah::espconfig() |
ECE4180 | 1:0701bf58c9fa | 234 | { |
ECE4180 | 1:0701bf58c9fa | 235 | wait(5); |
ECE4180 | 1:0701bf58c9fa | 236 | pc.printf("\f---------- Starting ESP Config ----------\r\n\n"); |
ECE4180 | 1:0701bf58c9fa | 237 | pc.printf("---------- Reset & get Firmware ----------\r\n"); |
ECE4180 | 1:0701bf58c9fa | 238 | strcpy(configsnd,"node.restart()\r\n"); |
ECE4180 | 1:0701bf58c9fa | 239 | espsendcmd(); |
ECE4180 | 1:0701bf58c9fa | 240 | timeout=5; |
ECE4180 | 1:0701bf58c9fa | 241 | espgetreply(); |
ECE4180 | 1:0701bf58c9fa | 242 | pc.printf(configbuf); |
ECE4180 | 1:0701bf58c9fa | 243 | |
ECE4180 | 1:0701bf58c9fa | 244 | wait(2); |
ECE4180 | 1:0701bf58c9fa | 245 | |
ECE4180 | 1:0701bf58c9fa | 246 | pc.printf("\n---------- Get Version ----------\r\n"); |
ECE4180 | 1:0701bf58c9fa | 247 | strcpy(configsnd,"print(node.info())\r\n"); |
ECE4180 | 1:0701bf58c9fa | 248 | espsendcmd(); |
ECE4180 | 1:0701bf58c9fa | 249 | timeout=4; |
ECE4180 | 1:0701bf58c9fa | 250 | espgetreply(); |
ECE4180 | 1:0701bf58c9fa | 251 | pc.printf(configbuf); |
ECE4180 | 1:0701bf58c9fa | 252 | |
ECE4180 | 1:0701bf58c9fa | 253 | wait(3); |
ECE4180 | 1:0701bf58c9fa | 254 | |
ECE4180 | 1:0701bf58c9fa | 255 | // set CWMODE to 1=Station,2=AP,3=BOTH, default mode 1 (Station) |
ECE4180 | 1:0701bf58c9fa | 256 | pc.printf("\n---------- Setting Mode ----------\r\n"); |
ECE4180 | 1:0701bf58c9fa | 257 | strcpy(configsnd, "wifi.setmode(wifi.STATION)\r\n"); |
ECE4180 | 1:0701bf58c9fa | 258 | espsendcmd(); |
ECE4180 | 1:0701bf58c9fa | 259 | timeout=4; |
ECE4180 | 1:0701bf58c9fa | 260 | espgetreply(); |
ECE4180 | 1:0701bf58c9fa | 261 | pc.printf(configbuf); |
ECE4180 | 1:0701bf58c9fa | 262 | |
ECE4180 | 1:0701bf58c9fa | 263 | wait(2); |
ECE4180 | 1:0701bf58c9fa | 264 | |
ECE4180 | 1:0701bf58c9fa | 265 | pc.printf("\n---------- Listing Access Points ----------\r\n"); |
ECE4180 | 1:0701bf58c9fa | 266 | strcpy(configsnd, "function listap(t) \r\n"); |
ECE4180 | 1:0701bf58c9fa | 267 | espsendcmd(); |
ECE4180 | 1:0701bf58c9fa | 268 | wait(1); |
ECE4180 | 1:0701bf58c9fa | 269 | strcpy(configsnd, "for k,v in pairs(t) do \r\n"); |
ECE4180 | 1:0701bf58c9fa | 270 | espsendcmd(); |
ECE4180 | 1:0701bf58c9fa | 271 | wait(1); |
ECE4180 | 1:0701bf58c9fa | 272 | strcpy(configsnd, "print(k..\" : \"..v)\r\n"); |
ECE4180 | 1:0701bf58c9fa | 273 | espsendcmd(); |
ECE4180 | 1:0701bf58c9fa | 274 | wait(1); |
ECE4180 | 1:0701bf58c9fa | 275 | strcpy(configsnd, "end\r\n"); |
ECE4180 | 1:0701bf58c9fa | 276 | espsendcmd(); |
ECE4180 | 1:0701bf58c9fa | 277 | wait(1); |
ECE4180 | 1:0701bf58c9fa | 278 | strcpy(configsnd, "end\r\n"); |
ECE4180 | 1:0701bf58c9fa | 279 | espsendcmd(); |
ECE4180 | 1:0701bf58c9fa | 280 | wait(1); |
ECE4180 | 1:0701bf58c9fa | 281 | strcpy(configsnd, "wifi.sta.getap(listap) \r\n"); |
ECE4180 | 1:0701bf58c9fa | 282 | espsendcmd(); |
ECE4180 | 1:0701bf58c9fa | 283 | wait(1); |
ECE4180 | 1:0701bf58c9fa | 284 | timeout=15; |
ECE4180 | 1:0701bf58c9fa | 285 | espgetreply(); |
ECE4180 | 1:0701bf58c9fa | 286 | pc.printf(configbuf); |
ECE4180 | 1:0701bf58c9fa | 287 | |
ECE4180 | 1:0701bf58c9fa | 288 | wait(2); |
ECE4180 | 1:0701bf58c9fa | 289 | |
ECE4180 | 1:0701bf58c9fa | 290 | pc.printf("\n---------- Connecting to AP ----------\r\n"); |
ECE4180 | 1:0701bf58c9fa | 291 | pc.printf("ssid = %s pwd = %s\r\n",ssid.c_str(),pwd.c_str()); |
ECE4180 | 1:0701bf58c9fa | 292 | strcpy(configsnd, "wifi.sta.config(\""); |
ECE4180 | 1:0701bf58c9fa | 293 | strcat(configsnd, ssid.c_str()); |
ECE4180 | 1:0701bf58c9fa | 294 | strcat(configsnd, "\",\""); |
ECE4180 | 1:0701bf58c9fa | 295 | strcat(configsnd, pwd.c_str()); |
ECE4180 | 1:0701bf58c9fa | 296 | strcat(configsnd, "\")\r\n"); |
ECE4180 | 1:0701bf58c9fa | 297 | espsendcmd(); |
ECE4180 | 1:0701bf58c9fa | 298 | timeout=10; |
ECE4180 | 1:0701bf58c9fa | 299 | espgetreply(); |
ECE4180 | 1:0701bf58c9fa | 300 | pc.printf(configbuf); |
ECE4180 | 1:0701bf58c9fa | 301 | |
ECE4180 | 1:0701bf58c9fa | 302 | wait(10); |
ECE4180 | 1:0701bf58c9fa | 303 | |
ECE4180 | 1:0701bf58c9fa | 304 | pc.printf("\n---------- Get IP's ----------\r\n"); |
ECE4180 | 1:0701bf58c9fa | 305 | strcpy(configsnd, "print(wifi.sta.getip())\r\n"); |
ECE4180 | 1:0701bf58c9fa | 306 | espsendcmd(); |
ECE4180 | 1:0701bf58c9fa | 307 | timeout=3; |
ECE4180 | 1:0701bf58c9fa | 308 | espgetreply(); |
ECE4180 | 1:0701bf58c9fa | 309 | pc.printf(configbuf); |
ECE4180 | 1:0701bf58c9fa | 310 | |
ECE4180 | 1:0701bf58c9fa | 311 | wait(1); |
ECE4180 | 2:834f8d2ebe3f | 312 | return; |
ECE4180 | 1:0701bf58c9fa | 313 | } |