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

Commit 3f7121e6 authored by Chris Manton's avatar Chris Manton
Browse files

gd: Re-introduce read remote supported features

This command is very similar to the remote extended
features for page 0 and can cause confusion.  Broke out
into its own code path for clarity

Bug: 185967523
Test: gd/cert/run
Tag: #refactor
BYPASS_LONG_LINES_REASON: Bluetooth likes 120 lines

Change-Id: I1a3d841d811b47c928521ac3422c13c0c69ea975
parent 254fa248
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -287,6 +287,9 @@ void acl_link_segments_xmitted(BT_HDR_RIGID* p_msg) {
void acl_packets_completed(uint16_t handle, uint16_t credits) {
  mock_function_count_map[__func__]++;
}
void acl_process_supported_features(uint16_t handle, uint64_t features) {
  mock_function_count_map[__func__]++;
}
void acl_process_extended_features(uint16_t handle, uint8_t current_page_number,
                                   uint8_t max_page_number, uint64_t features) {
  mock_function_count_map[__func__]++;
+3 −0
Original line number Diff line number Diff line
@@ -146,6 +146,9 @@ class AclConnectionTracker : public ConnectionManagementCallbacks {
        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);
  }
  void OnReadRemoteSupportedFeaturesComplete(uint64_t features) override {
    SAVE_OR_CALL(OnReadRemoteSupportedFeaturesComplete, features);
  }
  void OnReadRemoteExtendedFeaturesComplete(uint8_t page_number, uint8_t max_page_number, uint64_t features) override {
    SAVE_OR_CALL(OnReadRemoteExtendedFeaturesComplete, page_number, max_page_number, features);
  }
+1 −7
Original line number Diff line number Diff line
@@ -578,13 +578,7 @@ struct classic_impl : public security::ISecurityManagerListener {
      ASSERT(!crash_on_unknown_handle_);
      return;
    }

    bool is_remote_support_extended_features = view.GetLmpFeatures() & (0x1ULL << 63);
    if (controller_->IsSupported(OpCode::READ_LOCAL_EXTENDED_FEATURES) && is_remote_support_extended_features) {
      callbacks->OnReadRemoteExtendedFeaturesComplete(0, 1, view.GetLmpFeatures());
    } else {
      callbacks->OnReadRemoteExtendedFeaturesComplete(0, 0, view.GetLmpFeatures());
    }
    callbacks->OnReadRemoteSupportedFeaturesComplete(view.GetLmpFeatures());
  }

  void on_read_remote_extended_features_complete(EventView packet) {
+2 −0
Original line number Diff line number Diff line
@@ -87,6 +87,8 @@ class ConnectionManagementCallbacks {
  // Invoked when controller sends Read Remote Version Information Complete
  virtual void OnReadRemoteVersionInformationComplete(
      hci::ErrorCode hci_status, uint8_t lmp_version, uint16_t manufacturer_name, uint16_t sub_version) = 0;
  // Invoked when controller sends Read Remote Supported Features Complete
  virtual void OnReadRemoteSupportedFeaturesComplete(uint64_t features) = 0;
  // Invoked when controller sends Read Remote Extended Features Complete
  virtual void OnReadRemoteExtendedFeaturesComplete(
      uint8_t page_number, uint8_t max_page_number, uint64_t features) = 0;
+1 −0
Original line number Diff line number Diff line
@@ -520,6 +520,7 @@ class AclManagerWithConnectionTest : public AclManagerTest {
    MOCK_METHOD4(
        OnReadRemoteVersionInformationComplete,
        void(hci::ErrorCode hci_status, uint8_t lmp_version, uint16_t manufacturer_name, uint16_t sub_version));
    MOCK_METHOD1(OnReadRemoteSupportedFeaturesComplete, void(uint64_t features));
    MOCK_METHOD3(
        OnReadRemoteExtendedFeaturesComplete, void(uint8_t page_number, uint8_t max_page_number, uint64_t features));
  } mock_connection_management_callbacks_;
Loading