X-Git-Url: http://git.droids-corp.org/?p=protos%2Fxbee-avr.git;a=blobdiff_plain;f=xbee_user.c;fp=xbee_user.c;h=26fe26116cd7a6e76601e45e69c907bad341ee6a;hp=ecca81686feb4675f1f4a2db1631e9c191ac6a0f;hb=64ee3de535747a69cb7467e05bcecec211623e63;hpb=a992a62a843658a6f6a38158c3e13ce3dae45568 diff --git a/xbee_user.c b/xbee_user.c index ecca816..26fe261 100644 --- a/xbee_user.c +++ b/xbee_user.c @@ -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;