Seite 1 von 2

Für TAP-Entwickler: Power Off

Verfasst: Mi 28. Dez 2005, 10:19
von DeadBeef
Hallo zusammen,

ich habe gestern eine Idee für einen minimal-invasiven FW-Hook in einem Demo-TAP umgesetzt (PowerOff). Das TAP demonstriert wie man das Abschalten abfängt, ggf. verzögert und an die anderen TAPs meldet. Im Prinzip ist die Funktionalität schon vollständig, man muß nur noch den anderen TAPs beibringen, auf RKEY_Power zu reagieren. Es bleibt noch rauszufinden, wie lange die maximale Reaktionszeit (=Verzögerung) ist. Momentan ist die Verzögerung auf 5 Sekunden eingestellt, wenn keine Aufnahme läuft.

Momentan läuft das TAP nicht gleichzeitig mit dem TF5000Display TAP - die zapfen dieselbe Funktion an. Für diejenigen, die diese Funktionalität auf einem Topf mit TF5000Display TAP benutzen wollen, könnte ich dies als Zusatzfeature in TF5000Display einbauen.

Gruß
DeadBeef

EDIT: Ich wollte noch hinzufügen, daß dieses TAP den Anspruch erhebt, firmware-unabhängig zu sein. D.h. es müsste auf allen Topf-Modellen laufen (was noch zu beweisen ist). Momentan beinhaltet das TAP noch ein paar Debug-Ausgaben, die entfernt werden müssen.

Verfasst: Mi 28. Dez 2005, 10:44
von Happy
Hi,
habe das gestern schon testen dürfen, und die nächste Beta von NiceDisplay wird das PowerOff Event verarbeiten.
NiceDisplay wird sich beenden, wenn die OFF Taste gedrückt wird. Nach meinen Tests gestern kommt es dann nicht mehr zu den berühmt-berüchtigten Abstürzen während eine Aufnahme läuft und man die OFF-Taste drückt und dann die Meldung mit nein bestätigt. :D

Super gemacht, DeadBeef :bounce:

Gruß,
Happy

Verfasst: Mi 28. Dez 2005, 11:37
von Philipswalther
Hallo DeadBeef

Ja, bitte mit in DisplayTap einbauen.

Gruß u. Dank
Jens

Verfasst: Mi 28. Dez 2005, 14:06
von flechumer
Happy hat geschrieben:Nach meinen Tests gestern kommt es dann nicht mehr zu den berühmt-berüchtigten Abstürzen während eine Aufnahme läuft und man die OFF-Taste drückt und dann die Meldung mit nein bestätigt.
könnte man mal Näheres erfahren, was es mit diesen ominösen Abstürzen auf sich hat? Ich kann das zumindest mit SmartSkipper nicht reproduzieren.

Verfasst: Mi 28. Dez 2005, 18:12
von Happy
flechumer hat geschrieben:könnte man mal Näheres erfahren, was es mit diesen ominösen Abstürzen auf sich hat? Ich kann das zumindest mit SmartSkipper nicht reproduzieren.
Das passiert auch nur mir NiceDisplay.
Drückt man auf OFF reisst die Fw die Displaykontrolle (5500!!) kommentarlos an sich, während NiceDisplay fleißig weiterläuft.
Wenn eine Aufnahme läuft, kann man die Meldung, ob man wirklich abschalten möchte mit nein beabtworten.
Dann bekommt ND die Kontrolle zwar (ebenso kommentarlos) wieder. Die Ansteuerung funktioniert aber nicht mehr einwandfrei. In der Folge schaltet sich der Topf dann mit ziemlicher Sicherheit einfach aus.
Dagegen gab es auch keinen Workaround.

Bei meinen Tests gestern schien mir, dass das Problem nicht mehr besteht, wenn ich ND beim Drücken der OFF Taste schnell beenden kann.

Gruß,
Happy

Verfasst: Mi 28. Dez 2005, 18:25
von flechumer
@Happy: wird schon klarer, danke.

Verfasst: Mi 28. Dez 2005, 21:29
von Happy
DeadBeef hat geschrieben: Momentan beinhaltet das TAP noch ein paar Debug-Ausgaben, die entfernt werden müssen.
Heißt das, dass du daran noch basteln wirst, oder sollen wir ?

Gruß,
Happy

Verfasst: Mi 28. Dez 2005, 23:47
von DeadBeef
Happy hat geschrieben:Heißt das, dass du daran noch basteln wirst, oder sollen wir ?
Wer die Debug-Ausgaben entfernt, ist nicht so wichtig. :wink: Da es bis jetzt noch nicht viel Feedback von anderen TAP-Entwicklern gab, wüsste ich nicht mal, in welche Richtung ich basteln soll.

Die Frage ist, was man an dem TAP noch ändern/verbessern/erweitern kann. Ich würde auch gerne erfahren, ob man sich überhaupt darauf verlassen kann und will, daß so ein "ominöses" Power-Off-Event kommt und daß man noch genug Zeit hat, um die Daten erst kurz vor knapp statt periodisch zu speichern. Reichen fünf Sekunden überhaupt oder sind es vier zu viel?
Wer Ideen hat, braucht auf mich nicht zu warten... :confused:

Gruß
DeadBeef

Verfasst: Mi 28. Dez 2005, 23:58
von Happy
Hi,
ich habe mir eine Version des TAPs gebastelt, die speziell für das NiceDisplay Problem helfen soll.
Es wird keine Dummyaufnahme gestartet, da das ND Problem nur auftritt, wenn Aufnahmen laufen.
Das habe ich jetzt im Autostart laufen, mal schauen, was passiert.

Gruß,
Happy

Verfasst: Do 29. Dez 2005, 12:18
von Harvey
Ich habe tgrooves TAP Autolearn (#83 und #87) mal so erweitert, dass es vorm Abschalten Jags EPG abspeichert.

Code: Alles auswählen

dword TAP_EventHandler( word event, dword param1, dword param2 ) {
// ...
	if(event == EVT_KEY)
	{
		switch(param1)
		{
			case  RKEY_Power:
			// got the power-off event
				TAP_GenerateEvent( EVT_KEY, RKEY_Fav, 0);
				TAP_Delay(50);
				TAP_GenerateEvent( EVT_KEY, RKEY_F1, 0);
		}
	}
	return param1;
}

Leider funktioniert aber dein PowerOff bei mir nicht. Der Topf schaltet sich bei mir sofort ab, nicht erst nach 5 Sekunden. Auch nicht, wenn es als einziges TAP läuft.


Seriell wird mir gemeldet

Starting TAP
checkRecording = 0x8017d5d8
startRecording = 0x8017bc64
generateEvent = 0x8015f280
sendToDisplay = 0x8000654c
Hook initialized (0x820b86bc)
Hook installed

Drücke ich dann Power Off, so kommt keine serielle Meldung mehr.
Da müsste doch eigentlich kommen
OFF event x y

Verfasst: Do 29. Dez 2005, 13:40
von Happy
Hallo,
hast du das Poweroff TAP immer nur zusammen mit dem angepassten Autolearn probiert ? Funktioniert es auch nicht als einziges TAP ?
Evtl gibts Schwierigkeiten mit den GenerateKeyEvents und dem TAP_Delay innerhalb des PowerOff Keyevents.

Gruß,
Happy

Verfasst: Do 29. Dez 2005, 16:57
von Harvey
Ich habe das TAP auch einzeln probiert.

Wenn ich den Quellcode richtig verstehe müsste eigentlich in fwHook eine 5-Sekündige Dummy- Aufnahme starten. Das tut's aber nicht, der Topf ist in 0,nix aus.
Auch ein "OFF" kann ich im Display nicht entdecken, aber das geht möglicherweise zu schnell.

Was mich ein wenig verwundert ist die Zeile
if(pHookData->checkRecording(-1))//0) && pHookData->checkRecording(1))
. Aber dazu stecke ich natürlich nicht tief genug drin.

Schade, dass ich in fwHook kein TAP_Print ausführen darf (wenn ich den Kommetar richtig verstehe).

Verfasst: Do 29. Dez 2005, 18:22
von Happy
Harvey hat geschrieben: Wenn ich den Quellcode richtig verstehe müsste eigentlich in fwHook eine 5-Sekündige Dummy- Aufnahme starten. Das tut's aber nicht, der Topf ist in 0,nix aus.
Auch ein "OFF" kann ich im Display nicht entdecken, aber das geht möglicherweise zu schnell.
Genau so ist es.

Werde noch mal genau den Download von oben ausprobieren, da ich ja nur die Vorabversion getestet hatte.
Evtl. kannst du noch folgendes probieren, mit Kontrolle der TAP_Print Ausgabe.
Starte eine manuelle Aufnahme und drücke auf Standby.
Jetzt sollte das OFF-Event innerhalb des TAPs ausgelöst werden, während die Meldung "wollen sie wirklich.." erscheint.



Gruß,
Happy

Verfasst: Do 29. Dez 2005, 19:49
von DeadBeef
Harvey hat geschrieben:Was mich ein wenig verwundert ist die Zeile
if(pHookData->checkRecording(-1))//0) && pHookData->checkRecording(1))
. Aber dazu stecke ich natürlich nicht tief genug drin.

:oops: Oops... Eine interessante Beobachtung. Jetzt bin ich mir nicht mehr sicher, mit welcher Version ich erfolgreich getestet habe. Es wohl sieht so aus, daß ich eine Version hochgeladen habe, deren Logik an dieser Stelle falsch ist. Happy hatte von mir eine Version bekommen, die folgende Abfrage beinhaltete: if(!pHookData->checkRecording(-1)). Bei der Negierung wurde eine neue Aufnahme aber immer gestartet. Da habe ich wohl angefangen alles durchzuprobieren...

Müsste ich noch mal nachtesten.

Gruß
DeadBeef

Verfasst: Do 29. Dez 2005, 20:29
von Happy
Hallo,
die Zeile muss lauten:

Code: Alles auswählen

if(!(pHookData->checkRecording(1) || pHookData->checkRecording(0)))
Dann klappts. Egal in welchem Slot die Aufnahme läuft.
Und läuft keine, wird eine gestartet.

Gruß,
Happy

EDIT:
Habe den Download wieder entfernt, da es bei DeadBeef einen aktuellen Download gibt

Verfasst: Fr 30. Dez 2005, 09:41
von DeadBeef
Happy,

Danke für Deine Unterstützung! :D

DeadBeef

Verfasst: Fr 30. Dez 2005, 10:13
von Harvey
Tja, prinzipiell geht das nun. Autolearn empfängt das Event.

Nur kann ich die TAP_GenerateEvent nicht erfolgreich absetzten, weil die wohl an das Warnhinweisfenster gehen :(

5s hätten übrigens vielleicht nicht gereicht, weil Jag schon geschätze 3-4s braucht (so lange hängt die Restzeit bei 1s fest, bis beim Scan umgeschaltet wird).
Wenn dann erst noch die Platte anlaufen muss und startRecording(0) nicht wartet (keine Ahnung), dann wird das eng.

Beenden des TAPs mittes der Taste 1 habe ich übrigens auskommentiert.

Verfasst: Fr 30. Dez 2005, 11:21
von Happy
@DeadBeef
Hat Spass gemacht, ich hoffe das war ok so. Der Dank gebührt natürlich Dir.
Harvey hat geschrieben: Nur kann ich die TAP_GenerateEvent nicht erfolgreich absetzten, weil die wohl an das Warnhinweisfenster gehen :(

5s hätten übrigens vielleicht nicht gereicht, weil Jag schon geschätze 3-4s braucht (so lange hängt die Restzeit bei 1s fest, bis beim Scan umgeschaltet wird).
Wenn dann erst noch die Platte anlaufen muss und startRecording(0) nicht wartet (keine Ahnung), dann wird das eng.
Vielleicht baut Jag ja Unterstützung für das PowerOff TAP mit in den EPG mit rein. Das praktische ist ja, dass die TAPs immer voll kompatibel bleiben, auch wenn man das PowerOff TAP gar nicht einsetzt.

Habe gestern auch noch ein wenig gebastelt:
-TAP_Prints habe ich aukommentiert und die Fehlermedlungen in Bildschrimanzeigen verwandelt.
-Die 1 zum Beenden habe ich ebenfalls auskommentiert und dafür Unterstützung für den TSR-Commander eingebaut
-Im Moment habe ich 2 Versionen kompiliert eine normale, die das Ausschalten verzögert, und eine die keine Dummyaufnahme startet und das Off-Event nur sendet, wenn eine Aufnahme läuft. Diese ist praktischer, wenn man es nur mit NiceDisplay einsetzt.
Werde das alles dann wahrscheinlich heute Abend hier reinstellen. Bei mir läuft das jedenfalls schon 2 Tage ohne Nebenwirkungen. :lol:

Gruß,
Happy

Verfasst: Fr 30. Dez 2005, 22:43
von Happy
Hallo,
anbei das angepasste Poweroff TAP mir den schon erwähnten Änderungen.

Code: Alles auswählen

  Installation: -sollte im AutoStart Ordner stehen, wenn die Funktionalität
                 permanent zur Verfügung stehen soll
                -es darf nur eines der bereitgestelten TAPs auf einmal
                 verwendet werden
  Beenden:      -das TAP kann nur über TSR-Commander beendet werden

  poweroff.tap
  ============
  - When die AUS-Taste gedrückt wird, wird das Abschalten verzögert,
    in dem eine Aufnahme gestartet wird, falls keine läuft
  - es wird ein Key Event RKEY_Power an alle TAPs geschickt
  - dies ist zu verwenden wenn die Funktionalität auch für andere
    TAPs als NiceDisplay verwendet werden soll


  poweroff_nd.tap
  ===============
  - es wird ein nur dann ein Key Event RKEY_Power an alle TAPs geschickt,
    wenn eine Aufnahme läuft
  - dieses TAP ist zu verwenden, wenn die Funktionalität nur für
    NiceDisplay benötigt wird
Nicedisplay ab Version 1.6 beta 7 profitiert von diesem TAP.

Gruß,
Happy

Verfasst: Fr 30. Dez 2005, 23:11
von DeadBeef
Happy hat geschrieben: - When die AUS-Taste gedrückt wird, wird das Abschalten verzögert,
in dem eine Aufnahme gestartet wird, falls keine läuft
Ich 'abe gar keine AUS-Taste. :? Und When scheint auch aus einer anderen Welt zu kommen. Aber vielleicht liegt es daran, daß ich aus nur einen TF5000 besitze. ;)

Es entwickelt sich ja ganz prima.

Gruß
DeadBeef