Files
aqhomecontrol/avr/modules/network/main.asm
2026-04-26 12:47:50 +02:00

103 lines
2.4 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. *
; ***************************************************************************
#ifndef AQH_AVR_NETWORK_MAIN_ASM
#define AQH_AVR_NETWORK_MAIN_ASM
.cseg
; ---------------------------------------------------------------------------
; @routine NET_Init
;
; Initializes buffers.
;
; @clobbers R16, R17, X
NET_Init:
rcall NET_Buffer_Init ; (R16, R17, X)
ldi r16, NET_MSGNUMINBUF_SIZE
ldi yl, LOW(netRingBufferMsgNumIn)
ldi yh, HIGH(netRingBufferMsgNumIn)
rcall RingBufferY_Init ; (R17)
sec
ret
; @end
; ---------------------------------------------------------------------------
; @routine NET_AddIncomingMsgNum @global
;
; @return CFLAG on success, cleared on error
; @param R16 buffer number of the next incoming message
; @clobbers R17, R18, X
NET_AddIncomingMsgNum:
push yl
push yh
ldi yl, LOW(netRingBufferMsgNumIn)
ldi yh, HIGH(netRingBufferMsgNumIn)
rcall RingBufferY_WriteByteGuarded ; R17, R18, X
pop yh
pop yl
ret
; @end
; ---------------------------------------------------------------------------
; @routine NET_GetNextIncomingMsgNum @global
;
; @return CFLAG on success, cleared on error
; @return R16 buffer number of the next incoming message
; @clobbers R17, R18, X
NET_GetNextIncomingMsgNum:
push yl
push yh
ldi yl, LOW(netRingBufferMsgNumIn)
ldi yh, HIGH(netRingBufferMsgNumIn)
rcall RingBufferY_ReadByteGuarded ; R17, R18, X
pop yh
pop yl
ret
; @end
; ---------------------------------------------------------------------------
; @routine NET_GetPeekIncomingMsgNum @global
;
; @return CFLAG on success, cleared on error
; @return R16 buffer number of the next incoming message
; @param Y pointer to start of interface data
; @clobbers R17, R18, X
NET_PeekNextIncomingMsgNum:
push yl
push yh
ldi yl, LOW(netRingBufferMsgNumIn)
ldi yh, HIGH(netRingBufferMsgNumIn)
rcall RingBufferY_PeekByteGuarded ; R17, R18, X
pop yh
pop yl
ret
; @end
#endif