54 lines
1.2 KiB
C++

#include <Arduino.h>
#include <Wire.h>
#include "Keyboard.h"
#include "Rfid.h"
#include "Interface.h"
#include <ESP8266WiFi.h>
#include <vector>
#include "Users.h"
// Rfid
Rfid rfid;
// i2C Bus
#define PIN_WIRE_SDA D3
#define PIN_WIRE_SCL D4
Keyboard keyboard(200);
Interface iface;
// Wifi control
IPAddress local_IP(192, 168, 4, 22);
IPAddress gateway(192, 168, 4, 9);
IPAddress subnet(255, 255, 255, 0);
// User DB
Users users;
void setup()
{
Serial.begin(9600);
Serial.print("Starting");
Serial.println(WiFi.softAPConfig(local_IP, gateway, subnet) ? "Ready" : "Failed!");
Serial.println(WiFi.softAP("Doorlock") ? "Ready" : "Failed!");
//delay(500);
keyboard.begin(&Wire);
rfid.begin();
iface.begin(&keyboard);
}
void loop()
{
keyboard.scanAsync();
rfid.scan();
std::vector<Users::User> logon_users;
if (iface.pinAvailable() && !users.checkPin(iface.getPin(), &logon_users))
iface.showMessage("Login failed!", "-> Pin incorrect", 3000);
else if (rfid.available() && !users.checkRfid(rfid.getID(), &logon_users))
iface.showMessage("Login failed!", "-> Unkown Card",3000);
else if (logon_users.size() > 0)
{
iface.greetUser(logon_users[0].first_name + " " + logon_users[0].last_name);
logon_users.clear();
}
iface.render();
}