; *************************************************************************** ; copyright : (C) 2025 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. * ; *************************************************************************** ; *************************************************************************** ; defines .equ APP_STATS_INTERVAL_MINS = 11 ; *************************************************************************** ; code .cseg ; --------------------------------------------------------------------------- ; @routine AppStats_Init @global ; ; @clobbers r16 AppStats_Init: clr r16 sts appStatsTimer, r16 sec ret ; @end ; --------------------------------------------------------------------------- ; @routine AppStats_Fini @global ; AppStats_Fini: ; nothing to do ret ; @end ; --------------------------------------------------------------------------- ; @routine AppStats_OnEveryMinute @global ; AppStats_OnEveryMinute: push r15 in r15, SREG cli rcall AppStats_OnEveryMinute_noIrq out SREG, r15 pop r15 ret AppStats_OnEveryMinute_noIrq: ; ldi yl, LOW(netInterfaceData) ; ldi yh, HIGH(netInterfaceData) ; rcall AppNetwork_SendRxdStats ; debug lds r16, appStatsTimer inc r16 cpi r16, APP_STATS_INTERVAL_MINS brcs AppStats_OnEveryMinute_store clr r16 AppStats_OnEveryMinute_store: sts appStatsTimer, r16 ldi yl, LOW(netInterfaceData) ldi yh, HIGH(netInterfaceData) cpi r16, 1 breq AppStats_OnEveryMinute_sendDevice cpi r16, 2 breq AppStats_OnEveryMinute_sendPacketsIn cpi r16, 3 breq AppStats_OnEveryMinute_sendPacketsOut cpi r16, 4 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 bigjmp Main_SendValueReport ; @end