diff options
author | Hemant Gupta <hemantg@codeaurora.org> | 2013-07-30 16:11:33 +0530 |
---|---|---|
committer | Linux Build Service Account <lnxbuild@localhost> | 2015-10-06 03:21:25 -0600 |
commit | 0a404651e06088c41642647f1fdcc4d11f0a5a12 (patch) | |
tree | c862b33bddcdee26e22c12ee4028a55acbe4e8f7 /btif/src/btif_hh.c | |
parent | 0612c27626bac7b7fbb37743aceec6d15a66870a (diff) | |
download | android_system_bt-0a404651e06088c41642647f1fdcc4d11f0a5a12.tar.gz android_system_bt-0a404651e06088c41642647f1fdcc4d11f0a5a12.tar.bz2 android_system_bt-0a404651e06088c41642647f1fdcc4d11f0a5a12.zip |
HID: Add support for Set Idle and Get Idle commands (2/4)
This patch adds support for sending set idle and get idle commands to
remote HID device, on receiving the function call from upper layers.
Also on reception of get idle time from remote device, upper layers
are infrmed using registered callback.
Without this support TC_HOS_HID_BV_05/06 PTS test cases for HID 1.0
cannot be passed.
Change-Id: I14bc2dc349354fd87ef8aba25357514398532e87
CRs-Fixed: 522511
Diffstat (limited to 'btif/src/btif_hh.c')
-rw-r--r-- | btif/src/btif_hh.c | 77 |
1 files changed, 74 insertions, 3 deletions
diff --git a/btif/src/btif_hh.c b/btif/src/btif_hh.c index 1b4c1956e..a58d4a9f2 100644 --- a/btif/src/btif_hh.c +++ b/btif/src/btif_hh.c @@ -878,7 +878,7 @@ static void btif_hh_upstreams_evt(UINT16 event, char* p_param) break; case BTA_HH_GET_PROTO_EVT: - p_dev = btif_hh_find_connected_dev_by_handle(p_data->dev_status.handle); + p_dev = btif_hh_find_connected_dev_by_handle(p_data->hs_data.handle); BTIF_TRACE_WARNING("BTA_HH_GET_PROTO_EVT: status = %d, handle = %d, proto = [%d], %s", p_data->hs_data.status, p_data->hs_data.handle, p_data->hs_data.rsp_data.proto_mode, @@ -911,6 +911,9 @@ static void btif_hh_upstreams_evt(UINT16 event, char* p_param) BTIF_TRACE_DEBUG("BTA_HH_GET_IDLE_EVT: handle = %d, status = %d, rate = %d", p_data->hs_data.handle, p_data->hs_data.status, p_data->hs_data.rsp_data.idle_rate); + p_dev = btif_hh_find_connected_dev_by_handle(p_data->hs_data.handle); + HAL_CBACK(bt_hh_callbacks, idle_time_cb,(bt_bdaddr_t*) &(p_dev->bd_addr), + (bthh_status_t) p_data->hs_data.status, p_data->hs_data.rsp_data.idle_rate); break; case BTA_HH_SET_IDLE_EVT: @@ -1380,6 +1383,74 @@ static bt_status_t set_info (bt_bdaddr_t *bd_addr, bthh_hid_info_t hid_info ) /******************************************************************************* ** +** Function get_idle_time +** +** Description Get the HID idle time +** +** Returns bt_status_t +** +*******************************************************************************/ +static bt_status_t get_idle_time(bt_bdaddr_t *bd_addr) +{ + CHECK_BTHH_INIT(); + btif_hh_device_t *p_dev; + BD_ADDR* bda = (BD_ADDR*) bd_addr; + + BTIF_TRACE_DEBUG(" addr = %02X:%02X:%02X:%02X:%02X:%02X", + (*bda)[0], (*bda)[1], (*bda)[2], (*bda)[3], (*bda)[4], (*bda)[5]); + + if (btif_hh_cb.status == BTIF_HH_DISABLED) { + BTIF_TRACE_ERROR("%s: Error, HH status = %d", __FUNCTION__, btif_hh_cb.status); + return BT_STATUS_FAIL; + } + + p_dev = btif_hh_find_connected_dev_by_bda(bd_addr); + if (p_dev != NULL) { + BTA_HhGetIdle(p_dev->dev_handle); + } + else { + return BT_STATUS_FAIL; + } + return BT_STATUS_SUCCESS; +} + +/******************************************************************************* +** +** Function set_idle_time +** +** Description Set the HID idle time +** +** Returns bt_status_t +** +*******************************************************************************/ +static bt_status_t set_idle_time (bt_bdaddr_t *bd_addr, uint8_t idle_time) +{ + CHECK_BTHH_INIT(); + btif_hh_device_t *p_dev; + BD_ADDR* bda = (BD_ADDR*) bd_addr; + + BTIF_TRACE_DEBUG("addr = %02X:%02X:%02X:%02X:%02X:%02X", + (*bda)[0], (*bda)[1], (*bda)[2], (*bda)[3], (*bda)[4], (*bda)[5]); + + if (btif_hh_cb.status == BTIF_HH_DISABLED) { + BTIF_TRACE_ERROR("%s: Error, HH status = %d", __FUNCTION__, btif_hh_cb.status); + return BT_STATUS_FAIL; + } + + p_dev = btif_hh_find_connected_dev_by_bda(bd_addr); + if (p_dev == NULL) { + BTIF_TRACE_WARNING(" Error, device %02X:%02X:%02X:%02X:%02X:%02X not opened.", + (*bda)[0], (*bda)[1], (*bda)[2], (*bda)[3], (*bda)[4], (*bda)[5]); + return BT_STATUS_FAIL; + } + else { + BTA_HhSetIdle(p_dev->dev_handle, idle_time); + } + return BT_STATUS_SUCCESS; +} + +/******************************************************************************* +** ** Function get_protocol ** ** Description Get the HID proto mode. @@ -1691,8 +1762,8 @@ static const bthh_interface_t bthhInterface = { set_info, get_protocol, set_protocol, -// get_idle_time, -// set_idle_time, + get_idle_time, + set_idle_time, get_report, set_report, send_data, |