Commit 3301571b authored by Pavel Vainerman's avatar Pavel Vainerman

Merge branch 'master' of git.eter:/projects/asu/uniset

parents 22cd8783 79ee4184
...@@ -13,9 +13,6 @@ ...@@ -13,9 +13,6 @@
- Сделать ObjectIndex_ArrayXML. т.е. использовать vector, при этом считывая индексы из XML. - Сделать ObjectIndex_ArrayXML. т.е. использовать vector, при этом считывая индексы из XML.
- Везде где используется sstream и вызов str(), надо делать ss.rdbuf()->freeze(0);
(http://www.intuit.ru/department/pl/cpp/17/2.html)
- (IONotifyController): Разработать механизм заказа переодических уведомлений (msec), независимо от того, менялись ли датчики.. - (IONotifyController): Разработать механизм заказа переодических уведомлений (msec), независимо от того, менялись ли датчики..
- (IONotifyController): Разработать механизм заказа группы датчиков сразу (и ответ тоже группой) - (IONotifyController): Разработать механизм заказа группы датчиков сразу (и ответ тоже группой)
......
...@@ -6,7 +6,8 @@ uniset_mbrtutest_SOURCES = mbrtutester.cc ...@@ -6,7 +6,8 @@ uniset_mbrtutest_SOURCES = mbrtutester.cc
uniset_mbrtutest_LDADD = $(top_builddir)/lib/libUniSet.la uniset_mbrtutest_LDADD = $(top_builddir)/lib/libUniSet.la
uniset_mbtcptest_SOURCES = mbtcptester.cc uniset_mbtcptest_SOURCES = mbtcptester.cc
uniset_mbtcptest_LDADD = $(top_builddir)/lib/libUniSet.la uniset_mbtcptest_LDADD = $(top_builddir)/lib/libUniSet.la $(COMCPP_LIBS)
uniset_mbtcptest_CPPFLAGS = $(COMCPP_CFLAGS)
uniset_mbrtuslave_echo_SOURCES = MBSlave.cc mbrtuslave.cc uniset_mbrtuslave_echo_SOURCES = MBSlave.cc mbrtuslave.cc
uniset_mbrtuslave_echo_LDADD = $(top_builddir)/lib/libUniSet.la $(SIGC_LIBS) uniset_mbrtuslave_echo_LDADD = $(top_builddir)/lib/libUniSet.la $(SIGC_LIBS)
......
...@@ -10,6 +10,7 @@ using namespace std; ...@@ -10,6 +10,7 @@ using namespace std;
static void short_usage() static void short_usage()
{ {
cout << "Usage: uniset-nullController" cout << "Usage: uniset-nullController"
<< "--confile configure.xml. По умолчанию: configure.xml." << endl
<< " --name ObjectId [--confile configure.xml] [--askfile filename] \n" << " --name ObjectId [--confile configure.xml] [--askfile filename] \n"
<< " --s-filter-field name - поле для фильтрования списка датчиков\n" << " --s-filter-field name - поле для фильтрования списка датчиков\n"
<< " --s-filter-value value - значение для поля фильтрования списка датчиков \n" << " --s-filter-value value - значение для поля фильтрования списка датчиков \n"
......
...@@ -8,6 +8,7 @@ using namespace UniSetTypes; ...@@ -8,6 +8,7 @@ using namespace UniSetTypes;
void help_print() void help_print()
{ {
cout << endl; cout << endl;
cout << "--confile configure.xml. По умолчанию: configure.xml." << endl;
cout << "--sid id1@Node1,id2,..,idXX@NodeXX - Аналоговые датчики (AI,AO)" << endl; cout << "--sid id1@Node1,id2,..,idXX@NodeXX - Аналоговые датчики (AI,AO)" << endl;
cout << endl; cout << endl;
cout << "--min val - Нижняя граница датчика. По умолчанию 0" << endl; cout << "--min val - Нижняя граница датчика. По умолчанию 0" << endl;
......
...@@ -4,7 +4,7 @@ ulimit -Sc 1000000 ...@@ -4,7 +4,7 @@ ulimit -Sc 1000000
#for i in `seq 1 20`; #for i in `seq 1 20`;
#do #do
uniset-start.sh -f ./uniset-simitator --confile test.xml --sid 10@localhost,9@3002 uniset-start.sh -f ./uniset-simitator --confile test.xml --sid 34
#done #done
#wait #wait
......
...@@ -13,6 +13,15 @@ ...@@ -13,6 +13,15 @@
<xsl:when test="$iotype='AI'">long</xsl:when> <xsl:when test="$iotype='AI'">long</xsl:when>
</xsl:choose> </xsl:choose>
</xsl:template> </xsl:template>
<xsl:template name="gettype">
<xsl:param name="iotype"/>
<xsl:choose>
<xsl:when test="$iotype='DO'">UniversalIO::DigitalOutput</xsl:when>
<xsl:when test="$iotype='DI'">UniversalIO::DigitalInput</xsl:when>
<xsl:when test="$iotype='AO'">UniversalIO::AnalogOutput</xsl:when>
<xsl:when test="$iotype='AI'">UniversalIO::AnalogInput</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template name="setprefix"> <xsl:template name="setprefix">
<xsl:choose> <xsl:choose>
...@@ -433,6 +442,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::waitSM( int wait_msec, ObjectId _te ...@@ -433,6 +442,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::waitSM( int wait_msec, ObjectId _te
<xsl:if test="normalize-space(@const)!=''"> <xsl:if test="normalize-space(@const)!=''">
<xsl:if test="normalize-space(@type)='int'"><xsl:value-of select="normalize-space(@name)"/>(0),</xsl:if> <xsl:if test="normalize-space(@type)='int'"><xsl:value-of select="normalize-space(@name)"/>(0),</xsl:if>
<xsl:if test="normalize-space(@type)='float'"><xsl:value-of select="normalize-space(@name)"/>(0),</xsl:if> <xsl:if test="normalize-space(@type)='float'"><xsl:value-of select="normalize-space(@name)"/>(0),</xsl:if>
<xsl:if test="normalize-space(@type)='double'"><xsl:value-of select="normalize-space(@name)"/>(0),</xsl:if>
<xsl:if test="normalize-space(@type)='bool'"><xsl:value-of select="normalize-space(@name)"/>(false),</xsl:if> <xsl:if test="normalize-space(@type)='bool'"><xsl:value-of select="normalize-space(@name)"/>(false),</xsl:if>
<xsl:if test="normalize-space(@type)='str'"><xsl:value-of select="normalize-space(@name)"/>(""),</xsl:if> <xsl:if test="normalize-space(@type)='str'"><xsl:value-of select="normalize-space(@name)"/>(""),</xsl:if>
</xsl:if> </xsl:if>
...@@ -444,6 +454,9 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::waitSM( int wait_msec, ObjectId _te ...@@ -444,6 +454,9 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::waitSM( int wait_msec, ObjectId _te
<xsl:if test="normalize-space(@type)='float'"> <xsl:if test="normalize-space(@type)='float'">
<xsl:value-of select="normalize-space(@name)"/>(atof( init3_str(conf->getArgParam("--<xsl:value-of select="../@arg_prefix"/><xsl:value-of select="@name"/>"),conf->getProp(cnode,"<xsl:value-of select="@name"/>"),"<xsl:value-of select="normalize-space(@default)"/>").c_str())), <xsl:value-of select="normalize-space(@name)"/>(atof( init3_str(conf->getArgParam("--<xsl:value-of select="../@arg_prefix"/><xsl:value-of select="@name"/>"),conf->getProp(cnode,"<xsl:value-of select="@name"/>"),"<xsl:value-of select="normalize-space(@default)"/>").c_str())),
</xsl:if> </xsl:if>
<xsl:if test="normalize-space(@type)='double'">
<xsl:value-of select="normalize-space(@name)"/>(atof( init3_str(conf->getArgParam("--<xsl:value-of select="../@arg_prefix"/><xsl:value-of select="@name"/>"),conf->getProp(cnode,"<xsl:value-of select="@name"/>"),"<xsl:value-of select="normalize-space(@default)"/>").c_str())),
</xsl:if>
<xsl:if test="normalize-space(@type)='bool'"> <xsl:if test="normalize-space(@type)='bool'">
<xsl:value-of select="normalize-space(@name)"/>(uni_atoi( init3_str(conf->getArgParam("--<xsl:value-of select="../@arg_prefix"/><xsl:value-of select="@name"/>"),conf->getProp(cnode,"<xsl:value-of select="@name"/>"),"<xsl:value-of select="normalize-space(@default)"/>"))), <xsl:value-of select="normalize-space(@name)"/>(uni_atoi( init3_str(conf->getArgParam("--<xsl:value-of select="../@arg_prefix"/><xsl:value-of select="@name"/>"),conf->getProp(cnode,"<xsl:value-of select="@name"/>"),"<xsl:value-of select="normalize-space(@default)"/>"))),
</xsl:if> </xsl:if>
...@@ -589,15 +602,27 @@ end_private(false) ...@@ -589,15 +602,27 @@ end_private(false)
<xsl:if test="normalize-space(@no_check_id)!='1'"> <xsl:if test="normalize-space(@no_check_id)!='1'">
if( <xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId ) if( <xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId )
throw Exception( myname + ": Not found ID for (<xsl:value-of select="@name"/>) " + conf->getProp(cnode,"<xsl:value-of select="@name"/>") ); throw Exception( myname + ": Not found ID for (<xsl:value-of select="@name"/>) " + conf->getProp(cnode,"<xsl:value-of select="@name"/>") );
<xsl:if test="normalize-space(@no_check_iotype)!='1'">
if( conf->getIOType( <xsl:value-of select="normalize-space(@name)"/> ) != <xsl:call-template name="gettype"><xsl:with-param name="iotype" select="@iotype"/></xsl:call-template> )
{
ostringstream err;
err &lt;&lt; myname &lt;&lt; "(init): Invalid 'iotype' for '<xsl:value-of select="normalize-space(@name)"/>' set '<xsl:value-of select="normalize-space(@iotype)"/>' but "
&lt;&lt; conf->getProp(cnode,"<xsl:value-of select="normalize-space(@name)"/>") &lt;&lt; "='" &lt;&lt; conf->getIOType( <xsl:value-of select="normalize-space(@name)"/> ) &lt;&lt; "'";
throw Exception( err.str() );
}
</xsl:if>
</xsl:if> </xsl:if>
if( node_<xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId ) if( node_<xsl:value-of select="normalize-space(@name)"/> == UniSetTypes::DefaultObjectId )
{ {
<xsl:if test="normalize-space(@no_check_id)!='1'">
if( !conf->getProp(cnode,"node_<xsl:value-of select="normalize-space(@name)"/>").empty() ) if( !conf->getProp(cnode,"node_<xsl:value-of select="normalize-space(@name)"/>").empty() )
throw Exception( myname + ": Not found NodeID for (node='node_<xsl:value-of select="normalize-space(@name)"/>') " + conf->getProp(cnode,"node_<xsl:value-of select="normalize-space(@name)"/>") ); throw Exception( myname + ": Not found NodeID for (node='node_<xsl:value-of select="normalize-space(@name)"/>') " + conf->getProp(cnode,"node_<xsl:value-of select="normalize-space(@name)"/>") );
</xsl:if>
node_<xsl:value-of select="normalize-space(@name)"/> = conf->getLocalNode(); node_<xsl:value-of select="normalize-space(@name)"/> = conf->getLocalNode();
} }
</xsl:for-each> </xsl:for-each>
<xsl:for-each select="//msgmap/item"> <xsl:for-each select="//msgmap/item">
......
...@@ -86,6 +86,8 @@ class <xsl:value-of select="$CLASSNAME"/>_SK: ...@@ -86,6 +86,8 @@ class <xsl:value-of select="$CLASSNAME"/>_SK:
</xsl:if> </xsl:if>
<xsl:if test="normalize-space(@type)='float'">float <xsl:value-of select="@name"/>; /*!&lt; <xsl:value-of select="@comment"/> */ <xsl:if test="normalize-space(@type)='float'">float <xsl:value-of select="@name"/>; /*!&lt; <xsl:value-of select="@comment"/> */
</xsl:if> </xsl:if>
<xsl:if test="normalize-space(@type)='double'">double <xsl:value-of select="@name"/>; /*!&lt; <xsl:value-of select="@comment"/> */
</xsl:if>
<xsl:if test="normalize-space(@type)='bool'">bool <xsl:value-of select="@name"/>; /*!&lt; <xsl:value-of select="@comment"/> */ <xsl:if test="normalize-space(@type)='bool'">bool <xsl:value-of select="@name"/>; /*!&lt; <xsl:value-of select="@comment"/> */
</xsl:if> </xsl:if>
<xsl:if test="normalize-space(@type)='str'">std::string <xsl:value-of select="@name"/>; /*!&lt; <xsl:value-of select="@comment"/> */ <xsl:if test="normalize-space(@type)='str'">std::string <xsl:value-of select="@name"/>; /*!&lt; <xsl:value-of select="@comment"/> */
...@@ -106,6 +108,8 @@ class <xsl:value-of select="$CLASSNAME"/>_SK: ...@@ -106,6 +108,8 @@ class <xsl:value-of select="$CLASSNAME"/>_SK:
</xsl:if> </xsl:if>
<xsl:if test="normalize-space(@type)='float'">float <xsl:value-of select="@name"/>; /*!&lt; <xsl:value-of select="@comment"/> */ <xsl:if test="normalize-space(@type)='float'">float <xsl:value-of select="@name"/>; /*!&lt; <xsl:value-of select="@comment"/> */
</xsl:if> </xsl:if>
<xsl:if test="normalize-space(@type)='double'">double <xsl:value-of select="@name"/>; /*!&lt; <xsl:value-of select="@comment"/> */
</xsl:if>
<xsl:if test="normalize-space(@type)='bool'">bool <xsl:value-of select="@name"/>; /*!&lt; <xsl:value-of select="@comment"/> */ <xsl:if test="normalize-space(@type)='bool'">bool <xsl:value-of select="@name"/>; /*!&lt; <xsl:value-of select="@comment"/> */
</xsl:if> </xsl:if>
<xsl:if test="normalize-space(@type)='str'">std::string <xsl:value-of select="@name"/>; /*!&lt; <xsl:value-of select="@comment"/> */ <xsl:if test="normalize-space(@type)='str'">std::string <xsl:value-of select="@name"/>; /*!&lt; <xsl:value-of select="@comment"/> */
...@@ -127,6 +131,8 @@ class <xsl:value-of select="$CLASSNAME"/>_SK: ...@@ -127,6 +131,8 @@ class <xsl:value-of select="$CLASSNAME"/>_SK:
</xsl:if> </xsl:if>
<xsl:if test="normalize-space(@type)='float'">float <xsl:value-of select="@name"/>; /*!&lt; <xsl:value-of select="@comment"/> */ <xsl:if test="normalize-space(@type)='float'">float <xsl:value-of select="@name"/>; /*!&lt; <xsl:value-of select="@comment"/> */
</xsl:if> </xsl:if>
<xsl:if test="normalize-space(@type)='double'">double <xsl:value-of select="@name"/>; /*!&lt; <xsl:value-of select="@comment"/> */
</xsl:if>
<xsl:if test="normalize-space(@type)='bool'">bool <xsl:value-of select="@name"/>; /*!&lt; <xsl:value-of select="@comment"/> */ <xsl:if test="normalize-space(@type)='bool'">bool <xsl:value-of select="@name"/>; /*!&lt; <xsl:value-of select="@comment"/> */
</xsl:if> </xsl:if>
<xsl:if test="normalize-space(@type)='str'">std::string <xsl:value-of select="@name"/>; /*!&lt; <xsl:value-of select="@comment"/> */ <xsl:if test="normalize-space(@type)='str'">std::string <xsl:value-of select="@name"/>; /*!&lt; <xsl:value-of select="@comment"/> */
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
<item name="test_int" type="int" min="0" comment="test int variable" const="1" public="1"/> <item name="test_int" type="int" min="0" comment="test int variable" const="1" public="1"/>
<item name="test_int2" type="int" max="100" default="110" no_range_exception="1"/> <item name="test_int2" type="int" max="100" default="110" no_range_exception="1"/>
<item name="test_float" type="float" max="100.0" default="50.0" /> <item name="test_float" type="float" max="100.0" default="50.0" />
<item name="test_double" type="double" max="100.340" default="52.044" />
<item name="test_bool" type="bool" private="1"/> <item name="test_bool" type="bool" private="1"/>
<item name="test_str" type="str" default="ddd"/> <item name="test_str" type="str" default="ddd"/>
</variables> </variables>
......
...@@ -2,12 +2,12 @@ ...@@ -2,12 +2,12 @@
%define oname uniset %define oname uniset
Name: libuniset Name: libuniset
Version: 1.3 Version: 1.4
Release: alt18 Release: alt5
Summary: UniSet - library for building distributed industrial control systems Summary: UniSet - library for building distributed industrial control systems
License: GPL License: GPL
Group: Development/C++ Group: Development/C++
Url: http://sourceforge.net/uniset Url: http://git.etersoft.ru/projects/?p=asu/uniset.git;a=summary
Packager: Pavel Vainerman <pv@altlinux.ru> Packager: Pavel Vainerman <pv@altlinux.ru>
...@@ -183,7 +183,7 @@ rm -f %buildroot%_libdir/*.la ...@@ -183,7 +183,7 @@ rm -f %buildroot%_libdir/*.la
%_libdir/libUniSetRT*.so.* %_libdir/libUniSetRT*.so.*
%_libdir/libUniSetShared*.so.* %_libdir/libUniSetShared*.so.*
%_libdir/libUniSetNetwork*.so.* %_libdir/libUniSetNetwork*.so.*
%_libdir/libUniSetUNet2*.so.* %_libdir/libUniSetUNetUDP*.so.*
#%_libdir/libUniSetSMDBServer*.so.* #%_libdir/libUniSetSMDBServer*.so.*
%files extensions-devel %files extensions-devel
...@@ -195,7 +195,7 @@ rm -f %buildroot%_libdir/*.la ...@@ -195,7 +195,7 @@ rm -f %buildroot%_libdir/*.la
%_libdir/libUniSetRT*.so %_libdir/libUniSetRT*.so
%_libdir/libUniSetShared*.so %_libdir/libUniSetShared*.so
%_libdir/libUniSetNetwork.so %_libdir/libUniSetNetwork.so
%_libdir/libUniSetUNet2.so %_libdir/libUniSetUNetUDP.so
#%_libdir/libUniSetSMDBServer.so #%_libdir/libUniSetSMDBServer.so
%_pkgconfigdir/*Extensions.pc %_pkgconfigdir/*Extensions.pc
%_pkgconfigdir/libUniSetIO*.pc %_pkgconfigdir/libUniSetIO*.pc
...@@ -213,6 +213,26 @@ rm -f %buildroot%_libdir/*.la ...@@ -213,6 +213,26 @@ rm -f %buildroot%_libdir/*.la
%changelog %changelog
* Thu Jun 14 2012 Pavel Vainerman <pv@altlinux.ru> 1.4-alt5
- (codegen): fixed bug in validation 'iotype'
* Sun Jun 10 2012 Pavel Vainerman <pv@altlinux.ru> 1.4-alt4
- (codegen): added validation 'iotype'
* Sun Jun 10 2012 Pavel Vainerman <pv@altlinux.ru> 1.4-alt3
- (DBServer_MySQL): buffer is added to query
* Fri Jun 08 2012 Pavel Vainerman <pv@altlinux.ru> 1.4-alt2
- added support type 'double' for uniset-codegen (<variables>)
* Thu May 31 2012 Pavel Vainerman <pv@altlinux.ru> 1.4-alt1
- rename unet2 -->unetudp
- release version 1.4
* Thu May 31 2012 Pavel Vainerman <pv@altlinux.ru> 1.3-alt19
- DBServer: set log info level - LEVEL9
- minor fixies for linker errors (new gcc)
* Tue Apr 10 2012 Pavel Vainerman <pv@altlinux.ru> 1.3-alt18 * Tue Apr 10 2012 Pavel Vainerman <pv@altlinux.ru> 1.3-alt18
- fixed bug in ComPort485F (reinit function) - fixed bug in ComPort485F (reinit function)
......
...@@ -85,7 +85,7 @@ ...@@ -85,7 +85,7 @@
textname - текстовое имя датчика textname - текстовое имя датчика
--> -->
<nodes port="2809" unet_broadcast_ip="192.168.1.255" unet_broadcast_ip2="192.168.122.255"> <nodes port="2809" unet_broadcast_ip="192.168.1.255" unet_broadcast_ip2="192.168.122.255">
<item id="3000" infserver="InfoServer" ip="127.0.0.1" name="LocalhostNode" textname="Локальный узел" unet_ignore="0" unet_port="2048"> <item id="3000" dbserver="DBServer1" infserver="InfoServer" ip="127.0.0.1" name="LocalhostNode" textname="Локальный узел" unet_ignore="0" unet_port="2048">
<iocards> <iocards>
<item card="1" name="DI32"/> <item card="1" name="DI32"/>
<item card="2" name="DO32"/> <item card="2" name="DO32"/>
...@@ -159,7 +159,7 @@ ...@@ -159,7 +159,7 @@
<!-- ******************* Идентификаторы сервисов ***************** --> <!-- ******************* Идентификаторы сервисов ***************** -->
<services name="Services"> <services name="Services">
<item id="5010" name="InfoServer"/> <item id="5010" name="InfoServer"/>
<item id="5011" name="DBServer"/> <item id="5011" name="DBServer1"/>
<item id="5012" name="PrintServer"/> <item id="5012" name="PrintServer"/>
<item id="5013" name="TimeService"/> <item id="5013" name="TimeService"/>
</services> </services>
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# See doc: http://www.gnu.org/software/hello/manual/autoconf/Generic-Programs.html # See doc: http://www.gnu.org/software/hello/manual/autoconf/Generic-Programs.html
# AC_PREREQ(2.59) # AC_PREREQ(2.59)
AC_INIT([uniset], [1.3.0], pv@etersoft.ru) AC_INIT([uniset], [1.4.0], pv@etersoft.ru)
AM_INIT_AUTOMAKE(AC_PACKAGE_NAME,AC_PACKAGE_VERSION) AM_INIT_AUTOMAKE(AC_PACKAGE_NAME,AC_PACKAGE_VERSION)
# AC_CONFIG_MACRO_DIR([m4]) # AC_CONFIG_MACRO_DIR([m4])
...@@ -30,7 +30,7 @@ AC_ENABLE_SHARED(yes) ...@@ -30,7 +30,7 @@ AC_ENABLE_SHARED(yes)
AC_ENABLE_STATIC(no) AC_ENABLE_STATIC(no)
AM_PROG_LIBTOOL AM_PROG_LIBTOOL
LIBVER=1:3:0 LIBVER=1:4:0
AC_SUBST(LIBVER) AC_SUBST(LIBVER)
# Checks for libraries. # Checks for libraries.
...@@ -189,8 +189,8 @@ AC_CONFIG_FILES([Makefile ...@@ -189,8 +189,8 @@ AC_CONFIG_FILES([Makefile
extensions/SMViewer/Makefile extensions/SMViewer/Makefile
extensions/UniNetwork/Makefile extensions/UniNetwork/Makefile
extensions/UniNetwork/libUniSetNetwork.pc extensions/UniNetwork/libUniSetNetwork.pc
extensions/UNet2/Makefile extensions/UNetUDP/Makefile
extensions/UNet2/libUniSetUNet2.pc extensions/UNetUDP/libUniSetUNetUDP.pc
extensions/SharedMemory/Makefile extensions/SharedMemory/Makefile
extensions/SharedMemory/libUniSetSharedMemory.pc extensions/SharedMemory/libUniSetSharedMemory.pc
extensions/SharedMemoryPlus/Makefile extensions/SharedMemoryPlus/Makefile
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#define DBServer_MySQL_H_ #define DBServer_MySQL_H_
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
#include <map> #include <map>
#include <queue>
#include "UniSetTypes.h" #include "UniSetTypes.h"
#include "DBInterface.h" #include "DBInterface.h"
#include "DBServer.h" #include "DBServer.h"
...@@ -35,6 +36,7 @@ ...@@ -35,6 +36,7 @@
- \ref sec_DBS_Comm - \ref sec_DBS_Comm
- \ref sec_DBS_Conf - \ref sec_DBS_Conf
- \ref sec_DBS_Tables - \ref sec_DBS_Tables
- \ref sec_DBS_Buffer
\section sec_DBS_Comm Общее описание работы DBServer_MySQL \section sec_DBS_Comm Общее описание работы DBServer_MySQL
...@@ -50,8 +52,9 @@ ...@@ -50,8 +52,9 @@
\par \par
Для повышения надежности DBServer переодически ( DBServer_MySQL::PingTimer ) проверяет наличие связи с сервером БД. Для повышения надежности DBServer переодически ( DBServer_MySQL::PingTimer ) проверяет наличие связи с сервером БД.
В случае если связь пропала (или не была установлена при старте) DBServer пытается вновь переодически ( DBServer::ReconnectTimer ) В случае если связь пропала (или не была установлена при старте) DBServer пытается вновь каждые DBServer::ReconnectTimer
произвести соединение. При этом все запросы которые поступают для запии в БД, пишутся в лог-файл. произвести соединение. При этом все запросы которые поступают для запии в БД, но не мгут быть записаны складываются
в буфер (см. \ref sec_DBS_Buffer).
\warning При каждой попытке восстановить соединение DBServer заново читает конф. файл. Поэтому он может подхватить \warning При каждой попытке восстановить соединение DBServer заново читает конф. файл. Поэтому он может подхватить
новые настройки. новые настройки.
...@@ -68,7 +71,17 @@ ...@@ -68,7 +71,17 @@
- \b pingTime - период проверки связи с сервером MySQL - \b pingTime - период проверки связи с сервером MySQL
- \b reconnectTime - время повторной попытки соединения с БД - \b reconnectTime - время повторной попытки соединения с БД
\section sec_DBS_Buffer Защита от потери данных
Для того, чтобы на момент отсутствия связи с БД данные по возможности не потерялись,
сделан "кольцевой" буфер. Размер которго можно регулировать параметром "--dbserver-buffer-size"
или параметром \b bufferSize=".." в конфигурационном файле секции "<LocalDBSErver...>".
Механизм построен на том, что если связь с mysql сервером отсутствует или пропала,
то сообщения помещаются в колевой буфер, который "опустошается" как только она восстановится.
Если связь не восстановилась, а буфер достиг максимального заданного размера, то удаляются
более ранние сообщения. Эту логику можно сменить, если указать параметр "--dbserver-buffer-last-remove"
или \b bufferLastRemove="1", то терятся будут сообщения добавляемые в конец.
\section sec_DBS_Tables Таблицы MySQL \section sec_DBS_Tables Таблицы MySQL
К основным таблицам относятся следующие: К основным таблицам относятся следующие:
\code \code
...@@ -138,6 +151,8 @@ class DBServer_MySQL: ...@@ -138,6 +151,8 @@ class DBServer_MySQL:
DBServer_MySQL(); DBServer_MySQL();
~DBServer_MySQL(); ~DBServer_MySQL();
static const Debug::type DBLogInfoLevel = Debug::LEVEL9;
protected: protected:
typedef std::map<int, std::string> DBTableMap; typedef std::map<int, std::string> DBTableMap;
...@@ -166,8 +181,9 @@ class DBServer_MySQL: ...@@ -166,8 +181,9 @@ class DBServer_MySQL:
enum Timers enum Timers
{ {
PingTimer, /*!< таймер на переодическую проверку соединения с сервером БД */ PingTimer, /*!< таймер на переодическую проверку соединения с сервером БД */
ReconnectTimer /*!< таймер на повторную попытку соединения с сервером БД (или восстановления связи) */ ReconnectTimer, /*!< таймер на повторную попытку соединения с сервером БД (или восстановления связи) */
lastNumberOfTimer
}; };
...@@ -178,6 +194,15 @@ class DBServer_MySQL: ...@@ -178,6 +194,15 @@ class DBServer_MySQL:
bool activate; bool activate;
typedef std::queue<std::string> QueryBuffer;
QueryBuffer qbuf;
unsigned int qbufSize; // размер буфера сообщений.
bool lastRemove;
void flushBuffer();
UniSetTypes::uniset_mutex mqbuf;
private: private:
DBTableMap tblMap; DBTableMap tblMap;
......
...@@ -2,4 +2,7 @@ ...@@ -2,4 +2,7 @@
ulimit -Sc 1000000 ulimit -Sc 1000000
uniset-start.sh -f ./uniset-mysql-dbserver --confile test.xml --name DBServer --unideb-add-levels info,crit,warn,level9,system uniset-start.sh -f ./uniset-mysql-dbserver --confile test.xml --name DBServer1 \
--unideb-add-levels info,crit,warn,level9,system \
--dbserver-buffer-size 100
...@@ -6,9 +6,9 @@ UIO_VER=@LIBVER@ ...@@ -6,9 +6,9 @@ UIO_VER=@LIBVER@
lib_LTLIBRARIES = libUniSetIOControl.la lib_LTLIBRARIES = libUniSetIOControl.la
libUniSetIOControl_la_LDFLAGS = -version-info $(UIO_VER) libUniSetIOControl_la_LDFLAGS = -version-info $(UIO_VER)
libUniSetIOControl_la_LIBADD = $(COMEDI_LIBS) $(SIGC_LIBS) \ libUniSetIOControl_la_LIBADD = $(COMEDI_LIBS) $(SIGC_LIBS) \
$(top_builddir)/extensions/lib/libUniSetExtensions.la \ $(top_builddir)/extensions/lib/libUniSetExtensions.la \
$(top_builddir)/lib/libUniSet.la \ $(top_builddir)/lib/libUniSet.la \
$(top_builddir)/extensions/SharedMemory/libUniSetSharedMemory.la $(top_builddir)/extensions/SharedMemory/libUniSetSharedMemory.la
libUniSetIOControl_la_CXXFLAGS = $(COMEDI_CFLAGS) $(SIGC_CFLAGS) \ libUniSetIOControl_la_CXXFLAGS = $(COMEDI_CFLAGS) $(SIGC_CFLAGS) \
-I$(top_builddir)/extensions/include \ -I$(top_builddir)/extensions/include \
...@@ -16,7 +16,9 @@ libUniSetIOControl_la_CXXFLAGS = $(COMEDI_CFLAGS) $(SIGC_CFLAGS) \ ...@@ -16,7 +16,9 @@ libUniSetIOControl_la_CXXFLAGS = $(COMEDI_CFLAGS) $(SIGC_CFLAGS) \
libUniSetIOControl_la_SOURCES = ComediInterface.cc IOControl.cc libUniSetIOControl_la_SOURCES = ComediInterface.cc IOControl.cc
@PACKAGE@_iocontrol_LDADD = libUniSetIOControl.la $(COMEDI_LIBS) @PACKAGE@_iocontrol_LDADD = libUniSetIOControl.la \
$(top_builddir)/lib/libUniSet.la \
$(top_builddir)/extensions/lib/libUniSetExtensions.la $(COMEDI_LIBS)
@PACKAGE@_iocontrol_CXXFLAGS = $(COMEDI_CFLAGS) $(SIGC_CFLAGS) \ @PACKAGE@_iocontrol_CXXFLAGS = $(COMEDI_CFLAGS) $(SIGC_CFLAGS) \
-I$(top_builddir)/extensions/include \ -I$(top_builddir)/extensions/include \
-I$(top_builddir)/extensions/SharedMemory -I$(top_builddir)/extensions/SharedMemory
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
if HAVE_EXTENTIONS if HAVE_EXTENTIONS
SUBDIRS = lib include SharedMemory IOControl LogicProcessor \ SUBDIRS = lib include SharedMemory IOControl LogicProcessor \
ModbusMaster ModbusSlave SMViewer UniNetwork UNet2 DBServer-MySQL tests ModbusMaster ModbusSlave SMViewer UniNetwork UNetUDP DBServer-MySQL tests
#SMDBServer #SMDBServer
#SharedMemoryPlus #SharedMemoryPlus
#UDPExchange #UDPExchange
......
...@@ -11,7 +11,7 @@ lib_LTLIBRARIES = libUniSetMBTCPMaster.la libUniSetRTU.la ...@@ -11,7 +11,7 @@ lib_LTLIBRARIES = libUniSetMBTCPMaster.la libUniSetRTU.la
# -------------------- Mobus TCP ------------------- # -------------------- Mobus TCP -------------------
# не забывайте править версию в pc-файле # не забывайте править версию в pc-файле
UMBTCP_VER=1:3:1 UMBTCP_VER=@LIBVER@
libUniSetMBTCPMaster_la_LDFLAGS = -version-info $(UMBTCP_VER) libUniSetMBTCPMaster_la_LDFLAGS = -version-info $(UMBTCP_VER)
......
bin_PROGRAMS = @PACKAGE@-mbslave bin_PROGRAMS = @PACKAGE@-mbslave
# не забывайте править версию в pc-файле # не забывайте править версию в pc-файле
UMBS_VER=1:1:1 UMBS_VER=@LIBVER@
lib_LTLIBRARIES = libUniSetMBSlave.la lib_LTLIBRARIES = libUniSetMBSlave.la
libUniSetMBSlave_la_LDFLAGS = -version-info $(UMBS_VER) libUniSetMBSlave_la_LDFLAGS = -version-info $(UMBS_VER)
......
...@@ -12,7 +12,8 @@ libUniSetSharedMemory_la_CPPFLAGS = $(SIGC_CFLAGS) -I$(top_builddir)/extensions/ ...@@ -12,7 +12,8 @@ libUniSetSharedMemory_la_CPPFLAGS = $(SIGC_CFLAGS) -I$(top_builddir)/extensions/
libUniSetSharedMemory_la_SOURCES = SharedMemory.cc libUniSetSharedMemory_la_SOURCES = SharedMemory.cc
@PACKAGE@_smemory_LDADD = libUniSetSharedMemory.la @PACKAGE@_smemory_LDADD = libUniSetSharedMemory.la $(top_builddir)/lib/libUniSet.la \
$(top_builddir)/extensions/lib/libUniSetExtensions.la
@PACKAGE@_smemory_CPPFLAGS = $(SIGC_CFLAGS) -I$(top_builddir)/extensions/include @PACKAGE@_smemory_CPPFLAGS = $(SIGC_CFLAGS) -I$(top_builddir)/extensions/include
@PACKAGE@_smemory_SOURCES = smemory.cc @PACKAGE@_smemory_SOURCES = smemory.cc
......
...@@ -132,10 +132,11 @@ SharedMemory::SharedMemory( ObjectId id, string datafile, std::string confname ) ...@@ -132,10 +132,11 @@ SharedMemory::SharedMemory( ObjectId id, string datafile, std::string confname )
if( !t.empty() ) if( !t.empty() )
{ {
iotypePulsar = UniSetTypes::getIOType(t); iotypePulsar = UniSetTypes::getIOType(t);
if( iotypePulsar == UniversalIO::UnknownIOType ) if( iotypePulsar == UniversalIO::UnknownIOType ||
iotypePulsar == UniversalIO::AnalogInput || iotypePulsar == UniversalIO::AnalogOutput )
{ {
ostringstream err; ostringstream err;
err << myname << ": Unknown iotype '" << t << "' for pulsar. Must be 'DI' or 'DO'"; err << myname << ": Invalid iotype '" << t << "' for pulsar. Must be 'DI' or 'DO'";
dlog[Debug::CRIT] << myname << "(init): " << err.str() << endl; dlog[Debug::CRIT] << myname << "(init): " << err.str() << endl;
throw SystemError(err.str()); throw SystemError(err.str());
} }
...@@ -527,59 +528,6 @@ bool SharedMemory::readItem( UniXML& xml, UniXML_iterator& it, xmlNode* sec ) ...@@ -527,59 +528,6 @@ bool SharedMemory::readItem( UniXML& xml, UniXML_iterator& it, xmlNode* sec )
return true; return true;
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void SharedMemory::localSaveValue( AIOStateList::iterator& it, const IOController_i::SensorInfo& si,
CORBA::Long newvalue, UniSetTypes::ObjectId sup_id )
{
if( hist.empty() )
{
IONotifyController_LT::localSaveValue( it, si, newvalue, sup_id );
return;
}
uniset_mutex_lock l(hbmutex);
IONotifyController_LT::localSaveValue( it, si, newvalue, sup_id );
}
// ------------------------------------------------------------------------------------------
void SharedMemory::localSaveState( DIOStateList::iterator& it, const IOController_i::SensorInfo& si,
CORBA::Boolean newstate, UniSetTypes::ObjectId sup_id )
{
if( hist.empty() )
{
IONotifyController_LT::localSaveState( it, si, newstate, sup_id );
return;
}
uniset_mutex_lock l(hbmutex);
IONotifyController_LT::localSaveState( it, si, newstate, sup_id );
}
// ------------------------------------------------------------------------------------------
void SharedMemory::localSetState( DIOStateList::iterator& it, const IOController_i::SensorInfo& si,
CORBA::Boolean newstate, UniSetTypes::ObjectId sup_id )
{
if( hist.empty() )
{
IONotifyController_LT::localSetState( it, si, newstate, sup_id );
return;
}
uniset_mutex_lock l(hbmutex);
IONotifyController_LT::localSetState( it, si, newstate, sup_id );
}
// ------------------------------------------------------------------------------------------
void SharedMemory::localSetValue( AIOStateList::iterator& it, const IOController_i::SensorInfo& si,
CORBA::Long value, UniSetTypes::ObjectId sup_id )
{
if( hist.empty() )
{
IONotifyController_LT::localSetValue( it, si, value, sup_id );
return;
}
uniset_mutex_lock l(hbmutex);
IONotifyController_LT::localSetValue( it, si, value, sup_id );
}
// ------------------------------------------------------------------------------------------
SharedMemory* SharedMemory::init_smemory( int argc, const char* const* argv ) SharedMemory* SharedMemory::init_smemory( int argc, const char* const* argv )
{ {
string dfile = conf->getArgParam("--datfile", conf->getConfFileName()); string dfile = conf->getArgParam("--datfile", conf->getConfFileName());
......
...@@ -351,16 +351,6 @@ class SharedMemory: ...@@ -351,16 +351,6 @@ class SharedMemory:
virtual void askSensors( UniversalIO::UIOCommand cmd ); virtual void askSensors( UniversalIO::UIOCommand cmd );
virtual void sendEvent( UniSetTypes::SystemMessage& sm ); virtual void sendEvent( UniSetTypes::SystemMessage& sm );
virtual void localSaveValue( AIOStateList::iterator& it, const IOController_i::SensorInfo& si,
CORBA::Long newvalue, UniSetTypes::ObjectId sup_id );
virtual void localSaveState( DIOStateList::iterator& it, const IOController_i::SensorInfo& si,
CORBA::Boolean newstate, UniSetTypes::ObjectId sup_id );
virtual void localSetState( DIOStateList::iterator& it, const IOController_i::SensorInfo& si,
CORBA::Boolean newstate, UniSetTypes::ObjectId sup_id );
virtual void localSetValue( AIOStateList::iterator& it, const IOController_i::SensorInfo& si,
CORBA::Long value, UniSetTypes::ObjectId sup_id );
// действия при завершении работы // действия при завершении работы
virtual void sigterm( int signo ); virtual void sigterm( int signo );
bool activateObject(); bool activateObject();
...@@ -413,7 +403,6 @@ class SharedMemory: ...@@ -413,7 +403,6 @@ class SharedMemory:
typedef std::list<HeartBeatInfo> HeartBeatList; typedef std::list<HeartBeatInfo> HeartBeatList;
HeartBeatList hlist; // список датчиков "сердцебиения" HeartBeatList hlist; // список датчиков "сердцебиения"
UniSetTypes::uniset_mutex hbmutex;
WDTInterface* wdt; WDTInterface* wdt;
bool activated; bool activated;
bool workready; bool workready;
......
bin_PROGRAMS = @PACKAGE@-unetexchange @PACKAGE@-unet2-tester
# не забывайте править версию в pc-файле
UNET2_VER=@LIBVER@
lib_LTLIBRARIES = libUniSetUNet2.la
libUniSetUNet2_la_LDFLAGS = -version-info $(UNET2_VER)
libUniSetUNet2_la_LIBADD = $(top_builddir)/lib/libUniSet.la \
$(top_builddir)/extensions/SharedMemory/libUniSetSharedMemory.la \
$(top_builddir)/extensions/lib/libUniSetExtensions.la \
$(SIGC_LIBS) $(COMCPP_LIBS)
libUniSetUNet2_la_CXXFLAGS = -I$(top_builddir)/extensions/include -I$(top_builddir)/extensions/SharedMemory $(SIGC_CFLAGS) $(COMCPP_CFLAGS)
libUniSetUNet2_la_SOURCES = UDPPacket.cc UNetReceiver.cc UNetSender.cc UNetExchange.cc
@PACKAGE@_unetexchange_SOURCES = unetexchange.cc
@PACKAGE@_unetexchange_LDADD = libUniSetUNet2.la $(top_builddir)/lib/libUniSet.la \
$(top_builddir)/extensions/SharedMemory/libUniSetSharedMemory.la \
$(top_builddir)/extensions/lib/libUniSetExtensions.la \
$(SIGC_LIBS) $(COMCPP_LIBS)
@PACKAGE@_unetexchange_CXXFLAGS = -I$(top_builddir)/extensions/include -I$(top_builddir)/extensions/SharedMemory $(SIGC_CFLAGS) $(COMCPP_CFLAGS)
@PACKAGE@_unet2_tester_SOURCES = UDPPacket.cc unet2-tester.cc
@PACKAGE@_unet2_tester_LDADD = $(COMCPP_LIBS)
@PACKAGE@_unet2_tester_CXXFLAGS = $(COMCPP_CFLAGS)
# install
devel_include_HEADERS = *.h
devel_includedir = $(pkgincludedir)/extensions
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libUniSetUNet2.pc
all-local:
ln -sf ../UNet2/$(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_PROGRAMS = @PACKAGE@-unetexchange @PACKAGE@-unet-udp-tester
# не забывайте править версию в pc-файле
UNETUDP_VER=@LIBVER@
lib_LTLIBRARIES = libUniSetUNetUDP.la
libUniSetUNetUDP_la_LDFLAGS = -version-info $(UNETUDP_VER)
libUniSetUNetUDP_la_LIBADD = $(top_builddir)/lib/libUniSet.la \
$(top_builddir)/extensions/SharedMemory/libUniSetSharedMemory.la \
$(top_builddir)/extensions/lib/libUniSetExtensions.la \
$(SIGC_LIBS) $(COMCPP_LIBS)
libUniSetUNetUDP_la_CXXFLAGS = -I$(top_builddir)/extensions/include -I$(top_builddir)/extensions/SharedMemory $(SIGC_CFLAGS) $(COMCPP_CFLAGS)
libUniSetUNetUDP_la_SOURCES = UDPPacket.cc UNetReceiver.cc UNetSender.cc UNetExchange.cc
@PACKAGE@_unetexchange_SOURCES = unetexchange.cc
@PACKAGE@_unetexchange_LDADD = libUniSetUNetUDP.la $(top_builddir)/lib/libUniSet.la \
$(top_builddir)/extensions/SharedMemory/libUniSetSharedMemory.la \
$(top_builddir)/extensions/lib/libUniSetExtensions.la \
$(SIGC_LIBS) $(COMCPP_LIBS)
@PACKAGE@_unetexchange_CXXFLAGS = -I$(top_builddir)/extensions/include -I$(top_builddir)/extensions/SharedMemory $(SIGC_CFLAGS) $(COMCPP_CFLAGS)
@PACKAGE@_unet_udp_tester_SOURCES = UDPPacket.cc unet-udp-tester.cc
@PACKAGE@_unet_udp_tester_LDADD = $(COMCPP_LIBS)
@PACKAGE@_unet_udp_tester_CXXFLAGS = $(COMCPP_CFLAGS)
# install
devel_include_HEADERS = *.h
devel_includedir = $(pkgincludedir)/extensions
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libUniSetUNetUDP.pc
all-local:
ln -sf ../UNetUDP/$(devel_include_HEADERS) ../include
...@@ -15,13 +15,13 @@ ...@@ -15,13 +15,13 @@
#include "UNetSender.h" #include "UNetSender.h"
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
/*! /*!
\page pageUNetExchange2 Сетевой обмен на основе UDP (UNet2) \page pageUNetExchangeUDP Сетевой обмен на основе UDP (UNetUDP)
- \ref pgUnet2_Common - \ref pgUNetUDP_Common
- \ref pgUnet2_Conf - \ref pgUNetUDP_Conf
- \ref pgUnet2_Reserv - \ref pgUNetUDP_Reserv
\section pgUnet2_Common Общее описание \section pgUNetUDP_Common Общее описание
Обмен построен на основе протокола UDP. Обмен построен на основе протокола UDP.
Основная идея заключается в том, что каждый узел на порту равном своему ID Основная идея заключается в том, что каждый узел на порту равном своему ID
посылает в сеть UDP-пакеты содержащие данные считанные из локальной SM. Формат данных - это набор посылает в сеть UDP-пакеты содержащие данные считанные из локальной SM. Формат данных - это набор
...@@ -32,9 +32,9 @@ ...@@ -32,9 +32,9 @@
При своём старте процесс считывает из секции \<nodes> список узлов с которыми необходимо При своём старте процесс считывает из секции \<nodes> список узлов с которыми необходимо
вести обмен, а также параметры своего узла. Открывает по потоку приёма на каждый узел и поток вести обмен, а также параметры своего узла. Открывает по потоку приёма на каждый узел и поток
передачи для своих данных. Помимо этого такие же потоки для резервных каналов, если они включены передачи для своих данных. Помимо этого такие же потоки для резервных каналов, если они включены
(см. \ref pgUnet2_Reserv ). (см. \ref pgUNetUDP_Reserv ).
\section pgUnet2_Conf Пример конфигурирования \section pgUNetUDP_Conf Пример конфигурирования
По умолчанию при считывании используется \b unet_broadcast_ip (указанный в секции \<nodes>) По умолчанию при считывании используется \b unet_broadcast_ip (указанный в секции \<nodes>)
и \b id узла - в качестве порта. и \b id узла - в качестве порта.
Но можно переопределять эти параметры, при помощи указания \b unet_port и/или \b unet_broadcast_ip, Но можно переопределять эти параметры, при помощи указания \b unet_port и/или \b unet_broadcast_ip,
...@@ -51,7 +51,7 @@ ...@@ -51,7 +51,7 @@
</nodes> </nodes>
\endcode \endcode
\section pgUnet2_Reserv Настройка резервного канала связи \section pgUNetUDP_Reserv Настройка резервного канала связи
В текущей реализации поддерживается возможность обмена по двум подсетям (эзернет-каналам). В текущей реализации поддерживается возможность обмена по двум подсетям (эзернет-каналам).
Она основана на том, что, для каждого узла помимо основного "читателя", Она основана на том, что, для каждого узла помимо основного "читателя",
создаётся дополнительный "читатель"(поток) слушающий другой ip-адрес и порт. создаётся дополнительный "читатель"(поток) слушающий другой ip-адрес и порт.
......
...@@ -3,9 +3,9 @@ exec_prefix=@exec_prefix@ ...@@ -3,9 +3,9 @@ exec_prefix=@exec_prefix@
libdir=@libdir@ libdir=@libdir@
includedir=@includedir@ includedir=@includedir@
Name: libUniSetUNet2 Name: libUniSetUNetUDP
Description: Support library for UniSetUNet2 Description: Support library for UniSetUNetUDP
Requires: libUniSetExtensions Requires: libUniSetExtensions
Version: @VERSION@ Version: @VERSION@
Libs: -L${libdir} -lUniSetUNet2 Libs: -L${libdir} -lUniSetUNetUDP
Cflags: -I${includedir}/uniset Cflags: -I${includedir}/uniset
../../Utilities/scripts/uniset-stop.sh
\ No newline at end of file
../../conf/test.xml
\ No newline at end of file
../../Utilities/scripts/uniset-functions.sh
\ No newline at end of file
../../Utilities/scripts/uniset-start.sh
\ No newline at end of file
...@@ -5,7 +5,7 @@ UNET_VER=@LIBVER@ ...@@ -5,7 +5,7 @@ UNET_VER=@LIBVER@
lib_LTLIBRARIES = libUniSetNetwork.la lib_LTLIBRARIES = libUniSetNetwork.la
libUniSetNetwork_la_LDFLAGS = -version-info $(UNET_VER) libUniSetNetwork_la_LDFLAGS = -version-info $(UNET_VER)
libUniSetNetwork_la_LIBADD = $(SIGC_LIBS) $(top_builddir)/lib/libUniSet.la \ libUniSetNetwork_la_LIBADD = $(SIGC_LIBS) $(top_builddir)/lib/libUniSet.la \
$(top_builddir)/extensions/lib/libUniSetExtensions.la \ $(top_builddir)/extensions/lib/libUniSetExtensions.la \
$(top_builddir)/extensions/SharedMemory/libUniSetSharedMemory.la $(top_builddir)/extensions/SharedMemory/libUniSetSharedMemory.la
libUniSetNetwork_la_CPPFLAGS = $(SIGC_CFLAGS) \ libUniSetNetwork_la_CPPFLAGS = $(SIGC_CFLAGS) \
...@@ -13,7 +13,9 @@ libUniSetNetwork_la_CPPFLAGS = $(SIGC_CFLAGS) \ ...@@ -13,7 +13,9 @@ libUniSetNetwork_la_CPPFLAGS = $(SIGC_CFLAGS) \
-I$(top_builddir)/extensions/SharedMemory -I$(top_builddir)/extensions/SharedMemory
libUniSetNetwork_la_SOURCES = UniExchange.cc libUniSetNetwork_la_SOURCES = UniExchange.cc
@PACKAGE@_network_LDADD = libUniSetNetwork.la @PACKAGE@_network_LDADD = libUniSetNetwork.la \
$(top_builddir)/lib/libUniSet.la \
$(top_builddir)/extensions/lib/libUniSetExtensions.la
@PACKAGE@_network_CPPFLAGS = $(SIGC_CFLAGS) -I$(top_builddir)/extensions/include @PACKAGE@_network_CPPFLAGS = $(SIGC_CFLAGS) -I$(top_builddir)/extensions/include
@PACKAGE@_network_SOURCES = uninet.cc @PACKAGE@_network_SOURCES = uninet.cc
......
...@@ -482,7 +482,7 @@ bool UniExchange::initItem( UniXML_iterator& it ) ...@@ -482,7 +482,7 @@ bool UniExchange::initItem( UniXML_iterator& it )
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void UniExchange::help_print( int argc, const char** argv ) void UniExchange::help_print( int argc, const char** argv )
{ {
cout << "--unet-polltime msec - Пауза между опросаом карт. По умолчанию 200 мсек." << endl; cout << "--unet-polltime msec - Пауза между опросами узлов. По умолчанию 200 мсек." << endl;
// cout << "--unet-heartbeat-id - Данный процесс связан с указанным аналоговым heartbeat-дачиком." << endl; // cout << "--unet-heartbeat-id - Данный процесс связан с указанным аналоговым heartbeat-дачиком." << endl;
// cout << "--unet-heartbeat-max - Максимальное значение heartbeat-счётчика для данного процесса. По умолчанию 10." << endl; // cout << "--unet-heartbeat-max - Максимальное значение heartbeat-счётчика для данного процесса. По умолчанию 10." << endl;
cout << "--unet-sm-ready-timeout - время на ожидание старта SM" << endl; cout << "--unet-sm-ready-timeout - время на ожидание старта SM" << endl;
......
...@@ -32,12 +32,13 @@ ...@@ -32,12 +32,13 @@
#include <assert.h> #include <assert.h>
#include <string> #include <string>
#include <cstddef>
#include <libxml/parser.h> #include <libxml/parser.h>
#include <libxml/tree.h> #include <libxml/tree.h>
// --------------------------------------------------------------------------
class UniXML_iterator:
class UniXML_iterator : public std::iterator<std::bidirectional_iterator_tag, xmlNode, ptrdiff_t, xmlNode*, xmlNode&> public std::iterator<std::bidirectional_iterator_tag, xmlNode, ptrdiff_t,xmlNode*, xmlNode&>
{ {
public: public:
UniXML_iterator(xmlNode* node) : UniXML_iterator(xmlNode* node) :
...@@ -121,12 +122,12 @@ class UniXML_iterator : public std::iterator<std::bidirectional_iterator_tag, xm ...@@ -121,12 +122,12 @@ class UniXML_iterator : public std::iterator<std::bidirectional_iterator_tag, xm
protected: protected:
xmlNode* curNode; xmlNode* curNode;
}; };
// --------------------------------------------------------------------------
class UniXML class UniXML
{ {
public: public:
typedef UniXML_iterator iterator; typedef UniXML_iterator iterator;
inline xmlNode* getFirstNode() inline xmlNode* getFirstNode()
{ {
...@@ -212,5 +213,5 @@ protected: ...@@ -212,5 +213,5 @@ protected:
static int recur; static int recur;
}; };
// --------------------------------------------------------------------------
#endif #endif
...@@ -23,7 +23,7 @@ eval $(head -n1 $PCFILE) ...@@ -23,7 +23,7 @@ eval $(head -n1 $PCFILE)
test -d "$prefix" || exit 1 test -d "$prefix" || exit 1
export PKG_CONFIG_PATH=$EXPORTPATH:$EXPORTPATH/extensions:$EXPORTPATH/extensions/SharedMemory:$EXPORTPATH/extensions/UniNetwork:$PKG_CONFIG_PATH export PKG_CONFIG_PATH=$EXPORTPATH:$EXPORTPATH/extensions:$EXPORTPATH/extensions/SharedMemory:$EXPORTPATH/extensions/UniNetwork:$EXPORTPATH/extensions/LogicProcessor:$EXPORTPATH/extensions/UNetUDP:$EXPORTPATH/extensions/DBServer-MySQL:$PKG_CONFIG_PATH
cflags() cflags()
{ {
...@@ -69,7 +69,7 @@ EXFILE="$EXPORTPATH/extensions/ModbusSlave libUniSetMBSlave.pc" ...@@ -69,7 +69,7 @@ EXFILE="$EXPORTPATH/extensions/ModbusSlave libUniSetMBSlave.pc"
export UNISET_EXT_MBS_CFLAGS="$( ext_cflags $EXFILE )" export UNISET_EXT_MBS_CFLAGS="$( ext_cflags $EXFILE )"
export UNISET_EXT_MBS_LIBS="$( ext_libs $EXFILE )" export UNISET_EXT_MBS_LIBS="$( ext_libs $EXFILE )"
EXFILE="$EXPORTPATH/extensions/MBTCPMaster libUniSetMBTCPMaster.pc" EXFILE="$EXPORTPATH/extensions/ModbusMaster libUniSetMBTCPMaster.pc"
export UNISET_EXT_MBM_CFLAGS="$( ext_cflags $EXFILE )" export UNISET_EXT_MBM_CFLAGS="$( ext_cflags $EXFILE )"
export UNISET_EXT_MBM_LIBS="$( ext_libs $EXFILE )" export UNISET_EXT_MBM_LIBS="$( ext_libs $EXFILE )"
...@@ -77,8 +77,20 @@ EXFILE="$EXPORTPATH/extensions/UniNetwork libUniSetNetwork.pc" ...@@ -77,8 +77,20 @@ EXFILE="$EXPORTPATH/extensions/UniNetwork libUniSetNetwork.pc"
export UNISET_EXT_NET_CFLAGS="$( ext_cflags $EXFILE )" export UNISET_EXT_NET_CFLAGS="$( ext_cflags $EXFILE )"
export UNISET_EXT_NET_LIBS="$( ext_libs $EXFILE )" export UNISET_EXT_NET_LIBS="$( ext_libs $EXFILE )"
EXFILE="$EXPORTPATH/extensions/RTUExchange libUniSetRTU.pc" EXFILE="$EXPORTPATH/extensions/UNetUDP libUniSetUNetUDP.pc"
export UNISET_EXT_UNETUDP_CFLAGS="$( ext_cflags $EXFILE )"
export UNISET_EXT_UNETUDP_LIBS="$( ext_libs $EXFILE )"
EXFILE="$EXPORTPATH/extensions/ModbusMaster libUniSetRTU.pc"
export UNISET_EXT_RTU_CFLAGS="$( ext_cflags $EXFILE )" export UNISET_EXT_RTU_CFLAGS="$( ext_cflags $EXFILE )"
export UNISET_EXT_RTU_LIBS="$( ext_libs $EXFILE )" export UNISET_EXT_RTU_LIBS="$( ext_libs $EXFILE )"
EXFILE="$EXPORTPATH/extensions/DBServer-MySQL libUniSetMySQL.pc"
export UNISET_EXT_MYSQL_CFLAGS="$( ext_cflags $EXFILE )"
export UNISET_EXT_MYSQL_LIBS="$( ext_libs $EXFILE )"
EXFILE="$EXPORTPATH/extensions/LogicProcessor libUniSetLogicProcessor.pc"
export UNISET_EXT_LP_CFLAGS="$( ext_cflags $EXFILE )"
export UNISET_EXT_LP_LIBS="$( ext_libs $EXFILE )"
export UNISET_CODEGEN="sh $EXPORTPATH/Utilities/codegen/uniset-codegen --path $EXPORTPATH/Utilities/codegen" export UNISET_CODEGEN="sh $EXPORTPATH/Utilities/codegen/uniset-codegen --path $EXPORTPATH/Utilities/codegen"
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