public void setCalibration(GainCalibration c) { if (c.coefficients.Length != gainCalibrationCoefficients) throw new Exception("Coefficients not of correct length!"); this.gainCalibration.Add(c); }
public void setCalibration(GainCalibration c) { if (c.coefficients.Length != gainCalibrationCoefficients) { throw new Exception("Coefficients not of correct length!"); } this.gainCalibration.Add(c); }
void Download() { int size = Marshal.SizeOf(typeof(Map)); byte[] romContents = new byte[size]; uint maxReadLength = 11; for (uint byteOffset = 0; byteOffset < size;) { uint readLength = (uint)Math.Min(maxReadLength, size - byteOffset); byte[] tmp; hwInterface.GetControllerRegister(ScopeController.FLASH, byteOffset, readLength, out tmp); Array.Copy(tmp, 0, romContents, byteOffset, readLength); byteOffset += readLength; } Map m = BytesToMap(romContents); this.plugCount = m.plugCount; this.AdcTimingValue = m.adcTimingValue; this.gainCalibration = new List <GainCalibration>(); int offset = 0; foreach (AnalogChannel ch in AnalogChannel.List) { foreach (double divider in SmartScope.validDividers) { foreach (double multiplier in SmartScope.validMultipliers) { GainCalibration c = new GainCalibration() { channel = ch, divider = divider, multiplier = multiplier }; double[] coeff = new double[gainCalibrationCoefficients]; unsafe { for (int i = 0; i < coeff.Length; i++) { coeff[i] = (double)m.gainCalibration[offset + i]; } } c.coefficients = coeff; offset += coeff.Length; this.gainCalibration.Add(c); } } } computeDividersMultipliers(); this.frequencyResponse = new List <FrequencyResponse>(); int magnitudesOffset = 0; int phasesOffset = 0; foreach (AnalogChannel ch in AnalogChannel.List) { foreach (double multiplier in SmartScope.validMultipliers) { try { FrequencyResponse f = new FrequencyResponse() { channel = ch, multiplier = multiplier, phases = new Dictionary <int, float>(), magnitudes = new Dictionary <int, float>() }; unsafe { for (int i = 0; i < frequencyResponsePhases; i++) { f.phases.Add(m.phasesIndices[phasesOffset + i], m.phases[phasesOffset + i]); } phasesOffset += frequencyResponsePhases; for (int i = 0; i < frequencyResponseMagnitudes; i++) { f.magnitudes.Add(m.magnitudesIndices[magnitudesOffset + i], m.magnitudes[magnitudesOffset + i]); } magnitudesOffset += frequencyResponseMagnitudes; } this.frequencyResponse.Add(f); } catch (ArgumentException e) { Logger.Warn(String.Format("Failed to load frequency response from ROM for channel {0:G} and multiplier {1} [{2}]", ch, multiplier, e.Message)); } } } }
void Download() { int size = Marshal.SizeOf(typeof(Map)); byte[] romContents = new byte[size]; uint maxReadLength = 11; for (uint byteOffset = 0; byteOffset < size; ) { uint readLength = (uint)Math.Min(maxReadLength, size - byteOffset); byte[] tmp; hwInterface.GetControllerRegister(ScopeController.FLASH, byteOffset, readLength, out tmp); Array.Copy(tmp, 0, romContents, byteOffset, readLength); byteOffset += readLength; } Map m = BytesToMap(romContents); this.plugCount = m.plugCount; this.AdcTimingValue = m.adcTimingValue; this.gainCalibration = new List<GainCalibration>(); int offset = 0; foreach (AnalogChannel ch in AnalogChannel.List) { foreach (double divider in SmartScope.validDividers) { foreach (double multiplier in SmartScope.validMultipliers) { GainCalibration c = new GainCalibration() { channel = ch, divider = divider, multiplier = multiplier }; double[] coeff = new double[gainCalibrationCoefficients]; unsafe { for (int i = 0; i < coeff.Length; i++) coeff[i] = (double)m.gainCalibration[offset + i]; } c.coefficients = coeff; offset += coeff.Length; this.gainCalibration.Add(c); } } } computeDividersMultipliers(); this.frequencyResponse = new List<FrequencyResponse>(); int magnitudesOffset = 0; int phasesOffset = 0; foreach (AnalogChannel ch in AnalogChannel.List) { foreach (double multiplier in SmartScope.validMultipliers) { try { FrequencyResponse f = new FrequencyResponse() { channel = ch, multiplier = multiplier, phases = new Dictionary<int, float>(), magnitudes = new Dictionary<int, float>() }; unsafe { for (int i = 0; i < frequencyResponsePhases; i++) f.phases.Add(m.phasesIndices[phasesOffset + i], m.phases[phasesOffset + i]); phasesOffset += frequencyResponsePhases; for (int i = 0; i < frequencyResponseMagnitudes; i++) f.magnitudes.Add(m.magnitudesIndices[magnitudesOffset + i], m.magnitudes[magnitudesOffset + i]); magnitudesOffset += frequencyResponseMagnitudes; } this.frequencyResponse.Add(f); } catch (ArgumentException e) { Logger.Warn(String.Format("Failed to load frequency response from ROM for channel {0:G} and multiplier {1} [{2}]", ch, multiplier, e.Message)); } } } }