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

Commit 0ad20a5e authored by Myles Watson's avatar Myles Watson Committed by Automerger Merge Worker
Browse files

Merge changes Iaf14090f,Ieff62e1c,Ia09c3ed5,I9b7ef9b4 am: ea421097 am: 3668e624

Original change: https://android-review.googlesource.com/c/platform/system/bt/+/1840413

Change-Id: Ief7ff67eeb50d30908534c3d78ebe0aeb702926a
parents c182ad6b 3668e624
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -394,6 +394,9 @@ void BTA_dm_on_hw_on() {
   * when capabilities are read. If they are not available, initialize
   * advertising here */
  btm_ble_adv_init();
  /* Set controller features even if vendor support is not included */
  if (bta_dm_cb.p_sec_cback)
    bta_dm_cb.p_sec_cback(BTA_DM_LE_FEATURES_READ, NULL);
#endif

  /* Earlier, we used to invoke BTM_ReadLocalAddr which was just copying the
+23 −0
Original line number Diff line number Diff line
@@ -598,6 +598,29 @@ void btif_get_adapter_property(bt_property_type_t type) {
        cmn_vsc_cb.extended_scan_support > 0;
    local_le_features.debug_logging_supported =
        cmn_vsc_cb.debug_logging_supported > 0;
    const controller_t* controller = controller_get_interface();

    if (controller->supports_ble_extended_advertising()) {
      local_le_features.max_adv_instance =
          controller->get_ble_number_of_supported_advertising_sets();
    }
    local_le_features.le_2m_phy_supported = controller->supports_ble_2m_phy();
    local_le_features.le_coded_phy_supported =
        controller->supports_ble_coded_phy();
    local_le_features.le_extended_advertising_supported =
        controller->supports_ble_extended_advertising();
    local_le_features.le_periodic_advertising_supported =
        controller->supports_ble_periodic_advertising();
    local_le_features.le_maximum_advertising_data_length =
        controller->get_ble_maximum_advertising_data_length();

    local_le_features.dynamic_audio_buffer_supported =
        cmn_vsc_cb.dynamic_audio_buffer_support;

    local_le_features.le_periodic_advertising_sync_transfer_sender_supported =
        controller->supports_ble_periodic_advertising_sync_transfer_sender();
    local_le_features.le_connected_isochronous_stream_central_supported =
        controller->supports_ble_connected_isochronous_stream_central();
    memcpy(prop.val, &local_le_features, prop.len);
  } else if (prop.type == BT_PROPERTY_DYNAMIC_AUDIO_BUFFER) {
    tBTM_BLE_VSC_CB cmn_vsc_cb;
+2 −53
Original line number Diff line number Diff line
@@ -1749,60 +1749,9 @@ static void btif_dm_upstreams_evt(uint16_t event, char* p_param) {
      btif_dm_ble_auth_cmpl_evt(&p_data->auth_cmpl);
      break;

    case BTA_DM_LE_FEATURES_READ: {
      tBTM_BLE_VSC_CB cmn_vsc_cb;
      bt_local_le_features_t local_le_features;
      bt_property_t prop;
      prop.type = BT_PROPERTY_LOCAL_LE_FEATURES;
      prop.val = (void*)&local_le_features;
      prop.len = sizeof(bt_local_le_features_t);

      /* LE features are not stored in storage. Should be retrived from stack */
      BTM_BleGetVendorCapabilities(&cmn_vsc_cb);
      local_le_features.local_privacy_enabled = BTM_BleLocalPrivacyEnabled();

      if (cmn_vsc_cb.filter_support == 1)
        local_le_features.max_adv_filter_supported = cmn_vsc_cb.max_filter;
      else
        local_le_features.max_adv_filter_supported = 0;
      local_le_features.max_adv_instance = cmn_vsc_cb.adv_inst_max;
      local_le_features.max_irk_list_size = cmn_vsc_cb.max_irk_list_sz;
      local_le_features.rpa_offload_supported = cmn_vsc_cb.rpa_offloading;
      local_le_features.activity_energy_info_supported =
          cmn_vsc_cb.energy_support;
      local_le_features.scan_result_storage_size =
          cmn_vsc_cb.tot_scan_results_strg;
      local_le_features.version_supported = cmn_vsc_cb.version_supported;
      local_le_features.total_trackable_advertisers =
          cmn_vsc_cb.total_trackable_advertisers;

      local_le_features.extended_scan_support =
          cmn_vsc_cb.extended_scan_support > 0;
      local_le_features.debug_logging_supported =
          cmn_vsc_cb.debug_logging_supported > 0;

      const controller_t* controller = controller_get_interface();

      local_le_features.le_2m_phy_supported = controller->supports_ble_2m_phy();
      local_le_features.le_coded_phy_supported =
          controller->supports_ble_coded_phy();
      local_le_features.le_extended_advertising_supported =
          controller->supports_ble_extended_advertising();
      local_le_features.le_periodic_advertising_supported =
          controller->supports_ble_periodic_advertising();
      local_le_features.le_maximum_advertising_data_length =
          controller->get_ble_maxium_advertising_data_length();

      local_le_features.dynamic_audio_buffer_supported =
          cmn_vsc_cb.dynamic_audio_buffer_support;

      local_le_features.le_periodic_advertising_sync_transfer_sender_supported =
          controller->supports_ble_periodic_advertising_sync_transfer_sender();
      local_le_features.le_connected_isochronous_stream_central_supported =
          controller->supports_ble_connected_isochronous_stream_central();
      invoke_adapter_properties_cb(BT_STATUS_SUCCESS, 1, &prop);
    case BTA_DM_LE_FEATURES_READ:
      btif_get_adapter_property(BT_PROPERTY_LOCAL_LE_FEATURES);
      break;
    }

    default:
      BTIF_TRACE_WARNING("%s: unhandled event (%d)", __func__, event);
+1 −1
Original line number Diff line number Diff line
@@ -100,7 +100,7 @@ typedef struct controller_t {
  uint16_t (*get_ble_default_data_packet_length)(void);
  uint16_t (*get_ble_maximum_tx_data_length)(void);
  uint16_t (*get_ble_maximum_tx_time)(void);
  uint16_t (*get_ble_maxium_advertising_data_length)(void);
  uint16_t (*get_ble_maximum_advertising_data_length)(void);
  uint8_t (*get_ble_number_of_supported_advertising_sets)(void);
  uint8_t (*get_ble_periodic_advertiser_list_size)(void);

+6 −6
Original line number Diff line number Diff line
@@ -79,7 +79,7 @@ static uint16_t ble_supported_max_tx_time;
static uint16_t ble_supported_max_rx_octets;
static uint16_t ble_supported_max_rx_time;

static uint16_t ble_maxium_advertising_data_length;
static uint16_t ble_maximum_advertising_data_length;
static uint8_t ble_number_of_supported_advertising_sets;
static uint8_t ble_periodic_advertiser_list_size;
static uint8_t local_supported_codecs[MAX_LOCAL_SUPPORTED_CODECS_SIZE];
@@ -258,7 +258,7 @@ static future_t* start_up(void) {
      response = AWAIT_COMMAND(
          packet_factory->make_ble_read_maximum_advertising_data_length());
      packet_parser->parse_ble_read_maximum_advertising_data_length(
          response, &ble_maxium_advertising_data_length);
          response, &ble_maximum_advertising_data_length);

      response = AWAIT_COMMAND(
          packet_factory->make_ble_read_number_of_supported_advertising_sets());
@@ -266,7 +266,7 @@ static future_t* start_up(void) {
          response, &ble_number_of_supported_advertising_sets);
    } else {
      /* If LE Excended Advertising is not supported, use the default value */
      ble_maxium_advertising_data_length = 31;
      ble_maximum_advertising_data_length = 31;
    }

    if (HCI_LE_PERIODIC_ADVERTISING_SUPPORTED(features_ble.as_array)) {
@@ -666,10 +666,10 @@ static uint16_t get_ble_maximum_tx_time(void) {
  return ble_supported_max_tx_time;
}

static uint16_t get_ble_maxium_advertising_data_length(void) {
static uint16_t get_ble_maximum_advertising_data_length(void) {
  CHECK(readable);
  CHECK(ble_supported);
  return ble_maxium_advertising_data_length;
  return ble_maximum_advertising_data_length;
}

static uint8_t get_ble_number_of_supported_advertising_sets(void) {
@@ -801,7 +801,7 @@ static const controller_t interface = {
    get_ble_suggested_default_data_length,
    get_ble_maximum_tx_data_length,
    get_ble_maximum_tx_time,
    get_ble_maxium_advertising_data_length,
    get_ble_maximum_advertising_data_length,
    get_ble_number_of_supported_advertising_sets,
    get_ble_periodic_advertiser_list_size,

Loading