diff --git a/src/app/app.ino b/src/app/app.ino index 196e0f8..d1e85fc 100644 --- a/src/app/app.ino +++ b/src/app/app.ino @@ -10,6 +10,7 @@ SAB sab; unsigned long currentMs = 0, batteryMs = 0, buttonMs = 0; +volatile boolean ioStateChange(false); View1Packet v1p = {sab.getRtcManager().getDateTime(), sab.getSdCardManager().getSize(GBYTE), sab.getPowerInfo(),0}; ViewAPPacket vap = {sab.getConnectivityManager().softAPmacAddress(), sab.getConnectivityManager().softAPSSID(), sab.getConnectivityManager().softAPIP(), sab.getConnectivityManager().softAPgetStationNum()}; ViewSTAPacket vstap = {sab.getConnectivityManager().macAddress(), sab.getConnectivityManager().localIP(), sab.getConnectivityManager().RSSI()}; @@ -65,10 +66,12 @@ void setup() sab.getWebServerManager().addApiRoutine("/esp/reset", &(espResetApi), NULL, WEBServerManager::GET); sab.getWebServerManager().addApiRoutine("/sab/wifi/stainfo", &(staWifiInfoApi), &sab, WEBServerManager::GET); sab.getWebServerManager().addApiRoutine("/sab/systeminfo", &(systemInfoApi), &sab, WEBServerManager::GET); - sab.getWebServerManager().addApiRoutine("/sab/io/get/level", &(ioGetLevelApi), &sab, WEBServerManager::GET); + sab.getWebServerManager().addApiRoutine("/sab/io/get/level", &(ioGetLevelApi), vio.ioState, WEBServerManager::GET); sab.getWebServerManager().addApiRoutine("/sab/io/set/level", &(ioSetLevelApi), &sab, WEBServerManager::GET); sab.getWebServerManager().addApiRoutine("/sab/io/get/mode", &(ioGetModeApi), &sab, WEBServerManager::GET); sab.getWebServerManager().addApiRoutine("/sab/io/set/mode", &(ioSetModeApi), &sab, WEBServerManager::GET); + + sab.getIoManager().setISROnIOChange(&(ioISR), GPIO_3_RX); Serial.println("End setup"); } @@ -76,7 +79,7 @@ void setup() void loop() { - if(millis() - currentMs > 100) + if(millis() - currentMs > 1000 || ioStateChange) { currentMs = millis(); v1p.dateTime = sab.getRtcManager().getDateTime(); @@ -91,6 +94,8 @@ void loop() sab.getIoManager().getPcf().digitalReadAll(vio.ioState); sab.getScreenManager().displayView(); + + ioStateChange = false; } if(millis() - batteryMs > 10000) @@ -113,3 +118,8 @@ void loop() //Run the webServer sab.getWebServerManager().runServer(); } + +void ioISR() +{ + ioStateChange = true; +}