Version 0.4 (20230314)
This application includes cargo data, therefore, in order to be compliant with ANEP-87:
- the schedule flag bit (bit 6 of the JANUS baseline packet) must be set to 1;
- the RPT flag bit (bit 23 of the JANUS baseline packet or first bit of the ADB) must be set to 0, indicating reservation;
- the reservation bits (seven bits: 24-30 of the JANUS baseline packet or 2-8 of the ADB) contain the reservation time, which must be long enough to at least cover the transmission time of the cargo bits.
For a visual description of the JANUS Baseline Bit Allocation (including details about "JANUS Bits" and "ADB Field Bit #") click here.
ADB bit allocation table (it is assumed that the schedule flag bit - bit 6 of the JANUS baseline packet - is set to 1):
ADB Field Bit #
Bits per Field
|23||33||RPT Flag|| |
|Repetition/Reservation flag bit||It must be set to 0, indicating a reservation|
|Reservation time||Reservation time. It must be long enough to at least cover the transmission time of the cargo bits|
|Unused bit||Unused bit. It is initialized to 0|
|32-39||24-17||Station Identifier|| |
|Station identifier of sender||It can take value 0..254 (255 not allowed)|
|40-47||16-9||Destination Identifier|| |
|Station identifier of receiver||It can take value 0..254 for unique IDs and 255 for broadcast (all nodes)|
|48-56||8-0||Payload Size|| |
|Size of CARGO||Cargo size is in bytes. The cargo size for this application is 10 bytes.|
Note: Only 33 bits of the 34 bits are used.
CARGO bit allocation table:
Bits per Field
|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
|Value in volume [%] with a 0.1 resolution. Mininum value is 17 %.||Mapping Rules|
value_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 + 17Float [%] 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)
|Value in volume [%] with a 0.1 resolution.||Similar mapping and round rules as O2.|
CO2_encoded is the bit pattern that encodes the CO2 value in [%].
For CO2 >= 6.3 [%], CO2_encoded = 63, No CO2 available.
|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.
|Value in volume [%] with a 0.1 resolution.|| Similar mapping and round rules as O2.|
H2_encoded is the bit pattern that encodes the H2 value in [%].
For H2 >= 6.3 [%], H2_encoded = 63, No H2 available.
|Atmospheric pressure value in [bar] with a 0.1 resolution. Mininum value is 0.9 bar.||Mapping Rules|
value_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.9Float [%] 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)
|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.
|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.
|Bit padding (0 padding) to align to byte and then compute CRC|
| CRC16 |
(X^16 + X^15 + X^2 + 1)Full description of CRC16
|2023/03||0.4||Correction to JANUS baseline packet fields, including schedule flag bit and reservation time. More information for the node identifiers and bit padding also included||NATO STO CMRE|
|2022/08||0.3||Correction to cargo specifications to include bit padding||NATO STO CMRE|
- The field Nationality uses 10 bits instead of 16. - 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|