X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=bt-api%2Fbt-adapter.c;h=64f4cfabbb77e1083decb611db3bf134652881cf;hb=8c3d323cef31e296fc7d9ae43ff1dc407c1489cd;hp=81d5823a8c6fca01141fbc11c023429289192b10;hpb=a98ab61f78d34810f55398e1b5a3a77a5d5f5e23;p=platform%2Fcore%2Fconnectivity%2Fbluetooth-frwk.git diff --git a/bt-api/bt-adapter.c b/bt-api/bt-adapter.c index 81d5823..64f4cfa 100644 --- a/bt-api/bt-adapter.c +++ b/bt-api/bt-adapter.c @@ -29,6 +29,15 @@ #define VCONFKEY_BATTERY_MONITOR_STATUS "db/bluetooth/bmstatus" #endif + +typedef enum { + BT_MONITOR_NONE = -1, + BT_MONITOR_OFF = 0, + BT_MONITOR_ON = 1, +} bt_battery_monitor_state_t; + +static int battery_monitor_state = BT_MONITOR_NONE; + static int __bt_fill_device_list(GArray *out_param2, GPtrArray **dev_list) { int i; @@ -65,15 +74,12 @@ static int __bt_fill_device_list(GArray *out_param2, GPtrArray **dev_list) BT_EXPORT_API int bluetooth_check_adapter(void) { int value = VCONFKEY_BT_STATUS_OFF; - -#ifndef TIZEN_TEST_EMUL int ret; ret = _bt_get_adapter_path(_bt_get_system_private_conn(), NULL); if (ret != BLUETOOTH_ERROR_NONE) return BLUETOOTH_ADAPTER_DISABLED; -#endif /* check VCONFKEY_BT_STATUS */ if (vconf_get_int(VCONFKEY_BT_STATUS, &value) != 0) { @@ -93,11 +99,8 @@ BT_EXPORT_API int bluetooth_enable_adapter(void) _bt_print_api_caller_name(); retv_if(bluetooth_check_adapter() == BLUETOOTH_ADAPTER_ENABLED, BLUETOOTH_ERROR_DEVICE_ALREADY_ENABLED); - -#ifdef TIZEN_FEATURE_BT_DPM retv_if(bluetooth_dpm_is_mode_allowed() == BLUETOOTH_ERROR_PERMISSION_DEINED, BLUETOOTH_ERROR_PERMISSION_DEINED); -#endif BT_INIT_PARAMS(); BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); @@ -112,21 +115,62 @@ BT_EXPORT_API int bluetooth_enable_adapter(void) BT_EXPORT_API int bluetooth_set_battery_monitor_state(bool state) { - BT_INFO("Setting vconf key"); if (vconf_set_bool(VCONFKEY_BATTERY_MONITOR_STATUS, state) != 0) { BT_ERR("vconf_set_bool failed"); return BLUETOOTH_ERROR_INTERNAL; } + + battery_monitor_state = (state == false) ? BT_MONITOR_OFF : BT_MONITOR_ON; + return BLUETOOTH_ERROR_NONE; } +static void __bt_battery_monitor_status_changed_cb(keynode_t *node, void *data) +{ + gboolean status = FALSE; + int type; + + type = vconf_keynode_get_type(node); + if (type == VCONF_TYPE_BOOL) { + status = vconf_keynode_get_bool(node); + + BT_DBG("Update the monitor state to %d", status); + + battery_monitor_state = (status == FALSE) ? BT_MONITOR_OFF : BT_MONITOR_ON; + } else { + BT_ERR("Invaild vconf key type : %d", type); + return; + } +} + +void _bt_reset_battery_monitor_info(void) +{ + vconf_ignore_key_changed(VCONFKEY_BATTERY_MONITOR_STATUS, + (vconf_callback_fn)__bt_battery_monitor_status_changed_cb); + + _bt_rfcomm_server_reset_timer(); + _bt_rfcomm_client_reset_timer(); + + battery_monitor_state = BT_MONITOR_NONE; +} + BT_EXPORT_API int bluetooth_get_battery_monitor_state() { int state = 0; - BT_INFO("Getting vconf key value"); + + if (battery_monitor_state != BT_MONITOR_NONE) + return battery_monitor_state; + if (vconf_get_bool(VCONFKEY_BATTERY_MONITOR_STATUS, &state) != 0) BT_ERR("vconf_get_bool failed"); + + battery_monitor_state = state; + + if (vconf_notify_key_changed(VCONFKEY_BATTERY_MONITOR_STATUS, + (vconf_callback_fn)__bt_battery_monitor_status_changed_cb, NULL) < 0) + BT_ERR("Unable to register key handler"); + return state; } @@ -137,17 +181,14 @@ BT_EXPORT_API int bluetooth_read_battery_data(bt_battery_data *data) BT_CHECK_PARAMETER(data, return); - BT_INFO("### Requesting battery data"); retv_if(bluetooth_check_adapter() != BLUETOOTH_ADAPTER_ENABLED, BLUETOOTH_ADAPTER_DISABLED); retv_if(bluetooth_get_battery_monitor_state() == FALSE, BLUETOOTH_ERROR_NOT_SUPPORT); -#ifdef TIZEN_FEATURE_BT_DPM retv_if(bluetooth_dpm_is_mode_allowed() == BLUETOOTH_ERROR_PERMISSION_DEINED, BLUETOOTH_ERROR_PERMISSION_DEINED); -#endif BT_INIT_PARAMS(); BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); @@ -167,6 +208,9 @@ BT_EXPORT_API int bluetooth_read_battery_data(bt_battery_data *data) data->session_end_time = info->session_end_time; data->session_scan_time = info->session_scan_time; data->session_connected_time = info->session_connected_time; + data->tx_time = info->tx_time; + data->rx_time = info->rx_time; + data->idle_time = info->idle_time; data->atm_list = NULL; BT_DBG("Received battery data in bt-api: %ld %ld %d %d.", @@ -455,6 +499,7 @@ BT_EXPORT_API int bluetooth_start_discovery(unsigned short max_response, unsigned int classOfDeviceMask) { int result; + uid_t uid = getuid(); BT_CHECK_ENABLED(return); @@ -464,6 +509,7 @@ BT_EXPORT_API int bluetooth_start_discovery(unsigned short max_response, g_array_append_vals(in_param1, &max_response, sizeof(unsigned short)); g_array_append_vals(in_param2, &discovery_duration, sizeof(unsigned short)); g_array_append_vals(in_param3, &classOfDeviceMask, sizeof(unsigned int)); + g_array_append_vals(in_param4, &uid, sizeof(uid_t)); result = _bt_send_request(BT_BLUEZ_SERVICE, BT_START_DISCOVERY, in_param1, in_param2, in_param3, in_param4, &out_param); @@ -550,7 +596,7 @@ BT_EXPORT_API int bluetooth_is_connectable(gboolean *is_connectable) BT_INIT_PARAMS(); BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param); - result = _bt_send_request(BT_BLUEZ_SERVICE, BT_IS_CONNECTABLE, + result = _bt_send_request(BT_BLUEZ_SERVICE, BT_GET_CONNECTABLE, in_param1, in_param2, in_param3, in_param4, &out_param); if (result == BLUETOOTH_ERROR_NONE)