Nun ja,
immerhin habe ich früher mal das komplette Konzept für eine Branchenlösung entwickelt und im weiteren Verlauf fast 10 Jahre anwenderfreundliche Überarbeitung und fachliche Aktualisierung des gesamten Codes ziemlich alleine gemacht.
Aber weder unter Linux, noch in C, aber dafür ohne die Heute vorhandenen Entwickler-Hilfsmittel. pMate musste reichen...
Richtig ist dabei sicher, dass ich das angedeutete Projekt ohne Unterstützung alleine schon vom Umfang her nicht als Einzelkämpfer stemmen kann. Und EInzelkämpfer-Arbeit macht noch weniger Sinn, wenn das Ergebnis Niemand braucht. Oder die, die es nicht brauchen, das schlicht ablehnen.
Deshalb meine Idee, das als Community-Projekt anzulegen. Da kann Jeder der sich damit identifizieren kann, seinen Beitrag im Rahmen seiner Möglichkeiten leisten.
Und wenn man sich das DiSEqC-ReWork in ein ebenfalls neu gedachtes Frontend-Konzept einbindet, könnte dabei ja vielleicht auch ein eventuelles FBC-Problem gleich mit erschlagen werden.
Meine Vorstellung davon ist im Moment eine Connector-Klasse, die die Verbindung zwischen den Hardware-Devices und den Source-Quellen managt. Die Verbindung zwischen einem Connector - z.B. /dev/dvb/adapter0/frontend0 - zu einer Quelle - z.B. Astra1 - wird über eine child/parent - Verknüpfung von benötgten Schalt-Objekten z.B. im DiSEqC-Bereich Switch-Objekte und Motor-Objekte realisiert.
Dabei wissen die jeweils verknüpften Schaltelemente mit ihren Methoden selbst, wie sie den vom Connector angewiesenen Schaltweg einstellen müssen.
Die Connector-Klasse braucht sich dann nur noch um ihre eigene Verwaltung innerhalb des Connector-Managments (geeignet, aktiv, busy, blocked usw.) kümmern. Die Eignung kann ja jeweils über hardware-capabilities geregelt werden.
Diese Methoden würden per Vererbung auf die jeweiligen Connector-Typen 'kopiert', sodass sich der Gesamt-Codeaufwand auch in Grenzen hält. Ich vermute, die Objektorientierung unter C++ arbeitet wie unter C# mit einer "globalen" Methodentabelle, sodass auch der RAM-Bedarf in Grenzen bleibt. Zumal der bei aktueller Hardware locker reichen würde. Ich habe hier bei meiner HD51 mit MultiBoot-Image von insgesamt 1004 MB nur 724 MB belegt und noch 280 MB frei. Auf meiner Duo4K sollte das später dann noch besser aussehen.
Das User-Interface muss dann nur noch den im Dialog schon angebotenen Hardware-Devices den auf Grund der Eignung und der Empfangseinrichtung möglichen Pfad zum Source mit den 'vorliegenden' Schaltobjekten zusammenbauen.
Hat man also eine Box mit einem Sat-Tuner, bekommt man im EInstellungsdialog vollautomatisch nur einen
"DVB-Sat - Connector" zur Konfiguration angeboten.
Angenommen, der Tuner ist nur geeignet für DiSEqC 1.0 bekommt man für das (erste) Switch-Objekt 2-fach Schalter (Optionsschalter A/B, Positionsschalter A/B) und 4-fach Schalter (DiSEqC 4/x = AA AB BA BB) angeboten.
Angenommen, man hat nur einen Optionsschalter und wählt den, wird im letzten Schritt nach den dabei nur 2 Möglichkeiten mit einer Auswahlliste der verfügbaren Sat-Positionen gefragt.
Daran anschließend werden - wie jetzt auch - der LNB-Typ (inkl. Benutzerdefinition), Wiederholung und - bei höheren DiSEqC-Modi oder in komplexeren Installationen - weitere Parameter erfasst. Das ist aber schon eine Sache, die über die Properties der jeweiligen Objekte gesteuert werden kann und muss. Ein DiSEqC 2.0 Element muss nicht nach uncommited-Einstellungen fragen, aber sehr wohl nach eine Antwort an den Master.
Allerdings nur, wenn der Master (der Connector) die 2.x Capability hat.
edit: typo