Added COM_EnqueuePing.

This commit is contained in:
Martin Preuss
2023-01-19 22:07:45 +01:00
parent ff734192bb
commit 265011de83

View File

@@ -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