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

source§

const EXTENT_BYTES: Option<u32> = _

This type is delimited with an extent of 448 bytes.

source§

impl Deserialize for GetInfoResponse

source§

fn deserialize(cursor: &mut ReadCursor<'_>) -> Result<Self, DeserializeError>where Self: Sized,

Deserializes a value and returns it
source§

fn deserialize_from_bytes(bytes: &[u8]) -> Result<Self, DeserializeError>where Self: Sized,

A convenience function that creates a cursor around the provided bytes and calls deserialize
source§

impl Serialize for GetInfoResponse

source§

fn size_bits(&self) -> usize

Returns the size of the encoded form of this value, in bits Read more
source§

fn serialize(&self, cursor: &mut WriteCursor<'_>)

Serializes this value into a buffer Read more
source§

fn serialize_to_bytes(&self, bytes: &mut [u8])

A convenience function that creates a cursor around the provided bytes and calls serialize
source§

impl Response for GetInfoResponse

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.