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:
Mon Oct 13 08:46:03 2014 +0000
Revision:
15:6b748a86aaef
Parent:
13:e0b3e914c709
Child:
18:b9934d27a5bf
Child:
19:f398544de093
Adjust the GPIO pin map for button.

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