113 lines
3.6 KiB
C
113 lines
3.6 KiB
C
/*
|
|
* Copyright (c) 2022 Nordic Semiconductor ASA
|
|
*
|
|
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
|
|
*/
|
|
|
|
#ifndef ZB_RANGE_EXTENDER_H
|
|
#define ZB_RANGE_EXTENDER_H 1
|
|
|
|
/**
|
|
* @defgroup ZB_DEFINE_DEVICE_RANGE_EXTENDER Range Extender
|
|
* @{
|
|
* @details
|
|
* - @ref ZB_ZCL_IDENTIFY \n
|
|
* - @ref ZB_ZCL_BASIC
|
|
*/
|
|
|
|
/** Range Extender Device ID*/
|
|
#define ZB_RANGE_EXTENDER_DEVICE_ID 0x0008
|
|
|
|
/** Range extender device version */
|
|
#define ZB_DEVICE_VER_RANGE_EXTENDER 0
|
|
|
|
/** @cond internals_doc */
|
|
|
|
/** Range extender IN (server) clusters number */
|
|
#define ZB_RANGE_EXTENDER_IN_CLUSTER_NUM 2
|
|
|
|
/** Range extender OUT (client) clusters number */
|
|
#define ZB_RANGE_EXTENDER_OUT_CLUSTER_NUM 0
|
|
|
|
#define ZB_RANGE_EXTENDER_CLUSTER_NUM \
|
|
(ZB_RANGE_EXTENDER_IN_CLUSTER_NUM + ZB_RANGE_EXTENDER_OUT_CLUSTER_NUM)
|
|
|
|
/** Number of attribute for reporting on Range extender device */
|
|
#define ZB_RANGE_EXTENDER_REPORT_ATTR_COUNT 0
|
|
|
|
/** @endcond */ /* internals_doc */
|
|
|
|
/**
|
|
* @brief Declare cluster list for Range extender device
|
|
* @param cluster_list_name - cluster list variable name
|
|
* @param basic_attr_list - attribute list for Basic cluster
|
|
* @param identify_attr_list - attribute list for Identify cluster
|
|
*/
|
|
#define ZB_DECLARE_RANGE_EXTENDER_CLUSTER_LIST( \
|
|
cluster_list_name, \
|
|
basic_attr_list, \
|
|
identify_attr_list) \
|
|
zb_zcl_cluster_desc_t cluster_list_name[] = \
|
|
{ \
|
|
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 \
|
|
) \
|
|
}
|
|
|
|
/** @cond internals_doc */
|
|
|
|
/**
|
|
* @brief Declare simple descriptor for Range extender 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
|
|
*/
|
|
#define ZB_ZCL_DECLARE_RANGE_EXTENDER_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_RANGE_EXTENDER_DEVICE_ID, \
|
|
ZB_DEVICE_VER_RANGE_EXTENDER, \
|
|
0, \
|
|
in_clust_num, \
|
|
out_clust_num, \
|
|
{ \
|
|
ZB_ZCL_CLUSTER_ID_BASIC, \
|
|
ZB_ZCL_CLUSTER_ID_IDENTIFY \
|
|
} \
|
|
}
|
|
|
|
/** @endcond */ /* internals_doc */
|
|
|
|
/**
|
|
* @brief Declare endpoint for Range extender device
|
|
* @param ep_name - endpoint variable name
|
|
* @param ep_id - endpoint ID
|
|
* @param cluster_list - endpoint cluster list
|
|
*/
|
|
#define ZB_DECLARE_RANGE_EXTENDER_EP(ep_name, ep_id, cluster_list) \
|
|
ZB_ZCL_DECLARE_RANGE_EXTENDER_SIMPLE_DESC(ep_name, ep_id, \
|
|
ZB_RANGE_EXTENDER_IN_CLUSTER_NUM, ZB_RANGE_EXTENDER_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 *)&simple_desc_##ep_name, \
|
|
0, NULL, /* No reporting ctx */ \
|
|
0, NULL) /* No CVC ctx */
|
|
|
|
/*! @} */
|
|
|
|
#endif /* ZB_RANGE_EXTENDER_H */
|