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

Commit 3e801aa8 authored by Chienyuan's avatar Chienyuan
Browse files

LE Shim: Implement ReadRemoteControllerInformation

Bug: 231095722
Tag: #refactor
Test: gd/cert/run
Change-Id: Id973755e3d259ad10d774882ebd546e0271b4d01
parent ee9b6265
Loading
Loading
Loading
Loading
+15 −0
Original line number Original line Diff line number Diff line
@@ -63,6 +63,11 @@ class LeAclConnectionTracker : public LeConnectionManagementCallbacks {
        connection_handle_, static_cast<uint8_t>(hci_status), lmp_version, manufacturer_name, sub_version);
        connection_handle_, static_cast<uint8_t>(hci_status), lmp_version, manufacturer_name, sub_version);
    SAVE_OR_CALL(OnReadRemoteVersionInformationComplete, hci_status, lmp_version, manufacturer_name, sub_version);
    SAVE_OR_CALL(OnReadRemoteVersionInformationComplete, hci_status, lmp_version, manufacturer_name, sub_version);
  }
  }

  void OnLeReadRemoteFeaturesComplete(hci::ErrorCode hci_status, uint64_t features) override {
    SAVE_OR_CALL(OnLeReadRemoteFeaturesComplete, hci_status, features);
  }

  void OnPhyUpdate(hci::ErrorCode hci_status, uint8_t tx_phy, uint8_t rx_phy) override {
  void OnPhyUpdate(hci::ErrorCode hci_status, uint8_t tx_phy, uint8_t rx_phy) override {
    SAVE_OR_CALL(OnPhyUpdate, hci_status, tx_phy, rx_phy);
    SAVE_OR_CALL(OnPhyUpdate, hci_status, tx_phy, rx_phy);
  }
  }
@@ -171,6 +176,16 @@ bool LeAclConnection::ReadRemoteVersionInformation() {
  return true;
  return true;
}
}


bool LeAclConnection::LeReadRemoteFeatures() {
  pimpl_->tracker.le_acl_connection_interface_->EnqueueCommand(
      LeReadRemoteFeaturesBuilder::Create(handle_),
      pimpl_->tracker.client_handler_->BindOnce([](CommandStatusView status) {
        ASSERT(status.IsValid());
        ASSERT(status.GetCommandOpCode() == OpCode::LE_READ_REMOTE_FEATURES);
      }));
  return true;
}

bool LeAclConnection::check_connection_parameters(
bool LeAclConnection::check_connection_parameters(
    uint16_t conn_interval_min, uint16_t conn_interval_max, uint16_t conn_latency, uint16_t supervision_timeout) {
    uint16_t conn_interval_min, uint16_t conn_interval_max, uint16_t conn_latency, uint16_t supervision_timeout) {
  if (conn_interval_min < 0x0006 || conn_interval_min > 0x0C80 || conn_interval_max < 0x0006 ||
  if (conn_interval_min < 0x0006 || conn_interval_min > 0x0C80 || conn_interval_max < 0x0006 ||
+1 −0
Original line number Original line Diff line number Diff line
@@ -85,6 +85,7 @@ class LeAclConnection : public AclConnection {
                                  uint16_t supervision_timeout, uint16_t min_ce_length, uint16_t max_ce_length);
                                  uint16_t supervision_timeout, uint16_t min_ce_length, uint16_t max_ce_length);


  virtual bool ReadRemoteVersionInformation() override;
  virtual bool ReadRemoteVersionInformation() override;
  virtual bool LeReadRemoteFeatures();


  // TODO implement LeRemoteConnectionParameterRequestReply, LeRemoteConnectionParameterRequestNegativeReply
  // TODO implement LeRemoteConnectionParameterRequestReply, LeRemoteConnectionParameterRequestNegativeReply


+1 −0
Original line number Original line Diff line number Diff line
@@ -37,6 +37,7 @@ class LeConnectionManagementCallbacks {
  virtual void OnDisconnection(ErrorCode reason) = 0;
  virtual void OnDisconnection(ErrorCode reason) = 0;
  virtual void OnReadRemoteVersionInformationComplete(
  virtual void OnReadRemoteVersionInformationComplete(
      hci::ErrorCode hci_status, uint8_t lmp_version, uint16_t manufacturer_name, uint16_t sub_version) = 0;
      hci::ErrorCode hci_status, uint8_t lmp_version, uint16_t manufacturer_name, uint16_t sub_version) = 0;
  virtual void OnLeReadRemoteFeaturesComplete(hci::ErrorCode hci_status, uint64_t features) = 0;
  virtual void OnPhyUpdate(hci::ErrorCode hci_status, uint8_t tx_phy, uint8_t rx_phy) = 0;
  virtual void OnPhyUpdate(hci::ErrorCode hci_status, uint8_t tx_phy, uint8_t rx_phy) = 0;
  virtual void OnLocalAddressUpdate(AddressWithType address_with_type) = 0;
  virtual void OnLocalAddressUpdate(AddressWithType address_with_type) = 0;
};
};
+1 −0
Original line number Original line Diff line number Diff line
@@ -671,6 +671,7 @@ class AclManagerWithLeConnectionTest : public AclManagerTest {
    MOCK_METHOD4(
    MOCK_METHOD4(
        OnReadRemoteVersionInformationComplete,
        OnReadRemoteVersionInformationComplete,
        void(hci::ErrorCode hci_status, uint8_t version, uint16_t manufacturer_name, uint16_t sub_version));
        void(hci::ErrorCode hci_status, uint8_t version, uint16_t manufacturer_name, uint16_t sub_version));
    MOCK_METHOD2(OnLeReadRemoteFeaturesComplete, void(hci::ErrorCode hci_status, uint64_t features));
    MOCK_METHOD3(OnPhyUpdate, void(hci::ErrorCode hci_status, uint8_t tx_phy, uint8_t rx_phy));
    MOCK_METHOD3(OnPhyUpdate, void(hci::ErrorCode hci_status, uint8_t tx_phy, uint8_t rx_phy));
    MOCK_METHOD1(OnLocalAddressUpdate, void(AddressWithType address_with_type));
    MOCK_METHOD1(OnLocalAddressUpdate, void(AddressWithType address_with_type));
  } mock_le_connection_management_callbacks_;
  } mock_le_connection_management_callbacks_;
+1 −0
Original line number Original line Diff line number Diff line
@@ -655,6 +655,7 @@ class AclManagerWithLeConnectionTest : public AclManagerTest {
    MOCK_METHOD4(
    MOCK_METHOD4(
        OnReadRemoteVersionInformationComplete,
        OnReadRemoteVersionInformationComplete,
        void(hci::ErrorCode hci_status, uint8_t version, uint16_t manufacturer_name, uint16_t sub_version));
        void(hci::ErrorCode hci_status, uint8_t version, uint16_t manufacturer_name, uint16_t sub_version));
    MOCK_METHOD2(OnLeReadRemoteFeaturesComplete, void(hci::ErrorCode hci_status, uint64_t features));
    MOCK_METHOD3(OnPhyUpdate, void(hci::ErrorCode hci_status, uint8_t tx_phy, uint8_t rx_phy));
    MOCK_METHOD3(OnPhyUpdate, void(hci::ErrorCode hci_status, uint8_t tx_phy, uint8_t rx_phy));
    MOCK_METHOD1(OnLocalAddressUpdate, void(AddressWithType address_with_type));
    MOCK_METHOD1(OnLocalAddressUpdate, void(AddressWithType address_with_type));
  } mock_le_connection_management_callbacks_;
  } mock_le_connection_management_callbacks_;
Loading