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

Commit 9b8bf69c authored by Hansong Zhang's avatar Hansong Zhang
Browse files

Rootcanal: Always send FIRST_NON_AUTOMATICALLY_FLUSHABLE

Controller should only send FIRST_NON_AUTOMATICALLY_FLUSHABLE to host
per spec 5.1 vol 2 part E 5.4.2

Test: run_cert.sh
Change-Id: Ia79a4a1d4e64de4ba0d59a44108db93e4a2f7c7a
parent 6ccd47b1
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -203,15 +203,15 @@ class SimpleHalTest(GdFacadeOnlyBaseTestClass):
            # Send ACL Data
            self.device_under_test.hal.SendHciAcl(
                hal_facade_pb2.HciAclPacket(
                    payload=b'\xfe\x0e\x0b\x00SomeAclData'))
                    payload=b'\xfe\x2e\x0b\x00SomeAclData'))
            # Send ACL Data
            self.cert_device.hal.SendHciAcl(
                hal_facade_pb2.HciAclPacket(
                    payload=b'\xfe\x0e\x0f\x00SomeMoreAclData'))
                    payload=b'\xfe\x2e\x0f\x00SomeMoreAclData'))
            cert_acl_data_asserts.assert_event_occurs(
                lambda packet: b'\xfe\x0e\x0b\x00SomeAclData' in packet.payload)
                lambda packet: b'\xfe\x2e\x0b\x00SomeAclData' in packet.payload)
            acl_data_asserts.assert_event_occurs(
                lambda packet: b'\xfe\x0e\x0f\x00SomeMoreAclData' in packet.payload
                lambda packet: b'\xfe\x2e\x0f\x00SomeMoreAclData' in packet.payload
            )

    def test_le_white_list_connection_cert_advertises(self):
+3 −1
Original line number Diff line number Diff line
@@ -139,9 +139,11 @@ ErrorCode LinkLayerController::SendAclToRemote(
      std::make_unique<bluetooth::packet::RawBuilder>();
  std::vector<uint8_t> payload_bytes(acl_payload.begin(), acl_payload.end());

  constexpr auto pb_flag_controller_to_host =
      bluetooth::hci::PacketBoundaryFlag::FIRST_AUTOMATICALLY_FLUSHABLE;
  uint16_t first_two_bytes =
      static_cast<uint16_t>(acl_packet.GetHandle()) +
      (static_cast<uint16_t>(acl_packet.GetPacketBoundaryFlag()) << 12) +
      (static_cast<uint16_t>(pb_flag_controller_to_host) << 12) +
      (static_cast<uint16_t>(acl_packet.GetBroadcastFlag()) << 14);
  raw_builder_ptr->AddOctets2(first_two_bytes);
  raw_builder_ptr->AddOctets2(static_cast<uint16_t>(payload_bytes.size()));