aqhome-react: Started working on module which reacts to value changes.
This commit is contained in:
@@ -7,6 +7,7 @@
|
|||||||
aqhome-mqttlog
|
aqhome-mqttlog
|
||||||
aqhome-data
|
aqhome-data
|
||||||
aqhome-nodes
|
aqhome-nodes
|
||||||
|
aqhome-react
|
||||||
</subdirs>
|
</subdirs>
|
||||||
|
|
||||||
</gwbuild>
|
</gwbuild>
|
||||||
|
|||||||
70
apps/aqhome-react/0BUILD
Normal file
70
apps/aqhome-react/0BUILD
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
<?xml?>
|
||||||
|
|
||||||
|
<gwbuild>
|
||||||
|
|
||||||
|
<target type="Program" name="aqhome-react" install="$(sbindir)" >
|
||||||
|
|
||||||
|
<includes type="c" >
|
||||||
|
$(gwenhywfar_cflags)
|
||||||
|
-I$(topsrcdir)
|
||||||
|
-I$(topbuilddir)
|
||||||
|
-I$(topsrcdir)/apps
|
||||||
|
-I$(topbuilddir)/apps
|
||||||
|
-I$(builddir)
|
||||||
|
-I$(srcdir)
|
||||||
|
</includes>
|
||||||
|
|
||||||
|
<includes type="tm2" >
|
||||||
|
--include=$(builddir)
|
||||||
|
--include=$(srcdir)
|
||||||
|
</includes>
|
||||||
|
|
||||||
|
<setVar name="local/cflags">$(visibility_cflags)</setVar>
|
||||||
|
|
||||||
|
<setVar name="tm2flags" >
|
||||||
|
</setVar>
|
||||||
|
|
||||||
|
<setVar name="local/typefiles" >
|
||||||
|
</setVar>
|
||||||
|
|
||||||
|
<setVar name="local/built_sources" >
|
||||||
|
</setVar>
|
||||||
|
|
||||||
|
<setVar name="local/built_headers_pub">
|
||||||
|
</setVar>
|
||||||
|
|
||||||
|
<setVar name="local/built_headers_priv" >
|
||||||
|
</setVar>
|
||||||
|
|
||||||
|
<headers dist="true" >
|
||||||
|
</headers>
|
||||||
|
|
||||||
|
<sources>
|
||||||
|
$(local/typefiles)
|
||||||
|
main.c
|
||||||
|
</sources>
|
||||||
|
|
||||||
|
<useTargets>
|
||||||
|
aqhome
|
||||||
|
aqhreact_types
|
||||||
|
</useTargets>
|
||||||
|
|
||||||
|
<libraries>
|
||||||
|
$(gwenhywfar_libs)
|
||||||
|
</libraries>
|
||||||
|
|
||||||
|
<subdirs>
|
||||||
|
types
|
||||||
|
</subdirs>
|
||||||
|
|
||||||
|
|
||||||
|
<extradist>
|
||||||
|
</extradist>
|
||||||
|
|
||||||
|
|
||||||
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
</gwbuild>
|
||||||
|
|
||||||
|
|
||||||
37
apps/aqhome-react/aqhome_react.h
Normal file
37
apps/aqhome-react/aqhome_react.h
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* This file is part of the project AqHome.
|
||||||
|
* AqHome (c) by 2023 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.
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef AQHOME_REACT_H
|
||||||
|
#define AQHOME_REACT_H
|
||||||
|
|
||||||
|
|
||||||
|
#include <gwenhywfar/endpoint.h>
|
||||||
|
|
||||||
|
|
||||||
|
#define AQHOME_REACT_DEFAULT_PIDFILE "/var/run/aqhome-react.pid"
|
||||||
|
#define AQHOME_REACT_DEFAULT_DATADIR "/var/lib/aqhome-react"
|
||||||
|
|
||||||
|
#define AQHOME_REACT_DEFAULT_BROKER_PORT 1899
|
||||||
|
#define AQHOME_REACT_DEFAULT_BROKER_CLIENTID "react"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
struct AQHOME_REACT {
|
||||||
|
GWEN_MSG_ENDPOINT *rootEndpoint;
|
||||||
|
GWEN_MSG_ENDPOINT *brokerEndpoint; /* do not free (is part of tree pointed to by rootEndpoint) */
|
||||||
|
|
||||||
|
GWEN_DB_NODE *dbArgs;
|
||||||
|
char *pidFile;
|
||||||
|
int timeout; /* timeout for run e.g. inside valgrind */
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
39
apps/aqhome-react/aqhome_react_p.h
Normal file
39
apps/aqhome-react/aqhome_react_p.h
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* This file is part of the project AqHome.
|
||||||
|
* AqHome (c) by 2023 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.
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef AQHOME_REACT_P_H
|
||||||
|
#define AQHOME_REACT_P_H
|
||||||
|
|
||||||
|
|
||||||
|
#include "./aqhome_react.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define AQHOME_REACT_DEFAULT_PIDFILE "/var/run/aqhome-react.pid"
|
||||||
|
#define AQHOME_REACT_DEFAULT_DATADIR "/var/lib/aqhome-react"
|
||||||
|
|
||||||
|
#define AQHOME_REACT_DEFAULT_BROKER_PORT 1899
|
||||||
|
#define AQHOME_REACT_DEFAULT_BROKER_CLIENTID "react"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
struct AQHOME_REACT {
|
||||||
|
GWEN_MSG_ENDPOINT *rootEndpoint;
|
||||||
|
GWEN_MSG_ENDPOINT *brokerEndpoint; /* do not free (is part of tree pointed to by rootEndpoint) */
|
||||||
|
|
||||||
|
GWEN_DB_NODE *dbArgs;
|
||||||
|
char *pidFile;
|
||||||
|
int timeout; /* timeout for run e.g. inside valgrind */
|
||||||
|
|
||||||
|
AQH_STORAGE *storage;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
9
apps/aqhome-react/main.c
Normal file
9
apps/aqhome-react/main.c
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
71
apps/aqhome-react/types/0BUILD
Normal file
71
apps/aqhome-react/types/0BUILD
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
<?xml?>
|
||||||
|
|
||||||
|
<gwbuild>
|
||||||
|
|
||||||
|
<target type="ConvenienceLibrary" name="aqhreact_types" >
|
||||||
|
|
||||||
|
<includes type="c" >
|
||||||
|
$(gwenhywfar_cflags)
|
||||||
|
-I$(topsrcdir)
|
||||||
|
-I$(topbuilddir)
|
||||||
|
-I$(topsrcdir)/apps
|
||||||
|
-I$(topbuilddir)/apps
|
||||||
|
-I$(builddir)
|
||||||
|
-I$(srcdir)
|
||||||
|
</includes>
|
||||||
|
|
||||||
|
<includes type="tm2" >
|
||||||
|
--include=$(builddir)
|
||||||
|
--include=$(srcdir)
|
||||||
|
</includes>
|
||||||
|
|
||||||
|
<setVar name="local/cflags">$(visibility_cflags)</setVar>
|
||||||
|
|
||||||
|
<setVar name="tm2flags" >
|
||||||
|
</setVar>
|
||||||
|
|
||||||
|
<setVar name="local/typefiles" >
|
||||||
|
</setVar>
|
||||||
|
|
||||||
|
<setVar name="local/built_sources" >
|
||||||
|
</setVar>
|
||||||
|
|
||||||
|
<setVar name="local/built_headers_pub">
|
||||||
|
</setVar>
|
||||||
|
|
||||||
|
<setVar name="local/built_headers_priv" >
|
||||||
|
</setVar>
|
||||||
|
|
||||||
|
<headers dist="true" >
|
||||||
|
dataobject.h
|
||||||
|
dataobject_p.h
|
||||||
|
inputslot.h
|
||||||
|
inputslot_p.h
|
||||||
|
</headers>
|
||||||
|
|
||||||
|
<sources>
|
||||||
|
$(local/typefiles)
|
||||||
|
dataobject.c
|
||||||
|
inputslot.c
|
||||||
|
</sources>
|
||||||
|
|
||||||
|
<useTargets>
|
||||||
|
</useTargets>
|
||||||
|
|
||||||
|
<libraries>
|
||||||
|
</libraries>
|
||||||
|
|
||||||
|
<subdirs>
|
||||||
|
</subdirs>
|
||||||
|
|
||||||
|
|
||||||
|
<extradist>
|
||||||
|
</extradist>
|
||||||
|
|
||||||
|
|
||||||
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
</gwbuild>
|
||||||
|
|
||||||
|
|
||||||
193
apps/aqhome-react/types/dataobject.c
Normal file
193
apps/aqhome-react/types/dataobject.c
Normal file
@@ -0,0 +1,193 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* This file is part of the project AqHome.
|
||||||
|
* AqHome (c) by 2024 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 <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#include "./dataobject_p.h"
|
||||||
|
|
||||||
|
#include <gwenhywfar/list.h>
|
||||||
|
#include <gwenhywfar/debug.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
GWEN_LIST_FUNCTIONS(AQHREACT_DATAOBJECT, AQHREACT_DataObject)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
AQHREACT_DATAOBJECT *AQHREACT_DataObject_new()
|
||||||
|
{
|
||||||
|
AQHREACT_DATAOBJECT *dataObject;
|
||||||
|
|
||||||
|
GWEN_NEW_OBJECT(AQHREACT_DATAOBJECT, dataObject);
|
||||||
|
dataObject->_refCount=1;
|
||||||
|
GWEN_LIST_INIT(AQHREACT_DATAOBJECT, dataObject);
|
||||||
|
return dataObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void AQHREACT_DataObject_free(AQHREACT_DATAOBJECT *dataObject)
|
||||||
|
{
|
||||||
|
if (dataObject) {
|
||||||
|
if (dataObject->_refCount==1) {
|
||||||
|
GWEN_LIST_FINI(AQHREACT_DATAOBJECT, dataObject);
|
||||||
|
free(dataObject->systemValueId);
|
||||||
|
free(dataObject->valueUnits);
|
||||||
|
free(dataObject->stringData);
|
||||||
|
dataObject->_refCount=0;
|
||||||
|
GWEN_FREE_OBJECT(dataObject);
|
||||||
|
}
|
||||||
|
else if (dataObject->_refCount<1) {
|
||||||
|
DBG_ERROR(NULL, "dataobject already freed!");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
dataObject->_refCount--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
AQHREACT_DATAOBJECT *AQHREACT_DataObject_dup(const AQHREACT_DATAOBJECT *origObject)
|
||||||
|
{
|
||||||
|
if (origObject) {
|
||||||
|
AQHREACT_DATAOBJECT *dataObject;
|
||||||
|
|
||||||
|
dataObject=AQHREACT_DataObject_new();
|
||||||
|
dataObject->valueId=origObject->valueId;
|
||||||
|
AQHREACT_DataObject_SetSystemValueId(dataObject, origObject->systemValueId);
|
||||||
|
AQHREACT_DataObject_SetValueUnits(dataObject, origObject->valueUnits);
|
||||||
|
dataObject->timestamp=origObject->timestamp;
|
||||||
|
dataObject->dataType=origObject->dataType;
|
||||||
|
dataObject->doubleData=origObject->doubleData;
|
||||||
|
AQHREACT_DataObject_SetStringData(dataObject, origObject->stringData);
|
||||||
|
return dataObject;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
uint64_t AQHREACT_DataObject_GetValueId(const AQHREACT_DATAOBJECT *dataObject)
|
||||||
|
{
|
||||||
|
return dataObject?(dataObject->valueId):0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void AQHREACT_DataObject_SetValueId(AQHREACT_DATAOBJECT *dataObject, uint64_t i)
|
||||||
|
{
|
||||||
|
if (dataObject)
|
||||||
|
dataObject->valueId=i;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const char *AQHREACT_DataObject_GetSystemValueId(const AQHREACT_DATAOBJECT *dataObject)
|
||||||
|
{
|
||||||
|
return dataObject?(dataObject->systemValueId):NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void AQHREACT_DataObject_SetSystemValueId(AQHREACT_DATAOBJECT *dataObject, const char *s)
|
||||||
|
{
|
||||||
|
if (dataObject) {
|
||||||
|
free(dataObject->systemValueId);
|
||||||
|
dataObject->systemValueId=(s && *s)?strdup(s):NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const char *AQHREACT_DataObject_GetValueUnits(const AQHREACT_DATAOBJECT *dataObject)
|
||||||
|
{
|
||||||
|
return dataObject?(dataObject->valueUnits):NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void AQHREACT_DataObject_SetValueUnits(AQHREACT_DATAOBJECT *dataObject, const char *s)
|
||||||
|
{
|
||||||
|
if (dataObject) {
|
||||||
|
free(dataObject->valueUnits);
|
||||||
|
dataObject->valueUnits=(s && *s)?strdup(s):NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
uint64_t AQHREACT_DataObject_GetTimestamp(const AQHREACT_DATAOBJECT *dataObject)
|
||||||
|
{
|
||||||
|
return dataObject?(dataObject->timestamp):0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void AQHREACT_DataObject_SetTimestamp(AQHREACT_DATAOBJECT *dataObject, uint64_t i)
|
||||||
|
{
|
||||||
|
if (dataObject)
|
||||||
|
dataObject->timestamp=i;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int AQHREACT_DataObject_GetDataType(const AQHREACT_DATAOBJECT *dataObject)
|
||||||
|
{
|
||||||
|
return dataObject?(dataObject->dataType):AQHREACT_DATAOBJECTTYPE_UNKNOWN;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void AQHREACT_DataObject_SetDataType(AQHREACT_DATAOBJECT *dataObject, int i)
|
||||||
|
{
|
||||||
|
if (dataObject)
|
||||||
|
dataObject->dataType=i;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
double AQHREACT_DataObject_GetDoubleData(const AQHREACT_DATAOBJECT *dataObject)
|
||||||
|
{
|
||||||
|
return dataObject?(dataObject->doubleData):0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void AQHREACT_DataObject_SetDoubleData(AQHREACT_DATAOBJECT *dataObject, double i)
|
||||||
|
{
|
||||||
|
if (dataObject)
|
||||||
|
dataObject->doubleData=i;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const char *AQHREACT_DataObject_GetStringData(const AQHREACT_DATAOBJECT *dataObject)
|
||||||
|
{
|
||||||
|
return dataObject?(dataObject->stringData):NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void AQHREACT_DataObject_SetStringData(AQHREACT_DATAOBJECT *dataObject, const char *s)
|
||||||
|
{
|
||||||
|
if (dataObject) {
|
||||||
|
free(dataObject->stringData);
|
||||||
|
dataObject->stringData=(s && *s)?strdup(s):NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
59
apps/aqhome-react/types/dataobject.h
Normal file
59
apps/aqhome-react/types/dataobject.h
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* This file is part of the project AqHome.
|
||||||
|
* AqHome (c) by 2023 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.
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef AQHOME_REACT_DATAOBJECT_H
|
||||||
|
#define AQHOME_REACT_DATAOBJECT_H
|
||||||
|
|
||||||
|
|
||||||
|
#include "aqhome-react/aqhome_react.h"
|
||||||
|
|
||||||
|
#include <gwenhywfar/list.h>
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct AQHREACT_DATAOBJECT AQHREACT_DATAOBJECT;
|
||||||
|
GWEN_LIST_FUNCTION_DEFS(AQHREACT_DATAOBJECT, AQHREACT_DataObject)
|
||||||
|
|
||||||
|
|
||||||
|
enum {
|
||||||
|
AQHREACT_DATAOBJECTTYPE_UNKNOWN=0,
|
||||||
|
AQHREACT_DATAOBJECTTYPE_DOUBLE,
|
||||||
|
AQHREACT_DATAOBJECTTYPE_STRING
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
AQHREACT_DATAOBJECT *AQHREACT_DataObject_new();
|
||||||
|
void AQHREACT_DataObject_free(AQHREACT_DATAOBJECT *dataObject);
|
||||||
|
AQHREACT_DATAOBJECT *AQHREACT_DataObject_dup(const AQHREACT_DATAOBJECT *origObject);
|
||||||
|
|
||||||
|
|
||||||
|
uint64_t AQHREACT_DataObject_GetValueId(const AQHREACT_DATAOBJECT *dataObject);
|
||||||
|
void AQHREACT_DataObject_SetValueId(AQHREACT_DATAOBJECT *dataObject, uint64_t i);
|
||||||
|
|
||||||
|
const char *AQHREACT_DataObject_GetSystemValueId(const AQHREACT_DATAOBJECT *dataObject);
|
||||||
|
void AQHREACT_DataObject_SetSystemValueId(AQHREACT_DATAOBJECT *dataObject, const char *s);
|
||||||
|
|
||||||
|
const char *AQHREACT_DataObject_GetValueUnits(const AQHREACT_DATAOBJECT *dataObject);
|
||||||
|
void AQHREACT_DataObject_SetValueUnits(AQHREACT_DATAOBJECT *dataObject, const char *s);
|
||||||
|
|
||||||
|
uint64_t AQHREACT_DataObject_GetTimestamp(const AQHREACT_DATAOBJECT *dataObject);
|
||||||
|
void AQHREACT_DataObject_SetTimestamp(AQHREACT_DATAOBJECT *dataObject, uint64_t i);
|
||||||
|
|
||||||
|
int AQHREACT_DataObject_GetDataType(const AQHREACT_DATAOBJECT *dataObject);
|
||||||
|
void AQHREACT_DataObject_SetDataType(AQHREACT_DATAOBJECT *dataObject, int i);
|
||||||
|
|
||||||
|
|
||||||
|
double AQHREACT_DataObject_GetDoubleData(const AQHREACT_DATAOBJECT *dataObject);
|
||||||
|
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);
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
31
apps/aqhome-react/types/dataobject_p.h
Normal file
31
apps/aqhome-react/types/dataobject_p.h
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* This file is part of the project AqHome.
|
||||||
|
* AqHome (c) by 2023 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.
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef AQHOME_REACT_DATAOBJECT_P_H
|
||||||
|
#define AQHOME_REACT_DATAOBJECT_P_H
|
||||||
|
|
||||||
|
|
||||||
|
#include "aqhome-react/types/dataobject.h"
|
||||||
|
|
||||||
|
|
||||||
|
struct AQHREACT_DATAOBJECT {
|
||||||
|
GWEN_LIST_ELEMENT(AQHREACT_DATAOBJECT)
|
||||||
|
|
||||||
|
int _refCount;
|
||||||
|
uint64_t valueId;
|
||||||
|
char *systemValueId;
|
||||||
|
char *valueUnits;
|
||||||
|
uint64_t timestamp;
|
||||||
|
int dataType;
|
||||||
|
double doubleData;
|
||||||
|
char *stringData;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
145
apps/aqhome-react/types/inputslot.c
Normal file
145
apps/aqhome-react/types/inputslot.c
Normal file
@@ -0,0 +1,145 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* This file is part of the project AqHome.
|
||||||
|
* AqHome (c) by 2024 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 <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#include "./inputslot_p.h"
|
||||||
|
|
||||||
|
#include <gwenhywfar/list.h>
|
||||||
|
#include <gwenhywfar/debug.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
AQHREACT_INPUT_SLOT *AQHREACT_InputSlot_new()
|
||||||
|
{
|
||||||
|
AQHREACT_INPUT_SLOT *inSlot;
|
||||||
|
|
||||||
|
GWEN_NEW_OBJECT(AQHREACT_INPUT_SLOT, inSlot);
|
||||||
|
return inSlot;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void AQHREACT_InputSlot_free(AQHREACT_INPUT_SLOT *inSlot)
|
||||||
|
{
|
||||||
|
if (inSlot) {
|
||||||
|
free(inSlot->name);
|
||||||
|
free(inSlot->description);
|
||||||
|
AQHREACT_DataObject_free(inSlot->currentDataObject);
|
||||||
|
GWEN_FREE_OBJECT(inSlot);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const char *AQHREACT_InputSlot_GetName(const AQHREACT_INPUT_SLOT *inSlot)
|
||||||
|
{
|
||||||
|
return inSlot?inSlot->name:NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void AQHREACT_InputSlot_SetName(AQHREACT_INPUT_SLOT *inSlot, const char *s)
|
||||||
|
{
|
||||||
|
if (inSlot) {
|
||||||
|
free(inSlot->name);
|
||||||
|
inSlot->name=s?strdup(s):NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const char *AQHREACT_InputSlot_GetDescription(const AQHREACT_INPUT_SLOT *inSlot)
|
||||||
|
{
|
||||||
|
return inSlot?inSlot->description:NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void AQHREACT_InputSlot_SetDescription(AQHREACT_INPUT_SLOT *inSlot, const char *s)
|
||||||
|
{
|
||||||
|
if (inSlot) {
|
||||||
|
free(inSlot->description);
|
||||||
|
inSlot->description=s?strdup(s):NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
uint32_t AQHREACT_InputSlot_GetFlags(const AQHREACT_INPUT_SLOT *inSlot)
|
||||||
|
{
|
||||||
|
return inSlot?inSlot->flags:0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void AQHREACT_InputSlot_SetFlags(AQHREACT_INPUT_SLOT *inSlot, uint32_t i)
|
||||||
|
{
|
||||||
|
if (inSlot)
|
||||||
|
inSlot->flags=i;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void AQHREACT_InputSlot_AddFlags(AQHREACT_INPUT_SLOT *inSlot, uint32_t i)
|
||||||
|
{
|
||||||
|
if (inSlot)
|
||||||
|
inSlot->flags|=i;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void AQHREACT_InputSlot_SubFlags(AQHREACT_INPUT_SLOT *inSlot, uint32_t i)
|
||||||
|
{
|
||||||
|
if (inSlot)
|
||||||
|
inSlot->flags&=~i;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int AQHREACT_InputSlot_GetAcceptedDataType(const AQHREACT_INPUT_SLOT *inSlot)
|
||||||
|
{
|
||||||
|
return inSlot?inSlot->acceptedDataType:AQHREACT_DATAOBJECTTYPE_UNKNOWN;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void AQHREACT_InputSlot_SetAcceptedDataType(AQHREACT_INPUT_SLOT *inSlot, int i)
|
||||||
|
{
|
||||||
|
if (inSlot)
|
||||||
|
inSlot->acceptedDataType=i;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
AQHREACT_DATAOBJECT *AQHREACT_InputSlot_GetCurrentDataObject(const AQHREACT_INPUT_SLOT *inSlot)
|
||||||
|
{
|
||||||
|
return inSlot?inSlot->currentDataObject:NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void AQHREACT_InputSlot_SetCurrentDataObject(AQHREACT_INPUT_SLOT *inSlot, AQHREACT_DATAOBJECT *dataObject)
|
||||||
|
{
|
||||||
|
if (inSlot) {
|
||||||
|
AQHREACT_DataObject_free(inSlot->currentDataObject);
|
||||||
|
inSlot->currentDataObject=dataObject;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
45
apps/aqhome-react/types/inputslot.h
Normal file
45
apps/aqhome-react/types/inputslot.h
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* This file is part of the project AqHome.
|
||||||
|
* AqHome (c) by 2024 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.
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef AQHOME_REACT_INPUTSLOT_H
|
||||||
|
#define AQHOME_REACT_INPUTSLOT_H
|
||||||
|
|
||||||
|
|
||||||
|
#include "aqhome-react/aqhome_react.h"
|
||||||
|
|
||||||
|
typedef struct AQHREACT_INPUT_SLOT AQHREACT_INPUT_SLOT;
|
||||||
|
|
||||||
|
|
||||||
|
#include "aqhome-react/types/dataobject.h"
|
||||||
|
|
||||||
|
|
||||||
|
AQHREACT_INPUT_SLOT *AQHREACT_InputSlot_new();
|
||||||
|
void AQHREACT_InputSlot_free(AQHREACT_INPUT_SLOT *inSlot);
|
||||||
|
|
||||||
|
const char *AQHREACT_InputSlot_GetName(const AQHREACT_INPUT_SLOT *inSlot);
|
||||||
|
void AQHREACT_InputSlot_SetName(AQHREACT_INPUT_SLOT *inSlot, const char *s);
|
||||||
|
|
||||||
|
const char *AQHREACT_InputSlot_GetDescription(const AQHREACT_INPUT_SLOT *inSlot);
|
||||||
|
void AQHREACT_InputSlot_SetDescription(AQHREACT_INPUT_SLOT *inSlot, const char *s);
|
||||||
|
|
||||||
|
uint32_t AQHREACT_InputSlot_GetFlags(const AQHREACT_INPUT_SLOT *inSlot);
|
||||||
|
void AQHREACT_InputSlot_SetFlags(AQHREACT_INPUT_SLOT *inSlot, uint32_t i);
|
||||||
|
void AQHREACT_InputSlot_AddFlags(AQHREACT_INPUT_SLOT *inSlot, uint32_t i);
|
||||||
|
void AQHREACT_InputSlot_SubFlags(AQHREACT_INPUT_SLOT *inSlot, uint32_t i);
|
||||||
|
|
||||||
|
int AQHREACT_InputSlot_GetAcceptedDataType(const AQHREACT_INPUT_SLOT *inSlot);
|
||||||
|
void AQHREACT_InputSlot_SetAcceptedDataType(AQHREACT_INPUT_SLOT *inSlot, int i);
|
||||||
|
|
||||||
|
AQHREACT_DATAOBJECT *AQHREACT_InputSlot_GetCurrentDataObject(const AQHREACT_INPUT_SLOT *inSlot);
|
||||||
|
void AQHREACT_InputSlot_SetCurrentDataObject(AQHREACT_INPUT_SLOT *inSlot, AQHREACT_DATAOBJECT *dataObject);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
26
apps/aqhome-react/types/inputslot_p.h
Normal file
26
apps/aqhome-react/types/inputslot_p.h
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* This file is part of the project AqHome.
|
||||||
|
* AqHome (c) by 2024 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.
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef AQHOME_REACT_INPUTSLOT_P_H
|
||||||
|
#define AQHOME_REACT_INPUTSLOT_P_H
|
||||||
|
|
||||||
|
|
||||||
|
#include "aqhome-react/types/inputslot.h"
|
||||||
|
|
||||||
|
|
||||||
|
struct AQHREACT_INPUT_SLOT {
|
||||||
|
char *name;
|
||||||
|
char *description;
|
||||||
|
uint32_t flags;
|
||||||
|
int acceptedDataType;
|
||||||
|
AQHREACT_DATAOBJECT *currentDataObject;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
Reference in New Issue
Block a user