## 000 - 03

**Version 0.2 (20190913)**

# Application Data Block (ADB)

ADB bit allocation table:

JANUS Bits | ADB Field Bit # | Descriptor | Bits per Field | Description | Comments |

23-30 | 33-26 | Schedule | 8 | Used only if Schedule Flag bit equals 1 (has no use in the context of the DISSUB message) | |

32-39 | 24-17 | Station Identifier | 8 | Station identifier of sender | |

40-47 | 16-9 | Destination Identifier | 8 | Station identifier of receiver | |

48-56 | 8-0 | Payload Size | 9 | Size of CARGO | Cargo size is in bytes |

**Note:**Only 33 bits of the 34 bits are used.

# CARGO

CARGO bit allocation table:

CARGO Bits | Descriptor | Bits per Field | Description | Comments | |

1-10 | Nationality | 10 | Two-letter country codes according to ISO 3166 standard | Each letter is coded in ASCII with 5 bits (the two MSBs are masked), for example: 'A' is coded as 0b00001 'Z' is coded as 0b11010 Undefined nationality is coded as 0b1111111111 | |

11-34 | Latitude | 24 | Latitude in 90/8388607 deg increments (range +/-90 deg) North = positive (as per 2's complement), South = negative (as per 2's complement). | The value 8388608 (0x800000 in hexadecimal) is not defined as a Latitude value. Can be used to code an error condition. (see Note 1) | |

35-59 | Longitude | 25 | Longitude in 90/8388607 deg increments (range +/-180 deg) East = positive (as per 2's complement), West = negative (as per 2's complement). | Longitude. The value 16777216 (0x1000000 in hexadecimal) is not defined as a Longitude value. Can be used to code an error condition. (see Note 1) | |

60-72 | Depth | 13 | Value in [m] with 1 [m] resolution | Depth_encoded is the bit pattern that encodes the Depth value in [m]. depth_encoded = depth For depth >= 8191 [m], depth_encoded = 8191, No Depth available. | |

73-81 | Speed | 9 | Value in [kn] with 0.1 [kn] resolution. | Mapping Rulesvalue_float is the actual Speed value in [kn]. value_int is the bit pattern that codes the Speed value (written as an integer in decimal notation). Integer to Volume [kn] conversion:value_float = value_int * 0.1 Float [kn] to integer conversion:value_int = round(value_float * 10.0) For value_float >= 51.1 [kn], value_int = 511, No Speed available.Round towards nearest integer (rounding halfway cases away from zero) | |

82-90 | Heading | 9 | 0..359.55 deg (in 0.705 deg increments)Mapped according to: Code Value [deg] ------------------------- 0 0 1 0.705 : : 510 359.55 511 n.a. ------------------------- | The Heading value is coded with a Uniform Quantization.Mapping Rulesvalue_float is the actual Heading value in [deg]. value_int is the bit pattern that codes the Heading value (written as an integer in decimal notation). Integer to heading [deg] conversion:value_float = value_int * 0.705 For value_int = 511 No Heading Available Float [deg] to integer conversion:Round towards nearest integer (rounding halfway cases away from zero) value_int = round(value_float/0.705) | |

91-96 | O2 | 6 | Value in volume % with a 0.1 resolution. Mininum value is 17 %. | Mapping Rulesvalue_float is the actual O2 value in [%]. value_int is the bit pattern that codes the O2 value (written as an integer in decimal notation). Integer to Volume [%] conversion:value_float = value_int * 0.1 + 17 Float [%] to integer conversion:For value_float >= 17 [%] and value_float < 23.3 [%], value_int = round((value_float - 17) * 10.0) elsewhere value_int = 63, No O2 available.Round towards nearest integer (rounding halfway cases away from zero) | |

97-102 | CO2 | 6 | Value in volume % with a 0.1 resolution. | Same mapping and round rules as Speed. CO2_encoded is the bit pattern that encodes the CO2 value in [%]. For CO2 >= 6.3 [%], CO2_encoded = 63, No CO2 available. | |

103-110 | CO | 8 | Value in ppm with a 1 ppm resolution. | CO_encoded is the bit pattern that encodes the CO value in [ppm]. CO_encoded = CO For CO >= 255 [ppm], CO_encoded = 255, No CO available. | |

111-116 | H2 | 6 | Value in volume % with a 0.1 resolution. | Same mapping and round rules as Speed. H2_encoded is the bit pattern that encodes the H2 value in [%]. For H2 >= 6.3 [%], H2_encoded = 63, No H2 available. | |

117-126 | Pressure | 10 | Atmospheric pressure value in [bar] with a 0.1 resolution. Mininum value is 0.9 bar. | Mapping Rulesvalue_float is the actual Pressure value in [bar]. value_int is the bit pattern that codes the Pressure value (written as an integer in decimal notation). Integer to Volume [bar] conversion:value_float = value_int * 0.1 + 0.9 Float [%] to integer conversion:For value_float >= 0.9 [bar] and value_float < 103.2 [bar], value_int = round((value_float – 0.9) * 10.0) elsewhere value_int = 1023, No Pressure available.Round towards nearest integer (rounding halfway cases away from zero) | |

127-132 | Temperature | 6 | Value in degrees Celsius with a 1°C resolution. | Temperature_encoded is the bit pattern that encodes the Temperature value in [°C]. Temperature_encoded = Temperature For Temperature >= 63 [°C], Temperature_encoded = 63, No Temperature available. | |

133-140 | Survivors | 8 | Value in number of survivors (pax) with a 1 pax resolution. | Survivors_encoded is the bit pattern that encodes the Survivors value in [pax]. Survivors_encoded = Survivors For Survivors >= 255 [pax], Survivors_encoded = 255, No Survivors available. | |

141-144 | Padding | 4 | Bit padding to align to byte and then compute CRC | ||

145-160 | CRC16 | 16 | CRC16 (X^16 + X^15 + X^2 + 1)Full description of CRC16 |

**Note 1:**

Latitude and Longitude are angles in decimal degrees: 1 deg = (pi/180) rad

Test Point 1:

Angle Value Binary and Hexadecimal Unsigned Binary in Decimal Notation -------------------------------------------------------------------------------------- Lat: +44.098596 0b001111101011011111001111 4110287 0x3EB7CF Lon: +9.862522 0b0000011100000011011010110 919254 0x00E06D6

Test Point 2:

Angle Value Binary and Hexadecimal Unsigned Binary in Decimal Notation -------------------------------------------------------------------------------------- Lat: +38.729201 0b001101110001010011011111 3609823 0x3714DF Lon: -9.190332 0b1111100101110110111100111 32697831 0x1F2EDE7

**Revision History**

Date | Version | Description | Authors | ||

2022/08 | 0.3 | Correction to cargo specifications to include bit padding | NATO STO CMRE | ||

2019/09 | 0.2 | Changes:- The field Nationality uses 10 bits instead of 16. - The field Latitude uses 24 bits instead of 28. - The field Longitude uses 25 bits instead of 29. - The field Depth uses 13 bits instead of 10. - The field Heading uses 9 bits instead of 12. - The field O2 has a mininum value of 17%. - The field Pressure has a mininum value of 0.9. - The field Survivors uses 8 bits instead of 6. - The field CRC uses 16 bits instead of 8. | NATO STO CMRE | ||

2017/10 | 0.1 | Message format published in: R. Petroccia, J. Alves and G. Zappa, "JANUS-Based Services for Operationally Relevant Underwater Applications," in IEEE Journal of Oceanic Engineering, vol. 42, no. 4, pp. 994-1006, Oct. 2017. doi: 10.1109/JOE.2017.2722018 | NATO STO CMRE |