Files
aqhomecontrol/avr/apps/stats/main.asm
2025-09-08 23:34:38 +02:00

142 lines
3.0 KiB
NASM

; ***************************************************************************
; copyright : (C) 2025 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. *
; ***************************************************************************
; ***************************************************************************
; defines
;.equ APP_STATS_INTERVAL_MINS = 30
.equ APP_STATS_INTERVAL_MINS = 10
; ***************************************************************************
; code
.cseg
; ---------------------------------------------------------------------------
; @routine AppStats_Init @global
;
; @clobbers r16
AppStats_Init:
clr r16
sts appStatsTimer, r16
sec
ret
; @end
; ---------------------------------------------------------------------------
; @routine AppStats_Fini @global
;
AppStats_Fini:
; nothing to do
ret
; @end
; ---------------------------------------------------------------------------
; @routine AppStats_OnEveryMinute @global
;
AppStats_OnEveryMinute:
push r15
in r15, SREG
cli
rcall AppStats_OnEveryMinute_noIrq
out SREG, r15
pop r15
ret
AppStats_OnEveryMinute_noIrq:
lds r16, appStatsTimer
inc r16
cpi r16, APP_STATS_INTERVAL_MINS
brcs AppStats_OnEveryMinute_store
clr r16
AppStats_OnEveryMinute_store:
sts appStatsTimer, r16
mov r17, r16
andi r17, 3
brne AppStats_OnEveryMinute_sendStats
; send device announcement
push r16
push yl
push yh
ldi yl, LOW(netInterfaceData)
ldi yh, HIGH(netInterfaceData)
rcall AppNetwork_SendDevice
#ifdef APP_STATS_NETDEV2
ldi yl, LOW(netInterfaceData2)
ldi yh, HIGH(netInterfaceData2)
rcall AppNetwork_SendDevice
#endif
pop yh
pop yl
pop r16
AppStats_OnEveryMinute_sendStats:
cpi r16, 2
breq AppStats_OnEveryMinute_sendMemStats
cpi r16, 3
breq AppStats_OnEveryMinute_sendRecvStats1
cpi r16, 5
breq AppStats_OnEveryMinute_sendSendStats1
#ifdef APP_STATS_NETDEV2
cpi r16, 6
breq AppStats_OnEveryMinute_sendRecvStats2
cpi r16, 7
breq AppStats_OnEveryMinute_sendSendStats2
#endif
; add more here
ret
AppStats_OnEveryMinute_sendMemStats:
ldi yl, LOW(netInterfaceData)
ldi yh, HIGH(netInterfaceData)
rjmp AppNetwork_SendMemStats
AppStats_OnEveryMinute_sendRecvStats1:
ldi yl, LOW(netInterfaceData)
ldi yh, HIGH(netInterfaceData)
rjmp AppNetwork_SendRxdStats
AppStats_OnEveryMinute_sendSendStats1:
ldi yl, LOW(netInterfaceData)
ldi yh, HIGH(netInterfaceData)
rjmp AppNetwork_SendTxdStats
#ifdef APP_STATS_NETDEV2
AppStats_OnEveryMinute_sendRecvStats2:
ldi yl, LOW(netInterfaceData2)
ldi yh, HIGH(netInterfaceData2)
rjmp AppNetwork_SendRxdStats
AppStats_OnEveryMinute_sendSendStats2:
ldi yl, LOW(netInterfaceData2)
ldi yh, HIGH(netInterfaceData2)
rjmp AppNetwork_SendTxdStats
#endif
; @end