/**************************************************************************** * This file is part of the project AqHome. * AqHome (c) by 2025 Martin Preuss, all rights reserved. * * The license for this file can be found in the file COPYING which you * should have received along with this file. ****************************************************************************/ #ifdef HAVE_CONFIG_H # include #endif #include "./mdevices_valuestable.h" #include "./mdevices_index.h" #include "aqhome-cgi/service/module.h" #include "aqhome-cgi/modules/mdataclient.h" #include #include #include /* ------------------------------------------------------------------------------------------------ * defs and enums * ------------------------------------------------------------------------------------------------ */ #define GBAS GWEN_Buffer_AppendString #define GBAA GWEN_Buffer_AppendArgs /* ------------------------------------------------------------------------------------------------ * forward declarations * ------------------------------------------------------------------------------------------------ */ static void _writeValueListToTable(const char *sDeviceName, const AQH_VALUE_LIST *valueList, uint32_t perms, GWEN_BUFFER *dbuf); static void _writeValueToTable(const char *sDeviceName, const AQH_VALUE *value, uint32_t perms, GWEN_BUFFER *dbuf); /* ------------------------------------------------------------------------------------------------ * code * ------------------------------------------------------------------------------------------------ */ void AQH_ModDevices_RunValuesAsTable(AQH_MODULE *m, AQCGI_REQUEST *rq, AQH_SESSION *session, AQH_DATACLIENT *dc, GWEN_BUFFER *dbuf) { GWEN_DB_NODE *dbQuery; const char *sDeviceName; uint32_t perms; perms=AQH_ModService_GetUserPerms(m); dbQuery=AQCGI_Request_GetDbQuery(rq); sDeviceName=GWEN_DB_GetCharValue(dbQuery, "device", 0, NULL); if (!(sDeviceName && *sDeviceName)) AQH_ModDevices_RunIndex(m, rq, session, dc, dbuf); else { AQH_VALUE_LIST *valueList; valueList=AQH_DataClient_GetValues(dc, sDeviceName, 0); if (valueList && AQH_Value_List_GetCount(valueList)) { GBAA(dbuf,"

Values for Device %s

\n", sDeviceName); _writeValueListToTable(sDeviceName, valueList, perms, dbuf); GBAS(dbuf, "\n"); } else { GBAS(dbuf,"

No values.

\n"); } AQH_Value_List_free(valueList); } } void _writeValueListToTable(const char *sDeviceName, const AQH_VALUE_LIST *valueList, uint32_t perms, GWEN_BUFFER *dbuf) { const AQH_VALUE *value; GBAS(dbuf, "\n" "" "" "" "" "" #if 0 "" "" "" #endif "" "\n" "\n"); value=AQH_Value_List_First(valueList); while(value) { //if (AQH_Value_GetModality(value)!=AQH_ValueModality_Stats) _writeValueToTable(sDeviceName, value, perms, dbuf); value=AQH_Value_List_Next(value); } GBAS(dbuf, "\n" "
NameTypeModalityDriverDeviceName for System
\n"); } void _writeValueToTable(const char *sDeviceName, const AQH_VALUE *value, uint32_t perms, GWEN_BUFFER *dbuf) { const char *s; GBAS(dbuf, ""); /* name for system */ s=AQH_Value_GetName(value); if (perms & AQH_MODDEVICES_PERMS_VALUEREAD) { uint32_t pos; pos=GWEN_Buffer_GetPos(dbuf); GBAS(dbuf,"%s", s); } else GBAA(dbuf,"%s", s?s:""); s=AQH_ValueType_toString(AQH_Value_GetValueType(value)); GBAA(dbuf, "%s", s?s:""); s=AQH_ValueModality_toString(AQH_Value_GetModality(value)); GBAA(dbuf, "%s", s?s:""); GBAA(dbuf, "\n"); }