Added COM_EnqueuePing.
This commit is contained in:
41
avr/com.asm
41
avr/com.asm
@@ -25,6 +25,8 @@
|
|||||||
.equ COM_REPEAT_IMPORTANT = 64
|
.equ COM_REPEAT_IMPORTANT = 64
|
||||||
.equ COM_REPEAT_VITAL = 255
|
.equ COM_REPEAT_VITAL = 255
|
||||||
|
|
||||||
|
.equ COM_CMD_PING = 1
|
||||||
|
|
||||||
|
|
||||||
; ***************************************************************************
|
; ***************************************************************************
|
||||||
; data
|
; data
|
||||||
@@ -153,6 +155,45 @@ COM_EnqueuePacket_error:
|
|||||||
ret
|
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
|
; comHandleNextPacketInRingbuffer
|
||||||
|
|||||||
Reference in New Issue
Block a user