From 809439fd26edfb2bbc08b8638d28b8564afb8091 Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Mon, 1 Sep 2025 23:20:38 +0200 Subject: [PATCH] aqhome-nodes: handle new statistics messages. --- apps/aqhome-nodes/server.c | 70 +++++++++++++---------------------- aqhome/msg/node/m_recvstats.h | 2 +- 2 files changed, 27 insertions(+), 45 deletions(-) diff --git a/apps/aqhome-nodes/server.c b/apps/aqhome-nodes/server.c index 89f1d18..2e191e9 100644 --- a/apps/aqhome-nodes/server.c +++ b/apps/aqhome-nodes/server.c @@ -126,7 +126,6 @@ static void _forwardDataFromRecvStatsMsgToBroker(AQH_NODE_SERVER *xo, const AQH_ static void _forwardDataFromMemStatsMsgToBroker(AQH_NODE_SERVER *xo, const AQH_MESSAGE *msg); static void _forwardTtyMsgToClients(AQH_NODE_SERVER *xo, const AQH_MESSAGE *msg); static void _publishIntWithIdx(AQH_NODE_SERVER *xo, uint32_t uid, const char *vPath, int idx, int vModality, const char *vUnits, int v); -static void _publishDoubleWithIdx(AQH_NODE_SERVER *xo, uint32_t uid, const char *vPath, int idx, int vModality, const char *vUnits, double v); static void _publishInt(AQH_NODE_SERVER *xo, uint32_t uid, const char *vPath, int vModality, const char *vUnits, int v); static void _publishDouble(AQH_NODE_SERVER *xo, uint32_t uid, const char *vPath, int vModality, const char *vUnits, double v); static void _setDeviceName(AQH_VALUE *value, uint32_t uid); @@ -905,25 +904,20 @@ void _forwardDataFromSendStatsMsgToBroker(AQH_NODE_SERVER *xo, const AQH_MESSAGE if (packetsOutInt) { uint32_t uid; int devNum; - double packetsOut; - double collisions; - double busy; - double collisionsPercentage=0.0; - double busyPercentage=0.0; uid=AQH_SendStatsMessage_GetUid(msg); devNum=AQH_SendStatsMessage_GetInterface(msg); - packetsOut=/*(double)*/ packetsOutInt; - collisions=/*(double)*/ AQH_SendStatsMessage_GetCollisions(msg); - busy=/*(double)*/ AQH_SendStatsMessage_GetBusyErrors(msg); - collisionsPercentage=collisions*100.0/packetsOut; - busyPercentage=busy*100.0/packetsOut; - - _publishIntWithIdx( xo, uid, "net/packetsOut", devNum, 0, NULL, packetsOutInt); - _publishIntWithIdx( xo, uid, "net/collisions", devNum, 0, NULL, (int) AQH_SendStatsMessage_GetCollisions(msg)); - _publishDoubleWithIdx(xo, uid, "net/collisionsPercent", devNum, 0, "%", collisionsPercentage); - _publishDoubleWithIdx(xo, uid, "net/busyPercent", devNum, 0, "%", busyPercentage); + if (devNum==0) { + _publishInt(xo, uid, "net/packetsOut", 0, NULL, packetsOutInt); + _publishInt(xo, uid, "net/collisions", 0, NULL, (int) AQH_SendStatsMessage_GetCollisions(msg)); + _publishInt(xo, uid, "net/busy", 0, NULL, (int) AQH_SendStatsMessage_GetBusyErrors(msg)); + } + else { + _publishIntWithIdx(xo, uid, "net/packetsOut", devNum, 0, NULL, packetsOutInt); + _publishIntWithIdx(xo, uid, "net/collisions", devNum, 0, NULL, (int) AQH_SendStatsMessage_GetCollisions(msg)); + _publishIntWithIdx(xo, uid, "net/busy", devNum, 0, NULL, (int) AQH_SendStatsMessage_GetBusyErrors(msg)); + } } } @@ -937,26 +931,26 @@ void _forwardDataFromRecvStatsMsgToBroker(AQH_NODE_SERVER *xo, const AQH_MESSAGE if (packetsInInt) { uint32_t uid; int devNum; - double packetsIn; - double crcErrors; - double ioErrors; - double crcErrorsPercentage=0.0; - double ioErrorsPercentage=0.0; uid=AQH_RecvStatsMessage_GetUid(msg); devNum=AQH_RecvStatsMessage_GetInterface(msg); - packetsIn=/*(double)*/ packetsInInt; - crcErrors=/*(double)*/AQH_RecvStatsMessage_GetCrcErrors(msg); - ioErrors=/*(double)*/AQH_RecvStatsMessage_GetIoErrors(msg); - crcErrorsPercentage=crcErrors*100.0/packetsIn; - ioErrorsPercentage=ioErrors*100.0/packetsIn; - - _publishIntWithIdx( xo, uid, "net/packetsIn", devNum, 0, NULL, packetsInInt); - _publishIntWithIdx( xo, uid, "net/crcerrors", devNum, 0, NULL, (int) AQH_RecvStatsMessage_GetCrcErrors(msg)); - _publishIntWithIdx( xo, uid, "net/ioerrors", devNum, 0, NULL, (int) AQH_RecvStatsMessage_GetIoErrors(msg)); - _publishDoubleWithIdx(xo, uid, "net/crcerrorsPercent", devNum, 0, "%", crcErrorsPercentage); - _publishDoubleWithIdx(xo, uid, "net/ioerrorsPercent", devNum, 0, "%", ioErrorsPercentage); + if (devNum==0) { + _publishInt(xo, uid, "net/packetsIn", 0, NULL, packetsInInt); + _publishInt(xo, uid, "net/crcErrors", 0, NULL, (int) AQH_RecvStatsMessage_GetCrcErrors(msg)); + _publishInt(xo, uid, "net/ioErrors", 0, NULL, (int) AQH_RecvStatsMessage_GetIoErrors(msg)); + _publishInt(xo, uid, "net/nobufferErrors", 0, NULL, (int) AQH_RecvStatsMessage_GetNoBufferErrors(msg)); + _publishInt(xo, uid, "net/msgSizeErrors", 0, NULL, (int) AQH_RecvStatsMessage_GetMsgSizeErrors(msg)); + _publishInt(xo, uid, "net/missed", 0, NULL, (int) AQH_RecvStatsMessage_GetMissed(msg)); + } + else { + _publishIntWithIdx(xo, uid, "net/packetsIn", devNum, 0, NULL, packetsInInt); + _publishIntWithIdx(xo, uid, "net/crcErrors", devNum, 0, NULL, (int) AQH_RecvStatsMessage_GetCrcErrors(msg)); + _publishIntWithIdx(xo, uid, "net/ioErrors", devNum, 0, NULL, (int) AQH_RecvStatsMessage_GetIoErrors(msg)); + _publishIntWithIdx(xo, uid, "net/nobufferErrors", devNum, 0, NULL, (int) AQH_RecvStatsMessage_GetNoBufferErrors(msg)); + _publishIntWithIdx(xo, uid, "net/msgSizeErrors", devNum, 0, NULL, (int) AQH_RecvStatsMessage_GetMsgSizeErrors(msg)); + _publishIntWithIdx(xo, uid, "net/missed", devNum, 0, NULL, (int) AQH_RecvStatsMessage_GetMissed(msg)); + } } } @@ -986,18 +980,6 @@ void _publishIntWithIdx(AQH_NODE_SERVER *xo, uint32_t uid, const char *vPath, in -void _publishDoubleWithIdx(AQH_NODE_SERVER *xo, uint32_t uid, const char *vPath, int idx, int vModality, const char *vUnits, double v) -{ - GWEN_BUFFER *tbuf; - - tbuf=GWEN_Buffer_new(0, 256, 0, 1); - GWEN_Buffer_AppendArgs(tbuf, "%s%d", vPath, idx); - _publishDouble(xo, uid, GWEN_Buffer_GetStart(tbuf), vModality, vUnits, v); - GWEN_Buffer_free(tbuf); -} - - - void _publishInt(AQH_NODE_SERVER *xo, uint32_t uid, const char *vPath, int vModality, const char *vUnits, int v) { _publishDouble(xo, uid, vPath, vModality, vUnits, /*(double)*/ v); diff --git a/aqhome/msg/node/m_recvstats.h b/aqhome/msg/node/m_recvstats.h index 58968de..c6dcbbe 100644 --- a/aqhome/msg/node/m_recvstats.h +++ b/aqhome/msg/node/m_recvstats.h @@ -23,7 +23,7 @@ AQHOME_API uint16_t AQH_RecvStatsMessage_GetPacketsIn(const AQH_MESSAGE *msg); AQHOME_API uint16_t AQH_RecvStatsMessage_GetCrcErrors(const AQH_MESSAGE *msg); AQHOME_API uint16_t AQH_RecvStatsMessage_GetIoErrors(const AQH_MESSAGE *msg); AQHOME_API uint16_t AQH_RecvStatsMessage_GetNoBufferErrors(const AQH_MESSAGE *msg); -AQHOME_API uint16_t AQH_RecvStatsMessage_GetHandled(const AQH_MESSAGE *msg); +AQHOME_API uint16_t AQH_RecvStatsMessage_GetMsgSizeErrors(const AQH_MESSAGE *msg); AQHOME_API uint16_t AQH_RecvStatsMessage_GetMissed(const AQH_MESSAGE *msg); AQHOME_API void AQH_RecvStatsMessage_DumpToBuffer(const AQH_MESSAGE *msg, GWEN_BUFFER *dbuf, const char *sText);