Updated code

This commit is contained in:
Christoffer Martinsson 2018-02-19 16:21:49 +01:00
parent b6ad9c455b
commit fdf825ef02

View File

@ -83,7 +83,7 @@ bool lock_disable = false;
#define RFID_START_BYTE 0x02 // start byte
#define RFID_STOP_BYTE 0x03 // stop byte
#define RFID_TAG_BYTES 10 // number of bytes in package that represent the tag
#define RFID_TAGS 5 // Number of tags to be supported to store in EEPROM
#define RFID_TAGS 10 // Number of tags to be supported to store in EEPROM
#define EEPROM_CURRENT_TAG_ADDRESS 0 // Addres for storing current address in the tag memory
#define EEPROM_TAG_START_ADDRESS 1 // Start addres for storing RFID tags
int rfid_current_checksum = 0;
@ -105,6 +105,17 @@ ZUNO_SETUP_CHANNELS(
ZUNO_SENSOR_BINARY_DOOR_WINDOW(getterDoor)
);
void load_rfid_keys() {
int address = EEPROM_TAG_START_ADDRESS;
for (int i = 0; i < RFID_TAGS; i++) {
for (int j = 0; j < RFID_TAG_BYTES; j++) {
rfid_tags[i][j] = EEPROM.read(address);
address++;
}
}
CONSOLE_SERIAL.println("RFID tags loaded from EEPROM");
}
void update_rfid() {
int rfid_read = 0;
if (RFID_SERIAL.available()) {
@ -118,9 +129,10 @@ void update_rfid() {
// Check for package end
if (rfid_read == RFID_STOP_BYTE) {
if (rfid_store_tag) {
int rfid_eeprom_pos = rfid_store_tag_nbr * RFID_TAG_BYTES;
int rfid_eeprom_pos = rfid_store_tag_nbr-1 * RFID_TAG_BYTES;
for (int i = 0; i < RFID_TAG_BYTES; i++) {
EEPROM.write(rfid_eeprom_pos, rfid_package[i + 1]);
rfid_tags[rfid_store_tag_nbr-1][i] = rfid_package[i + 1];
rfid_eeprom_pos++;
}
@ -140,10 +152,10 @@ void update_rfid() {
if (tag_ok == true) {
CONSOLE_SERIAL.println("RFID tag verified");
if (sensor_door_locked){
set_servo(SERVO_UNLOCK, i+1);
set_servo(SERVO_UNLOCK, SOURCE_RFID);
}
else{
set_servo(SERVO_LOCK, i+1);
set_servo(SERVO_LOCK, SOURCE_RFID);
}
break;
}
@ -309,11 +321,12 @@ void setup() {
pinMode(SERVO_ENABLE_PIN, OUTPUT); // setup pin as output
digitalWrite(SERVO_ENABLE_PIN, LOW);
set_servo(SERVO_CENTER, SOURCE_SYSTEM);
CONSOLE_SERIAL.begin(9600);
RFID_SERIAL.begin(9600);
load_rfid_keys();
set_servo(SERVO_CENTER, SOURCE_SYSTEM);
}
// the loop routine runs over and over again forever:
@ -327,7 +340,7 @@ void loop() {
// Check button status
if (btn_lock == true){
if (rfid_store_tag_nbr > 0 && rfid_store_tag == false){
int rfid_eeprom_pos = rfid_store_tag_nbr * RFID_TAG_BYTES;
int rfid_eeprom_pos = rfid_store_tag_nbr-1 * RFID_TAG_BYTES;
for (int i = 0; i < RFID_TAG_BYTES; i++) {
EEPROM.write(rfid_eeprom_pos,0xFF);
rfid_eeprom_pos++;
@ -366,7 +379,7 @@ void loop() {
// Check if sensor changed and report to Z-Wave
if (sensor_door_closed_changed){
sensor_door_closed_changed = false;
zunoSendReport(8);
zunoSendReport(4);
}
// Check if servo needs to be centered or turned off
@ -495,20 +508,11 @@ void setterLockDisable(byte value) {
}
byte getterLockDisable(void) {
if (lock_disable || sensor_not_home_activated){
return true;
}
else{
return false;
}
}
byte getterDoor(void) {
return sensor_door_closed;
return lock_disable;
}
void setterStoreRFID(byte value) {
if (rfid_store_tag_nbr == 0 && value > 0){
if (rfid_store_tag_nbr == 0 && value > 0 && value < RFID_TAGS + 1){
rfid_store_tag_nbr = value;
rfid_timeout_timestamp = current_timestamp + 30000;
}
@ -522,4 +526,7 @@ byte getterStoreRFID(void) {
return rfid_store_tag_nbr;
}
byte getterDoor(void) {
return sensor_door_closed;
}