Zapit mit uncommitted switch Unterstützung.
-
- Neugieriger
- Beiträge: 7
- Registriert: Donnerstag 15. September 2005, 13:20
Zapit mit uncommitted switch Unterstützung.
Tach,
ich habe mal was für die uncommitted switch Unterstützung geschrieben. Entspricht zwar nicht ganz dem was der Standart vorgibt, nämlich das in den gaps die unc. switch Befehle gesendet werden, funktioniert bei mir und in einem anderen Image schon seit ein paar Tagen ohne das klagen von Usern kommen.
Vielleicht sieht sich das mal jemand an und kann es einchecken. Als Vorlage habe ich teile von codes die hier kursieren verwendet, habe mir die Arbeit aber weitgehend auf ein File welches anzupassen ist beschränken können.
Vielleicht kanns ja auch ein anderer als Anregung verwenden und es ganz dem Standart entsprechend anpassen und umsetzen.
Folgendes wäre zu änden bzw. anzupassen:
Code:
-------------------------------------------------------------------------------
in apps/dvb/zapit/include/frontend.h
nach void reset(void);
einfügen,
void sendUncommittedSwitchesCommand(uint8_t USCommand);
--------------------------------------------------------------------------------
in apps/dvb/zapit/src/zapost/frontend.cpp
nach secSetVoltage(v, 15);
einfügen,
if (diseqcType == DISEQC_1_1)
{
static uint8_t prevSatNo = 255; // initialised with greater than max Satellites (64)
// because we only want to send uncommitted switch
// command if necessary to save zap time
DBG("new Sat %d previous Sat %d", sat_no, prevSatNo);
//DBG("new Sat/4 %d previous Sat/4 %d", sat_no/4, prevSatNo/4);
if (prevSatNo/4 != sat_no/4)
{
sendUncommittedSwitchesCommand(0xF0 + sat_no/4);
}
prevSatNo = sat_no;
}
und ganz am Ende anhängen,
void CFrontend::sendUncommittedSwitchesCommand(uint8_t usCommand)
{
struct dvb_diseqc_master_cmd cmd = {
{ 0xe0, 0x10, 0x39, 0x00, 0x00, 0x00 }, 4};
//command from master, no reply required, first transmission
//all families (don't care adress)
//write to port group 1 (uncommitted switches)
cmd.msg[3] = usCommand;
sendDiseqcCommand(&cmd, 15);
if (diseqcRepeats)
{
cmd.msg[0] = 0xe1; /* repeated transmission */
for (uint16_t i = 0; i < diseqcRepeats; i++)
{
usleep(1000 * 100); /* wait at least 100ms before retransmission */
sendDiseqcCommand(&cmd, 15);
}
}
//DBG"[frontend] uncommitted switches command (0x%x) sent", cmd.msg[3]);
}
Code Ende
-----------------------------------------------------------------------------------
Folgende 2 Zeilen aus der frontend.cpp wären zu löschen bzw. auszukommentieren. Einfach mal danach suchen.
cmd.msg[2] |= 0x01; /*uncommitted switches */
sendDiseqcCommand(&cmd, 15);
Gruß wanders
ich habe mal was für die uncommitted switch Unterstützung geschrieben. Entspricht zwar nicht ganz dem was der Standart vorgibt, nämlich das in den gaps die unc. switch Befehle gesendet werden, funktioniert bei mir und in einem anderen Image schon seit ein paar Tagen ohne das klagen von Usern kommen.
Vielleicht sieht sich das mal jemand an und kann es einchecken. Als Vorlage habe ich teile von codes die hier kursieren verwendet, habe mir die Arbeit aber weitgehend auf ein File welches anzupassen ist beschränken können.
Vielleicht kanns ja auch ein anderer als Anregung verwenden und es ganz dem Standart entsprechend anpassen und umsetzen.
Folgendes wäre zu änden bzw. anzupassen:
Code:
-------------------------------------------------------------------------------
in apps/dvb/zapit/include/frontend.h
nach void reset(void);
einfügen,
void sendUncommittedSwitchesCommand(uint8_t USCommand);
--------------------------------------------------------------------------------
in apps/dvb/zapit/src/zapost/frontend.cpp
nach secSetVoltage(v, 15);
einfügen,
if (diseqcType == DISEQC_1_1)
{
static uint8_t prevSatNo = 255; // initialised with greater than max Satellites (64)
// because we only want to send uncommitted switch
// command if necessary to save zap time
DBG("new Sat %d previous Sat %d", sat_no, prevSatNo);
//DBG("new Sat/4 %d previous Sat/4 %d", sat_no/4, prevSatNo/4);
if (prevSatNo/4 != sat_no/4)
{
sendUncommittedSwitchesCommand(0xF0 + sat_no/4);
}
prevSatNo = sat_no;
}
und ganz am Ende anhängen,
void CFrontend::sendUncommittedSwitchesCommand(uint8_t usCommand)
{
struct dvb_diseqc_master_cmd cmd = {
{ 0xe0, 0x10, 0x39, 0x00, 0x00, 0x00 }, 4};
//command from master, no reply required, first transmission
//all families (don't care adress)
//write to port group 1 (uncommitted switches)
cmd.msg[3] = usCommand;
sendDiseqcCommand(&cmd, 15);
if (diseqcRepeats)
{
cmd.msg[0] = 0xe1; /* repeated transmission */
for (uint16_t i = 0; i < diseqcRepeats; i++)
{
usleep(1000 * 100); /* wait at least 100ms before retransmission */
sendDiseqcCommand(&cmd, 15);
}
}
//DBG"[frontend] uncommitted switches command (0x%x) sent", cmd.msg[3]);
}
Code Ende
-----------------------------------------------------------------------------------
Folgende 2 Zeilen aus der frontend.cpp wären zu löschen bzw. auszukommentieren. Einfach mal danach suchen.
cmd.msg[2] |= 0x01; /*uncommitted switches */
sendDiseqcCommand(&cmd, 15);
Gruß wanders
-
- Tuxboxer
- Beiträge: 2331
- Registriert: Donnerstag 24. März 2005, 21:52
und die zapit.cpp + scan.cpp muss nicht geändert werden ?? wie in dem thread
http://forum.tuxbox-cvs.sourceforge.net ... hp?t=39081
http://forum.tuxbox-cvs.sourceforge.net ... hp?t=39081
-
- Neugieriger
- Beiträge: 7
- Registriert: Donnerstag 15. September 2005, 13:20
Nein muß sie nicht. Nur frontend.cpp und frontend.hmb405 hat geschrieben:und die zapit.cpp + scan.cpp muss nicht geändert werden ?? wie in dem thread
http://forum.tuxbox-cvs.sourceforge.net ... hp?t=39081
Gruß wanders
-
- Tuxboxer
- Beiträge: 2331
- Registriert: Donnerstag 24. März 2005, 21:52
-
- Neugieriger
- Beiträge: 3
- Registriert: Samstag 21. Januar 2006, 21:11
mb405: Bei dieser (sehr guten) Lösung, thx wanders, werden die HF-Eingänge des SUR410 wie folgt geschalten:
Falls man den SUR420 wie folgt eingestellt hat:
muss man entsprechend die SatNr anpassen.
So ist zB. der erste DiSEqC 1.0 Eingang, der am zweiten DiSEqC 1.1 Eingang angeschlossen ist, über SatNr 17 zu erreichen (bzw 16 in der scan.conf) - siehe Markierung.
Code: Alles auswählen
SatNr 01 - DiSEqC 1.1 Cmd F0 - DiSEqC 1.0 Cmd A/A
SatNr 02 - DiSEqC 1.1 Cmd F0 - DiSEqC 1.0 Cmd A/B
SatNr 03 - DiSEqC 1.1 Cmd F0 - DiSEqC 1.0 Cmd B/A
SatNr 04 - DiSEqC 1.1 Cmd F0 - DiSEqC 1.0 Cmd B/B
SatNr 05 - DiSEqC 1.1 Cmd F1 - DiSEqC 1.0 Cmd A/A
SatNr 06 - DiSEqC 1.1 Cmd F1 - DiSEqC 1.0 Cmd A/B
SatNr 07 - DiSEqC 1.1 Cmd F1 - DiSEqC 1.0 Cmd B/A
SatNr 08 - DiSEqC 1.1 Cmd F1 - DiSEqC 1.0 Cmd B/B
SatNr 09 - DiSEqC 1.1 Cmd F2 - DiSEqC 1.0 Cmd A/A
SatNr 10 - DiSEqC 1.1 Cmd F2 - DiSEqC 1.0 Cmd A/B
SatNr 11 - DiSEqC 1.1 Cmd F2 - DiSEqC 1.0 Cmd B/A
SatNr 12 - DiSEqC 1.1 Cmd F2 - DiSEqC 1.0 Cmd B/B
SatNr 13 - DiSEqC 1.1 Cmd F3 - DiSEqC 1.0 Cmd A/A
SatNr 14 - DiSEqC 1.1 Cmd F3 - DiSEqC 1.0 Cmd A/B
SatNr 15 - DiSEqC 1.1 Cmd F3 - DiSEqC 1.0 Cmd B/A
SatNr 16 - DiSEqC 1.1 Cmd F3 - DiSEqC 1.0 Cmd B/B
SatNr 17 - DiSEqC 1.1 Cmd F4 - DiSEqC 1.0 Cmd A/A <--
SatNr 18 - DiSEqC 1.1 Cmd F4 - DiSEqC 1.0 Cmd A/B
usw...
Code: Alles auswählen
DiSEqC 1.1 Cmd F0 - HF Eingang 1
DiSEqC 1.1 Cmd F1 - HF Eingang 1
DiSEqC 1.1 Cmd F2 - HF Eingang 1
DiSEqC 1.1 Cmd F3 - HF Eingang 1
DiSEqC 1.1 Cmd F4 - HF Eingang 2 <--
DiSEqC 1.1 Cmd F5 - HF Eingang 2
DiSEqC 1.1 Cmd F6 - HF Eingang 2
DiSEqC 1.1 Cmd F7 - HF Eingang 2
DiSEqC 1.1 Cmd F8 - HF Eingang 3
DiSEqC 1.1 Cmd F9 - HF Eingang 3
DiSEqC 1.1 Cmd FA - HF Eingang 3
DiSEqC 1.1 Cmd FB - HF Eingang 3
DiSEqC 1.1 Cmd FC - HF Eingang 4
DiSEqC 1.1 Cmd FD - HF Eingang 4
DiSEqC 1.1 Cmd FE - HF Eingang 4
DiSEqC 1.1 Cmd FF - HF Eingang 4
So ist zB. der erste DiSEqC 1.0 Eingang, der am zweiten DiSEqC 1.1 Eingang angeschlossen ist, über SatNr 17 zu erreichen (bzw 16 in der scan.conf) - siehe Markierung.
-
- Tuxboxer
- Beiträge: 2331
- Registriert: Donnerstag 24. März 2005, 21:52
-
- Neugieriger
- Beiträge: 3
- Registriert: Samstag 21. Januar 2006, 21:11
Ich habe mich da oben verschrieben... Es geht dort nur um den SUR420.
Hängen an Deinem Schalter noch weitere DiSEqC 1.0 Schalter dran?
Versuche mal die Stelle:
so zu korrigieren:
damit uncommitted switches command bei jedem Sat-Wechsel gesendet wird und beim Wechsel jeweils um eins pro Sat erhöht wird (nicht pro 4-Sats). Es könnte dann klappen.
Hängen an Deinem Schalter noch weitere DiSEqC 1.0 Schalter dran?
Versuche mal die Stelle:
Code: Alles auswählen
if (prevSatNo/4 != sat_no/4) {
sendUncommittedSwitchesCommand(0xF0 + sat_no/4);
}
Code: Alles auswählen
if (prevSatNo != sat_no) {
sendUncommittedSwitchesCommand(0xF0 + sat_no);
}
-
- Neugieriger
- Beiträge: 7
- Registriert: Donnerstag 15. September 2005, 13:20
Hi,
ich hätte vieleicht dazu sagen sollen, das ich einen Spaun SUR420F einsetze. Da ich nur mit diesem Schalter testen konnt habe ich den code natürlich so geschrieben, daß es mit dem SUR420F funktioniert.
Da es aber hier ja kompetente Entwickler gibt, können die aus meinem Beispiel sicher mehr drauß machen.
Gruß wanders
ich hätte vieleicht dazu sagen sollen, das ich einen Spaun SUR420F einsetze. Da ich nur mit diesem Schalter testen konnt habe ich den code natürlich so geschrieben, daß es mit dem SUR420F funktioniert.
Da es aber hier ja kompetente Entwickler gibt, können die aus meinem Beispiel sicher mehr drauß machen.
Gruß wanders
-
- Tuxboxer
- Beiträge: 2331
- Registriert: Donnerstag 24. März 2005, 21:52
ich versteh nur die verkabelung nicht so richtig bis jetzt.
also als erstes receicer mit den ausgang des sur420f verbinden. dann jeden zf eingang mit den ausgang eines sur410f verbinden.
damit könnte man also 4x4=16 sats schalten.
wenn ich nun 2sur410 an den 420er hänge, könnte ich 2x4=8+2=10 sats schalten. versteh ich das richtig?
wenn das so funktioniert, dann werd ich mir die dinger besorgen.
was anderes gleich noch. kann ich die dinger im freien montieren(wetterschutz) ? und für was ist der umschalter gut auf der frontseite.
Danke
also als erstes receicer mit den ausgang des sur420f verbinden. dann jeden zf eingang mit den ausgang eines sur410f verbinden.
damit könnte man also 4x4=16 sats schalten.
wenn ich nun 2sur410 an den 420er hänge, könnte ich 2x4=8+2=10 sats schalten. versteh ich das richtig?
wenn das so funktioniert, dann werd ich mir die dinger besorgen.
was anderes gleich noch. kann ich die dinger im freien montieren(wetterschutz) ? und für was ist der umschalter gut auf der frontseite.
Danke
-
- Neugieriger
- Beiträge: 3
- Registriert: Samstag 21. Januar 2006, 21:11
-
- Tuxboxer
- Beiträge: 2331
- Registriert: Donnerstag 24. März 2005, 21:52
-
- Interessierter
- Beiträge: 23
- Registriert: Samstag 2. September 2006, 14:26
Ist es das ASAT DiSEqC 1/10 Switch SW 101D?mb405 hat geschrieben:@KaenGuruH
mit den modifikationen funktioniert nun der 10in1 multischalter einwandfrei
Bei mir geht das aber nur mit 4 Satelliten, wobei aber der DiSEqC 8/1 von EMP einwandfrei bei mir funktioniert.
Ich habe mittlerweile alle Modi ausprobiert und komme einfach nicht weiter.
Kannst Du mir eventuell noch einen Tipp geben?
Gruß
Murphy
-
- Tuxboxer
- Beiträge: 2331
- Registriert: Donnerstag 24. März 2005, 21:52
-
- Interessierter
- Beiträge: 23
- Registriert: Samstag 2. September 2006, 14:26
-
- Tuxboxer
- Beiträge: 2331
- Registriert: Donnerstag 24. März 2005, 21:52
-
- Interessierter
- Beiträge: 23
- Registriert: Samstag 2. September 2006, 14:26
-
- Interessierter
- Beiträge: 23
- Registriert: Samstag 2. September 2006, 14:26
Also ich habe jetzt nochmal alles überprüft und getestet, auch mal einen anderes Image probiert immer mit dem Resultat das der 8/1 geht aber der 10/1 nicht.
Der 10/1 kann bei mir nur 4 Satelliten ansteuern und Modi 2 und 5 gehen bei mir gar nicht und das es am Schalter liegt denke ich nicht, da ja diseqc 1.0 mit ihm funktioniert und ich hier zwei von diesen Schaltern habe und ich bei beiden dasselbe Problem habe.
Gibt es die Möglichkeit das du mir mal ein Testimage von dir zukommen lässt, wo die diseqc Steuerung mit dem 10/1 bei dir einwandfrei funktioniert?
Der 10/1 kann bei mir nur 4 Satelliten ansteuern und Modi 2 und 5 gehen bei mir gar nicht und das es am Schalter liegt denke ich nicht, da ja diseqc 1.0 mit ihm funktioniert und ich hier zwei von diesen Schaltern habe und ich bei beiden dasselbe Problem habe.
Gibt es die Möglichkeit das du mir mal ein Testimage von dir zukommen lässt, wo die diseqc Steuerung mit dem 10/1 bei dir einwandfrei funktioniert?
-
- Interessierter
- Beiträge: 23
- Registriert: Samstag 2. September 2006, 14:26
-
- Interessierter
- Beiträge: 23
- Registriert: Samstag 2. September 2006, 14:26
Hat das eventuell schon jemand auf die Reihe bekommen den Patch von Wanders und die Änderung von Kaenguruh in einen Patch zu bekommen, also, das der Patch sowohl mit dem einem disqce-Schalter , als auch mit dem 10/1 Schalter funktioniert? So das man keine manuelle Umschaltung per Software mehr benötigt?
-
- Developer
- Beiträge: 2183
- Registriert: Mittwoch 10. Dezember 2003, 07:59
hier zum testen:
http://home.arcor.de/houdini/dbox/zapit/zapit
in der zapit.conf:
arbeitet mit version 1
arbeitet mit version 2
Verhalten wie bisher
http://home.arcor.de/houdini/dbox/zapit/zapit
in der zapit.conf:
Code: Alles auswählen
uncommitted_switch_mode=1
Code: Alles auswählen
uncommitted_switch_mode=2
Code: Alles auswählen
0 oder >2
-
- Developer
- Beiträge: 2183
- Registriert: Mittwoch 10. Dezember 2003, 07:59
-
- Interessierter
- Beiträge: 23
- Registriert: Samstag 2. September 2006, 14:26