private void PublishResults(PseudoResult result) { // Turn results into output measurements Measurement[] measurements = new Measurement[Outputs.Length]; foreach (Output output in Outputs) { int index = (int)output; switch (output) { case Output.Band1Energy: measurements[index] = Measurement.Clone(OutputMeasurements[index], result.Band1Energy, result.Timestamp); measurements[index].StateFlags = DeriveQualityFlags.From(result.Band1EnergyQualityIsGood, m_timeQualityIsGood); break; case Output.Band2Energy: measurements[index] = Measurement.Clone(OutputMeasurements[index], result.Band2Energy, result.Timestamp); measurements[index].StateFlags = DeriveQualityFlags.From(result.Band2EnergyQualityIsGood, m_timeQualityIsGood); break; case Output.Band3Energy: measurements[index] = Measurement.Clone(OutputMeasurements[index], result.Band3Energy, result.Timestamp); measurements[index].StateFlags = DeriveQualityFlags.From(result.Band3EnergyQualityIsGood, m_timeQualityIsGood); break; case Output.Band4Energy: measurements[index] = Measurement.Clone(OutputMeasurements[index], result.Band4Energy, result.Timestamp); measurements[index].StateFlags = DeriveQualityFlags.From(result.Band4EnergyQualityIsGood, m_timeQualityIsGood); break; default: throw new ArgumentOutOfRangeException(); } } m_publishMeasurements(measurements); }
public void Load(DateTime timestamp, double[,] values, bool[,] qualities) { PseudoResult result = new PseudoResult { Timestamp = timestamp }; for (int i = 0; i < values.GetLength(0); i++) { switch ((OscillationDetector.Output)i) { case OscillationDetector.Output.Band1Energy: result.Band1Energy = values.GetColumn(i).Average(); result.Band1EnergyQualityIsGood = qualities.GetColumn(i).All(state => state); break; case OscillationDetector.Output.Band2Energy: result.Band2Energy = values.GetColumn(i).Average(); result.Band2EnergyQualityIsGood = qualities.GetColumn(i).All(state => state); break; case OscillationDetector.Output.Band3Energy: result.Band3Energy = values.GetColumn(i).Average(); result.Band3EnergyQualityIsGood = qualities.GetColumn(i).All(state => state); break; case OscillationDetector.Output.Band4Energy: result.Band4Energy = values.GetColumn(i).Average(); result.Band4EnergyQualityIsGood = qualities.GetColumn(i).All(state => state); break; default: throw new ArgumentOutOfRangeException(); } } ReportCallback(result); }