Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 917d2467 authored by Ivan Podogov's avatar Ivan Podogov Committed by Myles Watson
Browse files

Add "connecting" and "disconnecting" states to HID Device.

Currently the upper java layers have full support for all four
connection states, yet the lower stack only reports about
"connected" and "disconnected".
This patch adds sending "connecting" and "disconnecting" messages
when bta_hd_connect_act and bta_hd_disconnect_act finish
successfully.

Test: build, run, logcat
Change-Id: I00f9f414daa3854198ff9eee19e9c98a2e18f603
parent cbc5b000
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -27,6 +27,8 @@

#if defined(BTA_HD_INCLUDED) && (BTA_HD_INCLUDED == TRUE)

#include <hardware/bluetooth.h>
#include <hardware/bt_hd.h>
#include <string.h>

#include "bt_utils.h"
@@ -259,6 +261,7 @@ void bta_hd_unregister2_act(tBTA_HD_DATA* p_data) {
extern void bta_hd_connect_act(tBTA_HD_DATA* p_data) {
  tHID_STATUS ret;
  tBTA_HD_DEVICE_CTRL* p_ctrl = (tBTA_HD_DEVICE_CTRL*)p_data;
  tBTA_HD cback_data;

  APPL_TRACE_API("%s", __func__);

@@ -271,7 +274,13 @@ extern void bta_hd_connect_act(tBTA_HD_DATA* p_data) {
  ret = HID_DevConnect();
  if (ret != HID_SUCCESS) {
    APPL_TRACE_WARNING("%s: HID_DevConnect returned %d", __func__, ret);
    return;
  }

  bdcpy(cback_data.conn.bda, p_ctrl->addr);
  cback_data.conn.status = BTHD_CONN_STATE_CONNECTING;

  bta_hd_cb.p_cback(BTA_HD_CONN_STATE_EVT, &cback_data);
}

/*******************************************************************************
@@ -285,6 +294,7 @@ extern void bta_hd_connect_act(tBTA_HD_DATA* p_data) {
 ******************************************************************************/
extern void bta_hd_disconnect_act(UNUSED_ATTR tBTA_HD_DATA* p_data) {
  tHID_STATUS ret;
  tBTA_HD cback_data;

  APPL_TRACE_API("%s", __func__);

@@ -292,7 +302,13 @@ extern void bta_hd_disconnect_act(UNUSED_ATTR tBTA_HD_DATA* p_data) {

  if (ret != HID_SUCCESS) {
    APPL_TRACE_WARNING("%s: HID_DevDisconnect returned %d", __func__, ret);
    return;
  }

  bdcpy(cback_data.conn.bda, bta_hd_cb.bd_addr);
  cback_data.conn.status = BTHD_CONN_STATE_DISCONNECTING;

  bta_hd_cb.p_cback(BTA_HD_CONN_STATE_EVT, &cback_data);
}

/*******************************************************************************
+1 −0
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@
#define BTA_HD_SET_PROTOCOL_EVT 8   /* SET_PROTOCOL request from host */
#define BTA_HD_INTR_DATA_EVT 9      /* DATA received from host on intr */
#define BTA_HD_VC_UNPLUG_EVT 10     /* Virtual Cable Unplug */
#define BTA_HD_CONN_STATE_EVT 11    /* Report connection state change */
#define BTA_HD_API_ERR_EVT 99       /* BT-HD API error */

typedef uint16_t tBTA_HD_EVT;
+7 −0
Original line number Diff line number Diff line
@@ -268,6 +268,12 @@ static void btif_hd_upstreams_evt(uint16_t event, char* p_param) {
      HAL_CBACK(bt_hd_callbacks, vc_unplug_cb);
      break;

    case BTA_HD_CONN_STATE_EVT:
      HAL_CBACK(bt_hd_callbacks, connection_state_cb,
                (bt_bdaddr_t*)&p_data->conn.bda,
                (bthd_connection_state_t)p_data->conn.status);
      break;

    default:
      BTIF_TRACE_WARNING("%s: unknown event (%d)", __func__, event);
      break;
@@ -305,6 +311,7 @@ static void bte_hd_evt(tBTA_HD_EVT event, tBTA_HD* p_data) {
    case BTA_HD_OPEN_EVT:
    case BTA_HD_CLOSE_EVT:
    case BTA_HD_VC_UNPLUG_EVT:
    case BTA_HD_CONN_STATE_EVT:
      param_len = sizeof(tBTA_HD_CONN);
      break;

+1 −0
Original line number Diff line number Diff line
@@ -376,6 +376,7 @@ const char* dump_hd_event(uint16_t event) {
    CASE_RETURN_STR(BTA_HD_SET_PROTOCOL_EVT)
    CASE_RETURN_STR(BTA_HD_INTR_DATA_EVT)
    CASE_RETURN_STR(BTA_HD_VC_UNPLUG_EVT)
    CASE_RETURN_STR(BTA_HD_CONN_STATE_EVT)
    CASE_RETURN_STR(BTA_HD_API_ERR_EVT)
    default:
      return "UNKNOWN MSG ID";