/// <summary> /// Subclasses need to override with their own parsing method /// </summary> /// <param name="sixState"></param> /// <exception cref="SixbitsExhaustedException"></exception> /// <exception cref="AisMessageException"></exception> public override void Parse(Sixbit sixState) { if (sixState.BitLength != 312) { throw new AisMessageException("Message 19 wrong length"); } base.Parse(sixState); Regional1 = (int)sixState.Get(8); Sog = (int)sixState.Get(10); PosAcc = (int)sixState.Get(1); Pos = new Position { Longitude = sixState.Get(28), Latitude = sixState.Get(27) }; Cog = (int)sixState.Get(12); TrueHeading = (int)sixState.Get(9); UtcSec = (int)sixState.Get(6); Regional2 = (int)sixState.Get(4); Name = sixState.GetString(20); ShipType = (int)sixState.Get(8); DimBow = (int)sixState.Get(9); DimStern = (int)sixState.Get(9); DimPort = (int)sixState.Get(6); DimStarboard = (int)sixState.Get(6); PosType = (int)sixState.Get(4); Raim = (int)sixState.Get(1); Dte = (int)sixState.Get(1); Spare = (int)sixState.Get(5); }
/// <summary> /// Subclasses need to override with their own parsing method /// </summary> /// <param name="sixState"></param> /// <exception cref="SixbitsExhaustedException"></exception> /// <exception cref="AisMessageException"></exception> public override void Parse(Sixbit sixState) { var length = sixState.BitLength; if (length != 160 && length != 168) { throw new AisMessageException("Message 24 wrong length"); } base.Parse(sixState); PartNumber = (int)sixState.Get(2); if (PartNumber == 0) { /* Parse 24A */ /* Get the Ship Name, convert to ASCII */ Name = sixState.GetString(20); /* Indicate reception of part A */ Flags |= 0x01; } else if (PartNumber == 1) { /* Parse 24B */ ShipType = (int)sixState.Get(8); VendorId = sixState.GetString(7); Callsign = sixState.GetString(7); DimBow = (int)sixState.Get(9); DimStern = (int)sixState.Get(9); DimPort = (int)sixState.Get(6); DimStarboard = (int)sixState.Get(6); Spare = (int)sixState.Get(6); /* Indicate reception of part A */ Flags |= 0x02; } else { throw new AisMessageException("Unknown Message 24 Part #"); } }
/// <summary> /// Subclasses need to override with their own parsing method /// </summary> /// <param name="sixState"></param> /// <exception cref="SixbitsExhaustedException"></exception> /// <exception cref="AisMessageException"></exception> public override void Parse(Sixbit sixState) { var length = sixState.BitLength; if (length < 272 || length > 360) { throw new AisMessageException("Message 21 wrong length"); } base.Parse(sixState); AtonType = (int)sixState.Get(5); Name = sixState.GetString(20); PosAcc = (int)sixState.Get(1); Pos = new Position { Longitude = sixState.Get(28), Latitude = sixState.Get(27) }; DimBow = (int)sixState.Get(9); DimStern = (int)sixState.Get(9); DimPort = (int)sixState.Get(6); DimStarboard = (int)sixState.Get(6); PosType = (int)sixState.Get(4); UtcSec = (int)sixState.Get(6); OffPosition = (int)sixState.Get(1); Regional = (int)sixState.Get(8); Raim = (int)sixState.Get(1); VirtualRenamed = (int)sixState.Get(1); Assigned = (int)sixState.Get(1); Spare1 = (int)sixState.Get(1); if (length > 272) { NameExt = sixState.GetString((length - 272) / 6); } }
/// <summary> /// Subclasses need to override with their own parsing method /// </summary> /// <param name="sixState"></param> /// <exception cref="SixbitsExhaustedException"></exception> /// <exception cref="AisMessageException"></exception> public override void Parse(Sixbit sixState) { if (sixState.BitLength != 424) { throw new AisMessageException("Message 5 wrong length"); } base.Parse(sixState); Version = (int)sixState.Get(2); Imo = sixState.Get(30); Callsign = sixState.GetString(7); Name = sixState.GetString(20); ShipType = (int)sixState.Get(8); DimBow = (int)sixState.Get(9); DimStern = (int)sixState.Get(9); DimPort = (int)sixState.Get(6); DimStarboard = (int)sixState.Get(6); PosType = (int)sixState.Get(4); Eta = sixState.Get(20); Draught = (int)sixState.Get(8); Dest = sixState.GetString(20); }
/// <summary> /// Subclasses need to override with their own parsing method /// </summary> /// <param name="sixState"></param> /// <exception cref="SixbitsExhaustedException"></exception> /// <exception cref="AisMessageException"></exception> public override void Parse(Sixbit sixState) { var length = sixState.BitLength; if (length < 40 || length > 1008) { throw new AisMessageException("Message 14 wrong length"); } base.Parse(sixState); Spare = (int)sixState.Get(2); Message = sixState.GetString((length - 40) / 6); }
/// <summary> /// Subclasses need to override with their own parsing method /// </summary> /// <param name="sixState"></param> /// <exception cref="SixbitsExhaustedException"></exception> /// <exception cref="AisMessageException"></exception> public override void Parse(Sixbit sixState) { var length = sixState.BitLength; if (length < 72 || length > 1008) { throw new AisMessageException("Message 12 wrong length"); } base.Parse(sixState); Sequence = (int)sixState.Get(2); Destination = sixState.Get(30); Retransmit = (int)sixState.Get(1); Spare = (int)sixState.Get(1); Message = sixState.GetString((length - 72) / 6); }