aboutsummaryrefslogtreecommitdiffstats
path: root/wirish/wirish_digital.c
diff options
context:
space:
mode:
authorMarti Bolivar <mbolivar@mit.edu>2010-12-14 15:41:17 -0500
committerMarti Bolivar <mbolivar@mit.edu>2010-12-14 15:41:17 -0500
commit74c8937446e1be4e0d21f69a8c098e2caf7814d5 (patch)
tree1c7b8e4d93a9512ee54cdd6c5bb7ede064f96b3e /wirish/wirish_digital.c
parent5ceac644e90c929e77f05d357d1d35d45e673fac (diff)
parentb67d281d85bd59a9738a9a43c4db1027f81d9208 (diff)
downloadlibrambutan-74c8937446e1be4e0d21f69a8c098e2caf7814d5.tar.gz
librambutan-74c8937446e1be4e0d21f69a8c098e2caf7814d5.zip
Merge branch 'master' into newdoc
Diffstat (limited to 'wirish/wirish_digital.c')
-rw-r--r--wirish/wirish_digital.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/wirish/wirish_digital.c b/wirish/wirish_digital.c
index d7da81f..6f9906d 100644
--- a/wirish/wirish_digital.c
+++ b/wirish/wirish_digital.c
@@ -103,3 +103,35 @@ void digitalWrite(uint8 pin, uint8 val) {
gpio_write_bit(PIN_MAP[pin].port, PIN_MAP[pin].pin, val);
}
+
+void togglePin(uint8 pin) {
+ gpio_toggle_pin(PIN_MAP[pin].port, PIN_MAP[pin].pin);
+}
+
+uint8 isButtonPressed() {
+ if (digitalRead(BOARD_BUTTON_PIN)) {
+ while (digitalRead(BOARD_BUTTON_PIN))
+ ;
+ return true;
+ }
+ return false;
+}
+
+uint8 waitForButtonPress(uint32 timeout) {
+ uint32 start = millis();
+ uint32 time;
+ if (timeout == 0) {
+ while (!isButtonPressed())
+ ;
+ return true;
+ }
+ do {
+ time = millis();
+ /* properly handle wrap-around */
+ if ((start > time && time + (0xffffffffU - start) > timeout) ||
+ time - start > timeout) {
+ return false;
+ }
+ } while (!isButtonPressed());
+ return true;
+}