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); }
/// <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; }
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); } }
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); }
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); }
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); }
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(); }
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; }
/// <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; }
/// <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; }
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); }
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); }
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); }
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 }
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); }
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); } }
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); } }
/// <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()); }
/// <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); }
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); } }
/// <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); }
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; } }
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); } } }
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; } }
/// <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); }
/// <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()); }
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); } }
/// <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); }
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); } }
/// <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); }
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; } }
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); } }
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; }
/// <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); }