Init project for Ping

Committer:
AustinKim
Date:
Tue Sep 17 23:56:35 2019 +0000
Revision:
3:574affd4cf9f
Parent:
2:74f027438e00
Update main.cpp

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AustinKim 0:7a10bb221e55 1 /* WIZnet IoT Shield Cat.M1 Sample code for Arm MBED
AustinKim 0:7a10bb221e55 2 * Copyright (c) 2019 WIZnet Co., Ltd.
AustinKim 0:7a10bb221e55 3 * SPDX-License-Identifier: Apache-2.0
AustinKim 0:7a10bb221e55 4 */
AustinKim 0:7a10bb221e55 5
AustinKim 0:7a10bb221e55 6 /*
AustinKim 0:7a10bb221e55 7 * Licensed under the Apache License, Version 2.0 (the "License");
AustinKim 0:7a10bb221e55 8 * you may not use this file except in compliance with the License.
AustinKim 0:7a10bb221e55 9 * You may obtain a copy of the License at
AustinKim 0:7a10bb221e55 10 *
AustinKim 0:7a10bb221e55 11 * http://www.apache.org/licenses/LICENSE-2.0
AustinKim 0:7a10bb221e55 12 *
AustinKim 0:7a10bb221e55 13 * Unless required by applicable law or agreed to in writing, software
AustinKim 0:7a10bb221e55 14 * distributed under the License is distributed on an "AS IS" BASIS,
AustinKim 0:7a10bb221e55 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
AustinKim 0:7a10bb221e55 16 *
AustinKim 0:7a10bb221e55 17 * See the License for the specific language governing permissions and
AustinKim 0:7a10bb221e55 18 * limitations under the License.
AustinKim 0:7a10bb221e55 19 *
AustinKim 0:7a10bb221e55 20 */
AustinKim 0:7a10bb221e55 21
AustinKim 0:7a10bb221e55 22 #include "mbed.h"
AustinKim 0:7a10bb221e55 23
AustinKim 0:7a10bb221e55 24 #include <string>
AustinKim 0:7a10bb221e55 25
AustinKim 0:7a10bb221e55 26 #define RET_OK 1
AustinKim 0:7a10bb221e55 27 #define RET_NOK -1
AustinKim 0:7a10bb221e55 28 #define DEBUG_ENABLE 1
AustinKim 0:7a10bb221e55 29 #define DEBUG_DISABLE 0
AustinKim 0:7a10bb221e55 30 #define ON 1
AustinKim 0:7a10bb221e55 31 #define OFF 0
AustinKim 0:7a10bb221e55 32
AustinKim 0:7a10bb221e55 33 #define MAX_BUF_SIZE 1024
AustinKim 0:7a10bb221e55 34
AustinKim 0:7a10bb221e55 35 #define WM01_APN_PROTOCOL_IPv4 1
AustinKim 0:7a10bb221e55 36 #define WM01_APN_PROTOCOL_IPv6 2
AustinKim 0:7a10bb221e55 37 #define WM01_DEFAULT_TIMEOUT 1000
AustinKim 0:7a10bb221e55 38 #define WM01_CONNECT_TIMEOUT 15000
AustinKim 0:7a10bb221e55 39 #define WM01_SEND_TIMEOUT 500
AustinKim 0:7a10bb221e55 40 #define WM01_RECV_TIMEOUT 500
AustinKim 0:7a10bb221e55 41
AustinKim 0:7a10bb221e55 42 #define WM01_APN_PROTOCOL WM01_APN_PROTOCOL_IPv6
AustinKim 0:7a10bb221e55 43 #define WM01_DEFAULT_BAUD_RATE 115200
AustinKim 0:7a10bb221e55 44 #define WM01_PARSER_DELIMITER "\r\n"
AustinKim 0:7a10bb221e55 45
AustinKim 0:7a10bb221e55 46 #define CATM1_APN_SKT "lte-internet.sktelecom.com"
AustinKim 0:7a10bb221e55 47
AustinKim 0:7a10bb221e55 48 #define CATM1_DEVICE_NAME_WM01 "WM01"
AustinKim 0:7a10bb221e55 49 #define DEVNAME CATM1_DEVICE_NAME_WM01
AustinKim 0:7a10bb221e55 50
AustinKim 0:7a10bb221e55 51 #define devlog(f_, ...) if(CATM1_DEVICE_DEBUG == DEBUG_ENABLE) { pc.printf("\r\n[%s] ", DEVNAME); pc.printf((f_), ##__VA_ARGS__); }
AustinKim 0:7a10bb221e55 52 #define myprintf(f_, ...) {pc.printf("\r\n[MAIN] "); pc.printf((f_), ##__VA_ARGS__);}
AustinKim 0:7a10bb221e55 53
AustinKim 0:7a10bb221e55 54 /* Pin configuraiton */
AustinKim 0:7a10bb221e55 55 // Cat.M1
AustinKim 0:7a10bb221e55 56 #define MBED_CONF_IOTSHIELD_CATM1_TX D8
AustinKim 0:7a10bb221e55 57 #define MBED_CONF_IOTSHIELD_CATM1_RX D2
AustinKim 0:7a10bb221e55 58 #define MBED_CONF_IOTSHIELD_CATM1_RESET D7
AustinKim 0:7a10bb221e55 59 #define MBED_CONF_IOTSHIELD_CATM1_PWRKEY D9
AustinKim 0:7a10bb221e55 60
AustinKim 0:7a10bb221e55 61 // Sensors
AustinKim 0:7a10bb221e55 62 #define MBED_CONF_IOTSHIELD_SENSOR_CDS A0
AustinKim 0:7a10bb221e55 63 #define MBED_CONF_IOTSHIELD_SENSOR_TEMP A1
AustinKim 0:7a10bb221e55 64
AustinKim 0:7a10bb221e55 65 /* Debug message settings */
AustinKim 0:7a10bb221e55 66 #define WM01_PARSER_DEBUG DEBUG_DISABLE
AustinKim 0:7a10bb221e55 67 #define CATM1_DEVICE_DEBUG DEBUG_ENABLE
AustinKim 0:7a10bb221e55 68
AustinKim 0:7a10bb221e55 69 // Functions: Print information
AustinKim 0:7a10bb221e55 70 void printInfo(void);
AustinKim 0:7a10bb221e55 71
AustinKim 0:7a10bb221e55 72 // Functions: Module Status
AustinKim 0:7a10bb221e55 73 void waitCatM1Ready(void);
AustinKim 0:7a10bb221e55 74 int8_t setEchoStatus_WM01(bool onoff);
AustinKim 0:7a10bb221e55 75 int8_t getUsimStatus_WM01(void);
AustinKim 0:7a10bb221e55 76 int8_t getNetworkStatus_WM01(void);
AustinKim 0:7a10bb221e55 77
AustinKim 0:7a10bb221e55 78 // Functions: PDP context
AustinKim 0:7a10bb221e55 79 int8_t setContextActivate_WM01(void); // Activate a PDP Context
AustinKim 0:7a10bb221e55 80 int8_t setContextDeactivate_WM01(void); // Deactivate a PDP Context
AustinKim 0:7a10bb221e55 81
AustinKim 0:7a10bb221e55 82 // Functions: Ping test
AustinKim 0:7a10bb221e55 83 void printPingToHost_WM01(char *host, int pingnum);
AustinKim 0:7a10bb221e55 84
AustinKim 0:7a10bb221e55 85 Serial pc(USBTX, USBRX); // USB debug
AustinKim 0:7a10bb221e55 86
AustinKim 0:7a10bb221e55 87 UARTSerial *_serial; // Cat.M1 module
AustinKim 0:7a10bb221e55 88 ATCmdParser *_parser;
AustinKim 0:7a10bb221e55 89
AustinKim 0:7a10bb221e55 90 DigitalOut _RESET_WM01(MBED_CONF_IOTSHIELD_CATM1_RESET);
AustinKim 0:7a10bb221e55 91 DigitalOut _PWRKEY_WM01(MBED_CONF_IOTSHIELD_CATM1_PWRKEY);
AustinKim 0:7a10bb221e55 92
AustinKim 0:7a10bb221e55 93 void serialPcInit(void)
AustinKim 0:7a10bb221e55 94 {
AustinKim 0:7a10bb221e55 95 pc.baud(115200);
AustinKim 0:7a10bb221e55 96 pc.format(8, Serial::None, 1);
AustinKim 0:7a10bb221e55 97 }
AustinKim 0:7a10bb221e55 98
AustinKim 0:7a10bb221e55 99 void serialDeviceInit(PinName tx, PinName rx, int baudrate)
AustinKim 0:7a10bb221e55 100 {
AustinKim 0:7a10bb221e55 101 _serial = new UARTSerial(tx, rx, baudrate);
AustinKim 0:7a10bb221e55 102 }
AustinKim 0:7a10bb221e55 103
AustinKim 0:7a10bb221e55 104 void serialAtParserInit(const char *delimiter, bool debug_en)
AustinKim 0:7a10bb221e55 105 {
AustinKim 0:7a10bb221e55 106 _parser = new ATCmdParser(_serial);
AustinKim 0:7a10bb221e55 107 _parser->debug_on(debug_en);
AustinKim 0:7a10bb221e55 108 _parser->set_delimiter(delimiter);
AustinKim 0:7a10bb221e55 109 _parser->set_timeout(WM01_DEFAULT_TIMEOUT);
AustinKim 0:7a10bb221e55 110 }
AustinKim 0:7a10bb221e55 111
AustinKim 0:7a10bb221e55 112 void catm1DeviceInit(void)
AustinKim 0:7a10bb221e55 113 {
AustinKim 0:7a10bb221e55 114 serialDeviceInit( MBED_CONF_IOTSHIELD_CATM1_TX,
AustinKim 0:7a10bb221e55 115 MBED_CONF_IOTSHIELD_CATM1_RX,
AustinKim 0:7a10bb221e55 116 WM01_DEFAULT_BAUD_RATE);
AustinKim 0:7a10bb221e55 117
AustinKim 0:7a10bb221e55 118 serialAtParserInit( WM01_PARSER_DELIMITER,
AustinKim 0:7a10bb221e55 119 WM01_PARSER_DEBUG);
AustinKim 0:7a10bb221e55 120 }
AustinKim 0:7a10bb221e55 121
AustinKim 0:7a10bb221e55 122 void catm1DeviceReset_WM01(void)
AustinKim 0:7a10bb221e55 123 {
AustinKim 0:7a10bb221e55 124 _RESET_WM01 = 1;
AustinKim 0:7a10bb221e55 125 _PWRKEY_WM01 = 1;
AustinKim 0:7a10bb221e55 126 wait_ms(300);
AustinKim 0:7a10bb221e55 127
AustinKim 0:7a10bb221e55 128 _RESET_WM01 = 0;
AustinKim 0:7a10bb221e55 129 _PWRKEY_WM01 = 0;
AustinKim 0:7a10bb221e55 130 wait_ms(400);
AustinKim 0:7a10bb221e55 131
AustinKim 0:7a10bb221e55 132 _RESET_WM01 = 1;
AustinKim 0:7a10bb221e55 133 wait_ms(1000);
AustinKim 0:7a10bb221e55 134 }
AustinKim 0:7a10bb221e55 135
AustinKim 0:7a10bb221e55 136 // ----------------------------------------------------------------
AustinKim 0:7a10bb221e55 137 // Main routine
AustinKim 0:7a10bb221e55 138 // ----------------------------------------------------------------
AustinKim 0:7a10bb221e55 139
AustinKim 0:7a10bb221e55 140 int main()
AustinKim 0:7a10bb221e55 141 {
AustinKim 0:7a10bb221e55 142 char ping_dest_1st[] = "8.8.8.8";
AustinKim 1:9f135d5ea1f9 143 char ping_dest_2nd[] = "www.google.com";
AustinKim 0:7a10bb221e55 144
AustinKim 0:7a10bb221e55 145 serialPcInit();
AustinKim 0:7a10bb221e55 146 catm1DeviceInit();
AustinKim 0:7a10bb221e55 147
AustinKim 0:7a10bb221e55 148 myprintf("Waiting for Cat.M1 Module Ready...\r\n");
AustinKim 0:7a10bb221e55 149
AustinKim 0:7a10bb221e55 150 catm1DeviceReset_WM01();
AustinKim 0:7a10bb221e55 151
AustinKim 0:7a10bb221e55 152 waitCatM1Ready();
AustinKim 0:7a10bb221e55 153
AustinKim 0:7a10bb221e55 154 wait_ms(5000);
AustinKim 0:7a10bb221e55 155
AustinKim 0:7a10bb221e55 156 myprintf("System Init Complete\r\n");
AustinKim 0:7a10bb221e55 157
AustinKim 0:7a10bb221e55 158 printInfo();
AustinKim 0:7a10bb221e55 159
AustinKim 0:7a10bb221e55 160 setEchoStatus_WM01(OFF);
AustinKim 0:7a10bb221e55 161
AustinKim 0:7a10bb221e55 162 getUsimStatus_WM01();
AustinKim 0:7a10bb221e55 163
AustinKim 0:7a10bb221e55 164 getNetworkStatus_WM01();
AustinKim 0:7a10bb221e55 165
AustinKim 1:9f135d5ea1f9 166 setContextActivate_WM01();
AustinKim 1:9f135d5ea1f9 167
AustinKim 1:9f135d5ea1f9 168 myprintf("[Ping] Host : %s\r\n", ping_dest_1st);
AustinKim 0:7a10bb221e55 169 printPingToHost_WM01(ping_dest_1st, 4);
AustinKim 0:7a10bb221e55 170
AustinKim 0:7a10bb221e55 171 wait_ms(2000);
AustinKim 0:7a10bb221e55 172
AustinKim 1:9f135d5ea1f9 173 myprintf("[Ping] Host : %s\r\n", ping_dest_2nd);
AustinKim 0:7a10bb221e55 174 printPingToHost_WM01(ping_dest_2nd, 4);
AustinKim 0:7a10bb221e55 175
AustinKim 0:7a10bb221e55 176 setContextDeactivate_WM01();
AustinKim 0:7a10bb221e55 177 }
AustinKim 0:7a10bb221e55 178
AustinKim 0:7a10bb221e55 179 // ----------------------------------------------------------------
AustinKim 0:7a10bb221e55 180 // Functions: Print information
AustinKim 0:7a10bb221e55 181 // ----------------------------------------------------------------
AustinKim 0:7a10bb221e55 182
AustinKim 0:7a10bb221e55 183 void printInfo(void)
AustinKim 0:7a10bb221e55 184 {
AustinKim 0:7a10bb221e55 185 myprintf("WIZnet IoT Shield for Arm MBED");
AustinKim 0:7a10bb221e55 186 myprintf("LTE Cat.M1 Version");
AustinKim 0:7a10bb221e55 187 myprintf("=================================================");
AustinKim 0:7a10bb221e55 188 myprintf(">> Target Board: WIoT-WM01 (Woorinet WM-N400MSE)");
AustinKim 0:7a10bb221e55 189 myprintf(">> Sample Code: Ping Test");
AustinKim 0:7a10bb221e55 190 myprintf("=================================================\r\n");
AustinKim 0:7a10bb221e55 191 }
AustinKim 0:7a10bb221e55 192
AustinKim 0:7a10bb221e55 193 // ----------------------------------------------------------------
AustinKim 0:7a10bb221e55 194 // Functions: Cat.M1 Status
AustinKim 0:7a10bb221e55 195 // ----------------------------------------------------------------
AustinKim 0:7a10bb221e55 196
AustinKim 0:7a10bb221e55 197 void waitCatM1Ready(void)
AustinKim 0:7a10bb221e55 198 {
AustinKim 0:7a10bb221e55 199 while(1)
AustinKim 0:7a10bb221e55 200 {
AustinKim 0:7a10bb221e55 201 if(_parser->send("AT") && _parser->recv("OK"))
AustinKim 0:7a10bb221e55 202 {
AustinKim 0:7a10bb221e55 203 myprintf("WM01 is Available\r\n");
AustinKim 0:7a10bb221e55 204
AustinKim 0:7a10bb221e55 205 return;
AustinKim 0:7a10bb221e55 206 }
AustinKim 0:7a10bb221e55 207 }
AustinKim 0:7a10bb221e55 208 }
AustinKim 0:7a10bb221e55 209
AustinKim 0:7a10bb221e55 210 int8_t setEchoStatus_WM01(bool onoff)
AustinKim 0:7a10bb221e55 211 {
AustinKim 0:7a10bb221e55 212 int8_t ret = RET_NOK;
AustinKim 0:7a10bb221e55 213 char _buf[10];
AustinKim 0:7a10bb221e55 214
AustinKim 0:7a10bb221e55 215 sprintf((char *)_buf, "ATE%d", onoff);
AustinKim 0:7a10bb221e55 216
AustinKim 0:7a10bb221e55 217 if(_parser->send(_buf) && _parser->recv("OK"))
AustinKim 0:7a10bb221e55 218 {
AustinKim 0:7a10bb221e55 219 devlog("Turn Echo %s : success\r\n", onoff?"ON":"OFF");
AustinKim 0:7a10bb221e55 220
AustinKim 0:7a10bb221e55 221 ret = RET_OK;
AustinKim 0:7a10bb221e55 222 }
AustinKim 0:7a10bb221e55 223 else
AustinKim 0:7a10bb221e55 224 {
AustinKim 0:7a10bb221e55 225 devlog("Turn Echo %s : failed\r\n", onoff?"ON":"OFF");
AustinKim 0:7a10bb221e55 226 }
AustinKim 0:7a10bb221e55 227
AustinKim 0:7a10bb221e55 228 return ret;
AustinKim 0:7a10bb221e55 229 }
AustinKim 0:7a10bb221e55 230
AustinKim 0:7a10bb221e55 231 int8_t getUsimStatus_WM01(void)
AustinKim 0:7a10bb221e55 232 {
AustinKim 0:7a10bb221e55 233 int8_t ret = RET_NOK;
AustinKim 0:7a10bb221e55 234
AustinKim 0:7a10bb221e55 235 if(_parser->send("AT$$STAT?") && _parser->recv("$$STAT:READY") && _parser->recv("OK"))
AustinKim 0:7a10bb221e55 236 {
AustinKim 0:7a10bb221e55 237 devlog("USIM Status : READY\r\n");
AustinKim 0:7a10bb221e55 238
AustinKim 0:7a10bb221e55 239 ret = RET_OK;
AustinKim 0:7a10bb221e55 240 }
AustinKim 0:7a10bb221e55 241 else
AustinKim 0:7a10bb221e55 242 {
AustinKim 0:7a10bb221e55 243 devlog("Retrieving USIM Status failed\r\n");
AustinKim 0:7a10bb221e55 244 }
AustinKim 0:7a10bb221e55 245
AustinKim 0:7a10bb221e55 246 return ret;
AustinKim 0:7a10bb221e55 247 }
AustinKim 0:7a10bb221e55 248
AustinKim 0:7a10bb221e55 249 int8_t getNetworkStatus_WM01(void)
AustinKim 0:7a10bb221e55 250 {
AustinKim 0:7a10bb221e55 251 int8_t ret = RET_NOK;
AustinKim 0:7a10bb221e55 252 int val, stat;
AustinKim 0:7a10bb221e55 253
AustinKim 0:7a10bb221e55 254 if(_parser->send("AT+CEREG?") && _parser->recv("+CEREG: %d,%d", &val, &stat) && _parser->recv("OK"))
AustinKim 0:7a10bb221e55 255 {
AustinKim 0:7a10bb221e55 256 if((val == 0) && (stat == 1))
AustinKim 0:7a10bb221e55 257 {
AustinKim 0:7a10bb221e55 258 devlog("Network Status : attached\r\n");
AustinKim 0:7a10bb221e55 259
AustinKim 0:7a10bb221e55 260 ret = RET_OK;
AustinKim 0:7a10bb221e55 261 }
AustinKim 0:7a10bb221e55 262 else
AustinKim 0:7a10bb221e55 263 {
AustinKim 0:7a10bb221e55 264 devlog("Network Status : %d, %d\r\n", val, stat);
AustinKim 0:7a10bb221e55 265 }
AustinKim 0:7a10bb221e55 266 }
AustinKim 0:7a10bb221e55 267 else
AustinKim 0:7a10bb221e55 268 {
AustinKim 0:7a10bb221e55 269 devlog("Network Status : Error\r\n");
AustinKim 0:7a10bb221e55 270 }
AustinKim 0:7a10bb221e55 271
AustinKim 0:7a10bb221e55 272 return ret;
AustinKim 0:7a10bb221e55 273 }
AustinKim 0:7a10bb221e55 274
AustinKim 0:7a10bb221e55 275 // ----------------------------------------------------------------
AustinKim 0:7a10bb221e55 276 // Functions: Cat.M1 PDP context activate / deactivate
AustinKim 0:7a10bb221e55 277 // ----------------------------------------------------------------
AustinKim 0:7a10bb221e55 278
AustinKim 0:7a10bb221e55 279 int8_t setContextActivate_WM01(void) // Activate a PDP Context
AustinKim 0:7a10bb221e55 280 {
AustinKim 0:7a10bb221e55 281 int8_t ret = RET_NOK;
AustinKim 0:7a10bb221e55 282
AustinKim 0:7a10bb221e55 283 _parser->send("AT*RNDISDATA=1");
AustinKim 0:7a10bb221e55 284
AustinKim 0:7a10bb221e55 285 if(_parser->recv("OK"))
AustinKim 0:7a10bb221e55 286 {
AustinKim 0:7a10bb221e55 287 devlog("Activate a PDP Context\r\n");
AustinKim 0:7a10bb221e55 288
AustinKim 0:7a10bb221e55 289 ret = RET_OK;
AustinKim 0:7a10bb221e55 290 }
AustinKim 0:7a10bb221e55 291 else
AustinKim 0:7a10bb221e55 292 {
AustinKim 0:7a10bb221e55 293 devlog("PDP Context Activation failed\r\n");
AustinKim 0:7a10bb221e55 294 }
AustinKim 0:7a10bb221e55 295
AustinKim 0:7a10bb221e55 296 return ret;
AustinKim 0:7a10bb221e55 297 }
AustinKim 0:7a10bb221e55 298
AustinKim 0:7a10bb221e55 299 int8_t setContextDeactivate_WM01(void) // Deactivate a PDP Context
AustinKim 0:7a10bb221e55 300 {
AustinKim 0:7a10bb221e55 301 int8_t ret = RET_NOK;
AustinKim 0:7a10bb221e55 302
AustinKim 0:7a10bb221e55 303 _parser->send("AT*RNDISDATA=0");
AustinKim 0:7a10bb221e55 304
AustinKim 0:7a10bb221e55 305 if(_parser->recv("OK"))
AustinKim 0:7a10bb221e55 306 {
AustinKim 0:7a10bb221e55 307 devlog("Deactivate a PDP Context\r\n");
AustinKim 0:7a10bb221e55 308
AustinKim 0:7a10bb221e55 309 ret = RET_OK;
AustinKim 0:7a10bb221e55 310 }
AustinKim 0:7a10bb221e55 311 else
AustinKim 0:7a10bb221e55 312 {
AustinKim 0:7a10bb221e55 313 devlog("PDP Context Deactivation failed\r\n");
AustinKim 0:7a10bb221e55 314 }
AustinKim 0:7a10bb221e55 315
AustinKim 0:7a10bb221e55 316 return ret;
AustinKim 0:7a10bb221e55 317 }
AustinKim 0:7a10bb221e55 318
AustinKim 0:7a10bb221e55 319 // ----------------------------------------------------------------
AustinKim 0:7a10bb221e55 320 // Functions: Cat.M1 Ping test
AustinKim 0:7a10bb221e55 321 // ----------------------------------------------------------------
AustinKim 0:7a10bb221e55 322
AustinKim 0:7a10bb221e55 323 void printPingToHost_WM01(char *host, int pingnum)
AustinKim 0:7a10bb221e55 324 {
AustinKim 2:74f027438e00 325 Timer t;
AustinKim 0:7a10bb221e55 326
AustinKim 0:7a10bb221e55 327 if((pingnum < 1) || (pingnum > 10))
AustinKim 0:7a10bb221e55 328 {
AustinKim 0:7a10bb221e55 329 devlog("The maximum number of sending Ping request range is 1-10, and the default value is 4\r\n");
AustinKim 0:7a10bb221e55 330
AustinKim 0:7a10bb221e55 331 return;
AustinKim 0:7a10bb221e55 332 }
AustinKim 0:7a10bb221e55 333
AustinKim 2:74f027438e00 334 _parser->set_timeout((1000 * pingnum) + 2000);
AustinKim 0:7a10bb221e55 335
AustinKim 0:7a10bb221e55 336 if(_parser->send("AT*PING=%s,%d", host, pingnum) && _parser->recv("OK"))
AustinKim 0:7a10bb221e55 337 {
AustinKim 2:74f027438e00 338 t.start();
AustinKim 0:7a10bb221e55 339
AustinKim 2:74f027438e00 340 while(t.read_ms() < ((1000 * pingnum) + 2000))
AustinKim 2:74f027438e00 341 {
AustinKim 3:574affd4cf9f 342 pc.printf("%c", _parser->getc());
AustinKim 2:74f027438e00 343 }
AustinKim 0:7a10bb221e55 344 }
AustinKim 0:7a10bb221e55 345
AustinKim 0:7a10bb221e55 346 _parser->set_timeout(WM01_DEFAULT_TIMEOUT);
AustinKim 0:7a10bb221e55 347 _parser->flush();
AustinKim 0:7a10bb221e55 348 }