DiSEqC 1.1

Chinaschnitte
Neugieriger
Neugieriger
Beiträge: 4
Registriert: Sonntag 29. Februar 2004, 23:49

DiSEqC 1.1

Beitrag von Chinaschnitte »

Hi.

Ich hab mich mal etwas mit DiSEqC beschäftigt. Wie es scheint, funktioniert DiSEqC 1.1 mit Neutrino nicht so richtig. Oder viel mehr, es funktioniert nicht so, wie man es heutzutage erwarten würde. :( Im Prinzip scheint es schon so implementiert zu sein, wie es damals von Eutelsat spezifiziert wurde, wobei man das glaube ich nicht so genau sagen kann, denn die Spezifikation ist, wie ich finde, doch etwas difus, was wahrscheinlich daran liegt, dass es solche Geräte (Switches), wie sie damals vorrausgesagt wurden eben noch nicht gab. Und auch heute nicht gibt und wahrscheinlich nie geben wird. Und da liegt auch das Problem. Die Spezifikation zielt an den heutigen Anforderungen schlichtweg vorbei. Und damit die Zapit-Implementierung.
Heutzutage ist die eigentlich interessante Anwendung von DiSEqC 1.1 die Ansteuerung von mehr als vier Satellitenpositionen. Es gibt auch entsprechende Hardware dazu, die aber eben nicht mit Neutrino zusammenarbeitet. :cry:
DiSEqC 1.1 ist immer noch eine Sache, die nur von wenigen Receivern unterstützt wird und ich finde es irgendwie Schade, dass ausgerechnet die dbox2 dazu gehört.

Also vielleicht kann sich ja mal jemand melden der am Zapit rumbastelt und vielleicht wird die Sache ja dann was. 8)

mfg
Chinaschnitte
Neugieriger
Neugieriger
Beiträge: 4
Registriert: Sonntag 29. Februar 2004, 23:49

Beitrag von Chinaschnitte »

Tja, keine große Resonanz soweit. :roll:

Dafür hab ich selbst mal angefangen. Also um das ans laufen zu bringen würden erstmal 3 Codezeilen reichen. Hab mal ein diff gemacht:

Code: Alles auswählen

--- apps/dvb/zapit/src/zapost/frontend.cpp	2004-04-20 16:47:16.000000000 +0200
+++ frontend.cpp	2004-07-01 01:37:24.000000000 +0200
@@ -644,21 +644,24 @@
 
 	}
 
 	if ((diseqcType >= DISEQC_1_1) && (repeats)) {
+		uint8_t uncommitted_xor = (sat_no >= 128 ) ? 0 : cmd.msg[3] ^ ( 0xf0 | (sat_no >> 2) );
 		for (uint16_t i = 0; i < repeats; i++) {
 			uint8_t again = 0;
 
 			usleep(1000 * 100);	/* wait at least 100ms before retransmission */
 
 			cmd.msg[2] |= 0x01;	/* uncommitted switches */
+			cmd.msg[3] ^= uncommitted_xor;
 			sendDiseqcCommand(&cmd, 15);
 
 			if (diseqcType >= DISEQC_2_0)
 				again += getDiseqcReply(50);
 
 			cmd.msg[0] |= 0x01;	/* repeated transmission */
 			cmd.msg[2] &= 0xFE;	/* committed switches */
+			cmd.msg[3] ^= uncommitted_xor;
 			sendDiseqcCommand(&cmd, 15);
 
 			if (diseqcType >= DISEQC_2_0)
 				again += getDiseqcReply(50);
Man muss einfach nur die Nachricht anpassen. Vorher (Obwohl man in der GUI 16 Sats auswählen kann) wurden immer nur 2 Bit von sat_no benutzt . Jetzt weitere 4 in der uncommitted-Nachricht. Vorher wurde als uncommitted-Nachricht nochmal die committed-Nachricht gesendet, aber wozu das gut sein sollte?

Die Veränderung betrifft nur den Codeblock für DISEQC_1_1, d.h. bei dem häufig verwendeten 1.0 ändert sich garnichts, selbst vom Code her nicht.

Es besteht durch die Abfrage (sat_no >= 128 ) noch die Möglichkeit das alte Verhalten zu erzwingen, indem man manuell (in der services.xml) die diseqc-Werte um 128 erhöht, für den (unwahrscheinlichen) Fall, dass jemand was mit der aktuellen Implementierung anfangen kann.
Hier könnte man auch durch ändern in (sat_no < 128 ) die Sache umdrehen und das alte Verhalten als Standard vorsehen. Die veränderte Implementierung würde dann nur durch entsprechendes manuelles verändern der services.xml aktiviert, aber besser als garnix.

Hab leider keine Möglichkeit dass selbst auszuprobieren. Aber vielleicht erbarmt sich ja doch noch jemand und baut das so oder anders ein.

mfg
Npq
Senior Member
Beiträge: 1339
Registriert: Donnerstag 24. April 2003, 12:12

Beitrag von Npq »

Problem dürfte vielleicht sein, daß kaum einer (gar keiner?) der Entwickler Diseqc 1.1 verwendet.

Deswegen ist es wohl auch eher schlechter wenn du's nicht selber testen kannst.
Sp8472
Neugieriger
Neugieriger
Beiträge: 10
Registriert: Donnerstag 26. Februar 2004, 17:20

Beitrag von Sp8472 »

Hallo,

Oder man muss von Neutrino auf Enigma umstellen. Mit Enigma funktioniert Diseqc 1.1 super. Ich empfange somit 8 Sat-Positionen.
rasc
Senior Member
Beiträge: 5071
Registriert: Dienstag 18. September 2001, 00:00

Beitrag von rasc »

Nun, dann koenntest Du das doch testen, oder?