aqhome-react: enable network loading.
This application has now basic functionality.
This commit is contained in:
@@ -68,6 +68,7 @@ AQHREACT_UNIT *AqHomeReact_UnitStabilize_new(AQHOME_REACT *aqh)
|
||||
AQHREACT_UNIT *unit;
|
||||
AQHREACT_OUTPUT_SLOT *outputSlot;
|
||||
AQHREACT_INPUT_SLOT *inputSlot;
|
||||
AQHREACT_PARAM *param;
|
||||
|
||||
unit=AQHREACT_Unit_new(aqh);
|
||||
GWEN_NEW_OBJECT(AQHREACT_UNIT_STABILIZE, xunit);
|
||||
@@ -95,6 +96,16 @@ AQHREACT_UNIT *AqHomeReact_UnitStabilize_new(AQHOME_REACT *aqh)
|
||||
AQHREACT_InputSlot_SetAcceptedDataType(inputSlot, AQHREACT_DATAOBJECTTYPE_DOUBLE);
|
||||
AQHREACT_Unit_AddInputSlot(unit, inputSlot);
|
||||
|
||||
param=AQHREACT_Param_new();
|
||||
AQHREACT_Param_SetName(param, AQHOMEREACT_UNIT_STABILIZE_PARAM_HOLDTIME_HIGH);
|
||||
AQHREACT_Param_SetDataType(param, AQHREACT_DATAOBJECTTYPE_DOUBLE);
|
||||
AQHREACT_Unit_AddParam(unit, param);
|
||||
|
||||
param=AQHREACT_Param_new();
|
||||
AQHREACT_Param_SetName(param, AQHOMEREACT_UNIT_STABILIZE_PARAM_HOLDTIME_LOW);
|
||||
AQHREACT_Param_SetDataType(param, AQHREACT_DATAOBJECTTYPE_DOUBLE);
|
||||
AQHREACT_Unit_AddParam(unit, param);
|
||||
|
||||
return unit;
|
||||
}
|
||||
|
||||
@@ -119,7 +130,6 @@ int _cbProcessFn(AQHREACT_UNIT *unit)
|
||||
AQHREACT_Unit_ClearChangeFlagsInUnitAndInputSlots(unit);
|
||||
return rv;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -140,14 +150,19 @@ int _checkState(AQHREACT_UNIT *unit)
|
||||
|
||||
dataObject=AQHREACT_InputSlot_GetCurrentDataObject(dataSlot);
|
||||
if (dataObject) {
|
||||
double doubleData;
|
||||
int newState;
|
||||
|
||||
newState=(AQHREACT_DataObject_GetDoubleData(dataObject)>0.0)?1:0;
|
||||
doubleData=AQHREACT_DataObject_GetDoubleData(dataObject);
|
||||
newState=(doubleData>0.0)?1:0;
|
||||
DBG_DEBUG(NULL, "Got dataObject (%f), new state is %d (previously: %d)", doubleData, newState, xunit->lastProcessedState);
|
||||
if (newState!=xunit->lastProcessedState) {
|
||||
DBG_INFO(NULL, "Stage changed (%d->%d)", xunit->lastProcessedState, newState);
|
||||
_startTimer(unit, xunit, newState);
|
||||
result=1;
|
||||
}
|
||||
else {
|
||||
DBG_DEBUG(NULL, "Stage unchanged (%d)", newState);
|
||||
if (_handleStateNoChange(unit, xunit, newState)>0)
|
||||
result=1;
|
||||
}
|
||||
@@ -166,7 +181,7 @@ int _handleStateNoChange(AQHREACT_UNIT *unit, AQHREACT_UNIT_STABILIZE *xunit, in
|
||||
uint64_t now;
|
||||
|
||||
now=(uint64_t) time(NULL);
|
||||
if (now>xunit->tsHoldUntil) {
|
||||
if (xunit->tsHoldUntil && now>xunit->tsHoldUntil) {
|
||||
/* timeout, switch output */
|
||||
_setOutput(unit, xunit, newState);
|
||||
result=1;
|
||||
@@ -183,15 +198,18 @@ void _startTimer(AQHREACT_UNIT *unit, AQHREACT_UNIT_STABILIZE *xunit, int newSta
|
||||
|
||||
now=(uint64_t) time(NULL);
|
||||
|
||||
DBG_INFO(NULL, "Starting timeout counter (%d)", newState);
|
||||
if (newState)
|
||||
holdTime=AQHREACT_Unit_GetParamValueDouble(unit, AQHOMEREACT_UNIT_STABILIZE_PARAM_HOLDTIME_HIGH, 0.0);
|
||||
else
|
||||
holdTime=AQHREACT_Unit_GetParamValueDouble(unit, AQHOMEREACT_UNIT_STABILIZE_PARAM_HOLDTIME_LOW, 30.0);
|
||||
if (holdTime<=0.0)
|
||||
if (holdTime<=0.0) {
|
||||
DBG_INFO(NULL, "Timeout is zero, immediately setting output (%d)", newState);
|
||||
_setOutput(unit, xunit, newState);
|
||||
else
|
||||
}
|
||||
else {
|
||||
DBG_INFO(NULL, "Starting timeout counter (%d, t=%d)", newState, holdTime);
|
||||
xunit->tsHoldUntil=now+holdTime;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user