Funktionen für das Einlesen der Konfiguration

Bibliothek

Projektconfig
Librarylibconfig.a
Includedateiconfig.h

Beschreibung

Nach dem Anlegen eines Config Objektes und Initialisierung kann die Konfigdatei eingelesen bzw. die Kommandozeile an den Damon geparst werden. Danach können die einzelnen Knfigurationswerte abgefragt werden. Es gibt sowohl für Zahlen als auch für Zeichenketten eine eigene Abfragefunktion. Es gibt auch Funktionen, um einen Konfigurationswert zu setzen.

Definitionen

Konstanten

Konstanten für den Pfad der Konfigdatei

#define MRSYSTEM_CONFIG_FILE "/etc/mrsystem"

Konstanten für Konfigurationswerte

#define MRSYSTEM_CFG_PROTO_MOTOROLA 0x01
#define MRSYSTEM_CFG_PROTO_MFX      0x02
#define MRSYSTEM_CFG_PROTO_DCC      0x04

#define MRSYSTEM_CFG_SYSTEM_START "start"
#define MRSYSTEM_CFG_SYSTEM_STOP  "stop"
#define MRSYSTEM_CFG_SYSTEM_HIDE   "hide"
#define MRSYSTEM_CFG_SYSTEM_UNHIDE "unhide"

#define MRSYSTEM_CFG_SYNC_PERIODIC 0x01
#define MRSYSTEM_CFG_SYNC_KEYBD    0x02
#define MRSYSTEM_CFG_SYNC_LAYOUT   0x04
#define MRSYSTEM_CFG_SYNC_MEM      0x08
#define MRSYSTEM_CFG_SYNC_CONTR    0x10

#define DISABLE_WAKEUP_S88 "0"

Datentypen

Datentypen für Konfigurationsvariable

typedef enum { CfgPortVal, CfgBcVal, CfgForkVal, CfgTraceVal,
                    CfgVerboseVal, CfgUsageVal, CfgZentraleVal,
		    CfgProtokollVal, CfgSyncVal, CfgConnTcpVal,
		    CfgEmuHostCom,  CfgNumLokfkts } CfgIntValues;
typedef enum { CfgIfaceVal, CfgAddrVal, CfgCanIfVal, CfgPathVal,
               CfgUdpBcVal, CfgStartVal, CfgWakeUpS88, CfgGpioS88,
               CfgHideMs2Val, CfgSerialLineVal } CfgStrValues;

Datentypen für Funktionen der Konfigurationslib

typedef struct {
   Map *Config;
   IniParsStruct *Parser;
} ConfigStruct;

Makros

Makros, um Felder im Kommando zu setzen und lesen

#define ConfigSetConfig(Data, Val) (Data)->Config=Val
#define ConfigSetParser(Data, Val) (Data)->Parser=Val
#define ConfigGetConfig(Data) (Data)->Config
#define ConfigGetParser(Data) (Data)->Parser

Funktionen

FunktionBeschreibung
ConfigCreate()Die ConfigCreate Funktion wird als erste Funktion aufgerufen, um die Struktur anzulegen.
ConfigDestroy()Die ConfigDestroy Funktion wird als letzte Funktion aufgerufen und gibt die Struktur wieder frei.
ConfigInit()Die ConfigInit Funktion initialisiert die Variablen.
ParameterBedeutung
DataZeiger auf das Konfig Objekt
IniFilePfad zu der Konfigurationsdatei
ConfigExit()Die ConfigExit Funktion ist das Gegenstück zur ConfigInit() Funktion.
ParameterBedeutung
DataZeiger auf das Konfig Objekt
ConfigReadFile()Die ConfigRedaFile Funktion liest die Konfigurationsdatei ein. Der Pfad wurde mit der ConfigInit Funktion gesetzt.
ParameterBedeutung
DataZeiger auf das Konfig Objekt
ConfigCmdLine()Die ConfigCmdLine Funktion wertet die Kommandozeile aus und speichert die Konfigurationswerte.
ParameterBedeutung
DataZeiger auf das Konfig Objekt
optstrDie erlaubten Parameter, wie sie auch die Funktion optarg() akzeptiert. Ein Superset der Parameter für alle Parameter, die sätliche Daemons des mrsystem akzeptieren, sind:
ParameterBedeutung
-2sync: bitmask for sync with ms2
-8wakeup_s88: start s88 modules
-bbroadcast: send udpa as broadcast
-ccan_interface: name of can interface
-eemu_host_com: port for virtual com driver on host
-fdont fork to go in background
-ggleissignal: system start, start power on track
-hhide_ms2: hide ms2
-iaddress: network adress of drehscheibe
-knumber of lokfKts
-lcs2_path: path where write lokomotive.cs2
-mserial_line: name of seriela interface
-pport: port of drehscheibe
-sprotokoll: bitmask for track protocolls
-ttrace can messages from udp
-vverbose
-zzentrale: 0=proxy mode, 1=ehtenret adddon for ms2
-xconn_tcp: use tcp connection
-?Hilfe üer die Kommandozeilenparameter
argcAnzahl der Parameter an main()
argvParameter an main()
int ConfigGetIntVal()Diese Funktion fragt einen Konfigurationswert für eine Zahl ab. Der mögliche Wertebereich ist durch den enum CfgIntValues vorgegeben. Eine Beschreibung der Konfigurationswerte ist auch Bestandteil der Beschreibung der Konfig.
ParameterBedeutung
DataZeiger auf das Konfig ObjektValue.
ValueTypDer Wert gibt an, welcher Konfigurationswert abgefragt werden soll. Der mögliche Wertebereich ist durch den enum CfgIntValues vorgegeben. Eine Beschreibung der Konfigurationswerte ist auch Bestandteil der Beschreibung der Konfig.
ParameterBedeutung
CfgPortValport to drehscheibe
CfgBcValsend udp as broadcast
CfgForkValdont fork to go in background
CfgTraceValtrace can messages from udp
CfgVerboseValverbose
CfgUsageValHilfe üer die Kommandozeilenparameter
CfgZentraleVal0:proxy mode, 1=ehternet addon for ms2
CfgProtokollValbitmask for track protocolls<
CfgSyncValbitmask for sync with ms2
CfgConnTcpValBenutze tcp conection
CfgEmuHostComPort für virtual com driver
CfgNumLokfktsAnzahl Lokfunktionen in lokomotive.cs2
Returnwert:Der abgefragte Konfigurationswert
char *ConfigGetStrVal()Diese Funktion fragt einen Konfigurationswert für eine Zeichenkette ab. Eine Beschreibung der Konfigurationswerte ist auch Bestandteil der Beschreibung der Konfig.
ParameterBedeutung
DataZeiger auf das Konfig ObjektValue.
ValueDer Wert gibt an, welcher Konfigurationswert abgefragt werden soll. Der mögliche Wertebereich ist durch den enum CfgStrValues vorgegeben. Eine Beschreibung der Konfigurationswerte ist auch Bestandteil der Beschreibung der Konfig.
ParameterBedeutung
CfgIfaceValinterface to drehscheibe
CfgAddrValnetwork adress of drehscheibe
CfgCanIfValname of can interface
CfgPathValpath where write lokomotive.cs2
CfgUdpBcValsend udp as broadcast
CfgStartValsystem start, start power on track
CfgWakeUpS88start s88 modules
CfgGpioS88parameter for client_gpios88
CfgHideMs2Valhide ms2
CfgSerialLineValname of serial interface
Returnwert:Zeiger auf den abgefragte Konfigurationswert
ConfigAddIntVal()Diese Funktion setzt einen Konfigurationswert für eine Zahl.
CfgIntValues vorgegeben
ParameterBedeutung
DataZeiger auf das Konfig ObjektValue.
ValueTypDer Wert gibt an, welcher Konfigurationswert gesetzt werden soll. Der mögliche Wertebereich ist durch den enum CfgIntValues vorgegeben. Eine Beschreibung der Konfigurationswerte ist auch Bestandteil der Beschreibung der Konfig.
ParameterBedeutung
CfgPortValport to drehscheibe
CfgBcValsend udp as broadcast
CfgForkValdont fork to go in background
CfgTraceValtrace can messages from udp
CfgVerboseValverbose
CfgUsageValHilfe üer die Kommandozeilenparameter
CfgZentraleVal0:proxy mode, 1=ehternet addon for ms2
CfgProtokollValbitmask for track protocolls<
CfgSyncValbitmask for sync with ms2
CfgConnTcpValuse tcp conection
CfgEmuHostComport for virtual com driver on host
Valuezu setzender Wert
ConfigAddStrVal()Diese Funktion setzt einen Konfigurationswert für eine Zeichenkette.
ParameterBedeutung
DataZeiger auf das Konfig ObjektValue.
ValueTypDer Wert gibt an, welcher Konfigurationswert gesetzt werden soll. Der mögliche Wertebereich ist durch den enum CfgStrValues vorgegeben. Eine Beschreibung der Konfigurationswerte ist auch Bestandteil der Beschreibung der Konfig.
ParameterBedeutung
CfgIfaceValinterface to drehscheibe
CfgAddrValnetwork adress of drehscheibe
CfgCanIfValname of can interface
CfgPathValpath where write lokomotive.cs2
CfgUdpBcValsend udp as broadcast
CfgStartValsystem start, start power on track
CfgWakeUpS88start s88 modules
CfgGpioS88parameter for client_gpios88
CfgHideMs2Valhide ms2
CfgSerialLineValname of serial interface
Valuezu setzender Wert


Zurück zur Modellbahn Startseite - Zurück zur Homepage