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:
Tue Oct 28 12:29:34 2014 +0000
Revision:
19:f398544de093
Parent:
15:6b748a86aaef
Child:
21:69895894068a
Support ST F401RE, update the latest mbed library, no app command is shown when board is powered on.

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 19:f398544de093 101 while(1)
zhjcpi 0:789f6b6f710d 102 {
zhjcpi 0:789f6b6f710d 103 switch(sAppCmd)
zhjcpi 0:789f6b6f710d 104 {
zhjcpi 0:789f6b6f710d 105 case APP_CMD_HELP:
zhjcpi 0:789f6b6f710d 106 sAppCmd = APP_CMD_IDLE;
zhjcpi 0:789f6b6f710d 107 _AppShowCmd();
zhjcpi 0:789f6b6f710d 108 break;
zhjcpi 0:789f6b6f710d 109 case APP_CMD_START:
zhjcpi 0:789f6b6f710d 110 sAppCmd = APP_CMD_IDLE;
zhjcpi 3:7a3ed8ae071d 111 CSR_APP_LOG_INFO("start location.\r\n");
zhjcpi 0:789f6b6f710d 112 sLedLocOn = 1;
zhjcpi 3:7a3ed8ae071d 113 pCsrLoc->CsrLocStart(sPwrMode, sProto);
zhjcpi 0:789f6b6f710d 114 break;
zhjcpi 0:789f6b6f710d 115 case APP_CMD_STOP:
zhjcpi 0:789f6b6f710d 116 sAppCmd = APP_CMD_IDLE;
zhjcpi 3:7a3ed8ae071d 117 CSR_APP_LOG_INFO("stop location.\r\n");
zhjcpi 0:789f6b6f710d 118 sLedLocOn = 0;
zhjcpi 0:789f6b6f710d 119 pCsrLoc->CsrLocStop();
zhjcpi 0:789f6b6f710d 120 break;
zhjcpi 0:789f6b6f710d 121 case APP_CMD_START_FAILED:
zhjcpi 0:789f6b6f710d 122 sAppCmd = APP_CMD_IDLE;
zhjcpi 3:7a3ed8ae071d 123 CSR_APP_LOG_INFO("reset as start failed.\r\n");
zhjcpi 0:789f6b6f710d 124 sLedLocOn = 0;
zhjcpi 0:789f6b6f710d 125 pCsrLoc->CsrLocStop();
zhjcpi 0:789f6b6f710d 126 pCsrLoc->CsrLocReset();
zhjcpi 0:789f6b6f710d 127 break;
zhjcpi 0:789f6b6f710d 128 case APP_CMD_STOP_FAILED:
zhjcpi 0:789f6b6f710d 129 sAppCmd = APP_CMD_IDLE;
zhjcpi 3:7a3ed8ae071d 130 CSR_APP_LOG_INFO("reset as stop failed.\r\n");
zhjcpi 0:789f6b6f710d 131 sLedLocOn = 0;
zhjcpi 0:789f6b6f710d 132 pCsrLoc->CsrLocStop();
zhjcpi 0:789f6b6f710d 133 pCsrLoc->CsrLocReset();
zhjcpi 0:789f6b6f710d 134 break;
zhjcpi 0:789f6b6f710d 135 case APP_CMD_IDLE:
zhjcpi 0:789f6b6f710d 136 pCsrLoc->CsrLocUpdate();
zhjcpi 0:789f6b6f710d 137 break;
zhjcpi 0:789f6b6f710d 138 case APP_CMD_ONOFF_ON:
zhjcpi 3:7a3ed8ae071d 139 CSR_APP_LOG_INFO("onoff on.\r\n");
zhjcpi 0:789f6b6f710d 140 sAppCmd = APP_CMD_IDLE;
zhjcpi 0:789f6b6f710d 141 sPinOnoff = 1;
zhjcpi 0:789f6b6f710d 142 break;
zhjcpi 0:789f6b6f710d 143 case APP_CMD_ONOFF_OFF:
zhjcpi 3:7a3ed8ae071d 144 CSR_APP_LOG_INFO("onoff off.\r\n");
zhjcpi 0:789f6b6f710d 145 sAppCmd = APP_CMD_IDLE;
zhjcpi 0:789f6b6f710d 146 sPinOnoff = 0;
zhjcpi 0:789f6b6f710d 147 break;
zhjcpi 0:789f6b6f710d 148 case APP_CMD_RESET_ON:
zhjcpi 3:7a3ed8ae071d 149 CSR_APP_LOG_INFO("reset on.\r\n");
zhjcpi 0:789f6b6f710d 150 sAppCmd = APP_CMD_IDLE;
zhjcpi 0:789f6b6f710d 151 sPinReset = 1;
zhjcpi 0:789f6b6f710d 152 break;
zhjcpi 0:789f6b6f710d 153 case APP_CMD_RESET_OFF:
zhjcpi 3:7a3ed8ae071d 154 CSR_APP_LOG_INFO("reset off.\r\n");
zhjcpi 0:789f6b6f710d 155 sAppCmd = APP_CMD_IDLE;
zhjcpi 0:789f6b6f710d 156 sPinReset = 0;
zhjcpi 0:789f6b6f710d 157 break;
zhjcpi 9:87d1555b6219 158 case APP_CMD_PINTEST_ON:
zhjcpi 9:87d1555b6219 159 CSR_APP_LOG_INFO("test pin on.\r\n");
zhjcpi 9:87d1555b6219 160 sAppCmd = APP_CMD_IDLE;
zhjcpi 9:87d1555b6219 161 sPinTest = 1;
zhjcpi 9:87d1555b6219 162 break;
zhjcpi 9:87d1555b6219 163 case APP_CMD_PINTEST_OFF:
zhjcpi 9:87d1555b6219 164 CSR_APP_LOG_INFO("test pin off.\r\n");
zhjcpi 5:a4f421140212 165 sAppCmd = APP_CMD_IDLE;
zhjcpi 9:87d1555b6219 166 sPinTest = 0;
zhjcpi 9:87d1555b6219 167 break;
zhjcpi 9:87d1555b6219 168 case APP_CMD_PINTEST_OFF_ON:
zhjcpi 9:87d1555b6219 169 CSR_APP_LOG_INFO("test pin off and high.\r\n");
zhjcpi 9:87d1555b6219 170 sAppCmd = APP_CMD_IDLE;
zhjcpi 9:87d1555b6219 171 sPinTest = 0;
zhjcpi 9:87d1555b6219 172 wait_ms(100);
zhjcpi 9:87d1555b6219 173 sPinTest = 1;
zhjcpi 9:87d1555b6219 174 break;
zhjcpi 11:4e0bba518108 175 case APP_CMD_WAKEUP_STATUS:
zhjcpi 11:4e0bba518108 176 CSR_APP_LOG_INFO("wakeup status : %d.\r\n", sWakeup.read());
zhjcpi 11:4e0bba518108 177 sAppCmd = APP_CMD_IDLE;
zhjcpi 11:4e0bba518108 178 break;
zhjcpi 9:87d1555b6219 179 case APP_CMD_PTF_GETPOS:
zhjcpi 3:7a3ed8ae071d 180 CSR_APP_LOG_INFO("lpm get pos.\r\n");
zhjcpi 9:87d1555b6219 181 sAppCmd = APP_CMD_IDLE;
zhjcpi 0:789f6b6f710d 182 pCsrLoc->CsrLocLpmGetPos();
zhjcpi 0:789f6b6f710d 183 break;
zhjcpi 0:789f6b6f710d 184 case APP_CMD_NMEA:
zhjcpi 9:87d1555b6219 185 CSR_APP_LOG_INFO("select NMEA protocol.\r\n");
zhjcpi 9:87d1555b6219 186 sProto = PROTO_NMEA;
zhjcpi 5:a4f421140212 187 sAppCmd = APP_CMD_IDLE;
zhjcpi 3:7a3ed8ae071d 188 break;
zhjcpi 3:7a3ed8ae071d 189 case APP_CMD_OSP:
zhjcpi 3:7a3ed8ae071d 190 CSR_APP_LOG_INFO("select OSP protocol.\r\n");
zhjcpi 3:7a3ed8ae071d 191 sProto = PROTO_OSP;
zhjcpi 9:87d1555b6219 192 sAppCmd = APP_CMD_IDLE;
zhjcpi 3:7a3ed8ae071d 193 break;
zhjcpi 3:7a3ed8ae071d 194 case APP_CMD_SWITCH_NMEA:
zhjcpi 9:87d1555b6219 195 CSR_APP_LOG_INFO("switch to NMEA protocol.\r\n");
zhjcpi 5:a4f421140212 196 sAppCmd = APP_CMD_IDLE;
zhjcpi 0:789f6b6f710d 197 pCsrLoc->CsrLocDebugSwitch2Nmea();
zhjcpi 0:789f6b6f710d 198 break;
zhjcpi 0:789f6b6f710d 199 case APP_CMD_PM_FULL:
zhjcpi 9:87d1555b6219 200 CSR_APP_LOG_INFO("fpm set.\r\n");
zhjcpi 5:a4f421140212 201 sAppCmd = APP_CMD_IDLE;
zhjcpi 0:789f6b6f710d 202 sPwrMode = PWR_FULL;
zhjcpi 0:789f6b6f710d 203 break;
zhjcpi 0:789f6b6f710d 204 case APP_CMD_PM_PTF:
zhjcpi 9:87d1555b6219 205 CSR_APP_LOG_INFO("lpm ptf set.\r\n");
zhjcpi 5:a4f421140212 206 sAppCmd = APP_CMD_IDLE;
zhjcpi 9:87d1555b6219 207 sPwrMode = PWR_PTF;
zhjcpi 0:789f6b6f710d 208 break;
zhjcpi 0:789f6b6f710d 209 }
zhjcpi 0:789f6b6f710d 210 }
zhjcpi 0:789f6b6f710d 211 }
zhjcpi 0:789f6b6f710d 212
zhjcpi 0:789f6b6f710d 213 static void _AppShowCmd(void)
zhjcpi 0:789f6b6f710d 214 {
zhjcpi 3:7a3ed8ae071d 215 CSR_APP_LOG_INFO("Location commands:\r\n");
zhjcpi 3:7a3ed8ae071d 216 CSR_APP_LOG_INFO(" help - help to show supported commands\r\n");
zhjcpi 3:7a3ed8ae071d 217 CSR_APP_LOG_INFO(" start - begin location\r\n");
zhjcpi 3:7a3ed8ae071d 218 CSR_APP_LOG_INFO(" stop - end location\r\n");
zhjcpi 3:7a3ed8ae071d 219 CSR_APP_LOG_INFO(" fpm - full power mode\r\n");
zhjcpi 3:7a3ed8ae071d 220 CSR_APP_LOG_INFO(" ptf - ptf low power mode\r\n");
zhjcpi 3:7a3ed8ae071d 221 CSR_APP_LOG_INFO(" getpos - get location immediately in low power ptf mode\r\n");
zhjcpi 3:7a3ed8ae071d 222 CSR_APP_LOG_INFO(" osp - OSP mode\r\n");
zhjcpi 3:7a3ed8ae071d 223 CSR_APP_LOG_INFO(" nmea - NMEA mode\r\n");
zhjcpi 0:789f6b6f710d 224
zhjcpi 0:789f6b6f710d 225 }
zhjcpi 0:789f6b6f710d 226
zhjcpi 9:87d1555b6219 227 static void _AppBtnPushed(void)
zhjcpi 9:87d1555b6219 228 {
zhjcpi 9:87d1555b6219 229 sAppCmd = APP_CMD_PTF_GETPOS;
zhjcpi 9:87d1555b6219 230 // sLedLocOn = !sLedLocOn;
zhjcpi 9:87d1555b6219 231 }
zhjcpi 9:87d1555b6219 232
zhjcpi 2:b70e3a839116 233 static void _AppOutputCallback(uint32_t msgId, void * const pMsgData, uint32_t msgLength)
zhjcpi 0:789f6b6f710d 234 {
zhjcpi 0:789f6b6f710d 235 switch(msgId)
zhjcpi 0:789f6b6f710d 236 {
zhjcpi 0:789f6b6f710d 237 case LOC_OUTPUT_LOCATION:
zhjcpi 0:789f6b6f710d 238 {
zhjcpi 0:789f6b6f710d 239 tLocPosResp *pPosRsp = (tLocPosResp *)pMsgData;
zhjcpi 3:7a3ed8ae071d 240 CSR_APP_LOG_INFO("Loc: lat=%f, lon=%f, alt=%f\r\n", pPosRsp->lat, pPosRsp->lon, pPosRsp->alt);
zhjcpi 9:87d1555b6219 241 sLedPosReport = 1;
zhjcpi 9:87d1555b6219 242 wait_ms(10);
zhjcpi 9:87d1555b6219 243 sLedPosReport = 0;
zhjcpi 0:789f6b6f710d 244 break;
zhjcpi 0:789f6b6f710d 245 }
zhjcpi 0:789f6b6f710d 246 case LOC_OUTPUT_SV_STATUS:
zhjcpi 0:789f6b6f710d 247 {
zhjcpi 0:789f6b6f710d 248 tLocSvStatus *pSvStatus = (tLocSvStatus *)pMsgData;
zhjcpi 3:7a3ed8ae071d 249 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 250 pSvStatus->gps_week, pSvStatus->tow, pSvStatus->numOfSVs, pSvStatus->numOfGloSVs,
zhjcpi 0:789f6b6f710d 251 pSvStatus->svUsedInFixMask, pSvStatus->gloSvUsedInFixMask);
zhjcpi 0:789f6b6f710d 252 break;
zhjcpi 0:789f6b6f710d 253 }
zhjcpi 0:789f6b6f710d 254
zhjcpi 0:789f6b6f710d 255 default :
zhjcpi 0:789f6b6f710d 256 break;
zhjcpi 0:789f6b6f710d 257 }
zhjcpi 0:789f6b6f710d 258 }
zhjcpi 0:789f6b6f710d 259
zhjcpi 2:b70e3a839116 260 static void _AppEventCallback(eCsrLocEventType event, uint32_t data)
zhjcpi 0:789f6b6f710d 261 {
zhjcpi 0:789f6b6f710d 262 switch(event)
zhjcpi 0:789f6b6f710d 263 {
zhjcpi 0:789f6b6f710d 264 case CSR_LOC_EVENT_START_RESULT:
zhjcpi 0:789f6b6f710d 265 if(data != 0)
zhjcpi 0:789f6b6f710d 266 {
zhjcpi 3:7a3ed8ae071d 267 CSR_APP_LOG_INFO("start failed.\r\n");
zhjcpi 0:789f6b6f710d 268 sAppCmd = APP_CMD_START_FAILED;
zhjcpi 0:789f6b6f710d 269 }
zhjcpi 0:789f6b6f710d 270 else
zhjcpi 0:789f6b6f710d 271 {
zhjcpi 3:7a3ed8ae071d 272 CSR_APP_LOG_INFO("start OK.\r\n");
zhjcpi 0:789f6b6f710d 273 }
zhjcpi 0:789f6b6f710d 274 break;
zhjcpi 0:789f6b6f710d 275 case CSR_LOC_EVENT_STOP_RESULT:
zhjcpi 0:789f6b6f710d 276 if(data != 0)
zhjcpi 0:789f6b6f710d 277 {
zhjcpi 3:7a3ed8ae071d 278 CSR_APP_LOG_INFO("stop failed.\r\n");
zhjcpi 0:789f6b6f710d 279 sAppCmd = APP_CMD_STOP_FAILED;
zhjcpi 0:789f6b6f710d 280 }
zhjcpi 0:789f6b6f710d 281 else
zhjcpi 0:789f6b6f710d 282 {
zhjcpi 3:7a3ed8ae071d 283 CSR_APP_LOG_INFO("stop OK.\r\n");
zhjcpi 0:789f6b6f710d 284 }
zhjcpi 0:789f6b6f710d 285 break;
zhjcpi 0:789f6b6f710d 286 default:
zhjcpi 0:789f6b6f710d 287 break;
zhjcpi 0:789f6b6f710d 288 }
zhjcpi 0:789f6b6f710d 289 }
zhjcpi 0:789f6b6f710d 290
zhjcpi 0:789f6b6f710d 291 static void _ConsoleRxHandler(void)
zhjcpi 0:789f6b6f710d 292 {
zhjcpi 0:789f6b6f710d 293 static char cmd[32] = {0};
zhjcpi 0:789f6b6f710d 294 char ch;
zhjcpi 0:789f6b6f710d 295
zhjcpi 0:789f6b6f710d 296 ch = sSerialDebug.getc();
zhjcpi 0:789f6b6f710d 297 sSerialDebug.putc(ch);
zhjcpi 0:789f6b6f710d 298 if(ch == '\r')
zhjcpi 0:789f6b6f710d 299 {
zhjcpi 0:789f6b6f710d 300 sSerialDebug.putc('\n');
zhjcpi 0:789f6b6f710d 301 if(strlen(cmd) > 0)
zhjcpi 0:789f6b6f710d 302 {
zhjcpi 0:789f6b6f710d 303 _AppCmdProcess(cmd);
zhjcpi 0:789f6b6f710d 304 memset(cmd, 0, sizeof(cmd));
zhjcpi 0:789f6b6f710d 305 }
zhjcpi 0:789f6b6f710d 306 }
zhjcpi 0:789f6b6f710d 307 else
zhjcpi 0:789f6b6f710d 308 {
zhjcpi 0:789f6b6f710d 309 cmd[strlen(cmd)] = ch;
zhjcpi 0:789f6b6f710d 310 }
zhjcpi 0:789f6b6f710d 311 }
zhjcpi 0:789f6b6f710d 312
zhjcpi 0:789f6b6f710d 313 static void _AppCmdProcess(char *pCmd)
zhjcpi 0:789f6b6f710d 314 {
zhjcpi 0:789f6b6f710d 315 if(strcmp(pCmd, "help") == 0)
zhjcpi 0:789f6b6f710d 316 {
zhjcpi 0:789f6b6f710d 317 sAppCmd = APP_CMD_HELP;
zhjcpi 0:789f6b6f710d 318 }
zhjcpi 0:789f6b6f710d 319 else if(strcmp(pCmd, "start") == 0)
zhjcpi 0:789f6b6f710d 320 {
zhjcpi 0:789f6b6f710d 321 sAppCmd = APP_CMD_START;
zhjcpi 0:789f6b6f710d 322 }
zhjcpi 0:789f6b6f710d 323 else if(strcmp(pCmd, "stop") == 0)
zhjcpi 0:789f6b6f710d 324 {
zhjcpi 0:789f6b6f710d 325 sAppCmd = APP_CMD_STOP;
zhjcpi 0:789f6b6f710d 326 }
zhjcpi 0:789f6b6f710d 327 else if(strcmp(pCmd, "fpm") == 0)
zhjcpi 0:789f6b6f710d 328 {
zhjcpi 0:789f6b6f710d 329 sAppCmd = APP_CMD_PM_FULL;
zhjcpi 0:789f6b6f710d 330 }
zhjcpi 0:789f6b6f710d 331 else if(strcmp(pCmd, "ptf") == 0)
zhjcpi 0:789f6b6f710d 332 {
zhjcpi 0:789f6b6f710d 333 sAppCmd = APP_CMD_PM_PTF;
zhjcpi 0:789f6b6f710d 334 }
zhjcpi 0:789f6b6f710d 335 else if(strcmp(pCmd, "getpos") == 0)
zhjcpi 0:789f6b6f710d 336 {
zhjcpi 0:789f6b6f710d 337 sAppCmd = APP_CMD_PTF_GETPOS;
zhjcpi 0:789f6b6f710d 338 }
zhjcpi 0:789f6b6f710d 339 else if(strcmp(pCmd, "nmea") == 0)
zhjcpi 0:789f6b6f710d 340 {
zhjcpi 0:789f6b6f710d 341 sAppCmd = APP_CMD_NMEA;
zhjcpi 3:7a3ed8ae071d 342 }
zhjcpi 3:7a3ed8ae071d 343 else if(strcmp(pCmd, "osp") == 0)
zhjcpi 3:7a3ed8ae071d 344 {
zhjcpi 3:7a3ed8ae071d 345 sAppCmd = APP_CMD_OSP;
zhjcpi 3:7a3ed8ae071d 346 }
zhjcpi 3:7a3ed8ae071d 347 else if(strcmp(pCmd, "switchnmea") == 0)
zhjcpi 3:7a3ed8ae071d 348 {
zhjcpi 3:7a3ed8ae071d 349 sAppCmd = APP_CMD_SWITCH_NMEA;
zhjcpi 3:7a3ed8ae071d 350 }
zhjcpi 3:7a3ed8ae071d 351 else if(strcmp(pCmd, "switchosp") == 0)
zhjcpi 3:7a3ed8ae071d 352 {
zhjcpi 3:7a3ed8ae071d 353 sAppCmd = APP_CMD_SWITCH_OSP;
zhjcpi 0:789f6b6f710d 354 }
zhjcpi 0:789f6b6f710d 355 else if(strcmp(pCmd, "onoffon") == 0)
zhjcpi 0:789f6b6f710d 356 {
zhjcpi 0:789f6b6f710d 357 sAppCmd = APP_CMD_ONOFF_ON;
zhjcpi 0:789f6b6f710d 358 }
zhjcpi 0:789f6b6f710d 359 else if(strcmp(pCmd, "onoffoff") == 0)
zhjcpi 0:789f6b6f710d 360 {
zhjcpi 0:789f6b6f710d 361 sAppCmd = APP_CMD_ONOFF_OFF;
zhjcpi 0:789f6b6f710d 362 }
zhjcpi 0:789f6b6f710d 363 else if(strcmp(pCmd, "reseton") == 0)
zhjcpi 0:789f6b6f710d 364 {
zhjcpi 0:789f6b6f710d 365 sAppCmd = APP_CMD_RESET_ON;
zhjcpi 0:789f6b6f710d 366 }
zhjcpi 0:789f6b6f710d 367 else if(strcmp(pCmd, "resetoff") == 0)
zhjcpi 0:789f6b6f710d 368 {
zhjcpi 0:789f6b6f710d 369 sAppCmd = APP_CMD_RESET_OFF;
zhjcpi 0:789f6b6f710d 370 }
zhjcpi 9:87d1555b6219 371 else if(strcmp(pCmd, "pinteston") == 0)
zhjcpi 9:87d1555b6219 372 {
zhjcpi 9:87d1555b6219 373 sAppCmd = APP_CMD_PINTEST_ON;
zhjcpi 9:87d1555b6219 374 }
zhjcpi 9:87d1555b6219 375 else if(strcmp(pCmd, "pintestoff") == 0)
zhjcpi 9:87d1555b6219 376 {
zhjcpi 9:87d1555b6219 377 sAppCmd = APP_CMD_PINTEST_OFF;
zhjcpi 9:87d1555b6219 378 }
zhjcpi 9:87d1555b6219 379 else if(strcmp(pCmd, "pintestoffon") == 0)
zhjcpi 9:87d1555b6219 380 {
zhjcpi 9:87d1555b6219 381 sAppCmd = APP_CMD_PINTEST_OFF_ON;
zhjcpi 9:87d1555b6219 382 }
zhjcpi 11:4e0bba518108 383 else if(strcmp(pCmd, "iswakeup") == 0)
zhjcpi 11:4e0bba518108 384 {
zhjcpi 11:4e0bba518108 385 sAppCmd = APP_CMD_WAKEUP_STATUS;
zhjcpi 11:4e0bba518108 386 }
zhjcpi 0:789f6b6f710d 387 else
zhjcpi 0:789f6b6f710d 388 {
zhjcpi 3:7a3ed8ae071d 389 CSR_APP_LOG_INFO("\r\nUnknown command %s\r\n", pCmd);
zhjcpi 0:789f6b6f710d 390 }
zhjcpi 3:7a3ed8ae071d 391
zhjcpi 3:7a3ed8ae071d 392 CSR_APP_LOG_INFO("\r\n");
zhjcpi 0:789f6b6f710d 393 }