TAP Programmierung: Kurzaufnahme

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.
cms
Topfversteher
Topfversteher
Beiträge: 373
Registriert: Mi 14. Dez 2005, 17:12
Receivertyp: VDR, 5000MP
Receiverfirmware: 5.13.62 20070808
Wohnort: Rhein-Main

TAP Programmierung: Kurzaufnahme

#1

Beitrag von cms » Fr 23. Apr 2010, 08:46

Endlich läuft mein FreeSatEPG TAP.
Es setzt die Daten vom FreeSat EPG Transponder in TGDs um.
Jetzt geht es noch an ein paar Feinheiten, für die ich Unterstützung benötige:

Wo finde ich Source Code für die Scanner Kurzaufnahme, ich benötige 20 Sekunden?
(Aufnahmen unter einer Minute werden ja i.d.R. gelöscht.)


PS:
Ist schon genial, was die Briten da haben. Ich benötige ~3-4 Minuten für die Umrechnung mit der Topf-CPU und habe dann den kompletten Platform EPG im Datenstrom. Der Recorder Scan für ein ähnliches Volumen für den 'deutschen' Astra dauert bei mir ~15-20 Minuten. Es sind allerdings auch nur 8 Tage verfügbar und die Informationen sind etwas knapper gehalten, als bei einem RadioTimes Feed oder im Vergleich zu einem guten deutschen EPG.
ACL 3.16, 3PG 1.29, FastSkip
Panasonic TH-37PV71, Denon AVR-2307, Denon DVD-1730, Logitech Harmony 885, yaVDR 0.3

Benutzeravatar
omue
Topfversteher
Topfversteher
Beiträge: 436
Registriert: Sa 10. Dez 2005, 18:44
Receivertyp: SRP 2401 CI+ ECO / SRP 2401 CI+

AW: TAP Programmierung: Kurzaufnahme

#2

Beitrag von omue » Fr 23. Apr 2010, 13:21

Hallo cms

ich finde es super was Du tun willst. Genau auf das TAP habe ich gewartet.
Bisher nehme ich immer die RADIOTIMES Daten und lese diese manuell ein.

Eine Lösung für Dein Problem hab ich leider nicht.

Ich stelle mir allerdings die Frage warum nicht einfach eine Minute aufnehmen ?
Man könnte ja einfach 10 Minuten vor den täglichen Timer von iTiNa oder 3PG die Aufnahme automatisch starten, dann die Daten in TGD umrechnen und in den Ordner schmeissen.
Danach findet 3PG oder iTiNa ja die Daten beim Scan und alles ist automatisch im Kasten ;-)

Olaf
SRP 2401 CI+ ECO / SRP 2401 CI+
68,28,23,19,16,16KA,13,10,9,7,5,3 OST
24,5,4,1 WEST 16 OST KA Band

cms
Topfversteher
Topfversteher
Beiträge: 373
Registriert: Mi 14. Dez 2005, 17:12
Receivertyp: VDR, 5000MP
Receiverfirmware: 5.13.62 20070808
Wohnort: Rhein-Main

AW: TAP Programmierung: Kurzaufnahme

#3

Beitrag von cms » So 25. Apr 2010, 12:55

Ich würde das gerne noch einmal pushen.
Sind die 3 Spezialisten, die das können, noch im Urlaub?

Hinzu kommt ein weiteres Problemchen.
Ich bin bei der 'Automation':

Wenn das Inputfile existiert, Aktion, manueller Start.
Sonst (automatischer Start in einem Wecktimer)
Sind wir auf dem interessanten Kanal und ist es die richtige (Nacht-)Zeit:
-> Starte die Aufnahme, beende nach 61 Sekunden und Aktion.

Das Problem: Sobald ich die Aufnahme abschalte, wird (zu) kurz danach auch der Topf abgeschaltet, obwohl
- es gar kein Aufnahmetimer war
- der Timer länger dauert

Code:

Code: Alles auswählen

// Check out automation

#ifdef	WIN32
#include <tap_emulations.h>
#else
#include <libFireBird.h>
#endif

#include <tap.h>

#define	AutoFF	0x8000d044
TAP_ID( AutoFF );
TAP_PROGRAM_NAME("3FFA");
TAP_AUTHOR_NAME("CMSA");
TAP_DESCRIPTION("Automation Tester");
TAP_ETCINFO(__DATE__);

#define	EPG_RECORDING	"FreeSatEPG.rec"

dword TAP_EventHandler(word event, dword param1, dword param2)
{
	return 1;
}

int
cmp0(char *s1, char *s2)
{
	int i;
	
	if (s1 == NULL || s2 == NULL) return 0;

	while (*s1 != '\0' && *s2 != '\0') {
		if (*s1 != *s2) return 0;
		s1++;
		s2++;
	}
	// Now at least one has ended
	if (*s1 != *s2) return 0;


	return 1;
}

dword
sec_time()
{
	word mjd;
	byte h, m, s;
	dword ret;

	TAP_GetTime(&mjd, &h, &m, &s);

	ret = mjd * 24*60*60;
	ret += h*60*60 + m*60 + s;

	return ret;
}

byte
check_recording(dword *secs)
{
	byte i;
	TYPE_RecInfo recInfo;

	for (i=0; i<2; i++) {
		TAP_Hdd_GetRecInfo(i, &recInfo);
		if (recInfo.recType == RECTYPE_Normal)
			if (cmp0(EPG_RECORDING, recInfo.fileName)) {
				*secs = recInfo.recordedSec;
				return i;
			}
	}
	return 0xff;
}

int
TAP_Main(void)
{
	byte slot;
	dword start_time, secs, message_time = 0;
	TYPE_TapChInfo chInfo;
	int chType, chNum;

#ifndef	WIN32
	InitTAPAPIFix();
	HDD_ChangeDir("/DataFiles");
#else
	TAP_HDD_ChangeDir("..");
	TAP_HDD_ChangeDir("..");
	TAP_HDD_ChangeDir("DataFiles");
#endif

	if (TAP_Hdd_Exist(EPG_RECORDING)) {
		TAP_Print("File %s exists\n", EPG_RECORDING);
		// Are we currently recording it?
		slot = check_recording(&secs);
		if (slot == 255) {
			// Action (Manual start)
			TAP_Print("File %s exists and we are not recording: Action\n", EPG_RECORDING);
			return 0;
		}
	} else {	// Will start a recording conditionally: Right chann + right time and no other recording active
		TAP_Channel_GetCurrent(&chType, &chNum);
		TAP_Channel_GetInfo(chType, chNum, &chInfo);
		// Add query TimeSlot correct, not recording at all
		if (cmp0(chInfo.chName, "FreeSatEPG")) {
			TAP_Print("Start a recording, selected >%s<\n",
				chInfo.chName);
			TAP_Hdd_StartRecord();
			// This takes time, so sleep 50 secs
			start_time = sec_time();
			while (start_time+50 > sec_time()) {
				TAP_SystemProc();
				if (sec_time() > message_time) {
					message_time = sec_time();
					TAP_Print("Sleep %d\n", message_time);
				}
			}
		} else {
			TAP_Print("Do nothing, selected >%s<\n",
				chInfo.chName);
		}
	}

	slot = check_recording(&secs);
	if (slot != 0xff) {
		do { // Yes we are recording the interesting channel
			slot = check_recording(&secs);	// Refresh recording time
			if (sec_time() > message_time) {
				message_time = sec_time();
				TAP_Print("Waiting record len %d\n", secs);
			}
			TAP_SystemProc();
		} while (slot != 0xff && secs < 61);
		if (slot != 0xff) {	// Exited from while because enough time
			TAP_Hdd_StopRecord(slot);
			TAP_Print("Recording long enough: Action\n");
			return 0;
		} else {
			TAP_Print("Recording seen, but stopped before getting long\n");
			return 0;
		}
	}


	return 0;
}
ACL 3.16, 3PG 1.29, FastSkip
Panasonic TH-37PV71, Denon AVR-2307, Denon DVD-1730, Logitech Harmony 885, yaVDR 0.3

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

AW: TAP Programmierung: Kurzaufnahme

#4

Beitrag von FireBird » So 25. Apr 2010, 16:03

[quote="cms"]Wo finde ich Source Code für die Scanner Kurzaufnahme, ich benötige 20 Sekunden? (Aufnahmen unter einer Minute werden ja i.d.R. gelöscht.)[/quote]
Nicht nur in der Regel, sondern immer. Entweder wartest Du die eine Minute, oder Du hangelst Dich durch das Dateisystem und liest die Cluster schon während der Aufnahme aus.

[quote="cms"]Das Problem: Sobald ich die Aufnahme abschalte, wird (zu) kurz danach auch der Topf abgeschaltet, obwohl
- es gar kein Aufnahmetimer war
- der Timer länger dauert[/quote]

Dann sende einen Dummy-Key-Event und kümmere Dich später um die Abschaltung.

2. Möglichkeit: starte am Anfang eine 2. Aufnahme, die Du am Ende stoppst und schnell löschst. Damit verzögerst Du die Abschaltung.

cms
Topfversteher
Topfversteher
Beiträge: 373
Registriert: Mi 14. Dez 2005, 17:12
Receivertyp: VDR, 5000MP
Receiverfirmware: 5.13.62 20070808
Wohnort: Rhein-Main

AW: TAP Programmierung: Kurzaufnahme

#5

Beitrag von cms » So 25. Apr 2010, 21:27

Danke erst einmal für die Information.

[quote="FireBird"]... oder Du hangelst Dich durch das Dateisystem und liest die Cluster schon während der Aufnahme aus.
[/quote]


Das ist mir zu kompliziert, ich habe von der Rad-Neuerfinderei schon jetzt genug.
Damit lasse ich es bei einer Aufnahmeminute. Man könnte zwar etwas Zeit sparen, das lohnt den Aufwand aber wohl nicht.

[quote="FireBird"]
Dann sende einen Dummy-Key-Event und kümmere Dich später um die Abschaltung.
[/quote]


Genau so habe ich es jetzt gemacht. Ich schicke einen RKEY_Next (oder gibt es etwas unverfänglicheres?).
Integriert ist es jetzt schon und steht im Auto Start. Ich werde es einmal ein paar Nächte testen, dann habe ich meine 1.0 ...
ACL 3.16, 3PG 1.29, FastSkip
Panasonic TH-37PV71, Denon AVR-2307, Denon DVD-1730, Logitech Harmony 885, yaVDR 0.3

Antworten

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