From b60de3994c476fd74ae322fdf43f8ecd3b25a928 Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Fri, 14 Feb 2025 22:42:46 +0100 Subject: [PATCH] avr: added routine to count used buffers. fixed a bug. --- avr/common/m_fixedbuffers.asm | 27 +++++++++++++++++++++++++++ avr/modules/network/buffer.asm | 17 ++++++++++++++++- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/avr/common/m_fixedbuffers.asm b/avr/common/m_fixedbuffers.asm index f4481b0..b2831e1 100644 --- a/avr/common/m_fixedbuffers.asm +++ b/avr/common/m_fixedbuffers.asm @@ -108,5 +108,32 @@ l_end: +; --------------------------------------------------------------------------- +; @macro m_fixedbuf_count_used +; +; @return r16 number of buffers in use +; @param X pointer to start of buffers +; @param %0 constant maxBytes per buffer (including statusbyte in front) +; @param %1 constant maxBuffers +; @clobbers r16, r17, r18, X + +.macro m_fixedbuf_count_used + clr r16 + ldi r17, @1 +l_loop: + ld r18, X + tst r18 + breq l_notused + inc r16 +l_notused: + adiw xh:xl, @0 + dec r17 + brne l_loop +l_end: +.endmacro +; @end + + + diff --git a/avr/modules/network/buffer.asm b/avr/modules/network/buffer.asm index 34eaf84..41657c2 100644 --- a/avr/modules/network/buffer.asm +++ b/avr/modules/network/buffer.asm @@ -112,7 +112,7 @@ NET_Buffer_Locate: ror xl ldi r17, LOW(netBuffers) add xl, r17 - ldi r16, HIGH(netBuffers) + ldi r17, HIGH(netBuffers) adc xh, r17 sec NET_Buffer_Locate_end: @@ -121,5 +121,20 @@ NET_Buffer_Locate_end: +; --------------------------------------------------------------------------- +; @routine NET_Buffer_CountUsed +; +; @return r16 number of buffers in use +; @param X pointer to start of buffers +; @param %0 constant maxBytes per buffer (including statusbyte in front) +; @param %1 constant maxBuffers +; @clobbers r16, r17, r18, X + +NET_Buffer_CountUsed: + ldi xl, LOW(netBuffers) + ldi xh, HIGH(netBuffers) + m_fixedbuf_count_used NET_BUFFERS_SIZE, NET_BUFFERS_NUM + ret +; @end