Import of CSR's demo for SirfV. Has minor cleanup.
Dependencies: CsrLocation mbed GPSProvider
Fork of CsrLocationDemo by
CsrLocationDemo.cpp@15:495c22f32cc6, 2014-10-16 (annotated)
- Committer:
- rgrover1
- Date:
- Thu Oct 16 12:42:11 2014 +0000
- Revision:
- 15:495c22f32cc6
- Parent:
- 14:fca7e09f5b78
- Child:
- 16:24128dedf8db
minor review and cleanup
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
zhjcpi | 0:789f6b6f710d | 1 | /* CsrLocation class for mbed Microcontroller |
zhjcpi | 0:789f6b6f710d | 2 | * Copyright 2014 CSR plc |
zhjcpi | 0:789f6b6f710d | 3 | */ |
zhjcpi | 0:789f6b6f710d | 4 | |
zhjcpi | 0:789f6b6f710d | 5 | #include "mbed.h" |
zhjcpi | 0:789f6b6f710d | 6 | #include "CsrLocation.h" |
zhjcpi | 0:789f6b6f710d | 7 | |
rgrover1 | 15:495c22f32cc6 | 8 | #ifdef TARGET_LPC1768 |
rgrover1 | 15:495c22f32cc6 | 9 | #define PINMAP_UART_DEBUG_TX USBTX |
rgrover1 | 15:495c22f32cc6 | 10 | #define PINMAP_UART_DEBUG_RX USBRX |
rgrover1 | 15:495c22f32cc6 | 11 | #define PINMAP_UART_LOC_TX D8 |
rgrover1 | 15:495c22f32cc6 | 12 | #define PINMAP_UART_LOC_RX D9 |
rgrover1 | 15:495c22f32cc6 | 13 | #define PINMAP_GPIO_LOC_ONOFF D11 |
rgrover1 | 15:495c22f32cc6 | 14 | #define PINMAP_GPIO_LOC_RESET D12 |
rgrover1 | 15:495c22f32cc6 | 15 | #define PINMAP_GPIO_LOC_WAKEUP D3 |
rgrover1 | 15:495c22f32cc6 | 16 | #define PINMAP_GPIO_BTN D6 |
rgrover1 | 15:495c22f32cc6 | 17 | #define PINMAP_GPIO_TEST D10 |
rgrover1 | 15:495c22f32cc6 | 18 | #define LOC_LED1 LED1 |
rgrover1 | 15:495c22f32cc6 | 19 | #define LOC_LED2 LED2 |
rgrover1 | 15:495c22f32cc6 | 20 | #elif defined(TARGET_LPC1549) || defined(TARGET_NUCLEO_F103RB) |
rgrover1 | 15:495c22f32cc6 | 21 | #define PINMAP_UART_DEBUG_TX D1 |
rgrover1 | 15:495c22f32cc6 | 22 | #define PINMAP_UART_DEBUG_RX D0 |
rgrover1 | 15:495c22f32cc6 | 23 | #define PINMAP_UART_LOC_TX D8 |
rgrover1 | 15:495c22f32cc6 | 24 | #define PINMAP_UART_LOC_RX D2 |
rgrover1 | 15:495c22f32cc6 | 25 | #define PINMAP_GPIO_LOC_ONOFF D9 |
rgrover1 | 15:495c22f32cc6 | 26 | #define PINMAP_GPIO_LOC_RESET D4 |
rgrover1 | 15:495c22f32cc6 | 27 | #define PINMAP_GPIO_LOC_WAKEUP D3 |
rgrover1 | 15:495c22f32cc6 | 28 | #define PINMAP_GPIO_BTN D5 |
rgrover1 | 15:495c22f32cc6 | 29 | #define PINMAP_GPIO_TEST D10 |
rgrover1 | 15:495c22f32cc6 | 30 | #define LOC_LED1 D7 |
rgrover1 | 15:495c22f32cc6 | 31 | #define LOC_LED2 D6 |
rgrover1 | 15:495c22f32cc6 | 32 | #endif // ifdef TARGET_LPC1768 |
rgrover1 | 15:495c22f32cc6 | 33 | |
zhjcpi | 3:7a3ed8ae071d | 34 | #define APP_DBG_PORT_BAUD 115200 |
zhjcpi | 3:7a3ed8ae071d | 35 | #define CSR_APP_LOG_INFO(...) sSerialDebug.printf(__VA_ARGS__) |
zhjcpi | 3:7a3ed8ae071d | 36 | |
zhjcpi | 0:789f6b6f710d | 37 | /* appliation commands */ |
rgrover1 | 15:495c22f32cc6 | 38 | typedef enum AppCmd { |
rgrover1 | 15:495c22f32cc6 | 39 | APP_CMD_IDLE, // No special command |
rgrover1 | 15:495c22f32cc6 | 40 | APP_CMD_HELP, // Show the supported commands |
rgrover1 | 15:495c22f32cc6 | 41 | APP_CMD_START, // Start location |
rgrover1 | 15:495c22f32cc6 | 42 | APP_CMD_STOP, // Stop location |
rgrover1 | 15:495c22f32cc6 | 43 | APP_CMD_PM_FULL, // Set full power mode |
rgrover1 | 15:495c22f32cc6 | 44 | APP_CMD_PM_PTF, // Set low power PTF mode |
rgrover1 | 15:495c22f32cc6 | 45 | APP_CMD_PTF_GETPOS, // Get location immediately in low power PTF mode |
rgrover1 | 15:495c22f32cc6 | 46 | APP_CMD_NMEA, // proto mode is NMEA |
zhjcpi | 3:7a3ed8ae071d | 47 | APP_CMD_OSP, // proto mode is OSP |
zhjcpi | 3:7a3ed8ae071d | 48 | APP_CMD_SWITCH_NMEA, // Debug command, switch chip to NMEA protocol at 4800bps |
zhjcpi | 3:7a3ed8ae071d | 49 | APP_CMD_SWITCH_OSP, // Debug command, switch chip to NMEA protocol at 4800bps |
zhjcpi | 3:7a3ed8ae071d | 50 | APP_CMD_START_FAILED, // Process start failed case |
zhjcpi | 3:7a3ed8ae071d | 51 | APP_CMD_STOP_FAILED, // Process stop failed case |
rgrover1 | 15:495c22f32cc6 | 52 | APP_CMD_ONOFF_ON, // Debug command, pull onoff pin high level |
zhjcpi | 0:789f6b6f710d | 53 | APP_CMD_ONOFF_OFF, // Debug command, pull onoff pin low level |
zhjcpi | 0:789f6b6f710d | 54 | APP_CMD_RESET_ON, // Debug command, pull reset pin high level |
zhjcpi | 9:87d1555b6219 | 55 | APP_CMD_RESET_OFF, // Debug command, pull reset pin low level |
zhjcpi | 11:4e0bba518108 | 56 | APP_CMD_WAKEUP_STATUS, // Debug command, check wakeup pin status |
zhjcpi | 9:87d1555b6219 | 57 | APP_CMD_PINTEST_ON, // Debug command, pull test pin high level |
zhjcpi | 9:87d1555b6219 | 58 | APP_CMD_PINTEST_OFF, // Debug command, pull test pin low level |
zhjcpi | 9:87d1555b6219 | 59 | APP_CMD_PINTEST_OFF_ON // Debug command, pull test pin low firstly, then pull high level |
rgrover1 | 15:495c22f32cc6 | 60 | } eAppCmd; |
zhjcpi | 0:789f6b6f710d | 61 | |
zhjcpi | 0:789f6b6f710d | 62 | static void _AppShowCmd(void); |
zhjcpi | 9:87d1555b6219 | 63 | static void _AppBtnPushed(void); |
rgrover1 | 15:495c22f32cc6 | 64 | static void _AppOutputCallback(uint32_t msgId, void *const pMsgData, uint32_t msgLength); |
zhjcpi | 2:b70e3a839116 | 65 | static void _AppEventCallback(eCsrLocEventType event, uint32_t data); |
zhjcpi | 0:789f6b6f710d | 66 | static void _ConsoleRxHandler(void); |
zhjcpi | 0:789f6b6f710d | 67 | static void _AppCmdProcess(char *pCmd); |
zhjcpi | 0:789f6b6f710d | 68 | |
rgrover1 | 15:495c22f32cc6 | 69 | static int sAppCmd = APP_CMD_IDLE; |
rgrover1 | 15:495c22f32cc6 | 70 | static ePowerMode sPwrMode = PWR_FULL; |
rgrover1 | 15:495c22f32cc6 | 71 | static eProto sProto = PROTO_OSP; |
zhjcpi | 0:789f6b6f710d | 72 | |
rgrover1 | 15:495c22f32cc6 | 73 | static DBG_SERIAL_TYPE sSerialDebug(PINMAP_UART_DEBUG_TX, PINMAP_UART_DEBUG_RX); |
rgrover1 | 15:495c22f32cc6 | 74 | static RawSerial sSerialLoc(PINMAP_UART_LOC_TX, PINMAP_UART_LOC_RX); |
rgrover1 | 15:495c22f32cc6 | 75 | static DigitalOut sPinOnoff(PINMAP_GPIO_LOC_ONOFF); |
rgrover1 | 15:495c22f32cc6 | 76 | static DigitalOut sPinReset(PINMAP_GPIO_LOC_RESET); |
rgrover1 | 15:495c22f32cc6 | 77 | static DigitalOut sLedLocOn(LOC_LED1); |
rgrover1 | 15:495c22f32cc6 | 78 | static DigitalOut sLedPosReport(LOC_LED2); |
rgrover1 | 15:495c22f32cc6 | 79 | static DigitalIn sWakeup(PINMAP_GPIO_LOC_WAKEUP); |
rgrover1 | 15:495c22f32cc6 | 80 | static InterruptIn sBtn(PINMAP_GPIO_BTN); |
rgrover1 | 15:495c22f32cc6 | 81 | static DigitalOut sPinTest(PINMAP_GPIO_TEST); |
zhjcpi | 0:789f6b6f710d | 82 | |
zhjcpi | 0:789f6b6f710d | 83 | int main(void) |
zhjcpi | 0:789f6b6f710d | 84 | { |
zhjcpi | 0:789f6b6f710d | 85 | CsrLocation *pCsrLoc; |
zhjcpi | 0:789f6b6f710d | 86 | |
rgrover1 | 15:495c22f32cc6 | 87 | sLedLocOn = 0; |
rgrover1 | 15:495c22f32cc6 | 88 | sLedPosReport = 0; |
rgrover1 | 15:495c22f32cc6 | 89 | sPinTest = 1; |
rgrover1 | 15:495c22f32cc6 | 90 | sBtn.mode(PullUp); |
rgrover1 | 15:495c22f32cc6 | 91 | sBtn.fall(&_AppBtnPushed); |
rgrover1 | 15:495c22f32cc6 | 92 | |
rgrover1 | 15:495c22f32cc6 | 93 | /* initialize the debug serial port */ |
zhjcpi | 3:7a3ed8ae071d | 94 | sSerialDebug.baud(APP_DBG_PORT_BAUD); |
zhjcpi | 0:789f6b6f710d | 95 | sSerialDebug.attach(&_ConsoleRxHandler); |
zhjcpi | 0:789f6b6f710d | 96 | |
rgrover1 | 15:495c22f32cc6 | 97 | /* new the CsrLocation instance */ |
rgrover1 | 15:495c22f32cc6 | 98 | pCsrLoc = new CsrLocation(sSerialLoc, sPinOnoff, sPinReset, sWakeup, &sSerialDebug); |
rgrover1 | 15:495c22f32cc6 | 99 | if (pCsrLoc == NULL) { |
zhjcpi | 3:7a3ed8ae071d | 100 | CSR_APP_LOG_INFO("Failed to new csrLocation.\r\n"); |
zhjcpi | 0:789f6b6f710d | 101 | sSerialDebug.attach(NULL); |
rgrover1 | 15:495c22f32cc6 | 102 | while (true) |
rgrover1 | 15:495c22f32cc6 | 103 | ; |
zhjcpi | 0:789f6b6f710d | 104 | } |
rgrover1 | 15:495c22f32cc6 | 105 | CSR_APP_LOG_INFO("Success to new csrLocation.\r\n"); |
zhjcpi | 0:789f6b6f710d | 106 | |
zhjcpi | 0:789f6b6f710d | 107 | /* Register output callback and event callback functions */ |
zhjcpi | 0:789f6b6f710d | 108 | pCsrLoc->CsrLocRegOutput(_AppOutputCallback, _AppEventCallback); |
zhjcpi | 0:789f6b6f710d | 109 | |
zhjcpi | 0:789f6b6f710d | 110 | _AppShowCmd(); |
zhjcpi | 0:789f6b6f710d | 111 | |
rgrover1 | 15:495c22f32cc6 | 112 | while (true) { |
rgrover1 | 15:495c22f32cc6 | 113 | switch (sAppCmd) { |
rgrover1 | 15:495c22f32cc6 | 114 | case APP_CMD_HELP: |
rgrover1 | 15:495c22f32cc6 | 115 | sAppCmd = APP_CMD_IDLE; |
rgrover1 | 15:495c22f32cc6 | 116 | _AppShowCmd(); |
rgrover1 | 15:495c22f32cc6 | 117 | break; |
rgrover1 | 15:495c22f32cc6 | 118 | case APP_CMD_START: |
rgrover1 | 15:495c22f32cc6 | 119 | sAppCmd = APP_CMD_IDLE; |
rgrover1 | 15:495c22f32cc6 | 120 | CSR_APP_LOG_INFO("start location.\r\n"); |
rgrover1 | 15:495c22f32cc6 | 121 | sLedLocOn = 1; |
rgrover1 | 15:495c22f32cc6 | 122 | pCsrLoc->CsrLocStart(sPwrMode, sProto); |
rgrover1 | 15:495c22f32cc6 | 123 | break; |
rgrover1 | 15:495c22f32cc6 | 124 | case APP_CMD_STOP: |
rgrover1 | 15:495c22f32cc6 | 125 | sAppCmd = APP_CMD_IDLE; |
rgrover1 | 15:495c22f32cc6 | 126 | CSR_APP_LOG_INFO("stop location.\r\n"); |
rgrover1 | 15:495c22f32cc6 | 127 | sLedLocOn = 0; |
rgrover1 | 15:495c22f32cc6 | 128 | pCsrLoc->CsrLocStop(); |
rgrover1 | 15:495c22f32cc6 | 129 | break; |
rgrover1 | 15:495c22f32cc6 | 130 | case APP_CMD_START_FAILED: |
rgrover1 | 15:495c22f32cc6 | 131 | sAppCmd = APP_CMD_IDLE; |
rgrover1 | 15:495c22f32cc6 | 132 | CSR_APP_LOG_INFO("reset as start failed.\r\n"); |
rgrover1 | 15:495c22f32cc6 | 133 | sLedLocOn = 0; |
rgrover1 | 15:495c22f32cc6 | 134 | pCsrLoc->CsrLocStop(); |
rgrover1 | 15:495c22f32cc6 | 135 | pCsrLoc->CsrLocReset(); |
rgrover1 | 15:495c22f32cc6 | 136 | break; |
rgrover1 | 15:495c22f32cc6 | 137 | case APP_CMD_STOP_FAILED: |
rgrover1 | 15:495c22f32cc6 | 138 | sAppCmd = APP_CMD_IDLE; |
rgrover1 | 15:495c22f32cc6 | 139 | CSR_APP_LOG_INFO("reset as stop failed.\r\n"); |
rgrover1 | 15:495c22f32cc6 | 140 | sLedLocOn = 0; |
rgrover1 | 15:495c22f32cc6 | 141 | pCsrLoc->CsrLocStop(); |
rgrover1 | 15:495c22f32cc6 | 142 | pCsrLoc->CsrLocReset(); |
rgrover1 | 15:495c22f32cc6 | 143 | break; |
rgrover1 | 15:495c22f32cc6 | 144 | case APP_CMD_IDLE: |
rgrover1 | 15:495c22f32cc6 | 145 | pCsrLoc->CsrLocUpdate(); |
rgrover1 | 15:495c22f32cc6 | 146 | break; |
rgrover1 | 15:495c22f32cc6 | 147 | case APP_CMD_ONOFF_ON: |
rgrover1 | 15:495c22f32cc6 | 148 | CSR_APP_LOG_INFO("onoff on.\r\n"); |
rgrover1 | 15:495c22f32cc6 | 149 | sAppCmd = APP_CMD_IDLE; |
rgrover1 | 15:495c22f32cc6 | 150 | sPinOnoff = 1; |
rgrover1 | 15:495c22f32cc6 | 151 | break; |
rgrover1 | 15:495c22f32cc6 | 152 | case APP_CMD_ONOFF_OFF: |
rgrover1 | 15:495c22f32cc6 | 153 | CSR_APP_LOG_INFO("onoff off.\r\n"); |
rgrover1 | 15:495c22f32cc6 | 154 | sAppCmd = APP_CMD_IDLE; |
rgrover1 | 15:495c22f32cc6 | 155 | sPinOnoff = 0; |
rgrover1 | 15:495c22f32cc6 | 156 | break; |
rgrover1 | 15:495c22f32cc6 | 157 | case APP_CMD_RESET_ON: |
rgrover1 | 15:495c22f32cc6 | 158 | CSR_APP_LOG_INFO("reset on.\r\n"); |
rgrover1 | 15:495c22f32cc6 | 159 | sAppCmd = APP_CMD_IDLE; |
rgrover1 | 15:495c22f32cc6 | 160 | sPinReset = 1; |
rgrover1 | 15:495c22f32cc6 | 161 | break; |
rgrover1 | 15:495c22f32cc6 | 162 | case APP_CMD_RESET_OFF: |
rgrover1 | 15:495c22f32cc6 | 163 | CSR_APP_LOG_INFO("reset off.\r\n"); |
rgrover1 | 15:495c22f32cc6 | 164 | sAppCmd = APP_CMD_IDLE; |
rgrover1 | 15:495c22f32cc6 | 165 | sPinReset = 0; |
rgrover1 | 15:495c22f32cc6 | 166 | break; |
rgrover1 | 15:495c22f32cc6 | 167 | case APP_CMD_PINTEST_ON: |
rgrover1 | 15:495c22f32cc6 | 168 | CSR_APP_LOG_INFO("test pin on.\r\n"); |
rgrover1 | 15:495c22f32cc6 | 169 | sAppCmd = APP_CMD_IDLE; |
rgrover1 | 15:495c22f32cc6 | 170 | sPinTest = 1; |
rgrover1 | 15:495c22f32cc6 | 171 | break; |
rgrover1 | 15:495c22f32cc6 | 172 | case APP_CMD_PINTEST_OFF: |
rgrover1 | 15:495c22f32cc6 | 173 | CSR_APP_LOG_INFO("test pin off.\r\n"); |
rgrover1 | 15:495c22f32cc6 | 174 | sAppCmd = APP_CMD_IDLE; |
rgrover1 | 15:495c22f32cc6 | 175 | sPinTest = 0; |
rgrover1 | 15:495c22f32cc6 | 176 | break; |
rgrover1 | 15:495c22f32cc6 | 177 | case APP_CMD_PINTEST_OFF_ON: |
rgrover1 | 15:495c22f32cc6 | 178 | CSR_APP_LOG_INFO("test pin off and high.\r\n"); |
rgrover1 | 15:495c22f32cc6 | 179 | sAppCmd = APP_CMD_IDLE; |
rgrover1 | 15:495c22f32cc6 | 180 | sPinTest = 0; |
rgrover1 | 15:495c22f32cc6 | 181 | wait_ms(100); |
rgrover1 | 15:495c22f32cc6 | 182 | sPinTest = 1; |
rgrover1 | 15:495c22f32cc6 | 183 | break; |
rgrover1 | 15:495c22f32cc6 | 184 | case APP_CMD_WAKEUP_STATUS: |
rgrover1 | 15:495c22f32cc6 | 185 | CSR_APP_LOG_INFO("wakeup status : %d.\r\n", sWakeup.read()); |
rgrover1 | 15:495c22f32cc6 | 186 | sAppCmd = APP_CMD_IDLE; |
rgrover1 | 15:495c22f32cc6 | 187 | break; |
rgrover1 | 15:495c22f32cc6 | 188 | case APP_CMD_PTF_GETPOS: |
rgrover1 | 15:495c22f32cc6 | 189 | CSR_APP_LOG_INFO("lpm get pos.\r\n"); |
rgrover1 | 15:495c22f32cc6 | 190 | sAppCmd = APP_CMD_IDLE; |
rgrover1 | 15:495c22f32cc6 | 191 | pCsrLoc->CsrLocLpmGetPos(); |
rgrover1 | 15:495c22f32cc6 | 192 | break; |
rgrover1 | 15:495c22f32cc6 | 193 | case APP_CMD_NMEA: |
rgrover1 | 15:495c22f32cc6 | 194 | CSR_APP_LOG_INFO("select NMEA protocol.\r\n"); |
rgrover1 | 15:495c22f32cc6 | 195 | sProto = PROTO_NMEA; |
rgrover1 | 15:495c22f32cc6 | 196 | sAppCmd = APP_CMD_IDLE; |
rgrover1 | 15:495c22f32cc6 | 197 | break; |
rgrover1 | 15:495c22f32cc6 | 198 | case APP_CMD_OSP: |
rgrover1 | 15:495c22f32cc6 | 199 | CSR_APP_LOG_INFO("select OSP protocol.\r\n"); |
rgrover1 | 15:495c22f32cc6 | 200 | sProto = PROTO_OSP; |
rgrover1 | 15:495c22f32cc6 | 201 | sAppCmd = APP_CMD_IDLE; |
rgrover1 | 15:495c22f32cc6 | 202 | break; |
rgrover1 | 15:495c22f32cc6 | 203 | case APP_CMD_SWITCH_NMEA: |
rgrover1 | 15:495c22f32cc6 | 204 | CSR_APP_LOG_INFO("switch to NMEA protocol.\r\n"); |
rgrover1 | 15:495c22f32cc6 | 205 | sAppCmd = APP_CMD_IDLE; |
rgrover1 | 15:495c22f32cc6 | 206 | pCsrLoc->CsrLocDebugSwitch2Nmea(); |
rgrover1 | 15:495c22f32cc6 | 207 | break; |
rgrover1 | 15:495c22f32cc6 | 208 | case APP_CMD_PM_FULL: |
rgrover1 | 15:495c22f32cc6 | 209 | CSR_APP_LOG_INFO("fpm set.\r\n"); |
rgrover1 | 15:495c22f32cc6 | 210 | sAppCmd = APP_CMD_IDLE; |
rgrover1 | 15:495c22f32cc6 | 211 | sPwrMode = PWR_FULL; |
rgrover1 | 15:495c22f32cc6 | 212 | break; |
rgrover1 | 15:495c22f32cc6 | 213 | case APP_CMD_PM_PTF: |
rgrover1 | 15:495c22f32cc6 | 214 | CSR_APP_LOG_INFO("lpm ptf set.\r\n"); |
rgrover1 | 15:495c22f32cc6 | 215 | sAppCmd = APP_CMD_IDLE; |
rgrover1 | 15:495c22f32cc6 | 216 | sPwrMode = PWR_PTF; |
rgrover1 | 15:495c22f32cc6 | 217 | break; |
zhjcpi | 0:789f6b6f710d | 218 | } |
zhjcpi | 0:789f6b6f710d | 219 | } |
zhjcpi | 0:789f6b6f710d | 220 | } |
zhjcpi | 0:789f6b6f710d | 221 | |
zhjcpi | 0:789f6b6f710d | 222 | static void _AppShowCmd(void) |
zhjcpi | 0:789f6b6f710d | 223 | { |
zhjcpi | 3:7a3ed8ae071d | 224 | CSR_APP_LOG_INFO("Location commands:\r\n"); |
zhjcpi | 3:7a3ed8ae071d | 225 | CSR_APP_LOG_INFO(" help - help to show supported commands\r\n"); |
zhjcpi | 3:7a3ed8ae071d | 226 | CSR_APP_LOG_INFO(" start - begin location\r\n"); |
zhjcpi | 3:7a3ed8ae071d | 227 | CSR_APP_LOG_INFO(" stop - end location\r\n"); |
zhjcpi | 3:7a3ed8ae071d | 228 | CSR_APP_LOG_INFO(" fpm - full power mode\r\n"); |
zhjcpi | 3:7a3ed8ae071d | 229 | CSR_APP_LOG_INFO(" ptf - ptf low power mode\r\n"); |
zhjcpi | 3:7a3ed8ae071d | 230 | CSR_APP_LOG_INFO(" getpos - get location immediately in low power ptf mode\r\n"); |
zhjcpi | 3:7a3ed8ae071d | 231 | CSR_APP_LOG_INFO(" osp - OSP mode\r\n"); |
zhjcpi | 3:7a3ed8ae071d | 232 | CSR_APP_LOG_INFO(" nmea - NMEA mode\r\n"); |
zhjcpi | 0:789f6b6f710d | 233 | } |
zhjcpi | 0:789f6b6f710d | 234 | |
zhjcpi | 9:87d1555b6219 | 235 | static void _AppBtnPushed(void) |
zhjcpi | 9:87d1555b6219 | 236 | { |
rgrover1 | 15:495c22f32cc6 | 237 | sAppCmd = APP_CMD_PTF_GETPOS; |
rgrover1 | 15:495c22f32cc6 | 238 | // sLedLocOn = !sLedLocOn; |
zhjcpi | 9:87d1555b6219 | 239 | } |
zhjcpi | 9:87d1555b6219 | 240 | |
rgrover1 | 15:495c22f32cc6 | 241 | static void _AppOutputCallback(uint32_t msgId, void *const pMsgData, uint32_t msgLength) |
zhjcpi | 0:789f6b6f710d | 242 | { |
rgrover1 | 15:495c22f32cc6 | 243 | switch (msgId) { |
rgrover1 | 15:495c22f32cc6 | 244 | case LOC_OUTPUT_LOCATION: |
rgrover1 | 15:495c22f32cc6 | 245 | { |
rgrover1 | 15:495c22f32cc6 | 246 | tLocPosResp *pPosRsp = (tLocPosResp *)pMsgData; |
rgrover1 | 15:495c22f32cc6 | 247 | CSR_APP_LOG_INFO("Loc: lat=%f, lon=%f, alt=%f\r\n", pPosRsp->lat, pPosRsp->lon, pPosRsp->alt); |
rgrover1 | 15:495c22f32cc6 | 248 | sLedPosReport = 1; |
rgrover1 | 15:495c22f32cc6 | 249 | wait_ms(10); |
rgrover1 | 15:495c22f32cc6 | 250 | sLedPosReport = 0; |
rgrover1 | 15:495c22f32cc6 | 251 | break; |
rgrover1 | 15:495c22f32cc6 | 252 | } |
rgrover1 | 15:495c22f32cc6 | 253 | case LOC_OUTPUT_SV_STATUS: |
rgrover1 | 15:495c22f32cc6 | 254 | { |
rgrover1 | 15:495c22f32cc6 | 255 | tLocSvStatus *pSvStatus = (tLocSvStatus *)pMsgData; |
rgrover1 | 15:495c22f32cc6 | 256 | 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", |
rgrover1 | 15:495c22f32cc6 | 257 | pSvStatus->gps_week, pSvStatus->tow, pSvStatus->numOfSVs, pSvStatus->numOfGloSVs, |
rgrover1 | 15:495c22f32cc6 | 258 | pSvStatus->svUsedInFixMask, pSvStatus->gloSvUsedInFixMask); |
rgrover1 | 15:495c22f32cc6 | 259 | break; |
rgrover1 | 15:495c22f32cc6 | 260 | } |
rgrover1 | 15:495c22f32cc6 | 261 | |
rgrover1 | 15:495c22f32cc6 | 262 | default: |
rgrover1 | 15:495c22f32cc6 | 263 | break; |
zhjcpi | 0:789f6b6f710d | 264 | } |
zhjcpi | 0:789f6b6f710d | 265 | } |
zhjcpi | 0:789f6b6f710d | 266 | |
zhjcpi | 2:b70e3a839116 | 267 | static void _AppEventCallback(eCsrLocEventType event, uint32_t data) |
zhjcpi | 0:789f6b6f710d | 268 | { |
rgrover1 | 15:495c22f32cc6 | 269 | switch (event) { |
rgrover1 | 15:495c22f32cc6 | 270 | case CSR_LOC_EVENT_START_RESULT: |
rgrover1 | 15:495c22f32cc6 | 271 | if (data != 0) { |
rgrover1 | 15:495c22f32cc6 | 272 | CSR_APP_LOG_INFO("start failed.\r\n"); |
rgrover1 | 15:495c22f32cc6 | 273 | sAppCmd = APP_CMD_START_FAILED; |
rgrover1 | 15:495c22f32cc6 | 274 | } else { |
rgrover1 | 15:495c22f32cc6 | 275 | CSR_APP_LOG_INFO("start OK.\r\n"); |
rgrover1 | 15:495c22f32cc6 | 276 | } |
rgrover1 | 15:495c22f32cc6 | 277 | break; |
rgrover1 | 15:495c22f32cc6 | 278 | case CSR_LOC_EVENT_STOP_RESULT: |
rgrover1 | 15:495c22f32cc6 | 279 | if (data != 0) { |
rgrover1 | 15:495c22f32cc6 | 280 | CSR_APP_LOG_INFO("stop failed.\r\n"); |
rgrover1 | 15:495c22f32cc6 | 281 | sAppCmd = APP_CMD_STOP_FAILED; |
rgrover1 | 15:495c22f32cc6 | 282 | } else { |
rgrover1 | 15:495c22f32cc6 | 283 | CSR_APP_LOG_INFO("stop OK.\r\n"); |
rgrover1 | 15:495c22f32cc6 | 284 | } |
rgrover1 | 15:495c22f32cc6 | 285 | break; |
rgrover1 | 15:495c22f32cc6 | 286 | default: |
rgrover1 | 15:495c22f32cc6 | 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 | { |
rgrover1 | 15:495c22f32cc6 | 293 | static char cmd[32] = {0}; |
rgrover1 | 15:495c22f32cc6 | 294 | char ch; |
zhjcpi | 0:789f6b6f710d | 295 | |
zhjcpi | 0:789f6b6f710d | 296 | ch = sSerialDebug.getc(); |
zhjcpi | 0:789f6b6f710d | 297 | sSerialDebug.putc(ch); |
rgrover1 | 15:495c22f32cc6 | 298 | if (ch == '\r') { |
zhjcpi | 0:789f6b6f710d | 299 | sSerialDebug.putc('\n'); |
rgrover1 | 15:495c22f32cc6 | 300 | if (strlen(cmd) > 0) { |
rgrover1 | 15:495c22f32cc6 | 301 | _AppCmdProcess(cmd); |
rgrover1 | 15:495c22f32cc6 | 302 | memset(cmd, 0, sizeof(cmd)); |
zhjcpi | 0:789f6b6f710d | 303 | } |
rgrover1 | 15:495c22f32cc6 | 304 | } else { |
rgrover1 | 15:495c22f32cc6 | 305 | cmd[strlen(cmd)] = ch; |
rgrover1 | 15:495c22f32cc6 | 306 | } |
zhjcpi | 0:789f6b6f710d | 307 | } |
rgrover1 | 15:495c22f32cc6 | 308 | |
zhjcpi | 0:789f6b6f710d | 309 | static void _AppCmdProcess(char *pCmd) |
zhjcpi | 0:789f6b6f710d | 310 | { |
rgrover1 | 15:495c22f32cc6 | 311 | if (strcmp(pCmd, "help") == 0) { |
zhjcpi | 0:789f6b6f710d | 312 | sAppCmd = APP_CMD_HELP; |
rgrover1 | 15:495c22f32cc6 | 313 | } else if (strcmp(pCmd, "start") == 0) { |
zhjcpi | 0:789f6b6f710d | 314 | sAppCmd = APP_CMD_START; |
rgrover1 | 15:495c22f32cc6 | 315 | } else if (strcmp(pCmd, "stop") == 0) { |
zhjcpi | 0:789f6b6f710d | 316 | sAppCmd = APP_CMD_STOP; |
rgrover1 | 15:495c22f32cc6 | 317 | } else if (strcmp(pCmd, "fpm") == 0) { |
zhjcpi | 0:789f6b6f710d | 318 | sAppCmd = APP_CMD_PM_FULL; |
rgrover1 | 15:495c22f32cc6 | 319 | } else if (strcmp(pCmd, "ptf") == 0) { |
zhjcpi | 0:789f6b6f710d | 320 | sAppCmd = APP_CMD_PM_PTF; |
rgrover1 | 15:495c22f32cc6 | 321 | } else if (strcmp(pCmd, "getpos") == 0) { |
zhjcpi | 0:789f6b6f710d | 322 | sAppCmd = APP_CMD_PTF_GETPOS; |
rgrover1 | 15:495c22f32cc6 | 323 | } else if (strcmp(pCmd, "nmea") == 0) { |
zhjcpi | 0:789f6b6f710d | 324 | sAppCmd = APP_CMD_NMEA; |
rgrover1 | 15:495c22f32cc6 | 325 | } else if (strcmp(pCmd, "osp") == 0) { |
zhjcpi | 3:7a3ed8ae071d | 326 | sAppCmd = APP_CMD_OSP; |
rgrover1 | 15:495c22f32cc6 | 327 | } else if (strcmp(pCmd, "switchnmea") == 0) { |
zhjcpi | 3:7a3ed8ae071d | 328 | sAppCmd = APP_CMD_SWITCH_NMEA; |
rgrover1 | 15:495c22f32cc6 | 329 | } else if (strcmp(pCmd, "switchosp") == 0) { |
zhjcpi | 3:7a3ed8ae071d | 330 | sAppCmd = APP_CMD_SWITCH_OSP; |
rgrover1 | 15:495c22f32cc6 | 331 | } else if (strcmp(pCmd, "onoffon") == 0) { |
zhjcpi | 0:789f6b6f710d | 332 | sAppCmd = APP_CMD_ONOFF_ON; |
rgrover1 | 15:495c22f32cc6 | 333 | } else if (strcmp(pCmd, "onoffoff") == 0) { |
zhjcpi | 0:789f6b6f710d | 334 | sAppCmd = APP_CMD_ONOFF_OFF; |
rgrover1 | 15:495c22f32cc6 | 335 | } else if (strcmp(pCmd, "reseton") == 0) { |
zhjcpi | 0:789f6b6f710d | 336 | sAppCmd = APP_CMD_RESET_ON; |
rgrover1 | 15:495c22f32cc6 | 337 | } else if (strcmp(pCmd, "resetoff") == 0) { |
zhjcpi | 0:789f6b6f710d | 338 | sAppCmd = APP_CMD_RESET_OFF; |
rgrover1 | 15:495c22f32cc6 | 339 | } else if (strcmp(pCmd, "pinteston") == 0) { |
zhjcpi | 9:87d1555b6219 | 340 | sAppCmd = APP_CMD_PINTEST_ON; |
rgrover1 | 15:495c22f32cc6 | 341 | } else if (strcmp(pCmd, "pintestoff") == 0) { |
zhjcpi | 9:87d1555b6219 | 342 | sAppCmd = APP_CMD_PINTEST_OFF; |
rgrover1 | 15:495c22f32cc6 | 343 | } else if (strcmp(pCmd, "pintestoffon") == 0) { |
zhjcpi | 9:87d1555b6219 | 344 | sAppCmd = APP_CMD_PINTEST_OFF_ON; |
rgrover1 | 15:495c22f32cc6 | 345 | } else if (strcmp(pCmd, "iswakeup") == 0) { |
rgrover1 | 15:495c22f32cc6 | 346 | sAppCmd = APP_CMD_WAKEUP_STATUS; |
rgrover1 | 15:495c22f32cc6 | 347 | } else { |
zhjcpi | 3:7a3ed8ae071d | 348 | CSR_APP_LOG_INFO("\r\nUnknown command %s\r\n", pCmd); |
zhjcpi | 0:789f6b6f710d | 349 | } |
rgrover1 | 15:495c22f32cc6 | 350 | |
rgrover1 | 15:495c22f32cc6 | 351 | CSR_APP_LOG_INFO("\r\n"); |
zhjcpi | 0:789f6b6f710d | 352 | } |