void xbee_load_timeout(struct xbee_ctx *ctx)
{
- callout_init(&ctx->timeout, evt_timeout, ctx, 0);
- callout_schedule(&xbeeboard.mainloop_cm, &ctx->timeout, XBEE_TIMEOUT_MS);
+ uint8_t prio;
+
+ callout_init(&ctx->timeout, evt_timeout, ctx, XBEE_PRIO);
+ prio = callout_mgr_set_prio(&xbeeboard.intr_cm, XBEE_PRIO);
+ callout_schedule(&xbeeboard.intr_cm, &ctx->timeout, XBEE_TIMEOUT_MS);
+ callout_mgr_restore_prio(&xbeeboard.intr_cm, prio);
}
void xbee_unload_timeout(struct xbee_ctx *ctx)
{
- callout_stop(&xbeeboard.mainloop_cm, &ctx->timeout);
+ uint8_t prio;
+
+ prio = callout_mgr_set_prio(&xbeeboard.intr_cm, XBEE_PRIO);
+ callout_stop(&xbeeboard.intr_cm, &ctx->timeout);
+ callout_mgr_restore_prio(&xbeeboard.intr_cm, prio);
}
static void xbee_rx_poll_timer_cb(struct callout_mgr *cm, struct callout *tim,
uint8_t prio;
while (1) {
- callout_manage(&xbeeboard.mainloop_cm);
-
if (xbee_raw) {
int16_t c;