Init project for GPS

Committer:
AustinKim
Date:
Mon Sep 16 08:17:57 2019 +0000
Revision:
1:d6226d2bb0b8
Parent:
0:6d4ac55b6b76
Child:
2:6fc697f1ebbd
Update project name

Who changed what in which revision?

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