[Adapt: OAL] Implement ACL connection state changed events 96/78496/1
authorAnupam Roy <anupam.r@samsung.com>
Tue, 5 Jul 2016 20:49:23 +0000 (16:49 -0400)
committerAnupam Roy <anupam.r@samsung.com>
Tue, 5 Jul 2016 20:49:23 +0000 (16:49 -0400)
Change-Id: Ib7fc3d1b6eb2eb25066dbc6a6a1465a7ac267044
Signed-off-by: Anupam Roy <anupam.r@samsung.com>
bt-oal/oal-adapter-mgr.c
bt-oal/oal-device-mgr.c

index 0015e58..81d9cd6 100755 (executable)
@@ -59,6 +59,8 @@ 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,
                                         bt_bond_state_t state);
+extern void cb_device_acl_state_changed(bt_status_t status, bt_bdaddr_t *remote_bd_addr,
+                                            bt_acl_state_t state);
 
 static bt_callbacks_t callbacks = {
        sizeof(callbacks),
@@ -70,7 +72,7 @@ static bt_callbacks_t callbacks = {
        NULL, /* pin_request_callback */
        NULL, /* ssp_request_callback */
        cb_device_bond_state_changed,
-       NULL, /* acl_state_changed_callback */
+       cb_device_acl_state_changed,
        NULL, /* callback_thread_event */
        NULL, /* dut_mode_recv_callback */
        NULL, /* le_test_mode_callback*/
index 451a8de..0d56656 100755 (executable)
@@ -250,3 +250,41 @@ void cb_device_bond_state_changed(bt_status_t status, bt_bdaddr_t *bd_addr,
        }
        send_event_bda_trace(event, address, size, (bt_address_t*)bd_addr);
 }
+
+void cb_device_acl_state_changed(bt_status_t status, bt_bdaddr_t *bd_addr,
+               bt_acl_state_t state)
+{
+       event_dev_conn_status_t * conn_status = g_new0(event_dev_conn_status_t, 1);
+       //bt_address_t * address = g_new0(bt_address_t, 1);
+       oal_event_t event;
+       gsize size = 0;
+
+       BT_DBG("ACL State:%d, state: %d", status, state);
+
+       memcpy(conn_status->address.addr, bd_addr->address, 6);
+
+       if (BT_STATUS_SUCCESS != status) {
+               /* At present only timeout will cause non-success status, later we can add more */
+               conn_status->status = OAL_STATUS_CONN_TIMEOUT;
+               BT_ERR("ACL State Error:%d, state: %d", status, state);
+       } else
+               conn_status->status = OAL_STATUS_SUCCESS;
+
+       memcpy(conn_status->address.addr, bd_addr->address, 6);
+       switch(state) {
+       case BT_ACL_STATE_CONNECTED:
+               event = OAL_EVENT_DEVICE_ACL_CONNECTED;
+               conn_status->status = OAL_STATUS_SUCCESS;
+               break;
+       case BT_ACL_STATE_DISCONNECTED:
+               event = OAL_EVENT_DEVICE_ACL_DISCONNECTED;
+               break;
+       default:
+               BT_ERR("Unexpected ACL state %d", state);
+               g_free(conn_status);
+               return;
+       }
+
+       size = sizeof(event_dev_conn_status_t);
+       send_event_bda_trace(event, conn_status, size, (bt_address_t*)bd_addr);
+}