Import of CSR's demo for SirfV. Has minor cleanup.
Dependencies: CsrLocation mbed GPSProvider
Fork of CsrLocationDemo by
CsrLocationDemo.cpp@13:e0b3e914c709, 2014-09-01 (annotated)
- Committer:
- zhjcpi
- Date:
- Mon Sep 01 02:07:13 2014 +0000
- Revision:
- 13:e0b3e914c709
- Parent:
- 11:4e0bba518108
- Child:
- 14:fca7e09f5b78
Remove sBtn definition because interrupt pin will lead to system halt on StT F103RB.
Who changed what in which revision?
User | Revision | Line number | New 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 | 13:e0b3e914c709 | 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 | 13:e0b3e914c709 | 71 | // sBtn.mode(PullUp); |
zhjcpi | 13:e0b3e914c709 | 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 | } |