remove mainloop callout manager (all is handled under intr)
[protos/xbee-avr.git] / xbee_user.c
index ecca816..26fe261 100644 (file)
@@ -517,13 +517,21 @@ static void evt_timeout(struct callout_mgr *cm, struct callout *clt,
 
 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,
@@ -539,8 +547,6 @@ void xbee_mainloop(void)
        uint8_t prio;
 
        while (1) {
-               callout_manage(&xbeeboard.mainloop_cm);
-
                if (xbee_raw) {
                        int16_t c;