Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed mbed-rtos TextLCD
main.cpp@1:e3a5388e46ab, 2015-11-26 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |