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:
OSF4OCEAN_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,columnsund zugehörige Attribute sizeoflengthvalue: Pflichtfeld (2 oder 4 Byte)- Keine neuen Typen
pairundtriple– diese sind erst ab OSF5 verfügbar.
Unterstützte Datentypen in OSF4
| Datentyp | Größe | Beschreibung |
|---|---|---|
bool | 1 Byte | Wahr/Falsch |
int8 | 1 Byte | Ganzzahl mit Vorzeichen |
int16 | 2 Byte | Ganzzahl mit Vorzeichen |
int32 | 4 Byte | Ganzzahl mit Vorzeichen |
int64 | 8 Byte | Ganzzahl mit Vorzeichen |
float | 4 Byte | IEEE 754 Single Precision |
double | 8 Byte | IEEE 754 Double Precision |
string | variabel | UTF-8, Länge durch Block |
candata | 16 Byte | Struktur für CAN-Frames |
gpsdata | 24 Byte | Struktur für GPS-Positionen |
Hinweis:
pairundtriplesind 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–8werden unterstützt. bcContinuedRelStampData: Wird in OSF4 noch genutzt (ab OSF5 entfernt).bcStatusEventundbcMessageEvent: 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). bcContinuedRelStampDatawird 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]