zuletzt geändert: vor 12 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!

AVR NET IO mit Booster

AVR NET IO mit Booster

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:

¹ Die Angaben beziehen sich auf die Standardwerte und sind änderbar.

Zusätzlich werden folgende SRCP-Funktionen vom Server unterstützt:

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:

Bekannte Fehler

Diese Fehler sind bekannt und teilweise beabsichtigt.

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

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.

TERM <bus> SM
The response named in the specs is the response to a GET <bus> SM. The server will respond with a 102 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> and GET <bus> SM <decoderaddress>CVBIT <cvaddress> <bit>. It responds with a 100 INFO <bus> SM <decoderaddress> CV <cvaddress> <value> or 100 INFO <bus> SM <decoderaddress> CVBIT <cvaddress> <bit> <value>
Termination of sessions
The specs say to send a 101 INFO 0 SESSION <SESSIONID>. I send a 102 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.

Changelog

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.