Zum Hauptinhalt springen

OSF4 – Spezifische Dokumentation

Dieses Dokument beschreibt alle Aspekte des Open Streaming Formats Version 4 (OSF4), die über die allgemeine OSF-Beschreibung hinausgehen.
Es ergänzt die Datei osf_general.md, in der alle für OSF4 und OSF5 gemeinsamen Strukturen erklärt sind.

OSF4 ist die klassische Version des Formats. Sie nutzt ausschließlich XML für den Metablock und bildet die Basis für die Abwärtskompatibilität in OSF5.

Magic Header in OSF4

  • Erlaubte Kennungen:

    • OSF4
    • OCEAN_STREAM_FORMAT4 (historische Kennung)
  • Format:

    OSF4 173762\n
  • Eigenschaften:

    • Immer XML-Metablock direkt nach dem Header.
    • Keine JSON-Unterstützung.
    • OSF5-Parser können OSF4-Dateien vollständig lesen.

Metablock in OSF4 (XML)

OSF4 verwendet für den Metablock ausschließlich XML.
Er enthält alle Datei- und Kanalinformationen und beginnt mit einem Standard-Prolog:

<?xml version="1.0" encoding="UTF-8"?>

Wurzelelement <osf>

Beispiel:

<osf version="4"
created_utc="2019-08-12T12:23:01+02:00"
creator="smartdevice:14001000078"
created_at_longitude="50.2"
created_at_latitude="8.65"
created_at_altitude="193"
reason="BOOT"
total_seq_no="0"
triggered_seq_no="0"
namespacesep="."
tag="preview"
comment="">

Attribute:

  • version: Version des OSF4-Formats (Default: "1").
  • created_utc: Zeitpunkt der Dateierstellung im ISO-8601-Format (UTC).
  • creator: Identifikation des erzeugenden Geräts oder Programms.
  • created_at_longitude / latitude / altitude: Optionale geografische Position.
  • reason: Grund für die Dateierstellung (BOOT, SEQUENCE, TRIGGERED).
  • total_seq_no: Absolute Sequenznummer seit Systemstart.
  • triggered_seq_no: Relative Sequenznummer seit letztem Trigger.
  • namespacesep: Separator für hierarchische Kanalnamen (Default: ".").
  • tag: Freies Tag zur Klassifizierung der Datei (Default: "preview").
  • comment: Optionaler Kommentar.

Kanalliste <channels>

Enthält alle Kanäle der Datei.

<channels count="8">
<channel index="0"
name="Sensor/Temperature"
channeltype="scalar"
datatype="double"
timeincrement="1000000"
sizeoflengthvalue="2"
physicalunit="°C"
reference="uuid"
physicaldimension="temperature"/>
</channels>
  • count: Anzahl der Kanäle in der Datei.

Kanalbeschreibung <channel>

Alle Parameter wie in der allgemeinen OSF-Doku beschrieben, für OSF4 gilt:

  • Metablock: Immer XML
  • Unterstützte channeltype: scalar, vector, matrix, binary
  • Vektor- und Matrix-Parameter: In der Kanaldefinition über rows, columns und zugehörige Attribute
  • sizeoflengthvalue: Pflichtfeld (2 oder 4 Byte)
  • Keine neuen Typen pair und triple – diese sind erst ab OSF5 verfügbar.

Unterstützte Datentypen in OSF4

DatentypGrößeBeschreibung
bool1 ByteWahr/Falsch
int81 ByteGanzzahl mit Vorzeichen
int162 ByteGanzzahl mit Vorzeichen
int324 ByteGanzzahl mit Vorzeichen
int648 ByteGanzzahl mit Vorzeichen
float4 ByteIEEE 754 Single Precision
double8 ByteIEEE 754 Double Precision
stringvariabelUTF-8, Länge durch Block
candata16 ByteStruktur für CAN-Frames
gpsdata24 ByteStruktur für GPS-Positionen

Hinweis: pair und triple sind in OSF4 nicht definiert.


Datenblöcke in OSF4

OSF4 nutzt die in der allgemeinen Spezifikation beschriebenen Datenblockstrukturen.
Spezifisch für OSF4:

  • Steuerbyte: Alle ursprünglichen Blocktypen 0–8 werden unterstützt.
  • bcContinuedRelStampData: Wird in OSF4 noch genutzt (ab OSF5 entfernt).
  • bcStatusEvent und bcMessageEvent: Vorhanden, werden aber in neuen Implementierungen nicht mehr empfohlen.
  • Metadaten: Immer im XML-Format.

Einschränkungen:

  • Äquidistante Kanäle (bcStartData, bcContinuedData): Nur numerische Typen (int*, float, double).
  • Zeitgestempelte Kanäle (bcAbsTimeStampData, bcContinuedRelStampData): Alle Typen erlaubt.

XML-Trailer und Magic Trailer

OSF4 unterstützt optional einen XML-Info-Block mit Kanalstatistiken und einen Magic Trailer.

XML-Trailer-Beispiel:

<trailer finalized_utc="2019-08-12T12:23:01+02:00" reason="fileStartGrid_min">
<channels count="8">
<channel index="0" samples="29452" last_ns="1384899599997800000"/>
<channel index="1" samples="29452" last_ns="1384899599997800000"/>
</channels>
</trailer>

Magic Trailer:

OSF_STREAM_END 321316454==============
  • 40 Byte lang, Zahl = Position des 0xFFFF-Blocks.

Besonderheiten und Limitierungen von OSF4

  • Nur XML-Metablock, keine JSON-Unterstützung.
  • Steuerbyte komplexer, mehr Blocktypen als OSF5.
  • Keine nativen pair/triple-Datentypen.
  • Vektor- und Matrixkanäle über XML-Parameter (rows, columns).
  • bcContinuedRelStampData wird unterstützt, ist aber in OSF5 nicht mehr enthalten.

Beispiel einer OSF4-Datei

OSF4 30269
<?xml version="1.0" encoding="UTF-8"?>
<osf version="4" created_utc="2019-08-12T12:23:01+02:00" creator="smartdevice:14001000021">
<channels count="2">
<channel index="0" name="Sensor/Temperature" channeltype="scalar" datatype="double" timeincrement="1000000"/>
<channel index="1" name="Sensor/Pressure" channeltype="scalar" datatype="double" timeincrement="1000000"/>
</channels>
</osf>
[BEGIN OF BINARY DATA]