Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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));
 }