Commit 115f617f authored by Pavel Vainerman's avatar Pavel Vainerman

(MBExchange): сделал завершение работы не через abort(), а через SIGTERM,

а так де мелкие правки оформления кода.
parent 54b685e2
......@@ -618,8 +618,7 @@ end_private(false)
throw SystemError( err.str() );
}
mylog.setLogName(myname);
<xsl:for-each select="//smap/item">
<xsl:if test="normalize-space(@no_check_id)!='1'">
......@@ -943,6 +942,8 @@ askPause(uniset_conf()->getPIntProp(cnode,"askPause",2000))
throw SystemError( err.str() );
}
mylog.setLogName(myname);
si.node = conf->getLocalNode();
......
......@@ -2,7 +2,7 @@
USERID=0
BASEOMNIPORT=2809
UNISET_SCRIPT_VERBOSE=
[ -z "$UNISET_SCRIPT_VERBOSE" ] && UNISET_SCRIPT_VERBOSE=
# Получаем наш внутренний номер пользователя
function get_userid()
......
......@@ -41,9 +41,9 @@ class MBExchange:
enum ExchangeMode
{
emNone=0, /*!< нормальная работа (по умолчанию) */
emWriteOnly=1, /*!< "только посылка данных" (работают только write-функции) */
emReadOnly=2, /*!< "только чтение" (работают только read-функции) */
emSkipSaveToSM=3, /*!< не писать данные в SM (при этом работают и read и write функции */
emWriteOnly=1, /*!< "только посылка данных" (работают только write-функции) */
emReadOnly=2, /*!< "только чтение" (работают только read-функции) */
emSkipSaveToSM=3, /*!< не писать данные в SM (при этом работают и read и write функции) */
emSkipExchange=4 /*!< отключить обмен */
};
......@@ -51,9 +51,9 @@ class MBExchange:
enum DeviceType
{
dtUnknown, /*!< неизвестный */
dtRTU, /*!< RTU (default) */
dtMTR, /*!< MTR (DEIF) */
dtUnknown, /*!< неизвестный */
dtRTU, /*!< RTU (default) */
dtMTR, /*!< MTR (DEIF) */
dtRTU188 /*!< RTU188 (Fastwell) */
};
......@@ -67,9 +67,9 @@ class MBExchange:
public IOBase
{
// only for RTU
short nbit; /*!< bit number) */
short nbit; /*!< bit number) */
VTypes::VType vType; /*!< type of value */
short rnum; /*!< count of registers */
short rnum; /*!< count of registers */
short nbyte; /*!< byte number (1-2) */
RSProperty():
......
......@@ -392,7 +392,7 @@ void MBSlave::waitSMReady()
// throw SystemError(err.str());
raise(SIGTERM);
terminate();
// abort();
// abort();
}
}
// -----------------------------------------------------------------------------
......
......@@ -21,24 +21,24 @@
#include "DebugStream.h"
// -----------------------------------------------------------------------------
class UObject_SK:
public UniSetObject,
public LT_Object
public UniSetObject,
public LT_Object
{
public:
UObject_SK( UniSetTypes::ObjectId id, xmlNode* node=UniSetTypes::uniset_conf()->getNode("UObject"), const std::string& argprefix="" );
UObject_SK();
virtual ~UObject_SK();
bool alarm( UniSetTypes::ObjectId sid, bool state );
long getValue( UniSetTypes::ObjectId sid );
void setValue( UniSetTypes::ObjectId sid, long value );
void askSensor( UniSetTypes::ObjectId sid, UniversalIO::UIOCommand, UniSetTypes::ObjectId node = UniSetTypes::uniset_conf()->getLocalNode() );
void updateValues();
void setMsg( UniSetTypes::ObjectId code, bool state );
DebugStream mylog;
void init_dlog( DebugStream& d );
public:
UObject_SK( UniSetTypes::ObjectId id, xmlNode* node=UniSetTypes::uniset_conf()->getNode("UObject"), const std::string& argprefix="" );
UObject_SK();
virtual ~UObject_SK();
bool alarm( UniSetTypes::ObjectId sid, bool state );
long getValue( UniSetTypes::ObjectId sid );
void setValue( UniSetTypes::ObjectId sid, long value );
void askSensor( UniSetTypes::ObjectId sid, UniversalIO::UIOCommand, UniSetTypes::ObjectId node = UniSetTypes::uniset_conf()->getLocalNode() );
void updateValues();
void setMsg( UniSetTypes::ObjectId code, bool state );
DebugStream mylog;
void init_dlog( DebugStream& d );
// "синтаксический сахар"..для логов
#define myinfo if( mylog.debugging(Debug::INFO) ) mylog
......@@ -55,91 +55,91 @@ class UObject_SK:
#define mylog9 if( mylog.debugging(Debug::LEVEL9) ) mylog
// Используемые идентификаторы
// Используемые идентификаторы сообщений
// Текущее значение
// --- public variables ---
// --- end of public variables ---
protected:
// --- protected variables ---
// ---- end of protected variables ----
virtual void callback() override;
virtual void processingMessage( UniSetTypes::VoidMessage* msg ) override;
virtual void sysCommand( const UniSetTypes::SystemMessage* sm ) override;
virtual void askSensors( UniversalIO::UIOCommand cmd ){}
virtual void sensorInfo( const UniSetTypes::SensorMessage* sm ) override{}
virtual void timerInfo( const UniSetTypes::TimerMessage* tm ) override{}
virtual void sigterm( int signo ) override;
virtual bool activateObject() override;
virtual void testMode( bool state );
void updatePreviousValues();
void checkSensors();
void updateOutputs( bool force );
void preAskSensors( UniversalIO::UIOCommand cmd );
void preSensorInfo( const UniSetTypes::SensorMessage* sm );
void preTimerInfo( const UniSetTypes::TimerMessage* tm );
void waitSM( int wait_msec, UniSetTypes::ObjectId testID = UniSetTypes::DefaultObjectId );
void resetMsg();
Trigger trResetMsg;
PassiveTimer ptResetMsg;
int resetMsgTime;
// Выполнение очередного шага программы
virtual void step(){}
int sleep_msec; /*!< пауза между итерациями */
bool active;
UniSetTypes::ObjectId smTestID; /*!< идентификатор датчика для тестирования готовности SM */
// управление датчиком "сердцебиения"
PassiveTimer ptHeartBeat; /*! < период "сердцебиения" */
UniSetTypes::ObjectId idHeartBeat; /*! < идентификатор датчика (AI) "сердцебиения" */
int maxHeartBeat; /*! < сохраняемое значение */
xmlNode* confnode;
/*! получить числовое свойство из конф. файла по привязанной confnode */
int getIntProp(const std::string& name) { return UniSetTypes::uniset_conf()->getIntProp(confnode, name); }
/*! получить текстовое свойство из конф. файла по привязанной confnode */
inline const std::string getProp(const std::string& name) { return UniSetTypes::uniset_conf()->getProp(confnode, name); }
int smReadyTimeout; /*!< время ожидания готовности SM */
std::atomic_bool activated;
int activateTimeout; /*!< время ожидания готовности UniSetObject к работе */
PassiveTimer ptStartUpTimeout; /*!< время на блокировку обработки WatchDog, если недавно был StartUp */
int askPause; /*!< пауза между неудачными попытками заказать датчики */
IOController_i::SensorInfo si;
bool forceOut; /*!< флаг принудительного обноления "выходов" */
private:
// --- private variables ---
// --- end of private variables ---
// предыдущее значение (для работы UpdateValue())
// Используемые идентификаторы сообщений
bool end_private; // вспомогательное поле (для внутреннего использования при генерировании кода)
// Используемые идентификаторы
// Используемые идентификаторы сообщений
// Текущее значение
// --- public variables ---
// --- end of public variables ---
protected:
// --- protected variables ---
// ---- end of protected variables ----
virtual void callback() override;
virtual void processingMessage( UniSetTypes::VoidMessage* msg ) override;
virtual void sysCommand( const UniSetTypes::SystemMessage* sm ) override;
virtual void askSensors( UniversalIO::UIOCommand cmd ){}
virtual void sensorInfo( const UniSetTypes::SensorMessage* sm ) override{}
virtual void timerInfo( const UniSetTypes::TimerMessage* tm ) override{}
virtual void sigterm( int signo ) override;
virtual bool activateObject() override;
virtual void testMode( bool state );
void updatePreviousValues();
void checkSensors();
void updateOutputs( bool force );
void preAskSensors( UniversalIO::UIOCommand cmd );
void preSensorInfo( const UniSetTypes::SensorMessage* sm );
void preTimerInfo( const UniSetTypes::TimerMessage* tm );
void waitSM( int wait_msec, UniSetTypes::ObjectId testID = UniSetTypes::DefaultObjectId );
void resetMsg();
Trigger trResetMsg;
PassiveTimer ptResetMsg;
int resetMsgTime;
// Выполнение очередного шага программы
virtual void step(){}
int sleep_msec; /*!< пауза между итерациями */
bool active;
UniSetTypes::ObjectId smTestID; /*!< идентификатор датчика для тестирования готовности SM */
// управление датчиком "сердцебиения"
PassiveTimer ptHeartBeat; /*! < период "сердцебиения" */
UniSetTypes::ObjectId idHeartBeat; /*! < идентификатор датчика (AI) "сердцебиения" */
int maxHeartBeat; /*! < сохраняемое значение */
xmlNode* confnode;
/*! получить числовое свойство из конф. файла по привязанной confnode */
int getIntProp(const std::string& name) { return UniSetTypes::uniset_conf()->getIntProp(confnode, name); }
/*! получить текстовое свойство из конф. файла по привязанной confnode */
inline const std::string getProp(const std::string& name) { return UniSetTypes::uniset_conf()->getProp(confnode, name); }
int smReadyTimeout; /*!< время ожидания готовности SM */
std::atomic_bool activated;
int activateTimeout; /*!< время ожидания готовности UniSetObject к работе */
PassiveTimer ptStartUpTimeout; /*!< время на блокировку обработки WatchDog, если недавно был StartUp */
int askPause; /*!< пауза между неудачными попытками заказать датчики */
IOController_i::SensorInfo si;
bool forceOut; /*!< флаг принудительного обноления "выходов" */
private:
// --- private variables ---
// --- end of private variables ---
// предыдущее значение (для работы UpdateValue())
// Используемые идентификаторы сообщений
bool end_private; // вспомогательное поле (для внутреннего использования при генерировании кода)
};
// -----------------------------------------------------------------------------
......
......@@ -44,19 +44,19 @@ forceOut(false),
end_private(false)
{
ucrit << "UObject: init failed!!!!!!!!!!!!!!!" << endl;
throw Exception( string(myname+": init failed!!!") );
ucrit << "UObject: init failed!!!!!!!!!!!!!!!" << endl;
throw Exception( string(myname+": init failed!!!") );
}
// -----------------------------------------------------------------------------
// ( val, confval, default val )
static const std::string init3_str( const std::string& s1, const std::string& s2, const std::string& s3 )
{
if( !s1.empty() )
return s1;
if( !s2.empty() )
return s2;
return s3;
if( !s1.empty() )
return s1;
if( !s2.empty() )
return s2;
return s3;
}
// -----------------------------------------------------------------------------
UObject_SK::UObject_SK( ObjectId id, xmlNode* cnode, const std::string& argprefix ):
......@@ -80,77 +80,77 @@ forceOut(false),
end_private(false)
{
auto conf = uniset_conf();
if( UniSetTypes::findArgParam("--print-id-list",uniset_conf()->getArgc(),uniset_conf()->getArgv()) != -1 )
{
// abort();
}
auto conf = uniset_conf();
if( UniSetTypes::findArgParam("--print-id-list",uniset_conf()->getArgc(),uniset_conf()->getArgv()) != -1 )
{
if( getId() == DefaultObjectId )
{
ostringstream err;
err << "(UObject::init): Unknown ObjectID!";
throw SystemError( err.str() );
}
// abort();
}
if( getId() == DefaultObjectId )
{
ostringstream err;
err << "(UObject::init): Unknown ObjectID!";
throw SystemError( err.str() );
}
UniXML::iterator it(cnode);
forceOut = conf->getArgPInt("--" + argprefix + "force-out",it.getProp("forceOut"),false);
string heart = conf->getArgParam("--" + argprefix + "heartbeat-id",it.getProp("heartbeat_id"));
if( !heart.empty() )
{
idHeartBeat = conf->getSensorID(heart);
if( idHeartBeat == DefaultObjectId )
{
ostringstream err;
err << myname << ": не найден идентификатор для датчика 'HeartBeat' " << heart;
throw SystemError(err.str());
}
UniXML::iterator it(cnode);
int heartbeatTime = conf->getArgPInt("--" + argprefix + "heartbeat-time",it.getProp("heartbeatTime"),conf->getHeartBeatTime());
if( heartbeatTime>0 )
ptHeartBeat.setTiming(heartbeatTime);
else
ptHeartBeat.setTiming(UniSetTimer::WaitUpTime);
forceOut = conf->getArgPInt("--" + argprefix + "force-out",it.getProp("forceOut"),false);
maxHeartBeat = conf->getArgPInt("--" + argprefix + "heartbeat-max",it.getProp("heartbeat_max"), 10);
}
string heart = conf->getArgParam("--" + argprefix + "heartbeat-id",it.getProp("heartbeat_id"));
if( !heart.empty() )
{
idHeartBeat = conf->getSensorID(heart);
if( idHeartBeat == DefaultObjectId )
{
ostringstream err;
err << myname << ": не найден идентификатор для датчика 'HeartBeat' " << heart;
throw SystemError(err.str());
}
int heartbeatTime = conf->getArgPInt("--" + argprefix + "heartbeat-time",it.getProp("heartbeatTime"),conf->getHeartBeatTime());
if( heartbeatTime>0 )
ptHeartBeat.setTiming(heartbeatTime);
else
ptHeartBeat.setTiming(UniSetTimer::WaitUpTime);
maxHeartBeat = conf->getArgPInt("--" + argprefix + "heartbeat-max",it.getProp("heartbeat_max"), 10);
}
// Инициализация значений
sleep_msec = conf->getArgPInt("--" + argprefix + "sleep-msec","150", 150);
// Инициализация значений
sleep_msec = conf->getArgPInt("--" + argprefix + "sleep-msec","150", 150);
resetMsgTime = conf->getPIntProp(cnode,"resetMsgTime", 2000);
ptResetMsg.setTiming(resetMsgTime);
resetMsgTime = conf->getPIntProp(cnode,"resetMsgTime", 2000);
ptResetMsg.setTiming(resetMsgTime);
smReadyTimeout = conf->getArgInt("--" + argprefix + "sm-ready-timeout","");
if( smReadyTimeout == 0 )
smReadyTimeout = 60000;
else if( smReadyTimeout < 0 )
smReadyTimeout = UniSetTimer::WaitUpTime;
smReadyTimeout = conf->getArgInt("--" + argprefix + "sm-ready-timeout","");
if( smReadyTimeout == 0 )
smReadyTimeout = 60000;
else if( smReadyTimeout < 0 )
smReadyTimeout = UniSetTimer::WaitUpTime;
smTestID = conf->getSensorID(init3_str(conf->getArgParam("--" + argprefix + "sm-test-id"),conf->getProp(cnode,"smTestID"),""));
smTestID = conf->getSensorID(init3_str(conf->getArgParam("--" + argprefix + "sm-test-id"),conf->getProp(cnode,"smTestID"),""));
activateTimeout = conf->getArgPInt("--" + argprefix + "activate-timeout", 20000);
activateTimeout = conf->getArgPInt("--" + argprefix + "activate-timeout", 20000);
int msec = conf->getArgPInt("--" + argprefix + "startup-timeout", 10000);
ptStartUpTimeout.setTiming(msec);
int msec = conf->getArgPInt("--" + argprefix + "startup-timeout", 10000);
ptStartUpTimeout.setTiming(msec);
// ===================== <variables> =====================
// ===================== end of <variables> =====================
// ===================== <variables> =====================
// ===================== end of <variables> =====================
}
// -----------------------------------------------------------------------------
......@@ -161,36 +161,36 @@ UObject_SK::~UObject_SK()
// -----------------------------------------------------------------------------
void UObject_SK::updateValues()
{
// Опрашиваем все входы...
// Опрашиваем все входы...
}
// -----------------------------------------------------------------------------
void UObject_SK::updatePreviousValues()
{
}
// -----------------------------------------------------------------------------
void UObject_SK::checkSensors()
{
}
// -----------------------------------------------------------------------------
bool UObject_SK::alarm( UniSetTypes::ObjectId _code, bool _state )
{
if( _code == UniSetTypes::DefaultObjectId )
{
if( _code == UniSetTypes::DefaultObjectId )
{
ucrit << getName()
<< "(alarm): попытка послать сообщение с DefaultObjectId"
<< endl;
return false;
}
<< "(alarm): попытка послать сообщение с DefaultObjectId"
<< endl;
return false;
}
ulog1 << getName() << "(alarm): " << ( _state ? "SEND " : "RESET " ) << endl;
ulog1 << " not found MessgeOID?!!" << endl;
return false;
return false;
}
// -----------------------------------------------------------------------------
void UObject_SK::resetMsg()
......@@ -201,11 +201,11 @@ void UObject_SK::resetMsg()
// -----------------------------------------------------------------------------
void UObject_SK::testMode( bool _state )
{
if( !_state )
return;
if( !_state )
return;
// отключаем все выходы
// отключаем все выходы
}
// -----------------------------------------------------------------------------
......@@ -214,140 +214,140 @@ void UObject_SK::testMode( bool _state )
// ------------------------------------------------------------------------------------------
void UObject_SK::init_dlog( DebugStream& d )
{
UObject_SK::mylog = d;
UObject_SK::mylog = d;
}
// ------------------------------------------------------------------------------------------
void UObject_SK::processingMessage( UniSetTypes::VoidMessage* _msg )
{
try
{
switch( _msg->type )
{
case Message::SensorInfo:
preSensorInfo( reinterpret_cast<SensorMessage*>(_msg) );
break;
case Message::Timer:
preTimerInfo( reinterpret_cast<TimerMessage*>(_msg) );
break;
case Message::SysCommand:
sysCommand( reinterpret_cast<SystemMessage*>(_msg) );
break;
default:
break;
}
}
catch( Exception& ex )
{
ucrit << myname << "(processingMessage): " << ex << endl;
}
try
{
switch( _msg->type )
{
case Message::SensorInfo:
preSensorInfo( reinterpret_cast<SensorMessage*>(_msg) );
break;
case Message::Timer:
preTimerInfo( reinterpret_cast<TimerMessage*>(_msg) );
break;
case Message::SysCommand:
sysCommand( reinterpret_cast<SystemMessage*>(_msg) );
break;
default:
break;
}
}
catch( Exception& ex )
{
ucrit << myname << "(processingMessage): " << ex << endl;
}
}
// -----------------------------------------------------------------------------
void UObject_SK::sysCommand( const SystemMessage* _sm )
{
switch( _sm->command )
{
case SystemMessage::WatchDog:
ulog << myname << "(sysCommand): WatchDog" << endl;
if( !active || !ptStartUpTimeout.checkTime() )
{
switch( _sm->command )
{
case SystemMessage::WatchDog:
ulog << myname << "(sysCommand): WatchDog" << endl;
if( !active || !ptStartUpTimeout.checkTime() )
{
uwarn << myname << "(sysCommand): игнорируем WatchDog, потому-что только-что стартанули" << endl;
break;
}
case SystemMessage::StartUp:
{
waitSM(smReadyTimeout);
ptStartUpTimeout.reset();
// т.к. для io-переменных важно соблюдать последовательность!
// сперва обновить входы.. а потом уже выходы
updateValues();
updateOutputs(true); // принудительное обновление выходов
preAskSensors(UniversalIO::UIONotify);
askSensors(UniversalIO::UIONotify);
active = true;
break;
}
case SystemMessage::FoldUp:
case SystemMessage::Finish:
preAskSensors(UniversalIO::UIODontNotify);
askSensors(UniversalIO::UIODontNotify);
break;
case SystemMessage::LogRotate:
{
// переоткрываем логи
mylog << myname << "(sysCommand): logRotate" << endl;
string fname( mylog.getLogFile() );
if( !fname.empty() )
{
mylog.logFile(fname.c_str(),true);
mylog << myname << "(sysCommand): ***************** mylog LOG ROTATE *****************" << endl;
}
}
break;
default:
break;
}
break;
}
case SystemMessage::StartUp:
{
waitSM(smReadyTimeout);
ptStartUpTimeout.reset();
// т.к. для io-переменных важно соблюдать последовательность!
// сперва обновить входы.. а потом уже выходы
updateValues();
updateOutputs(true); // принудительное обновление выходов
preAskSensors(UniversalIO::UIONotify);
askSensors(UniversalIO::UIONotify);
active = true;
break;
}
case SystemMessage::FoldUp:
case SystemMessage::Finish:
preAskSensors(UniversalIO::UIODontNotify);
askSensors(UniversalIO::UIODontNotify);
break;
case SystemMessage::LogRotate:
{
// переоткрываем логи
mylog << myname << "(sysCommand): logRotate" << endl;
string fname( mylog.getLogFile() );
if( !fname.empty() )
{
mylog.logFile(fname.c_str(),true);
mylog << myname << "(sysCommand): ***************** mylog LOG ROTATE *****************" << endl;
}
}
break;
default:
break;
}
}
// -----------------------------------------------------------------------------
void UObject_SK::sigterm( int signo )
{
UniSetObject::sigterm(signo);
active = false;
UniSetObject::sigterm(signo);
active = false;
}
// -----------------------------------------------------------------------------
bool UObject_SK::activateObject()
{
// блокирование обработки Startup
// пока не пройдёт инициализация датчиков
// см. sysCommand()
{
activated = false;
UniSetObject::activateObject();
activated = true;
}
return true;
// блокирование обработки Startup
// пока не пройдёт инициализация датчиков
// см. sysCommand()
{
activated = false;
UniSetObject::activateObject();
activated = true;
}
return true;
}
// -----------------------------------------------------------------------------
void UObject_SK::preTimerInfo( const UniSetTypes::TimerMessage* _tm )
{
timerInfo(_tm);
timerInfo(_tm);
}
// ----------------------------------------------------------------------------
void UObject_SK::waitSM( int wait_msec, ObjectId _testID )
{
if( _testID == DefaultObjectId )
_testID = smTestID;
if( _testID == DefaultObjectId )
_testID = smTestID;
if( _testID == DefaultObjectId )
return;
uinfo << myname << "(waitSM): waiting SM ready "
<< wait_msec << " msec"
<< " testID=" << _testID << endl;
if( !ui->waitReady(_testID,wait_msec) )
{
ostringstream err;
err << myname
<< "(waitSM): Не дождались готовности(exist) SharedMemory к работе в течение "
<< wait_msec << " мсек";
if( _testID == DefaultObjectId )
return;
uinfo << myname << "(waitSM): waiting SM ready "
<< wait_msec << " msec"
<< " testID=" << _testID << endl;
if( !ui->waitReady(_testID,wait_msec) )
{
ostringstream err;
err << myname
<< "(waitSM): Не дождались готовности(exist) SharedMemory к работе в течение "
<< wait_msec << " мсек";
ucrit << err.str() << endl;
// terminate();
// abort();
raise(SIGTERM);
terminate();
// throw SystemError(err.str());
}
// terminate();
// abort();
raise(SIGTERM);
terminate();
// throw SystemError(err.str());
}
}
......@@ -356,153 +356,153 @@ void UObject_SK::waitSM( int wait_msec, ObjectId _testID )
// --------------------------------------------------------------------------
void UObject_SK::callback()
{
if( !active )
return;
try
{
// проверка таймеров
checkTimers(this);
if( resetMsgTime>0 && trResetMsg.hi(ptResetMsg.checkTime()) )
{
// cout << myname << ": ********* reset messages *********" << endl;
resetMsg();
}
// обработка сообщений (таймеров и т.п.)
for( unsigned int i=0; i<20; i++ )
{
if( !receiveMessage(msg) )
break;
processingMessage(&msg);
updateOutputs(forceOut);
// updatePreviousValues();
}
// Выполнение шага программы
step();
// "сердцебиение"
if( idHeartBeat!=DefaultObjectId && ptHeartBeat.checkTime() )
{
ui->setValue(idHeartBeat,maxHeartBeat,UniversalIO::AI);
ptHeartBeat.reset();
}
// обновление выходов
updateOutputs(forceOut);
updatePreviousValues();
}
catch( Exception& ex )
{
if( !active )
return;
try
{
// проверка таймеров
checkTimers(this);
if( resetMsgTime>0 && trResetMsg.hi(ptResetMsg.checkTime()) )
{
// cout << myname << ": ********* reset messages *********" << endl;
resetMsg();
}
// обработка сообщений (таймеров и т.п.)
for( unsigned int i=0; i<20; i++ )
{
if( !receiveMessage(msg) )
break;
processingMessage(&msg);
updateOutputs(forceOut);
// updatePreviousValues();
}
// Выполнение шага программы
step();
// "сердцебиение"
if( idHeartBeat!=DefaultObjectId && ptHeartBeat.checkTime() )
{
ui->setValue(idHeartBeat,maxHeartBeat,UniversalIO::AI);
ptHeartBeat.reset();
}
// обновление выходов
updateOutputs(forceOut);
updatePreviousValues();
}
catch( Exception& ex )
{
ucrit << myname << "(execute): " << ex << endl;
}
catch(CORBA::SystemException& ex)
{
}
catch(CORBA::SystemException& ex)
{
ucrit << myname << "(execute): СORBA::SystemException: "
<< ex.NP_minorString() << endl;
}
}
catch( std::exception&ex )
{
ucrit << myname << "(execute): catch " << ex.what() << endl;
}
if( !active )
return;
msleep( sleep_msec );
if( !active )
return;
msleep( sleep_msec );
}
// -----------------------------------------------------------------------------
void UObject_SK::setValue( UniSetTypes::ObjectId _sid, long _val )
{
ui->setValue(_sid,_val);
ui->setValue(_sid,_val);
}
// -----------------------------------------------------------------------------
void UObject_SK::updateOutputs( bool _force )
{
}
// -----------------------------------------------------------------------------
void UObject_SK::preSensorInfo( const UniSetTypes::SensorMessage* _sm )
{
sensorInfo(_sm);
sensorInfo(_sm);
}
// -----------------------------------------------------------------------------
void UObject_SK::askSensor( UniSetTypes::ObjectId _sid, UniversalIO::UIOCommand _cmd, UniSetTypes::ObjectId _node )
{
ui->askRemoteSensor(_sid,_cmd,_node,getId());
ui->askRemoteSensor(_sid,_cmd,_node,getId());
}
// -----------------------------------------------------------------------------
long UObject_SK::getValue( UniSetTypes::ObjectId _sid )
{
try
{
try
{
return ui->getValue(_sid);
}
catch(Exception& ex)
{
return ui->getValue(_sid);
}
catch(Exception& ex)
{
ucrit << myname << "(getValue): " << ex << endl;
throw;
}
throw;
}
}
// -----------------------------------------------------------------------------
void UObject_SK::preAskSensors( UniversalIO::UIOCommand _cmd )
{
PassiveTimer ptAct(activateTimeout);
while( !activated && !ptAct.checkTime() )
{
cout << myname << "(preAskSensors): wait activate..." << endl;
msleep(300);
if( activated )
break;
}
if( !activated )
ucrit << myname
<< "(preAskSensors): ************* don`t activated?! ************" << endl;
for( ;; )
{
try
{
return;
}
catch(SystemError& err)
{
PassiveTimer ptAct(activateTimeout);
while( !activated && !ptAct.checkTime() )
{
cout << myname << "(preAskSensors): wait activate..." << endl;
msleep(300);
if( activated )
break;
}
if( !activated )
ucrit << myname
<< "(preAskSensors): ************* don`t activated?! ************" << endl;
for( ;; )
{
try
{
return;
}
catch(SystemError& err)
{
ucrit << myname << "(preAskSensors): " << err << endl;
}
catch(Exception& ex)
{
}
catch(Exception& ex)
{
ucrit << myname << "(preAskSensors): " << ex << endl;
}
catch( std::exception&ex )
{
ucrit << myname << "(execute): catch " << ex.what() << endl;
}
msleep(askPause);
}
}
catch( std::exception&ex )
{
ucrit << myname << "(execute): catch " << ex.what() << endl;
}
msleep(askPause);
}
}
// -----------------------------------------------------------------------------
void UObject_SK::setMsg( UniSetTypes::ObjectId _code, bool _state )
{
// блокируем сброс (т.к. он автоматически по таймеру)
if( !_state )
{
ptResetMsg.reset();
return;
}
alarm( _code, _state );
ptResetMsg.reset();
}
// блокируем сброс (т.к. он автоматически по таймеру)
if( !_state )
{
ptResetMsg.reset();
return;
}
alarm( _code, _state );
ptResetMsg.reset();
}
// ----------------------------------------------------------------------------
......@@ -33,8 +33,6 @@
#include "UniSetObject.h"
#include "UniSetManager.h"
#include "OmniThreadCreator.h"
//#include "OmniThreadCreator.h"
//----------------------------------------------------------------------------------------
class UniSetActivator;
typedef std::shared_ptr<UniSetActivator> UniSetActivatorPtr;
......@@ -46,7 +44,7 @@ typedef std::shared_ptr<UniSetActivator> UniSetActivatorPtr;
* \warning Авктиватор может быть создан только один. Для его создания используйте код:
\code
...
UniSetActivator* act = UniSetActivator::Instance()
auto act = UniSetActivator::Instance()
...
\endcode
* Активатор в свою очередь сам является менеджером(и объектом) и обладает всеми его свойствами
......@@ -75,24 +73,6 @@ class UniSetActivator:
protected:
/*! Команды доступные при заказе сигналов
* см. askSignal()
*/
enum AskSigCommand {
Ask, /*!< заказать получение сигнала */
Denial /*!< отказаться от получения сигнала */
};
/*! заказ на обработку сигнала signo
* Для обработки предназначена функция signal().
* \warning Сообщение о приходе сигналов SITERM, SIGINT, SIGABRT приходит
* вне зависимости от заказа. От этих сообщений нельзя отказаться...
* \warning Заказ других сигналов пока не работает..
* \warning функция временно недоступна (private). Ведуться работы...
* \todo сделать возможность заказа других сигналов
*/
// void askSignal(int signo, AskSigCommand cmd=Ask);
virtual void work();
inline CORBA::ORB_ptr getORB()
......@@ -102,11 +82,9 @@ class UniSetActivator:
virtual void sysCommand( const UniSetTypes::SystemMessage *sm ) override;
// уносим в protected, т.к. Activator должен быть только один..
UniSetActivator();
UniSetActivator( const UniSetTypes::ObjectId id );
static std::shared_ptr<UniSetActivator> inst;
private:
......@@ -125,23 +103,10 @@ class UniSetActivator:
CORBA::ORB_var orb;
TerminateEvent_Signal s_term;
ost::AtomicCounter orbthrIsFinished;
bool omDestroy;
bool sig;
std::atomic_bool omDestroy;
pid_t thpid; // pid orb потока
};
/*
template<class TClass>
int UniSetActivator::attach(TClass* p, void(TClass:: *f)(void*) )
{
if( next >= MAX_CHILD_THREAD )
return -1;
callpull[next] = new OmniThreadCreator<TClass>( p, f);
next++;
return 0;
}
*/
//----------------------------------------------------------------------------------------
#endif
//----------------------------------------------------------------------------------------
......@@ -268,16 +268,14 @@ void UniSetActivator::Destroy()
// ---------------------------------------------------------------------------
UniSetActivator::UniSetActivator( const ObjectId id ):
UniSetManager(id),
omDestroy(false),
sig(false)
omDestroy(false)
{
UniSetActivator::init();
}
// ------------------------------------------------------------------------------------------
UniSetActivator::UniSetActivator():
UniSetManager(UniSetTypes::DefaultObjectId),
omDestroy(false),
sig(false)
omDestroy(false)
{
// thread(false); // отключаем поток (раз не задан id)
UniSetActivator::init();
......@@ -301,7 +299,7 @@ void UniSetActivator::init()
ucrit << myname << "(init): init poa failed!!!" << endl;
// Чтобы подключиться к функциям завершения как можно раньше (раньше создания объектов)
// этот код перенесён в Configuration::uniset_init (в надежде, что uniset_init всегда вызывается одной из первых).
// этот код перенесён в Configuration::uniset_init (в надежде, что uniset_init всегда вызывается одной из первых).
// atexit( UniSetActivator::normalexit );
// set_terminate( UniSetActivator::normalterminate ); // ловушка для неизвестных исключений
}
......@@ -403,8 +401,7 @@ void UniSetActivator::run( bool thread )
offThread(); // отключение потока обработки сообщений, раз не задан ObjectId
UniSetManager::activate(); // а там вызывается активация всех подчиненных объектов и менеджеров
active=true;
active = true;
ulogsys << myname << "(run): активизируем менеджер"<<endl;
pman->activate();
......@@ -431,38 +428,37 @@ void UniSetActivator::run( bool thread )
*/
void UniSetActivator::stop()
{
// uniset_mutex_lock l(deactivateMutex, 500);
if( active )
{
active=false;
if( !active )
return;
ulogsys << myname << "(stop): deactivate... "<< endl;
active = false;
deactivate();
ulogsys << myname << "(stop): deactivate... "<< endl;
try
{
deactivateObject();
}
catch(omniORB::fatalException& fe)
{
ucrit << myname << "(stop): : поймали omniORB::fatalException:" << endl;
ucrit << myname << "(stop): file: " << fe.file() << endl;
ucrit << myname << "(stop): line: " << fe.line() << endl;
ucrit << myname << "(stop): mesg: " << fe.errmsg() << endl;
}
catch( std::exception& ex )
{
ucrit << myname << "(stop): " << ex.what() << endl;
}
deactivate();
try
{
deactivateObject();
}
catch(omniORB::fatalException& fe)
{
ucrit << myname << "(stop): : поймали omniORB::fatalException:" << endl;
ucrit << myname << "(stop): file: " << fe.file() << endl;
ucrit << myname << "(stop): line: " << fe.line() << endl;
ucrit << myname << "(stop): mesg: " << fe.errmsg() << endl;
}
catch( std::exception& ex )
{
ucrit << myname << "(stop): " << ex.what() << endl;
}
ulogsys << myname << "(stop): deactivate ok. "<<endl;
ulogsys << myname << "(stop): discard request..."<< endl;
ulogsys << myname << "(stop): deactivate ok. "<<endl;
ulogsys << myname << "(stop): discard request..."<< endl;
pman->discard_requests(true);
pman->discard_requests(true);
ulogsys << myname << "(stop): discard request ok."<< endl;
}
ulogsys << myname << "(stop): discard request ok."<< endl;
}
// ------------------------------------------------------------------------------------------
......@@ -517,17 +513,17 @@ void UniSetActivator::sysCommand( const UniSetTypes::SystemMessage *sm )
{
switch(sm->command)
{
case SystemMessage::LogRotate:
{
ulogsys << myname << "(sysCommand): logRotate" << endl;
// переоткрываем логи
string fname = ulog.getLogFile();
if( !fname.empty() )
case SystemMessage::LogRotate:
{
ulog.logFile(fname.c_str(),true);
ulog << myname << "(sysCommand): ***************** ulog LOG ROTATE *****************" << endl;
ulogsys << myname << "(sysCommand): logRotate" << endl;
// переоткрываем логи
string fname = ulog.getLogFile();
if( !fname.empty() )
{
ulog.logFile(fname.c_str(),true);
ulog << myname << "(sysCommand): ***************** ulog LOG ROTATE *****************" << endl;
}
}
}
break;
}
}
......@@ -602,69 +598,69 @@ void UniSetActivator::terminated( int signo )
// ------------------------------------------------------------------------------------------
void UniSetActivator::normalexit()
{
if( g_act )
if( !g_act )
return;
ulogsys << g_act->getName() << "(default exit): ..begin..."<< endl << flush;
if( g_term == false )
{
ulogsys << g_act->getName() << "(default exit): ..begin..."<< endl << flush;
if( g_term == false )
// прежде чем вызывать notify_one(), мы должны освободить mutex!
{
// прежде чем вызывать notify_one(), мы должны освободить mutex!
{
std::unique_lock<std::mutex> locker(g_termmutex);
g_term = true;
g_signo = 0;
}
ulogsys << "(default exit): notify terminate.." << endl << flush;
g_termevent.notify_one();
std::unique_lock<std::mutex> locker(g_termmutex);
g_term = true;
g_signo = 0;
}
ulogsys << "(default exit): notify terminate.." << endl << flush;
g_termevent.notify_one();
}
ulogsys << "(default exit): wait done.." << endl << flush;
ulogsys << "(default exit): wait done.." << endl << flush;
#if 1
if( g_term_thread && g_term_thread->joinable() )
g_term_thread->join();
if( g_term_thread && g_term_thread->joinable() )
g_term_thread->join();
#else
if( g_doneevent )
{
std::unique_lock<std::mutex> locker(g_donemutex);
while( !g_done )
g_doneevent.wait(locker);
}
if( g_doneevent )
{
std::unique_lock<std::mutex> locker(g_donemutex);
while( !g_done )
g_doneevent.wait(locker);
}
#endif
ulogsys << "(default exit): wait done OK (good bye)" << endl << flush;
}
ulogsys << "(default exit): wait done OK (good bye)" << endl << flush;
}
// ------------------------------------------------------------------------------------------
void UniSetActivator::normalterminate()
{
if( g_act )
if( !g_act )
return;
ulogsys << g_act->getName() << "(default terminate): ..begin..."<< endl << flush;
if( g_term == false )
{
ulogsys << g_act->getName() << "(default terminate): ..begin..."<< endl << flush;
if( g_term == false )
// прежде чем вызывать notify_one(), мы должны освободить mutex!
{
// прежде чем вызывать notify_one(), мы должны освободить mutex!
{
std::unique_lock<std::mutex> locker(g_termmutex);
g_term = true;
g_signo = 0;
}
ulogsys << "(default terminate): notify terminate.." << endl << flush;
g_termevent.notify_one();
std::unique_lock<std::mutex> locker(g_termmutex);
g_term = true;
g_signo = 0;
}
ulogsys << "(default terminate): notify terminate.." << endl << flush;
g_termevent.notify_one();
}
ulogsys << "(default terminate): wait done.." << endl << flush;
ulogsys << "(default terminate): wait done.." << endl << flush;
#if 1
if( g_term_thread && g_term_thread->joinable() )
g_term_thread->join();
if( g_term_thread && g_term_thread->joinable() )
g_term_thread->join();
#else
if( g_doneevent )
{
std::unique_lock<std::mutex> locker(g_donemutex);
while( !g_done )
g_doneevent.wait(locker);
}
#endif
ulogsys << "(default terminate): wait done OK (good bye)" << endl << flush;
if( g_doneevent )
{
std::unique_lock<std::mutex> locker(g_donemutex);
while( !g_done )
g_doneevent.wait(locker);
}
#endif
ulogsys << "(default terminate): wait done OK (good bye)" << endl << flush;
}
// ------------------------------------------------------------------------------------------
void UniSetActivator::term( int signo )
......@@ -677,9 +673,6 @@ void UniSetActivator::term( int signo )
return;
}
if( signo )
sig = true;
try
{
ulogsys << myname << "(term): вызываем sigterm()" << endl;
......
// ADD PREDEFINED MACROS HERE!
conf/test.xml
docs/examples/uniset-configure-example.xml
docs/Makefile.am
extensions/DBServer-MySQL/DBServer_MySQL.cc
extensions/DBServer-MySQL/DBServer_MySQL.h
extensions/DBServer-MySQL/libUniSet2MySQL.pc.in
extensions/DBServer-MySQL/main.cc
extensions/DBServer-MySQL/Makefile.am
extensions/DBServer-MySQL/MySQLInterface.cc
extensions/DBServer-MySQL/MySQLInterface.h
extensions/DBServer-MySQL/test.cc
extensions/DBServer-PostgreSQL/test.xml
extensions/DBServer-SQLite/DBServer_SQLite.cc
extensions/DBServer-SQLite/DBServer_SQLite.h
extensions/DBServer-SQLite/libUniSet2SQLite.pc.in
extensions/DBServer-SQLite/main.cc
extensions/DBServer-SQLite/Makefile.am
extensions/DBServer-SQLite/SQLiteInterface.cc
extensions/DBServer-SQLite/SQLiteInterface.h
extensions/DBServer-SQLite/test.cc
extensions/DBServer-SQLite/test.xml
extensions/include/Calibration.h
extensions/include/ComediInterface.h
extensions/include/DigitalFilter.h
extensions/include/Element.h
extensions/include/Extensions.h
extensions/include/IB.h
extensions/include/IOBase.h
extensions/include/IOControl.h
extensions/include/LProcessor.h
extensions/include/Makefile.am
extensions/include/MBExchange.h
extensions/include/MBSlave.h
extensions/include/MBTCPMaster.h
extensions/include/MBTCPMultiMaster.h
extensions/include/MBTCPMultiSlave.h
extensions/include/MTR.h
extensions/include/PassiveLProcessor.h
extensions/include/PID.h
extensions/include/RRDServer.h
extensions/include/RTUExchange.h
extensions/include/RTUStorage.h
extensions/include/Schema.h
extensions/include/SharedMemory.h
extensions/include/SingleProcess.h
extensions/include/SMInterface.h
extensions/include/TDelay.h
extensions/include/UDPPacket.h
extensions/include/UNetExchange.h
extensions/include/UNetReceiver.h
extensions/include/UNetSender.h
extensions/include/UniExchange.h
extensions/include/UObject_SK.h
extensions/include/VTypes.h
extensions/IOControl/ComediInterface.cc
extensions/IOControl/ComediInterface.h
extensions/IOControl/iocalibr.cc
extensions/IOControl/IOControl.cc
extensions/IOControl/iocontrol.cc
extensions/IOControl/IOControl.h
extensions/IOControl/iotest.cc
extensions/IOControl/libUniSet2IOControl.pc.in
extensions/IOControl/Makefile.am
extensions/lib/Calibration.cc
extensions/lib/DigitalFilter.cc
extensions/lib/Extensions.cc
extensions/lib/IOBase.cc
extensions/lib/Makefile.am
extensions/lib/MTR.cc
extensions/lib/PID.cc
extensions/lib/SingleProcess.cc
extensions/lib/SMInterface.cc
extensions/lib/UObject_SK.cc
extensions/lib/VTypes.cc
extensions/LogicProcessor/tests/lproc.cc
extensions/LogicProcessor/tests/Makefile.am
extensions/LogicProcessor/tests/schema.xml
extensions/LogicProcessor/tests/tests.cc
extensions/LogicProcessor/Element.cc
extensions/LogicProcessor/Element.h
extensions/LogicProcessor/libUniSet2LogicProcessor.pc.in
extensions/LogicProcessor/logicproc.cc
extensions/LogicProcessor/LProcessor.cc
extensions/LogicProcessor/LProcessor.h
extensions/LogicProcessor/Makefile.am
extensions/LogicProcessor/PassiveLProcessor.cc
extensions/LogicProcessor/PassiveLProcessor.h
extensions/LogicProcessor/plogicproc.cc
extensions/LogicProcessor/Schema.cc
extensions/LogicProcessor/Schema.h
extensions/LogicProcessor/schema.xml
extensions/LogicProcessor/SchemaXML.cc
extensions/LogicProcessor/TAND.cc
extensions/LogicProcessor/TDelay.cc
extensions/LogicProcessor/TDelay.h
extensions/LogicProcessor/TNOT.cc
extensions/LogicProcessor/TOR.cc
extensions/ModbusMaster/tests/Makefile.am
extensions/ModbusMaster/tests/mbmaster-test-configure.xml
extensions/ModbusMaster/tests/MBTCPTestServer.cc
extensions/ModbusMaster/tests/MBTCPTestServer.h
extensions/ModbusMaster/tests/run_test_mbtcpmaster.cc
extensions/ModbusMaster/tests/run_test_mbtcpmultimaster.cc
extensions/ModbusMaster/tests/test_mbtcpmaster.cc
extensions/ModbusMaster/tests/test_mbtcpmultimaster.cc
extensions/ModbusMaster/libUniSet2MBTCPMaster.pc.in
extensions/ModbusMaster/libUniSet2RTU.pc.in
extensions/ModbusMaster/main.cc
extensions/ModbusMaster/Makefile.am
extensions/ModbusMaster/MBExchange.cc
extensions/ModbusMaster/MBExchange.h
extensions/ModbusMaster/MBTCPMaster.cc
extensions/ModbusMaster/MBTCPMaster.h
extensions/ModbusMaster/MBTCPMultiMaster.cc
extensions/ModbusMaster/MBTCPMultiMaster.h
extensions/ModbusMaster/mtr-conv.cc
extensions/ModbusMaster/mtr-read.cc
extensions/ModbusMaster/mtr-setup.cc
extensions/ModbusMaster/multi-main.cc
extensions/ModbusMaster/RTUExchange.cc
extensions/ModbusMaster/rtuexchange.cc
extensions/ModbusMaster/RTUExchange.h
extensions/ModbusMaster/rtustate.cc
extensions/ModbusMaster/RTUStorage.cc
extensions/ModbusMaster/RTUStorage.h
extensions/ModbusMaster/test.xml
extensions/ModbusMaster/vtconv.cc
extensions/ModbusSlave/tests/Makefile.am
extensions/ModbusSlave/tests/mbslave-test-configure.xml
extensions/ModbusSlave/tests/t.cc
extensions/ModbusSlave/tests/test_mbslave.cc
extensions/ModbusSlave/tests/tests_individual_process.cc
extensions/ModbusSlave/tests/tests_with_sm.cc
extensions/ModbusSlave/libUniSet2MBSlave.pc.in
extensions/ModbusSlave/Makefile.am
extensions/ModbusSlave/MBSlave.cc
extensions/ModbusSlave/mbslave.cc
extensions/ModbusSlave/MBSlave.h
extensions/ModbusSlave/mbtcp-multislave.cc
extensions/ModbusSlave/MBTCPMultiSlave.cc
extensions/ModbusSlave/MBTCPMultiSlave.h
extensions/ModbusSlave/test.xml
extensions/RRDServer/libUniSet2RRDServer.pc.in
extensions/RRDServer/main.cc
extensions/RRDServer/Makefile.am
extensions/RRDServer/RRDServer.cc
extensions/RRDServer/RRDServer.h
extensions/SharedMemory/libUniSet2SharedMemory.pc.in
extensions/SharedMemory/Makefile.am
extensions/SharedMemory/SharedMemory.cc
extensions/SharedMemory/SharedMemory.h
extensions/SharedMemory/smemory.cc
extensions/SharedMemory/test.xml
extensions/SharedMemoryPlus/Makefile.am
extensions/SharedMemoryPlus/smemory-plus.cc
extensions/SharedMemoryPlus/test.xml
extensions/SMDBServer/libUniSet2SMDBServer.pc.in
extensions/SMDBServer/main.cc
extensions/SMDBServer/Makefile.am
extensions/SMDBServer/SMDBServer.cc
extensions/SMDBServer/SMDBServer.h
extensions/SMViewer/main.cc
extensions/SMViewer/Makefile.am
extensions/SMViewer/SMViewer.cc
extensions/SMViewer/SMViewer.h
extensions/tests/r/t.cc
extensions/tests/r/val.report.xml
extensions/tests/SMemoryTest/Makefile.am
extensions/tests/SMemoryTest/smemory-test.cc
extensions/tests/SMemoryTest/test.xml
extensions/tests/SMemoryTest/TestProc.cc
extensions/tests/SMemoryTest/TestProc.h
extensions/tests/SMemoryTest/testproc.src.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32403.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32404.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32405.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32406.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32407.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32408.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32409.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32410.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32411.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32412.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32413.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32414.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32415.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32416.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32418.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32420.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32421.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32422.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32423.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32424.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32425.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32428.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32429.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32430.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32432.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32433.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32434.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32436.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32437.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32438.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32439.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32440.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32441.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32442.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32444.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32445.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32448.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32450.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32451.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32452.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32453.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32454.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32455.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32457.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32458.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32459.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32461.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32462.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32463.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32464.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32465.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32466.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32467.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32469.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32470.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32473.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32475.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32481.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32483.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32484.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32486.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32489.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32490.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32491.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32492.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32493.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32494.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32495.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32497.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32498.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32499.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32501.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32502.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32503.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32504.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32505.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32506.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32507.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32509.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32510.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32513.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32515.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32516.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32517.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32518.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32519.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32520.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32522.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32523.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32524.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32526.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32527.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32528.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32529.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32530.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32531.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32534.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32536.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32537.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32540.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32542.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32548.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32550.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32551.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32553.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32556.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.32557.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3580.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3591.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3592.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3593.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3594.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3595.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3596.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3597.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3598.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3599.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3600.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3601.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3602.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3603.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3604.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3605.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3606.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3607.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3608.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3609.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3610.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3611.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3612.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3613.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3614.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3616.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3617.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3618.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3620.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3621.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3622.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3623.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3624.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3625.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3626.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3628.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3629.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3632.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3634.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3635.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3636.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3637.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3638.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3639.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3641.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3642.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3643.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3645.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3646.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3647.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3648.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3649.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3650.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3651.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3653.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3654.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3657.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3659.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3665.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3667.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3668.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3671.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3672.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3676.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3677.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3678.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3679.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3680.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3682.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3683.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3684.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3686.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3687.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3688.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3689.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3690.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3691.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3692.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3694.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3695.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3698.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3700.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3701.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3702.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3703.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3704.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3705.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3707.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3708.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3709.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3711.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3712.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3713.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3714.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3715.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3716.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3717.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3719.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3720.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3723.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3725.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3732.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3734.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3735.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3738.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3739.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3744.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3745.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3746.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3747.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3764.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3765.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3767.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3769.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3770.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3771.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3772.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3773.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3774.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3777.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3779.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3780.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3783.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3785.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3791.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3793.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3794.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3797.valgrind.xml
extensions/tests/valgrind-reports/tests_with_sm.sh.3798.valgrind.xml
extensions/tests/Makefile.am
extensions/tests/test.xml
extensions/tests/test_calibration.cc
extensions/tests/test_digitalfilter.cc
extensions/tests/test_iobase.cc
extensions/tests/test_iobase_with_sm.cc
extensions/tests/test_ui.cc
extensions/tests/test_vtypes.cc
extensions/tests/tests.cc
extensions/tests/tests_with_conf.cc
extensions/tests/tests_with_conf.xml
extensions/tests/tests_with_sm.cc
extensions/tests/tests_with_sm.h
extensions/tests/tests_with_sm.xml
extensions/tests/u.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12624.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12625.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12626.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12630.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12632.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12634.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12635.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12637.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12639.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12640.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12641.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12642.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12643.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12644.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12645.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12647.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12648.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12652.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12655.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12656.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12657.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12658.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12661.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12662.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12663.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12664.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12665.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12666.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12667.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12668.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12669.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12670.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12671.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12674.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12675.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12676.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12677.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12678.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12679.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12680.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12681.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12683.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12684.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12685.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12687.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12688.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12689.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12690.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12691.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12692.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12693.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12695.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12696.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12699.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12701.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12702.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12703.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12704.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12705.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12706.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12708.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12709.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12710.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12712.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12713.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12714.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12715.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12716.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12717.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12718.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12720.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12721.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12724.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12726.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12732.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12734.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12735.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12738.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12739.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12743.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12744.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12745.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12746.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12747.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12749.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12750.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12751.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12753.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12754.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12755.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12756.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12757.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12758.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12759.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12761.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12762.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12765.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12768.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12771.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12772.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12773.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12896.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12946.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12980.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12982.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12983.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12985.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12986.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12987.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12988.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12989.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12990.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12991.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12993.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12994.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12997.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.12999.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13007.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13009.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13010.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13013.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13014.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13019.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13020.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13021.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13022.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13024.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13025.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13026.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13028.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13029.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13030.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13031.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13032.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13033.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13034.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13036.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13037.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13040.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13042.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13048.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13050.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13051.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13059.valgrind.xml
extensions/UNetUDP/tests/valgrind-reports/tests_with_sm.sh.13060.valgrind.xml
extensions/UNetUDP/tests/Makefile.am
extensions/UNetUDP/tests/test_unetudp.cc
extensions/UNetUDP/tests/tests_individual_process.cc
extensions/UNetUDP/tests/tests_with_sm.cc
extensions/UNetUDP/tests/unetudp-test-configure.xml
extensions/UNetUDP/libUniSet2UNetUDP.pc.in
extensions/UNetUDP/Makefile.am
extensions/UNetUDP/test.xml
extensions/UNetUDP/UDPPacket.cc
extensions/UNetUDP/UDPPacket.h
extensions/UNetUDP/unet-udp-tester.cc
extensions/UNetUDP/UNetExchange.cc
extensions/UNetUDP/unetexchange.cc
extensions/UNetUDP/UNetExchange.cc.c
extensions/UNetUDP/UNetExchange.h
extensions/UNetUDP/UNetReceiver.cc
extensions/UNetUDP/UNetReceiver.h
extensions/UNetUDP/UNetSender.cc
extensions/UNetUDP/UNetSender.h
extensions/UniNetwork/libUniSet2Network.pc.in
extensions/UniNetwork/Makefile.am
extensions/UniNetwork/UniExchange.cc
extensions/UniNetwork/UniExchange.h
extensions/UniNetwork/uninet.cc
extensions/libUniSet2Extensions.pc.in
extensions/Makefile.am
IDL/Processes/Makefile.am
IDL/UniSetTypes/Makefile.am
IDL/Makefile.am
include/modbus/Makefile.am
include/modbus/ModbusClient.h
include/modbus/ModbusHelpers.h
include/modbus/ModbusRTUErrors.h
include/modbus/ModbusRTUMaster.h
include/modbus/ModbusRTUSlave.h
include/modbus/ModbusRTUSlaveSlot.h
include/modbus/ModbusServer.h
include/modbus/ModbusServerSlot.h
include/modbus/ModbusTCPCore.h
include/modbus/ModbusTCPMaster.h
include/modbus/ModbusTCPServer.h
include/modbus/ModbusTCPServerSlot.h
include/modbus/ModbusTCPSession.h
include/modbus/ModbusTypes.h
include/CallbackTimer.h
include/ComPort.h
include/ComPort485F.h
include/Configuration.1.h
include/Configuration.h
include/DBServer.h
include/Debug.h
include/DebugStream.h
include/DelayTimer.h
include/Exceptions.h
include/HourGlass.h
include/IOController.h
include/IONotifyController.h
include/IONotifyController_LT.h
include/IORFile.h
include/LogAgregator.h
include/LogReader.h
include/LogServer.h
include/LogServerTypes.h
include/LogSession.h
include/LT_Object.h
include/Makefile.am
include/MessageType.h
include/Mutex.h
include/NCRestorer.h
include/ObjectIndex.h
include/ObjectIndex_Array.h
include/ObjectIndex_idXML.h
include/ObjectIndex_XML.h
include/ObjectRepository.h
include/ObjectRepositoryFactory.h
include/OmniThreadCreator.h
include/ORepHelpers.h
include/PassiveObject.h
include/PassiveTimer.h
include/ProxyManager.h
include/Pulse.h
include/Restorer.h
include/RunLock.h
include/SMonitor.h
include/SViewer.h
include/TCPCheck.h
include/ThreadCreator.h
include/Trigger.h
include/TriggerAND.h
include/TriggerOR.h
include/TriggerOUT.h
include/UInterface.h
include/UniSetActivator.h
include/UniSetManager.h
include/UniSetManager_LT.h
include/UniSetObject.h
include/UniSetObject_LT.h
include/UniSetTypes.h
include/UniXML.h
include/UTCPStream.h
include/WDTInterface.h
lib/Makefile.am
python/examples/test.xml
python/lib/pyUniSet/Makefile.am
python/lib/pyUniSet/PyUInterface.cc
python/lib/pyUniSet/PyUInterface.h
python/lib/pyUniSet/UConnector.cc
python/lib/pyUniSet/UConnector.h
python/lib/pyUniSet/UConnector_wrap.cxx
python/lib/pyUniSet/UExceptions.h
python/lib/pyUniSet/UExceptions_wrap.cxx
python/lib/pyUniSet/UInterface_wrap.cxx
python/lib/pyUniSet/UModbus.cc
python/lib/pyUniSet/UModbus.h
python/lib/pyUniSet/UModbus_wrap.cxx
python/lib/pyUniSet/UTypes.h
python/lib/Makefile.am
python/tests/UConnector/test.xml
python/tests/UInterface/test.xml
python/Makefile.am
src/Communications/Modbus/Makefile.am
src/Communications/Modbus/ModbusClient.cc
src/Communications/Modbus/ModbusHelpers.cc
src/Communications/Modbus/ModbusRTUMaster.cc
src/Communications/Modbus/ModbusRTUSlave.cc
src/Communications/Modbus/ModbusRTUSlaveSlot.cc
src/Communications/Modbus/ModbusServer.cc
src/Communications/Modbus/ModbusServerSlot.cc
src/Communications/Modbus/ModbusTCPCore.cc
src/Communications/Modbus/ModbusTCPMaster.cc
src/Communications/Modbus/ModbusTCPServer.cc
src/Communications/Modbus/ModbusTCPServerSlot.cc
src/Communications/Modbus/ModbusTCPSession.cc
src/Communications/Modbus/ModbusTCPTypes.cc
src/Communications/Modbus/ModbusTypes.cc
src/Communications/TCP/Makefile.am
src/Communications/TCP/TCPCheck.cc
src/Communications/TCP/UTCPStream.cc
src/Communications/ComPort.cc
src/Communications/ComPort485F.cc
src/Communications/Makefile.am
src/Interfaces/Makefile.am
src/Interfaces/UInterface.cc
src/Log/Debug.cc
src/Log/DebugExtBuf.h
src/Log/DebugStream.cc
src/Log/LogAgregator.cc
src/Log/LogReader.cc
src/Log/LogServer.cc
src/Log/LogServerTypes.cc
src/Log/LogSession.cc
src/Log/Makefile.am
src/ObjectRepository/IORFile.cc
src/ObjectRepository/Makefile.am
src/ObjectRepository/ObjectIndex.cc
src/ObjectRepository/ObjectIndex_Array.cc
src/ObjectRepository/ObjectIndex_idXML.cc
src/ObjectRepository/ObjectIndex_XML.cc
src/ObjectRepository/ObjectRepository.cc
src/ObjectRepository/ObjectRepositoryFactory.cc
src/ObjectRepository/ORepHelpers.cc
src/ObjectRepository/PassiveObject.cc
src/ObjectRepository/ProxyManager.cc
src/ObjectRepository/UniSetActivator.cc
src/ObjectRepository/UniSetManager.cc
src/ObjectRepository/UniSetManager_LT.cc
src/ObjectRepository/UniSetObject.cc
src/ObjectRepository/UniSetObject_LT.cc
src/ObjectRepository/UniSetTypes.cc
src/Processes/IOController.cc
src/Processes/IONotifyController.cc
src/Processes/IONotifyController_LT.cc
src/Processes/Makefile.am
src/Processes/NCRestorer.cc
src/Processes/NCRestorer_XML.cc
src/Services/DBServer.cc
src/Services/Makefile.am
src/Timers/Makefile.am
src/Timers/PassiveCondTimer.cc
src/Timers/PassiveSigTimer.cc
src/Timers/PassiveTimer.cc
src/Timers/WaitingPassiveTimer.cc
src/Various/Configuration.1.cc
src/Various/Configuration.cc
src/Various/LT_Object.cc
src/Various/Makefile.am
src/Various/MessageType.cc
src/Various/Mutex.cc
src/Various/Restorer_XML.cc
src/Various/RunLock.cc
src/Various/SMonitor.cc
src/Various/SViewer.cc
src/Various/UniXML.cc
src/Various/WDTInterface.cc
src/Makefile.am
tests/UniXmlTest/Makefile.am
tests/UniXmlTest/XmlTest.cc
tests/valgrind-reports/tests_with_conf.sh.32206.valgrind.xml
tests/valgrind-reports/tests_with_conf.sh.32207.valgrind.xml
tests/valgrind-reports/tests_with_conf.sh.32213.valgrind.xml
tests/valgrind-reports/tests_with_conf.sh.32215.valgrind.xml
tests/valgrind-reports/tests_with_conf.sh.32216.valgrind.xml
tests/valgrind-reports/tests_with_conf.sh.32219.valgrind.xml
tests/valgrind-reports/tests_with_conf.sh.32220.valgrind.xml
tests/int_unsigned.cc
tests/Makefile.am
tests/test.xml
tests/test_callbacktimer.cc
tests/test_conftest.cc
tests/test_delaytimer.cc
tests/test_dlog.cc
tests/test_hourglass.cc
tests/test_iorfile.cc
tests/test_messagetype.cc
tests/test_modbustypes.cc
tests/test_mutex.cc
tests/test_passivecondtimer.cc
tests/test_passivetimer.cc
tests/test_pulse.cc
tests/test_sscanf_hex.cc
tests/test_trigger.cc
tests/test_triggerAND.cc
tests/test_triggerOR.cc
tests/test_triggerOUT.cc
tests/test_ui.cc
tests/test_unixml.cc
tests/test_utypes.cc
tests/tests-junit.xml
tests/tests.cc
tests/tests_bad_config.xml
tests/tests_no_objectsmap.xml
tests/tests_no_uniset_section.xml
tests/tests_unixml.xml
tests/tests_unixml_badfile.xml
tests/tests_with_conf.cc
tests/tests_with_conf.xml
tests/threadtst.cc
tests/umutex.cc
testsuite/Makefile.am
Utilities/Admin/admin.cc
Utilities/Admin/Makefile.am
Utilities/Admin/test.xml
Utilities/codegen/tests/Makefile.am
Utilities/codegen/tests/test.xml
Utilities/codegen/tests/testgen-alone.src.xml
Utilities/codegen/tests/TestGen-main.cc
Utilities/codegen/tests/TestGen.cc
Utilities/codegen/tests/TestGen.h
Utilities/codegen/tests/testgen.src.xml
Utilities/codegen/tests/TestGen_SK.cc
Utilities/codegen/tests/TestGen_SK.h
Utilities/codegen/tests/TestGenAlone-main.cc
Utilities/codegen/tests/TestGenAlone.cc
Utilities/codegen/tests/TestGenAlone.h
Utilities/codegen/tests/TestGenAlone_SK.cc
Utilities/codegen/tests/TestGenAlone_SK.h
Utilities/codegen/tests/uobject.src.xml
Utilities/codegen/tests/UObject_SK.cc
Utilities/codegen/tests/UObject_SK.h
Utilities/codegen/Makefile.am
Utilities/codegen/skel-main.cc
Utilities/codegen/skel-Makefile.am
Utilities/codegen/skel.cc
Utilities/codegen/skel.h
Utilities/codegen/skel.src.xml
Utilities/MBTester/Makefile.am
Utilities/MBTester/mbrtuslave.cc
Utilities/MBTester/mbrtutester.cc
Utilities/MBTester/MBSlave.cc
Utilities/MBTester/mbslave.cc
Utilities/MBTester/MBSlave.h
Utilities/MBTester/mbtcpserver.cc
Utilities/MBTester/MBTCPServer.cc
Utilities/MBTester/MBTCPServer.h
Utilities/MBTester/mbtcptester.cc
Utilities/NullController/main.cc
Utilities/NullController/Makefile.am
Utilities/NullController/NullController.cc
Utilities/NullController/NullController.h
Utilities/NullController/test.xml
Utilities/scripts/Makefile.am
Utilities/SImitator/main.cc
Utilities/SImitator/Makefile.am
Utilities/SImitator/test.xml
Utilities/SMonit/Makefile.am
Utilities/SMonit/smonitor.cc
Utilities/SMonit/test.xml
Utilities/SViewer-text/main.cc
Utilities/SViewer-text/Makefile.am
Utilities/SViewer-text/test.xml
Utilities/ULog/log-stdin.cc
Utilities/ULog/log-wrap.cc
Utilities/ULog/log.cc
Utilities/ULog/log2val.cc
Utilities/ULog/logserver.cc
Utilities/ULog/Makefile.am
Utilities/Makefile.am
libUniSet2.pc.in
Makefile.am
uniset-config.h
\ No newline at end of file
.
extensions/DBServer-MySQL
extensions/DBServer-SQLite
extensions/include
extensions/IOControl
extensions/LogicProcessor
extensions/ModbusMaster
extensions/ModbusMaster/tests
extensions/ModbusSlave
extensions/RRDServer
extensions/SharedMemory
extensions/SMDBServer
extensions/SMViewer
extensions/tests
extensions/tests/SMemoryTest
extensions/UNetUDP
extensions/UniNetwork
include
include/modbus
python/lib/pyUniSet
src/Log
Utilities/codegen
Utilities/codegen/tests
Utilities/MBTester
Utilities/NullController
\ No newline at end of file
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