diff --git a/src/main.cpp b/src/main.cpp index 38248d4..5be7157 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -25,136 +25,136 @@ static const int WIFI_CONNECT_RETRY_MAX = 30; void mqtt_callback(char *topic, byte *payload, unsigned int length) { - payload[length] = '\0'; - String state((const char *)payload); - is_disarmed = state == "disarmed"; + payload[length] = '\0'; + String state((const char *)payload); + is_disarmed = state == "disarmed"; - if (state == "armed_away") - { - keypad->draw(); - } + if (state == "armed_away") + { + keypad->draw(); + } - Serial.println(state); - keypad->write(state); + Serial.println(state); + keypad->write(state); } void lock() { - if (is_disarmed) - { - mqtt->send("ARM_AWAY"); - } + if (is_disarmed) + { + mqtt->send("ARM_AWAY"); + } } void unlock() { - mqtt->send("DISARM"); + mqtt->send("DISARM"); } bool isConnecting = false; void initWifi(Settings *settings) { - if (!settings) - { - keypad->write("no settings"); - return; - } + if (!settings) + { + keypad->write("no settings"); + return; + } - if (isConnecting) - { - keypad->write("already connecting"); - return; - } + if (isConnecting) + { + keypad->write("already connecting"); + return; + } - isConnecting = true; - keypad->write("connecting"); + isConnecting = true; + keypad->write("connecting"); - WiFi.begin(settings->gettext("wifi:ssid"), settings->gettext("wifi:password")); + WiFi.begin(settings->gettext("wifi:ssid"), settings->gettext("wifi:password")); - if (WiFi.isConnected()) - { - WiFi.disconnect(); - } + if (WiFi.isConnected()) + { + WiFi.disconnect(); + } - Serial.print("Connecting to Wi-Fi network"); - for (int cnt_retry = 0; cnt_retry < WIFI_CONNECT_RETRY_MAX && !WiFi.isConnected(); - cnt_retry++) - { - delay(500); - Serial.print("."); - } - Serial.println(""); - if (WiFi.isConnected()) - { - Serial.print("Local IP: "); - Serial.println(WiFi.localIP()); - isConnecting = false; - keypad->write("connected"); - } - else - { - keypad->write("failed to connect"); - isConnecting = false; - return; - } + Serial.print("Connecting to Wi-Fi network"); + for (int cnt_retry = 0; cnt_retry < WIFI_CONNECT_RETRY_MAX && !WiFi.isConnected(); + cnt_retry++) + { + delay(500); + Serial.print("."); + } + Serial.println(""); + if (WiFi.isConnected()) + { + Serial.print("Local IP: "); + Serial.println(WiFi.localIP()); + isConnecting = false; + keypad->write("connected"); + } + else + { + keypad->write("failed to connect"); + isConnecting = false; + return; + } } void initTOTP(Settings *settings) { - uint8_t *base32_key = new uint8_t[20]; - const char *hmac = ((String)settings->gettext("totp:hmac")).c_str(); + uint8_t *base32_key = new uint8_t[20]; + const char *hmac = ((String)settings->gettext("totp:hmac")).c_str(); - for (int i = 0; i < 20; i++) - { - base32_key[i] = (uint8_t)hmac[i]; - } + for (int i = 0; i < 20; i++) + { + base32_key[i] = (uint8_t)hmac[i]; + } - TOTP(base32_key, 20, 30); + TOTP(base32_key, 20, 30); } void setup() { - M5.begin(); + M5.begin(); - keypad = new Keypad(); - keypad->write("loading"); + keypad = new Keypad(); + keypad->write("loading"); - auto settings = new Settings(); + auto settings = new Settings(); - if (!settings) - { - keypad->write("unable to load settings"); - return; - } + if (!settings) + { + keypad->write("unable to load settings"); + return; + } - mqtt = new MQTT(settings, mqtt_callback); + mqtt = new MQTT(settings, mqtt_callback); - initWifi(settings); - mqtt->connect(); - timeClient.begin(); - initTOTP(settings); + initWifi(settings); + mqtt->connect(); + timeClient.begin(); + initTOTP(settings); } void submit(String code) { - uint32_t newCode = getCodeFromTimestamp(timeClient.getEpochTime()); - uint32_t input = code.toInt(); + uint32_t newCode = getCodeFromTimestamp(timeClient.getEpochTime()); + uint32_t input = code.toInt(); - if (newCode == input) - { - unlock(); - return; - } + if (newCode == input) + { + unlock(); + return; + } - lock(); + lock(); } void loop() { - timeClient.update(); - mqtt->loop(); + timeClient.update(); + mqtt->loop(); - auto value = keypad->get_input(); - if (value.has_value()) - submit(value.value()); + auto value = keypad->get_input(); + if (value.has_value()) + submit(value.value()); }