Spezifikation Datenformat fuer Stations- und Linkdaten         G.Berg
======================================================         ex DJ6FM
Version 2.2                                                    26.05.2001


Die Spezifikation beschreibt das Datenformat, wie es beim Versand
der Daten ueber Packet-Radio verwendet wird.


1. Allgemeines:
===============

1.1 Dateien:
------------
- Stationsdatei  *.STN (bei allen Diensten)
- Linkdatei      *.LNK (nur bei PR)
- Updatedatei    *.UPD

Das Datenformat der Stations- und Linkdatei ist datenbankgerecht und
zur Ein-/Ausgabe in Masken geeignet:

- Alle Zeilen einer Datei haben das gleiche Format.
  (Keine Kommentare, kein Header usw.).
- Alle Zeilen einer Datei haben die gleiche (feste) Anzahl von Feldern.
- Die Felder haben eine definierte maximale Laenge.


Die Updatedatei ist eine Steuerdatei zum Aktualisieren der Stations- und
Linkdateien. Updatedateien muessen nicht von allen Programmen verarbeitet
werden. Es kann dann ein anderes Updateprogramm (z.B. von HAMMAP)
verwendet werden.



1.2 Felder:
-----------
- Die Felder werden durch Kommata getrennt.
- Kommata duerfen nicht weggelassen werden (auch wenn danach nur noch leere
  Felder kommen).
- Innerhalb eines Feldes darf kein Komma stehen (auch nicht im Info-Feld).
- Leerzeichen zu Beginn oder Ende eines Feldes (zur Formatierung) sind zulaessig.
- Der Inhalt darf die maximale Laenge nicht ueberschreiten (Leerzeichen zu
  Beginn und Ende des Feldes zaehlen dabei nicht mit).
- Felder muessen nicht bis zu Ihrer maximalen Laenge mit Leerzeichen aufgefuellt
  werden.

- Umlaute sollen nicht verwendet werden.
- Gross-/Kleinschreibung ist beliebig bei Call, Locator und allen
  Abkuerzungen. Vorzugsweise sollte in diesen Feldern Grossschreibung
  verwendet werden.
- Sortierungen muessen unabhaengig von der Gross- / Kleinschreibung erfolgen.
- Zeile, Datum, Baud und QRG sind rein numerische Felder. Sie duerfen nur
  Zahlen enthalten oder leer sein.
- Felder, deren Inhalt unbekannt ist, bleiben leer. Fuer numerische Felder
  (Datum, Baud und QRG) ist der Wert 0 gleich einem leeren Feld (= unbekannt),
  bei allen uebrigen Feldern ein Fragezeichen '?' (nicht mehrere).
- Ausnahme: Folgende Felder duerfen nicht leer sein:
       Stationsdatei: Call, Zeile
       Linkdatei:     Call1, Call2

Alle Abkuerzungen (Status, Typ, Software, Hardware) haben einheitlich zwei
Buchstaben. Dies ist ein Kompromiss zwischen Lesbarkeit und Datenmenge.
Die Abkuerzungen werden zentral von den Datensammlern vergeben.


2. Stationsdatei:
=================

Fuer jede Station koennen (bei gleichem SSID) ein oder mehrere Zeilen
angegeben werden (z.B. wenn die Station mehrere Benutzer-QRG's,
Baud-Raten, Sysops usw. hat).

- Die erste Zeile einer Station ist die Hauptzeile. Sie hat die Zeilennummer 0.
- Zusaetzliche Zeilen haben die Zeilennummern 1 ... 9.
- Fuer leere Felder einer Zusatzzeile gilt der gleiche Inhalt wie im
  entsprechenden Feld der Hauptzeile.
- Status und Datum sollten (sofern bekannt) fuer jede Zeile eingesetzt werden.
- Bei zusaetzlichen Benutzerzugaengen und/oder Baud-Raten sollte in jeder Zeile
  QRG und Baud-Rate fuer eine Kombination angegeben werden.
- Mehrere unterschiedliche Zusatzinformationen sollten in getrennten
  Zusatzzeilen angegeben werden.
- In Zusatzzeilen muessen die Felder Sysop, Locator, QTH und Info leer sein.
  (In Baken-Dateien muss das Feld Info nicht leer sein.)

- Die Stationsdatei ist nach dem Call sortiert.
- Bei einer Station mit mehreren SSID's soll fuer das ganze Call-Feld (incl.
  SSID) eine alphabetische Sortierung erfolgen (1, 10, ..., 15, 2, ..., 9).
- Bei mehreren Zeilen fuer das gleiche Call werden diese nach der
  Zeilennummer sortiert.


Beispiel:

DB0CPU,0,OK,9212,DI,FN,RM,438.425,1200,DJ6II ,JN49FL,Ludwigshafen,AG Mikrocomputer
DB0CPU,1,PL,9211,  , ,  ,438.425,9600,      ,     ,            ,
DB0CPU,2,  ,   ,  , ,  ,144.650,1200,      ,     ,            ,



Zeilensyntax:  (alles in einer Zeile)
-------------
Hauptzeile:
  call,0,[status],[datum],[typ],[software],[hardware],
   [qrg],[baud],[sysop],[locator],[qth],[info]

Zusatzzeilen:
  call,zeile,[status],[datum],[typ],[software],[hardware],
   [qrg],[baud],,,,[info*]

* = Nur fuer Baken-Dateien.


Felddefinitionen:
-----------------
Die angegebene Zeichenzahl ist die maximale Feldlaenge (ohne Leerzeichen
zu Beginn oder Ende).

Call   9 Zeichen  mit SSID (mit Bindestrich angehaengt)
                   Beispiel: DB0GE-8
                   Feld darf nicht leer sein.
                   SSID '-0' kann weggelassen werden.

Zeile  1 Zeichen  0 = Hauptzeile fuer Station
                   1...9 = Zusatzzeilen fuer Station
                   Feld darf nicht leer sein.

Status 2 Zeichen  Abkuerzungen:
                     OK = in Betrieb
                     IS = Instabil
                     TE = Test
                     DF = Defekt
                     PL = Geplant

Datum  4 Zeichen  Datum von dem die Information stammt
                   Format: JJMM
                   Beispiel: 9212 = Dezember 92

Typ    2 Zeichen  Abkuerzungen:
                     Packet Radio:
                       AP = APRS-Digi
                       DI = Digipeater
                       DX = DX-Cluster
                       GW = Gateway
                       LN = Link-Node (ohne Benutzerzugang)
                       MB = Mailbox
                       TI = TCP/IP-Server (Endstelle)
                       UN = User Node (Benutzer)
                       WX = Wetter-Knoten

                     Andere Dienste:
                       AR = AMTOR-Relais
                       AB = AMTOR-Box
                       BE = Beacon (Bake)
                       DE = Digitalecho
                       EM = EME-Station
                       FR = Fonie-Relais
                       FB = Fonie-Box
                       LT = Linear-Transponder
                       MM = Multimode-Relais
                       RB = RTTY-Box
                       RR = RTTY-Relais
                       TV = ATV-Relais

Software 2 Zeichen Abkuerzungen:
                     Packet Radio:
                       AK = AK1A
                       BC = BayCom-Node
                       BM = BayCom-Mailbox
                       DB = DieBox
                       DP = DP-Box
                       DW = DigiWare
                       FB = FBB-Server
                       FL = FPAC (Linux)
                       FN = FlexNet
                       FO = FlexNode
                       FP = FPAC
                       G8 = G8BPQ-Switch
                       IT = ITANET
                       KN = Kam-Node
                       LN = LinuxNode
                       NL = TCP/IP NETCHL
                       NS = NOS
                       OE = OE5DXL-Node
                       RN = ROSE/FPAC
                       SN = SNet
                       SU = SuperVozelj
                       TH = TheNet
                       TN = ThenetNode
                       UX = UNIX
                       WA = Wampes
                       WN = WX-NET
                       XN = (X)NET

                     Fonie, ATV, EME und Baken: leer
                     Fuer Benutzer-Software werden keine Abkuerzungen vergeben.

Hardware 2 Zeichen Abkuerzungen:
                     FA = FALCON
                     KA = KAM
                     PC = PC
                     RM = RMNC
                     SE = SEPRAN
                     ST = Atari-ST
                     TN = TNC
                     T3 = TNC3
                     T4 = TNC4

                     Fonie, ATV, EME und Baken: leer
                     Fuer Benutzer-Hardware werden keine Abkuerzungen vergeben.

QRG    9 Zeichen  QRG-Angabe des Benutzerzugangs in MHz mit DezimalPUNKT.
                   Maximal drei Stellen rechts vom Dezimalpunkt (zusaetzliche
                   Stellen werden weggelassen: 145.6875 als 145.687 eingeben).
                   Bei Duplex SENDEfrequenz des Digis.
                   Kein Benutzerzugang : -1.0
                   Beispiel: 438.425
                   Falsch:  438,425  (Komma statt Punkt)


Baud   6 Zeichen  Baudrate des Benutzerzugangs (Bits/sec):
                   Nur ganze Zahlen (z.B. 45.45 als 45 eingeben).
                   Baudraten ueber 999999: als 999999 angeben
                   Kein Benutzerzugang : leer
                   Fonie, ATV, EME und Baken: leer
                   Beispiel: 1200


Sysop  6 Zeichen  Rufzeichen des Verantwortlichen/Sysops.

Locator 6 Zeichen  IARU-WW-Locator.
                   Beispiel: JN49HI

QTH    36 Zeichen Genauere Bezeichnung des QTH's (ggf. mit Hoehenangabe)
                   Beispiel: Moeninger Berg 561 m

Info   48 Zeichen Hinweis auf Besonderheiten.



Beispiel:

DJ6FM ,0,OK,9212,UN, ,PC,438.425,1200,DJ6FM,JN49HI,Sandhausen,HAMMAP-Autor
DB0CPU,0,OK,9212,DI,FN,RM,438.425,1200,DJ6II,JN49FL,Ludwigshafen,AG Mikrocomputer



3. Linkdatei:
=============

Fuer jeden Link gibt es eine Zeile.

Zeilensyntax:
-------------
call1,call2,[status],[datum],[baud],[typ]


Bei einem alpanumerischen Vergleich muss Call1 < Call2 sein.
  Richtig:   DB0AAA,DB0AAB,OK,9301,1200,UF
  Falsch:    DB0AAB,DB0AAA,OK,9301,1200,UF

Sortierung: Zuerst nach Call1. Bei gleichem Call1 dann nach Call2.
  Beispiel:  DB0AAA,DB0AAB,OK,9301,1200,UF
             DB0AAA,DB0AAC,OK,9301,9600,UF
             DB0AAA,DB0AAI,OK,9301,9600,UF
             DB0AAB,DB0AAC,OK,9301,1200,UF
             DB0AAB,DB0AAI,OK,9301,9600,UF
             DB0AAC,DB0AAI,OK,9301,9600,UF


Felddefinitionen:
-----------------
Call1  9 Zeichen  mit SSID (mit Bindestrich angehaengt)
                   Feld darf nicht leer sein.

Call2  9 Zeichen  mit SSID (mit Bindestrich angehaengt)
                   Feld darf nicht leer sein.

Status 2 Zeichen  Abkuerzungen:
                     OK = in Betrieb
                     IS = Instabil
                     TE = Test
                     DF = Defekt
                     PL = Geplant

Datum  4 Zeichen  Datum von dem die Information stammt
                   Format: JJMM
                   Beispiel: 9212 = Dezember 92

Baud   8 Zeichen  Baudrate des Links (Bits/sec):
                   Beispiel: 9600
                   Parallele Busse(Typ = BU):
                     Transfer-Rate * Busbreite (Bits)

Typ    2 Zeichen  Typ des Links
                     WI = Draht-Link
                     BU = interne Busverbindung
                     NT = Internet-Link
                     HF = HF-Link (3 - 30 MHz)
                     VF = VHF-Link (30 - 300 MHz)
                     UF = UHF-Link (300 - 3000 MHz)
                     SF = SHF-Link (3 - 30 GHz)
                     SL = Satelliten-Link



4. Update-Datei:
================

- Die Befehle werden in der Reihenfolge abgearbeitet, in der sie
  in der Datei stehen.
- Leerzeilen und Kommentarzeilen, die mit '#' beginnen, sind zulaessig.
- Zu Beginn jeder Zeile (ausser Kommentar) steht ein Befehl
  aus zwei Buchstaben, der von einem ':' gefolgt wird.


Befehlsformate:
===============

Jeder Befehl muss in einer Zeile stehen, auch wenn er hier wegen besserer
Lesbarkeit in zwei Zeilen aufgeteilt ist.


1. Add Station (Station hinzufuegen)
--------------
AS: call,zeile,[status],[datum],[typ],[software],[hardware],
     [qrg],[baud],[sysop],[locator],[qth],[info]

Fuegt die angegebene Zeile hinzu.


2. Modify Station (Station aendern).
-----------------
MS: call,zeile,[status],[datum],[typ],[software],[hardware],
     [qrg],[baud],[sysop],[locator],[qth],[info]

In der durch 'call' und 'zeile' definierten Zeile, werden alle Felder
(ab Status), die im MS-Befehl nicht leer sind, geaendert.


3. Delete Station (Station loeschen)
-----------------
DS: call[,,datum]

Loescht alle Zeilen und alle Links der angegeben Station.


DS: call,zeile[,datum]

Loescht die durch 'call' und 'zeile' definierte Zeile.
'DS: call,0' hat die gleich Funktion wie 'DS call'.


4. Add Link (Link hinzufuegen)
-----------
AL: call1,call2,[status],[datum],[baud],[typ]

Fuegt die angegebene Zeile hinzu.


5. Modify Link (Link aendern).
---------------
ML: call1,call2,[status],[datum],[baud],[typ]

In der durch 'call1' und 'call2' definierten Zeile, werden alle Felder
(ab Status), die im ML-Befehl nicht leer sind, geaendert.


6. Delete Link (Link loeschen)
--------------
DL: call1,call2[,datum]

Loescht den durch 'call1' und 'call2' definierten Link.


Fuer das Loeschen einzelner Felder ist kein besonderer Befehl vorgesehen.
Die gleiche Funktion wird dadurch erreicht, dass numerische Felder
(Datum, Baud und QRG) mit dem Wert '0' und alle anderen Felder mit dem
Inhalt '?' geaendert werden.



Änderungen in Version 1.1:
--------------------------
- Zusaetzliche Stationstypen:
   FB = Fonie-Box
   TV = ATV-Relais
- Optionale Datums-Angabe fuer:
   DS = Delete Station
   DL = Delete Link


Änderungen in Version 2.0:                             (05.06.1994)
--------------------------
- Neues Feld Typ in Link-Daten.
- Sortierung fuer SSID definiert.
- Link-Baudrate maximal 8 Stellen.
- Bei Baken Info in Zusatzzeilen zulaessig.
- Zusaetzliche Stationstypen:
   EM = EME-Station
   MM = Multimode-Relais
- Zusaetzliche Hardware:
   T3 = TNC3
   KA = KAM
- Zusaetzliche Software:
   RN = ROSE/FPAC
   AK = AK1A
   DP = Digipoint
   NL = TCP/IP NETCHL
   NS = NOS
   SU = SuperVozelj
   WN = WX-NET
   UX = UNIX
- Gestrichene Software:
   TO = TheNode



Änderungen in Version 2.1:                             (21.09.2000)
--------------------------
- Abkuerzungen fuer Stationstypen, Hardware und Software alphabetisch sortiert
- Zusaetzlicher Stationstyp:
   DE = Digitalecho
- Zusaetzliche Hardware:
   T4 = TNC4
- Zusaetzliche Software:
   XN = (X)NET
   FP = FPAC
   FL = FPAC (Linux)
   LN = LinuxNode
   IT = ITANET
   FO = FlexNode
- Geaenderte Software:
   alt: DP = Digipoint
   neu: DP = DP-Box



Änderungen in Version 2.2:                             (26.05.2001)
--------------------------
- Zusaetzlicher Stationstyp:
   AP = APRS-Digi