blob: b3ce59c40bf0ce16364d365bc4b551a0f7016fc8 [file] [log] [blame]
// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "src/connectivity/bluetooth/core/bt-host/gap/android_vendor_capabilities.h"
#include <endian.h>
#include "src/connectivity/bluetooth/core/bt-host/common/log.h"
#include "src/connectivity/bluetooth/core/bt-host/hci-spec/constants.h"
namespace bt::gap {
void AndroidVendorCapabilities::Initialize(
const hci_android::LEGetVendorCapabilitiesReturnParams& c) {
initialized_ = false;
if (c.status != hci_spec::StatusCode::kSuccess) {
bt_log(INFO, "android_vendor_extensions", "refusing to parse non-success vendor capabilities");
return;
}
max_simultaneous_advertisement_ = c.max_advt_instances;
supports_offloaded_rpa_ = static_cast<bool>(c.offloaded_rpa);
scan_results_storage_bytes_ = letoh16(c.total_scan_results_storage);
irk_list_size_ = c.max_irk_list_size;
supports_filtering_ = static_cast<bool>(c.filtering_support);
max_filters_ = c.max_filter;
supports_activity_energy_info_ = static_cast<bool>(c.activity_energy_info_support);
version_minor_ = c.version_supported_minor;
version_major_ = c.version_supported_major;
max_advertisers_tracked_ = letoh16(c.total_num_of_advt_tracked);
supports_extended_scan_ = static_cast<bool>(c.extended_scan_support);
supports_debug_logging_ = static_cast<bool>(c.debug_logging_supported);
supports_offloading_le_address_generation_ =
static_cast<bool>(c.le_address_generation_offloading_support);
a2dp_source_offload_capability_mask_ = letoh32(c.a2dp_source_offload_capability_mask);
supports_bluetooth_quality_report_ = static_cast<bool>(c.bluetooth_quality_report_support);
supports_dynamic_audio_buffer_ = letoh32(c.dynamic_audio_buffer_support);
initialized_ = true;
}
} // namespace bt::gap