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.
Functions.cpp
00001 #include "Functions.h" 00002 00003 00004 bool syncShockReady = false; 00005 00006 //Delivering the HFAC and Dfeb Shock 00007 void Delivering (int amplitude, int duration) 00008 { 00009 00010 uint16_t sample = 0; 00011 double step= (amplitude*220)/duration; 00012 00013 for(int HFAC_Count=1; HFAC_Count<= duration; ++HFAC_Count) 00014 { 00015 sample = (uint16_t)(offset + (step*HFAC_Count)); 00016 HFAC.write_u16(sample); 00017 wait_us(500); 00018 00019 //pc.printf("%d\r\n",duration - HFAC_Count); 00020 if((duration - HFAC_Count) == 11){ 00021 led1 = 0; 00022 SyncOut = 1; 00023 } 00024 00025 sample = (uint16_t)(offset - (step*HFAC_Count)); 00026 HFAC.write_u16(sample); 00027 wait_us(500); 00028 } 00029 00030 HFAC_Relay = 0; 00031 M_Relay = 1; 00032 R_Relay = 0; 00033 wait_ms(1); 00034 M_Relay = 0; 00035 SyncOut =0; 00036 shock = 0; 00037 HFAC.write_u16(offset); 00038 buttonLEDs(shockButtonRedLED, Disable); 00039 00040 } 00041 00042 //Delivering the HFAC and Dfeb Shock in the sync mode 00043 void SyncDelivering() 00044 { 00045 if (byPassStatus) 00046 Delivering (HFAC_Amplitude, HFAC_Duration); 00047 else 00048 Delivering (10, 100); 00049 00050 wait_ms(1000); 00051 } 00052 00053 //Check the by Pass mode "HFAC ON or OFF" 00054 void checkByPass() 00055 { 00056 wait_ms(100); 00057 if (byPassButton){ 00058 LCD.putc('A'); 00059 byPassStatus = false; 00060 } 00061 else{ 00062 LCD.putc('B'); 00063 byPassStatus = true; 00064 } 00065 led4 = !led4; 00066 } 00067 00068 //Interrupt function for R wave fall time 00069 void syncInFuncFall() 00070 { 00071 wait_ms(100); 00072 if (syncShock){ 00073 buttonLEDs(shockButtonGreenLED, Disable); 00074 } 00075 } 00076 //Interrupt function for R wave raise time (Also calculating the average of 00077 // HeartRateAvg samples of R wave signals 00078 void syncInFunc() 00079 { 00080 if (syncShock) 00081 if(heartRateTimerStart){ 00082 if (heartMeanCounter < HeartRateAvg){ 00083 buttonLEDs(shockButtonGreenLED, Enable); 00084 heartRateTemp += heartRateTimer.read_us(); 00085 //pc.printf("%d ", heartMeanCounter); 00086 heartMeanCounter ++; 00087 } 00088 else{ 00089 syncShock = false; 00090 buttonLEDs(shockButtonRedLED, Enable); 00091 00092 heartRate = heartRateTemp / HeartRateAvg; 00093 heartMeanCounter = 0; 00094 heartRateTemp = 0; 00095 int fireTime = heartRate - ((HFAC_Duration*1000) % heartRate)- 013.8* HFAC_Duration - 23625;//- ( -0.011*HFAC_Duration + 45.278)-10; 00096 //pc.printf("%d ", heartRate); 00097 //pc.printf("%d ", HFAC_Duration); 00098 //pc.printf("%d ", fireTime); 00099 deliverTimeout.attach_us(&SyncDelivering, fireTime); 00100 00101 } 00102 heartRateTimer.reset(); 00103 } 00104 else{ 00105 heartRateTimerStart = true; 00106 heartRateTimer.start(); 00107 heartMeanCounter = 0; 00108 } 00109 00110 00111 } 00112 00113 //Shock and Charge button LEDS 00114 void buttonLEDs(int led, bool enable) 00115 { 00116 switch (led) { 00117 case 0: 00118 if(enable) { 00119 shockRedLED = 1; 00120 shockGreenLED = 0; 00121 } else { 00122 shockRedLED = 0; 00123 shockGreenLED = 0; 00124 } 00125 break; 00126 case 1: 00127 if(enable) { 00128 shockRedLED = 0; 00129 shockGreenLED = 1; 00130 } else { 00131 shockRedLED = 0; 00132 shockGreenLED = 0; 00133 } 00134 break; 00135 case 2: 00136 if(enable) { 00137 chargeRedLED = 1; 00138 chargeGreenLED = 0; 00139 } else { 00140 chargeRedLED = 0; 00141 chargeGreenLED = 0; 00142 } 00143 break; 00144 case 3: 00145 if(enable) { 00146 chargeRedLED = 0; 00147 chargeGreenLED = 1; 00148 } else { 00149 chargeRedLED = 0; 00150 chargeGreenLED = 1; 00151 } 00152 break; 00153 } 00154 }
Generated on Fri Jul 15 2022 16:18:37 by
1.7.2