aqhome-react: add "varsFile" (will write variables later).

This commit is contained in:
Martin Preuss
2024-05-18 13:11:29 +02:00
parent 334d0e8096
commit dde9106a5d
4 changed files with 55 additions and 0 deletions

View File

@@ -48,6 +48,7 @@ void AqHomeReact_free(AQHOME_REACT *aqh)
AQHREACT_Unit_List_free(aqh->unitList); AQHREACT_Unit_List_free(aqh->unitList);
GWEN_MsgEndpoint_free(aqh->brokerEndpoint); GWEN_MsgEndpoint_free(aqh->brokerEndpoint);
GWEN_DB_Group_free(aqh->dbArgs); GWEN_DB_Group_free(aqh->dbArgs);
free(aqh->varsFile);
free(aqh->pidFile); free(aqh->pidFile);
GWEN_FREE_OBJECT(aqh); GWEN_FREE_OBJECT(aqh);
@@ -88,6 +89,23 @@ void AqHomeReact_SetPidFile(AQHOME_REACT *aqh, const char *s)
const char *AqHomeReact_GetVarsFile(const AQHOME_REACT *aqh)
{
return aqh?aqh->varsFile:NULL;
}
void AqHomeReact_SetVarsFile(AQHOME_REACT *aqh, const char *s)
{
if (aqh) {
free(aqh->varsFile);
aqh->varsFile=s?strdup(s):NULL;
}
}
int AqHomeReact_GetTimeout(const AQHOME_REACT *aqh) int AqHomeReact_GetTimeout(const AQHOME_REACT *aqh)
{ {
return aqh?aqh->timeout:0; return aqh?aqh->timeout:0;

View File

@@ -28,6 +28,9 @@ GWEN_DB_NODE *AqHomeReact_GetDbArgs(const AQHOME_REACT *aqh);
const char *AqHomeReact_GetPidFile(const AQHOME_REACT *aqh); const char *AqHomeReact_GetPidFile(const AQHOME_REACT *aqh);
void AqHomeReact_SetPidFile(AQHOME_REACT *aqh, const char *s); void AqHomeReact_SetPidFile(AQHOME_REACT *aqh, const char *s);
const char *AqHomeReact_GetVarsFile(const AQHOME_REACT *aqh);
void AqHomeReact_SetVarsFile(AQHOME_REACT *aqh, const char *s);
int AqHomeReact_GetTimeout(const AQHOME_REACT *aqh); int AqHomeReact_GetTimeout(const AQHOME_REACT *aqh);
time_t AqHomeReact_GetLatestNetworkFileTime(const AQHOME_REACT *aqh); time_t AqHomeReact_GetLatestNetworkFileTime(const AQHOME_REACT *aqh);

View File

@@ -18,6 +18,7 @@
#define AQHOME_REACT_DEFAULT_PIDFILE "/var/run/aqhome-react.pid" #define AQHOME_REACT_DEFAULT_PIDFILE "/var/run/aqhome-react.pid"
#define AQHOME_REACT_DEFAULT_DATADIR "/var/lib/aqhome-react" #define AQHOME_REACT_DEFAULT_DATADIR "/var/lib/aqhome-react"
#define AQHOME_REACT_DEFAULT_VARSFILE "vars.conf"
#define AQHOME_REACT_DEFAULT_BROKER_PORT 1899 #define AQHOME_REACT_DEFAULT_BROKER_PORT 1899
#define AQHOME_REACT_DEFAULT_BROKER_CLIENTID "react" #define AQHOME_REACT_DEFAULT_BROKER_CLIENTID "react"
@@ -29,6 +30,8 @@ struct AQHOME_REACT {
GWEN_DB_NODE *dbArgs; GWEN_DB_NODE *dbArgs;
char *pidFile; char *pidFile;
char *varsFile;
int timeout; /* timeout for run e.g. inside valgrind */ int timeout; /* timeout for run e.g. inside valgrind */
AQHREACT_UNIT *timerUnit; AQHREACT_UNIT *timerUnit;

View File

@@ -103,8 +103,28 @@ int AqHomeReact_Init(AQHOME_REACT *aqh, int argc, char **argv)
} }
} }
s=GWEN_DB_GetCharValue(dbArgs, "varsfile", 0, NULL);
if (s && *s) {
AqHomeReact_SetVarsFile(aqh, s);
}
else {
GWEN_BUFFER *bufFilename;
bufFilename=AQH_GetRuntimeFilePath(AQHOME_REACT_DEFAULT_VARSFILE);
if (bufFilename) {
AqHomeReact_SetVarsFile(aqh, GWEN_Buffer_GetStart(bufFilename));
GWEN_Buffer_free(bufFilename);
}
else {
DBG_ERROR(NULL, "Could not setup filename for vars, please specify via command line argument");
return GWEN_ERROR_GENERIC;
}
}
aqh->localVars=AQH_Vars_CreateGroup("localVars"); aqh->localVars=AQH_Vars_CreateGroup("localVars");
// @TODO: read vars from file
rv=AqHomeReact_ReloadUnitNets(aqh); rv=AqHomeReact_ReloadUnitNets(aqh);
if (rv<0) { if (rv<0) {
DBG_ERROR(NULL, "Error reading unit network files (%d)", rv); DBG_ERROR(NULL, "Error reading unit network files (%d)", rv);
@@ -354,6 +374,17 @@ int _readArgs(int argc, char **argv, GWEN_DB_NODE *dbArgs)
I18S("Specify the device file"), I18S("Specify the device file"),
I18S("Specify the device file") I18S("Specify the device file")
}, },
{
GWEN_ARGS_FLAGS_HAS_ARGUMENT, /* flags */
GWEN_ArgsType_Char, /* type */
"varsfile", /* name */
0, /* minnum */
1, /* maxnum */
"V", /* short option */
"varsfile", /* long option */
I18S("Specify the vars file"),
I18S("Specify the vars file")
},
{ {
GWEN_ARGS_FLAGS_HELP | GWEN_ARGS_FLAGS_LAST, /* flags */ GWEN_ARGS_FLAGS_HELP | GWEN_ARGS_FLAGS_LAST, /* flags */
GWEN_ArgsType_Int, /* type */ GWEN_ArgsType_Int, /* type */