avr: reuse code (saves a few more bytes).

This commit is contained in:
Martin Preuss
2024-09-01 20:12:02 +02:00
parent 892d9f5c5a
commit 45cae14f6a

View File

@@ -34,8 +34,7 @@ com2ReceivePacketRaw:
cpi r16, 0xff cpi r16, 0xff
breq com2ReceivePacketRaw_acceptAddr breq com2ReceivePacketRaw_acceptAddr
ldi r16, COM2_ERROR_NOTFORME ldi r16, COM2_ERROR_NOTFORME
clc ; not for me rjmp com2ReceivePacketRaw_error ; clc/ret
ret
com2ReceivePacketRaw_acceptAddr: com2ReceivePacketRaw_acceptAddr:
st X+, r16 ; store dest address, lock buffer st X+, r16 ; store dest address, lock buffer
; read msg length ; read msg length
@@ -54,16 +53,14 @@ com2ReceivePacketRaw_loop:
st X+, r16 st X+, r16
dec r17 dec r17
brne com2ReceivePacketRaw_loop brne com2ReceivePacketRaw_loop
sec rjmp com2PacketsSecRet
ret
com2ReceivePacketRaw_ioError: com2ReceivePacketRaw_ioError:
ldi r16, COM2_ERROR_IOERROR ldi r16, COM2_ERROR_IOERROR
rjmp com2ReceivePacketRaw_error rjmp com2PacketsClcRet
com2ReceivePacketRaw_contentError: com2ReceivePacketRaw_contentError:
ldi r16, COM2_ERROR_DATAERROR ldi r16, COM2_ERROR_DATAERROR
com2ReceivePacketRaw_error: com2ReceivePacketRaw_error:
clc rjmp com2PacketsClcRet
ret
@@ -105,8 +102,7 @@ COM2_SendPacketWithAttn:
; packet successfully sent ; packet successfully sent
out SREG, r15 out SREG, r15
pop r15 pop r15
sec rjmp com2PacketsSecRet
ret
COM2_SendPacketWithAttn_ioError: COM2_SendPacketWithAttn_ioError:
ldi r16,COM2_ERROR_COLLISION ldi r16,COM2_ERROR_COLLISION
@@ -117,8 +113,7 @@ COM2_SendPacketWithAttn_lineBusyError:
COM2_SendPacketWithAttn_retNc: COM2_SendPacketWithAttn_retNc:
pop r15 pop r15
out SREG, r15 out SREG, r15
clc rjmp com2PacketsClcRet
ret
@@ -132,7 +127,7 @@ COM2_SendPacketWithAttn_retNc:
; REGS: r22 ; REGS: r22
com2WaitForOneBitLength: com2WaitForOneBitLength:
Utils_WaitNanoSecs COM_BIT_LENGTH, 3+4, r22 ; wait for one bit duration (minus RCALL/RET) Utils_WaitNanoSecs COM_BIT_LENGTH, 7, r22 ; wait for one bit duration (minus RCALL/RET)
ret ret
@@ -151,14 +146,18 @@ com2SendPacketRaw:
com2SendPacket_loop: com2SendPacket_loop:
ld r16, X+ ld r16, X+
rcall com2SendByte ; send byte (R16, R21, R22) rcall com2SendByte ; send byte (R16, R21, R22)
brcc com2SendPacket_ioError brcc com2PacketsClcRet
dec r17 dec r17
brne com2SendPacket_loop brne com2SendPacket_loop
sec sec
ret ret
com2SendPacket_ioError:
com2PacketsClcRet:
clc clc
ret ret
com2PacketsSecRet:
sec
ret