From f1c3cb33e3dacefc740d4a8b81c29d31c73df332 Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Fri, 20 Nov 2020 17:22:49 +0100 Subject: [PATCH] fix screen switching --- cube/User/Inc/oled.h | 3 ++- cube/User/Src/main2.c | 2 +- cube/User/Src/mqttComm.c | 2 +- cube/User/Src/oled.c | 8 +++++++- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/cube/User/Inc/oled.h b/cube/User/Inc/oled.h index 951b660..3a4c17c 100644 --- a/cube/User/Inc/oled.h +++ b/cube/User/Inc/oled.h @@ -23,7 +23,8 @@ typedef enum { } oledScreen_t; void oledInit(void); -void oledClear(); +void oledClearActiveScreen(); +void oledClearAllScreens(); void oledPrint(oledScreen_t screen, char msg[]); void oledPrintf(oledScreen_t screen, const char *format, ...); void oledSetActiveScreen(oledScreen_t screen); diff --git a/cube/User/Src/main2.c b/cube/User/Src/main2.c index 3c35fed..67709c0 100644 --- a/cube/User/Src/main2.c +++ b/cube/User/Src/main2.c @@ -39,7 +39,7 @@ void my_setup_2() { logMsg("Application starting"); oledInit(); - oledClear(); + oledClearAllScreens(); oledSetActiveScreen(OLED_SCREEN0); oledPrint(OLED_SCREEN0, "App starting"); diff --git a/cube/User/Src/mqttComm.c b/cube/User/Src/mqttComm.c index a53e93f..56a5732 100644 --- a/cube/User/Src/mqttComm.c +++ b/cube/User/Src/mqttComm.c @@ -63,8 +63,8 @@ static void mqttStatusPublisher(void *handle) { bool res = publish(&mqttClient, StatusTopic, (const uint8_t*)buf, strlen(buf), false); coloredMsg(LOG_GREEN, false, "mqch, publish returned %d", res); - oledClear(); oledSetActiveScreen(OLED_SCREEN1); + oledClearActiveScreen(); uint8_t *addr = wizGetIPAddress(); oledPrintf(OLED_SCREEN1, "Addr:%d.%d.%d.%d", addr[0], addr[1], addr[2], addr[3]); oledPrintf(OLED_SCREEN1, "Network available:%d", isNetworkAvailable()); diff --git a/cube/User/Src/oled.c b/cube/User/Src/oled.c index 286b2b0..1221787 100644 --- a/cube/User/Src/oled.c +++ b/cube/User/Src/oled.c @@ -406,7 +406,13 @@ static uint8_t currentLine = 0; static char lines[NUM_OF_SCREENS][MAX_LINES+1][MAX_CHARS+1]; static oledScreen_t activeScreen = OLED_SCREEN0; -void oledClear() { +void oledClearActiveScreen() { + oled_CLS(); + memset(lines[activeScreen], 0, sizeof(lines[activeScreen])); + currentLine = 0; +} + +void oledClearAllScreens() { oled_CLS(); memset(lines, 0, sizeof(lines)); currentLine = 0;