Files
aqhomecontrol/avr/stats.asm
Martin Preuss 86b45a58e5 avr: decreased verbosity. minor fixes.
- address claiming modes now work
2023-04-12 23:32:08 +02:00

110 lines
2.2 KiB
NASM

; ***************************************************************************
; copyright : (C) 2023 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 STATS_POS_MAX = 4
.equ STATS_POS_SEND = 4
.equ STATS_POS_RECV = 3
.equ STATS_POS_SYS = 2
.equ STATS_POS_MEM = 1
; ***************************************************************************
; data
.dseg
statsDataBegin:
statsRemaining: .byte 1
statsDataEnd:
statsSendTimer: .byte 2 ; intentionally outside zeroed out are
; ***************************************************************************
; code
.cseg
Stats_Init:
; preset SRAM data area
ldi xh, HIGH(statsDataBegin)
ldi xl, LOW(statsDataBegin)
clr r16
ldi r17, (statsDataEnd-statsDataBegin)
rcall Utils_FillSram
sec
ret
Stats_Run:
in r15, SREG
push r15
cli
ldi xl, LOW(com2SendBuffer)
ldi xh, HIGH(com2SendBuffer)
ldi r16, 0xff
lds r17, statsRemaining
tst r17
breq Stats_Run_done
cpi r17, STATS_POS_RECV
brne Stats_Run_l1
rcall CPRO_WriteComRecvStats
rjmp Stats_Run_SendPacket
Stats_Run_l1:
cpi r17, STATS_POS_SYS
brne Stats_Run_l2
rcall CPRO_WriteSysStats
rjmp Stats_Run_SendPacket
Stats_Run_l2:
cpi r17, STATS_POS_MEM
brne Stats_Run_l3
rcall CPRO_WriteMemStats
rjmp Stats_Run_SendPacket
Stats_Run_l3:
cpi r17, STATS_POS_SEND
brne Stats_Run_l4
rcall CPRO_WriteComSendStats
rjmp Stats_Run_SendPacket
Stats_Run_l4:
; add more stats here
rjmp Stats_Run_done
Stats_Run_SendPacket:
rcall COM2_SendPacket
brcc Stats_Run_done ; only decrement counter if message successfully sent
lds r16, statsRemaining
dec r16
sts statsRemaining, r16
Stats_Run_done:
pop r15
out SREG, r15
clc
ret
Stats_Timer:
ldi r16, STATS_POS_MAX ; RECV, SYS
sts statsRemaining, r16
ret