Unify Framework Lib 1.7.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules
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