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

Commit 9d683794 authored by Henri Chataing's avatar Henri Chataing Committed by Gerrit Code Review
Browse files

Merge "RootCanal: Make PDL definitions for periodic advertising spec compliant"

parents a9e79798 9441d89d
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -285,7 +285,7 @@ std::vector<uint8_t> PcapFilter::FilterLeSetExtendedScanResponseData(
      ->SerializeToBytes();
}

// Replace the device names in the GAP entries of the periodic scan response
// Replace the device names in the GAP entries of the periodic advertising
// data.
std::vector<uint8_t> PcapFilter::FilterLeSetPeriodicAdvertisingData(
    bluetooth::hci::CommandView& command) {
@@ -293,11 +293,11 @@ std::vector<uint8_t> PcapFilter::FilterLeSetPeriodicAdvertisingData(
      LeAdvertisingCommandView::Create(command));
  ASSERT(parameters.IsValid());

  std::vector<GapData> scan_response_data = parameters.GetScanResponseData();
  FilterGapData(scan_response_data);
  std::vector<GapData> advertising_data = parameters.GetAdvertisingData();
  FilterGapData(advertising_data);
  return LeSetPeriodicAdvertisingDataBuilder::Create(
             parameters.GetAdvertisingHandle(), parameters.GetOperation(),
             scan_response_data)
             advertising_data)
      ->SerializeToBytes();
}

+10 −11
Original line number Diff line number Diff line
@@ -341,7 +341,7 @@ static std::array<uint8_t, 64> SupportedCommands() {
      OpCodeIndex::LE_READ_NUMBER_OF_SUPPORTED_ADVERTISING_SETS,
      OpCodeIndex::LE_REMOVE_ADVERTISING_SET,
      OpCodeIndex::LE_CLEAR_ADVERTISING_SETS,
      // OpCodeIndex::LE_SET_PERIODIC_ADVERTISING_PARAM,
      // OpCodeIndex::LE_SET_PERIODIC_ADVERTISING_PARAMETERS,
      // OpCodeIndex::LE_SET_PERIODIC_ADVERTISING_DATA,
      // OpCodeIndex::LE_SET_PERIODIC_ADVERTISING_ENABLE,
      OpCodeIndex::LE_SET_EXTENDED_SCAN_PARAMETERS,
@@ -350,10 +350,10 @@ static std::array<uint8_t, 64> SupportedCommands() {
      // OpCodeIndex::LE_PERIODIC_ADVERTISING_CREATE_SYNC,
      // OpCodeIndex::LE_PERIODIC_ADVERTISING_CREATE_SYNC_CANCEL,
      // OpCodeIndex::LE_PERIODIC_ADVERTISING_TERMINATE_SYNC,
      // OpCodeIndex::LE_ADD_DEVICE_TO_PERIODIC_ADVERTISING_LIST,
      // OpCodeIndex::LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISING_LIST,
      // OpCodeIndex::LE_CLEAR_PERIODIC_ADVERTISING_LIST,
      // OpCodeIndex::LE_READ_PERIODIC_ADVERTISING_LIST_SIZE,
      // OpCodeIndex::LE_ADD_DEVICE_TO_PERIODIC_ADVERTISER_LIST,
      // OpCodeIndex::LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISER_LIST,
      // OpCodeIndex::LE_CLEAR_PERIODIC_ADVERTISER_LIST,
      // OpCodeIndex::LE_READ_PERIODIC_ADVERTISER_LIST_SIZE,
      // OpCodeIndex::LE_READ_TRANSMIT_POWER,
      OpCodeIndex::LE_READ_RF_PATH_COMPENSATION_POWER,
      OpCodeIndex::LE_WRITE_RF_PATH_COMPENSATION_POWER,
@@ -1647,14 +1647,14 @@ bool ControllerProperties::CheckSupportedCommands() const {
  check_command_(IO_CAPABILITY_REQUEST_REPLY, mandatory, excluded);
  check_command_(LE_ACCEPT_CIS_REQUEST, excluded, c40);
  check_command_(LE_ADD_DEVICE_TO_FILTER_ACCEPT_LIST, excluded, mandatory);
  check_command_(LE_ADD_DEVICE_TO_PERIODIC_ADVERTISING_LIST, excluded, c21);
  check_command_(LE_ADD_DEVICE_TO_PERIODIC_ADVERTISER_LIST, excluded, c21);
  check_command_(LE_ADD_DEVICE_TO_RESOLVING_LIST, excluded, c9);
  // Table 3.1: Alphabetical list of commands and events (Sheet 9 of 49)
  check_command_(LE_BIG_CREATE_SYNC, excluded, c42);
  check_command_(LE_BIG_TERMINATE_SYNC, excluded, c42);
  check_command_(LE_CLEAR_ADVERTISING_SETS, excluded, c17);
  check_command_(LE_CLEAR_FILTER_ACCEPT_LIST, excluded, mandatory);
  check_command_(LE_CLEAR_PERIODIC_ADVERTISING_LIST, excluded, c21);
  check_command_(LE_CLEAR_PERIODIC_ADVERTISER_LIST, excluded, c21);
  check_command_(LE_CLEAR_RESOLVING_LIST, excluded, c9);
  // Table 3.1: Alphabetical list of commands and events (Sheet 10 of 49)
  check_command_(LE_CONNECTION_CTE_REQUEST_ENABLE, excluded, c25);
@@ -1704,7 +1704,7 @@ bool ControllerProperties::CheckSupportedCommands() const {
  check_command_(LE_READ_MAXIMUM_DATA_LENGTH, excluded, c8);
  check_command_(LE_READ_NUMBER_OF_SUPPORTED_ADVERTISING_SETS, excluded, c17);
  check_command_(LE_READ_PEER_RESOLVABLE_ADDRESS, excluded, c10);
  check_command_(LE_READ_PERIODIC_ADVERTISING_LIST_SIZE, excluded, c21);
  check_command_(LE_READ_PERIODIC_ADVERTISER_LIST_SIZE, excluded, c21);
  check_command_(LE_READ_PHY, excluded, c11);
  check_command_(LE_READ_REMOTE_FEATURES, excluded, c3);
  // Table 3.1: Alphabetical list of commands and events (Sheet 17 of 49)
@@ -1725,8 +1725,7 @@ bool ControllerProperties::CheckSupportedCommands() const {
  check_command_(LE_REMOVE_ADVERTISING_SET, excluded, c17);
  check_command_(LE_REMOVE_CIG, excluded, c39);
  check_command_(LE_REMOVE_DEVICE_FROM_FILTER_ACCEPT_LIST, excluded, mandatory);
  check_command_(LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISING_LIST, excluded,
                 c21);
  check_command_(LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISER_LIST, excluded, c21);
  check_command_(LE_REMOVE_DEVICE_FROM_RESOLVING_LIST, excluded, c9);
  // Table 3.1: Alphabetical list of commands and events (Sheet 19 of 49)
  check_command_(LE_REMOVE_ISO_DATA_PATH, excluded, c47);
@@ -1765,7 +1764,7 @@ bool ControllerProperties::CheckSupportedCommands() const {
  check_command_(LE_SET_PATH_LOSS_REPORTING_PARAMETERS, excluded, c52);
  check_command_(LE_SET_PERIODIC_ADVERTISING_DATA, excluded, c18);
  check_command_(LE_SET_PERIODIC_ADVERTISING_ENABLE, excluded, c18);
  check_command_(LE_SET_PERIODIC_ADVERTISING_PARAM, excluded, c18);
  check_command_(LE_SET_PERIODIC_ADVERTISING_PARAMETERS, excluded, c18);
  // Table 3.1: Alphabetical list of commands and events (Sheet 23 of 49)
  check_command_(LE_SET_PERIODIC_ADVERTISING_RECEIVE_ENABLE, excluded, c32);
  check_command_(LE_SET_PERIODIC_ADVERTISING_SYNC_TRANSFER_PARAMETERS, excluded,
+20 −20
Original line number Diff line number Diff line
@@ -3429,8 +3429,8 @@ const std::unordered_map<OpCode, OpCodeIndex>
         OpCodeIndex::LE_REMOVE_ADVERTISING_SET},
        {OpCode::LE_CLEAR_ADVERTISING_SETS,
         OpCodeIndex::LE_CLEAR_ADVERTISING_SETS},
        {OpCode::LE_SET_PERIODIC_ADVERTISING_PARAM,
         OpCodeIndex::LE_SET_PERIODIC_ADVERTISING_PARAM},
        {OpCode::LE_SET_PERIODIC_ADVERTISING_PARAMETERS,
         OpCodeIndex::LE_SET_PERIODIC_ADVERTISING_PARAMETERS},
        {OpCode::LE_SET_PERIODIC_ADVERTISING_DATA,
         OpCodeIndex::LE_SET_PERIODIC_ADVERTISING_DATA},
        {OpCode::LE_SET_PERIODIC_ADVERTISING_ENABLE,
@@ -3447,14 +3447,14 @@ const std::unordered_map<OpCode, OpCodeIndex>
         OpCodeIndex::LE_PERIODIC_ADVERTISING_CREATE_SYNC_CANCEL},
        {OpCode::LE_PERIODIC_ADVERTISING_TERMINATE_SYNC,
         OpCodeIndex::LE_PERIODIC_ADVERTISING_TERMINATE_SYNC},
        {OpCode::LE_ADD_DEVICE_TO_PERIODIC_ADVERTISING_LIST,
         OpCodeIndex::LE_ADD_DEVICE_TO_PERIODIC_ADVERTISING_LIST},
        {OpCode::LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISING_LIST,
         OpCodeIndex::LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISING_LIST},
        {OpCode::LE_CLEAR_PERIODIC_ADVERTISING_LIST,
         OpCodeIndex::LE_CLEAR_PERIODIC_ADVERTISING_LIST},
        {OpCode::LE_READ_PERIODIC_ADVERTISING_LIST_SIZE,
         OpCodeIndex::LE_READ_PERIODIC_ADVERTISING_LIST_SIZE},
        {OpCode::LE_ADD_DEVICE_TO_PERIODIC_ADVERTISER_LIST,
         OpCodeIndex::LE_ADD_DEVICE_TO_PERIODIC_ADVERTISER_LIST},
        {OpCode::LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISER_LIST,
         OpCodeIndex::LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISER_LIST},
        {OpCode::LE_CLEAR_PERIODIC_ADVERTISER_LIST,
         OpCodeIndex::LE_CLEAR_PERIODIC_ADVERTISER_LIST},
        {OpCode::LE_READ_PERIODIC_ADVERTISER_LIST_SIZE,
         OpCodeIndex::LE_READ_PERIODIC_ADVERTISER_LIST_SIZE},
        {OpCode::LE_READ_TRANSMIT_POWER, OpCodeIndex::LE_READ_TRANSMIT_POWER},
        {OpCode::LE_READ_RF_PATH_COMPENSATION_POWER,
         OpCodeIndex::LE_READ_RF_PATH_COMPENSATION_POWER},
@@ -3960,8 +3960,8 @@ const std::unordered_map<OpCode, DualModeController::CommandHandler>
         &DualModeController::LeRemoveAdvertisingSet},
        {OpCode::LE_CLEAR_ADVERTISING_SETS,
         &DualModeController::LeClearAdvertisingSets},
        //{OpCode::LE_SET_PERIODIC_ADVERTISING_PARAM,
        //&DualModeController::LeSetPeriodicAdvertisingParam},
        //{OpCode::LE_SET_PERIODIC_ADVERTISING_PARAMETERS,
        //&DualModeController::LeSetPeriodicAdvertisingParameters},
        //{OpCode::LE_SET_PERIODIC_ADVERTISING_DATA,
        //&DualModeController::LeSetPeriodicAdvertisingData},
        //{OpCode::LE_SET_PERIODIC_ADVERTISING_ENABLE,
@@ -3978,14 +3978,14 @@ const std::unordered_map<OpCode, DualModeController::CommandHandler>
        //&DualModeController::LePeriodicAdvertisingCreateSyncCancel},
        //{OpCode::LE_PERIODIC_ADVERTISING_TERMINATE_SYNC,
        //&DualModeController::LePeriodicAdvertisingTerminateSync},
        //{OpCode::LE_ADD_DEVICE_TO_PERIODIC_ADVERTISING_LIST,
        //&DualModeController::LeAddDeviceToPeriodicAdvertisingList},
        //{OpCode::LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISING_LIST,
        //&DualModeController::LeRemoveDeviceFromPeriodicAdvertisingList},
        //{OpCode::LE_CLEAR_PERIODIC_ADVERTISING_LIST,
        //&DualModeController::LeClearPeriodicAdvertisingList},
        //{OpCode::LE_READ_PERIODIC_ADVERTISING_LIST_SIZE,
        //&DualModeController::LeReadPeriodicAdvertisingListSize},
        //{OpCode::LE_ADD_DEVICE_TO_PERIODIC_ADVERTISER_LIST,
        //&DualModeController::LeAddDeviceToPeriodicAdvertiserList},
        //{OpCode::LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISER_LIST,
        //&DualModeController::LeRemoveDeviceFromPeriodicAdvertiserList},
        //{OpCode::LE_CLEAR_PERIODIC_ADVERTISER_LIST,
        //&DualModeController::LeClearPeriodicAdvertiserList},
        //{OpCode::LE_READ_PERIODIC_ADVERTISER_LIST_SIZE,
        //&DualModeController::LeReadPeriodicAdvertiserListSize},
        //{OpCode::LE_READ_TRANSMIT_POWER,
        //&DualModeController::LeReadTransmitPower},
        //{OpCode::LE_READ_RF_PATH_COMPENSATION_POWER,
+46 −43
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,
@@ -4040,7 +4040,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)
@@ -4049,7 +4049,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,
}

@@ -4057,8 +4057,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) {
@@ -4163,25 +4171,26 @@ 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,
enum AdvertiserAddressType : 8 {
  PUBLIC_DEVICE_OR_IDENTITY_ADDRESS = 0x00,
  RANDOM_DEVICE_OR_IDENTITY_ADDRESS = 0x01,
}

packet LePeriodicAdvertisingCreateSync : LeScanningCommand (op_code = LE_PERIODIC_ADVERTISING_CREATE_SYNC) {
  options : PeriodicAdvertisingOptions,
  advertising_sid : 8,
  advertiser_address_type : AdvertisingAddressType,
  advertiser_address_type : AdvertiserAddressType,
  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) {
@@ -4203,38 +4212,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 : AdvertiserAddressType,
  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) {
  advertiser_address_type : AdvertisingAddressType,
packet LeRemoveDeviceFromPeriodicAdvertiserList : LeScanningCommand (op_code = LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISER_LIST) {
  advertiser_address_type : AdvertiserAddressType,
  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,
}
@@ -4938,7 +4946,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,
}

@@ -5950,19 +5958,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[],
}