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
Diff: CsrLocationDemo.cpp
- Revision:
- 3:7a3ed8ae071d
- Parent:
- 2:b70e3a839116
- Child:
- 4:b917d49df4bd
--- a/CsrLocationDemo.cpp Wed Mar 26 09:17:18 2014 +0000 +++ b/CsrLocationDemo.cpp Wed May 21 08:56:40 2014 +0000 @@ -7,6 +7,9 @@ #include "mbed.h" #include "CsrLocation.h" +#define APP_DBG_PORT_BAUD 115200 +#define CSR_APP_LOG_INFO(...) sSerialDebug.printf(__VA_ARGS__) + /* appliation commands */ typedef enum AppCmd { @@ -17,9 +20,12 @@ APP_CMD_PM_FULL, // Set full power mode APP_CMD_PM_PTF, // Set low power PTF mode APP_CMD_PTF_GETPOS, // Get location immediately in low power PTF mode - APP_CMD_START_FAILED, // Process start failed case - APP_CMD_STOP_FAILED, // Process stop failed case - APP_CMD_NMEA, // Debug command, switch chip to NMEA protocol at 4800bps + APP_CMD_NMEA, // proto mode is NMEA + APP_CMD_OSP, // proto mode is OSP + APP_CMD_SWITCH_NMEA, // Debug command, switch chip to NMEA protocol at 4800bps + APP_CMD_SWITCH_OSP, // Debug command, switch chip to NMEA protocol at 4800bps + APP_CMD_START_FAILED, // Process start failed case + APP_CMD_STOP_FAILED, // Process stop failed case APP_CMD_ONOFF_ON, // Debug command, pull onoff pin high level APP_CMD_ONOFF_OFF, // Debug command, pull onoff pin low level APP_CMD_RESET_ON, // Debug command, pull reset pin high level @@ -35,15 +41,15 @@ static int sAppCmd = APP_CMD_IDLE; -ePowerMode sPwrMode = PWR_FULL; - +static ePowerMode sPwrMode = PWR_FULL; +static eProto sProto = PROTO_OSP; -static RawSerial sSerialDebug(USBTX, USBRX); -static RawSerial sSerialLoc(p9, p10); -static DigitalOut sPinOnoff(p5); -static DigitalOut sPinReset(p6); -static DigitalOut sLedLocOn(LED1); -static DigitalOut sLedPosReport(LED2); +static DBG_SERIAL_TYPE sSerialDebug(PINMAP_UART_DEBUG_TX, PINMAP_UART_DEBUG_RX); +static LOC_SERIAL_TYPE sSerialLoc(PINMAP_UART_LOC_TX, PINMAP_UART_LOC_RX); +static DigitalOut sPinOnoff(PINMAP_GPIO_LOC_ONOFF); +static DigitalOut sPinReset(PINMAP_GPIO_LOC_RESET); +static DigitalOut sLedLocOn(LOC_LED1); +static DigitalOut sLedPosReport(LOC_LED2); int main(void) @@ -52,7 +58,7 @@ tCsrLocConfig locConfig; /* initialize the debug serial port */ - sSerialDebug.baud(115200); + sSerialDebug.baud(APP_DBG_PORT_BAUD); sSerialDebug.attach(&_ConsoleRxHandler); /* initialize the CsrLocConfig */ @@ -65,15 +71,18 @@ pCsrLoc = new CsrLocation(&locConfig); if(pCsrLoc == NULL) { - sSerialDebug.printf("Failed to new csrLocation.\r\n"); + CSR_APP_LOG_INFO("Failed to new csrLocation.\r\n"); sSerialDebug.attach(NULL); return -1; } + else + { + CSR_APP_LOG_INFO("Success to new csrLocation.\r\n"); + } /* Register output callback and event callback functions */ pCsrLoc->CsrLocRegOutput(_AppOutputCallback, _AppEventCallback); - sSerialDebug.printf("mbed initialized OK.\r\n"); _AppShowCmd(); while(1) @@ -86,26 +95,26 @@ break; case APP_CMD_START: sAppCmd = APP_CMD_IDLE; - sSerialDebug.printf("start location.\r\n"); + CSR_APP_LOG_INFO("start location.\r\n"); sLedLocOn = 1; - pCsrLoc->CsrLocStart(sPwrMode); + pCsrLoc->CsrLocStart(sPwrMode, sProto); break; case APP_CMD_STOP: sAppCmd = APP_CMD_IDLE; - sSerialDebug.printf("stop location.\r\n"); + CSR_APP_LOG_INFO("stop location.\r\n"); sLedLocOn = 0; pCsrLoc->CsrLocStop(); break; case APP_CMD_START_FAILED: sAppCmd = APP_CMD_IDLE; - sSerialDebug.printf("reset as start failed.\r\n"); + CSR_APP_LOG_INFO("reset as start failed.\r\n"); sLedLocOn = 0; pCsrLoc->CsrLocStop(); pCsrLoc->CsrLocReset(); break; case APP_CMD_STOP_FAILED: sAppCmd = APP_CMD_IDLE; - sSerialDebug.printf("reset as stop failed.\r\n"); + CSR_APP_LOG_INFO("reset as stop failed.\r\n"); sLedLocOn = 0; pCsrLoc->CsrLocStop(); pCsrLoc->CsrLocReset(); @@ -114,42 +123,52 @@ pCsrLoc->CsrLocUpdate(); break; case APP_CMD_ONOFF_ON: - sSerialDebug.printf("onoff on.\r\n"); + CSR_APP_LOG_INFO("onoff on.\r\n"); sAppCmd = APP_CMD_IDLE; sPinOnoff = 1; break; case APP_CMD_ONOFF_OFF: - sSerialDebug.printf("onoff off.\r\n"); + CSR_APP_LOG_INFO("onoff off.\r\n"); sAppCmd = APP_CMD_IDLE; sPinOnoff = 0; break; case APP_CMD_RESET_ON: - sSerialDebug.printf("reset on.\r\n"); + CSR_APP_LOG_INFO("reset on.\r\n"); sAppCmd = APP_CMD_IDLE; sPinReset = 1; break; case APP_CMD_RESET_OFF: - sSerialDebug.printf("reset off.\r\n"); + CSR_APP_LOG_INFO("reset off.\r\n"); sAppCmd = APP_CMD_IDLE; sPinReset = 0; break; case APP_CMD_PTF_GETPOS: - sSerialDebug.printf("lpm get pos.\r\n"); + CSR_APP_LOG_INFO("lpm get pos.\r\n"); sAppCmd = APP_CMD_IDLE; pCsrLoc->CsrLocLpmGetPos(); break; case APP_CMD_NMEA: - sSerialDebug.printf("switch to nmea.\r\n"); + CSR_APP_LOG_INFO("select NMEA protocol.\r\n"); + sProto = PROTO_NMEA; + sAppCmd = APP_CMD_IDLE; + break; + case APP_CMD_OSP: + CSR_APP_LOG_INFO("select OSP protocol.\r\n"); + sProto = PROTO_OSP; + sAppCmd = APP_CMD_IDLE; + break; + case APP_CMD_SWITCH_NMEA: + CSR_APP_LOG_INFO("switch to NMEA protocol.\r\n"); sAppCmd = APP_CMD_IDLE; pCsrLoc->CsrLocDebugSwitch2Nmea(); break; case APP_CMD_PM_FULL: - sSerialDebug.printf("fpm set.\r\n"); + CSR_APP_LOG_INFO("fpm set.\r\n"); sAppCmd = APP_CMD_IDLE; sPwrMode = PWR_FULL; break; case APP_CMD_PM_PTF: - sSerialDebug.printf("lpm ptf set.\r\n"); + CSR_APP_LOG_INFO("lpm ptf set.\r\n"); sAppCmd = APP_CMD_IDLE; sPwrMode = PWR_PTF; break; @@ -159,13 +178,15 @@ static void _AppShowCmd(void) { - sSerialDebug.printf("Location commands:\r\n"); - sSerialDebug.printf(" help - help to show supported commands\r\n"); - sSerialDebug.printf(" start - begin location\r\n"); - sSerialDebug.printf(" stop - end location\r\n"); - sSerialDebug.printf(" fpm - full power mode\r\n"); - sSerialDebug.printf(" ptf - ptf low power mode\r\n"); - sSerialDebug.printf(" getpos - get location immediately in low power ptf mode\r\n"); + CSR_APP_LOG_INFO("Location commands:\r\n"); + CSR_APP_LOG_INFO(" help - help to show supported commands\r\n"); + CSR_APP_LOG_INFO(" start - begin location\r\n"); + CSR_APP_LOG_INFO(" stop - end location\r\n"); + CSR_APP_LOG_INFO(" fpm - full power mode\r\n"); + CSR_APP_LOG_INFO(" ptf - ptf low power mode\r\n"); + CSR_APP_LOG_INFO(" getpos - get location immediately in low power ptf mode\r\n"); + CSR_APP_LOG_INFO(" osp - OSP mode\r\n"); + CSR_APP_LOG_INFO(" nmea - NMEA mode\r\n"); } @@ -176,14 +197,14 @@ case LOC_OUTPUT_LOCATION: { tLocPosResp *pPosRsp = (tLocPosResp *)pMsgData; - sSerialDebug.printf("Loc: lat=%f, lon=%f, alt=%f\r\n", pPosRsp->lat, pPosRsp->lon, pPosRsp->alt); + CSR_APP_LOG_INFO("Loc: lat=%f, lon=%f, alt=%f\r\n", pPosRsp->lat, pPosRsp->lon, pPosRsp->alt); sLedPosReport = !sLedPosReport; break; } case LOC_OUTPUT_SV_STATUS: { tLocSvStatus *pSvStatus = (tLocSvStatus *)pMsgData; - sSerialDebug.printf("SV:week=%u, tow=%lu, GPS Num=%u, GLO Num=%u, GPS Mask=0x%lx, GLO Mask=0x%lx\r\n", + 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", pSvStatus->gps_week, pSvStatus->tow, pSvStatus->numOfSVs, pSvStatus->numOfGloSVs, pSvStatus->svUsedInFixMask, pSvStatus->gloSvUsedInFixMask); break; @@ -201,23 +222,23 @@ case CSR_LOC_EVENT_START_RESULT: if(data != 0) { - sSerialDebug.printf("start failed.\r\n"); + CSR_APP_LOG_INFO("start failed.\r\n"); sAppCmd = APP_CMD_START_FAILED; } else { - sSerialDebug.printf("start OK.\r\n"); + CSR_APP_LOG_INFO("start OK.\r\n"); } break; case CSR_LOC_EVENT_STOP_RESULT: if(data != 0) { - sSerialDebug.printf("stop failed.\r\n"); + CSR_APP_LOG_INFO("stop failed.\r\n"); sAppCmd = APP_CMD_STOP_FAILED; } else { - sSerialDebug.printf("stop OK.\r\n"); + CSR_APP_LOG_INFO("stop OK.\r\n"); } break; default: @@ -252,73 +273,63 @@ if(strcmp(pCmd, "help") == 0) { sAppCmd = APP_CMD_HELP; - sSerialDebug.putc('\r'); - sSerialDebug.putc('\n'); } else if(strcmp(pCmd, "start") == 0) { sAppCmd = APP_CMD_START; - sSerialDebug.putc('\r'); - sSerialDebug.putc('\n'); } else if(strcmp(pCmd, "stop") == 0) { sAppCmd = APP_CMD_STOP; - sSerialDebug.putc('\r'); - sSerialDebug.putc('\n'); } else if(strcmp(pCmd, "fpm") == 0) { sAppCmd = APP_CMD_PM_FULL; - sSerialDebug.putc('\r'); - sSerialDebug.putc('\n'); } else if(strcmp(pCmd, "ptf") == 0) { sAppCmd = APP_CMD_PM_PTF; - sSerialDebug.putc('\r'); - sSerialDebug.putc('\n'); } else if(strcmp(pCmd, "getpos") == 0) { sAppCmd = APP_CMD_PTF_GETPOS; - sSerialDebug.putc('\r'); - sSerialDebug.putc('\n'); } else if(strcmp(pCmd, "nmea") == 0) { sAppCmd = APP_CMD_NMEA; - sSerialDebug.putc('\r'); - sSerialDebug.putc('\n'); + } + else if(strcmp(pCmd, "osp") == 0) + { + sAppCmd = APP_CMD_OSP; + } + else if(strcmp(pCmd, "switchnmea") == 0) + { + sAppCmd = APP_CMD_SWITCH_NMEA; + } + else if(strcmp(pCmd, "switchosp") == 0) + { + sAppCmd = APP_CMD_SWITCH_OSP; } else if(strcmp(pCmd, "onoffon") == 0) { sAppCmd = APP_CMD_ONOFF_ON; - sSerialDebug.putc('\r'); - sSerialDebug.putc('\n'); } else if(strcmp(pCmd, "onoffoff") == 0) { sAppCmd = APP_CMD_ONOFF_OFF; - sSerialDebug.putc('\r'); - sSerialDebug.putc('\n'); } else if(strcmp(pCmd, "reseton") == 0) { sAppCmd = APP_CMD_RESET_ON; - sSerialDebug.putc('\r'); - sSerialDebug.putc('\n'); } else if(strcmp(pCmd, "resetoff") == 0) { sAppCmd = APP_CMD_RESET_OFF; - sSerialDebug.putc('\r'); - sSerialDebug.putc('\n'); } else { - sSerialDebug.putc('\r'); - sSerialDebug.putc('\n'); - sSerialDebug.printf("Unknown command %s\r\n", pCmd); + CSR_APP_LOG_INFO("\r\nUnknown command %s\r\n", pCmd); } + + CSR_APP_LOG_INFO("\r\n"); }