avr/gui2: added screen saver app
screen saver can be turned off by: - touching and releasing the display - specific messages (e.g. motion detection msg from other nodes)
This commit is contained in:
@@ -20,7 +20,9 @@
|
||||
.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_SIZE = GUIAPP_OFFS_GUIAPP+4
|
||||
.equ GUIAPP_OFFS_SCREENSAVER_LO = GUIAPP_OFFS_GUIAPP+4
|
||||
.equ GUIAPP_OFFS_SCREENSAVER_HI = GUIAPP_OFFS_GUIAPP+5
|
||||
.equ GUIAPP_SIZE = GUIAPP_OFFS_GUIAPP+6
|
||||
|
||||
; signals
|
||||
.equ GUIAPP_SIGNAL_RAISE = OBJECT_SIGNAL_NEXTFREE+0 ; app->cntrl: X=WIDGET to raise
|
||||
@@ -172,17 +174,51 @@ GuiApp_OnTouch:
|
||||
GuiApp_OnTouch_sendToAll:
|
||||
rcall GuiApp_GetRootWidgetToZ
|
||||
brcc GuiApp_OnTouch_done
|
||||
; send touch signal (TODO: check for grabbed touch)
|
||||
; send touch signal
|
||||
bigcall Widget_Tree_SendTouchSignal
|
||||
GuiApp_OnTouch_done:
|
||||
pop zh
|
||||
pop zl
|
||||
; send keepAlive to screensaver (if not active!)
|
||||
rcall guiAppSendKeepAliveIfScreenSaverInactive
|
||||
sec
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine guiAppSendKeepAliveIfScreenSaverInactive
|
||||
;
|
||||
; @param Z byte address of guiapp object (for LPM!)
|
||||
; @clobbers any
|
||||
|
||||
guiAppSendKeepAliveIfScreenSaverInactive:
|
||||
push zl
|
||||
push zh
|
||||
rcall GuiApp_GetSdramPtr
|
||||
adiw zh:zl, GUIAPP_OFFS_SCREENSAVER_LO
|
||||
lpm r20, Z+
|
||||
lpm r21, Z
|
||||
sbiw zh:zl, GUIAPP_OFFS_SCREENSAVER_LO+1
|
||||
ldd r16, Y+GUIAPP_SD_OFFS_CURRENTWIDGET_LO
|
||||
cp r16, r20
|
||||
brne guiAppSendKeepAliveIfScreenSaverInactive_send
|
||||
ldd r16, Y+GUIAPP_SD_OFFS_CURRENTWIDGET_HI
|
||||
cp r16, r21
|
||||
breq guiAppSendKeepAliveIfScreenSaverInactive_end
|
||||
guiAppSendKeepAliveIfScreenSaverInactive_send:
|
||||
mov zl, r20
|
||||
mov zh, r21
|
||||
bigcall ScreenSaver_KeepAlive
|
||||
guiAppSendKeepAliveIfScreenSaverInactive_end:
|
||||
pop zh
|
||||
pop zl
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine GuiApp_OnMsgReceived @global
|
||||
;
|
||||
@@ -336,6 +372,22 @@ GuiApp_ShowView_ret:
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine GuiApp_GetCurrentView @global
|
||||
;
|
||||
; @param Z byte address of object (for LPM!)
|
||||
; @return X byte address of current view object (for LPM!)
|
||||
; @clobbers Y
|
||||
|
||||
GuiApp_GetCurrentView:
|
||||
rcall GuiApp_GetSdramPtr ; Y=SDRAM
|
||||
ldd xl, Y+GUIAPP_SD_OFFS_CURRENTWIDGET_LO
|
||||
ldd xh, Y+GUIAPP_SD_OFFS_CURRENTWIDGET_HI
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine GuiApp_GrabTouchEvents
|
||||
|
||||
Reference in New Issue
Block a user