; *************************************************************************** ; 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 flashInitIo ; Send a message ; ; @clobbers r16, r17 flashInitIo: rjmp UART_HW_Uart1_RawInit ; (R16, R17) ;@end ; --------------------------------------------------------------------------- ; @routine flashRawSendMsg ; Send a message ; ; @clobbers r16, r17, X flashRawSendMsg: ldi xl, LOW(flashSendBuffer) ldi xh, HIGH(flashSendBuffer) rjmp UART_HW_Uart1_RawSendPacket ; (r16, r17, X) ; @end ; --------------------------------------------------------------------------- ; @routine flashRawWaitForValidMsg ; Wait for valid incoming msg ; ; @return CFLAG set if okay (packet received), cleared on error ; @clobbers: r16, r17, r18 (r19, r22, X) flashRawWaitForValidMsg: rcall UART_HW_Uart1_EnableRawRecv ; (R16) flashRawWaitForValidMsg_loop: ldi xl, LOW(flashRecvBuffer) ldi xh, HIGH(flashRecvBuffer) ldi r16, COM2_MAINTENANCE_ADDR ldi r17, FLASH_RECVBUFFER_MAXLEN-3 ldi r18, 10 ; 10s rcall UART_HW_Uart1_RawRecvPacket ; (r16, r17, r18, r19, r22, X) brcc flashRawWaitForValidMsg_error rcall com2CheckMessageInBuffer ; (R16, R17, R18, R19, R20, X) brcc flashRawWaitForValidMsg_loop ; invalid msg, try next rcall UART_HW_Uart1_DisableRawRecv ; (R16) sec ret flashRawWaitForValidMsg_error: rcall UART_HW_Uart1_DisableRawRecv ; (R16) clc ret ; @end