; *************************************************************************** ; copyright : (C) 2026 by Martin Preuss ; email : martin@libchipcard.de ; ; *************************************************************************** ; * This file is part of the project "AqHome". * ; * Please see toplevel file COPYING of that project for license details. * ; *************************************************************************** #ifndef AQH_AVR_GUI_SCREENSAVER_SIMPLE_ASM #define AQH_AVR_GUI_SCREENSAVER_SIMPLE_ASM ; *************************************************************************** ; defines .equ SIMPLESAVER_TIMER100ms = 6000 ; 10mins ;.equ SIMPLESAVER_TIMER100ms = 100 ; 10secs ; widget data .equ SIMPLESAVER_OFFS_BEGIN = MAINWINDOW_SIZE .equ SIMPLESAVER_OFFS_TIMER_LO = SIMPLESAVER_OFFS_BEGIN+0 .equ SIMPLESAVER_OFFS_TIMER_HI = SIMPLESAVER_OFFS_BEGIN+1 .equ SIMPLESAVER_OFFS_RELOAD_LO = SIMPLESAVER_OFFS_BEGIN+2 .equ SIMPLESAVER_OFFS_RELOAD_HI = SIMPLESAVER_OFFS_BEGIN+3 .equ SIMPLESAVER_OFFS_NODEADDR1 = SIMPLESAVER_OFFS_BEGIN+4 .equ SIMPLESAVER_OFFS_VALUEID1 = SIMPLESAVER_OFFS_BEGIN+5 .equ SIMPLESAVER_OFFS_NODEADDR2 = SIMPLESAVER_OFFS_BEGIN+6 .equ SIMPLESAVER_OFFS_VALUEID2 = SIMPLESAVER_OFFS_BEGIN+7 .equ SIMPLESAVER_SIZE = SIMPLESAVER_OFFS_BEGIN+8 ; EEPROM data .equ SIMPLESAVER_EE_OFFS_NODEADDR1 = 0 .equ SIMPLESAVER_EE_OFFS_VALUEID1 = 1 .equ SIMPLESAVER_EE_OFFS_NODEADDR2 = 2 .equ SIMPLESAVER_EE_OFFS_VALUEID2 = 3 .equ SIMPLESAVER_EE_SIZE = 4 ; *************************************************************************** ; code .cseg ; --------------------------------------------------------------------------- ; @routine SimpleSaver_new @global ; ; @return CFLAG set of okay, cleared otherwise ; @return Y address of newly created object ; @param X parent widget ; @param r16 value for OBJECT_OFFS_OPTS ; @param r17 value for WIDGET_OFFS_PACK ; @clobbers any SimpleSaver_new: ldi r24, LOW(SIMPLESAVER_SIZE) ldi r25, HIGH(SIMPLESAVER_SIZE) bigcall Object_Alloc ; (!r16, !r17, !X) brcc SimpleSaver_new_ret rcall SimpleSaver_Init ; (r16, r17, X) sec SimpleSaver_new_ret: ret ; @end ; --------------------------------------------------------------------------- ; @routine SimpleSaver_Init @global ; ; @return CFLAG set of okay, cleared otherwise ; @return Y address of newly created object ; @param X parent widget ; @param r16 value for OBJECT_OFFS_OPTS ; @param r17 value for WIDGET_OFFS_PACK ; @clobbers any SimpleSaver_Init: ; call base class bigcall MainWindow_Init ; set default signal map ldi r16, LOW(SimpleSaver_DefaultSignalmap*2) std Y+OBJECT_OFFS_SIGNALMAP_LO, r16 ldi r16, HIGH(SimpleSaver_DefaultSignalmap*2) std Y+OBJECT_OFFS_SIGNALMAP_HI, r16 ; set style which has no spacing and no borders ldi r16, LOW(SimpleSaver_DefaultStyle*2) std Y+WIDGET_OFFS_STYLE_LO, r16 ldi r16, HIGH(SimpleSaver_DefaultStyle*2) std Y+WIDGET_OFFS_STYLE_HI, r16 ; read config from eeprom rcall simpleSaverReadFromEeprom ; preset and start timer ldi r16, LOW(SIMPLESAVER_TIMER100ms) ldi r17, HIGH(SIMPLESAVER_TIMER100ms) std Y+SIMPLESAVER_OFFS_RELOAD_LO, r16 std Y+SIMPLESAVER_OFFS_RELOAD_HI, r17 std Y+SIMPLESAVER_OFFS_TIMER_LO, r16 std Y+SIMPLESAVER_OFFS_TIMER_HI, r17 ret ; @end SimpleSaver_Enter: bigcall Widget_GetApp push yl push yh mov xl, yl mov xh, yh mov yl, r18 mov yh, r19 bigcall GuiApp_EnterWindow pop yh pop yl ret ; @end SimpleSaver_Leave: ldd r16, Y+OBJECT_OFFS_FLAGS andi r16, (1<