aqhome-react: allow for int values.

those will be used e.g. to count number of open windows etc.
This commit is contained in:
Martin Preuss
2024-05-15 00:10:15 +02:00
parent 7ce34b0500
commit 5ec9827f92
8 changed files with 127 additions and 14 deletions

View File

@@ -68,6 +68,7 @@ AQHREACT_DATAOBJECT *AQHREACT_DataObject_dup(const AQHREACT_DATAOBJECT *origObje
dataObject->timestamp=origObject->timestamp;
dataObject->dataType=origObject->dataType;
dataObject->doubleData=origObject->doubleData;
dataObject->intData=origObject->intData;
AQHREACT_DataObject_SetStringData(dataObject, origObject->stringData);
return dataObject;
}
@@ -188,11 +189,27 @@ void AQHREACT_DataObject_SetStringData(AQHREACT_DATAOBJECT *dataObject, const ch
int AQHREACT_DataObject_GetIntData(const AQHREACT_DATAOBJECT *dataObject)
{
return dataObject?(dataObject->intData):0;
}
void AQHREACT_DataObject_SetIntData(AQHREACT_DATAOBJECT *dataObject, int i)
{
if (dataObject)
dataObject->intData=i;
}
const char *AQHREACT_DataObjectType_toString(int t)
{
switch(t) {
case AQHREACT_DATAOBJECTTYPE_DOUBLE: return "double";
case AQHREACT_DATAOBJECTTYPE_STRING: return "string";
case AQHREACT_DATAOBJECTTYPE_INT: return "int";
default: return "unknown";
}
}
@@ -206,6 +223,8 @@ int AQHREACT_DataObjectType_fromString(const char *s)
return AQHREACT_DATAOBJECTTYPE_DOUBLE;
else if (strcasecmp(s, "string")==0)
return AQHREACT_DATAOBJECTTYPE_STRING;
else if (strcasecmp(s, "int")==0)
return AQHREACT_DATAOBJECTTYPE_INT;
}
return AQHREACT_DATAOBJECTTYPE_UNKNOWN;
@@ -230,6 +249,9 @@ void AQHREACT_DataObject_Dump(const AQHREACT_DATAOBJECT *dataObject, GWEN_BUFFER
case AQHREACT_DATAOBJECTTYPE_STRING:
GWEN_Buffer_AppendArgs(buf, "%s (STRING) [%s]\n", AQHREACT_DataObject_GetStringData(dataObject), sVarSystemId?sVarSystemId:"");
break;
case AQHREACT_DATAOBJECTTYPE_INT:
GWEN_Buffer_AppendArgs(buf, "%d (INT) [%s]\n", AQHREACT_DataObject_GetIntData(dataObject), sVarSystemId?sVarSystemId:"");
break;
default:
break;
}

View File

@@ -20,7 +20,8 @@ GWEN_LIST_FUNCTION_DEFS(AQHREACT_DATAOBJECT, AQHREACT_DataObject)
enum {
AQHREACT_DATAOBJECTTYPE_UNKNOWN=0,
AQHREACT_DATAOBJECTTYPE_DOUBLE,
AQHREACT_DATAOBJECTTYPE_STRING
AQHREACT_DATAOBJECTTYPE_STRING,
AQHREACT_DATAOBJECTTYPE_INT
};
@@ -55,6 +56,9 @@ void AQHREACT_DataObject_SetDoubleData(AQHREACT_DATAOBJECT *dataObject, double i
const char *AQHREACT_DataObject_GetStringData(const AQHREACT_DATAOBJECT *dataObject);
void AQHREACT_DataObject_SetStringData(AQHREACT_DATAOBJECT *dataObject, const char *s);
int AQHREACT_DataObject_GetIntData(const AQHREACT_DATAOBJECT *dataObject);
void AQHREACT_DataObject_SetIntData(AQHREACT_DATAOBJECT *dataObject, int i);
void AQHREACT_DataObject_Dump(const AQHREACT_DATAOBJECT *dataObject, GWEN_BUFFER *buf, int indent);

View File

@@ -23,6 +23,7 @@ struct AQHREACT_DATAOBJECT {
uint64_t timestamp;
int dataType;
double doubleData;
int intData;
char *stringData;
};