' Trimble CM3A Module, Letter A
' Copyright 2009 Leigh L. Klotz, Jr.
' See file MIT-LICENSE.txt

#picaxe 08m

symbol TXOUT=1
symbol GPSIN=4
' IDs are $55,$56,$59,$5A,$63,$66,$69,$6A,$93,$96
symbol ID=$55 ' letter A

main:
	setfreq m8
	output TXOUT
	input GPSIN
	high TXOUT	'on
	pause 2000
	low TXOUT	'off
	pause 20
	
again:

	gosub getlon

	if b1=44 then goto again		 ' 44=comma
        gosub sendit
	gosub getlat
	if b1=44 then goto again		 ' 44=comma
        gosub sendit
	pause 20000
	goto again

getlon:
	serin GPSIN,T2400,("$GPGGA"),b1,b1,b1,b1,b1,b1,b1,b1,b1,b2,b3,b4,b5,b6,b7,b8,b0,b0
	b9=32
	return

getlat:
	serin GPSIN,T2400,("$GPGGA"),b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b1,b2,b3,b4,b5,b6,b7,b8,b9,b0,b0
	return

sendit:
	setfreq m4
	high TXOUT 
	pause 1000
	'add space at end because the Trimble CM3A modules output one less digit of precision than the Garmin eTrex
	serout TXOUT,T2400,($AA,$AA,$AA,$AA,$AA,$AA,$F0,$0F,$41,$DF,$41,$DF,ID,b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,32)
	pause 100
	low TXOUT
	setfreq m8
	return

