pub struct Endpoint<'a> {
pub id: u16,
pub device_types: &'a [DeviceType],
pub clusters: &'a [Cluster<'a>],
pub client_clusters: &'a [u32],
pub unique_id: Option<&'a str>,
pub semantic_tags: &'a [SemanticTag<'a>],
}Expand description
A type modeling the endpoint meta-data in the Matter data model.
Fields§
§id: u16The endpoint ID.
device_types: &'a [DeviceType]The list of device types associated with this endpoint.
clusters: &'a [Cluster<'a>]The list of server clusters present on this endpoint. These
are advertised via Descriptor::ServerList and dispatched by
the Handler chain on inbound IM messages.
client_clusters: &'a [u32]The list of client cluster IDs present on this endpoint —
i.e. clusters this endpoint initiates interactions for,
rather than serves. Advertised verbatim via
Descriptor::ClientList so commissioners know which Binding
targets are meaningful for this endpoint. Empty by default;
only meaningful on endpoints whose device type prescribes
client clusters (e.g. OnOffLightSwitch = 0x0103 lists
OnOff as a mandatory client). No Cluster<'a> value is
needed because a client cluster has no attribute/command
surface of its own — see Matter Core spec for the
Descriptor::ClientList semantics.
unique_id: Option<&'a str>The endpoint’s unique ID, advertised via
Descriptor::EndpointUniqueID. None by default.
A manufacturer-assigned string (at most 32 bytes) that identifies this endpoint uniquely within the node, so that machine-to-machine integrations can keep addressing “the same” endpoint even if endpoint IDs get renumbered across software updates or bridge re-compositions.
Populating this also requires the endpoint’s Descriptor metadata to
advertise the optional EndpointUniqueID attribute - see
crate::dm::clusters::desc::CLUSTER_ENDPOINT_UNIQUE_ID.
The semantic tags describing this endpoint, advertised via
Descriptor::TagList. Empty by default.
These are only required when the node exposes several endpoints with
the same device type under one parent: Matter Core spec 9.5 then demands
that each carries a non-empty, mutually distinct TagList so the
endpoints can be told apart. Populating this also requires the endpoint’s
Descriptor metadata to advertise the TagList feature and attribute -
see crate::dm::clusters::desc::CLUSTER_TAG_LIST.
Implementations§
Source§impl<'a> Endpoint<'a>
impl<'a> Endpoint<'a>
Sourcepub const fn new(
id: u16,
device_types: &'a [DeviceType],
clusters: &'a [Cluster<'a>],
) -> Endpoint<'a>
pub const fn new( id: u16, device_types: &'a [DeviceType], clusters: &'a [Cluster<'a>], ) -> Endpoint<'a>
Create a new Endpoint instance with no client clusters.
Use Self::new_with_clients when this endpoint should
advertise client clusters via Descriptor::ClientList.
Sourcepub const fn new_with_clients(
id: u16,
device_types: &'a [DeviceType],
clusters: &'a [Cluster<'a>],
client_clusters: &'a [u32],
) -> Endpoint<'a>
pub const fn new_with_clients( id: u16, device_types: &'a [DeviceType], clusters: &'a [Cluster<'a>], client_clusters: &'a [u32], ) -> Endpoint<'a>
Create a new Endpoint instance that advertises the given
client cluster IDs in addition to its server clusters.
Return this endpoint with the given semantic tags attached, to be
advertised via Descriptor::TagList.
The endpoint’s Descriptor cluster metadata must also advertise the
attribute and feature - use
crate::dm::clusters::desc::CLUSTER_TAG_LIST in place of the default
DescHandler::CLUSTER, otherwise the tags are never reported.
Sourcepub const fn with_unique_id(self, unique_id: &'a str) -> Endpoint<'a>
pub const fn with_unique_id(self, unique_id: &'a str) -> Endpoint<'a>
Return this endpoint with the given unique ID attached, to be
advertised via Descriptor::EndpointUniqueID.
The endpoint’s Descriptor cluster metadata must also advertise the
attribute - use
crate::dm::clusters::desc::CLUSTER_ENDPOINT_UNIQUE_ID in place of
the default DescHandler::CLUSTER, otherwise the ID is never reported.
Trait Implementations§
Auto Trait Implementations§
impl<'a> Freeze for Endpoint<'a>
impl<'a> RefUnwindSafe for Endpoint<'a>
impl<'a> Send for Endpoint<'a>
impl<'a> Sync for Endpoint<'a>
impl<'a> Unpin for Endpoint<'a>
impl<'a> UnsafeUnpin for Endpoint<'a>
impl<'a> UnwindSafe for Endpoint<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more