Bluetooth: controller: Implement ADV re-schedule for new scheduler
The new JIT scheduler does not have slot reservation, which means that the ticker extension feature for automatically re-scheduling a colliding non-anchored event, e.g. ADV, cannot be used. This implementaion reacts to ADV envent done with result ABORTED or TOO_LATE, and in those cases attempts to re-schedule the ADV event again within the 10 ms pertubation window. As the original scheduling, the re-scheduling is randomized, so there is no absolute predictability as to how many attempts will be made. The advertiser will attempt with randomly delayed re-schdules until the window is exhausted. If re-scheduling is unsuccessful, the weight of the ADV event is increased, improving it's chances of success in the next event. Signed-off-by: Morten Priess <mtpr@oticon.com>
This commit is contained in:
parent
7ade4a2321
commit
fdc92ebb27
8 changed files with 159 additions and 35 deletions
|
@ -80,7 +80,7 @@ void lll_resume(void *param)
|
|||
}
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_JIT_SCHEDULING)
|
||||
void lll_done_score(void *param, uint8_t too_late, uint8_t aborted)
|
||||
void lll_done_score(void *param, uint8_t result)
|
||||
{
|
||||
struct lll_hdr *hdr = param;
|
||||
|
||||
|
@ -88,7 +88,7 @@ void lll_done_score(void *param, uint8_t too_late, uint8_t aborted)
|
|||
return;
|
||||
}
|
||||
|
||||
if (!too_late && !aborted) {
|
||||
if (result == DONE_COMPLETED) {
|
||||
hdr->score = 0;
|
||||
hdr->latency = 0;
|
||||
} else {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue