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.

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");
 }