Previously the calculation of the PSN was done using just a timer. This would not work correctly when attempting to send multiple packets in a single SDU interval (e.g. to enqueue 2 or more). Previously we only ever attempted to send 1 packet in the `sent` callback but scheduling the work item. However in the case that the `sent` callback was called twice before the work item had been triggered (possible due to the priority of the RX thread being higher than the system workqueue thread). This has been modified so that if we can enqueue more packets in the lc3_audio_send_data function, we re-enqueue the work item. We re-enqueue rather than sending multiple in a single call to avoid blocking other items on the system workqueue from being scheduled. This could cause possible missed intervals (if other workqueue items are processed), but it should be OK from a ISO perspective, and the new PSN calculator handles this much better. Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no> |
||
|---|---|---|
| .. | ||
| audio.h | ||
| bap_broadcast_assistant.c | ||
| bap_scan_delegator.c | ||
| bap.c | ||
| cap_acceptor.c | ||
| cap_initiator.c | ||
| CMakeLists.txt | ||
| csip_set_coordinator.c | ||
| csip_set_member.c | ||
| has_client.c | ||
| has.c | ||
| mcc.c | ||
| media_controller.c | ||
| micp_mic_ctlr.c | ||
| micp_mic_dev.c | ||
| mpl.c | ||
| tbs_client.c | ||
| tbs.c | ||
| tmap.c | ||
| vcp_vol_ctlr.c | ||
| vcp_vol_rend.c | ||