Adjust the event generation timing for BT enabled / disabled
[platform/core/connectivity/bluetooth-frwk.git] / bt-oal / oal-adapter-mgr.c
index f96c650..7fa21df 100644 (file)
@@ -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);
@@ -136,6 +136,7 @@ void adapter_mgr_cleanup(void)
        BT_DBG();
 }
 
+#ifdef TIZEN_BT_HAL
 int oal_set_adapter_request_state(int enable)
 {
        return blued_api->set_hal_adapter_request_state(enable);
@@ -145,6 +146,7 @@ int oal_set_le_request_state(int enable)
 {
        return blued_api->set_hal_le_request_state(enable);
 }
+#endif
 
 oal_status_t adapter_enable(void)
 {
@@ -716,6 +718,78 @@ oal_status_t adapter_ble_multi_adv_disable(int instance_id)
        return OAL_STATUS_SUCCESS;
 }
 
+oal_status_t adapter_set_le_static_random_address(int enable)
+{
+       int ret;
+
+       CHECK_OAL_INITIALIZED();
+       API_TRACE("%d", enable);
+
+#ifdef TIZEN_BT_HAL
+       ret = blued_api->set_le_static_random_address((enable ? 1 : 0));
+       if (ret != BT_STATUS_SUCCESS)
+               BT_ERR("Static address set failed: [%s]", status2string(ret));
+       ret = convert_to_oal_status(ret);
+#else
+       BT_INFO("Not Supported");
+       ret = OAL_STATUS_NOT_SUPPORT;
+#endif
+
+       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;
+       bdstr_t bdstr;
+
+       CHECK_OAL_INITIALIZED();
+       API_TRACE();
+
+       BT_INFO("BT remote device Address: %s", bdt_bd2str(device_address, &bdstr));
+
+       ret = blued_api->adapter_le_set_white_list((bt_bdaddr_t*)device_address, address_type, is_add);
+       if (ret != BT_STATUS_SUCCESS) {
+               if(is_add)
+                       BT_ERR("Add to White List Failed: [%s]",status2string(ret));
+               else
+                       BT_ERR("Remove from White List Failed: [%s]",status2string(ret));
+       }
+       ret = convert_to_oal_status(ret);
+       return ret;
+}
+
+oal_status_t adapter_ble_set_privacy(int set_privacy)
+{
+       int res;
+
+       CHECK_OAL_INITIALIZED();
+       API_TRACE();
+
+       res = blued_api->adapter_le_set_privacy(set_privacy);
+       if (res != BT_STATUS_SUCCESS)
+               BT_ERR("Setting LE Privacy Failed: [%s]", status2string(res));
+       res = convert_to_oal_status(res);
+
+       return res;
+}
+
 static void cb_adapter_properties(bt_status_t status,
                int num_properties,
                bt_property_t *properties)
@@ -858,6 +932,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;
 
@@ -877,6 +963,16 @@ static void cb_adapter_properties(bt_status_t status,
                                        sizeof(event_adapter_le_features_t));
                        break;
                }
+               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:
                         BT_WARN("Unhandled property: %d", properties[i].type);
                         break;