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

Commit 7fd16c5e authored by Jakub Pawlowski's avatar Jakub Pawlowski Committed by Gerrit Code Review
Browse files

Merge "service: add HAL for connect/disconnect"

parents 1a198c6b 2331fed3
Loading
Loading
Loading
Loading
+48 −2
Original line number Diff line number Diff line
@@ -83,6 +83,33 @@ void ScanResultCallback(bt_bdaddr_t* bda, int rssi, uint8_t* adv_data) {
    ScanResultCallback(g_interface, *bda, rssi, adv_data));
}

void ConnectCallback(int conn_id, int status, int client_if, bt_bdaddr_t* bda) {
  lock_guard<mutex> lock(g_instance_lock);
  VERIFY_INTERFACE_OR_RETURN();
  CHECK(bda);

  VLOG(2) << __func__ << " - status: " << status
          << " client_if: " << client_if
          << " - BD_ADDR: " << BtAddrString(bda)
          << " - conn_id: " << conn_id;
  FOR_EACH_CLIENT_OBSERVER(
    ConnectCallback(g_interface, conn_id, status, client_if, *bda));
}

void DisconnectCallback(int conn_id, int status, int client_if,
                        bt_bdaddr_t* bda) {
  lock_guard<mutex> lock(g_instance_lock);
  VERIFY_INTERFACE_OR_RETURN();
  CHECK(bda);

  VLOG(2) << __func__ << " - conn_id: " << conn_id
             << " - status: " << status
             << " client_if: " << client_if
             << " - BD_ADDR: " << BtAddrString(bda);
  FOR_EACH_CLIENT_OBSERVER(
    DisconnectCallback(g_interface, conn_id, status, client_if, *bda));
}

void ListenCallback(int status, int client_if) {
  lock_guard<mutex> lock(g_instance_lock);
  VLOG(2) << __func__ << " - status: " << status << " client_if: " << client_if;
@@ -280,8 +307,8 @@ void IndicationSentCallback(int conn_id, int status) {
const btgatt_client_callbacks_t gatt_client_callbacks = {
    RegisterClientCallback,
    ScanResultCallback,
    nullptr,  // open_cb
    nullptr,  // close_cb
    ConnectCallback,
    DisconnectCallback,
    nullptr,  // search_complete_cb
    nullptr,  // search_result_cb
    nullptr,  // get_characteristic_cb
@@ -478,6 +505,25 @@ void BluetoothGattInterface::ClientObserver::ScanResultCallback(
    uint8_t* /* adv_data */) {
  // Do Nothing.
}

void BluetoothGattInterface::ClientObserver::ConnectCallback(
    BluetoothGattInterface* /* gatt_iface */,
    int /* conn_id */,
    int /* status */,
    int /* client_if */,
    const bt_bdaddr_t& /* bda */) {
  // Do nothing
}

void BluetoothGattInterface::ClientObserver::DisconnectCallback(
    BluetoothGattInterface* /* gatt_iface */,
    int /* conn_id */,
    int /* status */,
    int /* client_if */,
    const bt_bdaddr_t& /* bda */) {
  // Do nothing
}

void BluetoothGattInterface::ClientObserver::ListenCallback(
    BluetoothGattInterface* /* gatt_iface */,
    int /* status */,
+14 −0
Original line number Diff line number Diff line
@@ -61,6 +61,20 @@ class BluetoothGattInterface {
        const bt_bdaddr_t& bda, int rssi,
        uint8_t* adv_data);

    virtual void ConnectCallback(
        BluetoothGattInterface* gatt_iface,
        int conn_id,
        int status,
        int client_if,
        const bt_bdaddr_t& bda);

    virtual void DisconnectCallback(
        BluetoothGattInterface* gatt_iface,
        int conn_id,
        int status,
        int client_if,
        const bt_bdaddr_t& bda);

    virtual void ListenCallback(
        BluetoothGattInterface* gatt_iface,
        int status, int client_if);
+30 −2
Original line number Diff line number Diff line
@@ -47,6 +47,22 @@ bt_status_t FakeScan(bool start) {
  return BT_STATUS_FAIL;
}

bt_status_t FakeConnect(int client_if, const bt_bdaddr_t *bd_addr,
                        bool is_direct, int transport) {
  if (g_client_handler)
    return g_client_handler->Connect(client_if, bd_addr, is_direct, transport);

  return BT_STATUS_FAIL;
}

bt_status_t FakeDisconnect(int client_if, const bt_bdaddr_t *bd_addr,
                           int conn_id) {
  if (g_client_handler)
    return g_client_handler->Disconnect(client_if, bd_addr, conn_id);

  return BT_STATUS_FAIL;
}

bt_status_t FakeMultiAdvEnable(
    int client_if, int min_interval, int max_interval, int adv_type,
    int chnl_map, int tx_power, int timeout_s) {
@@ -160,8 +176,8 @@ btgatt_client_interface_t fake_btgattc_iface = {
  FakeRegisterClient,
  FakeUnregisterClient,
  FakeScan,
  nullptr,  // connect
  nullptr,  // disconnect
  FakeConnect,
  FakeDisconnect,
  nullptr,  // listen
  nullptr,  // refresh
  nullptr,  // search_service
@@ -246,6 +262,18 @@ void FakeBluetoothGattInterface::NotifyRegisterClientCallback(
                    RegisterClientCallback(this, status, client_if, app_uuid));
}

void FakeBluetoothGattInterface::NotifyConnectCallback(
    int conn_id, int status, int client_if, const bt_bdaddr_t& bda) {
  FOR_EACH_OBSERVER(ClientObserver, client_observers_,
                    ConnectCallback(this, conn_id, status, client_if, bda));
}

void FakeBluetoothGattInterface::NotifyDisconnectCallback(
    int conn_id, int status, int client_if, const bt_bdaddr_t& bda) {
  FOR_EACH_OBSERVER(ClientObserver, client_observers_,
                    DisconnectCallback(this, conn_id, status, client_if, bda));
}

void FakeBluetoothGattInterface::NotifyScanResultCallback(
    const bt_bdaddr_t& bda, int rssi, uint8_t* adv_data) {
  FOR_EACH_OBSERVER(ClientObserver, client_observers_,
+8 −0
Original line number Diff line number Diff line
@@ -37,6 +37,10 @@ class FakeBluetoothGattInterface : public BluetoothGattInterface {
    virtual bt_status_t UnregisterClient(int client_if) = 0;

    virtual bt_status_t Scan(bool start) = 0;
    virtual bt_status_t Connect(int client_if, const bt_bdaddr_t *bd_addr,
                                bool is_direct, int transport) = 0;
    virtual bt_status_t Disconnect(int client_if, const bt_bdaddr_t *bd_addr,
                                   int conn_id) = 0;

    virtual bt_status_t MultiAdvEnable(
        int client_if, int min_interval, int max_interval, int adv_type,
@@ -90,6 +94,10 @@ class FakeBluetoothGattInterface : public BluetoothGattInterface {
  // Client callbacks:
  void NotifyRegisterClientCallback(int status, int client_if,
                                    const bt_uuid_t& app_uuid);
  void NotifyConnectCallback(int conn_id, int status, int client_if,
                             const bt_bdaddr_t& bda);
  void NotifyDisconnectCallback(int conn_id, int status, int client_if,
                                const bt_bdaddr_t& bda);
  void NotifyScanResultCallback(const bt_bdaddr_t& bda, int rssi,
                                uint8_t* adv_data);
  void NotifyMultiAdvEnableCallback(int client_if, int status);
+4 −2
Original line number Diff line number Diff line
@@ -36,6 +36,8 @@ class MockGattHandler
  MOCK_METHOD1(RegisterClient, bt_status_t(bt_uuid_t*));
  MOCK_METHOD1(UnregisterClient, bt_status_t(int));
  MOCK_METHOD1(Scan, bt_status_t(bool));
  MOCK_METHOD4(Connect, bt_status_t(int , const bt_bdaddr_t *, bool, int));
  MOCK_METHOD3(Disconnect, bt_status_t(int , const bt_bdaddr_t *, int));

  // Stub implementations for uninteresting TestClientHandler methods:
  bt_status_t MultiAdvEnable(int, int, int, int, int, int, int) override {
Loading