TAPCOM-Library zur Kooperation von TAPs

Zusatz-Programme für Receiver der 5000er und 6000er Serie.

Hier geht's um alles, was mit den TAP Anwendungen für den PVR5x00/6000 zu tun hat.
Benutzeravatar
asrael
Bootsmann
Bootsmann
Beiträge: 1407
Registriert: Mo 12. Dez 2005, 09:11
Receivertyp: SRP2401CI+ Eco
TF5500PVR mit Samsung HD103UI/Equip (im Ruhestand)
Receiverfirmware: 1.03.00 2015/03/24
03.01.2007 PTFDeSUUuEWfUaGmTs_aXeL
Wohnort: Oldenburg

TAPCOM-Library zur Kooperation von TAPs

#1

Beitrag von asrael » Do 16. Nov 2006, 20:40

Moin zusammen,

nach den Diskussionen in den letzten Tagen habe ich mich noch einmal hingesetzt und meine TAPCOM-Bibliothek weitergestrickt. Dank der Anregungen von FireBird konnte ich hier noch etwas optimieren. Hier also die Veröffentlichung der Version 0.12!

Im Prinzip können TAPs jetzt (vorausgesetzt das Ganze klappt auch im wirklichen TAP-Leben) kooperieren und sich gegenseitig Dienste anbieten. Sinnvolle Szenarien dafür gibt es aus meiner Sicht genügend:
  • Filer könnte seinen Löschen-mit-oder-ohne-Papierkorb-Dialog für andere TAPs zur Verfügung stellen. Dieses Szenario habe ich als Beispiel näher beschrieben (s. u.).
  • Nicedisplay könnte für andere TAPs eine Schnittstelle bereitstellen, über die diese beliebigen Text im Display anzeigen lassen können (z. B. im Wechsel mit den Standard-Nicedisplay-Anzeigen). Im Zusammenhang mit dem RadioText-TAP kam glaube ich genau ein solcher Wunsch auf.
  • Quicktimer könnte seinen Timer-Änderungs-Dialog als Dienst anbieten. Andere TAPs, die Timer anlegen (z. B. Improbox), könnten bei entsprechendem Wunsch des Nutzers direkt nach Anlegen des Timers den Quicktimer-Dialog aufrufen, damit der Benutzer den Timer anpassen kann (Vorlauf/Nachlauf/Dateiname).
  • Immer wieder wünschen sich die Benutzer bei den TAPs, die Texteingaben verlangen, das TAP x möge doch bitte die gleiche virtuelle Tastatur wie TAP y anbieten. Alle TAP-Entwickler könnten ihre verschiedenen Tastaturen in ein eigenes Eingabe-Service-TAP zusammenschmeißen, das dann Eingaben über die verschiedenen Tastaturen als Services anbietet. So wäre mit wenig Aufwand aus jedem TAP jede gewünschte Tastatur erreichbar.
  • Viele TAPs haben teilweise ähnliche Einstellungen. Beispielsweise bieten Improbox, die EPG-TAPs, QuickTimer und auch Filer Einstellungen für Vor- und Nachlauf mit gleicher bzw. verwandter Semantik. Mit TAPCOM könnten die TAPs untereinander diese Einstellungen erfragen, den Benutzer ggf. auf Konflikte hinweisen bzw. eine einheitliche Einstellung verwenden.
  • Bei mehreren gleichzeitig laufenden TAPs wird es auf der Tastatur bald relativ eng, was bei einigen TAPs schon zu sehr originellen Lösungen geführt hat (z. B. QuickTimer-Aktivierung über ganze Tastenfolge). Würde ein TAP seine Aktivierung zusätzlich zu einer Taste auch über einen TAPCOM-Service anbieten, so ließe sich ein "TAP-Schnellstartmenu"-TAP schreiben oder in Filer integrieren. Bestimmte, seltener benutzte TAPs könnten dann vom Benutzer nur über dieses Schnellstartmenu aktiviert werden und müssten keine Original-Tasten "verdrängen". So etwas habe ich mir (basierend auf der TAPCOM-Idee und mit etwas Gehacke) mal für QuickTimer, MediaManager und MP3-Jukebox geschrieben, die ich alle eher selten brauche.
  • ...
Es liegt sicherlich jetzt auch an der Phantasie der Nutzer, solche Dienste einzufordern, um das Ganze in Schwung zu bringen ;-).

mfg

asrael


PS:
Das Ganze ist natürlich noch sehr Beta. Die beiden mitgelieferten Beispielanwendungen sollten hoffentlich auf jeder Hardware/Firmware-Kombination laufen. Für Rückmeldungen bin ich dankbar. Vielleicht hat ja auch der ein oder andere TAP-Guru mal Lust, TAPCOM mit seinem TAP zu testen und bestimmte Dienste seines TAPs über TAPCOM anzubieten. Ein Test-Client dürfte auf der Basis der anliegenden Beispiele schnell geschrieben sein. Der Vorteil einer solchen einheitlichen Schnittstelle ist es auch, dass sich nicht mehrere
Speziallösungen, die den gleichen Weg benutzen, ins Gehege kommen.

PPS:
Da Tastatur-Ereignisse benutzt werden, wird die Benutzung von TAPCOM dazu führen, dass sich der Topf nach einem automatischen Einschalten nicht mehr ausschaltet (siehe vorausgegangener Thread). Bei den meisten Szenarien, die ich mir so vorstellen kann, geht aber dem Aufruf eines RPCs über TAPCOM eine Interaktion des Benutzers voraus, so dass dies hier nicht schlimm ist. Der Aufruf von RPCs über TAPCOM ohne vorhergehende Interaktion des Nutzers ist aber entsprechend vorsichtig vorzunehmen. Eine sicherere Lösung hierfür ist aber anzustreben, für Hinweise bin ich dankbar.

PPPS:
@tapworld:
This is an library for TAP programmers. Please don't publish this at the moment. If there is some interest from the german TAP programmers in this library and if it proves to work stable and efficiently, I will write an english documentation and will ask you to publish the library.

PPPPS:
Auszug aus der anliegenden liesmich.txt:

Im Verzeichnis TAPCOM befindet sich die TAPCOM-API (Header und Object-Datei), im Verzeichnis Example1 und Example2 befinden sich zwei Nutzungsbeispiele.

Zweck der TAPCOM-API ist es, TAP-Programmierer mit der Möglichkeit auszustatten, ihre TAPs auf einfache Art und Weise untereinander kommunizieren lassen zu können. Dies geschieht mit RPCs (remote procedure calls), d. h. ein TAP kann also bestimmte Dienste zur Verfügung stellen, die dann von anderen TAPs aufgerufen werden können.

Sinn und Funktionsweise lassen sich am besten an einem konkreten Beispiel erklären:
Filer bietet schon jetzt Einstellungen an, mit denen der Benutzer entscheiden kann, ob beim
Löschen von Dateien diese im Papierkorb landen sollen oder physisch gelöscht werden und ob eine Sicherheitsabfrage erfolgen soll. Demnächst kann Filer vielleicht (Spekulation) je nach Benutzereinstellung beim Löschen einer Datei diese in den Papierkorb legen und gleichzeitig vormerken, dass sie nach xx Tagen Aufenthalt im Papierkorb automatisch gelöscht werden soll.
Andere Programme (z. B. Improbox oder SmartEPG) können auch Dateien löschen, bieten teilweise einen Papierkorb (aber zumindest in Zukunft mit anderer Logik als Filer), teilweise auch keinen an. Ob aber Improbox den Papierkorb benutzt oder nicht, muss hier z. B. erneut (und unabhängig von Filer) eingestellt werden.

Würde nun Filer einen Dienst zum Löschen von Dateien anbieten, den andere TAPs nutzen können, so würden alle Papierkorb-, Abfrage- und Autolösch-Funktionen von Filer für die anderen TAPs ohne großen Aufwand nutzbar. Der Benutzer müsste im wesentlichen seine Einstellungen (Papierkorb ja/nein, Sicherheitsabfrage ja/nein, Autolöschen ja/nein (und wann) etc.) nur einmal in Filer tätigen. Improbox bzw. SmartEPG müssten nur jeweils eine Einstellung "Löschen über Filer (ja/nein)" bieten.

Der Aufwand für das anbietende TAP (Filer) und für das nutzende TAP (Improbox) wäre aus meiner Sicht vergleichsweise gering.

In Filer müsste etwa folgender Code stehen:

// eine Zusatzzeile in TAP_Main:
int TAP_Main(void) {
TAPCOM_Identify(TAPCOM_App_Filer);
...
}

// Ergänzung in TAP_EventHandler:
dword TAP_EventHandler(word event, dword param1, dword param2) {
byte caller, serviceId;
void* parameter;
TAPCOM_ProcessEvent(&event, param1, &caller, &serviceId, &parameter);
// diese Zeilen sind nötig, um TAPCOM-Ereignis zu erkennen
if (event == EVT_TAPCOM) {
// RPC von einem Client
switch (serviceId) {
// was will der Client von mir
case 1: // ID für Filer-Service "Delete"
// Hier könnte Filer eine Header-Datei "filer_tapcom_services.h" anbieten, die etwa
// enthält:
// #define Filer_TAPCOM_Delete 1
// Dann könnte man diese Konstante verwenden und schreiben:
// case Filer_TAPCOM_Delete:
if (caller == TAPCOM_App_Improbox) {
// und ggf. weitere
char *filename = (char*) parameter;
FILER_delete(filename);
// Hier wird der (ja irgendwo schon vorhandene) Code für das Löschen aufgerufen.
// nur Prinzipskizze, wird wohl eher während EVT_IDLE gemacht werden
}
break;
// ggf. weitere Services, die Filer anbietet
}
return RKEY_NoUse;
} else
// weitere Events verarbeiten wie bisher

Außerdem muss in der Datei oder den Dateien, die TAP_Main bzw. TAP_EventHandler enthalten, tapcom.h inkludiert werden und die Datei tapcom.o zum Filer-TAP gelinkt werden.

In Improbox müsste im Prinzip nur folgender Code stehen:

// eine Zusatzzeile in TAP_Main:
int TAP_Main(void) {
TAPCOM_Identify(TAPCOM_App_Improbox);
// Nur nötig, falls Filer den Service auf bestimmte TAPs beschränkt oder falls Improbox
// selbst Services anbieten möchte.
...
}

// an der Stelle, wo normalerweise die Datei von Improbox selbst gelöscht würde:
TAPCOM_RPC(TAPCOM_App_Filer, 1, filename);
// Voraussetzung: filename ist ein char-Pointer, der auf einen Speicherbereich zeigt, der den
// Dateinamen enthält.
// Noch eleganter (nach Inkludieren von "filer_tapcom_services.h"):
// TAPCOM_RPC(TAPCOM_App_Filer, Filer_TAPCOM_Delete, filename);

Auch hier muss tapcom.h inkludiert werden und die Datei tapcom.o zum Filer-TAP gelinkt werden.

Im Verzeichnis TAPCOM befindet sich die Datei tapcom.h, die in eigene Quelltexte eingebunden werden muss, und die Datei tapcom.o, die beim Linken der Anwendungen benötigt wird. Die Datei build.bat der mitgelieferten Beispielanwendung demonstriert den Übersetzungsvorgang (Pfade bitte ggf. anpassen).

Die Beispielanwendung in Example1 enthält drei TAPs: eines, das als Server fungiert und zwei Client-TAPs. Alle drei sollten für den Test gestartet werden. Beim Drücken der UHF-Taste ruft Client1 einen Service des Server-TAPs auf. Dieses erzeugt dann eine Ausgabe. Analog ruft Client1 nach Drücken der Taste TV/SAT einen anderen Service des Servers auf, der eine andere Ausgabe erzeugt. Client2 reagiert auf das Drücken von Sleep mit dem Aufruf eines Services des Servers, der auch hier eine Ausgabe erzeugt.
Nach dem Test können die drei TAPs mit 1, 2 und 3 beendet werden.
Alle sechs beschriebenen Tasten sollten beim Test möglichst nicht durch andere TAPs abgefangen werden (am besten ohne andere TAPs testen).

Die Beispielanwendung in Example2 enthält zwei TAPs: einen Server und einen Client. Beim Drücken der Mute-Taste ruft der Client einen Service des Server-TAPs auf. Im Gegensatz zu Example1 wird hier vom Server eine Rückmeldung an den Client erzeugt. Zufällig erzeugt der Server eine Erfolgs- oder Misserfolgsmeldung, die vom Client ausgewertet wird. Nach dem Test können durch Drücken von 4 beide TAPs beendet werden. Hierzu bietet der Server einen entsprechenden Dienst an, mit dem ein Client ihn zum Beenden auffordern kann.

Alle fünf TAPs können auch gemeinsam gestartet werden, um das Zusammenwirken unterschiedlicher Clients und Server zu demonstrieren.

Einziger Zweck der Beispiel-TAPs ist es, die Funktionen und die Benutzung der TAPCOM-API zu demonstrieren. Ihr Quellcode enthält weitere Details zur Nutzung der TAPCOM-API.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von asrael am Fr 17. Nov 2006, 09:36, insgesamt 1-mal geändert.
SRP2401CI+ Eco: TAPs aktuell im Test

TF5500PVR (FW: 03.01.2007 PTFDeSUUuEWfUaGmTsXl) mit Samsung HD103UI, Equip Adapter
TAP im Autostart: Bootmenu 0.33
Durch dieses nachgeladen: Normalerweise: TAP Commander, NiceDisplay, Standby, ImproBox, PiP, Fastskip, Stirf, iTiNa, Overfly, Filer2, TSBProtector, Goldfish. Bei Bedarf: Radiotext, acadelog, TopfAMP, MediaManager, PowerRestore, ScreenCapture_OSD, HDDInfo, MiniMax, Snake, poker, sudoko, SimpleCharEditor, filer1.20.

tapworld
Seltsamer Zeitgenosse :-(
Seltsamer Zeitgenosse  <font color=#E9E9E9>:-(</font>
Beiträge: 270
Registriert: Di 13. Dez 2005, 20:40

AW: TAPCOM-Library zur Kooperation von TAPs

#2

Beitrag von tapworld » Fr 17. Nov 2006, 07:52

[quote=""asrael""]
PPPS:
@tapworld:
This is an library for TAP programmers. Please don't publish this at the moment. If there is some interest from the german TAP programmers in this library and if it proves to work stable and efficiently, I will write an english documentation and will ask you to publish the library.
[/quote]

Ok.
Please let me know via email/PM or TAPWorld's contact form ( http://www.tapworld.net/component/optio ... /Itemid,3/ ) when/if this can be published.

Benutzeravatar
asrael
Bootsmann
Bootsmann
Beiträge: 1407
Registriert: Mo 12. Dez 2005, 09:11
Receivertyp: SRP2401CI+ Eco
TF5500PVR mit Samsung HD103UI/Equip (im Ruhestand)
Receiverfirmware: 1.03.00 2015/03/24
03.01.2007 PTFDeSUUuEWfUaGmTs_aXeL
Wohnort: Oldenburg

AW: TAPCOM-Library zur Kooperation von TAPs

#3

Beitrag von asrael » Fr 17. Nov 2006, 09:37

Moin zusammen,

ich habe noch einige Debug-Aufrufe entfernt (Performance-Verbesserung) und das Broadcast-Handling etwas sicherer gemacht.

Bitte verwendet die aktualisierte Version 0.13 (im ersten Posting).

mfg

asrael
SRP2401CI+ Eco: TAPs aktuell im Test

TF5500PVR (FW: 03.01.2007 PTFDeSUUuEWfUaGmTsXl) mit Samsung HD103UI, Equip Adapter
TAP im Autostart: Bootmenu 0.33
Durch dieses nachgeladen: Normalerweise: TAP Commander, NiceDisplay, Standby, ImproBox, PiP, Fastskip, Stirf, iTiNa, Overfly, Filer2, TSBProtector, Goldfish. Bei Bedarf: Radiotext, acadelog, TopfAMP, MediaManager, PowerRestore, ScreenCapture_OSD, HDDInfo, MiniMax, Snake, poker, sudoko, SimpleCharEditor, filer1.20.

Benutzeravatar
ibbi
Moderierter Ignorator Bitteschöööön!
Moderierter Ignorator  <font color=#E9E9E9>Bitteschöööön!</font>
Beiträge: 7110
Registriert: Fr 9. Dez 2005, 12:49
Receivertyp: TF5000PVR • SRP-2401CI+ Eco
Receiverfirmware: Sep 2005 PHTF • Jan 2015

AW: TAPCOM-Library zur Kooperation von TAPs

#4

Beitrag von ibbi » Fr 17. Nov 2006, 10:58

Ich habe die Doku gerade nur mal eben überflogen und folgende Fragen:

Macht es Sinn, die TAPs in tapcom.h zu definieren (quasi zu registrieren)? Wieso erfolgt deren Identifikation nicht über die TAP_ID? Kein Teil von TAPCOM (hier die Header-Datei) sollte von den nutzenden Programmen abhängen.

Ob die Kommunikation so wie definiert ideal ist, traue ich mich nicht zu entscheiden, aber ich bin gedanklich von einem einfacheren Modell ausgegangen:
  1. Es gibt eine (vom Server, z. B. filer_tapcom_services.h) definierte Datenstruktur, die neben der TAP_ID und einem Zähler über den Bearbeitungszustand (diese Parameter muss jede Struktur haben) je nach angewendeter Funktion unterschiedliche Parameter hat, z. B. den Dateinamen fürs Löschen.
  2. Der Client alloziert so eine Struktur, schickt sie weg und prüft nach einiger Zeit den Zähler, ob die Anfrage bearbeitet wurde. Dann löscht er die Struktur wieder. (Frage allerdings: Was macht er, wenn die Struktur - noch - nicht bearbeitet wurde?)
  3. TAPCOM müsste so im Prinzip nur eine Funktion haben, nämlich per Event den Pointer auf die Struktur zu verschicken. (Vielleicht noch eine zweite, nämlich nachzufragen, ob eine TAP_ID eine bestimmte Funktion anbietet oder nicht.)

Benutzeravatar
ibbi
Moderierter Ignorator Bitteschöööön!
Moderierter Ignorator  <font color=#E9E9E9>Bitteschöööön!</font>
Beiträge: 7110
Registriert: Fr 9. Dez 2005, 12:49
Receivertyp: TF5000PVR • SRP-2401CI+ Eco
Receiverfirmware: Sep 2005 PHTF • Jan 2015

AW: TAPCOM-Library zur Kooperation von TAPs

#5

Beitrag von ibbi » Fr 17. Nov 2006, 12:36

[quote=""ibbi""](Frage allerdings: Was macht er, wenn die Struktur - noch - nicht bearbeitet wurde?)[/quote]

Man könnte eine(n) Zeit(punkt) mit in die Struktur packen. Nach diesem Zeitpunkt darf die Struktur vom Server nicht mehr bearbeitet werden, da sie als "abgelaufen" gilt und jederzeit zerstört werden kann.

Benutzeravatar
asrael
Bootsmann
Bootsmann
Beiträge: 1407
Registriert: Mo 12. Dez 2005, 09:11
Receivertyp: SRP2401CI+ Eco
TF5500PVR mit Samsung HD103UI/Equip (im Ruhestand)
Receiverfirmware: 1.03.00 2015/03/24
03.01.2007 PTFDeSUUuEWfUaGmTs_aXeL
Wohnort: Oldenburg

AW: TAPCOM-Library zur Kooperation von TAPs

#6

Beitrag von asrael » Fr 17. Nov 2006, 15:11

[quote=""ibbi""]Ich habe die Doku gerade nur mal eben überflogen und folgende Fragen:

Macht es Sinn, die TAPs in tapcom.h zu definieren (quasi zu registrieren)? Wieso erfolgt deren

Identifikation nicht über die TAP_ID?
[/quote]
Weil die TAP_ID AFAIK nirgendwo öffentlich bekannt ist. Um in einem TAP schreiben zu können

Code: Alles auswählen

TAPCOM_RPC(Improbox, ...)
müsste die TAP_ID von Improbox bekannt sein. Natürlich könnte jedes TAP, das TAPCOM-Dienste anbieten möchte, dies in einer entsprechenden individuellen Header-Datei machen, ich fand eine zentrale Stelle aber hübscher. So ist auf jeden Fall gewährleistet, dass jedes TAP seine eigene ID hat. Falls sich das als problematisch erweist, kann ich das noch ändern.

[quote=""ibbi""]
Kein Teil von TAPCOM (hier die Header-Datei) sollte von den nutzenden Programmen abhängen.
[/quote]
Tut es auch nicht. Lediglich die benutzten Programme (die also Services anbieten) müssen in der Header-Datei registriert werden. Kann man aber wie gesagt noch drüber nachdenken.

[quote=""ibbi""]
Ob die Kommunikation so wie definiert ideal ist, traue ich mich nicht zu entscheiden, aber ich bin gedanklich von einem einfacheren Modell ausgegangen:
  1. Es gibt eine (vom Server, z. B. filer_tapcom_services.h) definierte Datenstruktur, die neben der TAP_ID und einem Zähler über den Bearbeitungszustand (diese Parameter muss jede Struktur haben) je nach angewendeter Funktion unterschiedliche Parameter hat, z. B. den Dateinamen fürs Löschen.
  2. Der Client alloziert so eine Struktur, schickt sie weg und prüft nach einiger Zeit den Zähler, ob die Anfrage bearbeitet wurde. Dann löscht er die Struktur wieder. (Frage allerdings: Was macht er, wenn die Struktur - noch - nicht bearbeitet wurde?)
  3. TAPCOM müsste so im Prinzip nur eine Funktion haben, nämlich per Event den Pointer auf die Struktur zu verschicken. (Vielleicht noch eine zweite, nämlich nachzufragen, ob eine TAP_ID eine bestimmte Funktion anbietet oder nicht.)
[/quote]

Im Prinzip macht TAPCOM das ja auch so ähnlich, allerdings verbirgt es die schäbigen Details, bietet mehr Komfort (=Abstraktion) und Sicherheit und ermöglicht prinzipiell auch Broadcasting.

Im einzelnen:
  1. Der Teil der Datenstruktur, den Du oben als für alle TAPs obligatorisch beschreibst, wird von TAPCOM bereits definiert (natürlich etwas anders). Der Benutzer von TAPCOM muss dies also nicht selbst tun.
  2. Sender, Empfänger und gewünschter Service werden automatisch in die Struktur eingepackt.
  3. Der Pointer auf die Datenstruktur muss wegen gewisser Restriktionen (zulässiger Wertebereich von param1, Verwechslungsgefahr mit normalen Tasten, siehe vorausgegangene Diskussion) beim Client umgewandelt und beim Server wieder rückgewandelt werden. Dies macht TAPCOM automatisch bzw. verbirgt die nötige Kommunikationsdatenstruktur sogar ganz vor dem Nutzer.
  4. Bei der einfacheren Art des Service-Aufrufes (TAPCOM_RPC) ohne Rückmeldung an den Client werden die benötigten Ressourcen automatisch freigegeben.
  5. Benutzen andere TAPs diesen oder einen ähnlichen Mechanismus, könnten sie sich ins Gehege kommen. TAPCOM macht das aufgrund einer einheitlichen Schnittstelle und einer eindeutigen Identifikation extrem unwahrscheinlich.
  6. TAPCOM unterstützt das Broadcasten von Nachrichten.
  7. Die Parameterübergabe, die Anzeige, ob der Service bereits verarbeitet wurde und die Rückgabe von Resultaten geschieht über eine abstrakte Benutzungsschnittstelle und nicht über direktes Manipulieren einer Datenstruktur. Der Benutzer von TAPCOM braucht sich über Details des Umsetzungsmechanismus gar nicht im Klaren sein.
TAPCOM bietet also aus meiner Sicht etwas, was jede API tun sollte: Es schafft ein neues Abstraktionslevel, bietet "höhere" Schnittstellen und verbirgt ihre Implementierung vor dem Benutzer.

[quote=""ibbi""]Man könnte eine(n) Zeit(punkt) mit in die Struktur packen. Nach diesem Zeitpunkt darf die Struktur vom Server nicht mehr bearbeitet werden, da sie als "abgelaufen" gilt und jederzeit zerstört werden kann.[/quote]

Sehe ich (noch) nicht den Bedarf. Bei TAPCOM_RFC kann der Client (mit TAPCOM_GetProcessed) fragen, ob der Server die Nachricht bereits quittiert hat (mit TAPCOM_SetAccepted). Wenn TAPCOM_GetProcessed eine gewisse Zeit lang immer FALSE liefert, kann der Client normalerweise davon ausgehen, dass der Server nicht da ist oder das Ereignis verworfen hat. Dann kann er mit TAPCOM_FreeChannel die Ressourcen freigeben. Bei TAPCOM_RPC ist die Sache noch einfacher: Hier gibt der Server die Ressourcen automatisch frei.

Für den Fall, dass der Server das Ereignis empfängt und akzeptiert, die Verarbeitung aber sehr lange dauert, müsste der Server eine Kopie der Parameter anlegen. Dann müsste auch zwischen Akzeptanz und Resultatlieferung unterschieden werden können, dazu müsste die API in der Tat noch "aufgebohrt" werden. Bislang glaube ich aber eher nicht an solche Anwendungsszenarien.

Sollte aber TAPCOM tatsächlich verwendet werden, stünde einer Weiterentwicklung bei entsprechendem Bedarf nichts im Wege.

mfg

asrael
SRP2401CI+ Eco: TAPs aktuell im Test

TF5500PVR (FW: 03.01.2007 PTFDeSUUuEWfUaGmTsXl) mit Samsung HD103UI, Equip Adapter
TAP im Autostart: Bootmenu 0.33
Durch dieses nachgeladen: Normalerweise: TAP Commander, NiceDisplay, Standby, ImproBox, PiP, Fastskip, Stirf, iTiNa, Overfly, Filer2, TSBProtector, Goldfish. Bei Bedarf: Radiotext, acadelog, TopfAMP, MediaManager, PowerRestore, ScreenCapture_OSD, HDDInfo, MiniMax, Snake, poker, sudoko, SimpleCharEditor, filer1.20.

Benutzeravatar
FireBird
Suspekter verdächtiger Zauberküchenchef, TAP & Firmware-Guru
Suspekter verdächtiger Zauberküchenchef, TAP & Firmware-Guru
Beiträge: 28925
Registriert: Fr 9. Dez 2005, 09:59
Receivertyp: SRP-2401CI+ TFIR
vu+ Duo 4k
Wohnort: Wien

AW: TAPCOM-Library zur Kooperation von TAPs

#7

Beitrag von FireBird » Fr 17. Nov 2006, 15:31

Servus asrael,

[quote=""asrael""]Weil die TAP_ID AFAIK nirgendwo öffentlich bekannt ist. Um in einem TAP schreiben zu können

Code: Alles auswählen

TAPCOM_RPC(Improbox, ...)
müsste die TAP_ID von Improbox bekannt sein. [/quote]
Die ID eines TAPs findet man sehr leicht. Einfach das TAP mit einem Hex-Editor öffnen und an der Position 0x0020 steht sie.

MfG. Alex

Benutzeravatar
asrael
Bootsmann
Bootsmann
Beiträge: 1407
Registriert: Mo 12. Dez 2005, 09:11
Receivertyp: SRP2401CI+ Eco
TF5500PVR mit Samsung HD103UI/Equip (im Ruhestand)
Receiverfirmware: 1.03.00 2015/03/24
03.01.2007 PTFDeSUUuEWfUaGmTs_aXeL
Wohnort: Oldenburg

AW: TAPCOM-Library zur Kooperation von TAPs

#8

Beitrag von asrael » Fr 17. Nov 2006, 15:39

[quote=""FireBird""]Servus asrael,


Die ID eines TAPs findet man sehr leicht. Einfach das TAP mit einem Hex-Editor öffnen und an der Position 0x0020 steht sie.

MfG. Alex[/quote]

Ja, danke, das ist ja auch nicht das Problem. Es soll aber halt für den Benutzer möglich sein, ein TAP über einen symbolischen Namen anzusprechen, also z. B.

Code: Alles auswählen

TAP_RPC(Improbox, ...)
Dafür muss dann ja irgendwo dieser symbolische Name definiert sein, was ich zur Zeit in tapcom.h mit

Code: Alles auswählen

#define TAPCOM_App_Improbox     251
mache.
Hätte es denn irgendwelche Vorteile, wenn ich statt dessen schriebe:

Code: Alles auswählen

#define TAPCOM_App_Improbox     0x80005431
mfg

asrael
SRP2401CI+ Eco: TAPs aktuell im Test

TF5500PVR (FW: 03.01.2007 PTFDeSUUuEWfUaGmTsXl) mit Samsung HD103UI, Equip Adapter
TAP im Autostart: Bootmenu 0.33
Durch dieses nachgeladen: Normalerweise: TAP Commander, NiceDisplay, Standby, ImproBox, PiP, Fastskip, Stirf, iTiNa, Overfly, Filer2, TSBProtector, Goldfish. Bei Bedarf: Radiotext, acadelog, TopfAMP, MediaManager, PowerRestore, ScreenCapture_OSD, HDDInfo, MiniMax, Snake, poker, sudoko, SimpleCharEditor, filer1.20.

Benutzeravatar
FireBird
Suspekter verdächtiger Zauberküchenchef, TAP & Firmware-Guru
Suspekter verdächtiger Zauberküchenchef, TAP & Firmware-Guru
Beiträge: 28925
Registriert: Fr 9. Dez 2005, 09:59
Receivertyp: SRP-2401CI+ TFIR
vu+ Duo 4k
Wohnort: Wien

AW: TAPCOM-Library zur Kooperation von TAPs

#9

Beitrag von FireBird » Fr 17. Nov 2006, 15:41

[quote=""asrael""]Hätte es denn irgendwelche Vorteile, wenn ich statt dessen schriebe:

Code: Alles auswählen

#define TAPCOM_App_Improbox     0x80005431
[/quote]
Yep. Mit dieser ID kann man z.B. herausfinden, ob Improbox überhaupt geladen ist.

Benutzeravatar
ibbi
Moderierter Ignorator Bitteschöööön!
Moderierter Ignorator  <font color=#E9E9E9>Bitteschöööön!</font>
Beiträge: 7110
Registriert: Fr 9. Dez 2005, 12:49
Receivertyp: TF5000PVR • SRP-2401CI+ Eco
Receiverfirmware: Sep 2005 PHTF • Jan 2015

AW: TAPCOM-Library zur Kooperation von TAPs

#10

Beitrag von ibbi » Fr 17. Nov 2006, 15:43

[quote=""asrael""]Natürlich könnte jedes TAP, das TAPCOM-Dienste anbieten möchte, dies in einer entsprechenden individuellen Header-Datei machen[/quote]

So sollte es meiner Meinung nach sein.

[quote=""asrael""]Benutzen andere TAPs diesen oder einen ähnlichen Mechanismus, könnten sie sich ins Gehege kommen.[/quote]

Eigentlich nicht, da die Events ja vom Topf verwaltet und verteilt werden.

[quote=""asrael""]TAPCOM unterstützt das Broadcasten von Nachrichten.[/quote]

Wäre mit einer Pseudo-TAP_ID (0xFFFFFFFF) auch machbar.

[quote=""asrael""]Sehe ich (noch) nicht den Bedarf. Bei TAPCOM_RFC kann der Client (mit TAPCOM_GetProcessed) fragen, ob der Server die Nachricht bereits quittiert hat (mit TAPCOM_SetAccepted).[/quote]

Interessant ist aber der Fall, wenn er nicht antwortet. Läuft er dann nicht mehr oder hat er gerade nur anderes zu tun. :thinker:

[quote=""asrael""]kann der Client normalerweise davon ausgehen[/quote]

Normalerweise sollte man von gar nichts ausgehen, sondern den schlimmsten Fall annehmen. :wink:

Benutzeravatar
ibbi
Moderierter Ignorator Bitteschöööön!
Moderierter Ignorator  <font color=#E9E9E9>Bitteschöööön!</font>
Beiträge: 7110
Registriert: Fr 9. Dez 2005, 12:49
Receivertyp: TF5000PVR • SRP-2401CI+ Eco
Receiverfirmware: Sep 2005 PHTF • Jan 2015

AW: TAPCOM-Library zur Kooperation von TAPs

#11

Beitrag von ibbi » Fr 17. Nov 2006, 15:46

[quote=""FireBird""]Yep. Mit dieser ID kann man z.B. herausfinden, ob Improbox überhaupt geladen ist.[/quote]

Na ja, man kann bestenfalls herausfinden, ob ein TAP mit der ID der Improbox geladen ist.

Benutzeravatar
FireBird
Suspekter verdächtiger Zauberküchenchef, TAP & Firmware-Guru
Suspekter verdächtiger Zauberküchenchef, TAP & Firmware-Guru
Beiträge: 28925
Registriert: Fr 9. Dez 2005, 09:59
Receivertyp: SRP-2401CI+ TFIR
vu+ Duo 4k
Wohnort: Wien

AW: TAPCOM-Library zur Kooperation von TAPs

#12

Beitrag von FireBird » Fr 17. Nov 2006, 15:50

Es kann nicht sein, was nicht sein darf. Wenn ein TAP geladen ist, das die Improbox ID hat aber nicht Improbox ist, dann kann es sich nur um einen Trojaner handeln.

Benutzeravatar
asrael
Bootsmann
Bootsmann
Beiträge: 1407
Registriert: Mo 12. Dez 2005, 09:11
Receivertyp: SRP2401CI+ Eco
TF5500PVR mit Samsung HD103UI/Equip (im Ruhestand)
Receiverfirmware: 1.03.00 2015/03/24
03.01.2007 PTFDeSUUuEWfUaGmTs_aXeL
Wohnort: Oldenburg

AW: TAPCOM-Library zur Kooperation von TAPs

#13

Beitrag von asrael » Fr 17. Nov 2006, 16:00

[quote=""FireBird""]Yep. Mit dieser ID kann man z.B. herausfinden, ob Improbox überhaupt geladen ist.[/quote]

O.K., das wäre ein entscheidender Vorteil, der das potenzielle Problem "TAP antwortet nicht" dann stärker einkreist. Wie geht denn das? :wink:

mfg

asrael
SRP2401CI+ Eco: TAPs aktuell im Test

TF5500PVR (FW: 03.01.2007 PTFDeSUUuEWfUaGmTsXl) mit Samsung HD103UI, Equip Adapter
TAP im Autostart: Bootmenu 0.33
Durch dieses nachgeladen: Normalerweise: TAP Commander, NiceDisplay, Standby, ImproBox, PiP, Fastskip, Stirf, iTiNa, Overfly, Filer2, TSBProtector, Goldfish. Bei Bedarf: Radiotext, acadelog, TopfAMP, MediaManager, PowerRestore, ScreenCapture_OSD, HDDInfo, MiniMax, Snake, poker, sudoko, SimpleCharEditor, filer1.20.

Benutzeravatar
ibbi
Moderierter Ignorator Bitteschöööön!
Moderierter Ignorator  <font color=#E9E9E9>Bitteschöööön!</font>
Beiträge: 7110
Registriert: Fr 9. Dez 2005, 12:49
Receivertyp: TF5000PVR • SRP-2401CI+ Eco
Receiverfirmware: Sep 2005 PHTF • Jan 2015

AW: TAPCOM-Library zur Kooperation von TAPs

#14

Beitrag von ibbi » Fr 17. Nov 2006, 16:02

@FireBird:
Da Du keinen Smiley verwendet hast, kann ich nur vermuten, dass Du es humorvoll meinst. :thinker:

Ich werde jetzt nicht Eulen nach Wien tragen und meinen Einwurf näher erklären, zumal in solch einem Fall außer keine weiteren Katastrophen passieren.

@Asrael:
Das Problem wird dadurch nicht eingekreist.

Benutzeravatar
FireBird
Suspekter verdächtiger Zauberküchenchef, TAP & Firmware-Guru
Suspekter verdächtiger Zauberküchenchef, TAP & Firmware-Guru
Beiträge: 28925
Registriert: Fr 9. Dez 2005, 09:59
Receivertyp: SRP-2401CI+ TFIR
vu+ Duo 4k
Wohnort: Wien

AW: TAPCOM-Library zur Kooperation von TAPs

#15

Beitrag von FireBird » Fr 17. Nov 2006, 16:06

[quote=""asrael""]Wie geht denn das?[/quote]
Man ackert die 16 Einträge der TAP-Tabelle durch. Jeder Eintrag, der eine gültige Adresse hat zeigt dann auf den TAP-Header und 0x0020 Bytes weiter ist eben die TAP_ID. Das mag zwar kompliziert klingen, aber ich habe fertige und firmwareunabhängige Routinen. Filer V2 markiert z.B. die aktuell laufenden TAPs in seiner Liste.

Benutzeravatar
FireBird
Suspekter verdächtiger Zauberküchenchef, TAP & Firmware-Guru
Suspekter verdächtiger Zauberküchenchef, TAP & Firmware-Guru
Beiträge: 28925
Registriert: Fr 9. Dez 2005, 09:59
Receivertyp: SRP-2401CI+ TFIR
vu+ Duo 4k
Wohnort: Wien

AW: TAPCOM-Library zur Kooperation von TAPs

#16

Beitrag von FireBird » Fr 17. Nov 2006, 16:09

[quote=""ibbi""]@FireBird:
Da Du keinen Smiley verwendet hast, kann ich nur vermuten, dass Du es humorvoll meinst. :thinker: [/quote]
Schon, aber was soll passieren, wenn der Fall eintritt? Es versteht die Events nicht und ignoriert sie.

Benutzeravatar
asrael
Bootsmann
Bootsmann
Beiträge: 1407
Registriert: Mo 12. Dez 2005, 09:11
Receivertyp: SRP2401CI+ Eco
TF5500PVR mit Samsung HD103UI/Equip (im Ruhestand)
Receiverfirmware: 1.03.00 2015/03/24
03.01.2007 PTFDeSUUuEWfUaGmTs_aXeL
Wohnort: Oldenburg

AW: TAPCOM-Library zur Kooperation von TAPs

#17

Beitrag von asrael » Fr 17. Nov 2006, 16:11

[quote=""ibbi""]
Eigentlich nicht, da die Events ja vom Topf verwaltet und verteilt werden.
[/quote]

Eigentlich doch :D : , da den verwendeten Mechanismus ja im Prinzip jeder benutzen kann. Es ist aber zumindest gewährleistet, das nur das für ein TAPCOM-Ereignis gehalten wird, was auch (mit annähernd 100 Prozent Wahrscheinlichkeit) eines ist.

[quote=""ibbi""]
Interessant ist aber der Fall, wenn er nicht antwortet. Läuft er dann nicht mehr oder hat er gerade nur anderes zu tun. :thinker:

Normalerweise sollte man von gar nichts ausgehen, sondern den schlimmsten Fall annehmen. :wink: [/quote]

Wie schon geschrieben, sind solche Szenarien nicht sehr wahrscheinlich. Damit man hier weiteren Gehirnschmalz reinsteckt, müsste überhaupt erst mal klar sein, ob es TAP-Programmierer gibt, die TAPCOM benutzen wollen. Bislang ist das Feedback da ja gleich 0. Würde TAPCOM dann genutzt und würde sich rausstellen, dass die Kommunikation nicht nach dem Schema "zu angefordertem Dienst gibt es sofortige Rückmeldung" laufen kann, müsste man sich hier weiteres überlegen.

Es ist aber ja durchaus bei solchen Szenarien denkbar, dass das Server-TAP dem Client die Verarbeitung der Nachricht direkt bestätigt und dann (nach erfolgter Verarbeitung) eine eigene Rückantwort liefert (über TAP_RPC an den Client, dessen ID ja bekannt ist). Von Daher glaube ich, dass man mit der angebotenen Funktionalität schon mal recht weit kommt.

mfg

asrael
SRP2401CI+ Eco: TAPs aktuell im Test

TF5500PVR (FW: 03.01.2007 PTFDeSUUuEWfUaGmTsXl) mit Samsung HD103UI, Equip Adapter
TAP im Autostart: Bootmenu 0.33
Durch dieses nachgeladen: Normalerweise: TAP Commander, NiceDisplay, Standby, ImproBox, PiP, Fastskip, Stirf, iTiNa, Overfly, Filer2, TSBProtector, Goldfish. Bei Bedarf: Radiotext, acadelog, TopfAMP, MediaManager, PowerRestore, ScreenCapture_OSD, HDDInfo, MiniMax, Snake, poker, sudoko, SimpleCharEditor, filer1.20.

Benutzeravatar
ibbi
Moderierter Ignorator Bitteschöööön!
Moderierter Ignorator  <font color=#E9E9E9>Bitteschöööön!</font>
Beiträge: 7110
Registriert: Fr 9. Dez 2005, 12:49
Receivertyp: TF5000PVR • SRP-2401CI+ Eco
Receiverfirmware: Sep 2005 PHTF • Jan 2015

AW: TAPCOM-Library zur Kooperation von TAPs

#18

Beitrag von ibbi » Fr 17. Nov 2006, 16:16

[quote=""FireBird""]Schon, aber was soll passieren, wenn der Fall eintritt? Es versteht die Events nicht und ignoriert sie.[/quote]

Sag ich doch: .

Nur sollte der Client nicht unumstößlich daran glauben, die Improbox liefe, wenn er die ID findet. Er könnte - ohne Kommunikations-Timeout - enttäuscht werden.

(Jetzt habe ich es doch gemacht. )

Benutzeravatar
asrael
Bootsmann
Bootsmann
Beiträge: 1407
Registriert: Mo 12. Dez 2005, 09:11
Receivertyp: SRP2401CI+ Eco
TF5500PVR mit Samsung HD103UI/Equip (im Ruhestand)
Receiverfirmware: 1.03.00 2015/03/24
03.01.2007 PTFDeSUUuEWfUaGmTs_aXeL
Wohnort: Oldenburg

AW: TAPCOM-Library zur Kooperation von TAPs

#19

Beitrag von asrael » Fr 17. Nov 2006, 16:18

[quote=""ibbi""]@Asrael:
Das Problem wird dadurch nicht eingekreist.[/quote]

Doch, wenn ich feststellen kann, dass ein TAP, das nicht antwortet, gar nicht da ist, ist das doch recht hilfreich (und ich kann dann beruhigt den Speicher freigeben). :wink:

War das nicht Dein Ursprungsproblem? :?

mfg

asrael
SRP2401CI+ Eco: TAPs aktuell im Test

TF5500PVR (FW: 03.01.2007 PTFDeSUUuEWfUaGmTsXl) mit Samsung HD103UI, Equip Adapter
TAP im Autostart: Bootmenu 0.33
Durch dieses nachgeladen: Normalerweise: TAP Commander, NiceDisplay, Standby, ImproBox, PiP, Fastskip, Stirf, iTiNa, Overfly, Filer2, TSBProtector, Goldfish. Bei Bedarf: Radiotext, acadelog, TopfAMP, MediaManager, PowerRestore, ScreenCapture_OSD, HDDInfo, MiniMax, Snake, poker, sudoko, SimpleCharEditor, filer1.20.

Benutzeravatar
ibbi
Moderierter Ignorator Bitteschöööön!
Moderierter Ignorator  <font color=#E9E9E9>Bitteschöööön!</font>
Beiträge: 7110
Registriert: Fr 9. Dez 2005, 12:49
Receivertyp: TF5000PVR • SRP-2401CI+ Eco
Receiverfirmware: Sep 2005 PHTF • Jan 2015

AW: TAPCOM-Library zur Kooperation von TAPs

#20

Beitrag von ibbi » Fr 17. Nov 2006, 16:24

[quote=""asrael""]Doch, wenn ich feststellen kann, dass ein TAP, das nicht antwortet, gar nicht da ist, ist das doch recht hilfreich (und ich kann dann beruhigt den Speicher freigeben). :wink:

War das nicht Dein Ursprungsproblem? :? [/quote]

Nein. Es geht darum, dass jemand keine Improbox benutzt, aber das SuperDuperTAP, welches unverschämterweise dieselbe ID verwendet. Nun glaubt man also festzustellen, dass die Improbox läuft, aber irgendwie antwortet sie nicht. Wenn es jetzt keinen Mechanismus gibt, die Kommunikation kontrolliert zu beenden und den Speicher wieder freizugeben, obwohl scheinbar alles klappen müsste, wird man nicht glücklich werden.

Ähnliches (d. h. keine Antwort, obwohl diesmal da) kann z. B. mit 3PG passieren, wenn dieses gerade für eine Weile mit anderen Dingen beschäftigt ist (Kanäle scannen, Timer anlegen).

Wenn ich weiß, dass ein TAP gar nicht da ist, brauche ich erst gar keinen Speicher anfordern und kann mir die Kommunikation ersparen. Dann nützt die - in diesem Fall nicht vorhandene - ID natürlich.
Zuletzt geändert von ibbi am Fr 17. Nov 2006, 16:28, insgesamt 1-mal geändert.

Antworten

Zurück zu „TF 5x00/6000 PVR TAP“