// connection status
constant kState_Disconnected  := 0;	// ready-to-go (default state)
constant kState_Listen        := 1;	// preparation for (asynchronous) listen
constant kState_Listening     := 2;	// in-process of (asynchronous) listen
constant kState_Connect       := 3;	// preparation for (asynchronous) connect
constant kState_Connecting    := 4;	// in-process of (asynchronous) connect
constant kState_Connected     := 5;	// connected (requires disconnect)
constant kState_Disconnecting := 6;	// in-process of (asynchronous) disconnect
constant kState_Error         := 7;	// error (usually parity/frame/overrun)

// default connection timeout in milliseconds
constant kConnectionTimeout := 15000;

// exception handling
constant kMessage_Disconnected := "Disconnected";
constant kMessage_Listening := "Listening";
constant kMessage_Connecting := "Connecting";
constant kMessage_Connected := "Connected";
constant kMessage_Disconnecting := "Disconnecting";
constant kMessage_ConnectFailed := "Connection not established; no response.";
constant kMessage_BufferOverrun := "The communications data buffer was overrun and has been reset.";
constant kMessage_Timeout := "The connection has timed out.";
constant kMessage_PortInUse := "Another application is using the communications port.";
constant kMessage_PortDoesNotExist := "The requested communications port does not exist.";
constant kMessage_OutputTooFast := "Synchronous outputs are occuring too quickly; some data was not output.";

constant kMaxSVs     := 32;
constant kMaxVisSVs  := 12;
constant kPrecSingle := 1;
constant kPrecDouble := 2;

// position display format
constant kPosXYZ := 0;
constant kPosLLA := 1;
constant kPosUTM := 2;
constant kPosOSG := 3;
constant kCoordDisplay := '["ECEF","LLDM","UTM","OSGB"];

// datum ids
constant kDatumWGS84      :=   0;	// WGS-84
constant kDatumEurope1979 :=  65;	// European 1979
constant kDatumOSGB       := 125;	// Ordnance Survey 36 meqn
constant kDatumList       := '["WGS-84","European 1979","OS GB 1936"];

DefConst('kDatumCode, [kDatumWGS84, kDatumEurope1979, kDatumOSGB]);

// velocity display format
constant kVelNone   := 0;		// No Velocity display
constant kVelXYZ    := 1;		// Velocity components in ECEF XYZ
constant kVelENU    := 2;		// Velocity components in East, North and Up
constant kVelSoGmps := 3;		// Speed over Ground - Speed (m/s), heading (deg), up velocity (m/s)
constant kVelSoGkph := 4;		// Speed over Ground - Speed (Km/hr), heading (deg), up velocity (m/s)
constant kVelSoGmph := 5;		// Speed over Ground - Speed (miles/hr), heading (deg), up velocity (ft/s)

// time display mode
constant kShowLocalTime    := 0;
constant kShowGPSTime      := 1;
constant kShowUTCTime      := 2;
constant kShowInternalTime := 3;
constant kTimeDisplay        := '["Local","GPS","UTC","Internal"];

// clock Setting
constant kClockSetNever := 0;

// various
constant kGPSEpochAsNewtDate := 39980160;	// 1980-01-06 00:00:00 as minutes since 1904-01-01 00:00:00
constant kMinutesInWeek      := 10080;
constant kSecondsInDay       := 86400;
constant kMpsToMph           := 2.236932;		// m/s to miles/hr
constant kMToF               := 3.28084;		// metres to feet

// sky map display
constant kSatMapRefresh := 30000;		// refresh interval in milliseconds

// choices used in map display preferences
constant kmGridWorldText	 := '["10m","50m","100m","500m","1Km","5Km","10Km","50Km","100km"];
constant kmGridWorldValue	 := '[10,50,100,500,1000,5000,10000,50000,100000];
constant klGridWorldText	 := '["1 sec","1 min","1 deg"];
constant klGridWorldValue	 := '[1,60,360];
constant kGridScreenText     := '["x1","x2","x4"];
constant kGridScreenValue    := '[50,100,200];
constant kTrackIntervalList  := '["none","1 sec","2 sec","5 sec","10 sec","30 sec","1 min","2 min","5 min","10 min","30 min","1 hr","2 hrs"];
constant kTrackIntervalValue := '[0,1,2,5,10,30,60,120,300,600,1800,3600,7200];
constant kTrackDistanceList  := '["none","1m","2m","5m","10m","20m","50m","100m","200m","500m","1km","2km","5km","10km"];
constant kTrackDistanceValue := '[0,1,2,5,10,20,50,100,200,500,1000,2000,5000,10000];

// choices used in main preferences
constant kDiffMode           := '["Off","On","Auto (off)","Auto(on)"];
constant kClockSetList       := '["Never","10 min","30 min","1 hr","6 hr","12 hr","24 hr"];
constant kClockSetValue      := '[0,10,30,60,360,720,1440];
constant kVelocityDisplay    := '["None","ECEF-XYZ","East/North/Up","Ground speed (m/s)","Ground speed (kph)","Ground speed (mph)"];
constant kFixIntervalList    := '["1 sec","2 sec","5 sec","10 sec","30 sec","1 min"];
constant kFixIntervalValue   := '[1,2,5,10,30,60];
constant kAverageList        := '["None","5","10","20","50","100"];
constant kAverageValue       := '[0,5,10,20,50,100];
constant kSerialSrcList      := '["Serial","IR","Slot 1","Slot2"];
//constant kSerialSrcValue     := '[kHWLocExternalSerial, kHWLocBuiltInIR, kHWLocPCMCIASlot1, kHWLocPCMCIASlot2];

DefConst('kSerialSrcValue, [kHWLocExternalSerial, kHWLocBuiltInIR, kHWLocPCMCIASlot1, kHWLocPCMCIASlot2]);

constant kDays := '["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];

