Ejemplo n.º 1
0
        /// <summary>
        /// Meldet sich als Verbraucher an eine Analyse an.
        /// </summary>
        /// <param name="analyser">Die Analyseeinheit.</param>
        public void RegisterPhase2(TSParser analyser)
        {
            // See if there is a well known table
            foreach (var tableType in typeof(WellKnownTable).Assembly.GetExportedTypes())
            {
                if (typeof(WellKnownTable).IsAssignableFrom(tableType))
                {
                    if (!tableType.IsAbstract)
                    {
                        if (WellKnownTable.GetWellKnownStream(tableType) == PID)
                        {
                            // Remember
                            SubItems[6].Text = tableType.Name;

                            // Create consumer
                            var parser = TableParser.Create(CountTable, tableType);

                            // Connect
                            analyser.SetFilter(PID, true, parser.AddPayload);

                            // Done
                            break;
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Wählt einen besonderen Datenstrom aus.
        /// </summary>
        /// <param name="sender">Wird ignoriert.</param>
        /// <param name="e">Wird ignoriert.</param>
        private void selPIDType_SelectionChangeCommitted(object sender, EventArgs e)
        {
            // Check selectiojn
            switch (selPIDType.SelectedIndex)
            {
            case 1: selPid.Value = WellKnownTable.GetWellKnownStream <PAT>(); optStandard.Checked = true; break;

            case 2: selPid.Value = WellKnownTable.GetWellKnownStream <NIT>(); optStandard.Checked = true; break;

            case 3: selPid.Value = WellKnownTable.GetWellKnownStream <SDT>(); optStandard.Checked = true; break;

            case 4: selPid.Value = WellKnownTable.GetWellKnownStream <EIT>(); optStandard.Checked = true; break;
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Meldet einen Verbraucher für eine SI Tabellenart an, die fest an einen Datenstrom
        /// gebunden ist.
        /// </summary>
        /// <typeparam name="T">Die gewünschte Art von SI Tabelle.</typeparam>
        /// <param name="provider">Die zu aktuelle Hardware Abstraktion.</param>
        /// <param name="consumer">Die Methode, an die alle erkannten SI Tabellen der gewünschten Art gemeldet werden.</param>
        /// <returns>Die eindeutige Kennung des neu angemeldeten Verbrauchers.</returns>
        /// <exception cref="ArgumentNullException">Die Hardware Abstraktion und / oder der Verbraucher sind nicht gesetzt.</exception>
        public static Guid AddConsumer <T>(this Hardware provider, Action <T> consumer) where T : WellKnownTable
        {
            // Validate
            if (null == provider)
            {
                throw new ArgumentNullException("provider");
            }
            if (null == consumer)
            {
                throw new ArgumentNullException("consumer");
            }

            // Read the stream
            ushort stream = WellKnownTable.GetWellKnownStream <T>();

            // Forward
            return(provider.AddConsumer(stream, TableParser.Create(consumer), Table.GetIsExtendedTable <T>() ? StreamTypes.ExtendedTable : StreamTypes.StandardTable));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Der Anwender hat die Auswahl der Datenquelle verändert.
        /// </summary>
        /// <param name="sender">Wird ignoriert.</param>
        /// <param name="e">Wird ignoriert.</param>
        private void selSource_SelectionChangeCommitted(object sender, EventArgs e)
        {
            // Attach to selection
            SourceItem item = (SourceItem)selSource.SelectedItem;

            // None
            if (null == item)
            {
                return;
            }

            // Reset
            selPid.Value        = WellKnownTable.GetWellKnownStream <EIT>();
            optStandard.Checked = true;

            // Remember
            PlugIn.LastSource = item.Source;

            // Refresh
            AdminSite.UpdateGUI();
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Der Anwender hat die Art der Quellauswahl verändert.
        /// </summary>
        /// <param name="sender">Wird ignoriert.</param>
        /// <param name="e">Wird ignoriert.</param>
        private void selType_SelectionChangeCommitted(object sender, EventArgs e)
        {
            // Check selection
            if (selType.SelectedIndex > 0)
            {
                if (selType.SelectedIndex == m_FreeSatIndex)
                {
                    SelectSpecial(m_FreeSat, EIT.FreeSatEPGPID, false);
                }
                else if (selType.SelectedIndex == m_DirectIndex)
                {
                    SelectSpecial(m_DirectEPG, WellKnownTable.GetWellKnownStream <DirectCIT>(), true);
                }
                else if (selType.SelectedIndex == m_SportIndex)
                {
                    SelectSpecial(m_SportEPG, WellKnownTable.GetWellKnownStream <SportCIT>(), true);
                }
            }

            // Always reset
            selType.SelectedIndex = 0;
        }
Ejemplo n.º 6
0
 /// <summary>
 /// Die Auswahl der Datenstromkennung wurde verändert.
 /// </summary>
 /// <param name="sender">Wird ignoriert.</param>
 /// <param name="e">Wird ignoriert.</param>
 private void selPid_ValueChanged(object sender, EventArgs e)
 {
     // Check it
     if (selPid.Value == WellKnownTable.GetWellKnownStream <PAT>())
     {
         selPIDType.SelectedIndex = 1;
     }
     else if (selPid.Value == WellKnownTable.GetWellKnownStream <NIT>())
     {
         selPIDType.SelectedIndex = 2;
     }
     else if (selPid.Value == WellKnownTable.GetWellKnownStream <SDT>())
     {
         selPIDType.SelectedIndex = 3;
     }
     else if (selPid.Value == WellKnownTable.GetWellKnownStream <EIT>())
     {
         selPIDType.SelectedIndex = 4;
     }
     else
     {
         selPIDType.SelectedIndex = 0;
     }
 }
Ejemplo n.º 7
0
        /// <summary>
        /// Wird bei der ersten Anzeige des Dialogs aufgerufen.
        /// </summary>
        /// <param name="sender">Wird ignoriert.</param>
        /// <param name="e">Wird ignoriert.</param>
        private void DumperDialog_Load(object sender, EventArgs e)
        {
            // Load all sources
            List <SourceItem> sources = SourceItem.CreateSortedListFromProfile(PlugIn.Profile);

            // Load
            selSource.Items.AddRange(sources.ToArray());

            // Find the special sources
            SourceSelection freeSat    = PlugIn.Profile.FindSource(EIT.FreeSatEPGTriggerSource).FirstOrDefault();
            SourceSelection premDirect = PlugIn.Profile.FindSource(DirectCIT.TriggerSource).FirstOrDefault();
            SourceSelection premSport  = PlugIn.Profile.FindSource(SportCIT.TriggerSource).FirstOrDefault();

            // Map to sources
            m_DirectEPG = sources.Find(s => s.Source.CompareTo(premDirect));
            m_SportEPG  = sources.Find(s => s.Source.CompareTo(premSport));
            m_FreeSat   = sources.Find(s => s.Source.CompareTo(freeSat));

            // Delete as needed
            if (null == m_FreeSat)
            {
                // Get rid
                selType.Items.RemoveAt(m_FreeSatIndex);

                // Correct
                m_FreeSatIndex = -1;
                m_DirectIndex -= 1;
                m_SportIndex  -= 1;
            }
            if (null == m_DirectEPG)
            {
                // Get rid
                selType.Items.RemoveAt(m_DirectIndex);

                // Correct
                m_DirectIndex -= 1;
                m_SportIndex  -= 1;
            }
            if (null == m_SportEPG)
            {
                // Get rid
                selType.Items.RemoveAt(m_SportIndex);

                // Correct
                m_SportIndex -= 1;
            }

            // Start with default
            selPid.Value = WellKnownTable.GetWellKnownStream <EIT>();

            // Choose
            selSource.SelectedItem = sources.Find(s => s.Source.CompareTo(PlugIn.LastSource));
            selType.SelectedIndex  = 0;

            // Specials
            if (null == selSource.SelectedItem)
            {
                PlugIn.LastSource = null;
            }
            else if (selSource.SelectedItem == m_FreeSat)
            {
                selType.SelectedIndex = m_FreeSatIndex;
            }
            else if (selSource.SelectedItem == m_DirectEPG)
            {
                selType.SelectedIndex = m_DirectIndex;
            }
            else if (selSource.SelectedItem == m_SportEPG)
            {
                selType.SelectedIndex = m_SportIndex;
            }

            // Finish
            selType_SelectionChangeCommitted(selType, EventArgs.Empty);
        }
Ejemplo n.º 8
0
 /// <summary>
 /// Startet das Auslesen einer SI-Tabelle.
 /// </summary>
 /// <typeparam name="TTableType">Die Art der Tabelle.</typeparam>
 /// <param name="device">Das zu verwendende, bereits aktivierte Gerät.</param>
 /// <returns>Die Steuerung des Auslesevorgangs.</returns>
 public static CancellableTask <TTableType[]> GetTableAsync <TTableType>(this Hardware device) where TTableType : WellKnownTable
 {
     return(device.GetTableAsync <TTableType>(WellKnownTable.GetWellKnownStream <TTableType>()));
 }
Ejemplo n.º 9
0
 /// <summary>
 /// Meldet die Verarbeitung einer Tabelle an.
 /// </summary>
 /// <typeparam name="TTableType">Die Art der Tabelle.</typeparam>
 /// <param name="processor">Die Verarbeitungsmethode.</param>
 private void Register <TTableType>(Action <TTableType> processor) where TTableType : WellKnownTable
 {
     // Forward
     Register(WellKnownTable.GetWellKnownStream(typeof(TTableType)), processor);
 }