avr: more code sharing.

This commit is contained in:
Martin Preuss
2026-08-07 00:42:45 +02:00
parent 44044e9bba
commit 7bae2072aa
3 changed files with 145 additions and 98 deletions

View File

@@ -71,55 +71,34 @@ AppStats_OnEveryMinute_noIrq:
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:
#if 1
; debug
push r16
push yl
push yh
rcall AppStats_OnEveryMinute_sendMemStats
pop yh
pop yl
pop r16
#else
cpi r16, 2
breq AppStats_OnEveryMinute_sendMemStats
#endif
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
rcall appStatsWalkTable
; add more here
ret
; @end
; ---------------------------------------------------------------------------
; @routine appStatsTable
;
; @clobbers r16, r18, r19, r22, Z, (any)
appStatsWalkTable:
ldi zl, LOW(appStatsTable*2)
ldi zh, HIGH(appStatsTable*2)
lds r16, appStatsTimer
bigcall WalkTable
ret
; @end
AppStats_OnEveryMinute_sendDeviceDev1:
ldi yl, LOW(netInterfaceData)
ldi yh, HIGH(netInterfaceData)
rjmp AppNetwork_SendDevice
AppStats_OnEveryMinute_sendMemStats:
ldi yl, LOW(netInterfaceData)
ldi yh, HIGH(netInterfaceData)
@@ -135,19 +114,46 @@ AppStats_OnEveryMinute_sendSendStats1:
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
#ifdef APP_STATS_NETDEV2
AppStats_OnEveryMinute_sendDeviceDev2:
ldi yl, LOW(netInterfaceData2)
ldi yh, HIGH(netInterfaceData2)
rjmp AppNetwork_SendDevice
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
; ---------------------------------------------------------------------------
; table
; time routine (word address)
appStatsTable:
.dw 1, AppStats_OnEveryMinute_sendMemStats
.dw 2, AppStats_OnEveryMinute_sendDeviceDev1
.dw 3, AppStats_OnEveryMinute_sendRecvStats1
.dw 4, AppStats_OnEveryMinute_sendSendStats1
.dw 5, AppStats_OnEveryMinute_sendDeviceDev1
#ifdef APP_STATS_NETDEV2
.dw 6, AppStats_OnEveryMinute_sendDeviceDev2
.dw 7, AppStats_OnEveryMinute_sendRecvStats2
.dw 8, AppStats_OnEveryMinute_sendSendStats2
#endif
; end of table
.dw 0, 0