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
Revision 21:69895894068a, committed 2014-11-05
- Comitter:
- zhjcpi
- Date:
- Wed Nov 05 01:50:53 2014 +0000
- Parent:
- 20:81202ec45652
- Child:
- 22:73338420d8a6
- Commit message:
- Fit into GPSProvider architct.
Changed in this revision
--- a/CsrLocation.lib Tue Oct 28 12:34:05 2014 +0000 +++ b/CsrLocation.lib Wed Nov 05 01:50:53 2014 +0000 @@ -1,1 +1,1 @@ -http://developer.mbed.org/teams/CSR/code/CsrLocation/#10ba3c761444 +http://developer.mbed.org/teams/CSR/code/CsrLocation/#5fb829ce6b82
--- a/CsrLocationDemo.cpp Tue Oct 28 12:34:05 2014 +0000
+++ b/CsrLocationDemo.cpp Wed Nov 05 01:50:53 2014 +0000
@@ -1,211 +1,171 @@
-
-/* CsrLocation class for mbed Microcontroller
+/* CSRLocation class for mbed Microcontroller
* Copyright 2014 CSR plc
*/
-
#include "mbed.h"
#include "CsrLocation.h"
+#include "GPSProvider.h"
+
+#define PINMAP_GPIO_BTN D5
+#define PINMAP_GPIO_TEST D10
+#define LOC_LED1 D7
+#define LOC_LED2 D6
#define APP_DBG_PORT_BAUD 115200
#define CSR_APP_LOG_INFO(...) sSerialDebug.printf(__VA_ARGS__)
/* appliation commands */
-typedef enum AppCmd
-{
- APP_CMD_IDLE, // No special command
- APP_CMD_HELP, // Show the supported commands
- APP_CMD_START, // Start location
- APP_CMD_STOP, // Stop location
- 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_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
+typedef enum AppCmd {
+ APP_CMD_IDLE, // No special command
+ APP_CMD_HELP, // Show the supported commands
+ APP_CMD_START, // Start location
+ APP_CMD_STOP, // Stop location
+ 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_NMEA, // protocol mode is NMEA
+ APP_CMD_OSP, // protocol mode is OSP
+ APP_CMD_RESET, // Debug command, pull reset pin high level
+ APP_CMD_WAKEUP_STATUS, // Debug command, check wakeup pin status
+ APP_CMD_ONOFF_ON, // Debug command, pull onoff pin high level
APP_CMD_ONOFF_OFF, // Debug command, pull onoff pin low level
+ APP_CMD_ONOFF_PULSE, // Debug command, pull onoff pin high level and then 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_WAKEUP_STATUS, // Debug command, check wakeup pin status
- 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;
-
+ APP_CMD_TEST_ON, // Debug command, pull test pin high level
+ APP_CMD_TEST_OFF, // Debug command, pull test pin low level
+ APP_CMD_TEST_PULSE, // 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);
static void _AppCmdProcess(char *pCmd);
+static int sAppCmd = APP_CMD_IDLE;
-static int sAppCmd = APP_CMD_IDLE;
-static ePowerMode sPwrMode = PWR_FULL;
-static eProto sProto = PROTO_OSP;
+static DigitalOut sLedLocOn(LOC_LED1);
+static DigitalOut sLedPosReport(LOC_LED2);
+static InterruptIn sBtn(PINMAP_GPIO_BTN);
+static DigitalOut sPinTest(PINMAP_GPIO_TEST);
-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);
-static DigitalIn sWakeup(PINMAP_GPIO_LOC_WAKEUP);
-static InterruptIn sBtn(PINMAP_GPIO_BTN);
-static DigitalOut sPinTest(PINMAP_GPIO_TEST);
+Serial sSerialDebug(USBTX, USBRX);
+
+void
+locationHandler(const GPSProvider::LocationUpdateParams_t *params)
+{
+ CSR_APP_LOG_INFO("received location update\r\n");
+}
int main(void)
{
- CsrLocation *pCsrLoc;
- tCsrLocConfig locConfig;
+ sLedLocOn = 0;
+ sLedPosReport = 0;
+ sPinTest = 1;
+ sBtn.mode(PullUp);
+ sBtn.fall(&_AppBtnPushed);
- sLedLocOn = 0;
- sLedPosReport = 0;
- sPinTest = 1;
- sBtn.mode(PullUp);
- sBtn.fall(&_AppBtnPushed);
-
- /* initialize the debug serial port */
+ /* initialize the debug serial port */
sSerialDebug.baud(APP_DBG_PORT_BAUD);
sSerialDebug.attach(&_ConsoleRxHandler);
- /* initialize the CsrLocConfig */
- locConfig.pSerialDebug = &sSerialDebug;
- locConfig.pSerialLoc = &sSerialLoc;
- locConfig.pPinOnoff = &sPinOnoff;
- locConfig.pPinReset = &sPinReset;
- locConfig.pWakeup = &sWakeup;
+ GPSProvider gps;
+ gps.setPowerMode(GPSProvider::POWER_FULL);
+ gps.reset();
+ gps.onLocationUpdate(locationHandler);
+ CSR_APP_LOG_INFO("Success to new csrLocation.\r\n");
- /* new the CsrLocation instance */
- pCsrLoc = new CsrLocation(&locConfig);
- if(pCsrLoc == NULL)
- {
- 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);
+// _AppShowCmd();
- while(1)
- {
- switch(sAppCmd)
- {
- case APP_CMD_HELP:
- sAppCmd = APP_CMD_IDLE;
- _AppShowCmd();
- break;
- case APP_CMD_START:
- sAppCmd = APP_CMD_IDLE;
- CSR_APP_LOG_INFO("start location.\r\n");
- sLedLocOn = 1;
- pCsrLoc->CsrLocStart(sPwrMode, sProto);
- break;
- case APP_CMD_STOP:
- sAppCmd = APP_CMD_IDLE;
- CSR_APP_LOG_INFO("stop location.\r\n");
- sLedLocOn = 0;
- pCsrLoc->CsrLocStop();
- break;
- case APP_CMD_START_FAILED:
- sAppCmd = APP_CMD_IDLE;
- 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;
- CSR_APP_LOG_INFO("reset as stop failed.\r\n");
- sLedLocOn = 0;
- pCsrLoc->CsrLocStop();
- pCsrLoc->CsrLocReset();
- break;
- case APP_CMD_IDLE:
- pCsrLoc->CsrLocUpdate();
- break;
- case APP_CMD_ONOFF_ON:
- CSR_APP_LOG_INFO("onoff on.\r\n");
- sAppCmd = APP_CMD_IDLE;
- sPinOnoff = 1;
- break;
- case APP_CMD_ONOFF_OFF:
- CSR_APP_LOG_INFO("onoff off.\r\n");
- sAppCmd = APP_CMD_IDLE;
- sPinOnoff = 0;
- break;
- case APP_CMD_RESET_ON:
- CSR_APP_LOG_INFO("reset on.\r\n");
- sAppCmd = APP_CMD_IDLE;
- sPinReset = 1;
- break;
- case APP_CMD_RESET_OFF:
- CSR_APP_LOG_INFO("reset off.\r\n");
- sAppCmd = APP_CMD_IDLE;
- sPinReset = 0;
- break;
- 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;
- 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_WAKEUP_STATUS:
- CSR_APP_LOG_INFO("wakeup status : %d.\r\n", sWakeup.read());
- sAppCmd = APP_CMD_IDLE;
- 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;
- 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:
- CSR_APP_LOG_INFO("fpm set.\r\n");
- sAppCmd = APP_CMD_IDLE;
- sPwrMode = PWR_FULL;
- break;
- case APP_CMD_PM_PTF:
- CSR_APP_LOG_INFO("lpm ptf set.\r\n");
- sAppCmd = APP_CMD_IDLE;
- sPwrMode = PWR_PTF;
- break;
+ while (true) {
+ switch (sAppCmd) {
+ case APP_CMD_HELP:
+ sAppCmd = APP_CMD_IDLE;
+ _AppShowCmd();
+ break;
+ case APP_CMD_IDLE:
+ gps.process();
+ break;
+ case APP_CMD_START:
+ sAppCmd = APP_CMD_IDLE;
+ CSR_APP_LOG_INFO("start location.\r\n");
+ gps.start();
+ sLedLocOn = 1;
+ break;
+ case APP_CMD_STOP:
+ sAppCmd = APP_CMD_IDLE;
+ CSR_APP_LOG_INFO("stop location.\r\n");
+ gps.stop();
+ sLedLocOn = 0;
+ break;
+ case APP_CMD_RESET:
+ sAppCmd = APP_CMD_IDLE;
+ gps.reset();
+ CSR_APP_LOG_INFO("reset on.\r\n");
+ break;
+ case APP_CMD_PTF_GETPOS:
+ CSR_APP_LOG_INFO("lpm get pos.\r\n");
+ sAppCmd = APP_CMD_IDLE;
+ gps.lpmGetImmediateLocation();
+ break;
+ case APP_CMD_NMEA:
+ CSR_APP_LOG_INFO("select NMEA protocol.\r\n");
+ gps.ioctl(CSR_IOCTL_CMD_PROTO_NMEA, NULL);
+ sAppCmd = APP_CMD_IDLE;
+ break;
+ case APP_CMD_OSP:
+ CSR_APP_LOG_INFO("select OSP protocol.\r\n");
+ gps.ioctl(CSR_IOCTL_CMD_PROTO_OSP, NULL);
+ sAppCmd = APP_CMD_IDLE;
+ break;
+ case APP_CMD_PM_FULL:
+ sAppCmd = APP_CMD_IDLE;
+ gps.setPowerMode(GPSProvider::POWER_FULL);
+ CSR_APP_LOG_INFO("fpm set.\r\n");
+ break;
+ case APP_CMD_PM_PTF:
+ sAppCmd = APP_CMD_IDLE;
+ gps.setPowerMode(GPSProvider::POWER_LOW);
+ CSR_APP_LOG_INFO("lpm ptf set.\r\n");
+ break;
+ case APP_CMD_WAKEUP_STATUS:
+ gps.ioctl(CSR_IOCTL_CMD_WAKEUP_STATUS, NULL);
+ sAppCmd = APP_CMD_IDLE;
+ break;
+ case APP_CMD_ONOFF_ON:
+ gps.ioctl(CSR_IOCTL_CMD_ONOFF_ON, NULL);
+ sAppCmd = APP_CMD_IDLE;
+ break;
+ case APP_CMD_ONOFF_OFF:
+ gps.ioctl(CSR_IOCTL_CMD_ONOFF_OFF, NULL);
+ sAppCmd = APP_CMD_IDLE;
+ break;
+ case APP_CMD_ONOFF_PULSE:
+ gps.ioctl(CSR_IOCTL_CMD_ONOFF_PULSE, NULL);
+ sAppCmd = APP_CMD_IDLE;
+ break;
+ case APP_CMD_RESET_ON:
+ gps.ioctl(CSR_IOCTL_CMD_RESET_ON, NULL);
+ sAppCmd = APP_CMD_IDLE;
+ break;
+ case APP_CMD_RESET_OFF:
+ gps.ioctl(CSR_IOCTL_CMD_RESET_OFF, NULL);
+ sAppCmd = APP_CMD_IDLE;
+ break;
+ case APP_CMD_TEST_ON:
+ sPinTest = 1;
+ sAppCmd = APP_CMD_IDLE;
+ break;
+ case APP_CMD_TEST_OFF:
+ sPinTest = 0;
+ sAppCmd = APP_CMD_IDLE;
+ break;
+ case APP_CMD_TEST_PULSE:
+ sPinTest = 0;
+ wait_ms(100);
+ sPinTest = 1;
+ sAppCmd = APP_CMD_IDLE;
+ break;
}
}
}
@@ -219,175 +179,85 @@
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(" nmea - NMEA mode\r\n");
CSR_APP_LOG_INFO(" osp - OSP mode\r\n");
- CSR_APP_LOG_INFO(" nmea - NMEA mode\r\n");
-
+ CSR_APP_LOG_INFO(" wakesta - get chip wakeup status\r\n");
+ CSR_APP_LOG_INFO(" onoffon - pull high onoff pin\r\n");
+ CSR_APP_LOG_INFO(" onoffoff - pull low onoff pin\r\n");
+ CSR_APP_LOG_INFO(" onoffpul - pull onoff pin high and then low\r\n");
+ CSR_APP_LOG_INFO(" reseton - pull high reset pin\r\n");
+ CSR_APP_LOG_INFO(" resetoff - pull low reset pin\r\n");
+ CSR_APP_LOG_INFO(" teston - pull high test pin\r\n");
+ CSR_APP_LOG_INFO(" testoff - pull low test pin\r\n");
+ CSR_APP_LOG_INFO(" testpul - pull test pin high and then low\r\n");
}
static void _AppBtnPushed(void)
{
- sAppCmd = APP_CMD_PTF_GETPOS;
-// sLedLocOn = !sLedLocOn;
-}
-
-static void _AppOutputCallback(uint32_t msgId, void * const pMsgData, uint32_t msgLength)
-{
- switch(msgId)
- {
- case LOC_OUTPUT_LOCATION:
- {
- tLocPosResp *pPosRsp = (tLocPosResp *)pMsgData;
- CSR_APP_LOG_INFO("Loc: lat=%f, lon=%f, alt=%f\r\n", pPosRsp->lat, pPosRsp->lon, pPosRsp->alt);
- sLedPosReport = 1;
- wait_ms(10);
- sLedPosReport = 0;
- break;
- }
- case LOC_OUTPUT_SV_STATUS:
- {
- tLocSvStatus *pSvStatus = (tLocSvStatus *)pMsgData;
- 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;
- }
-
- default :
- break;
- }
-}
-
-static void _AppEventCallback(eCsrLocEventType event, uint32_t data)
-{
- switch(event)
- {
- case CSR_LOC_EVENT_START_RESULT:
- if(data != 0)
- {
- CSR_APP_LOG_INFO("start failed.\r\n");
- sAppCmd = APP_CMD_START_FAILED;
- }
- else
- {
- CSR_APP_LOG_INFO("start OK.\r\n");
- }
- break;
- case CSR_LOC_EVENT_STOP_RESULT:
- if(data != 0)
- {
- CSR_APP_LOG_INFO("stop failed.\r\n");
- sAppCmd = APP_CMD_STOP_FAILED;
- }
- else
- {
- CSR_APP_LOG_INFO("stop OK.\r\n");
- }
- break;
- default:
- break;
- }
+ sAppCmd = APP_CMD_PTF_GETPOS;
+ // sLedLocOn = !sLedLocOn;
}
static void _ConsoleRxHandler(void)
{
- static char cmd[32] = {0};
- char ch;
+ static char cmd[32] = {0};
+ char ch;
ch = sSerialDebug.getc();
sSerialDebug.putc(ch);
- if(ch == '\r')
- {
+ if (ch == '\r') {
sSerialDebug.putc('\n');
- if(strlen(cmd) > 0)
- {
- _AppCmdProcess(cmd);
- memset(cmd, 0, sizeof(cmd));
+ if (strlen(cmd) > 0) {
+ _AppCmdProcess(cmd);
+ memset(cmd, 0, sizeof(cmd));
}
- }
- else
- {
- cmd[strlen(cmd)] = ch;
- }
+ } else {
+ cmd[strlen(cmd)] = ch;
+ }
}
-
+
static void _AppCmdProcess(char *pCmd)
{
- if(strcmp(pCmd, "help") == 0)
- {
+ if (strcmp(pCmd, "help") == 0) {
sAppCmd = APP_CMD_HELP;
- }
- else if(strcmp(pCmd, "start") == 0)
- {
+ } else if (strcmp(pCmd, "start") == 0) {
sAppCmd = APP_CMD_START;
- }
- else if(strcmp(pCmd, "stop") == 0)
- {
+ } else if (strcmp(pCmd, "stop") == 0) {
sAppCmd = APP_CMD_STOP;
- }
- else if(strcmp(pCmd, "fpm") == 0)
- {
+ } else if (strcmp(pCmd, "fpm") == 0) {
sAppCmd = APP_CMD_PM_FULL;
- }
- else if(strcmp(pCmd, "ptf") == 0)
- {
+ } else if (strcmp(pCmd, "ptf") == 0) {
sAppCmd = APP_CMD_PM_PTF;
- }
- else if(strcmp(pCmd, "getpos") == 0)
- {
+ } else if (strcmp(pCmd, "getpos") == 0) {
sAppCmd = APP_CMD_PTF_GETPOS;
- }
- else if(strcmp(pCmd, "nmea") == 0)
- {
+ } else if (strcmp(pCmd, "nmea") == 0) {
sAppCmd = APP_CMD_NMEA;
- }
- else if(strcmp(pCmd, "osp") == 0)
- {
+ } 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)
- {
+ } else if (strcmp(pCmd, "reset") == 0) {
+ sAppCmd = APP_CMD_RESET;
+ } else if(strcmp(pCmd, "wakesta") == 0) {
+ sAppCmd = APP_CMD_WAKEUP_STATUS;
+ } else if(strcmp(pCmd, "onoffon") == 0) {
sAppCmd = APP_CMD_ONOFF_ON;
- }
- else if(strcmp(pCmd, "onoffoff") == 0)
- {
+ } else if(strcmp(pCmd, "onoffoff") == 0) {
sAppCmd = APP_CMD_ONOFF_OFF;
- }
- else if(strcmp(pCmd, "reseton") == 0)
- {
+ } else if(strcmp(pCmd, "onoffpul") == 0) {
+ sAppCmd = APP_CMD_ONOFF_PULSE;
+ } else if(strcmp(pCmd, "resetfon") == 0) {
sAppCmd = APP_CMD_RESET_ON;
- }
- else if(strcmp(pCmd, "resetoff") == 0)
- {
+ } else if(strcmp(pCmd, "resetoff") == 0) {
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 if(strcmp(pCmd, "iswakeup") == 0)
- {
- sAppCmd = APP_CMD_WAKEUP_STATUS;
- }
- else
- {
+ } else if(strcmp(pCmd, "teston") == 0) {
+ sAppCmd = APP_CMD_TEST_ON;
+ } else if(strcmp(pCmd, "testoff") == 0) {
+ sAppCmd = APP_CMD_TEST_OFF;
+ } else if(strcmp(pCmd, "testpul") == 0) {
+ sAppCmd = APP_CMD_TEST_PULSE;
+ } else {
CSR_APP_LOG_INFO("\r\nUnknown command %s\r\n", pCmd);
}
-
- CSR_APP_LOG_INFO("\r\n");
+
+ CSR_APP_LOG_INFO("\r\n");
}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/GPSProvider.lib Wed Nov 05 01:50:53 2014 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/teams/components/code/GPSProvider/#47aaf0ebde35

GPS mbed Shield