Your IP : 172.28.240.42


Current Path : /usr/lib/python2.7/dist-packages/twisted/protocols/gps/
Upload File :
Current File : //usr/lib/python2.7/dist-packages/twisted/protocols/gps/rockwell.pyc


[XMc@sdZddlZddlZddlZddlmZddlmZdZde	fdYZ
dejfd	YZdS(
sRockwell Semiconductor Zodiac Serial Protocol
Coded from official protocol specs (Order No. GPS-25, 09/24/1996, Revision 11)

Maintainer: Bob Ippolito

The following Rockwell Zodiac messages are currently understood::
    EARTHA\r\n (a hack to "turn on" a DeLorme Earthmate)
    1000 (Geodesic Position Status Output)
    1002 (Channel Summary)
    1003 (Visible Satellites)
    1011 (Receiver ID)

The following Rockwell Zodiac messages require implementation::
    None really, the others aren't quite so useful and require bidirectional communication w/ the device

Other desired features::
    - Compatability with the DeLorme Tripmate and other devices with this chipset (?)
iN(tprotocol(tlogitZodiacParseErrorcBseZRS((t__name__t
__module__(((sB/usr/lib/python2.7/dist-packages/twisted/protocols/gps/rockwell.pyRstZodiaccBseZidd6dd6dd6dd6dd	6d
d6dd
6dd6dd6dd6dd6dd6dd6dd6Zidd6dd6dd 6d!d"6d#d$6d%d&6d'd(6d)d*6d+d,6d-d.6d/d06d1d26d3d46d5d66d7d6d8d96d:d;6Zd<Zd=Zd>Zd?Zd@ZdAZ	dBZ
dCZdDZdEZ
dFZdGZdHZdIZdJZdKZdLZdMZdNZRS(Otfixitecefitchannelsit
satellitesitdgpsitchannelmeasitiditusersettingsittestresultsiLtmeastimemarkiNtutctimemarkiTtserialijteepromupdateioteepromstatusipiitudatumitmdatumitsmaskitsselectitdgpscitstartcitsvaliditantennaitaltinputitappctlitnavcfgittestitrestarti2i3tmsgctliGtdgpsdi(itc
Cs|j||_xt|jdkr|jd dkrv|jr`d|_|jjdn|jd|_qn|jdd!dkrtrtd|jqtntjd|jd \}}}}}t	t
j||||fd	@}tjd
tjd
|\}||kr[trRtd|||jd fq[tn|d}d}|r||d7}nt|j|krPn||j
krtdnd
}	|r|jdd|!tjd
|jd||!d}	}dt	t
jtjd|d|	d	@}tjd
tjd
|\}||krtrtjd||fdttd|||	fqtqn|j||_|j||	|qWdS(Ni
isEARTHA
iissInvalid Sync %rs<HHHHhis<hs#Invalid Header Checksum %r != %r %rsInvalid Header??R#is<%dHsmsg_id = %r length = %rtdebugs!Invalid Data Checksum %r != %r %r(trecvdtlentallow_earthmate_hackt	transporttwritetDEBUGRtstructtunpacktreducetoperatortaddtpackt
MAX_LENGTHRtdmsgtTruetreceivedMessage(
tselftrecdtsynctmsg_idtlengthtacknaktchecksumtcksumtneededBytestmessage((sB/usr/lib/python2.7/dist-packages/twisted/protocols/gps/rockwell.pytdataReceivedLsN			(#!#	
9.!cCs|jj|d}|s.td|nt|d|d}t|d|d}|oc|sjdS||}||S(NsUnknown msg_id = %rs	handle_%ss	decode_%s(tdispatchtgettNoneRtgetattr(R5R8R>R:R@thandlertdecodertdecoded((sB/usr/lib/python2.7/dist-packages/twisted/protocols/gps/rockwell.pyR4sc+"Cst|dkstdtjd|\"}}}}}}}}	}
}}}
}}}}}}}}}}}}}}}}}}} }!}"}#|d|d|t|d}$tjdt||||fdtt|d	t	j
}t|d	t	j
}|d
@}%|}&t|d}'t|ddf}(t|ddf})d}*|$|||%|&|'|(|)|*f	S(
NibsJGeodesic Position Status Output should be 55 words total (98 byte message)s#<LhhHHHHHLLHHHHHHLlllhLHhhHLLLHllllg @gN@g&.>sutchr, utcmn, utcsc, utcns = R$g1E2>ig{Gz?tM(R&tAssertionErrorR+R,tfloatRtmsgtreprR3tmathtpiRB(+R5R>ttickstmsgseqtsatseqt	navstatustnavtypetnmeasuretpolartgpswktgpsestgpsnstutcdytutcmotutcyrtutchrtutcmntutcsctutcnstlatitudet	longitudetheightt
geoidalseptspeedtcoursetmagvartclimbtmapdatumt	exhposerrt	exvposerrt	extimeerrt
exphvelerrtclkbiast
clkbiasdevtclkdrifttclkdriftdevtutctposfixR	thdoptaltitudetgeoidR
((sB/usr/lib/python2.7/dist-packages/twisted/protocols/gps/rockwell.pyt
decode_fixs*x$)cCst|dkstdtjd|\}}}}}}}td||||f\}}}}t|}t|}t|d d}|d@dk}	|d	@dk}
||f|	|
ffS(
Nijs?Receiver ID Message should be 59 words total (106 byte message)s<Lh20s20s20s20s20scSs|jddS(Nti(tsplit(ts((sB/usr/lib/python2.7/dist-packages/twisted/protocols/gps/rockwell.pyt<lambda>siiiii(R&RHR+R,tmapRItint(R5R>RNRORtsoftware_versiont
software_datetoptions_listtreservedtminimize_romtminimize_ram((sB/usr/lib/python2.7/dist-packages/twisted/protocols/gps/rockwell.pyt	decode_ids'*c
Cst|dkstdtjd|d \}}}}}}g}|d}xztdD]l}	tjd|d|	d|	d!\}
}}|
d@|
d	@|
d
@|
d@f}
|j|
||fqcWt|fS(NiZsBChannel Summary Message should be 51 words total (90 byte message)s<LhhHLLiis<HHHiiiii(R&RHR+R,trangetappendttuple(
R5R>RNRORPRUtgpswsRWRtitflagstprntcno((sB/usr/lib/python2.7/dist-packages/twisted/protocols/gps/rockwell.pytdecode_channelss(
."cCs$t|dkstdtjd|d \}}}}}}}}	td|||||f\}}}}}g}
|d}xvt|	D]h}tjd|d|d|d!\}}
}td	|
|f\}
}|
j||
|fqWt|
|||||ffS(
NiZsEVisible Satellites Message should be 51 words total (90 byte message)s	<LhhhhhhHicSst|dS(Ng{Gz?(RI(tn((sB/usr/lib/python2.7/dist-packages/twisted/protocols/gps/rockwell.pyRyss<HhhiicSst|dtjS(Ng;On?(RIRLRM(R((sB/usr/lib/python2.7/dist-packages/twisted/protocols/gps/rockwell.pyRys(R&RHR+R,RzRtpushR(R5R>RNROtgdoptpdopRrtvdopttdopt
numsatellitesR	RRtazitelev((sB/usr/lib/python2.7/dist-packages/twisted/protocols/gps/rockwell.pytdecode_satellitess.0
.cCs(t|dkstdtdS(Ni&sJDifferential GPS Status Message should be 25 words total (38 byte message)(R&RHtNotImplementedError(R5R>((sB/usr/lib/python2.7/dist-packages/twisted/protocols/gps/rockwell.pytdecode_dgpsscCs(t|dkstdtdS(Ni`sNECEF Position Status Output Message should be 54 words total (96 byte message)(R&RHR(R5R>((sB/usr/lib/python2.7/dist-packages/twisted/protocols/gps/rockwell.pytdecode_ecefscCs(t|dkstdtdS(Ni(sHChannel Measurement Message should be 154 words total (296 byte message)(R&RHR(R5R>((sB/usr/lib/python2.7/dist-packages/twisted/protocols/gps/rockwell.pytdecode_channelmeasscCs(t|dkstdtdS(Ni sGUser-Settings Output Message should be 22 words total (32 byte message)(R&RHR(R5R>((sB/usr/lib/python2.7/dist-packages/twisted/protocols/gps/rockwell.pytdecode_usersettingsscCs(t|dkstdtdS(NisHBuilt-In Test Results Message should be 20 words total (28 byte message)(R&RHR(R5R>((sB/usr/lib/python2.7/dist-packages/twisted/protocols/gps/rockwell.pytdecode_testresultsscCs(t|dkstdtdS(NisJMeasurement Time Mark Message should be 253 words total (494 byte message)(R&RHR(R5R>((sB/usr/lib/python2.7/dist-packages/twisted/protocols/gps/rockwell.pytdecode_meastimemarkscCs(t|dkstdtdS(NisMUTC Time Mark Pulse Output Message should be 20 words total (28 byte message)(R&RHR(R5R>((sB/usr/lib/python2.7/dist-packages/twisted/protocols/gps/rockwell.pytdecode_utctimemarkscCs(t|dkstdtdS(Nis^Serial Port Communication Paramaters In Use Message should be 21 words total (30 byte message)(R&RHR(R5R>((sB/usr/lib/python2.7/dist-packages/twisted/protocols/gps/rockwell.pyt
decode_serialscCs(t|dkstdtdS(Nis?EEPROM Update Message should be 10 words total (8 byte message)(R&RHR(R5R>((sB/usr/lib/python2.7/dist-packages/twisted/protocols/gps/rockwell.pytdecode_eepromupdatescCs(t|dkstdtdS(Nis@EEPROM Status Message should be 18 words total (24 byte message)(R&RHR(R5R>((sB/usr/lib/python2.7/dist-packages/twisted/protocols/gps/rockwell.pytdecode_eepromstatus
s(RRR@tmessagesR1R'R%R?R4RuRRRRRRRRRRRRR(((sB/usr/lib/python2.7/dist-packages/twisted/protocols/gps/rockwell.pyR!sh

	<		'												(
t__doc__R+R.RLttwisted.internetRttwisted.pythonRR*t
ValueErrorRtProtocolR(((sB/usr/lib/python2.7/dist-packages/twisted/protocols/gps/rockwell.pyt<module>s$