Loading tools/rootcanal/model/controller/dual_mode_controller.cc +4 −4 Original line number Original line Diff line number Diff line Loading @@ -42,8 +42,8 @@ std::string DualModeController::GetTypeString() const { } } void DualModeController::IncomingPacket( void DualModeController::IncomingPacket( model::packets::LinkLayerPacketView incoming) { model::packets::LinkLayerPacketView incoming, int8_t rssi) { link_layer_controller_.IncomingPacket(incoming); link_layer_controller_.IncomingPacket(incoming, rssi); } } void DualModeController::TimerTick() { link_layer_controller_.TimerTick(); } void DualModeController::TimerTick() { link_layer_controller_.TimerTick(); } Loading Loading @@ -83,8 +83,8 @@ DualModeController::DualModeController(const std::string& properties_filename, link_layer_controller_.RegisterRemoteChannel( link_layer_controller_.RegisterRemoteChannel( [this](std::shared_ptr<model::packets::LinkLayerPacketBuilder> packet, [this](std::shared_ptr<model::packets::LinkLayerPacketBuilder> packet, Phy::Type phy_type) { Phy::Type phy_type, int8_t tx_power) { this->SendLinkLayerPacket(packet, phy_type); this->SendLinkLayerPacket(packet, phy_type, tx_power); }); }); std::array<uint8_t, 64> supported_commands{0}; std::array<uint8_t, 64> supported_commands{0}; Loading tools/rootcanal/model/controller/dual_mode_controller.h +2 −2 Original line number Original line Diff line number Diff line Loading @@ -66,8 +66,8 @@ class DualModeController // Device methods. // Device methods. virtual std::string GetTypeString() const override; virtual std::string GetTypeString() const override; virtual void IncomingPacket( virtual void IncomingPacket(model::packets::LinkLayerPacketView incoming, model::packets::LinkLayerPacketView incoming) override; int8_t rssi) override; virtual void TimerTick() override; virtual void TimerTick() override; virtual void Close() override; virtual void Close() override; Loading tools/rootcanal/model/controller/dual_mode_controller_python3.cc +4 −5 Original line number Original line Diff line number Diff line Loading @@ -77,8 +77,7 @@ class BaseController : public DualModeController { virtual void SendLinkLayerPacket( virtual void SendLinkLayerPacket( std::shared_ptr<model::packets::LinkLayerPacketBuilder> packet, std::shared_ptr<model::packets::LinkLayerPacketBuilder> packet, Phy::Type phy_type_) override { Phy::Type /*phy_type*/, int8_t /*tx_power*/) override { (void)phy_type_; auto bytes = std::make_shared<std::vector<uint8_t>>(); auto bytes = std::make_shared<std::vector<uint8_t>>(); bluetooth::packet::BitInserter inserter(*bytes); bluetooth::packet::BitInserter inserter(*bytes); bytes->reserve(packet->size()); bytes->reserve(packet->size()); Loading Loading @@ -212,11 +211,11 @@ PYBIND11_MODULE(lib_rootcanal_python3, m) { } } }); }); // Implement method BaseController.receive_hci which // Implement method BaseController.send_ll which // injects LL packets into the controller as if sent over the air. // injects LL packets into the controller as if sent over the air. basic_controller.def( basic_controller.def( "send_ll", [](std::shared_ptr<rootcanal::BaseController> controller, "send_ll", [](std::shared_ptr<rootcanal::BaseController> controller, py::bytes data) { py::bytes data, int rssi) { std::string data_str = data; std::string data_str = data; std::shared_ptr<std::vector<uint8_t>> bytes = std::shared_ptr<std::vector<uint8_t>> bytes = std::make_shared<std::vector<uint8_t>>(data_str.begin(), std::make_shared<std::vector<uint8_t>>(data_str.begin(), Loading @@ -230,7 +229,7 @@ PYBIND11_MODULE(lib_rootcanal_python3, m) { std::cerr << "Dropping malformed LL packet" << std::endl; std::cerr << "Dropping malformed LL packet" << std::endl; return; return; } } controller->IncomingPacket(std::move(packet)); controller->IncomingPacket(std::move(packet), rssi); }); }); } } Loading tools/rootcanal/model/controller/le_advertiser.cc +9 −15 Original line number Original line Diff line number Diff line Loading @@ -1357,10 +1357,7 @@ void LinkLayerController::LeAdvertising() { break; break; } } SendLeLinkLayerPacketWithRssi( SendLeLinkLayerPacket( legacy_advertiser_.advertising_address.GetAddress(), legacy_advertiser_.target_address.GetAddress(), properties_.le_advertising_physical_channel_tx_power, model::packets::LeLegacyAdvertisingPduBuilder::Create( model::packets::LeLegacyAdvertisingPduBuilder::Create( legacy_advertiser_.advertising_address.GetAddress(), legacy_advertiser_.advertising_address.GetAddress(), legacy_advertiser_.target_address.GetAddress(), legacy_advertiser_.target_address.GetAddress(), Loading @@ -1370,7 +1367,8 @@ void LinkLayerController::LeAdvertising() { legacy_advertiser_.target_address.GetAddressType()), legacy_advertiser_.target_address.GetAddressType()), type, type, attach_advertising_data ? legacy_advertiser_.advertising_data attach_advertising_data ? legacy_advertiser_.advertising_data : std::vector<uint8_t>{})); : std::vector<uint8_t>{}), properties_.le_advertising_physical_channel_tx_power); } } for (auto& [_, advertiser] : extended_advertisers_) { for (auto& [_, advertiser] : extended_advertisers_) { Loading Loading @@ -1472,10 +1470,7 @@ void LinkLayerController::LeAdvertising() { break; break; } } SendLeLinkLayerPacketWithRssi( SendLeLinkLayerPacket( advertiser.advertising_address.GetAddress(), advertiser.target_address.GetAddress(), advertiser.advertising_tx_power, model::packets::LeLegacyAdvertisingPduBuilder::Create( model::packets::LeLegacyAdvertisingPduBuilder::Create( advertiser.advertising_address.GetAddress(), advertiser.advertising_address.GetAddress(), advertiser.target_address.GetAddress(), advertiser.target_address.GetAddress(), Loading @@ -1483,12 +1478,10 @@ void LinkLayerController::LeAdvertising() { advertiser.advertising_address.GetAddressType()), advertiser.advertising_address.GetAddressType()), static_cast<model::packets::AddressType>( static_cast<model::packets::AddressType>( advertiser.target_address.GetAddressType()), advertiser.target_address.GetAddressType()), type, advertiser.advertising_data)); type, advertiser.advertising_data), advertiser.advertising_tx_power); } else { } else { SendLeLinkLayerPacketWithRssi( SendLeLinkLayerPacket( advertiser.advertising_address.GetAddress(), advertiser.target_address.GetAddress(), advertiser.advertising_tx_power, model::packets::LeExtendedAdvertisingPduBuilder::Create( model::packets::LeExtendedAdvertisingPduBuilder::Create( advertiser.advertising_address.GetAddress(), advertiser.advertising_address.GetAddress(), advertiser.target_address.GetAddress(), advertiser.target_address.GetAddress(), Loading @@ -1504,7 +1497,8 @@ void LinkLayerController::LeAdvertising() { advertiser.primary_advertising_phy), advertiser.primary_advertising_phy), static_cast<model::packets::SecondaryPhyType>( static_cast<model::packets::SecondaryPhyType>( advertiser.secondary_advertising_phy), advertiser.secondary_advertising_phy), advertiser.advertising_data)); advertiser.advertising_data), advertiser.advertising_tx_power); } } } } } } Loading tools/rootcanal/model/controller/link_layer_controller.cc +18 −53 Original line number Original line Diff line number Diff line Loading @@ -48,16 +48,6 @@ constexpr uint16_t kNumCommandPackets = 0x01; constexpr milliseconds kNoDelayMs(0); constexpr milliseconds kNoDelayMs(0); // TODO: Model Rssi? static uint8_t GetRssi() { static uint8_t rssi = 0; rssi += 5; if (rssi > 128) { rssi = rssi % 7; } return -(rssi); } const Address& LinkLayerController::GetAddress() const { return address_; } const Address& LinkLayerController::GetAddress() const { return address_; } AddressWithType PeerDeviceAddress(Address address, AddressWithType PeerDeviceAddress(Address address, Loading Loading @@ -1428,31 +1418,22 @@ LinkLayerController::~LinkLayerController() { } } void LinkLayerController::SendLeLinkLayerPacket( void LinkLayerController::SendLeLinkLayerPacket( std::unique_ptr<model::packets::LinkLayerPacketBuilder> packet) { std::unique_ptr<model::packets::LinkLayerPacketBuilder> packet, int8_t tx_power) { std::shared_ptr<model::packets::LinkLayerPacketBuilder> shared_packet = std::shared_ptr<model::packets::LinkLayerPacketBuilder> shared_packet = std::move(packet); std::move(packet); ScheduleTask(kNoDelayMs, [this, shared_packet]() { ScheduleTask(kNoDelayMs, [this, shared_packet, tx_power]() { send_to_remote_(shared_packet, Phy::Type::LOW_ENERGY); send_to_remote_(shared_packet, Phy::Type::LOW_ENERGY, tx_power); }); }); } } void LinkLayerController::SendLinkLayerPacket( void LinkLayerController::SendLinkLayerPacket( std::unique_ptr<model::packets::LinkLayerPacketBuilder> packet) { std::unique_ptr<model::packets::LinkLayerPacketBuilder> packet, int8_t tx_power) { std::shared_ptr<model::packets::LinkLayerPacketBuilder> shared_packet = std::shared_ptr<model::packets::LinkLayerPacketBuilder> shared_packet = std::move(packet); std::move(packet); ScheduleTask(kNoDelayMs, [this, shared_packet]() { ScheduleTask(kNoDelayMs, [this, shared_packet, tx_power]() { send_to_remote_(shared_packet, Phy::Type::BR_EDR); send_to_remote_(shared_packet, Phy::Type::BR_EDR, tx_power); }); } void LinkLayerController::SendLeLinkLayerPacketWithRssi( Address source_address, Address destination_address, uint8_t rssi, std::unique_ptr<model::packets::LinkLayerPacketBuilder> packet) { std::shared_ptr<model::packets::RssiWrapperBuilder> shared_packet = model::packets::RssiWrapperBuilder::Create( source_address, destination_address, rssi, std::move(packet)); ScheduleTask(kNoDelayMs, [this, shared_packet]() { send_to_remote_(shared_packet, Phy::Type::LOW_ENERGY); }); }); } } Loading Loading @@ -1602,21 +1583,7 @@ ErrorCode LinkLayerController::SendScoToRemote( } } void LinkLayerController::IncomingPacket( void LinkLayerController::IncomingPacket( model::packets::LinkLayerPacketView incoming) { model::packets::LinkLayerPacketView incoming, int8_t rssi) { ASSERT(incoming.IsValid()); if (incoming.GetType() == PacketType::RSSI_WRAPPER) { auto rssi_wrapper = model::packets::RssiWrapperView::Create(incoming); ASSERT(rssi_wrapper.IsValid()); auto wrapped = model::packets::LinkLayerPacketView::Create(rssi_wrapper.GetPayload()); IncomingPacketWithRssi(wrapped, rssi_wrapper.GetRssi()); } else { IncomingPacketWithRssi(incoming, GetRssi()); } } void LinkLayerController::IncomingPacketWithRssi( model::packets::LinkLayerPacketView incoming, uint8_t rssi) { ASSERT(incoming.IsValid()); ASSERT(incoming.IsValid()); auto destination_address = incoming.GetDestinationAddress(); auto destination_address = incoming.GetDestinationAddress(); Loading Loading @@ -4284,14 +4251,13 @@ void LinkLayerController::ProcessIncomingLegacyScanRequest( // device address (AdvA field) in the SCAN_RSP PDU shall be the same as // device address (AdvA field) in the SCAN_RSP PDU shall be the same as // the advertiser’s device address (AdvA field) in the SCAN_REQ PDU to // the advertiser’s device address (AdvA field) in the SCAN_REQ PDU to // which it is responding. // which it is responding. SendLeLinkLayerPacketWithRssi( SendLeLinkLayerPacket( advertising_address.GetAddress(), scanning_address.GetAddress(), properties_.le_advertising_physical_channel_tx_power, model::packets::LeScanResponseBuilder::Create( model::packets::LeScanResponseBuilder::Create( advertising_address.GetAddress(), scanning_address.GetAddress(), advertising_address.GetAddress(), scanning_address.GetAddress(), static_cast<model::packets::AddressType>( static_cast<model::packets::AddressType>( advertising_address.GetAddressType()), advertising_address.GetAddressType()), legacy_advertiser_.scan_response_data)); legacy_advertiser_.scan_response_data), properties_.le_advertising_physical_channel_tx_power); } } void LinkLayerController::ProcessIncomingExtendedScanRequest( void LinkLayerController::ProcessIncomingExtendedScanRequest( Loading Loading @@ -4369,14 +4335,13 @@ void LinkLayerController::ProcessIncomingExtendedScanRequest( // device address (AdvA field) in the SCAN_RSP PDU shall be the same as // device address (AdvA field) in the SCAN_RSP PDU shall be the same as // the advertiser’s device address (AdvA field) in the SCAN_REQ PDU to // the advertiser’s device address (AdvA field) in the SCAN_REQ PDU to // which it is responding. // which it is responding. SendLeLinkLayerPacketWithRssi( SendLeLinkLayerPacket( advertising_address.GetAddress(), scanning_address.GetAddress(), advertiser.advertising_tx_power, model::packets::LeScanResponseBuilder::Create( model::packets::LeScanResponseBuilder::Create( advertising_address.GetAddress(), scanning_address.GetAddress(), advertising_address.GetAddress(), scanning_address.GetAddress(), static_cast<model::packets::AddressType>( static_cast<model::packets::AddressType>( advertising_address.GetAddressType()), advertising_address.GetAddressType()), advertiser.scan_response_data)); advertiser.scan_response_data), advertiser.advertising_tx_power); } } void LinkLayerController::IncomingLeScanPacket( void LinkLayerController::IncomingLeScanPacket( Loading Loading @@ -4813,9 +4778,9 @@ void LinkLayerController::RegisterIsoChannel( } } void LinkLayerController::RegisterRemoteChannel( void LinkLayerController::RegisterRemoteChannel( const std::function<void( const std::function< std::shared_ptr<model::packets::LinkLayerPacketBuilder>, Phy::Type)>& void(std::shared_ptr<model::packets::LinkLayerPacketBuilder>, Phy::Type, send_to_remote) { int8_t)>& send_to_remote) { send_to_remote_ = send_to_remote; send_to_remote_ = send_to_remote; } } Loading Loading
tools/rootcanal/model/controller/dual_mode_controller.cc +4 −4 Original line number Original line Diff line number Diff line Loading @@ -42,8 +42,8 @@ std::string DualModeController::GetTypeString() const { } } void DualModeController::IncomingPacket( void DualModeController::IncomingPacket( model::packets::LinkLayerPacketView incoming) { model::packets::LinkLayerPacketView incoming, int8_t rssi) { link_layer_controller_.IncomingPacket(incoming); link_layer_controller_.IncomingPacket(incoming, rssi); } } void DualModeController::TimerTick() { link_layer_controller_.TimerTick(); } void DualModeController::TimerTick() { link_layer_controller_.TimerTick(); } Loading Loading @@ -83,8 +83,8 @@ DualModeController::DualModeController(const std::string& properties_filename, link_layer_controller_.RegisterRemoteChannel( link_layer_controller_.RegisterRemoteChannel( [this](std::shared_ptr<model::packets::LinkLayerPacketBuilder> packet, [this](std::shared_ptr<model::packets::LinkLayerPacketBuilder> packet, Phy::Type phy_type) { Phy::Type phy_type, int8_t tx_power) { this->SendLinkLayerPacket(packet, phy_type); this->SendLinkLayerPacket(packet, phy_type, tx_power); }); }); std::array<uint8_t, 64> supported_commands{0}; std::array<uint8_t, 64> supported_commands{0}; Loading
tools/rootcanal/model/controller/dual_mode_controller.h +2 −2 Original line number Original line Diff line number Diff line Loading @@ -66,8 +66,8 @@ class DualModeController // Device methods. // Device methods. virtual std::string GetTypeString() const override; virtual std::string GetTypeString() const override; virtual void IncomingPacket( virtual void IncomingPacket(model::packets::LinkLayerPacketView incoming, model::packets::LinkLayerPacketView incoming) override; int8_t rssi) override; virtual void TimerTick() override; virtual void TimerTick() override; virtual void Close() override; virtual void Close() override; Loading
tools/rootcanal/model/controller/dual_mode_controller_python3.cc +4 −5 Original line number Original line Diff line number Diff line Loading @@ -77,8 +77,7 @@ class BaseController : public DualModeController { virtual void SendLinkLayerPacket( virtual void SendLinkLayerPacket( std::shared_ptr<model::packets::LinkLayerPacketBuilder> packet, std::shared_ptr<model::packets::LinkLayerPacketBuilder> packet, Phy::Type phy_type_) override { Phy::Type /*phy_type*/, int8_t /*tx_power*/) override { (void)phy_type_; auto bytes = std::make_shared<std::vector<uint8_t>>(); auto bytes = std::make_shared<std::vector<uint8_t>>(); bluetooth::packet::BitInserter inserter(*bytes); bluetooth::packet::BitInserter inserter(*bytes); bytes->reserve(packet->size()); bytes->reserve(packet->size()); Loading Loading @@ -212,11 +211,11 @@ PYBIND11_MODULE(lib_rootcanal_python3, m) { } } }); }); // Implement method BaseController.receive_hci which // Implement method BaseController.send_ll which // injects LL packets into the controller as if sent over the air. // injects LL packets into the controller as if sent over the air. basic_controller.def( basic_controller.def( "send_ll", [](std::shared_ptr<rootcanal::BaseController> controller, "send_ll", [](std::shared_ptr<rootcanal::BaseController> controller, py::bytes data) { py::bytes data, int rssi) { std::string data_str = data; std::string data_str = data; std::shared_ptr<std::vector<uint8_t>> bytes = std::shared_ptr<std::vector<uint8_t>> bytes = std::make_shared<std::vector<uint8_t>>(data_str.begin(), std::make_shared<std::vector<uint8_t>>(data_str.begin(), Loading @@ -230,7 +229,7 @@ PYBIND11_MODULE(lib_rootcanal_python3, m) { std::cerr << "Dropping malformed LL packet" << std::endl; std::cerr << "Dropping malformed LL packet" << std::endl; return; return; } } controller->IncomingPacket(std::move(packet)); controller->IncomingPacket(std::move(packet), rssi); }); }); } } Loading
tools/rootcanal/model/controller/le_advertiser.cc +9 −15 Original line number Original line Diff line number Diff line Loading @@ -1357,10 +1357,7 @@ void LinkLayerController::LeAdvertising() { break; break; } } SendLeLinkLayerPacketWithRssi( SendLeLinkLayerPacket( legacy_advertiser_.advertising_address.GetAddress(), legacy_advertiser_.target_address.GetAddress(), properties_.le_advertising_physical_channel_tx_power, model::packets::LeLegacyAdvertisingPduBuilder::Create( model::packets::LeLegacyAdvertisingPduBuilder::Create( legacy_advertiser_.advertising_address.GetAddress(), legacy_advertiser_.advertising_address.GetAddress(), legacy_advertiser_.target_address.GetAddress(), legacy_advertiser_.target_address.GetAddress(), Loading @@ -1370,7 +1367,8 @@ void LinkLayerController::LeAdvertising() { legacy_advertiser_.target_address.GetAddressType()), legacy_advertiser_.target_address.GetAddressType()), type, type, attach_advertising_data ? legacy_advertiser_.advertising_data attach_advertising_data ? legacy_advertiser_.advertising_data : std::vector<uint8_t>{})); : std::vector<uint8_t>{}), properties_.le_advertising_physical_channel_tx_power); } } for (auto& [_, advertiser] : extended_advertisers_) { for (auto& [_, advertiser] : extended_advertisers_) { Loading Loading @@ -1472,10 +1470,7 @@ void LinkLayerController::LeAdvertising() { break; break; } } SendLeLinkLayerPacketWithRssi( SendLeLinkLayerPacket( advertiser.advertising_address.GetAddress(), advertiser.target_address.GetAddress(), advertiser.advertising_tx_power, model::packets::LeLegacyAdvertisingPduBuilder::Create( model::packets::LeLegacyAdvertisingPduBuilder::Create( advertiser.advertising_address.GetAddress(), advertiser.advertising_address.GetAddress(), advertiser.target_address.GetAddress(), advertiser.target_address.GetAddress(), Loading @@ -1483,12 +1478,10 @@ void LinkLayerController::LeAdvertising() { advertiser.advertising_address.GetAddressType()), advertiser.advertising_address.GetAddressType()), static_cast<model::packets::AddressType>( static_cast<model::packets::AddressType>( advertiser.target_address.GetAddressType()), advertiser.target_address.GetAddressType()), type, advertiser.advertising_data)); type, advertiser.advertising_data), advertiser.advertising_tx_power); } else { } else { SendLeLinkLayerPacketWithRssi( SendLeLinkLayerPacket( advertiser.advertising_address.GetAddress(), advertiser.target_address.GetAddress(), advertiser.advertising_tx_power, model::packets::LeExtendedAdvertisingPduBuilder::Create( model::packets::LeExtendedAdvertisingPduBuilder::Create( advertiser.advertising_address.GetAddress(), advertiser.advertising_address.GetAddress(), advertiser.target_address.GetAddress(), advertiser.target_address.GetAddress(), Loading @@ -1504,7 +1497,8 @@ void LinkLayerController::LeAdvertising() { advertiser.primary_advertising_phy), advertiser.primary_advertising_phy), static_cast<model::packets::SecondaryPhyType>( static_cast<model::packets::SecondaryPhyType>( advertiser.secondary_advertising_phy), advertiser.secondary_advertising_phy), advertiser.advertising_data)); advertiser.advertising_data), advertiser.advertising_tx_power); } } } } } } Loading
tools/rootcanal/model/controller/link_layer_controller.cc +18 −53 Original line number Original line Diff line number Diff line Loading @@ -48,16 +48,6 @@ constexpr uint16_t kNumCommandPackets = 0x01; constexpr milliseconds kNoDelayMs(0); constexpr milliseconds kNoDelayMs(0); // TODO: Model Rssi? static uint8_t GetRssi() { static uint8_t rssi = 0; rssi += 5; if (rssi > 128) { rssi = rssi % 7; } return -(rssi); } const Address& LinkLayerController::GetAddress() const { return address_; } const Address& LinkLayerController::GetAddress() const { return address_; } AddressWithType PeerDeviceAddress(Address address, AddressWithType PeerDeviceAddress(Address address, Loading Loading @@ -1428,31 +1418,22 @@ LinkLayerController::~LinkLayerController() { } } void LinkLayerController::SendLeLinkLayerPacket( void LinkLayerController::SendLeLinkLayerPacket( std::unique_ptr<model::packets::LinkLayerPacketBuilder> packet) { std::unique_ptr<model::packets::LinkLayerPacketBuilder> packet, int8_t tx_power) { std::shared_ptr<model::packets::LinkLayerPacketBuilder> shared_packet = std::shared_ptr<model::packets::LinkLayerPacketBuilder> shared_packet = std::move(packet); std::move(packet); ScheduleTask(kNoDelayMs, [this, shared_packet]() { ScheduleTask(kNoDelayMs, [this, shared_packet, tx_power]() { send_to_remote_(shared_packet, Phy::Type::LOW_ENERGY); send_to_remote_(shared_packet, Phy::Type::LOW_ENERGY, tx_power); }); }); } } void LinkLayerController::SendLinkLayerPacket( void LinkLayerController::SendLinkLayerPacket( std::unique_ptr<model::packets::LinkLayerPacketBuilder> packet) { std::unique_ptr<model::packets::LinkLayerPacketBuilder> packet, int8_t tx_power) { std::shared_ptr<model::packets::LinkLayerPacketBuilder> shared_packet = std::shared_ptr<model::packets::LinkLayerPacketBuilder> shared_packet = std::move(packet); std::move(packet); ScheduleTask(kNoDelayMs, [this, shared_packet]() { ScheduleTask(kNoDelayMs, [this, shared_packet, tx_power]() { send_to_remote_(shared_packet, Phy::Type::BR_EDR); send_to_remote_(shared_packet, Phy::Type::BR_EDR, tx_power); }); } void LinkLayerController::SendLeLinkLayerPacketWithRssi( Address source_address, Address destination_address, uint8_t rssi, std::unique_ptr<model::packets::LinkLayerPacketBuilder> packet) { std::shared_ptr<model::packets::RssiWrapperBuilder> shared_packet = model::packets::RssiWrapperBuilder::Create( source_address, destination_address, rssi, std::move(packet)); ScheduleTask(kNoDelayMs, [this, shared_packet]() { send_to_remote_(shared_packet, Phy::Type::LOW_ENERGY); }); }); } } Loading Loading @@ -1602,21 +1583,7 @@ ErrorCode LinkLayerController::SendScoToRemote( } } void LinkLayerController::IncomingPacket( void LinkLayerController::IncomingPacket( model::packets::LinkLayerPacketView incoming) { model::packets::LinkLayerPacketView incoming, int8_t rssi) { ASSERT(incoming.IsValid()); if (incoming.GetType() == PacketType::RSSI_WRAPPER) { auto rssi_wrapper = model::packets::RssiWrapperView::Create(incoming); ASSERT(rssi_wrapper.IsValid()); auto wrapped = model::packets::LinkLayerPacketView::Create(rssi_wrapper.GetPayload()); IncomingPacketWithRssi(wrapped, rssi_wrapper.GetRssi()); } else { IncomingPacketWithRssi(incoming, GetRssi()); } } void LinkLayerController::IncomingPacketWithRssi( model::packets::LinkLayerPacketView incoming, uint8_t rssi) { ASSERT(incoming.IsValid()); ASSERT(incoming.IsValid()); auto destination_address = incoming.GetDestinationAddress(); auto destination_address = incoming.GetDestinationAddress(); Loading Loading @@ -4284,14 +4251,13 @@ void LinkLayerController::ProcessIncomingLegacyScanRequest( // device address (AdvA field) in the SCAN_RSP PDU shall be the same as // device address (AdvA field) in the SCAN_RSP PDU shall be the same as // the advertiser’s device address (AdvA field) in the SCAN_REQ PDU to // the advertiser’s device address (AdvA field) in the SCAN_REQ PDU to // which it is responding. // which it is responding. SendLeLinkLayerPacketWithRssi( SendLeLinkLayerPacket( advertising_address.GetAddress(), scanning_address.GetAddress(), properties_.le_advertising_physical_channel_tx_power, model::packets::LeScanResponseBuilder::Create( model::packets::LeScanResponseBuilder::Create( advertising_address.GetAddress(), scanning_address.GetAddress(), advertising_address.GetAddress(), scanning_address.GetAddress(), static_cast<model::packets::AddressType>( static_cast<model::packets::AddressType>( advertising_address.GetAddressType()), advertising_address.GetAddressType()), legacy_advertiser_.scan_response_data)); legacy_advertiser_.scan_response_data), properties_.le_advertising_physical_channel_tx_power); } } void LinkLayerController::ProcessIncomingExtendedScanRequest( void LinkLayerController::ProcessIncomingExtendedScanRequest( Loading Loading @@ -4369,14 +4335,13 @@ void LinkLayerController::ProcessIncomingExtendedScanRequest( // device address (AdvA field) in the SCAN_RSP PDU shall be the same as // device address (AdvA field) in the SCAN_RSP PDU shall be the same as // the advertiser’s device address (AdvA field) in the SCAN_REQ PDU to // the advertiser’s device address (AdvA field) in the SCAN_REQ PDU to // which it is responding. // which it is responding. SendLeLinkLayerPacketWithRssi( SendLeLinkLayerPacket( advertising_address.GetAddress(), scanning_address.GetAddress(), advertiser.advertising_tx_power, model::packets::LeScanResponseBuilder::Create( model::packets::LeScanResponseBuilder::Create( advertising_address.GetAddress(), scanning_address.GetAddress(), advertising_address.GetAddress(), scanning_address.GetAddress(), static_cast<model::packets::AddressType>( static_cast<model::packets::AddressType>( advertising_address.GetAddressType()), advertising_address.GetAddressType()), advertiser.scan_response_data)); advertiser.scan_response_data), advertiser.advertising_tx_power); } } void LinkLayerController::IncomingLeScanPacket( void LinkLayerController::IncomingLeScanPacket( Loading Loading @@ -4813,9 +4778,9 @@ void LinkLayerController::RegisterIsoChannel( } } void LinkLayerController::RegisterRemoteChannel( void LinkLayerController::RegisterRemoteChannel( const std::function<void( const std::function< std::shared_ptr<model::packets::LinkLayerPacketBuilder>, Phy::Type)>& void(std::shared_ptr<model::packets::LinkLayerPacketBuilder>, Phy::Type, send_to_remote) { int8_t)>& send_to_remote) { send_to_remote_ = send_to_remote; send_to_remote_ = send_to_remote; } } Loading