Ejemplo n.º 1
0
        public void DecodePd0Test()
        {
            Pd0FixedLeader fl = new Pd0FixedLeader();
            Pd0VariableLeader vl = new Pd0VariableLeader();

            vl.EnsembleNumber = 345;
            fl.NumberOfCells = 30;
            fl.NumberOfBeams = 4;
            fl.PingsPerEnsemble = 5;
            fl.CpuBoardSerialNumber = "01000000000000000000000000000001";
            fl.CpuFirmwareVersion = 3;
            fl.CpuFirmwareRevision = 27;
            fl.SetSystemFrequency(Pd0FixedLeader.SystemFrequency.Freq_300kHz);
            vl.RtcYear = 14;
            vl.RtcMonth = 3;
            vl.RtcDay = 2;
            vl.RtcHour = 4;
            vl.RtcMinute = 3;
            vl.RtcSecond = 2;
            vl.RtcHundredths = 3;

            DataSet.EnsembleDataSet ens = new DataSet.EnsembleDataSet(DataSet.Ensemble.DATATYPE_INT,                         // Type of data stored (Float or Int)
                                            30,                                             // Number of bins
                                            4,                                              // Number of beams
                                            DataSet.Ensemble.DEFAULT_IMAG,                  // Default Image
                                            DataSet.Ensemble.DEFAULT_NAME_LENGTH,           // Default Image length
                                            DataSet.Ensemble.EnsembleDataID, 30, 4);               // Dataset ID
            ens.DecodePd0Ensemble(fl, vl);

            Assert.AreEqual(345, ens.EnsembleNumber, "Ensemble Number is incorrect.");
            Assert.AreEqual(30, ens.NumBins, "Number of bins is incorrect.");
            Assert.AreEqual(4, ens.NumBeams, "Number of beams is incorrect.");
            Assert.AreEqual(5, ens.DesiredPingCount, "Desired Ping count is incorrect.");
            Assert.AreEqual(5, ens.ActualPingCount, "Actual ping count is incorrect.");
            Assert.AreEqual("01400000000000000000000000000001", ens.SysSerialNumber.ToString(), "Serial number is incorrect.");
            Assert.AreEqual(0, ens.SysFirmware.FirmwareMajor, "Firmware major is incorrect.");
            Assert.AreEqual(3, ens.SysFirmware.FirmwareMinor, "Firmware minor is incorrect.");
            Assert.AreEqual(27, ens.SysFirmware.FirmwareRevision, "Firmware revision is incorrect.");
            Assert.AreEqual(Subsystem.SUB_300KHZ_4BEAM_20DEG_PISTON_4, ens.SubsystemConfig.SubSystem.Code, "Subsystem is incorrect.");
            Assert.AreEqual(2014, ens.Year, "Year is incorrect.");
            Assert.AreEqual(3, ens.Month, "Month is incorrect.");
            Assert.AreEqual(2, ens.Day, "Days is incorrect.");
            Assert.AreEqual(4, ens.Hour, "Hour is incorrect.");
            Assert.AreEqual(3, ens.Minute, "Minute is incorrect.");
            Assert.AreEqual(2, ens.Second, "Seconds is incorrect.");
            Assert.AreEqual(3, ens.HSec, "HSec is incorrect.");
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Convert the RTI Ancillary and Ensemble data set to the PD0 Fixed Leader data type.
        /// </summary>
        /// <param name="ens">RTI Ensemble data set.</param>
        /// <param name="anc">RTI Ancillary data set.</param>
        /// <param name="sysSetup">SystemSetup data set.</param>
        /// <param name="xform">Coordinate Transform.</param>
        public void DecodeRtiEnsemble(DataSet.EnsembleDataSet ens, DataSet.AncillaryDataSet anc, DataSet.SystemSetupDataSet sysSetup, PD0.CoordinateTransforms xform)
        {
            // Ensure the values were given, or create default values
            if (ens == null)
            {
                ens = new DataSet.EnsembleDataSet();
            }
            if (anc == null)
            {
                anc = new DataSet.AncillaryDataSet();
            }
            if (sysSetup == null)
            {
                sysSetup = new DataSet.SystemSetupDataSet();
            }

            CpuFirmwareVersion = (byte)ens.SysFirmware.FirmwareMinor;                           // Firmware Major
            CpuFirmwareRevision = (byte)ens.SysFirmware.FirmwareRevision;                          // Firmware Minor

            switch(ens.SubsystemConfig.SubSystem.GetSystemFrequency())
            {
                case Subsystem.SystemFrequency.Freq_75kHz:
                    SetSystemFrequency(SystemFrequency.Freq_75kHz);                             // 75 kHz
                    Set30DegreeBeamAngle();                                                     // 30 Degree Beam Angle
                    SetBeamConfiguration(BeamConfigs.BeamConfig_4_Beam_Janus);                  // 4 Beam Janus
                    SetConvex();                                                                // Set Convex
                    SetSensorConfig1();                                                         // Set Sensor Config 1
                    SetHeadAttached();                                                          // Set Head Attached
                    break;
                case Subsystem.SystemFrequency.Freq_150kHz:
                    SetSystemFrequency(SystemFrequency.Freq_150kHz);                            // 150 kHz
                    Set30DegreeBeamAngle();                                                     // 20 Degree Beam Angle
                    SetBeamConfiguration(BeamConfigs.BeamConfig_4_Beam_Janus);                  // 4 Beam Janus
                    SetConvex();                                                                // Set Convex
                    SetSensorConfig1();                                                         // Set Sensor Config 1
                    SetHeadAttached();                                                          // Set Head Attached
                    break;
                case Subsystem.SystemFrequency.Freq_300kHz:
                    SetSystemFrequency(SystemFrequency.Freq_300kHz);                            // 300 kHz
                    Set20DegreeBeamAngle();                                                     // 20 Degree Beam Angle
                    SetBeamConfiguration(BeamConfigs.BeamConfig_4_Beam_Janus);                  // 4 Beam Janus
                    SetConvex();                                                                // Set Convex
                    SetSensorConfig1();                                                         // Set Sensor Config 1
                    SetHeadAttached();                                                          // Set Head Attached
                    break;
                case Subsystem.SystemFrequency.Freq_600kHz:
                    SetSystemFrequency(SystemFrequency.Freq_600kHz);                            // 600 kHz
                    Set20DegreeBeamAngle();                                                     // 20 Degree Beam Angle
                    SetBeamConfiguration(BeamConfigs.BeamConfig_4_Beam_Janus);                  // 4 Beam Janus
                    SetConvex();                                                                // Set Convex
                    SetSensorConfig1();                                                         // Set Sensor Config 1
                    SetHeadAttached();                                                          // Set Head Attached
                    break;
                case Subsystem.SystemFrequency.Freq_1200kHz:
                    SetSystemFrequency(SystemFrequency.Freq_1200kHz);                           // 1200 kHz
                    Set20DegreeBeamAngle();                                                     // 20 Degree Beam Angle
                    SetBeamConfiguration(BeamConfigs.BeamConfig_4_Beam_Janus);                  // 4 Beam Janus
                    SetConvex();                                                                // Set Convex
                    SetSensorConfig1();                                                         // Set Sensor Config 1
                    SetHeadAttached();                                                          // Set Head Attached
                    break;
                case Subsystem.SystemFrequency.Freq_2000kHz:
                    SetSystemFrequency(SystemFrequency.Freq_2400kHz);                           // 2400 kHz
                    Set20DegreeBeamAngle();                                                     // 20 Degree Beam Angle
                    SetBeamConfiguration(BeamConfigs.BeamConfig_4_Beam_Janus);                  // 4 Beam Janus
                    SetConvex();                                                                // Set Convex
                    SetSensorConfig1();                                                         // Set Sensor Config 1
                    SetHeadAttached();                                                          // Set Head Attached
                    break;
                case Subsystem.SystemFrequency.Freq_38kHz:
                default:
                    break;
            }

            if (anc.Roll < 90 && anc.Roll > -90)
            {
                SetBeamsUpward();                                                               // Set Beams Upward
            }
            else
            {
                SetBeamsDownward();                                                             // Set Beams Downward
            }

            RealSimFlag = false;
            LagLength = 0;                                                                      // Lag Length
            NumberOfBeams = (byte)ens.NumBeams;                                                 // Number of Beams
            NumberOfCells = (byte)ens.NumBins;                                                  // Number of bins
            PingsPerEnsemble = (ushort)ens.ActualPingCount;                                     // Pings per ensemble
            DepthCellLength = (ushort)Math.Round(anc.BinSize * 100);                            // Depth Cell length
            BlankAfterTransmit = 0;                                                             // Blank - CWPBL - Do not have enough info
            ProfilingMode = 0;                                                                  // Signal Processing Mode - CWPBB - Do not have enough info
            LowCorrThresh = 0;                                                                  // Low Correlation Threshold - CWPCT - Do not have enough info
            NumCodeRepeats = (byte)sysSetup.WpRepeatN;                                          // Number of Code Repeats
            PercentGoodMinimum = 0;                                                             // Percent Good Minimum - Do not have enough info
            ErrorVelMaximum = 0;                                                                // Error Velocity Maximum - Do not have enough info
            TimeBetweenPingMinutes = 0;                                                         // Time Between Pings Minutes - CWPTBP - Do not have enough info
            TimeBetweenPingSeconds = 0;                                                         // Time Between Pings Seconds - CWPTBP - Do not have enough info
            TimeBetweenPingHundredths = 0;                                                      // Time Between Pings Hundredths -CWPTBP - Do not have enough info

            SetCoordinateTransform(xform);                                                      // Set Coordinate Transform

            HeadingAlignment = 0;                                                               // Heading alignment
            HeadingBias = 0;                                                                    // Heading Bias
            SensorSource = 0x5d;                                                                // Sensor Source
            SensorsAvailable = 0x5d;                                                            // Sensors Available
            Bin1Distance = (ushort)Math.Round(anc.FirstBinRange * 100);                         // Bin 1 distance
            XmitPulseLength = 0;                                                                // Transmit Pulse Length - Do not have enough info
            ReferenceLayerAverageStartCell = 0;                                                 // Reference Layer Average Start Cell - Do not have enough info
            ReferenceLayerAverageEndCell = 0;                                                   // Reference Layer Average End Cell - Do not have enough info
            FalseTargetThresh = 0;                                                              // False Target Threshold
            Spare_40 = 0xFE;                                                                    // Spare
            TransmitLagDistance = 0;                                                            // Lag Distance - CWPLL - Do not have enough info
            CpuBoardSerialNumber = ens.SysSerialNumber.ToString();                              // CPU Board Serial Number
            SystemBandwidth = 12;                                                               // System Bandwidth
            SystemPower = 0;                                                                    // System Power
            BaseFrequencyIndex = 0;                                                             // Base Frequency Index
            BeamAngle = 0;                                                                      // Beam Angle
        }
Ejemplo n.º 3
0
        public void TestJson()
        {
            // Generate an Ensemble
            DataSet.Ensemble ensemble = EnsembleHelper.GenerateEnsemble(30);

            // Modify the data
            ensemble.EnsembleData.EnsembleNumber   = 1222;
            ensemble.EnsembleData.NumBins          = 30;
            ensemble.EnsembleData.NumBeams         = 4;
            ensemble.EnsembleData.DesiredPingCount = 2;
            ensemble.EnsembleData.ActualPingCount  = 2;
            ensemble.EnsembleData.SysSerialNumber  = new SerialNumber("01300000000000000000000000000001");
            ensemble.EnsembleData.SysFirmware      = new Firmware(Subsystem.SUB_600KHZ_4BEAM_20DEG_PISTON_3, 0, 2, 3);
            ensemble.EnsembleData.SubsystemConfig  = new SubsystemConfiguration(new Subsystem(Subsystem.SUB_600KHZ_4BEAM_20DEG_PISTON_3), 2, 2);
            ensemble.EnsembleData.Status           = new Status(1);
            ensemble.EnsembleData.Year             = DateTime.Now.Year;
            ensemble.EnsembleData.Month            = DateTime.Now.Month;
            ensemble.EnsembleData.Day         = DateTime.Now.Day;
            ensemble.EnsembleData.Hour        = DateTime.Now.Hour;
            ensemble.EnsembleData.Minute      = DateTime.Now.Minute;
            ensemble.EnsembleData.Second      = DateTime.Now.Second;
            ensemble.EnsembleData.HSec        = 22;
            ensemble.EnsembleData.EnsDateTime = DateTime.Now;
            ensemble.EnsembleData.UniqueId    = new DataSet.UniqueID(ensemble.EnsembleData.EnsembleNumber, ensemble.EnsembleData.EnsDateTime);

            string encoded = Newtonsoft.Json.JsonConvert.SerializeObject(ensemble.EnsembleData);                                      // Serialize object to JSON

            DataSet.EnsembleDataSet decoded = Newtonsoft.Json.JsonConvert.DeserializeObject <DataSet.EnsembleDataSet>(encoded);       // Deserialize the JSON

            // Verify the values are the same
            Assert.AreEqual(1222, decoded.EnsembleNumber, "EnsembleNumber is incorrect.");
            Assert.AreEqual(30, decoded.NumBins, "NumBins is incorrect.");
            Assert.AreEqual(4, decoded.NumBeams, "NumBeams is incorrect.");
            Assert.AreEqual(2, decoded.DesiredPingCount, "DesiredPingCount is incorrect.");
            Assert.AreEqual(2, decoded.ActualPingCount, "ActualPingCount is incorrect.");
            Assert.AreEqual(new SerialNumber("01300000000000000000000000000001"), decoded.SysSerialNumber, "SysSerialNumber is incorrect.");
            Assert.AreEqual(1, decoded.SysSerialNumber.SystemSerialNumber, "Serial number is incorrect.");
            Assert.AreEqual("300000000000000", decoded.SysSerialNumber.SubSystems, "Subsystems are incorrect.");
            Assert.AreEqual(1, decoded.SysSerialNumber.SubSystemsList.Count, "Subsystem count is incorrect.");
            Assert.AreEqual(new Firmware(Subsystem.SUB_600KHZ_4BEAM_20DEG_PISTON_3, 0, 2, 3), decoded.SysFirmware, "SysFirmware is incorrect.");
            Assert.AreEqual(0, decoded.SysFirmware.FirmwareMajor, "Firmware Major is incorrect.");
            Assert.AreEqual(2, decoded.SysFirmware.FirmwareMinor, "Firmware Minor is incorrect.");
            Assert.AreEqual(3, decoded.SysFirmware.FirmwareRevision, "Firmware Revision is incorrect.");
            Assert.AreEqual(Subsystem.SUB_600KHZ_4BEAM_20DEG_PISTON_3, decoded.SysFirmware.GetSubsystemCode(decoded.SysSerialNumber), "Firmware Subsystem code is incorrect.");
            Assert.AreEqual(2, decoded.SubsystemConfig.CepoIndex, "SubsystemConfig config number is incorrect.");
            Assert.AreEqual(Subsystem.SUB_600KHZ_4BEAM_20DEG_PISTON_3, decoded.SubsystemConfig.SubSystem.Code, "SubsystemConfig Subsystem code is incorrect.");
            Assert.AreEqual(new Subsystem(Subsystem.SUB_600KHZ_4BEAM_20DEG_PISTON_3), decoded.SysFirmware.GetSubsystem(decoded.SysSerialNumber), "SysFirmware GetSubsystem is incorrect.");
            Assert.AreEqual(Subsystem.SUB_600KHZ_4BEAM_20DEG_PISTON_3, decoded.SysFirmware.GetSubsystemCode(decoded.SysSerialNumber), "Firmware SubsystemCode is incorrect.");
            Assert.AreEqual(Subsystem.SUB_600KHZ_4BEAM_20DEG_PISTON_3, decoded.SubsystemConfig.SubSystem.Code, "SubsystemConfig Subystem Code is incorrect.");
            Assert.AreEqual(DateTime.Now.Year, decoded.EnsDateTime.Year, "EnsDateTime Year is incorrect.");
            Assert.AreEqual(DateTime.Now.Year, decoded.Year, "Year is incorrect.");
            Assert.AreEqual(DateTime.Now.Month, decoded.EnsDateTime.Month, "EnsDateTime Month is incorrect.");
            Assert.AreEqual(DateTime.Now.Month, decoded.Month, "Month is incorrect.");
            Assert.AreEqual(DateTime.Now.Day, decoded.EnsDateTime.Day, "EnsDateTime Day is incorrect.");
            Assert.AreEqual(DateTime.Now.Day, decoded.Day, "Day is incorrect.");
            Assert.AreEqual(DateTime.Now.Hour, decoded.EnsDateTime.Hour, "EnsDateTime Hour is incorrect.");
            Assert.AreEqual(DateTime.Now.Hour, decoded.Hour, "Hour is incorrect.");
            Assert.AreEqual(DateTime.Now.Minute, decoded.EnsDateTime.Minute, "EnsDateTime Minute is incorrect.");
            Assert.AreEqual(DateTime.Now.Minute, decoded.Minute, "Minute is incorrect.");
            Assert.AreEqual(DateTime.Now.Second, decoded.EnsDateTime.Second, "EnsDateTime Second is incorrect.");
            Assert.AreEqual(DateTime.Now.Second, decoded.Second, "Second is incorrect.");
            Assert.AreEqual(new DataSet.UniqueID(ensemble.EnsembleData.EnsembleNumber, ensemble.EnsembleData.EnsDateTime), decoded.UniqueId, "UniqueID is incorrect.");
        }