Commit c6a97f32 authored by Pavel Vainerman's avatar Pavel Vainerman

доперенёс потерянные изменения из 1.x

parent 8f9b2053
# This file is a part of the NCS project. (c) 1999-2002 All rights reserved.
# $Id: idl.mk,v 1.2 2006/10/14 16:53:22 vpashka Exp $
# Общий файл для IDL
# Нужно иметь в виду, что когда порождаемые omniidl файлы
# будут кем-либо изменены, они перегенерируются только
# при изменении исходного IDL
IDLFLAGS = -I$(top_builddir)/IDL
# Получения списков генерируемых файлов
HHTARG=$(patsubst %.idl, ${HHDIR}/%.hh, ${IDLFILES})
CCTARG=$(patsubst %.idl, ${CCDIR}/%SK.cc, ${IDLFILES})
########################################################################
all: ${HHTARG} ${CCTARG}
dynamic: all
${HHTARG} ${CCTARG}: ${IDLFILES}
for i in $^; do ${IDL} -v -bcxx ${IDLFLAGS} $$i; done
mv --target-directory=${HHDIR} *.hh
mv --target-directory=${CCDIR} *.cc
.PHONY: clean depend
clean:
${RM} ${HHTARG} ${CCTARG}
depend:
install:
......@@ -5,7 +5,5 @@
SUBDIRS = scripts Admin NullController SViewer-text \
SMonit MBTester codegen SImitator
include $(top_builddir)/conf/common.mk
......@@ -9,44 +9,17 @@
in - входные регистры (только для чтения)
out - выходные регистры (запись)
-->
<TestProc>
<Skel>
<settings>
<set name="class-name" val="TestProc"/>
<set name="msg-count" val="30"/>
<set name="class-name" val="Skel"/>
<set name="msg-count" val="20"/>
<set name="sleep-msec" val="150"/>
</settings>
<variables>
<item name="changeTime" type="int" default="2000" min="0" comment="change state time" const="1" public="1" />
<item name="checkWorkingTime" type="int" default="3000" min="0" comment="check working time" const="1" public="1" />
<item name="checkTime" type="int" default="3000" min="0" comment="check Working time" const="1" public="1" />
<item name="checkLogTime" type="int" default="2500" min="0" comment="Проверка управления логами" const="1" public="1" />
</variables>
<smap>
<!-- name - название переменной в конф. файле -->
<item name="on_s" vartype="in" comment="Тестовый вход" smTestID="1"/>
<item name="lamp_c" vartype="out" comment="Лампочка (тестовый выход)"/>
<!-- проверка работы механизма зависимостей -->
<item name="depend_c" vartype="out" comment="Датчик от которого зависит состояние другого"/>
<item name="d1_check_s" vartype="in" comment="состояние зависимого датчика"/>
<item name="d2_check_s" vartype="in" comment="состояние зависимого датчика"/>
<item name="set_d1_check_s" vartype="out" comment="для выставления датчика"/>
<item name="set_d2_check_s" vartype="out" comment="для выставления датчика"/>
<!-- проверка работы undefined state -->
<item name="undef_c" vartype="out" comment="аналоговый датчик (для проверки undef-состояния)"/>
<item name="check_undef_s" vartype="in" comment="датчик для выставления undef-состояния"/>
<!-- проверка работы threshold-ов -->
<item name="t_set_c" vartype="out" comment="аналоговый датчик (для выставления порога)"/>
<item name="t_check_s" vartype="in" comment="датчик для проверки срабатывания"/>
<!-- Проверка управления логами -->
<item name="log_c" vartype="out" comment="аналоговый датчик для выставления уровня логов"/>
<item name="log_s" vartype="in" comment="датчик для управления логами" loglevel="1"/>
</smap>
<msgmap>
<!-- name - название переменной в конф. файле -->
</msgmap>
</TestProc>
</Skel>
......@@ -4,23 +4,23 @@
из которых складывается библиотека, и которые используются во многих
местах данной документации. Здесь приводятся определения этих терминов.
- \ref sec_Cnpt_Object
- \ref sec_Cnpt_ObjectTypes
- \ref sec_Cnpt_Message
- \ref sec_Cnpt_ObjectId
- \ref sec_Cnpt_Repository
- \ref sec_Cnpt_Sensor
- \ref sec_Cnpt_Process
- \ref sec_Concept_Object
- \ref sec_Concept_ObjectTypes
- \ref sec_Concept_Message
- \ref sec_Concept_ObjectId
- \ref sec_Concept_Repository
- \ref sec_Concept_Sensor
- \ref sec_Concept_Process
\section sec_Cnpt_Object Объект
\section sec_Concept_Object Объект
В разных местах описаний, в зависимости от контекста,
под "объектом" подразумевается либо объект класса так или иначе наследующегося
от базового класса библиотеки UniSetObject, либо
некий концептуальный программный объект способный
получать и обрабатывать сообщения.
\section sec_Cnpt_ObjectTypes Основные типы объектов
\section sec_Concept_ObjectTypes Основные типы объектов
В библиотеке произведено условное деление на следующие типы объектов:
- (простые) объекты - наследуются от класса UniSetObject
- контроллеры - являются наследниками класса IOController
......@@ -28,7 +28,7 @@
- узлы - в строгом смысле, не являются объектами,
но обладают уникальным идентификатором.
\section sec_Cnpt_Message Сообщения
\section sec_Concept_Message Сообщения
Вся система взаимодейтсвия между объектами в основном
построена на использовании сообщений (передаваемых
путём удаленного вызова специальных функций,
......@@ -53,9 +53,9 @@ UniSetTypes::Message::TheLastFieldOfTypeOfMessage.
\endcode
\section sec_Cnpt_ObjectId Идентификатор объекта
\section sec_Concept_ObjectId Идентификатор объекта
Каждый объект, которому необходимо взаимодействовать с другими объектами
(в том числе датчиками см. \ref sec_Cnpt_Sensor) должен обладать уникальным
(в том числе датчиками см. \ref sec_Concept_Sensor) должен обладать уникальным
идентификатором. В качестве идентификатора выступает любое число типа \b UniSetTypes::ObjectId.
Зарезервированным числом является UniSetTypes::DefaultObjectId.
Минимальное требование - это уникальность в рамках одного узла.
......@@ -166,9 +166,9 @@ UniSetTypes::Message::TheLastFieldOfTypeOfMessage.
не сложными скриптами).
\section sec_Cnpt_Repository Репозиторий объектов
\section sec_Concept_Repository Репозиторий объектов
\section sec_Cnpt_Sensor Датчик
\section sec_Concept_Sensor Датчик
Датчик - это одно из базовых понятий при построении систем на основе libuniset.
Датчик - это информационная единица. Практически любая информация
(о событиях, о состоянии того или иного процесса, объекта, сообщение оператору и т.п.)
......@@ -191,7 +191,7 @@ UniSetTypes::Message::TheLastFieldOfTypeOfMessage.
на передачу цифровой информации (не текстовой).
Например CAN, ModbusRTU, ModbusTCP и т.п.
\section sec_Cnpt_Process Процесс
\section sec_Concept_Process Процесс
Под процессом в документации чаще всего подразумевается системный
процесс (запущенная программа) выполняющий те или иные функции управления
и обменивающийся для этого с другими процессами сообщениями или
......
......@@ -23,13 +23,13 @@ int main(int argc, const char **argv)
std::ostringstream logname;
string dir(conf->getLogDir());
logname << dir << logfilename;
unideb.logFile( logname.str() );
ulog.logFile( logname.str() );
dlog.logFile( logname.str() );
string schema = conf->getArgParam("--schema");
if( schema.empty() )
{
dlog[Debug::CRIT] << "schema-file not defined. Use --schema" << endl;
dcrit << "schema-file not defined. Use --schema" << endl;
return 1;
}
......
#!/bin/sh
ln -s -f ../../Utilities/scripts/uniset-start.sh
ln -s -f ../../Utilities/scripts/uniset-stop.sh stop.sh
ln -s -f ../../Utilities/scripts/uniset-functions.sh
ln -s -f ../../conf/test.xml test.xml
bin_PROGRAMS = @PACKAGE@-rtuexchange @PACKAGE@-mtr-conv @PACKAGE@-rtu188-state @PACKAGE@-vtconv @PACKAGE@-mtr-setup
# не забывайте править версию в pc-файле
URTU_VER=2:0:0
lib_LTLIBRARIES = libUniSetRTU.la
libUniSetRTU_la_LDFLAGS = -version-info $(URTU_VER)
libUniSetRTU_la_LIBADD = $(top_builddir)/lib/libUniSet.la \
$(top_builddir)/extensions/SharedMemory/libUniSetSharedMemory.la \
$(top_builddir)/extensions/lib/libUniSetExtensions.la \
$(top_builddir)/extensions/ModbusMaster/libMBMaster.la \
$(SIGC_LIBS)
libUniSetRTU_la_CXXFLAGS = -I$(top_builddir)/extensions/include -I$(top_builddir)/extensions/SharedMemory -I$(top_builddir)/extensions/ModbusMaster $(SIGC_CFLAGS)
libUniSetRTU_la_SOURCES = RTUExchange.cc
@PACKAGE@_rtuexchange_SOURCES = rtuexchange.cc
@PACKAGE@_rtuexchange_LDADD = libUniSetRTU.la $(top_builddir)/lib/libUniSet.la \
$(top_builddir)/extensions/SharedMemory/libUniSetSharedMemory.la \
$(top_builddir)/extensions/lib/libUniSetExtensions.la \
$(top_builddir)/extensions/ModbusMaster/libMBMaster.la \
$(SIGC_LIBS)
@PACKAGE@_rtuexchange_CXXFLAGS = -I$(top_builddir)/extensions/include -I$(top_builddir)/extensions/SharedMemory -I$(top_builddir)/extensions/ModbusMaster $(SIGC_CFLAGS)
@PACKAGE@_mtr_conv_SOURCES = mtrconv.cc
@PACKAGE@_mtr_conv_LDADD = $(top_builddir)/extensions/lib/libUniSetExtensions.la $(top_builddir)/lib/libUniSet.la
@PACKAGE@_mtr_conv_CXXFLAGS = -I$(top_builddir)/extensions/include
@PACKAGE@_mtr_setup_SOURCES = mtr-setup.cc
@PACKAGE@_mtr_setup_LDADD = $(top_builddir)/extensions/lib/libUniSetExtensions.la $(top_builddir)/lib/libUniSet.la
@PACKAGE@_mtr_setup_CXXFLAGS = -I$(top_builddir)/extensions/include
@PACKAGE@_vtconv_SOURCES = vtconv.cc
@PACKAGE@_vtconv_LDADD = $(top_builddir)/extensions/lib/libUniSetExtensions.la $(top_builddir)/lib/libUniSet.la
@PACKAGE@_vtconv_CXXFLAGS = -I$(top_builddir)/extensions/include
@PACKAGE@_rtu188_state_LDADD = libUniSetRTU.la \
$(top_builddir)/extensions/lib/libUniSetExtensions.la $(top_builddir)/lib/libUniSet.la \
$(top_builddir)/extensions/ModbusMaster/libMBMaster.la
@PACKAGE@_rtu188_state_CXXFLAGS = -I$(top_builddir)/extensions/include -I$(top_builddir)/extensions/ModbusMaster
@PACKAGE@_rtu188_state_SOURCES = rtustate.cc
# install
devel_include_HEADERS = *.h
devel_includedir = $(pkgincludedir)/extensions
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libUniSetRTU.pc
all-local:
ln -sf ../RTUExchange/$(devel_include_HEADERS) ../include
#!/bin/sh
ln -s -f ../../Utilities/scripts/uniset-start.sh
ln -s -f ../../Utilities/scripts/uniset-stop.sh stop.sh
ln -s -f ../../Utilities/scripts/uniset-functions.sh
ln -s -f ../../conf/test.xml test.xml
#!/bin/sh
ln -s -f ../../Utilities/scripts/uniset-start.sh
ln -s -f ../../Utilities/scripts/uniset-stop.sh stop.sh
ln -s -f ../../Utilities/scripts/uniset-functions.sh
ln -s -f ../../conf/test.xml test.xml
#include <sstream>
#include "ObjectsActivator.h"
#include "Extensions.h"
#include "UDPExchange.h"
// -----------------------------------------------------------------------------
using namespace std;
using namespace UniSetTypes;
using namespace UniSetExtensions;
// -----------------------------------------------------------------------------
int main( int argc, char** argv )
{
try
{
if( argc>1 && (!strcmp(argv[1],"--help") || !strcmp(argv[1],"-h")) )
{
cout << "--smemory-id objectName - SharedMemory objectID. Default: read from <SharedMemory>" << endl;
cout << "--confile filename - configuration file. Default: configure.xml" << endl;
cout << "--udp-logfile filename - logfilename. Default: udpexchange.log" << endl;
cout << endl;
UDPExchange::help_print(argc,argv);
return 0;
}
string confile=UniSetTypes::getArgParam("--confile",argc,argv,"configure.xml");
conf = new Configuration( argc, argv, confile );
string logfilename(conf->getArgParam("--udp-logfile"));
if( logfilename.empty() )
logfilename = "udpexchange.log";
conf->initDebug(dlog,"dlog");
std::ostringstream logname;
string dir(conf->getLogDir());
logname << dir << logfilename;
unideb.logFile( logname.str() );
dlog.logFile( logname.str() );
ObjectId shmID = DefaultObjectId;
string sID = conf->getArgParam("--smemory-id");
if( !sID.empty() )
shmID = conf->getControllerID(sID);
else
shmID = getSharedMemoryID();
if( shmID == DefaultObjectId )
{
cerr << sID << "? SharedMemoryID not found in " << conf->getControllersSection() << " section" << endl;
return 1;
}
UDPExchange* rs = UDPExchange::init_udpexchange(argc,argv,shmID);
if( !rs )
{
dlog[Debug::CRIT] << "(udpexchange): init не прошёл..." << endl;
return 1;
}
ObjectsActivator act;
act.addObject(static_cast<class UniSetObject*>(rs));
SystemMessage sm(SystemMessage::StartUp);
act.broadcast( sm.transport_msg() );
unideb(Debug::ANY) << "\n\n\n";
unideb[Debug::ANY] << "(main): -------------- UDP Exchange START -------------------------\n\n";
dlog(Debug::ANY) << "\n\n\n";
dlog[Debug::ANY] << "(main): -------------- UDP Exchange START -------------------------\n\n";
act.run(false);
// msleep(500);
// rs->execute();
return 0;
}
catch( Exception& ex )
{
dlog[Debug::CRIT] << "(udpexchange): " << ex << std::endl;
}
catch(...)
{
dlog[Debug::CRIT] << "(udpexchange): catch ..." << std::endl;
}
return 1;
}
#include <sstream>
#include "ObjectsActivator.h"
#include "Extensions.h"
#include "UDPReceiver.h"
// -----------------------------------------------------------------------------
using namespace std;
using namespace UniSetTypes;
using namespace UniSetExtensions;
// -----------------------------------------------------------------------------
int main( int argc, char** argv )
{
try
{
if( argc>1 && (!strcmp(argv[1],"--help") || !strcmp(argv[1],"-h")) )
{
cout << "--smemory-id objectName - SharedMemory objectID. Default: read from <SharedMemory>" << endl;
cout << "--confile filename - configuration file. Default: configure.xml" << endl;
cout << "--udp-logfile filename - logfilename. Default: udpexchange.log" << endl;
cout << endl;
UDPReceiver::help_print(argc,argv);
return 0;
}
string confile=UniSetTypes::getArgParam("--confile",argc,argv,"configure.xml");
conf = new Configuration( argc, argv, confile );
string logfilename(conf->getArgParam("--udp-logfile"));
if( logfilename.empty() )
logfilename = "udpexchange.log";
conf->initDebug(dlog,"dlog");
std::ostringstream logname;
string dir(conf->getLogDir());
logname << dir << logfilename;
unideb.logFile( logname.str() );
dlog.logFile( logname.str() );
ObjectId shmID = DefaultObjectId;
string sID = conf->getArgParam("--smemory-id");
if( !sID.empty() )
shmID = conf->getControllerID(sID);
else
shmID = getSharedMemoryID();
if( shmID == DefaultObjectId )
{
cerr << sID << "? SharedMemoryID not found in " << conf->getControllersSection() << " section" << endl;
return 1;
}
UDPReceiver* udp = UDPReceiver::init_udpreceiver(argc,argv,shmID);
if( !udp )
{
dlog[Debug::CRIT] << "(udpreceiver): init не прошёл..." << endl;
return 1;
}
ObjectsActivator act;
act.addObject(static_cast<class UniSetObject*>(udp));
SystemMessage sm(SystemMessage::StartUp);
act.broadcast( sm.transport_msg() );
unideb(Debug::ANY) << "\n\n\n";
unideb[Debug::ANY] << "(main): -------------- UDPRecevier START -------------------------\n\n";
dlog(Debug::ANY) << "\n\n\n";
dlog[Debug::ANY] << "(main): -------------- UDPReceiver START -------------------------\n\n";
act.run(false);
// msleep(500);
// rs->execute();
return 0;
}
catch( Exception& ex )
{
dlog[Debug::CRIT] << "(udpexchange): " << ex << std::endl;
}
catch( ost::SockException& e )
{
ostringstream s;
s << e.getString() << ": " << e.getSystemErrorString();
dlog[Debug::CRIT] << s.str() << endl;
}
catch(...)
{
dlog[Debug::CRIT] << "(udpexchange): catch ..." << std::endl;
}
return 1;
}
#include <sstream>
#include "ObjectsActivator.h"
#include "Extensions.h"
#include "UDPSender.h"
// -----------------------------------------------------------------------------
using namespace std;
using namespace UniSetTypes;
using namespace UniSetExtensions;
// -----------------------------------------------------------------------------
int main( int argc, char** argv )
{
try
{
if( argc>1 && (!strcmp(argv[1],"--help") || !strcmp(argv[1],"-h")) )
{
cout << "--smemory-id objectName - SharedMemory objectID. Default: read from <SharedMemory>" << endl;
cout << "--confile filename - configuration file. Default: configure.xml" << endl;
cout << "--udp-logfile filename - logfilename. Default: udpexchange.log" << endl;
cout << endl;
UDPSender::help_print(argc,argv);
return 0;
}
string confile=UniSetTypes::getArgParam("--confile",argc,argv,"configure.xml");
conf = new Configuration( argc, argv, confile );
string logfilename(conf->getArgParam("--udp-logfile"));
if( logfilename.empty() )
logfilename = "udpexchange.log";
conf->initDebug(dlog,"dlog");
std::ostringstream logname;
string dir(conf->getLogDir());
logname << dir << logfilename;
unideb.logFile( logname.str() );
dlog.logFile( logname.str() );
ObjectId shmID = DefaultObjectId;
string sID = conf->getArgParam("--smemory-id");
if( !sID.empty() )
shmID = conf->getControllerID(sID);
else
shmID = getSharedMemoryID();
if( shmID == DefaultObjectId )
{
cerr << sID << "? SharedMemoryID not found in " << conf->getControllersSection() << " section" << endl;
return 1;
}
UDPSender* udp = UDPSender::init_udpsender(argc,argv,shmID);
if( !udp )
{
dlog[Debug::CRIT] << "(udpsender): init не прошёл..." << endl;
return 1;
}
ObjectsActivator act;
act.addObject(static_cast<class UniSetObject*>(udp));
SystemMessage sm(SystemMessage::StartUp);
act.broadcast( sm.transport_msg() );
unideb(Debug::ANY) << "\n\n\n";
unideb[Debug::ANY] << "(main): -------------- UDPSender START -------------------------\n\n";
dlog(Debug::ANY) << "\n\n\n";
dlog[Debug::ANY] << "(main): -------------- UDPSender START -------------------------\n\n";
act.run(false);
// msleep(500);
// rs->execute();
return 0;
}
catch( Exception& ex )
{
dlog[Debug::CRIT] << "(udpsender): " << ex << std::endl;
}
catch( ost::SockException& e )
{
dlog[Debug::CRIT] << "(udpsender): " << e.getSystemErrorString() << endl;
}
catch(...)
{
dlog[Debug::CRIT] << "(udpsender): catch ..." << std::endl;
}
return 1;
}
......@@ -2,7 +2,7 @@
START=uniset2-start.sh
${START} -f ./smemory-test --confile test.xml --dlog-add-levels level1 --localNode LocalhostNode $*
${START} -f ./smemory-test --confile ./test.xml --dlog-add-levels level1 --localNode LocalhostNode $*
#--ulog-add-levels crit,warn,info
......
<?xml version="1.0" encoding="utf-8"?>
<!--
name - название класса
msgcount - сколько сообщений обрабатывается за один раз
sleep_msec - пауза между итерациями в работе процесса
type
====
in - входные регистры (только для чтения)
out - выходные регистры (запись)
-->
<TestProc>
<settings>
<set name="class-name" val="TestProc"/>
<set name="msg-count" val="30"/>
<set name="sleep-msec" val="150"/>
</settings>
<variables>
<item name="changeTime" type="int" default="2000" min="0" comment="change state time" const="1" public="1" />
<item name="checkWorkingTime" type="int" default="3000" min="0" comment="check working time" const="1" public="1" />
<item name="checkTime" type="int" default="3000" min="0" comment="check Working time" const="1" public="1" />
<item name="checkLogTime" type="int" default="2500" min="0" comment="Проверка управления логами" const="1" public="1" />
</variables>
<smap>
<!-- name - название переменной в конф. файле -->
<item name="on_s" vartype="in" comment="Тестовый вход" smTestID="1"/>
<item name="lamp_c" vartype="out" comment="Лампочка (тестовый выход)"/>
<!-- проверка работы механизма зависимостей -->
<item name="depend_c" vartype="out" comment="Датчик от которого зависит состояние другого"/>
<item name="d1_check_s" vartype="in" comment="состояние зависимого датчика"/>
<item name="d2_check_s" vartype="in" comment="состояние зависимого датчика"/>
<item name="set_d1_check_s" vartype="out" comment="для выставления датчика"/>
<item name="set_d2_check_s" vartype="out" comment="для выставления датчика"/>
<!-- проверка работы undefined state -->
<item name="undef_c" vartype="out" comment="аналоговый датчик (для проверки undef-состояния)"/>
<item name="check_undef_s" vartype="in" comment="датчик для выставления undef-состояния"/>
<!-- проверка работы threshold-ов -->
<item name="t_set_c" vartype="out" comment="аналоговый датчик (для выставления порога)"/>
<item name="t_check_s" vartype="in" comment="датчик для проверки срабатывания"/>
<!-- Проверка управления логами -->
<item name="log_c" vartype="out" comment="аналоговый датчик для выставления уровня логов"/>
<item name="log_s" vartype="in" comment="датчик для управления логами" loglevel="1"/>
</smap>
<msgmap>
</msgmap>
</TestProc>
......@@ -21,8 +21,8 @@
* \author Pavel Vainerman
*/
// --------------------------------------------------------------------------
# ifndef CallBackTimer_TEMPLATE_H_
# define CallBackTimer_TEMPLATE_H_
# ifndef CallBackTimer_TCC_H_
# define CallBackTimer_TCC_H_
// --------------------------------------------------------------------------
#include <unistd.h>
#include <sstream>
......@@ -180,4 +180,4 @@ int CallBackTimer<Caller>::getCurrent( int id )
}
// ------------------------------------------------------------------------------------------
# endif //CallBackTimer_H_
# endif //CallBackTimer_TCC_H_
......@@ -8,7 +8,5 @@ libProcesses_la_LIBADD = $(SIGC_LIBS)
libProcesses_la_SOURCES = IOController_iSK.cc IOController.cc IONotifyController.cc IONotifyController_LT.cc \
NCRestorer.cc NCRestorer_XML.cc
include $(top_builddir)/conf/setting.mk
local-clean:
rm -rf *iSK.cc
\ No newline at end of file
......@@ -6,7 +6,5 @@ libServices_la_CPPFLAGS = $(SIGC_CFLAGS)
libServices_la_LIBADD = $(SIGC_LIBS)
libServices_la_SOURCES = DBServer.cc
include $(top_builddir)/conf/setting.mk
local-clean:
rm -rf *iSK.cc
\ No newline at end of file
......@@ -50,6 +50,3 @@ dlog_SOURCES = dlog.cc
dlog_LDADD = $(top_builddir)/lib/libUniSet2.la ${SIGC_LIBS} $(COMCPP_LIBS)
dlog_CPPFLAGS = -I$(top_builddir)/include ${SIGC_CFLAGS} $(COMCPP_CFLAGS)
include $(top_builddir)/conf/setting.mk
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