API-Calls nur im Idle ausführen

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
Gerti
Nicht mehr bei Topfield-Europe
<b>Nicht mehr bei Topfield-Europe</b>
Beiträge: 15740
Registriert: Fr 9. Dez 2005, 00:16
Receivertyp: Vu+ Uno 4k
Wohnort: Hürth
Kontaktdaten:

API-Calls nur im Idle ausführen

#1

Beitrag von Gerti » Mo 19. Dez 2005, 12:00

Hi!

Ich möchte an dieser Stelle einen wichtigen Hinweis an alle TAP-Entwickler loswerden. Die Firmware der der Masterpiece-Geräte (sowie der englischen Topfields) sind extrem empfindlich, wenn API-Calls direkt durch Keyevents ausgelöst werden. Hierbei kommt es bei besagten Geräten idR. zu einem ungewollten Reboot der Geräte.

Um dieses zu verhindern, sollte dafür Sorge getragen werden, dass API-Calls nur im Idle-Event ausgeführt werden und nicht schon direkt bei der Auswertung des Key-Events.

Gruß,
Gerti

Benutzeravatar
Erdnussnase
TAP-Guru
TAP-Guru
Beiträge: 7067
Registriert: Fr 9. Dez 2005, 12:01

#2

Beitrag von Erdnussnase » Mo 19. Dez 2005, 12:37

:eek: :twisted: :bash:

:thanks:
:type: ->.....
Kein Support oder Fragen zur Registrierung per PN !
http://www.iTiNa.de
?Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit,
aber bei dem Universum bin ich mir noch nicht ganz sicher.?
Albert Einstein

Benutzeravatar
eber
TAP-Guru
TAP-Guru
Beiträge: 313
Registriert: Fr 9. Dez 2005, 10:21
Wohnort: Mainz

#3

Beitrag von eber » Mo 19. Dez 2005, 12:58

Vielleicht hilft folgender Code das Problem relativ einfach zu umgehen:

static word GlobalLastEvent=0;
static word GlobalLastParam1=0;
static word GlobalLastParam2=0;
static bool GlobalLastProcess=FALSE;

extern dword TAP_EventHandler( word event, dword param1, dword param2 ){

if (event!= EVT_IDLE ){
//Notiere das Nicht-Idle-Event
GlobalLastEvent=event;
GlobalLastParam1=param1;
GlobalLastParam2=param2;
GlobalLastProcess=TRUE;
return param1;
}
//Hier muß es ein EVT_IDLE sein
if (GlobalLastProcess){
//es ist noch ein altes Event da, das statt dem Idle-Event verarbeitet werden muß
event=GlobalLastEvent;
param1=GlobalLastParam1;
param2=GlobalLastParam2;
GlobalLastProcess=FALSE;
}

//ab hier der "alte" Code
}

Spinnen die bei Topfield z.Zt. mal wieder - was soll den das?
Zuletzt geändert von eber am Mo 19. Dez 2005, 15:49, insgesamt 1-mal geändert.
(TF5000PVR mit 250 GB Samsung HD ,nur FreeToAir,Twin-LNB , TAPs: Smartepg, ImproBox)

Nützliche Infos findet man auch im Topfield-Wikipedia. Einfach hier klicken

The Specialist
Benutzer
Benutzer
Beiträge: 50
Registriert: Fr 9. Dez 2005, 16:20
Receivertyp: TF 5500 PVR
Receiverfirmware: Januar 2007

#4

Beitrag von The Specialist » Mo 19. Dez 2005, 15:23

Das obige Code-Snippet kann aber dazu führen, das Events verloren gehen, oder? Korrekterweise müsste man die Nicht-Idle-Events wohl in eine Queue packen, die dann im Idle-Fall abgearbeitet wird...

Benutzeravatar
eber
TAP-Guru
TAP-Guru
Beiträge: 313
Registriert: Fr 9. Dez 2005, 10:21
Wohnort: Mainz

#5

Beitrag von eber » Mo 19. Dez 2005, 15:49

The Specialist hat geschrieben:Das obige Code-Snippet kann aber dazu führen, das Events verloren gehen, oder? Korrekterweise müsste man die Nicht-Idle-Events wohl in eine Queue packen, die dann im Idle-Fall abgearbeitet wird...
Korrekt - wobei man es normalerweise nicht schafft, zwei Key-Events schnell genug hintereinander auszulösen, ohne das ein Idle-Event dazwischen rutscht. Besser wäre allerdings ein kleiner Event-Puffer.
Außerdem hat die Lösung den Nachteil, das man bei Key-Events keine abweichende Taste (oder überhaupt einen Wert) an das nachfolgende Tap weiterreichen kann.
Oops - da muß ich gleich noch eine kleiner Änderung einbauen sonst frißt der obige Code alle KeyEvents und reicht diese nie weiter.
Das wird vermutlich doch etwas verzwickter da man manchmal die Taste ja auch nicht weiterreichen möchte (wenn sie vom Tap selbst verarbeitet wurde) - oh je oh je

Grüße

Eber
Zuletzt geändert von eber am Mo 19. Dez 2005, 15:51, insgesamt 1-mal geändert.
(TF5000PVR mit 250 GB Samsung HD ,nur FreeToAir,Twin-LNB , TAPs: Smartepg, ImproBox)

Nützliche Infos findet man auch im Topfield-Wikipedia. Einfach hier klicken

Benutzeravatar
bubendorf
Benutzer
Benutzer
Beiträge: 97
Registriert: Fr 9. Dez 2005, 18:13
Wohnort: Schönenbuch, Schweiz
Kontaktdaten:

#6

Beitrag von bubendorf » Mo 19. Dez 2005, 15:50

The Specialist hat geschrieben:Das obige Code-Snippet kann aber dazu führen, das Events verloren gehen, oder? Korrekterweise müsste man die Nicht-Idle-Events wohl in eine Queue packen, die dann im Idle-Fall abgearbeitet wird...
Das mit der Queue wäre wohl die sauberste Lösung. Zur Not kann man auch das erste if (...) durch
if (event!= EVT_IDLE && GlobalLastProcess==FALSE)
ersetzen. Dann wird wenigstens das erste Event ausgeführt und nicht das letzte.

Gruss
Bubendorf

Benutzeravatar
jk
BoardSprenger
BoardSprenger
Beiträge: 8844
Registriert: Do 8. Dez 2005, 19:00
Receivertyp: SRP-2100 (Küchengerät)
Receiverfirmware: uralt aber stabil
Wohnort: Jennersdorf/Österreich
Kontaktdaten:

#7

Beitrag von jk » Mo 19. Dez 2005, 16:20

na da freu ich mich doch schon auf die nächte version für die 5er serie, da wird dann das große codeändern in den taps beginnen :?



Benutzeravatar
eber
TAP-Guru
TAP-Guru
Beiträge: 313
Registriert: Fr 9. Dez 2005, 10:21
Wohnort: Mainz

#8

Beitrag von eber » Mo 19. Dez 2005, 17:03

Meiner Meinung nach muß Topfield da etwas unternehmen den sie verstossen eindeutig gegen ihre eigene Tap-Spezifikation und irgendwie kann es nicht sein das nun jeder Tap-Programmierer mühsam einen Workaround basteln muß. Vor lauter Workarounds blickt man bald nicht mehr durch :motz:
Vor allem stellt sich die Frage wie man als Entwickler der normalerweise nur einen Topf zum Entwickeln hat die Lauffähigkeit auf anderen Modellen überhaupt noch testen soll.
Bereits der Masterpiece hatte ja schon einige gravierende Abweichungen im API :motz: :motz:
Schließlich verkauft Topfield durch die Taps mit Sicherheit mehr und nicht weniger Geräte - die Topfield-eigenen Neuerungen sind dagegen recht überschaubar.

Grüße

Eber
(TF5000PVR mit 250 GB Samsung HD ,nur FreeToAir,Twin-LNB , TAPs: Smartepg, ImproBox)

Nützliche Infos findet man auch im Topfield-Wikipedia. Einfach hier klicken

thensch
Super-Duper-Freak
Super-Duper-Freak
Beiträge: 4397
Registriert: Fr 9. Dez 2005, 15:16
Receivertyp: TF5000PVR
Receiverfirmware: 03.01.07 EGmHIPSTUUu

#9

Beitrag von thensch » Mo 19. Dez 2005, 17:22

eber hat geschrieben:Schließlich verkauft Topfield durch die Taps mit Sicherheit mehr und nicht weniger Geräte - die Topfield-eigenen Neuerungen sind dagegen recht überschaubar.
Ich frage mich nur immer wieder, ob denen das eigentlich klar ist.
Gruß
thensch
FpLogger, PowerRestore, 3PG 1.22, ImproBox, Euro-Stirf, Macro TAP, RecCopy

Benutzeravatar
eber
TAP-Guru
TAP-Guru
Beiträge: 313
Registriert: Fr 9. Dez 2005, 10:21
Wohnort: Mainz

#10

Beitrag von eber » Mo 19. Dez 2005, 17:47

Bestimmt nicht, denn dann wäre der Support für Tap-Entwickler vielleicht etwas besser. Ich will mich ja auch nicht beklagen, denn gelegentlich gab es ja Fortschritte was den Umfang des APIs anbelangt. Und eigentlich fehlen auch nur noch ganz wenige Funktionen (File-Move, Abfrage des gerade aktiven Tuners, Zugriff auf die Videotext-Daten und evt. noch auf die Schnittfunktionen) zum vollständige Glück.
Aber das man jetzt nur noch in Idle-Phasen auf API-Funktionen zugreifen darf ist irgendwo Willkür und wäre sicherlich für Topfield leicht behebbar.

Es macht einfach keinen Spaß, wenn man von außen versuchen muß, die Fehler im API zu umgehen. Wenn das so weiter geht muss man zukünftig als TAP-Entwickler verschiedenste Firmware-Varianten berücksichtigen und das kann man als Privatperson irgendwann nicht mehr leisten und vor allem nicht mehr testen.
Wie bereits schon mal geschrieben bin ich der Meinung, das ein Topfield-Entwickler hier (in einem speziellen und natürlich englischem) Thread mitlesen sollte. Ich denke das man dann vieles wesentlich einfacher und vor allem schneller lösen könnte. Viele Fehler im API verursachen u.U. ja auch Fehler in der normalen Firmware und somit wäre es auch für Topfield sinnvoll, hier mitzulesen.
Aber es scheint irgendwie aussichtslos....

Grüße

Eber
(TF5000PVR mit 250 GB Samsung HD ,nur FreeToAir,Twin-LNB , TAPs: Smartepg, ImproBox)

Nützliche Infos findet man auch im Topfield-Wikipedia. Einfach hier klicken

Benutzeravatar
Gerti
Nicht mehr bei Topfield-Europe
<b>Nicht mehr bei Topfield-Europe</b>
Beiträge: 15740
Registriert: Fr 9. Dez 2005, 00:16
Receivertyp: Vu+ Uno 4k
Wohnort: Hürth
Kontaktdaten:

#11

Beitrag von Gerti » Mo 19. Dez 2005, 18:23

Hi!

Wie gesagt, handelt es sich hierbei um eine Beobachtung von mir und nicht um eine Aussage von Topfield. Nur um das klarzustellen...

Gruß,
Gerti

Benutzeravatar
mastercb
Erfahrener Benutzer
Erfahrener Benutzer
Beiträge: 198
Registriert: Fr 9. Dez 2005, 20:56
Receivertyp: SRP-2401CI+ RDE1161
Receiverfirmware: immer die Aktuelle ;-)

#12

Beitrag von mastercb » Mo 19. Dez 2005, 18:30

Ich finde das --sorry-- echt eine Sauerei, wie Topfield mit Euch TAP-Programmierern umgeht.

Ihr schreibt die TAP's, die sicher für viele Leute ein Argument sind, sich überhaupt einen Topf zu kaufen und dann machen Die Euch noch soviel unnütze Arbeit :spin:

Vieleicht wäre es eine gute Strategie, einfach die "neueren" Topf Modelle (welche Euch immer wieder Schwierigkeiten machen) in den TAP's BEWUßT nicht zu unterstützen. Vielleicht merkt dann endlich Topfield, was sie von Euch haben und ob es vielleicht gut für Geschäft wäre, endlich die Hauseigenen API-Specs einzuhalten.

Letztes Beispiel für die Ignoranz von Topfield ist ja die FW Sept05. :crazy:

Benutzeravatar
eber
TAP-Guru
TAP-Guru
Beiträge: 313
Registriert: Fr 9. Dez 2005, 10:21
Wohnort: Mainz

#13

Beitrag von eber » Mo 19. Dez 2005, 18:32

Schon klar - aber es reicht ja eigentlich schon aus wenn Taps die sich an alle Vorgaben halten unter bestimmten (neueren) Firmware-Varianten plötzlich nicht mehr lauffähig sind. Und das ist ja hier ziemlich sicher der Fall. Das Topfield die Ursachen nicht dokumentiert macht die Sache eher noch schlimmer....
Eigentlich erwarte ich schon, das jedes neue API abwärtskompatibel ist.

Es wird uns aber erfahrungsgemäß trotzdem nichts anderes übrig bleiben, als selbst um diese Besonderheit herumzuprogrammieren. Nur Spaß macht das nicht :cry:

Grüße

Eber
(TF5000PVR mit 250 GB Samsung HD ,nur FreeToAir,Twin-LNB , TAPs: Smartepg, ImproBox)

Nützliche Infos findet man auch im Topfield-Wikipedia. Einfach hier klicken

Benutzeravatar
buko
Mr. Settings
Mr. Settings
Beiträge: 12250
Registriert: Fr 9. Dez 2005, 09:03
Receivertyp: auch andere Receiver!
VU+ Uno 4K
VU+ Duo 4K SE
Wohnort: Bayern & Tirol

#14

Beitrag von buko » Mo 19. Dez 2005, 20:09

eber hat geschrieben:Bereits der Masterpiece hatte ja schon einige gravierende Abweichungen im API :motz: :motz:
Schließlich verkauft Topfield durch die Taps mit Sicherheit mehr und nicht weniger Geräte - die Topfield-eigenen Neuerungen sind dagegen recht überschaubar.

Grüße

Eber
...wie wahr..!!. :bumm: :bumm: :bumm:

gruss buko :santa:
gruß
buko
:altermotzsack:



Topfield Settings bearbeiten, verwalten und vieles mehr:
mit :->: SetEdit für fast alle Topfield & VU+ Receiver :up:

Benutzeravatar
Happy
TAP-Guru
TAP-Guru
Beiträge: 5718
Registriert: Fr 9. Dez 2005, 09:32
Receivertyp: TF4000-5500-6000-TMS
Wohnort: bei Karlsruhe
Kontaktdaten:

#15

Beitrag von Happy » Mo 19. Dez 2005, 22:38

Hi,
das ist ja echt ne Frechheit :X
Hauptsache die TAP-Programmierer sind beschäftigt. :motz:

Gibts denn spezielle Sachen, die gerne schief gehen? Hat evtl jemand Links zu Threads in andere Boards, wo das besprochen wird ? Damit ich weiss wo ich aktiv werden muss. Automove betreffend habe ich aus UK noch nichts diesbezüglich gehört :D :

Gruß,
Happy
:type: Meine TAPs und Tools

TF5500 PVR (Fw Jan. 2007 P)- 400GB Samsung - AC light 1.05 - Yamaha RX-V 1500
- LAN: Asus WL-500g Deluxe mit ftpd-topfield 0.7.4
TAPs: Quicktimer, Autodelete, Standby, 3PG, Automove, NiceDisplay, PowerRestore, WSS Killer, Eurostirf, Overfly
TV: Sony KDL-46W4500
TF6000 PVR (Fw Okt. 2008)- 160GB Samsung SV1604N
TAPs: iTina, Autodelete, Automove, Autoresume, NiceDisplay, WSS Killer
SRP-2100 (Fw Okt. 2009)
TAPs: SmartEPG, ChangePreview, Autodelete, Automove, BackupSettings,RescueRecs, MySkip, NiceDisplay

Benutzeravatar
Gerti
Nicht mehr bei Topfield-Europe
<b>Nicht mehr bei Topfield-Europe</b>
Beiträge: 15740
Registriert: Fr 9. Dez 2005, 00:16
Receivertyp: Vu+ Uno 4k
Wohnort: Hürth
Kontaktdaten:

#16

Beitrag von Gerti » Mo 19. Dez 2005, 22:46

Hi!

Das lässt sich nicht an besonderen Dingen festmachen...
Ich hatte das Problem mehrfach mit ImproBox (auf unseren Toppis keine Probleme, auf den UK-Toppis kam es zu reboots).
Nachdem ich die API-Calls dann aus dem Key-Event entfernt (dort habe ich dann z.B. nur Jump=1 gesetzt) entfernt und in den IDLE-Bereich verschoben hatte, waren den Fehler in UK beseitigt.
Da ich z.Zt. ja einen 6000 zum testen habe, habe ich natürlich auch einige TAPs getestet und ImproBox läuft absolut stabil (weil es im Prinzip schon fast alle API-Calls so behandelt), SmartEPG hingegen bringt den Topfield alle paar "Aktionen" zu einem reboot. Daher vermute ich halt, dass es an den API-Calls ausserhalb der Idle-Events liegt (weil ich damit die selben Probleme mit ImproBox beheben konnte). Eine 100% Garantie kann ich natürlich nicht geben...Schaden kann es aber auf keinen Fall...
Falls Eber SmartEPG in Kürze so umgestellt haben sollte, kann ich genaueres dazu sagen...

Solche Dinge wie die Abfrage vom Aufnahme/Wiedergabestatus, etc. mache ich auch ausserhalb der Idle-Events. Sprünge, etc. mache ich aber nur mehr in den Idle-Events.

Gruß,
Gerti

Benutzeravatar
Acade
Software-Guru
Software-Guru
Beiträge: 952
Registriert: Fr 9. Dez 2005, 13:37
Receivertyp: TF 5000 PVR (Rente) Wohnzi. : SRP 2401 CI+ Eco Reserve: SRP 2401 CI+
Wohnort: Bayern
Kontaktdaten:

#17

Beitrag von Acade » Di 20. Dez 2005, 22:34

Das wäre jetzt nach http://board.topfield.de/viewtopic.php?p=185397 schon wieder so ein Hammer! Wozu eigentlich überhaupt noch neue FW unterstützen, wenn man sich auf das API nicht mehr verlassen kann? Dann gibt's halt für neue Geräte keine TAPs mehr (wenn sie nicht auch mit einer alten FW laufen). Es artet immer mehr in eine riesige Zeitverschwendung aus ...

Sauer,
Acade

Benutzeravatar
Happy
TAP-Guru
TAP-Guru
Beiträge: 5718
Registriert: Fr 9. Dez 2005, 09:32
Receivertyp: TF4000-5500-6000-TMS
Wohnort: bei Karlsruhe
Kontaktdaten:

#18

Beitrag von Happy » Di 20. Dez 2005, 23:42

@Gerti,
danke für die Ausführungen. Wie sieht es denn mit der Navigation in einem Menü aus. Das wäre bei meinen TAPs etwas typisches, wo eine Taste direkt das Neuzeichnen des OSD verursacht. Muss man das auch umschreiben?

Gruß,
Happy
:type: Meine TAPs und Tools

TF5500 PVR (Fw Jan. 2007 P)- 400GB Samsung - AC light 1.05 - Yamaha RX-V 1500
- LAN: Asus WL-500g Deluxe mit ftpd-topfield 0.7.4
TAPs: Quicktimer, Autodelete, Standby, 3PG, Automove, NiceDisplay, PowerRestore, WSS Killer, Eurostirf, Overfly
TV: Sony KDL-46W4500
TF6000 PVR (Fw Okt. 2008)- 160GB Samsung SV1604N
TAPs: iTina, Autodelete, Automove, Autoresume, NiceDisplay, WSS Killer
SRP-2100 (Fw Okt. 2009)
TAPs: SmartEPG, ChangePreview, Autodelete, Automove, BackupSettings,RescueRecs, MySkip, NiceDisplay

Benutzeravatar
Gerti
Nicht mehr bei Topfield-Europe
<b>Nicht mehr bei Topfield-Europe</b>
Beiträge: 15740
Registriert: Fr 9. Dez 2005, 00:16
Receivertyp: Vu+ Uno 4k
Wohnort: Hürth
Kontaktdaten:

#19

Beitrag von Gerti » Mi 21. Dez 2005, 08:02

Hi!

Da Dein TAP ja nur auf dem 5500 läuft und dort keine Probleme dieser Art auftreten, brauchst Du Dir da wohl keine Gedanken machen...

Wie gesagt, wäre wohl abzuwarten, ob SmartEPG durch besagte Änderungen stabil auf dem 6000 laufen würde.

Gruß,
Gerti

Benutzeravatar
eber
TAP-Guru
TAP-Guru
Beiträge: 313
Registriert: Fr 9. Dez 2005, 10:21
Wohnort: Mainz

#20

Beitrag von eber » Mi 21. Dez 2005, 11:24

Mein Problem bei der Anpassung ist folgendes:
Die eigentliche Verarbeitung eines Key-Events in das nächste Idle-Event zu verlagern ist recht einfach machbar. Die Änderungen beschränken sich auf TAP_EventHandler und damit könnte ich leben.

ABER:

Wenn ein Key-Event ankommt muß ich bereits entscheiden, ob ich die Taste weiterreiche (an das nächste Tap) oder nicht. Für diese Entscheidung darf ich aber auf dem TF6000 keine API-Funktionen benutzen (es läuft ja noch ein Key-Event) und auf später verschieben geht auch nicht.

Dieses Problem läßt sich nicht nach Schema F lösen und erfordert (zumindest bei Smartepg) größere Eingriffe an verschiedensten Stellen im Code.
Ohne entsprechendes Testequiment ist mir das momentan zu zeitraubend :?

Auch tut sich Topfield meiner Meinung nach selbst keinen Gefallen (von Taps mal ganz abgesehen) wenn die einzelnen Firmware-Versionen immer weiter auseinander driften. Schließlich wirken sich solche Effekte ziemlich sicher nicht nur im API sondern auch in den firmware-eigenen Routinen aus.
Und es macht auch wenig Sinn wenn man statt Ursachen die Symptome beseitigt.
Eigentlich müßte Topfield selbst das größte Interesse an einem einheitlichen API für alle Modelle haben.
Daher bin ich weiter der Meinung das wir wieder an einer besseren Connection zu den Entwicklern in Korea arbeiten sollten.

Grüße

Eber
(TF5000PVR mit 250 GB Samsung HD ,nur FreeToAir,Twin-LNB , TAPs: Smartepg, ImproBox)

Nützliche Infos findet man auch im Topfield-Wikipedia. Einfach hier klicken

Antworten

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