Commit 8d4391dd authored by Pavel Vainerman's avatar Pavel Vainerman

(uniset-codegen): исправил ошибку в шаблоне

parent f78c146d
...@@ -13,22 +13,13 @@ ...@@ -13,22 +13,13 @@
<xsl:when test="$iotype='AI'">long</xsl:when> <xsl:when test="$iotype='AI'">long</xsl:when>
</xsl:choose> </xsl:choose>
</xsl:template> </xsl:template>
<xsl:template name="gettype">
<xsl:param name="iotype"/>
<xsl:choose>
<xsl:when test="$iotype='DO'">UniversalIO::DigitalOutput</xsl:when>
<xsl:when test="$iotype='DI'">UniversalIO::DigitalInput</xsl:when>
<xsl:when test="$iotype='AO'">UniversalIO::AnalogOutput</xsl:when>
<xsl:when test="$iotype='AI'">UniversalIO::AnalogInput</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template name="setprefix"> <xsl:template name="setprefix">
<xsl:choose> <xsl:choose>
<xsl:when test="normalize-space(@vartype)='in'">in_</xsl:when> <xsl:when test="normalize-space(@vartype)='in'">in_</xsl:when>
<xsl:when test="normalize-space(@vartype)='out'">out_</xsl:when> <xsl:when test="normalize-space(@vartype)='out'">out_</xsl:when>
<xsl:when test="normalize-space(@vartype)='io'">io_</xsl:when>
<xsl:when test="normalize-space(@vartype)='none'">nn_</xsl:when> <xsl:when test="normalize-space(@vartype)='none'">nn_</xsl:when>
<xsl:when test="normalize-space(@vartype)='io'">NOTSUPPORTED_IO_VARTYPE_</xsl:when>
</xsl:choose> </xsl:choose>
</xsl:template> </xsl:template>
...@@ -56,18 +47,12 @@ ...@@ -56,18 +47,12 @@
<xsl:if test="normalize-space(@name)=$OID"> <xsl:if test="normalize-space(@name)=$OID">
<xsl:choose> <xsl:choose>
<xsl:when test="$GENTYPE='H'"> <xsl:when test="$GENTYPE='H'">
<xsl:if test="normalize-space(@vartype)!='io'">
const UniSetTypes::ObjectId <xsl:value-of select="../../@name"/>; /*!&lt; <xsl:value-of select="../../@textname"/> */ const UniSetTypes::ObjectId <xsl:value-of select="../../@name"/>; /*!&lt; <xsl:value-of select="../../@textname"/> */
UniSetTypes::ObjectId node_<xsl:value-of select="../../@name"/>; UniSetTypes::ObjectId node_<xsl:value-of select="../../@name"/>;
<xsl:call-template name="settype"><xsl:with-param name="iotype" select="../../@iotype" /></xsl:call-template><xsl:text> </xsl:text><xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/>; /*!&lt; текущее значение */ <xsl:call-template name="settype"><xsl:with-param name="iotype" select="../../@iotype" /></xsl:call-template><xsl:text> </xsl:text><xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/>; /*!&lt; текущее значение */
<xsl:call-template name="settype"><xsl:with-param name="iotype" select="../../@iotype" /></xsl:call-template><xsl:text> prev_</xsl:text><xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/>; /*!&lt; предыдущее значение */ <xsl:call-template name="settype"><xsl:with-param name="iotype" select="../../@iotype" /></xsl:call-template><xsl:text> prev_</xsl:text><xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/>; /*!&lt; предыдущее значение */
</xsl:if>
<xsl:if test="normalize-space(@vartype)='io'">#warning (uniset-codegen): vartype='io' NO LONGER SUPPORTED! (ignore variable: '<xsl:value-of select="../../@name"/>')
</xsl:if>
</xsl:when> </xsl:when>
<xsl:when test="$GENTYPE='C'"> <xsl:when test="$GENTYPE='C'"><xsl:value-of select="../../@name"/>(<xsl:value-of select="../../@id"/>),
<xsl:if test="normalize-space(@vartype)!='io'">
<xsl:value-of select="../../@name"/>(<xsl:value-of select="../../@id"/>),
<xsl:if test="not(normalize-space(../../@node)='')"> <xsl:if test="not(normalize-space(../../@node)='')">
node_<xsl:value-of select="../../@name"/>(conf->getNodeID("<xsl:value-of select="../../@node"/>")), node_<xsl:value-of select="../../@name"/>(conf->getNodeID("<xsl:value-of select="../../@node"/>")),
</xsl:if> </xsl:if>
...@@ -80,12 +65,9 @@ ...@@ -80,12 +65,9 @@
<xsl:if test="not(normalize-space(../../@default)='')"> <xsl:if test="not(normalize-space(../../@default)='')">
<xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/>(<xsl:value-of select="../../@default"/>), <xsl:call-template name="setprefix"/><xsl:value-of select="../../@name"/>(<xsl:value-of select="../../@default"/>),
</xsl:if> </xsl:if>
</xsl:if>
</xsl:when> </xsl:when>
<xsl:when test="$GENTYPE='CHECK'"> <xsl:when test="$GENTYPE='CHECK'">
<xsl:if test="normalize-space(@vartype)!='io'">
<xsl:if test="normalize-space(../../@id)=''">throw SystemException("Not Found ID for <xsl:value-of select="../../@name"/>");</xsl:if> <xsl:if test="normalize-space(../../@id)=''">throw SystemException("Not Found ID for <xsl:value-of select="../../@name"/>");</xsl:if>
</xsl:if>
</xsl:when> </xsl:when>
</xsl:choose> </xsl:choose>
</xsl:if> </xsl:if>
...@@ -104,8 +86,6 @@ ...@@ -104,8 +86,6 @@
bool prev_m_<xsl:value-of select="normalize-space(../../@name)"/>; /*!&lt; предыдущее состояние (сообщения) */ bool prev_m_<xsl:value-of select="normalize-space(../../@name)"/>; /*!&lt; предыдущее состояние (сообщения) */
</xsl:when> </xsl:when>
<xsl:when test="$GENTYPE='C'">mid_<xsl:value-of select="normalize-space(../../@name)"/>(<xsl:value-of select="../../@id"/>), <xsl:when test="$GENTYPE='C'">mid_<xsl:value-of select="normalize-space(../../@name)"/>(<xsl:value-of select="../../@id"/>),
m_<xsl:value-of select="normalize-space(../../@name)"/>(false),
prev_m_<xsl:value-of select="normalize-space(../../@name)"/>(false),
</xsl:when> </xsl:when>
<xsl:when test="$GENTYPE='CHECK'"> <xsl:when test="$GENTYPE='CHECK'">
<xsl:if test="normalize-space(@no_check_id)!='1'"> <xsl:if test="normalize-space(@no_check_id)!='1'">
...@@ -178,36 +158,29 @@ ...@@ -178,36 +158,29 @@
bool alarm( UniSetTypes::ObjectId sid, bool state ); bool alarm( UniSetTypes::ObjectId sid, bool state );
bool getState( UniSetTypes::ObjectId sid ); bool getState( UniSetTypes::ObjectId sid );
long getValue( UniSetTypes::ObjectId sid ); bool getValue( UniSetTypes::ObjectId sid );
void setValue( UniSetTypes::ObjectId sid, long value ); void setValue( UniSetTypes::ObjectId sid, long value );
void setState( UniSetTypes::ObjectId sid, bool state ); void setState( UniSetTypes::ObjectId sid, bool state );
void askState( UniSetTypes::ObjectId sid, UniversalIO::UIOCommand, UniSetTypes::ObjectId node = UniSetTypes::conf->getLocalNode() ); void askState( UniSetTypes::ObjectId sid, UniversalIO::UIOCommand, UniSetTypes::ObjectId node = UniSetTypes::conf->getLocalNode() );
void askValue( UniSetTypes::ObjectId sid, UniversalIO::UIOCommand, UniSetTypes::ObjectId node = UniSetTypes::conf->getLocalNode() ); void askValue( UniSetTypes::ObjectId sid, UniversalIO::UIOCommand, UniSetTypes::ObjectId node = UniSetTypes::conf->getLocalNode() );
void updateValues(); void updateValues();
void setMsg( UniSetTypes::ObjectId code, bool state ); void setMsg( UniSetTypes::ObjectId code, bool state );
DebugStream dlog;
void init_dlog(DebugStream&amp; dlog);
</xsl:template> </xsl:template>
<xsl:template name="COMMON-HEAD-PROTECTED"> <xsl:template name="COMMON-HEAD-PROTECTED">
virtual void callback(); virtual void callback();
virtual void processingMessage( UniSetTypes::VoidMessage* msg ); virtual void processingMessage( UniSetTypes::VoidMessage* msg );
virtual void sysCommand( UniSetTypes::SystemMessage* sm ); virtual void sysCommand( UniSetTypes::SystemMessage* sm );
virtual void askSensors( UniversalIO::UIOCommand cmd ){} virtual void askSensors( UniversalIO::UIOCommand cmd );
virtual void sensorInfo( UniSetTypes::SensorMessage* sm ){} virtual void sensorInfo( UniSetTypes::SensorMessage* sm ){};
virtual void timerInfo( UniSetTypes::TimerMessage* tm ){} virtual void timerInfo( UniSetTypes::TimerMessage* tm ){};
virtual void sigterm( int signo ); virtual void sigterm( int signo );
virtual bool activateObject(); virtual bool activateObject();
virtual void testMode( bool state ); virtual void testMode( bool state );
void updatePreviousValues(); void updatePreviousValues();
void checkSensors(); void checkSensors();
void updateOutputs( bool force ); void updateOutputs( bool force );
<xsl:if test="normalize-space($TESTMODE)!=''">
bool checkTestMode(); bool checkTestMode();
</xsl:if>
void preAskSensors( UniversalIO::UIOCommand cmd );
void preSensorInfo( UniSetTypes::SensorMessage* sm ); void preSensorInfo( UniSetTypes::SensorMessage* sm );
void preTimerInfo( UniSetTypes::TimerMessage* tm ); void preTimerInfo( UniSetTypes::TimerMessage* tm );
void waitSM( int wait_msec, UniSetTypes::ObjectId testID = UniSetTypes::DefaultObjectId ); void waitSM( int wait_msec, UniSetTypes::ObjectId testID = UniSetTypes::DefaultObjectId );
...@@ -222,15 +195,12 @@ ...@@ -222,15 +195,12 @@
int sleep_msec; /*!&lt; пауза между итерациями */ int sleep_msec; /*!&lt; пауза между итерациями */
bool active; bool active;
<xsl:if test="normalize-space($TESTMODE)!=''">
bool isTestMode; bool isTestMode;
Trigger trTestMode; Trigger trTestMode;
UniSetTypes::ObjectId idTestMode_S; /*!&lt; идентификатор для флага тестовго режима (для всех) */ UniSetTypes::ObjectId idTestMode_S; /*!&lt; идентификатор для флага тестовго режима (для всех) */
UniSetTypes::ObjectId idLocalTestMode_S; /*!&lt; идентификатор для флага тестовго режима (для данного узла) */ UniSetTypes::ObjectId idLocalTestMode_S; /*!&lt; идентификатор для флага тестовго режима (для данного узла) */
bool in_TestMode_S; bool in_TestMode_S;
bool in_LocalTestMode_S; bool in_LocalTestMode_S;
</xsl:if>
UniSetTypes::ObjectId smTestID; /*!&lt; идентификатор датчика для тестирования готовности SM */
// управление датчиком "сердцебиения" // управление датчиком "сердцебиения"
PassiveTimer ptHeartBeat; /*! &lt; период "сердцебиения" */ PassiveTimer ptHeartBeat; /*! &lt; период "сердцебиения" */
...@@ -239,30 +209,22 @@ ...@@ -239,30 +209,22 @@
xmlNode* confnode; xmlNode* confnode;
/*! получить числовое свойство из конф. файла по привязанной confnode */ /*! получить числовое свойство из конф. файла по привязанной confnode */
int getIntProp(const std::string&amp; name) { return UniSetTypes::conf->getIntProp(confnode, name); } int getIntProp(const std::string name) { return UniSetTypes::conf->getIntProp(confnode, name); }
/*! получить текстовое свойство из конф. файла по привязанной confnode */ /*! получить текстовое свойство из конф. файла по привязанной confnode */
inline const std::string getProp(const std::string&amp; name) { return UniSetTypes::conf->getProp(confnode, name); } inline const std::string getProp(const std::string name) { return UniSetTypes::conf->getProp(confnode, name); }
int smReadyTimeout; /*!&lt; время ожидания готовности SM */ int smReadyTimeout; /*!&lt; время ожидания готовности SM */
bool activated; bool activated;
int activateTimeout; /*!&lt; время ожидания готовности UniSetObject к работе */ int activateTimeout; /*!&lt; время ожидания готовности UniSetObject к работе */
PassiveTimer ptStartUpTimeout; /*!&lt; время на блокировку обработки WatchDog, если недавно был StartUp */ PassiveTimer ptStartUpTimeout; /*!&lt; время на блокировку обработки WatchDog, если недавно был StartUp */
int askPause; /*!&lt; пауза между неудачными попытками заказать датчики */ int askPause; /*!&lt; пауза между неудачными попытками заказать датчики */
IOController_i::SensorInfo si;
</xsl:template> </xsl:template>
<xsl:template name="COMMON-HEAD-PRIVATE"> <xsl:template name="COMMON-HEAD-PRIVATE">
IOController_i::SensorInfo si;
</xsl:template> </xsl:template>
<xsl:template name="COMMON-CC-FILE"> <xsl:template name="COMMON-CC-FILE">
// ------------------------------------------------------------------------------------------
void <xsl:value-of select="$CLASSNAME"/>_SK::init_dlog( DebugStream&amp; d )
{
<xsl:value-of select="$CLASSNAME"/>_SK::dlog = d;
}
// ------------------------------------------------------------------------------------------
void <xsl:value-of select="$CLASSNAME"/>_SK::processingMessage( UniSetTypes::VoidMessage* _msg ) void <xsl:value-of select="$CLASSNAME"/>_SK::processingMessage( UniSetTypes::VoidMessage* _msg )
{ {
try try
...@@ -315,11 +277,8 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::sysCommand( SystemMessage* _sm ) ...@@ -315,11 +277,8 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::sysCommand( SystemMessage* _sm )
{ {
waitSM(smReadyTimeout); waitSM(smReadyTimeout);
ptStartUpTimeout.reset(); ptStartUpTimeout.reset();
// т.к. для io-переменных важно соблюдать последовательность!
// сперва обновить входы.. а потом уже выходы
updateValues();
updateOutputs(true); // принудительное обновление выходов updateOutputs(true); // принудительное обновление выходов
preAskSensors(UniversalIO::UIONotify); updateValues();
askSensors(UniversalIO::UIONotify); askSensors(UniversalIO::UIONotify);
active = true; active = true;
break; break;
...@@ -327,7 +286,6 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::sysCommand( SystemMessage* _sm ) ...@@ -327,7 +286,6 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::sysCommand( SystemMessage* _sm )
case SystemMessage::FoldUp: case SystemMessage::FoldUp:
case SystemMessage::Finish: case SystemMessage::Finish:
preAskSensors(UniversalIO::UIODontNotify);
askSensors(UniversalIO::UIODontNotify); askSensors(UniversalIO::UIODontNotify);
break; break;
...@@ -341,6 +299,14 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::sysCommand( SystemMessage* _sm ) ...@@ -341,6 +299,14 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::sysCommand( SystemMessage* _sm )
unideb.logFile(fname.c_str()); unideb.logFile(fname.c_str());
unideb &lt;&lt; myname &lt;&lt; "(sysCommand): ***************** UNIDEB LOG ROTATE *****************" &lt;&lt; endl; unideb &lt;&lt; myname &lt;&lt; "(sysCommand): ***************** UNIDEB LOG ROTATE *****************" &lt;&lt; endl;
} }
unideb &lt;&lt; myname &lt;&lt; "(sysCommand): logRotate" &lt;&lt; endl;
fname = unideb.getLogFile();
if( !fname.empty() )
{
unideb.logFile(fname.c_str());
unideb &lt;&lt; myname &lt;&lt; "(sysCommand): ***************** GGDEB LOG ROTATE *****************" &lt;&lt; endl;
}
} }
break; break;
...@@ -354,13 +320,11 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setState( UniSetTypes::ObjectId _si ...@@ -354,13 +320,11 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::setState( UniSetTypes::ObjectId _si
setValue(_sid, _state ? 1 : 0 ); setValue(_sid, _state ? 1 : 0 );
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
<xsl:if test="normalize-space($TESTMODE)!=''">
bool <xsl:value-of select="$CLASSNAME"/>_SK::checkTestMode() bool <xsl:value-of select="$CLASSNAME"/>_SK::checkTestMode()
{ {
return (in_TestMode_S &amp;&amp; in_LocalTestMode_S); return (in_TestMode_S &amp;&amp; in_LocalTestMode_S);
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
</xsl:if>
void <xsl:value-of select="$CLASSNAME"/>_SK::sigterm( int signo ) void <xsl:value-of select="$CLASSNAME"/>_SK::sigterm( int signo )
{ {
<xsl:if test="normalize-space($BASECLASS)!=''"><xsl:value-of select="normalize-space($BASECLASS)"/>::sigterm(signo);</xsl:if> <xsl:if test="normalize-space($BASECLASS)!=''"><xsl:value-of select="normalize-space($BASECLASS)"/>::sigterm(signo);</xsl:if>
...@@ -390,14 +354,9 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::preTimerInfo( UniSetTypes::TimerMes ...@@ -390,14 +354,9 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::preTimerInfo( UniSetTypes::TimerMes
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
void <xsl:value-of select="$CLASSNAME"/>_SK::waitSM( int wait_msec, ObjectId _testID ) void <xsl:value-of select="$CLASSNAME"/>_SK::waitSM( int wait_msec, ObjectId _testID )
{ {
<xsl:if test="normalize-space($TESTMODE)!=''">
if( _testID == DefaultObjectId ) if( _testID == DefaultObjectId )
_testID = idTestMode_S; _testID = idTestMode_S;
</xsl:if>
if( _testID == DefaultObjectId )
_testID = smTestID;
if( _testID == DefaultObjectId ) if( _testID == DefaultObjectId )
return; return;
...@@ -422,7 +381,6 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::waitSM( int wait_msec, ObjectId _te ...@@ -422,7 +381,6 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::waitSM( int wait_msec, ObjectId _te
throw SystemError(err.str()); throw SystemError(err.str());
} }
<xsl:if test="normalize-space($TESTMODE)!=''">
if( idTestMode_S != DefaultObjectId ) if( idTestMode_S != DefaultObjectId )
{ {
if( !ui.waitWorking(idTestMode_S,wait_msec) ) if( !ui.waitWorking(idTestMode_S,wait_msec) )
...@@ -439,7 +397,6 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::waitSM( int wait_msec, ObjectId _te ...@@ -439,7 +397,6 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::waitSM( int wait_msec, ObjectId _te
throw SystemError(err.str()); throw SystemError(err.str());
} }
} }
</xsl:if>
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
</xsl:template> </xsl:template>
...@@ -459,37 +416,6 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::waitSM( int wait_msec, ObjectId _te ...@@ -459,37 +416,6 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::waitSM( int wait_msec, ObjectId _te
} }
</xsl:template> </xsl:template>
<xsl:template name="default-init-variables">
<xsl:if test="normalize-space(@const)!=''">
<xsl:if test="normalize-space(@type)='int'"><xsl:value-of select="normalize-space(@name)"/>(0),</xsl:if>
<xsl:if test="normalize-space(@type)='long'"><xsl:value-of select="normalize-space(@name)"/>(0),</xsl:if>
<xsl:if test="normalize-space(@type)='float'"><xsl:value-of select="normalize-space(@name)"/>(0),</xsl:if>
<xsl:if test="normalize-space(@type)='double'"><xsl:value-of select="normalize-space(@name)"/>(0),</xsl:if>
<xsl:if test="normalize-space(@type)='bool'"><xsl:value-of select="normalize-space(@name)"/>(false),</xsl:if>
<xsl:if test="normalize-space(@type)='str'"><xsl:value-of select="normalize-space(@name)"/>(""),</xsl:if>
</xsl:if>
</xsl:template>
<xsl:template name="init-variables">
<xsl:if test="normalize-space(@type)='int'">
<xsl:value-of select="normalize-space(@name)"/>(uni_atoi( init3_str(conf->getArgParam("--" + argprefix + "<xsl:value-of select="@name"/>"),conf->getProp(cnode,"<xsl:value-of select="@name"/>"),"<xsl:value-of select="normalize-space(@default)"/>"))),
</xsl:if>
<xsl:if test="normalize-space(@type)='long'">
<xsl:value-of select="normalize-space(@name)"/>(uni_atoi( init3_str(conf->getArgParam("--" + argprefix + "<xsl:value-of select="@name"/>"),conf->getProp(cnode,"<xsl:value-of select="@name"/>"),"<xsl:value-of select="normalize-space(@default)"/>"))),
</xsl:if>
<xsl:if test="normalize-space(@type)='float'">
<xsl:value-of select="normalize-space(@name)"/>(atof( init3_str(conf->getArgParam("--" + argprefix + "<xsl:value-of select="@name"/>"),conf->getProp(cnode,"<xsl:value-of select="@name"/>"),"<xsl:value-of select="normalize-space(@default)"/>").c_str())),
</xsl:if>
<xsl:if test="normalize-space(@type)='double'">
<xsl:value-of select="normalize-space(@name)"/>(atof( init3_str(conf->getArgParam("--" + argprefix + "<xsl:value-of select="@name"/>"),conf->getProp(cnode,"<xsl:value-of select="@name"/>"),"<xsl:value-of select="normalize-space(@default)"/>").c_str())),
</xsl:if>
<xsl:if test="normalize-space(@type)='bool'">
<xsl:value-of select="normalize-space(@name)"/>(uni_atoi( init3_str(conf->getArgParam("--" + argprefix + "<xsl:value-of select="@name"/>"),conf->getProp(cnode,"<xsl:value-of select="@name"/>"),"<xsl:value-of select="normalize-space(@default)"/>"))),
</xsl:if>
<xsl:if test="normalize-space(@type)='str'">
<xsl:value-of select="normalize-space(@name)"/>(init3_str(conf->getArgParam("--" + argprefix + "<xsl:value-of select="@name"/>"),conf->getProp(cnode,"<xsl:value-of select="@name"/>"),"<xsl:value-of select="normalize-space(@default)"/>")),
</xsl:if>
</xsl:template>
<xsl:template name="COMMON-CC-HEAD"> <xsl:template name="COMMON-CC-HEAD">
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
/* /*
...@@ -517,160 +443,79 @@ using namespace UniSetTypes; ...@@ -517,160 +443,79 @@ using namespace UniSetTypes;
<xsl:value-of select="$CLASSNAME"/>_SK::<xsl:value-of select="$CLASSNAME"/>_SK(): <xsl:value-of select="$CLASSNAME"/>_SK::<xsl:value-of select="$CLASSNAME"/>_SK():
// Инициализация идентификаторов (имена берутся из конф. файла) // Инициализация идентификаторов (имена берутся из конф. файла)
<xsl:for-each select="//smap/item"> <xsl:for-each select="//smap/item">
<xsl:if test="normalize-space(@vartype)!='io'">
<xsl:value-of select="@name"/>(DefaultObjectId), <xsl:value-of select="@name"/>(DefaultObjectId),
node_<xsl:value-of select="@name"/>(DefaultObjectId), node_<xsl:value-of select="@name"/>(DefaultObjectId),
</xsl:if>
</xsl:for-each> </xsl:for-each>
// Используемые идентификаторы сообщений (имена берутся из конф. файла) // Используемые идентификаторы сообщений (имена берутся из конф. файла)
<xsl:for-each select="//msgmap/item"><xsl:value-of select="@name"/>(DefaultObjectId), <xsl:for-each select="//msgmap/item"><xsl:value-of select="@name"/>(DefaultObjectId),
node_<xsl:value-of select="@name"/>(DefaultObjectId), node_<xsl:value-of select="@name"/>(DefaultObjectId),
m_<xsl:value-of select="@name"/>(false),
prev_m_<xsl:value-of select="@name"/>(false),
</xsl:for-each>
// variables
<xsl:for-each select="//variables/item">
<xsl:if test="normalize-space(@public)!=''">
<xsl:call-template name="default-init-variables"/>
</xsl:if>
<xsl:if test="normalize-space(@private)=''">
<xsl:if test="normalize-space(@public)=''">
<xsl:call-template name="default-init-variables"/>
</xsl:if>
</xsl:if>
</xsl:for-each> </xsl:for-each>
active(false), active(false),
<xsl:if test="normalize-space($TESTMODE)!=''">
isTestMode(false), isTestMode(false),
idTestMode_S(DefaultObjectId), idTestMode_S(DefaultObjectId),
idLocalTestMode_S(DefaultObjectId), idLocalTestMode_S(DefaultObjectId),
</xsl:if>
idHeartBeat(DefaultObjectId), idHeartBeat(DefaultObjectId),
maxHeartBeat(10), maxHeartBeat(10),
confnode(0), confnode(0),
smReadyTimeout(0), smReadyTimeout(0),
activated(false), activated(false),
askPause(2000), askPause(2000)
<xsl:for-each select="//variables/item">
<xsl:if test="normalize-space(@private)!=''">
<xsl:call-template name="default-init-variables"/>
</xsl:if>
</xsl:for-each>
end_private(false)
{ {
unideb[Debug::CRIT] &lt;&lt; "<xsl:value-of select="$CLASSNAME"/>: init failed!!!!!!!!!!!!!!!" &lt;&lt; endl; unideb[Debug::CRIT] &lt;&lt; "<xsl:value-of select="$CLASSNAME"/>: init failed!!!!!!!!!!!!!!!" &lt;&lt; endl;
throw Exception( string(myname+": init failed!!!") ); throw Exception( string(myname+": init failed!!!") );
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
// ( val, confval, default val ) <xsl:value-of select="$CLASSNAME"/>_SK::<xsl:value-of select="$CLASSNAME"/>_SK( ObjectId id, xmlNode* cnode ):
static const std::string init3_str( const std::string&amp; s1, const std::string&amp; s2, const std::string&amp; s3 )
{
if( !s1.empty() )
return s1;
if( !s2.empty() )
return s2;
return s3;
}
// -----------------------------------------------------------------------------
<xsl:value-of select="$CLASSNAME"/>_SK::<xsl:value-of select="$CLASSNAME"/>_SK( ObjectId id, xmlNode* cnode, const std::string&amp; argprefix ):
<xsl:if test="normalize-space($BASECLASS)!=''"><xsl:value-of select="normalize-space($BASECLASS)"/>(id),</xsl:if> <xsl:if test="normalize-space($BASECLASS)!=''"><xsl:value-of select="normalize-space($BASECLASS)"/>(id),</xsl:if>
<xsl:if test="normalize-space($BASECLASS)=''">UniSetObject(id),</xsl:if> <xsl:if test="normalize-space($BASECLASS)=''">UniSetObject(id),</xsl:if>
// Инициализация идентификаторов (имена берутся из конф. файла) // Инициализация идентификаторов (имена берутся из конф. файла)
<xsl:for-each select="//smap/item"> <xsl:for-each select="//smap/item">
<xsl:if test="normalize-space(@vartype)!='io'">
<xsl:value-of select="normalize-space(@name)"/>(conf->getSensorID(conf->getProp(cnode,"<xsl:value-of select="normalize-space(@name)"/>"))), <xsl:value-of select="normalize-space(@name)"/>(conf->getSensorID(conf->getProp(cnode,"<xsl:value-of select="normalize-space(@name)"/>"))),
node_<xsl:value-of select="normalize-space(@name)"/>( conf->getNodeID(conf->getProp(cnode,"node_<xsl:value-of select="normalize-space(@name)"/>")) ), node_<xsl:value-of select="normalize-space(@name)"/>( conf->getNodeID(conf->getProp(cnode,"node_<xsl:value-of select="normalize-space(@name)"/>")) ),
</xsl:if>
</xsl:for-each> </xsl:for-each>
// Используемые идентификаторы сообщений (имена берутся из конф. файла) // Используемые идентификаторы сообщений (имена берутся из конф. файла)
<xsl:for-each select="//msgmap/item"><xsl:value-of select="normalize-space(@name)"/>(conf->getSensorID(conf->getProp(cnode,"<xsl:value-of select="normalize-space(@name)"/>"))), <xsl:for-each select="//msgmap/item"><xsl:value-of select="normalize-space(@name)"/>(conf->getSensorID(conf->getProp(cnode,"<xsl:value-of select="normalize-space(@name)"/>"))),
node_<xsl:value-of select="normalize-space(@name)"/>(conf->getNodeID( conf->getProp(cnode,"node_<xsl:value-of select="normalize-space(@name)"/>"))), node_<xsl:value-of select="normalize-space(@name)"/>(conf->getNodeID( conf->getProp(cnode,"node_<xsl:value-of select="normalize-space(@name)"/>"))),
m_<xsl:value-of select="normalize-space(@name)"/>(false),
prev_m_<xsl:value-of select="normalize-space(@name)"/>(false),
</xsl:for-each>
// variables
<xsl:for-each select="//variables/item">
<xsl:if test="normalize-space(@public)!=''">
<xsl:call-template name="init-variables"/>
</xsl:if>
<xsl:if test="normalize-space(@private)=''">
<xsl:if test="normalize-space(@public)=''">
<xsl:call-template name="init-variables"/>
</xsl:if>
</xsl:if>
</xsl:for-each> </xsl:for-each>
sleep_msec(<xsl:call-template name="settings"><xsl:with-param name="varname" select="'sleep-msec'"/></xsl:call-template>), sleep_msec(<xsl:call-template name="settings"><xsl:with-param name="varname" select="'sleep-msec'"/></xsl:call-template>),
active(true), active(true),
<xsl:if test="normalize-space($TESTMODE)!=''">
isTestMode(false), isTestMode(false),
idTestMode_S(conf->getSensorID("TestMode_S")), idTestMode_S(conf->getSensorID("TestMode_S")),
idLocalTestMode_S(conf->getSensorID(conf->getProp(cnode,"LocalTestMode_S"))), idLocalTestMode_S(conf->getSensorID(conf->getProp(cnode,"LocalTestMode_S"))),
in_TestMode_S(false), in_TestMode_S(false),
in_LocalTestMode_S(false), in_LocalTestMode_S(false),
</xsl:if>
idHeartBeat(DefaultObjectId), idHeartBeat(DefaultObjectId),
maxHeartBeat(10), maxHeartBeat(10),
confnode(cnode), confnode(cnode),
smReadyTimeout(0), smReadyTimeout(0),
activated(false), activated(false),
askPause(conf->getPIntProp(cnode,"askPause",2000)), askPause(conf->getPIntProp(cnode,"askPause",2000))
<xsl:for-each select="//variables/item">
<xsl:if test="normalize-space(@private)!=''">
<xsl:call-template name="init-variables"/>
</xsl:if>
</xsl:for-each>
end_private(false)
{ {
<xsl:call-template name="COMMON-ID-LIST"/> <xsl:call-template name="COMMON-ID-LIST"/>
if( getId() == DefaultObjectId )
{
ostringstream err;
err &lt;&lt; "(<xsl:value-of select="$CLASSNAME"/>::init): Unknown ObjectID!";
throw SystemError( err.str() );
}
<xsl:for-each select="//smap/item"> <xsl:for-each select="//smap/item">
<xsl:if test="normalize-space(@no_check_id)!='1'"> <xsl:if test="normalize-space(@no_check_id)!='1'">
if( <xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId ) if( <xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId )
throw Exception( myname + ": Not found ID for (<xsl:value-of select="@name"/>) " + conf->getProp(cnode,"<xsl:value-of select="@name"/>") ); throw Exception( myname + ": Not found ID for (<xsl:value-of select="@name"/>) " + conf->getProp(cnode,"<xsl:value-of select="@name"/>") );
<xsl:if test="normalize-space(@no_check_iotype)!='1'">
if( conf->getIOType( <xsl:value-of select="normalize-space(@name)"/> ) != <xsl:call-template name="gettype"><xsl:with-param name="iotype" select="@iotype"/></xsl:call-template> )
{
ostringstream err;
err &lt;&lt; myname &lt;&lt; "(init): Invalid 'iotype' for '<xsl:value-of select="normalize-space(@name)"/>' set '<xsl:value-of select="normalize-space(@iotype)"/>' but "
&lt;&lt; conf->getProp(cnode,"<xsl:value-of select="normalize-space(@name)"/>") &lt;&lt; "='" &lt;&lt; conf->getIOType( <xsl:value-of select="normalize-space(@name)"/> ) &lt;&lt; "'";
throw Exception( err.str() );
}
</xsl:if>
</xsl:if>
if( node_<xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId ) if( node_<xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId )
{ {
<xsl:if test="normalize-space(@no_check_id)!='1'">
if( !conf->getProp(cnode,"node_<xsl:value-of select="normalize-space(@name)"/>").empty() ) if( !conf->getProp(cnode,"node_<xsl:value-of select="normalize-space(@name)"/>").empty() )
throw Exception( myname + ": Not found NodeID for (node='node_<xsl:value-of select="normalize-space(@name)"/>') " + conf->getProp(cnode,"node_<xsl:value-of select="normalize-space(@name)"/>") ); throw Exception( myname + ": Not found NodeID for (node='node_<xsl:value-of select="normalize-space(@name)"/>') " + conf->getProp(cnode,"node_<xsl:value-of select="normalize-space(@name)"/>") );
</xsl:if>
node_<xsl:value-of select="normalize-space(@name)"/> = conf->getLocalNode(); node_<xsl:value-of select="normalize-space(@name)"/> = conf->getLocalNode();
} }
</xsl:if>
</xsl:for-each> </xsl:for-each>
<xsl:for-each select="//msgmap/item"> <xsl:for-each select="//msgmap/item">
if( <xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId ) if( <xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId )
{ unideb[Debug::WARN] &lt;&lt; myname &lt;&lt; ": Not found (Message)OID for (<xsl:value-of select="normalize-space(@name)"/>) " &lt;&lt; conf->getProp(cnode,"<xsl:value-of select="normalize-space(@name)"/>") &lt;&lt; endl;
if( !conf->getProp(cnode,"node_<xsl:value-of select="normalize-space(@name)"/>").empty() )
throw Exception( myname + ": Not found Message::NodeID for (node='node_<xsl:value-of select="normalize-space(@name)"/>') " + conf->getProp(cnode,"node_<xsl:value-of select="normalize-space(@name)"/>") );
}
if( node_<xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId ) if( node_<xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId )
{ {
if( !conf->getProp(cnode,"node_<xsl:value-of select="normalize-space(@name)"/>").empty() ) unideb[Debug::WARN] &lt;&lt; myname &lt;&lt; ": Not found (Message)NodeID for node=(<xsl:value-of select="normalize-space(@node)"/>)" &lt;&lt; conf->getProp(cnode,"<xsl:value-of select="normalize-space(@node)"/>")
throw Exception( myname + ": Not found Message::NodeID for (node='node_<xsl:value-of select="normalize-space(@name)"/>') " + conf->getProp(cnode,"node_<xsl:value-of select="normalize-space(@name)"/>") ); &lt;&lt; ". Use localNode=" &lt;&lt; conf->getLocalNode()
&lt;&lt; endl;
node_<xsl:value-of select="normalize-space(@name)"/> = conf->getLocalNode();
} }
</xsl:for-each> </xsl:for-each>
...@@ -698,10 +543,10 @@ end_private(false) ...@@ -698,10 +543,10 @@ end_private(false)
// Инициализация значений // Инициализация значений
<xsl:for-each select="//smap/item"> <xsl:for-each select="//smap/item">
<xsl:if test="normalize-space(@default)=''"> <xsl:if test="normalize-space(@default)=''">
<xsl:call-template name="setprefix"/><xsl:value-of select="@name"/> = conf->getArgPInt("--" + argprefix + "<xsl:value-of select="@name"/>-default",it.getProp("<xsl:value-of select="@name"/>_default"),0); <xsl:call-template name="setprefix"/><xsl:value-of select="@name"/> = 0;
</xsl:if> </xsl:if>
<xsl:if test="not(normalize-space(@default)='')"> <xsl:if test="not(normalize-space(@default)='')">
<xsl:call-template name="setprefix"/><xsl:value-of select="@name"/> = conf->getArgPInt("--" + argprefix + "<xsl:value-of select="@name"/>-default",it.getProp("<xsl:value-of select="@name"/>_default"),<xsl:value-of select="@default"/>); <xsl:call-template name="setprefix"/><xsl:value-of select="@name"/> = <xsl:value-of select="@default"/>;
</xsl:if> </xsl:if>
</xsl:for-each> </xsl:for-each>
...@@ -725,38 +570,10 @@ end_private(false) ...@@ -725,38 +570,10 @@ end_private(false)
else if( smReadyTimeout &lt; 0 ) else if( smReadyTimeout &lt; 0 )
smReadyTimeout = UniSetTimer::WaitUpTime; smReadyTimeout = UniSetTimer::WaitUpTime;
smTestID = conf->getSensorID(init3_str(conf->getArgParam("--" + argprefix + "sm-test-id"),conf->getProp(cnode,"smTestID"),""));
<xsl:for-each select="//smap/item">
<xsl:if test="normalize-space(@smTestID)!=''">
if( smTestID == DefaultObjectId )
smTestID = <xsl:value-of select="@name"/>;
</xsl:if>
</xsl:for-each>
activateTimeout = conf->getArgPInt("--activate-timeout", 20000); activateTimeout = conf->getArgPInt("--activate-timeout", 20000);
int msec = conf->getArgPInt("--startup-timeout", 10000); int msec = conf->getArgPInt("--startup-timeout", 10000);
ptStartUpTimeout.setTiming(msec); ptStartUpTimeout.setTiming(msec);
// ===================== &lt;variables&gt; =====================
<xsl:for-each select="//variables/item">
<xsl:if test="normalize-space(@min)!=''">
if( <xsl:value-of select="@name"/> &lt; <xsl:value-of select="@min"/> )
{
unideb[Debug::WARN] &lt;&lt; myname &lt;&lt; ": RANGE WARNING: <xsl:value-of select="@name"/>=" &lt;&lt; <xsl:value-of select="@name"/> &lt;&lt; " &lt; <xsl:value-of select="@min"/>" &lt;&lt; endl;
<xsl:if test="normalize-space(@no_range_exception)=''">throw UniSetTypes::SystemError(myname+"(init): <xsl:value-of select="@name"/> &lt; <xsl:value-of select="@min"/>");</xsl:if>
}
</xsl:if>
<xsl:if test="normalize-space(@max)!=''">
if( <xsl:value-of select="@name"/> &gt; <xsl:value-of select="@max"/> )
{
unideb[Debug::WARN] &lt;&lt; myname &lt;&lt; ": RANGE WARNING: <xsl:value-of select="@name"/>=" &lt;&lt; <xsl:value-of select="@name"/> &lt;&lt; " &gt; <xsl:value-of select="@max"/>" &lt;&lt; endl;
<xsl:if test="normalize-space(@no_range_exception)=''">throw UniSetTypes::SystemError(myname+"(init): <xsl:value-of select="@name"/> &gt; <xsl:value-of select="@max"/>");</xsl:if>
}
</xsl:if>
// ----------
</xsl:for-each>
// ===================== end of &lt;variables&gt; =====================
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -768,19 +585,20 @@ end_private(false) ...@@ -768,19 +585,20 @@ end_private(false)
void <xsl:value-of select="$CLASSNAME"/>_SK::updateValues() void <xsl:value-of select="$CLASSNAME"/>_SK::updateValues()
{ {
// Опрашиваем все входы... // Опрашиваем все входы...
<xsl:if test="normalize-space($TESTMODE)!=''">
in_TestMode_S = (idTestMode_S!=DefaultObjectId) ? ui.getState(idTestMode_S):false; in_TestMode_S = (idTestMode_S!=DefaultObjectId) ? ui.getState(idTestMode_S):false;
in_LocalTestMode_S = (idLocalTestMode_S!=DefaultObjectId) ? ui.getState(idLocalTestMode_S):false; in_LocalTestMode_S = (idLocalTestMode_S!=DefaultObjectId) ? ui.getState(idLocalTestMode_S):false;
</xsl:if>
<xsl:for-each select="//smap/item"> <xsl:for-each select="//smap/item">
<xsl:choose> <xsl:choose>
<xsl:when test="normalize-space(@vartype)='in'"><xsl:call-template name="getdata"/></xsl:when> <xsl:when test="normalize-space(@vartype)='in'"><xsl:call-template name="getdata"/></xsl:when>
<xsl:when test="normalize-space(@vartype)='io'"><xsl:call-template name="getdata"/></xsl:when>
</xsl:choose> </xsl:choose>
</xsl:for-each> </xsl:for-each>
<!-- <!--
<xsl:for-each select="//smap/item"> <xsl:for-each select="//smap/item">
<xsl:choose> <xsl:choose>
<xsl:when test="normalize-space(@vartype)='in'"><xsl:call-template name="getdata"><xsl:with-param name="output" select="1"/></xsl:call-template></xsl:when> <xsl:when test="normalize-space(@vartype)='in'"><xsl:call-template name="getdata"><xsl:with-param name="output" select="1"/></xsl:call-template></xsl:when>
<xsl:when test="normalize-space(@vartype)='io'"><xsl:call-template name="getdata"><xsl:with-param name="output" select="1"/></xsl:call-template></xsl:when>
</xsl:choose> </xsl:choose>
</xsl:for-each> </xsl:for-each>
--> -->
...@@ -800,6 +618,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::checkSensors() ...@@ -800,6 +618,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::checkSensors()
<xsl:for-each select="//smap/item"> <xsl:for-each select="//smap/item">
<xsl:choose> <xsl:choose>
<xsl:when test="normalize-space(@vartype)='in'"><xsl:call-template name="check_changes"/></xsl:when> <xsl:when test="normalize-space(@vartype)='in'"><xsl:call-template name="check_changes"/></xsl:when>
<xsl:when test="normalize-space(@vartype)='io'"><xsl:call-template name="check_changes"/></xsl:when>
</xsl:choose> </xsl:choose>
</xsl:for-each> </xsl:for-each>
} }
...@@ -874,6 +693,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::testMode( bool _state ) ...@@ -874,6 +693,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::testMode( bool _state )
<xsl:for-each select="//smap/item"> <xsl:for-each select="//smap/item">
<xsl:choose> <xsl:choose>
<xsl:when test="normalize-space(@vartype)='out'"><xsl:call-template name="setdata_value"><xsl:with-param name="setval" select="0"/></xsl:call-template></xsl:when> <xsl:when test="normalize-space(@vartype)='out'"><xsl:call-template name="setdata_value"><xsl:with-param name="setval" select="0"/></xsl:call-template></xsl:when>
<xsl:when test="normalize-space(@vartype)='io'"><xsl:call-template name="setdata_value"><xsl:with-param name="setval" select="0"/></xsl:call-template></xsl:when>
</xsl:choose> </xsl:choose>
</xsl:for-each> </xsl:for-each>
} }
...@@ -883,17 +703,6 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::testMode( bool _state ) ...@@ -883,17 +703,6 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::testMode( bool _state )
<xsl:template name="COMMON-CC-ALONE-FUNCS"> <xsl:template name="COMMON-CC-ALONE-FUNCS">
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
// ( val, confval, default val )
static const std::string init3_str( const std::string&amp; s1, const std::string&amp; s2, const std::string&amp; s3 )
{
if( !s1.empty() )
return s1;
if( !s2.empty() )
return s2;
return s3;
}
// -----------------------------------------------------------------------------
<xsl:value-of select="$CLASSNAME"/>_SK::<xsl:value-of select="$CLASSNAME"/>_SK(): <xsl:value-of select="$CLASSNAME"/>_SK::<xsl:value-of select="$CLASSNAME"/>_SK():
<xsl:for-each select="//sensors/item"> <xsl:for-each select="//sensors/item">
<xsl:call-template name="setvar"> <xsl:call-template name="setvar">
...@@ -906,11 +715,9 @@ static const std::string init3_str( const std::string&amp; s1, const std::string ...@@ -906,11 +715,9 @@ static const std::string init3_str( const std::string&amp; s1, const std::string
</xsl:call-template> </xsl:call-template>
</xsl:for-each> </xsl:for-each>
active(false), active(false),
<xsl:if test="normalize-space($TESTMODE)!=''">
isTestMode(false), isTestMode(false),
idTestMode_S(DefaultObjectId), idTestMode_S(DefaultObjectId),
idLocalTestMode_S(DefaultObjectId), idLocalTestMode_S(DefaultObjectId),
</xsl:if>
idHeartBeat(DefaultObjectId), idHeartBeat(DefaultObjectId),
maxHeartBeat(10), maxHeartBeat(10),
confnode(0), confnode(0),
...@@ -921,7 +728,7 @@ askPause(2000) ...@@ -921,7 +728,7 @@ askPause(2000)
throw Exception( string(myname+": init failed!!!") ); throw Exception( string(myname+": init failed!!!") );
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
<xsl:value-of select="$CLASSNAME"/>_SK::<xsl:value-of select="$CLASSNAME"/>_SK( ObjectId id, xmlNode* cnode, const string&amp; argprefix ): <xsl:value-of select="$CLASSNAME"/>_SK::<xsl:value-of select="$CLASSNAME"/>_SK( ObjectId id, xmlNode* cnode ):
<xsl:if test="normalize-space($BASECLASS)!=''"><xsl:value-of select="normalize-space($BASECLASS)"/>(id),</xsl:if> <xsl:if test="normalize-space($BASECLASS)!=''"><xsl:value-of select="normalize-space($BASECLASS)"/>(id),</xsl:if>
<xsl:if test="normalize-space($BASECLASS)=''">UniSetObject(id),</xsl:if> <xsl:if test="normalize-space($BASECLASS)=''">UniSetObject(id),</xsl:if>
// Инициализация идентификаторов (имена берутся из конф. файла) // Инициализация идентификаторов (имена берутся из конф. файла)
...@@ -938,26 +745,17 @@ askPause(2000) ...@@ -938,26 +745,17 @@ askPause(2000)
</xsl:for-each> </xsl:for-each>
sleep_msec(<xsl:call-template name="settings-alone"><xsl:with-param name="varname" select="'sleep-msec'"/></xsl:call-template>), sleep_msec(<xsl:call-template name="settings-alone"><xsl:with-param name="varname" select="'sleep-msec'"/></xsl:call-template>),
active(true), active(true),
<xsl:if test="normalize-space($TESTMODE)!=''">
isTestMode(false), isTestMode(false),
idTestMode_S(conf->getSensorID("TestMode_S")), idTestMode_S(conf->getSensorID("TestMode_S")),
idLocalTestMode_S(conf->getSensorID(conf->getProp(cnode,"LocalTestMode_S"))), idLocalTestMode_S(conf->getSensorID(conf->getProp(cnode,"LocalTestMode_S"))),
in_TestMode_S(false), in_TestMode_S(false),
in_LocalTestMode_S(false), in_LocalTestMode_S(false),
</xsl:if>
idHeartBeat(DefaultObjectId), idHeartBeat(DefaultObjectId),
maxHeartBeat(10), maxHeartBeat(10),
confnode(cnode), confnode(cnode),
activated(false), activated(false),
askPause(conf->getPIntProp(cnode,"askPause",2000)) askPause(conf->getPIntProp(cnode,"askPause",2000))
{ {
if( getId() == DefaultObjectId )
{
ostringstream err;
err &lt;&lt; "(<xsl:value-of select="$CLASSNAME"/>::init): Unknown ObjectID!";
throw SystemError( err.str() );
}
si.node = conf->getLocalNode(); si.node = conf->getLocalNode();
<xsl:for-each select="//sensors/item"> <xsl:for-each select="//sensors/item">
...@@ -1000,8 +798,6 @@ askPause(conf->getPIntProp(cnode,"askPause",2000)) ...@@ -1000,8 +798,6 @@ askPause(conf->getPIntProp(cnode,"askPause",2000))
else if( smReadyTimeout &lt; 0 ) else if( smReadyTimeout &lt; 0 )
smReadyTimeout = UniSetTimer::WaitUpTime; smReadyTimeout = UniSetTimer::WaitUpTime;
smTestID = conf->getSensorID(init3_str(conf->getArgParam("--" + argprefix + "sm-test-id"),conf->getProp(cnode,"smTestID"),""));
activateTimeout = conf->getArgPInt("--activate-timeout", 20000); activateTimeout = conf->getArgPInt("--activate-timeout", 20000);
int msec = conf->getArgPInt("--startup-timeout", 10000); int msec = conf->getArgPInt("--startup-timeout", 10000);
...@@ -1016,14 +812,14 @@ askPause(conf->getPIntProp(cnode,"askPause",2000)) ...@@ -1016,14 +812,14 @@ askPause(conf->getPIntProp(cnode,"askPause",2000))
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void <xsl:value-of select="$CLASSNAME"/>_SK::updateValues() void <xsl:value-of select="$CLASSNAME"/>_SK::updateValues()
{ {
<xsl:if test="normalize-space($TESTMODE)!=''">
in_TestMode_S = (idTestMode_S!=DefaultObjectId) ? ui.getState(idTestMode_S):false; in_TestMode_S = (idTestMode_S!=DefaultObjectId) ? ui.getState(idTestMode_S):false;
in_LocalTestMode_S = (idLocalTestMode_S!=DefaultObjectId) ? ui.getState(idLocalTestMode_S):false; in_LocalTestMode_S = (idLocalTestMode_S!=DefaultObjectId) ? ui.getState(idLocalTestMode_S):false;
</xsl:if>
// Опрашиваем все входы... // Опрашиваем все входы...
<xsl:for-each select="//sensors/item/consumers/consumer"> <xsl:for-each select="//sensors/item/consumers/consumer">
<xsl:choose> <xsl:choose>
<xsl:when test="normalize-space(@vartype)='in'"><xsl:call-template name="getdata"/></xsl:when> <xsl:when test="normalize-space(@vartype)='in'"><xsl:call-template name="getdata"/></xsl:when>
<xsl:when test="normalize-space(@vartype)='io'"><xsl:call-template name="getdata"/></xsl:when>
</xsl:choose> </xsl:choose>
</xsl:for-each> </xsl:for-each>
} }
...@@ -1042,6 +838,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::checkSensors() ...@@ -1042,6 +838,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::checkSensors()
<xsl:for-each select="//sensors/item/consumers/consumer"> <xsl:for-each select="//sensors/item/consumers/consumer">
<xsl:choose> <xsl:choose>
<xsl:when test="normalize-space(@vartype)='in'"><xsl:call-template name="check_changes"/></xsl:when> <xsl:when test="normalize-space(@vartype)='in'"><xsl:call-template name="check_changes"/></xsl:when>
<xsl:when test="normalize-space(@vartype)='io'"><xsl:call-template name="check_changes"/></xsl:when>
</xsl:choose> </xsl:choose>
</xsl:for-each> </xsl:for-each>
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment