diff options
author | Chris Kuethe <chris.kuethe@gmail.com> | 2008-12-31 17:32:43 +0000 |
---|---|---|
committer | Chris Kuethe <chris.kuethe@gmail.com> | 2008-12-31 17:32:43 +0000 |
commit | cabd939bc46118b1c94487df15b26784b98f5db7 (patch) | |
tree | 1da1b0a610fc4eff227b784e10a05a23a6468d10 | |
parent | c07f5a48c2d32610746e85f04058146a08a44958 (diff) | |
download | gpsd-cabd939bc46118b1c94487df15b26784b98f5db7.tar.gz |
merge mkt-3301 support. from Henk Fijnvandraat
-rw-r--r-- | configure.ac | 16 | ||||
-rw-r--r-- | drivers.c | 105 | ||||
-rw-r--r-- | nmea_parse.c | 10 | ||||
-rw-r--r-- | test/stable/mkt-3301.log | 75 | ||||
-rw-r--r-- | test/stable/mkt-3301.log.chk | 71 |
5 files changed, 275 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac index 0f1e4547..66767d72 100644 --- a/configure.ac +++ b/configure.ac @@ -435,6 +435,21 @@ else AC_MSG_RESULT([no]) fi +dnl check for MKT-3301 support +AC_ARG_ENABLE(mkt3301, + AC_HELP_STRING([--disable-mkt3301], + [disable MKT-3301 support]), + [ac_mkt3301=$enableval], [ac_mkt3301=yes]) +AC_MSG_CHECKING([for MKT-3301 support]) +if test x"$ac_mkt3301" = "xyes"; then + ac_nmea=yes + AC_MSG_RESULT([yes]) + AC_DEFINE([MKT3301_ENABLE], 1, [MKT-3301 support]) + AC_DEFINE([NMEA_ENABLE], 1, [MKT-3301 requires NMEA support]) +else + AC_MSG_RESULT([no]) +fi + dnl check for GPSClock support AC_ARG_ENABLE(gpsclock, AC_HELP_STRING([--disable-gpsclock], @@ -761,6 +776,7 @@ echo "Tripmate : $ac_tripmate" echo "True North : $ac_tnt" echo "UBX : $ac_ubx" echo "GPSclock : $ac_gpsclock" +echo "MKT-3301 : $ac_mkt3301" dnl Below this line are non-protocol switches echo " Daemon Features" echo " ---------------" @@ -100,6 +100,7 @@ gps_mask_t nmea_parse_input(struct gps_device_t *session) } #endif /* GARMINTXT_ENABLE */ gpsd_report(LOG_IO, "<= GPS: %s", session->packet.outbuffer); + if ((st=nmea_parse((char *)session->packet.outbuffer, session))==0) { #ifdef NON_NMEA_ENABLE struct gps_type_t **dp; @@ -118,7 +119,7 @@ gps_mask_t nmea_parse_input(struct gps_device_t *session) if (trigger!=NULL && strncmp((char *)session->packet.outbuffer, trigger, strlen(trigger))==0 && isatty(session->gpsdata.gps_fd)!=0) { gpsd_report(LOG_PROG, "found %s.\n", trigger); (void)gpsd_switch_driver(session, (*dp)->type_name); - return 1; + return DEVICEID_SET; } } #endif /* NON_NMEA_ENABLE */ @@ -217,6 +218,12 @@ static void nmea_probe_subtype(struct gps_device_t *session, unsigned int seq) ubx_write(session->gpsdata.gps_fd, 0x0a, 0x04, NULL, 0); break; #endif /* UBX_ENABLE */ +#ifdef MKT3301_ENABLE + case 8: + /* probe for MKT-3301 -- expect $PMTK705 */ + (void)nmea_send(session->gpsdata.gps_fd, "$PMTK605"); + break; +#endif /* MKT3301_ENABLE */ default: break; } @@ -887,6 +894,99 @@ static struct gps_type_t garmintxt = { }; #endif /* GARMINTXT_ENABLE */ +#ifdef MKT3301_ENABLE +/************************************************************************** + * + * MKT-3301 + * + **************************************************************************/ +const char* mkt_reasons[4] = {"Invalid", "Unsupported", "Valid but Failed", "Valid success"}; + +gps_mask_t processMKT3301(int c UNUSED, char *field[], struct gps_device_t *session) +{ + int msg, reason; + gps_mask_t mask; + mask = 1; //ONLINE_SET; + + switch(msg = atoi(&(field[0])[4])) + { + case 705: /* */ + strlcat(session->subtype,field[1],64); + strlcat(session->subtype,"-",64); + strlcat(session->subtype,field[2],64); + return 0; /* return a unknown sentence, which will cause the driver switch */ + case 001: /* ACK / NACK */ + reason = atoi(field[2]); + if(atoi(field[1]) == -1) + gpsd_report(LOG_WARN, "MKT NACK: unknown sentence\n"); + else if(reason < 3) + gpsd_report(LOG_WARN, "MKT NACK: %s, reason: %s\n", field[1], mkt_reasons[reason]); + else + gpsd_report(LOG_WARN, "MKT ACK: %s\n", field[1]); + break; + default: + return 0; /* ignore */ + } + return mask; +} + +#ifdef ALLOW_RECONFIGURE +static void mkt3301_configure(struct gps_device_t *session, unsigned int seq) +{ +/* +0 NMEA_SEN_GLL, GPGLL interval - Geographic Position - Latitude longitude +1 NMEA_SEN_RMC, GPRMC interval - Recommended Minimum Specific GNSS Sentence +2 NMEA_SEN_VTG, GPVTG interval - Course Over Ground and Ground Speed +3 NMEA_SEN_GGA, GPGGA interval - GPS Fix Data +4 NMEA_SEN_GSA, GPGSA interval - GNSS DOPS and Active Satellites +5 NMEA_SEN_GSV, GPGSV interval - GNSS Satellites in View +6 NMEA_SEN_GRS, GPGRS interval - GNSS Range Residuals +7 NMEA_SEN_GST, GPGST interval - GNSS Pseudorange Errors Statistics +13 NMEA_SEN_MALM, PMTKALM interval - GPS almanac information +14 NMEA_SEN_MEPH, PMTKEPH interval - GPS ephmeris information +15 NMEA_SEN_MDGP, PMTKDGP interval - GPS differential correction information +16 NMEA_SEN_MDBG, PMTKDBG interval – MTK debug information +17 NMEA_SEN_ZDA, GPZDA interval - Time & Date +18 NMEA_SEN_MCHN, PMTKCHN interval – GPS channel status + +"$PMTK314,1,1,1,1,1,5,1,1,0,0,0,0,0,0,0,0,0,1,0" + +*/ + if(seq == 0) { + (void)nmea_send(session->gpsdata.gps_fd,"$PMTK320,0"); /* power save off */ + (void)nmea_send(session->gpsdata.gps_fd,"$PMTK300,1000,0,0,0.0,0.0"); /* Fix interval */ + (void)nmea_send(session->gpsdata.gps_fd,"$PMTK314,0,1,0,1,1,5,1,1,0,0,0,0,0,0,0,0,0,1,0"); + (void)nmea_send(session->gpsdata.gps_fd,"$PMTK301,2"); /* DGPS is WAAS */ + (void)nmea_send(session->gpsdata.gps_fd,"$PMTK313,1"); /* SBAS enable */ + } +} +#endif /* ALLOW_RECONFIGURE */ + +static struct gps_type_t mkt3301 = { + .type_name = "MKT-3301", /* full name of type */ + .trigger = "$PMTK705,", /* MKT-3301s send firmware release name and version */ + .channels = 12, /* not used by this driver */ + .probe_wakeup = NULL, /* no wakeup to be done before hunt */ + .probe_detect = NULL, /* no probe */ + .probe_subtype = NULL, /* to be sent unconditionally */ +#ifdef ALLOW_RECONFIGURE + .configurator = mkt3301_configure, /* change its sentence set */ +#endif /* ALLOW_RECONFIGURE */ + .get_packet = generic_get, /* how to get a packet */ + .parse_packet = nmea_parse_input, /* how to interpret a packet */ + .rtcm_writer = pass_rtcm, /* write RTCM data straight */ + .speed_switcher = NULL, /* no speed switcher */ + .mode_switcher = NULL, /* no mode switcher */ + .rate_switcher = NULL, /* no sample-rate switcher */ + .cycle_chars = -1, /* not relevant, no rate switch */ +#ifdef ALLOW_RECONFIGURE + .revert = NULL, /* no setting-reversion method */ +#endif /* ALLOW_RECONFIGURE */ + .wrapup = NULL, /* no wrapup */ + .cycle = 1, /* updates every second */ +}; +#endif /* MKT3301_ENABLE */ + extern struct gps_type_t garmin_usb_binary, garmin_ser_binary; extern struct gps_type_t sirf_binary, tsip_binary; extern struct gps_type_t evermore_binary, italk_binary; @@ -953,6 +1053,9 @@ static struct gps_type_t *gpsd_driver_array[] = { #ifdef GARMINTXT_ENABLE &garmintxt, #endif /* GARMINTXT_ENABLE */ +#ifdef MKT3301_ENABLE + &mkt3301, +#endif /* MKT3301_ENABLE */ NULL, }; /*@ +nullassign @*/ diff --git a/nmea_parse.c b/nmea_parse.c index 40d0d9b1..f4d3ec44 100644 --- a/nmea_parse.c +++ b/nmea_parse.c @@ -13,6 +13,10 @@ #include "gpsd.h" #include "timebase.h" +#ifdef MKT3301_ENABLE +extern gps_mask_t processMKT3301(int c UNUSED, char *field[], struct gps_device_t *session); +#endif /* MKT3301_ENABLE */ + #ifdef NMEA_ENABLE /************************************************************************** * @@ -705,7 +709,7 @@ gps_mask_t nmea_parse(char *sentence, struct gps_device_t *session) #endif /* TNT_ENABLE */ #ifdef ASHTECH_ENABLE {"PASHR", 3, processPASHR}, /* general handler for Ashtech */ -#endif /* TNT_ENABLE */ +#endif /* ASHTECH_ENABLE */ }; volatile unsigned char buf[NMEA_MAX+1]; @@ -790,6 +794,10 @@ gps_mask_t nmea_parse(char *sentence, struct gps_device_t *session) break; } } +#ifdef MKT3301_ENABLE + if (strncmp("PMTK", field[0], 4) == 0) /* general handler for MKT3301 vendor specifics */ + retval = processMKT3301(count, field, session); +#endif /* MKT3301_ENABLE */ /*@ +usedef @*/ return retval; } diff --git a/test/stable/mkt-3301.log b/test/stable/mkt-3301.log new file mode 100644 index 00000000..b4fa873c --- /dev/null +++ b/test/stable/mkt-3301.log @@ -0,0 +1,75 @@ +# Name: San Jose Navigation FV-M11 +# Chipset: MKT-3301 +# Cycle-time: 1-second +# Start-of-cycle: $GPGGA +# Submitted-by: "Henk Fijnvandraat" +# Date: 23 August 2008 +# Location: Enschede, NL, 52.21N 6.88E +# +# NMEA version V3.01 +# +# Dump made with FTDI TTL-232R-3V3 connected to module serial port +# Log created with Kermit logging from /dev/ttyUSB0 at 4800 baud +# Log shows entire power up to first fix sequence +# +# power up +# +$PMTK010,001*2E +$POLYN,TIME,RESTART_OCCURRED +$POLYN,EPH,0,00000000 +$POLYN,ALM,0,00000000 +$GPGGA,235946.005,8960.000000,N,00000.000000,E,0,0,,137.000,M,13.000,M,,*49 +$GPRMC,235946.005,V,8960.000000,N,00000.000000,E,0.000,0.00,050180,,,N*47 +$PMTKCHN,14001,29001,23001,02001,21001,11001,16001,28001,05001,20001,22001,18001,06001,19001,07001,09001,25001,08001,13001,30001,10001,03001,04001,27001,26001,01001,24001,15001,31001,17001,12001,32001*46 +$GPVTG,0.00,T,,M,0.000,N,0.000,K,N*32 +$GPGGA,235947.004,8960.000000,N,00000.000000,E,0,0,,137.000,M,13.000,M,,*49 +$GPRMC,235947.004,V,8960.000000,N,00000.000000,E,0.000,0.00,050180,,,N*47 +$PMTKCHN,21312,02001,14001,29001,23001,16001,05001,20001,22001,18001,06001,19001,28031,11282,07001,09001,25001,08001,13001,30001,10001,03001,04001,27001,26001,01001,24001,15001,31001,17001,12001,32001*4D +$GPVTG,0.00,T,,M,0.000,N,0.000,K,N*32 +$GPGGA,235948.004,8960.000000,N,00000.000000,E,0,0,,137.000,M,13.000,M,,*46 +$GPRMC,235948.004,V,8960.000000,N,00000.000000,E,0.000,0.00,050180,,,N*48 +$PMTKCHN,21412,28492,22001,14001,29001,23001,02001,11001,16001,05001,20001,06031,19001,18031,07001,09001,25001,08001,13001,30001,10001,03001,04001,27001,26001,01001,24001,15001,31001,17001,12001,32001*4E +$GPVTG,0.00,T,,M,0.000,N,0.000,K,N*32 +$GPGGA,235949.004,8960.000000,N,00000.000000,E,0,0,,137.000,M,13.000,M,,*47 +$GPRMC,235949.004,V,8960.000000,N,00000.000000,E,0.000,0.00,050180,,,N*49 +$PMTKCHN,21422,28502,22242,09282,07432,14001,29001,23001,02001,11001,16001,13031,25031,08031,05001,20001,18001,06001,19001,30001,10001,03001,04001,27001,26001,01001,24001,15001,31001,17001,12001,32001*4E +$GPVTG,0.00,T,,M,0.000,N,0.000,K,N*32 +$GPGGA,235950.004,8960.000000,N,00000.000000,E,0,0,,137.000,M,13.000,M,,*4F +$GPGSA,A,1,,,,,,,,,,,,,,,*1E +$GPGSV,2,1,06,21,,,40,28,,,47,25,,,43,07,,,40*71 +$GPGSV,2,2,06,08,,,49,10,,,41*7E +$GPRMC,235950.004,V,8960.000000,N,00000.000000,E,0.000,0.00,050180,,,N*41 +$PMTKCHN,21402,28472,14001,25432,07402,08492,29001,10412,23001,02001,11001,03031,04031,27031,16001,05001,20001,22001,18001,06001,19001,09001,13001,30001,26001,01001,24001,15001,31001,17001,12001,32001*49 +$GPVTG,0.00,T,,M,0.000,N,0.000,K,N*32 +$GPGGA,081433.591,8960.000000,N,00000.000000,E,0,0,,137.000,M,13.000,M,,*43 +$GPGSA,A,1,,,,,,,,,,,,,,,*1E +$GPGSV,3,1,12,21,,,42,28,,,52,26,,,48,25,,,45*7E +$GPGSV,3,2,12,07,,,44,08,,,50,27,,,48,10,,,44*79 +$GPGSV,3,3,12,15,,,45,03,,,38,19,,,39,05,,,25*77 +$GPRMC,081433.591,V,8960.000000,N,00000.000000,E,0.000,0.00,120180,,,N*4B +$PMTKCHN,21422,28522,26482,25452,07442,08502,27482,10442,15452,03382,19392,05252,16342,22031,14001,29001,23001,02001,11001,20001,18001,06001,09001,13001,30001,04001,01001,24001,31001,17001,12001,32001*43 +$GPVTG,0.00,T,,M,0.000,N,0.000,K,N*32 +$GPGGA,081434.590,5212.978993,N,00653.097906,E,0,3,,102.907,M,47.093,M,,*42 +$GPRMC,081434.590,V,5212.978993,N,00653.097906,E,0.052,0.00,230808,,,N*46 +$PMTKCHN,21422,28522,26482,25452,07442,08502,27482,10442,15452,03392,19392,18031,06031,22252,14001,29001,23001,02001,11001,16001,05001,20001,09001,13001,30001,04001,01001,24001,31001,17001,12001,32001*45 +$GPVTG,0.00,T,,M,0.052,N,0.097,K,N*3B +$GPGGA,081436.000,5212.982135,N,00653.101394,E,1,3,2.88,102.907,M,47.093,M,,*5F +$GPRMC,081436.000,A,5212.982135,N,00653.101394,E,0.039,0.00,230808,,,A*53 +$PMTKCHN,21422,28522,26482,25452,07442,08502,27482,10442,15452,03392,19392,13031,06031,09272,14001,29001,23001,02001,11001,16001,05001,20001,22001,18001,30001,04001,01001,24001,31001,17001,12001,32001*47 +$GPVTG,0.00,T,,M,0.039,N,0.072,K,A*32 +$GPGGA,081437.000,5212.981473,N,00653.102458,E,1,3,2.88,102.907,M,47.093,M,,*5E +$GPRMC,081437.000,A,5212.981473,N,00653.102458,E,0.039,0.00,230808,,,A*52 +$PMTKCHN,21422,28522,26482,25452,07442,08502,27482,10442,15452,03392,19392,13031,29031,14031,23001,02001,11001,16001,05001,20001,22001,18001,06001,09001,30001,04001,01001,24001,31001,17001,12001,32001*42 +$GPVTG,0.00,T,,M,0.039,N,0.073,K,A*33 +$GPGGA,081438.000,5212.982641,N,00653.105897,E,1,3,2.88,102.912,M,47.093,M,,*5D +$GPRMC,081438.000,A,5212.982641,N,00653.105897,E,0.042,0.00,230808,,,A*59 +$PMTKCHN,21422,28522,26482,25452,07442,08502,27482,10442,15452,03392,19392,13342,29031,14342,23001,02001,11001,16001,05001,20001,22001,18001,06001,09001,30001,04001,01001,24001,31001,17001,12001,32001*42 +$GPVTG,0.00,T,,M,0.042,N,0.079,K,A*35 +$GPGGA,081439.000,5212.981832,N,00653.104686,E,1,3,2.88,102.930,M,47.093,M,,*5A +$GPGSA,A,2,21,28,08,,,,,,,,,,3.05,2.88,1.00*07 +$GPGSV,3,1,11,08,63,065,50,28,42,144,52,21,13,320,42,26,,,48*44 +$GPGSV,3,2,11,25,,,45,07,,,44,27,,,48,10,,,44*71 +$GPGSV,3,3,11,15,,,45,03,,,39,19,,,39*77 +$GPRMC,081439.000,A,5212.981832,N,00653.104686,E,0.205,0.00,230808,,,A*5F +$PMTKCHN,21422,28522,26482,25452,07442,08502,27482,10442,15452,03392,19392,02031,29342,23031,14001,11001,16001,05001,20001,22001,18001,06001,09001,13001,30001,04001,01001,24001,31001,17001,12001,32001*45 +$GPVTG,0.00,T,,M,0.205,N,0.379,K,A*37 diff --git a/test/stable/mkt-3301.log.chk b/test/stable/mkt-3301.log.chk new file mode 100644 index 00000000..c15dbefa --- /dev/null +++ b/test/stable/mkt-3301.log.chk @@ -0,0 +1,71 @@ +GPSD,W=1,R=1
+$PMTK010,001*2E +$POLYN,TIME,RESTART_OCCURRED +$POLYN,EPH,0,00000000 +$POLYN,ALM,0,00000000 +$GPGGA,235946.005,8960.000000,N,00000.000000,E,0,0,,137.000,M,13.000,M,,*49 +$GPRMC,235946.005,V,8960.000000,N,00000.000000,E,0.000,0.00,050180,,,N*47 +$PMTKCHN,14001,29001,23001,02001,21001,11001,16001,28001,05001,20001,22001,18001,06001,19001,07001,09001,25001,08001,13001,30001,10001,03001,04001,27001,26001,01001,24001,15001,31001,17001,12001,32001*46 +$GPVTG,0.00,T,,M,0.000,N,0.000,K,N*32 +$GPGGA,235947.004,8960.000000,N,00000.000000,E,0,0,,137.000,M,13.000,M,,*49 +$GPRMC,235947.004,V,8960.000000,N,00000.000000,E,0.000,0.00,050180,,,N*47 +$PMTKCHN,21312,02001,14001,29001,23001,16001,05001,20001,22001,18001,06001,19001,28031,11282,07001,09001,25001,08001,13001,30001,10001,03001,04001,27001,26001,01001,24001,15001,31001,17001,12001,32001*4D +$GPVTG,0.00,T,,M,0.000,N,0.000,K,N*32 +$GPGGA,235948.004,8960.000000,N,00000.000000,E,0,0,,137.000,M,13.000,M,,*46 +$GPRMC,235948.004,V,8960.000000,N,00000.000000,E,0.000,0.00,050180,,,N*48 +$PMTKCHN,21412,28492,22001,14001,29001,23001,02001,11001,16001,05001,20001,06031,19001,18031,07001,09001,25001,08001,13001,30001,10001,03001,04001,27001,26001,01001,24001,15001,31001,17001,12001,32001*4E +$GPVTG,0.00,T,,M,0.000,N,0.000,K,N*32 +$GPGGA,235949.004,8960.000000,N,00000.000000,E,0,0,,137.000,M,13.000,M,,*47 +$GPRMC,235949.004,V,8960.000000,N,00000.000000,E,0.000,0.00,050180,,,N*49 +$PMTKCHN,21422,28502,22242,09282,07432,14001,29001,23001,02001,11001,16001,13031,25031,08031,05001,20001,18001,06001,19001,30001,10001,03001,04001,27001,26001,01001,24001,15001,31001,17001,12001,32001*4E +$GPVTG,0.00,T,,M,0.000,N,0.000,K,N*32 +$GPGGA,235950.004,8960.000000,N,00000.000000,E,0,0,,137.000,M,13.000,M,,*4F +$GPGSA,A,1,,,,,,,,,,,,,,,*1E +GPSD,O=?
+$GPGSV,2,1,06,21,,,40,28,,,47,25,,,43,07,,,40*71 +$GPGSV,2,2,06,08,,,49,10,,,41*7E +$GPRMC,235950.004,V,8960.000000,N,00000.000000,E,0.000,0.00,050180,,,N*41 +$PMTKCHN,21402,28472,14001,25432,07402,08492,29001,10412,23001,02001,11001,03031,04031,27031,16001,05001,20001,22001,18001,06001,19001,09001,13001,30001,26001,01001,24001,15001,31001,17001,12001,32001*49 +$GPVTG,0.00,T,,M,0.000,N,0.000,K,N*32 +$GPGGA,081433.591,8960.000000,N,00000.000000,E,0,0,,137.000,M,13.000,M,,*43 +$GPGSA,A,1,,,,,,,,,,,,,,,*1E +GPSD,O=?
+$GPGSV,3,1,12,21,,,42,28,,,52,26,,,48,25,,,45*7E +$GPGSV,3,2,12,07,,,44,08,,,50,27,,,48,10,,,44*79 +$GPGSV,3,3,12,15,,,45,03,,,38,19,,,39,05,,,25*77 +$GPRMC,081433.591,V,8960.000000,N,00000.000000,E,0.000,0.00,120180,,,N*4B +$PMTKCHN,21422,28522,26482,25452,07442,08502,27482,10442,15452,03382,19392,05252,16342,22031,14001,29001,23001,02001,11001,20001,18001,06001,09001,13001,30001,04001,01001,24001,31001,17001,12001,32001*43 +$GPVTG,0.00,T,,M,0.000,N,0.000,K,N*32 +$GPGGA,081434.590,5212.978993,N,00653.097906,E,0,3,,102.907,M,47.093,M,,*42 +$GPRMC,081434.590,V,5212.978993,N,00653.097906,E,0.052,0.00,230808,,,N*46 +$PMTKCHN,21422,28522,26482,25452,07442,08502,27482,10442,15452,03392,19392,18031,06031,22252,14001,29001,23001,02001,11001,16001,05001,20001,09001,13001,30001,04001,01001,24001,31001,17001,12001,32001*45 +$GPVTG,0.00,T,,M,0.052,N,0.097,K,N*3B +$GPGGA,081436.000,5212.982135,N,00653.101394,E,1,3,2.88,102.907,M,47.093,M,,*5F +GPSD,O=GGA ? 0.005 52.216369 6.885023 102.91 0.00 0.00 ? ? 0.000 ? ? ? 3
+$GPRMC,081436.000,A,5212.982135,N,00653.101394,E,0.039,0.00,230808,,,A*53 +GPSD,O=RMC 1219479276.000 0.005 52.216369 6.885023 ? 0.00 ? 0.0000 0.020 ? ? ? ? 2
+$PMTKCHN,21422,28522,26482,25452,07442,08502,27482,10442,15452,03392,19392,13031,06031,09272,14001,29001,23001,02001,11001,16001,05001,20001,22001,18001,30001,04001,01001,24001,31001,17001,12001,32001*47 +$GPVTG,0.00,T,,M,0.039,N,0.072,K,A*32 +$GPGGA,081437.000,5212.981473,N,00653.102458,E,1,3,2.88,102.907,M,47.093,M,,*5E +GPSD,O=GGA 1219479277.000 0.005 52.216358 6.885041 102.91 0.00 0.00 ? ? 0.000 0.0000 0.00 ? 3
+$GPRMC,081437.000,A,5212.981473,N,00653.102458,E,0.039,0.00,230808,,,A*52 +GPSD,O=RMC 1219479277.000 0.005 52.216358 6.885041 102.91 0.00 0.00 0.0000 0.020 0.000 0.0000 0.00 ? 3
+$PMTKCHN,21422,28522,26482,25452,07442,08502,27482,10442,15452,03392,19392,13031,29031,14031,23001,02001,11001,16001,05001,20001,22001,18001,06001,09001,30001,04001,01001,24001,31001,17001,12001,32001*42 +$GPVTG,0.00,T,,M,0.039,N,0.073,K,A*33 +$GPGGA,081438.000,5212.982641,N,00653.105897,E,1,3,2.88,102.912,M,47.093,M,,*5D +GPSD,O=GGA 1219479278.000 0.005 52.216377 6.885098 102.91 0.00 0.00 ? ? 0.000 0.0000 0.00 ? 3
+$GPRMC,081438.000,A,5212.982641,N,00653.105897,E,0.042,0.00,230808,,,A*59 +GPSD,O=RMC 1219479278.000 0.005 52.216377 6.885098 102.91 0.00 0.00 0.0000 0.022 0.000 0.0000 0.00 ? 3
+$PMTKCHN,21422,28522,26482,25452,07442,08502,27482,10442,15452,03392,19392,13342,29031,14342,23001,02001,11001,16001,05001,20001,22001,18001,06001,09001,30001,04001,01001,24001,31001,17001,12001,32001*42 +$GPVTG,0.00,T,,M,0.042,N,0.079,K,A*35 +$GPGGA,081439.000,5212.981832,N,00653.104686,E,1,3,2.88,102.930,M,47.093,M,,*5A +GPSD,O=GGA 1219479279.000 0.005 52.216364 6.885078 102.93 0.00 0.00 ? ? 0.000 0.0000 0.00 ? 3
+$GPGSA,A,2,21,28,08,,,,,,,,,,3.05,2.88,1.00*07 +$GPGSV,3,1,11,08,63,065,50,28,42,144,52,21,13,320,42,26,,,48*44 +$GPGSV,3,2,11,25,,,45,07,,,44,27,,,48,10,,,44*71 +$GPGSV,3,3,11,15,,,45,03,,,39,19,,,39*77 +GPSD,Y=GSV 1219479279.000 11:8 63 65 50 1:28 42 144 52 1:21 13 320 42 1:26 0 0 48 0:25 0 0 45 0:7 0 0 44 0:27 0 0 48 0:10 0 0 44 0:15 0 0 45 0:3 0 0 39 0:19 0 0 39 0:
+$GPRMC,081439.000,A,5212.981832,N,00653.104686,E,0.205,0.00,230808,,,A*5F +GPSD,O=RMC 1219479279.000 0.005 52.216364 6.885078 102.93 0.00 0.00 0.0000 0.105 0.000 0.0000 0.00 ? 3
+$PMTKCHN,21422,28522,26482,25452,07442,08502,27482,10442,15452,03392,19392,02031,29342,23031,14001,11001,16001,05001,20001,22001,18001,06001,09001,13001,30001,04001,01001,24001,31001,17001,12001,32001*45 +$GPVTG,0.00,T,,M,0.205,N,0.379,K,A*37 |