diff --git a/CMakeLists.txt b/CMakeLists.txt index d2f9357..ed3a719 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,6 +42,7 @@ file(GLOB SRCFILES lib/ESP32_BLE_Arduino-1.0.1/src/*.h lib/WiFiManager/WiFiManager.cpp lib/Crc16/Crc16.h + lib/nuki_ble/src/NukiTimeout.cpp lib/nuki_ble/src/NukiBle.cpp lib/nuki_ble/src/NukiOpener.cpp lib/nuki_ble/src/NukiConstants.h diff --git a/NukiOpenerWrapper.cpp b/NukiOpenerWrapper.cpp index bf6450c..0ff1a5d 100644 --- a/NukiOpenerWrapper.cpp +++ b/NukiOpenerWrapper.cpp @@ -6,12 +6,13 @@ NukiOpenerWrapper* nukiOpenerInst; -NukiOpenerWrapper::NukiOpenerWrapper(const std::string& deviceName, uint32_t id, BleScanner::Scanner* scanner, NetworkOpener* network, Preferences* preferences) - : _deviceName(deviceName), - _nukiOpener(deviceName, id), - _bleScanner(scanner), - _network(network), - _preferences(preferences) +NukiOpenerWrapper::NukiOpenerWrapper(const std::string& deviceName, uint32_t id, BleScanner::Scanner* scanner, NetworkOpener* network, Preferences* preferences, Nuki::NukiTimeout* nukiTimeout) +: _deviceName(deviceName), + _nukiOpener(deviceName, id, nukiTimeout), + _bleScanner(scanner), + _network(network), + _preferences(preferences), + _nukiTimeout(nukiTimeout) { nukiOpenerInst = this; diff --git a/NukiOpenerWrapper.h b/NukiOpenerWrapper.h index 40d148e..c2626d1 100644 --- a/NukiOpenerWrapper.h +++ b/NukiOpenerWrapper.h @@ -9,7 +9,7 @@ class NukiOpenerWrapper : public NukiOpener::SmartlockEventHandler { public: - NukiOpenerWrapper(const std::string& deviceName, uint32_t id, BleScanner::Scanner* scanner, NetworkOpener* network, Preferences* preferences); + NukiOpenerWrapper(const std::string& deviceName, uint32_t id, BleScanner::Scanner* scanner, NetworkOpener* network, Preferences* preferences, Nuki::NukiTimeout* nukiTimeout); virtual ~NukiOpenerWrapper(); void initialize(); @@ -46,6 +46,7 @@ private: BleScanner::Scanner* _bleScanner; NetworkOpener* _network; Preferences* _preferences; + Nuki::NukiTimeout* _nukiTimeout; int _intervalLockstate = 0; // seconds int _intervalBattery = 0; // seconds int _intervalConfig = 60 * 60; // seconds diff --git a/NukiWrapper.cpp b/NukiWrapper.cpp index 4c811e9..7fc5038 100644 --- a/NukiWrapper.cpp +++ b/NukiWrapper.cpp @@ -6,11 +6,12 @@ NukiWrapper* nukiInst; -NukiWrapper::NukiWrapper(const std::string& deviceName, uint32_t id, Network* network, Preferences* preferences) +NukiWrapper::NukiWrapper(const std::string& deviceName, uint32_t id, Network* network, Preferences* preferences, Nuki::NukiTimeout* nukiTimeout) : _deviceName(deviceName), - _nukiBle(deviceName, id), + _nukiBle(deviceName, id, nukiTimeout), _network(network), - _preferences(preferences) + _preferences(preferences), + _nukiTimeout(nukiTimeout) { nukiInst = this; diff --git a/NukiWrapper.h b/NukiWrapper.h index 122cee6..630352d 100644 --- a/NukiWrapper.h +++ b/NukiWrapper.h @@ -9,7 +9,7 @@ class NukiWrapper : public Nuki::SmartlockEventHandler { public: - NukiWrapper(const std::string& deviceName, uint32_t id, Network* network, Preferences* preferences); + NukiWrapper(const std::string& deviceName, uint32_t id, Network* network, Preferences* preferences, Nuki::NukiTimeout* nukiTimeout); virtual ~NukiWrapper(); void initialize(); @@ -46,6 +46,7 @@ private: BleScanner::Scanner* _bleScanner; Network* _network; Preferences* _preferences; + Nuki::NukiTimeout* _nukiTimeout; int _intervalLockstate = 0; // seconds int _intervalBattery = 0; // seconds int _intervalConfig = 60 * 60; // seconds diff --git a/main.cpp b/main.cpp index 9bde357..eaa6301 100644 --- a/main.cpp +++ b/main.cpp @@ -13,6 +13,7 @@ Network* network = nullptr; NetworkOpener* networkOpener = nullptr; WebCfgServer* webCfgServer = nullptr; +Nuki::NukiTimeout* nukiTimeout = nullptr; NukiWrapper* nuki = nullptr; NukiOpenerWrapper* nukiOpener = nullptr; PresenceDetection* presenceDetection = nullptr; @@ -36,6 +37,7 @@ void nukiTask(void *pvParameters) { nuki->update(); nukiOpener->update(); + nukiTimeout->update(); } } @@ -126,10 +128,12 @@ void setup() initEthServer(networkDevice); - nuki = new NukiWrapper("NukiHub", deviceId, network, preferences); + nukiTimeout = new Nuki::NukiTimeout(); + + nuki = new NukiWrapper("NukiHub", deviceId, network, preferences, nukiTimeout); nuki->initialize(); - nukiOpener = new NukiOpenerWrapper("NukiHub", deviceId, nuki->bleScanner(), networkOpener, preferences); + nukiOpener = new NukiOpenerWrapper("NukiHub", deviceId, nuki->bleScanner(), networkOpener, preferences, nukiTimeout); nukiOpener->initialize(); webCfgServer = new WebCfgServer(nuki, network, ethServer, preferences, networkDevice == NetworkDeviceType::WiFi);