return BLUETOOTH_ERROR_INVALID_PARAM;
node_info = __bt_gatt_create_method_node_info(
- characteristics_introspection_xml);
+ characteristics_introspection_xml);
if (node_info == NULL)
return BLUETOOTH_ERROR_INTERNAL;
BT_DBG("gatt characteristic path is [%s]", path);
object_id = g_dbus_connection_register_object(g_conn, path,
- node_info->interfaces[0],
- &char_interface_vtable,
- NULL, NULL, &error);
+ node_info->interfaces[0],
+ &char_interface_vtable,
+ NULL, NULL, &error);
g_dbus_node_info_unref(node_info);
if (object_id == 0) {
inner_builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
g_variant_builder_add(inner_builder, "{sv}", "UUID",
- g_variant_new("s", char_uuid));
+ g_variant_new("s", char_uuid));
g_variant_builder_add(inner_builder, "{sv}", "Service",
- g_variant_new("o", svc_path));
+ g_variant_new("o", svc_path));
builder2 = g_variant_builder_new(G_VARIANT_TYPE("as"));
flags_val = g_variant_new("as", builder2);
g_variant_builder_add(inner_builder, "{sv}", "Flags",
- flags_val);
+ flags_val);
builder3 = g_variant_builder_new(G_VARIANT_TYPE("ao"));
g_variant_builder_add(inner_builder, "{sv}", "Descriptors",
- g_variant_new("ao", builder3));
+ g_variant_new("ao", builder3));
g_variant_builder_add(builder, "{sa{sv}}",
- GATT_CHAR_INTERFACE,
- inner_builder);
+ GATT_CHAR_INTERFACE,
+ inner_builder);
g_dbus_connection_emit_signal(g_conn, NULL, "/",
- "org.freedesktop.Dbus.ObjectManager",
- "InterfacesAdded",
- g_variant_new("(oa{sa{sv}})",
+ "org.freedesktop.Dbus.ObjectManager",
+ "InterfacesAdded",
+ g_variant_new("(oa{sa{sv}})",
path, builder),
- &error);
+ &error);
+
+ if (error) {
+ /* dBUS gives error cause */
+ BT_ERR("Could not Emit Signal: errCode[%x], message[%s]",
+ error->code, error->message);
+ g_clear_error(&error);
+ }
*char_path = g_strdup(path);
g_variant_builder_add(builder1, "y", char_value[i]);
char_val = g_variant_new("ay", builder1);
- g_variant_builder_add(inner_builder, "{sv}", "Value", char_val);
+ g_variant_builder_add(inner_builder, "{sv}", "Value", char_val);
g_variant_builder_add(builder, "{sa{sv}}",
GATT_CHAR_INTERFACE,
"org.freedesktop.Dbus.ObjectManager",
"InterfacesAdded",
g_variant_new("(oa{sa{sv}})",
- char_info->char_path, builder),
+ char_info->char_path, builder),
&error);
+ if (error) {
+ /* dBUS gives error cause */
+ BT_ERR("Could not Emit Signal: errCode[%x], message[%s]",
+ error->code, error->message);
+ g_clear_error(&error);
+ }
g_variant_builder_unref(inner_builder);
g_variant_builder_unref(builder);
g_variant_builder_unref(builder1);
g_variant_builder_add(inner_builder, "{sv}", "Value", desc_val);
g_variant_builder_add(builder, "{sa{sv}}",
- GATT_DESC_INTERFACE,
- inner_builder);
+ GATT_DESC_INTERFACE,
+ inner_builder);
g_dbus_connection_emit_signal(g_conn, NULL, "/",
- "org.freedesktop.Dbus.ObjectManager",
- "InterfacesAdded",
- g_variant_new("(oa{sa{sv}})",
+ "org.freedesktop.Dbus.ObjectManager",
+ "InterfacesAdded",
+ g_variant_new("(oa{sa{sv}})",
desc_info->desc_path, builder),
- &error);
+ &error);
+
+ if (error != NULL) {
+ BT_ERR("D-Bus API failure: errCode[%x], \
+ message[%s]",
+ error->code, error->message);
+ g_clear_error(&error);
+ }
g_variant_builder_unref(inner_builder);
g_variant_builder_unref(builder);
update_value = g_variant_new("ay", inner_builder);
- outer_builder = g_variant_builder_new(G_VARIANT_TYPE_ARRAY);
g_variant_builder_add(outer_builder, "{sv}", "Value",
update_value);
if (ret != BLUETOOTH_ERROR_NONE &&
ret != BLUETOOTH_ERROR_ALREADY_INITIALIZED) {
BT_ERR("Fail to init the event handler");
- return ret;
+ BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
+ goto done;
}
ret = _bt_send_request(BT_BLUEZ_SERVICE, BT_GATT_SERVER_REGISTER,
BT_INFO("GATT Server Registered successfully: App Instance ID [%d]", *instance_id);
}
+done:
BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
BT_INFO("GATT Server instance ID obtained [%d]", *instance_id);
BT_DBG("GATT Server Add characteristic success result [%d] char chandle [%d]", result, *char_handle);
}
+ BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
return result;
}