Autor: Matthias Trute, et al
Datum: Mai 2004
Version: 2.0.6 ($Id: README,v 1.23 2006/07/30 19:18:53 mtrute Exp $)
Lizenz: GPL v2 fr das gesamte Packet

Zweck des Programms: 
    SRCP Kommandos werden ber das Netzwerk entgegengenommen und mit
    am Server angeschlossener Interfaces an die Modellbahn bermittelt 
    und die Rckmeldemodule eingelesen.


SRCP?
    Simple Railroad Command Protocol
    eine Entwicklung aus dem usenet (news:de.rec.modelle.bahn) um Modellbahnen
    mit dem Computer zu steuern. Die Betonung liegt auf dem S ;=)
    Aktuell ist Version 0.8.

Konfiguration

    Der Dmon wird ausschlielich ber eine Konfigurationsdatei konfiguriert.
    Diese heit standardmig /etc/srcpd.conf. Es handelt sich um eine Textdatei
    im XML Format, die mit jedem Editor bearbeitet werden kann.
    
    Die Dokumentstruktur basiert auf der Busstruktur des SRCP 0.8.x. Eine DTD ist
    in Arbeit.
    
    Die Datei wird sequentiell ausgewertet. Dies bedeutet, das die Busse
    in der numerisch korrekten Reihenfolge angegeben werden mssen. Zu
    beachten ist, das einige Treiber mehr als nur einen Bus belegen. Dies
    mu in der korrekten Nummerierung beachtet werden. Etwaige Fehler werden
    nicht immer erkannt. Bei Problemen an dieser Stelle bitte immer die
    Konfigurationsdatei _und_ eine verbale Beschreibung der angeschlossenen
    Hardware mitteilen!
    
    Per Default werden einige Parameter vorgegeben. Dies hat den Effekt, das
    nur nderungen anegeben werden brauchen. Die Defaultwerte werden sich nicht
    "heimlich" ndern.

    Grundstzliche Struktur
    Ein Bus wird durch das <bus> Tag definiert.
    In ihm sind einige Attribute und weitere Tags enthalten.
    <bus number="lfd.nr">
        <device>/dev/ttyS1</device>
        <use_watchdog>yes</use_watchdog>
        <restore_device_settings>no</restore_device_settings>
        <verbosity>1</verbosity>
	<!-- es folgt die Definition des Treibermoduls -->
	<driver>
	  <driverdata1>value</driverdata1>
	</driver>
    <bus>
    
    Device
    
    Das Device ist der Pfadname, der das betreffende Gert im Unixverzeichnissystem
    bezeichnet. Er mu vollstndig und ohne umrahmende Leerzeichen oder Zeilenvorschbe
    angegeben werden.
    
    use_watchdog
    
    Einige Treiber untersttzen einen Watchdog, der den betreffenden Programmteil bei
    Strungen der Kommunikation neu startet. Defaultwert: no.
    
    restore_device_settings
    
    Beim Programmende sollen die Gerteeinstellungen auf den ursprnglichen Zustand
    zurckgesetzt werden. Dies ist nur fr serielle Gerte sinnvoll und wird nicht
    von allen Treibern untersttzt. Defaultwert no.
    
    verbosity
    
    Die Verbosity stellt den Umfang der syslog Meldungen ein.
    
    0 keine Meldungen auer Start/Stop
    1 nur Fatale Fehler
    2 zustzlich Fehler
    3 zustzlich Warnungen
    4 zustzlich Informationen
    5 zustzlich Debugmeldungen
    >5 Hardware nicht immer tatschlich angesprochen
    
    Busspezifikation (driver)
    In jedem Bus mu eine Busspezifikation enthalten sein. Diese
    wird durch das nachfolgend angefhrt xml-tag ausgewhlt. Innerhalb
    dieser kann es (und wird es i.d.R.) weitere Angaben geben.
    
    Anstelle von driver ist der nachfolgend bezeichnete xmltag
    einzusetzen. Anstelle von driverdata1 die angegebenen 
    Parameter. Als Drivervalue wird alles inkl. Leerzeichen
    zwischen dem beginnenden und dem abschlieendem Tag
    bernommen. Gro/Kleinschreibung ist signifikant.
    
    Loopback
    ~~~~~~~
    Dieser Bus dient zum einen zur offline Entwicklung von Clientprogrammen
    als auch als Skelett fr neue Busse. Er verwaltet die Gerte ohne
    jeglichen Hardwarebezug.
    
    xmltag: loopback
    
    Parameter
    
    	number_ga: Grte GA Adresse (256)
	number_gl: Grte GL Adresse (80)
	number_fb: Anzahl FB Kontakte (0)
	
    Die FB koennen jeden numerischen Wert annehmen.
    Die GA und GL werden eingehende Befehle sofort 
    als ausgefhrt markieren.
    
    DDL S88
    ~~~~~~~
    Dieser Treiber untersttzt 1 oder 4 S88 Strnge am Parallelport. Dies wird entsprechend 
    dem Anschluschema des DDL Dmonen (www.vogt-it.com/OpenSource/DDL) bernommen. Die 
    Anschlustrnge entsprechend der Schaltung von Martin Wolf werden als separate Busse 
    gefhrt. Auch wenn nur ein Bus angeschlossen ist, werden immer 4 Busse belegt. Der 
    ioport sollte im Hexadezimalformat angegeben werden (mit fhrenden 0x).
    
    xmltag: ddl-s88
    
    ioport: Portadresse des Parallelports (0x378)
    number_fb_1: Anzahl S88 Module am Strang 1
    number_fb_2: Anzahl S88 Module am Strang 2 (0)
    number_fb_3: Anzahl S88 Module am Strang 3 (0)
    number_fb_4: Anzahl S88 Module am Strang 4 (0)
    
    Auch ohne die Schaltung von Martin Wolf werden 4 Busse belegt,
    dann ist allerdings nur der erste wirksam.
    
    Mrklin 6051
    ~~~~~~~~~~~~
    xmltag: m605x
    
    Das Mrklin Interface belegt einen Bus, der die Gertegruppen
    GA, GL, FB, LOCK und POWER untersttzt. Ebenso wird ein Watchdog 
    untersttzt. Die Kombination mit dem 6050 und 6020 (und baugleiche)
    wird ebenso untersttzt.
    
	number_ga: Grte GA Adresse (256)
	number_gl: Grte GL Adresse (80)
	number_fb: Anzahl S88 Module (0)
	
	mode_m6020: Features des 6021 abschalten (erweitertes
	            MM Protokoll abschalten)
	
    Folgende Parameter dienen dem Finetuning, sie sollten nicht
    gendert werden:
	
	ga_min_activetime: Minimale Einschaltdauer fr GA in Millisekunden (75 ms)
	
	pause_between_commands: Pause zwischen 2 Befehlen in Millisekunden (200 ms)
	pause_between_bytes: Pause zwischen 2 Bytes bei Mehrbytebefehlen (2 ms)

    Das Timing der Datenbermittlung ist kritisch und "handverlesen", die Defaultwerte
    haben sich aber fr einen betriebsstabilen Zustand als zweckmig erwiesen.

    Die Totzeit bis zum Wirksamwerden eines Befehls kann schon mal
    lnger dauern, vor allem wenn viele Befehle fr ein Gert anstehen.

    Beim 6021, das einige Befehle vom 6051 erst beim normalen Refresh 
    einarbeitet, kann es systembedingt einige Sekunden dauern... Ohne, das
    man was daran ndern knnte.

    Um den Defaultzustand herzustellen, sollte vor dem Starten des srcpd am
    6021 die Adressfolge 9193 eingegeben werden. Damit werden alle Loks auf
    einen definierten Zustand gesetzt, den der srcpd voraussetzt. Quelle:
    Undocumented Features of the Maerklin 6021
    
    Intellibox
    ~~~~~~~~~~
    xmltag: intellibox
    
    i2c dev
    ~~~~~~~
    xmltag: i2c-dev
    
    Das I2C Modul ist eine Eigenentwicklung. Fr Details der Hardware bitte 
    http://www.matronix.de konsultieren.
    
    Zimo MX1
    ~~~~~~~~
    xmltag: zimo
    
    Derzeit wird nur das kurze Lokformat und die Stromversorgung geschaltet.
    Der Code fr die GA ist ungetestet.
    
    HSI S88
    ~~~~~~~
    Das Highperformance S88 Interface von Littfinski.
    
    xmltag: hsi-88
    
    refresh: Wartezeit zwischen zwei Abfragezyklen in Mikrosekunden (!),
             default 10 000  (= 10 millisekunden)
    number_fb_left:  Anzahl der S88 Module am "linken" Kanel
    number_fb_center:Anzahl der S88 Module am "mittleren" Kanel
    number_fb_right: Anzahl der S88 Module am "rechten" Kanel


    DDL
    ~~~
    Erzeugen der Signale direkt am tty des PC, einzig ein Booster
    wird bentigt. Achtung: Derzeit ist nur eine Instanz dieses
    Bustyps mglich, da verschiedene Datenstrukturen noch global
    benutzt werden. Wenn mehrere Busse diesen Typs eingerichtet
    werden, wird vermutlich keiner so funktionieren, wie er soll.
    
    Kernroutinen zur Signalgenerierung aus erddcd von 
    Torsten Vogt, Packet DDL (erddcd-1.5.0wip5)
    
    xmltag: ddl
    
    spezifische Parameter:

    enable-maerklin: Yes             # Yes/No
    enable-nmradcc: Yes              # Yes/No

    improve-nmradcc-timing: Yes      # Yes/No recommended: Yes
    nmradcc-translation-routine: 3   # 1,2 or 3 recommended: 3

    enable-usleep-patch: No          # Yes/No recommended: No
    usleep-usecs: 500                # usecs to sleep, recommended 100 - 5000

    enable-shortcut-checking: No     # Yes/No recommended: Yes, if booster supports
    inverse-dsr-handling: No         # Yes/No recommended: Yes, if booster supports
    shortcut-failure-delay: 500      # wait usecs before handle failure

    enable-ringindicator-checking: No # Yes/No recommended: No

        
Installieren und Benutzen:

    Installation der rpm Packete ist wie immer bei solchen mit
    "rpm -i <dateiname>.rpm". Dabei werden die erforderlichen
    Links zum Starten des Daemons in /etc/init.d angelegt (aber
    nicht automatisch gestartet). Manuell kann der Daemon dann mit den
    Standardverfahren gestartet und gestoppt werden. Da sich die
    Distributoren leider noch nicht geeinigt haben, funktioniert
    das nur unter aktuellen (7.x, 8.x) SuSE Versionen. 
    
    Das Deinstallieren stoppt einen laufenden Daemon zuerst, bevor
    die Dateien entfernt werden.

    Hardware sollte im eigenen Interesse nur im komplett ausgeschaltetem
    Zustand angeschlossen und entfernt werden.
    
    Mit srcpd -h erhlt man eine bersicht ber die mglichen
    Parameter, das sind aber nicht allzuviele. Alle Einstellungen werden
    ausschlielich ber die beschriebene Konfigurationsdatei vorgenommen.
    
    Dann einfach das Programm mit "/usr/sbin/rcsrcpd start" starten. 
    Je nach angeschlossener Hardware mu dies ggf. als root erfolgen.
    Auch sind ggf. vorher Kernelmodule zu laden.

    Je nach eingestellter <verbosity> werden mehr oder weniger viele Daten
    in das Systemprotokoll geschrieben. Hierzu wird der syslog Dienst benutzt,
    der die LOG_INFO des srcpd normalerweise nach /var/log/messages schreibt.
    Wird die <verbosity> auf null gesetzt, werden nur gravierende Meldungen
    geschrieben, hherer Werte knnen, je nach Treiber, zu einem bitgenauem
    Ttigkeitsprotokoll fhren.

Verwandte Programme:
    siehe http://www.der-moba.de/Digital

Rechtliches: 

    Fr die vorliegende Software wird keine Haftung bernommen. Aus der
    Tatsache, das es bei den Autoren zu deren Zufriedenheit funktioniert kann niemals 
    geschlufolgert werden, das es auch bei anderen funktioniert und keinen 
    Schaden anrichtet. Wer dieses Programm benutzt, tut es auf eigene Gefahr. Es gab
    schon irreparable Hardwareschden! Wenn jemanden dies widerfhrt, hat er unser
    Mitgefhl. Mehr aber auch nicht. Wir erstellen die Software nicht gewerblich.
    
Sonst noch was?
    Jede nderung und jeder Erfahrungsbericht ist a) willkommen und sollte b) irgendwie
    auch bei den Autoren ankommen. Hilfreich sind dann Angaben zur Version (steht im Welcome des
    laufenden Servers).

Weitere Informationen: 
    http://srcpd.sourceforge.net
    http://www.der-moba.de/Digital
    
