Struct canadensis_data_types::uavcan::pnp::cluster::discovery_1_0::Discovery
source · pub struct Discovery {
pub configured_cluster_size: u8,
pub known_nodes: Vec<ID, 5>,
}
Expand description
uavcan.pnp.cluster.Discovery.1.0
Size ranges from 2 to 12 bytes
This message is used by redundant allocators to find each other’s node-ID. Please refer to the type AppendEntries for details.
An allocator should stop publishing this message as soon as it has discovered all other allocators in the cluster.
An exception applies: when an allocator receives a Discovery message where the list of known nodes is incomplete (i.e. len(known_nodes) < configured_cluster_size), it shall publish a Discovery message once. This condition allows other allocators to quickly re-discover the cluster after a restart.
Fields§
§configured_cluster_size: u8
The number of allocators in the cluster as configured on the sender. This value shall be the same across all allocators.
saturated uint3
Always aligned, size 3 bits
known_nodes: Vec<ID, 5>
Node-IDs of the allocators that are known to the publishing allocator, including the publishing allocator itself.
uavcan.node.ID.1.0[<=5]
Always aligned, size ranges from 0 to 80 bits
Implementations§
source§impl Discovery
impl Discovery
sourcepub const BROADCASTING_PERIOD: u8 = 1u8
pub const BROADCASTING_PERIOD: u8 = 1u8
[second] This message should be broadcasted by the allocator at this interval until all other allocators are discovered.
sourcepub const MAX_CLUSTER_SIZE: u8 = 5u8
pub const MAX_CLUSTER_SIZE: u8 = 5u8
The redundant allocator cluster cannot contain more than 5 allocators.
Trait Implementations§
source§impl DataType for Discovery
impl DataType for Discovery
source§const EXTENT_BYTES: Option<u32> = _
const EXTENT_BYTES: Option<u32> = _
This type is delimited with an extent of 96 bytes.
source§impl Deserialize for Discovery
impl Deserialize for Discovery
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 Discovery
impl Serialize for Discovery
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