From 17d4ce51253279f826f800ce16a4fb0df7a3c2a9 Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Tue, 3 Oct 2023 13:31:05 +0200 Subject: [PATCH] Change AQH_Value field NameForDriver to Name and make it only contain the value name. Previously this field contained the device name, too. This would make it necessary for drivers to remove the device part of the name when SetValue is called. Instead the device name is now always provided by the driver in the appropriate field DeviceNameForDriver. --- apps/aqhome-data/c_setdata.c | 2 +- apps/aqhome-data/c_updatedata.c | 2 +- apps/aqhome-data/loop.c | 11 +++++++---- apps/aqhome-nodes/loop_tty_broker.c | 20 ++------------------ apps/aqhome-tool/data/adddata.c | 2 +- aqhome/data/value.t2d | 2 +- aqhome/ipc/data/ipc_data.c | 4 ++-- 7 files changed, 15 insertions(+), 28 deletions(-) diff --git a/apps/aqhome-data/c_setdata.c b/apps/aqhome-data/c_setdata.c index 97db15e..25c4809 100644 --- a/apps/aqhome-data/c_setdata.c +++ b/apps/aqhome-data/c_setdata.c @@ -58,7 +58,7 @@ void AqHomeData_HandleSetData(AQHOME_DATA *aqh, GWEN_MSG_ENDPOINT *epSrc, GWEN_M AQH_MultiDataDataIpcMsg_Parse(recvdMsg, 0); recvdValue=AQH_MultiDataDataIpcMsg_ReadValue(recvdMsg); - valueName=recvdValue?AQH_Value_GetNameForDriver(recvdValue):NULL; + valueName=recvdValue?AQH_Value_GetNameForSystem(recvdValue):NULL; tag=AQH_Tag16IpcMsg_FindFirstTagByType(recvdMsg, AQH_MSGDATA_MULTIDATA_TAGS_DATA); dataPoints=tag?((const uint64_t*)GWEN_Tag16_GetTagData(tag)):NULL; numberOfPoints=(tag?GWEN_Tag16_GetTagLength(tag):0)/(2*sizeof(uint64_t)); diff --git a/apps/aqhome-data/c_updatedata.c b/apps/aqhome-data/c_updatedata.c index 5d92828..2645972 100644 --- a/apps/aqhome-data/c_updatedata.c +++ b/apps/aqhome-data/c_updatedata.c @@ -61,7 +61,7 @@ void AqHomeData_HandleUpdateData(AQHOME_DATA *aqh, GWEN_MSG_ENDPOINT *ep, GWEN_M AQH_MultiDataDataIpcMsg_Parse(recvdMsg, 0); recvdValue=AQH_MultiDataDataIpcMsg_ReadValue(recvdMsg); - valueName=recvdValue?AQH_Value_GetNameForDriver(recvdValue):NULL; + valueName=recvdValue?AQH_Value_GetName(recvdValue):NULL; tag=AQH_Tag16IpcMsg_FindFirstTagByType(recvdMsg, AQH_MSGDATA_MULTIDATA_TAGS_DATA); dataPoints=tag?((const uint64_t*)GWEN_Tag16_GetTagData(tag)):NULL; numberOfPoints=(tag?GWEN_Tag16_GetTagLength(tag):0)/(2*sizeof(uint64_t)); diff --git a/apps/aqhome-data/loop.c b/apps/aqhome-data/loop.c index 6518589..58a1517 100644 --- a/apps/aqhome-data/loop.c +++ b/apps/aqhome-data/loop.c @@ -121,7 +121,7 @@ AQH_VALUE *AqHomeData_GetOrCreateValueForDriver(AQHOME_DATA *aqh, DBG_INFO(AQH_LOGDOMAIN, "Creating value \"%s\"", GWEN_Buffer_GetStart(buf)); v=AQH_Value_new(); AQH_Value_SetDriver(v, serviceName); - AQH_Value_SetNameForDriver(v, nameForDriver); + AQH_Value_SetName(v, nameForDriver); AQH_Value_SetNameForSystem(v, GWEN_Buffer_GetStart(buf)); AQH_Value_SetValueUnits(v, units); AQH_Value_SetValueType(v, valueType); @@ -150,11 +150,14 @@ AQH_VALUE *AqHomeData_GetOrCreateValueForDriverWithTemplate(AQHOME_DATA *aqh, const char *deviceNameForDriver; serviceName=AQH_IpcEndpoint_GetServiceName(epDriver); - nameForDriver=AQH_Value_GetNameForDriver(valueTemplate); + nameForDriver=AQH_Value_GetName(valueTemplate); deviceNameForDriver=AQH_Value_GetDeviceNameForDriver(valueTemplate); buf=GWEN_Buffer_new(0, 256, 0, 1); - GWEN_Buffer_AppendArgs(buf, "%s/%s", (serviceName && *serviceName)?serviceName:"unknown", nameForDriver); + if (deviceNameForDriver && *deviceNameForDriver) + GWEN_Buffer_AppendArgs(buf, "%s/%s/%s", (serviceName && *serviceName)?serviceName:"unknown", deviceNameForDriver, nameForDriver); + else + GWEN_Buffer_AppendArgs(buf, "%s/%s", (serviceName && *serviceName)?serviceName:"unknown", nameForDriver); v=AQH_Storage_GetValueByNameForSystem(aqh->storage, GWEN_Buffer_GetStart(buf)); if (v==NULL) { @@ -166,7 +169,7 @@ AQH_VALUE *AqHomeData_GetOrCreateValueForDriverWithTemplate(AQHOME_DATA *aqh, v=AQH_Value_new(); AQH_Value_SetDriver(v, serviceName); - AQH_Value_SetNameForDriver(v, AQH_Value_GetNameForDriver(valueTemplate)); + AQH_Value_SetName(v, AQH_Value_GetName(valueTemplate)); AQH_Value_SetNameForSystem(v, GWEN_Buffer_GetStart(buf)); AQH_Value_SetValueUnits(v, AQH_Value_GetValueUnits(valueTemplate)); AQH_Value_SetValueType(v, AQH_Value_GetValueType(valueTemplate)); diff --git a/apps/aqhome-nodes/loop_tty_broker.c b/apps/aqhome-nodes/loop_tty_broker.c index 23befaa..ddea4a2 100644 --- a/apps/aqhome-nodes/loop_tty_broker.c +++ b/apps/aqhome-nodes/loop_tty_broker.c @@ -52,7 +52,6 @@ static void _processSendStatsMessage(AQHOMED *aqh, const GWEN_MSG *nodeMsg); static void _processRecvStatsMessage(AQHOMED *aqh, const GWEN_MSG *nodeMsg); static void _publishInt(AQHOMED *aqh, uint32_t uid, int valueId, const char *valueUnits, const char *valuePath, int v); static void _publishDouble(AQHOMED *aqh, uint32_t uid, int valueId, const char *valueUnits, const char *valuePath, double v); -static void _setValueNameForDriver(AQH_VALUE *value, uint32_t uid, int valueId, const char *valuePath); static void _setDeviceName(AQH_VALUE *value, uint32_t uid); @@ -174,14 +173,14 @@ void _publishDouble(AQHOMED *aqh, uint32_t uid, int valueId, const char *valueUn arrayToSend[1]=u.i; value=AQH_Value_new(); - _setValueNameForDriver(value, uid, valueId, valuePath); + AQH_Value_SetName(value, valuePath); AQH_Value_SetValueUnits(value, valueUnits); AQH_Value_SetValueType(value, 0); _setDeviceName(value, uid); pubMsg=AQH_MultiDataDataIpcMsg_new(AQH_MSGTYPE_IPC_DATA_UPDATEDATA, value, arrayToSend, 1); if (pubMsg) { - DBG_INFO(AQH_LOGDOMAIN, "BROKER PUBLISH %s: %f", AQH_Value_GetNameForDriver(value), v); + DBG_INFO(AQH_LOGDOMAIN, "BROKER PUBLISH %s: %f", AQH_Value_GetName(value), v); GWEN_MsgEndpoint_AddSendMessage(aqh->brokerEndpoint, pubMsg); } AQH_Value_free(value); @@ -189,21 +188,6 @@ void _publishDouble(AQHOMED *aqh, uint32_t uid, int valueId, const char *valueUn -void _setValueNameForDriver(AQH_VALUE *value, uint32_t uid, int valueId, const char *valuePath) -{ - GWEN_BUFFER *buf; - - buf=GWEN_Buffer_new(0, 64, 0, 1); - if (valueId>0) - GWEN_Buffer_AppendArgs(buf, "%08x/%d/%s", uid, valueId, valuePath); - else - GWEN_Buffer_AppendArgs(buf, "%08x/%s", uid, valuePath); - AQH_Value_SetNameForDriver(value, GWEN_Buffer_GetStart(buf)); - GWEN_Buffer_free(buf); -} - - - void _setDeviceName(AQH_VALUE *value, uint32_t uid) { GWEN_BUFFER *buf; diff --git a/apps/aqhome-tool/data/adddata.c b/apps/aqhome-tool/data/adddata.c index c49584f..8813123 100644 --- a/apps/aqhome-tool/data/adddata.c +++ b/apps/aqhome-tool/data/adddata.c @@ -298,7 +298,7 @@ void _sendCommand(GWEN_MSG_ENDPOINT *epTcp, const char *valueName, const char *v arrayToSend[1]=u.i; value=AQH_Value_new(); - AQH_Value_SetNameForDriver(value, valueName); + AQH_Value_SetName(value, valueName); AQH_Value_SetValueUnits(value, valueUnits); msgOut=AQH_MultiDataDataIpcMsg_new(AQH_MSGTYPE_IPC_DATA_UPDATEDATA, value, arrayToSend, 1); diff --git a/aqhome/data/value.t2d b/aqhome/data/value.t2d index ac19a22..35d73f5 100644 --- a/aqhome/data/value.t2d +++ b/aqhome/data/value.t2d @@ -59,7 +59,7 @@ own - + 0 0 public diff --git a/aqhome/ipc/data/ipc_data.c b/aqhome/ipc/data/ipc_data.c index d03e18b..1804464 100644 --- a/aqhome/ipc/data/ipc_data.c +++ b/aqhome/ipc/data/ipc_data.c @@ -173,7 +173,7 @@ void _writeValueFieldsAsTagsToBuffer(const AQH_VALUE *value, GWEN_BUFFER *buf) if (s && *s) GWEN_Tag16_WriteStringTagToBuffer(AQH_IPCDATA_VALUE_TAGS_DRIVER, s, buf); - s=AQH_Value_GetNameForDriver(value); + s=AQH_Value_GetName(value); if (s && *s) GWEN_Tag16_WriteStringTagToBuffer(AQH_IPCDATA_VALUE_TAGS_NAMEFORDRIVER, s, buf); @@ -318,7 +318,7 @@ AQH_VALUE *_readValueFromTag(const uint8_t *ptr, uint32_t len) break; case AQH_IPCDATA_VALUE_TAGS_NAMEFORDRIVER: s=GWEN_Tag16_GetTagDataAsNewString(tag, NULL); - AQH_Value_SetNameForDriver(value, s); + AQH_Value_SetName(value, s); free(s); break; case AQH_IPCDATA_VALUE_TAGS_NAMEFORSYSTEM: