From: saerome.kim Date: Thu, 23 Aug 2018 07:42:09 +0000 (+0900) Subject: [UTC][capi-network-zigbee][ACR-884][Add UTC for Zigbee APIs] X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f451057bbbd42afcceffa0fadee3b2f20830921e;p=test%2Ftct%2Fnative%2Fapi.git [UTC][capi-network-zigbee][ACR-884][Add UTC for Zigbee APIs] Change-Id: I2d609dadaee4a629746f201f459c35b6aad5dd3e Signed-off-by: saerome.kim --- diff --git a/packaging/utc/core-zigbee-tests.spec b/packaging/utc/core-zigbee-tests.spec new file mode 100644 index 000000000..f4922f604 --- /dev/null +++ b/packaging/utc/core-zigbee-tests.spec @@ -0,0 +1,77 @@ +%define MODULE_NAME zigbee +%define MODULE_LIBNAME capi-network-zigbee +Name: core-%{MODULE_NAME}-tests +Summary: Core API unit TC (%{name}) +Version: 0.1 +Release: 0 +Group: Development/Tools +License: Apache License, Version 2.0 +Source0: %{name}-%{version}.tar.gz +BuildRequires: pkgconfig(%{MODULE_LIBNAME}) +BuildRequires: pkgconfig(glib-2.0) +BuildRequires: cmake +BuildRequires: pkgconfig(capi-appfw-application) +BuildRequires: pkgconfig(elementary) +BuildRequires: pkgconfig(dlog) +BuildRequires: pkgconfig(capi-system-info) + + +%description +Core API unit TC (%{name}) + +%prep +%setup -q + +%build + +%define PREFIX "%{_libdir}/%{name}" + +export LDFLAGS+="-Wl,--rpath=%{PREFIX} -Wl,--as-needed" + +%if %{?ASAN_BUILD:1}0 + %if %{?DEVICE_BUILD_TYPE_MOBILE:1}0 + cmake . -DMODULE="%{MODULE_NAME}" -DBUILDTCTYPE="utc" -DDEVICE_BUILD_TYPE="mobile" -DASANBUILD="true" -DCMAKE_INSTALL_PREFIX=%{_prefix} + %endif + %if %{?DEVICE_BUILD_TYPE_WEARABLE:1}0 + cmake . -DMODULE="%{MODULE_NAME}" -DBUILDTCTYPE="utc" -DDEVICE_BUILD_TYPE="wearable" -DASANBUILD="true" -DCMAKE_INSTALL_PREFIX=%{_prefix} + %endif + %if %{?DEVICE_BUILD_TYPE_TV:1}0 + cmake . -DMODULE="%{MODULE_NAME}" -DBUILDTCTYPE="utc" -DDEVICE_BUILD_TYPE="tv" -DASANBUILD="true" -DCMAKE_INSTALL_PREFIX=%{_prefix} + %endif + %if %{?DEVICE_BUILD_TYPE_COMMON_IOT:1}0 + cmake . -DMODULE="%{MODULE_NAME}" -DBUILDTCTYPE="utc" -DDEVICE_BUILD_TYPE="common_iot" -DASANBUILD="true" -DCMAKE_INSTALL_PREFIX=%{_prefix} + %endif +%else + %if %{?DEVICE_BUILD_TYPE_MOBILE:1}0 + cmake . -DMODULE="%{MODULE_NAME}" -DBUILDTCTYPE="utc" -DDEVICE_BUILD_TYPE="mobile" -DASANBUILD="false" -DCMAKE_INSTALL_PREFIX=%{_prefix} + %endif + %if %{?DEVICE_BUILD_TYPE_WEARABLE:1}0 + cmake . -DMODULE="%{MODULE_NAME}" -DBUILDTCTYPE="utc" -DDEVICE_BUILD_TYPE="wearable" -DASANBUILD="false" -DCMAKE_INSTALL_PREFIX=%{_prefix} + %endif + %if %{?DEVICE_BUILD_TYPE_TV:1}0 + cmake . -DMODULE="%{MODULE_NAME}" -DBUILDTCTYPE="utc" -DDEVICE_BUILD_TYPE="tv" -DASANBUILD="false" -DCMAKE_INSTALL_PREFIX=%{_prefix} + %endif + %if %{?DEVICE_BUILD_TYPE_COMMON_IOT:1}0 + cmake . -DMODULE="%{MODULE_NAME}" -DBUILDTCTYPE="utc" -DDEVICE_BUILD_TYPE="common_iot" -DASANBUILD="false" -DCMAKE_INSTALL_PREFIX=%{_prefix} + %endif +%endif + +make %{?jobs:-j%jobs} + +%install +rm -rf %{buildroot} +%make_install +mkdir -p %{buildroot}/usr/share/license +cp LICENSE %{buildroot}/usr/share/license/%{name} +mkdir -p %{buildroot}/usr/share/packages/ +cp packaging/utc/%{name}.xml %{buildroot}/usr/share/packages/ +mkdir -p %{buildroot}/usr/apps/%{name}/bin +%post + +%postun + + +%files +/usr/apps/%{name}/* +/usr/share/packages/%{name}.xml +/usr/share/license/%{name} diff --git a/packaging/utc/core-zigbee-tests.xml b/packaging/utc/core-zigbee-tests.xml new file mode 100644 index 000000000..ce01f97c8 --- /dev/null +++ b/packaging/utc/core-zigbee-tests.xml @@ -0,0 +1,17 @@ + + + + test + Core API test Application + + + + + + + + + + http://tizen.org/privilege/zigbee + + diff --git a/scripts_tpk/tizeniot_service_modules.txt b/scripts_tpk/tizeniot_service_modules.txt index 81c79e80f..1919e2184 100755 --- a/scripts_tpk/tizeniot_service_modules.txt +++ b/scripts_tpk/tizeniot_service_modules.txt @@ -76,7 +76,7 @@ wifi-direct wifi-manager yaca peripheral-io -stc  +stc intelligent-network-monitoring asp camera @@ -85,3 +85,4 @@ rpc-port privacy-privilege-manager sound-pool softap +zigbee diff --git a/src/utc/zigbee/CMakeLists.txt b/src/utc/zigbee/CMakeLists.txt new file mode 100644 index 000000000..5dbfb0d29 --- /dev/null +++ b/src/utc/zigbee/CMakeLists.txt @@ -0,0 +1,47 @@ +SET(PKG_NAME "zigbee") + +SET(EXEC_NAME "tct-${PKG_NAME}-core") +SET(RPM_NAME "core-${PKG_NAME}-tests") + +SET(CAPI_LIB "capi-network-zigbee") +SET(TC_SOURCES + utc-zigbee.c + utc-zigbee-zdo.c + utc-zigbee-zdo-dev-disc.c + utc-zigbee-zcl.c + utc-zigbee-zcl-global-commands.c + utc-zigbee-zcl-ias-zone.c + utc-zigbee-zcl-on-off.c +) + +PKG_CHECK_MODULES(${CAPI_LIB} REQUIRED + ${CAPI_LIB} + capi-appfw-application + capi-system-info + glib-2.0 + bundle + dlog + elementary +) + +INCLUDE_DIRECTORIES( + ${${CAPI_LIB}_INCLUDE_DIRS} +) + +ADD_EXECUTABLE(${EXEC_NAME} ${EXEC_NAME}.c ${TC_SOURCES} ${COMMON_FILE}) +TARGET_LINK_LIBRARIES(${EXEC_NAME} + ${${CAPI_LIB}_LIBRARIES} + bundle +) + +INSTALL(PROGRAMS ${EXEC_NAME} + DESTINATION ${BIN_DIR}/${RPM_NAME}/bin +) + +IF( DEFINED ASAN ) +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -Wall -pie -g -fsanitize=address -fsanitize-recover=address -U_FORTIFY_SOURCE -fno-omit-frame-pointer") +SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -Wl,--rpath=/usr/lib -Wl,-fsanitize=address") +ELSE() +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -g -fPIE -Wall") +SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -Wl,--rpath=/usr/lib -pie") +ENDIF() diff --git a/src/utc/zigbee/tct-zigbee-core.c b/src/utc/zigbee/tct-zigbee-core.c new file mode 100644 index 000000000..86e069e9b --- /dev/null +++ b/src/utc/zigbee/tct-zigbee-core.c @@ -0,0 +1,140 @@ +// +// Copyright (c) 2014 Samsung Electronics Co., Ltd. +// +// Licensed under the Apache License, Version 2.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#include "tct_common.h" + +#ifdef MOBILE //Starts MOBILE +#include "tct-zigbee-core_mobile.h" +#endif //MOBILE //End MOBILE + +#ifdef WEARABLE //Starts WEARABLE +#include "tct-zigbee-core_wearable.h" +#endif //WEARABLE //End WEARABLE + +#ifdef TV //Starts TV +#include "tct-zigbee-core_tv.h" +#endif //TV //End TV + +//#ifdef TIZENIOT //Starts TIZENIOT +#include "tct-zigbee-core_tizeniot.h" +//#endif //TIZENIOT //End TIZENIOT + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +typedef struct appdata { + Evas_Object *win; + Evas_Object *conform; + Evas_Object *label; +} appdata_s; + +static bool app_create(void *data) +{ + return true; +} + +static void app_control(app_control_h app_control, void *data) +{ + char* pszGetTCName = NULL; + int i=0, result=0, nRet=0; + nRet = app_control_get_extra_data(app_control, "testcase_name", &pszGetTCName); + if(nRet != APP_CONTROL_ERROR_NONE) + { + dlog_print(DLOG_ERROR, "NativeTCT", "[%s:%d] app_control_get_extra_data returns error = %d", __FUNCTION__, __LINE__, nRet); + PRINT_UTC_LOG("\\n[%s][Line : %d]Unable to fetch test case name: app_control_get_extra_data API call fails\\n", __FILE__, __LINE__); + PRINT_TC_RESULT("%d",1); + FREE_MEMORY_TC(pszGetTCName); + return; + } + + dlog_print(DLOG_INFO, "NativeTCT", "[%s:%d] Executing TC Name = %s", __FUNCTION__, __LINE__, pszGetTCName); + for ( i = 0; tc_array[i].name; i++ ) + { + if ( 0 == strncmp(pszGetTCName, tc_array[i].name, strlen(pszGetTCName)) ) + { + DUMP_UTC_ERRLOG(); + if ( tc_array[i].startup ) + { + dlog_print(DLOG_INFO, "NativeTCT", "%s : Start up", pszGetTCName); + tc_array[i].startup(); + } + + dlog_print(DLOG_INFO, "NativeTCT", "%s : Body", pszGetTCName); + result = tc_array[i].function(); + dlog_print(DLOG_INFO, "NativeTCT", "%s returns value = %d", pszGetTCName, result); + + if ( tc_array[i].cleanup ) + { + dlog_print(DLOG_INFO, "NativeTCT", "%s : Clean up", pszGetTCName); + tc_array[i].cleanup(); + } + + CLOSE_UTC_ERRLOG(); + PRINT_TC_RESULT("%d",result); + FREE_MEMORY_TC(pszGetTCName); + return; + } + } + + dlog_print(DLOG_ERROR, "NativeTCT", "[%s:%d] Unable to execute %s : Unknown Test Case Name", __FUNCTION__, __LINE__, pszGetTCName); + PRINT_UTC_LOG("\\n[%s][Line : %d]Unable to execute %s : Unknown Test Case Name\\n", __FILE__, __LINE__, pszGetTCName); + PRINT_TC_RESULT("%d",1); + FREE_MEMORY_TC(pszGetTCName); + return; +} + +static void app_terminate(void *data) +{ + dlog_print(DLOG_INFO, "NativeTCT", "[%s:%d] Application Package is now Terminating", __FUNCTION__, __LINE__); +} + +int main(int argc, char *argv[]) +{ + int ret = 0; + appdata_s ad = {0,}; + + ui_app_lifecycle_callback_s event_callback = {0,}; + event_callback.create = app_create; + event_callback.terminate = app_terminate; + event_callback.app_control = app_control; + + //setting gcda file location for coverage + setenv("GCOV_PREFIX","/tmp",1); + dlog_print(DLOG_INFO, "NativeTCT", "[%s:%d] Coverage *.gcda File location set to /tmp/home/abuild/rpmbuild/BUILD/ ", __FUNCTION__, __LINE__); + + dlog_print(DLOG_INFO, "NativeTCT", "[%s:%d] Application Main Function is Invoked", __FUNCTION__, __LINE__); + ret = ui_app_main(argc, argv, &event_callback, &ad); + if (ret != APP_ERROR_NONE) + { + dlog_print(DLOG_ERROR, "NativeTCT", "Application ui_app_main call gets failed. err = %d", ret); + PRINT_UTC_LOG("\\n[%s][Line : %d]Application ui_app_main call gets failed. err = %d\\n", __FILE__, __LINE__, ret); + PRINT_TC_RESULT("%d",1); + return ret; + } + + dlog_print(DLOG_INFO, "NativeTCT", "[%s:%d] Application Package is Terminated", __FUNCTION__, __LINE__); + return ret; +} diff --git a/src/utc/zigbee/tct-zigbee-core_mobile.h b/src/utc/zigbee/tct-zigbee-core_mobile.h new file mode 100644 index 000000000..0ddfb5b78 --- /dev/null +++ b/src/utc/zigbee/tct-zigbee-core_mobile.h @@ -0,0 +1,539 @@ +// +// Copyright (c) 2014 Samsung Electronics Co., Ltd. +// +// Licensed under the Apache License, Version 2.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef __TCT_ZIGBEE_NATIVE_H__ +#define __TCT_ZIGBEE_NATIVE_H__ + +#include "testcase.h" +#include "tct_common.h" +#include "utc-zigbee.h" + +extern void utc_startup(void); +extern void utc_cleanup(void); +extern void utc_zdo_simple_desc_startup(void); +extern void utc_zdo_simple_desc_cleanup(void); +extern void utc_zdo_power_desc_startup(void); +extern void utc_zdo_power_desc_cleanup(void); +extern void utc_zdo_node_desc_startup(void); +extern void utc_zdo_node_desc_cleanup(void); +extern void utc_zdo_getter_startup(void); +extern void utc_zdo_getter_cleanup(void); + +/* Zigbee APIs */ +extern int utc_zb_create_p(void); +extern int utc_zb_create_n(void); +extern int utc_zb_destroy_p(void); +extern int utc_zb_destroy_n(void); +extern int utc_zb_ev_get_enable_status_n(void); +extern int utc_zb_ev_get_form_network_panid_n(void); +extern int utc_zb_ev_get_join_count_n(void); +extern int utc_zb_ev_get_join_ep_n(void); +extern int utc_zb_ev_get_child_left_status_n(void); +extern int utc_zb_ev_get_global_default_rsp_ep_n(void); +extern int utc_zb_ev_get_global_default_rsp_cluster_id_n(void); +extern int utc_zb_ev_get_global_default_rsp_command_id_n(void); +extern int utc_zb_ev_get_global_default_rsp_status_n(void); +extern int utc_zb_ev_get_enroll_request_src_ep_n(void); +extern int utc_zb_ev_get_enroll_request_zone_type_n(void); +extern int utc_zb_ev_get_enroll_request_mfg_code_n(void); +extern int utc_zb_ev_get_ias_noti_src_ep_n(void); +extern int utc_zb_ev_get_ias_noti_zone_status_n(void); +extern int utc_zb_ev_get_ias_ext_noti_src_ep_n(void); +extern int utc_zb_ev_get_ias_ext_noti_status_n(void); +extern int utc_zb_ev_get_ias_ext_noti_zone_status_n(void); +extern int utc_zb_ev_get_ias_ext_noti_delay_n(void); +extern int utc_zb_ev_get_ias_ext_noti_zone_id_n(void); +extern int utc_zb_set_event_cb_p(void); +extern int utc_zb_set_event_cb_n(void); +extern int utc_zb_form_network_p(void); +extern int utc_zb_form_network_n(void); +extern int utc_zb_disable_network_p(void); +extern int utc_zb_disable_network_n(void); +extern int utc_zb_leave_device_p(void); +extern int utc_zb_leave_device_n(void); +extern int utc_zb_permit_join_p(void); +extern int utc_zb_permit_join_n(void); +extern int utc_zb_get_controller_mac_address_p(void); +extern int utc_zb_get_controller_mac_address_n(void); +extern int utc_zb_get_network_info_p(void); +extern int utc_zb_get_network_info_n(void); + +extern int utc_zb_end_dev_get_ep_list_p(void); +extern int utc_zb_end_dev_get_ep_list_n(void); +extern int utc_zb_end_dev_get_cluster_list_p(void); +extern int utc_zb_end_dev_get_cluster_list_n(void); +extern int utc_zb_end_dev_get_end_dev_info_list_p(void); +extern int utc_zb_end_dev_get_end_dev_info_list_n1(void); +extern int utc_zb_end_dev_get_end_dev_info_list_n2(void); +extern int utc_zb_end_dev_info_create_p(void); +extern int utc_zb_end_dev_info_create_n(void); +extern int utc_zb_end_dev_info_clone_p(void); +extern int utc_zb_end_dev_info_clone_n(void); +extern int utc_zb_end_dev_info_destroy_p(void); +extern int utc_zb_end_dev_info_destroy_n(void); +extern int utc_zb_end_dev_info_list_free_p(void); +extern int utc_zb_end_dev_info_list_free_n(void); +extern int utc_zb_end_dev_info_get_network_address_n(void); +extern int utc_zb_end_dev_info_get_ieee_address_n(void); +extern int utc_zb_end_dev_info_get_num_of_ep_n(void); +extern int utc_zb_end_dev_info_get_ep_list_n(void); +extern int utc_zb_end_dev_info_get_mac_capability_n(void); +extern int utc_zb_end_dev_info_get_alternative_pan_coordinator_n(void); +extern int utc_zb_end_dev_info_get_device_id_n(void); +extern int utc_zb_end_dev_info_get_profile_id_n(void); +extern int utc_zb_end_dev_info_get_power_source_n(void); +extern int utc_zb_end_dev_info_get_security_capabilty_n(void); + +/* Zigbee ZDO */ + +#ifdef SUPPORT_SIMPLE_DESCRIPTION +extern int utc_zb_simple_desc_create_p(void); +extern int utc_zb_simple_desc_create_n(void); +extern int utc_zb_simple_desc_destroy_p(void); +extern int utc_zb_simple_desc_destroy_n(void); +extern int utc_zb_simple_desc_clone_p(void); +extern int utc_zb_simple_desc_clone_n(void); +extern int utc_zb_simple_desc_get_ep_p(void); +extern int utc_zb_simple_desc_get_ep_n(void); +extern int utc_zb_simple_desc_set_ep_p(void); +extern int utc_zb_simple_desc_set_ep_n(void); +extern int utc_zb_simple_desc_get_profile_id_p(void); +extern int utc_zb_simple_desc_get_profile_id_n(void); +extern int utc_zb_simple_desc_set_profile_id_p(void); +extern int utc_zb_simple_desc_set_profile_id_n(void); +extern int utc_zb_simple_desc_get_device_id_p(void); +extern int utc_zb_simple_desc_get_device_id_n(void); +extern int utc_zb_simple_desc_set_device_id_p(void); +extern int utc_zb_simple_desc_set_device_id_n(void); +extern int utc_zb_simple_desc_get_device_ver_p(void); +extern int utc_zb_simple_desc_get_device_ver_n(void); +extern int utc_zb_simple_desc_set_device_ver_p(void); +extern int utc_zb_simple_desc_set_device_ver_n(void); +extern int utc_zb_simple_desc_get_num_of_in_clusters_p(void); +extern int utc_zb_simple_desc_get_num_of_in_clusters_n(void); +extern int utc_zb_simple_desc_set_num_of_in_clusters_p(void); +extern int utc_zb_simple_desc_set_num_of_in_clusters_n(void); +extern int utc_zb_simple_desc_get_num_of_out_clusters_p(void); +extern int utc_zb_simple_desc_get_num_of_out_clusters_n(void); +extern int utc_zb_simple_desc_set_num_of_out_clusters_p(void); +extern int utc_zb_simple_desc_set_num_of_out_clusters_n(void); +extern int utc_zb_simple_desc_get_in_clusters_p(void); +extern int utc_zb_simple_desc_get_in_clusters_n(void); +extern int utc_zb_simple_desc_set_in_clusters_p(void); +extern int utc_zb_simple_desc_set_in_clusters_n(void); +extern int utc_zb_simple_desc_get_out_clusters_p(void); +extern int utc_zb_simple_desc_get_out_clusters_n(void); +extern int utc_zb_simple_desc_set_out_clusters_p(void); +extern int utc_zb_simple_desc_set_out_clusters_n(void); +#endif /* SUPPORT_SIMPLE_DESCRIPTION */ + +#ifdef SUPPORT_ZDO_DEVICE_DISCOVERY_MANAGER +/* Zigbee ZDO Device Discovery */ +extern int utc_zb_zdo_nwk_addr_req_p(void); +extern int utc_zb_zdo_nwk_addr_req_n(void); +extern int utc_zb_zdo_ieee_addr_req_p(void); +extern int utc_zb_zdo_ieee_addr_req_n(void); +extern int utc_zb_zdo_active_ep_p(void); +extern int utc_zb_zdo_active_ep_n(void); +extern int utc_zb_zdo_simple_desc_req_p(void); +extern int utc_zb_zdo_simple_desc_req_n(void); +#endif /* SUPPORT_ZDO_DEVICE_DISCOVERY_MANAGER */ + +#ifdef SUPPORT_ZCL_GLOBAL_COMMNAD_CLUSTER +/* Global Command */ +extern int utc_zb_zcl_global_attr_read_p(void); +extern int utc_zb_zcl_global_attr_read_n(void); +extern int utc_zb_zcl_global_attr_write_p(void); +extern int utc_zb_zcl_global_attr_write_n(void); +extern int utc_zb_zcl_global_attr_write_undivided_p(void); +extern int utc_zb_zcl_global_attr_write_undivided_n(void); +extern int utc_zb_zcl_global_attr_write_no_rsp_p(void); +extern int utc_zb_zcl_global_attr_write_no_rsp_n(void); +extern int utc_zb_zcl_global_config_report_write_p(void); +extern int utc_zb_zcl_global_config_report_write_n(void); +extern int utc_zb_zcl_global_config_report_read_p(void); +extern int utc_zb_zcl_global_config_report_read_n(void); +extern int utc_zb_zcl_global_config_report_read_n(void); +#endif /* SUPPORT_ZCL_GLOBAL_COMMNAD_CLUSTER */ + +#ifdef SUPPORT_ZCL_READ_ATTRIBUTE_STATUS_RECORD +extern int utc_zb_read_attr_status_record_create_p(void); +extern int utc_zb_read_attr_status_record_create_n(void); +extern int utc_zb_read_attr_status_record_clone_p(void); +extern int utc_zb_read_attr_status_record_clone_n(void); +extern int utc_zb_read_attr_status_record_destroy_p(void); +extern int utc_zb_read_attr_status_record_destroy_n(void); +extern int utc_zb_read_attr_status_record_set_id_p(void); +extern int utc_zb_read_attr_status_record_set_id_n(void); +extern int utc_zb_read_attr_status_record_get_id_p(void); +extern int utc_zb_read_attr_status_record_get_id_n(void); +extern int utc_zb_read_attr_status_record_set_status_p(void); +extern int utc_zb_read_attr_status_record_set_status_n(void); +extern int utc_zb_read_attr_status_record_get_status_p(void); +extern int utc_zb_read_attr_status_record_get_status_n(void); +extern int utc_zb_read_attr_status_record_set_type_p(void); +extern int utc_zb_read_attr_status_record_set_type_n(void); +extern int utc_zb_read_attr_status_record_get_type_p(void); +extern int utc_zb_read_attr_status_record_get_type_n(void); +extern int utc_zb_read_attr_status_record_set_value_p(void); +extern int utc_zb_read_attr_status_record_set_value_n(void); +extern int utc_zb_read_attr_status_record_get_value_p(void); +extern int utc_zb_read_attr_status_record_get_value_n(void); +#endif /* SUPPORT_ZCL_READ_ATTRIBUTE_STATUS_RECORD */ + +#ifdef SUPPORT_ZCL_WRITE_ATTRIBUTE_STATUS +extern int utc_zb_write_attr_record_create_p(void); +extern int utc_zb_write_attr_record_create_n(void); +extern int utc_zb_write_attr_record_destroy_p(void); +extern int utc_zb_write_attr_record_destroy_n(void); +extern int utc_zb_write_attr_record_set_id_p(void); +extern int utc_zb_write_attr_record_set_id_n(void); +extern int utc_zb_write_attr_record_set_value_p(void); +extern int utc_zb_write_attr_record_set_value_n(void); +extern int utc_zb_write_attr_status_create_p(void); +extern int utc_zb_write_attr_status_create_n(void); +extern int utc_zb_write_attr_status_destroy_p(void); +extern int utc_zb_write_attr_status_destroy_n(void); +extern int utc_zb_write_attr_status_set_status_p(void); +extern int utc_zb_write_attr_status_set_status_n(void); +extern int utc_zb_write_attr_status_get_status_p(void); +extern int utc_zb_write_attr_status_get_status_n(void); +extern int utc_zb_write_attr_status_set_id_p(void); +extern int utc_zb_write_attr_status_set_id_n(void); +extern int utc_zb_write_attr_status_get_id_p(void); +extern int utc_zb_write_attr_status_get_id_n(void); +#endif /* SUPPORT_ZCL_WRITE_ATTRIBUTE_STATUS */ + +#ifdef SUPPORT_ZCL_REPORT_CONFIG_REPORT +extern int utc_zb_report_config_record_create_p(void); +extern int utc_zb_report_config_record_create_n(void); +extern int utc_zb_report_config_record_clone_p(void); +extern int utc_zb_report_config_record_clone_n(void); +extern int utc_zb_report_config_record_destroy_p(void); +extern int utc_zb_report_config_record_destroy_n(void); +extern int utc_zb_report_config_record_set_dir_p(void); +extern int utc_zb_report_config_record_set_dir_n(void); +extern int utc_zb_report_config_record_get_dir_p(void); +extern int utc_zb_report_config_record_get_dir_n(void); +extern int utc_zb_report_config_record_set_id_p(void); +extern int utc_zb_report_config_record_set_id_n(void); +extern int utc_zb_report_config_record_get_id_p(void); +extern int utc_zb_report_config_record_get_id_n(void); +extern int utc_zb_report_config_record_set_min_interval_p(void); +extern int utc_zb_report_config_record_set_min_interval_n(void); +extern int utc_zb_report_config_record_get_min_interval_p(void); +extern int utc_zb_report_config_record_get_min_interval_n(void); +extern int utc_zb_report_config_record_set_max_interval_p(void); +extern int utc_zb_report_config_record_set_max_interval_n(void); +extern int utc_zb_report_config_record_get_max_interval_p(void); +extern int utc_zb_report_config_record_get_max_interval_n(void); +extern int utc_zb_report_config_record_set_timeout_p(void); +extern int utc_zb_report_config_record_set_timeout_n(void); +extern int utc_zb_report_config_record_get_timeout_p(void); +extern int utc_zb_report_config_record_get_timeout_n(void); +extern int utc_zb_report_config_record_set_change_p(void); +extern int utc_zb_report_config_record_set_change_n(void); +extern int utc_zb_report_config_record_get_change_p(void); +extern int utc_zb_report_config_record_get_change_n(void); +#endif /* SUPPORT_ZCL_REPORT_CONFIG_REPORT */ + +#ifdef SUPPORT_ZCL_READ_REPORT_CONFIG_RECORD +extern int utc_zb_read_report_config_record_create_p(void); +extern int utc_zb_read_report_config_record_create_n(void); +extern int utc_zb_read_report_config_record_destroy_p(void); +extern int utc_zb_read_report_config_record_destroy_n(void); +extern int utc_zb_read_report_config_record_set_dir_p(void); +extern int utc_zb_read_report_config_record_set_dir_n(void); +extern int utc_zb_read_report_config_record_set_id_p(void); +extern int utc_zb_read_report_config_record_set_id_n(void); +#endif /* SUPPORT_ZCL_READ_REPORT_CONFIG_RECORD */ + +#ifdef SUPPORT_ZCL_REPORT_CONFIG_RESPONSE_RECORD +extern int utc_zb_report_config_response_record_clone_n(void); +extern int utc_zb_report_config_response_record_destroy_n(void); +extern int utc_zb_report_config_response_record_get_status_n(void); +extern int utc_zb_report_config_response_record_get_dir_n(void); +extern int utc_zb_report_config_response_record_get_id_n(void); +#endif /* SUPPORT_ZCL_REPORT_CONFIG_RESPONSE_RECORD */ + +#ifdef SUPPORT_ZCL_IAS_ZONE_CLUSTER +/* IAS Zone Cluster */ +extern int utc_zb_zcl_zone_enroll_response_p(void); +extern int utc_zb_zcl_zone_enroll_response_n(void); +#endif /* SUPPORT_ZCL_IAS_ZONE_CLUSTER */ + +#ifdef SUPPORT_ZCL_ON_OFF_CLUSTER +/* On/Off Cluster */ +extern int utc_zb_zcl_on_off_control_p(void); +extern int utc_zb_zcl_on_off_control_n(void); +#endif /* SUPPORT_ZCL_ON_OFF_CLUSTER */ + +testcase tc_array[] = { + /* Zigbee APIs */ + {"utc_zb_create_p", utc_zb_create_p, utc_startup, utc_cleanup}, + {"utc_zb_create_n", utc_zb_create_n, utc_startup, utc_cleanup}, + {"utc_zb_destroy_p", utc_zb_destroy_p, utc_startup, utc_cleanup}, + {"utc_zb_destroy_n", utc_zb_destroy_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_enable_status_n", utc_zb_ev_get_enable_status_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_form_network_panid_n", utc_zb_ev_get_form_network_panid_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_join_count_n", utc_zb_ev_get_join_count_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_join_ep_n", utc_zb_ev_get_join_ep_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_child_left_status_n", utc_zb_ev_get_child_left_status_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_global_default_rsp_ep_n", utc_zb_ev_get_global_default_rsp_ep_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_global_default_rsp_cluster_id_n", utc_zb_ev_get_global_default_rsp_cluster_id_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_global_default_rsp_command_id_n", utc_zb_ev_get_global_default_rsp_command_id_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_global_default_rsp_status_n", utc_zb_ev_get_global_default_rsp_status_n, utc_startup, utc_cleanup}, + + {"utc_zb_ev_get_enroll_request_src_ep_n", utc_zb_ev_get_enroll_request_src_ep_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_enroll_request_zone_type_n", utc_zb_ev_get_enroll_request_zone_type_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_enroll_request_mfg_code_n", utc_zb_ev_get_enroll_request_mfg_code_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_noti_src_ep_n", utc_zb_ev_get_ias_noti_src_ep_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_noti_zone_status_n", utc_zb_ev_get_ias_noti_zone_status_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_ext_noti_src_ep_n", utc_zb_ev_get_ias_ext_noti_src_ep_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_ext_noti_status_n", utc_zb_ev_get_ias_ext_noti_status_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_ext_noti_zone_status_n", utc_zb_ev_get_ias_ext_noti_zone_status_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_ext_noti_delay_n", utc_zb_ev_get_ias_ext_noti_delay_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_ext_noti_zone_id_n", utc_zb_ev_get_ias_ext_noti_zone_id_n, utc_startup, utc_cleanup}, + {"utc_zb_set_event_cb_p", utc_zb_set_event_cb_p, utc_startup, utc_cleanup}, + {"utc_zb_set_event_cb_n", utc_zb_set_event_cb_n, utc_startup, utc_cleanup}, + {"utc_zb_form_network_p", utc_zb_form_network_p, utc_startup, utc_cleanup}, + {"utc_zb_form_network_n", utc_zb_form_network_n, utc_startup, utc_cleanup}, + {"utc_zb_disable_network_p", utc_zb_disable_network_p, utc_startup, utc_cleanup}, + {"utc_zb_disable_network_n", utc_zb_disable_network_n, utc_startup, utc_cleanup}, + {"utc_zb_leave_device_p", utc_zb_leave_device_p, utc_startup, utc_cleanup}, + {"utc_zb_leave_device_n", utc_zb_leave_device_n, utc_startup, utc_cleanup}, + {"utc_zb_permit_join_p", utc_zb_permit_join_p, utc_startup, utc_cleanup}, + {"utc_zb_permit_join_n", utc_zb_permit_join_n, utc_startup, utc_cleanup}, + {"utc_zb_get_controller_mac_address_p", utc_zb_get_controller_mac_address_p, utc_startup, utc_cleanup}, + {"utc_zb_get_controller_mac_address_n", utc_zb_get_controller_mac_address_n, utc_startup, utc_cleanup}, + {"utc_zb_get_network_info_p", utc_zb_get_network_info_p, utc_startup, utc_cleanup}, + {"utc_zb_get_network_info_n", utc_zb_get_network_info_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_ep_list_p", utc_zb_end_dev_get_ep_list_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_ep_list_n", utc_zb_end_dev_get_ep_list_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_cluster_list_p", utc_zb_end_dev_get_cluster_list_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_cluster_list_n", utc_zb_end_dev_get_cluster_list_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_end_dev_info_list_p", utc_zb_end_dev_get_end_dev_info_list_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_end_dev_info_list_n1", utc_zb_end_dev_get_end_dev_info_list_n1, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_end_dev_info_list_n2", utc_zb_end_dev_get_end_dev_info_list_n2, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_list_free_p", utc_zb_end_dev_info_list_free_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_list_free_n", utc_zb_end_dev_info_list_free_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_create_p", utc_zb_end_dev_info_create_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_create_n", utc_zb_end_dev_info_create_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_clone_p", utc_zb_end_dev_info_clone_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_clone_n", utc_zb_end_dev_info_clone_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_destroy_p", utc_zb_end_dev_info_destroy_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_destroy_n", utc_zb_end_dev_info_destroy_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_network_address_n", utc_zb_end_dev_info_get_network_address_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_ieee_address_n", utc_zb_end_dev_info_get_ieee_address_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_num_of_ep_n", utc_zb_end_dev_info_get_num_of_ep_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_ep_list_n", utc_zb_end_dev_info_get_ep_list_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_mac_capability_n", utc_zb_end_dev_info_get_mac_capability_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_alternative_pan_coordinator_n", utc_zb_end_dev_info_get_alternative_pan_coordinator_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_device_id_n", utc_zb_end_dev_info_get_device_id_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_profile_id_n", utc_zb_end_dev_info_get_profile_id_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_power_source_n", utc_zb_end_dev_info_get_power_source_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_security_capabilty_n", utc_zb_end_dev_info_get_security_capabilty_n, utc_startup, utc_cleanup}, + +#ifdef SUPPORT_SIMPLE_DESCRIPTION + /* Zigbee ZDO - Simple Descripter Getter/Setter */ + {"utc_zb_simple_desc_create_p", utc_zb_simple_desc_create_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_create_n", utc_zb_simple_desc_create_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_destroy_p", utc_zb_simple_desc_destroy_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_destroy_n", utc_zb_simple_desc_destroy_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_clone_p", utc_zb_simple_desc_clone_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_clone_n", utc_zb_simple_desc_clone_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_ep_p", utc_zb_simple_desc_get_ep_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_ep_n", utc_zb_simple_desc_get_ep_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_ep_p", utc_zb_simple_desc_set_ep_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_ep_n", utc_zb_simple_desc_set_ep_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_profile_id_p", utc_zb_simple_desc_get_profile_id_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_profile_id_n", utc_zb_simple_desc_get_profile_id_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_profile_id_p", utc_zb_simple_desc_set_profile_id_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_profile_id_n", utc_zb_simple_desc_set_profile_id_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_device_id_p", utc_zb_simple_desc_get_device_id_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_device_id_n", utc_zb_simple_desc_get_device_id_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_device_id_p", utc_zb_simple_desc_set_device_id_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_device_id_n", utc_zb_simple_desc_set_device_id_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_device_ver_p", utc_zb_simple_desc_get_device_ver_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_device_ver_n", utc_zb_simple_desc_get_device_ver_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_device_ver_p", utc_zb_simple_desc_set_device_ver_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_device_ver_n", utc_zb_simple_desc_set_device_ver_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_num_of_in_clusters_p", utc_zb_simple_desc_get_num_of_in_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_num_of_in_clusters_n", utc_zb_simple_desc_get_num_of_in_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_num_of_in_clusters_p", utc_zb_simple_desc_set_num_of_in_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_num_of_in_clusters_n", utc_zb_simple_desc_set_num_of_in_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_num_of_out_clusters_p", utc_zb_simple_desc_get_num_of_out_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_num_of_out_clusters_n", utc_zb_simple_desc_get_num_of_out_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_num_of_out_clusters_p", utc_zb_simple_desc_set_num_of_out_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_num_of_out_clusters_n", utc_zb_simple_desc_set_num_of_out_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_in_clusters_p", utc_zb_simple_desc_get_in_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_in_clusters_n", utc_zb_simple_desc_get_in_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_in_clusters_p", utc_zb_simple_desc_set_in_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_in_clusters_n", utc_zb_simple_desc_set_in_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_out_clusters_p", utc_zb_simple_desc_get_out_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_out_clusters_n", utc_zb_simple_desc_get_out_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_out_clusters_p", utc_zb_simple_desc_set_out_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_out_clusters_n", utc_zb_simple_desc_set_out_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, +#endif /* SUPPORT_SIMPLE_DESCRIPTION*/ + +#ifdef SUPPORT_ZDO_DEVICE_DISCOVERY_MANAGER + /* Zigbee ZDO - Device Discovery */ + {"utc_zb_zdo_nwk_addr_req_p", utc_zb_zdo_nwk_addr_req_p, utc_startup, utc_startup}, + {"utc_zb_zdo_nwk_addr_req_n", utc_zb_zdo_nwk_addr_req_n, utc_startup, utc_startup}, + {"utc_zb_zdo_ieee_addr_req_p", utc_zb_zdo_ieee_addr_req_p, utc_startup, utc_startup}, + {"utc_zb_zdo_ieee_addr_req_n", utc_zb_zdo_ieee_addr_req_n, utc_startup, utc_startup}, + {"utc_zb_zdo_active_ep_p", utc_zb_zdo_active_ep_p, utc_startup, utc_startup}, + {"utc_zb_zdo_active_ep_n", utc_zb_zdo_active_ep_n, utc_startup, utc_startup}, + {"utc_zb_zdo_simple_desc_req_p", utc_zb_zdo_simple_desc_req_p, utc_startup, utc_startup}, + {"utc_zb_zdo_simple_desc_req_n", utc_zb_zdo_simple_desc_req_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZDO_DEVICE_DISCOVERY_MANAGER */ + +#if defined(SUPPORT_ZCL_GLOBAL_COMMNAD_CLUSTER) + /* Zigbee ZCL - Global Cluster */ + {"utc_zb_zcl_global_attr_read_p", utc_zb_zcl_global_attr_read_p, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_read_n", utc_zb_zcl_global_attr_read_n, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_write_p", utc_zb_zcl_global_attr_write_p, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_write_n", utc_zb_zcl_global_attr_write_n, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_write_undivided_p", utc_zb_zcl_global_attr_write_undivided_p, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_write_undivided_n", utc_zb_zcl_global_attr_write_undivided_n, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_write_no_rsp_p", utc_zb_zcl_global_attr_write_no_rsp_p, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_write_no_rsp_n", utc_zb_zcl_global_attr_write_no_rsp_n, utc_startup, utc_startup}, + {"utc_zb_zcl_global_config_report_write_p", utc_zb_zcl_global_config_report_write_p, utc_startup, utc_startup}, + {"utc_zb_zcl_global_config_report_write_n", utc_zb_zcl_global_config_report_write_n, utc_startup, utc_startup}, + {"utc_zb_zcl_global_config_report_read_p", utc_zb_zcl_global_config_report_write_n, utc_startup, utc_startup}, + {"utc_zb_zcl_global_config_report_read_n", utc_zb_zcl_global_config_report_read_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_GLOBAL_COMMAND_CLUSTER */ + +#ifdef SUPPORT_ZCL_IAS_ZONE_CLUSTER + /* Zigbee ZCL - IAS Zone Cluster */ + {"utc_zb_zcl_zone_enroll_response_p", utc_zb_zcl_zone_enroll_response_p, utc_startup, utc_startup}, + {"utc_zb_zcl_zone_enroll_response_n", utc_zb_zcl_zone_enroll_response_p, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_IAS_ZONE_CLUSTER */ + +#ifdef SUPPORT_ZCL_ON_OFF_CLUSTER + /* Zigbee ZCL - On/Off Cluster */ + {"utc_zb_zcl_on_off_control_p", utc_zb_zcl_on_off_control_p, utc_startup, utc_startup}, + {"utc_zb_zcl_on_off_control_n", utc_zb_zcl_on_off_control_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_ON_OFF_CLUSTER */ + +#ifdef SUPPORT_ZCL_READ_ATTRIBUTE_STATUS_RECORD + /* Zigbee ZCL - Read Attribute Status Record Getter/Setter */ + {"utc_zb_read_attr_status_record_create_p", utc_zb_read_attr_status_record_create_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_create_n", utc_zb_read_attr_status_record_create_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_clone_p", utc_zb_read_attr_status_record_clone_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_clone_n", utc_zb_read_attr_status_record_clone_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_destroy_p", utc_zb_read_attr_status_record_destroy_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_destroy_n", utc_zb_read_attr_status_record_destroy_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_id_p", utc_zb_read_attr_status_record_set_id_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_id_n", utc_zb_read_attr_status_record_set_id_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_id_p", utc_zb_read_attr_status_record_get_id_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_id_n", utc_zb_read_attr_status_record_get_id_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_status_p", utc_zb_read_attr_status_record_set_status_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_status_n", utc_zb_read_attr_status_record_set_status_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_status_p", utc_zb_read_attr_status_record_get_status_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_status_n", utc_zb_read_attr_status_record_get_status_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_type_p", utc_zb_read_attr_status_record_get_status_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_type_n", utc_zb_read_attr_status_record_set_type_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_type_p", utc_zb_read_attr_status_record_get_type_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_type_n", utc_zb_read_attr_status_record_get_type_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_value_p", utc_zb_read_attr_status_record_set_value_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_value_n", utc_zb_read_attr_status_record_set_value_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_value_p", utc_zb_read_attr_status_record_get_value_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_value_n", utc_zb_read_attr_status_record_get_value_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_READ_ATTRIBUTE_STATUS_RECORD */ + +#ifdef SUPPORT_ZCL_WRITE_ATTRIBUTE_STATUS + /* Zigbee ZCL - Write Attribute Status Record Getter/Setter */ + {"utc_zb_write_attr_record_create_p", utc_zb_write_attr_record_create_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_create_n", utc_zb_write_attr_record_create_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_destroy_p", utc_zb_write_attr_record_destroy_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_destroy_n", utc_zb_write_attr_record_destroy_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_set_id_p", utc_zb_write_attr_record_set_id_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_set_id_n", utc_zb_write_attr_record_set_id_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_set_value_p", utc_zb_write_attr_record_set_value_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_set_value_n", utc_zb_write_attr_record_set_value_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_create_p", utc_zb_write_attr_status_create_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_create_n", utc_zb_write_attr_status_create_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_destroy_p", utc_zb_write_attr_status_destroy_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_destroy_n", utc_zb_write_attr_status_destroy_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_set_status_p", utc_zb_write_attr_status_set_status_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_set_status_n", utc_zb_write_attr_status_set_status_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_get_status_p", utc_zb_write_attr_status_get_status_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_get_status_n", utc_zb_write_attr_status_get_status_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_set_id_p", utc_zb_write_attr_status_set_id_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_set_id_n", utc_zb_write_attr_status_set_id_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_get_id_p", utc_zb_write_attr_status_get_id_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_get_id_n", utc_zb_write_attr_status_get_id_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_WRITE_ATTRIBUTE_STATUS */ + +#ifdef SUPPORT_ZCL_REPORT_CONFIG_REPORT + /* Zigbee ZCL - Report Configuration Record Getter/Setter */ + {"utc_zb_report_config_record_create_p", utc_zb_report_config_record_create_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_create_n", utc_zb_report_config_record_create_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_clone_p", utc_zb_report_config_record_clone_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_clone_n", utc_zb_report_config_record_clone_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_destroy_p", utc_zb_report_config_record_destroy_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_destroy_n", utc_zb_report_config_record_destroy_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_dir_p", utc_zb_report_config_record_set_dir_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_dir_n", utc_zb_report_config_record_set_dir_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_dir_p", utc_zb_report_config_record_get_dir_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_dir_n", utc_zb_report_config_record_get_dir_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_id_p", utc_zb_report_config_record_set_id_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_id_n", utc_zb_report_config_record_set_id_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_id_p", utc_zb_report_config_record_get_id_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_id_n", utc_zb_report_config_record_get_id_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_min_interval_p", utc_zb_report_config_record_set_min_interval_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_min_interval_n", utc_zb_report_config_record_set_min_interval_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_min_interval_p", utc_zb_report_config_record_get_min_interval_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_min_interval_n", utc_zb_report_config_record_get_min_interval_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_max_interval_p", utc_zb_report_config_record_set_max_interval_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_max_interval_n", utc_zb_report_config_record_set_max_interval_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_max_interval_p", utc_zb_report_config_record_get_max_interval_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_max_interval_n", utc_zb_report_config_record_get_max_interval_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_timeout_p", utc_zb_report_config_record_set_timeout_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_timeout_n", utc_zb_report_config_record_set_timeout_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_timeout_p", utc_zb_report_config_record_get_timeout_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_timeout_n", utc_zb_report_config_record_get_timeout_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_change_p", utc_zb_report_config_record_set_change_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_change_n", utc_zb_report_config_record_set_change_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_change_p", utc_zb_report_config_record_get_change_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_change_n", utc_zb_report_config_record_get_change_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_REPORT_CONFIG_REPORT */ + +#ifdef SUPPORT_ZCL_READ_REPORT_CONFIG_RECORD + /* Zigbee ZCL - Read Report Configuration Record Getter/Setter */ + {"utc_zb_read_report_config_record_create_p", utc_zb_read_report_config_record_create_p, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_create_n", utc_zb_read_report_config_record_create_n, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_destroy_p", utc_zb_read_report_config_record_destroy_p, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_destroy_n", utc_zb_read_report_config_record_destroy_n, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_set_dir_p", utc_zb_read_report_config_record_set_dir_p, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_set_dir_n", utc_zb_read_report_config_record_set_dir_n, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_set_id_p", utc_zb_read_report_config_record_set_id_p, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_set_id_n", utc_zb_read_report_config_record_set_id_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_READ_REPORT_CONFIG_RECORD */ + +#ifdef SUPPORT_ZCL_REPORT_CONFIG_RESPONSE_RECORD + /* Zigbee ZCL - Report Configuration Response Getter/Setter */ + {"utc_zb_report_config_response_record_clone_n", utc_zb_report_config_response_record_clone_n, utc_startup, utc_startup}, + {"utc_zb_report_config_response_record_destroy_n", utc_zb_report_config_response_record_destroy_n, utc_startup, utc_startup}, + {"utc_zb_report_config_response_record_get_status_n", utc_zb_report_config_response_record_get_status_n, utc_startup, utc_startup}, + {"utc_zb_report_config_response_record_get_dir_n", utc_zb_report_config_response_record_get_dir_n, utc_startup, utc_startup}, + {"utc_zb_report_config_response_record_get_id_n", utc_zb_report_config_response_record_get_id_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_REPORT_CONFIG_RESPONSE_RECORD */ + + {NULL, NULL} +}; + +#endif // __TCT_ZIGBEE_NATIVE_H__ diff --git a/src/utc/zigbee/tct-zigbee-core_tizeniot.h b/src/utc/zigbee/tct-zigbee-core_tizeniot.h new file mode 100644 index 000000000..0ddfb5b78 --- /dev/null +++ b/src/utc/zigbee/tct-zigbee-core_tizeniot.h @@ -0,0 +1,539 @@ +// +// Copyright (c) 2014 Samsung Electronics Co., Ltd. +// +// Licensed under the Apache License, Version 2.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef __TCT_ZIGBEE_NATIVE_H__ +#define __TCT_ZIGBEE_NATIVE_H__ + +#include "testcase.h" +#include "tct_common.h" +#include "utc-zigbee.h" + +extern void utc_startup(void); +extern void utc_cleanup(void); +extern void utc_zdo_simple_desc_startup(void); +extern void utc_zdo_simple_desc_cleanup(void); +extern void utc_zdo_power_desc_startup(void); +extern void utc_zdo_power_desc_cleanup(void); +extern void utc_zdo_node_desc_startup(void); +extern void utc_zdo_node_desc_cleanup(void); +extern void utc_zdo_getter_startup(void); +extern void utc_zdo_getter_cleanup(void); + +/* Zigbee APIs */ +extern int utc_zb_create_p(void); +extern int utc_zb_create_n(void); +extern int utc_zb_destroy_p(void); +extern int utc_zb_destroy_n(void); +extern int utc_zb_ev_get_enable_status_n(void); +extern int utc_zb_ev_get_form_network_panid_n(void); +extern int utc_zb_ev_get_join_count_n(void); +extern int utc_zb_ev_get_join_ep_n(void); +extern int utc_zb_ev_get_child_left_status_n(void); +extern int utc_zb_ev_get_global_default_rsp_ep_n(void); +extern int utc_zb_ev_get_global_default_rsp_cluster_id_n(void); +extern int utc_zb_ev_get_global_default_rsp_command_id_n(void); +extern int utc_zb_ev_get_global_default_rsp_status_n(void); +extern int utc_zb_ev_get_enroll_request_src_ep_n(void); +extern int utc_zb_ev_get_enroll_request_zone_type_n(void); +extern int utc_zb_ev_get_enroll_request_mfg_code_n(void); +extern int utc_zb_ev_get_ias_noti_src_ep_n(void); +extern int utc_zb_ev_get_ias_noti_zone_status_n(void); +extern int utc_zb_ev_get_ias_ext_noti_src_ep_n(void); +extern int utc_zb_ev_get_ias_ext_noti_status_n(void); +extern int utc_zb_ev_get_ias_ext_noti_zone_status_n(void); +extern int utc_zb_ev_get_ias_ext_noti_delay_n(void); +extern int utc_zb_ev_get_ias_ext_noti_zone_id_n(void); +extern int utc_zb_set_event_cb_p(void); +extern int utc_zb_set_event_cb_n(void); +extern int utc_zb_form_network_p(void); +extern int utc_zb_form_network_n(void); +extern int utc_zb_disable_network_p(void); +extern int utc_zb_disable_network_n(void); +extern int utc_zb_leave_device_p(void); +extern int utc_zb_leave_device_n(void); +extern int utc_zb_permit_join_p(void); +extern int utc_zb_permit_join_n(void); +extern int utc_zb_get_controller_mac_address_p(void); +extern int utc_zb_get_controller_mac_address_n(void); +extern int utc_zb_get_network_info_p(void); +extern int utc_zb_get_network_info_n(void); + +extern int utc_zb_end_dev_get_ep_list_p(void); +extern int utc_zb_end_dev_get_ep_list_n(void); +extern int utc_zb_end_dev_get_cluster_list_p(void); +extern int utc_zb_end_dev_get_cluster_list_n(void); +extern int utc_zb_end_dev_get_end_dev_info_list_p(void); +extern int utc_zb_end_dev_get_end_dev_info_list_n1(void); +extern int utc_zb_end_dev_get_end_dev_info_list_n2(void); +extern int utc_zb_end_dev_info_create_p(void); +extern int utc_zb_end_dev_info_create_n(void); +extern int utc_zb_end_dev_info_clone_p(void); +extern int utc_zb_end_dev_info_clone_n(void); +extern int utc_zb_end_dev_info_destroy_p(void); +extern int utc_zb_end_dev_info_destroy_n(void); +extern int utc_zb_end_dev_info_list_free_p(void); +extern int utc_zb_end_dev_info_list_free_n(void); +extern int utc_zb_end_dev_info_get_network_address_n(void); +extern int utc_zb_end_dev_info_get_ieee_address_n(void); +extern int utc_zb_end_dev_info_get_num_of_ep_n(void); +extern int utc_zb_end_dev_info_get_ep_list_n(void); +extern int utc_zb_end_dev_info_get_mac_capability_n(void); +extern int utc_zb_end_dev_info_get_alternative_pan_coordinator_n(void); +extern int utc_zb_end_dev_info_get_device_id_n(void); +extern int utc_zb_end_dev_info_get_profile_id_n(void); +extern int utc_zb_end_dev_info_get_power_source_n(void); +extern int utc_zb_end_dev_info_get_security_capabilty_n(void); + +/* Zigbee ZDO */ + +#ifdef SUPPORT_SIMPLE_DESCRIPTION +extern int utc_zb_simple_desc_create_p(void); +extern int utc_zb_simple_desc_create_n(void); +extern int utc_zb_simple_desc_destroy_p(void); +extern int utc_zb_simple_desc_destroy_n(void); +extern int utc_zb_simple_desc_clone_p(void); +extern int utc_zb_simple_desc_clone_n(void); +extern int utc_zb_simple_desc_get_ep_p(void); +extern int utc_zb_simple_desc_get_ep_n(void); +extern int utc_zb_simple_desc_set_ep_p(void); +extern int utc_zb_simple_desc_set_ep_n(void); +extern int utc_zb_simple_desc_get_profile_id_p(void); +extern int utc_zb_simple_desc_get_profile_id_n(void); +extern int utc_zb_simple_desc_set_profile_id_p(void); +extern int utc_zb_simple_desc_set_profile_id_n(void); +extern int utc_zb_simple_desc_get_device_id_p(void); +extern int utc_zb_simple_desc_get_device_id_n(void); +extern int utc_zb_simple_desc_set_device_id_p(void); +extern int utc_zb_simple_desc_set_device_id_n(void); +extern int utc_zb_simple_desc_get_device_ver_p(void); +extern int utc_zb_simple_desc_get_device_ver_n(void); +extern int utc_zb_simple_desc_set_device_ver_p(void); +extern int utc_zb_simple_desc_set_device_ver_n(void); +extern int utc_zb_simple_desc_get_num_of_in_clusters_p(void); +extern int utc_zb_simple_desc_get_num_of_in_clusters_n(void); +extern int utc_zb_simple_desc_set_num_of_in_clusters_p(void); +extern int utc_zb_simple_desc_set_num_of_in_clusters_n(void); +extern int utc_zb_simple_desc_get_num_of_out_clusters_p(void); +extern int utc_zb_simple_desc_get_num_of_out_clusters_n(void); +extern int utc_zb_simple_desc_set_num_of_out_clusters_p(void); +extern int utc_zb_simple_desc_set_num_of_out_clusters_n(void); +extern int utc_zb_simple_desc_get_in_clusters_p(void); +extern int utc_zb_simple_desc_get_in_clusters_n(void); +extern int utc_zb_simple_desc_set_in_clusters_p(void); +extern int utc_zb_simple_desc_set_in_clusters_n(void); +extern int utc_zb_simple_desc_get_out_clusters_p(void); +extern int utc_zb_simple_desc_get_out_clusters_n(void); +extern int utc_zb_simple_desc_set_out_clusters_p(void); +extern int utc_zb_simple_desc_set_out_clusters_n(void); +#endif /* SUPPORT_SIMPLE_DESCRIPTION */ + +#ifdef SUPPORT_ZDO_DEVICE_DISCOVERY_MANAGER +/* Zigbee ZDO Device Discovery */ +extern int utc_zb_zdo_nwk_addr_req_p(void); +extern int utc_zb_zdo_nwk_addr_req_n(void); +extern int utc_zb_zdo_ieee_addr_req_p(void); +extern int utc_zb_zdo_ieee_addr_req_n(void); +extern int utc_zb_zdo_active_ep_p(void); +extern int utc_zb_zdo_active_ep_n(void); +extern int utc_zb_zdo_simple_desc_req_p(void); +extern int utc_zb_zdo_simple_desc_req_n(void); +#endif /* SUPPORT_ZDO_DEVICE_DISCOVERY_MANAGER */ + +#ifdef SUPPORT_ZCL_GLOBAL_COMMNAD_CLUSTER +/* Global Command */ +extern int utc_zb_zcl_global_attr_read_p(void); +extern int utc_zb_zcl_global_attr_read_n(void); +extern int utc_zb_zcl_global_attr_write_p(void); +extern int utc_zb_zcl_global_attr_write_n(void); +extern int utc_zb_zcl_global_attr_write_undivided_p(void); +extern int utc_zb_zcl_global_attr_write_undivided_n(void); +extern int utc_zb_zcl_global_attr_write_no_rsp_p(void); +extern int utc_zb_zcl_global_attr_write_no_rsp_n(void); +extern int utc_zb_zcl_global_config_report_write_p(void); +extern int utc_zb_zcl_global_config_report_write_n(void); +extern int utc_zb_zcl_global_config_report_read_p(void); +extern int utc_zb_zcl_global_config_report_read_n(void); +extern int utc_zb_zcl_global_config_report_read_n(void); +#endif /* SUPPORT_ZCL_GLOBAL_COMMNAD_CLUSTER */ + +#ifdef SUPPORT_ZCL_READ_ATTRIBUTE_STATUS_RECORD +extern int utc_zb_read_attr_status_record_create_p(void); +extern int utc_zb_read_attr_status_record_create_n(void); +extern int utc_zb_read_attr_status_record_clone_p(void); +extern int utc_zb_read_attr_status_record_clone_n(void); +extern int utc_zb_read_attr_status_record_destroy_p(void); +extern int utc_zb_read_attr_status_record_destroy_n(void); +extern int utc_zb_read_attr_status_record_set_id_p(void); +extern int utc_zb_read_attr_status_record_set_id_n(void); +extern int utc_zb_read_attr_status_record_get_id_p(void); +extern int utc_zb_read_attr_status_record_get_id_n(void); +extern int utc_zb_read_attr_status_record_set_status_p(void); +extern int utc_zb_read_attr_status_record_set_status_n(void); +extern int utc_zb_read_attr_status_record_get_status_p(void); +extern int utc_zb_read_attr_status_record_get_status_n(void); +extern int utc_zb_read_attr_status_record_set_type_p(void); +extern int utc_zb_read_attr_status_record_set_type_n(void); +extern int utc_zb_read_attr_status_record_get_type_p(void); +extern int utc_zb_read_attr_status_record_get_type_n(void); +extern int utc_zb_read_attr_status_record_set_value_p(void); +extern int utc_zb_read_attr_status_record_set_value_n(void); +extern int utc_zb_read_attr_status_record_get_value_p(void); +extern int utc_zb_read_attr_status_record_get_value_n(void); +#endif /* SUPPORT_ZCL_READ_ATTRIBUTE_STATUS_RECORD */ + +#ifdef SUPPORT_ZCL_WRITE_ATTRIBUTE_STATUS +extern int utc_zb_write_attr_record_create_p(void); +extern int utc_zb_write_attr_record_create_n(void); +extern int utc_zb_write_attr_record_destroy_p(void); +extern int utc_zb_write_attr_record_destroy_n(void); +extern int utc_zb_write_attr_record_set_id_p(void); +extern int utc_zb_write_attr_record_set_id_n(void); +extern int utc_zb_write_attr_record_set_value_p(void); +extern int utc_zb_write_attr_record_set_value_n(void); +extern int utc_zb_write_attr_status_create_p(void); +extern int utc_zb_write_attr_status_create_n(void); +extern int utc_zb_write_attr_status_destroy_p(void); +extern int utc_zb_write_attr_status_destroy_n(void); +extern int utc_zb_write_attr_status_set_status_p(void); +extern int utc_zb_write_attr_status_set_status_n(void); +extern int utc_zb_write_attr_status_get_status_p(void); +extern int utc_zb_write_attr_status_get_status_n(void); +extern int utc_zb_write_attr_status_set_id_p(void); +extern int utc_zb_write_attr_status_set_id_n(void); +extern int utc_zb_write_attr_status_get_id_p(void); +extern int utc_zb_write_attr_status_get_id_n(void); +#endif /* SUPPORT_ZCL_WRITE_ATTRIBUTE_STATUS */ + +#ifdef SUPPORT_ZCL_REPORT_CONFIG_REPORT +extern int utc_zb_report_config_record_create_p(void); +extern int utc_zb_report_config_record_create_n(void); +extern int utc_zb_report_config_record_clone_p(void); +extern int utc_zb_report_config_record_clone_n(void); +extern int utc_zb_report_config_record_destroy_p(void); +extern int utc_zb_report_config_record_destroy_n(void); +extern int utc_zb_report_config_record_set_dir_p(void); +extern int utc_zb_report_config_record_set_dir_n(void); +extern int utc_zb_report_config_record_get_dir_p(void); +extern int utc_zb_report_config_record_get_dir_n(void); +extern int utc_zb_report_config_record_set_id_p(void); +extern int utc_zb_report_config_record_set_id_n(void); +extern int utc_zb_report_config_record_get_id_p(void); +extern int utc_zb_report_config_record_get_id_n(void); +extern int utc_zb_report_config_record_set_min_interval_p(void); +extern int utc_zb_report_config_record_set_min_interval_n(void); +extern int utc_zb_report_config_record_get_min_interval_p(void); +extern int utc_zb_report_config_record_get_min_interval_n(void); +extern int utc_zb_report_config_record_set_max_interval_p(void); +extern int utc_zb_report_config_record_set_max_interval_n(void); +extern int utc_zb_report_config_record_get_max_interval_p(void); +extern int utc_zb_report_config_record_get_max_interval_n(void); +extern int utc_zb_report_config_record_set_timeout_p(void); +extern int utc_zb_report_config_record_set_timeout_n(void); +extern int utc_zb_report_config_record_get_timeout_p(void); +extern int utc_zb_report_config_record_get_timeout_n(void); +extern int utc_zb_report_config_record_set_change_p(void); +extern int utc_zb_report_config_record_set_change_n(void); +extern int utc_zb_report_config_record_get_change_p(void); +extern int utc_zb_report_config_record_get_change_n(void); +#endif /* SUPPORT_ZCL_REPORT_CONFIG_REPORT */ + +#ifdef SUPPORT_ZCL_READ_REPORT_CONFIG_RECORD +extern int utc_zb_read_report_config_record_create_p(void); +extern int utc_zb_read_report_config_record_create_n(void); +extern int utc_zb_read_report_config_record_destroy_p(void); +extern int utc_zb_read_report_config_record_destroy_n(void); +extern int utc_zb_read_report_config_record_set_dir_p(void); +extern int utc_zb_read_report_config_record_set_dir_n(void); +extern int utc_zb_read_report_config_record_set_id_p(void); +extern int utc_zb_read_report_config_record_set_id_n(void); +#endif /* SUPPORT_ZCL_READ_REPORT_CONFIG_RECORD */ + +#ifdef SUPPORT_ZCL_REPORT_CONFIG_RESPONSE_RECORD +extern int utc_zb_report_config_response_record_clone_n(void); +extern int utc_zb_report_config_response_record_destroy_n(void); +extern int utc_zb_report_config_response_record_get_status_n(void); +extern int utc_zb_report_config_response_record_get_dir_n(void); +extern int utc_zb_report_config_response_record_get_id_n(void); +#endif /* SUPPORT_ZCL_REPORT_CONFIG_RESPONSE_RECORD */ + +#ifdef SUPPORT_ZCL_IAS_ZONE_CLUSTER +/* IAS Zone Cluster */ +extern int utc_zb_zcl_zone_enroll_response_p(void); +extern int utc_zb_zcl_zone_enroll_response_n(void); +#endif /* SUPPORT_ZCL_IAS_ZONE_CLUSTER */ + +#ifdef SUPPORT_ZCL_ON_OFF_CLUSTER +/* On/Off Cluster */ +extern int utc_zb_zcl_on_off_control_p(void); +extern int utc_zb_zcl_on_off_control_n(void); +#endif /* SUPPORT_ZCL_ON_OFF_CLUSTER */ + +testcase tc_array[] = { + /* Zigbee APIs */ + {"utc_zb_create_p", utc_zb_create_p, utc_startup, utc_cleanup}, + {"utc_zb_create_n", utc_zb_create_n, utc_startup, utc_cleanup}, + {"utc_zb_destroy_p", utc_zb_destroy_p, utc_startup, utc_cleanup}, + {"utc_zb_destroy_n", utc_zb_destroy_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_enable_status_n", utc_zb_ev_get_enable_status_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_form_network_panid_n", utc_zb_ev_get_form_network_panid_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_join_count_n", utc_zb_ev_get_join_count_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_join_ep_n", utc_zb_ev_get_join_ep_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_child_left_status_n", utc_zb_ev_get_child_left_status_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_global_default_rsp_ep_n", utc_zb_ev_get_global_default_rsp_ep_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_global_default_rsp_cluster_id_n", utc_zb_ev_get_global_default_rsp_cluster_id_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_global_default_rsp_command_id_n", utc_zb_ev_get_global_default_rsp_command_id_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_global_default_rsp_status_n", utc_zb_ev_get_global_default_rsp_status_n, utc_startup, utc_cleanup}, + + {"utc_zb_ev_get_enroll_request_src_ep_n", utc_zb_ev_get_enroll_request_src_ep_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_enroll_request_zone_type_n", utc_zb_ev_get_enroll_request_zone_type_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_enroll_request_mfg_code_n", utc_zb_ev_get_enroll_request_mfg_code_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_noti_src_ep_n", utc_zb_ev_get_ias_noti_src_ep_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_noti_zone_status_n", utc_zb_ev_get_ias_noti_zone_status_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_ext_noti_src_ep_n", utc_zb_ev_get_ias_ext_noti_src_ep_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_ext_noti_status_n", utc_zb_ev_get_ias_ext_noti_status_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_ext_noti_zone_status_n", utc_zb_ev_get_ias_ext_noti_zone_status_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_ext_noti_delay_n", utc_zb_ev_get_ias_ext_noti_delay_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_ext_noti_zone_id_n", utc_zb_ev_get_ias_ext_noti_zone_id_n, utc_startup, utc_cleanup}, + {"utc_zb_set_event_cb_p", utc_zb_set_event_cb_p, utc_startup, utc_cleanup}, + {"utc_zb_set_event_cb_n", utc_zb_set_event_cb_n, utc_startup, utc_cleanup}, + {"utc_zb_form_network_p", utc_zb_form_network_p, utc_startup, utc_cleanup}, + {"utc_zb_form_network_n", utc_zb_form_network_n, utc_startup, utc_cleanup}, + {"utc_zb_disable_network_p", utc_zb_disable_network_p, utc_startup, utc_cleanup}, + {"utc_zb_disable_network_n", utc_zb_disable_network_n, utc_startup, utc_cleanup}, + {"utc_zb_leave_device_p", utc_zb_leave_device_p, utc_startup, utc_cleanup}, + {"utc_zb_leave_device_n", utc_zb_leave_device_n, utc_startup, utc_cleanup}, + {"utc_zb_permit_join_p", utc_zb_permit_join_p, utc_startup, utc_cleanup}, + {"utc_zb_permit_join_n", utc_zb_permit_join_n, utc_startup, utc_cleanup}, + {"utc_zb_get_controller_mac_address_p", utc_zb_get_controller_mac_address_p, utc_startup, utc_cleanup}, + {"utc_zb_get_controller_mac_address_n", utc_zb_get_controller_mac_address_n, utc_startup, utc_cleanup}, + {"utc_zb_get_network_info_p", utc_zb_get_network_info_p, utc_startup, utc_cleanup}, + {"utc_zb_get_network_info_n", utc_zb_get_network_info_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_ep_list_p", utc_zb_end_dev_get_ep_list_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_ep_list_n", utc_zb_end_dev_get_ep_list_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_cluster_list_p", utc_zb_end_dev_get_cluster_list_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_cluster_list_n", utc_zb_end_dev_get_cluster_list_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_end_dev_info_list_p", utc_zb_end_dev_get_end_dev_info_list_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_end_dev_info_list_n1", utc_zb_end_dev_get_end_dev_info_list_n1, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_end_dev_info_list_n2", utc_zb_end_dev_get_end_dev_info_list_n2, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_list_free_p", utc_zb_end_dev_info_list_free_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_list_free_n", utc_zb_end_dev_info_list_free_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_create_p", utc_zb_end_dev_info_create_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_create_n", utc_zb_end_dev_info_create_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_clone_p", utc_zb_end_dev_info_clone_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_clone_n", utc_zb_end_dev_info_clone_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_destroy_p", utc_zb_end_dev_info_destroy_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_destroy_n", utc_zb_end_dev_info_destroy_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_network_address_n", utc_zb_end_dev_info_get_network_address_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_ieee_address_n", utc_zb_end_dev_info_get_ieee_address_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_num_of_ep_n", utc_zb_end_dev_info_get_num_of_ep_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_ep_list_n", utc_zb_end_dev_info_get_ep_list_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_mac_capability_n", utc_zb_end_dev_info_get_mac_capability_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_alternative_pan_coordinator_n", utc_zb_end_dev_info_get_alternative_pan_coordinator_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_device_id_n", utc_zb_end_dev_info_get_device_id_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_profile_id_n", utc_zb_end_dev_info_get_profile_id_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_power_source_n", utc_zb_end_dev_info_get_power_source_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_security_capabilty_n", utc_zb_end_dev_info_get_security_capabilty_n, utc_startup, utc_cleanup}, + +#ifdef SUPPORT_SIMPLE_DESCRIPTION + /* Zigbee ZDO - Simple Descripter Getter/Setter */ + {"utc_zb_simple_desc_create_p", utc_zb_simple_desc_create_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_create_n", utc_zb_simple_desc_create_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_destroy_p", utc_zb_simple_desc_destroy_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_destroy_n", utc_zb_simple_desc_destroy_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_clone_p", utc_zb_simple_desc_clone_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_clone_n", utc_zb_simple_desc_clone_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_ep_p", utc_zb_simple_desc_get_ep_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_ep_n", utc_zb_simple_desc_get_ep_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_ep_p", utc_zb_simple_desc_set_ep_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_ep_n", utc_zb_simple_desc_set_ep_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_profile_id_p", utc_zb_simple_desc_get_profile_id_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_profile_id_n", utc_zb_simple_desc_get_profile_id_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_profile_id_p", utc_zb_simple_desc_set_profile_id_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_profile_id_n", utc_zb_simple_desc_set_profile_id_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_device_id_p", utc_zb_simple_desc_get_device_id_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_device_id_n", utc_zb_simple_desc_get_device_id_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_device_id_p", utc_zb_simple_desc_set_device_id_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_device_id_n", utc_zb_simple_desc_set_device_id_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_device_ver_p", utc_zb_simple_desc_get_device_ver_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_device_ver_n", utc_zb_simple_desc_get_device_ver_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_device_ver_p", utc_zb_simple_desc_set_device_ver_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_device_ver_n", utc_zb_simple_desc_set_device_ver_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_num_of_in_clusters_p", utc_zb_simple_desc_get_num_of_in_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_num_of_in_clusters_n", utc_zb_simple_desc_get_num_of_in_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_num_of_in_clusters_p", utc_zb_simple_desc_set_num_of_in_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_num_of_in_clusters_n", utc_zb_simple_desc_set_num_of_in_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_num_of_out_clusters_p", utc_zb_simple_desc_get_num_of_out_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_num_of_out_clusters_n", utc_zb_simple_desc_get_num_of_out_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_num_of_out_clusters_p", utc_zb_simple_desc_set_num_of_out_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_num_of_out_clusters_n", utc_zb_simple_desc_set_num_of_out_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_in_clusters_p", utc_zb_simple_desc_get_in_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_in_clusters_n", utc_zb_simple_desc_get_in_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_in_clusters_p", utc_zb_simple_desc_set_in_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_in_clusters_n", utc_zb_simple_desc_set_in_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_out_clusters_p", utc_zb_simple_desc_get_out_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_out_clusters_n", utc_zb_simple_desc_get_out_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_out_clusters_p", utc_zb_simple_desc_set_out_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_out_clusters_n", utc_zb_simple_desc_set_out_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, +#endif /* SUPPORT_SIMPLE_DESCRIPTION*/ + +#ifdef SUPPORT_ZDO_DEVICE_DISCOVERY_MANAGER + /* Zigbee ZDO - Device Discovery */ + {"utc_zb_zdo_nwk_addr_req_p", utc_zb_zdo_nwk_addr_req_p, utc_startup, utc_startup}, + {"utc_zb_zdo_nwk_addr_req_n", utc_zb_zdo_nwk_addr_req_n, utc_startup, utc_startup}, + {"utc_zb_zdo_ieee_addr_req_p", utc_zb_zdo_ieee_addr_req_p, utc_startup, utc_startup}, + {"utc_zb_zdo_ieee_addr_req_n", utc_zb_zdo_ieee_addr_req_n, utc_startup, utc_startup}, + {"utc_zb_zdo_active_ep_p", utc_zb_zdo_active_ep_p, utc_startup, utc_startup}, + {"utc_zb_zdo_active_ep_n", utc_zb_zdo_active_ep_n, utc_startup, utc_startup}, + {"utc_zb_zdo_simple_desc_req_p", utc_zb_zdo_simple_desc_req_p, utc_startup, utc_startup}, + {"utc_zb_zdo_simple_desc_req_n", utc_zb_zdo_simple_desc_req_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZDO_DEVICE_DISCOVERY_MANAGER */ + +#if defined(SUPPORT_ZCL_GLOBAL_COMMNAD_CLUSTER) + /* Zigbee ZCL - Global Cluster */ + {"utc_zb_zcl_global_attr_read_p", utc_zb_zcl_global_attr_read_p, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_read_n", utc_zb_zcl_global_attr_read_n, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_write_p", utc_zb_zcl_global_attr_write_p, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_write_n", utc_zb_zcl_global_attr_write_n, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_write_undivided_p", utc_zb_zcl_global_attr_write_undivided_p, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_write_undivided_n", utc_zb_zcl_global_attr_write_undivided_n, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_write_no_rsp_p", utc_zb_zcl_global_attr_write_no_rsp_p, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_write_no_rsp_n", utc_zb_zcl_global_attr_write_no_rsp_n, utc_startup, utc_startup}, + {"utc_zb_zcl_global_config_report_write_p", utc_zb_zcl_global_config_report_write_p, utc_startup, utc_startup}, + {"utc_zb_zcl_global_config_report_write_n", utc_zb_zcl_global_config_report_write_n, utc_startup, utc_startup}, + {"utc_zb_zcl_global_config_report_read_p", utc_zb_zcl_global_config_report_write_n, utc_startup, utc_startup}, + {"utc_zb_zcl_global_config_report_read_n", utc_zb_zcl_global_config_report_read_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_GLOBAL_COMMAND_CLUSTER */ + +#ifdef SUPPORT_ZCL_IAS_ZONE_CLUSTER + /* Zigbee ZCL - IAS Zone Cluster */ + {"utc_zb_zcl_zone_enroll_response_p", utc_zb_zcl_zone_enroll_response_p, utc_startup, utc_startup}, + {"utc_zb_zcl_zone_enroll_response_n", utc_zb_zcl_zone_enroll_response_p, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_IAS_ZONE_CLUSTER */ + +#ifdef SUPPORT_ZCL_ON_OFF_CLUSTER + /* Zigbee ZCL - On/Off Cluster */ + {"utc_zb_zcl_on_off_control_p", utc_zb_zcl_on_off_control_p, utc_startup, utc_startup}, + {"utc_zb_zcl_on_off_control_n", utc_zb_zcl_on_off_control_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_ON_OFF_CLUSTER */ + +#ifdef SUPPORT_ZCL_READ_ATTRIBUTE_STATUS_RECORD + /* Zigbee ZCL - Read Attribute Status Record Getter/Setter */ + {"utc_zb_read_attr_status_record_create_p", utc_zb_read_attr_status_record_create_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_create_n", utc_zb_read_attr_status_record_create_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_clone_p", utc_zb_read_attr_status_record_clone_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_clone_n", utc_zb_read_attr_status_record_clone_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_destroy_p", utc_zb_read_attr_status_record_destroy_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_destroy_n", utc_zb_read_attr_status_record_destroy_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_id_p", utc_zb_read_attr_status_record_set_id_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_id_n", utc_zb_read_attr_status_record_set_id_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_id_p", utc_zb_read_attr_status_record_get_id_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_id_n", utc_zb_read_attr_status_record_get_id_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_status_p", utc_zb_read_attr_status_record_set_status_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_status_n", utc_zb_read_attr_status_record_set_status_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_status_p", utc_zb_read_attr_status_record_get_status_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_status_n", utc_zb_read_attr_status_record_get_status_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_type_p", utc_zb_read_attr_status_record_get_status_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_type_n", utc_zb_read_attr_status_record_set_type_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_type_p", utc_zb_read_attr_status_record_get_type_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_type_n", utc_zb_read_attr_status_record_get_type_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_value_p", utc_zb_read_attr_status_record_set_value_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_value_n", utc_zb_read_attr_status_record_set_value_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_value_p", utc_zb_read_attr_status_record_get_value_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_value_n", utc_zb_read_attr_status_record_get_value_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_READ_ATTRIBUTE_STATUS_RECORD */ + +#ifdef SUPPORT_ZCL_WRITE_ATTRIBUTE_STATUS + /* Zigbee ZCL - Write Attribute Status Record Getter/Setter */ + {"utc_zb_write_attr_record_create_p", utc_zb_write_attr_record_create_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_create_n", utc_zb_write_attr_record_create_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_destroy_p", utc_zb_write_attr_record_destroy_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_destroy_n", utc_zb_write_attr_record_destroy_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_set_id_p", utc_zb_write_attr_record_set_id_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_set_id_n", utc_zb_write_attr_record_set_id_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_set_value_p", utc_zb_write_attr_record_set_value_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_set_value_n", utc_zb_write_attr_record_set_value_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_create_p", utc_zb_write_attr_status_create_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_create_n", utc_zb_write_attr_status_create_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_destroy_p", utc_zb_write_attr_status_destroy_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_destroy_n", utc_zb_write_attr_status_destroy_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_set_status_p", utc_zb_write_attr_status_set_status_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_set_status_n", utc_zb_write_attr_status_set_status_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_get_status_p", utc_zb_write_attr_status_get_status_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_get_status_n", utc_zb_write_attr_status_get_status_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_set_id_p", utc_zb_write_attr_status_set_id_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_set_id_n", utc_zb_write_attr_status_set_id_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_get_id_p", utc_zb_write_attr_status_get_id_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_get_id_n", utc_zb_write_attr_status_get_id_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_WRITE_ATTRIBUTE_STATUS */ + +#ifdef SUPPORT_ZCL_REPORT_CONFIG_REPORT + /* Zigbee ZCL - Report Configuration Record Getter/Setter */ + {"utc_zb_report_config_record_create_p", utc_zb_report_config_record_create_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_create_n", utc_zb_report_config_record_create_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_clone_p", utc_zb_report_config_record_clone_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_clone_n", utc_zb_report_config_record_clone_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_destroy_p", utc_zb_report_config_record_destroy_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_destroy_n", utc_zb_report_config_record_destroy_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_dir_p", utc_zb_report_config_record_set_dir_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_dir_n", utc_zb_report_config_record_set_dir_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_dir_p", utc_zb_report_config_record_get_dir_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_dir_n", utc_zb_report_config_record_get_dir_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_id_p", utc_zb_report_config_record_set_id_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_id_n", utc_zb_report_config_record_set_id_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_id_p", utc_zb_report_config_record_get_id_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_id_n", utc_zb_report_config_record_get_id_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_min_interval_p", utc_zb_report_config_record_set_min_interval_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_min_interval_n", utc_zb_report_config_record_set_min_interval_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_min_interval_p", utc_zb_report_config_record_get_min_interval_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_min_interval_n", utc_zb_report_config_record_get_min_interval_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_max_interval_p", utc_zb_report_config_record_set_max_interval_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_max_interval_n", utc_zb_report_config_record_set_max_interval_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_max_interval_p", utc_zb_report_config_record_get_max_interval_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_max_interval_n", utc_zb_report_config_record_get_max_interval_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_timeout_p", utc_zb_report_config_record_set_timeout_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_timeout_n", utc_zb_report_config_record_set_timeout_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_timeout_p", utc_zb_report_config_record_get_timeout_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_timeout_n", utc_zb_report_config_record_get_timeout_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_change_p", utc_zb_report_config_record_set_change_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_change_n", utc_zb_report_config_record_set_change_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_change_p", utc_zb_report_config_record_get_change_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_change_n", utc_zb_report_config_record_get_change_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_REPORT_CONFIG_REPORT */ + +#ifdef SUPPORT_ZCL_READ_REPORT_CONFIG_RECORD + /* Zigbee ZCL - Read Report Configuration Record Getter/Setter */ + {"utc_zb_read_report_config_record_create_p", utc_zb_read_report_config_record_create_p, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_create_n", utc_zb_read_report_config_record_create_n, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_destroy_p", utc_zb_read_report_config_record_destroy_p, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_destroy_n", utc_zb_read_report_config_record_destroy_n, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_set_dir_p", utc_zb_read_report_config_record_set_dir_p, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_set_dir_n", utc_zb_read_report_config_record_set_dir_n, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_set_id_p", utc_zb_read_report_config_record_set_id_p, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_set_id_n", utc_zb_read_report_config_record_set_id_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_READ_REPORT_CONFIG_RECORD */ + +#ifdef SUPPORT_ZCL_REPORT_CONFIG_RESPONSE_RECORD + /* Zigbee ZCL - Report Configuration Response Getter/Setter */ + {"utc_zb_report_config_response_record_clone_n", utc_zb_report_config_response_record_clone_n, utc_startup, utc_startup}, + {"utc_zb_report_config_response_record_destroy_n", utc_zb_report_config_response_record_destroy_n, utc_startup, utc_startup}, + {"utc_zb_report_config_response_record_get_status_n", utc_zb_report_config_response_record_get_status_n, utc_startup, utc_startup}, + {"utc_zb_report_config_response_record_get_dir_n", utc_zb_report_config_response_record_get_dir_n, utc_startup, utc_startup}, + {"utc_zb_report_config_response_record_get_id_n", utc_zb_report_config_response_record_get_id_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_REPORT_CONFIG_RESPONSE_RECORD */ + + {NULL, NULL} +}; + +#endif // __TCT_ZIGBEE_NATIVE_H__ diff --git a/src/utc/zigbee/tct-zigbee-core_tv.h b/src/utc/zigbee/tct-zigbee-core_tv.h new file mode 100644 index 000000000..0ddfb5b78 --- /dev/null +++ b/src/utc/zigbee/tct-zigbee-core_tv.h @@ -0,0 +1,539 @@ +// +// Copyright (c) 2014 Samsung Electronics Co., Ltd. +// +// Licensed under the Apache License, Version 2.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef __TCT_ZIGBEE_NATIVE_H__ +#define __TCT_ZIGBEE_NATIVE_H__ + +#include "testcase.h" +#include "tct_common.h" +#include "utc-zigbee.h" + +extern void utc_startup(void); +extern void utc_cleanup(void); +extern void utc_zdo_simple_desc_startup(void); +extern void utc_zdo_simple_desc_cleanup(void); +extern void utc_zdo_power_desc_startup(void); +extern void utc_zdo_power_desc_cleanup(void); +extern void utc_zdo_node_desc_startup(void); +extern void utc_zdo_node_desc_cleanup(void); +extern void utc_zdo_getter_startup(void); +extern void utc_zdo_getter_cleanup(void); + +/* Zigbee APIs */ +extern int utc_zb_create_p(void); +extern int utc_zb_create_n(void); +extern int utc_zb_destroy_p(void); +extern int utc_zb_destroy_n(void); +extern int utc_zb_ev_get_enable_status_n(void); +extern int utc_zb_ev_get_form_network_panid_n(void); +extern int utc_zb_ev_get_join_count_n(void); +extern int utc_zb_ev_get_join_ep_n(void); +extern int utc_zb_ev_get_child_left_status_n(void); +extern int utc_zb_ev_get_global_default_rsp_ep_n(void); +extern int utc_zb_ev_get_global_default_rsp_cluster_id_n(void); +extern int utc_zb_ev_get_global_default_rsp_command_id_n(void); +extern int utc_zb_ev_get_global_default_rsp_status_n(void); +extern int utc_zb_ev_get_enroll_request_src_ep_n(void); +extern int utc_zb_ev_get_enroll_request_zone_type_n(void); +extern int utc_zb_ev_get_enroll_request_mfg_code_n(void); +extern int utc_zb_ev_get_ias_noti_src_ep_n(void); +extern int utc_zb_ev_get_ias_noti_zone_status_n(void); +extern int utc_zb_ev_get_ias_ext_noti_src_ep_n(void); +extern int utc_zb_ev_get_ias_ext_noti_status_n(void); +extern int utc_zb_ev_get_ias_ext_noti_zone_status_n(void); +extern int utc_zb_ev_get_ias_ext_noti_delay_n(void); +extern int utc_zb_ev_get_ias_ext_noti_zone_id_n(void); +extern int utc_zb_set_event_cb_p(void); +extern int utc_zb_set_event_cb_n(void); +extern int utc_zb_form_network_p(void); +extern int utc_zb_form_network_n(void); +extern int utc_zb_disable_network_p(void); +extern int utc_zb_disable_network_n(void); +extern int utc_zb_leave_device_p(void); +extern int utc_zb_leave_device_n(void); +extern int utc_zb_permit_join_p(void); +extern int utc_zb_permit_join_n(void); +extern int utc_zb_get_controller_mac_address_p(void); +extern int utc_zb_get_controller_mac_address_n(void); +extern int utc_zb_get_network_info_p(void); +extern int utc_zb_get_network_info_n(void); + +extern int utc_zb_end_dev_get_ep_list_p(void); +extern int utc_zb_end_dev_get_ep_list_n(void); +extern int utc_zb_end_dev_get_cluster_list_p(void); +extern int utc_zb_end_dev_get_cluster_list_n(void); +extern int utc_zb_end_dev_get_end_dev_info_list_p(void); +extern int utc_zb_end_dev_get_end_dev_info_list_n1(void); +extern int utc_zb_end_dev_get_end_dev_info_list_n2(void); +extern int utc_zb_end_dev_info_create_p(void); +extern int utc_zb_end_dev_info_create_n(void); +extern int utc_zb_end_dev_info_clone_p(void); +extern int utc_zb_end_dev_info_clone_n(void); +extern int utc_zb_end_dev_info_destroy_p(void); +extern int utc_zb_end_dev_info_destroy_n(void); +extern int utc_zb_end_dev_info_list_free_p(void); +extern int utc_zb_end_dev_info_list_free_n(void); +extern int utc_zb_end_dev_info_get_network_address_n(void); +extern int utc_zb_end_dev_info_get_ieee_address_n(void); +extern int utc_zb_end_dev_info_get_num_of_ep_n(void); +extern int utc_zb_end_dev_info_get_ep_list_n(void); +extern int utc_zb_end_dev_info_get_mac_capability_n(void); +extern int utc_zb_end_dev_info_get_alternative_pan_coordinator_n(void); +extern int utc_zb_end_dev_info_get_device_id_n(void); +extern int utc_zb_end_dev_info_get_profile_id_n(void); +extern int utc_zb_end_dev_info_get_power_source_n(void); +extern int utc_zb_end_dev_info_get_security_capabilty_n(void); + +/* Zigbee ZDO */ + +#ifdef SUPPORT_SIMPLE_DESCRIPTION +extern int utc_zb_simple_desc_create_p(void); +extern int utc_zb_simple_desc_create_n(void); +extern int utc_zb_simple_desc_destroy_p(void); +extern int utc_zb_simple_desc_destroy_n(void); +extern int utc_zb_simple_desc_clone_p(void); +extern int utc_zb_simple_desc_clone_n(void); +extern int utc_zb_simple_desc_get_ep_p(void); +extern int utc_zb_simple_desc_get_ep_n(void); +extern int utc_zb_simple_desc_set_ep_p(void); +extern int utc_zb_simple_desc_set_ep_n(void); +extern int utc_zb_simple_desc_get_profile_id_p(void); +extern int utc_zb_simple_desc_get_profile_id_n(void); +extern int utc_zb_simple_desc_set_profile_id_p(void); +extern int utc_zb_simple_desc_set_profile_id_n(void); +extern int utc_zb_simple_desc_get_device_id_p(void); +extern int utc_zb_simple_desc_get_device_id_n(void); +extern int utc_zb_simple_desc_set_device_id_p(void); +extern int utc_zb_simple_desc_set_device_id_n(void); +extern int utc_zb_simple_desc_get_device_ver_p(void); +extern int utc_zb_simple_desc_get_device_ver_n(void); +extern int utc_zb_simple_desc_set_device_ver_p(void); +extern int utc_zb_simple_desc_set_device_ver_n(void); +extern int utc_zb_simple_desc_get_num_of_in_clusters_p(void); +extern int utc_zb_simple_desc_get_num_of_in_clusters_n(void); +extern int utc_zb_simple_desc_set_num_of_in_clusters_p(void); +extern int utc_zb_simple_desc_set_num_of_in_clusters_n(void); +extern int utc_zb_simple_desc_get_num_of_out_clusters_p(void); +extern int utc_zb_simple_desc_get_num_of_out_clusters_n(void); +extern int utc_zb_simple_desc_set_num_of_out_clusters_p(void); +extern int utc_zb_simple_desc_set_num_of_out_clusters_n(void); +extern int utc_zb_simple_desc_get_in_clusters_p(void); +extern int utc_zb_simple_desc_get_in_clusters_n(void); +extern int utc_zb_simple_desc_set_in_clusters_p(void); +extern int utc_zb_simple_desc_set_in_clusters_n(void); +extern int utc_zb_simple_desc_get_out_clusters_p(void); +extern int utc_zb_simple_desc_get_out_clusters_n(void); +extern int utc_zb_simple_desc_set_out_clusters_p(void); +extern int utc_zb_simple_desc_set_out_clusters_n(void); +#endif /* SUPPORT_SIMPLE_DESCRIPTION */ + +#ifdef SUPPORT_ZDO_DEVICE_DISCOVERY_MANAGER +/* Zigbee ZDO Device Discovery */ +extern int utc_zb_zdo_nwk_addr_req_p(void); +extern int utc_zb_zdo_nwk_addr_req_n(void); +extern int utc_zb_zdo_ieee_addr_req_p(void); +extern int utc_zb_zdo_ieee_addr_req_n(void); +extern int utc_zb_zdo_active_ep_p(void); +extern int utc_zb_zdo_active_ep_n(void); +extern int utc_zb_zdo_simple_desc_req_p(void); +extern int utc_zb_zdo_simple_desc_req_n(void); +#endif /* SUPPORT_ZDO_DEVICE_DISCOVERY_MANAGER */ + +#ifdef SUPPORT_ZCL_GLOBAL_COMMNAD_CLUSTER +/* Global Command */ +extern int utc_zb_zcl_global_attr_read_p(void); +extern int utc_zb_zcl_global_attr_read_n(void); +extern int utc_zb_zcl_global_attr_write_p(void); +extern int utc_zb_zcl_global_attr_write_n(void); +extern int utc_zb_zcl_global_attr_write_undivided_p(void); +extern int utc_zb_zcl_global_attr_write_undivided_n(void); +extern int utc_zb_zcl_global_attr_write_no_rsp_p(void); +extern int utc_zb_zcl_global_attr_write_no_rsp_n(void); +extern int utc_zb_zcl_global_config_report_write_p(void); +extern int utc_zb_zcl_global_config_report_write_n(void); +extern int utc_zb_zcl_global_config_report_read_p(void); +extern int utc_zb_zcl_global_config_report_read_n(void); +extern int utc_zb_zcl_global_config_report_read_n(void); +#endif /* SUPPORT_ZCL_GLOBAL_COMMNAD_CLUSTER */ + +#ifdef SUPPORT_ZCL_READ_ATTRIBUTE_STATUS_RECORD +extern int utc_zb_read_attr_status_record_create_p(void); +extern int utc_zb_read_attr_status_record_create_n(void); +extern int utc_zb_read_attr_status_record_clone_p(void); +extern int utc_zb_read_attr_status_record_clone_n(void); +extern int utc_zb_read_attr_status_record_destroy_p(void); +extern int utc_zb_read_attr_status_record_destroy_n(void); +extern int utc_zb_read_attr_status_record_set_id_p(void); +extern int utc_zb_read_attr_status_record_set_id_n(void); +extern int utc_zb_read_attr_status_record_get_id_p(void); +extern int utc_zb_read_attr_status_record_get_id_n(void); +extern int utc_zb_read_attr_status_record_set_status_p(void); +extern int utc_zb_read_attr_status_record_set_status_n(void); +extern int utc_zb_read_attr_status_record_get_status_p(void); +extern int utc_zb_read_attr_status_record_get_status_n(void); +extern int utc_zb_read_attr_status_record_set_type_p(void); +extern int utc_zb_read_attr_status_record_set_type_n(void); +extern int utc_zb_read_attr_status_record_get_type_p(void); +extern int utc_zb_read_attr_status_record_get_type_n(void); +extern int utc_zb_read_attr_status_record_set_value_p(void); +extern int utc_zb_read_attr_status_record_set_value_n(void); +extern int utc_zb_read_attr_status_record_get_value_p(void); +extern int utc_zb_read_attr_status_record_get_value_n(void); +#endif /* SUPPORT_ZCL_READ_ATTRIBUTE_STATUS_RECORD */ + +#ifdef SUPPORT_ZCL_WRITE_ATTRIBUTE_STATUS +extern int utc_zb_write_attr_record_create_p(void); +extern int utc_zb_write_attr_record_create_n(void); +extern int utc_zb_write_attr_record_destroy_p(void); +extern int utc_zb_write_attr_record_destroy_n(void); +extern int utc_zb_write_attr_record_set_id_p(void); +extern int utc_zb_write_attr_record_set_id_n(void); +extern int utc_zb_write_attr_record_set_value_p(void); +extern int utc_zb_write_attr_record_set_value_n(void); +extern int utc_zb_write_attr_status_create_p(void); +extern int utc_zb_write_attr_status_create_n(void); +extern int utc_zb_write_attr_status_destroy_p(void); +extern int utc_zb_write_attr_status_destroy_n(void); +extern int utc_zb_write_attr_status_set_status_p(void); +extern int utc_zb_write_attr_status_set_status_n(void); +extern int utc_zb_write_attr_status_get_status_p(void); +extern int utc_zb_write_attr_status_get_status_n(void); +extern int utc_zb_write_attr_status_set_id_p(void); +extern int utc_zb_write_attr_status_set_id_n(void); +extern int utc_zb_write_attr_status_get_id_p(void); +extern int utc_zb_write_attr_status_get_id_n(void); +#endif /* SUPPORT_ZCL_WRITE_ATTRIBUTE_STATUS */ + +#ifdef SUPPORT_ZCL_REPORT_CONFIG_REPORT +extern int utc_zb_report_config_record_create_p(void); +extern int utc_zb_report_config_record_create_n(void); +extern int utc_zb_report_config_record_clone_p(void); +extern int utc_zb_report_config_record_clone_n(void); +extern int utc_zb_report_config_record_destroy_p(void); +extern int utc_zb_report_config_record_destroy_n(void); +extern int utc_zb_report_config_record_set_dir_p(void); +extern int utc_zb_report_config_record_set_dir_n(void); +extern int utc_zb_report_config_record_get_dir_p(void); +extern int utc_zb_report_config_record_get_dir_n(void); +extern int utc_zb_report_config_record_set_id_p(void); +extern int utc_zb_report_config_record_set_id_n(void); +extern int utc_zb_report_config_record_get_id_p(void); +extern int utc_zb_report_config_record_get_id_n(void); +extern int utc_zb_report_config_record_set_min_interval_p(void); +extern int utc_zb_report_config_record_set_min_interval_n(void); +extern int utc_zb_report_config_record_get_min_interval_p(void); +extern int utc_zb_report_config_record_get_min_interval_n(void); +extern int utc_zb_report_config_record_set_max_interval_p(void); +extern int utc_zb_report_config_record_set_max_interval_n(void); +extern int utc_zb_report_config_record_get_max_interval_p(void); +extern int utc_zb_report_config_record_get_max_interval_n(void); +extern int utc_zb_report_config_record_set_timeout_p(void); +extern int utc_zb_report_config_record_set_timeout_n(void); +extern int utc_zb_report_config_record_get_timeout_p(void); +extern int utc_zb_report_config_record_get_timeout_n(void); +extern int utc_zb_report_config_record_set_change_p(void); +extern int utc_zb_report_config_record_set_change_n(void); +extern int utc_zb_report_config_record_get_change_p(void); +extern int utc_zb_report_config_record_get_change_n(void); +#endif /* SUPPORT_ZCL_REPORT_CONFIG_REPORT */ + +#ifdef SUPPORT_ZCL_READ_REPORT_CONFIG_RECORD +extern int utc_zb_read_report_config_record_create_p(void); +extern int utc_zb_read_report_config_record_create_n(void); +extern int utc_zb_read_report_config_record_destroy_p(void); +extern int utc_zb_read_report_config_record_destroy_n(void); +extern int utc_zb_read_report_config_record_set_dir_p(void); +extern int utc_zb_read_report_config_record_set_dir_n(void); +extern int utc_zb_read_report_config_record_set_id_p(void); +extern int utc_zb_read_report_config_record_set_id_n(void); +#endif /* SUPPORT_ZCL_READ_REPORT_CONFIG_RECORD */ + +#ifdef SUPPORT_ZCL_REPORT_CONFIG_RESPONSE_RECORD +extern int utc_zb_report_config_response_record_clone_n(void); +extern int utc_zb_report_config_response_record_destroy_n(void); +extern int utc_zb_report_config_response_record_get_status_n(void); +extern int utc_zb_report_config_response_record_get_dir_n(void); +extern int utc_zb_report_config_response_record_get_id_n(void); +#endif /* SUPPORT_ZCL_REPORT_CONFIG_RESPONSE_RECORD */ + +#ifdef SUPPORT_ZCL_IAS_ZONE_CLUSTER +/* IAS Zone Cluster */ +extern int utc_zb_zcl_zone_enroll_response_p(void); +extern int utc_zb_zcl_zone_enroll_response_n(void); +#endif /* SUPPORT_ZCL_IAS_ZONE_CLUSTER */ + +#ifdef SUPPORT_ZCL_ON_OFF_CLUSTER +/* On/Off Cluster */ +extern int utc_zb_zcl_on_off_control_p(void); +extern int utc_zb_zcl_on_off_control_n(void); +#endif /* SUPPORT_ZCL_ON_OFF_CLUSTER */ + +testcase tc_array[] = { + /* Zigbee APIs */ + {"utc_zb_create_p", utc_zb_create_p, utc_startup, utc_cleanup}, + {"utc_zb_create_n", utc_zb_create_n, utc_startup, utc_cleanup}, + {"utc_zb_destroy_p", utc_zb_destroy_p, utc_startup, utc_cleanup}, + {"utc_zb_destroy_n", utc_zb_destroy_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_enable_status_n", utc_zb_ev_get_enable_status_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_form_network_panid_n", utc_zb_ev_get_form_network_panid_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_join_count_n", utc_zb_ev_get_join_count_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_join_ep_n", utc_zb_ev_get_join_ep_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_child_left_status_n", utc_zb_ev_get_child_left_status_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_global_default_rsp_ep_n", utc_zb_ev_get_global_default_rsp_ep_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_global_default_rsp_cluster_id_n", utc_zb_ev_get_global_default_rsp_cluster_id_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_global_default_rsp_command_id_n", utc_zb_ev_get_global_default_rsp_command_id_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_global_default_rsp_status_n", utc_zb_ev_get_global_default_rsp_status_n, utc_startup, utc_cleanup}, + + {"utc_zb_ev_get_enroll_request_src_ep_n", utc_zb_ev_get_enroll_request_src_ep_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_enroll_request_zone_type_n", utc_zb_ev_get_enroll_request_zone_type_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_enroll_request_mfg_code_n", utc_zb_ev_get_enroll_request_mfg_code_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_noti_src_ep_n", utc_zb_ev_get_ias_noti_src_ep_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_noti_zone_status_n", utc_zb_ev_get_ias_noti_zone_status_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_ext_noti_src_ep_n", utc_zb_ev_get_ias_ext_noti_src_ep_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_ext_noti_status_n", utc_zb_ev_get_ias_ext_noti_status_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_ext_noti_zone_status_n", utc_zb_ev_get_ias_ext_noti_zone_status_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_ext_noti_delay_n", utc_zb_ev_get_ias_ext_noti_delay_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_ext_noti_zone_id_n", utc_zb_ev_get_ias_ext_noti_zone_id_n, utc_startup, utc_cleanup}, + {"utc_zb_set_event_cb_p", utc_zb_set_event_cb_p, utc_startup, utc_cleanup}, + {"utc_zb_set_event_cb_n", utc_zb_set_event_cb_n, utc_startup, utc_cleanup}, + {"utc_zb_form_network_p", utc_zb_form_network_p, utc_startup, utc_cleanup}, + {"utc_zb_form_network_n", utc_zb_form_network_n, utc_startup, utc_cleanup}, + {"utc_zb_disable_network_p", utc_zb_disable_network_p, utc_startup, utc_cleanup}, + {"utc_zb_disable_network_n", utc_zb_disable_network_n, utc_startup, utc_cleanup}, + {"utc_zb_leave_device_p", utc_zb_leave_device_p, utc_startup, utc_cleanup}, + {"utc_zb_leave_device_n", utc_zb_leave_device_n, utc_startup, utc_cleanup}, + {"utc_zb_permit_join_p", utc_zb_permit_join_p, utc_startup, utc_cleanup}, + {"utc_zb_permit_join_n", utc_zb_permit_join_n, utc_startup, utc_cleanup}, + {"utc_zb_get_controller_mac_address_p", utc_zb_get_controller_mac_address_p, utc_startup, utc_cleanup}, + {"utc_zb_get_controller_mac_address_n", utc_zb_get_controller_mac_address_n, utc_startup, utc_cleanup}, + {"utc_zb_get_network_info_p", utc_zb_get_network_info_p, utc_startup, utc_cleanup}, + {"utc_zb_get_network_info_n", utc_zb_get_network_info_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_ep_list_p", utc_zb_end_dev_get_ep_list_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_ep_list_n", utc_zb_end_dev_get_ep_list_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_cluster_list_p", utc_zb_end_dev_get_cluster_list_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_cluster_list_n", utc_zb_end_dev_get_cluster_list_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_end_dev_info_list_p", utc_zb_end_dev_get_end_dev_info_list_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_end_dev_info_list_n1", utc_zb_end_dev_get_end_dev_info_list_n1, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_end_dev_info_list_n2", utc_zb_end_dev_get_end_dev_info_list_n2, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_list_free_p", utc_zb_end_dev_info_list_free_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_list_free_n", utc_zb_end_dev_info_list_free_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_create_p", utc_zb_end_dev_info_create_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_create_n", utc_zb_end_dev_info_create_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_clone_p", utc_zb_end_dev_info_clone_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_clone_n", utc_zb_end_dev_info_clone_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_destroy_p", utc_zb_end_dev_info_destroy_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_destroy_n", utc_zb_end_dev_info_destroy_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_network_address_n", utc_zb_end_dev_info_get_network_address_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_ieee_address_n", utc_zb_end_dev_info_get_ieee_address_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_num_of_ep_n", utc_zb_end_dev_info_get_num_of_ep_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_ep_list_n", utc_zb_end_dev_info_get_ep_list_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_mac_capability_n", utc_zb_end_dev_info_get_mac_capability_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_alternative_pan_coordinator_n", utc_zb_end_dev_info_get_alternative_pan_coordinator_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_device_id_n", utc_zb_end_dev_info_get_device_id_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_profile_id_n", utc_zb_end_dev_info_get_profile_id_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_power_source_n", utc_zb_end_dev_info_get_power_source_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_security_capabilty_n", utc_zb_end_dev_info_get_security_capabilty_n, utc_startup, utc_cleanup}, + +#ifdef SUPPORT_SIMPLE_DESCRIPTION + /* Zigbee ZDO - Simple Descripter Getter/Setter */ + {"utc_zb_simple_desc_create_p", utc_zb_simple_desc_create_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_create_n", utc_zb_simple_desc_create_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_destroy_p", utc_zb_simple_desc_destroy_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_destroy_n", utc_zb_simple_desc_destroy_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_clone_p", utc_zb_simple_desc_clone_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_clone_n", utc_zb_simple_desc_clone_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_ep_p", utc_zb_simple_desc_get_ep_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_ep_n", utc_zb_simple_desc_get_ep_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_ep_p", utc_zb_simple_desc_set_ep_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_ep_n", utc_zb_simple_desc_set_ep_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_profile_id_p", utc_zb_simple_desc_get_profile_id_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_profile_id_n", utc_zb_simple_desc_get_profile_id_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_profile_id_p", utc_zb_simple_desc_set_profile_id_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_profile_id_n", utc_zb_simple_desc_set_profile_id_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_device_id_p", utc_zb_simple_desc_get_device_id_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_device_id_n", utc_zb_simple_desc_get_device_id_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_device_id_p", utc_zb_simple_desc_set_device_id_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_device_id_n", utc_zb_simple_desc_set_device_id_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_device_ver_p", utc_zb_simple_desc_get_device_ver_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_device_ver_n", utc_zb_simple_desc_get_device_ver_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_device_ver_p", utc_zb_simple_desc_set_device_ver_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_device_ver_n", utc_zb_simple_desc_set_device_ver_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_num_of_in_clusters_p", utc_zb_simple_desc_get_num_of_in_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_num_of_in_clusters_n", utc_zb_simple_desc_get_num_of_in_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_num_of_in_clusters_p", utc_zb_simple_desc_set_num_of_in_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_num_of_in_clusters_n", utc_zb_simple_desc_set_num_of_in_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_num_of_out_clusters_p", utc_zb_simple_desc_get_num_of_out_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_num_of_out_clusters_n", utc_zb_simple_desc_get_num_of_out_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_num_of_out_clusters_p", utc_zb_simple_desc_set_num_of_out_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_num_of_out_clusters_n", utc_zb_simple_desc_set_num_of_out_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_in_clusters_p", utc_zb_simple_desc_get_in_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_in_clusters_n", utc_zb_simple_desc_get_in_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_in_clusters_p", utc_zb_simple_desc_set_in_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_in_clusters_n", utc_zb_simple_desc_set_in_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_out_clusters_p", utc_zb_simple_desc_get_out_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_out_clusters_n", utc_zb_simple_desc_get_out_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_out_clusters_p", utc_zb_simple_desc_set_out_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_out_clusters_n", utc_zb_simple_desc_set_out_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, +#endif /* SUPPORT_SIMPLE_DESCRIPTION*/ + +#ifdef SUPPORT_ZDO_DEVICE_DISCOVERY_MANAGER + /* Zigbee ZDO - Device Discovery */ + {"utc_zb_zdo_nwk_addr_req_p", utc_zb_zdo_nwk_addr_req_p, utc_startup, utc_startup}, + {"utc_zb_zdo_nwk_addr_req_n", utc_zb_zdo_nwk_addr_req_n, utc_startup, utc_startup}, + {"utc_zb_zdo_ieee_addr_req_p", utc_zb_zdo_ieee_addr_req_p, utc_startup, utc_startup}, + {"utc_zb_zdo_ieee_addr_req_n", utc_zb_zdo_ieee_addr_req_n, utc_startup, utc_startup}, + {"utc_zb_zdo_active_ep_p", utc_zb_zdo_active_ep_p, utc_startup, utc_startup}, + {"utc_zb_zdo_active_ep_n", utc_zb_zdo_active_ep_n, utc_startup, utc_startup}, + {"utc_zb_zdo_simple_desc_req_p", utc_zb_zdo_simple_desc_req_p, utc_startup, utc_startup}, + {"utc_zb_zdo_simple_desc_req_n", utc_zb_zdo_simple_desc_req_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZDO_DEVICE_DISCOVERY_MANAGER */ + +#if defined(SUPPORT_ZCL_GLOBAL_COMMNAD_CLUSTER) + /* Zigbee ZCL - Global Cluster */ + {"utc_zb_zcl_global_attr_read_p", utc_zb_zcl_global_attr_read_p, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_read_n", utc_zb_zcl_global_attr_read_n, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_write_p", utc_zb_zcl_global_attr_write_p, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_write_n", utc_zb_zcl_global_attr_write_n, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_write_undivided_p", utc_zb_zcl_global_attr_write_undivided_p, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_write_undivided_n", utc_zb_zcl_global_attr_write_undivided_n, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_write_no_rsp_p", utc_zb_zcl_global_attr_write_no_rsp_p, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_write_no_rsp_n", utc_zb_zcl_global_attr_write_no_rsp_n, utc_startup, utc_startup}, + {"utc_zb_zcl_global_config_report_write_p", utc_zb_zcl_global_config_report_write_p, utc_startup, utc_startup}, + {"utc_zb_zcl_global_config_report_write_n", utc_zb_zcl_global_config_report_write_n, utc_startup, utc_startup}, + {"utc_zb_zcl_global_config_report_read_p", utc_zb_zcl_global_config_report_write_n, utc_startup, utc_startup}, + {"utc_zb_zcl_global_config_report_read_n", utc_zb_zcl_global_config_report_read_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_GLOBAL_COMMAND_CLUSTER */ + +#ifdef SUPPORT_ZCL_IAS_ZONE_CLUSTER + /* Zigbee ZCL - IAS Zone Cluster */ + {"utc_zb_zcl_zone_enroll_response_p", utc_zb_zcl_zone_enroll_response_p, utc_startup, utc_startup}, + {"utc_zb_zcl_zone_enroll_response_n", utc_zb_zcl_zone_enroll_response_p, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_IAS_ZONE_CLUSTER */ + +#ifdef SUPPORT_ZCL_ON_OFF_CLUSTER + /* Zigbee ZCL - On/Off Cluster */ + {"utc_zb_zcl_on_off_control_p", utc_zb_zcl_on_off_control_p, utc_startup, utc_startup}, + {"utc_zb_zcl_on_off_control_n", utc_zb_zcl_on_off_control_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_ON_OFF_CLUSTER */ + +#ifdef SUPPORT_ZCL_READ_ATTRIBUTE_STATUS_RECORD + /* Zigbee ZCL - Read Attribute Status Record Getter/Setter */ + {"utc_zb_read_attr_status_record_create_p", utc_zb_read_attr_status_record_create_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_create_n", utc_zb_read_attr_status_record_create_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_clone_p", utc_zb_read_attr_status_record_clone_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_clone_n", utc_zb_read_attr_status_record_clone_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_destroy_p", utc_zb_read_attr_status_record_destroy_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_destroy_n", utc_zb_read_attr_status_record_destroy_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_id_p", utc_zb_read_attr_status_record_set_id_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_id_n", utc_zb_read_attr_status_record_set_id_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_id_p", utc_zb_read_attr_status_record_get_id_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_id_n", utc_zb_read_attr_status_record_get_id_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_status_p", utc_zb_read_attr_status_record_set_status_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_status_n", utc_zb_read_attr_status_record_set_status_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_status_p", utc_zb_read_attr_status_record_get_status_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_status_n", utc_zb_read_attr_status_record_get_status_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_type_p", utc_zb_read_attr_status_record_get_status_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_type_n", utc_zb_read_attr_status_record_set_type_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_type_p", utc_zb_read_attr_status_record_get_type_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_type_n", utc_zb_read_attr_status_record_get_type_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_value_p", utc_zb_read_attr_status_record_set_value_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_value_n", utc_zb_read_attr_status_record_set_value_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_value_p", utc_zb_read_attr_status_record_get_value_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_value_n", utc_zb_read_attr_status_record_get_value_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_READ_ATTRIBUTE_STATUS_RECORD */ + +#ifdef SUPPORT_ZCL_WRITE_ATTRIBUTE_STATUS + /* Zigbee ZCL - Write Attribute Status Record Getter/Setter */ + {"utc_zb_write_attr_record_create_p", utc_zb_write_attr_record_create_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_create_n", utc_zb_write_attr_record_create_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_destroy_p", utc_zb_write_attr_record_destroy_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_destroy_n", utc_zb_write_attr_record_destroy_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_set_id_p", utc_zb_write_attr_record_set_id_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_set_id_n", utc_zb_write_attr_record_set_id_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_set_value_p", utc_zb_write_attr_record_set_value_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_set_value_n", utc_zb_write_attr_record_set_value_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_create_p", utc_zb_write_attr_status_create_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_create_n", utc_zb_write_attr_status_create_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_destroy_p", utc_zb_write_attr_status_destroy_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_destroy_n", utc_zb_write_attr_status_destroy_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_set_status_p", utc_zb_write_attr_status_set_status_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_set_status_n", utc_zb_write_attr_status_set_status_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_get_status_p", utc_zb_write_attr_status_get_status_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_get_status_n", utc_zb_write_attr_status_get_status_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_set_id_p", utc_zb_write_attr_status_set_id_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_set_id_n", utc_zb_write_attr_status_set_id_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_get_id_p", utc_zb_write_attr_status_get_id_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_get_id_n", utc_zb_write_attr_status_get_id_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_WRITE_ATTRIBUTE_STATUS */ + +#ifdef SUPPORT_ZCL_REPORT_CONFIG_REPORT + /* Zigbee ZCL - Report Configuration Record Getter/Setter */ + {"utc_zb_report_config_record_create_p", utc_zb_report_config_record_create_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_create_n", utc_zb_report_config_record_create_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_clone_p", utc_zb_report_config_record_clone_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_clone_n", utc_zb_report_config_record_clone_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_destroy_p", utc_zb_report_config_record_destroy_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_destroy_n", utc_zb_report_config_record_destroy_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_dir_p", utc_zb_report_config_record_set_dir_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_dir_n", utc_zb_report_config_record_set_dir_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_dir_p", utc_zb_report_config_record_get_dir_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_dir_n", utc_zb_report_config_record_get_dir_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_id_p", utc_zb_report_config_record_set_id_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_id_n", utc_zb_report_config_record_set_id_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_id_p", utc_zb_report_config_record_get_id_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_id_n", utc_zb_report_config_record_get_id_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_min_interval_p", utc_zb_report_config_record_set_min_interval_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_min_interval_n", utc_zb_report_config_record_set_min_interval_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_min_interval_p", utc_zb_report_config_record_get_min_interval_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_min_interval_n", utc_zb_report_config_record_get_min_interval_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_max_interval_p", utc_zb_report_config_record_set_max_interval_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_max_interval_n", utc_zb_report_config_record_set_max_interval_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_max_interval_p", utc_zb_report_config_record_get_max_interval_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_max_interval_n", utc_zb_report_config_record_get_max_interval_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_timeout_p", utc_zb_report_config_record_set_timeout_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_timeout_n", utc_zb_report_config_record_set_timeout_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_timeout_p", utc_zb_report_config_record_get_timeout_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_timeout_n", utc_zb_report_config_record_get_timeout_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_change_p", utc_zb_report_config_record_set_change_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_change_n", utc_zb_report_config_record_set_change_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_change_p", utc_zb_report_config_record_get_change_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_change_n", utc_zb_report_config_record_get_change_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_REPORT_CONFIG_REPORT */ + +#ifdef SUPPORT_ZCL_READ_REPORT_CONFIG_RECORD + /* Zigbee ZCL - Read Report Configuration Record Getter/Setter */ + {"utc_zb_read_report_config_record_create_p", utc_zb_read_report_config_record_create_p, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_create_n", utc_zb_read_report_config_record_create_n, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_destroy_p", utc_zb_read_report_config_record_destroy_p, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_destroy_n", utc_zb_read_report_config_record_destroy_n, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_set_dir_p", utc_zb_read_report_config_record_set_dir_p, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_set_dir_n", utc_zb_read_report_config_record_set_dir_n, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_set_id_p", utc_zb_read_report_config_record_set_id_p, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_set_id_n", utc_zb_read_report_config_record_set_id_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_READ_REPORT_CONFIG_RECORD */ + +#ifdef SUPPORT_ZCL_REPORT_CONFIG_RESPONSE_RECORD + /* Zigbee ZCL - Report Configuration Response Getter/Setter */ + {"utc_zb_report_config_response_record_clone_n", utc_zb_report_config_response_record_clone_n, utc_startup, utc_startup}, + {"utc_zb_report_config_response_record_destroy_n", utc_zb_report_config_response_record_destroy_n, utc_startup, utc_startup}, + {"utc_zb_report_config_response_record_get_status_n", utc_zb_report_config_response_record_get_status_n, utc_startup, utc_startup}, + {"utc_zb_report_config_response_record_get_dir_n", utc_zb_report_config_response_record_get_dir_n, utc_startup, utc_startup}, + {"utc_zb_report_config_response_record_get_id_n", utc_zb_report_config_response_record_get_id_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_REPORT_CONFIG_RESPONSE_RECORD */ + + {NULL, NULL} +}; + +#endif // __TCT_ZIGBEE_NATIVE_H__ diff --git a/src/utc/zigbee/tct-zigbee-core_wearable.h b/src/utc/zigbee/tct-zigbee-core_wearable.h new file mode 100644 index 000000000..0ddfb5b78 --- /dev/null +++ b/src/utc/zigbee/tct-zigbee-core_wearable.h @@ -0,0 +1,539 @@ +// +// Copyright (c) 2014 Samsung Electronics Co., Ltd. +// +// Licensed under the Apache License, Version 2.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef __TCT_ZIGBEE_NATIVE_H__ +#define __TCT_ZIGBEE_NATIVE_H__ + +#include "testcase.h" +#include "tct_common.h" +#include "utc-zigbee.h" + +extern void utc_startup(void); +extern void utc_cleanup(void); +extern void utc_zdo_simple_desc_startup(void); +extern void utc_zdo_simple_desc_cleanup(void); +extern void utc_zdo_power_desc_startup(void); +extern void utc_zdo_power_desc_cleanup(void); +extern void utc_zdo_node_desc_startup(void); +extern void utc_zdo_node_desc_cleanup(void); +extern void utc_zdo_getter_startup(void); +extern void utc_zdo_getter_cleanup(void); + +/* Zigbee APIs */ +extern int utc_zb_create_p(void); +extern int utc_zb_create_n(void); +extern int utc_zb_destroy_p(void); +extern int utc_zb_destroy_n(void); +extern int utc_zb_ev_get_enable_status_n(void); +extern int utc_zb_ev_get_form_network_panid_n(void); +extern int utc_zb_ev_get_join_count_n(void); +extern int utc_zb_ev_get_join_ep_n(void); +extern int utc_zb_ev_get_child_left_status_n(void); +extern int utc_zb_ev_get_global_default_rsp_ep_n(void); +extern int utc_zb_ev_get_global_default_rsp_cluster_id_n(void); +extern int utc_zb_ev_get_global_default_rsp_command_id_n(void); +extern int utc_zb_ev_get_global_default_rsp_status_n(void); +extern int utc_zb_ev_get_enroll_request_src_ep_n(void); +extern int utc_zb_ev_get_enroll_request_zone_type_n(void); +extern int utc_zb_ev_get_enroll_request_mfg_code_n(void); +extern int utc_zb_ev_get_ias_noti_src_ep_n(void); +extern int utc_zb_ev_get_ias_noti_zone_status_n(void); +extern int utc_zb_ev_get_ias_ext_noti_src_ep_n(void); +extern int utc_zb_ev_get_ias_ext_noti_status_n(void); +extern int utc_zb_ev_get_ias_ext_noti_zone_status_n(void); +extern int utc_zb_ev_get_ias_ext_noti_delay_n(void); +extern int utc_zb_ev_get_ias_ext_noti_zone_id_n(void); +extern int utc_zb_set_event_cb_p(void); +extern int utc_zb_set_event_cb_n(void); +extern int utc_zb_form_network_p(void); +extern int utc_zb_form_network_n(void); +extern int utc_zb_disable_network_p(void); +extern int utc_zb_disable_network_n(void); +extern int utc_zb_leave_device_p(void); +extern int utc_zb_leave_device_n(void); +extern int utc_zb_permit_join_p(void); +extern int utc_zb_permit_join_n(void); +extern int utc_zb_get_controller_mac_address_p(void); +extern int utc_zb_get_controller_mac_address_n(void); +extern int utc_zb_get_network_info_p(void); +extern int utc_zb_get_network_info_n(void); + +extern int utc_zb_end_dev_get_ep_list_p(void); +extern int utc_zb_end_dev_get_ep_list_n(void); +extern int utc_zb_end_dev_get_cluster_list_p(void); +extern int utc_zb_end_dev_get_cluster_list_n(void); +extern int utc_zb_end_dev_get_end_dev_info_list_p(void); +extern int utc_zb_end_dev_get_end_dev_info_list_n1(void); +extern int utc_zb_end_dev_get_end_dev_info_list_n2(void); +extern int utc_zb_end_dev_info_create_p(void); +extern int utc_zb_end_dev_info_create_n(void); +extern int utc_zb_end_dev_info_clone_p(void); +extern int utc_zb_end_dev_info_clone_n(void); +extern int utc_zb_end_dev_info_destroy_p(void); +extern int utc_zb_end_dev_info_destroy_n(void); +extern int utc_zb_end_dev_info_list_free_p(void); +extern int utc_zb_end_dev_info_list_free_n(void); +extern int utc_zb_end_dev_info_get_network_address_n(void); +extern int utc_zb_end_dev_info_get_ieee_address_n(void); +extern int utc_zb_end_dev_info_get_num_of_ep_n(void); +extern int utc_zb_end_dev_info_get_ep_list_n(void); +extern int utc_zb_end_dev_info_get_mac_capability_n(void); +extern int utc_zb_end_dev_info_get_alternative_pan_coordinator_n(void); +extern int utc_zb_end_dev_info_get_device_id_n(void); +extern int utc_zb_end_dev_info_get_profile_id_n(void); +extern int utc_zb_end_dev_info_get_power_source_n(void); +extern int utc_zb_end_dev_info_get_security_capabilty_n(void); + +/* Zigbee ZDO */ + +#ifdef SUPPORT_SIMPLE_DESCRIPTION +extern int utc_zb_simple_desc_create_p(void); +extern int utc_zb_simple_desc_create_n(void); +extern int utc_zb_simple_desc_destroy_p(void); +extern int utc_zb_simple_desc_destroy_n(void); +extern int utc_zb_simple_desc_clone_p(void); +extern int utc_zb_simple_desc_clone_n(void); +extern int utc_zb_simple_desc_get_ep_p(void); +extern int utc_zb_simple_desc_get_ep_n(void); +extern int utc_zb_simple_desc_set_ep_p(void); +extern int utc_zb_simple_desc_set_ep_n(void); +extern int utc_zb_simple_desc_get_profile_id_p(void); +extern int utc_zb_simple_desc_get_profile_id_n(void); +extern int utc_zb_simple_desc_set_profile_id_p(void); +extern int utc_zb_simple_desc_set_profile_id_n(void); +extern int utc_zb_simple_desc_get_device_id_p(void); +extern int utc_zb_simple_desc_get_device_id_n(void); +extern int utc_zb_simple_desc_set_device_id_p(void); +extern int utc_zb_simple_desc_set_device_id_n(void); +extern int utc_zb_simple_desc_get_device_ver_p(void); +extern int utc_zb_simple_desc_get_device_ver_n(void); +extern int utc_zb_simple_desc_set_device_ver_p(void); +extern int utc_zb_simple_desc_set_device_ver_n(void); +extern int utc_zb_simple_desc_get_num_of_in_clusters_p(void); +extern int utc_zb_simple_desc_get_num_of_in_clusters_n(void); +extern int utc_zb_simple_desc_set_num_of_in_clusters_p(void); +extern int utc_zb_simple_desc_set_num_of_in_clusters_n(void); +extern int utc_zb_simple_desc_get_num_of_out_clusters_p(void); +extern int utc_zb_simple_desc_get_num_of_out_clusters_n(void); +extern int utc_zb_simple_desc_set_num_of_out_clusters_p(void); +extern int utc_zb_simple_desc_set_num_of_out_clusters_n(void); +extern int utc_zb_simple_desc_get_in_clusters_p(void); +extern int utc_zb_simple_desc_get_in_clusters_n(void); +extern int utc_zb_simple_desc_set_in_clusters_p(void); +extern int utc_zb_simple_desc_set_in_clusters_n(void); +extern int utc_zb_simple_desc_get_out_clusters_p(void); +extern int utc_zb_simple_desc_get_out_clusters_n(void); +extern int utc_zb_simple_desc_set_out_clusters_p(void); +extern int utc_zb_simple_desc_set_out_clusters_n(void); +#endif /* SUPPORT_SIMPLE_DESCRIPTION */ + +#ifdef SUPPORT_ZDO_DEVICE_DISCOVERY_MANAGER +/* Zigbee ZDO Device Discovery */ +extern int utc_zb_zdo_nwk_addr_req_p(void); +extern int utc_zb_zdo_nwk_addr_req_n(void); +extern int utc_zb_zdo_ieee_addr_req_p(void); +extern int utc_zb_zdo_ieee_addr_req_n(void); +extern int utc_zb_zdo_active_ep_p(void); +extern int utc_zb_zdo_active_ep_n(void); +extern int utc_zb_zdo_simple_desc_req_p(void); +extern int utc_zb_zdo_simple_desc_req_n(void); +#endif /* SUPPORT_ZDO_DEVICE_DISCOVERY_MANAGER */ + +#ifdef SUPPORT_ZCL_GLOBAL_COMMNAD_CLUSTER +/* Global Command */ +extern int utc_zb_zcl_global_attr_read_p(void); +extern int utc_zb_zcl_global_attr_read_n(void); +extern int utc_zb_zcl_global_attr_write_p(void); +extern int utc_zb_zcl_global_attr_write_n(void); +extern int utc_zb_zcl_global_attr_write_undivided_p(void); +extern int utc_zb_zcl_global_attr_write_undivided_n(void); +extern int utc_zb_zcl_global_attr_write_no_rsp_p(void); +extern int utc_zb_zcl_global_attr_write_no_rsp_n(void); +extern int utc_zb_zcl_global_config_report_write_p(void); +extern int utc_zb_zcl_global_config_report_write_n(void); +extern int utc_zb_zcl_global_config_report_read_p(void); +extern int utc_zb_zcl_global_config_report_read_n(void); +extern int utc_zb_zcl_global_config_report_read_n(void); +#endif /* SUPPORT_ZCL_GLOBAL_COMMNAD_CLUSTER */ + +#ifdef SUPPORT_ZCL_READ_ATTRIBUTE_STATUS_RECORD +extern int utc_zb_read_attr_status_record_create_p(void); +extern int utc_zb_read_attr_status_record_create_n(void); +extern int utc_zb_read_attr_status_record_clone_p(void); +extern int utc_zb_read_attr_status_record_clone_n(void); +extern int utc_zb_read_attr_status_record_destroy_p(void); +extern int utc_zb_read_attr_status_record_destroy_n(void); +extern int utc_zb_read_attr_status_record_set_id_p(void); +extern int utc_zb_read_attr_status_record_set_id_n(void); +extern int utc_zb_read_attr_status_record_get_id_p(void); +extern int utc_zb_read_attr_status_record_get_id_n(void); +extern int utc_zb_read_attr_status_record_set_status_p(void); +extern int utc_zb_read_attr_status_record_set_status_n(void); +extern int utc_zb_read_attr_status_record_get_status_p(void); +extern int utc_zb_read_attr_status_record_get_status_n(void); +extern int utc_zb_read_attr_status_record_set_type_p(void); +extern int utc_zb_read_attr_status_record_set_type_n(void); +extern int utc_zb_read_attr_status_record_get_type_p(void); +extern int utc_zb_read_attr_status_record_get_type_n(void); +extern int utc_zb_read_attr_status_record_set_value_p(void); +extern int utc_zb_read_attr_status_record_set_value_n(void); +extern int utc_zb_read_attr_status_record_get_value_p(void); +extern int utc_zb_read_attr_status_record_get_value_n(void); +#endif /* SUPPORT_ZCL_READ_ATTRIBUTE_STATUS_RECORD */ + +#ifdef SUPPORT_ZCL_WRITE_ATTRIBUTE_STATUS +extern int utc_zb_write_attr_record_create_p(void); +extern int utc_zb_write_attr_record_create_n(void); +extern int utc_zb_write_attr_record_destroy_p(void); +extern int utc_zb_write_attr_record_destroy_n(void); +extern int utc_zb_write_attr_record_set_id_p(void); +extern int utc_zb_write_attr_record_set_id_n(void); +extern int utc_zb_write_attr_record_set_value_p(void); +extern int utc_zb_write_attr_record_set_value_n(void); +extern int utc_zb_write_attr_status_create_p(void); +extern int utc_zb_write_attr_status_create_n(void); +extern int utc_zb_write_attr_status_destroy_p(void); +extern int utc_zb_write_attr_status_destroy_n(void); +extern int utc_zb_write_attr_status_set_status_p(void); +extern int utc_zb_write_attr_status_set_status_n(void); +extern int utc_zb_write_attr_status_get_status_p(void); +extern int utc_zb_write_attr_status_get_status_n(void); +extern int utc_zb_write_attr_status_set_id_p(void); +extern int utc_zb_write_attr_status_set_id_n(void); +extern int utc_zb_write_attr_status_get_id_p(void); +extern int utc_zb_write_attr_status_get_id_n(void); +#endif /* SUPPORT_ZCL_WRITE_ATTRIBUTE_STATUS */ + +#ifdef SUPPORT_ZCL_REPORT_CONFIG_REPORT +extern int utc_zb_report_config_record_create_p(void); +extern int utc_zb_report_config_record_create_n(void); +extern int utc_zb_report_config_record_clone_p(void); +extern int utc_zb_report_config_record_clone_n(void); +extern int utc_zb_report_config_record_destroy_p(void); +extern int utc_zb_report_config_record_destroy_n(void); +extern int utc_zb_report_config_record_set_dir_p(void); +extern int utc_zb_report_config_record_set_dir_n(void); +extern int utc_zb_report_config_record_get_dir_p(void); +extern int utc_zb_report_config_record_get_dir_n(void); +extern int utc_zb_report_config_record_set_id_p(void); +extern int utc_zb_report_config_record_set_id_n(void); +extern int utc_zb_report_config_record_get_id_p(void); +extern int utc_zb_report_config_record_get_id_n(void); +extern int utc_zb_report_config_record_set_min_interval_p(void); +extern int utc_zb_report_config_record_set_min_interval_n(void); +extern int utc_zb_report_config_record_get_min_interval_p(void); +extern int utc_zb_report_config_record_get_min_interval_n(void); +extern int utc_zb_report_config_record_set_max_interval_p(void); +extern int utc_zb_report_config_record_set_max_interval_n(void); +extern int utc_zb_report_config_record_get_max_interval_p(void); +extern int utc_zb_report_config_record_get_max_interval_n(void); +extern int utc_zb_report_config_record_set_timeout_p(void); +extern int utc_zb_report_config_record_set_timeout_n(void); +extern int utc_zb_report_config_record_get_timeout_p(void); +extern int utc_zb_report_config_record_get_timeout_n(void); +extern int utc_zb_report_config_record_set_change_p(void); +extern int utc_zb_report_config_record_set_change_n(void); +extern int utc_zb_report_config_record_get_change_p(void); +extern int utc_zb_report_config_record_get_change_n(void); +#endif /* SUPPORT_ZCL_REPORT_CONFIG_REPORT */ + +#ifdef SUPPORT_ZCL_READ_REPORT_CONFIG_RECORD +extern int utc_zb_read_report_config_record_create_p(void); +extern int utc_zb_read_report_config_record_create_n(void); +extern int utc_zb_read_report_config_record_destroy_p(void); +extern int utc_zb_read_report_config_record_destroy_n(void); +extern int utc_zb_read_report_config_record_set_dir_p(void); +extern int utc_zb_read_report_config_record_set_dir_n(void); +extern int utc_zb_read_report_config_record_set_id_p(void); +extern int utc_zb_read_report_config_record_set_id_n(void); +#endif /* SUPPORT_ZCL_READ_REPORT_CONFIG_RECORD */ + +#ifdef SUPPORT_ZCL_REPORT_CONFIG_RESPONSE_RECORD +extern int utc_zb_report_config_response_record_clone_n(void); +extern int utc_zb_report_config_response_record_destroy_n(void); +extern int utc_zb_report_config_response_record_get_status_n(void); +extern int utc_zb_report_config_response_record_get_dir_n(void); +extern int utc_zb_report_config_response_record_get_id_n(void); +#endif /* SUPPORT_ZCL_REPORT_CONFIG_RESPONSE_RECORD */ + +#ifdef SUPPORT_ZCL_IAS_ZONE_CLUSTER +/* IAS Zone Cluster */ +extern int utc_zb_zcl_zone_enroll_response_p(void); +extern int utc_zb_zcl_zone_enroll_response_n(void); +#endif /* SUPPORT_ZCL_IAS_ZONE_CLUSTER */ + +#ifdef SUPPORT_ZCL_ON_OFF_CLUSTER +/* On/Off Cluster */ +extern int utc_zb_zcl_on_off_control_p(void); +extern int utc_zb_zcl_on_off_control_n(void); +#endif /* SUPPORT_ZCL_ON_OFF_CLUSTER */ + +testcase tc_array[] = { + /* Zigbee APIs */ + {"utc_zb_create_p", utc_zb_create_p, utc_startup, utc_cleanup}, + {"utc_zb_create_n", utc_zb_create_n, utc_startup, utc_cleanup}, + {"utc_zb_destroy_p", utc_zb_destroy_p, utc_startup, utc_cleanup}, + {"utc_zb_destroy_n", utc_zb_destroy_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_enable_status_n", utc_zb_ev_get_enable_status_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_form_network_panid_n", utc_zb_ev_get_form_network_panid_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_join_count_n", utc_zb_ev_get_join_count_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_join_ep_n", utc_zb_ev_get_join_ep_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_child_left_status_n", utc_zb_ev_get_child_left_status_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_global_default_rsp_ep_n", utc_zb_ev_get_global_default_rsp_ep_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_global_default_rsp_cluster_id_n", utc_zb_ev_get_global_default_rsp_cluster_id_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_global_default_rsp_command_id_n", utc_zb_ev_get_global_default_rsp_command_id_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_global_default_rsp_status_n", utc_zb_ev_get_global_default_rsp_status_n, utc_startup, utc_cleanup}, + + {"utc_zb_ev_get_enroll_request_src_ep_n", utc_zb_ev_get_enroll_request_src_ep_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_enroll_request_zone_type_n", utc_zb_ev_get_enroll_request_zone_type_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_enroll_request_mfg_code_n", utc_zb_ev_get_enroll_request_mfg_code_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_noti_src_ep_n", utc_zb_ev_get_ias_noti_src_ep_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_noti_zone_status_n", utc_zb_ev_get_ias_noti_zone_status_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_ext_noti_src_ep_n", utc_zb_ev_get_ias_ext_noti_src_ep_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_ext_noti_status_n", utc_zb_ev_get_ias_ext_noti_status_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_ext_noti_zone_status_n", utc_zb_ev_get_ias_ext_noti_zone_status_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_ext_noti_delay_n", utc_zb_ev_get_ias_ext_noti_delay_n, utc_startup, utc_cleanup}, + {"utc_zb_ev_get_ias_ext_noti_zone_id_n", utc_zb_ev_get_ias_ext_noti_zone_id_n, utc_startup, utc_cleanup}, + {"utc_zb_set_event_cb_p", utc_zb_set_event_cb_p, utc_startup, utc_cleanup}, + {"utc_zb_set_event_cb_n", utc_zb_set_event_cb_n, utc_startup, utc_cleanup}, + {"utc_zb_form_network_p", utc_zb_form_network_p, utc_startup, utc_cleanup}, + {"utc_zb_form_network_n", utc_zb_form_network_n, utc_startup, utc_cleanup}, + {"utc_zb_disable_network_p", utc_zb_disable_network_p, utc_startup, utc_cleanup}, + {"utc_zb_disable_network_n", utc_zb_disable_network_n, utc_startup, utc_cleanup}, + {"utc_zb_leave_device_p", utc_zb_leave_device_p, utc_startup, utc_cleanup}, + {"utc_zb_leave_device_n", utc_zb_leave_device_n, utc_startup, utc_cleanup}, + {"utc_zb_permit_join_p", utc_zb_permit_join_p, utc_startup, utc_cleanup}, + {"utc_zb_permit_join_n", utc_zb_permit_join_n, utc_startup, utc_cleanup}, + {"utc_zb_get_controller_mac_address_p", utc_zb_get_controller_mac_address_p, utc_startup, utc_cleanup}, + {"utc_zb_get_controller_mac_address_n", utc_zb_get_controller_mac_address_n, utc_startup, utc_cleanup}, + {"utc_zb_get_network_info_p", utc_zb_get_network_info_p, utc_startup, utc_cleanup}, + {"utc_zb_get_network_info_n", utc_zb_get_network_info_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_ep_list_p", utc_zb_end_dev_get_ep_list_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_ep_list_n", utc_zb_end_dev_get_ep_list_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_cluster_list_p", utc_zb_end_dev_get_cluster_list_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_cluster_list_n", utc_zb_end_dev_get_cluster_list_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_end_dev_info_list_p", utc_zb_end_dev_get_end_dev_info_list_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_end_dev_info_list_n1", utc_zb_end_dev_get_end_dev_info_list_n1, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_get_end_dev_info_list_n2", utc_zb_end_dev_get_end_dev_info_list_n2, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_list_free_p", utc_zb_end_dev_info_list_free_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_list_free_n", utc_zb_end_dev_info_list_free_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_create_p", utc_zb_end_dev_info_create_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_create_n", utc_zb_end_dev_info_create_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_clone_p", utc_zb_end_dev_info_clone_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_clone_n", utc_zb_end_dev_info_clone_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_destroy_p", utc_zb_end_dev_info_destroy_p, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_destroy_n", utc_zb_end_dev_info_destroy_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_network_address_n", utc_zb_end_dev_info_get_network_address_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_ieee_address_n", utc_zb_end_dev_info_get_ieee_address_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_num_of_ep_n", utc_zb_end_dev_info_get_num_of_ep_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_ep_list_n", utc_zb_end_dev_info_get_ep_list_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_mac_capability_n", utc_zb_end_dev_info_get_mac_capability_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_alternative_pan_coordinator_n", utc_zb_end_dev_info_get_alternative_pan_coordinator_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_device_id_n", utc_zb_end_dev_info_get_device_id_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_profile_id_n", utc_zb_end_dev_info_get_profile_id_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_power_source_n", utc_zb_end_dev_info_get_power_source_n, utc_startup, utc_cleanup}, + {"utc_zb_end_dev_info_get_security_capabilty_n", utc_zb_end_dev_info_get_security_capabilty_n, utc_startup, utc_cleanup}, + +#ifdef SUPPORT_SIMPLE_DESCRIPTION + /* Zigbee ZDO - Simple Descripter Getter/Setter */ + {"utc_zb_simple_desc_create_p", utc_zb_simple_desc_create_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_create_n", utc_zb_simple_desc_create_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_destroy_p", utc_zb_simple_desc_destroy_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_destroy_n", utc_zb_simple_desc_destroy_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_clone_p", utc_zb_simple_desc_clone_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_clone_n", utc_zb_simple_desc_clone_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_ep_p", utc_zb_simple_desc_get_ep_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_ep_n", utc_zb_simple_desc_get_ep_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_ep_p", utc_zb_simple_desc_set_ep_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_ep_n", utc_zb_simple_desc_set_ep_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_profile_id_p", utc_zb_simple_desc_get_profile_id_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_profile_id_n", utc_zb_simple_desc_get_profile_id_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_profile_id_p", utc_zb_simple_desc_set_profile_id_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_profile_id_n", utc_zb_simple_desc_set_profile_id_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_device_id_p", utc_zb_simple_desc_get_device_id_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_device_id_n", utc_zb_simple_desc_get_device_id_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_device_id_p", utc_zb_simple_desc_set_device_id_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_device_id_n", utc_zb_simple_desc_set_device_id_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_device_ver_p", utc_zb_simple_desc_get_device_ver_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_device_ver_n", utc_zb_simple_desc_get_device_ver_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_device_ver_p", utc_zb_simple_desc_set_device_ver_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_device_ver_n", utc_zb_simple_desc_set_device_ver_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_num_of_in_clusters_p", utc_zb_simple_desc_get_num_of_in_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_num_of_in_clusters_n", utc_zb_simple_desc_get_num_of_in_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_num_of_in_clusters_p", utc_zb_simple_desc_set_num_of_in_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_num_of_in_clusters_n", utc_zb_simple_desc_set_num_of_in_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_num_of_out_clusters_p", utc_zb_simple_desc_get_num_of_out_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_num_of_out_clusters_n", utc_zb_simple_desc_get_num_of_out_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_num_of_out_clusters_p", utc_zb_simple_desc_set_num_of_out_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_num_of_out_clusters_n", utc_zb_simple_desc_set_num_of_out_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_in_clusters_p", utc_zb_simple_desc_get_in_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_in_clusters_n", utc_zb_simple_desc_get_in_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_in_clusters_p", utc_zb_simple_desc_set_in_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_in_clusters_n", utc_zb_simple_desc_set_in_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_out_clusters_p", utc_zb_simple_desc_get_out_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_get_out_clusters_n", utc_zb_simple_desc_get_out_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_out_clusters_p", utc_zb_simple_desc_set_out_clusters_p, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, + {"utc_zb_simple_desc_set_out_clusters_n", utc_zb_simple_desc_set_out_clusters_n, utc_zdo_simple_desc_startup, utc_zdo_simple_desc_cleanup}, +#endif /* SUPPORT_SIMPLE_DESCRIPTION*/ + +#ifdef SUPPORT_ZDO_DEVICE_DISCOVERY_MANAGER + /* Zigbee ZDO - Device Discovery */ + {"utc_zb_zdo_nwk_addr_req_p", utc_zb_zdo_nwk_addr_req_p, utc_startup, utc_startup}, + {"utc_zb_zdo_nwk_addr_req_n", utc_zb_zdo_nwk_addr_req_n, utc_startup, utc_startup}, + {"utc_zb_zdo_ieee_addr_req_p", utc_zb_zdo_ieee_addr_req_p, utc_startup, utc_startup}, + {"utc_zb_zdo_ieee_addr_req_n", utc_zb_zdo_ieee_addr_req_n, utc_startup, utc_startup}, + {"utc_zb_zdo_active_ep_p", utc_zb_zdo_active_ep_p, utc_startup, utc_startup}, + {"utc_zb_zdo_active_ep_n", utc_zb_zdo_active_ep_n, utc_startup, utc_startup}, + {"utc_zb_zdo_simple_desc_req_p", utc_zb_zdo_simple_desc_req_p, utc_startup, utc_startup}, + {"utc_zb_zdo_simple_desc_req_n", utc_zb_zdo_simple_desc_req_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZDO_DEVICE_DISCOVERY_MANAGER */ + +#if defined(SUPPORT_ZCL_GLOBAL_COMMNAD_CLUSTER) + /* Zigbee ZCL - Global Cluster */ + {"utc_zb_zcl_global_attr_read_p", utc_zb_zcl_global_attr_read_p, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_read_n", utc_zb_zcl_global_attr_read_n, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_write_p", utc_zb_zcl_global_attr_write_p, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_write_n", utc_zb_zcl_global_attr_write_n, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_write_undivided_p", utc_zb_zcl_global_attr_write_undivided_p, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_write_undivided_n", utc_zb_zcl_global_attr_write_undivided_n, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_write_no_rsp_p", utc_zb_zcl_global_attr_write_no_rsp_p, utc_startup, utc_startup}, + {"utc_zb_zcl_global_attr_write_no_rsp_n", utc_zb_zcl_global_attr_write_no_rsp_n, utc_startup, utc_startup}, + {"utc_zb_zcl_global_config_report_write_p", utc_zb_zcl_global_config_report_write_p, utc_startup, utc_startup}, + {"utc_zb_zcl_global_config_report_write_n", utc_zb_zcl_global_config_report_write_n, utc_startup, utc_startup}, + {"utc_zb_zcl_global_config_report_read_p", utc_zb_zcl_global_config_report_write_n, utc_startup, utc_startup}, + {"utc_zb_zcl_global_config_report_read_n", utc_zb_zcl_global_config_report_read_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_GLOBAL_COMMAND_CLUSTER */ + +#ifdef SUPPORT_ZCL_IAS_ZONE_CLUSTER + /* Zigbee ZCL - IAS Zone Cluster */ + {"utc_zb_zcl_zone_enroll_response_p", utc_zb_zcl_zone_enroll_response_p, utc_startup, utc_startup}, + {"utc_zb_zcl_zone_enroll_response_n", utc_zb_zcl_zone_enroll_response_p, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_IAS_ZONE_CLUSTER */ + +#ifdef SUPPORT_ZCL_ON_OFF_CLUSTER + /* Zigbee ZCL - On/Off Cluster */ + {"utc_zb_zcl_on_off_control_p", utc_zb_zcl_on_off_control_p, utc_startup, utc_startup}, + {"utc_zb_zcl_on_off_control_n", utc_zb_zcl_on_off_control_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_ON_OFF_CLUSTER */ + +#ifdef SUPPORT_ZCL_READ_ATTRIBUTE_STATUS_RECORD + /* Zigbee ZCL - Read Attribute Status Record Getter/Setter */ + {"utc_zb_read_attr_status_record_create_p", utc_zb_read_attr_status_record_create_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_create_n", utc_zb_read_attr_status_record_create_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_clone_p", utc_zb_read_attr_status_record_clone_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_clone_n", utc_zb_read_attr_status_record_clone_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_destroy_p", utc_zb_read_attr_status_record_destroy_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_destroy_n", utc_zb_read_attr_status_record_destroy_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_id_p", utc_zb_read_attr_status_record_set_id_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_id_n", utc_zb_read_attr_status_record_set_id_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_id_p", utc_zb_read_attr_status_record_get_id_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_id_n", utc_zb_read_attr_status_record_get_id_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_status_p", utc_zb_read_attr_status_record_set_status_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_status_n", utc_zb_read_attr_status_record_set_status_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_status_p", utc_zb_read_attr_status_record_get_status_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_status_n", utc_zb_read_attr_status_record_get_status_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_type_p", utc_zb_read_attr_status_record_get_status_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_type_n", utc_zb_read_attr_status_record_set_type_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_type_p", utc_zb_read_attr_status_record_get_type_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_type_n", utc_zb_read_attr_status_record_get_type_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_value_p", utc_zb_read_attr_status_record_set_value_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_set_value_n", utc_zb_read_attr_status_record_set_value_n, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_value_p", utc_zb_read_attr_status_record_get_value_p, utc_startup, utc_startup}, + {"utc_zb_read_attr_status_record_get_value_n", utc_zb_read_attr_status_record_get_value_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_READ_ATTRIBUTE_STATUS_RECORD */ + +#ifdef SUPPORT_ZCL_WRITE_ATTRIBUTE_STATUS + /* Zigbee ZCL - Write Attribute Status Record Getter/Setter */ + {"utc_zb_write_attr_record_create_p", utc_zb_write_attr_record_create_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_create_n", utc_zb_write_attr_record_create_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_destroy_p", utc_zb_write_attr_record_destroy_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_destroy_n", utc_zb_write_attr_record_destroy_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_set_id_p", utc_zb_write_attr_record_set_id_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_set_id_n", utc_zb_write_attr_record_set_id_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_set_value_p", utc_zb_write_attr_record_set_value_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_record_set_value_n", utc_zb_write_attr_record_set_value_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_create_p", utc_zb_write_attr_status_create_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_create_n", utc_zb_write_attr_status_create_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_destroy_p", utc_zb_write_attr_status_destroy_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_destroy_n", utc_zb_write_attr_status_destroy_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_set_status_p", utc_zb_write_attr_status_set_status_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_set_status_n", utc_zb_write_attr_status_set_status_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_get_status_p", utc_zb_write_attr_status_get_status_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_get_status_n", utc_zb_write_attr_status_get_status_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_set_id_p", utc_zb_write_attr_status_set_id_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_set_id_n", utc_zb_write_attr_status_set_id_n, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_get_id_p", utc_zb_write_attr_status_get_id_p, utc_startup, utc_startup}, + {"utc_zb_write_attr_status_get_id_n", utc_zb_write_attr_status_get_id_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_WRITE_ATTRIBUTE_STATUS */ + +#ifdef SUPPORT_ZCL_REPORT_CONFIG_REPORT + /* Zigbee ZCL - Report Configuration Record Getter/Setter */ + {"utc_zb_report_config_record_create_p", utc_zb_report_config_record_create_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_create_n", utc_zb_report_config_record_create_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_clone_p", utc_zb_report_config_record_clone_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_clone_n", utc_zb_report_config_record_clone_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_destroy_p", utc_zb_report_config_record_destroy_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_destroy_n", utc_zb_report_config_record_destroy_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_dir_p", utc_zb_report_config_record_set_dir_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_dir_n", utc_zb_report_config_record_set_dir_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_dir_p", utc_zb_report_config_record_get_dir_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_dir_n", utc_zb_report_config_record_get_dir_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_id_p", utc_zb_report_config_record_set_id_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_id_n", utc_zb_report_config_record_set_id_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_id_p", utc_zb_report_config_record_get_id_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_id_n", utc_zb_report_config_record_get_id_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_min_interval_p", utc_zb_report_config_record_set_min_interval_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_min_interval_n", utc_zb_report_config_record_set_min_interval_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_min_interval_p", utc_zb_report_config_record_get_min_interval_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_min_interval_n", utc_zb_report_config_record_get_min_interval_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_max_interval_p", utc_zb_report_config_record_set_max_interval_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_max_interval_n", utc_zb_report_config_record_set_max_interval_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_max_interval_p", utc_zb_report_config_record_get_max_interval_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_max_interval_n", utc_zb_report_config_record_get_max_interval_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_timeout_p", utc_zb_report_config_record_set_timeout_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_timeout_n", utc_zb_report_config_record_set_timeout_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_timeout_p", utc_zb_report_config_record_get_timeout_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_timeout_n", utc_zb_report_config_record_get_timeout_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_change_p", utc_zb_report_config_record_set_change_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_set_change_n", utc_zb_report_config_record_set_change_n, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_change_p", utc_zb_report_config_record_get_change_p, utc_startup, utc_startup}, + {"utc_zb_report_config_record_get_change_n", utc_zb_report_config_record_get_change_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_REPORT_CONFIG_REPORT */ + +#ifdef SUPPORT_ZCL_READ_REPORT_CONFIG_RECORD + /* Zigbee ZCL - Read Report Configuration Record Getter/Setter */ + {"utc_zb_read_report_config_record_create_p", utc_zb_read_report_config_record_create_p, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_create_n", utc_zb_read_report_config_record_create_n, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_destroy_p", utc_zb_read_report_config_record_destroy_p, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_destroy_n", utc_zb_read_report_config_record_destroy_n, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_set_dir_p", utc_zb_read_report_config_record_set_dir_p, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_set_dir_n", utc_zb_read_report_config_record_set_dir_n, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_set_id_p", utc_zb_read_report_config_record_set_id_p, utc_startup, utc_startup}, + {"utc_zb_read_report_config_record_set_id_n", utc_zb_read_report_config_record_set_id_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_READ_REPORT_CONFIG_RECORD */ + +#ifdef SUPPORT_ZCL_REPORT_CONFIG_RESPONSE_RECORD + /* Zigbee ZCL - Report Configuration Response Getter/Setter */ + {"utc_zb_report_config_response_record_clone_n", utc_zb_report_config_response_record_clone_n, utc_startup, utc_startup}, + {"utc_zb_report_config_response_record_destroy_n", utc_zb_report_config_response_record_destroy_n, utc_startup, utc_startup}, + {"utc_zb_report_config_response_record_get_status_n", utc_zb_report_config_response_record_get_status_n, utc_startup, utc_startup}, + {"utc_zb_report_config_response_record_get_dir_n", utc_zb_report_config_response_record_get_dir_n, utc_startup, utc_startup}, + {"utc_zb_report_config_response_record_get_id_n", utc_zb_report_config_response_record_get_id_n, utc_startup, utc_startup}, +#endif /* SUPPORT_ZCL_REPORT_CONFIG_RESPONSE_RECORD */ + + {NULL, NULL} +}; + +#endif // __TCT_ZIGBEE_NATIVE_H__ diff --git a/src/utc/zigbee/utc-zigbee-common.h b/src/utc/zigbee/utc-zigbee-common.h new file mode 100644 index 000000000..4af325a90 --- /dev/null +++ b/src/utc/zigbee/utc-zigbee-common.h @@ -0,0 +1,61 @@ +// +// Copyright (c) 2014 Samsung Electronics Co., Ltd. +// +// Licensed under the Apache License, Version 2.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#ifndef _ZIGBEE_UTC_COMMON_H_ +#define _ZIGBEE_UTC_COMMON_H_ + +#include +#include +#include + +#include + +FILE *g_fpLog; + +#define LOG(...) {\ + g_fpLog = fopen(ERR_UTC_LOG, "a");\ + fprintf(g_fpLog, __VA_ARGS__);\ + fclose(g_fpLog);\ + dlog_print(DLOG_INFO, "NativeTCT", "[%s:%d] %s", __FILE__, __LINE__, __VA_ARGS__);\ +} + +#define PRINT_RETURN(api, ret) {\ + FPRINTF("[%s:%d] %s ret = %s\\n",\ + __FILE__, __LINE__, api, zigbee_error_to_string(ret));\ + dlog_print(DLOG_INFO, "NativeTCT", "[%s:%d] %s ret = %s",\ + __FILE__, __LINE__, api, zigbee_error_to_string(ret));\ +} + +#define PRINT_RETURN1(api, file, line, ret) {\ + FPRINTF("[%s:%d] %s ret = %s\\n",\ + file, line, api, zigbee_error_to_string(ret));\ + dlog_print(DLOG_INFO, "NativeTCT", "[%s:%d] %s ret = %s",\ + file, line, api, zigbee_error_to_string(ret));\ +} + +void utc_startup(void); +void utc_cleanup(void); +int check_result_p(const char *api_name, const char *file_name, int line, int ret); +int check_result_n(const char *api_name, const char *file_name, int line, int ret); + +const char* zb_zcl_get_status_str(zb_zcl_status_e status); +int zb_zcl_get_analog_or_discret(zb_zcl_data_type_e type); +int zb_zcl_get_data_size(zb_zcl_data_type_e type); +const char* zb_zcl_get_data_type_str(zb_zcl_data_type_e type); +const char* zb_zcl_get_cluster_id_str(zb_cluster_id clusterid); + + +#endif /* _ZIGBEE_UTC_COMMON_H_ */ diff --git a/src/utc/zigbee/utc-zigbee-zcl-global-commands.c b/src/utc/zigbee/utc-zigbee-zcl-global-commands.c new file mode 100644 index 000000000..302165c06 --- /dev/null +++ b/src/utc/zigbee/utc-zigbee-zcl-global-commands.c @@ -0,0 +1,610 @@ +// +// Copyright (c) 2014 Samsung Electronics Co., Ltd. +// +// Licensed under the Apache License, Version 2.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#include "assert.h" +#include "utc-zigbee-common.h" + +extern bool g_feature; +extern zb_zigbee_h handle; +static zb_nwk_addr ha_addr16 = 0x1234; +static zb_nwk_addr zll_addr16 = 0x5678; +static zb_end_point zdo_ep = 0; +static zb_end_point ha_ep = 1; +static zb_end_point zll_ep = 2; + +static void _zb_zcl_global_attr_read_cb( + zb_nwk_addr addr16, + zb_end_point ep, + zb_cluster_id clusterid, + zb_zcl_read_attr_status_record_h* records, + int count, + void *user_data) +{ + int i; + int ret; + int len_of_val; + + zb_attribute_id id; + zb_zcl_data_type_e type; + zb_zcl_status_e status; + unsigned char *buf = NULL; + + LOG("_zb_zcl_global_attr_read_cb()"); + + if (NULL == records || 0 == count) { + LOG("Invalid records info"); + LOG("records_info : [%p]", records); + return; + } + + LOG(" Cluster ID : 0x%04X (%s)", clusterid, + zb_zcl_get_cluster_id_str(clusterid)); + LOG(" Node ID : 0x%04X", addr16); + LOG(" End-Point : 0x%02X", ep); + LOG(" Rec. Count : %d", count); + + for (i = 0; i < count; i++) { + + if (records && *records) { + ret = zb_read_attr_status_record_get_id(records[i], &id); + if (ZIGBEE_ERROR_NONE == ret) + LOG(" Attribute ID : 0x%04X", id); + + ret = zb_read_attr_status_record_get_type(records[i], &type); + if (ZIGBEE_ERROR_NONE == ret) + LOG(" Type : 0x%02X", type); + + ret = zb_read_attr_status_record_get_status(records[i], &status); + if (ZIGBEE_ERROR_NONE == ret) + LOG(" Status : 0x%02X (%s)", + status, zb_zcl_get_status_str(status)); + + ret = zb_read_attr_status_record_get_value(records[i], + &type, &buf, &len_of_val); + if (ZIGBEE_ERROR_NONE == ret && buf) { + for (int j = 0; j < len_of_val; j++) + LOG(" value[%d] = 0x%02x", j, buf[j]); + if (buf) { + free(buf); + buf = NULL; + } + } + } + } +} + +static void _zb_zcl_global_attr_write_cb( + zb_nwk_addr addr16, + zb_end_point ep, + zb_cluster_id clusterid, + zb_zcl_write_attr_status_record_h* records, + int count, + void *user_data) +{ + int i; + zb_attribute_id id = 0; + zb_zcl_status_e status; + + LOG("_zb_zcl_global_attr_write_cb()"); + + if (NULL == records || 0 == count) { + LOG("Invalid records info"); + return; + } + + for (i = 0; i < count; i++) { + + LOG(" Cluster ID : 0x%04X (%s)", clusterid, + zb_zcl_get_cluster_id_str(clusterid)); + LOG(" Node ID : 0x%04X", addr16); + LOG(" End-Point : 0x%02X", ep); + LOG(" Rec. Count : %d", count); + + if (records) { + if (ZIGBEE_ERROR_NONE == zb_write_attr_status_get_id(records[i], &id)) + LOG(" AttributeId : 0x%04X", id); + } + if (records) { + if (ZIGBEE_ERROR_NONE == zb_write_attr_status_get_status(records[i], &status)) + LOG(" status : 0x%02X (%s)", + status, zb_zcl_get_status_str(status)); + } + } +} + +static void _zb_zcl_global_config_report_write_write_cb( + zb_nwk_addr addr16, + zb_end_point ep, + zb_cluster_id clusterid, + zb_zcl_report_config_response_record_h* records, + int count, + void *user_data) +{ + int i; + zb_zcl_status_e status; + + LOG("_zb_zcl_global_config_report_write_write_cb()"); + + if (NULL == records || 0 == count) { + LOG("Invalid records info"); + return; + } + + LOG(" count=%d", count); + for (i = 0; i < count; i++) { + if (ZIGBEE_ERROR_NONE == zb_report_config_response_record_get_status( + records[i], &status)) + LOG(" [%d] status = 0x%02X (%s)", + i, status, zb_zcl_get_status_str(status)); + } +} + +static void _zb_zcl_global_config_report_write_read_cb( + zb_nwk_addr addr16, + zb_end_point ep, + zb_cluster_id clusterid, + zb_zcl_reporting_config_record_h* records, + int count, + void *user_data) +{ + int ret; + int len_of_val; + int i = 0, j = 0; + unsigned char *buf = NULL; + unsigned short id, max_i, min_i; + + zb_zcl_data_type_e type; + + LOG("_zb_zcl_global_config_report_write_read_cb()"); + + if (NULL == records || 0 == count) { + LOG("Invalid records info"); + return; + } + + LOG(" cluster_id 0x%04X (%s)", clusterid, + zb_zcl_get_cluster_id_str(clusterid)); + LOG(" nodeId 0x%04X", addr16); + LOG(" endpoint 0x%02X", ep); + LOG(" Rec. Count : %d", count); + + while (i < count) { + LOG(" records[%d]", i); + if (ZIGBEE_ERROR_NONE == zb_report_config_record_get_id(records[i], &id)) + LOG(" AttributeId 0x%04X", id); + if (ZIGBEE_ERROR_NONE == zb_report_config_record_get_type(records[i], &type)) { + /*if ((zb_zcl_get_analog_or_discret(type) == DATA_TYPE_ANALOG)) {*/ + LOG(" type 0x%02X", type); + if (ZIGBEE_ERROR_NONE == zb_report_config_record_get_max_interval( + records[i], &max_i)) + LOG(" Max Interval 0x%04X", max_i); + if (ZIGBEE_ERROR_NONE == zb_report_config_record_get_min_interval( + records[i], &min_i)) + LOG(" Min Interval 0x%04X", min_i); + + ret = zb_report_config_record_get_change( + records[i], &type, &buf, &len_of_val); + + if (ZIGBEE_ERROR_NONE == ret && buf) { + LOG(" type = [0x%2X][%s]", type, zb_zcl_get_data_type_str(type)); + for (j = 0; j < len_of_val; j++) + LOG(" change[%d] = 0x%02x", j, buf[j]); + } + + if (buf) { + free(buf); + buf = NULL; + } + /* + } else { + LOG("Unsuccessful Attempt\n"); + } + */ + } + i++; + } +} + +//& purpose: A purpose of a first positive zb_zcl_global_attr_read. +int utc_zb_zcl_global_attr_read_p(void) +{ + int ret; + unsigned short st_cluster_id = ZB_ZCL_CLUSTER_IAS_ZONE; + unsigned short st_attribute_id[] = { + ZB_ZCL_ATTR_ZONE_STATE, + ZB_ZCL_ATTR_ZONE_TYPE, + ZB_ZCL_ATTR_ZONE_STATUS, + ZB_ZCL_ATTR_IAS_CIE_ADDRESS, + ZB_ZCL_ATTR_ZONE_ID + }; + int st_len_of_attr = sizeof(st_attribute_id) / sizeof(st_attribute_id[0]); + ret = zb_zcl_global_attr_read(handle, ha_addr16, ha_ep, zll_ep, + ZB_ZCL_DEFAULT_RESPONSE_DISABLED, st_cluster_id, st_attribute_id, + st_len_of_attr, _zb_zcl_global_attr_read_cb, NULL); + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_zcl_global_attr_read. +int utc_zb_zcl_global_attr_read_n(void) +{ + int ret; + unsigned short st_cluster_id = ZB_ZCL_CLUSTER_IAS_ZONE; + unsigned short st_attribute_id[] = { + ZB_ZCL_ATTR_ZONE_STATE, + ZB_ZCL_ATTR_ZONE_TYPE, + ZB_ZCL_ATTR_ZONE_STATUS, + ZB_ZCL_ATTR_IAS_CIE_ADDRESS, + ZB_ZCL_ATTR_ZONE_ID + }; + int st_len_of_attr = sizeof(st_attribute_id) / sizeof(st_attribute_id[0]); + /* Error case -> handle = NULL */ + ret = zb_zcl_global_attr_read(NULL, zll_addr16, ha_ep, zll_ep, + ZB_ZCL_DEFAULT_RESPONSE_DISABLED, st_cluster_id, st_attribute_id, + st_len_of_attr, _zb_zcl_global_attr_read_cb, NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_zcl_global_attr_write. +int utc_zb_zcl_global_attr_write_p(void) +{ + int ret; + unsigned char value[] = { 0x02, 0x01}; + zb_zcl_write_attr_record_h attr = NULL; + + ret = zb_write_attr_record_create(&attr); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_write_attr_record_set_id(attr, ZB_ZCL_ATTR_IDENTIFY_TIME); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_write_attr_record_set_type(attr, ZB_ZCL_UNSIGNED_16_BIT_INTEGER); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_write_attr_record_set_value(attr, ZB_ZCL_UNSIGNED_16_BIT_INTEGER, value, + zb_zcl_get_data_size(ZB_ZCL_UNSIGNED_16_BIT_INTEGER)); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = zb_zcl_global_attr_write(handle, ha_addr16, ha_ep, zll_ep, + ZB_ZCL_FC_DEFAULT, ZB_ZCL_CLUSTER_IDENTIFY, &attr, 1, + _zb_zcl_global_attr_write_cb, NULL); + zb_write_attr_record_destroy(attr); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret);} + +//& purpose: A purpose of a first negative zb_zcl_global_attr_write. +int utc_zb_zcl_global_attr_write_n(void) +{ + int ret; + unsigned char value[] = { 0x02, 0x01}; + zb_zcl_write_attr_record_h attr = NULL; + ret = zb_write_attr_record_create(&attr); + if (ZIGBEE_ERROR_NONE != ret) + return ret; + ret = zb_write_attr_record_set_id(attr, ZB_ZCL_ATTR_IDENTIFY_TIME); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_write_attr_record_set_type(attr, ZB_ZCL_UNSIGNED_16_BIT_INTEGER); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_write_attr_record_set_value(attr, ZB_ZCL_UNSIGNED_16_BIT_INTEGER, value, + zb_zcl_get_data_size(ZB_ZCL_UNSIGNED_16_BIT_INTEGER)); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + /* Error case -> handle = NULL */ + ret = zb_zcl_global_attr_write(NULL, zll_addr16, ha_ep, zll_ep, + ZB_ZCL_FC_DEFAULT, ZB_ZCL_CLUSTER_IDENTIFY, &attr, 1, + _zb_zcl_global_attr_write_cb, NULL); + zb_write_attr_record_destroy(attr); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_zcl_global_attr_write_undivided. +int utc_zb_zcl_global_attr_write_undivided_p(void) +{ + int ret; + unsigned char value[] = { 0x02, 0x01}; + zb_zcl_write_attr_record_h attr = NULL; + zb_write_attr_record_create(&attr); + ret = zb_write_attr_record_set_id(attr, ZB_ZCL_ATTR_IDENTIFY_TIME); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_write_attr_record_set_type(attr, ZB_ZCL_UNSIGNED_16_BIT_INTEGER); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_write_attr_record_set_value(attr, ZB_ZCL_UNSIGNED_16_BIT_INTEGER, value, + zb_zcl_get_data_size(ZB_ZCL_UNSIGNED_16_BIT_INTEGER)); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_zcl_global_attr_write_undivided(handle, ha_addr16, ha_ep, zll_ep, + ZB_ZCL_FC_DEFAULT, ZB_ZCL_CLUSTER_IDENTIFY, &attr, 1, + _zb_zcl_global_attr_write_cb, NULL); + zb_write_attr_record_destroy(attr); + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_zcl_global_attr_write_undivided. +int utc_zb_zcl_global_attr_write_undivided_n(void) +{ + int ret; + unsigned char value[] = { 0x02, 0x01}; + zb_zcl_write_attr_record_h attr = NULL; + ret = zb_write_attr_record_create(&attr); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_write_attr_record_set_id(attr, ZB_ZCL_ATTR_IDENTIFY_TIME); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_write_attr_record_set_type(attr, ZB_ZCL_UNSIGNED_16_BIT_INTEGER); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_write_attr_record_set_value(attr, ZB_ZCL_UNSIGNED_16_BIT_INTEGER, value, + zb_zcl_get_data_size(ZB_ZCL_UNSIGNED_16_BIT_INTEGER)); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + /* Error case -> handle = NULL */ + ret = zb_zcl_global_attr_write_undivided(NULL, zll_addr16, ha_ep, zll_ep, + ZB_ZCL_FC_DEFAULT, ZB_ZCL_CLUSTER_IDENTIFY, &attr, 1, + _zb_zcl_global_attr_write_cb, NULL); + zb_write_attr_record_destroy(attr); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_zcl_global_attr_write_no_rsp. +int utc_zb_zcl_global_attr_write_no_rsp_p(void) +{ + int ret; + unsigned char value[] = { 0x02, 0x01}; + zb_zcl_write_attr_record_h attr = NULL; + ret = zb_write_attr_record_create(&attr); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_write_attr_record_set_id(attr, ZB_ZCL_ATTR_IDENTIFY_TIME); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_write_attr_record_set_type(attr, ZB_ZCL_UNSIGNED_16_BIT_INTEGER); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_write_attr_record_set_value(attr, ZB_ZCL_UNSIGNED_16_BIT_INTEGER, value, + zb_zcl_get_data_size(ZB_ZCL_UNSIGNED_16_BIT_INTEGER)); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_zcl_global_attr_write_no_rsp(handle, ha_addr16, ha_ep, zll_ep, + ZB_ZCL_FC_DEFAULT, ZB_ZCL_CLUSTER_IDENTIFY, &attr, 1); + zb_write_attr_record_destroy(attr); + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_zcl_global_attr_write_no_rsp. +int utc_zb_zcl_global_attr_write_no_rsp_n(void) +{ + int ret; + unsigned char value[] = { 0x02, 0x01}; + zb_zcl_write_attr_record_h attr = NULL; + ret = zb_write_attr_record_create(&attr); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_write_attr_record_set_id(attr, ZB_ZCL_ATTR_IDENTIFY_TIME); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_write_attr_record_set_type(attr, ZB_ZCL_UNSIGNED_16_BIT_INTEGER); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_write_attr_record_set_value(attr, ZB_ZCL_UNSIGNED_16_BIT_INTEGER, value, + zb_zcl_get_data_size(ZB_ZCL_UNSIGNED_16_BIT_INTEGER)); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + /* Error case -> handle = NULL */ + ret = zb_zcl_global_attr_write_no_rsp(NULL, zll_addr16, ha_ep, zll_ep, + ZB_ZCL_FC_DEFAULT, ZB_ZCL_CLUSTER_IDENTIFY, &attr, 1); + zb_write_attr_record_destroy(attr); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_zcl_global_config_report_write. +int utc_zb_zcl_global_config_report_write_p(void) +{ + int ret; + unsigned char value[6] = {1, 2, 3, 4, 5, 6}; + zb_zcl_read_report_config_record_h config = NULL; + ret = zb_report_config_record_create(&config); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_report_config_record_set_dir(config, ZB_ZCL_CLIENT_TO_SERVER); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_report_config_record_set_id(config, ZB_ZCL_ATTR_ON_OFF); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_report_config_record_set_change(config, ZB_ZCL_48_BIT_BITMAP, value); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_report_config_record_set_min_interval(config, 0x01); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_report_config_record_set_max_interval(config, 0x1000); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = zb_zcl_global_config_report_write(handle, ha_addr16, ha_ep, zll_ep, + ZB_ZCL_FC_DEFAULT, ZB_ZCL_CLUSTER_ON_OFF, &config, 1, + _zb_zcl_global_config_report_write_write_cb, NULL); + zb_report_config_record_destroy(config); + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_zcl_global_config_report_write. +int utc_zb_zcl_global_config_report_write_n(void) +{ + int ret; + unsigned char value[6] = {1, 2, 3, 4, 5, 6}; + zb_zcl_read_report_config_record_h config = NULL; + ret = zb_report_config_record_create(&config); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_report_config_record_set_dir(config, ZB_ZCL_CLIENT_TO_SERVER); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_report_config_record_set_id(config, ZB_ZCL_ATTR_ON_OFF); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_report_config_record_set_change(config, ZB_ZCL_48_BIT_BITMAP, value); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_report_config_record_set_min_interval(config, 0x01); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_report_config_record_set_max_interval(config, 0x1000); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Error case -> handle = NULL and endpoint = 0 */ + ret = zb_zcl_global_config_report_write(NULL, zll_addr16, ha_ep, zdo_ep, + ZB_ZCL_FC_DEFAULT, ZB_ZCL_CLUSTER_ON_OFF, &config, 1, + _zb_zcl_global_config_report_write_write_cb, NULL); + zb_report_config_record_destroy(config); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_zcl_global_config_report_read. +int utc_zb_zcl_global_config_report_read_p(void) +{ + int ret; + zb_zcl_read_report_config_record_h read_report_conf = NULL; + ret = zb_read_report_config_record_create(&read_report_conf); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_read_report_config_record_set_dir(read_report_conf, ZB_ZCL_CLIENT_TO_SERVER); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_read_report_config_record_set_id(read_report_conf, ZB_ZCL_ATTR_ON_OFF); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_zcl_global_config_report_read(handle, ha_addr16, ha_ep, zll_ep, + ZB_ZCL_FC_DEFAULT, ZB_ZCL_CLUSTER_ON_OFF, &read_report_conf, 1, + _zb_zcl_global_config_report_write_read_cb, NULL); + zb_read_report_config_record_destroy(read_report_conf); + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_zcl_global_config_report_read. +int utc_zb_zcl_global_config_report_read_n(void) +{ + int ret; + zb_zcl_read_report_config_record_h read_report_conf = NULL; + ret = zb_read_report_config_record_create(&read_report_conf); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_read_report_config_record_set_dir(read_report_conf, ZB_ZCL_CLIENT_TO_SERVER); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_read_report_config_record_set_id(read_report_conf, ZB_ZCL_ATTR_ON_OFF); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Error case -> handle = NULL and endpoint = 0 */ + ret = zb_zcl_global_config_report_read(NULL, zll_addr16, ha_ep, zdo_ep, + ZB_ZCL_FC_DEFAULT, ZB_ZCL_CLUSTER_ON_OFF, &read_report_conf, 1, + _zb_zcl_global_config_report_write_read_cb, NULL); + zb_read_report_config_record_destroy(read_report_conf); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + diff --git a/src/utc/zigbee/utc-zigbee-zcl-ias-zone.c b/src/utc/zigbee/utc-zigbee-zcl-ias-zone.c new file mode 100644 index 000000000..ddb15d995 --- /dev/null +++ b/src/utc/zigbee/utc-zigbee-zcl-ias-zone.c @@ -0,0 +1,50 @@ +// +// Copyright (c) 2014 Samsung Electronics Co., Ltd. +// +// Licensed under the Apache License, Version 2.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#include "assert.h" +#include "utc-zigbee-common.h" + +extern bool g_feature; +extern zb_zigbee_h handle; +static zb_nwk_addr ha_addr16 = 0x1234; +static zb_nwk_addr zll_addr16 = 0x5678; +static zb_end_point zdo_ep = 0; +static zb_end_point ha_ep = 1; + +//& purpose: A purpose of a first positive zb_zcl_zone_enroll_response. +int utc_zb_zcl_zone_enroll_response_p(void) +{ + int ret; + unsigned char zone_id = 0x09; + + ret = zb_zcl_zone_enroll_response(handle, ha_addr16, ha_ep, + ZB_ZCL_IAS_ZONE_ENROLL_SUCCESS, zone_id); + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_zcl_zone_enroll_response. +int utc_zb_zcl_zone_enroll_response_n(void) +{ + int ret; + + unsigned char zone_id = 0xC8; + + /* Error case -> endpoint = 0 */ + ret = zb_zcl_zone_enroll_response(handle, zll_addr16, zdo_ep, + ZB_ZCL_IAS_ZONE_ENROLL_NO_ENROLL_PERMITTED, zone_id); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + diff --git a/src/utc/zigbee/utc-zigbee-zcl-on-off.c b/src/utc/zigbee/utc-zigbee-zcl-on-off.c new file mode 100644 index 000000000..90909e908 --- /dev/null +++ b/src/utc/zigbee/utc-zigbee-zcl-on-off.c @@ -0,0 +1,41 @@ +// +// Copyright (c) 2014 Samsung Electronics Co., Ltd. +// +// Licensed under the Apache License, Version 2.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#include "assert.h" +#include "utc-zigbee-common.h" + +extern bool g_feature; +extern zb_zigbee_h handle; +static zb_nwk_addr ha_addr16 = 0x1234; +static zb_nwk_addr zll_addr16 = 0x5678; +static zb_end_point zdo_ep = 0; +static zb_end_point ha_ep = 1; + +//& purpose: A purpose of a first positive zb_zcl_on_off_control. +int utc_zb_zcl_on_off_control_p(void) +{ + int ret; + ret = zb_zcl_on_off_control(handle, ha_addr16, ha_ep, ZB_ZCL_OFF); + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_zcl_on_off_control. +int utc_zb_zcl_on_off_control_n(void) +{ + int ret; + /* Error case -> endpoint = 0 */ + ret = zb_zcl_on_off_control(handle, zll_addr16, zdo_ep, ZB_ZCL_OFF); + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} \ No newline at end of file diff --git a/src/utc/zigbee/utc-zigbee-zcl.c b/src/utc/zigbee/utc-zigbee-zcl.c new file mode 100644 index 000000000..508881963 --- /dev/null +++ b/src/utc/zigbee/utc-zigbee-zcl.c @@ -0,0 +1,1852 @@ +// +// Copyright (c) 2014 Samsung Electronics Co., Ltd. +// +// Licensed under the Apache License, Version 2.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#include +#include "utc-zigbee-common.h" + +#include "assert.h" + +extern bool g_feature; +extern zb_zigbee_h handle; + +#define CASE_TO_STR(x) case x: return #x; + +const char* zb_zcl_get_status_str(zb_zcl_status_e status) +{ + switch (status) { + CASE_TO_STR(ZB_ZCL_STATUS_SUCCESS) + CASE_TO_STR(ZB_ZCL_STATUS_FAILURE) + CASE_TO_STR(ZB_ZCL_STATUS_NOT_AUTHORIZED) + CASE_TO_STR(ZB_ZCL_STATUS_RESERVED_FIELD_NOT_ZERO) + CASE_TO_STR(ZB_ZCL_STATUS_MALFORMED_COMMAND) + CASE_TO_STR(ZB_ZCL_STATUS_UNSUP_CLUSTER_COMMAND) + CASE_TO_STR(ZB_ZCL_STATUS_UNSUP_GENERAL_COMMAND) + CASE_TO_STR(ZB_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND) + CASE_TO_STR(ZB_ZCL_STATUS_UNSUP_MANUF_GENERAL_COMMAND) + CASE_TO_STR(ZB_ZCL_STATUS_INVALID_FIELD) + CASE_TO_STR(ZB_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE) + CASE_TO_STR(ZB_ZCL_STATUS_INVALID_VALUE) + CASE_TO_STR(ZB_ZCL_STATUS_READ_ONLY) + CASE_TO_STR(ZB_ZCL_STATUS_INSUFFICIENT_SPACE) + CASE_TO_STR(ZB_ZCL_STATUS_DUPLICATE_EXISTS) + CASE_TO_STR(ZB_ZCL_STATUS_NOT_FOUND) + CASE_TO_STR(ZB_ZCL_STATUS_UNREPORTABLE_ATTRIBUTE) + CASE_TO_STR(ZB_ZCL_STATUS_INVALID_DATA_TYPE) + CASE_TO_STR(ZB_ZCL_STATUS_INVALID_SELECTOR) + CASE_TO_STR(ZB_ZCL_STATUS_WRITE_ONLY) + CASE_TO_STR(ZB_ZCL_STATUS_INCONSISTENT_STARTUP_STATE) + CASE_TO_STR(ZB_ZCL_STATUS_DEFINED_OUT_OF_BAND) + CASE_TO_STR(ZB_ZCL_STATUS_INCONSISTENT) + CASE_TO_STR(ZB_ZCL_STATUS_ACTION_DENIED) + CASE_TO_STR(ZB_ZCL_STATUS_TIMEOUT) + CASE_TO_STR(ZB_ZCL_STATUS_ABORT) + CASE_TO_STR(ZB_ZCL_STATUS_INVALID_IMAGE) + CASE_TO_STR(ZB_ZCL_STATUS_WAIT_FOR_DATA) + CASE_TO_STR(ZB_ZCL_STATUS_NO_IMAGE_AVAILABLE) + CASE_TO_STR(ZB_ZCL_STATUS_REQUIRE_MORE_IMAGE) + default: + return "ZB_ZCL_STATUS_UNDEFINED"; + } +} + +typedef struct _attr_type_size { + unsigned char type; + unsigned char size; +} AttrTypeSize; + +static AttrTypeSize attribute_sizes[] = { + {ZB_ZCL_NO_DATA_ATTRIBUTE_TYPE, 0}, + {ZB_ZCL_8_BIT_DATA, 1}, + {ZB_ZCL_16_BIT_DATA, 2}, + {ZB_ZCL_24_BIT_DATA, 3}, + {ZB_ZCL_32_BIT_DATA, 4}, + {ZB_ZCL_40_BIT_DATA, 5}, + {ZB_ZCL_48_BIT_DATA, 6}, + {ZB_ZCL_56_BIT_DATA, 7}, + {ZB_ZCL_64_BIT_DATA, 8}, + {ZB_ZCL_BOOLEAN, 1}, + {ZB_ZCL_8_BIT_BITMAP, 1}, + {ZB_ZCL_16_BIT_BITMAP, 2}, + {ZB_ZCL_24_BIT_BITMAP, 3}, + {ZB_ZCL_32_BIT_BITMAP, 4}, + {ZB_ZCL_40_BIT_BITMAP, 5}, + {ZB_ZCL_48_BIT_BITMAP, 6}, + {ZB_ZCL_56_BIT_BITMAP, 7}, + {ZB_ZCL_64_BIT_BITMAP, 8}, + {ZB_ZCL_UNSIGNED_8_BIT_INTEGER, 1}, + {ZB_ZCL_UNSIGNED_16_BIT_INTEGER, 2}, + {ZB_ZCL_UNSIGNED_24_BIT_INTEGER, 3}, + {ZB_ZCL_UNSIGNED_32_BIT_INTEGER, 4}, + {ZB_ZCL_UNSIGNED_40_BIT_INTEGER, 5}, + {ZB_ZCL_UNSIGNED_48_BIT_INTEGER, 6}, + {ZB_ZCL_UNSIGNED_56_BIT_INTEGER, 7}, + {ZB_ZCL_UNSIGNED_64_BIT_INTEGER, 8}, + {ZB_ZCL_SIGNED_8_BIT_INTEGER, 1}, + {ZB_ZCL_SIGNED_16_BIT_INTEGER, 2}, + {ZB_ZCL_SIGNED_24_BIT_INTEGER, 3}, + {ZB_ZCL_SIGNED_32_BIT_INTEGER, 4}, + {ZB_ZCL_SIGNED_40_BIT_INTEGER, 5}, + {ZB_ZCL_SIGNED_48_BIT_INTEGER, 6}, + {ZB_ZCL_SIGNED_56_BIT_INTEGER, 7}, + {ZB_ZCL_SIGNED_64_BIT_INTEGER, 8}, + {ZB_ZCL_8_BIT_ENUMERATION, 1}, + {ZB_ZCL_16_BIT_ENUMERATION, 2}, + {ZB_ZCL_SEMI_PRECISION, 2}, + {ZB_ZCL_SINGLE_PRECISION, 4}, + {ZB_ZCL_DOUBLE_PRECISION, 8}, + {ZB_ZCL_TIME_OF_DAY, 4}, + {ZB_ZCL_DATE, 4}, + {ZB_ZCL_UTC_TIME, 4}, + {ZB_ZCL_CLUSTER_ID, 2}, + {ZB_ZCL_ATTRIBUTE_ID, 2}, + {ZB_ZCL_BACNET_OID, 4}, + {ZB_ZCL_IEEE_ADDRESS, 8}, + {ZB_ZCL_128_BIT_SECURITY_KEY, 16}, +}; + +static unsigned char analog_discrete_thresholds[] = { + 0x07, ZB_ZCL_DATA_TYPE_NONE, + 0x1F, ZB_ZCL_DATA_TYPE_DISCRETE, + 0x2F, ZB_ZCL_DATA_TYPE_ANALOG, + 0x37, ZB_ZCL_DATA_TYPE_DISCRETE, + 0x3F, ZB_ZCL_DATA_TYPE_ANALOG, + 0x57, ZB_ZCL_DATA_TYPE_DISCRETE, + 0xDF, ZB_ZCL_DATA_TYPE_NONE, + 0xE7, ZB_ZCL_DATA_TYPE_ANALOG, + 0xFF, ZB_ZCL_DATA_TYPE_NONE +}; + +int zb_zcl_get_analog_or_discret(zb_zcl_data_type_e type) +{ + int index = 0; + + unsigned char var = analog_discrete_thresholds[index]; + + while (var < type && var < 0xFF) { + index += 2; + var = analog_discrete_thresholds[index]; + } + + return analog_discrete_thresholds[index+1]; +} + +int zb_zcl_get_data_size(zb_zcl_data_type_e type) +{ + int i; + int count; + + count = (int)(sizeof(attribute_sizes) / 2); + for (i = 0; i < count; i++) { + if (attribute_sizes[i].type == type) + return attribute_sizes[i].size; + } + return -1; +} + +const char* zb_zcl_get_data_type_str(zb_zcl_data_type_e type) +{ + switch (type) { + CASE_TO_STR(ZB_ZCL_NO_DATA_ATTRIBUTE_TYPE) + CASE_TO_STR(ZB_ZCL_8_BIT_DATA) + CASE_TO_STR(ZB_ZCL_16_BIT_DATA) + CASE_TO_STR(ZB_ZCL_24_BIT_DATA) + CASE_TO_STR(ZB_ZCL_32_BIT_DATA) + CASE_TO_STR(ZB_ZCL_40_BIT_DATA) + CASE_TO_STR(ZB_ZCL_48_BIT_DATA) + CASE_TO_STR(ZB_ZCL_56_BIT_DATA) + CASE_TO_STR(ZB_ZCL_64_BIT_DATA) + CASE_TO_STR(ZB_ZCL_BOOLEAN) + CASE_TO_STR(ZB_ZCL_8_BIT_BITMAP) + CASE_TO_STR(ZB_ZCL_16_BIT_BITMAP) + CASE_TO_STR(ZB_ZCL_24_BIT_BITMAP) + CASE_TO_STR(ZB_ZCL_32_BIT_BITMAP) + CASE_TO_STR(ZB_ZCL_40_BIT_BITMAP) + CASE_TO_STR(ZB_ZCL_48_BIT_BITMAP) + CASE_TO_STR(ZB_ZCL_56_BIT_BITMAP) + CASE_TO_STR(ZB_ZCL_64_BIT_BITMAP) + CASE_TO_STR(ZB_ZCL_UNSIGNED_8_BIT_INTEGER) + CASE_TO_STR(ZB_ZCL_UNSIGNED_16_BIT_INTEGER) + CASE_TO_STR(ZB_ZCL_UNSIGNED_24_BIT_INTEGER) + CASE_TO_STR(ZB_ZCL_UNSIGNED_32_BIT_INTEGER) + CASE_TO_STR(ZB_ZCL_UNSIGNED_40_BIT_INTEGER) + CASE_TO_STR(ZB_ZCL_UNSIGNED_48_BIT_INTEGER) + CASE_TO_STR(ZB_ZCL_UNSIGNED_56_BIT_INTEGER) + CASE_TO_STR(ZB_ZCL_UNSIGNED_64_BIT_INTEGER) + CASE_TO_STR(ZB_ZCL_SIGNED_8_BIT_INTEGER) + CASE_TO_STR(ZB_ZCL_SIGNED_16_BIT_INTEGER) + CASE_TO_STR(ZB_ZCL_SIGNED_24_BIT_INTEGER) + CASE_TO_STR(ZB_ZCL_SIGNED_32_BIT_INTEGER) + CASE_TO_STR(ZB_ZCL_SIGNED_40_BIT_INTEGER) + CASE_TO_STR(ZB_ZCL_SIGNED_48_BIT_INTEGER) + CASE_TO_STR(ZB_ZCL_SIGNED_56_BIT_INTEGER) + CASE_TO_STR(ZB_ZCL_SIGNED_64_BIT_INTEGER) + CASE_TO_STR(ZB_ZCL_8_BIT_ENUMERATION) + CASE_TO_STR(ZB_ZCL_16_BIT_ENUMERATION) + CASE_TO_STR(ZB_ZCL_SEMI_PRECISION) + CASE_TO_STR(ZB_ZCL_SINGLE_PRECISION) + CASE_TO_STR(ZB_ZCL_DOUBLE_PRECISION) + CASE_TO_STR(ZB_ZCL_OCTET_STRING) + CASE_TO_STR(ZB_ZCL_CHARACTER_STRING) + CASE_TO_STR(ZB_ZCL_LONG_OCTET_STRING) + CASE_TO_STR(ZB_ZCL_LONG_CHARACTER_STRING) + CASE_TO_STR(ZB_ZCL_ARRAY) + CASE_TO_STR(ZB_ZCL_STRUCTURE) + CASE_TO_STR(ZB_ZCL_SET) + CASE_TO_STR(ZB_ZCL_BAG) + CASE_TO_STR(ZB_ZCL_TIME_OF_DAY) + CASE_TO_STR(ZB_ZCL_DATE) + CASE_TO_STR(ZB_ZCL_UTC_TIME) + CASE_TO_STR(ZB_ZCL_CLUSTER_ID) + CASE_TO_STR(ZB_ZCL_ATTRIBUTE_ID) + CASE_TO_STR(ZB_ZCL_BACNET_OID) + CASE_TO_STR(ZB_ZCL_IEEE_ADDRESS) + CASE_TO_STR(ZB_ZCL_128_BIT_SECURITY_KEY) + default: + return "UNKNOWN_DATA_TYPE"; + } +} + +const char* zb_zcl_get_cluster_id_str(zb_cluster_id clusterid) +{ + switch (clusterid) { + CASE_TO_STR(ZB_ZCL_CLUSTER_BASIC) + CASE_TO_STR(ZB_ZCL_CLUSTER_POWER_CONFIG) + CASE_TO_STR(ZB_ZCL_CLUSTER_DEVICE_TEMP) + CASE_TO_STR(ZB_ZCL_CLUSTER_IDENTIFY) + CASE_TO_STR(ZB_ZCL_CLUSTER_GROUPS) + CASE_TO_STR(ZB_ZCL_CLUSTER_SCENES) + CASE_TO_STR(ZB_ZCL_CLUSTER_ON_OFF) + CASE_TO_STR(ZB_ZCL_CLUSTER_ON_OFF_SWITCH_CONFIG) + CASE_TO_STR(ZB_ZCL_CLUSTER_LEVEL_CONTROL) + CASE_TO_STR(ZB_ZCL_CLUSTER_ALARM) + CASE_TO_STR(ZB_ZCL_CLUSTER_TIME) + CASE_TO_STR(ZB_ZCL_CLUSTER_RSSI_LOCATION) + CASE_TO_STR(ZB_ZCL_CLUSTER_BINARY_INPUT_BASIC) + CASE_TO_STR(ZB_ZCL_CLUSTER_COMMISSIONING) + CASE_TO_STR(ZB_ZCL_CLUSTER_PARTITION) + CASE_TO_STR(ZB_ZCL_CLUSTER_OTA_BOOTLOAD) + CASE_TO_STR(ZB_ZCL_CLUSTER_POWER_PROFILE) + CASE_TO_STR(ZB_ZCL_CLUSTER_APPLIANCE_CONTROL) + CASE_TO_STR(ZB_ZCL_CLUSTER_POLL_CONTROL) + CASE_TO_STR(ZB_ZCL_CLUSTER_SHADE_CONFIG) + CASE_TO_STR(ZB_ZCL_CLUSTER_DOOR_LOCK) + CASE_TO_STR(ZB_ZCL_CLUSTER_WINDOW_COVERING) + CASE_TO_STR(ZB_ZCL_CLUSTER_PUMP_CONFIG_CONTROL) + CASE_TO_STR(ZB_ZCL_CLUSTER_THERMOSTAT) + CASE_TO_STR(ZB_ZCL_CLUSTER_FAN_CONTROL) + CASE_TO_STR(ZB_ZCL_CLUSTER_DEHUMID_CONTROL) + CASE_TO_STR(ZB_ZCL_CLUSTER_THERMOSTAT_UI_CONFIG) + CASE_TO_STR(ZB_ZCL_CLUSTER_COLOR_CONTROL) + CASE_TO_STR(ZB_ZCL_CLUSTER_BALLAST_CONFIGURATION) + CASE_TO_STR(ZB_ZCL_CLUSTER_ILLUM_MEASUREMENT) + CASE_TO_STR(ZB_ZCL_CLUSTER_ILLUM_LEVEL_SENSING) + CASE_TO_STR(ZB_ZCL_CLUSTER_TEMP_MEASUREMENT) + CASE_TO_STR(ZB_ZCL_CLUSTER_PRESSURE_MEASUREMENT) + CASE_TO_STR(ZB_ZCL_CLUSTER_FLOW_MEASUREMENT) + CASE_TO_STR(ZB_ZCL_CLUSTER_RELATIVE_HUMIDITY_MEASUREMENT) + CASE_TO_STR(ZB_ZCL_CLUSTER_OCCUPANCY_SENSING) + CASE_TO_STR(ZB_ZCL_CLUSTER_IAS_ZONE) + CASE_TO_STR(ZB_ZCL_CLUSTER_IAS_ACE) + CASE_TO_STR(ZB_ZCL_CLUSTER_IAS_WD) + CASE_TO_STR(ZB_ZCL_CLUSTER_GENERIC_TUNNEL) + CASE_TO_STR(ZB_ZCL_CLUSTER_BACNET_PROTOCOL_TUNNEL) + CASE_TO_STR(ZB_ZCL_CLUSTER_11073_PROTOCOL_TUNNEL) + CASE_TO_STR(ZB_ZCL_CLUSTER_ISO7816_PROTOCOL_TUNNEL) + CASE_TO_STR(ZB_ZCL_CLUSTER_PRICE) + CASE_TO_STR(ZB_ZCL_CLUSTER_DEMAND_RESPONSE_LOAD_CONTROL) + CASE_TO_STR(ZB_ZCL_CLUSTER_SIMPLE_METERING) + CASE_TO_STR(ZB_ZCL_CLUSTER_MESSAGING) + CASE_TO_STR(ZB_ZCL_CLUSTER_TUNNELING) + CASE_TO_STR(ZB_ZCL_CLUSTER_PREPAYMENT) + CASE_TO_STR(ZB_ZCL_CLUSTER_ENERGY_MANAGEMENT) + CASE_TO_STR(ZB_ZCL_CLUSTER_TOU_CALENDAR) + CASE_TO_STR(ZB_ZCL_CLUSTER_DEVICE_MANAGEMENT) + CASE_TO_STR(ZB_ZCL_CLUSTER_EVENTS) + CASE_TO_STR(ZB_ZCL_CLUSTER_MDU_PAIRING) + CASE_TO_STR(ZB_ZCL_CLUSTER_KEY_ESTABLISHMENT) + CASE_TO_STR(ZB_ZCL_CLUSTER_INFORMATION) + CASE_TO_STR(ZB_ZCL_CLUSTER_DATA_SHARING) + CASE_TO_STR(ZB_ZCL_CLUSTER_GAMING) + CASE_TO_STR(ZB_ZCL_CLUSTER_DATA_RATE_CONTROL) + CASE_TO_STR(ZB_ZCL_CLUSTER_VOICE_OVER_ZIGBEE) + CASE_TO_STR(ZB_ZCL_CLUSTER_CHATTING) + CASE_TO_STR(ZB_ZCL_CLUSTER_PAYMENT) + CASE_TO_STR(ZB_ZCL_CLUSTER_BILLING) + CASE_TO_STR(ZB_ZCL_CLUSTER_APPLIANCE_IDENTIFICATION) + CASE_TO_STR(ZB_ZCL_CLUSTER_METER_IDENTIFICATION) + CASE_TO_STR(ZB_ZCL_CLUSTER_APPLIANCE_EVENTS_AND_ALERT) + CASE_TO_STR(ZB_ZCL_CLUSTER_APPLIANCE_STATISTICS) + CASE_TO_STR(ZB_ZCL_CLUSTER_ELECTRICAL_MEASUREMENT) + CASE_TO_STR(ZB_ZCL_CLUSTER_DIAGNOSTICS) + CASE_TO_STR(ZB_ZCL_CLUSTER_ZLL_COMMISSIONING) + default: + return "UNDEFINED_CLUSTER"; + } +} + +#if 1//def SUPPORT_ZCL_READ_ATTRIBUTE_STATUS_RECORD +//& purpose: A purpose of a first positive utc_zb_read_attr_status_record_create_p. +int utc_zb_read_attr_status_record_create_p(void) +{ + int ret = -1; + zb_zcl_read_attr_status_record_h handle = NULL; + + ret = zb_read_attr_status_record_create(&handle); + zb_read_attr_status_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative utc_zb_read_attr_status_record_create_n. +int utc_zb_read_attr_status_record_create_n(void) +{ + int ret = -1; + + ret = zb_read_attr_status_record_create(NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive utc_zb_read_attr_status_record_clone_p. +int utc_zb_read_attr_status_record_clone_p(void) +{ + int ret = -1; + unsigned char value[] = {1, 2}; + zb_zcl_read_attr_status_record_h src = NULL; + zb_zcl_read_attr_status_record_h dst = NULL; + + zb_read_attr_status_record_create(&src); + zb_read_attr_status_record_set_value(src, ZB_ZCL_UNSIGNED_16_BIT_INTEGER, + value, zb_zcl_get_data_size(ZB_ZCL_UNSIGNED_16_BIT_INTEGER)); + ret = zb_read_attr_status_record_clone(src, &dst); + zb_read_attr_status_record_destroy(src); + zb_read_attr_status_record_destroy(dst); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative utc_zb_read_attr_status_record_clone_n. +int utc_zb_read_attr_status_record_clone_n(void) +{ + int ret = -1; + zb_zcl_read_attr_status_record_h src = NULL; + zb_zcl_read_attr_status_record_h dst = NULL; + + zb_read_attr_status_record_create(&src); + ret = zb_read_attr_status_record_clone(NULL, &dst); + zb_read_attr_status_record_destroy(src); + zb_read_attr_status_record_destroy(dst); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive utc_zb_read_attr_status_record_destroy_p. +int utc_zb_read_attr_status_record_destroy_p(void) +{ + int ret = -1; + zb_zcl_read_attr_status_record_h handle = NULL; + + zb_read_attr_status_record_create(&handle); + ret = zb_read_attr_status_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative utc_zb_read_attr_status_record_destroy_n. +int utc_zb_read_attr_status_record_destroy_n(void) +{ + int ret = -1; + + ret = zb_read_attr_status_record_destroy(NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_read_attr_status_record_set_id. +int utc_zb_read_attr_status_record_set_id_p(void) +{ + int ret = -1; + zb_attribute_id pid = 1; + zb_zcl_read_attr_status_record_h handle = NULL; + + zb_read_attr_status_record_create(&handle); + ret = zb_read_attr_status_record_set_id(handle, pid); + zb_read_attr_status_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_read_attr_status_record_set_id. +int utc_zb_read_attr_status_record_set_id_n(void) +{ + int ret = -1; + zb_attribute_id pid = 1; + zb_zcl_read_attr_status_record_h handle = NULL; + + ret = zb_read_attr_status_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + /* Negative case : handle is null */ + ret = zb_read_attr_status_record_set_id(NULL, pid); + zb_read_attr_status_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_read_attr_status_record_get_id. +int utc_zb_read_attr_status_record_get_id_p(void) +{ + int ret = -1; + zb_attribute_id pid = 1; + zb_attribute_id lid = 2; + zb_zcl_read_attr_status_record_h handle = NULL; + + ret = zb_read_attr_status_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_read_attr_status_record_set_id(handle, pid); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = ret = zb_read_attr_status_record_get_id(handle, &lid); + zb_read_attr_status_record_destroy(handle); + + if (false == g_feature) + assert_eq(ret, ZIGBEE_ERROR_NOT_SUPPORTED); + else { + assert_eq(ret, ZIGBEE_ERROR_NONE); + assert_eq(pid, lid); + } + return 0; +} + +//& purpose: A purpose of a first negative zb_read_attr_status_record_get_id. +int utc_zb_read_attr_status_record_get_id_n(void) +{ + int ret = -1; + zb_attribute_id id = 0xffff; + zb_zcl_read_attr_status_record_h handle = NULL; + + ret = zb_read_attr_status_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Negative case : handle is null */ + ret = zb_read_attr_status_record_get_id(NULL, &id); + zb_read_attr_status_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_read_attr_status_record_set_status. +int utc_zb_read_attr_status_record_set_status_p(void) +{ + int ret = -1; + zb_zcl_status_e status = 1; + zb_zcl_read_attr_status_record_h handle = NULL; + + ret = zb_read_attr_status_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = zb_read_attr_status_record_set_status(handle, status); + zb_read_attr_status_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_read_attr_status_record_set_status. +int utc_zb_read_attr_status_record_set_status_n(void) +{ + int ret = -1; + zb_zcl_status_e status = 1; + zb_zcl_read_attr_status_record_h handle = NULL; + + ret = zb_read_attr_status_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Negative case : handle is null */ + ret = zb_read_attr_status_record_set_status(NULL, status); + zb_read_attr_status_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_read_attr_status_record_get_status. +int utc_zb_read_attr_status_record_get_status_p(void) +{ + int ret = -1; + zb_zcl_status_e status = 0xff; + zb_zcl_read_attr_status_record_h handle = NULL; + + zb_read_attr_status_record_create(&handle); + ret = zb_read_attr_status_record_get_status(handle, &status); + zb_read_attr_status_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_read_attr_status_record_get_status. +int utc_zb_read_attr_status_record_get_status_n(void) +{ + int ret = -1; + zb_zcl_status_e status = 0xff; + zb_zcl_read_attr_status_record_h handle = NULL; + + ret = zb_read_attr_status_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Negative case : handle is null */ + ret = zb_read_attr_status_record_get_status(NULL, &status); + zb_read_attr_status_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_read_attr_status_record_set_type. +int utc_zb_read_attr_status_record_set_type_p(void) +{ + int ret = -1; + zb_zcl_data_type_e type = ZB_ZCL_ATTRIBUTE_ID; + zb_zcl_read_attr_status_record_h handle = NULL; + + ret = zb_read_attr_status_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = zb_read_attr_status_record_set_type(handle, type); + zb_read_attr_status_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_read_attr_status_record_set_type. +int utc_zb_read_attr_status_record_set_type_n(void) +{ + int ret = -1; + zb_zcl_data_type_e type = ZB_ZCL_ATTRIBUTE_ID; + zb_zcl_read_attr_status_record_h handle = NULL; + + ret = zb_read_attr_status_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Negative case : handle is null */ + ret = zb_read_attr_status_record_set_type(NULL, type); + zb_read_attr_status_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_read_attr_status_record_get_type. +int utc_zb_read_attr_status_record_get_type_p(void) +{ + int ret = -1; + zb_zcl_data_type_e type = ZB_ZCL_ATTRIBUTE_ID; + zb_zcl_read_attr_status_record_h handle = NULL; + + ret = zb_read_attr_status_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = zb_read_attr_status_record_get_type(handle, &type); + zb_read_attr_status_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_read_attr_status_record_get_type. +int utc_zb_read_attr_status_record_get_type_n(void) +{ + int ret = -1; + zb_zcl_data_type_e type = ZB_ZCL_ATTRIBUTE_ID; + zb_zcl_read_attr_status_record_h handle = NULL; + + ret = zb_read_attr_status_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Negative case : handle is null */ + ret = zb_read_attr_status_record_get_type(NULL, &type); + zb_read_attr_status_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_read_attr_status_record_set_value. +int utc_zb_read_attr_status_record_set_value_p(void) +{ + int ret = -1; + unsigned char pvalue = 1; + + zb_zcl_data_type_e type = ZB_ZCL_8_BIT_DATA; + zb_zcl_read_attr_status_record_h handle = NULL; + + ret = zb_read_attr_status_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = zb_read_attr_status_record_set_value(handle, type, &pvalue, + zb_zcl_get_data_size(type)); + zb_read_attr_status_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_read_attr_status_record_set_value. +int utc_zb_read_attr_status_record_set_value_n(void) +{ + int ret = -1; + unsigned char pvalue = 1; + + zb_zcl_data_type_e type = ZB_ZCL_8_BIT_DATA; + zb_zcl_read_attr_status_record_h handle = NULL; + + ret = zb_read_attr_status_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Negative case : handle is null */ + ret = zb_read_attr_status_record_set_value(NULL, type, &pvalue, + zb_zcl_get_data_size(type)); + zb_read_attr_status_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_read_attr_status_record_get_type. +int utc_zb_read_attr_status_record_get_value_p(void) +{ + int ret = -1; + int count = 0; + unsigned char pvalue = 1; + unsigned char *lvalue = NULL; + + zb_zcl_data_type_e type = ZB_ZCL_8_BIT_DATA; + zb_zcl_read_attr_status_record_h handle = NULL; + + ret = zb_read_attr_status_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + zb_read_attr_status_record_set_value(handle, type, &pvalue, + zb_zcl_get_data_size(type)); + ret = zb_read_attr_status_record_get_value(handle, &type, &lvalue, &count); + if (lvalue) { + free(lvalue); + lvalue = NULL; + } + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_read_attr_status_record_get_type. +int utc_zb_read_attr_status_record_get_value_n(void) +{ + int ret = -1; + int count = 0; + unsigned char pvalue = 1; + unsigned char *lvalue = NULL; + + zb_zcl_data_type_e type = ZB_ZCL_8_BIT_DATA; + zb_zcl_read_attr_status_record_h handle = NULL; + + ret = zb_read_attr_status_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_read_attr_status_record_set_value(handle, type, &pvalue, + zb_zcl_get_data_size(type)); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Negative case : handle is null */ + ret = zb_read_attr_status_record_get_value(NULL, &type, &lvalue, &count); + if (lvalue) { + free(lvalue); + lvalue = NULL; + } + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} +#endif /* SUPPORT_ZCL_READ_ATTRIBUTE_STATUS_RECORD */ + +#if 1 //def SUPPORT_ZCL_WRITE_ATTRIBUTE_STATUS +//& purpose: A purpose of a first positive zb_write_attr_record_create. +int utc_zb_write_attr_record_create_p(void) +{ + int ret = -1; + zb_zcl_write_attr_record_h handle = NULL; + + ret = zb_write_attr_record_create(&handle); + zb_write_attr_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_write_attr_record_create. +int utc_zb_write_attr_record_create_n(void) +{ + int ret = -1; + zb_zcl_write_attr_record_h handle = NULL; + + /* Negative case : handle is null */ + ret = zb_write_attr_record_create(NULL); + zb_write_attr_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_write_attr_record_destroy. +int utc_zb_write_attr_record_destroy_p(void) +{ + int ret = -1; + zb_zcl_write_attr_record_h handle = NULL; + + zb_write_attr_record_create(&handle); + ret = zb_write_attr_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_write_attr_record_destroy. +int utc_zb_write_attr_record_destroy_n(void) +{ + int ret = -1; + + /* Negative case : handle is null */ + ret = zb_write_attr_record_destroy(NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_write_attr_record_set_id. +int utc_zb_write_attr_record_set_id_p(void) +{ + int ret = -1; + zb_zcl_write_attr_record_h handle = NULL; + zb_attribute_id id = ZB_ZCL_ATTR_IDENTIFY_TIME; + + ret = zb_write_attr_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = zb_write_attr_record_set_id(handle, id); + zb_write_attr_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_write_attr_record_set_id. +int utc_zb_write_attr_record_set_id_n(void) +{ + int ret = -1; + zb_zcl_write_attr_record_h handle = NULL; + zb_attribute_id id = ZB_ZCL_ATTR_IDENTIFY_TIME; + + ret = zb_write_attr_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Negative case : handle is null */ + ret = zb_write_attr_record_set_id(NULL, id); + zb_write_attr_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_write_attr_record_set_value. +int utc_zb_write_attr_record_set_value_p(void) +{ + int ret = -1; + zb_aes128_key pvalue = { + 0x5A, 0x69, 0x67, 0x42, 0x65, 0x65, 0x41, 0x6C, + 0x6C, 0x69, 0x61, 0x6E, 0x63, 0x65, 0x30, 0x39 + }; + + zb_zcl_write_attr_record_h handle = NULL; + + ret = zb_write_attr_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = zb_write_attr_record_set_value(handle, ZB_ZCL_128_BIT_SECURITY_KEY, + pvalue, zb_zcl_get_data_size(ZB_ZCL_128_BIT_SECURITY_KEY)); + zb_write_attr_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negvalueative zb_write_attr_record_set_value. +int utc_zb_write_attr_record_set_value_n(void) +{ + int ret = -1; + zb_aes128_key pvalue = { + 0x5A, 0x69, 0x67, 0x42, 0x65, 0x65, 0x41, 0x6C, + 0x6C, 0x69, 0x61, 0x6E, 0x63, 0x65, 0x30, 0x39 + }; + + zb_zcl_write_attr_record_h handle = NULL; + + ret = zb_write_attr_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Negative case : handle is null */ + ret = zb_write_attr_record_set_value(NULL, ZB_ZCL_128_BIT_SECURITY_KEY, + pvalue, zb_zcl_get_data_size(ZB_ZCL_128_BIT_SECURITY_KEY)); + zb_write_attr_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_write_attr_status_create. +int utc_zb_write_attr_status_create_p(void) +{ + int ret = -1; + zb_zcl_write_attr_status_record_h handle = NULL; + + ret = zb_write_attr_status_create(&handle); + zb_write_attr_status_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_write_attr_status_create. +int utc_zb_write_attr_status_create_n(void) +{ + int ret = -1; + zb_zcl_write_attr_status_record_h handle = NULL; + + /* Negative case : handle is null */ + ret = zb_write_attr_status_create(NULL); + zb_write_attr_status_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_write_attr_status_destroy. +int utc_zb_write_attr_status_destroy_p(void) +{ + int ret = -1; + zb_zcl_write_attr_status_record_h handle = NULL; + + ret = zb_write_attr_status_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = zb_write_attr_status_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_write_attr_status_destroy. +int utc_zb_write_attr_status_destroy_n(void) +{ + int ret = -1; + + /* Negative case : handle is null */ + ret = zb_write_attr_status_destroy(NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_write_attr_status_set_status. +int utc_zb_write_attr_status_set_status_p(void) +{ + int ret = -1; + zb_zcl_write_attr_status_record_h handle = NULL; + zb_zcl_status_e status = ZB_ZCL_STATUS_NO_IMAGE_AVAILABLE; + + ret = zb_write_attr_status_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = zb_write_attr_status_set_status(handle, status); + zb_write_attr_status_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_write_attr_status_set_status. +int utc_zb_write_attr_status_set_status_n(void) +{ + int ret = -1; + zb_zcl_write_attr_status_record_h handle = NULL; + zb_zcl_status_e status = ZB_ZCL_STATUS_REQUIRE_MORE_IMAGE; + + ret = zb_write_attr_status_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Negative case : handle is null */ + ret = zb_write_attr_status_set_status(NULL, status); + zb_write_attr_status_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_write_attr_status_get_status. +int utc_zb_write_attr_status_get_status_p(void) +{ + int ret = -1; + zb_zcl_write_attr_status_record_h handle = NULL; + zb_zcl_status_e status = ZB_ZCL_STATUS_NO_IMAGE_AVAILABLE; + + ret = zb_write_attr_status_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = zb_write_attr_status_get_status(handle, &status); + zb_write_attr_status_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_write_attr_status_get_status. +int utc_zb_write_attr_status_get_status_n(void) +{ + int ret = -1; + zb_zcl_write_attr_status_record_h handle = NULL; + zb_zcl_status_e status = ZB_ZCL_STATUS_REQUIRE_MORE_IMAGE; + + ret = zb_write_attr_status_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Negative case : handle is null */ + ret = zb_write_attr_status_get_status(NULL, &status); + zb_write_attr_status_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_write_attr_status_set_id. +int utc_zb_write_attr_status_set_id_p(void) +{ + int ret = -1; + zb_zcl_write_attr_status_record_h handle = NULL; + zb_attribute_id id = ZB_ZCL_ATTR_CURRENT_LEVEL; + + ret = zb_write_attr_status_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = zb_write_attr_status_set_id(handle, id); + zb_write_attr_status_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_write_attr_status_set_id. +int utc_zb_write_attr_status_set_id_n(void) +{ + int ret = -1; + zb_zcl_write_attr_status_record_h handle = NULL; + zb_attribute_id id = ZB_ZCL_ATTR_LEVEL_CONTROL_REMAINING_TIME; + + ret = zb_write_attr_status_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Negative case : handle is null */ + ret = zb_write_attr_status_set_id(NULL, id); + zb_write_attr_status_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_write_attr_status_get_id. +int utc_zb_write_attr_status_get_id_p(void) +{ + int ret = -1; + zb_zcl_write_attr_status_record_h handle = NULL; + zb_attribute_id id = ZB_ZCL_ATTR_ON_OFF_TRANSITION_TIME; + + ret = zb_write_attr_status_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = zb_write_attr_status_get_id(handle, &id); + zb_write_attr_status_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_write_attr_status_get_id. +int utc_zb_write_attr_status_get_id_n(void) +{ + int ret = -1; + zb_zcl_write_attr_status_record_h handle = NULL; + zb_attribute_id id = ZB_ZCL_ATTR_ON_LEVEL; + + ret = zb_write_attr_status_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Negative case : handle is null */ + ret = zb_write_attr_status_get_id(NULL, &id); + zb_write_attr_status_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} +#endif /* SUPPORT_ZCL_WRITE_ATTRIBUTE_STATUS */ + +#if 1 //def SUPPORT_ZCL_REPORT_CONFIG_REPORT +//& purpose: A purpose of a first positive zb_report_config_record_create. +int utc_zb_report_config_record_create_p(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + + ret = zb_report_config_record_create(&handle); + zb_report_config_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_report_config_record_create. +int utc_zb_report_config_record_create_n(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + + /* Negative case : handle is null */ + ret = zb_report_config_record_create(NULL); + zb_report_config_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_report_config_record_clone +int utc_zb_report_config_record_clone_p(void) +{ + int ret = -1; + unsigned char change[] = {0, 1, 2, 3, 4, 5}; + zb_zcl_read_report_config_record_h src = NULL; + zb_zcl_read_report_config_record_h dst = NULL; + + ret = zb_report_config_record_create(&src); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_report_config_record_set_change(src, ZB_ZCL_48_BIT_BITMAP, change); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = zb_report_config_record_clone(src, &dst); + zb_report_config_record_destroy(src); + zb_report_config_record_destroy(dst); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_report_config_record_clone. +int utc_zb_report_config_record_clone_n(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h src = NULL; + zb_zcl_read_report_config_record_h dst = NULL; + + ret = zb_report_config_record_create(&src); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = zb_report_config_record_clone(NULL, &dst); + zb_report_config_record_destroy(src); + zb_report_config_record_destroy(dst); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_report_config_record_destroy. +int utc_zb_report_config_record_destroy_p(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + + zb_report_config_record_create(&handle); + ret = zb_report_config_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_report_config_record_destroy. +int utc_zb_report_config_record_destroy_n(void) +{ + int ret = -1; + + /* Negative case : handle is null */ + ret = zb_report_config_record_destroy(NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_report_config_record_set_dir. +int utc_zb_report_config_record_set_dir_p(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + zb_zcl_fc_direction_e dir = ZB_ZCL_SERVER_TO_CLIENT; + + ret = zb_report_config_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = zb_report_config_record_set_dir(handle, dir); + zb_report_config_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_report_config_record_set_dir. +int utc_zb_report_config_record_set_dir_n(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + zb_zcl_fc_direction_e dir = ZB_ZCL_CLIENT_TO_SERVER; + + ret = zb_report_config_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Negative case : handle is null */ + ret = zb_report_config_record_set_dir(NULL, dir); + zb_report_config_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_report_config_record_get_dir. +int utc_zb_report_config_record_get_dir_p(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + zb_zcl_fc_direction_e dir = ZB_ZCL_SERVER_TO_CLIENT; + + ret = zb_report_config_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = zb_report_config_record_get_dir(handle, &dir); + zb_report_config_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_report_config_record_get_dir. +int utc_zb_report_config_record_get_dir_n(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + zb_zcl_fc_direction_e dir = ZB_ZCL_CLIENT_TO_SERVER; + + ret = zb_report_config_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Negative case : handle is null */ + ret = zb_report_config_record_get_dir(NULL, &dir); + zb_report_config_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_report_config_record_set_id. +int utc_zb_report_config_record_set_id_p(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + zb_attribute_id id = ZB_ZCL_ATTR_SHORT_ADDRESS; + + ret = zb_report_config_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = zb_report_config_record_set_id(handle, id); + zb_report_config_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_report_config_record_set_id. +int utc_zb_report_config_record_set_id_n(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + zb_attribute_id id = ZB_ZCL_ATTR_EXTENDED_PAN_ID; + + ret = zb_report_config_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Negative case : handle is null */ + ret = zb_report_config_record_set_id(NULL, id); + zb_report_config_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_report_config_record_get_id. +int utc_zb_report_config_record_get_id_p(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + zb_attribute_id id = ZB_ZCL_ATTR_PAN_ID; + + ret = zb_report_config_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = zb_report_config_record_get_id(handle, &id); + zb_report_config_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_report_config_record_get_id. +int utc_zb_report_config_record_get_id_n(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + zb_attribute_id id = ZB_ZCL_ATTR_CHANNEL_MASK; + + ret = zb_report_config_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Negative case : handle is null */ + ret = zb_report_config_record_get_id(NULL, &id); + zb_report_config_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_report_config_record_set_min_interval. +int utc_zb_report_config_record_set_min_interval_p(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + unsigned short min_i = 1; + + ret = zb_report_config_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = zb_report_config_record_set_min_interval(handle, min_i); + zb_report_config_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_report_config_record_set_min_interval. +int utc_zb_report_config_record_set_min_interval_n(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + unsigned short min_i = 2; + + ret = zb_report_config_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Negative case : handle is null */ + ret = zb_report_config_record_set_min_interval(NULL, min_i); + zb_report_config_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_report_config_record_get_min_interval. +int utc_zb_report_config_record_get_min_interval_p(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + unsigned short min_i = 3; + + zb_report_config_record_create(&handle); + ret = zb_report_config_record_get_min_interval(handle, &min_i); + zb_report_config_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_report_config_record_get_min_interval. +int utc_zb_report_config_record_get_min_interval_n(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + unsigned short min_i = 4; + + ret = zb_report_config_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Negative case : handle is null */ + ret = zb_report_config_record_get_min_interval(NULL, &min_i); + zb_report_config_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_report_config_record_set_max_interval. +int utc_zb_report_config_record_set_max_interval_p(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + unsigned short max_i = 1000; + + ret = zb_report_config_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = zb_report_config_record_set_max_interval(handle, max_i); + zb_report_config_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_report_config_record_set_max_interval. +int utc_zb_report_config_record_set_max_interval_n(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + unsigned short max_i = 2000; + + ret = zb_report_config_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Negative case : handle is null */ + ret = zb_report_config_record_set_max_interval(NULL, max_i); + zb_report_config_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_report_config_record_get_max_interval. +int utc_zb_report_config_record_get_max_interval_p(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + unsigned short max_i = 3000; + + ret = zb_report_config_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = zb_report_config_record_get_max_interval(handle, &max_i); + zb_report_config_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_report_config_record_get_max_interval. +int utc_zb_report_config_record_get_max_interval_n(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + unsigned short max_i = 4000; + + ret = zb_report_config_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Negative case : handle is null */ + ret = zb_report_config_record_get_max_interval(NULL, &max_i); + zb_report_config_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_report_config_record_set_timeout. +int utc_zb_report_config_record_set_timeout_p(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + unsigned short to = 10; + + ret = zb_report_config_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = zb_report_config_record_set_timeout(handle, to); + zb_report_config_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_report_config_record_set_timeout. +int utc_zb_report_config_record_set_timeout_n(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + unsigned short to = 60; + + ret = zb_report_config_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Negative case : handle is null */ + ret = zb_report_config_record_set_timeout(NULL, to); + zb_report_config_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_report_config_record_get_timeout. +int utc_zb_report_config_record_get_timeout_p(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + unsigned short to = 3000; + + ret = zb_report_config_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = zb_report_config_record_get_timeout(handle, &to); + zb_report_config_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_report_config_record_get_timeout. +int utc_zb_report_config_record_get_timeout_n(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + unsigned short to = 4000; + + ret = zb_report_config_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Negative case : handle is null */ + ret = zb_report_config_record_get_timeout(NULL, &to); + zb_report_config_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_report_config_record_set_change. +int utc_zb_report_config_record_set_change_p(void) +{ + int ret = -1; + zb_zcl_data_type_e type = ZB_ZCL_8_BIT_DATA; + unsigned char pval[] = {1}; + zb_zcl_read_report_config_record_h handle = NULL; + + ret = zb_report_config_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = zb_report_config_record_set_change(handle, type, pval); + zb_report_config_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_report_config_record_set_change. +int utc_zb_report_config_record_set_change_n(void) +{ + int ret = -1; + zb_zcl_data_type_e type = ZB_ZCL_32_BIT_DATA; + unsigned char pval[] = {1, 0, 0, 0}; + zb_zcl_read_report_config_record_h handle = NULL; + + ret = zb_report_config_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Negative case : handle is null */ + ret = zb_report_config_record_set_change(NULL, type, pval); + zb_report_config_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_report_config_record_get_change. +int utc_zb_report_config_record_get_change_p(void) +{ + int ret1; + int ret2 = -1; + int size = -1; + zb_zcl_data_type_e type = ZB_ZCL_24_BIT_DATA; + unsigned char pval[] = {0xab, 0xcd, 0xef}; + unsigned char *lval = NULL; + zb_zcl_read_report_config_record_h handle = NULL; + + ret1 = zb_report_config_record_create(&handle); + if (false == g_feature) { + zb_report_config_record_destroy(handle); + assert_eq(ret1, ZIGBEE_ERROR_NOT_SUPPORTED); + } else { + + zb_report_config_record_set_change(handle, type, pval); + lval = calloc(sizeof(pval), sizeof(char)); + + ret1 = zb_report_config_record_get_change(handle, &type, &lval, &size); + ret2 = memcmp(pval, lval, sizeof(pval)); + + zb_report_config_record_destroy(handle); + if (lval) { + free(lval); + lval = NULL; + } + + assert_eq(ret1, ZIGBEE_ERROR_NONE); + assert_eq(ret2, 0); + } + return 0; +} + +//& purpose: A purpose of a first positive zb_report_config_record_get_change. +int utc_zb_report_config_record_get_change_n(void) +{ + int ret = -1; + int size = -1; + zb_zcl_data_type_e type = ZB_ZCL_24_BIT_DATA; + unsigned char pval[] = {1, 0, 0}; + unsigned char *lval = NULL; + zb_zcl_read_report_config_record_h handle = NULL; + + ret = zb_report_config_record_create(&handle); + if (false == g_feature) + assert_eq(ret, ZIGBEE_ERROR_NOT_SUPPORTED); + else { + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + ret = zb_report_config_record_set_change(handle, type, pval); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Negative case : handle is null */ + ret = zb_report_config_record_get_change(NULL, &type, &lval, &size); + zb_report_config_record_destroy(handle); + assert_neq(ret, ZIGBEE_ERROR_NONE); + } + return 0; +} +#endif /* SUPPORT_ZCL_REPORT_CONFIG_REPORT */ + +#if 1 //def SUPPORT_ZCL_READ_REPORT_CONFIG_RECORD +//& purpose: A purpose of a first positive zb_read_report_config_record_create. +int utc_zb_read_report_config_record_create_p(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + + ret = zb_read_report_config_record_create(&handle); + zb_read_report_config_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_read_report_config_record_create. +int utc_zb_read_report_config_record_create_n(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + + /* Negative case : handle is null */ + ret = zb_read_report_config_record_create(NULL); + zb_read_report_config_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret);; +} + +//& purpose: A purpose of a first positive zb_read_report_config_record_destroy. +int utc_zb_read_report_config_record_destroy_p(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + + zb_read_report_config_record_create(&handle); + ret = zb_read_report_config_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_read_report_config_record_destroy. +int utc_zb_read_report_config_record_destroy_n(void) +{ + int ret = -1; + + /* Negative case : handle is null */ + ret = zb_read_report_config_record_destroy(NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_read_report_config_record_set_dir. +int utc_zb_read_report_config_record_set_dir_p(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + zb_zcl_fc_direction_e dir = ZB_ZCL_CLIENT_TO_SERVER; + + ret = zb_read_report_config_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = zb_read_report_config_record_set_dir(handle, dir); + zb_read_report_config_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_read_report_config_record_set_id. +int utc_zb_read_report_config_record_set_dir_n(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + zb_zcl_fc_direction_e dir = ZB_ZCL_CLIENT_TO_SERVER; + + ret = zb_read_report_config_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Negative case : handle is null */ + ret = zb_read_report_config_record_set_dir(NULL, dir); + zb_read_report_config_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_read_report_config_record_set_id. +int utc_zb_read_report_config_record_set_id_p(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + zb_attribute_id id = ZB_ZCL_ATTR_UPGRADE_SERVER_ID; + + ret = zb_read_report_config_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + ret = zb_read_report_config_record_set_id(handle, id); + zb_read_report_config_record_destroy(handle); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_read_report_config_record_set_id. +int utc_zb_read_report_config_record_set_id_n(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h handle = NULL; + zb_attribute_id id = ZB_ZCL_ATTR_UPGRADE_SERVER_ID; + + ret = zb_read_report_config_record_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("pre-condition error: %d", ret); + return ret; + } + + /* Negative case : handle is null */ + ret = zb_read_report_config_record_set_id(NULL, id); + zb_read_report_config_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +#endif /* SUPPORT_ZCL_READ_REPORT_CONFIG_RECORD */ + +#if 1 //def SUPPORT_ZCL_REPORT_CONFIG_RESPONSE_RECORD + +//& purpose: A purpose of a first negative zb_report_config_response_record_clone. +int utc_zb_report_config_response_record_clone_n(void) +{ + int ret = -1; + zb_zcl_read_report_config_record_h src = NULL; + zb_zcl_read_report_config_record_h dst = NULL; + + ret = zb_report_config_response_record_clone(src, &dst); + zb_report_config_response_record_destroy(src); + zb_report_config_response_record_destroy(dst); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_report_config_response_record_destroy. +int utc_zb_report_config_response_record_destroy_n(void) +{ + int ret = -1; + + /* Negative case : handle is null */ + ret = zb_report_config_response_record_destroy(NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_report_config_response_record_get_status. +int utc_zb_report_config_response_record_get_status_n(void) +{ + int ret = -1; + zb_zcl_report_config_response_record_h handle = NULL; + zb_zcl_status_e lstatus = ZB_ZCL_STATUS_READ_ONLY; + + /* Negative case : handle is null */ + ret = zb_report_config_response_record_get_status(NULL, &lstatus); + zb_report_config_response_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_report_config_response_record_get_dir. +int utc_zb_report_config_response_record_get_dir_n(void) +{ + int ret = -1; + zb_zcl_report_config_response_record_h handle = NULL; + zb_zcl_fc_direction_e ldir = ZB_ZCL_CLIENT_TO_SERVER; + + /* Negative case : handle is null */ + ret = zb_report_config_response_record_get_dir(NULL, &ldir); + zb_report_config_response_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_report_config_response_record_get_id. +int utc_zb_report_config_response_record_get_id_n(void) +{ + int ret = -1; + zb_zcl_report_config_response_record_h handle = NULL; + zb_attribute_id lid = ZB_ZCL_ATTR_LAST_CONFIGURED_BY; + + /* Negative case : handle is null */ + ret = zb_report_config_response_record_get_id(NULL, &lid); + zb_report_config_response_record_destroy(handle); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} +#endif /* SUPPORT_ZCL_REPORT_CONFIG_RESPONSE_RECORD */ diff --git a/src/utc/zigbee/utc-zigbee-zdo-dev-disc.c b/src/utc/zigbee/utc-zigbee-zdo-dev-disc.c new file mode 100644 index 000000000..6d8284259 --- /dev/null +++ b/src/utc/zigbee/utc-zigbee-zdo-dev-disc.c @@ -0,0 +1,453 @@ +// +// Copyright (c) 2016 Samsung Electronics Co., Ltd. +// +// Licensed under the Apache License, Version 2.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#include + +#include "assert.h" +#include "utc-zigbee-common.h" + +extern bool g_feature; +extern zb_zigbee_h handle; + +/** + * @brief Devices specified the HA profile. + * + * @since_tizen 5.0 + */ +typedef enum { + /* General devices */ + ZB_HA_ON_OFF_SWITCH = 0x0000, /**< On/off switch device */ + ZB_HA_LEVEL_CONTROL_SWITCH = 0x0001, /**< Level control device */ + ZB_HA_ON_OFF_OUTPUT = 0x0002, /**< On/off output device */ + ZB_HA_LEVEL_CONTROLLABLE_OUTPUT = 0x0003, /**< Controllable output device */ + ZB_HA_SCENE_SELECOTOR = 0x0004, /**< Scene selector device */ + ZB_HA_CONFIGURATION_TOOL = 0x0005, /**< Configuration tool device */ + ZB_HA_REMOTE_CONTROL = 0x0006, /**< Remote control device */ + ZB_HA_COMBINED_INTERFACE = 0x0007, /**< Combined interface device */ + ZB_HA_RANGE_EXTENDER = 0x0008, /**< Range extender device */ + ZB_HA_MAINS_POWER_OUTLET = 0x0009, /**< Main power outlet device */ + ZB_HA_DOOR_LOCK = 0x000A, /**< Door lock device */ + ZB_HA_DOOR_LOCK_CONTROLLER = 0x000B, /**< Door lock controller device */ + ZB_HA_SIMPLE_SENSOR = 0x000C, /**< Simple sensor device */ + ZB_HA_CONSUMPTION_AWARENESS_DEVICE = 0x000D, /**< Consumption awareness device */ + ZB_HA_HOME_GATEWAY = 0x0050, /**< Home gateway device */ + ZB_HA_SMART_PLUG = 0x0051, /**< Smart plug device */ + ZB_HA_WHITE_GOODS = 0x0052, /**< White goods device */ + ZB_HA_METER_INTERFACE = 0x0053, /**< Meter interface device */ + /* Lighting devices */ + ZB_HA_ON_OFF_LIGHT = 0x0100, /**< On/off light device */ + ZB_HA_DIMMABLE_LIGHT = 0x0101, /**< Dimmable light device */ + ZB_HA_COLOR_DIMMABLE_LIGHT = 0x0102, /**< Color dimmable light device */ + ZB_HA_ON_OFF_LIGHT_SWITCH = 0x0103, /**< On/off light device */ + ZB_HA_DIMMER_SWITCH = 0x0104, /**< Dimmer switch device */ + ZB_HA_COLOR_DIMMER_SWITCH = 0x0105, /**< Color dimmer switch device */ + ZB_HA_LIGHT_SENSOR = 0x0106, /**< Light sensor device */ + ZB_HA_OCUPANCY_SENSOR = 0x0107, /**< Ocupancy sensor device */ + /* Closures devices */ + ZB_HA_SHADE = 0x0200, /**< Shade device */ + ZB_HA_SHADE_CONTROLLER = 0x0201, /**< Shade controller device */ + ZB_HA_WINDOW_COVERING_DEVICE = 0x0202, /**< Window covering device */ + ZB_HA_WINDOW_COVERING_CONTROLLER = 0x0203, /**< Window covering controller device */ + /* HVAC devices */ + ZB_HA_HEATING_COOLLING_UNIT = 0x0300, /**< Heating coolling device */ + ZB_HA_THERMOSTAT = 0x0301, /**< Thermostat device */ + ZB_HA_TEMPERATURE_SENSOR = 0x0302, /**< Temperature sensor device */ + ZB_HA_PUMP = 0x0303, /**< Pump device */ + ZB_HA_PUMP_CONTROLLER = 0x0304, /**< Pump controller device */ + ZB_HA_PRESSURE_SENSOR = 0x0305, /**< Pressure sensor device */ + ZB_HA_FLOW_SENSOR = 0x0306, /**< Flow sensor device */ + ZB_HA_MINI_SPLIT_AC = 0x0307, /**< Mini split device */ + /* Intruder Alarms system */ + ZB_HA_IAS_CONTROL_AND_INDICATING_EQUIPMENT = 0x0400, /**< IAS control and indicating equipment device */ + ZB_HA_IAS_ANCILLARY_CONTROL_EQUIPMENT = 0x0401, /**< IAS ancillary control device */ + ZB_HA_IAS_ZONE = 0x0402, /**< IAS zone device */ + ZB_HA_IAS_WARNIGN_DEVICE = 0x0403, /**< IAS warning device */ +} ha_device_id_e; + + +#define CASE_TO_STR(x) case x: return #x; + +static const char* zb_zdo_get_error_message(int id) +{ + switch (id) { + CASE_TO_STR(ZB_ZDP_STATUS_SUCCESS) + CASE_TO_STR(ZB_ZDP_STATUS_INVALID_REQUEST_TYPE) + CASE_TO_STR(ZB_ZDP_STATUS_DEVICE_NOT_FOUND) + CASE_TO_STR(ZB_ZDP_STATUS_INVALID_EP) + CASE_TO_STR(ZB_ZDP_STATUS_NOT_ACTIVE) + CASE_TO_STR(ZB_ZDP_STATUS_NOT_SUPPORTED) + CASE_TO_STR(ZB_ZDP_STATUS_TIMEOUT) + CASE_TO_STR(ZB_ZDP_STATUS_NO_MATCH) + CASE_TO_STR(ZB_ZDP_STATUS_NO_ENTRY) + CASE_TO_STR(ZB_ZDP_STATUS_NO_DESCRIPTOR) + CASE_TO_STR(ZB_ZDP_STATUS_INSUFFICIENT_SPACE) + CASE_TO_STR(ZB_ZDP_STATUS_NOT_PERMITTED) + CASE_TO_STR(ZB_ZDP_STATUS_TABLE_FULL) + CASE_TO_STR(ZB_ZDP_STATUS_NOT_AUTHORIZED) + CASE_TO_STR(ZB_ZDP_STATUS_DEVICE_BINDING_TABLE_FULL) + default : + return "ZB_ZDP_UNKNOWN"; + } +} + +static const char* zb_get_profile_id_string(int profile_id) +{ + switch (profile_id) { + CASE_TO_STR(ZB_PROFILE_HOME_AUTOMATION) + default : + return "ZB_UNKNOWN_PROFILE"; + } +} + +static const char* zb_get_device_id_string(int device_id) +{ + switch (device_id) { + /* General devices */ + CASE_TO_STR(ZB_HA_ON_OFF_SWITCH) + CASE_TO_STR(ZB_HA_LEVEL_CONTROL_SWITCH) + CASE_TO_STR(ZB_HA_ON_OFF_OUTPUT) + CASE_TO_STR(ZB_HA_LEVEL_CONTROLLABLE_OUTPUT) + CASE_TO_STR(ZB_HA_SCENE_SELECOTOR) + CASE_TO_STR(ZB_HA_CONFIGURATION_TOOL) + CASE_TO_STR(ZB_HA_REMOTE_CONTROL) + CASE_TO_STR(ZB_HA_COMBINED_INTERFACE) + CASE_TO_STR(ZB_HA_RANGE_EXTENDER) + CASE_TO_STR(ZB_HA_MAINS_POWER_OUTLET) + CASE_TO_STR(ZB_HA_DOOR_LOCK) + CASE_TO_STR(ZB_HA_DOOR_LOCK_CONTROLLER) + CASE_TO_STR(ZB_HA_SIMPLE_SENSOR) + CASE_TO_STR(ZB_HA_CONSUMPTION_AWARENESS_DEVICE) + CASE_TO_STR(ZB_HA_HOME_GATEWAY) + CASE_TO_STR(ZB_HA_SMART_PLUG) + CASE_TO_STR(ZB_HA_WHITE_GOODS) + CASE_TO_STR(ZB_HA_METER_INTERFACE) + /* Lighting devices */ + CASE_TO_STR(ZB_HA_ON_OFF_LIGHT) + CASE_TO_STR(ZB_HA_DIMMABLE_LIGHT) + CASE_TO_STR(ZB_HA_COLOR_DIMMABLE_LIGHT) + CASE_TO_STR(ZB_HA_ON_OFF_LIGHT_SWITCH) + CASE_TO_STR(ZB_HA_DIMMER_SWITCH) + CASE_TO_STR(ZB_HA_COLOR_DIMMER_SWITCH) + CASE_TO_STR(ZB_HA_LIGHT_SENSOR) + CASE_TO_STR(ZB_HA_OCUPANCY_SENSOR) + /* Closures devices */ + CASE_TO_STR(ZB_HA_SHADE) + CASE_TO_STR(ZB_HA_SHADE_CONTROLLER) + CASE_TO_STR(ZB_HA_WINDOW_COVERING_DEVICE) + CASE_TO_STR(ZB_HA_WINDOW_COVERING_CONTROLLER) + /* HVAC devices */ + CASE_TO_STR(ZB_HA_HEATING_COOLLING_UNIT) + CASE_TO_STR(ZB_HA_THERMOSTAT) + CASE_TO_STR(ZB_HA_TEMPERATURE_SENSOR) + CASE_TO_STR(ZB_HA_PUMP) + CASE_TO_STR(ZB_HA_PUMP_CONTROLLER) + CASE_TO_STR(ZB_HA_PRESSURE_SENSOR) + CASE_TO_STR(ZB_HA_FLOW_SENSOR) + CASE_TO_STR(ZB_HA_MINI_SPLIT_AC) + /* Intruder Alarms system */ + CASE_TO_STR(ZB_HA_IAS_CONTROL_AND_INDICATING_EQUIPMENT) + CASE_TO_STR(ZB_HA_IAS_ANCILLARY_CONTROL_EQUIPMENT) + CASE_TO_STR(ZB_HA_IAS_ZONE) + default : + return "ZB_HA_UNKNOWN_DEVICE"; + } +} + +static const char* zb_get_cluster_name(int id) +{ + switch (id) { + CASE_TO_STR(ZB_ZCL_CLUSTER_BASIC) + CASE_TO_STR(ZB_ZCL_CLUSTER_POWER_CONFIG) + CASE_TO_STR(ZB_ZCL_CLUSTER_DEVICE_TEMP) + CASE_TO_STR(ZB_ZCL_CLUSTER_IDENTIFY) + CASE_TO_STR(ZB_ZCL_CLUSTER_GROUPS) + CASE_TO_STR(ZB_ZCL_CLUSTER_SCENES) + CASE_TO_STR(ZB_ZCL_CLUSTER_ON_OFF) + CASE_TO_STR(ZB_ZCL_CLUSTER_ON_OFF_SWITCH_CONFIG) + CASE_TO_STR(ZB_ZCL_CLUSTER_LEVEL_CONTROL) + CASE_TO_STR(ZB_ZCL_CLUSTER_ALARM) + CASE_TO_STR(ZB_ZCL_CLUSTER_TIME) + CASE_TO_STR(ZB_ZCL_CLUSTER_RSSI_LOCATION) + CASE_TO_STR(ZB_ZCL_CLUSTER_BINARY_INPUT_BASIC) + CASE_TO_STR(ZB_ZCL_CLUSTER_COMMISSIONING) + CASE_TO_STR(ZB_ZCL_CLUSTER_PARTITION) + CASE_TO_STR(ZB_ZCL_CLUSTER_OTA_BOOTLOAD) + CASE_TO_STR(ZB_ZCL_CLUSTER_POWER_PROFILE) + CASE_TO_STR(ZB_ZCL_CLUSTER_APPLIANCE_CONTROL) + CASE_TO_STR(ZB_ZCL_CLUSTER_POLL_CONTROL) + CASE_TO_STR(ZB_ZCL_CLUSTER_SHADE_CONFIG) + CASE_TO_STR(ZB_ZCL_CLUSTER_DOOR_LOCK) + CASE_TO_STR(ZB_ZCL_CLUSTER_WINDOW_COVERING) + CASE_TO_STR(ZB_ZCL_CLUSTER_PUMP_CONFIG_CONTROL) + CASE_TO_STR(ZB_ZCL_CLUSTER_THERMOSTAT) + CASE_TO_STR(ZB_ZCL_CLUSTER_FAN_CONTROL) + CASE_TO_STR(ZB_ZCL_CLUSTER_DEHUMID_CONTROL) + CASE_TO_STR(ZB_ZCL_CLUSTER_THERMOSTAT_UI_CONFIG) + CASE_TO_STR(ZB_ZCL_CLUSTER_COLOR_CONTROL) + CASE_TO_STR(ZB_ZCL_CLUSTER_BALLAST_CONFIGURATION) + CASE_TO_STR(ZB_ZCL_CLUSTER_ILLUM_MEASUREMENT) + CASE_TO_STR(ZB_ZCL_CLUSTER_ILLUM_LEVEL_SENSING) + CASE_TO_STR(ZB_ZCL_CLUSTER_TEMP_MEASUREMENT) + CASE_TO_STR(ZB_ZCL_CLUSTER_PRESSURE_MEASUREMENT) + CASE_TO_STR(ZB_ZCL_CLUSTER_FLOW_MEASUREMENT) + CASE_TO_STR(ZB_ZCL_CLUSTER_RELATIVE_HUMIDITY_MEASUREMENT) + CASE_TO_STR(ZB_ZCL_CLUSTER_OCCUPANCY_SENSING) + CASE_TO_STR(ZB_ZCL_CLUSTER_IAS_ZONE) + CASE_TO_STR(ZB_ZCL_CLUSTER_IAS_ACE) + CASE_TO_STR(ZB_ZCL_CLUSTER_IAS_WD) + CASE_TO_STR(ZB_ZCL_CLUSTER_GENERIC_TUNNEL) + CASE_TO_STR(ZB_ZCL_CLUSTER_BACNET_PROTOCOL_TUNNEL) + CASE_TO_STR(ZB_ZCL_CLUSTER_11073_PROTOCOL_TUNNEL) + CASE_TO_STR(ZB_ZCL_CLUSTER_ISO7816_PROTOCOL_TUNNEL) + CASE_TO_STR(ZB_ZCL_CLUSTER_PRICE) + CASE_TO_STR(ZB_ZCL_CLUSTER_DEMAND_RESPONSE_LOAD_CONTROL) + CASE_TO_STR(ZB_ZCL_CLUSTER_SIMPLE_METERING) + CASE_TO_STR(ZB_ZCL_CLUSTER_MESSAGING) + CASE_TO_STR(ZB_ZCL_CLUSTER_TUNNELING) + CASE_TO_STR(ZB_ZCL_CLUSTER_PREPAYMENT) + CASE_TO_STR(ZB_ZCL_CLUSTER_ENERGY_MANAGEMENT) + CASE_TO_STR(ZB_ZCL_CLUSTER_TOU_CALENDAR) + CASE_TO_STR(ZB_ZCL_CLUSTER_DEVICE_MANAGEMENT) + CASE_TO_STR(ZB_ZCL_CLUSTER_EVENTS) + CASE_TO_STR(ZB_ZCL_CLUSTER_MDU_PAIRING) + CASE_TO_STR(ZB_ZCL_CLUSTER_KEY_ESTABLISHMENT) + CASE_TO_STR(ZB_ZCL_CLUSTER_INFORMATION) + CASE_TO_STR(ZB_ZCL_CLUSTER_DATA_SHARING) + CASE_TO_STR(ZB_ZCL_CLUSTER_GAMING) + CASE_TO_STR(ZB_ZCL_CLUSTER_DATA_RATE_CONTROL) + CASE_TO_STR(ZB_ZCL_CLUSTER_VOICE_OVER_ZIGBEE) + CASE_TO_STR(ZB_ZCL_CLUSTER_CHATTING) + CASE_TO_STR(ZB_ZCL_CLUSTER_PAYMENT) + CASE_TO_STR(ZB_ZCL_CLUSTER_BILLING) + CASE_TO_STR(ZB_ZCL_CLUSTER_APPLIANCE_IDENTIFICATION) + CASE_TO_STR(ZB_ZCL_CLUSTER_METER_IDENTIFICATION) + CASE_TO_STR(ZB_ZCL_CLUSTER_APPLIANCE_EVENTS_AND_ALERT) + CASE_TO_STR(ZB_ZCL_CLUSTER_APPLIANCE_STATISTICS) + CASE_TO_STR(ZB_ZCL_CLUSTER_ELECTRICAL_MEASUREMENT) + CASE_TO_STR(ZB_ZCL_CLUSTER_DIAGNOSTICS) + CASE_TO_STR(ZB_ZCL_CLUSTER_ZLL_COMMISSIONING) + default: + return "UNDEFINED_CLUSTER"; + break; + } +} + + +void _zb_zdo_addr_rsp(zb_zdp_status_e status, zb_ieee_addr remote_dev_addr64, + zb_nwk_addr remote_dev_addr16, unsigned char assoc_dev_len, + unsigned char start_idx, zb_device_id *assoc_dev_addr_list, void *user_data) +{ + LOG("zb_zdo_addr_cb() status = 0x%02X (%s)", status, zb_zdo_get_error_message(status)); + if (remote_dev_addr64) { + LOG("IEEE Address : %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:", + remote_dev_addr64[0], remote_dev_addr64[1], remote_dev_addr64[2], + remote_dev_addr64[3], remote_dev_addr64[4], remote_dev_addr64[5], + remote_dev_addr64[6], remote_dev_addr64[7]); + } else { + LOG("IEEE Address : 00:00:00:00:00:00:00:00:"); + } + + LOG("Network Address : 0x%04X", remote_dev_addr16); + LOG("Number of Associated Device : %d", assoc_dev_len); + LOG("Start Index : %d", start_idx); +} + +void _zb_zdo_active_ep_rsp(zb_zdp_status_e status, zb_nwk_addr addr16, + unsigned char count, unsigned char *ep_list, void *user_data) +{ + int i; + + LOG("count = 0x%02X", count); + for (i = 0; i < count; i++) + LOG("EP = 0x%02X", ep_list[i]); + LOG("zb_zdo_active_ep_cb() status = 0x%02X (%s)", status, + zb_zdo_get_error_message(status)); +} + +void _zb_zdo_simple_desc_rsp(zb_nwk_addr addr16, unsigned char len, + const zb_zdo_simple_desc_h handle, void *user_data) +{ + int i, ret; + unsigned char param_u8; + unsigned short param_u16; + unsigned short *in_clusters; + unsigned short *out_clusters; + + LOG("zb_zdo_simple_desc_cb()"); + + ret = zb_simple_desc_get_ep(handle, ¶m_u8); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("zb_simple_desc_get_ep() Fail(0x%X)", ret); + } else { + LOG(" ep = %d", param_u8); + } + + ret = zb_simple_desc_get_profile_id(handle, ¶m_u16); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("zb_simple_desc_get_profile_id() Fail(0x%X)", ret); + } else { + LOG(" profile_id = 0x%x (%s)", param_u16, zb_get_profile_id_string(param_u16)); + } + + ret = zb_simple_desc_get_device_id(handle, ¶m_u16); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("zb_simple_desc_get_device_id() Fail(0x%X)", ret); + } else { + LOG(" device_id = 0x%x (%s)", param_u16, zb_get_device_id_string(param_u16)); + } + + ret = zb_simple_desc_get_device_ver(handle, ¶m_u16); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("zb_simple_desc_get_device_ver() Fail(0x%X)", ret); + } else { + LOG(" device_ver = %d", param_u16); + } + + ret = zb_simple_desc_get_num_of_in_clusters(handle, ¶m_u8); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("zb_simple_desc_get_num_of_in_clusters() Fail(0x%X)", ret); + } else { + LOG(" num_of_in_cluster = %d", param_u8); + } + + ret = zb_simple_desc_get_in_clusters(handle, &in_clusters); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("zb_simple_desc_get_in_clusters() Fail(0x%X)", ret); + } else { + for (i = 0; i < param_u8; i++) + LOG(" %04X (%s)", in_clusters[i], zb_get_cluster_name(in_clusters[i])); + } + + ret = zb_simple_desc_get_num_of_out_clusters(handle, ¶m_u8); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("zb_simple_desc_get_num_of_out_clusters() Fail(0x%X)", ret); + } else { + LOG(" num_of_out_cluster = %d", param_u8); + } + + ret = zb_simple_desc_get_out_clusters(handle, &out_clusters); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("zb_simple_desc_get_out_clusters() Fail(0x%X)", ret); + } else { + for (i = 0; i < param_u8; i++) + LOG(" %04X (%s)", out_clusters[i], zb_get_cluster_name(out_clusters[i])); + } +} + +void _zb_zdo_extended_simple_desc_rsp(zb_zdp_status_e status, + zb_nwk_addr addr16, zb_end_point ep, unsigned char app_input_cluster_count, + unsigned char app_output_cluster_count, unsigned char start_idx, + const unsigned char *app_cluster_list, void *user_data) +{ + LOG("_zb_zdo_extended_simple_desc_rsp() status = 0x%02X (%s)", + status, zb_zdo_get_error_message(status)); +} + +//& purpose: A purpose of a first positive zb_zdo_nwk_addr_req. +int utc_zb_zdo_nwk_addr_req_p(void) +{ + int ret; + zb_ieee_addr addr64 = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 }; + unsigned char request_type = 1; + unsigned char start_idx = 1; + + ret = zb_zdo_nwk_addr_req(handle, addr64, request_type, start_idx, + _zb_zdo_addr_rsp, NULL); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_zdo_nwk_addr_req. +int utc_zb_zdo_nwk_addr_req_n(void) +{ + int ret; + zb_ieee_addr addr64 = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 }; + unsigned char request_type = 1; + unsigned char start_idx = 1; + + ret = zb_zdo_nwk_addr_req(NULL, addr64, request_type, start_idx, + _zb_zdo_addr_rsp, NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_zdo_ieee_addr_req. +int utc_zb_zdo_ieee_addr_req_p(void) +{ + int ret; + zb_nwk_addr addr16 = 0x1111; + + ret = zb_zdo_ieee_addr_req(handle, addr16, _zb_zdo_addr_rsp, NULL); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_zdo_ieee_addr_req. +int utc_zb_zdo_ieee_addr_req_n(void) +{ + int ret; + zb_nwk_addr addr16 = 0x1111; + + ret = zb_zdo_ieee_addr_req(NULL, addr16, _zb_zdo_addr_rsp, NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_zdo_active_ep. +int utc_zb_zdo_active_ep_p(void) +{ + int ret; + zb_nwk_addr addr16 = 0x1111; + + ret = zb_zdo_active_ep(handle, addr16, _zb_zdo_active_ep_rsp, NULL); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_zdo_active_ep. +int utc_zb_zdo_active_ep_n(void) +{ + int ret; + zb_nwk_addr addr16 = 0x1111; + + ret = zb_zdo_active_ep(NULL, addr16, _zb_zdo_active_ep_rsp, NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_zdo_simple_desc_req. +int utc_zb_zdo_simple_desc_req_p(void) +{ + int ret; + zb_nwk_addr addr16 = 0x1111; + unsigned char ep = 1; + + ret = zb_zdo_simple_desc_req(handle, addr16, ep, _zb_zdo_simple_desc_rsp, NULL); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_zdo_simple_desc_req. +int utc_zb_zdo_simple_desc_req_n(void) +{ + int ret; + zb_nwk_addr addr16 = 0x1111; + unsigned char ep = 1; + + ret = zb_zdo_simple_desc_req(NULL, addr16, ep, _zb_zdo_simple_desc_rsp, NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + diff --git a/src/utc/zigbee/utc-zigbee-zdo.c b/src/utc/zigbee/utc-zigbee-zdo.c new file mode 100644 index 000000000..e34695bd8 --- /dev/null +++ b/src/utc/zigbee/utc-zigbee-zdo.c @@ -0,0 +1,486 @@ +// +// Copyright (c) 2016 Samsung Electronics Co., Ltd. +// +// Licensed under the Apache License, Version 2.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#include + +#include "assert.h" +#include "utc-zigbee-common.h" + +extern bool g_feature; +extern zb_zigbee_h handle; + +static GMainLoop *main_loop = NULL; + +zb_zdo_simple_desc_h simple_desc = NULL; + +void utc_zdo_simple_desc_startup(void) +{ + /* Initialize simple descriptor handle */ + utc_startup(); + zb_simple_desc_create(&simple_desc); + + return; +} + +void utc_zdo_simple_desc_cleanup(void) +{ + /* De-Initialize simple descriptor handle */ + zb_simple_desc_destroy(simple_desc); + simple_desc = NULL; + utc_cleanup(); + + return; +} + +void utc_zdo_getter_startup(void) +{ + zb_create(&handle); + main_loop = g_main_loop_new(NULL, FALSE); + + return; +} + +void utc_zdo_getter_cleanup(void) +{ + zb_destroy(handle); + handle = NULL; + + g_main_loop_unref(main_loop); + main_loop = NULL; + + return; +} + +//& purpose: A purpose of a first positive zb_simple_desc_create. +int utc_zb_simple_desc_create_p(void) +{ + int ret; + zb_zdo_simple_desc_h zdo_simple_desc = NULL; + + ret = zb_simple_desc_create(&zdo_simple_desc); + zb_simple_desc_destroy(zdo_simple_desc); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_simple_desc_create. +int utc_zb_simple_desc_create_n(void) +{ + int ret; + + ret = zb_simple_desc_create(NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_simple_desc_destroy. +int utc_zb_simple_desc_destroy_p(void) +{ + int ret; + zb_zdo_simple_desc_h zdo_simple_desc = NULL; + + zb_simple_desc_create(&zdo_simple_desc); + ret = zb_simple_desc_destroy(zdo_simple_desc); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_simple_desc_destroy. +int utc_zb_simple_desc_destroy_n(void) +{ + int ret; + + ret = zb_simple_desc_destroy(NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_simple_desc_clone. +int utc_zb_simple_desc_clone_p(void) +{ + int ret; + zb_zdo_simple_desc_h new_simple_desc = NULL; + + zb_simple_desc_create(&new_simple_desc); + ret = zb_simple_desc_clone(simple_desc, new_simple_desc); + zb_simple_desc_destroy(new_simple_desc); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_simple_desc_clone. +int utc_zb_simple_desc_clone_n(void) +{ + int ret; + + ret = zb_simple_desc_clone(simple_desc, NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_simple_desc_get_ep. +int utc_zb_simple_desc_get_ep_p(void) +{ + int ret; + zb_end_point ep; + + ret = zb_simple_desc_get_ep(simple_desc, &ep); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_simple_desc_get_ep. +int utc_zb_simple_desc_get_ep_n(void) +{ + int ret; + + ret = zb_simple_desc_get_ep(NULL, NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_simple_desc_set_ep. +int utc_zb_simple_desc_set_ep_p(void) +{ + int ret; + unsigned char ep = 1; + + ret = zb_simple_desc_set_ep(simple_desc, ep); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_simple_desc_set_ep. +int utc_zb_simple_desc_set_ep_n(void) +{ + int ret; + unsigned char ep = 1; + + ret = zb_simple_desc_set_ep(NULL, ep); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_simple_desc_get_profile_id. +int utc_zb_simple_desc_get_profile_id_p(void) +{ + int ret; + unsigned short profile_id; + + ret = zb_simple_desc_get_profile_id(simple_desc, &profile_id); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_simple_desc_get_profile_id. +int utc_zb_simple_desc_get_profile_id_n(void) +{ + int ret; + + ret = zb_simple_desc_get_profile_id(NULL, NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_simple_desc_set_profile_id. +int utc_zb_simple_desc_set_profile_id_p(void) +{ + int ret; + unsigned short profile_id = 1; + + ret = zb_simple_desc_set_profile_id(simple_desc, profile_id); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_simple_desc_set_profile_id. +int utc_zb_simple_desc_set_profile_id_n(void) +{ + int ret; + unsigned short profile_id = 1; + + ret = zb_simple_desc_set_profile_id(NULL, profile_id); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_simple_desc_get_device_id. +int utc_zb_simple_desc_get_device_id_p(void) +{ + int ret; + unsigned short device_id; + + ret = zb_simple_desc_get_device_id(simple_desc, &device_id); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_simple_desc_get_device_id. +int utc_zb_simple_desc_get_device_id_n(void) +{ + int ret; + + ret = zb_simple_desc_get_device_id(NULL, NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_simple_desc_set_device_id. +int utc_zb_simple_desc_set_device_id_p(void) +{ + int ret; + unsigned short device_id = 1; + + ret = zb_simple_desc_set_device_id(simple_desc, device_id); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_simple_desc_set_device_id. +int utc_zb_simple_desc_set_device_id_n(void) +{ + int ret; + unsigned short device_id = 1; + + ret = zb_simple_desc_set_device_id(NULL, device_id); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_simple_desc_get_device_ver. +int utc_zb_simple_desc_get_device_ver_p(void) +{ + int ret; + unsigned short device_ver; + + ret = zb_simple_desc_get_device_ver(simple_desc, &device_ver); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_simple_desc_get_device_ver. +int utc_zb_simple_desc_get_device_ver_n(void) +{ + int ret; + + ret = zb_simple_desc_get_device_ver(NULL, NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_simple_desc_set_device_ver. +int utc_zb_simple_desc_set_device_ver_p(void) +{ + int ret; + unsigned short device_ver = 1; + + ret = zb_simple_desc_set_device_ver(simple_desc, device_ver); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_simple_desc_set_device_ver. +int utc_zb_simple_desc_set_device_ver_n(void) +{ + int ret; + unsigned short device_ver = 1; + + ret = zb_simple_desc_set_device_ver(NULL, device_ver); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_simple_desc_get_num_of_in_clusters. +int utc_zb_simple_desc_get_num_of_in_clusters_p(void) +{ + int ret; + unsigned char num; + + ret = zb_simple_desc_get_num_of_in_clusters(simple_desc, &num); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_simple_desc_get_num_of_in_clusters. +int utc_zb_simple_desc_get_num_of_in_clusters_n(void) +{ + int ret; + + ret = zb_simple_desc_get_num_of_in_clusters(NULL, NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_simple_desc_set_num_of_in_clusters. +int utc_zb_simple_desc_set_num_of_in_clusters_p(void) +{ + int ret; + unsigned char num = 1; + + ret = zb_simple_desc_set_num_of_in_clusters(simple_desc, num); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_simple_desc_set_num_of_in_clusters. +int utc_zb_simple_desc_set_num_of_in_clusters_n(void) +{ + int ret; + unsigned char num = 1; + + ret = zb_simple_desc_set_num_of_in_clusters(NULL, num); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_simple_desc_get_num_of_out_clusters. +int utc_zb_simple_desc_get_num_of_out_clusters_p(void) +{ + int ret; + unsigned char num; + + ret = zb_simple_desc_get_num_of_out_clusters(simple_desc, &num); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_simple_desc_get_num_of_out_clusters. +int utc_zb_simple_desc_get_num_of_out_clusters_n(void) +{ + int ret; + + ret = zb_simple_desc_get_num_of_out_clusters(NULL, NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_simple_desc_set_num_of_out_clusters. +int utc_zb_simple_desc_set_num_of_out_clusters_p(void) +{ + int ret; + unsigned char num = 1; + + ret = zb_simple_desc_set_num_of_out_clusters(simple_desc, num); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_simple_desc_set_num_of_out_clusters. +int utc_zb_simple_desc_set_num_of_out_clusters_n(void) +{ + int ret; + unsigned char num = 1; + + ret = zb_simple_desc_set_num_of_out_clusters(NULL, num); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_simple_desc_get_in_clusters. +int utc_zb_simple_desc_get_in_clusters_p(void) +{ + int ret; + unsigned short *in_clusters; + + ret = zb_simple_desc_get_in_clusters(simple_desc, &in_clusters); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_simple_desc_get_in_clusters. +int utc_zb_simple_desc_get_in_clusters_n(void) +{ + int ret; + + ret = zb_simple_desc_get_in_clusters(NULL, NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_simple_desc_set_in_clusters. +int utc_zb_simple_desc_set_in_clusters_p(void) +{ + int ret; + unsigned short clusters[3]; + unsigned short num = 3; + + clusters[0] = ZB_ZCL_CLUSTER_BASIC; + clusters[1] = ZB_ZCL_CLUSTER_GROUPS; + clusters[2] = ZB_ZCL_CLUSTER_ON_OFF; + + ret = zb_simple_desc_set_in_clusters(simple_desc, clusters, num); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_simple_desc_set_in_clusters. +int utc_zb_simple_desc_set_in_clusters_n(void) +{ + int ret; + unsigned short num = 0; + + ret = zb_simple_desc_set_in_clusters(NULL, NULL, num); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_simple_desc_get_out_clusters. +int utc_zb_simple_desc_get_out_clusters_p(void) +{ + int ret; + unsigned short *out_clusters; + + ret = zb_simple_desc_get_out_clusters(simple_desc, &out_clusters); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_simple_desc_get_out_clusters. +int utc_zb_simple_desc_get_out_clusters_n(void) +{ + int ret; + + ret = zb_simple_desc_get_out_clusters(NULL, NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first positive zb_simple_desc_set_out_clusters. +int utc_zb_simple_desc_set_out_clusters_p(void) +{ + int ret; + int num = 3; + unsigned short clusters[3]; + + clusters[0] = ZB_ZCL_CLUSTER_BASIC; + clusters[1] = ZB_ZCL_CLUSTER_GROUPS; + clusters[2] = ZB_ZCL_CLUSTER_ON_OFF; + + ret = zb_simple_desc_set_out_clusters(simple_desc, clusters, num); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +//& purpose: A purpose of a first negative zb_simple_desc_set_out_clusters. +int utc_zb_simple_desc_set_out_clusters_n(void) +{ + int ret; + int num = 0; + + ret = zb_simple_desc_set_out_clusters(NULL, NULL, num); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + diff --git a/src/utc/zigbee/utc-zigbee.c b/src/utc/zigbee/utc-zigbee.c new file mode 100644 index 000000000..63dbbfce4 --- /dev/null +++ b/src/utc/zigbee/utc-zigbee.c @@ -0,0 +1,1379 @@ +// +// Copyright (c) 2014 Samsung Electronics Co., Ltd. +// +// Licensed under the Apache License, Version 2.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#include +#include +#include + +#include "assert.h" +#include "utc-zigbee-common.h" + +bool g_feature = false; +zb_zigbee_h handle = NULL; +static GMainLoop *main_loop = NULL; +static int callback_ret = ZIGBEE_ERROR_OPERATION_FAILED; + +//& set: Zigbee +#define CASE_TO_STR(x) case x: return #x; + +static const char* zigbee_error_to_string(zb_error_e err) +{ + switch (err) { + /* CHECK: List all enum values here */ + CASE_TO_STR(ZIGBEE_ERROR_NONE) + CASE_TO_STR(ZIGBEE_ERROR_INVALID_PARAMETER) + CASE_TO_STR(ZIGBEE_ERROR_PARAMETER_OUT_OF_RANGE) + CASE_TO_STR(ZIGBEE_ERROR_OUT_OF_MEMORY) + CASE_TO_STR(ZIGBEE_ERROR_IO_ERROR) + CASE_TO_STR(ZIGBEE_ERROR_NO_DATA) + CASE_TO_STR(ZIGBEE_ERROR_NOT_SUPPORTED) + CASE_TO_STR(ZIGBEE_ERROR_PERMISSION_DENIED) + CASE_TO_STR(ZIGBEE_ERROR_INVALID_ENDPOINT) + CASE_TO_STR(ZIGBEE_ERROR_INVALID_ADDRESS) + CASE_TO_STR(ZIGBEE_ERROR_OPERATION_FAILED) + default : + return "ZIGBEE_ERROR_UNKNOWN"; + } +} + +static void _on_event(zb_nwk_addr addr16, zb_ieee_addr addr64, zb_event_e e, + zb_event_data_h ev, void *user_data) +{ + LOG("Zigbee event [%0X]\n", e); + callback_ret = ZIGBEE_ERROR_NONE; + + /* Terminate main loop */ + if (main_loop) + g_main_loop_quit(main_loop); +} + +/** + * @function utc_startup + * @description Called before each test + * @parameter NA + * @return NA + */ +void utc_startup(void) +{ + int ret; + g_feature = false; + + /* Find out Zigbee feature supported on DUT */ + system_info_get_platform_bool("http://tizen.org/feature/network.zigbee", &g_feature); + if (false == g_feature) { + LOG("Zigbee feature is not enabled.\n"); + PRINT_RETURN("system_info_get_platform_bool", g_feature); + } + + + /* Check serial driver loaded for Zigbee */ + ret = zb_create(&handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("Failed to zb_create : [%s]\n", zigbee_error_to_string(ret)); + PRINT_RETURN("zb_create", ret); + return; + } + + zb_set_event_cb(handle, _on_event); +#if 0 + ret = zb_enable(handle); + if (ZIGBEE_ERROR_NONE != ret) { + //LOG("Failed to zb_enable : [%d]", ret); + return; + } +#endif +} + +/** + * @function utc_cleanup + * @description Called after each test + * @parameter NA + * @return NA + */ +void utc_cleanup(void) +{ + int ret; + + ret = zb_destroy(handle); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("Failed to zb_destroy : [%s]", zigbee_error_to_string(ret)); + return; + } +} + +int check_result_p(const char *api_name, const char *file_name, int line, int ret) +{ + PRINT_RETURN1(api_name, file_name, line, ret); + + if (false == g_feature) + assert_eq(ret, ZIGBEE_ERROR_NOT_SUPPORTED); + assert_eq(ret, ZIGBEE_ERROR_NONE); + + return ZIGBEE_ERROR_NONE; +} + +int check_result_n(const char *api_name, const char *file_name, int line, int ret) +{ + PRINT_RETURN1(api_name, file_name, line, ret); + + if (false == g_feature) + assert_eq(ret, ZIGBEE_ERROR_NOT_SUPPORTED); + assert_neq(ret, ZIGBEE_ERROR_NONE); + + return ZIGBEE_ERROR_NONE; +} + +/** + * @testcase utc_zb_create_p + * @since_tizen 5.0 + * @type Positive + * @description Initializes Zigbee API handle. + * @scenario Initializes Zigbee API handle. + * If already created, removes it and creates again. + */ +int utc_zb_create_p(void) +{ + int ret = ZIGBEE_ERROR_NONE; + + if (false == g_feature) { + PRINT_RETURN("zb_create", ret); + assert_eq(ret, ZIGBEE_ERROR_NOT_SUPPORTED); + return 0; + } + + if (NULL != handle) { + zb_destroy(handle); + } + + ret = zb_create(&handle); + PRINT_RETURN("zb_create", ret); + assert_eq(ret, ZIGBEE_ERROR_NONE); + + return 0; +} + +/** + * @testcase utc_zb_create_n + * @since_tizen 5.0 + * @type Negative + * @description Initializes Zigbee. + * @scenario Initialize Zigbee. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_create_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + + ret = zb_create(NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_destroy_p + * @since_tizen 5.0 + * @type Positive + * @description Destroys Zigbee API handle. + * @scenario Destroys Zigbee API handle. + * Ensure return value should be ZIGBEE_ERROR_NONE. + */ +int utc_zb_destroy_p(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_zigbee_h handle2 = NULL; + + zb_create(&handle2); + + ret = zb_destroy(handle2); + handle = NULL; + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_destroy_n + * @since_tizen 5.0 + * @type Negative + * @description Destroys Zigbee API handle. + * @scenario Destroys Zigbee API handle. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_destroy_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + + ret = zb_destroy(NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_ev_get_enable_status_n + * @since_tizen 5.0 + * @type Negative + * @description Gets enable status code of the event. + * @scenario Gets enable status code of the event. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_ev_get_enable_status_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_error_e status; + + ret = zb_ev_get_enable_status(NULL, &status); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_ev_get_form_network_panid_n + * @since_tizen 5.0 + * @type Negative + * @description zb_ev_get_form_network_panid of the event. + * @scenario zb_ev_get_form_network_panid of the event. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_ev_get_form_network_panid_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_nwk_addr panid; + + ret = zb_ev_get_form_network_panid(NULL, &panid); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_ev_get_join_count_n + * @since_tizen 5.0 + * @type Negative + * @description Gets the end-point number at a new device joined from the event. + * @scenario Gets the end-point number at a new device joined from the event. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_ev_get_join_count_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + unsigned char count; + + ret = zb_ev_get_join_count(NULL, &count); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_ev_get_join_ep_n + * @since_tizen 5.0 + * @type Negative + * @description Gets the end-point list at a new device joined. + * @scenario Gets the end-point list at a new device joined. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_ev_get_join_ep_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + unsigned char *ep = NULL; + + ret = zb_ev_get_join_ep(NULL, (unsigned char **)&ep); + if (ep) { + free(ep); + ep = NULL; + } + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_ev_get_child_left_status_n + * @since_tizen 5.0 + * @type Negative + * @description Gets status code of when child device left. + * @scenario Gets status code of when child device left. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_ev_get_child_left_status_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_error_e status; + + ret = zb_ev_get_child_left_status(NULL, &status); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_ev_get_global_default_rsp_ep_n + * @since_tizen 5.0 + * @type Negative + * @description Gets the end-point number of who sent this default response. + * @scenario Gets the end-point number of who sent this default response. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_ev_get_global_default_rsp_ep_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_end_point ep; + + ret = zb_ev_get_global_default_rsp_ep(NULL, &ep); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_ev_get_global_default_rsp_cluster_id_n + * @since_tizen 5.0 + * @type Negative + * @description Gets the cluster id of who sent this default response. + * @scenario Gets the cluster id of who sent this default response. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_ev_get_global_default_rsp_cluster_id_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + unsigned short cluster_id; + + ret = zb_ev_get_global_default_rsp_cluster_id(NULL, &cluster_id); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_ev_get_global_default_rsp_command_id_n + * @since_tizen 5.0 + * @type Negative + * @description Gets the command id of who sent this default response. + * @scenario Gets the command id of who sent this default response. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_ev_get_global_default_rsp_command_id_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + unsigned char cmd_id; + + ret = zb_ev_get_global_default_rsp_command_id(NULL, &cmd_id); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_ev_get_global_default_rsp_status_n + * @since_tizen 5.0 + * @type Negative + * @description Gets status code of a default response of the global command request. + * @scenario Gets status code of a default response of the global command request. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + * + */ +int utc_zb_ev_get_global_default_rsp_status_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_zcl_status_e status; + + ret = zb_ev_get_global_default_rsp_status(NULL, &status); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_ev_get_enroll_request_src_ep_n + * @since_tizen 5.0 + * @type Negative + * @description Gets the end-point number of thet this enroll request. + * @scenario Gets the end-point number of who sent this enroll request. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + * + */ +int utc_zb_ev_get_enroll_request_src_ep_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_end_point ep; + + ret = zb_ev_get_enroll_request_src_ep(NULL, &ep); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_ev_get_enroll_request_zone_type_n + * @since_tizen 5.0 + * @type Negative + * @description Gets zone type of the enroll request. + * @scenario Gets zone type of the enroll request. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_ev_get_enroll_request_zone_type_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_zcl_ias_zone_type_e zone_type; + + ret = zb_ev_get_enroll_request_zone_type(NULL, &zone_type); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_ev_get_enroll_request_mfg_code_n + * @since_tizen 5.0 + * @type Negative + * @description Gets manufacturer code of the enroll request. + * @scenario Gets manufacturer code of the enroll request. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_ev_get_enroll_request_mfg_code_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + unsigned char mfg_code; + + ret = zb_ev_get_enroll_request_mfg_code(NULL, &mfg_code); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_ev_get_ias_noti_src_ep_n + * @since_tizen 5.0 + * @type Negative + * @description Gets the end-point number of the IAS notification. + * @scenario Gets the end-point number of the IAS notification. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_ev_get_ias_noti_src_ep_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + unsigned char src_ep; + + ret = zb_ev_get_ias_noti_src_ep(NULL, &src_ep); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_ev_get_ias_noti_zone_status_n + * @since_tizen 5.0 + * @type Negative + * @description Gets zone status of the IAS notification. + * @scenario Gets zone status of the IAS notification. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_ev_get_ias_noti_zone_status_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + unsigned short zone_status; + + ret = zb_ev_get_ias_noti_zone_status(NULL, &zone_status); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_ev_get_ias_ext_noti_src_ep_n + * @since_tizen 5.0 + * @type Negative + * @description Gets the end-point number of the IAS extended notification. + * @scenario Gets the end-point number of the IAS extended notification. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_ev_get_ias_ext_noti_src_ep_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + unsigned char src_ep; + + ret = zb_ev_get_ias_ext_noti_src_ep(NULL, &src_ep); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_ev_get_ias_ext_noti_status_n + * @since_tizen 5.0 + * @type Negative + * @description Gets status of the IAS extended notification. + * @scenario Gets status of the IAS extended notification. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_ev_get_ias_ext_noti_status_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + unsigned char status; + + ret = zb_ev_get_ias_ext_noti_status(NULL, &status); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_ev_get_ias_ext_noti_zone_status_n + * @since_tizen 5.0 + * @type Negative + * @description Gets zone status of the IAS extended notification. + * @scenario Gets zone status of the IAS extended notification. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_ev_get_ias_ext_noti_zone_status_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + unsigned short zone_status; + + ret = zb_ev_get_ias_ext_noti_zone_status(NULL, &zone_status); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + + +/** + * @testcase utc_zb_ev_get_ias_ext_noti_delay_n + * @since_tizen 5.0 + * @type Negative + * @description Gets delay of the IAS extended notification. + * @scenario Gets delay of the IAS extended notification. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_ev_get_ias_ext_noti_delay_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + unsigned short delay; + + ret = zb_ev_get_ias_ext_noti_delay(NULL, &delay); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_ev_get_ias_ext_noti_zone_id_n + * @since_tizen 5.0 + * @type Negative + * @description Gets zond id of the IAS extended notification. + * @scenario Gets zond id of the IAS extended notification. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_ev_get_ias_ext_noti_zone_id_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + unsigned char zone_id; + + ret = zb_ev_get_ias_ext_noti_zone_id(NULL, &zone_id); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_set_event_cb_p + * @since_tizen 5.0 + * @type Positive + * @description Sets event callback function. + * @scenario Sets event callback function. + * Ensure return value should be ZIGBEE_ERROR_NONE. + */ +int utc_zb_set_event_cb_p(void) +{ + int ret = ZIGBEE_ERROR_NONE; + + ret = zb_set_event_cb(handle, NULL); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_set_event_cb_n + * @since_tizen 5.0 + * @type Negative + * @description Destroys Zigbee API handle. + * @scenario Destroys Zigbee API handle. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_set_event_cb_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + + ret = zb_set_event_cb(NULL, NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +static void _on_form_network(zb_nwk_addr panid, void *user_data) +{ + callback_ret = ZIGBEE_ERROR_NONE; + + /* Terminate main loop */ + g_main_loop_quit(main_loop); +} + +/** + * @testcase utc_zb_form_network_p + * @since_tizen 5.0 + * @type Positive + * @description Forms Zigbee network. + * @scenario Forms Zigbee network. When + * Zigbee network formation is completed the callback is triggered. + */ +int utc_zb_form_network_p(void) +{ + int ret = ZIGBEE_ERROR_NONE; + + ret = zb_form_network(handle, _on_form_network, NULL); + + /* Waits for callback */ + if (true == g_feature) { + main_loop = g_main_loop_new(NULL, false); + g_main_loop_run(main_loop); + } + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_form_network_n + * @since_tizen 5.0 + * @type Negative + * @description Forms Zigbee network. + * @scenario Forms Zigbee network. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_form_network_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + + ret = zb_form_network(NULL, NULL, NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +static void _on_disable_network(unsigned char status, void *user_data) +{ + int ret = ZIGBEE_ERROR_NONE; + callback_ret = ZIGBEE_ERROR_NONE; + + /* Recover network to proceed other TCs. */ + ret = zb_form_network(handle, _on_form_network, NULL); + if (ZIGBEE_ERROR_NONE != ret) { + LOG("Failed to recover network"); + + /* Terminate main loop */ + g_main_loop_quit(main_loop); + } +} + +/** + * @testcase utc_zb_disable_network_p + * @since_tizen 5.0 + * @type Positive + * @description Destroys Zigbee network. + * @scenario Destroys Zigbee network. + * When Zigbee network is destroyed the callback is triggered. + */ +int utc_zb_disable_network_p(void) +{ + int ret = ZIGBEE_ERROR_NONE; + + ret = zb_disable_network(handle, _on_disable_network, NULL); + + /* Waits for callback */ + if (true == g_feature) { + main_loop = g_main_loop_new(NULL, false); + g_main_loop_run(main_loop); + } + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_disable_network_n + * @since_tizen 5.0 + * @type Negative + * @description Destroys Zigbee network. + * @scenario Forms Zigbee network. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_disable_network_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + + ret = zb_disable_network(NULL, NULL, NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_leave_device_p + * @since_tizen 5.0 + * @type Positive + * @description Forces a node to leave one network and to rejoin the other. + * @scenario Forces a node to leave one network. + * Ensure return value should be ZIGBEE_ERROR_NONE. + */ +int utc_zb_leave_device_p(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_ieee_addr addr64 = { 0, }; + + ret = zb_leave_device(handle, addr64, true, false); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_leave_device_n + * @since_tizen 5.0 + * @type Negative + * @description Forces a node to leave one network and to rejoin the other. + * @scenario Forces a node to leave one network. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_leave_device_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + + ret = zb_leave_device(NULL, NULL, true, false); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_permit_join_p + * @since_tizen 5.0 + * @type Positive + * @description Enables coordinator device can accept other device's association request. + * @scenario Enables coordinator device can accept other device's association request. + * Ensure return value should be ZIGBEE_ERROR_NONE. + */ +int utc_zb_permit_join_p(void) +{ + int ret = ZIGBEE_ERROR_NONE; + + ret = zb_permit_join(handle, 10); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_permit_join_n + * @since_tizen 5.0 + * @type Negative + * @description Enables coordinator device can accept other device's association request. + * @scenario Enables coordinator device can accept other device's association request. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_permit_join_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + + ret = zb_permit_join(NULL, 10); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_get_controller_mac_address_p + * @since_tizen 5.0 + * @type Positive + * @description Shows current coordinator's IEEE MAC address. + * @scenario Shows current coordinator's IEEE MAC address. + * Ensure return value should be ZIGBEE_ERROR_NONE. + */ +int utc_zb_get_controller_mac_address_p(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_ieee_addr addr64; + + ret = zb_get_controller_mac_address(handle, addr64); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_get_controller_mac_address_n + * @since_tizen 5.0 + * @type Negative + * @description Shows current coordinator's IEEE MAC address. + * @scenario Shows current coordinator's IEEE MAC address. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_get_controller_mac_address_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_ieee_addr addr64; + + ret = zb_get_controller_mac_address(NULL, addr64); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_get_network_info_p + * @since_tizen 5.0 + * @type Positive + * @description Gets information of the current network environment of coordinator. + * @scenario Gets information of the current network environment of coordinator. + * Ensure return value should be ZIGBEE_ERROR_NONE. + */ +int utc_zb_get_network_info_p(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_ieee_addr co_addr64 = { 0, }; + zb_nwk_addr nodeid; + zb_nwk_addr panid; + unsigned char channel; + unsigned char tx_power; + + ret = zb_get_controller_mac_address(handle, co_addr64); + + ret = zb_get_network_info(handle, co_addr64, &nodeid, &panid, &channel, &tx_power); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_get_network_info_n + * @since_tizen 5.0 + * @type Negative + * @description Gets information of the current network environment of coordinator. + * @scenario Gets information of the current network environment of coordinator. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_get_network_info_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_ieee_addr co_addr64 = { 0, }; + zb_nwk_addr nodeid; + zb_nwk_addr panid; + unsigned char channel; + unsigned char tx_power; + + ret = zb_get_network_info(NULL, co_addr64, &nodeid, &panid, &channel, &tx_power); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_end_dev_get_ep_list_p + * @since_tizen 5.0 + * @type Positive + * @description Gets endpoint list information. + * @scenario Gets endpoint list information. + * Ensure return value should be ZIGBEE_ERROR_NONE. + */ +int utc_zb_end_dev_get_ep_list_p(void) +{ + int ret = ZIGBEE_ERROR_NONE; + + zb_ieee_addr addr64 = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66}; + unsigned char count = 0; + zb_end_point *ep_list = NULL; + + ret = zb_end_dev_get_ep_list(handle, addr64, &count, &ep_list); + + if (ep_list) { + free(ep_list); + ep_list = NULL; + } + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_end_dev_get_ep_list_p + * @since_tizen 5.0 + * @type Positive + * @description Gets endpoint list information. + * @scenario Gets endpoint list information. + * Ensure return value should be ZIGBEE_ERROR_NONE. + */ +int utc_zb_end_dev_get_ep_list_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + + zb_ieee_addr addr64 = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66}; + unsigned char count = 0; + zb_end_point *ep_list = NULL; + + ret = zb_end_dev_get_ep_list(NULL, addr64, &count, &ep_list); + + if (ep_list) { + free(ep_list); + ep_list = NULL; + } + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_end_dev_get_cluster_list_p + * @since_tizen 5.0 + * @type Positive + * @description Gets endpoint list information. + * @scenario Gets endpoint list information. + * Ensure return value should be ZIGBEE_ERROR_NONE. + */ +int utc_zb_end_dev_get_cluster_list_p(void) +{ + int ret = ZIGBEE_ERROR_NONE; + + zb_end_point ep = 1; + unsigned char in_count = 0; + unsigned char out_count = 0; + zb_ieee_addr dest_addr64 = { 0, }; + zb_cluster_id *in_cluster_list = NULL; + zb_cluster_id *out_cluster_list = NULL; + + ret = zb_end_dev_get_cluster_list(handle, dest_addr64, ep, + &in_count, &in_cluster_list, &out_count, &out_cluster_list); + + if (in_cluster_list) { + free(in_cluster_list); + in_cluster_list = NULL; + } + if (out_cluster_list) { + free(out_cluster_list); + out_cluster_list = NULL; + } + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_end_dev_get_cluster_list_n + * @since_tizen 5.0 + * @type Negative + * @description Gets endpoint list information. + * @scenario Gets endpoint list information. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_end_dev_get_cluster_list_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_ieee_addr dest_addr64 = { 0, }; + zb_end_point ep = 1; + unsigned char in_count = 0; + unsigned char out_count = 0; + zb_cluster_id *in_cluster_list = NULL; + zb_cluster_id *out_cluster_list = NULL; + + ret = zb_end_dev_get_cluster_list(NULL, dest_addr64, ep, + &in_count, &in_cluster_list, &out_count, &out_cluster_list); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_end_dev_get_end_dev_info_list_p + * @since_tizen 5.0 + * @type Positive + * @description Gets all children device list information. + * @scenario Gets all children device list information. + * Ensure return value should be ZIGBEE_ERROR_NONE. + */ +int utc_zb_end_dev_get_end_dev_info_list_p(void) +{ + int ret = ZIGBEE_ERROR_NONE; + int count; + zb_end_dev_info_h *list = NULL; + + ret = zb_end_dev_get_end_dev_info_list(handle, &count, &list); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_end_dev_get_end_dev_info_list_n1 + * @since_tizen 5.0 + * @type Negative + * @description Gets all children device list information. + * @scenario Gets all children device list information. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_end_dev_get_end_dev_info_list_n1(void) +{ + int ret = ZIGBEE_ERROR_NONE; + int count; + zb_end_dev_info_h *list = NULL; + + ret = zb_end_dev_get_end_dev_info_list(NULL, &count, &list); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_end_dev_get_end_dev_info_list_n2 + * @since_tizen 5.0 + * @type Negative + * @description Gets all children device list information. + * @scenario Gets all children device list information. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_end_dev_get_end_dev_info_list_n2(void) +{ + int ret = ZIGBEE_ERROR_NONE; + int count; + + ret = zb_end_dev_get_end_dev_info_list(handle, &count, NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_end_dev_info_list_free_p + * @since_tizen 5.0 + * @type Positive + * @description Frees all children device list information. + * @scenario Frees all children device list information. + * Ensure return value should be ZIGBEE_ERROR_NONE. + */ +int utc_zb_end_dev_info_list_free_p(void) +{ + int ret = ZIGBEE_ERROR_NONE; + int count; + zb_end_dev_info_h *list = NULL; + + zb_end_dev_get_end_dev_info_list(handle, &count, &list); + ret = zb_end_dev_info_list_free(list); + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_end_dev_info_list_free_n + * @since_tizen 5.0 + * @type Negative + * @description Frees all children device list information. + * @scenario Frees all children device list information. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_end_dev_info_list_free_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + + ret = zb_end_dev_info_list_free(NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_end_dev_info_create_p + * @since_tizen 5.0 + * @type Positive + * @description Creates an end-device handle. + * @scenario Creates an end-device handle. + * Ensure return value should be ZIGBEE_ERROR_NONE. + */ +int utc_zb_end_dev_info_create_p(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_end_dev_info_h dev = NULL; + + ret = zb_end_dev_info_create(&dev); + if (dev) { + zb_end_dev_info_destroy(dev); + dev = NULL; + } + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_end_dev_info_create_n + * @since_tizen 5.0 + * @type Negative + * @description Creates an end-device handle. + * @scenario Creates an end-device handle. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_end_dev_info_create_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + + ret = zb_end_dev_info_create(NULL); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_end_dev_info_clone_p + * @since_tizen 5.0 + * @type Positive + * @description Clone an end-device handle. + * @scenario Clone an end-device handle. + * Ensure return value should be ZIGBEE_ERROR_NONE. + */ +int utc_zb_end_dev_info_clone_p(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_end_dev_info_h src = NULL; + zb_end_dev_info_h dst = NULL; + + zb_end_dev_info_create(&src); + ret = zb_end_dev_info_clone(src, &dst); + if (src) { + zb_end_dev_info_destroy(src); + src = NULL; + } + if (dst) { + zb_end_dev_info_destroy(dst); + dst = NULL; + } + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_end_dev_info_clone_n + * @since_tizen 5.0 + * @type Negative + * @description Clone an end-device handle. + * @scenario Clone an end-device handle. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_end_dev_info_clone_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_end_dev_info_h src = NULL; + zb_end_dev_info_h dst = NULL; + + ret = zb_end_dev_info_clone(src, &dst); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_end_dev_info_destroy_p + * @since_tizen 5.0 + * @type Positive + * @description Clone an end-device handle. + * @scenario Clone an end-device handle. + * Ensure return value should be ZIGBEE_ERROR_NONE. + */ +int utc_zb_end_dev_info_destroy_p(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_end_dev_info_h dev = NULL; + + zb_end_dev_info_create(&dev); + if (dev) { + ret = zb_end_dev_info_destroy(dev); + dev = NULL; + } + + return check_result_p(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_end_dev_info_destroy_n + * @since_tizen 5.0 + * @type Negative + * @description Clone an end-device handle. + * @scenario Clone an end-device handle. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_end_dev_info_destroy_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_end_dev_info_h dev = NULL; + + ret = zb_end_dev_info_destroy(dev); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_end_dev_info_get_network_address_n + * @since_tizen 5.0 + * @type Negative + * @description Gets network address of a specific end-point. + * @scenario Gets network address of a specific end-point. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_end_dev_info_get_network_address_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_nwk_addr addr16; + + ret = zb_end_dev_info_get_network_address(NULL, &addr16); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_end_dev_info_get_ieee_address_n + * @since_tizen 5.0 + * @type Negative + * @description Gets IEEE address of a specific end-point. + * @scenario Gets IEEE address of a specific end-point. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_end_dev_info_get_ieee_address_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_ieee_addr addr64; + + ret = zb_end_dev_info_get_ieee_address(NULL, addr64); + + if (false == g_feature) + assert_eq(ret, ZIGBEE_ERROR_NOT_SUPPORTED); + else + assert_eq(ret, ZIGBEE_ERROR_INVALID_PARAMETER); + + return 0; +} + +/** + * @testcase utc_zb_end_dev_info_get_num_of_ep_n + * @since_tizen 5.0 + * @type Negative + * @description Gets a number of end-points of a specific end-point. + * @scenario Gets a number of end-points of a specific end-point. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_end_dev_info_get_num_of_ep_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + unsigned char count; + + ret = zb_end_dev_info_get_num_of_ep(NULL, &count); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_end_dev_info_get_ep_list_n + * @since_tizen 5.0 + * @type Negative + * @description Gets list of end-points of a specific end-point. + * @scenario Gets list of end-points of a specific end-point. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_end_dev_info_get_ep_list_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_end_point *ep_list = NULL; + + ret = zb_end_dev_info_get_ep_list(NULL, &ep_list); + + if (ep_list) { + free(ep_list); + ep_list = NULL; + } + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_end_dev_info_get_mac_capability_n + * @since_tizen 5.0 + * @type Negative + * @description Gets security capability of a specific end-point. + * @scenario Gets security capability of a specific end-point. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_end_dev_info_get_mac_capability_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_zdp_mac_capability_field_e cap; + + ret = zb_end_dev_info_get_mac_capability(NULL, &cap); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_end_dev_info_get_alternative_pan_coordinator_n + * @since_tizen 5.0 + * @type Negative + * @description Gets ability of alternative PAN coordinator of a specific end-point. + * @scenario Gets ability of alternative PAN coordinator of a specific end-point. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_end_dev_info_get_alternative_pan_coordinator_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_zdp_do_pan_coordinator_e available; + + ret = zb_end_dev_info_get_alternative_pan_coordinator(NULL, &available); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_end_dev_info_get_device_id_n + * @since_tizen 5.0 + * @type Negative + * @description Gets device id of a specific end-point. + * @scenario Gets device id of a specific end-point. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_end_dev_info_get_device_id_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_end_point ep = 1; + zb_device_id device_id; + + ret = zb_end_dev_info_get_device_id(NULL, ep, &device_id); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_end_dev_info_get_profile_id_n + * @since_tizen 5.0 + * @type Negative + * @description Gets profile id of a specific end-point. + * @scenario Gets profile id of a specific end-point. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_end_dev_info_get_profile_id_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_end_point ep = 1; + zb_profile_id profile_id; + + ret = zb_end_dev_info_get_profile_id(NULL, ep, &profile_id); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_end_dev_info_get_power_source_n + * @since_tizen 5.0 + * @type Negative + * @description Gets power source type of a specific end-point. + * @scenario Gets power source type of a specific end-point. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_end_dev_info_get_power_source_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_zdp_power_e power_src; + + ret = zb_end_dev_info_get_power_source(NULL, &power_src); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + +/** + * @testcase utc_zb_end_dev_info_get_security_capabilty_n + * @since_tizen 5.0 + * @type Negative + * @description Gets power source type of a specific end-point. + * @scenario Gets power source type of a specific end-point. + * Ensure return value should be ZIGBEE_ERROR_INVALID_PARAMETER. + */ +int utc_zb_end_dev_info_get_security_capabilty_n(void) +{ + int ret = ZIGBEE_ERROR_NONE; + zb_zdp_security_cap_e cap; + + ret = zb_end_dev_info_get_security_capability(NULL, &cap); + + return check_result_n(__FUNCTION__, __FILE__, __LINE__, ret); +} + diff --git a/src/utc/zigbee/utc-zigbee.h b/src/utc/zigbee/utc-zigbee.h new file mode 100644 index 000000000..57e646860 --- /dev/null +++ b/src/utc/zigbee/utc-zigbee.h @@ -0,0 +1,54 @@ +// +// Copyright (c) 2014 Samsung Electronics Co., Ltd. +// +// Licensed under the Apache License, Version 2.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef __UTC_ZIGBEE_CONFIGURATION_H__ +#define __UTC_ZIGBEE_CONFIGURATION_H__ + +#define SUPPORT_SIMPLE_DESCRIPTION +#define SUPPORT_NODE_POWER_DESCRIPTION +#define SUPPORT_NODE_DESCRIPION +#define SUPPORT_NETWORK_LIST_RECORD +#define SUPPORT_ROUTING_TABLE_DESCRIPTION +#define SUPPORT_NEIGHBOR_TABLE_DESCRIPTION +#define SUPPORT_ZDO_BINDING_TABLE +#define SUPPORT_ZDO_NETWORK_LIST_RECORD + +#define SUPPORT_ZDO_NETWORK_MANAGER +#define SUPPORT_ZDO_DEVICE_DISCOVERY_MANAGER +#define SUPPORT_ZDO_BIND_MANAGER + +#define SUPPORT_ZCL_ALARM_CLUSTER +#define SUPPORT_ZCL_BASIC_CLUSTER +#define SUPPORT_ZCL_COLOR_CONTROL_CLUSTER +#define SUPPORT_ZCL_GLOBAL_COMMNAD_CLUSTER +#define SUPPORT_ZCL_GROUP_CLUSTER +#define SUPPORT_ZCL_IAS_ZONE_CLUSTER +#define SUPPORT_ZCL_IDENTIFY_CLUSTER +#define SUPPORT_ZCL_LEVEL_CONTROL_CLUSTER +#define SUPPORT_ZCL_ON_OFF_CLUSTER +#define SUPPORT_ZCL_POLL_CONTROL_CLUSTER +#define SUPPORT_ZCL_SCENE_CLUSTER +#define SUPPORT_ZCL_THERMOSTAT_CLUSTER + +#define SUPPORT_ZCL_READ_ATTRIBUTE_STATUS_RECORD +#define SUPPORT_ZCL_DISCOVER_ATTRIBUTE_INFO +#define SUPPORT_ZCL_WRITE_ATTRIBUTE_STATUS +#define SUPPORT_ZCL_REPORT_CONFIG_REPORT +#define SUPPORT_ZCL_READ_REPORT_CONFIG_RECORD +#define SUPPORT_ZCL_REPORT_CONFIG_RESPONSE_RECORD +#define SUPPORT_ZCL_ATTRIHUTE_INFO +#define SUPPORT_ZCL_EXTENDED_ATTRIHUTE_INFO + +#endif /* __UTC_ZIGBEE_CONFIGURATION_H__ */ diff --git a/tct_unsupported.txt b/tct_unsupported.txt index 09a2583ff..135752085 100755 --- a/tct_unsupported.txt +++ b/tct_unsupported.txt @@ -25,6 +25,10 @@ mobile:armv7l:utc:watchface-complication; mobile:aarch64:utc:watchface-complication; mobile:x86:utc:watchface-complication; mobile:x86_64:utc:watchface-complication; +mobile:armv7l:utc:zigbee; +mobile:aarch64:utc:zigbee; +mobile:x86:utc:zigbee; +mobile:x86_64:utc:zigbee; ## itc ## mobile:armv7l:itc:appcore-watch; @@ -82,6 +86,7 @@ wearable:x86_64:utc:shortcut; wearable:armv7l:utc:video-util; wearable:aarch64:utc:video-util; wearable:x86:utc:video-util; + wearable:x86_64:utc:video-util; wearable:armv7l:utc:wifi-direct; wearable:aarch64:utc:wifi-direct; @@ -117,6 +122,10 @@ wearable:armv7l:utc:peripheral-io; wearable:aarch64:utc:peripheral-io; wearable:x86:utc:peripheral-io; wearable:x86_64:utc:peripheral-io; +wearable:armv7l:utc:zigbee; +wearable:aarch64:utc:zigbee; +wearable:x86:utc:zigbee; +wearable:x86_64:utc:zigbee; ## itc ## wearable:armv7l:itc:asp;