; *************************************************************************** ; 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_GUI2_GUIAPP_ASM #define AQH_AVR_GUI2_GUIAPP_ASM ; *************************************************************************** ; defines ; GuiApp in flash .equ GUIAPP_OFFS_GUIAPP = OBJECT_SIZE .equ GUIAPP_OFFS_SDRAM_LO = GUIAPP_OFFS_GUIAPP+0 .equ GUIAPP_OFFS_SDRAM_HI = GUIAPP_OFFS_GUIAPP+1 .equ GUIAPP_OFFS_ROOTWIDGET_LO = GUIAPP_OFFS_GUIAPP+2 .equ GUIAPP_OFFS_ROOTWIDGET_HI = GUIAPP_OFFS_GUIAPP+3 .equ GUIAPP_OFFS_ROOTTIMER_LO = GUIAPP_OFFS_GUIAPP+4 .equ GUIAPP_OFFS_ROOTTIMER_HI = GUIAPP_OFFS_GUIAPP+5 .equ GUIAPP_SIZE = GUIAPP_OFFS_GUIAPP+6 ; signals .equ GUIAPP_SIGNAL_RAISE = OBJECT_SIGNAL_NEXTFREE+0 ; app->cntrl: X=GUIAPP to raise .equ GUIAPP_SIGNAL_SHOW = OBJECT_SIGNAL_NEXTFREE+1 ; cntrl->app .equ GUIAPP_SIGNAL_HIDE = OBJECT_SIGNAL_NEXTFREE+2 ; cntrl->app .equ GUIAPP_SIGNAL_NEXTFREE = OBJECT_SIGNAL_NEXTFREE+3 ; SDRAM data for guiapp .equ GUIAPP_SD_OFFS_FLAGS = 0 .equ GUIAPP_SD_OFFS_DRAWTIMER = 1 .equ GUIAPP_SD_SIZE = 2 ; guiapp flags .equ GUIAPP_FLAGS_ACTIVE_BIT = 7 .equ GUIAPP_DRAWTIMER = 3 ; *************************************************************************** ; code .cseg ; --------------------------------------------------------------------------- ; @routine GuiApp_Init ; ; @param Z byte address of guiapp object (for LPM!) GuiApp_Init: ; init sdram data rcall GuiApp_GetSdramPtr clr r16 std Y+GUIAPP_SD_OFFS_FLAGS, r16 ldi r16, GUIAPP_DRAWTIMER std Y+GUIAPP_SD_OFFS_DRAWTIMER, r16 rcall guiAppInitWidgets rcall guiAppInitTimers ret ; @end ; --------------------------------------------------------------------------- ; @routine guiAppInitWidgets ; ; @param Z byte address of guiapp object (for LPM!) guiAppInitWidgets: ; init widgets push zl push zh adiw zh:zl, GUIAPP_OFFS_ROOTWIDGET_LO lpm r16, Z+ lpm zh, Z mov zl, r16 or r16, zh breq guiAppInitWidgets_done ldi r16, OBJECT_SIGNAL_CREATE clr r17 bigcall OBJ_TreeAllHandleSignal guiAppInitWidgets_done: pop zh pop zl ret ; @end ; --------------------------------------------------------------------------- ; @routine guiAppInitTimers ; ; @param Z byte address of guiapp object (for LPM!) guiAppInitTimers: ; init timers push zl push zh adiw zh:zl, GUIAPP_OFFS_ROOTTIMER_LO lpm r16, Z+ lpm zh, Z mov zl, r16 or r17, zh breq guiAppInitTimers_done ldi r16, OBJECT_SIGNAL_CREATE clr r17 bigcall OBJ_TreeAllHandleSignal guiAppInitTimers_done: pop zh pop zl ret ; @end ; --------------------------------------------------------------------------- ; @routine GuiApp_OnShow ; ; @param Z byte address of guiapp object (for LPM!) GuiApp_OnShow: push zl push zh adiw zh:zl, GUIAPP_OFFS_ROOTWIDGET_LO lpm r16, Z+ lpm zh, Z mov zl, r16 or r17, zh breq GuiApp_OnShow_done ldi r16, (1<