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

Commit 378252e2 authored by Henri Chataing's avatar Henri Chataing Committed by Automerger Merge Worker
Browse files

Merge "gd: Modify hci_packets.pdl for periodic advertising" am: 9362b27a am:...

Merge "gd: Modify hci_packets.pdl for periodic advertising" am: 9362b27a am: 3a572f4b am: 75349bca am: 0f4eb375

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



Change-Id: I968d5476ab5426e8dd9c3ae53650d1fe2f2b76cb
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents f6508676 0f4eb375
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -257,8 +257,8 @@ CmdEvtActivityClassification lookup_cmd(hci::OpCode opcode) {
    case hci::OpCode::LE_SET_SCAN_ENABLE:
    case hci::OpCode::LE_SET_DEFAULT_PERIODIC_ADVERTISING_SYNC_TRANSFER_PARAMETERS:
    case hci::OpCode::LE_SET_PERIODIC_ADVERTISING_RECEIVE_ENABLE:
    case hci::OpCode::LE_CLEAR_PERIODIC_ADVERTISING_LIST:
    case hci::OpCode::LE_READ_PERIODIC_ADVERTISING_LIST_SIZE:
    case hci::OpCode::LE_CLEAR_PERIODIC_ADVERTISER_LIST:
    case hci::OpCode::LE_READ_PERIODIC_ADVERTISER_LIST_SIZE:
    case hci::OpCode::LE_PERIODIC_ADVERTISING_TERMINATE_SYNC:
      classification = {.activity = Activity::SCAN, .connection_handle_pos = 0, .address_pos = 0};
      break;
@@ -274,7 +274,7 @@ CmdEvtActivityClassification lookup_cmd(hci::OpCode opcode) {
    case hci::OpCode::LE_READ_NUMBER_OF_SUPPORTED_ADVERTISING_SETS:
    case hci::OpCode::LE_REMOVE_ADVERTISING_SET:
    case hci::OpCode::LE_CLEAR_ADVERTISING_SETS:
    case hci::OpCode::LE_SET_PERIODIC_ADVERTISING_PARAM:
    case hci::OpCode::LE_SET_PERIODIC_ADVERTISING_PARAMETERS:
    case hci::OpCode::LE_SET_PERIODIC_ADVERTISING_DATA:
    case hci::OpCode::LE_SET_PERIODIC_ADVERTISING_ENABLE:
    case hci::OpCode::LE_SET_ADVERTISING_SET_RANDOM_ADDRESS:
@@ -310,8 +310,8 @@ CmdEvtActivityClassification lookup_cmd(hci::OpCode opcode) {
    case hci::OpCode::LE_PERIODIC_ADVERTISING_CREATE_SYNC:
      classification = {.activity = Activity::SCAN, .connection_handle_pos = 0, .address_pos = 6};
      break;
    case hci::OpCode::LE_ADD_DEVICE_TO_PERIODIC_ADVERTISING_LIST:
    case hci::OpCode::LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISING_LIST:
    case hci::OpCode::LE_ADD_DEVICE_TO_PERIODIC_ADVERTISER_LIST:
    case hci::OpCode::LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISER_LIST:
      classification = {.activity = Activity::SCAN, .connection_handle_pos = 0, .address_pos = 4};
      break;
    case hci::OpCode::LE_PERIODIC_ADVERTISING_SYNC_TRANSFER:
+8 −7
Original line number Diff line number Diff line
@@ -156,12 +156,13 @@ struct Controller::impl {
      le_number_supported_advertising_sets_ = 1;
    }

    if (is_supported(OpCode::LE_READ_PERIODIC_ADVERTISING_LIST_SIZE) && module_.SupportsBlePeriodicAdvertising()) {
    if (is_supported(OpCode::LE_READ_PERIODIC_ADVERTISER_LIST_SIZE) &&
        module_.SupportsBlePeriodicAdvertising()) {
      hci_->EnqueueCommand(
          LeReadPeriodicAdvertiserListSizeBuilder::Create(),
          handler->BindOnceOn(this, &Controller::impl::le_read_periodic_advertiser_list_size_handler));
    } else {
      LOG_INFO("LE_READ_PERIODIC_ADVERTISING_LIST_SIZE not supported, defaulting to 0");
      LOG_INFO("LE_READ_PERIODIC_ADVERTISER_LIST_SIZE not supported, defaulting to 0");
      le_periodic_advertiser_list_size_ = 0;
    }
    if (is_supported(OpCode::LE_SET_HOST_FEATURE) && module_.SupportsBleConnectedIsochronousStreamCentral()) {
@@ -912,7 +913,7 @@ struct Controller::impl {
      OP_CODE_MAPPING(LE_READ_NUMBER_OF_SUPPORTED_ADVERTISING_SETS)
      OP_CODE_MAPPING(LE_REMOVE_ADVERTISING_SET)
      OP_CODE_MAPPING(LE_CLEAR_ADVERTISING_SETS)
      OP_CODE_MAPPING(LE_SET_PERIODIC_ADVERTISING_PARAM)
      OP_CODE_MAPPING(LE_SET_PERIODIC_ADVERTISING_PARAMETERS)
      OP_CODE_MAPPING(LE_SET_PERIODIC_ADVERTISING_DATA)
      OP_CODE_MAPPING(LE_SET_PERIODIC_ADVERTISING_ENABLE)
      OP_CODE_MAPPING(LE_SET_EXTENDED_SCAN_PARAMETERS)
@@ -921,10 +922,10 @@ struct Controller::impl {
      OP_CODE_MAPPING(LE_PERIODIC_ADVERTISING_CREATE_SYNC)
      OP_CODE_MAPPING(LE_PERIODIC_ADVERTISING_CREATE_SYNC_CANCEL)
      OP_CODE_MAPPING(LE_PERIODIC_ADVERTISING_TERMINATE_SYNC)
      OP_CODE_MAPPING(LE_ADD_DEVICE_TO_PERIODIC_ADVERTISING_LIST)
      OP_CODE_MAPPING(LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISING_LIST)
      OP_CODE_MAPPING(LE_CLEAR_PERIODIC_ADVERTISING_LIST)
      OP_CODE_MAPPING(LE_READ_PERIODIC_ADVERTISING_LIST_SIZE)
      OP_CODE_MAPPING(LE_ADD_DEVICE_TO_PERIODIC_ADVERTISER_LIST)
      OP_CODE_MAPPING(LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISER_LIST)
      OP_CODE_MAPPING(LE_CLEAR_PERIODIC_ADVERTISER_LIST)
      OP_CODE_MAPPING(LE_READ_PERIODIC_ADVERTISER_LIST_SIZE)
      OP_CODE_MAPPING(LE_READ_TRANSMIT_POWER)
      OP_CODE_MAPPING(LE_READ_RF_PATH_COMPENSATION_POWER)
      OP_CODE_MAPPING(LE_WRITE_RF_PATH_COMPENSATION_POWER)
+1 −1
Original line number Diff line number Diff line
@@ -436,7 +436,7 @@ TEST_F(ControllerTest, is_supported_test) {
  ASSERT_TRUE(controller_->IsSupported(OpCode::ACCEPT_CONNECTION_REQUEST));
  ASSERT_FALSE(controller_->IsSupported(OpCode::LE_REMOVE_ADVERTISING_SET));
  ASSERT_FALSE(controller_->IsSupported(OpCode::LE_CLEAR_ADVERTISING_SETS));
  ASSERT_FALSE(controller_->IsSupported(OpCode::LE_SET_PERIODIC_ADVERTISING_PARAM));
  ASSERT_FALSE(controller_->IsSupported(OpCode::LE_SET_PERIODIC_ADVERTISING_PARAMETERS));
}

TEST_F(Controller055Test, feature_spec_version_055_test) {
+43 −40
Original line number Diff line number Diff line
@@ -362,7 +362,7 @@ enum OpCode : 16 {
  LE_READ_NUMBER_OF_SUPPORTED_ADVERTISING_SETS = 0x203B,
  LE_REMOVE_ADVERTISING_SET = 0x203C,
  LE_CLEAR_ADVERTISING_SETS = 0x203D,
  LE_SET_PERIODIC_ADVERTISING_PARAM = 0x203E,
  LE_SET_PERIODIC_ADVERTISING_PARAMETERS = 0x203E,
  LE_SET_PERIODIC_ADVERTISING_DATA = 0x203F,
  LE_SET_PERIODIC_ADVERTISING_ENABLE = 0x2040,
  LE_SET_EXTENDED_SCAN_PARAMETERS = 0x2041,
@@ -371,10 +371,10 @@ enum OpCode : 16 {
  LE_PERIODIC_ADVERTISING_CREATE_SYNC = 0x2044,
  LE_PERIODIC_ADVERTISING_CREATE_SYNC_CANCEL = 0x2045,
  LE_PERIODIC_ADVERTISING_TERMINATE_SYNC = 0x2046,
  LE_ADD_DEVICE_TO_PERIODIC_ADVERTISING_LIST = 0x2047,
  LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISING_LIST = 0x2048,
  LE_CLEAR_PERIODIC_ADVERTISING_LIST = 0x2049,
  LE_READ_PERIODIC_ADVERTISING_LIST_SIZE = 0x204A,
  LE_ADD_DEVICE_TO_PERIODIC_ADVERTISER_LIST = 0x2047,
  LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISER_LIST = 0x2048,
  LE_CLEAR_PERIODIC_ADVERTISER_LIST = 0x2049,
  LE_READ_PERIODIC_ADVERTISER_LIST_SIZE = 0x204A,
  LE_READ_TRANSMIT_POWER = 0x204B,
  LE_READ_RF_PATH_COMPENSATION_POWER = 0x204C,
  LE_WRITE_RF_PATH_COMPENSATION_POWER = 0x204D,
@@ -678,7 +678,7 @@ enum OpCodeIndex : 16 {
  LE_READ_NUMBER_OF_SUPPORTED_ADVERTISING_SETS = 367,
  LE_REMOVE_ADVERTISING_SET = 370,
  LE_CLEAR_ADVERTISING_SETS = 371,
  LE_SET_PERIODIC_ADVERTISING_PARAM = 372,
  LE_SET_PERIODIC_ADVERTISING_PARAMETERS = 372,
  LE_SET_PERIODIC_ADVERTISING_DATA = 373,
  LE_SET_PERIODIC_ADVERTISING_ENABLE = 374,
  LE_SET_EXTENDED_SCAN_PARAMETERS = 375,
@@ -687,10 +687,10 @@ enum OpCodeIndex : 16 {
  LE_PERIODIC_ADVERTISING_CREATE_SYNC = 380,
  LE_PERIODIC_ADVERTISING_CREATE_SYNC_CANCEL = 381,
  LE_PERIODIC_ADVERTISING_TERMINATE_SYNC = 382,
  LE_ADD_DEVICE_TO_PERIODIC_ADVERTISING_LIST = 383,
  LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISING_LIST = 384,
  LE_CLEAR_PERIODIC_ADVERTISING_LIST = 385,
  LE_READ_PERIODIC_ADVERTISING_LIST_SIZE = 386,
  LE_ADD_DEVICE_TO_PERIODIC_ADVERTISER_LIST = 383,
  LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISER_LIST = 384,
  LE_CLEAR_PERIODIC_ADVERTISER_LIST = 385,
  LE_READ_PERIODIC_ADVERTISER_LIST_SIZE = 386,
  LE_READ_TRANSMIT_POWER = 387,
  LE_READ_RF_PATH_COMPENSATION_POWER = 390,
  LE_WRITE_RF_PATH_COMPENSATION_POWER = 391,
@@ -4074,7 +4074,7 @@ packet LeClearAdvertisingSetsComplete : CommandComplete (command_op_code = LE_CL
  status : ErrorCode,
}

packet LeSetPeriodicAdvertisingParam : LeAdvertisingCommand (op_code = LE_SET_PERIODIC_ADVERTISING_PARAM) {
packet LeSetPeriodicAdvertisingParameters : LeAdvertisingCommand (op_code = LE_SET_PERIODIC_ADVERTISING_PARAMETERS) {
  advertising_handle : 8,
  periodic_advertising_interval_min : 16, // 0x006 to 0xFFFF (7.5 ms to 82s)
  periodic_advertising_interval_max : 16, // 0x006 to 0xFFFF (7.5 ms to 82s)
@@ -4083,7 +4083,7 @@ packet LeSetPeriodicAdvertisingParam : LeAdvertisingCommand (op_code = LE_SET_PE
  _reserved_ : 9,
}

packet LeSetPeriodicAdvertisingParamComplete : CommandComplete (command_op_code = LE_SET_PERIODIC_ADVERTISING_PARAM) {
packet LeSetPeriodicAdvertisingParametersComplete : CommandComplete (command_op_code = LE_SET_PERIODIC_ADVERTISING_PARAMETERS) {
  status : ErrorCode,
}

@@ -4091,8 +4091,16 @@ packet LeSetPeriodicAdvertisingData : LeAdvertisingCommand (op_code = LE_SET_PER
  advertising_handle : 8,
  operation : Operation,
  _reserved_ : 5,
  _size_(scan_response_data) : 8,
  scan_response_data : GapData[],
  _size_(advertising_data) : 8,
  advertising_data : GapData[],
}

packet LeSetPeriodicAdvertisingDataRaw : LeAdvertisingCommand (op_code = LE_SET_PERIODIC_ADVERTISING_DATA) {
  advertising_handle : 8,
  operation : Operation,
  _reserved_ : 5,
  _size_(advertising_data) : 8,
  advertising_data : 8[],
}

packet LeSetPeriodicAdvertisingDataComplete : CommandComplete (command_op_code = LE_SET_PERIODIC_ADVERTISING_DATA) {
@@ -4197,15 +4205,16 @@ enum PeriodicSyncCteType : 8 {
  AVOID_NO_CONSTANT_TONE_EXTENSION = 0x10,
}

enum PeriodicAdvertisingOptions : 8 {
  USE_PERIODIC_ADVERTISER_LIST_SELECT_ADVERTISER = 0x01,
  ENABLE_REPORTING = 0x02,
  ENABLE_DUPLICATE_FILTERING = 0x04,
struct PeriodicAdvertisingOptions {
  use_periodic_advertiser_list: 1,
  disable_reporting: 1,
  enable_duplicate_filtering: 1,
  _reserved_: 5,
}

enum AdvertisingAddressType : 8 {
  PUBLIC_ADDRESS = 0x00,
  RANDOM_ADDRESS = 0x01,
  PUBLIC_DEVICE_OR_IDENTITY_ADDRESS = 0x00,
  RANDOM_DEVICE_OR_IDENTITY_ADDRESS = 0x01,
}

packet LePeriodicAdvertisingCreateSync : LeScanningCommand (op_code = LE_PERIODIC_ADVERTISING_CREATE_SYNC) {
@@ -4215,7 +4224,7 @@ packet LePeriodicAdvertisingCreateSync : LeScanningCommand (op_code = LE_PERIODI
  advertiser_address : Address,
  skip : 16,
  sync_timeout : 16,
  sync_cte_type : PeriodicSyncCteType,
  sync_cte_type : 8,
}

packet LePeriodicAdvertisingCreateSyncStatus : CommandStatus (command_op_code = LE_PERIODIC_ADVERTISING_CREATE_SYNC) {
@@ -4237,38 +4246,37 @@ packet LePeriodicAdvertisingTerminateSyncComplete : CommandComplete (command_op_
  status : ErrorCode,
}

packet LeAddDeviceToPeriodicAdvertisingList : LeScanningCommand (op_code = LE_ADD_DEVICE_TO_PERIODIC_ADVERTISING_LIST) {
  advertising_address_type : AdvertisingAddressType,
packet LeAddDeviceToPeriodicAdvertiserList : LeScanningCommand (op_code = LE_ADD_DEVICE_TO_PERIODIC_ADVERTISER_LIST) {
  advertiser_address_type : AdvertisingAddressType,
  advertiser_address : Address,
  advertising_sid : 4,
  _reserved_ : 4,
  advertising_sid : 8,
}

packet LeAddDeviceToPeriodicAdvertisingListComplete : CommandComplete (command_op_code = LE_ADD_DEVICE_TO_PERIODIC_ADVERTISING_LIST) {
packet LeAddDeviceToPeriodicAdvertiserListComplete : CommandComplete (command_op_code = LE_ADD_DEVICE_TO_PERIODIC_ADVERTISER_LIST) {
  status : ErrorCode,
}

packet LeRemoveDeviceFromPeriodicAdvertisingList : LeScanningCommand (op_code = LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISING_LIST) {
packet LeRemoveDeviceFromPeriodicAdvertiserList : LeScanningCommand (op_code = LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISER_LIST) {
  advertiser_address_type : AdvertisingAddressType,
  advertiser_address : Address,
  advertising_sid : 8,
}

packet LeRemoveDeviceFromPeriodicAdvertisingListComplete : CommandComplete (command_op_code = LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISING_LIST) {
packet LeRemoveDeviceFromPeriodicAdvertiserListComplete : CommandComplete (command_op_code = LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISER_LIST) {
  status : ErrorCode,
}

packet LeClearPeriodicAdvertisingList : LeScanningCommand (op_code = LE_CLEAR_PERIODIC_ADVERTISING_LIST) {
packet LeClearPeriodicAdvertiserList : LeScanningCommand (op_code = LE_CLEAR_PERIODIC_ADVERTISER_LIST) {
}

packet LeClearPeriodicAdvertisingListComplete : CommandComplete (command_op_code = LE_CLEAR_PERIODIC_ADVERTISING_LIST) {
packet LeClearPeriodicAdvertiserListComplete : CommandComplete (command_op_code = LE_CLEAR_PERIODIC_ADVERTISER_LIST) {
  status : ErrorCode,
}

packet LeReadPeriodicAdvertiserListSize : Command (op_code = LE_READ_PERIODIC_ADVERTISING_LIST_SIZE) {
packet LeReadPeriodicAdvertiserListSize : Command (op_code = LE_READ_PERIODIC_ADVERTISER_LIST_SIZE) {
}

packet LeReadPeriodicAdvertiserListSizeComplete : CommandComplete (command_op_code = LE_READ_PERIODIC_ADVERTISING_LIST_SIZE) {
packet LeReadPeriodicAdvertiserListSizeComplete : CommandComplete (command_op_code = LE_READ_PERIODIC_ADVERTISER_LIST_SIZE) {
  status : ErrorCode,
  periodic_advertiser_list_size : 8,
}
@@ -4972,7 +4980,7 @@ packet LeBatchScanSetScanParameters : LeBatchScan (batch_scan_opcode = SET_SCAN_
  _reserved_ : 6,
  duty_cycle_scan_window_slots : 32,
  duty_cycle_scan_interval_slots : 32,
  own_address_type : AdvertisingAddressType,
  own_address_type : PeerAddressType,
  batch_scan_discard_rule : BatchScanDiscardRule,
}

@@ -5984,19 +5992,14 @@ packet LePeriodicAdvertisingSyncEstablished : LeMetaEvent (subevent_code = PERIO
  advertiser_clock_accuracy : ClockAccuracy,
}

enum PeriodicAdvertisingDataStatus : 8 {
  DATA_COMPLETE = 0,
  DATA_INCOMPLETE_MORE_TO_COME = 1,
  DATA_INCOMPLETE_TRUNCATED_NO_MORE_DATA = 2,
}

packet LePeriodicAdvertisingReport : LeMetaEvent (subevent_code = PERIODIC_ADVERTISING_REPORT) {
  sync_handle : 12,
  _reserved_ : 4,
  tx_power : 8,
  rssi : 8,
  cte_type : CteType,
  data_status : PeriodicAdvertisingDataStatus,
  data_status : DataStatus,
  _reserved_: 6,
  _size_(data) : 8,
  data : 8[],
}
+5 −3
Original line number Diff line number Diff line
@@ -1023,13 +1023,15 @@ struct LeAdvertisingManager::impl : public bluetooth::hci::LeAddressManagerCallb
                               PeriodicAdvertisingParameters::AdvertisingProperty::INCLUDE_TX_POWER;

    le_advertising_interface_->EnqueueCommand(
        hci::LeSetPeriodicAdvertisingParamBuilder::Create(
        hci::LeSetPeriodicAdvertisingParametersBuilder::Create(
            advertiser_id,
            periodic_advertising_parameters.min_interval,
            periodic_advertising_parameters.max_interval,
            include_tx_power),
        module_handler_->BindOnceOn(
            this, &impl::check_status_with_id<LeSetPeriodicAdvertisingParamCompleteView>, advertiser_id));
            this,
            &impl::check_status_with_id<LeSetPeriodicAdvertisingParametersCompleteView>,
            advertiser_id));
  }

  void set_periodic_data(AdvertiserId advertiser_id, std::vector<GapData> data) {
@@ -1461,7 +1463,7 @@ struct LeAdvertisingManager::impl : public bluetooth::hci::LeAddressManagerCallb
      case OpCode::LE_SET_EXTENDED_SCAN_RESPONSE_DATA:
        advertising_callbacks_->OnScanResponseDataSet(id, advertising_status);
        break;
      case OpCode::LE_SET_PERIODIC_ADVERTISING_PARAM:
      case OpCode::LE_SET_PERIODIC_ADVERTISING_PARAMETERS:
        advertising_callbacks_->OnPeriodicAdvertisingParametersUpdated(id, advertising_status);
        break;
      case OpCode::LE_SET_PERIODIC_ADVERTISING_DATA:
Loading