Add API to print Zigbee Cluster Library status code
authorsaerome kim <saerome.kim@samsung.com>
Wed, 8 Feb 2017 13:45:37 +0000 (22:45 +0900)
committersaerome.kim <saerome.kim@samsung.com>
Thu, 11 May 2017 09:07:20 +0000 (18:07 +0900)
Change-Id: I9e1ff35b91b5f733ef0180d4a1ecb8499ae4b43c
Signed-off-by: saerome kim <saerome.kim@samsung.com>
include/zb-error.h
include/zb-zcl.h
lib/zbl-dbus.c
lib/zbl-zcl.c
test/main.c
test/zcl-global-cmd.c

index 5b8a25ac706a33e6bb53de0ddba22a3d2ac8787b..3566a467ccdc4e0afa6cd44951de457c1137654c 100644 (file)
@@ -29,7 +29,7 @@
 
 /**
  * @ingroup CAPI_NETWORK_ZIGBEE_MODULE
- * @brief Enumeration for zigbee error code.
+ * @brief Enumeration for zigbee CAPI error code.
  * @since_tizen 3.0
  *
  * @{
index 87f683a60e34cd52454dc30d8ac6cc5385cedb31..33dbb82777334770ece3b6e0398bf645b6f4925b 100644 (file)
 #include <zcl/zb-zcl-thermostat-cluster.h>
 #include <zcl/zb-zcl-ias-zone-cluster.h>
 
+/**
+ * @brief Return readabble Zigbee Cluster Library status code for human
+ * @details Return Zigbee Cluster Library status code
+ *
+ * @since_tizen 3.0
+ *
+ * @param[in] id ZigBee Cluster Library Status code
+ *
+ * @return pointer of status code string
+ *
+ */
+const char* zb_get_zcl_status_code_name(int id);
+
 /**
  * @brief Return readable cluster name for human
  * @details Return Zigbee Cluster name and ID
index cbfeb29bc16a4eef33e2e9a27d6a50725077a105..618eb90b95cb95eef73412fb3db8bd8cae8a4776 100644 (file)
@@ -2924,8 +2924,9 @@ int zbl_enable(zigbee_h handle, zb_event_cb event_handler)
 
        g_variant_get(variant, "(ib)", &result, &enabled);
        DBG("ret = [0x%x]", result);
-       if (variant)
+       if (variant) {
                g_variant_unref(variant);
+       }
 
        return result;
 }
@@ -4982,9 +4983,8 @@ int zbl_read_attr_req(zigbee_h handle, unsigned short addr16, unsigned char dest
        g_variant_builder_unref(attr_builder);
 
        variant = g_dbus_proxy_call_sync(zcl_global_proxy, "read_attributes_req",
-               g_variant_new("(@a(y)iqqyy)", attr_variant, attribute_ids_len, addr16, cluster_id,
-                                               zcl_frame_ctl, dest_ep),
-               G_DBUS_CALL_FLAGS_NONE, to, NULL, &dbus_err);
+               g_variant_new("(@a(y)iqqyy)", attr_variant, attribute_ids_len,
+               addr16, cluster_id, zcl_frame_ctl, dest_ep), G_DBUS_CALL_FLAGS_NONE, to, NULL, &dbus_err);
 
        if (!variant) {
                ERR("Failed to get 'read_attributes_req' [%s]", dbus_err->message);
index 4501b78d10f1db5295882dd9c73072e8c9dfd734..89d525f3a837d95ad623b68cb8505f43363e526a 100644 (file)
 #include "zb-common.h"
 #include "zcl/zb-zcl-type.h"
 
+API const char* zb_get_zcl_status_code_name(int id)
+{
+       const char* status_name = NULL;
+
+       switch(id) {
+       case ZB_ZCL_SUCCESS:
+               status_name = "ZB_ZCL_SUCCESS";
+               break;
+       case ZB_ZCL_FAILURE:
+               status_name = "ZB_ZCL_FAILURE";
+               break;
+       case ZB_ZCL_NOT_AUTHORIZED:
+               status_name = "ZB_ZCL_NOT_AUTHORIZED";
+               break;
+       case ZB_ZCL_RESERVED_FIELD_NOT_ZERO:
+               status_name = "ZB_ZCL_RESERVED_FIELD_NOT_ZERO";
+               break;
+       case ZB_ZCL_MALFORMED_COMMAND:
+               status_name = "ZB_ZCL_MALFORMED_COMMAND";
+               break;
+       case ZB_ZCL_UNSUP_CLUSTER_COMMAND:
+               status_name = "ZB_ZCL_UNSUP_CLUSTER_COMMAND";
+               break;
+       case ZB_ZCL_UNSUP_GENERAL_COMMAND:
+               status_name = "ZB_ZCL_UNSUP_GENERAL_COMMAND";
+               break;
+       case ZB_ZCL_UNSUP_MANUF_CLUSTER_COMMAND:
+               status_name = "ZB_ZCL_UNSUP_MANUF_CLUSTER_COMMAND";
+               break;
+       case ZB_ZCL_UNSUP_MANUF_GENERAL_COMMAND:
+               status_name = "ZB_ZCL_UNSUP_MANUF_GENERAL_COMMAND";
+               break;
+       case ZB_ZCL_INVALID_FIELD:
+               status_name = "ZB_ZCL_INVALID_FIELD";
+               break;
+       case ZB_ZCL_UNSUPPORTED_ATTRIBUTE:
+               status_name = "ZB_ZCL_SUCCESS";
+               break;
+       case ZB_ZCL_INVALID_VALUE:
+               status_name = "ZB_ZCL_INVALID_VALUE";
+               break;
+       case ZB_ZCL_READ_ONLY:
+               status_name = "ZB_ZCL_READ_ONLY";
+               break;
+       case ZB_ZCL_INSUFFICIENT_SPACE:
+               status_name = "ZB_ZCL_INSUFFICIENT_SPACE";
+               break;
+       case ZB_ZCL_DUPLICATE_EXISTS:
+               status_name = "ZB_ZCL_INSUFFICIENT_SPACE";
+               break;
+       case ZB_ZCL_NOT_FOUND:
+               status_name = "ZB_ZCL_NOT_FOUND";
+               break;
+       case ZB_ZCL_UNREPORTABLE_ATTRIBUTE:
+               status_name = "ZB_ZCL_UNREPORTABLE_ATTRIBUTE";
+               break;
+       case ZB_ZCL_INVALID_DATA_TYPE:
+               status_name = "ZB_ZCL_INVALID_DATA_TYPE";
+               break;
+       case ZB_ZCL_INVALID_SELECTOR:
+               status_name = "ZB_ZCL_INVALID_SELECTOR";
+               break;
+       case ZB_ZCL_WRITE_ONLY:
+               status_name = "ZB_ZCL_WRITE_ONLY";
+               break;
+       case ZB_ZCL_INCONSISTENT_STARTUP_STATE:
+               status_name = "ZB_ZCL_INCONSISTENT_STARTUP_STATE";
+               break;
+       case ZB_ZCL_DEFINED_OUT_OF_BAND:
+               status_name = "ZB_ZCL_DEFINED_OUT_OF_BAND";
+               break;
+       case ZB_ZCL_INCONSISTENT:
+               status_name = "ZB_ZCL_INCONSISTENT";
+               break;
+       case ZB_ZCL_ACTION_DENIED:
+               status_name = "ZB_ZCL_ACTION_DENIED";
+               break;
+       case ZB_ZCL_TIMEOUT:
+               status_name = "ZB_ZCL_TIMEOUT";
+               break;
+       case ZB_ZCL_ABORT:
+               status_name = "ZB_ZCL_ABORT";
+               break;
+       case ZB_ZCL_INVALID_IMAGE:
+               status_name = "ZB_ZCL_INVALID_IMAGE";
+               break;
+       case ZB_ZCL_WAIT_FOR_DATA:
+               status_name = "ZB_ZCL_WAIT_FOR_DATA";
+               break;
+       case ZB_ZCL_NO_IMAGE_AVAILABLE:
+               status_name = "ZB_ZCL_NO_IMAGE_AVAILABLE";
+               break;
+       case ZB_ZCL_REQUIRE_MORE_IMAGE:
+               status_name = "ZB_ZCL_REQUIRE_MORE_IMAGE";
+               break;
+       default:
+               status_name = "ZB_ZCL_UNDEFINED";
+               break;
+       }
+
+       return status_name;
+}
+
 API const char* zb_get_cluster_name(int id)
 {
        const char* clust_name = NULL;
index 6395556bcc0cb14695944dcb47e5e4c461ff03e9..7a73c61ac2622d43fe7ef763b8353fbff601c567 100644 (file)
@@ -323,11 +323,11 @@ static void zigbee_event_cb(nwk_addr addr16, ieee_addr addr64, zb_event_e e, zb_
                command_id = ev.data.global_default_rsp->command_id;
                status = ev.data.global_default_rsp->status;
 
-               msg("  addr16     = %04X", addr16);
-               msg("  endpoint   = %02X", ep);
-               msg("  cluster_id = %04X", cluster_id);
-               msg("  command_id = %02X", command_id);
-               msg("  status     = %02X", status);
+               msg("  addr16     = 0x%04X", addr16);
+               msg("  endpoint   = 0x%02X", ep);
+               msg("  cluster_id = 0x%04X", cluster_id);
+               msg("  command_id = 0x%02X", command_id);
+               msg("  status     = 0x%02X, %s", status, zb_get_zcl_status_code_name(status));
                break;
        }
        case ZB_ZCL_GLOBAL_ATTRIBUTE_REPORT_EVENT:
index f9112ff261eca43ce0738a1c4bd1b0b9e9f44aea..eb0f214d73499333e5152e289e97ed7a4ae92a20 100644 (file)
@@ -102,7 +102,7 @@ static void zigbee_zcl_global_read_attributes_rsp(nwk_addr addr16,
        }
        if (records && *records) {
                zb_get_status_from_read_attr_status_record(*records, &status);
-               msg("  Status       : 0x%02X", status);
+               msg("  Status       : 0x%02X, %s", status, zb_get_zcl_status_code_name(status));
        }
        if (records && *records) {
                zb_get_value_from_read_attr_status_record(*records, type, value);
@@ -148,7 +148,7 @@ static void zigbee_zcl_global_write_attributes_rsp(nwk_addr addr16,
        }
        if (records) {
                zb_get_status_from_write_attr_status(*records, &status);
-               msg("  status      : 0x%02X", status);
+               msg("  status      : 0x%02X, %s", status, zb_get_zcl_status_code_name(status));
        }
        zb_destroy_value(value);
 }
@@ -174,7 +174,7 @@ static void zigbee_zcl_global_configure_reporting_rsp(nwk_addr addr16,
        msg("  records_len=%d", records_len);
        for (i = 0; i < records_len; i++) {
                zb_get_status_from_report_config_response_record(records[i], &status);
-               msg("    [%d] status = 0x%02X", i, status);
+               msg("    [%d] status = 0x%02X %s", i, status, zb_get_zcl_status_code_name(status));
        }
 }