reeeeeeeeeeeeeee

Dependencies:   MotionSensor mbed

Fork of Assignment2_ver5 by weeb grammers

Committer:
Judorunner
Date:
Mon Nov 14 22:47:00 2016 +0000
Revision:
6:9b8fee13549c
Parent:
5:45d58f8a5912
Child:
7:6dc42e1a2a81
ll

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Judorunner 2:e2ae43e8acab 1 #include "PaceHeart.h"
oopakhooo 3:641eefd1110b 2 #include "mbed.h"
oopakhooo 3:641eefd1110b 3 #include "Hardware.h"
oopakhooo 3:641eefd1110b 4 using namespace std;
oopakhooo 3:641eefd1110b 5
oopakhooo 3:641eefd1110b 6
Judorunner 2:e2ae43e8acab 7
oopakhooo 3:641eefd1110b 8 PaceHeart::PaceHeart(){
weebgrammers 5:45d58f8a5912 9
oopakhooo 3:641eefd1110b 10 p_pacingState = 0;
oopakhooo 3:641eefd1110b 11 p_pacingMode = 0;
oopakhooo 3:641eefd1110b 12 int p_hysteresis = 0;
oopakhooo 3:641eefd1110b 13 int p_hysteresisInterval = 300;
Judorunner 6:9b8fee13549c 14 double p_lowrateInterval = 1000.0;
Judorunner 6:9b8fee13549c 15 double p_uprateInterval = 500.0; //upper rate limit
oopakhooo 3:641eefd1110b 16 //Ventricle
oopakhooo 3:641eefd1110b 17 double p_vPaceAmp = 3500.0;
oopakhooo 3:641eefd1110b 18 double p_vPaceWidth = 0.4;
oopakhooo 3:641eefd1110b 19 int p_VRP = 320;
oopakhooo 3:641eefd1110b 20 //Atrium (change defaults)
oopakhooo 3:641eefd1110b 21 double p_aPaceAmp = 3500.0;
oopakhooo 3:641eefd1110b 22 double p_aPaceWidth = 0.4;
oopakhooo 3:641eefd1110b 23 int p_ARP = 320;
oopakhooo 3:641eefd1110b 24 }
Judorunner 2:e2ae43e8acab 25
weebgrammers 5:45d58f8a5912 26 PaceHeart::PaceHeart(int mode){
weebgrammers 5:45d58f8a5912 27 p_pacingState = 0;
weebgrammers 5:45d58f8a5912 28 p_pacingMode = mode;
Judorunner 6:9b8fee13549c 29 double p_lowrateInterval = 1000.0; //30-50->5 50-90->1 90-175->5 ppm
Judorunner 6:9b8fee13549c 30 double p_uprateInterval = 2000.0; //upper rate limit 50-175->5 ppm
Judorunner 6:9b8fee13549c 31 double p_maxSensorRate = 2000.0; //50-175->5 ppm
weebgrammers 5:45d58f8a5912 32
weebgrammers 5:45d58f8a5912 33 //Ventricle
weebgrammers 5:45d58f8a5912 34 double p_vPaceAmp = 3750.0; //3750 can change to 0, 1250, 2500, 3750, 5000
weebgrammers 5:45d58f8a5912 35 double p_vPaceWidth = 0.4; //0.05->no change 0.1-1.9 0.1
weebgrammers 5:45d58f8a5912 36
weebgrammers 5:45d58f8a5912 37 int p_activityThresh = 4; //1-7 print out string with level ie. Med
Judorunner 6:9b8fee13549c 38 int p_reactionTime = 30; //10-50->10 seconds
weebgrammers 5:45d58f8a5912 39 int p_responseFactor = 8; //1-16->1
Judorunner 6:9b8fee13549c 40 int p_recoveryTime = 5; //2-16->1 minutes
weebgrammers 5:45d58f8a5912 41 }
oopakhooo 3:641eefd1110b 42 int PaceHeart::get_p_pacingState()
Judorunner 2:e2ae43e8acab 43 {
Judorunner 2:e2ae43e8acab 44 return p_pacingState;
Judorunner 2:e2ae43e8acab 45 }
oopakhooo 3:641eefd1110b 46 int PaceHeart::get_p_pacingMode()
Judorunner 2:e2ae43e8acab 47 {
Judorunner 2:e2ae43e8acab 48 return p_pacingMode;
Judorunner 2:e2ae43e8acab 49 }
oopakhooo 3:641eefd1110b 50 int PaceHeart::get_p_hysteresis()
Judorunner 2:e2ae43e8acab 51 {
oopakhooo 3:641eefd1110b 52 return p_hysteresis;
Judorunner 2:e2ae43e8acab 53 }
oopakhooo 3:641eefd1110b 54 void PaceHeart::set_p_hysteresis(int x)
Judorunner 2:e2ae43e8acab 55 {
Judorunner 2:e2ae43e8acab 56 p_hysteresis = x;
Judorunner 2:e2ae43e8acab 57 return;
Judorunner 2:e2ae43e8acab 58 }
oopakhooo 3:641eefd1110b 59 int PaceHeart::get_p_hysteresisInterval()
Judorunner 2:e2ae43e8acab 60 {
oopakhooo 3:641eefd1110b 61 return p_hysteresisInterval;
Judorunner 2:e2ae43e8acab 62 }
oopakhooo 3:641eefd1110b 63 void PaceHeart::set_p_hysteresisInterval(int x)
Judorunner 2:e2ae43e8acab 64 {
oopakhooo 3:641eefd1110b 65 p_hysteresisInterval = x;
Judorunner 2:e2ae43e8acab 66 return;
Judorunner 2:e2ae43e8acab 67 }
Judorunner 6:9b8fee13549c 68 double PaceHeart::get_p_lowrateInterval()
Judorunner 2:e2ae43e8acab 69 {
Judorunner 6:9b8fee13549c 70 return p_lowrateInterval;
Judorunner 2:e2ae43e8acab 71 }
Judorunner 6:9b8fee13549c 72 void PaceHeart::set_p_lowrateInterval(double x)
Judorunner 2:e2ae43e8acab 73 {
Judorunner 6:9b8fee13549c 74 if (p_pacingmode == 1) {
Judorunner 6:9b8fee13549c 75
Judorunner 6:9b8fee13549c 76 if (x >= 500 && x < 833.33) {
Judorunner 6:9b8fee13549c 77 p_lowrateInterval = x+83.33;
Judorunner 6:9b8fee13549c 78 }
Judorunner 6:9b8fee13549c 79 else if (x >= 833.33 && x < 1000) {
Judorunner 6:9b8fee13549c 80 p_lowrateInterval = x+16.67;
Judorunner 6:9b8fee13549c 81 }
Judorunner 6:9b8fee13549c 82 else if (x >= 1000 && x < 1500) {
Judorunner 6:9b8fee13549c 83 p_lowrateInterval = x-16.67;
Judorunner 6:9b8fee13549c 84 }
Judorunner 6:9b8fee13549c 85 else if (x >= 1500 && x < 2916.67) {
Judorunner 6:9b8fee13549c 86 p_lowrateInterval = x-83.33;
Judorunner 6:9b8fee13549c 87 }
Judorunner 6:9b8fee13549c 88 }
Judorunner 6:9b8fee13549c 89 else {
Judorunner 6:9b8fee13549c 90 p_lowrateInterval = x;
Judorunner 6:9b8fee13549c 91 }
Judorunner 2:e2ae43e8acab 92 return;
Judorunner 2:e2ae43e8acab 93 }
Judorunner 6:9b8fee13549c 94 double PaceHeart::get_p_uprateInterval()
Judorunner 2:e2ae43e8acab 95 {
Judorunner 6:9b8fee13549c 96 return p_uprateInterval;
Judorunner 2:e2ae43e8acab 97 }
Judorunner 6:9b8fee13549c 98 void PaceHeart::set_p_uprateInterval(double x)
Judorunner 2:e2ae43e8acab 99 {
Judorunner 6:9b8fee13549c 100 if (p_pacingmode == 1) {
Judorunner 6:9b8fee13549c 101 if (x >= 833.33 && x < 2000) {
Judorunner 6:9b8fee13549c 102 p_uprateInterval = x+83.33;
Judorunner 6:9b8fee13549c 103 }
Judorunner 6:9b8fee13549c 104 else if (x >= 2000 && x <= 2916.67) {
Judorunner 6:9b8fee13549c 105 p_uprateInterval = x-83.33;
Judorunner 6:9b8fee13549c 106 }
Judorunner 6:9b8fee13549c 107 }
Judorunner 6:9b8fee13549c 108 else {
Judorunner 6:9b8fee13549c 109 p_uprateInterval = x;
Judorunner 6:9b8fee13549c 110 }
Judorunner 6:9b8fee13549c 111 return;
Judorunner 6:9b8fee13549c 112 }
Judorunner 6:9b8fee13549c 113 double PaceHeart::get_p_maxSensorRate(){
Judorunner 6:9b8fee13549c 114 return
Judorunner 6:9b8fee13549c 115 }
Judorunner 6:9b8fee13549c 116 void PaceHeart::set_p_maxSensorRate(double x)
Judorunner 6:9b8fee13549c 117 {
Judorunner 6:9b8fee13549c 118 if (p_pacingmode == 1) {
Judorunner 6:9b8fee13549c 119 if (x >= 833.33 && x < 2000) {
Judorunner 6:9b8fee13549c 120 p_maxSensorRate = x+83.33;
Judorunner 6:9b8fee13549c 121 }
Judorunner 6:9b8fee13549c 122 else if (x >= 2000 && x <= 2916.67) {
Judorunner 6:9b8fee13549c 123 p_maxSensorRate = x-83.33;
Judorunner 6:9b8fee13549c 124 }
Judorunner 6:9b8fee13549c 125 }
Judorunner 6:9b8fee13549c 126 else {
Judorunner 6:9b8fee13549c 127 p_maxSensorRate = x;
Judorunner 6:9b8fee13549c 128 }
Judorunner 2:e2ae43e8acab 129 return;
Judorunner 2:e2ae43e8acab 130 }
oopakhooo 3:641eefd1110b 131 //Ventricle
oopakhooo 3:641eefd1110b 132 double PaceHeart::get_p_vPaceAmp()
oopakhooo 3:641eefd1110b 133 {
oopakhooo 3:641eefd1110b 134 return p_vPaceAmp;
oopakhooo 3:641eefd1110b 135 }
oopakhooo 3:641eefd1110b 136 void PaceHeart::set_p_vPaceAmp(double x)
oopakhooo 3:641eefd1110b 137 {
oopakhooo 3:641eefd1110b 138 p_vPaceAmp = x;
oopakhooo 3:641eefd1110b 139 return;
oopakhooo 3:641eefd1110b 140 }
oopakhooo 3:641eefd1110b 141
oopakhooo 3:641eefd1110b 142 double PaceHeart::get_p_vPaceWidth()
Judorunner 2:e2ae43e8acab 143 {
Judorunner 2:e2ae43e8acab 144 return p_vPaceWidth;
Judorunner 2:e2ae43e8acab 145 }
oopakhooo 3:641eefd1110b 146 void PaceHeart::set_p_vPaceWidth(double x)
Judorunner 2:e2ae43e8acab 147 {
Judorunner 2:e2ae43e8acab 148 p_vPaceWidth = x;
Judorunner 2:e2ae43e8acab 149 return;
Judorunner 2:e2ae43e8acab 150 }
oopakhooo 3:641eefd1110b 151
oopakhooo 3:641eefd1110b 152 int PaceHeart::get_p_VRP()
Judorunner 2:e2ae43e8acab 153 {
Judorunner 2:e2ae43e8acab 154 return p_VRP;
Judorunner 2:e2ae43e8acab 155 }
oopakhooo 3:641eefd1110b 156 void PaceHeart::set_p_VRP(int x)
Judorunner 2:e2ae43e8acab 157 {
Judorunner 2:e2ae43e8acab 158 p_VRP = x;
Judorunner 2:e2ae43e8acab 159 return;
oopakhooo 3:641eefd1110b 160 }
oopakhooo 3:641eefd1110b 161 //Atrium
oopakhooo 3:641eefd1110b 162 double PaceHeart::get_p_aPaceAmp()
oopakhooo 3:641eefd1110b 163 {
oopakhooo 3:641eefd1110b 164 return p_aPaceAmp;
oopakhooo 3:641eefd1110b 165 }
oopakhooo 3:641eefd1110b 166 void PaceHeart::set_p_aPaceAmp(double x)
oopakhooo 3:641eefd1110b 167 {
oopakhooo 3:641eefd1110b 168 p_aPaceAmp = x;
oopakhooo 3:641eefd1110b 169 return;
oopakhooo 3:641eefd1110b 170 }
oopakhooo 3:641eefd1110b 171
oopakhooo 3:641eefd1110b 172 double PaceHeart::get_p_aPaceWidth()
oopakhooo 3:641eefd1110b 173 {
oopakhooo 3:641eefd1110b 174 return p_aPaceWidth;
oopakhooo 3:641eefd1110b 175 }
oopakhooo 3:641eefd1110b 176 void PaceHeart::set_p_aPaceWidth(double x)
oopakhooo 3:641eefd1110b 177 {
oopakhooo 3:641eefd1110b 178 p_aPaceWidth = x;
oopakhooo 3:641eefd1110b 179 return;
oopakhooo 3:641eefd1110b 180 }
oopakhooo 3:641eefd1110b 181
oopakhooo 3:641eefd1110b 182 int PaceHeart::get_p_ARP()
oopakhooo 3:641eefd1110b 183 {
oopakhooo 3:641eefd1110b 184 return p_ARP;
oopakhooo 3:641eefd1110b 185 }
oopakhooo 3:641eefd1110b 186 void PaceHeart::set_p_ARP(int x)
oopakhooo 3:641eefd1110b 187 {
oopakhooo 3:641eefd1110b 188 p_ARP = x;
oopakhooo 3:641eefd1110b 189 return;
oopakhooo 3:641eefd1110b 190 }
oopakhooo 3:641eefd1110b 191
oopakhooo 3:641eefd1110b 192
oopakhooo 3:641eefd1110b 193
oopakhooo 3:641eefd1110b 194 void PaceHeart::pace_A(double amp, double wid,int pin)
oopakhooo 3:641eefd1110b 195 {
oopakhooo 3:641eefd1110b 196 output_pin_A = !output_pin_A ;
oopakhooo 3:641eefd1110b 197 wait(1);
oopakhooo 3:641eefd1110b 198
oopakhooo 3:641eefd1110b 199
oopakhooo 3:641eefd1110b 200
oopakhooo 3:641eefd1110b 201 return;
oopakhooo 3:641eefd1110b 202 }
oopakhooo 3:641eefd1110b 203
oopakhooo 3:641eefd1110b 204 void PaceHeart::pace_A()
oopakhooo 3:641eefd1110b 205 {
oopakhooo 3:641eefd1110b 206 double amplitude = get_p_aPaceAmp();
oopakhooo 3:641eefd1110b 207 double width = get_p_aPaceWidth();
oopakhooo 3:641eefd1110b 208 // int output_pin = hardware.get_output_pin; //include the hardware module
oopakhooo 3:641eefd1110b 209 pace_A(amplitude,width,output_pin_A);
oopakhooo 3:641eefd1110b 210 return;
oopakhooo 3:641eefd1110b 211 }
oopakhooo 3:641eefd1110b 212
oopakhooo 3:641eefd1110b 213
oopakhooo 3:641eefd1110b 214 void PaceHeart::pace_V(double amp, double wid, int pin)
oopakhooo 3:641eefd1110b 215 {
oopakhooo 3:641eefd1110b 216 output_pin_V = !output_pin_V ;
oopakhooo 3:641eefd1110b 217 wait(2);
oopakhooo 3:641eefd1110b 218
oopakhooo 3:641eefd1110b 219 return;
oopakhooo 3:641eefd1110b 220 }
oopakhooo 3:641eefd1110b 221
oopakhooo 3:641eefd1110b 222 void PaceHeart::pace_V()
oopakhooo 3:641eefd1110b 223 {
oopakhooo 3:641eefd1110b 224 double amplitude = get_p_vPaceAmp();
oopakhooo 3:641eefd1110b 225 double width = get_p_vPaceWidth();
oopakhooo 3:641eefd1110b 226 // int output_pin = hardware.get_output_pin; //include the hardware module
oopakhooo 3:641eefd1110b 227 pace_V(amplitude,width,output_pin_V);
oopakhooo 3:641eefd1110b 228 return;
oopakhooo 3:641eefd1110b 229 }
oopakhooo 3:641eefd1110b 230
oopakhooo 3:641eefd1110b 231
oopakhooo 3:641eefd1110b 232 void PaceHeart::pace(int mode)
oopakhooo 3:641eefd1110b 233 {
oopakhooo 3:641eefd1110b 234 switch(mode){
oopakhooo 3:641eefd1110b 235 case 1: //AOO
oopakhooo 3:641eefd1110b 236 pace_A();
oopakhooo 3:641eefd1110b 237 case 2: //VOO
oopakhooo 3:641eefd1110b 238 pace_V();
oopakhooo 3:641eefd1110b 239 }
oopakhooo 3:641eefd1110b 240 return;
oopakhooo 3:641eefd1110b 241 }
oopakhooo 3:641eefd1110b 242
oopakhooo 3:641eefd1110b 243 void PaceHeart::pace()
oopakhooo 3:641eefd1110b 244 {
oopakhooo 3:641eefd1110b 245 int mode = get_p_pacingMode();
oopakhooo 3:641eefd1110b 246 pace(mode);
oopakhooo 3:641eefd1110b 247 return;
oopakhooo 3:641eefd1110b 248 }
Judorunner 6:9b8fee13549c 249 int PaceHeart::get_p_activityThresh()
weebgrammers 5:45d58f8a5912 250 {
weebgrammers 5:45d58f8a5912 251 return p_activityThresh;
weebgrammers 5:45d58f8a5912 252 }
Judorunner 6:9b8fee13549c 253 int PaceHeart::get_p_reactionTime()
weebgrammers 5:45d58f8a5912 254 {
weebgrammers 5:45d58f8a5912 255 return p_reactionTime;
weebgrammers 5:45d58f8a5912 256 }
Judorunner 6:9b8fee13549c 257 int PaceHeart::get_p_responseFactor()
weebgrammers 5:45d58f8a5912 258 {
weebgrammers 5:45d58f8a5912 259 return p_responseFactor;
weebgrammers 5:45d58f8a5912 260 }
Judorunner 6:9b8fee13549c 261 int PaceHeart::get_p_recoveryTime()
weebgrammers 5:45d58f8a5912 262 {
weebgrammers 5:45d58f8a5912 263 return p_recoveryTime;
weebgrammers 5:45d58f8a5912 264 }
Judorunner 6:9b8fee13549c 265 void PaceHeart::set_p_activityThresh(int x)
weebgrammers 5:45d58f8a5912 266 {
weebgrammers 5:45d58f8a5912 267 p_activityThresh=x;
weebgrammers 5:45d58f8a5912 268 return;
weebgrammers 5:45d58f8a5912 269 }
Judorunner 6:9b8fee13549c 270 void PaceHeart::set_p_reactionTime(int x)
weebgrammers 5:45d58f8a5912 271 {
weebgrammers 5:45d58f8a5912 272 p_reactionTime=x;
weebgrammers 5:45d58f8a5912 273 return;
weebgrammers 5:45d58f8a5912 274 }
Judorunner 6:9b8fee13549c 275 void PaceHeart::set_p_responseFactor(int x)
weebgrammers 5:45d58f8a5912 276 {
weebgrammers 5:45d58f8a5912 277 p_responseFactor=x;
weebgrammers 5:45d58f8a5912 278 return;
weebgrammers 5:45d58f8a5912 279 }
Judorunner 6:9b8fee13549c 280 void PaceHeart::set_p_recoveryTime(int x)
weebgrammers 5:45d58f8a5912 281 {
weebgrammers 5:45d58f8a5912 282 p_recoveryTime=x;
weebgrammers 5:45d58f8a5912 283 return;
weebgrammers 5:45d58f8a5912 284 }