From aa3bba84a052457377006e29793b75deb92e980b Mon Sep 17 00:00:00 2001 From: Daniel Franke Date: Thu, 16 Apr 2020 22:09:13 +0200 Subject: [PATCH] Show clock when printer is idle --- printermonitor/OctoPrintClient.cpp | 6 ++++++ printermonitor/OctoPrintClient.h | 1 + printermonitor/printermonitor.ino | 10 +++++++--- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/printermonitor/OctoPrintClient.cpp b/printermonitor/OctoPrintClient.cpp index 7d19d2c..9b79a94 100644 --- a/printermonitor/OctoPrintClient.cpp +++ b/printermonitor/OctoPrintClient.cpp @@ -209,6 +209,8 @@ void OctoPrintClient::getPrinterJobResults() { if (isOperational()) { Serial.println("Status: " + printerData.state); + } else if (isIdle()) { + Serial.println("Printer Is Idle"); } else { Serial.println("Printer Not Operational"); } @@ -353,6 +355,10 @@ boolean OctoPrintClient::isPrinting() { return printerData.isPrinting; } +boolean OctoPrintClient::isIdle() { + return isOperational() && !isPrinting(); +} + boolean OctoPrintClient::isPSUoff() { return printerData.isPSUoff; } diff --git a/printermonitor/OctoPrintClient.h b/printermonitor/OctoPrintClient.h index d8d7b8d..1bb4b94 100644 --- a/printermonitor/OctoPrintClient.h +++ b/printermonitor/OctoPrintClient.h @@ -87,6 +87,7 @@ public: String getState(); boolean isPrinting(); boolean isOperational(); + boolean isIdle(); boolean isPSUoff(); String getTempBedActual(); String getTempBedTarget(); diff --git a/printermonitor/printermonitor.ino b/printermonitor/printermonitor.ino index 5fea51d..4a0bf4e 100644 --- a/printermonitor/printermonitor.ino +++ b/printermonitor/printermonitor.ino @@ -358,7 +358,7 @@ void findMDNS() { } //************************************************************ -// Main Looop +// Main Loop //************************************************************ void loop() { @@ -981,12 +981,16 @@ void drawClockHeaderOverlay(OLEDDisplay *display, OLEDDisplayUiState* state) { display->setTextAlignment(TEXT_ALIGN_CENTER); if (printerClient.isPSUoff()) { display->drawString(64, 47, "psu off"); + } else if (printerClient.isIdle()) { + display->drawString(64, 47, "idle"); } else { display->drawString(64, 47, "offline"); } } else { if (printerClient.isPSUoff()) { display->drawString(0, 47, "psu off"); + } else if (printerClient.isIdle()) { + display->drawString(0, 47, "idle"); } else { display->drawString(0, 47, "offline"); } @@ -1218,7 +1222,7 @@ void checkDisplay() { return; } } else if (DISPLAYCLOCK) { - if ((!printerClient.isOperational() || printerClient.isPSUoff()) && !isClockOn) { + if ((!printerClient.isOperational() || printerClient.isIdle() || printerClient.isPSUoff()) && !isClockOn) { Serial.println("Clock Mode is turned on."); if (!DISPLAYWEATHER) { ui.disableAutoTransition(); @@ -1232,7 +1236,7 @@ void checkDisplay() { } ui.setOverlays(clockOverlay, numberOfOverlays); isClockOn = true; - } else if (printerClient.isOperational() && !printerClient.isPSUoff() && isClockOn) { + } else if (printerClient.isOperational() && !printerClient.isIdle() && !printerClient.isPSUoff() && isClockOn) { Serial.println("Printer Monitor is active."); ui.setFrames(frames, numberOfFrames); ui.setOverlays(overlays, numberOfOverlays);