X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=bt-oal%2Foal-adapter-mgr.c;h=6b663016a8d111a05269cb355f95e46509c8d1c2;hb=8343c3041c0440cb5dcd57a612394a3adcb961f9;hp=33551804f29b39ca2354ad31e90dcfb3282b4c67;hpb=697c0688ece47da5c8ea9ff2b5fc4486adad4418;p=platform%2Fcore%2Fconnectivity%2Fbluetooth-frwk.git diff --git a/bt-oal/oal-adapter-mgr.c b/bt-oal/oal-adapter-mgr.c index 3355180..6b66301 100644 --- a/bt-oal/oal-adapter-mgr.c +++ b/bt-oal/oal-adapter-mgr.c @@ -71,7 +71,7 @@ extern void cb_device_ssp_request(bt_bdaddr_t *bd_addr, bt_bdname_t *bdname, uin extern void cb_device_authorize_request(bt_bdaddr_t *remote_bd_addr, bt_service_id_t service_d); extern void cb_device_trust_state_changed(bt_bdaddr_t *remote_bd_addr, bt_device_trust_state_t trusted); #ifdef TIZEN_BT_HAL -extern void cb_socket_conn_authorize_request(bt_bdaddr_t *remote_bd_addr, bt_uuid_t *uuid); +extern void cb_socket_conn_authorize_request(bt_bdaddr_t *remote_bd_addr, bt_uuid_t *uuid, uint8_t *name, uint8_t *path, uint32_t fd); static void cb_ble_state_change(bt_state_t status); extern void cb_device_le_conn_state_changed(bt_status_t status, bt_bdaddr_t *bd_addr, bt_le_conn_state_t state); @@ -79,6 +79,8 @@ 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 = { @@ -106,6 +108,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 }; @@ -153,7 +157,13 @@ oal_status_t adapter_enable(void) int ret = BT_STATUS_SUCCESS; API_TRACE(); - CHECK_OAL_INITIALIZED(); + + if (blued_api == NULL) { + BT_INFO("Stack is initializing, so pending enable"); + g_timeout_add(200, retry_enable_adapter, NULL); + return OAL_STATUS_PENDING; + } + if (OAL_STATUS_SUCCESS != hw_is_module_ready()) { g_timeout_add(200, retry_enable_adapter, NULL); return OAL_STATUS_PENDING; @@ -368,6 +378,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; @@ -504,6 +532,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; @@ -655,6 +700,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) { @@ -738,6 +802,22 @@ oal_status_t adapter_set_le_static_random_address(int enable) return ret; } +oal_status_t adapter_set_manufacturer_data(oal_manufacturer_data_t *m_data) +{ + int ret; + + CHECK_OAL_INITIALIZED(); + API_TRACE(); + + OAL_CHECK_PARAMETER(m_data, return); + ret = blued_api->adapter_le_set_manufacturer_data((bt_manufacturer_data_t*)m_data); + if (ret != BT_STATUS_SUCCESS) + BT_ERR("Setting manufacturer data Failed: [%s]",status2string(ret)); + + ret = convert_to_oal_status(ret); + return ret; +} + oal_status_t adapter_set_white_list(bt_address_t *device_address, int address_type, bool is_add) { int ret; @@ -916,6 +996,18 @@ static void cb_adapter_properties(bt_status_t status, event_data, (sizeof(event_device_list_t) + num_bonded * sizeof(bt_bdaddr_t))); break; } + case BT_PROPERTY_A2DP_ROLE: { + unsigned int a2dp_role; + + a2dp_role = *((uint32_t*)properties[i].val); + + BT_INFO("A2DP role: %u", a2dp_role); + + send_event(OAL_EVENT_ADAPTER_PROPERTY_A2DP_ROLE, + g_memdup(properties[i].val, sizeof(uint32_t)), + sizeof(uint32_t)); + break; + } case BT_PROPERTY_LOCAL_LE_FEATURES: { event_adapter_le_features_t *le_features; @@ -935,12 +1027,14 @@ static void cb_adapter_properties(bt_status_t status, sizeof(event_adapter_le_features_t)); break; } - case BT_PROPERTY_ADAPTER_LE_DISCOVERY_FINISHED: { - gboolean le_discovering = *(gboolean *)properties[i].val; - if (le_discovering == FALSE) { - BT_INFO("LE Discovery finished"); - send_event(OAL_EVENT_BLE_DISCOVERY_FINISHED, NULL, 0); - } + case BT_PROPERTY_ADAPTER_LE_DISCOVERY_STARTED: { + BT_INFO("LE Discovery started"); + send_event(OAL_EVENT_BLE_DISCOVERY_STARTED, NULL, 0); + break; + } + case BT_PROPERTY_ADAPTER_LE_DISCOVERY_STOPPED: { + BT_INFO("LE Discovery stopped"); + send_event(OAL_EVENT_BLE_DISCOVERY_STOPPED, NULL, 0); break; } default: @@ -1013,3 +1107,18 @@ 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; + + BT_DBG("+"); + + event_data = g_new0(uint8_t, 1); + *event_data = error_code; + + send_event(OAL_EVENT_CONTROLLER_ERROR_RECEIVED, + (gpointer)event_data, sizeof(uint8_t)); + + BT_DBG("-"); +} \ No newline at end of file