/// <summary> /// Beginnt mit der Sammlung der Daten für die elektronische Programmzeitschrift /// (EPG). /// </summary> /// <param name="sources">Die zu berücksichtigenden Quellen.</param> /// <param name="extensions">Spezielle Zusatzfunktionalitäten der Sammlung.</param> protected override void OnStartEPGCollection(SourceIdentifier[] sources, EPGExtensions extensions) { // Forward Execute(new StartEPGRequest { Sources = sources, Extensions = extensions }); }
/// <summary> /// Erstellt eine neue Aktualisierung. /// </summary> /// <param name="state">Das zugehörige Geräteprofil.</param> /// <param name="recording">Daten der primären Aufzeichnung.</param> private ProgramGuideProxy(ProfileState state, VCRRecordingInfo recording) : base(state, recording) { // Reset fields if (VCRConfiguration.Current.EnableFreeSat) { m_extensions = EPGExtensions.FreeSatUK; } else { m_extensions = EPGExtensions.None; } // All sources we know about var allSources = new Dictionary <string, SourceSelection>(StringComparer.InvariantCultureIgnoreCase); // Load all sources of this profile foreach (var source in VCRProfiles.GetSources(ProfileName)) { // Remember by direct name allSources[source.DisplayName] = source; // allSources by unique name allSources[source.QualifiedName] = source; } // Fill in all foreach (var legacyName in VCRConfiguration.Current.ProgramGuideSources) { // Skip if empty if (string.IsNullOrEmpty(legacyName)) { continue; } // Locate SourceSelection realSource; if (allSources.TryGetValue(legacyName, out realSource)) { m_selected.Add(realSource.Source); } else { VCRServer.Log(LoggingLevel.Full, Properties.Resources.BadEPGStation, legacyName); } } }
/// <summary> /// Beginnt mit der Sammlung der Daten für die elektronische Programmzeitschrift /// (EPG). /// </summary> /// <param name="sources">Die zu berücksichtigenden Quellen.</param> /// <param name="extensions">Spezielle Zusatzfunktionalitäten der Sammlung.</param> /// <returns>Steuereinheit für diesen Aufruf.</returns> public IAsyncResult BeginStartEPGCollection(SourceIdentifier[] sources, EPGExtensions extensions) { // Remap if (sources != null) { // Create clone sources = (SourceIdentifier[])sources.Clone(); // Create real identifiers for (int i = sources.Length; i-- > 0;) { if (sources[i] != null) { sources[i] = new SourceIdentifier(sources[i]); } } } // Forward return(Start <object>(() => { OnStartEPGCollection(sources, extensions); })); }
/// <summary> /// Erstellt eine neue Aktualisierung. /// </summary> /// <param name="state">Das zugehörige Geräteprofil.</param> /// <param name="recording">Daten der primären Aufzeichnung.</param> private ProgramGuideProxy( ProfileState state, VCRRecordingInfo recording ) : base( state, recording ) { // Reset fields if (VCRConfiguration.Current.EnableFreeSat) m_extensions = EPGExtensions.FreeSatUK; else m_extensions = EPGExtensions.None; // All sources we know about var allSources = new Dictionary<string, SourceSelection>( StringComparer.InvariantCultureIgnoreCase ); // Load all sources of this profile foreach (var source in VCRProfiles.GetSources( ProfileName )) { // Remember by direct name allSources[source.DisplayName] = source; // allSources by unique name allSources[source.QualifiedName] = source; } // Fill in all foreach (var legacyName in VCRConfiguration.Current.ProgramGuideSources) { // Skip if empty if (string.IsNullOrEmpty( legacyName )) continue; // Locate SourceSelection realSource; if (allSources.TryGetValue( legacyName, out realSource )) m_selected.Add( realSource.Source ); else VCRServer.Log( LoggingLevel.Full, Properties.Resources.BadEPGStation, legacyName ); } }
/// <summary> /// Beginnt mit der Sammlung der Daten für die elektronische Programmzeitschrift /// (EPG). /// </summary> /// <param name="device">Das zu verwendende DVB.NET Gerät.</param> /// <param name="sources">Die zu berücksichtigenden Quellen.</param> /// <param name="extensions">Spezielle Zusatzfunktionalitäten der Sammlung.</param> private void StartEPGCollection(Hardware device, SourceIdentifier[] sources, EPGExtensions extensions) { // Check mode if (EPGProgress.HasValue) { CardServerException.Throw(new EPGActiveFault()); } if (m_ScanProgress >= 0) { CardServerException.Throw(new SourceUpdateActiveFault()); } // Reset lists m_EPGSources.Clear(); m_EPGGroups.Clear(); // Load all identifiers to scan if (null != sources) { foreach (SourceIdentifier source in sources) { AddEPGSource(source); } } // Add specials if (0 != (extensions & EPGExtensions.PREMIEREDirect)) { if (AddEPGGroup(DirectCIT.TriggerSource).Length < 1) { extensions &= ~EPGExtensions.PREMIEREDirect; } } if (0 != (extensions & EPGExtensions.PREMIERESport)) { if (AddEPGGroup(SportCIT.TriggerSource).Length < 1) { extensions &= ~EPGExtensions.PREMIERESport; } } if (0 != (extensions & EPGExtensions.FreeSatUK)) { if (AddEPGGroup(EIT.FreeSatEPGTriggerSource).Length < 1) { extensions &= ~EPGExtensions.FreeSatUK; } } // Stop all RemoveAll(); // Prepare m_EPGPending = new List <GroupKey>(m_EPGGroups.Keys); m_EPGLastItemCheck = DateTime.MaxValue; m_EPGLastTune = DateTime.MinValue; m_EPGLastItemCount = -1; m_EPGItems.Clear(); m_EPGItemCount = 0; // Mark as active m_EPGExtensions = extensions; EPGProgress = 0; // Enforce start CollectProgramGuide(device); }
/// <summary> /// Beginnt mit der Sammlung der Daten für die elektronische Programmzeitschrift /// (EPG). /// </summary> /// <param name="sources">Die zu berücksichtigenden Quellen.</param> /// <param name="extensions">Spezielle Zusatzfunktionalitäten der Sammlung.</param> protected override void OnStartEPGCollection(SourceIdentifier[] sources, EPGExtensions extensions) { // Process Start(device => { StartEPGCollection(device, sources, extensions); }); }
/// <summary> /// Beginnt mit der Sammlung der Daten für die elektronische Programmzeitschrift /// (EPG). /// </summary> /// <param name="device">Das zu verwendende DVB.NET Gerät.</param> /// <param name="sources">Die zu berücksichtigenden Quellen.</param> /// <param name="extensions">Spezielle Zusatzfunktionalitäten der Sammlung.</param> private void StartEPGCollection( Hardware device, SourceIdentifier[] sources, EPGExtensions extensions ) { // Check mode if (EPGProgress.HasValue) CardServerException.Throw( new EPGActiveFault() ); if (m_ScanProgress >= 0) CardServerException.Throw( new SourceUpdateActiveFault() ); // Reset lists m_EPGSources.Clear(); m_EPGGroups.Clear(); // Load all identifiers to scan if (null != sources) foreach (SourceIdentifier source in sources) AddEPGSource( source ); // Add specials if (0 != (extensions & EPGExtensions.PREMIEREDirect)) if (AddEPGGroup( DirectCIT.TriggerSource ).Length < 1) extensions &= ~EPGExtensions.PREMIEREDirect; if (0 != (extensions & EPGExtensions.PREMIERESport)) if (AddEPGGroup( SportCIT.TriggerSource ).Length < 1) extensions &= ~EPGExtensions.PREMIERESport; if (0 != (extensions & EPGExtensions.FreeSatUK)) if (AddEPGGroup( EIT.FreeSatEPGTriggerSource ).Length < 1) extensions &= ~EPGExtensions.FreeSatUK; // Stop all RemoveAll(); // Prepare m_EPGPending = new List<GroupKey>( m_EPGGroups.Keys ); m_EPGLastItemCheck = DateTime.MaxValue; m_EPGLastTune = DateTime.MinValue; m_EPGLastItemCount = -1; m_EPGItems.Clear(); m_EPGItemCount = 0; // Mark as active m_EPGExtensions = extensions; EPGProgress = 0; // Enforce start CollectProgramGuide( device ); }
/// <summary> /// Beginnt mit der Sammlung der Daten für die elektronische Programmzeitschrift /// (EPG). /// </summary> /// <param name="sources">Die zu berücksichtigenden Quellen.</param> /// <param name="extensions">Spezielle Zusatzfunktionalitäten der Sammlung.</param> protected override void OnStartEPGCollection( SourceIdentifier[] sources, EPGExtensions extensions ) { // Process Start( device => { StartEPGCollection( device, sources, extensions ); } ); }
/// <summary> /// Beginnt mit der Sammlung der Daten für die elektronische Programmzeitschrift /// (EPG). /// </summary> /// <param name="sources">Die zu berücksichtigenden Quellen.</param> /// <param name="extensions">Spezielle Zusatzfunktionalitäten der Sammlung.</param> protected abstract void OnStartEPGCollection(SourceIdentifier[] sources, EPGExtensions extensions);