mirror of
https://github.com/apache/nuttx.git
synced 2026-03-26 18:23:50 +08:00
The sim_bthcisock_interrupt() handler for Bluetooth HCI sockets in the simulatorwas using an if statement to check for available data on the HCI socket. Thismeant that only a single packet would be read and processed per interrupt trigger,even if multiple packets were waiting in the socket buffer. This led to incomplete data processing: unread packets would remain in the bufferuntil the next interrupt tick, causing delayed handling of Bluetooth HCI events/commands,packet backlogs, or missed data in high-throughput scenarios. This fix replaces the if with a while loop to: 1. Continuously check for and read available data from the HCI socket until no more packets are present in the buffer. 2. Ensure all pending HCI packets are processed in a single interrupt handler invocation. 3. Eliminate packet backlogs and reduce latency in Bluetooth HCI communication. The change maintains the same core data reception logic (bthcisock_receive()) butensures it runs for all available packets, improving the reliability and responsivenessof the simulator's Bluetooth HCI socket implementation. Signed-off-by: chao an <anchao.archer@bytedance.com>