; *************************************************************************** ; 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. * ; *************************************************************************** ; *************************************************************************** ; defines .equ NET_UART_MSG_INTERVAL = 1 ; *************************************************************************** ; data .dseg netUartIface: .byte UART_HW_IFACE_SIZE ; *************************************************************************** ; code .cseg ; --------------------------------------------------------------------------- ; @routine ComOnUart0_Init @global ; NET_Uart_Init: ldi yl, LOW(netUartIface) ldi yh, HIGH(netUartIface) rcall UART_HW_Interface_Init rcall UART_Init rcall ATTN_Init ret ; @end ; --------------------------------------------------------------------------- ; @routine NET_Uart_Run @global ; ; @clobbers all NET_Uart_Run: push r15 in r15, SREG cli ldi yl, LOW(netUartIface) ldi yh, HIGH(netUartIface) rcall netUartRunReadModes ldd r16, Y+UART_HW_IFACE_OFFS_READMODE ; test for active read mode cpi r16, UART_HW_READMODE_IDLE brne NET_Uart_Run_end rcall netUartRunWriteModes ; only call write routine if read idle NET_Uart_Run_end: pop r15 out SREG, r15 ret ; @end ; --------------------------------------------------------------------------- ; @routine NET_Uart_Periodically ; ; @clobbers all, !Y NET_Uart_Periodically: ldi yl, LOW(netUartIface) ldi yh, HIGH(netUartIface) rjmp NET_Interface_Periodically ; @end ; --------------------------------------------------------------------------- ; @routine netUartRunWriteModes ; ; @clobbers all, !Y netUartRunWriteModes: ldd r16, Y+UART_HW_IFACE_OFFS_WRITEMODE ; handle write functions cpi r16, UART_HW_WRITEMODE_IDLE breq netUartRunWriteIdle cpi r16, UART_HW_WRITEMODE_WRITING breq netUartRunWriting cpi r16, UART_HW_WRITEMODE_WAITBUFFEREMPTY breq netUartRunWaitBufferEmpty cpi r16, UART_HW_WRITEMODE_WRITEBUFFEREMPTY breq netUartRunWriteBufferEmpty ret ; @end netUartRunWaitBufferEmpty: rcall UART_GetFlags ; (none) ldi r17, (1<