Adapt device disconnect to BT HAL framework
[platform/core/connectivity/bluetooth-frwk.git] / bt-oal / bluez_hal / src / bt-hal-bluetooth.c
index b8197e4..fa31d3d 100644 (file)
@@ -59,8 +59,8 @@ static const bt_callbacks_t *bt_hal_cbacks = NULL;
 /* Forward declarations */
 static void __bt_adapter_props_to_hal(bt_property_t *send_props, struct hal_property *prop, uint8_t num_props, uint16_t len);
 static void __bt_device_props_to_hal(bt_property_t *send_props,
-                struct hal_property *prop, uint8_t num_props,
-                uint16_t len);
+               struct hal_property *prop, uint8_t num_props,
+               uint16_t len);
 static void __bt_hal_handle_adapter_state_changed(void *buf, uint16_t len);
 static void __bt_hal_handle_adapter_property_changed(void *buf, uint16_t len);
 static void __bt_hal_handle_stack_messages(int message, void *buf, uint16_t len);
@@ -328,7 +328,7 @@ static int read_energy_info(void)
 }
 
 static int authorize_response(const bt_bdaddr_t *bd_addr, bt_service_id_t service_id,
-                                    uint8_t authorize, uint8_t save_settings)
+               uint8_t authorize, uint8_t save_settings)
 {
        DBG("+");
        return _bt_hal_device_authorize_response(bd_addr, service_id, authorize, save_settings);
@@ -372,7 +372,7 @@ static int get_connected_link_rssi_strength(bt_bdaddr_t *bd_addr, uint32_t conn_
 }
 
 static int enable_rssi_monitoring(bt_bdaddr_t *bd_addr, uint32_t conn_link_type,
-                   int low_threshold, int in_range_threshold, int high_threshold)
+               int low_threshold, int in_range_threshold, int high_threshold)
 {
        DBG("");
        return _bt_hal_device_enable_rssi_monitoring(bd_addr, conn_link_type,
@@ -385,6 +385,26 @@ static int enable_gap_auth_notifications(uint32_t type, uint8_t enable)
        _bt_hal_enable_gap_auth_notifications(type, ((enable == 0) ? FALSE : TRUE));
        return BT_STATUS_SUCCESS;
 }
+
+static int set_hal_adapter_request_state(int enable)
+{
+       DBG("");
+       _bt_hal_set_adapter_request_state(enable);
+       return BT_STATUS_SUCCESS;
+}
+
+static int set_hal_le_request_state(int enable)
+{
+       DBG("");
+       _bt_hal_set_le_request_state(enable);
+       return BT_STATUS_SUCCESS;
+}
+
+static int dev_disconnect(const bt_bdaddr_t *bd_addr)
+{
+       DBG("+");
+       return _bt_hal_device_disconnect(bd_addr);
+}
 #endif
 
 static const bt_interface_t bluetooth_if = {
@@ -401,6 +421,7 @@ static const bt_interface_t bluetooth_if = {
        .le_disable = _bt_hal_le_disable,
        .le_init = _bt_hal_le_init,
        .le_deinit = _bt_hal_le_deinit,
+       .is_advertising = _bt_hal_is_advertising,
 #endif
        .cleanup = cleanup,
 #ifdef TIZEN_BT_HAL
@@ -443,6 +464,12 @@ static const bt_interface_t bluetooth_if = {
        .enable_rssi_monitoring = enable_rssi_monitoring,
        .get_connected_link_rssi_strength = get_connected_link_rssi_strength,
        .enable_gap_auth_notifications = enable_gap_auth_notifications,
+       .set_le_static_random_address = _bt_hal_set_le_static_random_address,
+       .set_hal_adapter_request_state = set_hal_adapter_request_state,
+       .set_hal_le_request_state = set_hal_le_request_state,
+       .adapter_le_set_white_list = _bt_hal_adapter_le_set_white_list,
+       .adapter_le_set_privacy = _bt_hal_adapter_le_set_privacy,
+       .device_disconnect = dev_disconnect,
 #endif
 };
 
@@ -463,7 +490,7 @@ static int close_bluetooth(struct hw_device_t *device)
 static int open_bluetooth(const struct hw_module_t *module, char const *name,
                struct hw_device_t **device)
 {
-       bluetooth_device_t *dev = malloc(sizeof(bluetooth_device_t));
+       bluetooth_device_t *dev = g_malloc0(sizeof(bluetooth_device_t));
 
        DBG("");
 
@@ -532,10 +559,10 @@ static void __bt_adapter_props_to_hal(bt_property_t *send_props, struct hal_prop
 
                switch (prop->type) {
                        /* TODO: Add Adapter Properties */
-                       default:
-                               send_props[i].len = prop->len;
-                               send_props[i].val = prop->val;
-                               break;
+               default:
+                       send_props[i].len = prop->len;
+                       send_props[i].val = prop->val;
+                       break;
                }
 
                DBG("prop[%d]: %s", i, btproperty2str(&send_props[i]));
@@ -550,8 +577,8 @@ static void __bt_adapter_props_to_hal(bt_property_t *send_props, struct hal_prop
 }
 
 static void __bt_device_props_to_hal(bt_property_t *send_props,
-                struct hal_property *prop, uint8_t num_props,
-                uint16_t len)
+               struct hal_property *prop, uint8_t num_props,
+               uint16_t len)
 {
        void *buf = prop;
        uint8_t i;
@@ -716,54 +743,54 @@ static void __bt_hal_handle_bond_state_changed_event(void *buf, uint16_t len)
 
 static void __bt_hal_handle_device_acl_state_changed_event(void *buf, uint16_t len)
 {
-        struct hal_ev_acl_state_changed *ev = (struct hal_ev_acl_state_changed*)buf;
-        bt_bdaddr_t bd_addr;
-        DBG("+");
+       struct hal_ev_acl_state_changed *ev = (struct hal_ev_acl_state_changed*)buf;
+       bt_bdaddr_t bd_addr;
+       DBG("+");
 
-        memcpy(bd_addr.address, ev->bdaddr, 6);
-        /* BD address*/
-        DBG("[0x%x]", bd_addr.address[0]);
-        DBG("[0x%x]", bd_addr.address[1]);
-        DBG("[0x%x]", bd_addr.address[2]);
-        DBG("[0x%x]", bd_addr.address[3]);
-        DBG("[0x%x]", bd_addr.address[4]);
-        DBG("[0x%x]", bd_addr.address[5]);
+       memcpy(bd_addr.address, ev->bdaddr, 6);
+       /* BD address*/
+       DBG("[0x%x]", bd_addr.address[0]);
+       DBG("[0x%x]", bd_addr.address[1]);
+       DBG("[0x%x]", bd_addr.address[2]);
+       DBG("[0x%x]", bd_addr.address[3]);
+       DBG("[0x%x]", bd_addr.address[4]);
+       DBG("[0x%x]", bd_addr.address[5]);
 
-        DBG("ACL Status [0x%x]", ev->status);
-        DBG("ACL State  [0x%x]", ev->state);
+       DBG("ACL Status [0x%x]", ev->status);
+       DBG("ACL State  [0x%x]", ev->state);
 
-        if (!bt_hal_cbacks->acl_state_changed_cb) {
-                ERR("HAL User acl_state_changed_cb is not set!!");
-                return;
-        }
+       if (!bt_hal_cbacks->acl_state_changed_cb) {
+               ERR("HAL User acl_state_changed_cb is not set!!");
+               return;
+       }
 
-        bt_hal_cbacks->acl_state_changed_cb(ev->status, &bd_addr, ev->state);
-        DBG("-");
+       bt_hal_cbacks->acl_state_changed_cb(ev->status, &bd_addr, ev->state);
+       DBG("-");
 }
 
 static void __bt_hal_handle_device_le_conn_state_changed_event(void *buf, uint16_t len)
 {
-        struct hal_ev_acl_state_changed *ev = (struct hal_ev_acl_state_changed*)buf;
-        bt_bdaddr_t bd_addr;
-        DBG("+");
+       struct hal_ev_acl_state_changed *ev = (struct hal_ev_acl_state_changed*)buf;
+       bt_bdaddr_t bd_addr;
+       DBG("+");
 
-        memcpy(bd_addr.address, ev->bdaddr, 6);
-        /* BD address */
-        DBG("Address: [%02X:%02X:%02X:%02X:%02X:%02X]", bd_addr.address[0],
+       memcpy(bd_addr.address, ev->bdaddr, 6);
+       /* BD address */
+       DBG("Address: [%02X:%02X:%02X:%02X:%02X:%02X]", bd_addr.address[0],
                        bd_addr.address[1], bd_addr.address[2], bd_addr.address[3],
                        bd_addr.address[4], bd_addr.address[5]);
-        DBG("LE conn Status [0x%x]", ev->status);
-        DBG("LE conn State  [0x%x]", ev->state);
+       DBG("LE conn Status [0x%x]", ev->status);
+       DBG("LE conn State  [0x%x]", ev->state);
 
 #ifdef TIZEN_BT_HAL
-        if (!bt_hal_cbacks->le_conn_state_changed_cb) {
-                ERR("HAL User le_conn_state_changed_cb is not set!!");
-                return;
-        }
+       if (!bt_hal_cbacks->le_conn_state_changed_cb) {
+               ERR("HAL User le_conn_state_changed_cb is not set!!");
+               return;
+       }
 
-        bt_hal_cbacks->le_conn_state_changed_cb(ev->status, &bd_addr, ev->state);
+       bt_hal_cbacks->le_conn_state_changed_cb(ev->status, &bd_addr, ev->state);
 #endif
-        DBG("-");
+       DBG("-");
 }
 
 static void __bt_hal_handle_authorize_request_event(void *buf, uint16_t len)
@@ -881,28 +908,28 @@ static void __bt_hal_handle_pin_request_event(void *buf, uint16_t len)
 
 static void __bt_hal_handle_device_trust_state_changed_event(void *buf, uint16_t len)
 {
-        struct hal_ev_device_trust_state_changed *ev = (struct hal_ev_device_trust_state_changed*)buf;
-        bt_bdaddr_t bd_addr;
-        DBG("+");
+       struct hal_ev_device_trust_state_changed *ev = (struct hal_ev_device_trust_state_changed*)buf;
+       bt_bdaddr_t bd_addr;
+       DBG("+");
 
-        memcpy(bd_addr.address, ev->bdaddr, 6);
-        /* BD address*/
-        DBG("[0x%x]", bd_addr.address[0]);
-        DBG("[0x%x]", bd_addr.address[1]);
-        DBG("[0x%x]", bd_addr.address[2]);
-        DBG("[0x%x]", bd_addr.address[3]);
-        DBG("[0x%x]", bd_addr.address[4]);
-        DBG("[0x%x]", bd_addr.address[5]);
+       memcpy(bd_addr.address, ev->bdaddr, 6);
+       /* BD address*/
+       DBG("[0x%x]", bd_addr.address[0]);
+       DBG("[0x%x]", bd_addr.address[1]);
+       DBG("[0x%x]", bd_addr.address[2]);
+       DBG("[0x%x]", bd_addr.address[3]);
+       DBG("[0x%x]", bd_addr.address[4]);
+       DBG("[0x%x]", bd_addr.address[5]);
 
-        DBG("Device Trusted?  [0x%x]", ev->trust);
+       DBG("Device Trusted?  [0x%x]", ev->trust);
 
-        if (!bt_hal_cbacks->device_trust_state_changed_cb) {
-                ERR("HAL User device_trust_state_changed_cb is not set!!");
-                return;
-        }
+       if (!bt_hal_cbacks->device_trust_state_changed_cb) {
+               ERR("HAL User device_trust_state_changed_cb is not set!!");
+               return;
+       }
 
-        bt_hal_cbacks->device_trust_state_changed_cb(&bd_addr, ev->trust);
-        DBG("-");
+       bt_hal_cbacks->device_trust_state_changed_cb(&bd_addr, ev->trust);
+       DBG("-");
 }
 
 static void __bt_hal_handle_device_trusted_profiles_changed_event(void *buf, uint16_t len)
@@ -935,8 +962,8 @@ static void __bt_handle_rssi_monitor_state_changed(void *buf, uint16_t len)
 
        DBG("+");
 #ifdef TIZEN_BT_HAL
-        memcpy(bd_addr.address, ev->bdaddr, 6);
-        DBG("[0x%02X:%02X:%02X:%02X:%02X:%02X]",
+       memcpy(bd_addr.address, ev->bdaddr, 6);
+       DBG("[0x%02X:%02X:%02X:%02X:%02X:%02X]",
                        bd_addr.address[0], bd_addr.address[1],
                        bd_addr.address[2], bd_addr.address[3],
                        bd_addr.address[4], bd_addr.address[5]);
@@ -955,8 +982,8 @@ static void __bt_handle_rssi_alert_recieved(void *buf, uint16_t len)
 
        DBG("+");
 #ifdef TIZEN_BT_HAL
-        memcpy(bd_addr.address, ev->bdaddr, 6);
-        DBG("[0x%02X:%02X:%02X:%02X:%02X:%02X]",
+       memcpy(bd_addr.address, ev->bdaddr, 6);
+       DBG("[0x%02X:%02X:%02X:%02X:%02X:%02X]",
                        bd_addr.address[0], bd_addr.address[1],
                        bd_addr.address[2], bd_addr.address[3],
                        bd_addr.address[4], bd_addr.address[5]);
@@ -975,8 +1002,8 @@ static void __bt_handle_raw_rssi_recieved(void *buf, uint16_t len)
 
        DBG("+");
 #ifdef TIZEN_BT_HAL
-        memcpy(bd_addr.address, ev->bdaddr, 6);
-        DBG("[0x%02X:%02X:%02X:%02X:%02X:%02X]",
+       memcpy(bd_addr.address, ev->bdaddr, 6);
+       DBG("[0x%02X:%02X:%02X:%02X:%02X:%02X]",
                        bd_addr.address[0], bd_addr.address[1],
                        bd_addr.address[2], bd_addr.address[3],
                        bd_addr.address[4], bd_addr.address[5]);
@@ -991,84 +1018,84 @@ static void __bt_handle_raw_rssi_recieved(void *buf, uint16_t len)
 static void __bt_hal_handle_stack_messages(int message, void *buf, uint16_t len)
 {
        DBG("+");
-       switch(message) {
-               case HAL_EV_ADAPTER_STATE_CHANGED:
-                       DBG("Event: HAL_EV_ADAPTER_STATE_CHANGED");
-                       __bt_hal_handle_adapter_state_changed(buf, len);
-                       break;
-               case HAL_EV_ADAPTER_PROPS_CHANGED:
-                       DBG("Event: HAL_EV_ADAPTER_PROPS_CHANGED");
-                       __bt_hal_handle_adapter_property_changed(buf, len);
-                       break;
-               case HAL_EV_DISCOVERY_STATE_CHANGED:
-                       DBG("Event: HAL_EV_DISCOVERY_STATE_CHANGED");
-                       __bt_hal_handle_adapter_discovery_state_changed(buf, len);
-                       break;
-               case HAL_EV_DEVICE_FOUND:
-                       DBG("Event: HAL_EV_DEVICE_FOUND");
-                       __bt_hal_handle_device_found_event(buf, len);
-                       break;
-               case HAL_EV_REMOTE_DEVICE_PROPS:
-                       DBG("Event: HAL_EV_REMOTE_DEVICE_PROPS");
-                       __bt_hal_handle_remote_device_properties_event(buf, len);
-                       break;
-               case HAL_EV_BOND_STATE_CHANGED:
-                       DBG("Event: HAL_EV_BOND_STATE_CHANGED:");
-                       __bt_hal_handle_bond_state_changed_event(buf, len);
-                       break;
-               case HAL_EV_ACL_STATE_CHANGED:
-                       DBG("Event: HAL_ACL_STATE_CONNECTED or Disconnected");
-                       __bt_hal_handle_device_acl_state_changed_event(buf, len);
-                       break;
-               case HAL_EV_LE_CONN_STATE_CHANGED:
-                       DBG("Event: HAL_LE_CONN_STATE_CONNECTED or Disconnected");
-                       __bt_hal_handle_device_le_conn_state_changed_event(buf, len);
-                       break;
-               case HAL_EV_SSP_REQUEST:
-                       DBG("Event: HAL_EV_SSP_REQUEST");
-                       __bt_hal_handle_ssp_request_event(buf, len);
-                       break;
-               case HAL_EV_PIN_REQUEST:
-                       DBG("Event: HAL_EV_PIN_REQUEST");
-                       __bt_hal_handle_pin_request_event(buf, len);
-                       break;
-               case HAL_EV_AUTHORIZE_REQUEST:
-                       DBG("Event: HAL_EV_AUTHORIZE_REQUEST");
-                       __bt_hal_handle_authorize_request_event(buf, len);
-                       break;
-               case HAL_EV_DEVICE_TRUST_CHANGED:
-                       DBG("Event: HAL_EV_DEVICE_TRUST_CHANGED");
-                       __bt_hal_handle_device_trust_state_changed_event(buf, len);
-                       break;
+       switch (message) {
+       case HAL_EV_ADAPTER_STATE_CHANGED:
+               DBG("Event: HAL_EV_ADAPTER_STATE_CHANGED");
+               __bt_hal_handle_adapter_state_changed(buf, len);
+               break;
+       case HAL_EV_ADAPTER_PROPS_CHANGED:
+               DBG("Event: HAL_EV_ADAPTER_PROPS_CHANGED");
+               __bt_hal_handle_adapter_property_changed(buf, len);
+               break;
+       case HAL_EV_DISCOVERY_STATE_CHANGED:
+               DBG("Event: HAL_EV_DISCOVERY_STATE_CHANGED");
+               __bt_hal_handle_adapter_discovery_state_changed(buf, len);
+               break;
+       case HAL_EV_DEVICE_FOUND:
+               DBG("Event: HAL_EV_DEVICE_FOUND");
+               __bt_hal_handle_device_found_event(buf, len);
+               break;
+       case HAL_EV_REMOTE_DEVICE_PROPS:
+               DBG("Event: HAL_EV_REMOTE_DEVICE_PROPS");
+               __bt_hal_handle_remote_device_properties_event(buf, len);
+               break;
+       case HAL_EV_BOND_STATE_CHANGED:
+               DBG("Event: HAL_EV_BOND_STATE_CHANGED:");
+               __bt_hal_handle_bond_state_changed_event(buf, len);
+               break;
+       case HAL_EV_ACL_STATE_CHANGED:
+               DBG("Event: HAL_ACL_STATE_CONNECTED or Disconnected");
+               __bt_hal_handle_device_acl_state_changed_event(buf, len);
+               break;
+       case HAL_EV_LE_CONN_STATE_CHANGED:
+               DBG("Event: HAL_LE_CONN_STATE_CONNECTED or Disconnected");
+               __bt_hal_handle_device_le_conn_state_changed_event(buf, len);
+               break;
+       case HAL_EV_SSP_REQUEST:
+               DBG("Event: HAL_EV_SSP_REQUEST");
+               __bt_hal_handle_ssp_request_event(buf, len);
+               break;
+       case HAL_EV_PIN_REQUEST:
+               DBG("Event: HAL_EV_PIN_REQUEST");
+               __bt_hal_handle_pin_request_event(buf, len);
+               break;
+       case HAL_EV_AUTHORIZE_REQUEST:
+               DBG("Event: HAL_EV_AUTHORIZE_REQUEST");
+               __bt_hal_handle_authorize_request_event(buf, len);
+               break;
+       case HAL_EV_DEVICE_TRUST_CHANGED:
+               DBG("Event: HAL_EV_DEVICE_TRUST_CHANGED");
+               __bt_hal_handle_device_trust_state_changed_event(buf, len);
+               break;
 #ifdef TIZEN_BT_HAL
-               case HAL_EV_SOCK_AUTHORIZE_REQUEST:
-                       DBG("Event: HAL_EV_AUTHORIZE_REQUEST");
-                       __bt_hal_handle_socket_authorize_request_event(buf, len);
-                       break;
-               case HAL_EV_LE_STATE_CHANGED:
-                       DBG("Event: HAL_EV_LE_STATE_CHANGED");
-                       __bt_hal_handle_le_state_changed(buf, len);
-                       break;
+       case HAL_EV_SOCK_AUTHORIZE_REQUEST:
+               DBG("Event: HAL_EV_AUTHORIZE_REQUEST");
+               __bt_hal_handle_socket_authorize_request_event(buf, len);
+               break;
+       case HAL_EV_LE_STATE_CHANGED:
+               DBG("Event: HAL_EV_LE_STATE_CHANGED");
+               __bt_hal_handle_le_state_changed(buf, len);
+               break;
 #endif
-               case HAL_EV_DEVICE_TRUSTED_PROFILES_CHANGED:
-                       DBG("Event: HAL_EV_DEVICE_TRUST_CHANGED");
-                       __bt_hal_handle_device_trusted_profiles_changed_event(buf, len);
-                       break;
-               case HAL_EV_RSSI_MONITOR_STATE_CHANGED:
-                       DBG("Event: HAL_EV_RSSI_MONITOR_STATE_CHANGED");
-                       __bt_handle_rssi_monitor_state_changed(buf, len);
-                       break;
-               case HAL_EV_RSSI_ALERT_RECIEVED:
-                       DBG("Event: HAL_EV_RSSI_ALERT_RECIEVED");
-                       __bt_handle_rssi_alert_recieved(buf, len);
-                       break;
-               case HAL_EV_RAW_RSSI_RECIEVED:
-                       DBG("Event: HAL_EV_RAW_RSSI_RECIEVED");
-                       __bt_handle_raw_rssi_recieved(buf, len);
-                       break;
-               default:
-                       DBG("Event Currently not handled!!");
-                       break;
+       case HAL_EV_DEVICE_TRUSTED_PROFILES_CHANGED:
+               DBG("Event: HAL_EV_DEVICE_TRUST_CHANGED");
+               __bt_hal_handle_device_trusted_profiles_changed_event(buf, len);
+               break;
+       case HAL_EV_RSSI_MONITOR_STATE_CHANGED:
+               DBG("Event: HAL_EV_RSSI_MONITOR_STATE_CHANGED");
+               __bt_handle_rssi_monitor_state_changed(buf, len);
+               break;
+       case HAL_EV_RSSI_ALERT_RECIEVED:
+               DBG("Event: HAL_EV_RSSI_ALERT_RECIEVED");
+               __bt_handle_rssi_alert_recieved(buf, len);
+               break;
+       case HAL_EV_RAW_RSSI_RECIEVED:
+               DBG("Event: HAL_EV_RAW_RSSI_RECIEVED");
+               __bt_handle_raw_rssi_recieved(buf, len);
+               break;
+       default:
+               DBG("Event Currently not handled!!");
+               break;
        }
        DBG("-");
 }