return BLUETOOTH_ERROR_NONE;
}
+static gboolean __bt_get_check_service_available()
+{
+ GDBusConnection *service_gconn;
+ GDBusProxy *proxy;
+ GError *err = NULL;
+ GArray *in_param5 = NULL;
+ GVariant *ret, *param1, *param2, *param3, *param4, *param5;
+
+ service_gconn = _bt_get_system_common_conn();
+ if (!service_gconn)
+ return FALSE;
+
+ /* G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START
+ * method call will be failed not auto activation
+ * if service is unavailble. */
+ proxy = g_dbus_proxy_new_sync(service_gconn,
+ G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START, NULL,
+ BT_DBUS_NAME,
+ BT_SERVICE_PATH,
+ BT_DBUS_NAME,
+ NULL, &err);
+ if (!proxy) {
+ if (err) {
+ BT_ERR("Unable to create proxy: %s", err->message);
+ g_clear_error(&err);
+ }
+
+ return FALSE;
+ }
+
+ BT_INIT_PARAMS();
+ BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
+
+ in_param5 = g_array_new(TRUE, TRUE, sizeof(gchar));
+
+ param1 = g_variant_new_from_data((const GVariantType *)"ay",
+ in_param1->data, in_param1->len,
+ TRUE, NULL, NULL);
+ param2 = g_variant_new_from_data((const GVariantType *)"ay",
+ in_param2->data, in_param2->len,
+ TRUE, NULL, NULL);
+ param3 = g_variant_new_from_data((const GVariantType *)"ay",
+ in_param3->data, in_param3->len,
+ TRUE, NULL, NULL);
+ param4 = g_variant_new_from_data((const GVariantType *)"ay",
+ in_param4->data, in_param4->len,
+ TRUE, NULL, NULL);
+ param5 = g_variant_new_from_data((const GVariantType *)"ay",
+ in_param5->data, in_param5->len,
+ TRUE, NULL, NULL);
+
+ ret = g_dbus_proxy_call_sync(proxy, "service_request",
+ g_variant_new("(iii@ay@ay@ay@ay@ay)",
+ BT_BLUEZ_SERVICE, BT_CHECK_AVAILABLE,
+ BT_SYNC_REQ, param1,
+ param2, param3,
+ param4, param5),
+ G_DBUS_CALL_FLAGS_NONE, -1,
+ NULL, &err);
+
+ BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
+ g_array_free(in_param5, TRUE);
+
+ if (ret == NULL) {
+ if (err) {
+ BT_ERR("D-Bus API failure: errCode[%x], message[%s]",
+ err->code, err->message);
+ g_clear_error(&err);
+ }
+ BT_ERR("bt-service is unavailable");
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
BT_EXPORT_API int bluetooth_check_adapter(void)
{
#ifndef TIZEN_BLUEDROID_PORTING
int ret;
+ gboolean is_service_avail;
ret = _bt_get_adapter_path(_bt_get_system_common_conn(), NULL);
- return ret == BLUETOOTH_ERROR_NONE ? BLUETOOTH_ADAPTER_ENABLED :
- BLUETOOTH_ADAPTER_DISABLED;
+ is_service_avail = __bt_get_check_service_available();
+ return (ret == BLUETOOTH_ERROR_NONE && is_service_avail) ?
+ BLUETOOTH_ADAPTER_ENABLED : BLUETOOTH_ADAPTER_DISABLED;
#else
int value = VCONFKEY_BT_STATUS_OFF;