You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by an...@apache.org on 2019/12/17 15:57:46 UTC
[mynewt-nimble] 02/09: nimble/ll: Properly schedule start of DTM RX
This is an automated email from the ASF dual-hosted git repository.
andk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git
commit e3de2917e3bbe47e9cdc37afc258d61e76036531
Author: Andrzej Kaczmarek <an...@codecoup.pl>
AuthorDate: Wed Dec 11 19:29:06 2019 +0100
nimble/ll: Properly schedule start of DTM RX
We need to schedule start of DTM RX instead of starting it "now". This
is required for upcoming rfclk rework to work properly.
---
nimble/controller/src/ble_ll_dtm.c | 27 +++++++++++++++++++++++----
1 file changed, 23 insertions(+), 4 deletions(-)
diff --git a/nimble/controller/src/ble_ll_dtm.c b/nimble/controller/src/ble_ll_dtm.c
index 673d31b..0b8314b 100644
--- a/nimble/controller/src/ble_ll_dtm.c
+++ b/nimble/controller/src/ble_ll_dtm.c
@@ -424,23 +424,42 @@ ble_ll_dtm_rx_start(void)
}
static int
+ble_ll_dtm_rx_sched_cb(struct ble_ll_sched_item *sch)
+{
+ if (ble_ll_dtm_rx_start() != 0) {
+ ble_npl_eventq_put(&g_ble_ll_data.ll_evq, &g_ble_ll_dtm_ctx.evt);
+ STATS_INC(ble_ll_dtm_stats, rx_failed);
+ }
+
+ return BLE_LL_SCHED_STATE_DONE;
+}
+
+static int
ble_ll_dtm_rx_create_ctx(uint8_t rf_channel, uint8_t phy_mode)
{
+ struct ble_ll_sched_item *sch = &g_ble_ll_dtm_ctx.sch;
+ int rc;
+
g_ble_ll_dtm_ctx.phy_mode = phy_mode;
g_ble_ll_dtm_ctx.rf_channel = rf_channel;
- g_ble_ll_dtm_ctx.active = 1;
STATS_CLEAR(ble_ll_dtm_stats, rx_count);
ble_npl_event_init(&g_ble_ll_dtm_ctx.evt, ble_ll_dtm_ev_rx_restart_cb,
NULL);
- if (ble_ll_dtm_rx_start() != 0) {
- return 1;
- }
+ sch->sched_cb = ble_ll_dtm_rx_sched_cb;
+ sch->cb_arg = &g_ble_ll_dtm_ctx;
+ sch->sched_type = BLE_LL_SCHED_TYPE_DTM;
+ sch->start_time = os_cputime_get32() +
+ os_cputime_usecs_to_ticks(5000);
+
+ rc = ble_ll_sched_dtm(sch);
+ BLE_LL_ASSERT(rc == 0);
ble_phy_enable_dtm();
+ g_ble_ll_dtm_ctx.active = 1;
return 0;
}