; v?c @s$eZdZdZdZdZdZdZdZdZ dZ dZ egdZ eZ dZdZdZdZd Zd Zd Zd Zd ZdZdZdZddddddddddddg ZdZedjoxeD]ZeeqWndS( f0.0isMii cCs`d}x4|dD](}|djoPn|t|A}qWd|||iddjSdS(sOCalculates Checksum for an NMEA Sentenence and returns TRUE if sentence checks.iis*s%02XN(ssumssentencescsordsfind(ssentencessumsc((s/Users/md/code/gpsd3000/nmea.pys _checksumOks  c Cs|id}dSt|d}|ddjo | }nt|d}|ddjo | }nt|d }t|d }t|d }t|d }|d }dS(s;parses an GGA 'Global Positioning System Fix Data' sentences,NiisSiisWiiii i ( ssentencessplitsfieldssfloatslatitudes longitudesintsstatuss satellitess precisionsaltitudesaltitude_units( ssentencesstatussfieldssaltitudes precisions longitudes satellitesslatitudesaltitude_units((s/Users/md/code/gpsd3000/nmea.pys _process_GGAs%  cCs|id}dS(s( Parse GSV 'Sattelites in View' sentences,N(ssentencessplitsfields(ssentencesfields((s/Users/md/code/gpsd3000/nmea.pys _process_GSVVscCs|id}dS(sXXXs,N(ssentencessplitsfields(ssentencesfields((s/Users/md/code/gpsd3000/nmea.pys _process_GSAmscCs|id}|ddjoft|d}|ddjo | }nt|d}|dd jo | }n|d }ndS( Ns,isAiisSiisWi(ssentencessplitsfieldssfloatslatitudes longitudesfixtime(ssentencesfixtimesfieldss longitudeslatitude((s/Users/md/code/gpsd3000/nmea.pys _proces_GLLs   cCs|id}dS(Ns,(ssentencessplitsfields(ssentencesfields((s/Users/md/code/gpsd3000/nmea.pys _process_RMCscCs|id}dS(Ns,(ssentencessplitsfields(ssentencesfields((s/Users/md/code/gpsd3000/nmea.pys _process_BODscCs|id}dS(Ns,(ssentencessplitsfields(ssentencesfields((s/Users/md/code/gpsd3000/nmea.pys _process_RMBscCs|id}dS(Ns,(ssentencessplitsfields(ssentencesfields((s/Users/md/code/gpsd3000/nmea.pys _process_RTEs cCs|id}|d}dS(Ns,i(ssentencessplitsfieldssdatum(ssentencesfieldssdatum((s/Users/md/code/gpsd3000/nmea.pys _process_GRMMscCs|id}dS(Ns,(ssentencessplitsfields(ssentencesfields((s/Users/md/code/gpsd3000/nmea.pys _process_GRMEscCs|id}dS(Ns,(ssentencessplitsfields(ssentencesfields((s/Users/md/code/gpsd3000/nmea.pys _process_GRMZss$GPRMB,A,,,,,,,,,,,,V*71sA$GPGGA,171434,5110.876,N,00714.665,E,1,06,1.2,332.5,M,47.1,M,,*4Ds1$GPGSA,A,3,,06,,14,17,24,25,30,,,,,2.3,1.2,1.9*3FsD$GPGSV,2,1,08,04,08,028,00,06,58,214,49,09,01,148,00,14,20,238,39*74sD$GPGSV,2,2,08,17,28,133,41,24,33,063,37,25,37,302,43,30,79,082,45*7Ds$PGRME,4.7,M,6.9,M,8.4,M*2Es)$GPGLL,5110.876,N,00714.665,E,171434,A*25s$PGRMZ,1091,f,3*22s$PGRMM,WGS 84*06s$GPBOD,,T,,M,,*47s$GPRTE,1,1,c,0*07sD$GPRMC,171436,A,5110.876,N,00714.665,E,000.0,071.1,071003,000.1,E*78cCs|i}|ido|ddj o d|GHnt| o dGHn|ido|idot|q|idot|q|id ot|q|id ot|q|id ot|q|id ot|q|id ot |q|idot |qd|GHn|idog|idot |q|idot |q|idot |qd|GHn d|GHdS(Ns$is*sNMEA sentence malformed: %rsNMEA checksum wrongs$GPs$GPGGAs$GPGSVs$GPGSAs$GPGLLs$GPRMCs$GPBODs$GPRMBs$GPRTEsunknown GPS NEMA sentence %rs$PGRMs$PGRMMs$PGRMEs$PGRMZs(unknown vendor specific NEMA sentence %rsunknown NEMA sentence %r(ssentencesstrips startswiths _checksumOks _process_GGAs _process_GSVs _process_GSAs _process_RMCs _process_BODs _process_RMBs _process_RTEs _process_GRMMs _process_GRMEs _process_GRMZ(ssentence((s/Users/md/code/gpsd3000/nmea.pysprocess_sentence s@ "    s__main__N(sNonesutcslatitudes longitudes precisionsaltitudesaltitude_unitssspeeds satellitessstatussmodesin_viewssssdatums _checksumOks _process_GGAs _process_GSVs _process_GSAs _proces_GLLs _process_RMCs _process_BODs _process_RMBs _process_RTEs _process_GRMMs _process_GRMEs _process_GRMZstestdatasprocess_sentences__name__ssentence(ssentences _process_RTEsdatums _checksumOks _process_RMBs _proces_GLLsspeeds _process_GRMZs satellitessin_viewsaltitudes _process_GRMMslatitudes _process_GRMEstestdatasstatussprocess_sentences _process_BODs precisions _process_GGAs _process_RMCsutcs _process_GSVssss longitudes _process_GSAsmodesaltitude_units((s/Users/md/code/gpsd3000/nmea.pys?s<  8        * &