Hallo,
Zitat zu Jag's EPG
pre-Beta 3 ![:[ :[](./images/smilies/angrysmoking.gif)
quote="Gerti"]Habe es gerade mal auf dem 6000 probiert...läuft leider nicht stabil...
Beim Senderscan rebootet es den Topfield...
Hoffen wir mal, dass das nächste Update für den 6000 diesen stabiler macht...[/quote]dazu antworte ich mal hier, ich glaube das passt zum Thema.
In der pre-Beta 3 führe ich nämlich zur Sicherheit nur noch Funktionen während
EVT_KEY und
EVT_IDLE aus!
Der Anfang von meinen TAP_EventHandler():
Code: Alles auswählen
dword TAP_EventHandler( word event, dword param1, dword param2 )
{
int i, r, t;
if( event != EVT_KEY && event != EVT_IDLE )
return param1;
...
das heißt ich führe Funktionen nur noch aus, wenn eine Taste gedrückt wurde (event == EVT_KEY) oder bei event == EVT_IDLE.
Wenn nun Jag's EPG den TF 6000 spontan abstürzen lässt, also unmittelbar
keine Taste gedrückt wurde, dann müsste der Absturz eine andere Ursache haben, als die Ausführung von API Funktionen während
event != EVT_KEY, da hier dann nur Funktionen bei EVT_IDLE ausgeführt werden.
Eine andere Möglichkeit hier wäre, wenn vom System spontan ab und zu ein falsch markiertes event gesendet wird, also ein event das die Bedingung
event == EVT_KEY erfüllt, aber nicht von einer Taste ausgelöst wurde!
Solche Events gab es, wenn ich mich recht erinnere, mal auf einer älteren TF5000 Firmware
Ich habe mal mein button code test TAP so geändert, dass du damit den TF 6000 auf "falsche" EVT_KEY-events testen kannst.
Solange keine Taste gedrückt wird, dürfte keine Anzeige des Codes erscheinen, wenn doch muss es solche events auf den TF 6000 geben!
Hier der Quellcode:
Code: Alles auswählen
#include "tap.h"
TAP_ID( 0x8000011B );
TAP_PROGRAM_NAME("Button Code Test");
TAP_AUTHOR_NAME("Jag");
TAP_DESCRIPTION("run this TAP alone, Mute = Exit");
TAP_ETCINFO(__DATE__);
word mjd;
byte time_h, time_min, time_sec;
char strBuf[128];
dword TAP_EventHandler( word event, dword param1, dword param2 )
{
if( event != EVT_KEY )
return param1;
TAP_GetTime(&mjd, &time_h, &time_min, &time_sec);
TAP_SPrint( strBuf, " Button Code: 0x%0x ( %d ) %02d:%02d:%02d ", param1, param1, time_h, time_min, time_sec );
TAP_Osd_FillBox( 0, 130, 251, 460, 43, COLOR_DarkBlue );
TAP_Osd_PutS( 0, 138, 259, 582, strBuf, COLOR_DarkBlue, COLOR_User14, 0, FNT_Size_1926, 0, ALIGN_CENTER );
if( param1 == RKEY_Mute )
{
TAP_Osd_PutS( 0, 138, 310, 582, "EXIT TAP - Please Wait...!", COLOR_DarkBlue, COLOR_User14, 0, FNT_Size_1926, 0, ALIGN_CENTER );
TAP_Delay(400);
TAP_Osd_FillBox(0, 0, 0, 720, 576, COLOR_None);
TAP_Exit();
return 0;
}
return param1;
}
int TAP_Main(void)
{
//TAP_Osd_FillBox( 0, 130, 251, 460, 43, COLOR_DarkBlue );
//TAP_Osd_PutS( 0, 138, 259, 582, "Press any button to test, press Mute to EXIT!", COLOR_DarkBlue, COLOR_User14, 0, FNT_Size_1926, 0, ALIGN_CENTER );
return 1;
}
Gruß
Jag