public AisMessage CreateMessage(BitArray payload) { var type = payload.DecodeByte(0, 5); if (type != c_type) { throw new Exception(string.Format("Incorrect type, expected 19 but present:{0}", type)); } var timeStamp = DateTime.UtcNow.ToFileTimeUtc(); byte repeatIndicator = payload.DecodeByte(6, 7); uint mmsi = payload.DecodeUInt32(8, 37); float sog = (float)payload.DecodeUInt32(46, 55) / 10; bool posAccuracy = payload.DecodeBool(56); float longtitude = (float)payload.DecodeFloat(57, 84) / 600000; float latitude = (float)payload.DecodeFloat(85, 111) / 600000; float cog = (float)payload.DecodeUInt32(112, 123) / 10; ushort heading = payload.DecodeUShort(124, 132); byte utcSeconds = payload.DecodeByte(133, 138); string vesselName = payload.DecodeString(143, 262).Trim(); ShipType shipType = (ShipType)payload.DecodeByte(263, 270); uint bow = payload.DecodeUInt32(271, 279); uint stern = payload.DecodeUInt32(280, 288); byte port = payload.DecodeByte(289, 294); byte starboard = payload.DecodeByte(295, 300); EpfdFixType positionFixType = (EpfdFixType)payload.DecodeByte(301, 304); bool raim = payload.DecodeBool(305); bool dataTerminalReady = payload.DecodeBool(306); bool assigned = payload.DecodeBool(307); byte spare = payload.DecodeByte(308, 311); return(new ClassBExtendedPositionReportMessage( type, timeStamp, repeatIndicator, mmsi, sog, posAccuracy, longtitude, latitude, cog, heading, utcSeconds, vesselName, shipType, bow, stern, port, starboard, positionFixType, raim, dataTerminalReady, assigned, spare)); }
public AisMessage CreateMessage(BitArray payload) { var type = payload.DecodeByte(0, 5); if (type != c_type) { throw new Exception(string.Format("Incorrect type, expected 5 but present:{0}", type)); } var timeStamp = DateTime.UtcNow.ToFileTimeUtc(); byte repeatIndicator = payload.DecodeByte(6, 7); uint mmsi = payload.DecodeUInt32(8, 37); byte aisVersion = payload.DecodeByte(38, 39); uint imo = payload.DecodeUInt32(40, 69);; string callsign = payload.DecodeString(70, 111).Trim(); string vesselName = payload.DecodeString(112, 231).Trim(); ShipType shipType = (ShipType)payload.DecodeByte(232, 239); uint bow = payload.DecodeUInt32(240, 248); uint stern = payload.DecodeUInt32(249, 257); byte port = payload.DecodeByte(258, 263); byte starboard = payload.DecodeByte(264, 269); EpfdFixType positionFixType = (EpfdFixType)payload.DecodeByte(270, 273); byte etaMonth = payload.DecodeByte(274, 277); byte etaDay = payload.DecodeByte(278, 282); byte etaHour = payload.DecodeByte(283, 287); byte etaMinute = payload.DecodeByte(288, 293); float draught = (float)payload.DecodeUInt32(294, 301) / 10; string destination = payload.DecodeString(302, 421).Trim(); bool dataTerminalReady = payload.DecodeBool(422); bool spare = payload.DecodeBool(423); return(new ClassAStaticAndVoyageDataMesage( type, timeStamp, repeatIndicator, mmsi, aisVersion, imo, callsign, vesselName, shipType, bow, stern, port, starboard, positionFixType, etaMonth, etaDay, etaHour, etaMinute, draught, destination, dataTerminalReady, spare)); }
public AisMessage CreateMessage(BitArray payload) { var type = payload.DecodeByte(0, 5); if (type != c_type1) { throw new Exception($"Incorrect type, expected 4 but present:{type}"); } var timeStamp = DateTime.UtcNow.ToFileTimeUtc(); byte repeatIndicator = payload.DecodeByte(6, 7); uint mmsi = payload.DecodeUInt32(8, 37); uint year = payload.DecodeUInt32(38, 51); byte month = payload.DecodeByte(52, 55); byte day = payload.DecodeByte(56, 60); byte hour = payload.DecodeByte(61, 65); byte minute = payload.DecodeByte(66, 71); byte second = payload.DecodeByte(72, 77); bool posAccuracy = payload.DecodeBool(78); float longtitude = (float)payload.DecodeFloat(79, 106) / 600000; float latitude = (float)payload.DecodeFloat(107, 133) / 600000; EpfdFixType positionFixType = (EpfdFixType)payload.DecodeByte(134, 137); bool raim = payload.DecodeBool(148); uint radioStatus = payload.DecodeUInt32(149, 167); return(new BaseStationReportMessage( type, timeStamp, repeatIndicator, mmsi, year, month, day, hour, minute, second, posAccuracy, longtitude, latitude, positionFixType, raim, radioStatus)); }
public BaseStationReportMessage(byte type, long timeStamp, byte repeatIndicator, uint mmsi, uint year, byte month, byte day, byte hour, byte minute, byte second, bool fixQuality, float longtitude, float latitude, EpfdFixType positionFixType, bool raimFlag, uint radioStatus) : base(type, timeStamp) { RepeatIndicator = repeatIndicator; Mmsi = mmsi; Year = year; Month = month; Day = day; Hour = hour; Minute = minute; Second = second; FixQuality = fixQuality; Longtitude = longtitude; Latitude = latitude; PositionFixType = positionFixType; RaimFlag = raimFlag; RadioStatus = radioStatus; }
public ClassAStaticAndVoyageDataMesage(byte type, long timeStamp, byte repeatIndicator, uint mmsi, byte aisVersion, uint imo, string callsign, string vesselName, ShipType shipType, uint bow, uint stern, byte port, byte starboard, EpfdFixType positionFixType, byte etaMonth, byte etaDay, byte etaHour, byte etaMinute, float draught, string destination, bool dataTerminalReady, bool spare) : base(type, timeStamp) { RepeatIndicator = repeatIndicator; Mmsi = mmsi; AisVersion = aisVersion; Imo = imo; Callsign = callsign; VesselName = vesselName; ShipType = shipType; Bow = bow; Stern = stern; Port = port; Starboard = starboard; PositionFixType = positionFixType; EtaMonth = etaMonth; EtaDay = etaDay; EtaHour = etaHour; EtaMinute = etaMinute; Draught = draught; Destination = destination; DataTerminalReady = dataTerminalReady; Spare = spare; }
public ClassBExtendedPositionReportMessage(byte type, long timeStamp, byte repeatIndicator, uint mmsi, float speedOverGround, bool positionAcuracy, float longtitude, float latitude, float courseOverGround, ushort trueHeading, byte utcSeconds, string vesselName, ShipType shipType, uint bow, uint stern, byte port, byte starboard, EpfdFixType positionFixType, bool raimFlag, bool dataTerminalReady, bool assignedMode, byte spare) : base(type, timeStamp) { RepeatIndicator = repeatIndicator; Mmsi = mmsi; SpeedOverGround = speedOverGround; PositionAcuracy = positionAcuracy; Longtitude = longtitude; Latitude = latitude; CourseOverGround = courseOverGround; TrueHeading = trueHeading; UtcSeconds = utcSeconds; VesselName = vesselName; ShipType = shipType; Bow = bow; Stern = stern; Port = port; Starboard = starboard; PositionFixType = positionFixType; RaimFlag = raimFlag; DataTerminalReady = dataTerminalReady; AssignedMode = assignedMode; Spare = spare; }
public void ThenNmeaAisStaticAndVoyageRelatedDataParser_PositionFixTypeIsUndefined(EpfdFixType epfd) { this.Then(parser => Assert.AreEqual(epfd, parser.PositionFixType)); }
public void ThenNmeaAisPositionReportExtendedClassBParser_PositionFixTypeIs(EpfdFixType epfd) { this.Then(parser => Assert.AreEqual(epfd, parser.PositionFixType)); }