fixed a bug.

was not accepting "0.0" as value.
This commit is contained in:
Martin Preuss
2025-10-23 20:59:12 +02:00
parent cfa071c6de
commit 55ac83820e

View File

@@ -93,67 +93,60 @@ void AQH_NodeServer_HandleSetData(AQH_OBJECT *o, AQH_OBJECT *ep, const AQH_MESSA
varName=AQH_Value_GetName(value); varName=AQH_Value_GetName(value);
if (varName) { if (varName) {
double data; double data;
AQH_NODE_INFO *nodeInfo;
data=AQH_IpcdMessageSetData_ReadData(tagList); data=AQH_IpcdMessageSetData_ReadData(tagList);
if (data) { nodeInfo=_getNodeInfoFromValue(xo, value);
AQH_NODE_INFO *nodeInfo; if (nodeInfo) {
const char *devName;
nodeInfo=_getNodeInfoFromValue(xo, value); devName=AQH_NodeInfo_GetDeviceId(nodeInfo);
if (nodeInfo) { if (devName) {
const char *devName; const AQHNODE_DEVICE *devInfo;
devName=AQH_NodeInfo_GetDeviceId(nodeInfo); devInfo=AQH_NodeServer_GetDeviceDefByName(o, devName);
if (devName) { if (devInfo) {
const AQHNODE_DEVICE *devInfo; const AQHNODE_VALUE *devValue;
devInfo=AQH_NodeServer_GetDeviceDefByName(o, devName); devValue=AQHNODE_Value_List_GetByName(AQHNODE_Device_GetValueList(devInfo), varName);
if (devInfo) { if (devValue) {
const AQHNODE_VALUE *devValue; uint16_t dataVal=0;
uint16_t dataDenom=0;
devValue=AQHNODE_Value_List_GetByName(AQHNODE_Device_GetValueList(devInfo), varName); if (AQH_ReadDataFromDouble(AQHNODE_Value_GetDataType(devValue), data, &dataVal, &dataDenom)==0) {
if (devValue) { AQH_MSG_REQUEST *rq;
uint16_t dataVal=0; int destAddr;
uint16_t dataDenom=0;
if (AQH_ReadDataFromDouble(AQHNODE_Value_GetDataType(devValue), data, &dataVal, &dataDenom)==0) { destAddr=AQH_NodeInfo_GetBusAddress(nodeInfo);
AQH_MSG_REQUEST *rq; DBG_DEBUG(NULL, "Creating SETDATA request");
int destAddr;
destAddr=AQH_NodeInfo_GetBusAddress(nodeInfo); rq=_mkRequest_SetData(o, xo, ep, msgId, destAddr, AQHNODE_Value_GetId(devValue), dataVal, dataDenom);
DBG_DEBUG(NULL, "Creating SETDATA request"); AQH_NodeServer_AddRequestToTree(o, rq);
/* done */
rq=_mkRequest_SetData(o, xo, ep, msgId, destAddr, AQHNODE_Value_GetId(devValue), dataVal, dataDenom);
AQH_NodeServer_AddRequestToTree(o, rq);
/* done */
}
else {
DBG_ERROR(NULL, "Bad data \"%s\"", data);
_sendResponseResultToBroker(ep, msgId, AQH_MSGDATA_RESULT_ERROR_BADDATA);
}
} }
else { else {
DBG_ERROR(NULL, "Invalid value name \"%s\"", varName); DBG_ERROR(NULL, "Bad data \"%.2f\"", data);
_sendResponseResultToBroker(ep, msgId, AQH_MSGDATA_RESULT_ERROR_INVALID); _sendResponseResultToBroker(ep, msgId, AQH_MSGDATA_RESULT_ERROR_BADDATA);
} }
} }
else { else {
DBG_ERROR(NULL, "Unknown node \"%s\"", devName); DBG_ERROR(NULL, "Invalid value name \"%s\"", varName);
_sendResponseResultToBroker(ep, msgId, AQH_MSGDATA_RESULT_ERROR_INVALID); _sendResponseResultToBroker(ep, msgId, AQH_MSGDATA_RESULT_ERROR_INVALID);
} }
} }
else { else {
DBG_ERROR(NULL, "Node not yet fully identified, come back later"); DBG_ERROR(NULL, "Unknown node \"%s\"", devName);
_sendResponseResultToBroker(ep, msgId, AQH_MSGDATA_RESULT_ERROR_TRYAGAIN); _sendResponseResultToBroker(ep, msgId, AQH_MSGDATA_RESULT_ERROR_INVALID);
} }
} }
else { else {
DBG_ERROR(NULL, "No matching nodeinfo"); DBG_ERROR(NULL, "Node not yet fully identified, come back later");
_sendResponseResultToBroker(ep, msgId, AQH_MSGDATA_RESULT_ERROR_INVALID); _sendResponseResultToBroker(ep, msgId, AQH_MSGDATA_RESULT_ERROR_TRYAGAIN);
} }
} }
else { else {
DBG_ERROR(NULL, "No data"); DBG_ERROR(NULL, "No matching nodeinfo");
_sendResponseResultToBroker(ep, msgId, AQH_MSGDATA_RESULT_ERROR_NODATA); _sendResponseResultToBroker(ep, msgId, AQH_MSGDATA_RESULT_ERROR_INVALID);
} }
} }
else { else {