]> oss.titaniummirror.com Git - rgblamp.git/blobdiff - task.c
Fixes from picbtnisr work
[rgblamp.git] / task.c
diff --git a/task.c b/task.c
index a3489248a6d6242d77392cea0e3d4d9557f06f0b..26a0b46a626f71e44a0db5135ed0a91aeaa38202 100644 (file)
--- a/task.c
+++ b/task.c
@@ -27,7 +27,7 @@ bit task_check()
 
 task_id_t task_get(unsigned char block)
 {
-  task_id_t t = 0;
+  task_id_t t = -1;
   unsigned long ids;
 
   do {
@@ -35,8 +35,8 @@ task_id_t task_get(unsigned char block)
     ids = _task_ids;
     nei();
     if (ids) {
-      for (unsigned char i = 0; t == 0 && i < TASK_COUNT; i++) {
-        if (ids & (1UL << _task_bitno))
+      for (unsigned char i = 0; t == -1 && i < TASK_COUNT; i++) {
+        if (bit_get(ids, _task_bitno))
           t = _task_bitno;
         _task_bitno = (_task_bitno + 1) % TASK_COUNT;
       }
@@ -45,14 +45,12 @@ task_id_t task_get(unsigned char block)
     else
       SLEEP();
 #endif
-  } while (t == 0 && block == 1);
+  } while (t == -1 && block == 1);
+  if (t) {
+    ndi();
+    bit_clr(_task_ids, t);
+    nei();
+  }
   return t;
 }
 
-void task_post(task_id_t t)
-{
-  ndi();
-  _task_post(t);
-  nei();
-}
-