Csr location demo application shows location and satellite information, which supports H13467 + ST F103RB/NXP LCP1549 boards now.

Dependencies:   CsrLocation mbed GPSProvider

Fork of CsrLocationDemo by Qualcomm Technologies International, Ltd.

Committer:
zhjcpi
Date:
Wed May 28 11:25:12 2014 +0000
Revision:
6:d040264b3329
Parent:
5:a4f421140212
Child:
9:87d1555b6219
Fix bug, now allow get postion in runing state and PTF mode.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
zhjcpi 0:789f6b6f710d 1
zhjcpi 0:789f6b6f710d 2 /* CsrLocation class for mbed Microcontroller
zhjcpi 0:789f6b6f710d 3 * Copyright 2014 CSR plc
zhjcpi 0:789f6b6f710d 4 */
zhjcpi 0:789f6b6f710d 5
zhjcpi 0:789f6b6f710d 6
zhjcpi 0:789f6b6f710d 7 #include "mbed.h"
zhjcpi 0:789f6b6f710d 8 #include "CsrLocation.h"
zhjcpi 0:789f6b6f710d 9
zhjcpi 3:7a3ed8ae071d 10 #define APP_DBG_PORT_BAUD 115200
zhjcpi 3:7a3ed8ae071d 11 #define CSR_APP_LOG_INFO(...) sSerialDebug.printf(__VA_ARGS__)
zhjcpi 3:7a3ed8ae071d 12
zhjcpi 0:789f6b6f710d 13 /* appliation commands */
zhjcpi 0:789f6b6f710d 14 typedef enum AppCmd
zhjcpi 0:789f6b6f710d 15 {
zhjcpi 0:789f6b6f710d 16 APP_CMD_IDLE, // No special command
zhjcpi 0:789f6b6f710d 17 APP_CMD_HELP, // Show the supported commands
zhjcpi 0:789f6b6f710d 18 APP_CMD_START, // Start location
zhjcpi 0:789f6b6f710d 19 APP_CMD_STOP, // Stop location
zhjcpi 0:789f6b6f710d 20 APP_CMD_PM_FULL, // Set full power mode
zhjcpi 0:789f6b6f710d 21 APP_CMD_PM_PTF, // Set low power PTF mode
zhjcpi 0:789f6b6f710d 22 APP_CMD_PTF_GETPOS, // Get location immediately in low power PTF mode
zhjcpi 3:7a3ed8ae071d 23 APP_CMD_NMEA, // proto mode is NMEA
zhjcpi 3:7a3ed8ae071d 24 APP_CMD_OSP, // proto mode is OSP
zhjcpi 3:7a3ed8ae071d 25 APP_CMD_SWITCH_NMEA, // Debug command, switch chip to NMEA protocol at 4800bps
zhjcpi 3:7a3ed8ae071d 26 APP_CMD_SWITCH_OSP, // Debug command, switch chip to NMEA protocol at 4800bps
zhjcpi 3:7a3ed8ae071d 27 APP_CMD_START_FAILED, // Process start failed case
zhjcpi 3:7a3ed8ae071d 28 APP_CMD_STOP_FAILED, // Process stop failed case
zhjcpi 0:789f6b6f710d 29 APP_CMD_ONOFF_ON, // Debug command, pull onoff pin high level
zhjcpi 0:789f6b6f710d 30 APP_CMD_ONOFF_OFF, // Debug command, pull onoff pin low level
zhjcpi 0:789f6b6f710d 31 APP_CMD_RESET_ON, // Debug command, pull reset pin high level
zhjcpi 0:789f6b6f710d 32 APP_CMD_RESET_OFF // Debug command, pull reset pin low level
zhjcpi 0:789f6b6f710d 33 }eAppCmd;
zhjcpi 0:789f6b6f710d 34
zhjcpi 0:789f6b6f710d 35
zhjcpi 0:789f6b6f710d 36 static void _AppShowCmd(void);
zhjcpi 2:b70e3a839116 37 static void _AppOutputCallback(uint32_t msgId, void * const pMsgData, uint32_t msgLength);
zhjcpi 2:b70e3a839116 38 static void _AppEventCallback(eCsrLocEventType event, uint32_t data);
zhjcpi 0:789f6b6f710d 39 static void _ConsoleRxHandler(void);
zhjcpi 0:789f6b6f710d 40 static void _AppCmdProcess(char *pCmd);
zhjcpi 0:789f6b6f710d 41
zhjcpi 0:789f6b6f710d 42
zhjcpi 0:789f6b6f710d 43 static int sAppCmd = APP_CMD_IDLE;
zhjcpi 3:7a3ed8ae071d 44 static ePowerMode sPwrMode = PWR_FULL;
zhjcpi 3:7a3ed8ae071d 45 static eProto sProto = PROTO_OSP;
zhjcpi 0:789f6b6f710d 46
zhjcpi 3:7a3ed8ae071d 47 static DBG_SERIAL_TYPE sSerialDebug(PINMAP_UART_DEBUG_TX, PINMAP_UART_DEBUG_RX);
zhjcpi 3:7a3ed8ae071d 48 static LOC_SERIAL_TYPE sSerialLoc(PINMAP_UART_LOC_TX, PINMAP_UART_LOC_RX);
zhjcpi 3:7a3ed8ae071d 49 static DigitalOut sPinOnoff(PINMAP_GPIO_LOC_ONOFF);
zhjcpi 3:7a3ed8ae071d 50 static DigitalOut sPinReset(PINMAP_GPIO_LOC_RESET);
zhjcpi 3:7a3ed8ae071d 51 static DigitalOut sLedLocOn(LOC_LED1);
zhjcpi 3:7a3ed8ae071d 52 static DigitalOut sLedPosReport(LOC_LED2);
zhjcpi 0:789f6b6f710d 53
zhjcpi 0:789f6b6f710d 54
zhjcpi 0:789f6b6f710d 55 int main(void)
zhjcpi 0:789f6b6f710d 56 {
zhjcpi 0:789f6b6f710d 57 CsrLocation *pCsrLoc;
zhjcpi 0:789f6b6f710d 58 tCsrLocConfig locConfig;
zhjcpi 0:789f6b6f710d 59
zhjcpi 0:789f6b6f710d 60 /* initialize the debug serial port */
zhjcpi 3:7a3ed8ae071d 61 sSerialDebug.baud(APP_DBG_PORT_BAUD);
zhjcpi 0:789f6b6f710d 62 sSerialDebug.attach(&_ConsoleRxHandler);
zhjcpi 0:789f6b6f710d 63
zhjcpi 0:789f6b6f710d 64 /* initialize the CsrLocConfig */
zhjcpi 0:789f6b6f710d 65 locConfig.pSerialDebug = &sSerialDebug;
zhjcpi 0:789f6b6f710d 66 locConfig.pSerialLoc = &sSerialLoc;
zhjcpi 0:789f6b6f710d 67 locConfig.pPinOnoff = &sPinOnoff;
zhjcpi 0:789f6b6f710d 68 locConfig.pPinReset = &sPinReset;
zhjcpi 0:789f6b6f710d 69
zhjcpi 0:789f6b6f710d 70 /* new the CsrLocation instance */
zhjcpi 0:789f6b6f710d 71 pCsrLoc = new CsrLocation(&locConfig);
zhjcpi 0:789f6b6f710d 72 if(pCsrLoc == NULL)
zhjcpi 0:789f6b6f710d 73 {
zhjcpi 3:7a3ed8ae071d 74 CSR_APP_LOG_INFO("Failed to new csrLocation.\r\n");
zhjcpi 0:789f6b6f710d 75 sSerialDebug.attach(NULL);
zhjcpi 0:789f6b6f710d 76 return -1;
zhjcpi 0:789f6b6f710d 77 }
zhjcpi 3:7a3ed8ae071d 78 else
zhjcpi 3:7a3ed8ae071d 79 {
zhjcpi 3:7a3ed8ae071d 80 CSR_APP_LOG_INFO("Success to new csrLocation.\r\n");
zhjcpi 3:7a3ed8ae071d 81 }
zhjcpi 0:789f6b6f710d 82
zhjcpi 0:789f6b6f710d 83 /* Register output callback and event callback functions */
zhjcpi 0:789f6b6f710d 84 pCsrLoc->CsrLocRegOutput(_AppOutputCallback, _AppEventCallback);
zhjcpi 0:789f6b6f710d 85
zhjcpi 0:789f6b6f710d 86 _AppShowCmd();
zhjcpi 0:789f6b6f710d 87
zhjcpi 0:789f6b6f710d 88 while(1)
zhjcpi 0:789f6b6f710d 89 {
zhjcpi 0:789f6b6f710d 90 switch(sAppCmd)
zhjcpi 0:789f6b6f710d 91 {
zhjcpi 0:789f6b6f710d 92 case APP_CMD_HELP:
zhjcpi 0:789f6b6f710d 93 sAppCmd = APP_CMD_IDLE;
zhjcpi 0:789f6b6f710d 94 _AppShowCmd();
zhjcpi 0:789f6b6f710d 95 break;
zhjcpi 0:789f6b6f710d 96 case APP_CMD_START:
zhjcpi 0:789f6b6f710d 97 sAppCmd = APP_CMD_IDLE;
zhjcpi 5:a4f421140212 98 if(pCsrLoc->CsrLocGetState() == CSR_LOC_STATE_RUN)
zhjcpi 5:a4f421140212 99 {
zhjcpi 5:a4f421140212 100 CSR_APP_LOG_INFO("Cannot execute this command as location is in running state, please stop location firstly.\r\n");
zhjcpi 5:a4f421140212 101 break;
zhjcpi 5:a4f421140212 102 }
zhjcpi 3:7a3ed8ae071d 103 CSR_APP_LOG_INFO("start location.\r\n");
zhjcpi 0:789f6b6f710d 104 sLedLocOn = 1;
zhjcpi 3:7a3ed8ae071d 105 pCsrLoc->CsrLocStart(sPwrMode, sProto);
zhjcpi 0:789f6b6f710d 106 break;
zhjcpi 0:789f6b6f710d 107 case APP_CMD_STOP:
zhjcpi 0:789f6b6f710d 108 sAppCmd = APP_CMD_IDLE;
zhjcpi 5:a4f421140212 109 if(pCsrLoc->CsrLocGetState() == CSR_LOC_STATE_IDLE)
zhjcpi 5:a4f421140212 110 {
zhjcpi 5:a4f421140212 111 CSR_APP_LOG_INFO("Cannot execute this command as location is not in running state.\r\n");
zhjcpi 5:a4f421140212 112 break;
zhjcpi 5:a4f421140212 113 }
zhjcpi 3:7a3ed8ae071d 114 CSR_APP_LOG_INFO("stop location.\r\n");
zhjcpi 0:789f6b6f710d 115 sLedLocOn = 0;
zhjcpi 0:789f6b6f710d 116 pCsrLoc->CsrLocStop();
zhjcpi 0:789f6b6f710d 117 break;
zhjcpi 0:789f6b6f710d 118 case APP_CMD_START_FAILED:
zhjcpi 0:789f6b6f710d 119 sAppCmd = APP_CMD_IDLE;
zhjcpi 3:7a3ed8ae071d 120 CSR_APP_LOG_INFO("reset as start failed.\r\n");
zhjcpi 0:789f6b6f710d 121 sLedLocOn = 0;
zhjcpi 0:789f6b6f710d 122 pCsrLoc->CsrLocStop();
zhjcpi 0:789f6b6f710d 123 pCsrLoc->CsrLocReset();
zhjcpi 0:789f6b6f710d 124 break;
zhjcpi 0:789f6b6f710d 125 case APP_CMD_STOP_FAILED:
zhjcpi 0:789f6b6f710d 126 sAppCmd = APP_CMD_IDLE;
zhjcpi 3:7a3ed8ae071d 127 CSR_APP_LOG_INFO("reset as stop failed.\r\n");
zhjcpi 0:789f6b6f710d 128 sLedLocOn = 0;
zhjcpi 0:789f6b6f710d 129 pCsrLoc->CsrLocStop();
zhjcpi 0:789f6b6f710d 130 pCsrLoc->CsrLocReset();
zhjcpi 0:789f6b6f710d 131 break;
zhjcpi 0:789f6b6f710d 132 case APP_CMD_IDLE:
zhjcpi 0:789f6b6f710d 133 pCsrLoc->CsrLocUpdate();
zhjcpi 0:789f6b6f710d 134 break;
zhjcpi 0:789f6b6f710d 135 case APP_CMD_ONOFF_ON:
zhjcpi 3:7a3ed8ae071d 136 CSR_APP_LOG_INFO("onoff on.\r\n");
zhjcpi 0:789f6b6f710d 137 sAppCmd = APP_CMD_IDLE;
zhjcpi 0:789f6b6f710d 138 sPinOnoff = 1;
zhjcpi 0:789f6b6f710d 139 break;
zhjcpi 0:789f6b6f710d 140 case APP_CMD_ONOFF_OFF:
zhjcpi 3:7a3ed8ae071d 141 CSR_APP_LOG_INFO("onoff off.\r\n");
zhjcpi 0:789f6b6f710d 142 sAppCmd = APP_CMD_IDLE;
zhjcpi 0:789f6b6f710d 143 sPinOnoff = 0;
zhjcpi 0:789f6b6f710d 144 break;
zhjcpi 0:789f6b6f710d 145 case APP_CMD_RESET_ON:
zhjcpi 3:7a3ed8ae071d 146 CSR_APP_LOG_INFO("reset on.\r\n");
zhjcpi 0:789f6b6f710d 147 sAppCmd = APP_CMD_IDLE;
zhjcpi 0:789f6b6f710d 148 sPinReset = 1;
zhjcpi 0:789f6b6f710d 149 break;
zhjcpi 0:789f6b6f710d 150 case APP_CMD_RESET_OFF:
zhjcpi 3:7a3ed8ae071d 151 CSR_APP_LOG_INFO("reset off.\r\n");
zhjcpi 0:789f6b6f710d 152 sAppCmd = APP_CMD_IDLE;
zhjcpi 0:789f6b6f710d 153 sPinReset = 0;
zhjcpi 0:789f6b6f710d 154 break;
zhjcpi 0:789f6b6f710d 155 case APP_CMD_PTF_GETPOS:
zhjcpi 5:a4f421140212 156 sAppCmd = APP_CMD_IDLE;
zhjcpi 6:d040264b3329 157 if(pCsrLoc->CsrLocGetState() != CSR_LOC_STATE_RUN)
zhjcpi 5:a4f421140212 158 {
zhjcpi 6:d040264b3329 159 CSR_APP_LOG_INFO("Cannot execute this command as location is not in running state, please start location in PTF mode firstly.\r\n");
zhjcpi 5:a4f421140212 160 break;
zhjcpi 5:a4f421140212 161 }
zhjcpi 3:7a3ed8ae071d 162 CSR_APP_LOG_INFO("lpm get pos.\r\n");
zhjcpi 0:789f6b6f710d 163 pCsrLoc->CsrLocLpmGetPos();
zhjcpi 0:789f6b6f710d 164 break;
zhjcpi 0:789f6b6f710d 165 case APP_CMD_NMEA:
zhjcpi 5:a4f421140212 166 sAppCmd = APP_CMD_IDLE;
zhjcpi 5:a4f421140212 167 if(pCsrLoc->CsrLocGetState() == CSR_LOC_STATE_RUN)
zhjcpi 5:a4f421140212 168 {
zhjcpi 5:a4f421140212 169 CSR_APP_LOG_INFO("Cannot execute this command as location is in running state, please stop location firstly.\r\n");
zhjcpi 5:a4f421140212 170 break;
zhjcpi 5:a4f421140212 171 }
zhjcpi 4:b917d49df4bd 172 if(sPwrMode != PWR_FULL)
zhjcpi 4:b917d49df4bd 173 {
zhjcpi 5:a4f421140212 174 CSR_APP_LOG_INFO("Cannot select NMEA protocol because current lpm is not supported for NMEA protocol, pls switch to FPM firstly.\r\n");
zhjcpi 4:b917d49df4bd 175 }
zhjcpi 4:b917d49df4bd 176 else
zhjcpi 4:b917d49df4bd 177 {
zhjcpi 4:b917d49df4bd 178 CSR_APP_LOG_INFO("select NMEA protocol.\r\n");
zhjcpi 4:b917d49df4bd 179 sProto = PROTO_NMEA;
zhjcpi 4:b917d49df4bd 180 }
zhjcpi 3:7a3ed8ae071d 181 break;
zhjcpi 3:7a3ed8ae071d 182 case APP_CMD_OSP:
zhjcpi 5:a4f421140212 183 sAppCmd = APP_CMD_IDLE;
zhjcpi 5:a4f421140212 184 if(pCsrLoc->CsrLocGetState() == CSR_LOC_STATE_RUN)
zhjcpi 5:a4f421140212 185 {
zhjcpi 5:a4f421140212 186 CSR_APP_LOG_INFO("Cannot execute this command as location is in running state, please stop location firstly.\r\n");
zhjcpi 5:a4f421140212 187 break;
zhjcpi 5:a4f421140212 188 }
zhjcpi 3:7a3ed8ae071d 189 CSR_APP_LOG_INFO("select OSP protocol.\r\n");
zhjcpi 3:7a3ed8ae071d 190 sProto = PROTO_OSP;
zhjcpi 3:7a3ed8ae071d 191 break;
zhjcpi 3:7a3ed8ae071d 192 case APP_CMD_SWITCH_NMEA:
zhjcpi 5:a4f421140212 193 sAppCmd = APP_CMD_IDLE;
zhjcpi 5:a4f421140212 194 if(pCsrLoc->CsrLocGetState() == CSR_LOC_STATE_RUN)
zhjcpi 5:a4f421140212 195 {
zhjcpi 5:a4f421140212 196 CSR_APP_LOG_INFO("Cannot execute this command as location is in running state, please stop location firstly.\r\n");
zhjcpi 5:a4f421140212 197 break;
zhjcpi 5:a4f421140212 198 }
zhjcpi 3:7a3ed8ae071d 199 CSR_APP_LOG_INFO("switch to NMEA protocol.\r\n");
zhjcpi 0:789f6b6f710d 200 pCsrLoc->CsrLocDebugSwitch2Nmea();
zhjcpi 0:789f6b6f710d 201 break;
zhjcpi 0:789f6b6f710d 202 case APP_CMD_PM_FULL:
zhjcpi 5:a4f421140212 203 sAppCmd = APP_CMD_IDLE;
zhjcpi 5:a4f421140212 204 if(pCsrLoc->CsrLocGetState() == CSR_LOC_STATE_RUN)
zhjcpi 5:a4f421140212 205 {
zhjcpi 5:a4f421140212 206 CSR_APP_LOG_INFO("Cannot execute this command as location is in running state, please stop location firstly.\r\n");
zhjcpi 5:a4f421140212 207 break;
zhjcpi 5:a4f421140212 208 }
zhjcpi 3:7a3ed8ae071d 209 CSR_APP_LOG_INFO("fpm set.\r\n");
zhjcpi 0:789f6b6f710d 210 sPwrMode = PWR_FULL;
zhjcpi 0:789f6b6f710d 211 break;
zhjcpi 0:789f6b6f710d 212 case APP_CMD_PM_PTF:
zhjcpi 5:a4f421140212 213 sAppCmd = APP_CMD_IDLE;
zhjcpi 5:a4f421140212 214 if(pCsrLoc->CsrLocGetState() == CSR_LOC_STATE_RUN)
zhjcpi 5:a4f421140212 215 {
zhjcpi 5:a4f421140212 216 CSR_APP_LOG_INFO("Cannot execute this command as location is in running state, please stop location firstly.\r\n");
zhjcpi 5:a4f421140212 217 break;
zhjcpi 5:a4f421140212 218 }
zhjcpi 4:b917d49df4bd 219 if(sProto == PROTO_NMEA)
zhjcpi 4:b917d49df4bd 220 {
zhjcpi 5:a4f421140212 221 CSR_APP_LOG_INFO("Cannot set lpm because LPM is not supported for current NMEA protocol, pls switch to OSP firstly.\r\n");
zhjcpi 4:b917d49df4bd 222 }
zhjcpi 4:b917d49df4bd 223 else
zhjcpi 4:b917d49df4bd 224 {
zhjcpi 4:b917d49df4bd 225 CSR_APP_LOG_INFO("lpm ptf set.\r\n");
zhjcpi 4:b917d49df4bd 226 sPwrMode = PWR_PTF;
zhjcpi 4:b917d49df4bd 227 }
zhjcpi 0:789f6b6f710d 228 break;
zhjcpi 0:789f6b6f710d 229 }
zhjcpi 0:789f6b6f710d 230 }
zhjcpi 0:789f6b6f710d 231 }
zhjcpi 0:789f6b6f710d 232
zhjcpi 0:789f6b6f710d 233 static void _AppShowCmd(void)
zhjcpi 0:789f6b6f710d 234 {
zhjcpi 3:7a3ed8ae071d 235 CSR_APP_LOG_INFO("Location commands:\r\n");
zhjcpi 3:7a3ed8ae071d 236 CSR_APP_LOG_INFO(" help - help to show supported commands\r\n");
zhjcpi 3:7a3ed8ae071d 237 CSR_APP_LOG_INFO(" start - begin location\r\n");
zhjcpi 3:7a3ed8ae071d 238 CSR_APP_LOG_INFO(" stop - end location\r\n");
zhjcpi 3:7a3ed8ae071d 239 CSR_APP_LOG_INFO(" fpm - full power mode\r\n");
zhjcpi 3:7a3ed8ae071d 240 CSR_APP_LOG_INFO(" ptf - ptf low power mode\r\n");
zhjcpi 3:7a3ed8ae071d 241 CSR_APP_LOG_INFO(" getpos - get location immediately in low power ptf mode\r\n");
zhjcpi 3:7a3ed8ae071d 242 CSR_APP_LOG_INFO(" osp - OSP mode\r\n");
zhjcpi 3:7a3ed8ae071d 243 CSR_APP_LOG_INFO(" nmea - NMEA mode\r\n");
zhjcpi 0:789f6b6f710d 244
zhjcpi 0:789f6b6f710d 245 }
zhjcpi 0:789f6b6f710d 246
zhjcpi 2:b70e3a839116 247 static void _AppOutputCallback(uint32_t msgId, void * const pMsgData, uint32_t msgLength)
zhjcpi 0:789f6b6f710d 248 {
zhjcpi 0:789f6b6f710d 249 switch(msgId)
zhjcpi 0:789f6b6f710d 250 {
zhjcpi 0:789f6b6f710d 251 case LOC_OUTPUT_LOCATION:
zhjcpi 0:789f6b6f710d 252 {
zhjcpi 0:789f6b6f710d 253 tLocPosResp *pPosRsp = (tLocPosResp *)pMsgData;
zhjcpi 3:7a3ed8ae071d 254 CSR_APP_LOG_INFO("Loc: lat=%f, lon=%f, alt=%f\r\n", pPosRsp->lat, pPosRsp->lon, pPosRsp->alt);
zhjcpi 0:789f6b6f710d 255 sLedPosReport = !sLedPosReport;
zhjcpi 0:789f6b6f710d 256 break;
zhjcpi 0:789f6b6f710d 257 }
zhjcpi 0:789f6b6f710d 258 case LOC_OUTPUT_SV_STATUS:
zhjcpi 0:789f6b6f710d 259 {
zhjcpi 0:789f6b6f710d 260 tLocSvStatus *pSvStatus = (tLocSvStatus *)pMsgData;
zhjcpi 3:7a3ed8ae071d 261 CSR_APP_LOG_INFO("SV:week=%u, tow=%lu, GPS Num=%u, GLO Num=%u, GPS Mask=0x%lx, GLO Mask=0x%lx\r\n",
zhjcpi 0:789f6b6f710d 262 pSvStatus->gps_week, pSvStatus->tow, pSvStatus->numOfSVs, pSvStatus->numOfGloSVs,
zhjcpi 0:789f6b6f710d 263 pSvStatus->svUsedInFixMask, pSvStatus->gloSvUsedInFixMask);
zhjcpi 0:789f6b6f710d 264 break;
zhjcpi 0:789f6b6f710d 265 }
zhjcpi 0:789f6b6f710d 266
zhjcpi 0:789f6b6f710d 267 default :
zhjcpi 0:789f6b6f710d 268 break;
zhjcpi 0:789f6b6f710d 269 }
zhjcpi 0:789f6b6f710d 270 }
zhjcpi 0:789f6b6f710d 271
zhjcpi 2:b70e3a839116 272 static void _AppEventCallback(eCsrLocEventType event, uint32_t data)
zhjcpi 0:789f6b6f710d 273 {
zhjcpi 0:789f6b6f710d 274 switch(event)
zhjcpi 0:789f6b6f710d 275 {
zhjcpi 0:789f6b6f710d 276 case CSR_LOC_EVENT_START_RESULT:
zhjcpi 0:789f6b6f710d 277 if(data != 0)
zhjcpi 0:789f6b6f710d 278 {
zhjcpi 3:7a3ed8ae071d 279 CSR_APP_LOG_INFO("start failed.\r\n");
zhjcpi 0:789f6b6f710d 280 sAppCmd = APP_CMD_START_FAILED;
zhjcpi 0:789f6b6f710d 281 }
zhjcpi 0:789f6b6f710d 282 else
zhjcpi 0:789f6b6f710d 283 {
zhjcpi 3:7a3ed8ae071d 284 CSR_APP_LOG_INFO("start OK.\r\n");
zhjcpi 0:789f6b6f710d 285 }
zhjcpi 0:789f6b6f710d 286 break;
zhjcpi 0:789f6b6f710d 287 case CSR_LOC_EVENT_STOP_RESULT:
zhjcpi 0:789f6b6f710d 288 if(data != 0)
zhjcpi 0:789f6b6f710d 289 {
zhjcpi 3:7a3ed8ae071d 290 CSR_APP_LOG_INFO("stop failed.\r\n");
zhjcpi 0:789f6b6f710d 291 sAppCmd = APP_CMD_STOP_FAILED;
zhjcpi 0:789f6b6f710d 292 }
zhjcpi 0:789f6b6f710d 293 else
zhjcpi 0:789f6b6f710d 294 {
zhjcpi 3:7a3ed8ae071d 295 CSR_APP_LOG_INFO("stop OK.\r\n");
zhjcpi 0:789f6b6f710d 296 }
zhjcpi 0:789f6b6f710d 297 break;
zhjcpi 0:789f6b6f710d 298 default:
zhjcpi 0:789f6b6f710d 299 break;
zhjcpi 0:789f6b6f710d 300 }
zhjcpi 0:789f6b6f710d 301 }
zhjcpi 0:789f6b6f710d 302
zhjcpi 0:789f6b6f710d 303 static void _ConsoleRxHandler(void)
zhjcpi 0:789f6b6f710d 304 {
zhjcpi 0:789f6b6f710d 305 static char cmd[32] = {0};
zhjcpi 0:789f6b6f710d 306 char ch;
zhjcpi 0:789f6b6f710d 307
zhjcpi 0:789f6b6f710d 308 ch = sSerialDebug.getc();
zhjcpi 0:789f6b6f710d 309 sSerialDebug.putc(ch);
zhjcpi 0:789f6b6f710d 310 if(ch == '\r')
zhjcpi 0:789f6b6f710d 311 {
zhjcpi 0:789f6b6f710d 312 sSerialDebug.putc('\n');
zhjcpi 0:789f6b6f710d 313 if(strlen(cmd) > 0)
zhjcpi 0:789f6b6f710d 314 {
zhjcpi 0:789f6b6f710d 315 _AppCmdProcess(cmd);
zhjcpi 0:789f6b6f710d 316 memset(cmd, 0, sizeof(cmd));
zhjcpi 0:789f6b6f710d 317 }
zhjcpi 0:789f6b6f710d 318 }
zhjcpi 0:789f6b6f710d 319 else
zhjcpi 0:789f6b6f710d 320 {
zhjcpi 0:789f6b6f710d 321 cmd[strlen(cmd)] = ch;
zhjcpi 0:789f6b6f710d 322 }
zhjcpi 0:789f6b6f710d 323 }
zhjcpi 0:789f6b6f710d 324
zhjcpi 0:789f6b6f710d 325 static void _AppCmdProcess(char *pCmd)
zhjcpi 0:789f6b6f710d 326 {
zhjcpi 0:789f6b6f710d 327 if(strcmp(pCmd, "help") == 0)
zhjcpi 0:789f6b6f710d 328 {
zhjcpi 0:789f6b6f710d 329 sAppCmd = APP_CMD_HELP;
zhjcpi 0:789f6b6f710d 330 }
zhjcpi 0:789f6b6f710d 331 else if(strcmp(pCmd, "start") == 0)
zhjcpi 0:789f6b6f710d 332 {
zhjcpi 0:789f6b6f710d 333 sAppCmd = APP_CMD_START;
zhjcpi 0:789f6b6f710d 334 }
zhjcpi 0:789f6b6f710d 335 else if(strcmp(pCmd, "stop") == 0)
zhjcpi 0:789f6b6f710d 336 {
zhjcpi 0:789f6b6f710d 337 sAppCmd = APP_CMD_STOP;
zhjcpi 0:789f6b6f710d 338 }
zhjcpi 0:789f6b6f710d 339 else if(strcmp(pCmd, "fpm") == 0)
zhjcpi 0:789f6b6f710d 340 {
zhjcpi 0:789f6b6f710d 341 sAppCmd = APP_CMD_PM_FULL;
zhjcpi 0:789f6b6f710d 342 }
zhjcpi 0:789f6b6f710d 343 else if(strcmp(pCmd, "ptf") == 0)
zhjcpi 0:789f6b6f710d 344 {
zhjcpi 0:789f6b6f710d 345 sAppCmd = APP_CMD_PM_PTF;
zhjcpi 0:789f6b6f710d 346 }
zhjcpi 0:789f6b6f710d 347 else if(strcmp(pCmd, "getpos") == 0)
zhjcpi 0:789f6b6f710d 348 {
zhjcpi 0:789f6b6f710d 349 sAppCmd = APP_CMD_PTF_GETPOS;
zhjcpi 0:789f6b6f710d 350 }
zhjcpi 0:789f6b6f710d 351 else if(strcmp(pCmd, "nmea") == 0)
zhjcpi 0:789f6b6f710d 352 {
zhjcpi 0:789f6b6f710d 353 sAppCmd = APP_CMD_NMEA;
zhjcpi 3:7a3ed8ae071d 354 }
zhjcpi 3:7a3ed8ae071d 355 else if(strcmp(pCmd, "osp") == 0)
zhjcpi 3:7a3ed8ae071d 356 {
zhjcpi 3:7a3ed8ae071d 357 sAppCmd = APP_CMD_OSP;
zhjcpi 3:7a3ed8ae071d 358 }
zhjcpi 3:7a3ed8ae071d 359 else if(strcmp(pCmd, "switchnmea") == 0)
zhjcpi 3:7a3ed8ae071d 360 {
zhjcpi 3:7a3ed8ae071d 361 sAppCmd = APP_CMD_SWITCH_NMEA;
zhjcpi 3:7a3ed8ae071d 362 }
zhjcpi 3:7a3ed8ae071d 363 else if(strcmp(pCmd, "switchosp") == 0)
zhjcpi 3:7a3ed8ae071d 364 {
zhjcpi 3:7a3ed8ae071d 365 sAppCmd = APP_CMD_SWITCH_OSP;
zhjcpi 0:789f6b6f710d 366 }
zhjcpi 0:789f6b6f710d 367 else if(strcmp(pCmd, "onoffon") == 0)
zhjcpi 0:789f6b6f710d 368 {
zhjcpi 0:789f6b6f710d 369 sAppCmd = APP_CMD_ONOFF_ON;
zhjcpi 0:789f6b6f710d 370 }
zhjcpi 0:789f6b6f710d 371 else if(strcmp(pCmd, "onoffoff") == 0)
zhjcpi 0:789f6b6f710d 372 {
zhjcpi 0:789f6b6f710d 373 sAppCmd = APP_CMD_ONOFF_OFF;
zhjcpi 0:789f6b6f710d 374 }
zhjcpi 0:789f6b6f710d 375 else if(strcmp(pCmd, "reseton") == 0)
zhjcpi 0:789f6b6f710d 376 {
zhjcpi 0:789f6b6f710d 377 sAppCmd = APP_CMD_RESET_ON;
zhjcpi 0:789f6b6f710d 378 }
zhjcpi 0:789f6b6f710d 379 else if(strcmp(pCmd, "resetoff") == 0)
zhjcpi 0:789f6b6f710d 380 {
zhjcpi 0:789f6b6f710d 381 sAppCmd = APP_CMD_RESET_OFF;
zhjcpi 0:789f6b6f710d 382 }
zhjcpi 0:789f6b6f710d 383 else
zhjcpi 0:789f6b6f710d 384 {
zhjcpi 3:7a3ed8ae071d 385 CSR_APP_LOG_INFO("\r\nUnknown command %s\r\n", pCmd);
zhjcpi 0:789f6b6f710d 386 }
zhjcpi 3:7a3ed8ae071d 387
zhjcpi 3:7a3ed8ae071d 388 CSR_APP_LOG_INFO("\r\n");
zhjcpi 0:789f6b6f710d 389 }