public void BuildVSTTest(out ITest[] T, string testMode, string strWaveform, string strWaveformName, S_NoiseConfig[] noiseConfig) { /// A quick note about broadcasting a configuration.. /// Broadcast will over-write pre-existing configuration data. /// That is why I broadcast first then configure triggers and broadcast the waveform. /// Iterate through the sites and change a configuration parameter to preserve existing settings. s_SignalType value = new s_SignalType(); Get_s_SignalType(strWaveform, strWaveformName, out value); switch (testMode.ToUpper()) { case "NOISE": T = BuildNFTest(strWaveform, strWaveformName, noiseConfig); break; case "CONTACT": T = BuildContactTest(noiseConfig); break; case "POWERSERVO": T = BuildPwrServoTest(strWaveform, strWaveformName, noiseConfig); break; default: throw new Exception("Not such a test mode! >> " + testMode.ToUpper()); } }
public void Get_s_SignalType(string strWaveform, string strWaveformName, out s_SignalType value) { //Get the all value from 'struct s_SignalType' NoiseFloorWaveformMode ModulationType; ModulationType = (NoiseFloorWaveformMode)Enum.Parse(typeof(NoiseFloorWaveformMode), strWaveformName.ToUpper()); int arrayNo = (int)Enum.Parse(ModulationType.GetType(), ModulationType.ToString()); //to get the int value from System.Enum value = NF_VSTDriver.SignalType[arrayNo]; }
public PowerServoTest[] BuildPwrServoTest(string strWaveform, string strWaveformName, S_NoiseConfig[] noiseConfig) { var pwrServoSite = new PowerServoTest[testSite]; for (int i = 0; i < testSite; i++) { #region Load waveform (CW or from file) ComplexDouble[] iqDataArr; s_SignalType value = new s_SignalType(); Get_s_SignalType(strWaveform, strWaveformName, out value); if (value.signalMode == "CW") { iqDataCW_Array(out iqDataArr); } else { iqData_Array(value.SG_IPath, value.SG_QPath, out iqDataArr); } var iqWaveform = ComplexWaveform <ComplexDouble> .FromArray1D(iqDataArr); iqWaveform.PrecisionTiming = PrecisionWaveformTiming.CreateWithRegularInterval(new PrecisionTimeSpan(1 / value.SG_IQRate)); #endregion //pass configuration to Contact global config pwrServoSite[i] = new PowerServoTest( VST[i], waveformName: strWaveformName, waveform: iqWaveform, centerFrequency: noiseConfig[i].TXFrequencyStart, powerLevel: noiseConfig[i].SGPowerLevel ); } return(pwrServoSite); }
public NoiseFloorTest[] BuildNFTest(string strWaveform, string strWaveformName, S_NoiseConfig[] noiseConfig) { var nfSite = new NoiseFloorTest[testSite]; for (int i = 0; i < testSite; i++) { #region decode and re-arrange multiple bandwidth (Ascending) int multiRBW_cnt = 0; int bw_cnt = 0; double[] multiRBW_Hz = new double[noiseConfig[i].Bandwidths.Length]; Array.Sort(noiseConfig[i].Bandwidths); foreach (double key in noiseConfig[i].Bandwidths) { multiRBW_Hz[bw_cnt] = Convert.ToDouble(key); bw_cnt++; } multiRBW_cnt = multiRBW_Hz.Length; noiseConfig[i].Rbw = multiRBW_Hz[multiRBW_cnt - 1]; //the largest RBW is the last in array #endregion #region Load waveform (CW or from file) ComplexDouble[] iqDataArr; s_SignalType value = new s_SignalType(); Get_s_SignalType(strWaveform, strWaveformName, out value); if (value.signalMode == "CW") { iqDataCW_Array(out iqDataArr); } else { iqData_Array(value.SG_IPath, value.SG_QPath, out iqDataArr); } var iqWaveform = ComplexWaveform <ComplexDouble> .FromArray1D(iqDataArr); iqWaveform.PrecisionTiming = PrecisionWaveformTiming.CreateWithRegularInterval(new PrecisionTimeSpan(1 / value.SG_IQRate)); #endregion //pass configuration to Contact global config nfSite[i] = new NoiseFloorTest( VST[i], waveformName: strWaveformName, waveform: iqWaveform, numberOfRuns: noiseConfig[i].NumberOfRuns, band: noiseConfig[i].Band, dwellTime: noiseConfig[i].DwellTime, soakTime: noiseConfig[i].SoakTime, soakFrequency: noiseConfig[i].TXFrequencyStart, preSoakSweep: noiseConfig[i].preSoakSweep, txStartFrequency: noiseConfig[i].TXFrequencyStart, txStopFrequency: noiseConfig[i].TXFrequencyStop, frequencyStep: noiseConfig[i].TXFrequencyStep, rxStartFrequency: noiseConfig[i].RXFrequencyStart, rxStopFrequency: noiseConfig[i].RXFrequencyStop, saReferenceLevel: noiseConfig[i].SAReferenceLevel, sgPowerLevel: noiseConfig[i].SGPowerLevel, vbw: noiseConfig[i].Vbw ); nfSite[i].bandwidths = multiRBW_Hz; } return(nfSite); }