CIS441 Controller

Dependencies:   TextLCD mbed-rtos mbed

Fork of PacemakerController by Chad Nachiappan

Revision:
5:9eee15818b0e
Parent:
3:44d132582373
Child:
6:d9c0ce333d71
diff -r 44d132582373 -r 9eee15818b0e PacemakerController.cpp
--- a/PacemakerController.cpp	Mon Nov 30 03:10:45 2015 +0000
+++ b/PacemakerController.cpp	Mon Nov 30 03:36:04 2015 +0000
@@ -11,6 +11,7 @@
 Serial pc(USBTX, USBRX);
 TextLCD lcd(p15, p16, p17, p18, p19, p20, TextLCD::LCD20x4); // rs, e, d4-d7
 
+int keyboard_needs_numeric = 0; // boolean - is in middle of interval input?
 
 int h_clock;
 int pm_clock;
@@ -82,13 +83,20 @@
 }
 
 // hw interrupt callback, deal with the keyboard input from PC
-void MODE_SWITCH() {
+void keyboard_handler() {
     
     // get the char, put it on the PC command line
     char a = pc.getc();
 
-    // if the char is N, update bounds to normal mode
-    if(a == 'N'){
+    if (keyboard_needs_numeric) {
+        if (a >= '0' && a <= '9') {
+            // update observation interval
+            obs_int = (a - '0') * 5;
+        } else {
+            pc.printf("Expected numeric key\n");    
+        }
+    } else if(a == 'N'){
+        // if the char is N, update bounds to normal mode
         curr_mode = NORMAL;
         upper_bound = 100;
         lower_bound = 40;
@@ -123,7 +131,9 @@
         if(curr_mode == MANUAL){
             pc.printf("MODE IS MANUAL GOT VPACE\n");   
         }  
-    }else{
+    }else if (a == 'O'){
+        keyboard_needs_numeric = 1;
+    } else{
         // do nothing for invalid char
     }
     
@@ -156,8 +166,9 @@
 
 
 int main() {
+    https://developer.mbed.org/users/chadnach1/code/PacemakerController/
     // connect the serial device (PC keybd) to the interrupt
-    pc.attach(&MODE_SWITCH);
+    pc.attach(&keyboard_handler);
     
     Thread t3(pm_sense);
     Thread t4(pm_response);