private static GPSFix ConstructGPSFix(Packet gpsPacket) { if (gpsPacket.GetField(STIRConsts.FieldName_User).value != STIRConsts.NID_XUser_STIR) { return(null);//Packet not intended for us } GPSFix theFix = new GPSFix(); //Co-ordinates are D M'mm.mmm' theFix.LatDegrees = (UInt16)gpsPacket.GetField(STIRConsts.FieldName_LatDegrees).value; theFix.LatMinutes = (UInt16)gpsPacket.GetField(STIRConsts.FieldName_LatMinutes).value; theFix.LatDecimal = (byte)gpsPacket.GetField(STIRConsts.FieldName_LatDecimal).value; theFix.LatMinutesFraction = gpsPacket.GetField(STIRConsts.FieldName_LatFraction).value; theFix.LatHemishpere = (char)gpsPacket.GetField(STIRConsts.FieldName_LatHemisphere).value; theFix.LonDegrees = (UInt16)gpsPacket.GetField(STIRConsts.FieldName_LonDegrees).value; theFix.LonMinutes = (UInt16)gpsPacket.GetField(STIRConsts.FieldName_LonMinutes).value; theFix.LonDecimal = (byte)gpsPacket.GetField(STIRConsts.FieldName_LonDecimal).value; theFix.LonMinutesFraction = gpsPacket.GetField(STIRConsts.FieldName_LonFraction).value; //Speed in knots theFix.SpeedKnotsInteger = gpsPacket.GetField(STIRConsts.FieldName_SPEED_KNOTS_INTEGER).value; theFix.SpeedKnotsDecimal = (byte)gpsPacket.GetField(STIRConsts.FieldName_SPEED_DECIMAL_POINT).value; theFix.SpeedKnotsFraction = (byte)gpsPacket.GetField(STIRConsts.FieldName_SPEED_KNOTS_FRACTION).value; //Fix time theFix.Hours = (ushort)gpsPacket.GetField(STIRConsts.FieldName_Hours).value; theFix.Minutes = (ushort)gpsPacket.GetField(STIRConsts.FieldName_Minutes).value; theFix.Seconds = (ushort)gpsPacket.GetField(STIRConsts.FieldName_Seconds).value; theFix.Decimal_Point = (byte)gpsPacket.GetField(STIRConsts.FieldName_Hours).value; theFix.Seconds_Fraction = (ushort)gpsPacket.GetField(STIRConsts.FieldName_Seconds_Fraction).value; //other theFix.FixType = (byte)gpsPacket.GetField(STIRConsts.FieldName_FIXTYPE).value; theFix.Offset = (byte)gpsPacket.GetField(STIRConsts.FieldName_Offset).value; return(theFix); }
private CompletePossitionReport ProcessTrainPosMessage(PCBridgeDataTransferMessage dataMessage) { CompletePossitionReport complete = new CompletePossitionReport(); Packet gpsPacket = dataMessage.GetPacket(STIRConsts.Packet_OtherData); //packet 44 GPSFix gpsDetails = ConstructGPSFix(gpsPacket); Packet posPacket = dataMessage.GetPacket(STIRConsts.Packet_PositionReport); //packet 0 if (posPacket != null) { complete.Basic = ConstructReport(posPacket); } if (gpsDetails != null) { complete.GPSDetails = gpsDetails; } Field Q_CABROLE = dataMessage.GetMessageField(STIRConsts.FieldName_Q_CABROLE); if (Q_CABROLE != null) { complete.FrontCabNotBack = Q_CABROLE.value == 0; } Field Q_STIRSTATUS = dataMessage.GetMessageField(STIRConsts.FieldName_Q_CABROLE); if (Q_STIRSTATUS != null) { complete.Stir_Status = (StirStatusEnum)(byte)Q_STIRSTATUS.value; } complete.NID_Engine = dataMessage.GetMessageField(STIRConsts.FieldName_NID_ENGINE).value; complete.TSAP = dataMessage.TSAP; return(complete); }