Hallo Torsten,
Torsten Vogt schrieb:
> On 15 Jan., 20:09, Martin Schoenbeck <
ms.usenet.nos...@schoenbeck.de>
> wrote:
>> Aber nicht ohne Not. Bei DCC gibt's die Not nicht, also sollten wir das
>> auch nicht ändern. Der Client sollte sich darauf verlassen dürfen, daß wenn
>> er dem SRCP-Server mitteilt, diese Lok hab Adresse 74, N2, 128 Fahrstufen,
>> 8 Funktionen, der SRCP-Server die Lok dann auch korrekt mit langen Adressen
>> ansteuert und _nicht_ darauf besteht, daß man ihm ein N4 meldet. Denn nur
>> so kann ist die Unabhängigkeit vom konkreten SRCP-Server gewährleistet.
>> Wenn da jeder nach eigenem Gusto die Protokollversionen implementiert, sind
>> die Clients eben nicht mehr vom Server unabhängig. Dann brauchen wir aber
>> auch kein SRCP.
>
> Ich verstehe die Argumentation nicht.
Nun, wenn es SRCP-Server gibt, die die N1 und N2 nicht wie in der
Spezifikation beschrieben implementieren, dann _ist_ das doch eine
Implementation nach eigenem Gusto. Selbst dann, wenn es mehrere gibt, die
das wiederum gleich machen. Und sie sind dann zu einem, der es nach
Spezifikation implementiert, nicht kompatibel. Was sie aber sein sollten,
denn das ist ja die Idee hinter SRCP.
> Ich kann mich notfalls damit
> anfreunden,
> dass es "nur" zwei N's gibt, wobei dann der Server die Entscheidung
> trifft,
> ob DCC-Pakete für 28 Fahrstufen oder 128 FS erzeugt werden.
So steht's in der Spezifikation. Ich denke, wir haben das damals gründlich
überlegt, bevor wir zu diesem Ergebnis gekommen sind.
> Ich weiss
> nicht, wo die Idee herkommt, dass "jeder nach eigenem Gusto" irgendwas
> implememtieren soll oder kann.
Man kann es natürlich immer. Man hat aber eben auch.
> Ob jetzt zwei N's oder fünf N's im SRCP
> definiert sind, erweitert die Freiheitsgrade für einen
> Serverentwickler nicht.
Doch, im letzteren Fall hat er die Freiheit, einen Nx, der 28 Fahrstufen
vorsieht, bei einer Angabe von 128 Fahrstufen abzulehnen, die 128
Fahrstufen zu ignorieren oder jeweils umzurechnen. Damit sich das halbwegs
vorhersehbar verhält, müßte man also auch das wieder in die Spezifikation
schreiben. Wobei das Umrechnen durch die "maximum speed"-Angabe im SET GL
erledigt und ignorieren eigentlich keine Option ist. Bleibt also die
redundante Angabe, die wenn falsch abgelehnt wird. Finde ich wenig
überzeugend.
> Der einzige Unterschied ist, dass bei zwei N's der Server
> Entscheidungen
> bzgl. Art der zu generierenden DCC-Pakete trifft und dabei die FS-Info
> beim INIT auswertet, implizite Logik also.
Wieso "implizite Logik"? Wofür ist denn die Fahrstufenzahl im INIT drin,
wenn der Server sie nicht auswerten soll? Und wofür sonst soll er sie
auswerten, wenn nicht, um die Lok passend anzusteuern?
> Warum? Weil wir zu faul
> sind,
> zwei Sätze in die SRCP-Spec zu schreiben? Auch die Änderungen, die
> dies bei der vorhandenen Software nach sich ziehen würde sind
> marginal.
Glaubst Du wirklich, das hat was mit Faulheit zu tun? Man könnte jetzt die
damalige Diskussion nachlesen, aber ich bin mir sicher, daß das ganz bewußt
so und nicht anders spezifiert wurde. Wenn Faulheit, dann könnte man die
höchstens bei den Programmierern irgendwelcher SRCPDs vermuten, die nicht
extra zwei Werte heranziehen wollen (Nx und Fahrstufen) um zu einer
internen Variante zu kommen. Aber wie Du schon schriebst: die Änderungen
sind marginal, so daß ich das auch nicht glaube. Von daher wäre die
sinnvollste Lösung, diese Änderungen in den fehlerhaft programmierten
SRCPDs gerade umzusetzen und alles paßt wieder zusammen.
>>> 2. Es wird im SRCP definiert, was unter den Kombinationen Protokoll
>>> _und_ Pr.Version
>>> verstanden wird.
>>
>>> Also inhaltlich etwa das, was in Andre's Wiki steht.
>>
>> Ist ja schon definiert. Zumindest für DCC eindeutig und ausreichend.
>
> Offenbar nicht, sonst würden wir jetzt nicht diskutieren.
Offenbar wurde es vereinzelt falsch verstanden. Oder war vielleicht falsch
oder gar nicht mehr im Gedächtnis. Wenn man aber die SRCP-Spezifikation vor
sich hat, ist es klar und eindeutig.
>> Aber die sollte unabhängig vom Server sein. Wenn der Client den Benutzer
>> gefragt hat, der ihm gesagt hat, daß der Dekoder lange Adressen hat und mit
>> 128 Fahrstufen arbeiten soll, dann soll das bitte in allen SRCP zur
>> richtigen Ansteuerung führen. Oder zu einer Fehlermeldung, wenn die
>> Kombination nicht möglich ist (z.B. Adresse 74 und N2 bei den meisten
>> Zentralen).
>
> Aha. Du weisst, dass der ursprüngliche DDL-Server (erddcd) z.B. die
> Adresse 74 dreimal ansteuern konnte? Ich persönlich fand dies
> praktisch.
Sicher weiß ich das. Aber meine Lenz-Zentrale kann das beispielsweise
nicht. Und ein SRCPD, der diese Zentrale ansteuert, von dem würde ich mir
wünschen, daß er mir auf die Finger klopft, wenn ich ihm sage, er solle die
lange Adresse 74 ansteuern. Wenn der SRCPD es hingegen kann, dann soll er
es tun. Was er aber nicht tun soll, ist, die Lok mit der _langen_ Adresse
74 ansteuern. Was aber der SRCPD tut, für den die Liste von André paßt.
> So hatten meine beiden V60 die Adresse 60, einmal DCC-kurz,
> einmal DCC-lang. Die Adresse 60 für MM war sogar noch frei .... ;-)
> Der srcpd erlaubt dies nicht. Jede Adresse kann dort
> nur einmal vorkommen.
Wenn die Hardware beides kann, finde ich es persönlich doof, wenn die
Software das abschneidet. Aber das kann man unterschiedlich sehen und ist
letztlich eine Designentscheidung.
> Jetzt lese ich hier, dass einige DCC-Zentralen
> nicht mal in der Lage sind, Adressen unter 128 als lange Adressen
> zu verwenden. Nun gut, aber was können wir für die Faulheit der
> Programmierer?
Das hat mit Sicherheit nichts mit Faulheit zu tun. Sondern damit, daß der
Otto-Normal-Bediener einfach nicht versteht, daß es hier unterschiedliche
Längen gibt. Der sagt seiner Zentrale "programmier die Lok auf Adresse xy"
und dann macht die Zentrale das. Allenfalls kann man ihm noch klarmachen,
daß an bestimmten Zentralen nur Adressen bis 100 oder 127 gehen und dann
wird die Zentrale, die mehr kann, bei solchen Adressen kurze Adressen
vergeben, so daß die Loks auch an solchen Zentralen laufen, die lange
Adressen nicht können.
> Konkret heisst das doch, dass der srcp-Server wissen
> muss, was die Zentrale oder die Software-Zentrale kann.
Das empfiehlt sich aus meiner Sicht ohnehin ganz stark.
> Beim srcpd
> heisst das: Benutze ich DDL, dann geht eben Adresse 74 auch DCC-lang,
> benutze ich einer der "meisten Zentralen", dann geht es eben nicht.
Das wäre meine Lösung. Allenfalls noch einen Konfigurationsswitch, mit dem
man ihn kastrieren kann.
> Das ist im Prinzip auch kein Problem, da jedes srcpd-Backend eigene
> INIT-Callbacks hat, in denen das geregelt werden kann.
> Soll sich nun jedes srcpd-Backend den Restriktionen der "meisten
> Zentralen" unterwerfen?
Nöö.
> Kommen wir zu den N's zurück: Möglicherweise ist zur Entwicklung
> eines "meiste Zentralen"-Backends innerhalb des srcpd gar keine
> Entscheidung bzgl. 28 und 128 Fahrstufen zu treffen, weil
> das sowieso die Hardware der Zentrale übernimmt.
Das hängt wohl von der Zentrale ab. Bei Lenz kannst Du eine Lok jederzeit
von 28 auf 128 Fahrstufen umstellen. Auch im laufenden Betrieb. Also kann
das auch der SRCPD. Nur von 14 auf 28 mußt Du natürlich CVs ändern.
> Und
> möglicherweise ist genau das der Grund, warum N3, N4 und N5 den
> Übergang von SRCP 0.7 zu 0.8 nicht überlebt haben: Weil es
> unnötig erschien.
Nein, es _ist_ unnötig. Aber nicht, weil die Zentrale das weiß, sondern
weil es innerhalb der gleichen Adressierung (lang / kurz) nur zwei
unterschiedliche Geschwindigkeitsbefehle sind. Die man zur Not auch munter
mischen dürfte. *grusel*
> Für DDL ist es aber nur dann unnötig, wenn
> man den Server ermächtigt, zu entscheiden. Warum ich das
> für schlecht halte, steht weiter unten.
Wenn Du dem Server sagst, er soll 128 Fahrstufen fahren, was entscheidet er
denn da noch selbst? Nix. Gar nix.
>
>>> 4. Der Server macht auf gar keinen Fall eine Auswertung bzgl.
>>> Protokoll und
>>> Version. Ausnahme: Protokoll 'P' ('protocol by server')
>>
>> Was verstehst Du darunter? Natürlich muß er die Protokollangabe auswerten,
>> wie soll er sonst wissen, wie er zu steuern hat.
>
> Mein Vorschlag besagt: Werte Protokoll und Protokollversion aus, das
> reicht. SRCP verlangt aber, dass bei DCC auch die Anzahl der
> Fahrstufen
> beim INIT ausgewertet werden.
Wowereit. Sonst kann man die Fahrstufenzahl auch weglassen.
> Oder - wie Harald andeutete - bei
> Mäklin
> sollen sogar max. mögliche Adresse und Anzahl der FS zur Protokollwahl
> herhalten. Nur zwischen den Versionen, bei denen das nicht geht, wird
> mit dem Versions-Parameter geholfen. IMHO bedeutet "Ich kann nicht
> zwischen ein _paar_ Versionen unterscheiden", dass ich _alle_
> Versionen
> spezifiziere. Und nicht mal rate und mal was gesagt bekomme.
Zu Märklin kann ich nichts sagen. Bei DCC muß jedenfalls nichts geraten
werden, das ist eindeutig. Und eindeutig sollte es auch bei Märklin sein.
Aber eben _nur_ eindeutig, nicht überspezifiziert, wie es bei DCC mit N3-N5
wäre.
> Das ist der Grund, warum ich nach wie vor für die Aufnahme von
> N1 ..., N5 in die SRCP-Spec. votiere und der MM-Kram bei
> M1 ... M5 bestehen bleibt,.
Ich halte es nicht für wünschenswert, da mutwillig Redundanzen einzubauen,
die den Anwender nur verwirren können.