예제 #1
0
        public DVBSTuning()
        {
            InitializeComponent();

            int hr = 0;

            this.tuningSpace = (IDVBSTuningSpace) new DVBSTuningSpace();
            hr = this.tuningSpace.put_UniqueName("DVBS TuningSpace");
            hr = this.tuningSpace.put_FriendlyName("DVBS TuningSpace");
            hr = this.tuningSpace.put__NetworkType(typeof(DVBSNetworkProvider).GUID);
            hr = this.tuningSpace.put_SystemType(DVBSystemType.Satellite);
            hr = this.tuningSpace.put_LowOscillator(9750000);
            hr = this.tuningSpace.put_HighOscillator(10600000);

            ITuneRequest tr = null;

            hr = this.tuningSpace.CreateTuneRequest(out tr);
            DsError.ThrowExceptionForHR(hr);

            this.tuneRequest = (IDVBTuneRequest)tr;

            hr = this.tuneRequest.put_ONID(-1);
            hr = this.tuneRequest.put_TSID(-1);
            hr = this.tuneRequest.put_SID(-1);

            IDVBSLocator locator = (IDVBSLocator) new DVBSLocator();

            hr = locator.put_CarrierFrequency(-1);
            hr = locator.put_SymbolRate(-1);
            hr = tr.put_Locator(locator as ILocator);
        }
예제 #2
0
        public DVBSTuning()
        {
            InitializeComponent();

              int hr = 0;

              this.tuningSpace = (IDVBSTuningSpace) new DVBSTuningSpace();
              hr = this.tuningSpace.put_UniqueName("DVBS TuningSpace");
              hr = this.tuningSpace.put_FriendlyName("DVBS TuningSpace");
              hr = this.tuningSpace.put__NetworkType(typeof(DVBSNetworkProvider).GUID);
              hr = this.tuningSpace.put_SystemType(DVBSystemType.Satellite);
              hr = this.tuningSpace.put_LowOscillator(9750000);
              hr = this.tuningSpace.put_HighOscillator(10600000);

              ITuneRequest tr = null;

              hr = this.tuningSpace.CreateTuneRequest(out tr);
              DsError.ThrowExceptionForHR(hr);

              this.tuneRequest = (IDVBTuneRequest) tr;

              hr = this.tuneRequest.put_ONID(-1);
              hr = this.tuneRequest.put_TSID(-1);
              hr = this.tuneRequest.put_SID(-1);

              IDVBSLocator locator = (IDVBSLocator) new DVBSLocator();
              hr = locator.put_CarrierFrequency(-1);
              hr = locator.put_SymbolRate(-1);
              hr = tr.put_Locator(locator as ILocator);
        }
예제 #3
0
        public void DoTests()
        {
            try
            {
                // No special HW required for this sample
                tuningSpace = (IDVBSTuningSpace)BDAUtils.GetTuningSpace(BDANetworkType.DVBS);

                TestHighOscillator();
                TestInputRange();
                TestLNBSwitch();
                TestLowOscillator();
                TestSpectralInversion();
            }
            finally
            {
                Marshal.ReleaseComObject(tuningSpace);
            }
        }
예제 #4
0
        /// <summary>
        /// Nettoyage des ressources utilisées.
        /// </summary>
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (components != null)
                {
                    components.Dispose();
                }

                // Release the COM objects
                if (this.tuneRequest != null)
                {
                    Marshal.ReleaseComObject(this.tuneRequest);
                    this.tuneRequest = null;
                }

                if (this.tuningSpace != null)
                {
                    Marshal.ReleaseComObject(this.tuningSpace);
                    this.tuningSpace = null;
                }
            }
            base.Dispose(disposing);
        }
예제 #5
0
        private bool BeforeTune(ref int subChannelId, IChannel channel)
        {
            DVBSChannel dvbsChannel = channel as DVBSChannel;

            if (dvbsChannel == null)
            {
                Log.Log.WriteFile("Channel is not a DVBS channel!!! {0}", channel.GetType().ToString());
                return(false);
            }

            /*if (CurrentChannel != null)
             * {
             * //@FIX this fails for back-2-back recordings
             * //if (oldChannel.Equals(channel)) return _mapSubChannels[0];
             * }*/
            if (dvbsChannel.SwitchingFrequency < 10)
            {
                dvbsChannel.SwitchingFrequency = 11700000;
            }
            Log.Log.WriteFile("dvbs:  Tune:{0}", channel);
            if (_graphState == GraphState.Idle)
            {
                BuildGraph();
            }
            if (_mapSubChannels.ContainsKey(subChannelId) == false)
            {
                subChannelId = GetNewSubChannel(channel);
            }
            if (useInternalNetworkProvider)
            {
                //set the DisEqC parameters
                if (_conditionalAccess != null)
                {
                    //int hr2 = ((IMediaControl)_graphBuilder).Pause();
                    _diseqCsucceded = _conditionalAccess.SendDiseqcCommand(_parameters, dvbsChannel);
                    //hr2 = ((IMediaControl)_graphBuilder).Run();

                    //move diseqc motor to correct satellite
                    if (dvbsChannel != null && dvbsChannel.SatelliteIndex > 0 && _conditionalAccess.DiSEqCMotor != null)
                    {
                        _conditionalAccess.DiSEqCMotor.GotoPosition((byte)dvbsChannel.SatelliteIndex);
                    }
                }
                return(true);
            }

            if (_previousChannel == null || _previousChannel.IsDifferentTransponder(dvbsChannel))
            {
                //_pmtPid = -1;
                ILocator locator;
                int      lowOsc;
                int      hiOsc;
                int      lnbSwitch;
                BandTypeConverter.GetDefaultLnbSetup(Parameters, dvbsChannel.BandType, out lowOsc, out hiOsc, out lnbSwitch);
                Log.Log.Info("LNB low:{0} hi:{1} switch:{2}", lowOsc, hiOsc, lnbSwitch);
                if (lnbSwitch == 0)
                {
                    lnbSwitch = 18000;
                }
                IDVBSTuningSpace tuningSpace = (IDVBSTuningSpace)_tuningSpace;
                tuningSpace.put_LNBSwitch(lnbSwitch * 1000);
                tuningSpace.put_LowOscillator(lowOsc * 1000);
                tuningSpace.put_HighOscillator(hiOsc * 1000);
                ITuneRequest request;
                _tuningSpace.CreateTuneRequest(out request);
                _tuneRequest = (IDVBTuneRequest)request;
                _tuningSpace.get_DefaultLocator(out locator);
                IDVBSLocator    dvbsLocator = (IDVBSLocator)locator;
                IDVBTuneRequest tuneRequest = (IDVBTuneRequest)_tuneRequest;
                tuneRequest.put_ONID(dvbsChannel.NetworkId);
                tuneRequest.put_SID(dvbsChannel.ServiceId);
                tuneRequest.put_TSID(dvbsChannel.TransportId);
                locator.put_CarrierFrequency((int)dvbsChannel.Frequency);
                dvbsLocator.put_SymbolRate(dvbsChannel.SymbolRate);
                dvbsLocator.put_SignalPolarisation(dvbsChannel.Polarisation);

                // Set DVB-S2 and manufacturer specific tuning parameters here.
                //-------------------------------------------------------------------
                // Important: the original dvbsChannel object *must not* be modified
                // otherwise IsDifferentTransponder() will sometimes returns true
                // when it shouldn't. See mantis 0002979.
                //-------------------------------------------------------------------
                DVBSChannel tuneChannel = new DVBSChannel(dvbsChannel);
                if (_conditionalAccess != null)
                {
                    tuneChannel = _conditionalAccess.SetDVBS2Modulation(_parameters, tuneChannel);
                }
                dvbsLocator.put_Modulation(tuneChannel.ModulationType);
                Log.Log.WriteFile("dvbs:channel modulation is set to {0}", tuneChannel.ModulationType);
                dvbsLocator.put_InnerFECRate(tuneChannel.InnerFecRate);
                Log.Log.WriteFile("dvbs:channel FECRate is set to {0}", tuneChannel.InnerFecRate);
                _tuneRequest.put_Locator(locator);

                //set the DisEqC parameters
                if (_conditionalAccess != null)
                {
                    //int hr2 = ((IMediaControl)_graphBuilder).Pause();
                    _diseqCsucceded = _conditionalAccess.SendDiseqcCommand(_parameters, dvbsChannel);
                    //hr2 = ((IMediaControl)_graphBuilder).Run();

                    //move diseqc motor to correct satellite
                    if (dvbsChannel != null && dvbsChannel.SatelliteIndex > 0 && _conditionalAccess.DiSEqCMotor != null)
                    {
                        _conditionalAccess.DiSEqCMotor.GotoPosition((byte)dvbsChannel.SatelliteIndex);
                    }
                }
            }

            _dvbsChannel = dvbsChannel;
            return(true);
        }