yay!

Dependencies:   TextLCD mbed-rtos mbed

Fork of 541_Pacermaker by CIS541

Committer:
adamvan101
Date:
Wed Dec 02 02:27:30 2015 +0000
Revision:
3:2ed03f9e0042
Parent:
2:3d47bb081502
Alarms!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
adamvan101 2:3d47bb081502 1 #include "mbed.h"
adamvan101 2:3d47bb081502 2 #include "rtos.h"
adamvan101 2:3d47bb081502 3
adamvan101 2:3d47bb081502 4 #define NORMAL 1
adamvan101 2:3d47bb081502 5 #define EXERCISE 2
adamvan101 2:3d47bb081502 6 #define SLEEP 3
adamvan101 2:3d47bb081502 7 #define MANUAL 4
adamvan101 2:3d47bb081502 8
adamvan101 2:3d47bb081502 9 #define LRI_const 1
adamvan101 2:3d47bb081502 10 #define URI_const 2
adamvan101 2:3d47bb081502 11 #define AVI_const 3
adamvan101 2:3d47bb081502 12 #define VRP_const 4
adamvan101 2:3d47bb081502 13 #define PVAB_const 5
adamvan101 2:3d47bb081502 14 #define PVARP_const 6
adamvan101 2:3d47bb081502 15
adamvan101 2:3d47bb081502 16 DigitalOut vpaceLED(LED1);
adamvan101 2:3d47bb081502 17 DigitalOut apaceLED(LED2);
adamvan101 2:3d47bb081502 18 DigitalOut vsenseLED(LED3);
adamvan101 2:3d47bb081502 19 DigitalOut asenseLED(LED4);
adamvan101 2:3d47bb081502 20 DigitalOut buzzer(p21);
adamvan101 2:3d47bb081502 21 DigitalOut aPace(p23);
adamvan101 2:3d47bb081502 22 DigitalOut vPace(p24);
adamvan101 2:3d47bb081502 23 InterruptIn ASignal(p25);
adamvan101 2:3d47bb081502 24 InterruptIn VSignal(p26);
adamvan101 2:3d47bb081502 25 Serial pc(USBTX, USBRX);
adamvan101 2:3d47bb081502 26
adamvan101 2:3d47bb081502 27 int32_t signal1 = 0x01;
adamvan101 2:3d47bb081502 28 int32_t signal2 = 0x02;
adamvan101 2:3d47bb081502 29 int32_t signal3 = 0x03;
adamvan101 2:3d47bb081502 30 int32_t signal4 = 0x04;
adamvan101 3:2ed03f9e0042 31 int32_t signal5 = 0x05;
adamvan101 2:3d47bb081502 32
adamvan101 2:3d47bb081502 33 bool waitASignal;
adamvan101 2:3d47bb081502 34 bool waitVSignal;
adamvan101 2:3d47bb081502 35 bool paceA = false;
adamvan101 2:3d47bb081502 36 bool observationChange = false;
adamvan101 2:3d47bb081502 37 bool digitOneReceived = false;
adamvan101 2:3d47bb081502 38 bool modeChanged = false;
adamvan101 2:3d47bb081502 39 bool canPaceV = true;
adamvan101 2:3d47bb081502 40 bool paceVPending = false;
adamvan101 2:3d47bb081502 41 bool ringingAlarm = false;
adamvan101 2:3d47bb081502 42 bool timerRunning = false;
adamvan101 2:3d47bb081502 43 bool aSenseOccurred = true;
adamvan101 2:3d47bb081502 44 bool digitTwoReceived = false;
adamvan101 2:3d47bb081502 45
adamvan101 2:3d47bb081502 46 int heartRate = 0;
adamvan101 3:2ed03f9e0042 47 int avgHeartRate = 0;
adamvan101 2:3d47bb081502 48 int observationInterval = 10000;
adamvan101 2:3d47bb081502 49 int pacemakerInterval = 10;
adamvan101 2:3d47bb081502 50 int rateCoefficient = 6;
adamvan101 2:3d47bb081502 51 int paceMakerMode = NORMAL;
adamvan101 2:3d47bb081502 52 int uriTimeOutStatus = URI_const;
adamvan101 3:2ed03f9e0042 53 int timeConstraint;
adamvan101 2:3d47bb081502 54
adamvan101 3:2ed03f9e0042 55 char ch;
adamvan101 2:3d47bb081502 56
adamvan101 2:3d47bb081502 57 const int normalModeLRI= 1500;
adamvan101 2:3d47bb081502 58 const int normalModeAVI = 65;
adamvan101 2:3d47bb081502 59 const int normalModePVARP = 150;
adamvan101 2:3d47bb081502 60 const int normalModeURI = 600;
adamvan101 2:3d47bb081502 61 const int normalModeVRP = 100;
adamvan101 2:3d47bb081502 62 const int normalModePVAB = 10;
adamvan101 2:3d47bb081502 63
adamvan101 2:3d47bb081502 64 const int sleepModeLRI= 2000;
adamvan101 2:3d47bb081502 65 const int sleepModeAVI = 65;
adamvan101 2:3d47bb081502 66 const int sleepModePVARP = 150;
adamvan101 2:3d47bb081502 67 const int sleepModeURI = 1000;
adamvan101 2:3d47bb081502 68 const int sleepModeVRP = 100;
adamvan101 2:3d47bb081502 69 const int sleepModePVAB = 10;
adamvan101 2:3d47bb081502 70
adamvan101 2:3d47bb081502 71 const int exerciseModeLRI=1000;
adamvan101 2:3d47bb081502 72 const int exerciseModeAVI = 65;
adamvan101 2:3d47bb081502 73 const int exerciseModePVARP = 150;
adamvan101 2:3d47bb081502 74 const int exerciseModeURI = 400;
adamvan101 2:3d47bb081502 75 const int exerciseModeVRP = 100;
adamvan101 2:3d47bb081502 76 const int exerciseModePVAB = 10;
adamvan101 2:3d47bb081502 77
adamvan101 2:3d47bb081502 78 int LRI;
adamvan101 2:3d47bb081502 79 int VRP;
adamvan101 2:3d47bb081502 80 int PVARP;
adamvan101 2:3d47bb081502 81 int AVI;
adamvan101 2:3d47bb081502 82 int URI;
adamvan101 2:3d47bb081502 83 int PVAB;
adamvan101 2:3d47bb081502 84
adamvan101 2:3d47bb081502 85 Mutex displayMutex;
adamvan101 2:3d47bb081502 86 Mutex expectAMutex;
adamvan101 2:3d47bb081502 87 Mutex expectVMutex;
adamvan101 2:3d47bb081502 88 Mutex timeConstraintMutex;
adamvan101 2:3d47bb081502 89 Mutex heartRateMutex;
adamvan101 3:2ed03f9e0042 90 Mutex observationMutex;
adamvan101 2:3d47bb081502 91
adamvan101 2:3d47bb081502 92 Thread *P_PacemakerKeyboard;
adamvan101 2:3d47bb081502 93 Thread *P_PacemakerSend;
adamvan101 2:3d47bb081502 94 Thread *P_PacemakerModeSwitch;
adamvan101 2:3d47bb081502 95 Thread *P_PacemakerReceive;
adamvan101 3:2ed03f9e0042 96 Thread *P_PacemakerAlarm;
adamvan101 2:3d47bb081502 97
adamvan101 2:3d47bb081502 98 Timer displayTimer;
adamvan101 2:3d47bb081502 99 RtosTimer *TimeOutTimer;
adamvan101 2:3d47bb081502 100 RtosTimer *URITimeOutTimer;
adamvan101 2:3d47bb081502 101 RtosTimer *SecondsTimer;