예제 #1
0
 /// <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);
                }
            }
        }
예제 #3
0
        /// <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); }));
        }
예제 #4
0
        /// <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 );
            }
        }
예제 #5
0
        /// <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);
        }
예제 #6
0
 /// <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 ); } );
 }
예제 #9
0
 /// <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);