]> oss.titaniummirror.com Git - rgblamp.git/blobdiff - btn.c
Add README
[rgblamp.git] / btn.c
diff --git a/btn.c b/btn.c
index 7b3c75e70ff4593627c05b6179340c4affe29f44..9fa4c4d9c1df3b510cff19ac3d6f93bb80a4eca7 100644 (file)
--- a/btn.c
+++ b/btn.c
@@ -1,3 +1,32 @@
+/*
+ * 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:   buttons.c
  *
 #include "tmr.h"
 #include "task.h"
 
-/* All the buttons are on PORTB.  RB0 is the push button.
- * RB4 and RB5 are the rocker switch positions left and right, respectively.
+/* All the buttons are on PORTB.  RB1 is the push button.
+ * RB4 and RB2 are the rocker switch positions left and right, respectively.
  */
-#define ALLMASK    0b00110001
+#define ALLMASK    0b00010110
 
 /* Initialize the button module */
 void btn_init()
@@ -25,26 +54,58 @@ void btn_init()
   GIE = 1;             /* enable global interrupts */
 }
 
+void btn_pben()
+{
+  ndi();
+  IOCBP1 = 1; IOCBN1 = 1; IOCBF1 = 0;
+  nei();
+}
+
+/* Disable the pushbutton from user code */
+void btn_pbdis()
+{
+  ndi();
+  IOCBP1 = 0; IOCBN1 = 0; IOCBF1 = 0;
+  nei();
+}
+
+/* Enable the rocker switch from user code */
+void btn_rsen()
+{
+  ndi();
+  IOCBP4 = 1; IOCBN4 = 1; IOCBF4 = 0;
+  IOCBP2 = 1; IOCBN2 = 1; IOCBF2 = 0;
+  nei();
+}
+
+/* Disable the rocker switch from user code */
+void btn_rsdis()
+{
+  ndi();
+  IOCBP4 = 0; IOCBN4 = 0; IOCBF4 = 0;
+  IOCBP2 = 0; IOCBN2 = 0; IOCBF2 = 0;
+  nei();
+}
+
 void btn_isr()
 {
   if (IOCIF) {
-    if (IOCBF0) {
-      _btn_pbdis();
-      tmr_start(TMR_BTN_PB, 1);
+    if (IOCBF1) {
+      btn_pbdis();
+      tmr_start(TMR_BTN_PB, 2);
     }
     if (IOCBF4) {
-      _btn_rsdis();
-      tmr_start(TMR_BTN_RS, 1);
+      btn_rsdis();
+      tmr_start(TMR_BTN_RS, 2);
     }
-    if (IOCBF5) {
-      _btn_rsdis();
-      tmr_start(TMR_BTN_RS, 1);
+    if (IOCBF2) {
+      btn_rsdis();
+      tmr_start(TMR_BTN_RS, 2);
     }
   }
 
   if (tmr_fired(TMR_BTN_PB))
-    _task_post(TASK_BTN_PB);
+    task_post(TASK_BTN_PB);
   if (tmr_fired(TMR_BTN_RS))
-    _task_post(TASK_BTN_RS);
+    task_post(TASK_BTN_RS);
 }
-