From 0443032de70c1bdf5b44902a76380b51f2e36aab Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Sun, 18 Jan 2026 00:36:22 +0100 Subject: [PATCH] avr: added widget SensorWatch shows a pictogram for a sensor and changes background color according to values received from a given sensor. --- avr/devices/c03/main/main.asm | 24 ++ avr/devices/c03/main/testwin.asm | 153 ++++++------ avr/modules/lcd2/gui2/guiapp.asm | 18 +- avr/modules/lcd2/gui2/imageview.asm | 33 +++ avr/modules/lcd2/gui2/sensorwatch.asm | 340 ++++++++++++++++++++++++++ avr/modules/lcd2/gui2/widget.asm | 2 + 6 files changed, 486 insertions(+), 84 deletions(-) create mode 100644 avr/modules/lcd2/gui2/sensorwatch.asm diff --git a/avr/devices/c03/main/main.asm b/avr/devices/c03/main/main.asm index 95f1eeb..d34ba8f 100644 --- a/avr/devices/c03/main/main.asm +++ b/avr/devices/c03/main/main.asm @@ -229,7 +229,30 @@ test: ldi zl, LOW(testApp_flashdata*2) ldi zh, HIGH(testApp_flashdata*2) bigcall GuiApp_Init + + ldi zl, LOW(winSensorWatch1*2) + ldi zh, HIGH(winSensorWatch1*2) + ; set source + ldi r16, SENSORWATCH_SIGNAL_SETSOURCE + clr r17 + ldi xl, 191 ; node address + ldi xh, 10 ; value 0x0a (SGP30_CO2) + bigcall OBJ_HandleSignal + ; set warning limit + ldi r16, SENSORWATCH_SIGNAL_SETLIMWARN + clr r17 + ldi xl, LOW(800) + ldi xh, HIGH(800) + bigcall OBJ_HandleSignal + + ; set critical limit + ldi r16, SENSORWATCH_SIGNAL_SETLIMCRIT + clr r17 + ldi xl, LOW(2000) + ldi xh, HIGH(2000) + bigcall OBJ_HandleSignal + ret @@ -266,6 +289,7 @@ test: .include "modules/lcd2/gui2/widget.asm" .include "modules/lcd2/gui2/label.asm" .include "modules/lcd2/gui2/imageview.asm" +.include "modules/lcd2/gui2/sensorwatch.asm" .include "modules/lcd2/gui2/guiapp.asm" .include "testwin.asm" diff --git a/avr/devices/c03/main/testwin.asm b/avr/devices/c03/main/testwin.asm index 9620e7e..b7b2f16 100644 --- a/avr/devices/c03/main/testwin.asm +++ b/avr/devices/c03/main/testwin.asm @@ -37,14 +37,16 @@ testWinHeader_ramdata: testWinBody_ramdata: .byte WIDGET_SD_SIZE -testWinBodyImg1_ramdata: +winSensorWatch1_ramdata: + .byte SENSORWATCH_SD_SIZE + +winSensorWatch1Title_ramdata: + .byte WIDGET_SD_SIZE + +winSensorWatch1Image_ramdata: .byte IMGVIEW_SD_SIZE -testWinBodyImg2_ramdata: - .byte IMGVIEW_SD_SIZE -testWinBodyImg3_ramdata: - .byte IMGVIEW_SD_SIZE @@ -164,7 +166,7 @@ testWinBody_flashdata: .db 0x55, 0xaa ; magic .dw 0 ; next .dw testWin_flashdata*2 ; parent - .dw testWinBodyImg1_flashdata*2 ; first child + .dw winSensorWatch1*2 ; first child .dw 0 ; target .dw 0 ; selector (ony lower 8 bits used) .dw testWinBody_signalmap*2 ; signal map @@ -187,90 +189,99 @@ testWinBody_signalmap: -testWinBodyImg1_flashdata: +winSensorWatch1: + ; OBJECT + .db 0x55, 0xaa ; magic + .dw 0 ; next + .dw testWinBody_flashdata*2 ; parent + .dw winSensorWatch1Title*2 ; first child + .dw 0 ; target + .dw 0 ; selector (ony lower 8 bits used) + .dw winSensorWatch1_signalmap*2 ; signal map + ; WIDGET + .db (1<