예제 #1
0
        public static void Test(AUTD autd)
        {
            const double x = AUTD.TransSpacing * (AUTD.NumTransInX - 1) / 2.0;
            const double y = AUTD.TransSpacing * (AUTD.NumTransInY - 1) / 2.0;
            const double z = 150.0;

            var mod = Modulation.Sine(150);

            var center  = new Vector3d(x, y, z);
            var focuses = new[] {
                center + 20.0 * Vector3d.UnitX,
                center - 20.0 * Vector3d.UnitX
            };
            var amps = new[] {
                1.0,
                1.0
            };

            var backend = Gain.Eigen3Backend();
            var gain    = Gain.HoloSDP(focuses, amps, backend);

            autd.Send(gain, mod);

            Gain.DeleteBackend(backend);
        }
예제 #2
0
 /// <summary>
 /// Initialize a new instance of the TuningSpec class for a DVB cable frequency.
 /// </summary>
 /// <param name="frequency">The frequency to tune to.</param>
 public TuningSpec(CableFrequency frequency)
 {
     this.frequency = frequency;
     symbolRate     = frequency.SymbolRate;
     fec            = frequency.FEC;
     modulation     = frequency.Modulation;
 }
예제 #3
0
        public void PlaySoundEffectEndTransmit(int transmitOnRadio, float volume, Modulation modulation)
        {
            if (!_globalSettings.ProfileSettingsStore.GetClientSettingBool(ProfileSettingsKeys.RadioTxEffects_End))
            {
                return;
            }

            bool midsTone      = _globalSettings.ProfileSettingsStore.GetClientSettingBool(ProfileSettingsKeys.MIDSRadioEffect);
            var  _effectBuffer = _effectsOutputBuffer[transmitOnRadio];

            if (modulation == Modulation.MIDS && midsTone)
            {
                _effectBuffer.VolumeSampleProvider.Volume = volume;
                var effect = _cachedAudioEffectsProvider.MIDSEndTone;
                if (effect.Loaded)
                {
                    _effectBuffer.AddAudioSamples(
                        effect.AudioEffectBytes,
                        transmitOnRadio);
                }
            }
            else
            {
                _effectBuffer.VolumeSampleProvider.Volume = volume;
                var effect = _cachedAudioEffectsProvider.SelectedRadioTransmissionEndEffect;
                if (effect.Loaded)
                {
                    _effectBuffer.AddAudioSamples(
                        effect.AudioEffectBytes,
                        transmitOnRadio);
                }
            }
        }
        public void PlaySoundEffectEndTransmit(int transmitOnRadio, float volume, Modulation modulation)
        {
            if (!_globalSettings.ProfileSettingsStore.GetClientSettingBool(ProfileSettingsKeys.RadioTxEffects_End))
            {
                return;
            }

            bool midsTone      = _globalSettings.ProfileSettingsStore.GetClientSettingBool(ProfileSettingsKeys.MIDSRadioEffect);
            var  _effectBuffer = _effectsOutputBuffer[transmitOnRadio];

            if (modulation == Modulation.MIDS && midsTone)
            {
                _effectBuffer.VolumeSampleProvider.Volume = volume;
                _effectBuffer.AddAudioSamples(
                    _cachedAudioEffects[(int)CachedAudioEffect.AudioEffectTypes.MIDS_TX_END].AudioEffectBytes,
                    transmitOnRadio);
            }
            else
            {
                _effectBuffer.VolumeSampleProvider.Volume = volume;
                _effectBuffer.AddAudioSamples(
                    _cachedAudioEffects[(int)CachedAudioEffect.AudioEffectTypes.RADIO_RX].AudioEffectBytes,
                    transmitOnRadio);
            }
        }
예제 #5
0
        public static void Test(AUTD autd)
        {
            const double x = AUTD.DeviceWidth / 2;
            const double y = AUTD.DeviceHeight / 2;
            const double z = 150;

            var center = new Vector3d(x, y, z);

            var g1 = Gain.FocalPoint(center);

            var focuses = new[] {
                center + 30.0 * Vector3d.UnitX,
                center - 30.0 * Vector3d.UnitX
            };
            var amps = new[] {
                1.0,
                1.0
            };
            var backend = Gain.Eigen3Backend();
            var g2      = Gain.HoloGSPAT(focuses, amps, backend);

            var gainMap = new Dictionary <int, Gain>
            {
                [0] = g1,
                [1] = g2
            };
            var gain = Gain.Grouped(autd, gainMap);
            var mod  = Modulation.Sine(150); // AM sin 150 Hz

            autd.Send(gain, mod);

            Gain.DeleteBackend(backend);
        }
예제 #6
0
        public static void Test(AUTD autd)
        {
            autd.SilentMode = false;

            var delays = new byte[autd.NumDevices, AUTD.NumTransInDevice];

            delays[0, 0] = 4;
            autd.SetDelayOffset(delays, null);

            var uniform = new ushort[autd.NumDevices, AUTD.NumTransInDevice];

            for (var i = 0; i < autd.NumDevices; i++)
            {
                for (var j = 0; j < AUTD.NumTransInDevice; j++)
                {
                    uniform[i, j] = 0xFFFF;
                }
            }

            var burst = new byte[4000];

            burst[0] = 0xFF;

            var g = Gain.Custom(uniform);
            var m = Modulation.Custom(burst);

            autd.Send(g, m);
        }
예제 #7
0
        public static void Test(AUTD autd)
        {
            const double x = AUTD.DeviceWidth / 2;
            const double y = AUTD.DeviceHeight / 2;
            const double z = 150;

            autd.SilentMode = false;

            var mod = Modulation.Static();

            autd.Send(mod);

            var       center   = new Vector3d(x, y, z);
            var       seq      = PointSequence.Create();
            const int pointNum = 200;

            for (var i = 0; i < pointNum; i++)
            {
                const double radius = 30.0;
                var          theta  = 2.0 * Math.PI * i / pointNum;
                var          p      = radius * new Vector3d(Math.Cos(theta), Math.Sin(theta), 0);
                seq.AddPoint(center + p);
            }
            seq.Frequency = 1;
            Console.WriteLine($"Actual frequency is {seq.Frequency}");
            autd.Send(seq, mod);
        }
예제 #8
0
        public static void Test(AUTD autd)
        {
            const double x = AUTD.DeviceWidth / 2;
            const double y = AUTD.DeviceHeight / 2;
            const double z = 150.0;

            autd.SilentMode = false;

            var mod = Modulation.Static();

            autd.Send(mod);

            const double radius = 30.0;
            const int    size   = 100;
            var          center = new Vector3d(x, y, z);
            var          stm    = autd.STM();

            for (var i = 0; i < size; i++)
            {
                var theta = 2 * AUTD.Pi * i / size;
                var r     = new Vector3d(Math.Cos(theta), Math.Sin(theta), 0);
                var f     = Gain.FocalPoint(center + radius * r);
                stm.AddSTMGain(f);
            }
            stm.StartSTM(0.5);

            Console.WriteLine("press any key to stop...");
            Console.ReadKey(true);

            stm.StopSTM();
            stm.FinishSTM();
        }
예제 #9
0
        private void btnCreateSignal_Click(object sender, EventArgs e)
        {
            CheckSignalInputParams();

            Signal temp = CreatePropriateSignal(_selectedSignalIndex);

            if (_poligarmonicMode)
            {
                (temp as GarmonicSignal).Generate();

                (_signal as PoligarmonicSignal).AddSignal(temp);

                MessageBox.Show("Signal was added!");
                return;
            }
            else if (_modulationMode)
            {
                Modulation modulation = new Modulation(((sender as Control).Tag as IModulationMethod).Modulate);

                modulation((GarmonicSignal)_signal, (GarmonicSignal)temp);

                (_signal as GarmonicSignal).Generate();

                MessageBox.Show("Signal was modulated!");
                return;
            }

            (temp as GarmonicSignal).Generate();

            _signal = temp;

            MessageBox.Show("Created!");
            _signalWasCreated             = true;
            chckBoxModulationMode.Enabled = true;
        }
예제 #10
0
 /// <summary>
 /// Initialize a new instance of the TuningSpec class for a Clear QAM frequency.
 /// </summary>
 /// <param name="frequency">The frequency to tune to.</param>
 public TuningSpec(ClearQamFrequency frequency)
 {
     this.frequency = frequency;
     symbolRate     = frequency.SymbolRate;
     fec            = frequency.FEC;
     modulation     = frequency.Modulation;
     channelNumber  = frequency.ChannelNumber;
 }
예제 #11
0
 /// <summary>
 /// Initialize a new instance of the TuningSpec class for a DVB satellite frequency.
 /// </summary>
 /// <param name="satellite">The satellite to tune to.</param>
 /// <param name="frequency">The frequency to tune to.</param>
 public TuningSpec(Satellite satellite, SatelliteFrequency frequency)
 {
     this.frequency     = frequency;
     this.satellite     = satellite;
     symbolRate         = frequency.SymbolRate;
     fec                = frequency.FEC;
     signalPolarization = frequency.Polarization;
     modulation         = frequency.Modulation;
 }
예제 #12
0
 /// <summary>
 /// Initialize a new instance of the TuningSpec class for a DVB satellite frequency.
 /// </summary>
 /// <param name="satellite">The satellite to tune to.</param>
 /// <param name="frequency">The frequency to tune to.</param>
 public TuningSpec(Satellite satellite, SatelliteFrequency frequency)
 {
     this.frequency = frequency;
     this.satellite = satellite;
     symbolRate = frequency.SymbolRate;
     fec = frequency.FEC;
     signalPolarization = frequency.Polarization;
     modulation = frequency.Modulation;
 }
예제 #13
0
        public static void Test(AUTD autd)
        {
            const double x = AUTD.DeviceWidth / 2;
            const double y = AUTD.DeviceHeight / 2;
            const double z = 150;

            var mod  = Modulation.Sine(150);
            var gain = Focus(autd, new Vector3d(x, y, z));

            autd.Send(gain, mod);
        }
예제 #14
0
        public static void Test(AUTD autd)
        {
            const double x = AUTD.DeviceWidth / 2;
            const double y = AUTD.DeviceHeight / 2;
            const double z = 150;

            var mod  = Modulation.Sine(150);                   // AM sin 150 Hz
            var gain = Gain.FocalPoint(new Vector3d(x, y, z)); // Focal point @ (x, y, z) [mm]

            autd.Send(gain, mod);
        }
예제 #15
0
        public static void Test(AUTD autd)
        {
            const double x = AUTD.DeviceWidth / 2;
            const double y = AUTD.DeviceHeight / 2;

            var mod = Modulation.Sine(150); // AM sin 150 Hz

            var start = new Vector3d(x, y, 0);
            var dir   = Vector3d.UnitZ;
            var gain  = Gain.BesselBeam(start, dir, 13.0f / 180f * AUTD.Pi); // BesselBeam from (x, y, 0), theta = 13 deg

            autd.Send(gain, mod);
        }
예제 #16
0
    void Awake()
    {
        _autd = new AUTD();

        _autd.AddDevice(gameObject.transform.position, gameObject.transform.rotation);

        string ifname = @"write your interface name here";

        _link = Link.SOEM(ifname, _autd.NumDevices);
        _autd.Open(_link);

        _autd.Clear();

        _autd.Send(Modulation.Sine(150)); // 150 Hz
    }
예제 #17
0
파일: Program.cs 프로젝트: im1sha/signals
        static void Main(string[] args)
        {
            Data data1 = new Data(1, 2, 0, 0);
            Data data2 = new Data(1, 50, 0, 0.9);

            Signal signal1 = new SinusSignal(data1);
            Signal signal2 = new ImpulseSignal(data2);


            var values = Modulation.ApplyFM(signal1, signal2, SampleRate, Seconds);

            SoundGenerator soundGenerator = new SoundGenerator(SampleRate, Seconds,
                                                               $"MS {signal1.GetType()} A {data1.Amplitude} F {data1.Frequency} phi0 {data1.StartPhase} D {data1.DutyFactor}. " +
                                                               $"CS {signal2.GetType()} A {data2.Amplitude} F {data2.Frequency} phi0 {data2.StartPhase} D {data2.DutyFactor}"
                                                               );

            soundGenerator.Generate(values, true);
        }
예제 #18
0
        public double[] GetModulationSignal(Signal modulatorSignal,
                                            Signal carrierSignal)
        {
            if (IS_AM)
            {
#pragma warning disable CS0162 // Unreachable code detected
                return(Modulation.ApplyAM(modulatorSignal,
                                          carrierSignal, SAMPLE_RATE, SECONDS));

#pragma warning restore CS0162 // Unreachable code detected
            }
            else
            {
#pragma warning disable CS0162 // Unreachable code detected
                return(Modulation.ApplyFM(modulatorSignal,
                                          carrierSignal, SAMPLE_RATE, SECONDS));

#pragma warning restore CS0162 // Unreachable code detected
            }
        }
        public void PlaySoundEffectStartTransmit(int transmitOnRadio, bool encrypted, float volume, Modulation modulation)
        {
            if (!_globalSettings.ProfileSettingsStore.GetClientSettingBool(ProfileSettingsKeys.RadioTxEffects_Start))
            {
                return;
            }

            var _effectBuffer = _effectsOutputBuffer[transmitOnRadio];

            bool midsTone = _globalSettings.ProfileSettingsStore.GetClientSettingBool(ProfileSettingsKeys.MIDSRadioEffect);

            if (encrypted && (_globalSettings.ProfileSettingsStore.GetClientSettingBool(ProfileSettingsKeys.RadioEncryptionEffects)))
            {
                _effectBuffer.VolumeSampleProvider.Volume = volume;
                _effectBuffer.AddAudioSamples(
                    _cachedAudioEffects[(int)CachedAudioEffect.AudioEffectTypes.KY_58_TX].AudioEffectBytes,
                    transmitOnRadio);
            }
            else if (modulation == Modulation.MIDS && midsTone)
            {
                _effectBuffer.VolumeSampleProvider.Volume = volume;
                _effectBuffer.AddAudioSamples(
                    _cachedAudioEffects[(int)CachedAudioEffect.AudioEffectTypes.MIDS_TX].AudioEffectBytes,
                    transmitOnRadio);
            }
            else
            {
                _effectBuffer.VolumeSampleProvider.Volume = volume;
                _effectBuffer.AddAudioSamples(
                    _cachedAudioEffects[(int)CachedAudioEffect.AudioEffectTypes.RADIO_TX].AudioEffectBytes,
                    transmitOnRadio);
            }
        }
예제 #20
0
        public void Mode_Initialize(Modulation mode ,double DelayTime_in_ms)
        {
            try
            {
                if (mode == Modulation.TDSCDMA)
                {
                    ESG_E4438C.Write(":MEM:COPY \"NVWFM:" + Mod_Waveform_Name.TDSCDMA + "\",\"WFM1:" + Mod_Waveform_Name.TDSCDMA + "\"");
                    string cmd = ":SOUR:RAD:ARB:WAV " + '"' + Mod_Waveform_Name.TDSCDMA + '"';
                    ESG_E4438C.Write(cmd);
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:EXT:SLOP POS");
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:TYPE CONT");
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:TYPE:CONT RES");
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:EXT:DEL " + DelayTime_in_ms + "ms");
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:EXT:DEL:STAT OFF");
                    ESG_E4438C.Write(":SOUR:RAD:ARB ON");
                    ESG_E4438C.Write("OUTP:MOD:STAT ON");
                    ESG_E4438C.Write("OUTP:STAT OFF");
                    Wait();
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:EXT:DEL:STAT ON");
                    Wait();
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }

        }
예제 #21
0
 /// <summary>
 /// Ermittelt ein Kürzel für diese Gruppe.
 /// </summary>
 /// <returns>Das gewünschte Kürzel.</returns>
 public override int GetHashCode()
 {
     // Merge all
     return(Frequency.GetHashCode() ^ SymbolRate.GetHashCode() ^ SpectrumInversion.GetHashCode() ^ Bandwidth.GetHashCode() ^ Modulation.GetHashCode());
 }
예제 #22
0
        /// <summary>
        /// Find a provider given the broadcast parameters.
        /// </summary>
        /// <param name="channelNumber">The channel number of the provider.</param>
        /// <param name="frequency">The frequency of the provider.</param>
        /// <param name="symbolRate">The symbol rate of the provider.</param>
        /// <param name="fecRate">The FEC rate of the provider.</param>
        /// <param name="modulation">The modulation of the provider.</param>
        /// <returns>The provider or null if it cannot be located.</returns>
        public static AtscProvider FindProvider(int channelNumber, int frequency, int symbolRate, FECRate fecRate, Modulation modulation)
        {
            if (fecRate == null)
            {
                throw (new ArgumentException("The FEC rate cannot be null", "fecRate"));
            }

            foreach (AtscProvider provider in Providers)
            {
                foreach (AtscFrequency atscFrequency in provider.Frequencies)
                {
                    if (atscFrequency.ChannelNumber == channelNumber &&
                        atscFrequency.Frequency == frequency &&
                        atscFrequency.SymbolRate == symbolRate &&
                        atscFrequency.FEC.Rate == fecRate.Rate &&
                        atscFrequency.Modulation == modulation)
                    {
                        return(provider);
                    }
                }
            }

            return(null);
        }
예제 #23
0
        public void Mod_Initialize(Modulation mode)
        {
            try
            {
                if (mode == Modulation.WCDMA)
                {
                    #region --- WCDMA ---
                    _MXA_N9020A.Write(":INST WCDMA");
                    _MXA_N9020A.Write(":INST:DEF");
                    _MXA_N9020A.Write(":SENS:RAD:STAN:DEV MS");
                    _MXA_N9020A.Write(":SENS:RAD:CONF:EHSP:STAT OFF");
                    _MXA_N9020A.Write(":SENS:RAD:CONF:HSDP:STAT OFF");
                    _MXA_N9020A.Write(":SENS:FREQ:RF:CENT 1920 MHz");
                    _MXA_N9020A.Write(":SENS:FREQ:CENT:STEP 5 MHz");
                    _MXA_N9020A.Write(":SENS:POW:ATT 20");
                    //_MXA_N9020A.Write("TRIG:SOUR EXT2");         //Set trigger to external 2
                    //_MXA_N9020A.Write("TRIG:EXT2:SLOP POS");     //Trigger polarity
                    //_MXA_N9020A.Write("TRIG:EXT2:DEL:STAT OFF");  //Trgger delay on

                    // ACP
                    _MXA_N9020A.Write(":CONF:ACP:NDEF");
                    _MXA_N9020A.Write(":SENS:ACP:AVER ON");
                    _MXA_N9020A.Write(":SENS:ACP:AVER:TCON REP");
                    _MXA_N9020A.Write(":SENS:ACP:AVER:COUN 15");
                    //_MXA_N9020A.Write(":SENS:ACP:BAND 30 kHz");
                    //_MXA_N9020A.Write(":SENS:ACP:BAND:VID 30 kHz");
                    _MXA_N9020A.Write(":SENS:ACP:BAND:SHAP GAUS");
                    _MXA_N9020A.Write(":ACP:SWE:TIME 25 ms");
                    _MXA_N9020A.Write(":TRAC:ACP:TYPE AVER");
                    _MXA_N9020A.Write(":TRIG:ACP:SOUR IMM");

                    // EVM
                    _MXA_N9020A.Write(":CONF:RHO:NDEF");
                    _MXA_N9020A.Write(":SENS:RHO:AVER ON");
                    _MXA_N9020A.Write(":SENS:RHO:AVER:TCON REP");
                    //_MXA_N9020A.Write(":SENSRHO:CAPT:TIME 1.0");
                    _MXA_N9020A.Write(":SENS:RHO:AVER:COUN 2");
                    //_MXA_N9020A.Write(":SENS:RHO:SWE:POIN 2560");
                    _MXA_N9020A.Write(":CALC:RHO:LIM:RMS 5");
                    _MXA_N9020A.Write(":CALC:RHO:LIM:FERR 300");
                    _MXA_N9020A.Write(":SENS:RHO:FILT ON");
                    _MXA_N9020A.Write(":SENS:RHO:FILT:ALPH 0.22");
                    _MXA_N9020A.Write(":SENS:RHO:CRAT 3.84 MHz");
                    _MXA_N9020A.Write(":TRIG:RHO:SOUR IMM");
                    //_MXA_N9020A.Write(":SENS:RHO:BAND 6 MHz");

                    // Channel Power
                    _MXA_N9020A.Write(":CONF:CHP");
                    _MXA_N9020A.Write(":SENS:CHP:FREQ:SPAN 7.5 MHz");
                    _MXA_N9020A.Write(":SENS:CHP:AVER ON");
                    _MXA_N9020A.Write(":SENS:CHP:AVER:TCON REP");
                    _MXA_N9020A.Write(":SENS:CHP:AVER:COUN 300");
                    _MXA_N9020A.Write(":SENS:CHP:BAND:INT 3.84MHz");
                    _MXA_N9020A.Write(":SENS:CHP:FILT OFF");
                    _MXA_N9020A.Write(":SENS:CHP:FILT:ALPH 0.22");
                    _MXA_N9020A.Write(":SENS:CHP:FILT:BAND 5MHz");
                    //_MXA_N9020A.Write(":SENS:CHP:BAND 30 kHz");
                    //_MXA_N9020A.Write(":SENS:CHP:BAND:VID 1 MHz");
                    _MXA_N9020A.Write(":SENS:CHP:BAND:SHAP GAUS");
                    _MXA_N9020A.Write(":CHP:SWE:TIME 1ms");
                    _MXA_N9020A.Write(":TRAC:CHP:TYPE AVER");
                    _MXA_N9020A.Write(":TRIG:CHP:SOUR IMM");


                    Wait();
                    #endregion --- WCDMA ---
                }
                else if (mode == Modulation.TDSCDMA)
                {
                    #region --- TDSCDMA ---
                    //Display_Enable(true);
                    _MXA_N9020A.Write(":INST TDSCDMA");
                    _MXA_N9020A.Write(":INST:DEF");
                    _MXA_N9020A.Write(":SENS:RAD:STAN:DEV MS");
                    _MXA_N9020A.Write(":SENS:SLOT TS0");
                    _MXA_N9020A.Write(":SENS:RAD:CONF:HSDP:STAT OFF");
                    _MXA_N9020A.Write(":TDEM:SCOD 0");
                    _MXA_N9020A.Write(":TDEM:UPTS 0");
                    _MXA_N9020A.Write(":TDEM:SYNC PIL");    // MID / TRI
                    _MXA_N9020A.Write(":TDEM:ULSP 1");      // Switch Point
                    _MXA_N9020A.Write(":TDEM:MXUS:TS0 16");  // Max User for slot, 16 is maxinum
                    _MXA_N9020A.Write(":TDEM:SREF MID");    // Slot freq ref PIL / MID
                    _MXA_N9020A.Write(":TDEM:CDCH:DET AUTO");   // Code channel dectection
                    //_MXA_N9020A.Write(":TDEM:MODS:AUTO ON");    // Mode Scheme
                    //_MXA_N9020A.Write(":TDEM:SCL 1");           // Channel configuration
                    _MXA_N9020A.Write(":TDEM:TREF UPTS");       // Timing Ref DPTS / UPTS / TRIG
                    _MXA_N9020A.Write(":TDEM:MCAR OFF");         // Multi-carrier demod

                    _MXA_N9020A.Write(":SENS:FREQ:RF:CENT 2025 MHz");
                    _MXA_N9020A.Write(":SENS:POW:ATT 10");
                    _MXA_N9020A.Write(":SENS:FREQ:CENT:STEP 1.6 MHz");
                    _MXA_N9020A.Write(":TRIG:EXT2:SLOP POS");     //Trigger polarity
                    _MXA_N9020A.Write(":TRIG:EXT2:DEL:STAT ON");  //Trgger delay on
                    _MXA_N9020A.Write(":TRIG:EXT2:DEL 4.616ms");  //Trgger delay on


                    //EVM
                    _MXA_N9020A.Write(":CONF:EVM:NDEF");
                    _MXA_N9020A.Write(":SENS:EVM:AVER ON");
                    _MXA_N9020A.Write(":SENS:EVM:AVER:TCON REP");
                    _MXA_N9020A.Write(":SENS:EVM:AVER:COUN 2");
                    _MXA_N9020A.Write(":CALC:EVM:LIM:RMS 5");
                    _MXA_N9020A.Write(":CALC:EVM:LIM:FERR 0.05");
                    _MXA_N9020A.Write(":SENS:EVM:RINT 1");
                    _MXA_N9020A.Write(":SENS:EVM:ANAL:SUBF 0");
                    _MXA_N9020A.Write(":TRIG:EVM:SOUR EXT1");

                    // Burst Power
                    _MXA_N9020A.Write(":CONF:TXP:NDEF");
                    _MXA_N9020A.Write("TXP:AVER:COUN 10");
                    _MXA_N9020A.Write("TXP:AVER ON");
                    _MXA_N9020A.Write("TXP:AVER:TCON REP");
                    _MXA_N9020A.Write("TXP:AVER:TYPE RMS");     // RMS / LOG
                    _MXA_N9020A.Write("TXP:METH THR");         // Meas method THReshold|BWIDth|SINGle
                    //_MXA_N9020A.Write("TXP:BURS:AUTO OFF");
                    //_MXA_N9020A.Write("TXP:BURS:WIDT 662.5us");
                    _MXA_N9020A.Write(":TRIG:TXP:SOUR EXT1");

                    // ACP
                    _MXA_N9020A.Write(":CONF:ACP:NDEF");
                    _MXA_N9020A.Write("ACP:BAND 75kHz");            //RBW
                    _MXA_N9020A.Write("ACP:BAND:VID 750kHz");       //VBW
                    _MXA_N9020A.Write("ACP:AVER ON");
                    _MXA_N9020A.Write("ACP:AVER:COUN 5");
                    _MXA_N9020A.Write("ACP:AVER:TCON REP");
                    _MXA_N9020A.Write("CALC:ACP:LIM:STAT OFF");
                    _MXA_N9020A.Write("ACP:SWE:TIME:AUTO ON");
                    _MXA_N9020A.Write("SWE:EGAT ON");           //Gate ON
                    _MXA_N9020A.Write("SWE:EGAT:VIEW OFF");           //Gate View OFF
                    _MXA_N9020A.Write("SWE:EGAT:DEL 4.616ms");      //Gate Delay 0ms
                    _MXA_N9020A.Write("SWE:EGAT:LENG 662.5us"); // Gate Length
                    _MXA_N9020A.Write("SWE:EGAT:SOUR EXT1");
                    _MXA_N9020A.Write("SWE:EGAT:CONT EDGE");
                    _MXA_N9020A.Write(":TRIG:ACP:SOUR EXT1");

                    Wait();
                    #endregion --- TDSCDMA ---
                }
                else if (mode == Modulation.EDGE)
                {
                    #region --- EDGE ---
                    //Display_Enable(true);
                    _MXA_N9020A.Write(":INST EDGEGSM");
                    _MXA_N9020A.Write(":INST:DEF");
                    _MXA_N9020A.Write("RAD:STAN:BAND EGSM");        // Band
                    _MXA_N9020A.Write("RAD:DEV MS");               // Device
                    _MXA_N9020A.Write("RAD:CARR CONT");             // BURSt|CONTinuous
                    _MXA_N9020A.Write("CHAN:SLOT 0");               // Demod Slot

                    _MXA_N9020A.Write(":SENS:FREQ:RF:CENT 915 MHz");
                    _MXA_N9020A.Write(":SENS:POW:ATT 10");
                    _MXA_N9020A.Write(":TRIG:EXT2:SLOP POS");     //Trigger polarity
                    _MXA_N9020A.Write(":TRIG:EXT2:DEL:STAT ON");  //Trgger delay on
                    _MXA_N9020A.Write(":TRIG:EXT2:DEL 0us");  //Trgger delay on

                    //EVM
                    _MXA_N9020A.Write(":CONF:EEVM:NDEF");
                    _MXA_N9020A.Write(":SENS:EEVM:AVER ON");
                    _MXA_N9020A.Write(":SENS:EEVM:AVER:TCON REP");
                    _MXA_N9020A.Write(":SENS:EEVM:AVER:COUN 10");
                    _MXA_N9020A.Write(":TRIG:EEVM:SOUR EXT2");
                    _MXA_N9020A.Write("EEVM:BSYNC:SOUR NONE");       // TSEQuence|RFBurst|PMODulation|NONE

                    // Burst Power
                    _MXA_N9020A.Write(":CONF:TXP:NDEF");
                    _MXA_N9020A.Write("TXP:BAND 510kHz");       // RBW
                    _MXA_N9020A.Write("TXP:AVER:COUN 5");
                    _MXA_N9020A.Write("TXP:AVER ON");
                    _MXA_N9020A.Write("TXP:AVER:TCON REP");
                    _MXA_N9020A.Write("TXP:AVER:TYPE RMS");     // RMS / LOG
                    _MXA_N9020A.Write("TXP:METH BWID");         // Meas method THReshold|BWIDth
                    _MXA_N9020A.Write("TXP:BURS:AUTO OFF");
                    _MXA_N9020A.Write("TXP:BURS:WIDT 1154us");
                    _MXA_N9020A.Write(":TRIG:TXP:SOUR EXT2");


                    // WaveForm Power
                    _MXA_N9020A.Write(":CONF:WAV:NDEF");
                    _MXA_N9020A.Write(":TRIG:WAV:SOUR EXT2");
                    //_MXA_N9020A.Write("WAV:SWE:TIME 562.5 us");
                    _MXA_N9020A.Write("WAV:SWE:TIME 1154 us");
                    _MXA_N9020A.Write("WAV:AVER:COUN 5");
                    _MXA_N9020A.Write("WAV:AVER ON");
                    _MXA_N9020A.Write("WAV:AVER:TCON REP");
                    _MXA_N9020A.Write("WAV:AVER:TYPE RMS");

                    // ORFS (ACP)
                    _MXA_N9020A.Write(":CONF:EORF:NDEF");
                    _MXA_N9020A.Write("EORF:AVER ON");
                    _MXA_N9020A.Write("EORF:AVER:COUN 15");
                    _MXA_N9020A.Write("EORF:TYPE MOD");
                    _MXA_N9020A.Write("EORF:AVER:FAST ON");
                    _MXA_N9020A.Write("EORF:AVER:MOD:TYPE RMS");
                    _MXA_N9020A.Write("EORF:CARR:PREF:TYPE REF");
                    _MXA_N9020A.Write("EORF:MEAS MULT");            // MULTiple|SINGle|SWEPt
                    _MXA_N9020A.Write("EORF:LIST:SEL SHOR");        // CUSTom|SHORt|STANdard
                    _MXA_N9020A.Write(":TRIG:EORF:SOUR EXT2");

                    Wait();
                    #endregion --- EDGE --- }
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
예제 #24
0
        /// <summary>
        /// Find a provider given the broadcast parameters.
        /// </summary>
        /// <param name="frequency">The frequency of the provider.</param>
        /// <param name="symbolRate">The symbol rate of the provider.</param>
        /// <param name="fecRate">The FEC rate of the provider.</param>
        /// <param name="modulation">The modulation of the provider.</param>
        /// <returns>The provider or null if it cannot be located.</returns>
        public static CableProvider FindProvider(int frequency, int symbolRate, FECRate fecRate, Modulation modulation)
        {
            foreach (CableProvider provider in Providers)
            {
                foreach (CableFrequency cableFrequency in provider.Frequencies)
                {
                    if (cableFrequency.Frequency == frequency &&
                        cableFrequency.SymbolRate == symbolRate &&
                        cableFrequency.FEC.Rate == fecRate.Rate &&
                        cableFrequency.Modulation == modulation)
                    {
                        return(provider);
                    }
                }
            }

            return(null);
        }
        public static byte[] CreateFrame(Command cmd, byte[] data, Mode mode, Modulation modulation, bool FEC)
        {
            byte[] frame = null;
            byte   conf  = 0x01;

            byte[] tempData;
            switch (cmd)
            {
            case Command.BIO_ResetRequest:
                frame = ModemCommunication.MakeFrame(0x3C, null);
                break;

            case Command.MIB_WriteRequest:

                if (mode.Equals(Mode.PHY))
                {
                    frame = ModemCommunication.MakeFrame(0x08, new byte[] { 0x00, 0x10 });
                }
                else
                {
                    frame = ModemCommunication.MakeFrame(0x08, new byte[] { 0x00, 0x11 });
                }

                break;

            case Command.MIB_ReadRequest:
                if (data.Length > 0)
                {
                    frame = ModemCommunication.MakeFrame(0x0C, new byte[] { data[0] });
                }

                break;

            case Command.MIB_EraseRequest:
                if (data.Length > 0)
                {
                    frame = ModemCommunication.MakeFrame(0x10, new byte[] { data[0] });
                }
                break;

            case Command.PingRequest:
                if (data.Length > 0)
                {
                    frame = ModemCommunication.MakeFrame(0x2C, data);
                }
                break;

            case Command.PHY_DataRequest:
                if (modulation.Equals(Modulation.BPSK))
                {
                    conf = 0x00;
                }
                else if (modulation.Equals(Modulation.QPSK))
                {
                    conf <<= 4;     // 0001 0000
                }
                else if (modulation.Equals(Modulation.EIGHT_PSK))
                {
                    conf <<= 5;     // 0010 0000
                }
                else
                {
                    conf = 0x70;     // 0111 0000
                }
                if (FEC)
                {
                    conf |= 0x40;   // 0100 0000
                }
                conf       |= 0x04; // 0000 0100
                tempData    = new byte[data.Length + 1];
                tempData[0] = conf;
                for (int i = 0; i < data.Length; i++)
                {
                    tempData[i + 1] = data[i];
                }
                if (data.Length > 0)
                {
                    frame = ModemCommunication.MakeFrame(0x24, tempData);
                }
                break;

            case Command.DL_DataRequest:
                if (modulation.Equals(Modulation.BPSK))
                {
                    conf = 0x00;
                }
                else if (modulation.Equals(Modulation.QPSK))
                {
                    conf <<= 4;     // 0001 0000
                }
                else if (modulation.Equals(Modulation.EIGHT_PSK))
                {
                    conf <<= 5;     // 0010 0000
                }
                else
                {
                    conf = 0x70;     // 0111 0000
                }
                if (FEC)
                {
                    conf |= 0x40;   // 0100 0000
                }
                conf       |= 0x04; // 0000 0100
                tempData    = new byte[data.Length + 1];
                tempData[0] = conf;
                for (int i = 0; i < data.Length; i++)
                {
                    tempData[i + 1] = data[i];
                }
                if (data.Length > 0)
                {
                    frame = ModemCommunication.MakeFrame(0x50, tempData);
                }
                break;
            }
            return(frame);
        }
예제 #26
0
        internal void load(XmlReader reader)
        {
            switch (reader.Name)
            {
            case "CarrierFrequency":
                Frequency = Int32.Parse(reader.ReadString());
                break;

            case "Polarisation":
                switch (reader.ReadString())
                {
                case "CircularL":
                    polarization = new SignalPolarization(SignalPolarization.CircularLeft);
                    break;

                case "CircularR":
                    polarization = new SignalPolarization(SignalPolarization.CircularRight);
                    break;

                case "LinearH":
                    polarization = new SignalPolarization(SignalPolarization.LinearHorizontal);
                    break;

                case "LinearV":
                    polarization = new SignalPolarization(SignalPolarization.LinearVertical);
                    break;
                }
                break;

            case "SymbolRate":
                symbolRate = Int32.Parse(reader.ReadString());
                break;

            case "InnerFecRate":
                switch (reader.ReadString())
                {
                case "Rate1_2":
                    fec = new FECRate(FECRate.FECRate12);
                    break;

                case "Rate1_3":
                    fec = new FECRate(FECRate.FECRate13);
                    break;

                case "Rate1_4":
                    fec = new FECRate(FECRate.FECRate14);
                    break;

                case "Rate2_3":
                    fec = new FECRate(FECRate.FECRate23);
                    break;

                case "Rate2_5":
                    fec = new FECRate(FECRate.FECRate25);
                    break;

                case "Rate3_4":
                    fec = new FECRate(FECRate.FECRate34);
                    break;

                case "Rate3_5":
                    fec = new FECRate(FECRate.FECRate35);
                    break;

                case "Rate4_5":
                    fec = new FECRate(FECRate.FECRate45);
                    break;

                case "Rate5_11":
                    fec = new FECRate(FECRate.FECRate511);
                    break;

                case "Rate5_6":
                    fec = new FECRate(FECRate.FECRate56);
                    break;

                case "Rate6_7":
                    fec = new FECRate(FECRate.FECRate67);
                    break;

                case "Rate7_8":
                    fec = new FECRate(FECRate.FECRate78);
                    break;

                case "Rate8_9":
                    fec = new FECRate(FECRate.FECRate89);
                    break;

                case "Rate9_10":
                    fec = new FECRate(FECRate.FECRate910);
                    break;
                }
                break;

            case "CollectionType":
                switch (reader.ReadString())
                {
                case "EIT":
                    CollectionType = CollectionType.EIT;
                    break;

                case "MHEG5":
                    CollectionType = CollectionType.MHEG5;
                    break;

                case "OPENTV":
                    CollectionType = CollectionType.OpenTV;
                    break;

                case "MHW1":
                    CollectionType = CollectionType.MediaHighway1;
                    break;

                case "MHW2":
                    CollectionType = CollectionType.MediaHighway2;
                    break;

                case "FREESAT":
                    CollectionType = CollectionType.FreeSat;
                    break;

                case "PSIP":
                    CollectionType = CollectionType.PSIP;
                    break;

                case "DISHNETWORK":
                    CollectionType = CollectionType.DishNetwork;
                    break;

                case "BELLTV":
                    CollectionType = CollectionType.BellTV;
                    break;

                case "SIEHFERNINFO":
                    CollectionType = CollectionType.SiehfernInfo;
                    break;
                }
                break;

            case "Pilot":
                switch (reader.ReadString())
                {
                case "NotSet":
                    pilot = Pilot.NotSet;
                    break;

                case "NotDefined":
                    pilot = Pilot.NotDefined;
                    break;

                case "On":
                    pilot = Pilot.On;
                    break;

                case "Off":
                    pilot = Pilot.Off;
                    break;

                default:
                    pilot = Pilot.NotSet;
                    break;
                }
                break;

            case "Rolloff":
                switch (reader.ReadString())
                {
                case "NotSet":
                    rollOff = RollOff.NotSet;
                    break;

                case "NotDefined":
                    rollOff = RollOff.NotDefined;
                    break;

                case "Twenty":
                    rollOff = RollOff.RollOff20;
                    break;

                case "TwentyFive":
                    rollOff = RollOff.RollOff25;
                    break;

                case "ThirtyFive":
                    rollOff = RollOff.RollOff35;
                    break;

                default:
                    rollOff = RollOff.NotSet;
                    break;
                }
                break;

            case "Modulation":
                switch (reader.ReadString())
                {
                case "ModBPSK":
                    modulation = Modulation.BPSK;
                    break;

                case "ModOQPSK":
                    modulation = Modulation.OQPSK;
                    break;

                case "Mod8Psk":
                    modulation = Modulation.PSK8;
                    break;

                case "Mod1024Qam":
                    modulation = Modulation.QAM1024;
                    break;

                case "Mod112Qam":
                    modulation = Modulation.QAM112;
                    break;

                case "Mod128Qam":
                    modulation = Modulation.QAM128;
                    break;

                case "Mod16Qam":
                    modulation = Modulation.QAM16;
                    break;

                case "Mod160Qam":
                    modulation = Modulation.QAM160;
                    break;

                case "Mod192Qam":
                    modulation = Modulation.QAM192;
                    break;

                case "Mod224Qam":
                    modulation = Modulation.QAM224;
                    break;

                case "Mod256Qam":
                    modulation = Modulation.QAM256;
                    break;

                case "Mod32Qam":
                    modulation = Modulation.QAM32;
                    break;

                case "Mod320Qam":
                    modulation = Modulation.QAM320;
                    break;

                case "Mod384Qam":
                    modulation = Modulation.QAM384;
                    break;

                case "Mod448Qam":
                    modulation = Modulation.QAM448;
                    break;

                case "Mod512Qam":
                    modulation = Modulation.QAM512;
                    break;

                case "Mod64Qam":
                    modulation = Modulation.QAM64;
                    break;

                case "Mod640Qam":
                    modulation = Modulation.QAM640;
                    break;

                case "Mod768Qam":
                    modulation = Modulation.QAM768;
                    break;

                case "Mod80Qam":
                    modulation = Modulation.QAM80;
                    break;

                case "Mod896Qam":
                    modulation = Modulation.QAM896;
                    break;

                case "Mod96Qam":
                    modulation = Modulation.QAM96;
                    break;

                case "ModQPSK":
                    modulation = Modulation.QPSK;
                    break;
                }
                break;

            case "OpenTVCode":
                OpenTVCode = reader.ReadString();
                break;

            default:
                break;
            }
        }
예제 #27
0
        public void PlaySoundEffectStartReceive(int transmitOnRadio, bool encrypted, float volume, Modulation modulation)
        {
            if (!_globalSettings.ProfileSettingsStore.GetClientSettingBool(ProfileSettingsKeys.RadioRxEffects_Start))
            {
                return;
            }

            bool midsTone = _globalSettings.ProfileSettingsStore.GetClientSettingBool(ProfileSettingsKeys.MIDSRadioEffect);

            if (modulation == Modulation.MIDS && midsTone)
            {
                //no tone for MIDS
                return;
            }

            var _effectsBuffer = _effectsOutputBuffer[transmitOnRadio];

            if (encrypted && (_globalSettings.ProfileSettingsStore.GetClientSettingBool(ProfileSettingsKeys.RadioEncryptionEffects)))
            {
                _effectsBuffer.VolumeSampleProvider.Volume = volume;

                var effect = _cachedAudioEffectsProvider.KY58EncryptionEndTone;
                if (effect.Loaded)
                {
                    _effectsBuffer.AddAudioSamples(
                        effect.AudioEffectBytes,
                        transmitOnRadio);
                }
            }
            else
            {
                _effectsBuffer.VolumeSampleProvider.Volume = volume;

                var effect = _cachedAudioEffectsProvider.SelectedRadioTransmissionStartEffect;
                if (effect.Loaded)
                {
                    _effectsBuffer.AddAudioSamples(
                        effect.AudioEffectBytes,
                        transmitOnRadio);
                }
            }
        }
예제 #28
0
        internal void load(XmlReader reader)
        {
            switch (reader.Name)
            {
            case "ChannelNumber":
                ChannelNumber = Int32.Parse(reader.ReadString(), CultureInfo.InvariantCulture);
                break;

            case "Frequency":
                Frequency = Int32.Parse(reader.ReadString(), CultureInfo.InvariantCulture);
                break;

            case "ModulationType":
                switch (reader.ReadString())
                {
                case "ModBPSK":
                    modulation = Modulation.BPSK;
                    break;

                case "ModOQPSK":
                    modulation = Modulation.OQPSK;
                    break;

                case "ModPSK8":
                    modulation = Modulation.PSK8;
                    break;

                case "Mod1024Qam":
                    modulation = Modulation.QAM1024;
                    break;

                case "Mod112Qam":
                    modulation = Modulation.QAM112;
                    break;

                case "Mod128Qam":
                    modulation = Modulation.QAM128;
                    break;

                case "Mod16Qam":
                    modulation = Modulation.QAM16;
                    break;

                case "Mod160Qam":
                    modulation = Modulation.QAM160;
                    break;

                case "Mod192Qam":
                    modulation = Modulation.QAM192;
                    break;

                case "Mod224Qam":
                    modulation = Modulation.QAM224;
                    break;

                case "Mod256Qam":
                    modulation = Modulation.QAM256;
                    break;

                case "Mod32Qam":
                    modulation = Modulation.QAM32;
                    break;

                case "Mod320Qam":
                    modulation = Modulation.QAM320;
                    break;

                case "Mod384Qam":
                    modulation = Modulation.QAM384;
                    break;

                case "Mod448Qam":
                    modulation = Modulation.QAM448;
                    break;

                case "Mod512Qam":
                    modulation = Modulation.QAM512;
                    break;

                case "Mod64Qam":
                    modulation = Modulation.QAM64;
                    break;

                case "Mod640Qam":
                    modulation = Modulation.QAM640;
                    break;

                case "Mod768Qam":
                    modulation = Modulation.QAM768;
                    break;

                case "Mod80Qam":
                    modulation = Modulation.QAM80;
                    break;

                case "Mod896Qam":
                    modulation = Modulation.QAM896;
                    break;

                case "Mod96Qam":
                    modulation = Modulation.QAM96;
                    break;

                case "ModQPSK":
                    modulation = Modulation.QPSK;
                    break;
                }
                break;

            case "SymbolRate":
                symbolRate = Int32.Parse(reader.ReadString(), CultureInfo.InvariantCulture);
                break;

            case "CollectionType":
                switch (reader.ReadString())
                {
                case "EIT":
                    CollectionType = CollectionType.EIT;
                    break;

                case "MHEG5":
                    CollectionType = CollectionType.MHEG5;
                    break;

                case "OPENTV":
                    CollectionType = CollectionType.OpenTV;
                    break;

                case "MHW1":
                    CollectionType = CollectionType.MediaHighway1;
                    break;

                case "MHW2":
                    CollectionType = CollectionType.MediaHighway2;
                    break;

                case "FREESAT":
                    CollectionType = CollectionType.FreeSat;
                    break;

                case "PSIP":
                    CollectionType = CollectionType.PSIP;
                    break;

                case "DISHNETWORK":
                    CollectionType = CollectionType.DishNetwork;
                    break;

                case "BELLTV":
                    CollectionType = CollectionType.BellTV;
                    break;

                case "SIEHFERNINFO":
                    CollectionType = CollectionType.SiehfernInfo;
                    break;
                }
                break;

            case "OpenTVCode":
                OpenTVCode = reader.ReadString();
                break;

            default:
                break;
            }
        }
예제 #29
0
        /// <summary>
        /// Find a provider given the broadcast parameters.
        /// </summary>
        /// <param name="frequency">The frequency of the provider.</param>
        /// <param name="symbolRate">The symbol rate of the provider.</param>
        /// <param name="fecRate">The FEC rate of the provider.</param>
        /// <param name="modulation">The modulation of the provider.</param>
        /// <returns>The provider or null if it cannot be located.</returns>
        public static CableProvider FindProvider(int frequency, int symbolRate, FECRate fecRate, Modulation modulation)
        {
            foreach (CableProvider provider in Providers)
            {
                foreach (CableFrequency cableFrequency in provider.Frequencies)
                {
                    if (cableFrequency.Frequency == frequency &&
                        cableFrequency.SymbolRate == symbolRate &&
                        cableFrequency.FEC.Rate == fecRate.Rate &&
                        cableFrequency.Modulation == modulation)
                        return (provider);
                }
            }

            return (null);
        }
예제 #30
0
        /// <summary>
        /// Ermittelt ein Kürzel für diese Gruppe.
        /// </summary>
        /// <returns>Das gewünschte Kürzel.</returns>
        public override int GetHashCode()
        {
            // Core
            int hash = (null == OrbitalPosition) ? 0 : OrbitalPosition.GetHashCode();

            // Merge all
            return(hash ^ Frequency.GetHashCode() ^ SymbolRate.GetHashCode() ^ Polarization.GetHashCode() ^ InnerFEC.GetHashCode() ^ UsesS2Modulation.GetHashCode() ^ Modulation.GetHashCode() ^ RollOff.GetHashCode() ^ IsWestPosition.GetHashCode());
        }
예제 #31
0
 internal void load(XmlReader reader)
 {
     switch (reader.Name)
     {
         case "ChannelNumber":
             ChannelNumber = Int32.Parse(reader.ReadString(), CultureInfo.InvariantCulture);
             break;
         case "Frequency":
             Frequency = Int32.Parse(reader.ReadString(), CultureInfo.InvariantCulture);
             break;
         case "ModulationType":
             switch (reader.ReadString())
             {
                 case "ModBPSK":
                     modulation = Modulation.BPSK;
                     break;
                 case "ModOQPSK":
                     modulation = Modulation.OQPSK;
                     break;
                 case "ModPSK8":
                     modulation = Modulation.PSK8;
                     break;
                 case "Mod1024Qam":
                     modulation = Modulation.QAM1024;
                     break;
                 case "Mod112Qam":
                     modulation = Modulation.QAM112;
                     break;
                 case "Mod128Qam":
                     modulation = Modulation.QAM128;
                     break;
                 case "Mod16Qam":
                     modulation = Modulation.QAM16;
                     break;
                 case "Mod160Qam":
                     modulation = Modulation.QAM160;
                     break;
                 case "Mod192Qam":
                     modulation = Modulation.QAM192;
                     break;
                 case "Mod224Qam":
                     modulation = Modulation.QAM224;
                     break;
                 case "Mod256Qam":
                     modulation = Modulation.QAM256;
                     break;
                 case "Mod32Qam":
                     modulation = Modulation.QAM32;
                     break;
                 case "Mod320Qam":
                     modulation = Modulation.QAM320;
                     break;
                 case "Mod384Qam":
                     modulation = Modulation.QAM384;
                     break;
                 case "Mod448Qam":
                     modulation = Modulation.QAM448;
                     break;
                 case "Mod512Qam":
                     modulation = Modulation.QAM512;
                     break;
                 case "Mod64Qam":
                     modulation = Modulation.QAM64;
                     break;
                 case "Mod640Qam":
                     modulation = Modulation.QAM640;
                     break;
                 case "Mod768Qam":
                     modulation = Modulation.QAM768;
                     break;
                 case "Mod80Qam":
                     modulation = Modulation.QAM80;
                     break;
                 case "Mod896Qam":
                     modulation = Modulation.QAM896;
                     break;
                 case "Mod96Qam":
                     modulation = Modulation.QAM96;
                     break;
                 case "ModQPSK":
                     modulation = Modulation.QPSK;
                     break;
             }
             break;
         case "SymbolRate":
             symbolRate = Int32.Parse(reader.ReadString(), CultureInfo.InvariantCulture);
             break;
         case "CollectionType":
             switch (reader.ReadString())
             {
                 case "EIT":
                     CollectionType = CollectionType.EIT;
                     break;
                 case "MHEG5":
                     CollectionType = CollectionType.MHEG5;
                     break;
                 case "OPENTV":
                     CollectionType = CollectionType.OpenTV;
                     break;
                 case "MHW1":
                     CollectionType = CollectionType.MediaHighway1;
                     break;
                 case "MHW2":
                     CollectionType = CollectionType.MediaHighway2;
                     break;
                 case "FREESAT":
                     CollectionType = CollectionType.FreeSat;
                     break;
                 case "PSIP":
                     CollectionType = CollectionType.PSIP;
                     break;
                 case "DISHNETWORK":
                     CollectionType = CollectionType.DishNetwork;
                     break;
                 case "BELLTV":
                     CollectionType = CollectionType.BellTV;
                     break;
                 case "SIEHFERNINFO":
                     CollectionType = CollectionType.SiehfernInfo;
                     break;
             }
             break;
         case "OpenTVCode":
             OpenTVCode = reader.ReadString();
             break;
         default:
             break;
     }
 }
예제 #32
0
        public void Mode_Initialize(Modulation mode)
        {
            try
            {
                if (mode == Modulation.WCDMA)
                {
                    ESG_E4438C.Write(":MEM:COPY \"NVWFM:" + Mod_Waveform_Name.WCDMA + "\",\"WFM1:" + Mod_Waveform_Name.WCDMA + "\"");
                    string cmd = ":SOUR:RAD:ARB:WAV " + '"' + Mod_Waveform_Name.WCDMA + '"';
                    ESG_E4438C.Write(cmd);
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:TYPE CONT");
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:TYPE:CONT FREE");
                    ESG_E4438C.Write(":SOUR:RAD:ARB ON");
                    ESG_E4438C.Write("OUTP:MOD:STAT ON");
                    ESG_E4438C.Write("OUTP:STAT OFF");
                    Wait(); 
                }
                else if (mode == Modulation.TDSCDMA)
                {
                    ESG_E4438C.Write(":MEM:COPY \"NVWFM:" + Mod_Waveform_Name.TDSCDMA + "\",\"WFM1:" + Mod_Waveform_Name.TDSCDMA + "\"");
                    string cmd = ":SOUR:RAD:ARB:WAV " + '"' + Mod_Waveform_Name.TDSCDMA + '"';
                    ESG_E4438C.Write(cmd);
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:EXT:SLOP POS");
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:TYPE CONT");
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:TYPE:CONT RES");
                    ESG_E4438C.Write(":SOUR:RAD:ARB ON");
                    ESG_E4438C.Write("OUTP:MOD:STAT ON");
                    ESG_E4438C.Write("OUTP:STAT OFF");
                    Wait();
                }
                else if (mode == Modulation.EDGE)
                {
                    ESG_E4438C.Write(":MEM:COPY \"NVWFM:" + Mod_Waveform_Name.EDGE + "\",\"WFM1:" + Mod_Waveform_Name.EDGE + "\"");
                    string cmd = ":SOUR:RAD:ARB:WAV " + '"' + Mod_Waveform_Name.EDGE + '"';
                    ESG_E4438C.Write(cmd);
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:EXT:SLOP POS");
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:TYPE CONT");
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:TYPE:CONT FREE");
                    //ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:TYPE:CONT RES");
                    ESG_E4438C.Write(":SOUR:RAD:ARB ON");
                    ESG_E4438C.Write("OUTP:MOD:STAT ON");
                    ESG_E4438C.Write("OUTP:STAT OFF");
                    Wait();
                }
                else if (mode == Modulation.CW_BURST)
                {
                    ESG_E4438C.Write(":SOUR:PULM:SOUR INT");
                    ESG_E4438C.Write(":SOUR:PULM:INT:PER 4.8ms");
                    ESG_E4438C.Write(":SOUR:PULM:INT:PWID 1.2ms");
                    ESG_E4438C.Write(":SOUR:PULM:STAT ON ");

                    ESG_E4438C.Write("OUTP:MOD:STAT OFF");
                    ESG_E4438C.Write("OUTP:STAT OFF");
                    Wait();
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }

        }
예제 #33
0
        /// <summary>
        /// Find a provider given the broadcast parameters.
        /// </summary>
        /// <param name="channelNumber">The channel number of the provider.</param>
        /// <param name="frequency">The frequency of the provider.</param>
        /// <param name="symbolRate">The symbol rate of the provider.</param>
        /// <param name="fecRate">The FEC rate of the provider.</param>
        /// <param name="modulation">The modulation of the provider.</param>
        /// <returns>The provider or null if it cannot be located.</returns>
        public static ClearQamProvider FindProvider(int channelNumber, int frequency, int symbolRate, FECRate fecRate, Modulation modulation)
        {
            foreach (ClearQamProvider provider in Providers)
            {
                foreach (ClearQamFrequency atscFrequency in provider.Frequencies)
                {
                    if (atscFrequency.ChannelNumber == channelNumber &&
                        atscFrequency.Frequency == frequency &&
                        atscFrequency.SymbolRate == symbolRate &&
                        atscFrequency.FEC.Rate == fecRate.Rate &&
                        atscFrequency.Modulation == modulation)
                    {
                        return(provider);
                    }
                }
            }

            return(null);
        }
예제 #34
0
        public void Mod_Initialize(Modulation mode , bool HSDPA)
        {
            try
            {
                if (mode == Modulation.WCDMA)
                {
                    #region --- WCDMA ---
                    _MXA_N9020A.Write(":INST WCDMA");
                    _MXA_N9020A.Write(":INST:DEF");
                    _MXA_N9020A.Write(":SENS:RAD:STAN:DEV MS");
                    _MXA_N9020A.Write(":SENS:RAD:CONF:EHSP:STAT OFF");
                    _MXA_N9020A.Write(":SENS:RAD:CONF:HSDP:STAT OFF");
                    _MXA_N9020A.Write(":SENS:FREQ:RF:CENT 1920 MHz");
                    _MXA_N9020A.Write(":SENS:FREQ:CENT:STEP 5 MHz");
                    _MXA_N9020A.Write(":SENS:POW:ATT 10");
                    //_MXA_N9020A.Write("TRIG:SOUR EXT2");         //Set trigger to external 2
                    //_MXA_N9020A.Write("TRIG:EXT2:SLOP POS");     //Trigger polarity
                    //_MXA_N9020A.Write("TRIG:EXT2:DEL:STAT OFF");  //Trgger delay on

                    // ACP
                    _MXA_N9020A.Write(":CONF:ACP:NDEF");
                    _MXA_N9020A.Write(":SENS:ACP:AVER ON");
                    _MXA_N9020A.Write(":SENS:ACP:AVER:TCON REP");
                    _MXA_N9020A.Write(":SENS:ACP:AVER:COUN 15");
                    //_MXA_N9020A.Write(":SENS:ACP:BAND 30 kHz");
                    //_MXA_N9020A.Write(":SENS:ACP:BAND:VID 30 kHz");
                    _MXA_N9020A.Write(":SENS:ACP:BAND:SHAP GAUS");
                    _MXA_N9020A.Write(":ACP:SWE:TIME 25 ms");
                    _MXA_N9020A.Write(":TRAC:ACP:TYPE AVER");
                    _MXA_N9020A.Write(":TRIG:ACP:SOUR EXT1");

                    // EVM
                    _MXA_N9020A.Write(":CONF:RHO:NDEF");
                    _MXA_N9020A.Write(":SENS:RHO:AVER ON");
                    _MXA_N9020A.Write(":SENS:RHO:AVER:TCON REP");
                    //_MXA_N9020A.Write(":SENSRHO:CAPT:TIME 1.0");
                    _MXA_N9020A.Write(":SENS:RHO:AVER:COUN 2");
                    //_MXA_N9020A.Write(":SENS:RHO:SWE:POIN 2560");
                    _MXA_N9020A.Write(":CALC:RHO:LIM:RMS 5");
                    _MXA_N9020A.Write(":CALC:RHO:LIM:FERR 300");
                    _MXA_N9020A.Write(":SENS:RHO:FILT ON");
                    _MXA_N9020A.Write(":SENS:RHO:FILT:ALPH 0.22");
                    _MXA_N9020A.Write(":SENS:RHO:CRAT 3.84 MHz");
                    _MXA_N9020A.Write(":TRIG:RHO:SOUR EXT1");
                    //_MXA_N9020A.Write(":SENS:RHO:BAND 6 MHz");

                    // Channel Power
                    _MXA_N9020A.Write(":CONF:CHP:NDEF");
                    _MXA_N9020A.Write(":SENS:CHP:FREQ:SPAN 7.5 MHz");
                    _MXA_N9020A.Write(":SENS:CHP:AVER ON");
                    _MXA_N9020A.Write(":SENS:CHP:AVER:TCON REP");
                    _MXA_N9020A.Write(":SENS:CHP:AVER:COUN 30");
                    _MXA_N9020A.Write(":SENS:CHP:BAND:INT 3.84MHz");
                    _MXA_N9020A.Write(":SENS:CHP:FILT OFF");
                    _MXA_N9020A.Write(":SENS:CHP:FILT:ALPH 0.22");
                    _MXA_N9020A.Write(":SENS:CHP:FILT:BAND 3.84MHz");
                    //_MXA_N9020A.Write(":SENS:CHP:BAND 30 kHz");
                    //_MXA_N9020A.Write(":SENS:CHP:BAND:VID 1 MHz");
                    _MXA_N9020A.Write(":SENS:CHP:BAND:SHAP GAUS");
                    _MXA_N9020A.Write(":CHP:SWE:TIME 1ms");
                    _MXA_N9020A.Write(":TRAC:CHP:TYPE AVER");
                    _MXA_N9020A.Write(":TRIG:CHP:SOUR EXT1");


                    Wait();
                    #endregion --- WCDMA ---
                }
                else if (mode == Modulation.TDSCDMA)
                {
                    if (HSDPA)
                    {
                        #region --- HSDPA ---
                        //Display_Enable(true);
                        _MXA_N9020A.Write(":INST TDSCDMA");
                        _MXA_N9020A.Write(":INST:DEF");
                        _MXA_N9020A.Write(":SENS:RAD:STAN:DEV MS");
                        _MXA_N9020A.Write(":SENS:SLOT TS4");
                        _MXA_N9020A.Write(":SENS:RAD:CONF:HSDP:STAT ON");
                        _MXA_N9020A.Write(":TDEM:SCOD 0");
                        _MXA_N9020A.Write(":TDEM:UPTS 0");
                        _MXA_N9020A.Write(":TDEM:SYNC TRI");    // MID / TRI
                        _MXA_N9020A.Write(":TDEM:ULSP 1");      // Switch Point
                        _MXA_N9020A.Write(":TDEM:MXUS:TS0 16");  // Max User for slot, 16 is maxinum
                        _MXA_N9020A.Write(":TDEM:SREF MID");    // Slot freq ref PIL / MID
                        _MXA_N9020A.Write(":TDEM:CDCH:DET AUTO");   // Code channel dectection
                        //_MXA_N9020A.Write(":TDEM:MODS:AUTO ON");    // Mode Scheme
                        //_MXA_N9020A.Write(":TDEM:SCL 1");           // Channel configuration
                        _MXA_N9020A.Write(":TDEM:TREF TRIG");       // Timing Ref DPTS / UPTS / TRIG
                        _MXA_N9020A.Write(":TDEM:MCAR OFF");         // Multi-carrier demod

                        _MXA_N9020A.Write(":SENS:FREQ:RF:CENT 2025 MHz");
                        _MXA_N9020A.Write(":SENS:POW:ATT 10");
                        _MXA_N9020A.Write(":SENS:FREQ:CENT:STEP 1.6 MHz");
                        _MXA_N9020A.Write(":TRIG:EXT1:SLOP POS");     //Trigger polarity
                        //_MXA_N9020A.Write(":TRIG:EXT2:DEL:STAT ON");  //Trgger delay on
                        //_MXA_N9020A.Write(":TRIG:EXT2:DEL 4.616ms");  //Trgger delay on


                        //EVM
                        _MXA_N9020A.Write(":CONF:EVM:NDEF");
                        _MXA_N9020A.Write(":SENS:EVM:AVER ON");
                        _MXA_N9020A.Write(":SENS:EVM:AVER:TCON REP");
                        _MXA_N9020A.Write(":SENS:EVM:AVER:COUN 2");
                        _MXA_N9020A.Write(":CALC:EVM:LIM:RMS 5");
                        _MXA_N9020A.Write(":CALC:EVM:LIM:FERR 0.05");
                        _MXA_N9020A.Write(":SENS:EVM:RINT 1");
                        _MXA_N9020A.Write(":SENS:EVM:ANAL:SUBF 0");
                        _MXA_N9020A.Write(":TRIG:EVM:SOUR EXT1");

                        // Burst Power
                        _MXA_N9020A.Write(":CONF:TXP:NDEF");
                        _MXA_N9020A.Write("TXP:AVER:COUN 10");
                        _MXA_N9020A.Write("TXP:AVER ON");
                        _MXA_N9020A.Write("TXP:AVER:TCON REP");
                        _MXA_N9020A.Write("TXP:AVER:TYPE RMS");     // RMS / LOG
                        _MXA_N9020A.Write("TXP:METH THR");         // Meas method THReshold|BWIDth|SINGle
                        //_MXA_N9020A.Write("TXP:BURS:AUTO OFF");
                        //_MXA_N9020A.Write("TXP:BURS:WIDT 662.5us");
                        _MXA_N9020A.Write(":TRIG:TXP:SOUR EXT1");

                        // ACP
                        _MXA_N9020A.Write(":CONF:ACP:NDEF");
                        _MXA_N9020A.Write("ACP:BAND 75kHz");            //RBW
                        _MXA_N9020A.Write("ACP:BAND:VID 750kHz");       //VBW
                        _MXA_N9020A.Write("ACP:AVER ON");
                        _MXA_N9020A.Write("ACP:AVER:COUN 5");
                        _MXA_N9020A.Write("ACP:AVER:TCON REP");
                        _MXA_N9020A.Write("CALC:ACP:LIM:STAT OFF");
                        _MXA_N9020A.Write("ACP:SWE:TIME:AUTO ON");
                        _MXA_N9020A.Write("SWE:EGAT ON");           //Gate ON
                        _MXA_N9020A.Write("SWE:EGAT:VIEW OFF");           //Gate View OFF
                        _MXA_N9020A.Write("SWE:EGAT:DEL 360ms");      //Gate Delay 0ms
                        _MXA_N9020A.Write("SWE:EGAT:LENG 662.5us"); // Gate Length
                        _MXA_N9020A.Write("SWE:EGAT:SOUR EXT2");
                        _MXA_N9020A.Write("SWE:EGAT:CONT EDGE");
                        _MXA_N9020A.Write(":TRIG:ACP:SOUR EXT1");

                        Wait();
                        #endregion --- HSDPA ---
                    }
                    else
                    {
                        #region --- TDSCDMA ---
                        //Display_Enable(true);
                        _MXA_N9020A.Write(":INST TDSCDMA");
                        _MXA_N9020A.Write(":INST:DEF");
                        _MXA_N9020A.Write(":SENS:RAD:STAN:DEV MS");
                        _MXA_N9020A.Write(":SENS:SLOT TS0");
                        _MXA_N9020A.Write(":SENS:RAD:CONF:HSDP:STAT OFF");
                        _MXA_N9020A.Write(":TDEM:SCOD 0");
                        _MXA_N9020A.Write(":TDEM:UPTS 0");
                        _MXA_N9020A.Write(":TDEM:SYNC PIL");    // MID / TRI
                        _MXA_N9020A.Write(":TDEM:ULSP 1");      // Switch Point
                        _MXA_N9020A.Write(":TDEM:MXUS:TS0 16");  // Max User for slot, 16 is maxinum
                        _MXA_N9020A.Write(":TDEM:SREF MID");    // Slot freq ref PIL / MID
                        _MXA_N9020A.Write(":TDEM:CDCH:DET AUTO");   // Code channel dectection
                        //_MXA_N9020A.Write(":TDEM:MODS:AUTO ON");    // Mode Scheme
                        //_MXA_N9020A.Write(":TDEM:SCL 1");           // Channel configuration
                        _MXA_N9020A.Write(":TDEM:TREF UPTS");       // Timing Ref DPTS / UPTS / TRIG
                        _MXA_N9020A.Write(":TDEM:MCAR OFF");         // Multi-carrier demod

                        _MXA_N9020A.Write(":SENS:FREQ:RF:CENT 2025 MHz");
                        _MXA_N9020A.Write(":SENS:POW:ATT 10");
                        _MXA_N9020A.Write(":SENS:FREQ:CENT:STEP 1.6 MHz");
                        _MXA_N9020A.Write(":TRIG:EXT2:SLOP POS");     //Trigger polarity
                        _MXA_N9020A.Write(":TRIG:EXT2:DEL:STAT ON");  //Trgger delay on
                        _MXA_N9020A.Write(":TRIG:EXT2:DEL 4.616ms");  //Trgger delay on


                        //EVM
                        _MXA_N9020A.Write(":CONF:EVM:NDEF");
                        _MXA_N9020A.Write(":SENS:EVM:AVER ON");
                        _MXA_N9020A.Write(":SENS:EVM:AVER:TCON REP");
                        _MXA_N9020A.Write(":SENS:EVM:AVER:COUN 2");
                        _MXA_N9020A.Write(":CALC:EVM:LIM:RMS 5");
                        _MXA_N9020A.Write(":CALC:EVM:LIM:FERR 0.05");
                        _MXA_N9020A.Write(":SENS:EVM:RINT 1");
                        _MXA_N9020A.Write(":SENS:EVM:ANAL:SUBF 0");
                        _MXA_N9020A.Write(":TRIG:EVM:SOUR EXT1");

                        // Burst Power
                        _MXA_N9020A.Write(":CONF:TXP:NDEF");
                        _MXA_N9020A.Write("TXP:AVER:COUN 10");
                        _MXA_N9020A.Write("TXP:AVER ON");
                        _MXA_N9020A.Write("TXP:AVER:TCON REP");
                        _MXA_N9020A.Write("TXP:AVER:TYPE RMS");     // RMS / LOG
                        _MXA_N9020A.Write("TXP:METH THR");         // Meas method THReshold|BWIDth|SINGle
                        //_MXA_N9020A.Write("TXP:BURS:AUTO OFF");
                        //_MXA_N9020A.Write("TXP:BURS:WIDT 662.5us");
                        _MXA_N9020A.Write(":TRIG:TXP:SOUR EXT1");

                        // ACP
                        _MXA_N9020A.Write(":CONF:ACP:NDEF");
                        _MXA_N9020A.Write("ACP:BAND 75kHz");            //RBW
                        _MXA_N9020A.Write("ACP:BAND:VID 750kHz");       //VBW
                        _MXA_N9020A.Write("ACP:AVER ON");
                        _MXA_N9020A.Write("ACP:AVER:COUN 5");
                        _MXA_N9020A.Write("ACP:AVER:TCON REP");
                        _MXA_N9020A.Write("CALC:ACP:LIM:STAT OFF");
                        _MXA_N9020A.Write("ACP:SWE:TIME:AUTO ON");
                        _MXA_N9020A.Write("SWE:EGAT ON");           //Gate ON
                        _MXA_N9020A.Write("SWE:EGAT:VIEW OFF");           //Gate View OFF
                        _MXA_N9020A.Write("SWE:EGAT:DEL 4.616ms");      //Gate Delay 0ms
                        _MXA_N9020A.Write("SWE:EGAT:LENG 662.5us"); // Gate Length
                        _MXA_N9020A.Write("SWE:EGAT:SOUR EXT2");
                        _MXA_N9020A.Write("SWE:EGAT:CONT EDGE");
                        _MXA_N9020A.Write(":TRIG:ACP:SOUR EXT1");

                        Wait();
                        #endregion --- TDSCDMA --- }
                    }
                }//EDGE_CONTINOUS
                else if (mode == Modulation.EDGE_CONTINOUS)
                {
                    #region --- EDGE_CONTINOUS ---
                    //Display_Enable(true);
                    _MXA_N9020A.Write(":INST EDGEGSM");
                    _MXA_N9020A.Write(":INST:DEF");
                    _MXA_N9020A.Write("RAD:STAN:BAND EGSM");        // Band
                    _MXA_N9020A.Write("RAD:DEV MS");               // Device
                    _MXA_N9020A.Write("RAD:CARR CONT");             // BURSt|CONTinuous
                    _MXA_N9020A.Write("CHAN:SLOT 0");               // Demod Slot

                    _MXA_N9020A.Write(":SENS:FREQ:RF:CENT 915 MHz");
                    _MXA_N9020A.Write(":SENS:POW:ATT 10");
                    _MXA_N9020A.Write(":TRIG:EXT2:SLOP POS");     //Trigger polarity
                    _MXA_N9020A.Write(":TRIG:EXT2:DEL:STAT ON");  //Trgger delay on
                    _MXA_N9020A.Write(":TRIG:EXT2:DEL 0us");  //Trgger delay on

                    //EVM
                    _MXA_N9020A.Write(":CONF:EEVM:NDEF");
                    _MXA_N9020A.Write(":SENS:EEVM:AVER ON");
                    _MXA_N9020A.Write(":SENS:EEVM:AVER:TCON REP");
                    _MXA_N9020A.Write(":SENS:EEVM:AVER:COUN 10");
                    _MXA_N9020A.Write(":TRIG:EEVM:SOUR EXT2");
                    _MXA_N9020A.Write("EEVM:BSYNC:SOUR NONE");       // TSEQuence|RFBurst|PMODulation|NONE

                    // Burst Power
                    _MXA_N9020A.Write(":CONF:TXP:NDEF");
                    _MXA_N9020A.Write("TXP:BAND 510kHz");       // RBW
                    _MXA_N9020A.Write("TXP:AVER:COUN 3");
                    _MXA_N9020A.Write("TXP:AVER ON");
                    _MXA_N9020A.Write("TXP:AVER:TCON REP");
                    _MXA_N9020A.Write("TXP:AVER:TYPE RMS");     // RMS / LOG
                    _MXA_N9020A.Write("TXP:METH BWID");         // Meas method THReshold|BWIDth
                    _MXA_N9020A.Write("TXP:BURS:AUTO ON");
                    _MXA_N9020A.Write("TXP:BURS:WIDT 1154us");
                    _MXA_N9020A.Write(":TRIG:TXP:SOUR EXT2");


                    // WaveForm Power
                    _MXA_N9020A.Write(":CONF:WAV:NDEF");
                    _MXA_N9020A.Write(":TRIG:WAV:SOUR EXT2");
                    //_MXA_N9020A.Write("WAV:SWE:TIME 562.5 us");
                    _MXA_N9020A.Write("WAV:SWE:TIME 1154 us");
                    _MXA_N9020A.Write("WAV:AVER:COUN 5");
                    _MXA_N9020A.Write("WAV:AVER ON");
                    _MXA_N9020A.Write("WAV:AVER:TCON REP");
                    _MXA_N9020A.Write("WAV:AVER:TYPE RMS");

                    // ORFS (ACP)
                    _MXA_N9020A.Write(":CONF:EORF:NDEF");
                    _MXA_N9020A.Write("EORF:AVER ON");
                    _MXA_N9020A.Write("EORF:AVER:COUN 15");
                    _MXA_N9020A.Write("EORF:TYPE MOD");
                    _MXA_N9020A.Write("EORF:AVER:FAST ON");
                    _MXA_N9020A.Write("EORF:AVER:MOD:TYPE RMS");
                    _MXA_N9020A.Write("EORF:CARR:PREF:TYPE REF");
                    _MXA_N9020A.Write("EORF:MEAS MULT");            // MULTiple|SINGle|SWEPt
                    _MXA_N9020A.Write("EORF:LIST:SEL SHOR");        // CUSTom|SHORt|STANdard
                    _MXA_N9020A.Write(":TRIG:EORF:SOUR EXT2");

                    Wait();
                    #endregion --- EDGE_CONTINOUS --- }
                }
                else if (mode == Modulation.EDGE)
                {
                    #region --- EDGE ---
                    //Display_Enable(true);
                    _MXA_N9020A.Write(":INST EDGEGSM");
                    _MXA_N9020A.Write(":INST:DEF");
                    _MXA_N9020A.Write("RAD:STAN:BAND EGSM");        // Band
                    _MXA_N9020A.Write("RAD:DEV MS");               // Device
                    _MXA_N9020A.Write("RAD:CARR CONT");             // BURSt|CONTinuous
                    _MXA_N9020A.Write("CHAN:SLOT 0");               // Demod Slot

                    _MXA_N9020A.Write(":SENS:FREQ:RF:CENT 915 MHz");
                    _MXA_N9020A.Write(":SENS:POW:ATT 10");
                    _MXA_N9020A.Write(":TRIG:EXT1:SLOP POS");     //Trigger polarity
                    _MXA_N9020A.Write(":TRIG:EXT1:DEL:STAT ON");  //Trgger delay on
                    _MXA_N9020A.Write(":TRIG:EXT1:DEL 0us");  //Trgger delay on

                    //EVM
                    _MXA_N9020A.Write(":CONF:EEVM:NDEF");
                    _MXA_N9020A.Write(":SENS:EEVM:AVER ON");
                    _MXA_N9020A.Write(":SENS:EEVM:AVER:TCON REP");
                    _MXA_N9020A.Write(":SENS:EEVM:AVER:COUN 10");
                    _MXA_N9020A.Write(":TRIG:EEVM:SOUR EXT1");
                    _MXA_N9020A.Write("EEVM:BSYNC:SOUR NONE");       // TSEQuence|RFBurst|PMODulation|NONE

                    // Burst Power
                    _MXA_N9020A.Write(":CONF:TXP:NDEF");
                    _MXA_N9020A.Write("TXP:BAND 510kHz");       // RBW
                    _MXA_N9020A.Write("TXP:AVER:COUN 3");
                    _MXA_N9020A.Write("TXP:AVER ON");
                    _MXA_N9020A.Write("TXP:AVER:TCON REP");
                    _MXA_N9020A.Write("TXP:AVER:TYPE RMS");     // RMS / LOG
                    _MXA_N9020A.Write("TXP:METH BWID");         // Meas method THReshold|BWIDth
                    _MXA_N9020A.Write("TXP:BURS:AUTO ON");
                    _MXA_N9020A.Write("TXP:BURS:WIDT 577us");
                    _MXA_N9020A.Write(":TRIG:TXP:SOUR EXT1");


                    // WaveForm Power
                    _MXA_N9020A.Write(":CONF:WAV:NDEF");
                    _MXA_N9020A.Write(":TRIG:WAV:SOUR EXT1");
                    //_MXA_N9020A.Write("WAV:SWE:TIME 562.5 us");
                    _MXA_N9020A.Write("WAV:SWE:TIME 577 us");
                    _MXA_N9020A.Write("WAV:AVER:COUN 5");
                    _MXA_N9020A.Write("WAV:AVER ON");
                    _MXA_N9020A.Write("WAV:AVER:TCON REP");
                    _MXA_N9020A.Write("WAV:AVER:TYPE RMS");

                    // ORFS (ACP)
                    _MXA_N9020A.Write(":CONF:EORF:NDEF");
                    _MXA_N9020A.Write("EORF:AVER ON");
                    _MXA_N9020A.Write("EORF:AVER:COUN 15");
                    _MXA_N9020A.Write("EORF:TYPE MOD");
                    _MXA_N9020A.Write("EORF:AVER:FAST ON");
                    _MXA_N9020A.Write("EORF:AVER:MOD:TYPE RMS");
                    _MXA_N9020A.Write("EORF:CARR:PREF:TYPE REF");
                    _MXA_N9020A.Write("EORF:MEAS MULT");            // MULTiple|SINGle|SWEPt
                    _MXA_N9020A.Write("EORF:LIST:SEL SHOR");        // CUSTom|SHORt|STANdard
                    _MXA_N9020A.Write(":TRIG:EORF:SOUR EXT1");

                    Wait();
                    #endregion --- EDGE --- }
                }
                else if (mode == Modulation.LTETDD)
                {
                    #region --- LTETDD ---
                    //Display_Enable(true);
                    //_MXA_N9020A.Write(":INIT:CONT OFF");     
                    _MXA_N9020A.Write(":SENS:POW:ATT 10");
                    // Mode Setup
                    _MXA_N9020A.Write(":INST LTETDD");
                    _MXA_N9020A.Write(":INST:DEF");
                    _MXA_N9020A.Write(":RAD:STAN:DIR ULIN");            // Uplink ULIN/DLIN
                    _MXA_N9020A.Write(":RAD:STAN:ULDL CONF1");          // CONF1: Configuration 1 (DSUUDDSUUD)
                    _MXA_N9020A.Write(":RAD:STAN:PRES B10M");           // Preset to standard  B1M4|B3M|B5M|B10M|B15M|B20M
                    _MXA_N9020A.Write(":RAD:SLOT TS4");                 // Analysis slot TS4
                    _MXA_N9020A.Write(":RAD:MINT 4");                   // Measusre interval 2slots

                    // Channel Power Setup
                    _MXA_N9020A.Write(":CONF:CHP");
                    _MXA_N9020A.Write(":TRIG:CHP:SOUR EXT1");
                    _MXA_N9020A.Write(":SWE:EGAT:SOUR EXT2");
                    _MXA_N9020A.Write(":SWE:EGAT:DEL 5ms");      //Gate Delay 0ms
                    //_MXA_N9020A.Write(":CHP:AVER:COUN 5");              // Average count
                    _MXA_N9020A.Write(":CHP:AVER OFF");                  // Average OFF
                    _MXA_N9020A.Write(":CHP:SWE:TIME 60ms");

                    // ACPR E-ULTA
                    _MXA_N9020A.Write(":CONF:ACP");
                    _MXA_N9020A.Write(":TRIG:ACP:SOUR EXT1");
                    _MXA_N9020A.Write(":SWE:EGAT:SOUR EXT1");
                    _MXA_N9020A.Write(":SWE:EGAT:DEL 5ms");      //Gate Delay 0ms
                    _MXA_N9020A.Write(":ACP:SWE:TIME 60ms");                    // Sweep Time 60ms
                    _MXA_N9020A.Write(":ACP:AVER:TCON REP");                    // Average Mode EXP || REP                   
                    _MXA_N9020A.Write(":ACP:AVER:COUN 2");                      // Average count
                    _MXA_N9020A.Write(":ACP:AVER ON");                          // Average ON
                    _MXA_N9020A.Write(":ACP:OFFS2:LIST:STAT 1,0,0,0,0,0");      // Offset State
                    _MXA_N9020A.Write(":ACP:OFFS2:LIST 10MHz,0,0,0,0,0");       // Offset Frequecny
                    _MXA_N9020A.Write(":ACP:OFFS2:LIST:BAND 9MHz,9MHz,9MHz,9MHz,9MHz,9MHz");    // Offset Integ BW
                    _MXA_N9020A.Write(":ACP:OFFS2:LIST:SIDE BOTH");               // Offset Side NEG || BOTH || POS
                    _MXA_N9020A.Write(":ACP:OFFS2:LIST:FILT 0,0,0,0,0,0");       // Offset Method 1|ON = RRC Weighted, 0|OFF = Integ BW
                    _MXA_N9020A.Write(":ACP:OFFS2:LIST:FILT:ALPH 0.22, 0.22, 0.22, 0.22, 0.22, 0.22");  // Offset Filter Alpha                    
                    _MXA_N9020A.Write(":ACP:OFFS:TYPE CTOC");                   // Offset Frequency Define  CTOC || CTOE || ETOC || ETOE
                    _MXA_N9020A.Write(":ACP:FREQ:SPAN 30MHz");                  // Span 30MHz

                    // ACPR ULTA(TD-S)
                    _MXA_N9020A.Write(":CONF:ACP");
                    _MXA_N9020A.Write(":TRIG:ACP:SOUR EXT1");
                    _MXA_N9020A.Write(":SWE:EGAT:SOUR EXT1");
                    _MXA_N9020A.Write(":SWE:EGAT:DEL 5ms");      //Gate Delay 0ms
                    _MXA_N9020A.Write(":ACP:SWE:TIME 60ms");                    // Sweep Time 60ms
                    _MXA_N9020A.Write(":ACP:AVER:TCON REP");                    // Average Mode EXP || REP                   
                    _MXA_N9020A.Write(":ACP:AVER:COUN 2");                      // Average count
                    _MXA_N9020A.Write(":ACP:AVER ON");                          // Average ON
                    _MXA_N9020A.Write(":ACP:OFFS2:LIST:STAT 1,1,0,0,0,0");      // Offset State
                    _MXA_N9020A.Write(":ACP:OFFS2:LIST 5.8MHz,7.4MHz,0,0,0,0"); // Offset Frequecny
                    _MXA_N9020A.Write(":ACP:OFFS2:LIST:BAND 1.28MHz,1.28MHz,9MHz,9MHz,9MHz,9MHz");  // Offset Integ BW
                    _MXA_N9020A.Write(":ACP:OFFS2:LIST:SIDE NEG,BOTH");               // Offset Side NEG || BOTH || POS
                    _MXA_N9020A.Write(":ACP:OFFS2:LIST:FILT 1,1,0,0,0,0");       // Offset Method 1|ON = RRC Weighted, 0|OFF = Integ BW
                    _MXA_N9020A.Write(":ACP:OFFS2:LIST:FILT:ALPH 0.22, 0.22, 0.22, 0.22, 0.22, 0.22");  // Offset Filter Alpha
                    _MXA_N9020A.Write(":ACP:OFFS:TYPE CTOC");                   // Offset Frequency Define  CTOC || CTOE || ETOC || ETOE
                    _MXA_N9020A.Write(":ACP:FREQ:SPAN 17MHz");                  // Span 17MHz

                    // CEVM
                    _MXA_N9020A.Write(":CONF:CEVM");
                    _MXA_N9020A.Write(":TRIG:CEVM:SOUR EXT1");
                    _MXA_N9020A.Write(":SWE:EGAT:SOUR EXT1");

                    Wait();
                    #endregion --- LTETDD --- }
                }
                else if (mode == Modulation.LTEFDD)
                {
                    #region --- LTEFDD ---
                    //Display_Enable(true);
                    //_MXA_N9020A.Write(":INIT:CONT OFF");     
                    _MXA_N9020A.Write(":SENS:POW:ATT 10");
                    // Mode Setup
                    _MXA_N9020A.Write(":INST LTE");
                    _MXA_N9020A.Write(":INST:DEF");
                    _MXA_N9020A.Write(":RAD:STAN:PRES B10M");           // Preset to standard  B1M4|B3M|B5M|B10M|B15M|B20M
                    _MXA_N9020A.Write(":RAD:STAN:DIR ULIN");            // Uplink ULIN/DLIN

                    // Channel Power Setup
                    _MXA_N9020A.Write(":CONF:CHP");
                    _MXA_N9020A.Write(":TRIG:CHP:SOUR EXT1");
                    //_MXA_N9020A.Write(":CHP:AVER:COUN 5");              // Average count
                    _MXA_N9020A.Write(":CHP:AVER OFF");                  // Average OFF
                    _MXA_N9020A.Write(":CHP:SWE:TIME 60ms");

                    // ACPR E-ULTA
                    _MXA_N9020A.Write(":CONF:ACP");
                    _MXA_N9020A.Write(":TRIG:ACP:SOUR EXT1");
                    _MXA_N9020A.Write(":ACP:SWE:TIME 60ms");                    // Sweep Time 60ms
                    _MXA_N9020A.Write(":ACP:AVER:TCON REP");                    // Average Mode EXP || REP                   
                    _MXA_N9020A.Write(":ACP:AVER:COUN 2");                      // Average count
                    _MXA_N9020A.Write(":ACP:AVER ON");                          // Average ON
                    _MXA_N9020A.Write(":ACP:OFFS2:LIST:STAT 1,0,0,0,0,0");      // Offset State
                    _MXA_N9020A.Write(":ACP:OFFS2:LIST 10MHz,0,0,0,0,0");       // Offset Frequecny
                    _MXA_N9020A.Write(":ACP:OFFS2:LIST:BAND 9MHz,9MHz,9MHz,9MHz,9MHz,9MHz");    // Offset Integ BW
                    _MXA_N9020A.Write(":ACP:OFFS2:LIST:SIDE BOTH");               // Offset Side NEG || BOTH || POS
                    _MXA_N9020A.Write(":ACP:OFFS2:LIST:FILT 0,0,0,0,0,0");       // Offset Method 1|ON = RRC Weighted, 0|OFF = Integ BW
                    _MXA_N9020A.Write(":ACP:OFFS2:LIST:FILT:ALPH 0.22, 0.22, 0.22, 0.22, 0.22, 0.22");  // Offset Filter Alpha                    
                    _MXA_N9020A.Write(":ACP:OFFS:TYPE CTOC");                   // Offset Frequency Define  CTOC || CTOE || ETOC || ETOE
                    _MXA_N9020A.Write(":ACP:FREQ:SPAN 30MHz");                  // Span 30MHz

                    // ACPR ULTA(WCDMA)
                    _MXA_N9020A.Write(":CONF:ACP");
                    _MXA_N9020A.Write(":TRIG:ACP:SOUR EXT1");
                    _MXA_N9020A.Write(":ACP:SWE:TIME 60ms");                    // Sweep Time 60ms
                    _MXA_N9020A.Write(":ACP:AVER:TCON REP");                    // Average Mode EXP || REP                   
                    _MXA_N9020A.Write(":ACP:AVER:COUN 2");                      // Average count
                    _MXA_N9020A.Write(":ACP:AVER ON");                          // Average ON
                    _MXA_N9020A.Write(":ACP:OFFS2:LIST:STAT 1,1,0,0,0,0");      // Offset State
                    _MXA_N9020A.Write(":ACP:OFFS2:LIST 7.5MHz,12.5MHz,0,0,0,0"); // Offset Frequecny
                    _MXA_N9020A.Write(":ACP:OFFS2:LIST:BAND 3.84MHz,3.84MHz,9MHz,9MHz,9MHz,9MHz");  // Offset Integ BW
                    _MXA_N9020A.Write(":ACP:OFFS2:LIST:SIDE BOTH,BOTH");               // Offset Side NEG || BOTH || POS
                    _MXA_N9020A.Write(":ACP:OFFS2:LIST:FILT 1,1,0,0,0,0");       // Offset Method 1|ON = RRC Weighted, 0|OFF = Integ BW
                    _MXA_N9020A.Write(":ACP:OFFS2:LIST:FILT:ALPH 0.22, 0.22, 0.22, 0.22, 0.22, 0.22");  // Offset Filter Alpha
                    _MXA_N9020A.Write(":ACP:OFFS:TYPE CTOC");                   // Offset Frequency Define  CTOC || CTOE || ETOC || ETOE
                    _MXA_N9020A.Write(":ACP:FREQ:SPAN 17MHz");                  // Span 17MHz

                    // CEVM
                    _MXA_N9020A.Write(":CONF:CEVM");
                    _MXA_N9020A.Write(":TRIG:CEVM:SOUR EXT1");

                    Wait();
                    #endregion --- LTEFDD --- }
                }
                else if (mode == Modulation.CDMA)
                {
                    #region --- CDMA ---
                    _MXA_N9020A.Write(":INST CDMA2K");
                    _MXA_N9020A.Write(":INST:DEF");
                    _MXA_N9020A.Write(":SENS:RAD:STAN:DEV MS");
                    //_MXA_N9020A.Write(":SENS:RAD:CONF:EHSP:STAT OFF");
                    //_MXA_N9020A.Write(":SENS:RAD:CONF:HSDP:STAT OFF");
                    _MXA_N9020A.Write(":SENS:FREQ:RF:CENT 1920 MHz");
                    //_MXA_N9020A.Write(":SENS:FREQ:CENT:STEP 5 MHz");
                    _MXA_N9020A.Write(":SENS:POW:ATT 10");
                    _MXA_N9020A.Write("TRIG:SOUR EXT1");         //Set trigger to external 2
                    //_MXA_N9020A.Write("TRIG:EXT2:SLOP POS");     //Trigger polarity
                    //_MXA_N9020A.Write("TRIG:EXT2:DEL:STAT OFF");  //Trgger delay on

                    // ACP
                    _MXA_N9020A.Write(":CONF:ACP");
                    _MXA_N9020A.Write(":SENS:ACP:AVER OFF");
                    _MXA_N9020A.Write(":SENS:ACP:AVER:TCON REP");
                    _MXA_N9020A.Write(":SENS:ACP:AVER:COUN 64");
                    _MXA_N9020A.Write(":ACP:SWE:TIME 59.4 ms");
                    _MXA_N9020A.Write(":ACP:SWE:TIME:AUTO ON");
                    _MXA_N9020A.Write(":SENS:ACP:METH RBW");
                    _MXA_N9020A.Write(":TRAC:ACP:TYPE AVER");
                    _MXA_N9020A.Write(":TRIG:ACP:SOUR EXT1");

                    // EVM
                    _MXA_N9020A.Write(":CONF:RHO");
                    _MXA_N9020A.Write(":SENS:RHO:AVER ON");
                    _MXA_N9020A.Write(":SENS:RHO:AVER:TCON REP");
                    _MXA_N9020A.Write(":SENS:RHO:AVER:COUN 2");
                    _MXA_N9020A.Write(":TRIG:RHO:SOUR EXT1");

                    // Channel Power
                    _MXA_N9020A.Write(":CONF:CHP");
                    _MXA_N9020A.Write(":SENS:CHP:AVER ON");
                    _MXA_N9020A.Write(":SENS:CHP:AVER:TCON REP");
                    _MXA_N9020A.Write(":SENS:CHP:AVER:COUN 64");
                    _MXA_N9020A.Write(":CHP:SWE:TIME 5ms");
                    _MXA_N9020A.Write(":TRAC:CHP:TYPE AVER");
                    _MXA_N9020A.Write(":TRIG:CHP:SOUR EXT1");


                    Wait();
                    #endregion --- CDMA ---
                }
                else if (mode == Modulation.EVDO)
                {
                    #region --- EVDO ---
                    _MXA_N9020A.Write(":INST CDMA1XEV");
                    _MXA_N9020A.Write(":INST:DEF");
                    _MXA_N9020A.Write(":SENS:RAD:STAN:DEV MS");
                    _MXA_N9020A.Write(":SENS:FREQ:RF:CENT 1920 MHz");
                    _MXA_N9020A.Write(":SENS:POW:ATT 10");

                    // ACP
                    _MXA_N9020A.Write(":CONF:ACP");
                    _MXA_N9020A.Write(":SENS:ACP:AVER OFF");
                    _MXA_N9020A.Write(":SENS:ACP:AVER:TCON REP");
                    _MXA_N9020A.Write(":SENS:ACP:AVER:COUN 64");
                    _MXA_N9020A.Write(":ACP:SWE:TIME 59.4 ms");
                    _MXA_N9020A.Write(":SENS:ACP:METH RBW");
                    _MXA_N9020A.Write(":TRAC:ACP:TYPE AVER");
                    _MXA_N9020A.Write(":TRIG:ACP:SOUR EXT1");

                    // EVM
                    _MXA_N9020A.Write(":CONF:RHO:MS");
                    _MXA_N9020A.Write(":SENS:RHO:MS:AVER ON");
                    _MXA_N9020A.Write(":SENS:RHO:MS:AVER:TCON REP");
                    _MXA_N9020A.Write(":SENS:RHO:MS:AVER:COUN 2");
                    _MXA_N9020A.Write(":TRIG:RHO:MS:SOUR EXT1");

                    // Channel Power
                    _MXA_N9020A.Write(":CONF:CHP");
                    _MXA_N9020A.Write(":SENS:CHP:AVER ON");
                    _MXA_N9020A.Write(":SENS:CHP:AVER:TCON REP");
                    _MXA_N9020A.Write(":SENS:CHP:AVER:COUN 64");
                    _MXA_N9020A.Write(":CHP:SWE:TIME 10ms");
                    _MXA_N9020A.Write(":TRAC:CHP:TYPE AVER");
                    _MXA_N9020A.Write(":TRIG:CHP:SOUR EXT1");


                    Wait();
                    #endregion --- EVDO ---
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
예제 #35
0
        /// <summary>
        /// Find a provider given the broadcast parameters.
        /// </summary>
        /// <param name="channelNumber">The channel number of the provider.</param>
        /// <param name="frequency">The frequency of the provider.</param>
        /// <param name="symbolRate">The symbol rate of the provider.</param>
        /// <param name="fecRate">The FEC rate of the provider.</param>
        /// <param name="modulation">The modulation of the provider.</param>
        /// <returns>The provider or null if it cannot be located.</returns>
        public static AtscProvider FindProvider(int channelNumber, int frequency, int symbolRate, FECRate fecRate, Modulation modulation)
        {
            if (fecRate == null)
                throw (new ArgumentException("The FEC rate cannot be null", "fecRate"));

            foreach (AtscProvider provider in Providers)
            {
                foreach (AtscFrequency atscFrequency in provider.Frequencies)
                {
                    if (atscFrequency.ChannelNumber == channelNumber &&
                        atscFrequency.Frequency == frequency &&
                        atscFrequency.SymbolRate == symbolRate &&
                        atscFrequency.FEC.Rate == fecRate.Rate &&
                        atscFrequency.Modulation == modulation)
                        return (provider);
                }
            }

            return (null);
        }
예제 #36
0
 /// <summary>
 /// Initialize a new instance of the TuningSpec class for a Clear QAM frequency.
 /// </summary>
 /// <param name="frequency">The frequency to tune to.</param>
 public TuningSpec(ClearQamFrequency frequency)
 {
     this.frequency = frequency;
     symbolRate = frequency.SymbolRate;
     fec = frequency.FEC;
     modulation = frequency.Modulation;
     channelNumber = frequency.ChannelNumber;
 }
예제 #37
0
 internal void load(XmlReader reader)
 {
     switch (reader.Name)
     {
         case "ChannelNumber":
             ChannelNumber = Int32.Parse(reader.ReadString(), CultureInfo.InvariantCulture);
             break;
         case "CarrierFrequency":
             Frequency = Int32.Parse(reader.ReadString(), CultureInfo.InvariantCulture);
             break;
         case "SymbolRate":
             symbolRate = Int32.Parse(reader.ReadString(), CultureInfo.InvariantCulture);
             break;
         case "Modulation":
             switch (reader.ReadString())
             {
                 case "BPSK":
                     modulation = Modulation.BPSK;
                     break;
                 case "OQPSK":
                     modulation = Modulation.OQPSK;
                     break;
                 case "PSK8":
                     modulation = Modulation.PSK8;
                     break;
                 case "QAM1024":
                     modulation = Modulation.QAM1024;
                     break;
                 case "QAM112":
                     modulation = Modulation.QAM112;
                     break;
                 case "QAM128":
                     modulation = Modulation.QAM128;
                     break;
                 case "QAM16":
                     modulation = Modulation.QAM16;
                     break;
                 case "QAM160":
                     modulation = Modulation.QAM160;
                     break;
                 case "QAM192":
                     modulation = Modulation.QAM192;
                     break;
                 case "QAM224":
                     modulation = Modulation.QAM224;
                     break;
                 case "QAM256":
                     modulation = Modulation.QAM256;
                     break;
                 case "QAM32":
                     modulation = Modulation.QAM32;
                     break;
                 case "QAM320":
                     modulation = Modulation.QAM320;
                     break;
                 case "QAM384":
                     modulation = Modulation.QAM384;
                     break;
                 case "QAM448":
                     modulation = Modulation.QAM448;
                     break;
                 case "QAM512":
                     modulation = Modulation.QAM512;
                     break;
                 case "QAM64":
                     modulation = Modulation.QAM64;
                     break;
                 case "QAM640":
                     modulation = Modulation.QAM640;
                     break;
                 case "QAM768":
                     modulation = Modulation.QAM768;
                     break;
                 case "QAM80":
                     modulation = Modulation.QAM80;
                     break;
                 case "QAM896":
                     modulation = Modulation.QAM896;
                     break;
                 case "QAM96":
                     modulation = Modulation.QAM96;
                     break;
                 case "QPSK":
                     modulation = Modulation.QPSK;
                     break;
                 case "VSB16":
                     modulation = Modulation.VSB16;
                     break;
                 case "VSB8":
                     modulation = Modulation.VSB8;
                     break;
             }
             break;
         case "InnerFecRate":
             switch (reader.ReadString())
             {
                 case "Rate1_2":
                     fec = new FECRate(FECRate.FECRate12);
                     break;
                 case "Rate1_3":
                     fec = new FECRate(FECRate.FECRate13);
                     break;
                 case "Rate1_4":
                     fec = new FECRate(FECRate.FECRate14);
                     break;
                 case "Rate2_3":
                     fec = new FECRate(FECRate.FECRate23);
                     break;
                 case "Rate2_5":
                     fec = new FECRate(FECRate.FECRate25);
                     break;
                 case "Rate3_4":
                     fec = new FECRate(FECRate.FECRate34);
                     break;
                 case "Rate3_5":
                     fec = new FECRate(FECRate.FECRate35);
                     break;
                 case "Rate4_5":
                     fec = new FECRate(FECRate.FECRate45);
                     break;
                 case "Rate5_11":
                     fec = new FECRate(FECRate.FECRate511);
                     break;
                 case "Rate5_6":
                     fec = new FECRate(FECRate.FECRate56);
                     break;
                 case "Rate6_7":
                     fec = new FECRate(FECRate.FECRate67);
                     break;
                 case "Rate7_8":
                     fec = new FECRate(FECRate.FECRate78);
                     break;
                 case "Rate8_9":
                     fec = new FECRate(FECRate.FECRate89);
                     break;
                 case "Rate9_10":
                     fec = new FECRate(FECRate.FECRate910);
                     break;
             }
             break;
         case "CollectionType":
             switch (reader.ReadString())
             {
                 case "EIT":
                     CollectionType = CollectionType.EIT;
                     break;
                 case "MHEG5":
                     CollectionType = CollectionType.MHEG5;
                     break;
                 case "OPENTV":
                     CollectionType = CollectionType.OpenTV;
                     break;
                 case "MHW1":
                     CollectionType = CollectionType.MediaHighway1;
                     break;
                 case "MHW2":
                     CollectionType = CollectionType.MediaHighway2;
                     break;
                 case "FREESAT":
                     CollectionType = CollectionType.FreeSat;
                     break;
                 case "PSIP":
                     CollectionType = CollectionType.PSIP;
                     break;
                 case "DISHNETWORK":
                     CollectionType = CollectionType.DishNetwork;
                     break;
                 case "BELLTV":
                     CollectionType = CollectionType.BellTV;
                     break;
                 case "SIEHFERNINFO":
                     CollectionType = CollectionType.SiehfernInfo;
                     break;
             }
             break;
         default:
             break;
     }
 }
예제 #38
0
 /// <summary>
 /// Initialize a new instance of the TuningSpec class for a DVB cable frequency.
 /// </summary>
 /// <param name="frequency">The frequency to tune to.</param>
 public TuningSpec(CableFrequency frequency)
 {
     this.frequency = frequency;
     symbolRate = frequency.SymbolRate;
     fec = frequency.FEC;
     modulation = frequency.Modulation;
 }
예제 #39
0
        public void Mode_Initialize(Modulation mode, string Waveform_Name)
        {
            ESG_E4438C.Write(":SOUR:RAD:ARB OFF");

            try
            {
                if (mode == Modulation.WCDMA)
                {
                    #region Content
                    ESG_E4438C.Write(":MEM:COPY \"NVWFM:" + Waveform_Name + "\",\"WFM1:" + Waveform_Name + "\"");
                    string cmd = ":SOUR:RAD:ARB:WAV " + '"' + Waveform_Name + '"';
                    ESG_E4438C.Write(cmd);
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:TYPE CONT");
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:TYPE:CONT FREE");
                    ESG_E4438C.Write(":SOUR:RAD:ARB ON");
                    ESG_E4438C.Write("OUTP:MOD:STAT ON");
                    ESG_E4438C.Write("OUTP:STAT OFF");
                    Wait();
                    #endregion
                }
                else if (mode == Modulation.TDSCDMA)
                {
                    #region Content
                    ESG_E4438C.Write(":MEM:COPY \"NVWFM:" + Waveform_Name  + "\",\"WFM1:"  + Waveform_Name + "\"");
                    string cmd = ":SOUR:RAD:ARB:WAV " + '"' + Waveform_Name + '"';
                    ESG_E4438C.Write(cmd);
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:EXT:SLOP POS");
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:TYPE CONT");
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:TYPE:CONT TRIG");
                    ESG_E4438C.Write(":SOUR:RAD:ARB ON");
                    ESG_E4438C.Write("OUTP:MOD:STAT ON");
                    ESG_E4438C.Write("OUTP:STAT OFF");
                    Wait();
                    #endregion
                }
                else if (mode == Modulation.EDGE)
                {
                    #region Content
                    ESG_E4438C.Write(":MEM:COPY \"NVWFM:" + Waveform_Name + "\",\"WFM1:" + Waveform_Name + "\"");
                    string cmd = ":SOUR:RAD:ARB:WAV " + '"' + Waveform_Name + '"';
                    ESG_E4438C.Write(cmd);
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:EXT:SLOP POS");
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:TYPE CONT");
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:TYPE:CONT FREE");
                    //ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:TYPE:CONT RES");
                    ESG_E4438C.Write(":SOUR:RAD:ARB ON");
                    ESG_E4438C.Write("OUTP:MOD:STAT ON");
                    ESG_E4438C.Write("OUTP:STAT OFF");
                    Wait();
                    #endregion Content
                }
                else if (mode == Modulation.LTETDD)
                {
                    #region Content
                    ESG_E4438C.Write(":MEM:COPY \"NVWFM:" + Waveform_Name + "\",\"WFM1:" + Waveform_Name + "\"");
                    string cmd = ":SOUR:RAD:ARB:WAV " + '"' + Waveform_Name + '"';
                    ESG_E4438C.Write(cmd);
                    ESG_E4438C.Write(":SOUR:RAD:ARB ON");
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:EXT:SLOP POS");
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:TYPE CONT");
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:TYPE:CONT TRIG");
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:EXT:DEL 3.00ms");
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:EXT:DEL:STAT OFF");
                    ESG_E4438C.Write("OUTP:MOD:STAT ON");
                    ESG_E4438C.Write("OUTP:STAT OFF");
                    Wait();
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:EXT:DEL:STAT ON");
                    Wait();
                    #endregion Content
                }
                else if (mode == Modulation.LTEFDD)
                {
                    #region Content
                    ESG_E4438C.Write(":MEM:COPY \"NVWFM:" + Waveform_Name + "\",\"WFM1:" + Waveform_Name + "\"");
                    string cmd = ":SOUR:RAD:ARB:WAV " + '"' + Waveform_Name + '"';
                    ESG_E4438C.Write(cmd);
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:TYPE CONT");
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:TYPE:CONT FREE");
                    ESG_E4438C.Write(":SOUR:RAD:ARB ON");
                    ESG_E4438C.Write("OUTP:MOD:STAT ON");
                    ESG_E4438C.Write("OUTP:STAT OFF");
                    Wait();
                    #endregion
                }
                else if (mode == Modulation.CDMA)
                {
                    #region Content
                    ESG_E4438C.Write(":MEM:COPY \"NVWFM:" + Waveform_Name + "\",\"WFM1:" + Waveform_Name + "\"");
                    string cmd = ":SOUR:RAD:ARB:WAV " + '"' + Waveform_Name + '"';
                    ESG_E4438C.Write(cmd);
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:TYPE CONT");
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:TYPE:CONT FREE");
                    ESG_E4438C.Write(":SOUR:RAD:ARB ON");
                    ESG_E4438C.Write("OUTP:MOD:STAT ON");
                    ESG_E4438C.Write("OUTP:STAT OFF");
                    Wait();
                    #endregion
                }
                else if (mode == Modulation.EVDO)
                {
                    #region Content
                    ESG_E4438C.Write(":MEM:COPY \"NVWFM:" + Waveform_Name + "\",\"WFM1:" + Waveform_Name + "\"");
                    string cmd = ":SOUR:RAD:ARB:WAV " + '"' + Waveform_Name + '"';
                    ESG_E4438C.Write(cmd);
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:TYPE CONT");
                    ESG_E4438C.Write(":SOUR:RAD:ARB:TRIG:TYPE:CONT FREE");
                    ESG_E4438C.Write(":SOUR:RAD:ARB ON");
                    ESG_E4438C.Write("OUTP:MOD:STAT ON");
                    ESG_E4438C.Write("OUTP:STAT OFF");
                    Wait();
                    #endregion
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }

        }
예제 #40
0
 internal void load(XmlReader reader)
 {
     switch (reader.Name)
     {
         case "CarrierFrequency":
             Frequency = Int32.Parse(reader.ReadString());
             break;
         case "Polarisation":
             switch (reader.ReadString())
             {
                 case "CircularL":
                     polarization = new SignalPolarization(SignalPolarization.CircularLeft);
                     break;
                 case "CircularR":
                     polarization = new SignalPolarization(SignalPolarization.CircularRight);
                     break;
                 case "LinearH":
                     polarization = new SignalPolarization(SignalPolarization.LinearHorizontal);
                     break;
                 case "LinearV":
                     polarization = new SignalPolarization(SignalPolarization.LinearVertical);
                     break;
             }
             break;
         case "SymbolRate":
             symbolRate = Int32.Parse(reader.ReadString());
             break;
         case "InnerFecRate":
             switch (reader.ReadString())
             {
                 case "Rate1_2":
                     fec = new FECRate(FECRate.FECRate12);
                     break;
                 case "Rate1_3":
                     fec = new FECRate(FECRate.FECRate13);
                     break;
                 case "Rate1_4":
                     fec = new FECRate(FECRate.FECRate14);
                     break;
                 case "Rate2_3":
                     fec = new FECRate(FECRate.FECRate23);
                     break;
                 case "Rate2_5":
                     fec = new FECRate(FECRate.FECRate25);
                     break;
                 case "Rate3_4":
                     fec = new FECRate(FECRate.FECRate34);
                     break;
                 case "Rate3_5":
                     fec = new FECRate(FECRate.FECRate35);
                     break;
                 case "Rate4_5":
                     fec = new FECRate(FECRate.FECRate45);
                     break;
                 case "Rate5_11":
                     fec = new FECRate(FECRate.FECRate511);
                     break;
                 case "Rate5_6":
                     fec = new FECRate(FECRate.FECRate56);
                     break;
                 case "Rate6_7":
                     fec = new FECRate(FECRate.FECRate67);
                     break;
                 case "Rate7_8":
                     fec = new FECRate(FECRate.FECRate78);
                     break;
                 case "Rate8_9":
                     fec = new FECRate(FECRate.FECRate89);
                     break;
                 case "Rate9_10":
                     fec = new FECRate(FECRate.FECRate910);
                     break;
             }
             break;
         case "CollectionType":
             switch (reader.ReadString())
             {
                 case "EIT":
                     CollectionType = CollectionType.EIT;
                     break;
                 case "MHEG5":
                     CollectionType = CollectionType.MHEG5;
                     break;
                 case "OPENTV":
                     CollectionType = CollectionType.OpenTV;
                     break;
                 case "MHW1":
                     CollectionType = CollectionType.MediaHighway1;
                     break;
                 case "MHW2":
                     CollectionType = CollectionType.MediaHighway2;
                     break;
                 case "FREESAT":
                     CollectionType = CollectionType.FreeSat;
                     break;
                 case "PSIP":
                     CollectionType = CollectionType.PSIP;
                     break;
                 case "DISHNETWORK":
                     CollectionType = CollectionType.DishNetwork;
                     break;
                 case "BELLTV":
                     CollectionType = CollectionType.BellTV;
                     break;
                 case "SIEHFERNINFO":
                     CollectionType = CollectionType.SiehfernInfo;
                     break;
             }
             break;
         case "Pilot":
             switch (reader.ReadString())
             {
                 case "NotSet":
                     pilot = Pilot.NotSet;
                     break;
                 case "NotDefined":
                     pilot = Pilot.NotDefined;
                     break;
                 case "On":
                     pilot = Pilot.On;
                     break;
                 case "Off":
                     pilot = Pilot.Off;
                     break;
                 default:
                     pilot = Pilot.NotSet;
                     break;
             }
             break;
         case "Rolloff":
             switch (reader.ReadString())
             {
                 case "NotSet":
                     rollOff = RollOff.NotSet;
                     break;
                 case "NotDefined":
                     rollOff = RollOff.NotDefined;
                     break;
                 case "Twenty":
                     rollOff = RollOff.RollOff20;
                     break;
                 case "TwentyFive":
                     rollOff = RollOff.RollOff25;
                     break;
                 case "ThirtyFive":
                     rollOff = RollOff.RollOff35;
                     break;
                 default:
                     rollOff = RollOff.NotSet;
                     break;
             }
             break;
         case "Modulation":
             switch (reader.ReadString())
             {
                 case "ModBPSK":
                     modulation = Modulation.BPSK;
                     break;
                 case "ModOQPSK":
                     modulation = Modulation.OQPSK;
                     break;
                 case "Mod8Psk":
                     modulation = Modulation.PSK8;
                     break;
                 case "Mod1024Qam":
                     modulation = Modulation.QAM1024;
                     break;
                 case "Mod112Qam":
                     modulation = Modulation.QAM112;
                     break;
                 case "Mod128Qam":
                     modulation = Modulation.QAM128;
                     break;
                 case "Mod16Qam":
                     modulation = Modulation.QAM16;
                     break;
                 case "Mod160Qam":
                     modulation = Modulation.QAM160;
                     break;
                 case "Mod192Qam":
                     modulation = Modulation.QAM192;
                     break;
                 case "Mod224Qam":
                     modulation = Modulation.QAM224;
                     break;
                 case "Mod256Qam":
                     modulation = Modulation.QAM256;
                     break;
                 case "Mod32Qam":
                     modulation = Modulation.QAM32;
                     break;
                 case "Mod320Qam":
                     modulation = Modulation.QAM320;
                     break;
                 case "Mod384Qam":
                     modulation = Modulation.QAM384;
                     break;
                 case "Mod448Qam":
                     modulation = Modulation.QAM448;
                     break;
                 case "Mod512Qam":
                     modulation = Modulation.QAM512;
                     break;
                 case "Mod64Qam":
                     modulation = Modulation.QAM64;
                     break;
                 case "Mod640Qam":
                     modulation = Modulation.QAM640;
                     break;
                 case "Mod768Qam":
                     modulation = Modulation.QAM768;
                     break;
                 case "Mod80Qam":
                     modulation = Modulation.QAM80;
                     break;
                 case "Mod896Qam":
                     modulation = Modulation.QAM896;
                     break;
                 case "Mod96Qam":
                     modulation = Modulation.QAM96;
                     break;
                 case "ModQPSK":
                     modulation = Modulation.QPSK;
                     break;
             }
             break;
         case "OpenTVCode":
             OpenTVCode = reader.ReadString();
             break;
         default:
             break;
     }
 }
예제 #41
0
 public static List<WizardConfig> createWizardDescriptorFromXLS(bool enableAFC, Modulation modulation, double dataRate)
 {
     List<WizardConfig> list = new List<WizardConfig>();
     ResourceManager manager = new ResourceManager("NewWDS.Applications.App_Si4455.App_Si4455_Resource", Assembly.GetExecutingAssembly());
     ExcelCalculatorAPISpreadsheetGear gear = new ExcelCalculatorAPISpreadsheetGear((byte[]) manager.GetObject("EZR2WizardData_v0_2B"));
     int workSheetNumber = 0;
     if (modulation == Modulation.OOK)
     {
         workSheetNumber = 1;
     }
     if (!enableAFC)
     {
         workSheetNumber += 2;
     }
     gear.WriteCell(workSheetNumber, "B4", dataRate.ToString("0.###"));
     int[] numArray = new int[] { 7, 20, 0x1d };
     for (int i = 0; i < numArray.Length; i++)
     {
         for (int j = numArray[i]; gear.ReadCell(workSheetNumber, "B" + j.ToString()) != ""; j++)
         {
             try
             {
                 WizardConfig item = new WizardConfig {
                     AFCEnabled = enableAFC,
                     Modulation = modulation,
                     DataRate = dataRate,
                     Region = (UsingRegion) Enum.Parse(typeof(UsingRegion), gear.ReadCell(workSheetNumber, "B" + j.ToString()), true)
                 };
                 string[] strArray = gear.ReadCell(workSheetNumber, "C" + j.ToString()).Split(new char[] { '-' });
                 double[] numArray2 = new double[Math.Min(strArray.Length, 2)];
                 if (((strArray.Length < 2) || !WDSConverters.ParseDouble(strArray[0], out numArray2[0])) || !WDSConverters.ParseDouble(strArray[1], out numArray2[1]))
                 {
                     throw new Exception("Could not parse Frequency band: " + gear.ReadCell(workSheetNumber, "B" + j.ToString()).Split(new char[] { '-' }));
                 }
                 item.FrequencyBand = new FreqRange();
                 item.FrequencyBand.LowEnd = numArray2[0];
                 item.FrequencyBand.HighEnd = numArray2[1];
                 string[] strArray2 = gear.ReadCell(workSheetNumber, "D" + j.ToString()).Split(new char[] { '-' });
                 double[] numArray3 = new double[Math.Min(strArray2.Length, 2)];
                 if (((strArray2.Length < 2) || !WDSConverters.ParseDouble(strArray2[0], out numArray3[0])) || !WDSConverters.ParseDouble(strArray2[1], out numArray3[1]))
                 {
                     throw new Exception("Could not parse Xtal tolerance: " + gear.ReadCell(workSheetNumber, "D" + j.ToString()).Split(new char[] { '-' }));
                 }
                 item.CrystalTolerance = (int) ((numArray3[0] + numArray3[1]) / 2.0);
                 double[] numArray4 = new double[4];
                 WDSConverters.ParseDouble(gear.ReadCell(workSheetNumber, "F" + j.ToString()), out numArray4[0]);
                 WDSConverters.ParseDouble(gear.ReadCell(workSheetNumber, "G" + j.ToString()), out numArray4[1]);
                 WDSConverters.ParseDouble(gear.ReadCell(workSheetNumber, "H" + j.ToString()), out numArray4[2]);
                 WDSConverters.ParseDouble(gear.ReadCell(workSheetNumber, "I" + j.ToString()), out numArray4[3]);
                 item.RangeIndorMax = (int) numArray4[0];
                 item.RangeIndorAllowed = (int) numArray4[1];
                 item.RangeOutdorMax = (int) numArray4[2];
                 item.RangeOutdorAllowed = (int) numArray4[3];
                 string[] strArray3 = gear.ReadCell(workSheetNumber, "J" + j.ToString()).Split(new char[] { ';' });
                 double[] numArray5 = new double[Math.Min(strArray3.Length, 2)];
                 if (((strArray3.Length < 3) || !WDSConverters.ParseDouble(strArray3[1], out numArray5[0])) || !WDSConverters.ParseDouble(strArray3[2], out numArray5[1]))
                 {
                     throw new Exception("Could not parse TX options: " + gear.ReadCell(workSheetNumber, "J" + j.ToString()).Split(new char[] { '-' }));
                 }
                 item.AntennaType = strArray3[0];
                 item.ConductedPower = numArray5[0];
                 item.CurrentDriven = numArray5[1];
                 item.Description = gear.ReadCell(workSheetNumber, "K" + j.ToString());
                 item.Standards = gear.ReadCell(workSheetNumber, "L" + j.ToString());
                 if (item.Standards.Contains("~"))
                 {
                     string strValue = item.Standards.Split(new char[] { '~' })[1].Trim();
                     if (strValue.EndsWith("dBm"))
                     {
                         strValue = strValue.Substring(0, strValue.Length - 3);
                     }
                     double num4 = 0.0;
                     WDSConverters.ParseDouble(strValue, out num4);
                     item.DbmDiff = num4;
                 }
                 item.AntennaGain = gear.ReadCell(workSheetNumber, "M" + j.ToString());
                 item.TxEirps = gear.ReadCell(workSheetNumber, "N" + j.ToString());
                 double doubleValue = 0.0;
                 WDSConverters.ParseDouble(gear.ReadCell(workSheetNumber, "R" + j.ToString()), out doubleValue);
                 item.CurrentDriven = doubleValue;
                 string str2 = gear.ReadCell(workSheetNumber, "Q" + j.ToString());
                 byte result = 0x4f;
                 if (str2.StartsWith("0x") && (str2.Length >= 4))
                 {
                     byte.TryParse(str2.Substring(2, 2), NumberStyles.HexNumber, (IFormatProvider) null, out result);
                 }
                 item.PowerSetting = result;
                 string str3 = "";
                 if (item.Standards.Contains("~"))
                 {
                     str3 = item.Standards.Split(new char[] { '~' })[1];
                 }
                 else if (item.TxEirps.Contains("~"))
                 {
                     str3 = item.TxEirps.Split(new char[] { '~' })[1];
                 }
                 if ((str3 != "") && str3.EndsWith("dBm"))
                 {
                     double num7 = 0.0;
                     if (WDSConverters.ParseDouble(str3.Substring(0, str3.Length - 3), out num7))
                     {
                         item.ConductedPower = num7;
                     }
                 }
                 list.Add(item);
             }
             catch (Exception exception)
             {
                 _log.Error("Could not create Si4455 Wizard configuration. " + exception.Message);
             }
         }
     }
     return list;
 }
예제 #42
0
        internal void load(XmlReader reader)
        {
            switch (reader.Name)
            {
            case "ChannelNumber":
                ChannelNumber = Int32.Parse(reader.ReadString(), CultureInfo.InvariantCulture);
                break;

            case "CarrierFrequency":
                Frequency = Int32.Parse(reader.ReadString(), CultureInfo.InvariantCulture);
                break;

            case "SymbolRate":
                symbolRate = Int32.Parse(reader.ReadString(), CultureInfo.InvariantCulture);
                break;

            case "Modulation":
                switch (reader.ReadString())
                {
                case "BPSK":
                    modulation = Modulation.BPSK;
                    break;

                case "OQPSK":
                    modulation = Modulation.OQPSK;
                    break;

                case "PSK8":
                    modulation = Modulation.PSK8;
                    break;

                case "QAM1024":
                    modulation = Modulation.QAM1024;
                    break;

                case "QAM112":
                    modulation = Modulation.QAM112;
                    break;

                case "QAM128":
                    modulation = Modulation.QAM128;
                    break;

                case "QAM16":
                    modulation = Modulation.QAM16;
                    break;

                case "QAM160":
                    modulation = Modulation.QAM160;
                    break;

                case "QAM192":
                    modulation = Modulation.QAM192;
                    break;

                case "QAM224":
                    modulation = Modulation.QAM224;
                    break;

                case "QAM256":
                    modulation = Modulation.QAM256;
                    break;

                case "QAM32":
                    modulation = Modulation.QAM32;
                    break;

                case "QAM320":
                    modulation = Modulation.QAM320;
                    break;

                case "QAM384":
                    modulation = Modulation.QAM384;
                    break;

                case "QAM448":
                    modulation = Modulation.QAM448;
                    break;

                case "QAM512":
                    modulation = Modulation.QAM512;
                    break;

                case "QAM64":
                    modulation = Modulation.QAM64;
                    break;

                case "QAM640":
                    modulation = Modulation.QAM640;
                    break;

                case "QAM768":
                    modulation = Modulation.QAM768;
                    break;

                case "QAM80":
                    modulation = Modulation.QAM80;
                    break;

                case "QAM896":
                    modulation = Modulation.QAM896;
                    break;

                case "QAM96":
                    modulation = Modulation.QAM96;
                    break;

                case "QPSK":
                    modulation = Modulation.QPSK;
                    break;

                case "VSB16":
                    modulation = Modulation.VSB16;
                    break;

                case "VSB8":
                    modulation = Modulation.VSB8;
                    break;
                }
                break;

            case "InnerFecRate":
                switch (reader.ReadString())
                {
                case "Rate1_2":
                    fec = new FECRate(FECRate.FECRate12);
                    break;

                case "Rate1_3":
                    fec = new FECRate(FECRate.FECRate13);
                    break;

                case "Rate1_4":
                    fec = new FECRate(FECRate.FECRate14);
                    break;

                case "Rate2_3":
                    fec = new FECRate(FECRate.FECRate23);
                    break;

                case "Rate2_5":
                    fec = new FECRate(FECRate.FECRate25);
                    break;

                case "Rate3_4":
                    fec = new FECRate(FECRate.FECRate34);
                    break;

                case "Rate3_5":
                    fec = new FECRate(FECRate.FECRate35);
                    break;

                case "Rate4_5":
                    fec = new FECRate(FECRate.FECRate45);
                    break;

                case "Rate5_11":
                    fec = new FECRate(FECRate.FECRate511);
                    break;

                case "Rate5_6":
                    fec = new FECRate(FECRate.FECRate56);
                    break;

                case "Rate6_7":
                    fec = new FECRate(FECRate.FECRate67);
                    break;

                case "Rate7_8":
                    fec = new FECRate(FECRate.FECRate78);
                    break;

                case "Rate8_9":
                    fec = new FECRate(FECRate.FECRate89);
                    break;

                case "Rate9_10":
                    fec = new FECRate(FECRate.FECRate910);
                    break;
                }
                break;

            case "CollectionType":
                switch (reader.ReadString())
                {
                case "EIT":
                    CollectionType = CollectionType.EIT;
                    break;

                case "MHEG5":
                    CollectionType = CollectionType.MHEG5;
                    break;

                case "OPENTV":
                    CollectionType = CollectionType.OpenTV;
                    break;

                case "MHW1":
                    CollectionType = CollectionType.MediaHighway1;
                    break;

                case "MHW2":
                    CollectionType = CollectionType.MediaHighway2;
                    break;

                case "FREESAT":
                    CollectionType = CollectionType.FreeSat;
                    break;

                case "PSIP":
                    CollectionType = CollectionType.PSIP;
                    break;

                case "DISHNETWORK":
                    CollectionType = CollectionType.DishNetwork;
                    break;

                case "BELLTV":
                    CollectionType = CollectionType.BellTV;
                    break;

                case "SIEHFERNINFO":
                    CollectionType = CollectionType.SiehfernInfo;
                    break;
                }
                break;

            default:
                break;
            }
        }
예제 #43
0
        /// <summary>
        /// Find a provider given the broadcast parameters.
        /// </summary>
        /// <param name="channelNumber">The channel number of the provider.</param>
        /// <param name="frequency">The frequency of the provider.</param>
        /// <param name="symbolRate">The symbol rate of the provider.</param>
        /// <param name="fecRate">The FEC rate of the provider.</param>
        /// <param name="modulation">The modulation of the provider.</param>
        /// <returns>The provider or null if it cannot be located.</returns>
        public static ClearQamProvider FindProvider(int channelNumber, int frequency, int symbolRate, FECRate fecRate, Modulation modulation)
        {
            foreach (ClearQamProvider provider in Providers)
            {
                foreach (ClearQamFrequency atscFrequency in provider.Frequencies)
                {
                    if (atscFrequency.ChannelNumber == channelNumber &&
                        atscFrequency.Frequency == frequency &&
                        atscFrequency.SymbolRate == symbolRate &&
                        atscFrequency.FEC.Rate == fecRate.Rate &&
                        atscFrequency.Modulation == modulation)
                        return (provider);
                }
            }

            return (null);
        }