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.
This commit is contained in:
Martin Preuss
2023-10-03 13:31:05 +02:00
parent 253b3862da
commit 17d4ce5125
7 changed files with 15 additions and 28 deletions

View File

@@ -58,7 +58,7 @@ void AqHomeData_HandleSetData(AQHOME_DATA *aqh, GWEN_MSG_ENDPOINT *epSrc, GWEN_M
AQH_MultiDataDataIpcMsg_Parse(recvdMsg, 0); AQH_MultiDataDataIpcMsg_Parse(recvdMsg, 0);
recvdValue=AQH_MultiDataDataIpcMsg_ReadValue(recvdMsg); 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); tag=AQH_Tag16IpcMsg_FindFirstTagByType(recvdMsg, AQH_MSGDATA_MULTIDATA_TAGS_DATA);
dataPoints=tag?((const uint64_t*)GWEN_Tag16_GetTagData(tag)):NULL; dataPoints=tag?((const uint64_t*)GWEN_Tag16_GetTagData(tag)):NULL;
numberOfPoints=(tag?GWEN_Tag16_GetTagLength(tag):0)/(2*sizeof(uint64_t)); numberOfPoints=(tag?GWEN_Tag16_GetTagLength(tag):0)/(2*sizeof(uint64_t));

View File

@@ -61,7 +61,7 @@ void AqHomeData_HandleUpdateData(AQHOME_DATA *aqh, GWEN_MSG_ENDPOINT *ep, GWEN_M
AQH_MultiDataDataIpcMsg_Parse(recvdMsg, 0); AQH_MultiDataDataIpcMsg_Parse(recvdMsg, 0);
recvdValue=AQH_MultiDataDataIpcMsg_ReadValue(recvdMsg); 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); tag=AQH_Tag16IpcMsg_FindFirstTagByType(recvdMsg, AQH_MSGDATA_MULTIDATA_TAGS_DATA);
dataPoints=tag?((const uint64_t*)GWEN_Tag16_GetTagData(tag)):NULL; dataPoints=tag?((const uint64_t*)GWEN_Tag16_GetTagData(tag)):NULL;
numberOfPoints=(tag?GWEN_Tag16_GetTagLength(tag):0)/(2*sizeof(uint64_t)); numberOfPoints=(tag?GWEN_Tag16_GetTagLength(tag):0)/(2*sizeof(uint64_t));

View File

@@ -121,7 +121,7 @@ AQH_VALUE *AqHomeData_GetOrCreateValueForDriver(AQHOME_DATA *aqh,
DBG_INFO(AQH_LOGDOMAIN, "Creating value \"%s\"", GWEN_Buffer_GetStart(buf)); DBG_INFO(AQH_LOGDOMAIN, "Creating value \"%s\"", GWEN_Buffer_GetStart(buf));
v=AQH_Value_new(); v=AQH_Value_new();
AQH_Value_SetDriver(v, serviceName); 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_SetNameForSystem(v, GWEN_Buffer_GetStart(buf));
AQH_Value_SetValueUnits(v, units); AQH_Value_SetValueUnits(v, units);
AQH_Value_SetValueType(v, valueType); AQH_Value_SetValueType(v, valueType);
@@ -150,10 +150,13 @@ AQH_VALUE *AqHomeData_GetOrCreateValueForDriverWithTemplate(AQHOME_DATA *aqh,
const char *deviceNameForDriver; const char *deviceNameForDriver;
serviceName=AQH_IpcEndpoint_GetServiceName(epDriver); serviceName=AQH_IpcEndpoint_GetServiceName(epDriver);
nameForDriver=AQH_Value_GetNameForDriver(valueTemplate); nameForDriver=AQH_Value_GetName(valueTemplate);
deviceNameForDriver=AQH_Value_GetDeviceNameForDriver(valueTemplate); deviceNameForDriver=AQH_Value_GetDeviceNameForDriver(valueTemplate);
buf=GWEN_Buffer_new(0, 256, 0, 1); buf=GWEN_Buffer_new(0, 256, 0, 1);
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); GWEN_Buffer_AppendArgs(buf, "%s/%s", (serviceName && *serviceName)?serviceName:"unknown", nameForDriver);
v=AQH_Storage_GetValueByNameForSystem(aqh->storage, GWEN_Buffer_GetStart(buf)); v=AQH_Storage_GetValueByNameForSystem(aqh->storage, GWEN_Buffer_GetStart(buf));
@@ -166,7 +169,7 @@ AQH_VALUE *AqHomeData_GetOrCreateValueForDriverWithTemplate(AQHOME_DATA *aqh,
v=AQH_Value_new(); v=AQH_Value_new();
AQH_Value_SetDriver(v, serviceName); 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_SetNameForSystem(v, GWEN_Buffer_GetStart(buf));
AQH_Value_SetValueUnits(v, AQH_Value_GetValueUnits(valueTemplate)); AQH_Value_SetValueUnits(v, AQH_Value_GetValueUnits(valueTemplate));
AQH_Value_SetValueType(v, AQH_Value_GetValueType(valueTemplate)); AQH_Value_SetValueType(v, AQH_Value_GetValueType(valueTemplate));

View File

@@ -52,7 +52,6 @@ static void _processSendStatsMessage(AQHOMED *aqh, const GWEN_MSG *nodeMsg);
static void _processRecvStatsMessage(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 _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 _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); 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; arrayToSend[1]=u.i;
value=AQH_Value_new(); value=AQH_Value_new();
_setValueNameForDriver(value, uid, valueId, valuePath); AQH_Value_SetName(value, valuePath);
AQH_Value_SetValueUnits(value, valueUnits); AQH_Value_SetValueUnits(value, valueUnits);
AQH_Value_SetValueType(value, 0); AQH_Value_SetValueType(value, 0);
_setDeviceName(value, uid); _setDeviceName(value, uid);
pubMsg=AQH_MultiDataDataIpcMsg_new(AQH_MSGTYPE_IPC_DATA_UPDATEDATA, value, arrayToSend, 1); pubMsg=AQH_MultiDataDataIpcMsg_new(AQH_MSGTYPE_IPC_DATA_UPDATEDATA, value, arrayToSend, 1);
if (pubMsg) { 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); GWEN_MsgEndpoint_AddSendMessage(aqh->brokerEndpoint, pubMsg);
} }
AQH_Value_free(value); 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) void _setDeviceName(AQH_VALUE *value, uint32_t uid)
{ {
GWEN_BUFFER *buf; GWEN_BUFFER *buf;

View File

@@ -298,7 +298,7 @@ void _sendCommand(GWEN_MSG_ENDPOINT *epTcp, const char *valueName, const char *v
arrayToSend[1]=u.i; arrayToSend[1]=u.i;
value=AQH_Value_new(); value=AQH_Value_new();
AQH_Value_SetNameForDriver(value, valueName); AQH_Value_SetName(value, valueName);
AQH_Value_SetValueUnits(value, valueUnits); AQH_Value_SetValueUnits(value, valueUnits);
msgOut=AQH_MultiDataDataIpcMsg_new(AQH_MSGTYPE_IPC_DATA_UPDATEDATA, value, arrayToSend, 1); msgOut=AQH_MultiDataDataIpcMsg_new(AQH_MSGTYPE_IPC_DATA_UPDATEDATA, value, arrayToSend, 1);

View File

@@ -59,7 +59,7 @@
<flags>own</flags> <flags>own</flags>
</member> </member>
<member name="nameForDriver" type="char_ptr" maxlen="128"> <member name="name" type="char_ptr" maxlen="128">
<default>0</default> <default>0</default>
<preset>0</preset> <preset>0</preset>
<access>public</access> <access>public</access>

View File

@@ -173,7 +173,7 @@ void _writeValueFieldsAsTagsToBuffer(const AQH_VALUE *value, GWEN_BUFFER *buf)
if (s && *s) if (s && *s)
GWEN_Tag16_WriteStringTagToBuffer(AQH_IPCDATA_VALUE_TAGS_DRIVER, s, buf); GWEN_Tag16_WriteStringTagToBuffer(AQH_IPCDATA_VALUE_TAGS_DRIVER, s, buf);
s=AQH_Value_GetNameForDriver(value); s=AQH_Value_GetName(value);
if (s && *s) if (s && *s)
GWEN_Tag16_WriteStringTagToBuffer(AQH_IPCDATA_VALUE_TAGS_NAMEFORDRIVER, s, buf); 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; break;
case AQH_IPCDATA_VALUE_TAGS_NAMEFORDRIVER: case AQH_IPCDATA_VALUE_TAGS_NAMEFORDRIVER:
s=GWEN_Tag16_GetTagDataAsNewString(tag, NULL); s=GWEN_Tag16_GetTagDataAsNewString(tag, NULL);
AQH_Value_SetNameForDriver(value, s); AQH_Value_SetName(value, s);
free(s); free(s);
break; break;
case AQH_IPCDATA_VALUE_TAGS_NAMEFORSYSTEM: case AQH_IPCDATA_VALUE_TAGS_NAMEFORSYSTEM: