From 734c2376668d8711b7cf87382764d9c268362d33 Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Sun, 6 Jul 2025 14:36:50 +0200 Subject: [PATCH] sort counters to simplify stats app. --- avr/apps/stats/main.asm | 105 ++++++++++++++++++++++++----------- avr/modules/network/defs.asm | 36 ++++++------ 2 files changed, 89 insertions(+), 52 deletions(-) diff --git a/avr/apps/stats/main.asm b/avr/apps/stats/main.asm index a669c49..283141a 100644 --- a/avr/apps/stats/main.asm +++ b/avr/apps/stats/main.asm @@ -75,6 +75,10 @@ AppStats_OnEveryMinute_store: sts appStatsTimer, r16 ldi yl, LOW(netInterfaceData) ldi yh, HIGH(netInterfaceData) + + ldi r17, AQHOME_VALUEID_STATS_PACKETS_IN + ldi xl, LOW(netInterfaceData) + ldi xh, HIGH(netInterfaceData) cpi r16, 1 breq AppStats_OnEveryMinute_sendDevice cpi r16, 3 @@ -97,57 +101,68 @@ AppStats_OnEveryMinute_store: breq AppStats_OnEveryMinute_sendDevice cpi r16, 15 breq AppStats_OnEveryMinute_sendBusyErrs -#ifdef MODULES_HEAP + +#ifdef APP_STATS_NETDEV2 + ldi r17, AQHOME_VALUEID_STATS_PACKETS_IN2 + ldi xl, LOW(netInterfaceData2) + ldi xh, HIGH(netInterfaceData2) + cpi r16, 16 + breq AppStats_OnEveryMinute_sendPacketsIn cpi r16, 17 - breq AppStats_OnEveryMinute_sendHeapUsed - cpi r16, 19 - breq AppStats_OnEveryMinute_sendHeapfree -#endif + breq AppStats_OnEveryMinute_sendPacketsOut cpi r16, 18 breq AppStats_OnEveryMinute_sendDevice + cpi r16, 19 + breq AppStats_OnEveryMinute_sendContentErrs + cpi r16, 20 + breq AppStats_OnEveryMinute_sendIoErrs + cpi r16, 21 + breq AppStats_OnEveryMinute_sendDevice + cpi r16, 22 + breq AppStats_OnEveryMinute_sendNoBufErrs cpi r16, 23 breq AppStats_OnEveryMinute_sendDevice + cpi r16, 24 + breq AppStats_OnEveryMinute_sendCollisionErrs + cpi r16, 25 + breq AppStats_OnEveryMinute_sendBusyErrs +#endif + +#ifdef MODULES_HEAP + cpi r16, 26 + breq AppStats_OnEveryMinute_sendHeapUsed + cpi r16, 27 + breq AppStats_OnEveryMinute_sendHeapfree +#endif cpi r16, 28 breq AppStats_OnEveryMinute_sendDevice + ret AppStats_OnEveryMinute_sendDevice: rjmp AppNetwork_SendDevice AppStats_OnEveryMinute_sendPacketsIn: - ldi r17, AQHOME_VALUEID_STATS_PACKETS_IN - ldd r18, Y+NET_IFACE_OFFS_PACKETSIN_LOW - ldd r19, Y+NET_IFACE_OFFS_PACKETSIN_HIGH - rjmp appStatsSend16BitValue + ldi r16, 0 + rjmp appStatsSendDeviceStat AppStats_OnEveryMinute_sendPacketsOut: - ldi r17, AQHOME_VALUEID_STATS_PACKETS_OUT - ldd r18, Y+NET_IFACE_OFFS_PACKETSOUT_LOW - ldd r19, Y+NET_IFACE_OFFS_PACKETSOUT_HIGH - rjmp appStatsSend16BitValue + ldi r16, 1 + rjmp appStatsSendDeviceStat AppStats_OnEveryMinute_sendContentErrs: - ldi r17, AQHOME_VALUEID_STATS_ERRS_CONTENT - ldd r18, Y+NET_IFACE_OFFS_ERR_CONTENT_LOW - ldd r19, Y+NET_IFACE_OFFS_ERR_CONTENT_HIGH - rjmp appStatsSend16BitValue + ldi r16, 2 + rjmp appStatsSendDeviceStat AppStats_OnEveryMinute_sendIoErrs: - ldi r17, AQHOME_VALUEID_STATS_ERRS_IO - ldd r18, Y+NET_IFACE_OFFS_ERR_IO_LOW - ldd r19, Y+NET_IFACE_OFFS_ERR_IO_HIGH - rjmp appStatsSend16BitValue + ldi r16, 3 + rjmp appStatsSendDeviceStat AppStats_OnEveryMinute_sendNoBufErrs: - ldi r17, AQHOME_VALUEID_STATS_ERRS_NOBUF - ldd r18, Y+NET_IFACE_OFFS_ERR_NOBUF_LOW - ldd r19, Y+NET_IFACE_OFFS_ERR_NOBUF_HIGH - rjmp appStatsSend16BitValue + ldi r16, 4 + rjmp appStatsSendDeviceStat AppStats_OnEveryMinute_sendCollisionErrs: - ldi r17, AQHOME_VALUEID_STATS_ERRS_COLLISIONS - ldd r18, Y+NET_IFACE_OFFS_ERR_COLLISIONS_LOW - ldd r19, Y+NET_IFACE_OFFS_ERR_COLLISIONS_HIGH - rjmp appStatsSend16BitValue + ldi r16, 5 + rjmp appStatsSendDeviceStat AppStats_OnEveryMinute_sendBusyErrs: - ldi r17, AQHOME_VALUEID_STATS_ERRS_BUSY - ldd r18, Y+NET_IFACE_OFFS_ERR_BUSY_LOW - ldd r19, Y+NET_IFACE_OFFS_ERR_BUSY_HIGH - rjmp appStatsSend16BitValue + ldi r16, 6 + rjmp appStatsSendDeviceStat + #ifdef MODULES_HEAP AppStats_OnEveryMinute_sendHeapUsed: ldi r17, AQHOME_VALUEID_STATS_HEAP_USED @@ -164,6 +179,30 @@ AppStats_OnEveryMinute_sendHeapfree: + +; --------------------------------------------------------------------------- +; @routine AppStats_OnEveryMinute @global +; +; @param r16 index into device table (e.g. 0 for NET_IFACE_OFFS_PACKETSIN_LOW) +; @param r17 offset to first value id (e.g. AQHOME_VALUEID_STATS_PACKETS_IN for device 0, +; AQHOME_VALUEID_STATS_PACKETS_IN2 for device 1) +; @param Y pointer to device to send data to +; @param X pointer to device to inspect + +appStatsSendDeviceStat: + add r17, r16 + lsl r16 + adiw xh:xl, NET_IFACE_OFFS_PACKETSIN_LOW + add xl, r16 + adc xh, r16 + sub xh, r16 + ld r18, X+ + ld r19, X + rjmp appStatsSend16BitValue +; @end + + + ; --------------------------------------------------------------------------- ; @routine AppStats_OnEveryMinute @global ; diff --git a/avr/modules/network/defs.asm b/avr/modules/network/defs.asm index ff1f6d3..e805442 100644 --- a/avr/modules/network/defs.asm +++ b/avr/modules/network/defs.asm @@ -31,27 +31,25 @@ .equ NET_IFACE_OFFS_LASTMSGID_LOW = 8 .equ NET_IFACE_OFFS_LASTMSGID_HIGH = 9 -; receiption stats +; device stats .equ NET_IFACE_OFFS_PACKETSIN_LOW = 10 .equ NET_IFACE_OFFS_PACKETSIN_HIGH = 11 -.equ NET_IFACE_OFFS_ERR_CONTENT_LOW = 12 -.equ NET_IFACE_OFFS_ERR_CONTENT_HIGH = 13 -.equ NET_IFACE_OFFS_ERR_IO_LOW = 14 -.equ NET_IFACE_OFFS_ERR_IO_HIGH = 15 -.equ NET_IFACE_OFFS_ERR_NOBUF_LOW = 16 -.equ NET_IFACE_OFFS_ERR_NOBUF_HIGH = 17 -.equ NET_IFACE_OFFS_ERR_MSGSIZE_LOW = 18 -.equ NET_IFACE_OFFS_ERR_MSGSIZE_HIGH = 19 -.equ NET_IFACE_OFFS_ERR_MISSED_LOW = 20 -.equ NET_IFACE_OFFS_ERR_MISSED_HIGH = 21 - -; send stats -.equ NET_IFACE_OFFS_PACKETSOUT_LOW = 22 -.equ NET_IFACE_OFFS_PACKETSOUT_HIGH = 23 -.equ NET_IFACE_OFFS_ERR_COLLISIONS_LOW = 24 -.equ NET_IFACE_OFFS_ERR_COLLISIONS_HIGH = 25 -.equ NET_IFACE_OFFS_ERR_BUSY_LOW = 26 -.equ NET_IFACE_OFFS_ERR_BUSY_HIGH = 27 +.equ NET_IFACE_OFFS_PACKETSOUT_LOW = 12 +.equ NET_IFACE_OFFS_PACKETSOUT_HIGH = 13 +.equ NET_IFACE_OFFS_ERR_CONTENT_LOW = 14 +.equ NET_IFACE_OFFS_ERR_CONTENT_HIGH = 15 +.equ NET_IFACE_OFFS_ERR_IO_LOW = 16 +.equ NET_IFACE_OFFS_ERR_IO_HIGH = 17 +.equ NET_IFACE_OFFS_ERR_NOBUF_LOW = 18 +.equ NET_IFACE_OFFS_ERR_NOBUF_HIGH = 19 +.equ NET_IFACE_OFFS_ERR_COLLISIONS_LOW = 20 +.equ NET_IFACE_OFFS_ERR_COLLISIONS_HIGH = 21 +.equ NET_IFACE_OFFS_ERR_BUSY_LOW = 22 +.equ NET_IFACE_OFFS_ERR_BUSY_HIGH = 23 +.equ NET_IFACE_OFFS_ERR_MSGSIZE_LOW = 24 +.equ NET_IFACE_OFFS_ERR_MSGSIZE_HIGH = 25 +.equ NET_IFACE_OFFS_ERR_MISSED_LOW = 26 +.equ NET_IFACE_OFFS_ERR_MISSED_HIGH = 27 .equ NET_IFACE_OFFS_OUTMSGRINGBUF = 28 ; RINGBUFFERY_SIZE+UART_HW_IFACE_OUTMSGBUF_SIZE