heart modes, send, receive
Dependencies: Terminal TextLCD mbed-rtos mbed
Fork of Heart by
heart.cpp
00001 #include "mbed.h" 00002 #include "rtos.h" 00003 #include "Terminal.h" 00004 00005 DigitalOut led1(LED1); //asense 00006 DigitalOut led2(LED2); //vsense 00007 DigitalOut led3(LED3); //apace 00008 DigitalOut led4(LED4); //vpace 00009 DigitalOut aSense(p23); 00010 DigitalOut vSense(p24); 00011 InterruptIn APace(p25); 00012 InterruptIn VPace(p26); 00013 00014 Terminal console(USBTX, USBRX); 00015 00016 int heartRate, avgHeartRate, observationInterval, rateCoefficient, observationRate, waitCount, senseWaitTime, testCase, changeModeTo; 00017 int heartMode; //0 - Normal, 1 - Manual, 2 - Test 00018 bool observationChange, digitOneReceived, paceReceived, synchDone, testOn, testResult[10]={false}, digitTwoReceived, changeMode, receivedVPace; 00019 char ch; 00020 char modeString[10]; 00021 00022 const int nLRI=1500, nAVI = 60, nPVARP = 150, nURI = 600, nVRP = 100; //timing constraints for Normal Mode of the Pacemaker 00023 const int delta=20; 00024 00025 osMutexId displayMutex; 00026 osMutexDef (displayMutex); 00027 osMutexId observationChangeMutex; 00028 osMutexDef(obserationChangeMutex); 00029 osMutexId heartRateMutex; 00030 osMutexDef (heartRateMuex); 00031 00032 Thread *SerialThreadPTR; 00033 Thread *HeartSensePTR; 00034 Thread *TestModePTR; 00035 Thread *TestDisplayPTR; 00036 RtosTimer *KeyTimeOutTimer; 00037 RtosTimer *SenseWaitTimer; 00038 //testCode 00039 Timer t; 00040 00041 void resetDisplay() 00042 { 00043 osMutexWait(displayMutex, osWaitForever); 00044 console.cls(); 00045 console.locate(30, 6); 00046 console.printf("Heart Display"); 00047 console.locate(30, 10); 00048 console.printf("Heart Rate : %04d bpm", avgHeartRate); 00049 console.locate(30, 12); 00050 console.printf("Observation Interval : %02d seconds", observationInterval/1000); 00051 console.locate(30, 14); 00052 console.printf("Mode : %s", modeString); 00053 osMutexRelease(displayMutex); 00054 } 00055 00056 void updateDisplay() 00057 { 00058 osMutexWait(displayMutex, osWaitForever); 00059 console.locate(44, 10); 00060 console.printf("%04d", avgHeartRate); 00061 console.locate(54, 12); 00062 console.printf("%02d", observationInterval/1000); 00063 osMutexRelease(displayMutex); 00064 } 00065 00066 00067 void heartSense(const void *args) 00068 { 00069 while(1) 00070 { 00071 if(heartMode>0) 00072 { 00073 Thread::signal_wait(0x02); 00074 } 00075 //Thread::wait(500); //chnage this 00076 senseWaitTime=50+(rand()%2000); 00077 SenseWaitTimer->start(senseWaitTime); 00078 Thread::signal_wait(0x03); 00079 if(rand()%2==0) 00080 { 00081 led1=1; 00082 aSense=1; 00083 Thread::wait(1); 00084 aSense=0; 00085 led1=0; 00086 } 00087 else 00088 { 00089 led2=1; 00090 vSense=1; 00091 Thread::wait(1); 00092 vSense=0; 00093 led2=0; 00094 osMutexWait(heartRateMutex, osWaitForever); 00095 heartRate++; 00096 osMutexRelease(heartRateMutex); 00097 00098 } 00099 } 00100 } 00101 00102 void display(const void *args) 00103 { 00104 while(1) 00105 { 00106 Thread::wait(observationInterval); 00107 if(heartMode!=2) 00108 { 00109 waitCount++; 00110 if(!observationChange) 00111 { 00112 avgHeartRate=heartRate*rateCoefficient/waitCount; 00113 osMutexWait(heartRateMutex, osWaitForever); 00114 heartRate=0; 00115 osMutexRelease(heartRateMutex); 00116 if(observationRate!=(observationInterval/1000)) 00117 { 00118 resetDisplay(); 00119 //update observationrate after the current interval stats are displayed 00120 observationInterval=observationRate*1000; 00121 rateCoefficient=(60000/observationInterval); 00122 } 00123 else 00124 { 00125 updateDisplay(); 00126 } 00127 waitCount=0; 00128 } 00129 } 00130 } 00131 } 00132 00133 void senseWait(const void *args) 00134 { 00135 (*HeartSensePTR).signal_set(0x03); 00136 } 00137 00138 void keyTimeOut(const void *args) 00139 { 00140 if(digitOneReceived) 00141 { 00142 observationChange=false; 00143 } 00144 else 00145 { 00146 observationChange=false; 00147 } 00148 resetDisplay(); 00149 } 00150 00151 void testMode(const void *args) 00152 { 00153 while(1) 00154 { 00155 if(heartMode!=2) 00156 { 00157 Thread::signal_wait(0x04); 00158 } 00159 else 00160 { 00161 osMutexWait(displayMutex, osWaitForever); 00162 console.cls(); 00163 osMutexRelease(displayMutex); 00164 //synch with PM 00165 //TestCase 1 - Asense at PVARP+; No Vpace within URI-PVARP (detected within URI-PVARP+delta) 00166 testCase=0; 00167 testResult[testCase]=true; 00168 osMutexWait(displayMutex, osWaitForever); 00169 console.locate(20,testCase); 00170 osMutexRelease(displayMutex); 00171 synchDone=false; 00172 Thread::signal_wait(0x05); 00173 synchDone=true; 00174 t.reset(); 00175 t.start(); 00176 Thread::wait(nPVARP); 00177 led1=1; 00178 aSense=1; 00179 Thread::wait(1); 00180 aSense=0; 00181 led1=0; 00182 osMutexWait(displayMutex, osWaitForever); 00183 console.printf("AS : %d ",t.read_ms()); 00184 osMutexRelease(displayMutex); 00185 testOn=true; 00186 Thread::wait(nURI-nPVARP-delta); 00187 testOn=false; 00188 if(testResult[testCase]) 00189 { 00190 osMutexWait(displayMutex, osWaitForever); 00191 console.locate(0,testCase); 00192 console.printf("test %d pass",testCase+1); 00193 osMutexRelease(displayMutex); 00194 } 00195 else 00196 { 00197 osMutexWait(displayMutex, osWaitForever); 00198 console.locate(0,testCase); 00199 console.printf("test %d fail",testCase+1); 00200 osMutexRelease(displayMutex); 00201 } 00202 00203 //synch with PM 00204 //TestCase 2 - Asense at URI+; Vpace within AVI+delta 00205 testCase=1; 00206 osMutexWait(displayMutex, osWaitForever); 00207 console.locate(20,testCase); 00208 osMutexRelease(displayMutex); 00209 synchDone=false; 00210 Thread::signal_wait(0x05); 00211 synchDone=true; 00212 t.reset(); 00213 Thread::wait(nURI); 00214 led1=1; 00215 aSense=1; 00216 Thread::wait(1); 00217 aSense=0; 00218 led1=0; 00219 osMutexWait(displayMutex, osWaitForever); 00220 console.printf("AS : %d ",t.read_ms()); 00221 osMutexRelease(displayMutex); 00222 testOn=true; 00223 Thread::wait(nAVI+delta); 00224 testOn=false; 00225 if(testResult[testCase]) 00226 { 00227 osMutexWait(displayMutex, osWaitForever); 00228 console.locate(0,testCase); 00229 console.printf("test %d pass",testCase+1); 00230 osMutexRelease(displayMutex); 00231 } 00232 else 00233 { 00234 osMutexWait(displayMutex, osWaitForever); 00235 console.locate(0,testCase); 00236 console.printf("test %d fail",testCase+1); 00237 osMutexRelease(displayMutex); 00238 } 00239 //synch with PM 00240 //TestCase 3 - Asense at URI+; Vsense at AVI-; No pace detected; run this 4 times 00241 testCase=2; 00242 testResult[testCase]=true; 00243 synchDone=false; 00244 Thread::signal_wait(0x05); 00245 synchDone=true; 00246 t.reset(); 00247 Thread::wait(nURI); 00248 testOn=true; 00249 for(int i=0;i<5;i++) 00250 { 00251 /*osMutexWait(displayMutex, osWaitForever); 00252 console.locate(20,testCase); 00253 osMutexRelease(displayMutex);*/ 00254 led1=1; 00255 aSense=1; 00256 Thread::wait(1); 00257 aSense=0; 00258 led1=0; 00259 /*osMutexWait(displayMutex, osWaitForever); 00260 console.printf("AS : %d ",t.read_ms()); 00261 osMutexRelease(displayMutex);*/ 00262 Thread::wait(nAVI-delta); 00263 led2=1; 00264 vSense=1; 00265 Thread::wait(1); 00266 vSense=0; 00267 led2=0; 00268 /*osMutexWait(displayMutex, osWaitForever); 00269 console.printf("VS : %d ",t.read_ms()); 00270 osMutexRelease(displayMutex);*/ 00271 Thread::wait(nLRI-nAVI-delta); 00272 } 00273 testOn=false; 00274 if(testResult[testCase]) 00275 { 00276 osMutexWait(displayMutex, osWaitForever); 00277 console.locate(0,testCase); 00278 console.printf("test %d pass",testCase+1); 00279 osMutexRelease(displayMutex); 00280 } 00281 else 00282 { 00283 osMutexWait(displayMutex, osWaitForever); 00284 console.locate(0,testCase); 00285 console.printf("test %d fail",testCase+1); 00286 osMutexRelease(displayMutex); 00287 } 00288 //synch with PM 00289 //TestCase 4 - No sensing;Only pacing; 00290 testCase=3; 00291 synchDone=false; 00292 Thread::signal_wait(0x05); 00293 synchDone=true; 00294 t.reset(); 00295 testOn=true; 00296 for(int i=0;i<1;i++) 00297 { 00298 osMutexWait(displayMutex, osWaitForever); 00299 console.locate(20,testCase); 00300 osMutexRelease(displayMutex); 00301 t.reset(); 00302 testResult[testCase]=false; 00303 Thread::wait(nLRI-nAVI+delta); 00304 if(!testResult[testCase]) 00305 { 00306 console.printf("Here"); 00307 break; 00308 } 00309 testResult[testCase]=false; 00310 Thread::wait(nAVI); 00311 if(!testResult[testCase]) 00312 { 00313 console.printf("There"); 00314 break; 00315 } 00316 } 00317 testOn=false; 00318 if(testResult[testCase]) 00319 { 00320 osMutexWait(displayMutex, osWaitForever); 00321 console.locate(0,testCase); 00322 console.printf("test %d pass",testCase+1); 00323 osMutexRelease(displayMutex); 00324 } 00325 else 00326 { 00327 osMutexWait(displayMutex, osWaitForever); 00328 console.locate(0,testCase); 00329 console.printf("test %d fail",testCase+1); 00330 osMutexRelease(displayMutex); 00331 } 00332 00333 //synch with PM 00334 //TestCase 5 - Vsense at VRP+; APace at LRI-AVI+delta 00335 testCase=4; 00336 testResult[testCase]=false; 00337 osMutexWait(displayMutex, osWaitForever); 00338 console.locate(20,testCase); 00339 osMutexRelease(displayMutex); 00340 synchDone=false; 00341 Thread::signal_wait(0x05); 00342 synchDone=true; 00343 t.reset(); 00344 Thread::wait(nPVARP); 00345 led2=1; 00346 vSense=1; 00347 Thread::wait(1); 00348 vSense=0; 00349 led2=0; 00350 osMutexWait(displayMutex, osWaitForever); 00351 console.printf("VS : %d ",t.read_ms()); 00352 osMutexRelease(displayMutex); 00353 testOn=true; 00354 Thread::wait(nLRI-nAVI+delta); 00355 testOn=false; 00356 if(testResult[testCase]) 00357 { 00358 osMutexWait(displayMutex, osWaitForever); 00359 console.locate(0,testCase); 00360 console.printf("test %d pass",testCase+1); 00361 osMutexRelease(displayMutex); 00362 } 00363 else 00364 { 00365 osMutexWait(displayMutex, osWaitForever); 00366 console.locate(0,testCase); 00367 console.printf("test %d fail",testCase+1); 00368 osMutexRelease(displayMutex); 00369 } 00370 00371 //synch with PM 00372 //TestCase 6 - Asense at VRP+ (within PVARP); A pace should come at LRI-AVI+delta and no VPace should come 00373 testCase=5; 00374 testResult[testCase]=false; 00375 osMutexWait(displayMutex, osWaitForever); 00376 console.locate(20,testCase); 00377 osMutexRelease(displayMutex); 00378 synchDone=false; 00379 Thread::signal_wait(0x05); 00380 synchDone=true; 00381 t.reset(); 00382 Thread::wait(nVRP); 00383 led1=1; 00384 aSense=1; 00385 Thread::wait(1); 00386 aSense=0; 00387 led1=0; 00388 osMutexWait(displayMutex, osWaitForever); 00389 console.printf("AS : %d ",t.read_ms()); 00390 osMutexRelease(displayMutex); 00391 testOn=true; 00392 Thread::wait(nLRI-nAVI-nVRP+delta); 00393 testOn=false; 00394 if(testResult[testCase]) 00395 { 00396 osMutexWait(displayMutex, osWaitForever); 00397 console.locate(0,testCase); 00398 console.printf("test %d pass",testCase+1); 00399 osMutexRelease(displayMutex); 00400 } 00401 else 00402 { 00403 osMutexWait(displayMutex, osWaitForever); 00404 console.locate(0,testCase); 00405 console.printf("test %d fail",testCase+1); 00406 osMutexRelease(displayMutex); 00407 } 00408 00409 //synch with PM 00410 //TestCase 7 - Vsense at VRP-; Asense should come at LRI-AVI+delta; Asense does not come after that, which would happen if Vsense was accepted 00411 testCase=6; 00412 testResult[testCase]=false; 00413 osMutexWait(displayMutex, osWaitForever); 00414 console.locate(20,testCase); 00415 osMutexRelease(displayMutex); 00416 synchDone=false; 00417 Thread::signal_wait(0x05); 00418 synchDone=true; 00419 t.reset(); 00420 Thread::wait(nVRP-delta-10); //give vSense within VRP 00421 led2=1; 00422 vSense=1; 00423 Thread::wait(1); 00424 vSense=0; 00425 led2=0; 00426 osMutexWait(displayMutex, osWaitForever); 00427 console.printf("VS : %d ",t.read_ms()); 00428 osMutexRelease(displayMutex); 00429 testOn=true; 00430 Thread::wait(nLRI-nAVI-nVRP+(2*delta)+10); 00431 testOn=false; 00432 if(testResult[testCase]) 00433 { 00434 osMutexWait(displayMutex, osWaitForever); 00435 console.locate(0,testCase); 00436 console.printf("test %d pass",testCase+1); 00437 osMutexRelease(displayMutex); 00438 } 00439 else 00440 { 00441 osMutexWait(displayMutex, osWaitForever); 00442 console.locate(0,testCase); 00443 console.printf("test %d fail",testCase+1); 00444 osMutexRelease(displayMutex); 00445 } 00446 t.stop(); 00447 //synch with PM 00448 //TestCase 8 - Alarm High case; generate Asense and Vsense at very high rate 00449 testCase=7; 00450 testResult[testCase]=false; 00451 osMutexWait(displayMutex, osWaitForever); 00452 console.locate(0,testCase); 00453 console.printf("Alarm High"); 00454 osMutexRelease(displayMutex); 00455 synchDone=false; 00456 Thread::signal_wait(0x05); 00457 synchDone=true; 00458 for(int i=0;i<5000;i++) 00459 { 00460 led1=1; 00461 aSense=1; 00462 Thread::wait(1); 00463 aSense=0; 00464 led1=0; 00465 led2=1; 00466 vSense=1; 00467 Thread::wait(1); 00468 vSense=0; 00469 led2=0; 00470 } 00471 osMutexWait(displayMutex, osWaitForever); 00472 console.locate(0,testCase+1); 00473 console.printf("Testing Complete"); 00474 osMutexRelease(displayMutex); 00475 00476 } 00477 if(changeMode) 00478 { 00479 changeMode=false; 00480 if(changeModeTo==0) 00481 { 00482 heartMode=0; 00483 strcpy(modeString,"Random"); 00484 osMutexWait(displayMutex, osWaitForever); 00485 console.cls(); 00486 console.locate(30, 10); 00487 console.printf("Heart Rate : %03d bpm", avgHeartRate); 00488 console.locate(30, 12); 00489 console.printf("Observation Interval : %02d seconds", observationInterval/1000); 00490 console.locate(30, 14); 00491 console.printf("Mode : %s", modeString); 00492 osMutexRelease(displayMutex); 00493 (*HeartSensePTR).signal_set(0x02); 00494 } 00495 else 00496 { 00497 heartMode=1; 00498 strcpy(modeString,"Manual"); 00499 osMutexWait(displayMutex, osWaitForever); 00500 console.cls(); 00501 console.locate(30, 10); 00502 console.printf("Heart Rate : %03d bpm", avgHeartRate); 00503 console.locate(30, 12); 00504 console.printf("Observation Interval : %02d seconds", observationInterval/1000); 00505 console.locate(30, 14); 00506 console.printf("Mode : %s", modeString); 00507 osMutexRelease(displayMutex); 00508 } 00509 00510 } 00511 } 00512 } 00513 00514 void aPace() 00515 { 00516 if(heartMode==0) 00517 { 00518 SenseWaitTimer->start(50+(rand()%2000)); //TODO move this 00519 } 00520 led3=1; 00521 wait(0.01); 00522 led3=0; 00523 if(heartMode==2 && testOn) 00524 { 00525 receivedVPace=false; 00526 (*TestDisplayPTR).signal_set(0x06); 00527 if(testCase==2) 00528 { 00529 testResult[testCase]=false; 00530 } 00531 else if(testCase==3 || testCase==4 || testCase==5 || testCase==6) 00532 { 00533 testResult[testCase]=true; 00534 } 00535 } 00536 } 00537 00538 void vPace() 00539 { 00540 if(heartMode==0) 00541 { 00542 SenseWaitTimer->start(50+(rand()%2000)); //TODO move this 00543 } 00544 led4=1; 00545 wait(0.01); 00546 led4=0; 00547 osMutexWait(heartRateMutex, osWaitForever); 00548 heartRate++; 00549 osMutexRelease(heartRateMutex); 00550 if(heartMode==2 && !synchDone) 00551 { 00552 (*TestModePTR).signal_set(0x05); 00553 } 00554 if(heartMode==2 && testOn) 00555 { 00556 receivedVPace=true; 00557 (*TestDisplayPTR).signal_set(0x06); 00558 if(testCase==0 || testCase==2 || testCase==5 || testCase==6) 00559 { 00560 testResult[testCase]=false; 00561 } 00562 else if(testCase==1 || testCase==3) 00563 { 00564 testResult[testCase]=true; 00565 } 00566 } 00567 } 00568 00569 void testDisplay(const void *args) 00570 { 00571 while(1) 00572 { 00573 Thread::signal_wait(0x06); 00574 if(receivedVPace) 00575 { 00576 osMutexWait(displayMutex, osWaitForever); 00577 console.printf("VP : %d ",t.read_ms()); 00578 osMutexRelease(displayMutex); 00579 } 00580 else 00581 { 00582 osMutexWait(displayMutex, osWaitForever); 00583 console.printf("AP : %d ",t.read_ms()); 00584 osMutexRelease(displayMutex); 00585 } 00586 } 00587 } 00588 00589 00590 void serialThread(const void *args) 00591 { 00592 while(1) 00593 { 00594 Thread::signal_wait(0x01); 00595 if((((ch=='a')||(ch=='A')) && heartMode==1) && !observationChange) 00596 { 00597 //fire A Signal 00598 led1=1; 00599 aSense=1; 00600 Thread::wait(1); 00601 led1=0; 00602 aSense=0; 00603 } 00604 else if((((ch=='v')||(ch=='V')) && heartMode==1) && !observationChange) 00605 { 00606 //fire V Signal 00607 led2=1; 00608 vSense=1; 00609 Thread::wait(1); 00610 vSense=0; 00611 led2=0; 00612 osMutexWait(heartRateMutex, osWaitForever); 00613 heartRate++; 00614 osMutexRelease(heartRateMutex); 00615 } 00616 else if(((((ch=='r')||(ch=='R'))&& heartMode!=0) && !observationChange) && !changeMode) 00617 { 00618 if(heartMode==2) 00619 { 00620 changeMode=true; 00621 changeModeTo=0; 00622 console.locate(30, 14); 00623 console.printf("Mode : %s (Pending - Random)", modeString); 00624 } 00625 else 00626 { 00627 heartMode=0; 00628 strcpy(modeString,"Random"); 00629 resetDisplay(); 00630 (*HeartSensePTR).signal_set(0x02); 00631 } 00632 } 00633 else if(((((ch=='m')||(ch=='M')) && heartMode!=1) && !observationChange) && !changeMode) 00634 { 00635 if(heartMode==2) 00636 { 00637 changeMode=true; 00638 changeModeTo=1; 00639 console.locate(30, 14); 00640 console.printf("Mode : %s (Pending - Manual)", modeString); 00641 } 00642 else 00643 { 00644 heartMode=1; 00645 strcpy(modeString,"Manual"); 00646 resetDisplay(); 00647 } 00648 } 00649 else if((((ch=='t')||(ch=='T')) && heartMode!=2) && !observationChange) 00650 { 00651 heartMode=2; //spawn Test Thread 00652 strcpy(modeString,"Test"); 00653 resetDisplay(); 00654 (*TestModePTR).signal_set(0x04); 00655 } 00656 else if((((ch=='o')||(ch=='O')) && !observationChange) && heartMode!=2) 00657 { 00658 observationChange=true; 00659 digitOneReceived=false; 00660 digitTwoReceived=false; 00661 //spawn a timer for 3 seconds 00662 osMutexWait(displayMutex, osWaitForever); 00663 console.locate(29, 16); 00664 console.printf("Observation Interval change : -- seconds"); 00665 osMutexRelease(displayMutex); 00666 KeyTimeOutTimer=new RtosTimer(keyTimeOut, osTimerOnce, (void *)0); 00667 KeyTimeOutTimer->start(3000); 00668 } 00669 else if((observationChange) && ((ch>=48) && (ch<=57)) && !digitTwoReceived) 00670 { 00671 if(!digitOneReceived) 00672 { 00673 KeyTimeOutTimer->start(3000); //key time out is 3 seconds 00674 osMutexWait(observationChangeMutex, osWaitForever); //mutex to be released either on time out or if 2 digits are received 00675 observationRate=ch-'0'; 00676 osMutexRelease(observationChangeMutex); 00677 digitOneReceived=true; 00678 osMutexWait(displayMutex, osWaitForever); 00679 console.locate(60, 16); 00680 console.printf("%02d", observationRate); 00681 osMutexRelease(displayMutex); 00682 } 00683 else 00684 { 00685 KeyTimeOutTimer->stop(); 00686 digitTwoReceived=true; 00687 osMutexWait(observationChangeMutex, osWaitForever); 00688 observationRate=(observationRate*10)+(ch-'0'); 00689 osMutexRelease(observationChangeMutex); 00690 observationChange=false; 00691 osMutexWait(displayMutex, osWaitForever); 00692 console.locate(60, 16); 00693 console.printf("%02d", observationRate); 00694 osMutexRelease(displayMutex); 00695 } 00696 } 00697 } 00698 } 00699 00700 // Interupt Routine to read in data from serial port and call the serial thread 00701 void Rx_interrupt() 00702 { 00703 if(console.readable()) 00704 { 00705 ch=LPC_UART0->RBR; //read uart buffer data and clear the interrupt flag 00706 (*SerialThreadPTR).signal_set(0x01); //initiate the serial thread to change the state of the timer 00707 } 00708 00709 } 00710 00711 00712 int main() 00713 { 00714 console.attach(&Rx_interrupt, Serial::RxIrq); //attach a uart interrupt for uart 00715 console.cls(); 00716 console.locate(30, 6); 00717 console.printf("Heart Display"); 00718 console.locate(30, 10); 00719 console.printf("Heart Rate : ---- bpm"); 00720 console.locate(30, 12); 00721 console.printf("Observation Interval : -- seconds"); 00722 console.locate(30, 14); 00723 console.printf("Mode : Random "); 00724 00725 //initialize variables 00726 heartMode=0; 00727 heartRate=0; 00728 avgHeartRate=0; 00729 waitCount=0; 00730 observationInterval=5000; 00731 rateCoefficient=(60000/observationInterval); 00732 observationChange=false; 00733 observationRate=5; 00734 digitOneReceived=false; 00735 strcpy(modeString,"Random"); 00736 synchDone=true; 00737 testCase=0; 00738 testOn=false; 00739 digitTwoReceived=false; 00740 changeMode=false; 00741 changeModeTo=0; 00742 receivedVPace=false; 00743 00744 SenseWaitTimer=new RtosTimer(senseWait, osTimerOnce, (void *)0); 00745 Thread SerialThread(serialThread); 00746 SerialThreadPTR=&SerialThread; 00747 SerialThread.set_priority(osPriorityRealtime); 00748 Thread HeartSense(heartSense); 00749 HeartSensePTR=&HeartSense; 00750 HeartSense.set_priority(osPriorityHigh); 00751 Thread Display(display); 00752 Display.set_priority(osPriorityAboveNormal); 00753 Thread TestMode(testMode); 00754 TestModePTR=&TestMode; 00755 TestMode.set_priority(osPriorityAboveNormal); 00756 Thread TestDisplay(testDisplay); 00757 TestDisplayPTR=&TestDisplay; 00758 TestDisplay.set_priority(osPriorityHigh); 00759 APace.fall(&aPace); 00760 VPace.fall(&vPace); 00761 00762 while(1); 00763 }
Generated on Mon Jul 25 2022 05:25:23 by
1.7.2
