protected StaticDataReportMessage(StaticDataReportMessage message)
     : this()
 {
     Repeat     = message.Repeat;
     Mmsi       = message.Mmsi;
     PartNumber = message.PartNumber;
 }
        public static AisMessage Create(Payload payload)
        {
            var message = new StaticDataReportMessage(payload);

            if (message.PartNumber == 0)
            {
                return(new StaticDataReportPartAMessage(message, payload));
            }

            return(new StaticDataReportPartBMessage(message, payload));
        }
Example #3
0
        public StaticDataReportPartBMessage(StaticDataReportMessage message, Payload payload)
            : base(message)
        {
            ShipType      = payload.ReadEnum <ShipType>(40, 8);
            VendorId      = payload.ReadString(48, 18);
            UnitModelCode = payload.ReadUInt(66, 4);
            SerialNumber  = payload.ReadUInt(70, 20);
            CallSign      = payload.ReadString(90, 42);

            // TODO: handle MMSI auxiliary craft
            //MothershipMmsi = payload.ReadUInt(132, 30);

            DimensionToBow       = payload.ReadUInt(132, 9);
            DimensionToStern     = payload.ReadUInt(141, 9);
            DimensionToPort      = payload.ReadUInt(150, 6);
            DimensionToStarboard = payload.ReadUInt(156, 6);
            Spare = payload.ReadUInt(162, 6);
        }
Example #4
0
 public StaticDataReportPartAMessage(StaticDataReportMessage message, Payload payload)
     : base(message)
 {
     ShipName = payload.ReadString(40, 120);
     Spare    = payload.ReadUInt(160, 8);
 }
Example #5
0
        public AisMessage?Create(Payload payload)
        {
            switch (payload.MessageType)
            {
            case 0:
            case AisMessageType.PositionReportClassA:
                return(new PositionReportClassAMessage(payload));

            case AisMessageType.PositionReportClassAAssignedSchedule:
                return(new PositionReportClassAAssignedScheduleMessage(payload));

            case AisMessageType.PositionReportClassAResponseToInterrogation:
                return(new PositionReportClassAResponseToInterrogationMessage(payload));

            case AisMessageType.BaseStationReport:
                return(new BaseStationReportMessage(payload));

            case AisMessageType.StaticAndVoyageRelatedData:
                return(new StaticAndVoyageRelatedDataMessage(payload));

            case AisMessageType.BinaryAddressedMessage:
                return(new BinaryAddressedMessage(payload));

            case AisMessageType.BinaryAcknowledge:
                return(new BinaryAcknowledgeMessage(payload));

            case AisMessageType.BinaryBroadcastMessage:
                return(new BinaryBroadcastMessage(payload));

            case AisMessageType.StandardSarAircraftPositionReport:
                return(new StandardSarAircraftPositionReportMessage(payload));

            case AisMessageType.UtcAndDateInquiry:
                return(new UtcAndDateInquiryMessage(payload));

            case AisMessageType.UtcAndDateResponse:
                return(new UtcAndDateResponseMessage(payload));

            case AisMessageType.AddressedSafetyRelatedMessage:
                return(new AddressedSafetyRelatedMessage(payload));

            case AisMessageType.SafetyRelatedAcknowledgement:
                return(new SafetyRelatedAcknowledgementMessage(payload));

            //case AisMessageType.SafetyRelatedBroadcastMessage:
            case AisMessageType.Interrogation:
                return(new InterrogationMessage(payload));

            //case AisMessageType.AssignmentModeCommand:
            //case AisMessageType.DgnssBinaryBroadcastMessage:
            case AisMessageType.StandardClassBCsPositionReport:
                return(new StandardClassBCsPositionReportMessage(payload));

            case AisMessageType.ExtendedClassBCsPositionReport:
                return(new ExtendedClassBCsPositionReportMessage(payload));

            case AisMessageType.DataLinkManagement:
                return(new DataLinkManagementMessage(payload));

            case AisMessageType.AidToNavigationReport:
                return(new AidToNavigationReportMessage(payload));

            //case AisMessageType.ChannelManagement:
            //case AisMessageType.GroupAssignmentCommand:
            case AisMessageType.StaticDataReport:
                return(StaticDataReportMessage.Create(payload));

            //case AisMessageType.SingleSlotBinaryMessage:
            //case AisMessageType.MultipleSlotBinaryMessageWithCommunicationsState:
            case AisMessageType.PositionReportForLongRangeApplications:
                return(new PositionReportForLongRangeApplicationsMessage(payload));

            //TODO: 30
            //TODO: 31
            //TODO: 32
            //TODO: 40
            //TODO: 47
            //TODO: 51
            //TODO: 57
            default:
                return(null);
                //throw new AisMessageException($"Unrecognised message type: {payload.MessageType}");
            }
        }