Einige Fragen...

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
schasskistn
Nicht-Guru (A)
Nicht-Guru (A)
Beiträge: 281
Registriert: Fr 9. Dez 2005, 11:23
Receivertyp: SRP2401CI+ als Hauptkiste
TF5500PVR, supporte noch einen 5000MP
Receiverfirmware: HD: 10.9.2013
SD: September 05
Wohnort: Austria, ADW - nähe Salzburg
Kontaktdaten:

Einige Fragen...

#1

Beitrag von schasskistn » Do 8. Jun 2006, 16:57

Hallo TAP Entwickler,

Bin gerade bei der Entwicklung eines TAPs (wenn es was zu sehen/testen gibt, seit ihr natürlich die Ersten, die es bekommen). Da ich meistens ohne Topf auskommen muss (sitze im Keller, ausserdem bin ich sowieso mehr der Simulationsmensch) hätte ich ein paar Fragen bezüglich dem TAP-SDK:

-Was ist der Unterschied zwischen einem TSR TAP und einem "normal" startenden und beendbaren TAP? Der Hintergrund dieser Frage ist der, das es eigentlich für mich logisch einfacher ist, beim TAP_Main reinzuspringen und bei bestimmten Tasten eben das TAP aufzublenden und wegzumachen. Man würde sich eine Menge Ablauf(un)logik ersparen. GetKey hätte ich mit einer Event Routine gemacht, die eine Variable setzt für einen Tastendruck. Oder gibt der Topf dann irgendwelche Resourcen nicht frei, wenn ich TAP_Main nicht beende?

-Kann ich (und wie) bei den HDD funktionen direkt ein Verzeichnis angeben (zB "IBITSCHIE_SKIN\\singleline.img")? oder muss ich da zuerst in das Verzeichnis wechseln wenn ich darauf zugreifen möchte?

-Muss ich bezüglich StackSize u.ä. aufpassen?

-Kann ich normale String Operationen (string.h) verwenden? Generell, wie schaut es aus mit den Standard Library Sachen? Warum gibt es ein eigenes TAP_SPrint?

mmm, tja, das wars mal fürs Erste. Danke!!

Immer wild unterwegs in RFID/NFC/Mobile Payment für Festivals, Stadien und Clubs. Es gibt kaum was besseres als Party für die Arbeit :D
http://www.enemyinside.com
>> thrash >> death >> metal >> austria >>


für das Wohnzimmer: SRP2401CI+, 1TB, SmartEPG, TMSRemote, RemoteSwitch, SmartDecrypter und natürlich TapToDate
5500 im Keller; 5000er als Ersatzteilspender

Benutzeravatar
StevieC
Moderator & Design Guru
<font color=lue>Moderator</font> & <font color=
ed>Design Guru</font>
Beiträge: 13189
Registriert: Fr 9. Dez 2005, 11:24
Receivertyp: TMS SRP2100
Receiverfirmware: Immer die neueste ;-)
Kontaktdaten:

#2

Beitrag von StevieC » Do 8. Jun 2006, 17:00

schasskistn hat geschrieben:Hallo TAP Entwickler,

Bin gerade bei der Entwicklung eines TAPs (wenn es was zu sehen/testen gibt, seit ihr natürlich die Ersten, die es bekommen).

Aber um was für ein tap es sich handelt kannst du uns schon verraten, oder? ;)

Gruß

StevieC


iTiNa TMS V0.94
CallMonitor V1.2RC
Mediaaspect V1.3
TMSDisplay V1.5

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:

#3

Beitrag von Happy » Do 8. Jun 2006, 17:52

schasskistn hat geschrieben: -Was ist der Unterschied zwischen einem TSR TAP und einem "normal" startenden und beendbaren TAP? Der Hintergrund dieser Frage ist der, das es eigentlich für mich logisch einfacher ist, beim TAP_Main reinzuspringen und bei bestimmten Tasten eben das TAP aufzublenden und wegzumachen. Man würde sich eine Menge Ablauf(un)logik ersparen. GetKey hätte ich mit einer Event Routine gemacht, die eine Variable setzt für einen Tastendruck. Oder gibt der Topf dann irgendwelche Resourcen nicht frei, wenn ich TAP_Main nicht beende?
Prinzipiell geht das wohl, und ich habe auch schon mal ein solches Demotap gesehen. Da wurde im Eventhandler nur ein Flag für den Tastendruck gesetzt und im TAP_Main alles gemacht. Man muß dann nur selbst dafür sorgen, oft genug die Kontrolle an andere TAPs zu übergeben mit TAP_SystemProc (oder so ähnlich).
Da man sowieso auf Tastenevents wartet, ist das mit dem Eventhandler normalerweise eleganter.
schasskistn hat geschrieben: -Kann ich (und wie) bei den HDD funktionen direkt ein Verzeichnis angeben (zB "IBITSCHIE_SKIN\\singleline.img")? oder muss ich da zuerst in das Verzeichnis wechseln wenn ich darauf zugreifen möchte?
Man muß in das Verzeichnis wechseln, und kann dann erst die Datei aufmachen.
schasskistn hat geschrieben: -Kann ich normale String Operationen (string.h) verwenden? Generell, wie schaut es aus mit den Standard Library Sachen? Warum gibt es ein eigenes TAP_SPrint?
Die Stringoperationen scheinen alle zu funktionieren. sprtintf und Konsorten gehen nicht, sind daher in der Topfieldlibrary drin. Warum das so ist, weiß ich auch nicht

Mit dem Stack hatte ich noch keine Probleme, mehr weiß ich dazu nicht.

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
Jetson
Vielantworter
Vielantworter
Beiträge: 763
Registriert: Fr 9. Dez 2005, 19:29
Receivertyp: TF5200PVRc
Receiverfirmware: TF-NCPCd 2.75

#4

Beitrag von Jetson » Do 8. Jun 2006, 18:58

schasskistn hat geschrieben: -Was ist der Unterschied zwischen einem TSR TAP und einem "normal" startenden und beendbaren TAP? Der Hintergrund dieser Frage ist der, das es eigentlich für mich logisch einfacher ist, beim TAP_Main reinzuspringen und bei bestimmten Tasten eben das TAP aufzublenden und wegzumachen. Man würde sich eine Menge Ablauf(un)logik ersparen. GetKey hätte ich mit einer Event Routine gemacht, die eine Variable setzt für einen Tastendruck. Oder gibt der Topf dann irgendwelche Resourcen nicht frei, wenn ich TAP_Main nicht beende?

Im Prinzip hast Du Recht. Wenn Du in TAP_Main() zyklisch TAP_SystemProc() aufrufst, reagiert dein TAP auch auf Tastendrücke der FB o.ä.
Es gibt aber einen wichtigen Grund, dein TAP als TSR zu starten:
Solange ein TAP läuft, das nicht als TSR gestartet wurde, liefert TAP_GetState() in state immer STATE_Tap zurück. Du würdest dadurch alle anderen TAPs blockieren die auf irgendwelche speziellen Systemstati warten (siehe Definition von TYPE_State in TAP.H). Obige Methode eignet sich deshalb nur für TAPs die auch wieder beendet werden und nicht permanent im Hintergrund laufen sollen.
Gruß,
Jetson

Benutzeravatar
Elle4u
TAP-Chirurg

<div title=Selbsternannter Allesknutscher>TAP-Chirurg</div>
Beiträge: 11971
Registriert: Fr 9. Dez 2005, 16:48
Receivertyp: SRP-2410 (2 TB)
Receiverfirmware: TF-BCPCE 1.11.00 (19.12.2013)
Wohnort: Osburg
Kontaktdaten:

Verzeichniswechsel

#5

Beitrag von Elle4u » Do 8. Jun 2006, 19:47

Und ein Verzeichniswechsel geht nicht - wie in der API beschrieben - mit "/".

Du kannst das aktuelle Verzeichnis auch nicht abfragen.

Daher habe ich hier die folgende Routine:

Code: Alles auswählen

void AWToolGotoRoot( void ){ //wechsel von überall in das Rootverzeichnis
	word a=0;      // avoid deadlocks
	TYPE_File file;
	TAP_Hdd_FindFirst(&file);
	while ((strcmp(file.name, "__ROOT__") != 0) && (a < 32)) {
		TAP_Hdd_ChangeDir("..");
		TAP_Hdd_FindFirst(&file);
		a++;
	}
}

//Damit kann direkt in einen bestimmten Pfad springen 
//z.B. mit AWToolGotoPath("/MP3/PinkFloyd") direkt in den Ordner PinkFloyd, egal welches Verzeichnis gerade das aktuelle ist.
bool AWToolGotoPath(char *path){ 
   char *startPos; 
   char *endePos; 
   bool ready; 
   AWToolGotoRoot(); 
   startPos=path; 
   if ((*startPos)!='/'){ //Fehler :P fad beginnt nicht mit "/"
      return FALSE; 
   } 
   startPos=startPos+1; 
   ready=FALSE; 
   while (ready==FALSE){ 
      endePos=startPos; 
      while (((*endePos)!=0) && ((*endePos)!='/')){ 
         endePos=endePos+1; 
      } 
      if ((*endePos)==0){ 
         ready=TRUE; 
         TAP_Hdd_ChangeDir(startPos); 
      } else { 
         (*endePos)=0; 
         TAP_Hdd_ChangeDir(startPos); 
         (*endePos)='/'; 
         startPos=endePos+1; 
      } 
   } 
   return TRUE; 
}    

Evtl. hilft Dir das ja schonmal :up:
Gruß,
Elle4u

Benutzeravatar
aledoe
Vielantworter
Vielantworter
Beiträge: 912
Registriert: Fr 21. Apr 2006, 20:01
Receivertyp: TF5200PVRc
Receiverfirmware: TF-NCPCd 2.75P 06.12.06
Wohnort: Hennef

#6

Beitrag von aledoe » Do 8. Jun 2006, 22:18

In welchen Verz. ist man denn, wenn man ein TAP (im Applikationsmodus) startet? Das hier: TAP_Hdd_ChangeDir( "/MP3/Gift" ); hat bei mir nämlich komischerweise funktioniert ... :thinker:
Nur der hier: TAP_Hdd_ChangeDir( "/" ); funktioniert nicht.
Hängt das davon ab welschen Topf man hat?
Viele Grüße
Alex


Autorstart TAPs: Power Restore V0.7.3b, QuickTimer 1.0 RC 1, 3PG 1.12, ImproBox 2.2, Filer 2.00 Beta 12, SPDIFkiller V1.0a, dbPlay 0.7


Benutzeravatar
schasskistn
Nicht-Guru (A)
Nicht-Guru (A)
Beiträge: 281
Registriert: Fr 9. Dez 2005, 11:23
Receivertyp: SRP2401CI+ als Hauptkiste
TF5500PVR, supporte noch einen 5000MP
Receiverfirmware: HD: 10.9.2013
SD: September 05
Wohnort: Austria, ADW - nähe Salzburg
Kontaktdaten:

#7

Beitrag von schasskistn » Fr 9. Jun 2006, 09:59

Suppi! Danke erstmal für die vielen Antworten.

@Happy: das mit dem DemoTAP war warscheinlich eh das von mir, ich habs bisher immer so gemacht, allerdings habe ich noch kein "echtes" TAP geschrieben, das mit einer Taste aufgerufen wird und wieder in den Hintergrund geschoben werden kann.

@Jetson: danke, ich werde also doch ein "echtes" TSR TAP machen :)

@Elle4u: Danke für den Source! Ich werde ihn, sofern du kein Problem damit hast, in meine TAP Routinensammlung (wo halt meine ganzen Hilfsfunktionen drinnen sind) aufnehmen.

@SteveC: Eigentlich möchte ich noch nicht verraten was ich für ein TAP schreibe, weil ich mir nicht sicher bin, ob ich die Zeit habe, es auch fertigzubringen. Ich bin jetzt, nach dem Release unseres Albums, ein bisschen eingeteilt für die Band, da weiss ich nicht, obs sobald mal was wird. Sorry!

Immer wild unterwegs in RFID/NFC/Mobile Payment für Festivals, Stadien und Clubs. Es gibt kaum was besseres als Party für die Arbeit :D
http://www.enemyinside.com
>> thrash >> death >> metal >> austria >>


für das Wohnzimmer: SRP2401CI+, 1TB, SmartEPG, TMSRemote, RemoteSwitch, SmartDecrypter und natürlich TapToDate
5500 im Keller; 5000er als Ersatzteilspender

Benutzeravatar
Elle4u
TAP-Chirurg

<div title=Selbsternannter Allesknutscher>TAP-Chirurg</div>
Beiträge: 11971
Registriert: Fr 9. Dez 2005, 16:48
Receivertyp: SRP-2410 (2 TB)
Receiverfirmware: TF-BCPCE 1.11.00 (19.12.2013)
Wohnort: Osburg
Kontaktdaten:

#8

Beitrag von Elle4u » Fr 9. Jun 2006, 10:11

schasskistn hat geschrieben: @Elle4u: Danke für den Source! Ich werde ihn, sofern du kein Problem damit hast, in meine TAP Routinensammlung (wo halt meine ganzen Hilfsfunktionen drinnen sind) aufnehmen.
Kein Problem.

habe das selbst irgendwo zusammengesucht und evtl. hier und da nur ein wenig modifiziert... :wink:
Gruß,
Elle4u

Antworten

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