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 | } |