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

Commit 08875bc0 authored by Henri Chataing's avatar Henri Chataing Committed by Automerger Merge Worker
Browse files

Merge "RootCanal: Fix incorrect usage of remove_if in APCF vendor commands"...

Merge "RootCanal: Fix incorrect usage of remove_if in APCF vendor commands" into main am: 95a0124d

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Bluetooth/+/2751228



Change-Id: I24a24129d26e5d200b084f4ae71e503d48605908
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 820285e0 95a0124d
Loading
Loading
Loading
Loading
+53 −27
Original line number Original line Diff line number Diff line
@@ -34,25 +34,44 @@ bool ApcfScanner::HasFilterIndex(uint8_t apcf_filter_index) const {
}
}


void ApcfScanner::ClearFilterIndex(uint8_t apcf_filter_index) {
void ApcfScanner::ClearFilterIndex(uint8_t apcf_filter_index) {
  std::remove_if(std::begin(broadcaster_address_filters),
  broadcaster_address_filters.erase(
      std::remove_if(
          std::begin(broadcaster_address_filters),
          std::end(broadcaster_address_filters),
          std::end(broadcaster_address_filters),
                 [&](auto it) { return it.filter_index == apcf_filter_index; });
          [&](auto it) { return it.filter_index == apcf_filter_index; }),
  std::remove_if(std::begin(service_uuid_filters),
      std::end(broadcaster_address_filters));
                 std::end(service_uuid_filters),
  service_uuid_filters.erase(
                 [&](auto it) { return it.filter_index == apcf_filter_index; });
      std::remove_if(
  std::remove_if(std::begin(service_solicitation_uuid_filters),
          std::begin(service_uuid_filters), std::end(service_uuid_filters),
          [&](auto it) { return it.filter_index == apcf_filter_index; }),
      std::end(service_uuid_filters));
  service_solicitation_uuid_filters.erase(
      std::remove_if(
          std::begin(service_solicitation_uuid_filters),
          std::end(service_solicitation_uuid_filters),
          std::end(service_solicitation_uuid_filters),
                 [&](auto it) { return it.filter_index == apcf_filter_index; });
          [&](auto it) { return it.filter_index == apcf_filter_index; }),
  std::remove_if(std::begin(local_name_filters), std::end(local_name_filters),
      std::end(service_solicitation_uuid_filters));
                 [&](auto it) { return it.filter_index == apcf_filter_index; });
  local_name_filters.erase(
  std::remove_if(std::begin(manufacturer_data_filters),
      std::remove_if(
          std::begin(local_name_filters), std::end(local_name_filters),
          [&](auto it) { return it.filter_index == apcf_filter_index; }),
      std::end(local_name_filters));
  manufacturer_data_filters.erase(
      std::remove_if(
          std::begin(manufacturer_data_filters),
          std::end(manufacturer_data_filters),
          std::end(manufacturer_data_filters),
                 [&](auto it) { return it.filter_index == apcf_filter_index; });
          [&](auto it) { return it.filter_index == apcf_filter_index; }),
  std::remove_if(std::begin(service_data_filters),
      std::end(manufacturer_data_filters));
                 std::end(service_data_filters),
  service_data_filters.erase(
                 [&](auto it) { return it.filter_index == apcf_filter_index; });
      std::remove_if(
  std::remove_if(std::begin(ad_type_filters), std::end(ad_type_filters),
          std::begin(service_data_filters), std::end(service_data_filters),
                 [&](auto it) { return it.filter_index == apcf_filter_index; });
          [&](auto it) { return it.filter_index == apcf_filter_index; }),
      std::end(service_data_filters));
  ad_type_filters.erase(
      std::remove_if(
          std::begin(ad_type_filters), std::end(ad_type_filters),
          [&](auto it) { return it.filter_index == apcf_filter_index; }),
      std::end(ad_type_filters));
}
}


template <typename T>
template <typename T>
@@ -75,15 +94,19 @@ ErrorCode ApcfScanner::UpdateFilterList(std::vector<T>& filter_list,
    }
    }
    case ApcfAction::DELETE: {
    case ApcfAction::DELETE: {
      // Delete will delete the specified data in the specified filter.
      // Delete will delete the specified data in the specified filter.
      filter_list.erase(
          std::remove_if(std::begin(filter_list), std::end(filter_list),
          std::remove_if(std::begin(filter_list), std::end(filter_list),
                     [&](auto it) { return it == filter; });
                         [&](auto it) { return it == filter; }),
          std::end(filter_list));
      return ErrorCode::SUCCESS;
      return ErrorCode::SUCCESS;
    }
    }
    case ApcfAction::CLEAR: {
    case ApcfAction::CLEAR: {
      // Clear will clear all data in the specified filter.
      // Clear will clear all data in the specified filter.
      filter_list.erase(
          std::remove_if(
          std::remove_if(
              std::begin(filter_list), std::end(filter_list),
              std::begin(filter_list), std::end(filter_list),
          [&](auto it) { return it.filter_index == filter.filter_index; });
              [&](auto it) { return it.filter_index == filter.filter_index; }),
          std::end(filter_list));
      return ErrorCode::SUCCESS;
      return ErrorCode::SUCCESS;
    }
    }
    default:
    default:
@@ -168,9 +191,12 @@ ErrorCode LinkLayerController::LeApcfSetFilteringParameters(
        return ErrorCode::UNKNOWN_CONNECTION;
        return ErrorCode::UNKNOWN_CONNECTION;
      }
      }


      apcf_scanner_.filters.erase(
          std::remove_if(
          std::remove_if(
          std::begin(apcf_scanner_.filters), std::end(apcf_scanner_.filters),
              std::begin(apcf_scanner_.filters),
          [&](auto it) { return it.filter_index == apcf_filter_index; });
              std::end(apcf_scanner_.filters),
              [&](auto it) { return it.filter_index == apcf_filter_index; }),
          std::end(apcf_scanner_.filters));


      apcf_scanner_.ClearFilterIndex(apcf_filter_index);
      apcf_scanner_.ClearFilterIndex(apcf_filter_index);
      *apcf_available_spaces += 1;
      *apcf_available_spaces += 1;