#include #include #include #include // rand() #include // time() #include // === Parameters === const int BPM_MIN = 55; // Minimum Normal BPM const int BPM_MAX = 110; // Maximum Normal BPM const int BPM_TACHYCARDIA = 40; // Minimum BPM for Tachycardia const int BPM_BRADYCARDIA = 140; // Maximum BPM for Bradycardia const int SAMPLE_INTERVAL_MS = 1000; // Sampling every 1s const int THRESHOLD_CARDIAC_ARREST = 2; // === Initialize random generator ===// === Simulate heart signal from sensor === int generateRandomHeartRate() { int bpm = rand() % BPM_BRADYCARDIA + 1; // génère un BPM entre 0 et 140 return bpm; } // === Simulate buzzer activation === void activateBuzzer(bool activationBuz) { if (activationBuz) { std::cout << " Buzzer activated (CARDIAC ALERT)!" << std::endl; } else { std::cout << " Buzzer desactivated" << std::endl; } } // === Simulate vibration motor activation === void activateVibration(bool activationVib) { if (activationVib) { std::cout << " Vibration activated (CARDIAC ALERT)!" << std::endl; } else { std::cout << " Vibration desactivated" << std::endl; } } // === Simulate Bluetooth transmission === void sendMessageBluetooth(bool urgence) { if (urgence) { std::cout << " Message Bluetooth send : TRUE (urgence)" << std::endl; } else { std::cout << " Message Bluetooth send : FALSE (normal)" << std::endl; } } // send avg bvpm of the last minute void sendAvgBPM(int avg){ std::cout << " \n [BLUETOOTH MESSAGE] Average BPM over the last minute : " << avg; std::cout << "\n\n" < heartRateHistory; heartRateHistory.reserve(1728000); //20*24*60*60 secondes de data (20 days) int avgBPM = 0; while (true) { // DHeartrate detection if (!pulseDetected) { auto now = std::chrono::steady_clock::now(); auto intervalle = std::chrono::duration_cast(now - lastPulse).count(); int bpm = generateRandomHeartRate(); time++; std::cout << " \n -------------- \n Time since device turned ON (in seconds) " << time; std::cout << " \n BPM measured : " << bpm; if (bpm < BPM_MIN && bpm > BPM_TACHYCARDIA){ std::cout << " [BRADYCARDIA]" << std::endl; activateVibration(true); i=0; } else if(bpm < BPM_BRADYCARDIA && bpm > BPM_MAX) { std::cout << " [TACHYCARDIA]" << std::endl; activateVibration(true); i=0; }else if(bpm < BPM_MAX && bpm > BPM_MIN){ std::cout << " [NORMAL]" << std::endl; activateBuzzer(false); activateVibration(false); sendMessageBluetooth(false); i=0; } else if (bpm < BPM_TACHYCARDIA){ if (i=THRESHOLD_CARDIAC_ARREST && lastBPM < BPM_TACHYCARDIA){ i=0; std::cout << " \n !! Number = 2 [HEART ATTACK]" << std::endl; activateBuzzer(true); activateVibration(true); sendMessageBluetooth(true); }else{ i+=1; std::cout << " \n !! Low BPM, emergency alert if number gets to 2: "<(lastTime + 60)){ for (j = lastTime; j