Exemple #1
0
        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());
            }
        }
Exemple #2
0
        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);
        }
Exemple #4
0
        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);
        }