Csr location class shows location and satellite information, which supports H13467 + ST F103RB/NXP LCP1549 boards now.

Dependents:   CsrLocationDemo CsrLocationDemo

Fork of CsrLocation by jie zhao

Revision:
4:0d9b711fb646
Parent:
3:71690f7bb480
Child:
6:aed3c66b39d9
--- a/CsrLocation.cpp	Wed May 21 08:55:55 2014 +0000
+++ b/CsrLocation.cpp	Tue May 27 10:54:06 2014 +0000
@@ -58,6 +58,11 @@
 	_CsrLocHwReset();
 }
 
+eCsrLocState CsrLocation::CsrLocGetState(void)
+{
+	return csrLocInst.locState;
+}
+
 void CsrLocation::CsrLocStart(ePowerMode pwrMode, eProto proto)
 {
     csrLocInst.pwrMode = pwrMode;
@@ -86,6 +91,10 @@
 
         /* trigger on_off */
         _CsrLocHwOnoff();
+		if(csrLocInst.pwrMode == PWR_PTF)
+		{
+			_CsrLocSendData(SEND_DATA_TYPE_OSP_LPM_REQ);
+		}
 
         csrLocInst.locState = CSR_LOC_STATE_RUN;
     	csrLocInst.bPwrModeRsp = false;
@@ -124,6 +133,12 @@
     }
     else
     {
+   		if(csrLocInst.pwrMode == PWR_PTF)
+		{
+    		CSR_LOG_INFO("Stop with fpm.\r\n");
+			_CsrLocSendData(SEND_DATA_TYPE_OSP_FPM_REQ);
+		}
+
         _CsrLocSendData(SEND_DATA_TYPE_OSP_STOP_REQ);
     }
     wait_ms(10);
@@ -538,6 +553,20 @@
             {
                 if(pLocInst->protoState == PROTO_STATE_DET_OSP || pLocInst->protoState == PROTO_STATE_DET_OSP_FROM_NMEA)
                 {
+                    if(pLocInst->protoState == PROTO_STATE_DET_OSP_FROM_NMEA)
+                    {
+                        if(!csrLocInst.bPwrModeRsp)
+				        {
+				            if(csrLocInst.pwrMode == PWR_PTF)
+				            {
+				                _CsrLocSendData(SEND_DATA_TYPE_OSP_LPM_REQ);
+				            }
+				            else
+				            {
+				                _CsrLocSendData(SEND_DATA_TYPE_OSP_FPM_REQ);
+				            }
+				        }
+                	}
                     CSR_LOG_INFO("Checking OSP protocol OK.\r\n");
                     pLocInst->protoState = PROTO_STATE_DET_OK;
                     pLocInst->appEventCb(CSR_LOC_EVENT_START_RESULT, 0);