void AmbulanceC::EmergencyON(void){ SILENCE(); AlLevel=_LIMITED; manageAlarm(); playSrn(); }
void * radiateur_loop(void * arg) { int ii; radiateur_init(); thermometer_init(); interupter_init(); Light_init(); Presence_init(); Rain_Init(); while (1) { // info("RADIATEUR","Evaluate radiateur status"); for (ii = 0; ii < RD_LAST; ii++) { radiateur_evaluate_next_state(ii); } for (ii = 0; ii < LI_LAST; ii++) { light_evaluate_next_state(ii); } SerialFilPiloteSendCommande(); manageAlarm(); sem_wait(&sem_capteur_data_available); } }
//Alarm/////////////////////////////////////////////////////////////////////////////// void AmbulanceC::manageInterrupt(int iSrc){ if(iSrc==99) { if(s_EmSw !=debounce(i_EmSw)) {s_EmSw=debounce(i_EmSw); iSrc=i_EmSw; } //else if(s_IsoSw !=debounce(i_IsoSw)) {s_IsoSw=debounce(i_IsoSw); iSrc=i_IsoSw; } else if(s_HbrkSw!=debounce(i_HbrkSw)){s_HbrkSw=debounce(i_HbrkSw); iSrc=i_HbrkSw; } else if(s_TapSw !=debounce(i_TapSw)) {s_TapSw=debounce(i_TapSw); iSrc=i_TapSw; } } if(ItrptLevel==_ALL) { //if(prnt) {Serial.print("Interrupt: "); Serial.print(iSrc); Serial.println(" ...");} switch(iSrc) { if(dbg) {Serial.print("....................AlLevel:"); Serial.println(AlLevel);} case i_pirTamp: if(AlLevel!=_ALL) break; if(dbg) Serial.print("pirTamp: "); if(debounce(i_pirTamp)!=LOW){ if(dbg) Serial.println("Tampered!"); if(AlArmed) { AlSrc=itrptSrc; playSrn(); }} else{if(dbg) Serial.println("OK");} break; case i_pirAl: if(AlLevel!=_ALL) break; if(dbg) Serial.print("pirAl: "); if(debounce(i_pirAl) !=LOW){ if(dbg) Serial.println("Intruder!"); if(AlArmed) {AlSrc=itrptSrc; playSrn(); }} else{if(dbg) Serial.println("OK");} break; case i_DoorSw: if(dbg) Serial.print("DoorSw: "); if(debounce(i_DoorSw) ==LOW){ if(dbg) Serial.println("Door open"); if(AlArmed){AlSrc=itrptSrc; if(doorTimeout!=NULL) doorTimeout->deleteTimer(); doorTimeout=NULL; doorTimeout=t.setTimeout(doorAlDelay, PLAYSRN); } } else{ if(dbg) Serial.println("Door closed"); } break; case i_IsoSw: if(AlLevel!=_ALL) break; if(dbg) Serial.print("IsoSw: "); if(s_IsoSw==LOW){ if(dbg) Serial.println("IsoSwClosed"); if(AlArmed) { AlSrc=itrptSrc; playSrn(); } } else{ if(dbg) Serial.println("IsoSwOpened"); } break; case i_HbrkSw: if(dbg) Serial.print("HBrkSw: "); if(s_HbrkSw==LOW) { if(dbg) Serial.println("HBrkReleased"); if(AlArmed){ AlSrc=itrptSrc; playSrn(); } } else { if(dbg) Serial.println("HBrkPulled"); } break; default: goto more; break; } itrptSrc=-1; return; } more: if(ItrptLevel>=_LIMITED) { //if(prnt) {Serial.print("Interrupt: "); Serial.print(iSrc); Serial.println(" ...");} switch(iSrc) { case i_TotAlSw: case i_PerAlSw: if(dbg) Serial.print("AlSw: "); if (debounce(i_PerAlSw)==LOW) { if(dbg) Serial.println("limited"); setAlLevel(_LIMITED); if(!AlArmed) { if(alarmTimeout!=NULL) alarmTimeout->deleteTimer(); alarmTimeout=NULL; alarmTimeout=t.setTimeout(alarmArmDelay, MANAGEALARM); enableblinkAlLEDFast(); } } else if (debounce(i_TotAlSw)==LOW) { if(dbg) Serial.println("all"); setAlLevel(_ALL); if(!AlArmed) { if(alarmTimeout!=NULL) alarmTimeout->deleteTimer(); alarmTimeout=NULL; alarmTimeout=t.setTimeout(alarmArmDelay, MANAGEALARM); enableblinkAlLEDFast(); } } else { if(dbg) Serial.println("none"); if(alarmTimeout!=NULL) alarmTimeout->deleteTimer(); alarmTimeout=NULL; if(doorTimeout!=NULL) doorTimeout->deleteTimer(); doorTimeout=NULL; setAlLevel(_NONE); manageAlarm(); } break; case i_EmSw: if(dbg) Serial.print("EmergencySw: "); if(s_EmSw==LOW) { if(dbg) Serial.println("Emergency Off"); } else { if(dbg) Serial.println("Emergency On"); EmergencyON(); } break; case i_TapSw: if(dbg) Serial.print("TapSw: "); if(s_TapSw==LOW) TapOn(); else TapOff(); break; default: break; } } itrptSrc=-1; return; }