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
diff -r b70e3a839116 -r 7a3ed8ae071d CsrLocationDemo.cpp
--- 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");
}

GPS mbed Shield