/// <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); } }
/// <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); }
/// <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); } }
/// <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); } }
/// <summary> /// Reinitialisiert das mit dieser Hardware verbundene Windows Gerät. /// </summary> public override void ResetWakeupDevice() { // Forward LegacyDevice.WakeUp(); }
/// <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; } } } }