![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
reeeeeeeeeeeeeee
Dependencies: MotionSensor mbed
Fork of Assignment2_ver3 by
PaceHeart.cpp@6:9b8fee13549c, 2016-11-14 (annotated)
- 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?
User | Revision | Line number | New 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 | } |