heart for pacemaker

Dependencies:   TextLCD mbed-rtos mbed

Committer:
williamrchr
Date:
Wed Nov 30 20:52:41 2016 +0000
Revision:
1:82631d83e51e
Parent:
0:08412491e70f
Child:
2:2bae2020ac36
commit;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
williamrchr 0:08412491e70f 1 #include "mbed.h"
williamrchr 0:08412491e70f 2 #include "rtos.h"
williamrchr 0:08412491e70f 3 #include "TextLCD.h"
williamrchr 0:08412491e70f 4
williamrchr 0:08412491e70f 5 TextLCD lcd(p15,p16,p17,p18,p19,p20,TextLCD::LCD16x2);
williamrchr 0:08412491e70f 6 Serial pc(USBTX, USBRX); //set up serial
williamrchr 0:08412491e70f 7 DigitalOut natAPace(LED1); //leds for pacing
williamrchr 0:08412491e70f 8 DigitalOut natVPace(LED2);
williamrchr 0:08412491e70f 9 DigitalOut aPace(LED3);
williamrchr 0:08412491e70f 10 DigitalOut vPace(LED4);
williamrchr 0:08412491e70f 11 DigitalOut alarm(p5); //pin for alarm
williamrchr 0:08412491e70f 12
williamrchr 0:08412491e70f 13 DigitalOut a_signal(p6); //connected to pm
williamrchr 0:08412491e70f 14 DigitalOut v_signal(p7); //connected to pm
williamrchr 0:08412491e70f 15
williamrchr 0:08412491e70f 16 unsigned int a_time = 0;
williamrchr 0:08412491e70f 17 unsigned int v_time = 0;
williamrchr 0:08412491e70f 18
williamrchr 0:08412491e70f 19 int mode = 0; //0 = random, 1 = manual, 2 = test
williamrchr 0:08412491e70f 20
williamrchr 0:08412491e70f 21 //constants
williamrchr 0:08412491e70f 22
williamrchr 1:82631d83e51e 23 const int minwait_A = 10; //all in msec
williamrchr 0:08412491e70f 24 const int minwait_V = 20;
williamrchr 0:08412491e70f 25 const int LRI = 1000;
williamrchr 0:08412491e70f 26 const int VRP = 400;
williamrchr 0:08412491e70f 27 const int PVARP = 500;
williamrchr 0:08412491e70f 28 const int URI = 1000;
williamrchr 0:08412491e70f 29 const int AVI = 100;
williamrchr 0:08412491e70f 30
williamrchr 1:82631d83e51e 31 void random_mode() {
williamrchr 1:82631d83e51e 32 if(a_time >= min_waitA) {
williamrchr 1:82631d83e51e 33 send_signal(0);
williamrchr 1:82631d83e51e 34 a_time = 0;
williamrchr 1:82631d83e51e 35 }
williamrchr 1:82631d83e51e 36 if(v_time >= min_waitV) {
williamrchr 1:82631d83e51e 37 send_signal(1);
williamrchr 1:82631d83e51e 38 v_time = 0;
williamrchr 1:82631d83e51e 39 }
williamrchr 1:82631d83e51e 40 }
williamrchr 1:82631d83e51e 41
williamrchr 0:08412491e70f 42 void switch_modes() {
williamrchr 0:08412491e70f 43 switch(mode) {
williamrchr 1:82631d83e51e 44 case 0: //becomes random
williamrchr 0:08412491e70f 45 break;
williamrchr 1:82631d83e51e 46 case 1: //becomes manual
williamrchr 0:08412491e70f 47 break;
williamrchr 1:82631d83e51e 48 case 2: //becomes test
williamrchr 0:08412491e70f 49 break;
williamrchr 0:08412491e70f 50
williamrchr 0:08412491e70f 51 }
williamrchr 0:08412491e70f 52
williamrchr 0:08412491e70f 53 }
williamrchr 0:08412491e70f 54
williamrchr 0:08412491e70f 55
williamrchr 0:08412491e70f 56 void received_apace() {
williamrchr 0:08412491e70f 57 //TODO: DO
williamrchr 0:08412491e70f 58 aPace = 1;
williamrchr 0:08412491e70f 59
williamrchr 0:08412491e70f 60 }
williamrchr 0:08412491e70f 61
williamrchr 0:08412491e70f 62 void received_vpace() {
williamrchr 0:08412491e70f 63 //TODO: DO
williamrchr 0:08412491e70f 64 vPace = 1;
williamrchr 0:08412491e70f 65
williamrchr 0:08412491e70f 66 }
williamrchr 0:08412491e70f 67
williamrchr 0:08412491e70f 68 void send_signal(int type) { //type=0 a_signal, type=1 v_signal
williamrchr 0:08412491e70f 69
williamrchr 0:08412491e70f 70 switch(type) {
williamrchr 0:08412491e70f 71 case 0:
williamrchr 0:08412491e70f 72 a_signal = 1;
williamrchr 1:82631d83e51e 73 natAPace = 1;
williamrchr 0:08412491e70f 74 case 1:
williamrchr 0:08412491e70f 75 v_signal = 1;
williamrchr 1:82631d83e51e 76 natVPace = 1;
williamrchr 0:08412491e70f 77 }
williamrchr 0:08412491e70f 78 wait(1);
williamrchr 1:82631d83e51e 79 a_signal = 0;
williamrchr 1:82631d83e51e 80 v_signal = 0;
williamrchr 1:82631d83e51e 81 natAPace = 0;
williamrchr 1:82631d83e51e 82 natVPace = 0
williamrchr 0:08412491e70f 83 }
williamrchr 0:08412491e70f 84
williamrchr 0:08412491e70f 85 void heart_keyboard() {
williamrchr 0:08412491e70f 86 while(true) { //thread is continuously running
williamrchr 0:08412491e70f 87 if(pc.readable()) {
williamrchr 0:08412491e70f 88 char c = pc.getc();
williamrchr 0:08412491e70f 89
williamrchr 0:08412491e70f 90 switch(c) {
williamrchr 0:08412491e70f 91 case 'r': //set to random mode
williamrchr 0:08412491e70f 92 mode = 0;
williamrchr 0:08412491e70f 93 break;
williamrchr 0:08412491e70f 94 case 'm': //set to manual mode
williamrchr 0:08412491e70f 95 mode = 1;
williamrchr 0:08412491e70f 96 break;
williamrchr 0:08412491e70f 97 case 't': //set to test mode
williamrchr 0:08412491e70f 98 mode = 2;
williamrchr 0:08412491e70f 99 break;
williamrchr 0:08412491e70f 100 case 'a': //asignal
williamrchr 0:08412491e70f 101 if(mode) { //only if in manual (heart_mode == 1)
williamrchr 0:08412491e70f 102 send_signal(0);
williamrchr 0:08412491e70f 103 }
williamrchr 0:08412491e70f 104 break;
williamrchr 0:08412491e70f 105 case 'v': //vsignal
williamrchr 0:08412491e70f 106 if(mode) { //only if in manual (heart_mode == 1)
williamrchr 0:08412491e70f 107 send_signal(1);
williamrchr 0:08412491e70f 108 }
williamrchr 0:08412491e70f 109 break;
williamrchr 0:08412491e70f 110 default: //erroneous key get rid of it
williamrchr 0:08412491e70f 111 break;
williamrchr 0:08412491e70f 112 }
williamrchr 0:08412491e70f 113 }
williamrchr 0:08412491e70f 114 }
williamrchr 0:08412491e70f 115 }
williamrchr 0:08412491e70f 116
williamrchr 0:08412491e70f 117 void tick() {
williamrchr 0:08412491e70f 118 a_time++;
williamrchr 0:08412491e70f 119 v_time++;
williamrchr 0:08412491e70f 120 }
williamrchr 0:08412491e70f 121
williamrchr 0:08412491e70f 122 int main() {
williamrchr 0:08412491e70f 123 //TODO: Set up threads
williamrchr 0:08412491e70f 124
williamrchr 0:08412491e70f 125 }