Pacemaker code Implementation for SFWRENG 3K04

Dependencies:   FXOS8700Q Queue mbed-rtos mbed

Fork of Pacemaker by Eric dollar

Revision:
20:bfd23a6845bb
Parent:
19:d58e1e1a9a24
Child:
22:19b187e345c9
--- a/interface.cpp	Thu Nov 24 01:10:08 2016 +0000
+++ b/interface.cpp	Thu Nov 24 03:26:14 2016 +0000
@@ -1,4 +1,4 @@
-#pragma once
+    #pragma once
 #include "mbed.h"
 #include "interface.h"
 #include "hardware.h"
@@ -91,24 +91,78 @@
 }
 
 void interface::chamberDataScreen(chamberData* chamber){
-            if (chamber == atrData)
-            pc->printf("\nAtrium Data");
-            
-            if (chamber == ventData)   
-            pc->printf("\nVentricle Data");
-            
-            pc->printf("\n1. Pace Amplitude: %f", chamber->getPaceAmp()*7);
-            pc->printf("\n2. Pace Width: %f", chamber->getPaceWidth());
-            pc->printf("\n3. Refractory Period: %f", chamber->getRP());
-            pc->printf("\n4. Sensitivity: %f", chamber->getSensitivity());
-            pc->printf("\nChoose variable to be changed or 5 To return to Data Sets");
-            interface::getData(chamber);
+    if (chamber == atrData)
+    pc->printf("\nAtrium Data");
+    
+    if (chamber == ventData)   
+    pc->printf("\nVentricle Data");
+    
+    pc->printf("\n1. Pace Amplitude: %f", chamber->getPaceAmp()*7);
+    pc->printf("\n2. Pace Width: %f", chamber->getPaceWidth());
+    pc->printf("\n3. Refractory Period: %f", chamber->getRP());
+    pc->printf("\n4. Sensitivity: %f", chamber->getSensitivity());
+    pc->printf("\nChoose variable to be changed or 5 To return to Data Sets");
+    
+    char command = getChar();
+    switch (command){
+        case '1':
+            pc->printf("\nChoose New Value for the Pace Amplitude:");
+            char* value = getInput();
+            int valInRange = chamber->chngPaceAmp(atof(value));
+            if(valInRange == 1){
+                pc->printf("\t%f",chamber->getPaceAmp()*7);
+            }else{
+                pc->printf("\nThat value is not within range.");   
+            }
+            interface::dataScreen();
+            break;
+        case '2':
+            pc->printf("\nChoose New Value for the Pace Width:");
+            value = getInput();
+            valInRange = chamber->chngPaceWidth(atof(value));
+            if(valInRange == 1){
+                pc->printf("\t%f",chamber->getPaceWidth());
+            }else{
+                pc->printf("\nThat value is not within range.");   
+            }
+            interface::dataScreen();
+            break;
+        case '3':
+            pc->printf("\nChoose New Value for the Refractory Period:");
+            value = getInput();
+            valInRange = chamber->chngRP(atof(value));
+            if(valInRange == 1){
+                pc->printf("\t%f",chamber->getRP());
+            }else{
+                pc->printf("\nThat value is not within range.");   
+            }
+            interface::dataScreen();
+            break;
+        case '4':
+            pc->printf("\nChoose New Value for the Sensitivity:");
+            value = getInput();
+            valInRange = chamber->chngSensitivity(atof(value));
+            if(valInRange == 1){
+                pc->printf("\t%f",chamber->getSensitivity());
+            }else{
+                pc->printf("\nThat value is not within range.");   
+            }
+            interface::dataScreen();
+            break;
+        case '5':
+            interface::dataScreen();
+            break;
+        default:
+            pc->printf("\nThat is not an option.");
+            interface::chamberDataScreen(chamber);
+            break;
+    }  
 }
 
 void interface::genDataScreen(){ //moved option 3 from dataScreen() into its own method
     pc->printf("\nGeneral Data");
     pc->printf("\n1. Hysteresis: %s", generalData->getHyst() ? "true" : "false");
-    pc->printf("\n2. Hysteresis Interval: %f", generalData->getHystInterval());
+    pc->printf("\n2. Hysteresis Rate Limit: %f", generalData->getHystRL());
     pc->printf("\n3. Lower Rate Limit: %f", generalData->getLRL());
     pc->printf("\n4. Upper Rate Limit: %f", generalData->getURL());
     pc->printf("\n5. Atrial-Ventricular Delay: %f", generalData->getAVdelay());
@@ -118,70 +172,90 @@
     char command = getChar();
     switch (command) {
         case '1':
-            pc->printf("\nNot setup yet\n");
+            pc->printf("\nSet Hysteresis (t for true, f for false):");
+            char* value = getInput();
+            if(*value == 't'){
+                generalData->chngHyst(true);
+            }else if(*value == 'f'){
+                generalData->chngHyst(false);
+            }else{
+                pc->printf("You may only enter 't' or 'f'.");   
+            }
+            pc->printf("%s", generalData->getHyst() ? "true" : "false");
             interface::genDataScreen();
             break;
         case '2':
-            pc->printf("\nNot setup yet\n");
+            pc->printf("\nChoose New Value for Hysteresis Rate Limit:");
+            value = getInput();
+            int valInRange = generalData->chngHystRL(atof(value));
+            if(valInRange == 1){
+                pc->printf("\t%f",generalData->getHystRL());
+            }else{
+                pc->printf("\nThat value is not within range.");   
+            }
             interface::genDataScreen();
             break;
         case '3':
-            pc->printf("\nNot setup yet\n");
+            pc->printf("\nChoose New Value for the Lower Rate Limit:");
+            value = getInput();
+            valInRange = generalData->chngLRL(atof(value));
+            if(valInRange == 1){
+                pc->printf("\t%f",generalData->getLRL());
+            }else{
+                pc->printf("\nThat value is not within range.");   
+            }
             interface::genDataScreen();
+            break;
         case '4':
-            pc->printf("\nNot setup yet\n");
+            pc->printf("\nChoose New Value for the Upper Rate Limit:");
+            value = getInput();
+            valInRange = generalData->chngURL(atof(value));
+            if(valInRange == 1){
+                pc->printf("\t%f",generalData->getURL());
+            }else{
+                pc->printf("\nThat value is not within range.");   
+            }
             interface::genDataScreen();
             break;
         case '5':
-            interface::dataScreen(); 
+            pc->printf("\nChoose New Value for the Atrial-Ventricular Delay:");
+            value = getInput();
+            valInRange = generalData->chngAVdelay(atof(value));
+            if(valInRange == 1){
+                pc->printf("\t%f",generalData->getAVdelay());
+            }else{
+                pc->printf("\nThat value is not within range.");   
+            }
+            interface::genDataScreen();
+            break; 
+        case '6':
+            pc->printf("\nChoose New Value for the Atrial-Ventricular Delay Offset:");
+            value = getInput();
+            valInRange = generalData->chngAVdelayOffset(atof(value));
+            if(valInRange == 1){
+                pc->printf("\t%f",generalData->getAVdelayOffset());
+            }else{
+                pc->printf("\nThat value is not within range.");  
+            }
+            interface::genDataScreen();
+            break;
+        case '7':
+            pc->printf("\nChoose New Value for the Rate Smoothing:");
+            value = getInput();
+            valInRange = generalData->chngRSmooth(atof(value));
+            if(valInRange == 1){
+                pc->printf("\t%f",generalData->getRSmooth());
+            }else{
+                pc->printf("\nThat value is not within range.");   
+            }
+            interface::genDataScreen();
+            break;
         default:
             pc->printf("\nThat is not an option.\n");
             interface::genDataScreen();
+            break;
     }  
 }
-
-
-void interface::getData(chamberData* chamber){
-    char command = getChar();
-    switch (command){
-        case '1':
-            pc->printf("\nChoose New Value:");
-            char* value = getInput();
-            chamber->chngPaceAmp(atof(value));
-            pc->printf("\t%f",chamber->getPaceAmp()*7);
-            interface::dataScreen();
-            break;
-        case '2':
-            pc->printf("\nChoose New Value:");
-            value = getInput();
-            chamber->chngPaceWidth(atof(value));
-            pc->printf("\t%f",chamber->getPaceWidth());
-            interface::dataScreen();
-            break;
-        case '3':
-            pc->printf("\nChoose New Value:");
-            value = getInput();
-            chamber->chngRP(atof(value));
-            pc->printf("\t%f",chamber->getRP());
-            interface::dataScreen();
-            break;
-        case '4':
-            pc->printf("\nChoose New Value:");
-            value = getInput();
-            chamber->chngSensitivity(atof(value));
-            pc->printf("\t%f",chamber->getSensitivity());
-            interface::dataScreen();
-            break;
-        case '5':
-            interface::dataScreen();
-            break;
-        default:
-            pc->printf("\nThat is not an option.");
-            interface::getData(chamber);
-    }  
- }
- 
- 
  
 char* interface::getInput(){
     char buffer[5];