000 - 02
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.
Application Data Block (ADB)
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):
JANUS Bits | ADB Field Bit # | Descriptor | Bits per Field | Description | Comments
|
23 | 33 | RPT Flag | 1 | Repetition/Reservation flag bit | It must be set to 0, indicating a reservation |
24-30 | 32-26 | Reservation | 7 | Reservation time | Reservation time. It must be long enough to at least cover the transmission time of the cargo bits |
31 | 25 | Unused | 1 | Unused bit | Unused bit. It is initialized to 0 |
32-39 | 24-17 | Station Identifier | 8 | Station identifier of sender | It can take value 0..254 (255 not allowed) |
40-47 | 16-9 | Destination Identifier | 8 | 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 | 9 | 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
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-16 | O2 | 6 | 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) | |
17-22 | CO2 | 6 | 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. | |
23-30 | 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. | |
31-36 | H2 | 6 | 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. | |
37-46 | Pressure | 10 | 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) | |
47-52 | 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. | |
53-60 | 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. | |
61-64 | Padding | 4 | Bit padding (0 padding) to align to byte and then compute CRC | ||
65-80 | CRC16 | 16 | CRC16 (X^16 + X^15 + X^2 + 1)Full description of CRC16 |
Revision History
Date | Version | Description | Authors
| ||
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 | ||
2019/09 | 0.2 | Changes:- 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 |