#include "bluetooth-gatt-server-api.h"
#endif
-#ifdef TIZEN_GATT_CLIENT
#include "bluetooth-gatt-client-api.h"
-#endif
+#include "bluetooth-mesh-api.h"
#include "bt-common.h"
#include "bt-request-sender.h"
#include "bt-event-handler.h"
-
-#ifdef TIZEN_FEATURE_BT_DPM
#include "bt-dpm.h"
-#endif
static bt_user_info_t user_info[BT_MAX_USER_INFO];
static GDBusConnection *system_shared_conn = NULL;
-static GDBusConnection *system_private_conn = NULL;
+static GDBusConnection *system_common_conn = NULL;
static guint bus_id;
#define DBUS_TIMEOUT 20 * 1000 /* 20 Seconds */
+#if 0 // Remain this code for private connection in later.
static GDBusConnection *g_bus_get_private_conn(void)
{
GError *error = NULL;
return private_gconn;
}
+#endif
-GDBusConnection *_bt_get_system_private_conn(void)
+// TODO: Need to use _bt_get_system_shared_conn in later.
+GDBusConnection *_bt_get_system_common_conn(void)
{
- if (system_private_conn == NULL)
- system_private_conn = g_bus_get_private_conn();
- else if (g_dbus_connection_is_closed(system_private_conn))
- system_private_conn = g_bus_get_private_conn();
-
- return system_private_conn;
+ if (system_common_conn == NULL) {
+ GError *error = NULL;
+ system_common_conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
+ if (error) {
+ BT_ERR("GDBus connection Error : %s \n", error->message);
+ g_clear_error(&error);
+ return NULL;
+ }
+ }
+ return system_common_conn;
}
GDBusConnection *_bt_get_system_shared_conn(void)
return &user_info[type];
}
-int _bt_common_send_rfcomm_rx_details(bluetooth_rfcomm_received_data_t *data)
+int _bt_common_send_rfcomm_rx_details(unsigned int len)
{
uid_t uid = getuid();
pid_t pid = getpid();
- int size = data->buffer_size;
+ unsigned int size = len;
int ret = BLUETOOTH_ERROR_NONE;
BT_INFO("+");
+ BT_CHECK_ENABLED(return);
BT_INIT_PARAMS();
BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
g_array_append_vals(in_param1, &uid, sizeof(uid_t));
g_array_append_vals(in_param2, &pid, sizeof(pid_t));
- g_array_append_vals(in_param3, &size, sizeof(int));
+ g_array_append_vals(in_param3, &size, sizeof(unsigned int));
ret = _bt_send_request(BT_BLUEZ_SERVICE, BT_RFCOMM_SEND_RX_DETAILS,
in_param1, in_param2, in_param3, in_param4, &out_param);
return ret;
}
-int _bt_common_send_rfcomm_tx_details(int len)
+int _bt_common_send_rfcomm_tx_details(unsigned int len)
{
uid_t uid = getuid();
pid_t pid = getpid();
- int size = len;
+ unsigned int size = len;
int ret = BLUETOOTH_ERROR_NONE;
BT_INFO("+");
+ BT_CHECK_ENABLED(return);
BT_INIT_PARAMS();
BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
g_array_append_vals(in_param1, &uid, sizeof(uid_t));
g_array_append_vals(in_param2, &pid, sizeof(pid_t));
- g_array_append_vals(in_param3, &size, sizeof(int));
+ g_array_append_vals(in_param3, &size, sizeof(unsigned int));
ret = _bt_send_request(BT_BLUEZ_SERVICE, BT_RFCOMM_SEND_TX_DETAILS,
in_param1, in_param2, in_param3, in_param4, &out_param);
BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
- BT_DBG("-");
+ BT_INFO("-");
return ret;
}
+int _bt_common_send_rfcomm_conn_info(int role, gboolean connected, int socket_fd)
+{
+ int result = BLUETOOTH_ERROR_NONE;
+
+ if (bluetooth_get_battery_monitor_state() == 0) {
+ BT_DBG("Battery monitor state is off");
+ return BLUETOOTH_ERROR_NONE;
+ }
+
+ BT_INIT_PARAMS();
+ BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
+
+ g_array_append_vals(in_param1, &role, sizeof(int));
+ g_array_append_vals(in_param2, &connected, sizeof(gboolean));
+ g_array_append_vals(in_param3, &socket_fd, sizeof(int));
+
+ result = _bt_send_request(BT_BLUEZ_SERVICE, BT_RFCOMM_UPDATE_CONNECTION_INFO,
+ in_param1, in_param2, in_param3, in_param4, &out_param);
+
+ BT_DBG("result: %x", result);
+
+ BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
+
+ return result;
+}
+
void _bt_common_event_cb(int event, int result, void *param,
void *callback, void *user_data)
{
- BT_DBG("+");
bluetooth_event_param_t bt_event = { 0, };
bt_event.event = event;
bt_event.result = result;
user_data);
}
-#ifdef TIZEN_GATT_CLIENT
void _bt_gatt_client_event_cb(int event, int result, void *param,
void *callback, void *user_data)
{
BT_ERR("GATT Client event callback is not registered!!!");
}
}
-#endif
#ifndef GATT_DIRECT
void _bt_gatt_server_event_cb(int event, int result, void *param,
void *callback, void *user_data)
{
- BT_INFO("__bt_gatt_server_event_cb");
gatt_server_event_param_t bt_event = { 0, 0, NULL, NULL };
bt_event.event = event;
bt_event.result = result;
bt_event.param_data = param;
if (callback) {
- BT_INFO("GATT Server event callback is registered");
((gatt_server_cb_func_ptr)callback)(bt_event.event, &bt_event,
user_data);
} else {
}
#endif
+void _bt_mesh_event_cb(int event, int result, void *param,
+ void *callback, void *user_data)
+{
+ BT_DBG("_bt_mesh_event_cb");
+ mesh_event_param_t bt_event = { 0, 0, NULL, NULL };
+ bt_event.event = event;
+ bt_event.result = result;
+ bt_event.param_data = param;
+ if (callback) {
+ BT_DBG("Mesh event callback is registered");
+ ((mesh_cb_func_ptr)callback)(bt_event.event, &bt_event,
+ user_data);
+ } else {
+ BT_ERR("Mesh event callback is not registered!!!");
+ }
+}
+
void _bt_divide_device_class(bluetooth_device_class_t *device_class,
unsigned int cod)
{
GError *err = NULL;
GDBusProxy *device_gproxy;
- gconn = _bt_get_system_private_conn();
+ gconn = _bt_get_system_common_conn();
if (gconn == NULL)
return NULL;
GVariant *result = NULL;
char *adapter_path = NULL;
- conn = _bt_get_system_private_conn();
+ conn = _bt_get_system_common_conn();
retv_if(conn == NULL, NULL);
manager_proxy = g_dbus_proxy_new_sync(conn,
GVariant *value = NULL;
GVariant *ret = NULL;
int result = BLUETOOTH_ERROR_INTERNAL;
- BT_INFO("+");
+
retv_if(remote_uuid == NULL, BLUETOOTH_ERROR_INTERNAL);
- gconn = _bt_get_system_private_conn();
+ gconn = _bt_get_system_common_conn();
retv_if(gconn == NULL, BLUETOOTH_ERROR_INTERNAL);
object_path = _bt_get_device_object_path(address);
retv_if(object_path == NULL, BLUETOOTH_ERROR_INTERNAL);
unsigned int class = 0x00;
int ret = BLUETOOTH_ERROR_NONE;
- gconn = _bt_get_system_private_conn();
+ gconn = _bt_get_system_common_conn();
retv_if(gconn == NULL, BLUETOOTH_ERROR_INTERNAL);
object_path = _bt_get_device_object_path(address);
{
GDBusProxy *proxy;
char *object_path;
+ GDBusConnection *gconn;
+ GError *err = NULL;
object_path = _bt_get_device_object_path(address);
if (object_path == NULL)
return BLUETOOTH_ERROR_INTERNAL;
- proxy = __bt_gdbus_get_device_proxy(object_path);
+ gconn = _bt_get_system_shared_conn();
+ if (gconn == NULL) {
+ g_free(object_path);
+ return BLUETOOTH_ERROR_INTERNAL;
+ }
+
+ proxy = g_dbus_proxy_new_sync(gconn, G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES,
+ NULL, BT_BLUEZ_NAME,
+ object_path,
+ BT_DEVICE_INTERFACE,
+ NULL, &err);
+
g_free(object_path);
- if (proxy == NULL) {
- BT_ERR("Error while getting proxy");
+
+ if (proxy == NULL && err) {
+ BT_ERR("Unable to create proxy: %s", err->message);
+ g_clear_error(&err);
return BLUETOOTH_ERROR_INTERNAL;
}
GDBusConnection *conn = NULL;
char *object_path = NULL;
- conn = _bt_get_system_private_conn();
+ conn = _bt_get_system_common_conn();
retv_if(conn == NULL, NULL);
proxy = g_dbus_proxy_new_sync(conn,
BT_DBG("+");
- g_conn = _bt_get_system_private_conn();
+ g_conn = _bt_get_system_common_conn();
retv_if(g_conn == NULL, NULL);
manager_proxy = g_dbus_proxy_new_sync(g_conn,
{
int ret;
- _bt_get_system_private_conn();
+ _bt_get_system_common_conn();
ret = _bt_init_event_handler();
if (ret != BLUETOOTH_ERROR_NONE &&
_bt_set_obex_server_id(BT_NO_SERVER);
+ _bt_reset_battery_monitor_info();
+
_bt_gdbus_deinit_proxys();
if (profile_gproxy) {
profile_gproxy = NULL;
}
- if (system_private_conn) {
- g_object_unref(system_private_conn);
- system_private_conn = NULL;
+ if (system_common_conn) {
+ g_object_unref(system_common_conn);
+ system_common_conn = NULL;
}
return BLUETOOTH_ERROR_NONE;