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

Commit da3cfe15 authored by Hansong Zhang's avatar Hansong Zhang
Browse files

L2CAP Fix Echo Response

Fix Echo Response Packet for PTS L2CAP/COS/ECH/BV-01-C

Test: run_cert_test
Bug: 141557006
Change-Id: I5e575d578e4b2f1aed04e35a32ece37889ee156f
parent 350b8fa9
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -135,3 +135,27 @@ class SimpleL2capTest(GdBaseTestClass):
        self.device_under_test.l2cap.OpenChannel(l2cap_facade_pb2.OpenChannelRequest(remote=self.cert_address, psm=0x01))
        time.sleep(1)


    def test_respond_to_echo_request(self):
        """
        L2CAP/COS/ECH/BV-01-C [Respond to Echo Request]
        Verify that the IUT responds to an echo request.
        """
        self.device_under_test.l2cap.RegisterChannel(l2cap_facade_pb2.RegisterChannelRequest(channel=2))
        cert_connection_stream = self.cert_device.l2cap.connection_complete_stream
        cert_connection_stream.subscribe()
        self.device_under_test.l2cap.Connect(self.cert_address)
        cert_connection_stream.assert_event_occurs(
            lambda device: device.remote == self.dut_address
        )
        cert_connection_stream.unsubscribe()
        cert_packet_stream = self.cert_device.l2cap.packet_stream
        cert_packet_stream.subscribe()
        echo_request_packet = b"\x08\x01\x00\x00"
        echo_response_packet = b"\x09\x01\x00\x00"
        self.cert_device.l2cap.SendL2capPacket(l2cap_facade_pb2.L2capPacket(channel=1, payload=echo_request_packet))
        cert_packet_stream.assert_event_occurs(
            lambda packet: echo_response_packet in packet.payload
        )
        cert_packet_stream.unsubscribe()
+1 −1
Original line number Diff line number Diff line
@@ -220,7 +220,7 @@ void ClassicSignallingManager::OnEchoRequest(SignalId signal_id, const PacketVie
  std::vector<uint8_t> packet_vector{packet.begin(), packet.end()};
  auto raw_builder = std::make_unique<packet::RawBuilder>();
  raw_builder->AddOctets(packet_vector);
  auto builder = EchoRequestBuilder::Create(signal_id.Value(), std::move(raw_builder));
  auto builder = EchoResponseBuilder::Create(signal_id.Value(), std::move(raw_builder));
  enqueue_buffer_->Enqueue(std::move(builder), handler_);
}