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:
9:87d1555b6219
Parent:
6:d040264b3329
Child:
10:8dbf356c44ec
--- a/CsrLocationDemo.cpp	Mon Aug 04 10:15:40 2014 +0000
+++ b/CsrLocationDemo.cpp	Tue Aug 05 06:22:37 2014 +0000
@@ -29,11 +29,16 @@
     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
-    APP_CMD_RESET_OFF       // Debug command, pull reset pin low level
+    APP_CMD_RESET_OFF,      // Debug command, pull reset pin low level
+    APP_CMD_PINTEST_ON,     // Debug command, pull test pin high level
+    APP_CMD_PINTEST_OFF,    // Debug command, pull test pin low level
+    APP_CMD_PINTEST_OFF_ON  // Debug command, pull test pin low firstly, then pull high level
+    
 }eAppCmd;
 
 
 static void _AppShowCmd(void);
+static void _AppBtnPushed(void);
 static void _AppOutputCallback(uint32_t  msgId, void * const pMsgData, uint32_t msgLength);
 static void _AppEventCallback(eCsrLocEventType event, uint32_t data);
 static void _ConsoleRxHandler(void);
@@ -50,13 +55,20 @@
 static DigitalOut		sPinReset(PINMAP_GPIO_LOC_RESET);
 static DigitalOut		sLedLocOn(LOC_LED1);
 static DigitalOut		sLedPosReport(LOC_LED2);
-
+static InterruptIn 		sBtn(PINMAP_GPIO_BTN);
+static DigitalOut		sPinTest(D10);
 
 int main(void)
 {
     CsrLocation  *pCsrLoc;
 	tCsrLocConfig locConfig;
 
+	sLedLocOn = 0;
+	sLedPosReport = 0;
+	sPinTest = 1;
+	sBtn.mode(PullUp);
+	sBtn.fall(&_AppBtnPushed);
+	
 	/* initialize the debug serial port */
     sSerialDebug.baud(APP_DBG_PORT_BAUD);
     sSerialDebug.attach(&_ConsoleRxHandler);
@@ -95,22 +107,12 @@
             break;
         case APP_CMD_START:
             sAppCmd = APP_CMD_IDLE;
-            if(pCsrLoc->CsrLocGetState() == CSR_LOC_STATE_RUN)
-            {
-	            CSR_APP_LOG_INFO("Cannot execute this command as location is in running state, please stop location firstly.\r\n");
-	            break;
-            }
             CSR_APP_LOG_INFO("start location.\r\n");
             sLedLocOn = 1;
             pCsrLoc->CsrLocStart(sPwrMode, sProto);
             break;
         case APP_CMD_STOP:
             sAppCmd = APP_CMD_IDLE;
-            if(pCsrLoc->CsrLocGetState() == CSR_LOC_STATE_IDLE)
-            {
-	            CSR_APP_LOG_INFO("Cannot execute this command as location is not in running state.\r\n");
-	            break;
-            }
             CSR_APP_LOG_INFO("stop location.\r\n");
             sLedLocOn = 0;
             pCsrLoc->CsrLocStop();
@@ -152,79 +154,52 @@
             sAppCmd = APP_CMD_IDLE;
             sPinReset = 0;
             break;
-        case APP_CMD_PTF_GETPOS:
+        case APP_CMD_PINTEST_ON:
+            CSR_APP_LOG_INFO("test pin on.\r\n");
+            sAppCmd = APP_CMD_IDLE;
+            sPinTest = 1;
+            break;
+        case APP_CMD_PINTEST_OFF:
+            CSR_APP_LOG_INFO("test pin off.\r\n");
             sAppCmd = APP_CMD_IDLE;
-            if(pCsrLoc->CsrLocGetState() != CSR_LOC_STATE_RUN)
-            {
-	            CSR_APP_LOG_INFO("Cannot execute this command as location is not in running state, please start location in PTF mode firstly.\r\n");
-	            break;
-            }
+            sPinTest = 0;
+            break;
+        case APP_CMD_PINTEST_OFF_ON:
+            CSR_APP_LOG_INFO("test pin off and high.\r\n");
+            sAppCmd = APP_CMD_IDLE;
+            sPinTest = 0;
+            wait_ms(100);
+            sPinTest = 1;
+            break;
+        case APP_CMD_PTF_GETPOS:
             CSR_APP_LOG_INFO("lpm get pos.\r\n");
+            sAppCmd = APP_CMD_IDLE;
             pCsrLoc->CsrLocLpmGetPos();
             break;
         case APP_CMD_NMEA:
+            CSR_APP_LOG_INFO("select NMEA protocol.\r\n");
+            sProto = PROTO_NMEA;
             sAppCmd = APP_CMD_IDLE;
-            if(pCsrLoc->CsrLocGetState() == CSR_LOC_STATE_RUN)
-            {
-	            CSR_APP_LOG_INFO("Cannot execute this command as location is in running state, please stop location firstly.\r\n");
-	            break;
-            }
-            if(sPwrMode != PWR_FULL)
-            {
-                CSR_APP_LOG_INFO("Cannot select NMEA protocol because current lpm is not supported for NMEA protocol, pls switch to FPM firstly.\r\n");
-            }
-            else
-            {
-                CSR_APP_LOG_INFO("select NMEA protocol.\r\n");
-                sProto = PROTO_NMEA;
-            }
             break;
         case APP_CMD_OSP:
-            sAppCmd = APP_CMD_IDLE;
-            if(pCsrLoc->CsrLocGetState() == CSR_LOC_STATE_RUN)
-            {
-	            CSR_APP_LOG_INFO("Cannot execute this command as location is in running state, please stop location firstly.\r\n");
-	            break;
-            }
             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;
-            if(pCsrLoc->CsrLocGetState() == CSR_LOC_STATE_RUN)
-            {
-	            CSR_APP_LOG_INFO("Cannot execute this command as location is in running state, please stop location firstly.\r\n");
-	            break;
-            }
-            CSR_APP_LOG_INFO("switch to NMEA protocol.\r\n");
             pCsrLoc->CsrLocDebugSwitch2Nmea();
             break;
         case APP_CMD_PM_FULL:
+            CSR_APP_LOG_INFO("fpm set.\r\n");
             sAppCmd = APP_CMD_IDLE;
-            if(pCsrLoc->CsrLocGetState() == CSR_LOC_STATE_RUN)
-            {
-	            CSR_APP_LOG_INFO("Cannot execute this command as location is in running state, please stop location firstly.\r\n");
-	            break;
-            }
-            CSR_APP_LOG_INFO("fpm set.\r\n");
             sPwrMode = PWR_FULL;
             break;
         case APP_CMD_PM_PTF:
+            CSR_APP_LOG_INFO("lpm ptf set.\r\n");
             sAppCmd = APP_CMD_IDLE;
-            if(pCsrLoc->CsrLocGetState() == CSR_LOC_STATE_RUN)
-            {
-	            CSR_APP_LOG_INFO("Cannot execute this command as location is in running state, please stop location firstly.\r\n");
-	            break;
-            }
-            if(sProto == PROTO_NMEA)
-            {
-                CSR_APP_LOG_INFO("Cannot set lpm because LPM is not supported for current NMEA protocol, pls switch to OSP firstly.\r\n");
-            }
-            else
-            {
-                CSR_APP_LOG_INFO("lpm ptf set.\r\n");
-                sPwrMode = PWR_PTF;
-            }
+            sPwrMode = PWR_PTF;
             break;
         }
     }
@@ -244,6 +219,14 @@
     
 }
 
+static void _AppBtnPushed(void)
+{
+	sAppCmd = APP_CMD_PTF_GETPOS;
+//	sLedLocOn = !sLedLocOn;
+//	wait_ms(10);
+//	sLedLocOn = 0;
+}
+
 static void _AppOutputCallback(uint32_t  msgId, void * const pMsgData, uint32_t msgLength)
 {
     switch(msgId)
@@ -252,7 +235,9 @@
     {
         tLocPosResp *pPosRsp = (tLocPosResp *)pMsgData;
         CSR_APP_LOG_INFO("Loc: lat=%f, lon=%f, alt=%f\r\n", pPosRsp->lat, pPosRsp->lon, pPosRsp->alt);
-        sLedPosReport = !sLedPosReport;
+        sLedPosReport = 1;
+        wait_ms(10);
+        sLedPosReport = 0;
         break;
     }
     case LOC_OUTPUT_SV_STATUS:
@@ -380,6 +365,18 @@
     {
         sAppCmd = APP_CMD_RESET_OFF;
     }
+    else if(strcmp(pCmd, "pinteston") == 0)
+    {
+        sAppCmd = APP_CMD_PINTEST_ON;
+    }
+    else if(strcmp(pCmd, "pintestoff") == 0)
+    {
+        sAppCmd = APP_CMD_PINTEST_OFF;
+    }
+    else if(strcmp(pCmd, "pintestoffon") == 0)
+    {
+        sAppCmd = APP_CMD_PINTEST_OFF_ON;
+    }
     else
     {
         CSR_APP_LOG_INFO("\r\nUnknown command %s\r\n", pCmd);