mbed heart
Dependencies: TextLCD mbed-rtos mbed
PMTest.cpp
- Committer:
- lucastai
- Date:
- 2015-12-02
- Revision:
- 2:4761ca8ba841
- Parent:
- 0:54ec65701097
- Child:
- 3:189e64d01258
File content as of revision 2:4761ca8ba841:
#include "mbed.h" #include "LPC17xx.h" #include "TextLCD.h" #include "rtos.h" #include "Thread.h" DigitalOut vsense(p23); DigitalOut asense(p24); DigitalIn apace(p22); DigitalIn vpace(p21); Serial serial_in(USBTX, USBRX); int test_time_count; int curr_test; int minwaitV = 100000; int minwaitA = 200000; int needs_num_input = 0; enum mode{RANDOM,MANUAL,TEST}; mode test_curr_mode = RANDOM; Timer t; void random_heart(void const *args){ t.reset(); t.start(); while(test_curr_mode == RANDOM){ int r = rand(); if(r%2 == 0){ serial_in.printf("timer was %i",t.read()); if(1){ asense = 1; serial_in.printf("asense "); Thread::wait(10); asense = 0; t.reset(); } }else{ if(1){ vsense = 1; serial_in.printf("vsense "); Thread::wait(10); vsense = 0; t.reset(); } } Thread::wait(500); } } void kbd_intrp(){ char a = serial_in.getc(); serial_in.printf("char was " + a); if(needs_num_input){ // DO O handling needs_num_input = 0; return; } if(a == 'R'){ test_curr_mode = RANDOM; }else if(a == 'T'){ test_curr_mode = TEST; }else if(a == 'M'){ test_curr_mode = MANUAL; } if(a == 'A' && test_curr_mode == MANUAL){ asense = 1; Thread::wait(10); asense = 0; } if(a == 'V' && test_curr_mode == MANUAL){ vsense = 1; Thread::wait(10); vsense = 0; } } // interrupt function void interrupt_and_run_test(){ // zero timer, set for 1ms interrupt // wait for atrial pulse // check if timer was within event // send vsense // send asense // check if timer was in event // wait for vpace // wait for atrial pulse // check if timer was within event } int main(void){ Thread t3(random_heart, (void *)""); while(1){ if(serial_in.readable()){ char a = serial_in.getc(); serial_in.printf("char was " + a); if(needs_num_input){ // DO O handling needs_num_input = 0; } if(a == 'R'){ test_curr_mode = RANDOM; }else if(a == 'T'){ test_curr_mode = TEST; }else if(a == 'M'){ test_curr_mode = MANUAL; } if(a == 'A' && test_curr_mode == MANUAL){ asense = 1; Thread::wait(10); asense = 0; } if(a == 'V' && test_curr_mode == MANUAL){ vsense = 1; Thread::wait(10); vsense = 0; } } } }