avr: introduced screens.

This commit is contained in:
Martin Preuss
2024-09-29 15:05:33 +02:00
parent 23489dd5bf
commit d70c673b8a
4 changed files with 303 additions and 0 deletions

166
avr/modules/com2/screen.asm Normal file
View File

@@ -0,0 +1,166 @@
; ***************************************************************************
; copyright : (C) 2024 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. *
; ***************************************************************************
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; This file contains timer handlers for the address protocol
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
; ***************************************************************************
; code
.cseg
COM2_Screen_RecvStats:
in r15, SREG
push r15
cli
ldi r16, 0
rcall LCD_Fill
ldi r18, 0
ldi r19, 0
rcall LCD_SetCursor
ldi zl, LOW(com2ScreenRecvText_title)
ldi zh, HIGH(com2ScreenRecvText_title)
rcall LCD_PrintFromFlash
ldi r18, 0
ldi r19, 2
rcall LCD_SetCursor
ldi zl, LOW(com2ScreenRecvText_packetsIn)
ldi zh, HIGH(com2ScreenRecvText_packetsIn)
rcall LCD_PrintFromFlash
lds r18, com2StatsPacketsIn
lds r19, com2StatsPacketsIn+1
rcall LCD_PrintHexWord
ldi r16, 32
rcall LCD_PrintChar
lds r18, com2StatsNotForMe
lds r19, com2StatsNotForMe+1
rcall LCD_PrintHexWord
ldi r18, 0
ldi r19, 3
rcall LCD_SetCursor
ldi zl, LOW(com2ScreenRecvText_handled)
ldi zh, HIGH(com2ScreenRecvText_handled)
rcall LCD_PrintFromFlash
lds r18, com2StatsHandled
lds r19, com2StatsHandled+1
rcall LCD_PrintHexWord
ldi r18, 0
ldi r19, 4
rcall LCD_SetCursor
ldi zl, LOW(com2ScreenRecvText_contentErrs)
ldi zh, HIGH(com2ScreenRecvText_contentErrs)
rcall LCD_PrintFromFlash
lds r18, com2StatsContentError
lds r19, com2StatsContentError+1
rcall LCD_PrintHexWord
ldi r18, 0
ldi r19, 5
rcall LCD_SetCursor
ldi zl, LOW(com2ScreenRecvText_IoErrs)
ldi zh, HIGH(com2ScreenRecvText_IoErrs)
rcall LCD_PrintFromFlash
lds r18, com2StatsIoError
lds r19, com2StatsIoError+1
rcall LCD_PrintHexWord
ldi r18, 0
ldi r19, 6
rcall LCD_SetCursor
ldi zl, LOW(com2ScreenRecvText_NoBufErrs)
ldi zh, HIGH(com2ScreenRecvText_NoBufErrs)
rcall LCD_PrintFromFlash
lds r18, com2StatsNoBufferError
lds r19, com2StatsNoBufferError+1
rcall LCD_PrintHexWord
pop r15
out SREG, r15
ret
#if 0
COM2_Screen_SendStats:
in r15, SREG
push r15
cli
ldi r16, 0
rcall LCD_Fill
ldi r18, 0
ldi r19, 0
rcall LCD_SetCursor
ldi zl, LOW(com2ScreenSendText_title)
ldi zh, HIGH(com2ScreenSendText_title)
rcall LCD_PrintFromFlash
ldi r18, 0
ldi r19, 2
rcall LCD_SetCursor
ldi zl, LOW(com2ScreenSendText_packetsOut)
ldi zh, HIGH(com2ScreenSendText_packetsOut)
rcall LCD_PrintFromFlash
lds r18, com2StatsPacketsOut
lds r19, com2StatsPacketsOut+1
rcall LCD_PrintHexWord
ldi r18, 0
ldi r19, 3
rcall LCD_SetCursor
ldi zl, LOW(com2ScreenSendText_collisions)
ldi zh, HIGH(com2ScreenSendText_collisions)
rcall LCD_PrintFromFlash
lds r18, com2StatsCollisions
lds r19, com2StatsCollisions+1
rcall LCD_PrintHexWord
ldi r18, 0
ldi r19, 4
rcall LCD_SetCursor
ldi zl, LOW(com2ScreenSendText_busy)
ldi zh, HIGH(com2ScreenSendText_busy)
rcall LCD_PrintFromFlash
lds r18, com2StatsBusyError
lds r19, com2StatsBusyError+1
rcall LCD_PrintHexWord
pop r15
out SREG, r15
ret
#endif
com2ScreenRecvText_title: .db "COM2 Recv Stats", 0
com2ScreenRecvText_packetsIn: .db "In : ", 0
com2ScreenRecvText_handled: .db "Hdl : ", 0
com2ScreenRecvText_contentErrs: .db "ECon : ", 0
com2ScreenRecvText_IoErrs: .db "EIO : ", 0
com2ScreenRecvText_NoBufErrs: .db "ENBuf: ", 0
#if 0
com2ScreenSendText_title: .db "COM2 Send Stats", 0
com2ScreenSendText_packetsOut: .db "Out : ", 0
com2ScreenSendText_collisions: .db "E Coll : ", 0
com2ScreenSendText_busy: .db "E Busy : ", 0
#endif

View File

@@ -39,6 +39,11 @@ CPRO_Address_OnPacketReceived:
ld r16, x
sbiw xh:xl, COM2_MSG_OFFS_CMD
sts cproLastAddrCmd, r16
lds r18, cproCountAddr
inc r18
sts cproCountAddr, r18
cpi r16, CPRO_CMD_NEED_ADDRESS
brcs CPRO_Address_OnPacketReceived_nc ; smaller than 60
@@ -147,6 +152,10 @@ cproHandleClaimAddr_done:
cproHandleDenyAddr:
lds r16, cproCountDeny
inc r16
sts cproCountDeny, r16
; check mode
lds r17, cproMode
cpi r17, CPRO_MODE_CLAIMING_ADDR1

View File

@@ -20,6 +20,9 @@
cproDataBegin:
cproMode: .byte 1
cproCountAddr: .byte 1
cproCountDeny: .byte 1
cproLastAddrCmd: .byte 1
cproDataEnd:

View File

@@ -0,0 +1,125 @@
; ***************************************************************************
; copyright : (C) 2024 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. *
; ***************************************************************************
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; This file contains timer handlers for the address protocol
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
; ***************************************************************************
; code
.cseg
CPRO_Screen:
in r15, SREG ; debug
push r15
cli
ldi r16, 0
rcall LCD_Fill
ldi r18, 0
ldi r19, 0
rcall LCD_SetCursor
ldi zl, LOW(cproScreenText_title)
ldi zh, HIGH(cproScreenText_title)
rcall LCD_PrintFromFlash
ldi r18, 0
ldi r19, 2
rcall LCD_SetCursor
ldi zl, LOW(cproScreenText_uid)
ldi zh, HIGH(cproScreenText_uid)
rcall LCD_PrintFromFlash
push xh ; 1-4: UID
push xl
rcall Utils_ReadUid ; (R16, X)
pop xl
pop xh
push r18
push r19
mov r18, r20
mov r19, r21
rcall LCD_PrintHexWord
pop r19
pop r18
rcall LCD_PrintHexWord
ldi r18, 0
ldi r19, 3
rcall LCD_SetCursor
ldi zl, LOW(cproScreenText_addr)
ldi zh, HIGH(cproScreenText_addr)
rcall LCD_PrintFromFlash
lds r16, com2Address
rcall LCD_PrintHexByte
ldi r16, 32
rcall LCD_PrintChar
lds r16, cproMode
rcall LCD_PrintHexByte
ldi r16, 32
rcall LCD_PrintChar
lds r16, cproAddrRangeBegin
rcall LCD_PrintHexByte
ldi r18, 0
ldi r19, 4
rcall LCD_SetCursor
ldi zl, LOW(cproScreenText_bitmap)
ldi zh, HIGH(cproScreenText_bitmap)
rcall LCD_PrintFromFlash
lds r16, cproUsedAddresses
rcall LCD_PrintHexByte
lds r16, cproUsedAddresses+1
rcall LCD_PrintHexByte
lds r16, cproUsedAddresses+2
rcall LCD_PrintHexByte
lds r16, cproUsedAddresses+3
rcall LCD_PrintHexByte
ldi r18, 0
ldi r19, 5
rcall LCD_SetCursor
ldi zl, LOW(cproScreenText_msgs)
ldi zh, HIGH(cproScreenText_msgs)
rcall LCD_PrintFromFlash
lds r16, cproCountAddr
rcall LCD_PrintHexByte
ldi r16, 32
rcall LCD_PrintChar
lds r16, cproLastAddrCmd
rcall LCD_PrintHexByte
ldi r18, 0
ldi r19, 6
rcall LCD_SetCursor
ldi zl, LOW(cproScreenText_deny)
ldi zh, HIGH(cproScreenText_deny)
rcall LCD_PrintFromFlash
lds r16, cproCountDeny
rcall LCD_PrintHexByte
pop r15
out SREG, r15
ret
cproScreenText_title: .db "CPRO Screen", 0
cproScreenText_uid: .db "UID : ", 0
cproScreenText_addr: .db "Address: ", 0
cproScreenText_bitmap: .db "BITMAP : ", 0
cproScreenText_msgs: .db "nADDR : ", 0
cproScreenText_deny: .db "nDENY : ", 0