; *************************************************************************** ; defines .equ CPRO_CMD_PING = 10 .equ CPRO_CMD_PONG = 11 .equ CPRO_CMD_COMSENDSTATS = 20 .equ CPRO_CMD_COMRECVSTATS = 21 .equ CPRO_CMD_TWIBUSMEMBER = 30 .equ CPRO_CMD_DEBUG = 40 .equ CPRO_CMD_VALUE = 50 .equ CPRO_CMD_NEED_ADDRESS = 60 .equ CPRO_CMD_HAVE_ADDRESS = 61 ; flags for variable payload enqueue function .equ CPRO_PAYLOAD_FLAGS_SECONDS = 0x01 .equ CPRO_PAYLOAD_FLAGS_UID = 0x02 .equ CPRO_PAYLOAD_FLAGS_RESERVED1 = 0x04 .equ CPRO_PAYLOAD_FLAGS_RESERVED2 = 0x08 .equ CPRO_PAYLOAD_FLAGS_RESERVED3 = 0x10 .equ CPRO_PAYLOAD_FLAGS_NUM0 = 0x20 .equ CPRO_PAYLOAD_FLAGS_NUM1 = 0x40 .equ CPRO_PAYLOAD_FLAGS_NUM3 = 0x80 .equ CPRO_PAYLOAD_FLAGS_SHIFT_NUM = 5 ; *************************************************************************** ; data .dseg ; *************************************************************************** ; code .cseg ; --------------------------------------------------------------------------- ; Enqueue a PING packet. ; ; IN: ; - R16: destination address ; OUT: ; - CFLAG: set if okay, clear otherwise ; MODIFIED REGS: R18, R20 (R15, R16, R17, X, Y) CPRO_EnqueuePing: ldi r18, CPRO_CMD_PING ldi r20, COM_BUFFER_PRIO_INFO rjmp cproEnqueueMsgWithCmdAndSrcAddr ; --------------------------------------------------------------------------- ; Enqueue a PONG packet. ; ; IN: ; - R16: destination address ; OUT: ; - CFLAG: set if okay, clear otherwise ; MODIFIED REGS: R18, R20 (R15, R16, R17, X, Y) CPRO_EnqueuePong: ldi r18, CPRO_CMD_PONG ldi r20, COM_BUFFER_PRIO_INFO rjmp cproEnqueueMsgWithCmdAndSrcAddr ; --------------------------------------------------------------------------- ; Enqueue a COM Send stats packet. ; ; IN: ; - R16: destination address ; OUT: ; - CFLAG: set if okay, clear otherwise ; MODIFIED REGS: R16, R17, R20, X (R15, Y) CPRO_EnqueueComSendStats: push r15 in r15, SREG cli push r16 rcall COM_AllocBufferAndGetXY ; (r16, r17, r21) pop r16 brcc CPRO_EnqueueComSendStats_error ldi r17, CPRO_PAYLOAD_FLAGS_SECONDS | (6<