From 265011de83a4c59a57f0cd5441f308add9743820 Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Thu, 19 Jan 2023 22:07:45 +0100 Subject: [PATCH] Added COM_EnqueuePing. --- avr/com.asm | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/avr/com.asm b/avr/com.asm index be5b9db..7be882e 100644 --- a/avr/com.asm +++ b/avr/com.asm @@ -25,6 +25,8 @@ .equ COM_REPEAT_IMPORTANT = 64 .equ COM_REPEAT_VITAL = 255 +.equ COM_CMD_PING = 1 + ; *************************************************************************** ; data @@ -153,6 +155,45 @@ COM_EnqueuePacket_error: ret +; --------------------------------------------------------------------------- +; Enqueue a PING packet. +; +; IN: +; - R17: destination address +; OUT: +; - CFLAG: set if okay, clear otherwise +; MODIFIED REGS: + +COM_EnqueuePing: + ldi yl, LOW(comRingBuffer) + ldi yh, HIGH(comRingBuffer) + ldi r16, 3+2 ; 3 bytes for buffer length, flags and destination address, src address, cmd, + push r17 + rcall RingBuffer_Alloc + pop r17 + brcc COM_EnqueuePing_error + mov r18, r16 + mov r20, r16 ; r20: start of packet in ring buffer + ldd r19, y+RINGBUFFER_OFFS_MAXSIZE + ldi r16, 3+2 + rcall RingBuffer_Write ; write length + clr r16 + rcall RingBuffer_Write ; write flags + mov r16, r17 + rcall RingBuffer_Write ; write dest addr + ldi r16, COM_CMD_PING + rcall RingBuffer_Write ; write cmd + mov r18, r20 + ldi r20, COM_REPEAT_INFO + rcall COM_EnqueuePacket + brcc COM_EnqueuePing_error + sec + ret +COM_EnqueuePing_error: + clc + ret + + ; --------------------------------------------------------------------------- ; comHandleNextPacketInRingbuffer