// Trimble receiver type
constant kRcvrCM3 := 27;
constant kRcvrSK8 := 90;

constant kRpt46StatusMsg :=	'["Doing position fixes",
							  "No GPS time yet",
							  "Waiting for almanac",
							  "PDOP too high",
							  "No SVs available",
							  "1 SV available",
							  "2 SVs available",
							  "3 SVs available",
							  "No usable SVs",
							  "1 1SV usable",
							  "2 SVs usable",
							  "3 SVs usable",
							  "SV is unusable"];

// packet buffer size
constant kPktBufLen := 512;
constant kLastFixInfoLen := 56;

// TSIP report packets
constant kRptPkt3D := 0x3D;		// Primary port config
constant kRptPkt40 := 0x40;		// Almanac page
constant kRptPkt41 := 0x41;		// GPS Time
constant kRptPkt42 := 0x42;		// ECEF XYZ position, single prec
constant kRptPkt43 := 0x43;		// ECEF Velocity fix
constant kRptPkt44 := 0x44;		// Best 4 satellites
constant kRptPkt45 := 0x45;		// Receiver software versions
constant kRptPkt46 := 0x46;		// Receiver health
constant kRptPkt47 := 0x47;		// SV signal levels
constant kRptPkt48 := 0x48;		// GPS system msg
constant kRptPkt49 := 0x49;		// Almanac health page
constant kRptPkt4A := 0x4A;		// LLA position, single precision
constant kRptPkt4B := 0x4B;		// Machine status
constant kRptPkt4C := 0x4C;		// Operating parameters
constant kRptPkt4D := 0x4D;		// Oscillator offset
constant kRptPkt4E := 0x4E;		// Response to set GPS time
constant kRptPkt4F := 0x4F;		// UTC parameters
constant kRptPkt54 := 0x54;		// 1 SV Bias
constant kRptPkt55 := 0x55;		// Current I/O options
constant kRptPkt56 := 0x56;		// ENU Velocity fix
constant kRptPkt57 := 0x57;		// Last computed fix
constant kRptPkt58 := 0x58;		// Sytem data/acknowledge
constant kRptPkt59 := 0x59;		// Disable/Ignore status
constant kRptPkt5A := 0x5A;		// Raw measurement data
constant kRptPkt5B := 0x5B;		// Ephemeris data
constant kRptPkt5C := 0x5C;		// Tracking status
constant kRptPkt5E := 0x5E;		// Additional fix status
constant kRptPkt6D := 0x6D;		// All in view
constant kRptPkt6E := 0x6E;		// Carrier phase params
constant kRptPkt6F := 0x6F;		// Carrier phase measurements
constant kRptPkt72 := 0x72;		// Position filter parameters
constant kRptPkt74 := 0x74;		// Altitude filter parameter
constant kRptPkt76 := 0x76;		// High-8-Best-4/High-6
constant kRptPkt78 := 0x78;		// Max age of diff corrections
constant kRptPkt7B := 0x7B;		// NMEA output settings
constant kRptPkt82 := 0x82;		// Differential mode
constant kRptPkt83 := 0x83;		// ECEF XYZ position, double prec
constant kRptPkt84 := 0x84;		// LLA position, double prec
constant kRptPkt85 := 0x85;		// Differential correction status
constant kRptPkt8F := 0x8F;		// SuperPackets
constant kRptPkt8F01 := 0x01;		// Last fix ASCII
constant kRptPkt8F02 := 0x02;		// last fix binary
constant kRptPkt8F03 := 0x03;		// Port B config
constant kRptPkt8F15 := 0x15;		// Current datum values
constant kRptPkt8F17 := 0x17;		// UTM position, single precision
constant kRptPkt8F18 := 0x18;		// UTM position, double precision
constant kRptPkt8F19 := 0x19;		// UTM enabled
constant kRptPkt8F20 := 0x20;		// last fix binary fixed point
constant kRptPktBB := 0xBB;
constant kRptPktBC := 0xBC;

// primary port config settings for cmd & rpt pkt 3D
constant kTSIPRxTxBaud50	:= 0;
constant kTSIPRxTxBaud110	:= 1;
constant kTSIPRxTxBaud300	:= 4;
constant kTSIPRxTxBaud600	:= 5;
constant kTSIPRxTxBaud1200	:= 6;
constant kTSIPRxTxBaud2400	:= 8;
constant kTSIPRxTxBaud4800	:= 9;
constant kTSIPRxTxBaud9600	:= 11;
constant kTSIPRxTxBaudValue	:= '[50,110,0,0,300,600,0,1200,0,2400,4800,0,9600];
constant kTSIPParityEven    := 0;
constant kTSIPParityOdd     := 4;
constant kTSIPParityNone    := 16;
constant kTSIPBitsPerChar7  := 2;
constant kTSIPBitsPerChar8  := 3;
constant kTSIPStopBits1     := 7;
constant kTSIPStopBits2     := 15;
constant kTSIPTxLangPkt     := 0;
constant kTSIPTxLangOff     := 1;
constant kTSIPTxLangNMEA    := 5;
constant kTSIPRxLangPkt     := 0;
constant kTSIPRxLangRTCM    := 1;

// I/O options for cmd pkt 35
constant kIOOptPosXYZ    := 0x01;	// XYZ ECEF position output
constant kIOOptPosLLA    := 0x02;	// LLA output
constant kIOOptPosAltOut := 0x04;	// Altitude output 0 HAE, 1 WGS-84
constant kIOOptPosAltIn  := 0x08;	// Altitude input 0 HAE, 1 WGS-84
constant kIOOptPosPrec   := 0x10;	// output precision: 0 single, 1 double
constant kIOOptPosSuper  := 0x20;	// Superpacket output
constant kIOOptPosSupFmt := 0x40;	// Superpacket format: 0 binary, 1 ASCII (CM3 only)

constant kIOOptVelXYZ    := 0x01;	// XYZ ECEF velocity output
constant kIOOptVelENU    := 0x02;	// ENU velocity output

constant kIOOptTimUTC    := 0x01;	// time output: 0 GPS, 1 UTC
constant kIOOptTimComp   := 0x02;	// fix computation time (CM3 only)
constant kIOOptTimOut    := 0x04;	// output time (CM3 only)
constant kIOOptTimSync   := 0x08;	// synchronised measurements (CM3 only)
constant kIOOptTimProj   := 0x10;	// minimise projection (CM3 only)

constant kIOOptAuxRaw    := 0x01;	// raw measurements
constant kIOOptAuxSmooth := 0x02;	// Doppler smoothed codephase
constant kIOOptAuxAdd    := 0x04;	// Additional fix status
constant kIOOptCPhase    := 0x20;	// Carrier Phase output (SK8 special oly)

// constellation mode for cmd pkt 0x75
constant kHigh8 := 0;				// High-8 (best 6) mode
constant kHigh6 := 1;				// High-6 (overdetermined) mode

// mode and dimension for rpt pkts 0x44 and 0x6D
constant kAuto      := 0;			// auto mode
constant kManual    := 1;			// manual mode
constant kDim0      := 1;			// 0D fix
constant kDim2      := 3;			// 2D fix
constant kDim3      := 4;			// 3D fix
constant kBest4     := 1;			// Best 4 SVs
constant kAllInView := 2;			// All SVs in view

