; *************************************************************************** ; copyright : (C) 2026 by Martin Preuss ; email : martin@libchipcard.de ; ; *************************************************************************** ; * This file is part of the project "AqHome". * ; * Please see toplevel file COPYING of that project for license details. * ; *************************************************************************** #ifndef AQH_AVR_NETWORK_MSG_RECVSTATS_W_ASM #define AQH_AVR_NETWORK_MSG_RECVSTATS_W_ASM ; --------------------------------------------------------------------------- ; @routine NETMSG_RecvStats_Write @global ; ; @param Y pointer to device to write msg for and to ; @param X pointer to buffer to write to ; @clobbers R16, R18 (R17, R19, R20, R21, Z) NETMSG_RecvStats_Write: ldi r16, 0xff st X+, r16 ; dest address ldi r16, 19 ; msg code+src address+10 payload bytes st X+, r16 ; msg len ldi r16, NETMSG_CMD_RECVSTATS st X+, r16 ; msg code ldd r16, Y+NET_IFACE_OFFS_ADDRESS st X+, r16 ; src address ; UID bigcall NETMSG_Common_AddUidToBuffer ; (R16, R18, R19, R20, R21) ; interface number ldd r16, Y+NET_IFACE_OFFS_IFACENUM st X+, r16 ; packets in ldd r16, Y+NET_IFACE_OFFS_PACKETSIN_LOW st X+, r16 ldd r16, Y+NET_IFACE_OFFS_PACKETSIN_HIGH st X+, r16 ; content error ldd r16, Y+NET_IFACE_OFFS_ERR_CONTENT_LOW st X+, r16 ldd r16, Y+NET_IFACE_OFFS_ERR_CONTENT_HIGH st X+, r16 ; io error ldd r16, Y+NET_IFACE_OFFS_ERR_IO_LOW st X+, r16 ldd r16, Y+NET_IFACE_OFFS_ERR_IO_HIGH st X+, r16 ; nobuf error ldd r16, Y+NET_IFACE_OFFS_ERR_NOBUF_LOW st X+, r16 ldd r16, Y+NET_IFACE_OFFS_ERR_NOBUF_HIGH st X+, r16 ; msgsize error ldd r16, Y+NET_IFACE_OFFS_ERR_MSGSIZE_LOW st X+, r16 ldd r16, Y+NET_IFACE_OFFS_ERR_MSGSIZE_HIGH st X+, r16 ; missed error ldd r16, Y+NET_IFACE_OFFS_ERR_MISSED_LOW st X+, r16 ldd r16, Y+NET_IFACE_OFFS_ERR_MISSED_HIGH st X+, r16 sbiw xh:xl, 21 ; go back to beginning of message (1 byte dst addr, 1 byte length, 18 bytes payload) bigcall NETMSG_CalcAndAddChecksumByte ; (R16, R17, R18, R19, R20, X) sbiw xh:xl, 22 ; go back to beginning of message (1 byte dst addr, 1 byte length, 18 bytes payload, 1 byte crc) ret ; @end #endif