Klv Data Format
You can use the following data formats for Klv injections:
Live packet insertion:
- RAW KLV data
- JSON formatted KLV
File (offline processing) packet insertion:
- RAW KLV data file (Concatenated RAW KLV data buffers)
- JSON formatted KLV file (JSON array of packets)
- CSV file. (MISB 601 records)
RAW KLV
RAW KLV format is basically a binary buffer containing MISB601 encoded KLV data
JSON formatted KLV
JSON formatted KLV is valid JSON object that contains tag : data pairs, where tag corresponds to the MISB 601 (with nested MISB 0102 and MISB 0903 (VMTI) data.
Note, For offline processing, you must supply klv timestamp (Tag 2), so the injector could figure out where to insert the packet:
[
{
"klvs": {
"2": 1283400392599311,
"3": "Frame 0, 00:00:000",
"13": 32.155127061,
"14": 34.834800006,
"15": 0.0,
"48": {
"1": 1,
"2": 1,
"4": "ImpleoTV Test Mission",
"12": 2,
"22": 9
},
"65": 9,
"72": 1490987362175778,
"1": -7243
}
},
{
"klvs": {
"2": 1283400392957660,
"3": "Frame 1, 00:00:033",
"13": 32.155127061,
"14": 34.834800006,
"15": 0.0,
"48": {
"1": 1,
"2": 1,
"4": "ImpleoTV Test Mission",
"12": 2,
"22": 9
},
"65": 9,
"72": 1490987362175778,
"1": 4411
}
}
]
or
[
{
"2": 1283400392599311,
"3": "Frame 0, 00:00:000",
"13": 32.155127061,
"14": 34.834800006,
"15": 0.0,
"48": {
"1": 1,
"2": 1,
"4": "ImpleoTV Test Mission",
"12": 2,
"22": 9
},
"65": 9,
"72": 1490987362175778
},
{
"2": 1283400392957660,
"3": "Frame 1, 00:00:033",
"13": 32.155127061,
"14": 34.834800006,
"15": 0.0,
"48": {
"1": 1,
"2": 1,
"4": "ImpleoTV Test Mission",
"12": 2,
"22": 9
},
"65": 9,
"72": 1490987362175778
}
]
Complex types
While most of the data can be represented by numbers (byte, integer, float), strings or arrays of numbers / strings , some tags require a bit more complex structures. Here are the exceptions:
- Tag 94. MIIS Core Identifier
"94": {
"Version": 1,
"SensorID": {
"Quality": "Physical",
"UUID": "F592-F023-7336-4AF8-AA91-62C0-0F2E-B2DA"
},
"PlatformID": {
"Quality": "Virtual",
"UUID": "16B7-4341-0008-41A0-BE36-5B5A-B96A-3645"
}
}
- Tag 115. Control Command
"115": [ 5, "Fly to Waypoint 1", "2008-10-24T00:13:29.913" ]
Note. The last element (Time) is optional.
Tag 115 may also contain an array of commands:
"115": [
[ 5, "Fly to Waypoint 1", "2022-04-24T00:13:29.913" ],
[ 6, "Fly to Waypoint 2" ],
]
Tag 122 Country Codes
"122": {
"CodingMethod": 14,
"OverflightCountry": "CAN",
"OperatorCountry": "",
"CountryOfManufacture": "FRA"
}
- Tag 128. Wavelengths List
"128": [
[ 21, 1000, 2000, "NNIR" ]
],
- Tag 130. Airbase Locations
"130": {
"TakeOff": [ 38.841859, -77.036784, 3 ],
"Recovery": [ 38.939353, -77.459811, 95 ]
}
- Tag 138. Payload List
"138": {
"PayloadCount": 3,
"PayloadRecords": [
[ 0, 0, "VIS Nose Camera" ],
[ 1, 0, "ACME VIS Model 123" ],
[ 2, 0, "ACME IR Model 456" ]
]
}
- Tag 139. Active Payloads
"139": 11
Or array of bytes (Use additional bytes when the Payload List (Item 138) has more than eight payloads. )
"139": [ 2, 11 ]
Supported tags
CSV formatted files.
KlvInjector allows MISB 0601.X data import from files. The data is parsed and its timing information (Tag 2 - UNIX_TIME_STAMP) is used (as an offset from the first encountered timestamp) in order to inject the data.
The application detects a file format by parsing its first line, which is supposed to contain a text description of the data columns.
The application works with the following text formats:
MISB 0601.X
The first line of the file will contain a text description of the MISB 0601.X data - Tag number or tag description (as it appears in the MISB 601 standard. For example: Checksum,UNIX Time Stamp,Mission ID,Platform Tail Number,.
Note, you can skip unused (empty) columns if there is no data for that specific tag present
So, the above (partial) dataset may be also presented in the following format:
note Nested standards, like MISB 102, MISB 903 are not supported. Use json format instead.