57 lines
1.5 KiB
NASM
57 lines
1.5 KiB
NASM
; ***************************************************************************
|
|
; copyright : (C) 2025 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. *
|
|
; ***************************************************************************
|
|
|
|
|
|
; ***************************************************************************
|
|
; code
|
|
|
|
|
|
.cseg
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; @routine ioWaitForGivenMsg
|
|
; Wait for incoming msg with given command
|
|
;
|
|
; @return CFLAG set if okay (packet received), cleared on error
|
|
; @return r16 code of received msg
|
|
; @param r16 command to wait for
|
|
; @clobbers: r16, r17, r20, X (r18, r19, r22)
|
|
|
|
ioWaitForGivenMsg:
|
|
ldi r20, 100 ; number of tries
|
|
ioWaitForGivenMsg_loop:
|
|
push r16
|
|
rcall ioRawWaitForValidMsg ; (r16, r17, r18, r19, r22, X)
|
|
pop r16
|
|
brcc ioWaitForGivenMsg_end
|
|
ldi xl, LOW(flashRecvBuffer)
|
|
ldi xh, HIGH(flashRecvBuffer)
|
|
adiw xh:xl, COM2_MSG_OFFS_CMD
|
|
ld r17, X
|
|
sbiw xh:xl, COM2_MSG_OFFS_CMD
|
|
cp r16, r17
|
|
breq ioWaitForGivenMsg_gotIt
|
|
cpi r16, CPRO_CMD_FLASH_END
|
|
breq ioWaitForGivenMsg_gotIt
|
|
dec r20
|
|
brne ioWaitForGivenMsg_loop
|
|
clc
|
|
rjmp ioWaitForGivenMsg_end
|
|
ioWaitForGivenMsg_gotIt:
|
|
sec
|
|
ioWaitForGivenMsg_end:
|
|
ret
|
|
; @end
|
|
|
|
|
|
|
|
|
|
|