Zigbee Protocol Controller 1.6.0
Unify Dotdot Attribute Store Group Cluster

Provides group command handling and group membership publications. More...

Functions

bool is_unid_endpoint_in_group (dotdot_unid_t unid, dotdot_endpoint_id_t endpoint_id, uint16_t group_id)
 Helper function indicating if a UNID/Endpoint is part of a group. More...
 
sl_status_t unify_dotdot_attribute_store_group_cluster_init ()
 Initialize the ZCL Group cluster server. More...
 
void publish_group_list_cluster_attribute (attribute_store_node_t endpoint_id_node)
 Publishes the list of groups for an unid/endpoint ucl/by-unid/<unid>/ep<id>/Groups/Attributes/GroupList/Reported ucl/by-unid/<unid>/ep<id>/Groups/Attributes/GroupList/Desired. More...
 
void publish_name_support_cluster_attribute (attribute_store_node_t endpoint_id_node)
 Publishes the Groups NameSupport attribute for an unid/endpoint ucl/by-unid/<unid>/ep<id>/Groups/Attributes/NameSupport/Reported ucl/by-unid/<unid>/ep<id>/Groups/Attributes/NameSupport/Desired. More...
 
void publish_group_cluster_supported_commands (const std::string &unid, dotdot_endpoint_id_t endpoint_id)
 Publishes the Groups SupportedCommands attribute for an unid/endpoint ucl/by-unid/<unid>/ep<id>/Groups/SupportedCommands. More...
 
void publish_group_cluster_cluster_revision (const std::string &unid, dotdot_endpoint_id_t endpoint_id)
 Publishes the Groups Cluster Revision for an unid/endpoint ucl/by-unid/<unid>/ep<id>/Groups/Attributes/ClusterRevision. More...
 
void publish_group_name_cluster_attribute (attribute_store_node_t group_name_node)
 Publishes the Groups Name attribute for an unid/endpoint and Group ID ucl/by-unid/<unid>/ep<id>/Groups/<GroupID>/Name/Reported ucl/by-unid/<unid>/ep<id>/Groups/<GroupID>/Name/Desired

  • The list of commands is static and identical for all unid/endpoints, so no verification will be made and it will just be published as such.
More...
 
void unretain_group_name_publications (const std::string &unid, dotdot_endpoint_id_t endpoint_id, uint16_t group_id)
 Removes the Groups Name attribute publications for an unid/endpoint and Group ID ucl/by-unid/<unid>/ep<id>/Groups/<GroupID>/Name/Reported ucl/by-unid/<unid>/ep<id>/Groups/<GroupID>/Name/Desired. More...
 

Detailed Description

Provides group command handling and group membership publications.

Function Documentation

◆ is_unid_endpoint_in_group()

bool is_unid_endpoint_in_group ( dotdot_unid_t  unid,
dotdot_endpoint_id_t  endpoint_id,
uint16_t  group_id 
)

Helper function indicating if a UNID/Endpoint is part of a group.

Parameters
unidThe UNID of the node to verify
endpoint_idThe endpoint ID of the node to look for.
group_idThe group ID to look for in the unid/endpoint data
Returns
true if the unid/endpoint is part of the GroupID, false otherwise

◆ publish_group_cluster_cluster_revision()

void publish_group_cluster_cluster_revision ( const std::string &  unid,
dotdot_endpoint_id_t  endpoint_id 
)

Publishes the Groups Cluster Revision for an unid/endpoint ucl/by-unid/<unid>/ep<id>/Groups/Attributes/ClusterRevision.

If the passed UNID is the Protocol Controller's unid, no publications will be made.

Parameters
[in]unidUNID to use in the topic
[in]endpoint_idEndpoint ID to use in the topic

◆ publish_group_cluster_supported_commands()

void publish_group_cluster_supported_commands ( const std::string &  unid,
dotdot_endpoint_id_t  endpoint_id 
)

Publishes the Groups SupportedCommands attribute for an unid/endpoint ucl/by-unid/<unid>/ep<id>/Groups/SupportedCommands.

If the passed UNID is the Protocol Controller's unid, no publications will be made.

The list of commands is static and identical for all unid/endpoints, so no verification will be made and it will just be published as such.

Parameters
[in]unidUNID to use in the topic
[in]endpoint_idEndpoint ID to use in the topic

◆ publish_group_list_cluster_attribute()

void publish_group_list_cluster_attribute ( attribute_store_node_t  endpoint_id_node)

Publishes the list of groups for an unid/endpoint ucl/by-unid/<unid>/ep<id>/Groups/Attributes/GroupList/Reported ucl/by-unid/<unid>/ep<id>/Groups/Attributes/GroupList/Desired.

Parameters
endpoint_id_nodeAttribute Store node of the endpoint

◆ publish_group_name_cluster_attribute()

void publish_group_name_cluster_attribute ( attribute_store_node_t  group_name_node)

Publishes the Groups Name attribute for an unid/endpoint and Group ID ucl/by-unid/<unid>/ep<id>/Groups/<GroupID>/Name/Reported ucl/by-unid/<unid>/ep<id>/Groups/<GroupID>/Name/Desired

  • The list of commands is static and identical for all unid/endpoints, so no verification will be made and it will just be published as such.

Parameters
[in]group_name_nodeAttribute Store Node containing the group name string

◆ publish_name_support_cluster_attribute()

void publish_name_support_cluster_attribute ( attribute_store_node_t  endpoint_id_node)

Publishes the Groups NameSupport attribute for an unid/endpoint ucl/by-unid/<unid>/ep<id>/Groups/Attributes/NameSupport/Reported ucl/by-unid/<unid>/ep<id>/Groups/Attributes/NameSupport/Desired.

Parameters
[in]endpoint_id_nodeAttribute Store node of the endpoint

◆ unify_dotdot_attribute_store_group_cluster_init()

sl_status_t unify_dotdot_attribute_store_group_cluster_init ( )

Initialize the ZCL Group cluster server.

It will publish

Returns
SL_STATUS_OK if it worked, any other code otherwise

◆ unretain_group_name_publications()

void unretain_group_name_publications ( const std::string &  unid,
dotdot_endpoint_id_t  endpoint_id,
uint16_t  group_id 
)

Removes the Groups Name attribute publications for an unid/endpoint and Group ID ucl/by-unid/<unid>/ep<id>/Groups/<GroupID>/Name/Reported ucl/by-unid/<unid>/ep<id>/Groups/<GroupID>/Name/Desired.

If the passed UNID is the ZPC's unid, no publications will be made.

The list of commands is static and identical for all unid/endpoints, so no verification will be made and it will just be published as such.

Parameters
[in]unidUNID to use in the topic
[in]endpoint_idEndpoint ID to use in the topic
[in]group_idGroup ID to use in the topic