From: Anupam Roy Date: Tue, 5 Jul 2016 20:49:23 +0000 (-0400) Subject: [Adapt: OAL] Implement ACL connection state changed events X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6ffcff4c10211a9ef6b993fa95e21d374c85d204;p=platform%2Fcore%2Fconnectivity%2Fbluetooth-frwk.git [Adapt: OAL] Implement ACL connection state changed events Change-Id: Ib7fc3d1b6eb2eb25066dbc6a6a1465a7ac267044 Signed-off-by: Anupam Roy --- diff --git a/bt-oal/oal-adapter-mgr.c b/bt-oal/oal-adapter-mgr.c index 0015e58..81d9cd6 100755 --- a/bt-oal/oal-adapter-mgr.c +++ b/bt-oal/oal-adapter-mgr.c @@ -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*/ diff --git a/bt-oal/oal-device-mgr.c b/bt-oal/oal-device-mgr.c index 451a8de..0d56656 100755 --- a/bt-oal/oal-device-mgr.c +++ b/bt-oal/oal-device-mgr.c @@ -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); +}