zuletzt geändert: vor 13 Jahren
mini srcpd 0.3
Michael Zangl, 2012
Achtung: Ich kann keine Haftung für eventuelle Schäden, die durch die Nutzung der Software enstehen, übernehmen. Die Nutzung erfolgt auf eigene Gefahr!
Der mini srcpd 0.3 ist eine Software für das AVR NET IO von Pollin, die auf ihm einen SRCP-Server laufen lässt.
Funktionen
Der Server unterstützt derzeit folgende Protokolle:
- DCC (Bus 1)
- Kurze und lange Lokadressen
- 14/28/128 Fahrstufen (+ Nothalt)
- Bis zu 20¹ Loks
- 13 Zusatzfunktionen (F0..F13) je Lok
- Weichen-/Signaldecoder
- CV-Programmierung byteweise (ungetestet)
- An und ausschalten der Gleisspannung
- Abfragen des Lokzustandes mit GET GL
- Sperren (Lock) von Loks und 30¹ Magnetartikeln
- S88 (Bus 1)
- Bis zu 8¹ Module, weniger einstellbar beim Initialisieren
- Automatisches Senden von Info-Nachrichten bei Moduländeurng
- Manuelle Abfrage der Module
¹ Die Angaben beziehen sich auf die Standardwerte und sind änderbar.
Zusätzlich werden folgende SRCP-Funktionen vom Server unterstützt:
- Beenden von Sessions
- Senden von GMs an einzelne Sessions oder an alle
- Verbindung von max. 10¹ Clients im Info- oder Command-Modus
Hier alles zusammengefasst als Tabelle. Grün bedeutet unterstützt.
| SET | CHECK | GET | WAIT | INIT | TERM | RESET | VERIFY ------------+------+--------+-----+------+------+------+-------+-------- | | | | | | | | GA | 1 | 1 | 1 | -- | 1 | 1 | -- | -- | | | | | | | | GL | 1 | 1 | 1 | -- | 1 | 1 | -- | -- | | | | | | | | FB | 1 | 1 | 1 | 1 | 1 | 1 | -- | -- | | | | | | | | SM | 1 | 1 | 1 | -- | 1 | 1 | -- | 1 | | | | | | | | POWER | 1 | 1 | 1 | -- | 1 | 1 | -- | -- | | | | | | | | LOCK | 0 1 | 0 1 | 0 1 | -- | -- | 0 1 | -- | -- | | | | | | | | DESCRIPTION | -- | -- | 0 1 | -- | -- | -- | -- | -- | | | | | | | | GM | 0 | 0 | -- | -- | -- | -- | -- | -- | | | | | | | | SERVER | -- | -- | 0 | -- | -- | 0 | 0 | -- | | | | | | | | SESSION | -- | -- | -- | -- | -- | 0 | -- | -- | | | | | | | | TIME | 0 | 0 | 0 | 0 | 0 | 0 | -- | --
Geplant
Unter anderem:
- Senden der aktuellen Zustände beim Verbinden im Info-Modus
- TERM GL für DCC
- Infonachricht beim starten/beenden von Sessions
- Alles im richtigen Einstaz auf einer richtigen Anlage testen
Bekannte Fehler
Diese Fehler sind bekannt und teilweise beabsichtigt.
- Die Geschwindigkeitswerte für DCC werden nicht richtig berechnet, wenn vmax nicht eins kleiner als die Zahl der Fahrstufen ist.
- Einige Parameter (z.B. die Funktionen der Loks) werden nicht überprüft sondern fehler einfach ignoriert.
- Der Server teilt dem Client nicht mit dass er keine Resourcen mehr für eine neue Verbindung frei hat, sondern baut einfach keine auf.
Tipps
- Mit Telnet verbinden
- Man kann sich mit Telnet mit dem Server verbinden. Dazu ein Terminal starten (Windows: Start->Ausführen->
cmd
eingeben). In dieses gibt man den Befehl:telnet <adresse> 4303
ein. <adresse> ersetzt man dabei durch die Adresse des Servers. - S88 nutzen
- Um S88 zu benutzen muss man den Bus mit Angabe der Modulzahl
initialisieren. Dazu sendet man:
INIT 1 S88 n
, mit der Zahl der Module (8-Fach) als n. zum Beispiel mit Telnet:GO 1 200 OK GO INIT 1 S88 8 2 200 OK
-
TERM <bus> SM
- The response named in the specs is the response to a
GET <bus> SM
. The server will respond with a102 INFO <bus> GL <addr>
- DCC Addresses
- The server automatically selects between short and long addresses, this flag is therefore ignored..
-
GET
SM <1 or more values> -
There is no definition of the type/more value part. The server supports
GET <bus> SM <decoderaddress> CV <cvaddress>
andGET <bus> SM <decoderaddress>CVBIT <cvaddress> <bit>
. It responds with a100 INFO <bus> SM <decoderaddress> CV <cvaddress> <value>
or100 INFO <bus> SM <decoderaddress> CVBIT <cvaddress> <bit> <value>
- Termination of sessions
- The specs say to send a
101 INFO 0 SESSION <SESSIONID>
. I send a102 INFO 0 SESSION <SESSIONID>
, because 102 is the status code for TERM. - Size of integers
- Since this is an embedded system, RAM is rare. Therefore, most parameters are limited to a 16 bit range. This also applys to times given in wait commands, so timeouts greater thatn 18 hours may result in unusual behaviour.
- 0.3
- Überarbeitung des Netzwerktreibers, direktes Lesen der Streams aus dem Puffer.
- 0.4
- Refractoring des Gleissignalgenerators. Vorbereitung für mehrere Protokolle. Einfügen einer Systemzeit.
Quelltext
Der Quelltext dereit entwickelt, wer eine Testversion wünscht kann sich bei mir melden.
Ich habe für das Projekt einen komplett neuen Netzwerktreiber entwickelt der wenig RAM braucht und somit auch auf einem Atmega32 genug Platz für viele Loks und Weichen lässt.
Technical notes (en)
SRCP was basically just written for one server. There are some places where the specs are unclear or contain obvious errors and a lot of commands and behaviours are optional.
This Section shall describe how the server reacts to the commands and which extensions I made.