CIS541 / Mbed 2 deprecated CIS541PM

Dependencies:   mbed mbed-rtos TextLCD

Committer:
shibulal
Date:
Thu Nov 26 23:54:30 2015 +0000
Revision:
1:e3a5388e46ab
Parent:
0:2d6b43fc4625
Child:
2:b178e27d9f22
keyboard/modeswitch

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shibulal 0:2d6b43fc4625 1 #include "mbed.h"
shibulal 1:e3a5388e46ab 2 #include "rtos.h"
shibulal 1:e3a5388e46ab 3
shibulal 1:e3a5388e46ab 4 Serial pc(USBTX, USBRX);
shibulal 1:e3a5388e46ab 5
shibulal 1:e3a5388e46ab 6
shibulal 1:e3a5388e46ab 7 void PacemakerKeyboardInput(void const *args);
shibulal 1:e3a5388e46ab 8 void PacemakerModes(void const *args);
shibulal 0:2d6b43fc4625 9
shibulal 1:e3a5388e46ab 10 int modeSwitchTimeInterval = 5000;
shibulal 1:e3a5388e46ab 11 int flag=0;
shibulal 1:e3a5388e46ab 12 const int sleepModeURI = 1000;
shibulal 1:e3a5388e46ab 13 const int sleepModeLRI = 2000;
shibulal 1:e3a5388e46ab 14 const int normalModeURI = 600;
shibulal 1:e3a5388e46ab 15 const int normalModeLRI = 1500;
shibulal 1:e3a5388e46ab 16 const int sportsModeURI = 343;
shibulal 1:e3a5388e46ab 17 const int sportsModeLRI = 600;
shibulal 1:e3a5388e46ab 18 const int manualModeURI = 343;
shibulal 1:e3a5388e46ab 19 const int manualModeLRI = 2000;
shibulal 1:e3a5388e46ab 20
shibulal 1:e3a5388e46ab 21 int LRI = normalModeLRI;
shibulal 1:e3a5388e46ab 22 int URI = normalModeURI;
shibulal 1:e3a5388e46ab 23 Timer k;
shibulal 1:e3a5388e46ab 24 char mode;
shibulal 1:e3a5388e46ab 25 char manualPace;
shibulal 1:e3a5388e46ab 26 Thread Pmki(PacemakerKeyboardInput,(void *) 0);
shibulal 1:e3a5388e46ab 27 Thread Pmm(PacemakerModes,(void *) 0);
shibulal 0:2d6b43fc4625 28
shibulal 1:e3a5388e46ab 29 void PacemakerKeyboardInput(void const *args){
shibulal 1:e3a5388e46ab 30 k.start();
shibulal 1:e3a5388e46ab 31 char input;
shibulal 1:e3a5388e46ab 32 while(true){
shibulal 1:e3a5388e46ab 33 input=pc.getc();
shibulal 1:e3a5388e46ab 34 if (k.read()>=modeSwitchTimeInterval && flag==0){
shibulal 1:e3a5388e46ab 35 if (input=='F'){
shibulal 1:e3a5388e46ab 36 mode='F';
shibulal 1:e3a5388e46ab 37 Pmm.signal_set(0x1);
shibulal 1:e3a5388e46ab 38 Thread::signal_wait(0x1);
shibulal 1:e3a5388e46ab 39 }
shibulal 1:e3a5388e46ab 40 else if (input=='S'){
shibulal 1:e3a5388e46ab 41 mode='S';
shibulal 1:e3a5388e46ab 42 Pmm.signal_set(0x1);
shibulal 1:e3a5388e46ab 43 Thread::signal_wait(0x1);
shibulal 1:e3a5388e46ab 44 }
shibulal 1:e3a5388e46ab 45 else if (input=='N'){
shibulal 1:e3a5388e46ab 46 mode='N';
shibulal 1:e3a5388e46ab 47 Pmm.signal_set(0x1);
shibulal 1:e3a5388e46ab 48 Thread::signal_wait(0x1);
shibulal 1:e3a5388e46ab 49 }
shibulal 1:e3a5388e46ab 50 else if (input=='O'){
shibulal 1:e3a5388e46ab 51 mode='O';
shibulal 1:e3a5388e46ab 52 Pmm.signal_set(0x1);
shibulal 1:e3a5388e46ab 53 Thread::signal_wait(0x1);
shibulal 1:e3a5388e46ab 54 }
shibulal 1:e3a5388e46ab 55 else if (input=='M'){
shibulal 1:e3a5388e46ab 56 mode='M';
shibulal 1:e3a5388e46ab 57 Pmm.signal_set(0x1);
shibulal 1:e3a5388e46ab 58 Thread::signal_wait(0x1);
shibulal 1:e3a5388e46ab 59 }
shibulal 1:e3a5388e46ab 60 else if (input=='A'){
shibulal 1:e3a5388e46ab 61 if (mode=='M')
shibulal 1:e3a5388e46ab 62 manualPace='A';
shibulal 1:e3a5388e46ab 63 Pmm.signal_set(0x1);
shibulal 1:e3a5388e46ab 64 Thread::signal_wait(0x1);
shibulal 1:e3a5388e46ab 65 }
shibulal 1:e3a5388e46ab 66 }
shibulal 1:e3a5388e46ab 67 else if (input=='V'){
shibulal 1:e3a5388e46ab 68 if (mode=='M'){
shibulal 1:e3a5388e46ab 69 manualControl.lock();
shibulal 1:e3a5388e46ab 70 manualPace='V';
shibulal 1:e3a5388e46ab 71 Pmm.signal_set(0x1);
shibulal 1:e3a5388e46ab 72 Thread::signal_wait(0x1);
shibulal 1:e3a5388e46ab 73 }
shibulal 1:e3a5388e46ab 74 }
shibulal 1:e3a5388e46ab 75 }
shibulal 1:e3a5388e46ab 76 }
shibulal 0:2d6b43fc4625 77 }
shibulal 1:e3a5388e46ab 78
shibulal 1:e3a5388e46ab 79
shibulal 1:e3a5388e46ab 80 void PacemakerModes(void const *args){
shibulal 1:e3a5388e46ab 81 while(1){
shibulal 1:e3a5388e46ab 82 Thread::signal_wait(0x1);
shibulal 1:e3a5388e46ab 83 if (mode=='F'){
shibulal 1:e3a5388e46ab 84 LRI=sportsModeLRI;
shibulal 1:e3a5388e46ab 85 URI=sportsModeURI;
shibulal 1:e3a5388e46ab 86 pmki.signal_set(0x1);
shibulal 1:e3a5388e46ab 87 }
shibulal 1:e3a5388e46ab 88 else if (mode=='S'){
shibulal 1:e3a5388e46ab 89 LRI=sleepModeLRI;
shibulal 1:e3a5388e46ab 90 URI=sleepModeURI;
shibulal 1:e3a5388e46ab 91 pmki.signal_set(0x1);
shibulal 1:e3a5388e46ab 92 }
shibulal 1:e3a5388e46ab 93 else if (mode=='N'){
shibulal 1:e3a5388e46ab 94 LRI=normalModeLRI;
shibulal 1:e3a5388e46ab 95 URI=normalModeURI;
shibulal 1:e3a5388e46ab 96 pmki.signal_set(0x1);
shibulal 1:e3a5388e46ab 97 }
shibulal 1:e3a5388e46ab 98 else if (mode=='O'){
shibulal 1:e3a5388e46ab 99 //not sure what to do here
shibulal 1:e3a5388e46ab 100 pmki.signal_set(0x1);
shibulal 1:e3a5388e46ab 101 }
shibulal 1:e3a5388e46ab 102 else if (mode=='M'){
shibulal 1:e3a5388e46ab 103 LRI=manualModeLRI;
shibulal 1:e3a5388e46ab 104 URI=manualModeURI;
shibulal 1:e3a5388e46ab 105 pmki.signal_set(0x1);
shibulal 1:e3a5388e46ab 106 while(1){
shibulal 1:e3a5388e46ab 107 Thread::signal_wait(0x1);
shibulal 1:e3a5388e46ab 108 if (mode=='M'){
shibulal 1:e3a5388e46ab 109 if (manualPace=='A'){
shibulal 1:e3a5388e46ab 110 // do stuff
shibulal 1:e3a5388e46ab 111 manualPace='';
shibulal 1:e3a5388e46ab 112 }
shibulal 1:e3a5388e46ab 113 else if (manualPace=='V'){
shibulal 1:e3a5388e46ab 114 //do stuff
shibulal 1:e3a5388e46ab 115 manualPace='';
shibulal 1:e3a5388e46ab 116 }
shibulal 1:e3a5388e46ab 117 }
shibulal 1:e3a5388e46ab 118 else {
shibulal 1:e3a5388e46ab 119 pmm.signal_set(0x1);
shibulal 1:e3a5388e46ab 120 pmki.signal_wait(0x1);
shibulal 1:e3a5388e46ab 121 break;
shibulal 1:e3a5388e46ab 122 }
shibulal 1:e3a5388e46ab 123 pmki.signal_wait(0x1);
shibulal 1:e3a5388e46ab 124 }
shibulal 1:e3a5388e46ab 125 }
shibulal 1:e3a5388e46ab 126
shibulal 1:e3a5388e46ab 127
shibulal 1:e3a5388e46ab 128
shibulal 1:e3a5388e46ab 129 }
shibulal 1:e3a5388e46ab 130 }
shibulal 1:e3a5388e46ab 131
shibulal 1:e3a5388e46ab 132 int main(){
shibulal 1:e3a5388e46ab 133
shibulal 1:e3a5388e46ab 134 while(1);
shibulal 0:2d6b43fc4625 135 }