typedef struct {
int result; /**< Result */
char enabled; /**< Enabled / Disabled result */
-} ZigbeeServiceServiceState_t;
+} ZigbeeServiceServiceStateResp_t;
/**
* @brief Definition for get network info structure.
short pan_id; /**< PAN ID (an Network address) */
char channel; /**< Channel number */
char radio_tx_power; /**< Power (dBm) */
-} ZigbeeServiceGetNetworkInfo_t;
+} ZigbeeServiceGetNetworkInfoResp_t;
/**
* @brief Definition for service 'get_node_type' response.
typedef struct {
int result; /**< Result */
char node_type; /**< Node Type */
-} ZigbeeServiceServiceNodeType_t;
+} ZigbeeServiceServiceNodeTypeResp_t;
/**
* @brief Definition for service get mac structure.
typedef struct {
int result; /**< Result */
char eui64[ZIGBEE_EUI64_SIZE]; /**< EUI64 (an IEEE address) */
-} ZigbeeServiceGetMac_t;
+} ZigbeeServiceGetMacResp_t;
+
+/**
+ * @brief Definition for service get details of device info structure.
+ * @since_tizen 3.0
+ */
+typedef struct {
+ short node_id; /**< Node ID (an Network address) */
+ char node_type; /**< Node Type (an Network address) */
+ char eui64[ZIGBEE_EUI64_SIZE]; /**< EUI64 (an IEEE address) */
+ char endpoint_count; /**< The number of endpoints */
+ char endpoints[ZIGBEE_MAX_ENDPOINTS]; /**< Endpoints */
+} ZigbeeServiceGetDeviceInfoDetailResp_t;
+
+/**
+ * @brief Definition for service get device info structure.
+ * @since_tizen 3.0
+ */
+typedef struct {
+ int result; /**< Result */
+ int count; /**< The number of detail item */
+ ZigbeeServiceGetDeviceInfoDetailResp_t *list;
+} ZigbeeServiceGetDeviceInfoResp_t;
+
+/**
+ * @brief Definition for service get endpoint list structure.
+ * @since_tizen 3.0
+ */
+typedef struct {
+ int result; /**< Result */
+ int endpoint_count; /**< The number of endpoints */
+ char endpoints[ZIGBEE_MAX_ENDPOINTS]; /**< Endpoints */
+} ZigbeeServiceGetEndpointListResp_t;
+
+/**
+ * @brief Definition for service get cluster list structure.
+ * @since_tizen 3.0
+ */
+typedef struct {
+ int result; /**< Result */
+ int cluster_count; /**< The number of clusters */
+ char clusters[ZIGBEE_MAX_CLUSTERS]; /**< Clusters */
+} ZigbeeServiceGetClusterListResp_t;
+
+/**
+ * @brief Definition for service get node type structure.
+ * @since_tizen 3.0
+ */
+typedef struct {
+ int result; /**< Result */
+ char node_type; /**< Node Type (an Network address) */
+} ZigbeeServiceGetNodeTypeResp_t;
/* --------------------------------------------------------------------------------------
* For Notifications
} ZigbeeServiceServiceFormNetworkDone_t;
/**
+ * @brief Definition for service 'child_joined' response.
+ * @since_tizen 4.0
+ */
+typedef struct {
+ char eui64[ZIGBEE_EUI64_SIZE]; /**< EUI64 (an IEEE address) */
+ int endpoint_count; /**< The number of endpoints */
+ char endpoints[ZIGBEE_MAX_ENDPOINTS]; /**< Endpoints */
+ short node_id; /**< Node ID (an Network address) */
+} ZigbeeServiceServiceChildJoined_t;
+
+/**
* @brief Definition for service 'child_rejoined' response.
* @since_tizen 4.0
*/
ZigbeeService *service_object;
GDBusMethodInvocation *invocation;
- ZigbeeServiceServiceState_t *payload =
- (ZigbeeServiceServiceState_t*)resp_data;
+ ZigbeeServiceServiceStateResp_t *payload =
+ (ZigbeeServiceServiceStateResp_t*)resp_data;
NOT_USED(service_interface);
NOT_USED(request_id);
ZigbeeService *service_object;
GDBusMethodInvocation *invocation;
- ZigbeeServiceGetNetworkInfo_t *payload =
- (ZigbeeServiceGetNetworkInfo_t*)resp_data;
+ ZigbeeServiceGetNetworkInfoResp_t *payload =
+ (ZigbeeServiceGetNetworkInfoResp_t*)resp_data;
GVariant *v_eui64 = NULL;
ZigbeeService *service_object;
GDBusMethodInvocation *invocation;
- ZigbeeServiceGetMac_t *payload =
- (ZigbeeServiceGetMac_t*)resp_data;
+ ZigbeeServiceGetMacResp_t *payload =
+ (ZigbeeServiceGetMacResp_t*)resp_data;
GVariant *v_eui64 = NULL;
ZigbeeService *service_object;
GDBusMethodInvocation *invocation;
+ ZigbeeServiceGetDeviceInfoResp_t *payload =
+ (ZigbeeServiceGetDeviceInfoResp_t*)resp_data;
+
+ GVariant *variant = NULL;
+ GVariantBuilder* builder = NULL;
+ int i = 0;
+ int index = 0;
NOT_USED(service_interface);
NOT_USED(request_id);
invocation = zigbee_service_dbus_interface_ref_invocation(cb_data);
zblib_check_null_free_and_ret("invocation", invocation, cb_data);
- /* To-Do : zigbee_service_complete_get_device_list */
- //zigbee_service_complete_get_device_info(service_object, invocation, resp_data);
+ builder = g_variant_builder_new(G_VARIANT_TYPE ("a(qyayyay)"));
+ for (index = 0; index < payload->count; index++) {
+ ZigbeeServiceGetDeviceInfoDetailResp_t *device = &(payload->list[index]);
+ GVariantBuilder* mac_builder = g_variant_builder_new(G_VARIANT_TYPE ("ay"));
+ GVariantBuilder* endpoint_builder = g_variant_builder_new(G_VARIANT_TYPE ("ay"));
+
+ for (i = 0; i < ZIGBEE_EUI64_SIZE; i++) {
+ g_variant_builder_add (mac_builder, "y", device->eui64[i]);
+ }
+ for (i = 0; i < device->endpoint_count; i++) {
+ g_variant_builder_add (endpoint_builder, "y", device->endpoints[i]);
+ }
+
+ g_variant_builder_add (builder, "(qyayyay)",
+ device->node_id, device->node_type,
+ mac_builder, device->endpoint_count, endpoint_builder);
+
+ g_variant_builder_unref (mac_builder);
+ g_variant_builder_unref (endpoint_builder);
+ }
+
+ variant = g_variant_builder_end(builder);
+ zigbee_service_complete_get_device_info(service_object, invocation,
+ payload->result, variant);
g_free(cb_data);
}
ZigbeeService *service_object;
GDBusMethodInvocation *invocation;
+ ZigbeeServiceGetEndpointListResp_t *payload =
+ (ZigbeeServiceGetEndpointListResp_t*)resp_data;
+ GVariant *v_endpoints = NULL;
NOT_USED(service_interface);
NOT_USED(request_id);
invocation = zigbee_service_dbus_interface_ref_invocation(cb_data);
zblib_check_null_free_and_ret("invocation", invocation, cb_data);
- /* To fix : end-points must be changed gchar* -> GVariant ay */
- //zigbee_service_complete_get_endpoint_list(service_object, invocation, resp_data);
+ v_endpoints = g_variant_new_from_data(G_VARIANT_TYPE("a(y)"),
+ payload->endpoints, payload->endpoint_count, TRUE, NULL, NULL);
+
+ zigbee_service_complete_get_endpoint_list(service_object, invocation,
+ payload->result, v_endpoints);
g_free(cb_data);
}
ZigbeeService *service_object;
GDBusMethodInvocation *invocation;
+ ZigbeeServiceGetClusterListResp_t *payload =
+ (ZigbeeServiceGetClusterListResp_t*)resp_data;
+ GVariant *v_clusters = NULL;
NOT_USED(service_interface);
NOT_USED(request_id);
invocation = zigbee_service_dbus_interface_ref_invocation(cb_data);
zblib_check_null_free_and_ret("invocation", invocation, cb_data);
- /* To-Do : zigbee_service_complete_get_cluster_list */
- //zigbee_service_complete_get_cluster_list(service_object, invocation, resp_data);
+ v_clusters = g_variant_new_from_data(G_VARIANT_TYPE("aq"),
+ payload->clusters, payload->cluster_count, TRUE, NULL, NULL);
+
+ zigbee_service_complete_get_cluster_list(service_object, invocation,
+ payload->result, v_clusters);
g_free(cb_data);
}
ZigbeeService *service_object;
GDBusMethodInvocation *invocation;
- ZigbeeServiceServiceNodeType_t *payload =
- (ZigbeeServiceServiceNodeType_t *)resp_data;
+ ZigbeeServiceServiceNodeTypeResp_t *payload =
+ (ZigbeeServiceServiceNodeTypeResp_t *)resp_data;
NOT_USED(service_interface);
NOT_USED(request_id);
}
break;
case ZBLIB_SERVICE_NOTI_CHILD_JOINED: {
- zigbee_service_emit_child_joined(service_object, (GVariant *)noti_data);
+ ZigbeeServiceServiceChildJoined_t *child_t =
+ (ZigbeeServiceServiceChildJoined_t*)noti_data;
+
+ GVariant *v_eui64 = NULL;
+ GVariant *v_endpoints = NULL;
+
+ v_eui64 = g_variant_new_from_data(G_VARIANT_TYPE("a(y)"),
+ child_t->eui64, ZIGBEE_EUI64_SIZE, TRUE, NULL, NULL);
+ v_endpoints = g_variant_new_from_data(G_VARIANT_TYPE("a(y)"),
+ child_t->endpoints, child_t->endpoint_count, TRUE, NULL, NULL);
+ if (NULL == v_eui64 || NULL == v_endpoints) {
+ Z_LOGE("Failed to create variant!");
+ if (v_eui64)
+ g_object_unref(v_eui64);
+ if (v_endpoints)
+ g_object_unref(v_endpoints);
+ } else {
+ zigbee_service_emit_child_joined(service_object,
+ v_eui64, child_t->endpoint_count, v_endpoints, child_t->node_id);
+ }
}
break;
case ZBLIB_SERVICE_NOTI_CHILD_REJOINED: {