Loading system/gd/btaa/linux_generic/cmd_evt_classification.cc +5 −5 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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: Loading Loading @@ -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: Loading system/gd/hci/controller.cc +8 −7 Original line number Diff line number Diff line Loading @@ -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()) { Loading Loading @@ -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) Loading @@ -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) Loading system/gd/hci/controller_test.cc +1 −1 Original line number Diff line number Diff line Loading @@ -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) { Loading system/gd/hci/hci_packets.pdl +43 −40 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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, Loading Loading @@ -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, Loading @@ -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, Loading Loading @@ -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) Loading @@ -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, } Loading @@ -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) { Loading Loading @@ -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) { Loading @@ -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) { Loading @@ -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, } Loading Loading @@ -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, } Loading Loading @@ -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[], } Loading system/gd/hci/le_advertising_manager.cc +5 −3 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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 Loading
system/gd/btaa/linux_generic/cmd_evt_classification.cc +5 −5 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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: Loading Loading @@ -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: Loading
system/gd/hci/controller.cc +8 −7 Original line number Diff line number Diff line Loading @@ -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()) { Loading Loading @@ -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) Loading @@ -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) Loading
system/gd/hci/controller_test.cc +1 −1 Original line number Diff line number Diff line Loading @@ -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) { Loading
system/gd/hci/hci_packets.pdl +43 −40 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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, Loading Loading @@ -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, Loading @@ -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, Loading Loading @@ -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) Loading @@ -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, } Loading @@ -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) { Loading Loading @@ -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) { Loading @@ -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) { Loading @@ -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, } Loading Loading @@ -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, } Loading Loading @@ -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[], } Loading
system/gd/hci/le_advertising_manager.cc +5 −3 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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