The four VIDF fields described below form the sensor information block. Each is an array field with a length equal to the value found in the VIDF field, Number Of Sensors. They contain information specific to the UDF sensor data and with the exception of the sensor status field are actively used by the UDF kernel software in obtaining and processing the sensor data.
An array field of length Number Of Sensors, this field contains the data format for each of the defined UDF sensors. Sensors within the UDF definition need not have the same formats. Different formats are taken into account on access.
There are seven defined sensor data formats of which six are currently supported in the UDF kernel. The format definitions are listed in the table below.
| SENSOR DATA FORMAT DEFINITIONS | ||
|---|---|---|
| VALUE | DEFINITION | KERNEL SUPPORT |
| 0 | UNSIGNED INTEGER | YES |
| 1 | SIGNED INTEGER | YES |
| 2 | SINGLE PRECISION FLOATING POINT | YES |
| 3 | DOUBLE PRECISION FLOATING POINT | NO |
| 4 | HALF PRECISION FLOATING POINT: DEFINITION 1 | YES |
| 5 | HALF PRECISION FLOATING POINT: DEFINITION 2 | YES |
| 6 | HALF PRECISION FLOATING POINT: DEFINITION 3 | YES |
All integer data is stored in the format of the host machine. Floating point representations are UDF internal formats which are expanded to the host floating point representation on data access. The generic floating point expansion formula is:
| UDF FLOATING POINT REPRESENTATION PARAMETER DEFINITIONS | |||||||
|---|---|---|---|---|---|---|---|
| Format | Bit Length |
Mantissa Bit Length |
Exponent Bit Length |
Highbit Setting |
Base | Sig | Norm |
| 2 | 32 | 25 | 7 | 0 | 10 | 7 | 1 |
| 3 | 64 | 55 | 9 | 0 | 10 | 16 | 1 |
| 4 | 16 | 9 | 7 | 0 | 10 | 2 | 1 |
| 5 | 16 | 8 | 8 | 128 | 2 | 128 | 256 |
| 6 | 16 | 9 | 7 | 0 if exponent = 0 256 otherwise |
2 | 0 | 0 if exponent = 0 512 otherwise |
In all cases the mantissa occupies the most significant bits in the floating point representation with the sign bit occupying the most significant bit in the mantissa field. The exponent always occupies the least significant bits in the floating point representations with the sign bit occupying the most significant bit in the exponent field.
Error conditions in the floating point representations are indicated through the sign fields with both the mantissa and exponent set to 0. The four possible states are shown in the table below.
| ERROR CONDITIONS: MANTISSA AND EXPONENT MAGNITUDES = 0 | |||
|---|---|---|---|
| Mantissa Sign |
Exponent Sign |
Condition | Return Value |
| + | + | valid data | 0.0 |
| + | - | not a number | 0.0 |
| - | + | positive infinity | largest positive value |
| - | - | negative infinity | largest negative value |
The sensor data format field begins with the array designation line: m followed by the input N M N is the total number of entries and is be set to the value of the Number Of Sensors field and M is the number of entries given on each line. Each of the following N lines begins with the line format b followed by M entries (except the last line which may have less). An optional comment field may be added to the end of each line.
Sample SENSOR DATA FORMAT field:m 7 7 /* Sensor Data Format */ b 0 0 1 2 0 2 1 /* 000-006 */
This is an array field of length Number Of Sensors which holds the bit lengths of the the defined UDF sensors. Individual sensors within the UDF definition need not have the same bit lengths. Sensors which contain integer formatted data ( sensor data formats of 0 or 1) can have any bit length from length from 1 to 32. Sensors which contain floating point data must have the bit length of the floating point format used.
NOTE 1: Under UDF V2.1 sensor data can be stored on 1, 2, 4, 8, 16, or 32 bit boundaries. As of V2.2 data packing on 1, 2, or 4 bit boundaries has been deprecated and is no longer supported. It is, however, still supported for UDF's with version V2.1 for backwards compatibility. The most efficient method to use in dealing with non-integral word length data under UDF2.2 is to pack the data into either an 8, 16 or 32 bit data word and then use a VIDF defined algorithm to strip out the individual data word. This allows multiple lenght data to be packed into a single UDF data word.The sensor bit length is actively used in the UDF kernel software. For signed integer data it is used to determine the location of the sign bit when expanding the data to a native integer format. It is also used to determine the number of elements to retrieve from lookup tables which are being used to operate on sensor data.
The sensor bit length field begins with the array designation line: m followed by the input N M. N is the total number of entries and is set to the value of the Number Of Sensors field and M is the number of entries given on each line. Each of the following N lines begins with the line format b followed by M entries (except the last line which may have less). An optional comment field may be added to the end of each line.
Sample SENSOR BIT LENGTH field:m 5 5 /* Sensor Bit Length */ b 16 16 13 12 16 /* 000-004 */
| STATUS VALUES | |
|---|---|
| VALUE | DEFINITION |
| 0 | Sensor failed - all data should be ignored |
| 1 | Sensor operating normally |
| 3 | Sensor operating erratically - all data is suspect |
The sensor status field begins with the array designation line: m followed by the input N M. N is the total number of entries and is set to the value of the Number Of Sensors field and M is the number of entries given on each line. Each of the following N lines begins with the line format b followed by M entries (except the last line which may have less). An optional comment field may be added to the end of each line.
Sample SENSOR STATUS field:m 5 5 /* Sensor Status Values */ b 1 1 1 1 1 /* 000-004 */
An array field of length Number Of Sensors, this field contains a time correction in milliseconds for each sensor. The correction values allow for small temporal shifts to be added to the start and stop times of the data associated with a sensor. This is useful when a measurement does not fully align in time to the beginning time of the UDF data record, that is, it is not in sync with the bulk of the measurements in the UDF data record. The correction is applied on access of the data and may be positive or negative.
The sensor time correction field begins with the array designation line: m followed by the input N M. N is the total number of entries and should be set to the value of the Number Of Sensors field and M is the number of entries given on each line. Each of the following N lines begins with the line format l followed by M entries (except the last line which may have less). An optional comment field may be added to the end of each line.
Sample TIME OFFSETS field:m 5 5 /* Sensor Time Offsets */ l 0 0 0 10 0 /* 000-004 */