#ifndef MAIN_H #define MAIN_H #define FINGER_DETECT_PIN 4 #define FINGER_ENABLE_PIN 5 #define SAFELOCK_DATA_PIN 12 #define SAFELOCK_DETECT_PIN 14 #define DOOR_DETECT_PIN 13 #include #include "Settings.h" #include "FingerPrint.h" #include "FingerLogic.h" class CMain { public: CMain(); void Init(HardwareSerial &serial); void CheckSleep(); void EnterLightSleep(); void OnStationGotIP(IpAddress ip, IpAddress mask, IpAddress gateway); void OnStationDisconnect(const String& ssid, MacAddress bssid, WifiDisconnectReason reason); int MqttOnConnect(MqttClient& client, mqtt_message_t* message); void MqttOnDisconnect(TcpClient& client, bool flag); void OnFinger(bool finger); void OnLock(bool unlocked); void OnDoor(bool opened); void FingerPower(bool enable); void LockUnlock(); void EnrollMessage(const char *msg, bool error=false); void OnFingerVerified(uint16_t fingerNum, uint8_t digest[SHA256_SIZE]); void OnFingerEnrolled(uint16_t fingerNum, uint8_t digest[SHA256_SIZE]); CSettings &Settings() { return m_Settings; } CFingerPrint &FingerPrint() { return m_FingerPrint; } CFingerLogic &FingerLogic() { return m_FingerLogic; } private: bool HttpAuthorized(HttpRequest &request, HttpResponse &response); void HttpOnApi(HttpRequest &request, HttpResponse &response); void HttpOnFile(HttpRequest &request, HttpResponse &response); int HttpOnUpload(HttpServerConnection& connection, HttpRequest& request, HttpResponse& response); HttpStatus HandleApi(HttpMethod method, String endpoint, JsonDocument &req, JsonDocument &resp); void StartMqttClient(); void MqttSendDescription(); void MqttSendMessage(const char *topic, const char *msg); private: void LockSendBytes(uint8_t *pBytes, uint8_t len); void LockSendCode(uint8_t code[8]); CSettings m_Settings; CFingerPrint m_FingerPrint; CFingerLogic m_FingerLogic; FtpServer m_FTP; HttpServer m_HttpServer; MqttClient m_Mqtt; Timer m_MqttTimer; Timer m_LightSleepTimer; String m_EnrollMessage; String m_EnrollLabel; CSettings::CFingerPrint m_EnrolledFinger; bool m_Enrolling; bool m_Enrolled; bool m_StationConnected; bool m_FingerPlaced; bool m_LockUnlocked; bool m_DoorOpened; }; extern CMain g_Main; extern HardwareSerial Serial1; #endif