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

Commit 47701c43 authored by Omair Kamil's avatar Omair Kamil Committed by Gerrit Code Review
Browse files

Merge "Define tCONN_ID for GATT Connection ID" into main

parents 969c41a0 747064ec
Loading
Loading
Loading
Loading
+17 −17
Original line number Diff line number Diff line
@@ -336,7 +336,7 @@ public:
    NotifyGroupStatus(group_id, false, status, std::move(cb));
  }

  void OnGattCsisWriteLockRsp(uint16_t conn_id, tGATT_STATUS status, uint16_t handle, void* data) {
  void OnGattCsisWriteLockRsp(tCONN_ID conn_id, tGATT_STATUS status, uint16_t handle, void* data) {
    auto device = FindDeviceByConnId(conn_id);
    if (device == nullptr) {
      log::error("Device not there for conn_id: 0x{:04x}", conn_id);
@@ -433,7 +433,7 @@ public:

    BtaGattQueue::WriteCharacteristic(
            device->conn_id, csis_instance->svc_data.lock_handle.val_hdl, value, GATT_WRITE,
            [](uint16_t conn_id, tGATT_STATUS status, uint16_t handle, uint16_t len,
            [](tCONN_ID conn_id, tGATT_STATUS status, uint16_t handle, uint16_t len,
               const uint8_t* value, void* data) {
              if (instance) {
                instance->OnGattCsisWriteLockRsp(conn_id, status, handle, data);
@@ -758,7 +758,7 @@ public:
  }

private:
  std::shared_ptr<CsisDevice> FindDeviceByConnId(uint16_t conn_id) {
  std::shared_ptr<CsisDevice> FindDeviceByConnId(tCONN_ID conn_id) {
    auto it = find_if(devices_.begin(), devices_.end(), CsisDevice::MatchConnId(conn_id));
    if (it != devices_.end()) {
      return *it;
@@ -913,7 +913,7 @@ private:
    }
  }

  void OnGattWriteCcc(uint16_t conn_id, tGATT_STATUS status, uint16_t handle, void* user_data) {
  void OnGattWriteCcc(tCONN_ID conn_id, tGATT_STATUS status, uint16_t handle, void* user_data) {
    auto device = FindDeviceByConnId(conn_id);
    if (device == nullptr) {
      log::info("unknown conn_id= 0x{:04x}", conn_id);
@@ -946,7 +946,7 @@ private:
    }
  }

  void OnCsisNotification(uint16_t conn_id, uint16_t handle, uint16_t len, const uint8_t* value) {
  void OnCsisNotification(tCONN_ID conn_id, uint16_t handle, uint16_t len, const uint8_t* value) {
    auto device = FindDeviceByConnId(conn_id);
    if (device == nullptr) {
      log::warn("Skipping unknown device, conn_id= 0x{:04x}", conn_id);
@@ -1044,7 +1044,7 @@ private:
    }
  }

  void OnCsisSizeValueUpdate(uint16_t conn_id, tGATT_STATUS status, uint16_t handle, uint16_t len,
  void OnCsisSizeValueUpdate(tCONN_ID conn_id, tGATT_STATUS status, uint16_t handle, uint16_t len,
                             const uint8_t* value, bool notify_valid_services = false) {
    auto device = FindDeviceByConnId(conn_id);

@@ -1092,7 +1092,7 @@ private:
    }
  }

  void OnCsisLockReadRsp(uint16_t conn_id, tGATT_STATUS status, uint16_t handle, uint16_t len,
  void OnCsisLockReadRsp(tCONN_ID conn_id, tGATT_STATUS status, uint16_t handle, uint16_t len,
                         const uint8_t* value, bool notify_valid_services = false) {
    auto device = FindDeviceByConnId(conn_id);
    if (device == nullptr) {
@@ -1132,7 +1132,7 @@ private:
    }
  }

  void OnCsisRankReadRsp(uint16_t conn_id, tGATT_STATUS status, uint16_t handle, uint16_t len,
  void OnCsisRankReadRsp(tCONN_ID conn_id, tGATT_STATUS status, uint16_t handle, uint16_t len,
                         const uint8_t* value, bool notify_valid_services) {
    auto device = FindDeviceByConnId(conn_id);
    if (device == nullptr) {
@@ -1511,7 +1511,7 @@ private:
    });
  }

  void OnCsisSirkValueUpdate(uint16_t conn_id, tGATT_STATUS status, uint16_t handle, uint16_t len,
  void OnCsisSirkValueUpdate(tCONN_ID conn_id, tGATT_STATUS status, uint16_t handle, uint16_t len,
                             const uint8_t* value, bool notify_valid_services = true) {
    auto device = FindDeviceByConnId(conn_id);
    if (device == nullptr) {
@@ -1760,7 +1760,7 @@ private:
    /* Read SIRK */
    BtaGattQueue::ReadCharacteristic(
            device->conn_id, csis_inst->svc_data.sirk_handle.val_hdl,
            [](uint16_t conn_id, tGATT_STATUS status, uint16_t handle, uint16_t len, uint8_t* value,
            [](tCONN_ID conn_id, tGATT_STATUS status, uint16_t handle, uint16_t len, uint8_t* value,
               void* user_data) {
              if (instance) {
                instance->OnCsisSirkValueUpdate(conn_id, status, handle, len, value,
@@ -1773,7 +1773,7 @@ private:
    if (csis_inst->svc_data.lock_handle.val_hdl != GAP_INVALID_HANDLE) {
      BtaGattQueue::ReadCharacteristic(
              device->conn_id, csis_inst->svc_data.lock_handle.val_hdl,
              [](uint16_t conn_id, tGATT_STATUS status, uint16_t handle, uint16_t len,
              [](tCONN_ID conn_id, tGATT_STATUS status, uint16_t handle, uint16_t len,
                 uint8_t* value, void* user_data) {
                if (instance) {
                  instance->OnCsisLockReadRsp(conn_id, status, handle, len, value, (bool)user_data);
@@ -1786,7 +1786,7 @@ private:
    if (csis_inst->svc_data.size_handle.val_hdl != GAP_INVALID_HANDLE) {
      BtaGattQueue::ReadCharacteristic(
              device->conn_id, csis_inst->svc_data.size_handle.val_hdl,
              [](uint16_t conn_id, tGATT_STATUS status, uint16_t handle, uint16_t len,
              [](tCONN_ID conn_id, tGATT_STATUS status, uint16_t handle, uint16_t len,
                 uint8_t* value, void* user_data) {
                if (instance) {
                  instance->OnCsisSizeValueUpdate(conn_id, status, handle, len, value,
@@ -1800,7 +1800,7 @@ private:
    if (csis_inst->svc_data.rank_handle != GAP_INVALID_HANDLE) {
      BtaGattQueue::ReadCharacteristic(
              device->conn_id, csis_inst->svc_data.rank_handle,
              [](uint16_t conn_id, tGATT_STATUS status, uint16_t handle, uint16_t len,
              [](tCONN_ID conn_id, tGATT_STATUS status, uint16_t handle, uint16_t len,
                 uint8_t* value, void* user_data) {
                if (instance) {
                  instance->OnCsisRankReadRsp(conn_id, status, handle, len, value, (bool)user_data);
@@ -2110,7 +2110,7 @@ private:
    }
  }

  static uint16_t FindCccHandle(uint16_t conn_id, uint16_t char_handle) {
  static uint16_t FindCccHandle(tCONN_ID conn_id, uint16_t char_handle) {
    const gatt::Characteristic* p_char = BTA_GATTC_GetCharacteristic(conn_id, char_handle);
    if (!p_char) {
      log::warn("No such characteristic: 0x{:04x}", char_handle);
@@ -2126,7 +2126,7 @@ private:
    return GAP_INVALID_HANDLE;
  }

  void SubscribeForNotifications(uint16_t conn_id, const RawAddress& address, uint16_t value_handle,
  void SubscribeForNotifications(tCONN_ID conn_id, const RawAddress& address, uint16_t value_handle,
                                 uint16_t ccc_handle) {
    if (value_handle != GAP_INVALID_HANDLE) {
      tGATT_STATUS register_status =
@@ -2144,7 +2144,7 @@ private:
    UINT16_TO_STREAM(value_ptr, GATT_CHAR_CLIENT_CONFIG_NOTIFICATION);
    BtaGattQueue::WriteDescriptor(
            conn_id, ccc_handle, std::move(value), GATT_WRITE,
            [](uint16_t conn_id, tGATT_STATUS status, uint16_t handle, uint16_t len,
            [](tCONN_ID conn_id, tGATT_STATUS status, uint16_t handle, uint16_t len,
               const uint8_t* value, void* user_data) {
              if (instance) {
                instance->OnGattWriteCcc(conn_id, status, handle, user_data);
@@ -2153,7 +2153,7 @@ private:
            nullptr);
  }

  void DisableGattNotification(uint16_t conn_id, const RawAddress& address, uint16_t value_handle) {
  void DisableGattNotification(tCONN_ID conn_id, const RawAddress& address, uint16_t value_handle) {
    if (value_handle != GAP_INVALID_HANDLE) {
      tGATT_STATUS register_status =
              BTA_GATTC_DeregisterForNotifications(gatt_if_, address, value_handle);
+3 −3
Original line number Diff line number Diff line
@@ -91,7 +91,7 @@ public:
   */
  bool connecting_actively = false;

  uint16_t conn_id = GATT_INVALID_CONN_ID;
  tCONN_ID conn_id = GATT_INVALID_CONN_ID;
  uint16_t service_handle = GAP_INVALID_HANDLE;
  bool is_gatt_service_valid = false;

@@ -114,10 +114,10 @@ public:

  class MatchConnId {
  private:
    uint16_t conn_id;
    tCONN_ID conn_id;

  public:
    MatchConnId(uint16_t conn_id) : conn_id(conn_id) {}
    MatchConnId(tCONN_ID conn_id) : conn_id(conn_id) {}
    bool operator()(const std::shared_ptr<GattServiceDevice>& other) const {
      return conn_id == other->conn_id;
    }
+10 −10
Original line number Diff line number Diff line
@@ -91,7 +91,7 @@ static void post_disc_evt(tBTA_DM_DISC_EVT event, std::unique_ptr<tBTA_DM_MSG> m
  }
}

static void bta_dm_gatt_disc_complete(uint16_t conn_id, tGATT_STATUS status);
static void bta_dm_gatt_disc_complete(tCONN_ID conn_id, tGATT_STATUS status);
static void bta_dm_gattc_callback(tBTA_GATTC_EVT event, tBTA_GATTC* p_data);
static void bta_dm_execute_queued_discovery_request();
static void bta_dm_close_gatt_conn();
@@ -101,12 +101,12 @@ namespace {
struct gatt_interface_t {
  void (*BTA_GATTC_CancelOpen)(tGATT_IF client_if, const RawAddress& remote_bda, bool is_direct);
  void (*BTA_GATTC_Refresh)(const RawAddress& remote_bda);
  void (*BTA_GATTC_GetGattDb)(uint16_t conn_id, uint16_t start_handle, uint16_t end_handle,
  void (*BTA_GATTC_GetGattDb)(tCONN_ID conn_id, uint16_t start_handle, uint16_t end_handle,
                              btgatt_db_element_t** db, int* count);
  void (*BTA_GATTC_AppRegister)(tBTA_GATTC_CBACK* p_client_cb, BtaAppRegisterCallback cb,
                                bool eatt_support);
  void (*BTA_GATTC_Close)(uint16_t conn_id);
  void (*BTA_GATTC_ServiceSearchRequest)(uint16_t conn_id, const bluetooth::Uuid* p_srvc_uuid);
  void (*BTA_GATTC_Close)(tCONN_ID conn_id);
  void (*BTA_GATTC_ServiceSearchRequest)(tCONN_ID conn_id, const bluetooth::Uuid* p_srvc_uuid);
  void (*BTA_GATTC_Open)(tGATT_IF client_if, const RawAddress& remote_bda,
                         tBTM_BLE_CONN_TYPE connection_type, bool opportunistic);
} default_gatt_interface = {
@@ -116,7 +116,7 @@ struct gatt_interface_t {
                },
        .BTA_GATTC_Refresh = [](const RawAddress& remote_bda) { BTA_GATTC_Refresh(remote_bda); },
        .BTA_GATTC_GetGattDb =
                [](uint16_t conn_id, uint16_t start_handle, uint16_t end_handle,
                [](tCONN_ID conn_id, uint16_t start_handle, uint16_t end_handle,
                   btgatt_db_element_t** db, int* count) {
                  BTA_GATTC_GetGattDb(conn_id, start_handle, end_handle, db, count);
                },
@@ -124,9 +124,9 @@ struct gatt_interface_t {
                [](tBTA_GATTC_CBACK* p_client_cb, BtaAppRegisterCallback cb, bool eatt_support) {
                  BTA_GATTC_AppRegister(p_client_cb, cb, eatt_support);
                },
        .BTA_GATTC_Close = [](uint16_t conn_id) { BTA_GATTC_Close(conn_id); },
        .BTA_GATTC_Close = [](tCONN_ID conn_id) { BTA_GATTC_Close(conn_id); },
        .BTA_GATTC_ServiceSearchRequest =
                [](uint16_t conn_id, const bluetooth::Uuid* p_srvc_uuid) {
                [](tCONN_ID conn_id, const bluetooth::Uuid* p_srvc_uuid) {
                  if (p_srvc_uuid) {
                    BTA_GATTC_ServiceSearchRequest(conn_id, *p_srvc_uuid);
                  } else {
@@ -162,7 +162,7 @@ void bta_dm_disc_remove_device(const RawAddress& bd_addr) {
  if (bta_dm_discovery_cb.service_discovery_state == BTA_DM_DISCOVER_ACTIVE &&
      bta_dm_discovery_cb.peer_bdaddr == bd_addr) {
    log::info("Device removed while service discovery was pending, conclude the service discovery");
    bta_dm_gatt_disc_complete((uint16_t)GATT_INVALID_CONN_ID, (tGATT_STATUS)GATT_ERROR);
    bta_dm_gatt_disc_complete(GATT_INVALID_CONN_ID, (tGATT_STATUS)GATT_ERROR);
  }
}

@@ -491,7 +491,7 @@ void bta_dm_gatt_finished(RawAddress bda, tBTA_STATUS result,
 * Parameters:
 *
 ******************************************************************************/
static void bta_dm_gatt_disc_complete(uint16_t conn_id, tGATT_STATUS status) {
static void bta_dm_gatt_disc_complete(tCONN_ID conn_id, tGATT_STATUS status) {
  bool sdp_pending = bta_dm_discovery_cb.transports & BT_TRANSPORT_BR_EDR;
  bool le_pending = bta_dm_discovery_cb.transports & BT_TRANSPORT_LE;

@@ -672,7 +672,7 @@ static void bta_dm_gattc_callback(tBTA_GATTC_EVT event, tBTA_GATTC* p_data) {
      if (bta_dm_discovery_get_state() == BTA_DM_DISCOVER_ACTIVE) {
        /* in case of disconnect before search is completed */
        if (p_data->close.remote_bda == bta_dm_discovery_cb.peer_bdaddr) {
          bta_dm_gatt_disc_complete((uint16_t)GATT_INVALID_CONN_ID, (tGATT_STATUS)GATT_ERROR);
          bta_dm_gatt_disc_complete(GATT_INVALID_CONN_ID, (tGATT_STATUS)GATT_ERROR);
        }
      }
      break;
+1 −1
Original line number Diff line number Diff line
@@ -106,7 +106,7 @@ typedef struct {
  tBTA_DM_SERVICE_DISCOVERY_STATE service_discovery_state;
  std::unique_ptr<tBTA_DM_SDP_STATE> sdp_state;

  uint16_t conn_id;
  tCONN_ID conn_id;
  alarm_t* gatt_close_timer;    /* GATT channel close delay timer */
  RawAddress pending_close_bda; /* pending GATT channel remote device address */
} tBTA_DM_SERVICE_DISCOVERY_CB;
+10 −9
Original line number Diff line number Diff line
@@ -60,11 +60,11 @@ gatt_interface_t default_gatt_interface = {
                  BTA_GATTC_Refresh(remote_bda);
                },
        .BTA_GATTC_GetGattDb =
                [](uint16_t conn_id, uint16_t start_handle, uint16_t end_handle,
                [](tCONN_ID conn_id, uint16_t start_handle, uint16_t end_handle,
                   btgatt_db_element_t** db, int* count) {
                  gatt_history_.Push(
                          base::StringPrintf("%-32s conn_id:%hu start_handle:%hu end:handle:%hu",
                                             "GATTC_GetGattDb", conn_id, start_handle, end_handle));
                  gatt_history_.Push(base::StringPrintf(
                          "%-32s conn_id:%hu start_handle:%hu end:handle:%hu", "GATTC_GetGattDb",
                          static_cast<uint16_t>(conn_id), start_handle, end_handle));
                  BTA_GATTC_GetGattDb(conn_id, start_handle, end_handle, db, count);
                },
        .BTA_GATTC_AppRegister =
@@ -75,15 +75,16 @@ gatt_interface_t default_gatt_interface = {
                  BTA_GATTC_AppRegister(p_client_cb, cb, eatt_support);
                },
        .BTA_GATTC_Close =
                [](uint16_t conn_id) {
                  gatt_history_.Push(
                          base::StringPrintf("%-32s conn_id:%hu", "GATTC_Close", conn_id));
                [](tCONN_ID conn_id) {
                  gatt_history_.Push(base::StringPrintf("%-32s conn_id:%hu", "GATTC_Close",
                                                        static_cast<uint16_t>(conn_id)));
                  BTA_GATTC_Close(conn_id);
                },
        .BTA_GATTC_ServiceSearchRequest =
                [](uint16_t conn_id, const bluetooth::Uuid* p_srvc_uuid) {
                [](tCONN_ID conn_id, const bluetooth::Uuid* p_srvc_uuid) {
                  gatt_history_.Push(base::StringPrintf("%-32s conn_id:%hu",
                                                        "GATTC_ServiceSearchRequest", conn_id));
                                                        "GATTC_ServiceSearchRequest",
                                                        static_cast<uint16_t>(conn_id)));
                  if (p_srvc_uuid) {
                    BTA_GATTC_ServiceSearchRequest(conn_id, *p_srvc_uuid);
                  } else {
Loading