finished basic new structure.

This commit is contained in:
Martin Preuss
2023-04-22 00:23:44 +02:00
parent 5e12b8ad4e
commit 3e6501c834
36 changed files with 34 additions and 328 deletions

109
avr/modules/stats/main.asm Normal file
View File

@@ -0,0 +1,109 @@
; ***************************************************************************
; 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