]> oss.titaniummirror.com Git - rgblamp.git/blobdiff - task.c
Add README
[rgblamp.git] / task.c
diff --git a/task.c b/task.c
index 26a0b46a626f71e44a0db5135ed0a91aeaa38202..eb11d8c2eb3644c26ee7af79d5a7782e444531d2 100644 (file)
--- a/task.c
+++ b/task.c
@@ -1,9 +1,36 @@
+/*
+ * Copyright © 2011, 2012, Titanium Mirror, Inc..
+ * All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * - Redistributions of source code must retain the above copyright notice,
+ *   this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - Neither the name of Titanium Mirror, Inc. nor the names of its
+ *   contributors may be used to endorse or promote products derived from
+ *   this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+ * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
 /*
  * File:   task.c
  *
- * Generic timer module.  Currently uses Timer0 to generate ticks every
- * 32 ms.  Later will use Timer1, a crystal, and optionally a compare
- * module to be able to generate ticks and wake up from sleep.
+ * Generic task module.
  */
 
 
@@ -36,21 +63,17 @@ task_id_t task_get(unsigned char block)
     nei();
     if (ids) {
       for (unsigned char i = 0; t == -1 && i < TASK_COUNT; i++) {
-        if (bit_get(ids, _task_bitno))
+        if (bit_get(ids, _task_bitno)) {
           t = _task_bitno;
-        _task_bitno = (_task_bitno + 1) % TASK_COUNT;
+          ndi();
+          bit_clr(_task_ids, t);
+          nei();
+        }
+        if (++_task_bitno == TASK_COUNT)
+          _task_bitno = 0;
       }
     }
-#if 0 /* Not until we have a crystal and can wake from sleep via tmr module */
-    else
-      SLEEP();
-#endif
   } while (t == -1 && block == 1);
-  if (t) {
-    ndi();
-    bit_clr(_task_ids, t);
-    nei();
-  }
   return t;
 }