Struct canadensis_data_types::uavcan::node::get_info_1_0::GetInfoResponse
source · pub struct GetInfoResponse {
pub protocol_version: Version,
pub hardware_version: Version,
pub software_version: Version,
pub software_vcs_revision_id: u64,
pub unique_id: [u8; 16],
pub name: Vec<u8, 50>,
pub software_image_crc: Vec<u64, 1>,
pub certificate_of_authenticity: Vec<u8, 222>,
}
Expand description
uavcan.node.GetInfo.1.0
Size ranges from 33 to 313 bytes
Fields§
§protocol_version: Version
The Cyphal protocol version implemented on this node, both major and minor. Not to be changed while the node is running.
uavcan.node.Version.1.0
Always aligned, size 16 bits
hardware_version: Version
uavcan.node.Version.1.0
Always aligned, size 16 bits
software_version: Version
The version information shall not be changed while the node is running. The correct hardware version shall be reported at all times, excepting software-only nodes, in which case it should be set to zeros. If the node is equipped with a Cyphal-capable bootloader, the bootloader should report the software version of the installed application, if there is any; if no application is found, zeros should be reported.
uavcan.node.Version.1.0
Always aligned, size 16 bits
software_vcs_revision_id: u64
A version control system (VCS) revision number or hash. Not to be changed while the node is running. For example, this field can be used for reporting the short git commit hash of the current software revision. Set to zero if not used.
saturated uint64
Always aligned, size 64 bits
unique_id: [u8; 16]
The unique-ID (UID) is a 128-bit long sequence that is likely to be globally unique per node. The vendor shall ensure that the probability of a collision with any other node UID globally is negligibly low. UID is defined once per hardware unit and should never be changed. All zeros is not a valid UID. If the node is equipped with a Cyphal-capable bootloader, the bootloader shall use the same UID. Manual serialization note: only fixed-size fields up to this point. The following fields are dynamically sized.
saturated uint8[16]
Always aligned, size 128 bits
name: Vec<u8, 50>
Human-readable non-empty ASCII node name. An empty name is not permitted. The name shall not be changed while the node is running. Allowed characters are: a-z (lowercase ASCII letters) 0-9 (decimal digits) . (dot) - (dash) _ (underscore). Node name is a reversed Internet domain name (like Java packages), e.g. “com.manufacturer.project.product”.
saturated uint8[<=50]
Always aligned, size ranges from 0 to 400 bits
software_image_crc: Vec<u64, 1>
The value of an arbitrary hash function applied to the software image. Not to be changed while the node is running. This field can be used to detect whether the software or firmware running on the node is an exact same version as a certain specific revision. This field provides a very strong identity guarantee, unlike the version fields above, which can be the same for different builds of the software. As can be seen from its definition, this field is optional.
The exact hash function and the methods of its application are implementation-defined. However, implementations are recommended to adhere to the following guidelines, fully or partially:
- The hash function should be CRC-64-WE.
- The hash function should be applied to the entire application image padded to 8 bytes.
- If the computed image CRC is stored within the software image itself, the value of the hash function becomes ill-defined, because it becomes recursively dependent on itself. In order to circumvent this issue, while computing or checking the CRC, its value stored within the image should be zeroed out.
saturated uint64[<=1]
Always aligned, size ranges from 0 to 64 bits
certificate_of_authenticity: Vec<u8, 222>
The certificate of authenticity (COA) of the node, 222 bytes max, optional. This field can be used for reporting digital signatures (e.g., RSA-1776, or ECDSA if a higher degree of cryptographic strength is desired). Leave empty if not used. Not to be changed while the node is running. At most five CAN FD frames
saturated uint8[<=222]
Always aligned, size ranges from 0 to 1776 bits
Trait Implementations§
source§impl DataType for GetInfoResponse
impl DataType for GetInfoResponse
source§const EXTENT_BYTES: Option<u32> = _
const EXTENT_BYTES: Option<u32> = _
This type is delimited with an extent of 448 bytes.
source§impl Deserialize for GetInfoResponse
impl Deserialize for GetInfoResponse
source§fn deserialize(cursor: &mut ReadCursor<'_>) -> Result<Self, DeserializeError>where
Self: Sized,
fn deserialize(cursor: &mut ReadCursor<'_>) -> Result<Self, DeserializeError>where Self: Sized,
source§fn deserialize_from_bytes(bytes: &[u8]) -> Result<Self, DeserializeError>where
Self: Sized,
fn deserialize_from_bytes(bytes: &[u8]) -> Result<Self, DeserializeError>where Self: Sized,
deserialize
source§impl Serialize for GetInfoResponse
impl Serialize for GetInfoResponse
source§fn size_bits(&self) -> usize
fn size_bits(&self) -> usize
source§fn serialize(&self, cursor: &mut WriteCursor<'_>)
fn serialize(&self, cursor: &mut WriteCursor<'_>)
source§fn serialize_to_bytes(&self, bytes: &mut [u8])
fn serialize_to_bytes(&self, bytes: &mut [u8])
serialize