avr: introduced screens.
This commit is contained in:
166
avr/modules/com2/screen.asm
Normal file
166
avr/modules/com2/screen.asm
Normal 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
|
||||||
|
|
||||||
|
|
||||||
@@ -39,6 +39,11 @@ CPRO_Address_OnPacketReceived:
|
|||||||
ld r16, x
|
ld r16, x
|
||||||
sbiw xh:xl, COM2_MSG_OFFS_CMD
|
sbiw xh:xl, COM2_MSG_OFFS_CMD
|
||||||
|
|
||||||
|
sts cproLastAddrCmd, r16
|
||||||
|
lds r18, cproCountAddr
|
||||||
|
inc r18
|
||||||
|
sts cproCountAddr, r18
|
||||||
|
|
||||||
cpi r16, CPRO_CMD_NEED_ADDRESS
|
cpi r16, CPRO_CMD_NEED_ADDRESS
|
||||||
brcs CPRO_Address_OnPacketReceived_nc ; smaller than 60
|
brcs CPRO_Address_OnPacketReceived_nc ; smaller than 60
|
||||||
|
|
||||||
@@ -147,6 +152,10 @@ cproHandleClaimAddr_done:
|
|||||||
|
|
||||||
|
|
||||||
cproHandleDenyAddr:
|
cproHandleDenyAddr:
|
||||||
|
lds r16, cproCountDeny
|
||||||
|
inc r16
|
||||||
|
sts cproCountDeny, r16
|
||||||
|
|
||||||
; check mode
|
; check mode
|
||||||
lds r17, cproMode
|
lds r17, cproMode
|
||||||
cpi r17, CPRO_MODE_CLAIMING_ADDR1
|
cpi r17, CPRO_MODE_CLAIMING_ADDR1
|
||||||
|
|||||||
@@ -20,6 +20,9 @@
|
|||||||
|
|
||||||
cproDataBegin:
|
cproDataBegin:
|
||||||
cproMode: .byte 1
|
cproMode: .byte 1
|
||||||
|
cproCountAddr: .byte 1
|
||||||
|
cproCountDeny: .byte 1
|
||||||
|
cproLastAddrCmd: .byte 1
|
||||||
cproDataEnd:
|
cproDataEnd:
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
125
avr/modules/comproto/screen.asm
Normal file
125
avr/modules/comproto/screen.asm
Normal 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
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user