remove mainloop callout manager (all is handled under intr)
[protos/xbee-avr.git] / xbee_user.c
index ca9d475..26fe261 100644 (file)
@@ -454,7 +454,7 @@ int xbeeapp_send_atcmd(char *atcmd_str, void *param,
 
        prio = callout_mgr_set_prio(&xbeeboard.intr_cm, XBEE_PRIO);
        ret = xbeeapp_send(&ctx, XBEE_TYPE_ATCMD, &msg, foreground);
-       callout_mgr_set_prio(&xbeeboard.intr_cm, prio);
+       callout_mgr_restore_prio(&xbeeboard.intr_cm, prio);
 
        return ret;
 }
@@ -490,7 +490,7 @@ int xbeeapp_send_msg(uint64_t addr, struct xbee_msg *msg, int foreground)
 
        prio = callout_mgr_set_prio(&xbeeboard.intr_cm, XBEE_PRIO);
        ret = xbeeapp_send(&ctx, XBEE_TYPE_XMIT, &msg2, foreground);
-       callout_mgr_set_prio(&xbeeboard.intr_cm, prio);
+       callout_mgr_restore_prio(&xbeeboard.intr_cm, prio);
 
        return ret;
 }
@@ -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;
 
@@ -559,7 +565,7 @@ void xbee_mainloop(void)
                                xbee_dev_send('C', NULL);
                                xbee_dev_send('N', NULL);
                                xbee_dev_send('\n', NULL);
-                               callout_mgr_set_prio(&xbeeboard.intr_cm, prio);
+                               callout_mgr_restore_prio(&xbeeboard.intr_cm, prio);
                                xbee_raw = 0;
                                rdline_newline(&xbeeboard.rdl,
                                               xbeeboard.prompt);