49 lines
1.2 KiB
C++
49 lines
1.2 KiB
C++
#include "alarm.h"
|
|
|
|
AlarmStatus* status;
|
|
|
|
class DoorSensor {
|
|
private:
|
|
int DOOR_SENSOR_PIN = 23;
|
|
AlarmStatus* status;
|
|
int lastDoorState=1;
|
|
|
|
public:
|
|
|
|
static const int DEFAULT_DOOR_SENSOR_PIN=23;
|
|
|
|
DoorSensor(int doorSensorPin, AlarmStatus* statusObj){
|
|
Serial.println("const.");
|
|
DOOR_SENSOR_PIN = doorSensorPin;
|
|
status = statusObj;
|
|
}
|
|
void Init(){
|
|
pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP);
|
|
status->doorStatus = digitalRead(DOOR_SENSOR_PIN);
|
|
}
|
|
|
|
bool IsDoorOpen(){
|
|
return status->doorStatus == DOOR_OPEN;
|
|
}
|
|
bool IsDoorClosed(){
|
|
return status->doorStatus == DOOR_CLOSED;
|
|
}
|
|
|
|
void HandleDoor(){
|
|
|
|
//status->doorStatus = digitalRead(DOOR_SENSOR_PIN);
|
|
lastDoorState = status->doorStatus; // save the last state
|
|
status->doorStatus = digitalRead(DOOR_SENSOR_PIN); // read new state
|
|
// state change: LOW -> HIGH
|
|
if (lastDoorState == DOOR_CLOSED && status->doorStatus == DOOR_OPEN) {
|
|
//handleOpen();
|
|
status->doorChanged=true;
|
|
}
|
|
else
|
|
if (lastDoorState == DOOR_OPEN && status->doorStatus == DOOR_CLOSED) { // state change: HIGH -> LOW
|
|
// handleClose();
|
|
status->doorChanged=true;
|
|
}
|
|
}
|
|
};
|