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."); }
/// <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 }
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."); }