<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Problem with Cluster global attributes, in particular &amp;quot;ClusterRevision attribute&amp;quot; [URGENT]</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/57039/problem-with-cluster-global-attributes-in-particular-clusterrevision-attribute-urgent</link><description>Hello to all, 
 I have a problem related to the client side Global Attribute: I have implemented an &amp;quot;On / Off Switch&amp;quot; that presents the cluster On / Off (0x0006), client side. I&amp;#39;m using the nRF SDK for Zigbee and Thread 3.0.0. 
 From specification it</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 07 Feb 2020 10:15:34 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/57039/problem-with-cluster-global-attributes-in-particular-clusterrevision-attribute-urgent" /><item><title>RE: Problem with Cluster global attributes, in particular "ClusterRevision attribute" [URGENT]</title><link>https://devzone.nordicsemi.com/thread/233222?ContentTypeID=1</link><pubDate>Fri, 07 Feb 2020 10:15:34 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a222adb2-cd3c-451f-9e62-214a66856a72</guid><dc:creator>Raffaela</dc:creator><description>&lt;p&gt;Hi Edvin,&lt;/p&gt;
&lt;p&gt;Perfect!!! I implement this approach.&lt;/p&gt;
&lt;p&gt;Thank you a lot for your time!&lt;/p&gt;
&lt;p&gt;Have a good day,&lt;/p&gt;
&lt;p&gt;Raffaela&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Problem with Cluster global attributes, in particular "ClusterRevision attribute" [URGENT]</title><link>https://devzone.nordicsemi.com/thread/233221?ContentTypeID=1</link><pubDate>Fri, 07 Feb 2020 10:06:46 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:36597390-d7de-49fd-8dea-e26494dbaf3f</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;Sorry for the late reply. I wanted someone from our Zigbee team to have a look. He said that this approach looks good. He also did some tests himself, and this is what he did:&lt;/p&gt;
&lt;p&gt;Changes to main.c (light switch example):&lt;/p&gt;
&lt;p&gt;-Added define so I can declare an empty attribute list.&lt;/p&gt;
&lt;p&gt;-Pass declared empty attribute list to the ZB_HA_DECLARE_DIMMER_SWITCH_CLUSTER_LIST (which has been modified to take my empty attr list).&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#define ZB_ZCL_DECLARE_EMPTY_ATTRIB_LIST(attr_list)     \
            ZB_ZCL_START_DECLARE_ATTRIB_LIST(attr_list) \
            ZB_ZCL_FINISH_DECLARE_ATTRIB_LIST

 

ZB_ZCL_DECLARE_EMPTY_ATTRIB_LIST(on_off_empty_attr_list);

 

/* Declare cluster list for Dimmer Switch device (Identify, Basic, Scenes, Groups, On Off, Level Control). */
/* Only clusters Identify and Basic have attributes. */
ZB_HA_DECLARE_DIMMER_SWITCH_CLUSTER_LIST(dimmer_switch_clusters,
                                         basic_attr_list,
                                         identify_attr_list,
                                         on_off_empty_attr_list);&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;So, zb_ha_dimmer_switch.h:&lt;/p&gt;
&lt;p&gt;-changed macro so that it takes one additional argument.&lt;/p&gt;
&lt;p&gt;-added an empty attr list to on_off_cluster_desc&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#define ZB_HA_DECLARE_DIMMER_SWITCH_CLUSTER_LIST(                   \
 cluster_list_name,                                                 \
 basic_attr_list,                                                   \
 identify_attr_list,                                                \
 on_off_empty_attr_list)                                            \
 
...


ZB_ZCL_CLUSTER_DESC(                                                \
 ZB_ZCL_CLUSTER_ID_ON_OFF,                                          \
 ZB_ZCL_ARRAY_SIZE(on_off_empty_attr_list, zb_zcl_attr_t),          \
 (on_off_empty_attr_list),                                          \
 ZB_ZCL_CLUSTER_CLIENT_ROLE,                                        \
 ZB_ZCL_MANUF_CODE_INVALID                                          \
 ), &lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Problem with Cluster global attributes, in particular "ClusterRevision attribute" [URGENT]</title><link>https://devzone.nordicsemi.com/thread/232256?ContentTypeID=1</link><pubDate>Mon, 03 Feb 2020 08:50:48 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b33102b8-742e-4b44-8057-0b5772fe9f84</guid><dc:creator>Raffaela</dc:creator><description>&lt;p&gt;Hi Edvin,&lt;/p&gt;
&lt;p&gt;Have you any news about this topic?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Thank you,&lt;/p&gt;
&lt;p&gt;Raffaela&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Problem with Cluster global attributes, in particular "ClusterRevision attribute" [URGENT]</title><link>https://devzone.nordicsemi.com/thread/231428?ContentTypeID=1</link><pubDate>Tue, 28 Jan 2020 13:45:41 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d204880f-9a1e-4123-9811-9dfdf376533c</guid><dc:creator>Raffaela</dc:creator><description>&lt;p&gt;Hi Edvin,&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;I have implemented a possible wordkaround for the ClusterRevision problem on clusters that are &lt;strong&gt;client side&lt;/strong&gt; and therefore do not have the macro &amp;quot;&lt;strong&gt;ZB_ZCL_START_DECLARE_ATTRIB_LIST (attr_list)&lt;/strong&gt;&amp;quot;. I am attaching the code I modified to get feedback and if I am actually following the right path in order to show the reading of this cluster.&lt;br /&gt;Specifically, I am implementing an &amp;quot;On / Off Switch&amp;quot; device so I modified &amp;quot;zb_ha_on_off_switch.h&amp;quot; and &amp;quot;zb_zcl_on_off.h&amp;quot;.&lt;/p&gt;
&lt;p&gt;From &amp;quot;&lt;span&gt;zb_ha_on_off_switch.h&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;#define ZB_HA_DECLARE_ON_OFF_SWITCH_CLUSTER_LIST(                           \
      cluster_list_name,                                                    \
      on_off_attr_list,                                                     \
      on_off_switch_config_attr_list,                                       \
      basic_attr_list,                                                      \
      identify_attr_list)                                                   \
      zb_zcl_cluster_desc_t cluster_list_name[] =                           \
      {                                                                     \
        ZB_ZCL_CLUSTER_DESC(                                                \
          ZB_ZCL_CLUSTER_ID_ON_OFF_SWITCH_CONFIG,                           \
          ZB_ZCL_ARRAY_SIZE(on_off_switch_config_attr_list, zb_zcl_attr_t), \
          (on_off_switch_config_attr_list),                                 \
          ZB_ZCL_CLUSTER_SERVER_ROLE,                                       \
          ZB_ZCL_MANUF_CODE_INVALID                                         \
        ),                                                                  \
        ZB_ZCL_CLUSTER_DESC(                                                \
          ZB_ZCL_CLUSTER_ID_IDENTIFY,                                       \
          ZB_ZCL_ARRAY_SIZE(identify_attr_list, zb_zcl_attr_t),             \
          (identify_attr_list),                                             \
          ZB_ZCL_CLUSTER_SERVER_ROLE,                                        \
          ZB_ZCL_MANUF_CODE_INVALID                                         \
        ),                                                                  \
        ZB_ZCL_CLUSTER_DESC(                                                \
          ZB_ZCL_CLUSTER_ID_BASIC,                                          \
          ZB_ZCL_ARRAY_SIZE(basic_attr_list, zb_zcl_attr_t),                \
          (basic_attr_list),                                                \
          ZB_ZCL_CLUSTER_SERVER_ROLE,                                       \
          ZB_ZCL_MANUF_CODE_INVALID                                         \
        ),                                                                  \
        ZB_ZCL_CLUSTER_DESC(                                                \
          ZB_ZCL_CLUSTER_ID_ON_OFF,                                         \
          ZB_ZCL_ARRAY_SIZE(on_off_attr_list, zb_zcl_attr_t),               \
          (on_off_attr_list),                                               \
          ZB_ZCL_CLUSTER_CLIENT_ROLE,                                       \
          ZB_ZCL_MANUF_CODE_INVALID                                         \
        ),                                                                  \
        ZB_ZCL_CLUSTER_DESC(                                                \
          ZB_ZCL_CLUSTER_ID_SCENES,                                         \
          0,                                                                \
          NULL,                                                             \
          ZB_ZCL_CLUSTER_CLIENT_ROLE,                                       \
          ZB_ZCL_MANUF_CODE_INVALID                                         \
        ),                                                                  \
        ZB_ZCL_CLUSTER_DESC(                                            \
          ZB_ZCL_CLUSTER_ID_IDENTIFY,                                       \
          0,                                                                \
          NULL,                                                             \
          ZB_ZCL_CLUSTER_CLIENT_ROLE,                                       \
          ZB_ZCL_MANUF_CODE_INVALID                                         \
        ),                                                              \
        ZB_ZCL_CLUSTER_DESC(                                                \
          ZB_ZCL_CLUSTER_ID_GROUPS,                                         \
          0,                                                                \
          NULL,                                                             \
          ZB_ZCL_CLUSTER_CLIENT_ROLE,                                       \
          ZB_ZCL_MANUF_CODE_INVALID                                         \
        )                                                                   \
    }

&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;From &amp;quot;&lt;/span&gt;&lt;span&gt;zb_ha_on_off_switch.h&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;/** @brief Declare attribute list for On/Off cluster
    @param attr_list - attribure list name
    @param on_off - pointer to variable to store On/Off attribute value
*/
#define ZB_ZCL_DECLARE_ON_OFF_ATTRIB_LIST(attr_list, on_off)            \
  ZB_ZCL_START_DECLARE_ATTRIB_LIST(attr_list)                           \
  ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_ON_OFF_ON_OFF_ID, (on_off))          \
  ZB_ZCL_FINISH_DECLARE_ATTRIB_LIST

#define ZB_ZCL_DECLARE_EMPTY_ATTRIB_LIST(attr_list)  \ 
        ZB_ZCL_START_DECLARE_ATTRIB_LIST(attr_list)  \
        ZB_ZCL_FINISH_DECLARE_ATTRIB_LIST
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;If you need more informations, ask me.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Thank you and best regards,&lt;/p&gt;
&lt;p&gt;Raffaela&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Problem with Cluster global attributes, in particular "ClusterRevision attribute" [URGENT]</title><link>https://devzone.nordicsemi.com/thread/231384?ContentTypeID=1</link><pubDate>Tue, 28 Jan 2020 11:50:43 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1ccf3261-8acb-4c24-9488-a7e6b51220ea</guid><dc:creator>Raffaela</dc:creator><description>&lt;p&gt;Hi Edvin,&lt;/p&gt;
&lt;p&gt;I found this in the release note of SDK 3.0.0 for Zigbee. That was present in the infocenter, in the introduction, and in the SDK.&lt;/p&gt;
&lt;p&gt;Thank you,&lt;/p&gt;
&lt;p&gt;Raffaela&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Problem with Cluster global attributes, in particular "ClusterRevision attribute" [URGENT]</title><link>https://devzone.nordicsemi.com/thread/231382?ContentTypeID=1</link><pubDate>Tue, 28 Jan 2020 11:48:19 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:094ce7cd-884c-431d-8c99-ee4d3de99514</guid><dc:creator>Edvin</dc:creator><description>&lt;p&gt;Hello Raffaela,&lt;/p&gt;
&lt;p&gt;Where did you find this part? Is that from our SDK, from infocenter, or elsewhere?&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Problem with Cluster global attributes, in particular "ClusterRevision attribute" [URGENT]</title><link>https://devzone.nordicsemi.com/thread/231373?ContentTypeID=1</link><pubDate>Tue, 28 Jan 2020 11:31:40 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:70202773-62a9-4b4c-9ea9-b426a1397069</guid><dc:creator>Raffaela</dc:creator><description>&lt;p&gt;Hi to everyone,&lt;/p&gt;
&lt;p&gt;I found&amp;nbsp;that this problem is known and there is a workaround how to resolve this issue but I don&amp;#39;t understand where insert this code: is it possible to have a example?&lt;/p&gt;
&lt;p&gt;I attached the part that I found:&lt;/p&gt;
&lt;pre class="fragment"&gt;&lt;span&gt;- ZCL: There is an issue with reading GLOBAL_CLUSTER_REVISION (0xfffd) attribute on the clusters that do not have list of attributes. Read Attributes Response command will
                     contain UNSUPPORTED_ATTRIBUTE status for such type of clusters. Possible workaround: declare empty attribute list for this cluster and pass it into the cluster list
                     declaration (instead of 0-NULL declaration):
                     #define ZB_ZCL_DECLARE_EMPTY_ATTRIB_LIST(attr_list)  \  
                             ZB_ZCL_START_DECLARE_ATTRIB_LIST(attr_list)  \
                             ZB_ZCL_FINISH_DECLARE_ATTRIB_LIST&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Thank you for your help.&lt;br /&gt;&lt;br /&gt;BR,&lt;br /&gt;Raffaela&lt;/pre&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Problem with Cluster global attributes, in particular "ClusterRevision attribute" [URGENT]</title><link>https://devzone.nordicsemi.com/thread/231240?ContentTypeID=1</link><pubDate>Mon, 27 Jan 2020 16:19:28 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4d0b8120-6ca9-497e-95b1-8f3e478f8fda</guid><dc:creator>Raffaela</dc:creator><description>&lt;p&gt;Hello to all,&lt;/p&gt;
&lt;p&gt;I would like to complete the post based on the tests I did: changing the code of the &amp;quot;zb_ha_on_off_switch.h&amp;quot; file and inserting the call to the attribute list, then the ClusterRevision is seen and the device responds correctly to the request to read the cluster.&lt;/p&gt;
&lt;p&gt;So I would say that the problem is that this attribute is not currently present in the &amp;quot;On / Off Switch&amp;quot; device.&lt;/p&gt;
&lt;p&gt;I don&amp;#39;t know if this can help to understand how I have to intervene to have the attribute also on the client side; I also attach the code of the file &amp;quot;&lt;span&gt;zb_ha_on_off_switch.h&lt;/span&gt;&amp;quot;.&lt;pre class="ui-code" data-mode="text"&gt;/* ZBOSS Zigbee 3.0
 *
 * Copyright (c) 2012-2018 DSR Corporation, Denver CO, USA.
 * http://www.dsr-zboss.com
 * http://www.dsr-corporation.com
 * All rights reserved.
 *
 *
 * Use in source and binary forms, redistribution in binary form only, with
 * or without modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions in binary form, except as embedded into a Nordic
 *    Semiconductor ASA integrated circuit in a product or a software update for
 *    such product, must reproduce the above copyright notice, this list of
 *    conditions and the following disclaimer in the documentation and/or other
 *    materials provided with the distribution.
 *
 * 2. Neither the name of Nordic Semiconductor ASA nor the names of its
 *    contributors may be used to endorse or promote products derived from this
 *    software without specific prior written permission.
 *
 * 3. This software, with or without modification, must only be used with a Nordic
 *    Semiconductor ASA integrated circuit.
 *
 * 4. Any software provided in binary form under this license must not be reverse
 *    engineered, decompiled, modified and/or disassembled.
 *
 * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA &amp;quot;AS IS&amp;quot; AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PURPOSE: On/off switch device definition
*/
#ifndef ZB_HA_ON_OFF_SWITCH_H
#define ZB_HA_ON_OFF_SWITCH_H 1

/**
 *  @defgroup ha_on_off_switch On/Off Switch
 *  @ingroup ZB_HA_DEVICES
    @{
    @details
    On Off Switch device has 6 clusters (see spec 7.4.1): \n
        - @ref ZB_ZCL_IDENTIFY \n
        - @ref ZB_ZCL_BASIC \n
        - @ref ZB_ZCL_OOSC \n
        - @ref ZB_ZCL_ON_OFF \n
        - @ref ZB_ZCL_SCENES \n
        - @ref ZB_ZCL_GROUPS

    On Off Switch device sample

    @par Example
    Declaring clusters
    @snippet ha_on_off_switch_sample.c COMMON_DECLARATION
    Registering device list
    @snippet ha_on_off_switch_sample.c REGISTER
    Example of command handler
    @snippet ha_on_off_switch_sample.c VARIABLE
    @snippet ha_on_off_switch_sample.c HANDLER
    @par

    See ha/devices_generic sample
*/

/** @cond internals_doc */
#define ZB_HA_DEVICE_VER_ON_OFF_SWITCH 0  /*!&amp;lt; On/Off Switch device version */

#define ZB_HA_ON_OFF_SWITCH_IN_CLUSTER_NUM 3  /*!&amp;lt; On/Off switch IN clusters number */
#define ZB_HA_ON_OFF_SWITCH_OUT_CLUSTER_NUM 4 /*!&amp;lt; On/Off switch OUT clusters number */

#define ZB_HA_ON_OFF_SWITCH_CLUSTER_NUM                                      \
  (ZB_HA_ON_OFF_SWITCH_IN_CLUSTER_NUM + ZB_HA_ON_OFF_SWITCH_OUT_CLUSTER_NUM)

/*! Number of attribute for reporting on On/Off switch device */
#define ZB_HA_ON_OFF_SWITCH_REPORT_ATTR_COUNT \
  (ZB_ZCL_ON_OFF_SWITCH_CONFIG_REPORT_ATTR_COUNT)

/** @endcond */

/** @brief Declare cluster list for On/Off switch device
    @param cluster_list_name - cluster list variable name
    @param on_off_switch_config_attr_list - attribute list for On/off switch configuration cluster
    @param basic_attr_list - attribute list for Basic cluster
    @param identify_attr_list - attribute list for Identify cluster
 */
#define ZB_HA_DECLARE_ON_OFF_SWITCH_CLUSTER_LIST(                           \
      cluster_list_name,                                                    \
      on_off_attr_list,                                                     \
      on_off_switch_config_attr_list,                                       \
      basic_attr_list,                                                      \
      identify_attr_list)                                                   \
      zb_zcl_cluster_desc_t cluster_list_name[] =                           \
      {                                                                     \
        ZB_ZCL_CLUSTER_DESC(                                                \
          ZB_ZCL_CLUSTER_ID_ON_OFF_SWITCH_CONFIG,                           \
          ZB_ZCL_ARRAY_SIZE(on_off_switch_config_attr_list, zb_zcl_attr_t), \
          (on_off_switch_config_attr_list),                                 \
          ZB_ZCL_CLUSTER_SERVER_ROLE,                                       \
          ZB_ZCL_MANUF_CODE_INVALID                                         \
        ),                                                                  \
        ZB_ZCL_CLUSTER_DESC(                                                \
          ZB_ZCL_CLUSTER_ID_IDENTIFY,                                       \
          ZB_ZCL_ARRAY_SIZE(identify_attr_list, zb_zcl_attr_t),             \
          (identify_attr_list),                                             \
          ZB_ZCL_CLUSTER_SERVER_ROLE,                                        \
          ZB_ZCL_MANUF_CODE_INVALID                                         \
        ),                                                                  \
        ZB_ZCL_CLUSTER_DESC(                                                \
          ZB_ZCL_CLUSTER_ID_BASIC,                                          \
          ZB_ZCL_ARRAY_SIZE(basic_attr_list, zb_zcl_attr_t),                \
          (basic_attr_list),                                                \
          ZB_ZCL_CLUSTER_SERVER_ROLE,                                       \
          ZB_ZCL_MANUF_CODE_INVALID                                         \
        ),                                                                  \
        ZB_ZCL_CLUSTER_DESC(                                                \
          ZB_ZCL_CLUSTER_ID_ON_OFF,                                         \
          ZB_ZCL_ARRAY_SIZE(on_off_attr_list, zb_zcl_attr_t),               \
          (on_off_attr_list),                                               \
          ZB_ZCL_CLUSTER_CLIENT_ROLE,                                       \
          ZB_ZCL_MANUF_CODE_INVALID                                         \
        ),                                                                  \
        ZB_ZCL_CLUSTER_DESC(                                                \
          ZB_ZCL_CLUSTER_ID_SCENES,                                         \
          0,                                                                \
          NULL,                                                             \
          ZB_ZCL_CLUSTER_CLIENT_ROLE,                                       \
          ZB_ZCL_MANUF_CODE_INVALID                                         \
        ),                                                                  \
        ZB_ZCL_CLUSTER_DESC(                                            \
          ZB_ZCL_CLUSTER_ID_IDENTIFY,                                       \
          0,                                                                \
          NULL,                                                             \
          ZB_ZCL_CLUSTER_CLIENT_ROLE,                                       \
          ZB_ZCL_MANUF_CODE_INVALID                                         \
        ),                                                              \
        ZB_ZCL_CLUSTER_DESC(                                                \
          ZB_ZCL_CLUSTER_ID_GROUPS,                                         \
          0,                                                                \
          NULL,                                                             \
          ZB_ZCL_CLUSTER_CLIENT_ROLE,                                       \
          ZB_ZCL_MANUF_CODE_INVALID                                         \
        )                                                                   \
    }


/** @cond internals_doc */
/** @brief Declare simple descriptor for On/Off switch device
    @param ep_name - endpoint variable name
    @param ep_id - endpoint ID
    @param in_clust_num - number of supported input clusters
    @param out_clust_num - number of supported output clusters
    @note in_clust_num, out_clust_num should be defined by numeric constants, not variables or any
    definitions, because these values are used to form simple descriptor type name
*/
#define ZB_ZCL_DECLARE_ON_OFF_SWITCH_SIMPLE_DESC(ep_name, ep_id, in_clust_num, out_clust_num) \
  ZB_DECLARE_SIMPLE_DESC(in_clust_num, out_clust_num);                                        \
  ZB_AF_SIMPLE_DESC_TYPE(in_clust_num, out_clust_num) simple_desc_##ep_name =                 \
  {                                                                                           \
    ep_id,                                                                                    \
    ZB_AF_HA_PROFILE_ID,                                                                      \
    ZB_HA_ON_OFF_SWITCH_DEVICE_ID,                                                            \
    ZB_HA_DEVICE_VER_ON_OFF_SWITCH,                                                           \
    0,                                                                                        \
    in_clust_num,                                                                             \
    out_clust_num,                                                                            \
    {                                                                                         \
      ZB_ZCL_CLUSTER_ID_BASIC,                                                                \
      ZB_ZCL_CLUSTER_ID_IDENTIFY,                                                             \
      ZB_ZCL_CLUSTER_ID_ON_OFF_SWITCH_CONFIG,                                                 \
      ZB_ZCL_CLUSTER_ID_ON_OFF,                                                               \
      ZB_ZCL_CLUSTER_ID_SCENES,                                                               \
      ZB_ZCL_CLUSTER_ID_GROUPS,                                         \
      ZB_ZCL_CLUSTER_ID_IDENTIFY,                                       \
    }                                                                                         \
  }

/** @endcond */

/** @brief Declare endpoint for On/off Switch device
    @param ep_name - endpoint variable name
    @param ep_id - endpoint ID
    @param cluster_list - endpoint cluster list
 */
#define ZB_HA_DECLARE_ON_OFF_SWITCH_EP(ep_name, ep_id, cluster_list) \
  ZB_ZCL_DECLARE_ON_OFF_SWITCH_SIMPLE_DESC(                          \
      ep_name,                                                       \
      ep_id,                                                         \
      ZB_HA_ON_OFF_SWITCH_IN_CLUSTER_NUM,                            \
      ZB_HA_ON_OFF_SWITCH_OUT_CLUSTER_NUM);                          \
  ZB_AF_DECLARE_ENDPOINT_DESC(ep_name,                               \
                              ep_id,                                 \
      ZB_AF_HA_PROFILE_ID,                                           \
      0,                                                             \
      NULL,                                                          \
      ZB_ZCL_ARRAY_SIZE(cluster_list, zb_zcl_cluster_desc_t),        \
      cluster_list,                                                  \
      (zb_af_simple_desc_1_1_t*)&amp;amp;simple_desc_##ep_name,              \
      0, NULL, /* No reporting ctx */                                \
      0, NULL) /* No CVC ctx */

/** @brief Declare On/Off Switch device context.
    @param device_ctx - device context variable name.
    @param ep_name - endpoint variable name.
*/
#define ZB_HA_DECLARE_ON_OFF_SWITCH_CTX(device_ctx, ep_name) \
  ZBOSS_DECLARE_DEVICE_CTX_1_EP(device_ctx, ep_name)


/*! @} */

#endif /* ZB_HA_ON_OFF_SWITCH_H */
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;I attend your answer and thank you a lot for your time.&lt;/p&gt;
&lt;p&gt;BR,&lt;/p&gt;
&lt;p&gt;Raffaela&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>