diff --git a/code/nrf-connect/samples/zigbee/src/main.c b/code/nrf-connect/samples/zigbee/src/main.c index 1b6b06d..2c06d60 100644 --- a/code/nrf-connect/samples/zigbee/src/main.c +++ b/code/nrf-connect/samples/zigbee/src/main.c @@ -11,6 +11,7 @@ #include #include +#include #include #include #include @@ -51,10 +52,12 @@ LOG_MODULE_REGISTER(app, LOG_LEVEL_INF); /* Main application customizable context. * Stores all settings and static values. */ + struct zb_device_ctx { zb_zcl_basic_attrs_ext_t basic_attr; zb_zcl_identify_attrs_t identify_attr; zb_zcl_temp_measurement_attrs_t temp_measure_attrs; + prst_rel_humidity_attrs_t rel_humidity_attrs; }; /* Zigbee device application context storage. */ @@ -84,11 +87,18 @@ ZB_ZCL_DECLARE_TEMP_MEASUREMENT_ATTRIB_LIST(temp_measurement_attr_list, &dev_ctx.temp_measure_attrs.max_measure_value, &dev_ctx.temp_measure_attrs.tolerance); +ZB_ZCL_DECLARE_REL_HUMIDITY_MEASUREMENT_ATTRIB_LIST( + rel_humi_attr_list, + &dev_ctx.rel_humidity_attrs.rel_humidity, + &dev_ctx.rel_humidity_attrs.min_val, + &dev_ctx.rel_humidity_attrs.max_val); + ZB_DECLARE_RANGE_EXTENDER_CLUSTER_LIST( app_template_clusters, basic_attr_list, identify_attr_list, - temp_measurement_attr_list); + temp_measurement_attr_list, + rel_humi_attr_list); ZB_DECLARE_RANGE_EXTENDER_EP( app_template_ep, @@ -120,6 +130,11 @@ static void app_clusters_attr_init(void) { ZB_ZCL_CLUSTER_SERVER_ROLE, ZB_ZCL_ATTR_TEMP_MEASUREMENT_VALUE_ID, (zb_uint8_t*)&temperature_value, ZB_FALSE); + static zb_int16_t rel_humidity = 3 * (UINT16_MAX / 4); + zb_zcl_set_attr_val(APP_TEMPLATE_ENDPOINT, ZB_ZCL_CLUSTER_ID_REL_HUMIDITY_MEASUREMENT, + ZB_ZCL_CLUSTER_SERVER_ROLE, ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_VALUE_ID, + (zb_uint8_t*)&rel_humidity, ZB_FALSE); + /* Identify cluster attributes data. */ dev_ctx.identify_attr.identify_time = ZB_ZCL_IDENTIFY_IDENTIFY_TIME_DEFAULT_VALUE; diff --git a/code/nrf-connect/samples/zigbee/src/zb_range_extender.h b/code/nrf-connect/samples/zigbee/src/zb_range_extender.h index 58b9013..6ebf33e 100644 --- a/code/nrf-connect/samples/zigbee/src/zb_range_extender.h +++ b/code/nrf-connect/samples/zigbee/src/zb_range_extender.h @@ -24,7 +24,7 @@ /** @cond internals_doc */ /** Range extender IN (server) clusters number */ -#define ZB_RANGE_EXTENDER_IN_CLUSTER_NUM 3 +#define ZB_RANGE_EXTENDER_IN_CLUSTER_NUM 4 /** Range extender OUT (client) clusters number */ #define ZB_RANGE_EXTENDER_OUT_CLUSTER_NUM 0 @@ -37,13 +37,16 @@ typedef struct { zb_uint16_t rel_humidity; -} prst_rel_humidity_t; + zb_uint16_t min_val; + zb_uint16_t max_val; +} prst_rel_humidity_attrs_t; #define ZB_DECLARE_RANGE_EXTENDER_CLUSTER_LIST( \ cluster_list_name, \ basic_attr_list, \ identify_attr_list, \ - temp_measurement_attr_list) \ + temp_measurement_attr_list, \ + rel_humidity_attr_list) \ zb_zcl_cluster_desc_t cluster_list_name[] = \ { \ ZB_ZCL_CLUSTER_DESC( \ @@ -63,6 +66,12 @@ typedef struct { ZB_ZCL_ARRAY_SIZE(temp_measurement_attr_list, zb_zcl_attr_t), \ (temp_measurement_attr_list), \ ZB_ZCL_CLUSTER_SERVER_ROLE, \ + ZB_ZCL_MANUF_CODE_INVALID), \ + ZB_ZCL_CLUSTER_DESC( \ + ZB_ZCL_CLUSTER_ID_REL_HUMIDITY_MEASUREMENT, \ + ZB_ZCL_ARRAY_SIZE(rel_humidity_attr_list, zb_zcl_attr_t), \ + (rel_humi_attr_list), \ + ZB_ZCL_CLUSTER_SERVER_ROLE, \ ZB_ZCL_MANUF_CODE_INVALID)} /** @cond internals_doc */ @@ -87,7 +96,9 @@ typedef struct { in_clust_num, \ out_clust_num, \ {ZB_ZCL_CLUSTER_ID_BASIC, \ - ZB_ZCL_CLUSTER_ID_IDENTIFY, ZB_ZCL_CLUSTER_ID_TEMP_MEASUREMENT}} + ZB_ZCL_CLUSTER_ID_IDENTIFY, \ + ZB_ZCL_CLUSTER_ID_TEMP_MEASUREMENT, \ + ZB_ZCL_CLUSTER_ID_REL_HUMIDITY_MEASUREMENT}} /** @endcond */ /* internals_doc */