/// <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; } } } } }
/// <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; } }
/// <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)); }
/// <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(); }
/// <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; }
/// <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; } }
/// <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); }
/// <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>())); }
/// <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); }