From 042db13994a9e708967cbda19d5435d9f43d160b Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Wed, 28 May 2025 00:47:19 +0200 Subject: [PATCH] avr/apps/stats: send VALUE_REPORT messages instead of individual stats messages. this makes it easier to add some more stats later and it removes some messages. --- avr/apps/stats/main.asm | 97 +++++++++++++++++++++++++++++++----- avr/devices/all/defs.asm | 16 ++++++ avr/devices/c01/aqua_c01.xml | 15 +++++- avr/devices/n23/aqua_n23.xml | 12 +++++ avr/devices/n24/aqua_n24.xml | 12 +++++ 5 files changed, 138 insertions(+), 14 deletions(-) diff --git a/avr/apps/stats/main.asm b/avr/apps/stats/main.asm index f3f8f5f..d615e0c 100644 --- a/avr/apps/stats/main.asm +++ b/avr/apps/stats/main.asm @@ -11,7 +11,7 @@ ; *************************************************************************** ; defines -.equ APP_STATS_INTERVAL_MINS = 10 +.equ APP_STATS_INTERVAL_MINS = 11 @@ -63,22 +63,93 @@ AppStats_OnEveryMinute_store: ldi yl, LOW(netInterfaceData) ldi yh, HIGH(netInterfaceData) cpi r16, 1 - breq AppStats_OnEveryMinute_sendRxdStats - cpi r16, 2 - breq AppStats_OnEveryMinute_sendTxdStats - cpi r16, 3 breq AppStats_OnEveryMinute_sendDevice + cpi r16, 2 + breq AppStats_OnEveryMinute_sendPacketsIn + cpi r16, 3 + breq AppStats_OnEveryMinute_sendPacketsOut cpi r16, 4 - breq AppStats_OnEveryMinute_sendMemStats - ret -AppStats_OnEveryMinute_sendTxdStats: - rjmp AppNetwork_SendTxdStats -AppStats_OnEveryMinute_sendRxdStats: - rjmp AppNetwork_SendRxdStats -AppStats_OnEveryMinute_sendMemStats: - rjmp AppNetwork_SendMemStats + breq AppStats_OnEveryMinute_sendContentErrs + cpi r16, 5 + breq AppStats_OnEveryMinute_sendIoErrs + cpi r16, 6 + breq AppStats_OnEveryMinute_sendNoBufErrs + cpi r16, 7 + breq AppStats_OnEveryMinute_sendCollisionErrs + cpi r16, 8 + breq AppStats_OnEveryMinute_sendBusyErrs +#ifdef MODULES_HEAP + cpi r16, 9 + breq AppStats_OnEveryMinute_sendHeapUsed + cpi r16, 10 + breq AppStats_OnEveryMinute_sendHeapfree +#endif + 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 +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 +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 +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 +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 +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 +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 +#ifdef MODULES_HEAP +AppStats_OnEveryMinute_sendHeapUsed: + ldi r17, AQHOME_VALUEID_STATS_HEAP_USED + lds r18, heapUsed + lds r19, heapUsed+1 + rjmp appStatsSend16BitValue +AppStats_OnEveryMinute_sendHeapfree: + ldi r17, AQHOME_VALUEID_STATS_HEAP_FREE + lds r18, heapFree + lds r19, heapFree+1 + rjmp appStatsSend16BitValue +#endif +; @end + + + +; --------------------------------------------------------------------------- +; @routine AppStats_OnEveryMinute @global +; +; @param R17 value id +; @param R19:R18 value + +appStatsSend16BitValue: + ldi r20, 1 + clr r21 + ldi r22, AQHOME_VALUETYPE_STATS + rjmp Main_SendValueReport ; @end diff --git a/avr/devices/all/defs.asm b/avr/devices/all/defs.asm index c3b0a1d..e42e861 100644 --- a/avr/devices/all/defs.asm +++ b/avr/devices/all/defs.asm @@ -20,6 +20,22 @@ .equ AQHOME_VALUETYPE_MOTION = 6 .equ AQHOME_VALUETYPE_CO2 = 7 .equ AQHOME_VALUETYPE_TVOC = 8 +.equ AQHOME_VALUETYPE_STATS = 9 + + +; Value Ids + +.equ AQHOME_VALUEID_STATS_PACKETS_IN = 0xe0 +.equ AQHOME_VALUEID_STATS_PACKETS_OUT = 0xe1 +.equ AQHOME_VALUEID_STATS_ERRS_CONTENT = 0xe2 +.equ AQHOME_VALUEID_STATS_ERRS_IO = 0xe3 +.equ AQHOME_VALUEID_STATS_ERRS_NOBUF = 0xe4 +.equ AQHOME_VALUEID_STATS_ERRS_COLLISIONS = 0xe5 +.equ AQHOME_VALUEID_STATS_ERRS_BUSY = 0xe6 +.equ AQHOME_VALUEID_STATS_HEAP_USED = 0xe7 +.equ AQHOME_VALUEID_STATS_HEAP_FREE = 0xe8 + + diff --git a/avr/devices/c01/aqua_c01.xml b/avr/devices/c01/aqua_c01.xml index 4ea15e0..6181e0c 100644 --- a/avr/devices/c01/aqua_c01.xml +++ b/avr/devices/c01/aqua_c01.xml @@ -1,11 +1,24 @@ AQUA - N + C 1 + + + + + + + + + + + + + diff --git a/avr/devices/n23/aqua_n23.xml b/avr/devices/n23/aqua_n23.xml index 0d0d4c3..0f049f9 100644 --- a/avr/devices/n23/aqua_n23.xml +++ b/avr/devices/n23/aqua_n23.xml @@ -12,6 +12,18 @@ + + + + + + + + + + + + diff --git a/avr/devices/n24/aqua_n24.xml b/avr/devices/n24/aqua_n24.xml index 8ca6a5d..7552f11 100644 --- a/avr/devices/n24/aqua_n24.xml +++ b/avr/devices/n24/aqua_n24.xml @@ -12,6 +12,18 @@ + + + + + + + + + + + +