X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=bt-oal%2Foal-adapter-mgr.c;h=d0a2f6dfb649b81b5cff19df74adcaf183e6bbef;hb=c7066bff9deea4b9d79fd4a089dffe93c72686f8;hp=c1707d25fb2b5a86827dc44002e1bc3bf4f68bf3;hpb=48cf4373ed6aa059394d16549a44dd39ce9e9f33;p=platform%2Fcore%2Fconnectivity%2Fbluetooth-frwk.git diff --git a/bt-oal/oal-adapter-mgr.c b/bt-oal/oal-adapter-mgr.c index c1707d2..d0a2f6d 100644 --- a/bt-oal/oal-adapter-mgr.c +++ b/bt-oal/oal-adapter-mgr.c @@ -59,6 +59,7 @@ static void cb_adapter_discovery_state_changed(bt_discovery_state_t state); static void cb_adapter_device_found(int num_properties, bt_property_t *properties); static void cb_adapter_properties(bt_status_t status, int num_properties, bt_property_t *properties); +static void cb_adapter_profile_connected_devices(uint8_t count, uint8_t bdaddr_list[][6]); extern void cb_device_properties(bt_status_t status, bt_bdaddr_t *bd_addr, int num_properties, bt_property_t *properties); extern void cb_device_bond_state_changed(bt_status_t status, bt_bdaddr_t *bd_addr, @@ -79,12 +80,15 @@ extern void cb_device_trusted_profiles_changed(bt_bdaddr_t *bd_addr, uint32_t tr extern void cb_rssi_monitor_state_changed(bt_bdaddr_t *bd_addr, int32_t link_type, uint8_t state); extern void cb_rssi_alert(bt_bdaddr_t *bd_addr, int32_t link_type, int32_t alert_type, int32_t rssi); extern void cb_raw_rssi_received(bt_bdaddr_t *bd_addr, int32_t link_type, int32_t rssi); +extern void cb_dbfw_plus_info_received(unsigned char *data, uint32_t length, uint8_t event_code); +extern void cb_controller_error_received(uint8_t error_code); #endif static bt_callbacks_t callbacks = { .size = sizeof(callbacks), .adapter_state_changed_cb = cb_adapter_state_change, .adapter_properties_cb = cb_adapter_properties, + .adapter_profile_connected_devices_cb = cb_adapter_profile_connected_devices, .remote_device_properties_cb = cb_device_properties, .device_found_cb = cb_adapter_device_found, .discovery_state_changed_cb = cb_adapter_discovery_state_changed, @@ -106,6 +110,8 @@ static bt_callbacks_t callbacks = { .rssi_monitor_state_changed_cb = cb_rssi_monitor_state_changed, .rssi_alert_cb = cb_rssi_alert, .raw_rssi_received_cb = cb_raw_rssi_received, + .dbfw_plus_info_received_cb = cb_dbfw_plus_info_received, + .controller_error_received_cb = cb_controller_error_received, #endif }; @@ -139,11 +145,15 @@ void adapter_mgr_cleanup(void) #ifdef TIZEN_BT_HAL int oal_set_adapter_request_state(int enable) { + CHECK_OAL_INITIALIZED(); + return blued_api->set_hal_adapter_request_state(enable); } int oal_set_le_request_state(int enable) { + CHECK_OAL_INITIALIZED(); + return blued_api->set_hal_le_request_state(enable); } #endif @@ -352,6 +362,33 @@ oal_status_t adapter_get_powered_status(gboolean *status) return ret; } +oal_status_t adapter_get_energy_info(uint32_t *tx_time, uint32_t *rx_time, + uint32_t *idle_time, uint32_t *energy_used) +{ + int ret; + + CHECK_OAL_INITIALIZED(); + + OAL_CHECK_PARAMETER(tx_time, return); + OAL_CHECK_PARAMETER(rx_time, return); + OAL_CHECK_PARAMETER(idle_time, return); + OAL_CHECK_PARAMETER(energy_used, return); + + BT_DBG("Get Adapter Energy Info"); + +#ifdef TIZEN_BT_HAL + ret = blued_api->get_adapter_energy_info(tx_time, rx_time, idle_time, energy_used); + if (ret != BT_STATUS_SUCCESS) { + BT_ERR("get_adapter_energy_info failed: [%s]", status2string(ret)); + return convert_to_oal_status(ret); + } +#else + BT_INFO("Not Supported"); + ret = OAL_STATUS_NOT_SUPPORT; +#endif + return ret; +} + oal_status_t adapter_reset(void) { int ret; @@ -374,6 +411,24 @@ oal_status_t adapter_reset(void) return ret; } +oal_status_t adapter_recover(void) +{ + int result; + + API_TRACE(); + + CHECK_OAL_INITIALIZED(); + BT_INFO("Adapter Recover"); + + result = blued_api->recover(); + if (result != BT_STATUS_SUCCESS) { + BT_ERR("Adapter Recover Failed: [%s]", status2string(result)); + return convert_to_oal_status(result); + } + + return result; +} + oal_status_t adapter_start_inquiry(unsigned short duration) { int ret; @@ -510,6 +565,23 @@ oal_status_t adapter_get_name(void) return OAL_STATUS_SUCCESS; } +oal_status_t adapter_get_connectable(void) +{ + int ret; + + CHECK_OAL_INITIALIZED(); + + API_TRACE(); + + ret = blued_api->get_adapter_property(BT_PROPERTY_ADAPTER_SCAN_MODE); + if (ret != BT_STATUS_SUCCESS) { + BT_ERR("get_adapter_property failed: [%s]", status2string(ret)); + return convert_to_oal_status(ret); + } + + return OAL_STATUS_SUCCESS; +} + oal_status_t adapter_set_name(char * name) { int ret; @@ -598,6 +670,23 @@ oal_status_t adapter_get_bonded_devices(void) return OAL_STATUS_SUCCESS; } +oal_status_t adapter_get_profile_connected_devices(const char *profile_uuid) +{ + int ret; + + CHECK_OAL_INITIALIZED(); + + API_TRACE(); + + ret = blued_api->get_profile_connected_devices(profile_uuid); + if (ret != BT_STATUS_SUCCESS) { + BT_ERR("get_profile_connected_devices failed: [%s]", status2string(ret)); + return convert_to_oal_status(ret); + } + + return OAL_STATUS_SUCCESS; +} + static oal_status_t set_scan_mode(bt_scan_mode_t mode) { bt_property_t prop; @@ -661,6 +750,25 @@ oal_status_t adapter_set_discoverable_timeout(int timeout) return OAL_STATUS_SUCCESS; } +oal_status_t adapter_ble_set_filter_policy(int filter_policy) +{ + int ret = OAL_STATUS_SUCCESS; + + CHECK_OAL_INITIALIZED(); + API_TRACE(); + + BT_DBG("Filter policy applied is [%d]", filter_policy); + + ret = gatts_set_filter_policy(filter_policy); + + if (ret != OAL_STATUS_SUCCESS) { + BT_ERR("gatts_set_filter_policy: [%d]", ret); + return ret; + } + + return OAL_STATUS_SUCCESS; +} + oal_status_t adapter_ble_multi_adv_update(int Ins_id, int min_intv, int max_intv, int adv_type, int chnl_map, int tx_power, int timeout_s) { @@ -766,9 +874,8 @@ oal_status_t adapter_set_white_list(bt_address_t *device_address, int address_ty bdstr_t bdstr; CHECK_OAL_INITIALIZED(); - API_TRACE(); - BT_INFO("BT remote device Address: %s", bdt_bd2str(device_address, &bdstr)); + BT_INFO("BT remote device Address: %s", bdt_bd2str(device_address, &bdstr) + 12); ret = blued_api->adapter_le_set_white_list((bt_bdaddr_t*)device_address, address_type, is_add); if (ret != BT_STATUS_SUCCESS) { @@ -986,6 +1093,19 @@ static void cb_adapter_properties(bt_status_t status, } } +static void cb_adapter_profile_connected_devices(uint8_t count, uint8_t addr_list[][6]) +{ + event_adapter_profile_connected_devices *event_data; + int i; + + event_data = g_malloc0(sizeof(event_adapter_profile_connected_devices)); + event_data->count = count; + for (i = 0; i < count; i++) { + memcpy(event_data->addr_list[i].addr, addr_list[i], BT_ADDRESS_BYTES_NUM); + } + send_event(OAL_EVENT_ADAPTER_PROFILE_CONNECTED_DEVICES, event_data, sizeof(event_adapter_profile_connected_devices)); +} + static void cb_adapter_discovery_state_changed(bt_discovery_state_t state) { oal_event_t event; @@ -1049,3 +1169,14 @@ static void cb_adapter_device_found(int num_properties, bt_property_t *propertie BT_DBG("-"); } + +void cb_controller_error_received(uint8_t error_code) +{ + uint8_t *event_data; + + event_data = g_new0(uint8_t, 1); + *event_data = error_code; + + send_event(OAL_EVENT_CONTROLLER_ERROR_RECEIVED, + (gpointer)event_data, sizeof(uint8_t)); +}