Пример #1
0
        /// <summary>
        /// Aktiviert die Entschlüsselung einer Liste von Quellen.
        /// </summary>
        /// <param name="sources">Die gewünschten Quellen.</param>
        public override void Decrypt(params SourceIdentifier[] sources)
        {
            // Check mode
            if ((sources == null) || (sources.Length < 1))
            {
                // Forward
                LegacyDevice.Decrypt(null);
            }
            else if (sources.Length > 1)
            {
                // Not allowed
                throw new ArgumentException(sources.Length.ToString(), "sources");
            }
            else
            {
                // Attach to the source
                var source = sources[0];
                if (source == null)
                {
                    throw new ArgumentNullException("sources[0]");
                }

                // Process
                LegacyDevice.Decrypt(source.Service);
            }
        }
Пример #2
0
        /// <summary>
        /// Deaktiviert den Datenempfang unmittelbar bevor eine neue Quellgruppe aktiviert wird.
        /// </summary>
        /// <returns>Immer gesetzt, da DVB.NET 3.5 (oder früher) das Stoppen aller Filter unterstützt.</returns>
        protected override bool OnStopAll()
        {
            // Forward
            LegacyDevice.StopFilters();

            // Did it
            return(true);
        }
Пример #3
0
 /// <summary>
 /// Konfiguriert den Empfang einer Quellgruppe.
 /// </summary>
 /// <param name="location">Optional der Ursprung der Gruppe.</param>
 /// <param name="group">Die gewünschte Quellgruppe.</param>
 protected override void OnSelect(L location, G group)
 {
     // Forward
     if (group != null)
     {
         LegacyDevice.Tune(group, location);
     }
 }
Пример #4
0
        /// <summary>
        /// Deaktiviert den Datenempfang für einen bestimmten Datenstrom.
        /// </summary>
        /// <param name="stream">Die Informationen zum betroffenen Datenstrom.</param>
        /// <exception cref="ArgumentNullException">Es wurden keine Informationen angeben.</exception>
        protected override void OnStop(StreamInformation stream)
        {
            // Validate
            if (stream == null)
            {
                throw new ArgumentNullException("stream");
            }

            // Not of interest to us
            if (stream.Consumer != null)
            {
                LegacyDevice.StopFilter(stream.Identifier);
            }
        }
Пример #5
0
 /// <summary>
 /// Reinitialisiert das mit dieser Hardware verbundene Windows Gerät.
 /// </summary>
 public override void ResetWakeupDevice()
 {
     // Forward
     LegacyDevice.WakeUp();
 }
Пример #6
0
        /// <summary>
        /// Aktiviert den Datenempfang für einen bestimmten Datenstrom.
        /// </summary>
        /// <param name="stream">Die Informationen zum betroffenen Datenstrom.</param>
        /// <exception cref="ArgumentNullException">Es wurden keine Informationen angeben.</exception>
        protected override void OnStart(StreamInformation stream)
        {
            // Validate
            if (stream == null)
            {
                throw new ArgumentNullException("stream");
            }

            // Not of interest to us
            if (stream.Consumer == null)
            {
                return;
            }

            // Check type of stream
            if (stream.StreamType == StreamTypes.StandardTable)
            {
                // Table consumer - autostart included
                LegacyDevice.StartSectionFilter(stream.Identifier, p => stream.Consumer(p, 0, p.Length), m_StandardTables, m_TableMask);
            }
            else if (stream.StreamType == StreamTypes.ExtendedTable)
            {
                // Table consumer - autostart included
                LegacyDevice.StartSectionFilter(stream.Identifier, p => stream.Consumer(p, 0, p.Length), m_CustomTables, m_TableMask);
            }
            else
            {
                // Prepare exception mapping
                try
                {
                    // Check mode
                    switch (stream.StreamType)
                    {
                    case StreamTypes.Audio: LegacyDevice.RegisterPipingFilter(stream.Identifier, false, true, p => stream.Consumer(p, 0, p.Length)); break;

                    case StreamTypes.SubTitle: LegacyDevice.RegisterPipingFilter(stream.Identifier, false, true, p => stream.Consumer(p, 0, p.Length)); break;

                    case StreamTypes.UnknownPES: LegacyDevice.RegisterPipingFilter(stream.Identifier, true, false, p => stream.Consumer(p, 0, p.Length)); break;

                    case StreamTypes.Video: LegacyDevice.RegisterPipingFilter(stream.Identifier, true, false, p => stream.Consumer(p, 0, p.Length)); break;

                    case StreamTypes.VideoText: LegacyDevice.RegisterPipingFilter(stream.Identifier, false, true, p => stream.Consumer(p, 0, p.Length)); break;

                    default: throw new ArgumentException(stream.StreamType.ToString(), "stream.StreamType");
                    }

                    // Must start filter explicitly
                    LegacyDevice.StartFilter(stream.Identifier);
                }
                catch (DVBException e)
                {
                    // Check mode
                    if (e.ErrorCode == DVBError.Resources)
                    {
                        throw new OutOfConsumersException(1, 0);
                    }
                    else
                    {
                        throw;
                    }
                }
            }
        }