Commit cfe0364f authored by Pavel Vainerman's avatar Pavel Vainerman

(Modbus): переименовал ModbusTCPMultiSlave --> ModbusTCPPersistentSlave,

попытка решить проблемму с высокой загрузкой процессора при подключении клиентов
parent efa9ec05
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
Name: libuniset2 Name: libuniset2
Version: 2.1 Version: 2.1
Release: alt18 Release: alt19
Summary: UniSet - library for building distributed industrial control systems Summary: UniSet - library for building distributed industrial control systems
...@@ -456,6 +456,9 @@ mv -f %buildroot%python_sitelibdir_noarch/* %buildroot%python_sitelibdir/%oname ...@@ -456,6 +456,9 @@ mv -f %buildroot%python_sitelibdir_noarch/* %buildroot%python_sitelibdir/%oname
# .. # ..
%changelog %changelog
* Sat Aug 29 2015 Pavel Vainerman <pv@altlinux.ru> 2.1-alt19
- (ModbusSlave): rename ModbusMultiSlave --> ModbusPersistentSlave, minor fixes
* Thu Aug 27 2015 Pavel Vainerman <pv@altlinux.ru> 2.1-alt18 * Thu Aug 27 2015 Pavel Vainerman <pv@altlinux.ru> 2.1-alt18
- (ModbusExchange): add reinit_timeout timer.. - (ModbusExchange): add reinit_timeout timer..
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
#include <sstream> #include <sstream>
#include "Exceptions.h" #include "Exceptions.h"
#include "Extensions.h" #include "Extensions.h"
#include "MBTCPMultiSlave.h" #include "MBTCPPersistentSlave.h"
#include "modbus/ModbusRTUSlaveSlot.h" #include "modbus/ModbusRTUSlaveSlot.h"
#include "modbus/ModbusTCPServerSlot.h" #include "modbus/ModbusTCPServerSlot.h"
#include "modbus/MBLogSugar.h" #include "modbus/MBLogSugar.h"
...@@ -12,7 +12,7 @@ using namespace UniSetTypes; ...@@ -12,7 +12,7 @@ using namespace UniSetTypes;
using namespace UniSetExtensions; using namespace UniSetExtensions;
using namespace ModbusRTU; using namespace ModbusRTU;
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
MBTCPMultiSlave::MBTCPMultiSlave( UniSetTypes::ObjectId objId, UniSetTypes::ObjectId shmId, const std::shared_ptr<SharedMemory> ic, const string& prefix ): MBTCPPersistentSlave::MBTCPPersistentSlave( UniSetTypes::ObjectId objId, UniSetTypes::ObjectId shmId, const std::shared_ptr<SharedMemory> ic, const string& prefix ):
MBSlave(objId, shmId, ic, prefix), MBSlave(objId, shmId, ic, prefix),
sesscount_id(DefaultObjectId) sesscount_id(DefaultObjectId)
{ {
...@@ -22,7 +22,7 @@ MBTCPMultiSlave::MBTCPMultiSlave( UniSetTypes::ObjectId objId, UniSetTypes::Obje ...@@ -22,7 +22,7 @@ MBTCPMultiSlave::MBTCPMultiSlave( UniSetTypes::ObjectId objId, UniSetTypes::Obje
cnode = conf->getNode(conf_name); cnode = conf->getNode(conf_name);
if( cnode == NULL ) if( cnode == NULL )
throw UniSetTypes::SystemError("(MBTCPMultiSlave): Not found conf-node for " + myname ); throw UniSetTypes::SystemError("(MBTCPPersistentSlave): Not found conf-node for " + myname );
UniXML::iterator it(cnode); UniXML::iterator it(cnode);
...@@ -31,18 +31,20 @@ MBTCPMultiSlave::MBTCPMultiSlave( UniSetTypes::ObjectId objId, UniSetTypes::Obje ...@@ -31,18 +31,20 @@ MBTCPMultiSlave::MBTCPMultiSlave( UniSetTypes::ObjectId objId, UniSetTypes::Obje
if( waitTimeout == 0 ) if( waitTimeout == 0 )
waitTimeout = 4000; waitTimeout = 4000;
ptUpdateInfo.setTiming(waitTimeout);
vmonit(waitTimeout); vmonit(waitTimeout);
sessTimeout = conf->getArgInt("--" + prefix + "-session-timeout", it.getProp("sessTimeout")); sessTimeout = conf->getArgInt("--" + prefix + "-session-timeout", it.getProp("sessTimeout"));
if( sessTimeout == 0 ) if( sessTimeout == 0 )
sessTimeout = 10000; sessTimeout = 2000;
vmonit(sessTimeout); vmonit(sessTimeout);
sessMaxNum = conf->getArgInt("--" + prefix + "-session-maxnum", it.getProp("sessMaxNum")); sessMaxNum = conf->getArgInt("--" + prefix + "-session-maxnum", it.getProp("sessMaxNum"));
if( sessMaxNum == 0 ) if( sessMaxNum == 0 )
sessMaxNum = 10; sessMaxNum = 3;
vmonit(sessMaxNum); vmonit(sessMaxNum);
...@@ -109,11 +111,11 @@ MBTCPMultiSlave::MBTCPMultiSlave( UniSetTypes::ObjectId objId, UniSetTypes::Obje ...@@ -109,11 +111,11 @@ MBTCPMultiSlave::MBTCPMultiSlave( UniSetTypes::ObjectId objId, UniSetTypes::Obje
} }
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
MBTCPMultiSlave::~MBTCPMultiSlave() MBTCPPersistentSlave::~MBTCPPersistentSlave()
{ {
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void MBTCPMultiSlave::help_print( int argc, const char* const* argv ) void MBTCPPersistentSlave::help_print( int argc, const char* const* argv )
{ {
MBSlave::help_print(argc, argv); MBSlave::help_print(argc, argv);
...@@ -124,7 +126,7 @@ void MBTCPMultiSlave::help_print( int argc, const char* const* argv ) ...@@ -124,7 +126,7 @@ void MBTCPMultiSlave::help_print( int argc, const char* const* argv )
cout << "--prefix-session-count-id id - Датчик для отслеживания текущего количества соединений." << endl; cout << "--prefix-session-count-id id - Датчик для отслеживания текущего количества соединений." << endl;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
std::shared_ptr<MBTCPMultiSlave> MBTCPMultiSlave::init_mbslave( int argc, const char* const* argv, UniSetTypes::ObjectId icID, std::shared_ptr<MBTCPPersistentSlave> MBTCPPersistentSlave::init_mbslave( int argc, const char* const* argv, UniSetTypes::ObjectId icID,
const std::shared_ptr<SharedMemory> ic, const string& prefix ) const std::shared_ptr<SharedMemory> ic, const string& prefix )
{ {
auto conf = uniset_conf(); auto conf = uniset_conf();
...@@ -147,10 +149,10 @@ std::shared_ptr<MBTCPMultiSlave> MBTCPMultiSlave::init_mbslave( int argc, const ...@@ -147,10 +149,10 @@ std::shared_ptr<MBTCPMultiSlave> MBTCPMultiSlave::init_mbslave( int argc, const
} }
dinfo << "(mbslave): name = " << name << "(" << ID << ")" << endl; dinfo << "(mbslave): name = " << name << "(" << ID << ")" << endl;
return make_shared<MBTCPMultiSlave>(ID, icID, ic, prefix); return make_shared<MBTCPPersistentSlave>(ID, icID, ic, prefix);
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void MBTCPMultiSlave::execute_tcp() void MBTCPPersistentSlave::execute_tcp()
{ {
auto sslot = dynamic_pointer_cast<ModbusTCPServerSlot>(mbslot); auto sslot = dynamic_pointer_cast<ModbusTCPServerSlot>(mbslot);
...@@ -177,6 +179,13 @@ void MBTCPMultiSlave::execute_tcp() ...@@ -177,6 +179,13 @@ void MBTCPMultiSlave::execute_tcp()
{ {
sslot->waitQuery( addr, waitTimeout ); sslot->waitQuery( addr, waitTimeout );
// если слишком быстро обработали запрос
// то ничего не делаем..
if( !ptUpdateInfo.checkTime() )
continue;
ptUpdateInfo.reset();
// Обновляем информацию по соединениям // Обновляем информацию по соединениям
sess.clear(); sess.clear();
sslot->getSessions(sess); sslot->getSessions(sess);
...@@ -318,7 +327,7 @@ void MBTCPMultiSlave::execute_tcp() ...@@ -318,7 +327,7 @@ void MBTCPMultiSlave::execute_tcp()
mbinfo << myname << "(execute_tcp): thread stopped.." << endl; mbinfo << myname << "(execute_tcp): thread stopped.." << endl;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void MBTCPMultiSlave::initIterators() void MBTCPPersistentSlave::initIterators()
{ {
MBSlave::initIterators(); MBSlave::initIterators();
...@@ -328,7 +337,7 @@ void MBTCPMultiSlave::initIterators() ...@@ -328,7 +337,7 @@ void MBTCPMultiSlave::initIterators()
i.second.initIterators(shm); i.second.initIterators(shm);
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
bool MBTCPMultiSlave::deactivateObject() bool MBTCPPersistentSlave::deactivateObject()
{ {
if( mbslot ) if( mbslot )
{ {
...@@ -341,7 +350,7 @@ bool MBTCPMultiSlave::deactivateObject() ...@@ -341,7 +350,7 @@ bool MBTCPMultiSlave::deactivateObject()
return MBSlave::deactivateObject(); return MBSlave::deactivateObject();
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void MBTCPMultiSlave::sigterm( int signo ) void MBTCPPersistentSlave::sigterm( int signo )
{ {
if( mbslot ) if( mbslot )
{ {
...@@ -354,7 +363,7 @@ void MBTCPMultiSlave::sigterm( int signo ) ...@@ -354,7 +363,7 @@ void MBTCPMultiSlave::sigterm( int signo )
MBSlave::sigterm(signo); MBSlave::sigterm(signo);
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
const std::string MBTCPMultiSlave::ClientInfo::getShortInfo() const const std::string MBTCPPersistentSlave::ClientInfo::getShortInfo() const
{ {
ostringstream s; ostringstream s;
...@@ -363,7 +372,7 @@ const std::string MBTCPMultiSlave::ClientInfo::getShortInfo() const ...@@ -363,7 +372,7 @@ const std::string MBTCPMultiSlave::ClientInfo::getShortInfo() const
return std::move(s.str()); return std::move(s.str());
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
UniSetTypes::SimpleInfo* MBTCPMultiSlave::getInfo() UniSetTypes::SimpleInfo* MBTCPPersistentSlave::getInfo()
{ {
UniSetTypes::SimpleInfo_var i = MBSlave::getInfo(); UniSetTypes::SimpleInfo_var i = MBSlave::getInfo();
......
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
#ifndef _MBTCPMultiSlave_H_ #ifndef _MBTCPPersistentSlave_H_
#define _MBTCPMultiSlave_H_ #define _MBTCPPersistentSlave_H_
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
#include <unordered_map> #include <unordered_map>
#include "MBSlave.h" #include "MBSlave.h"
#include "modbus/ModbusTCPServer.h" #include "modbus/ModbusTCPServer.h"
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
/*! /*!
<MBTCPMultiSlave ....sesscount=""> <MBTCPPersistentSlave ....sesscount="">
<clients> <clients>
<item ip="" respond="" invert="1" askcount=""/> <item ip="" respond="" invert="1" askcount=""/>
<item ip="" respond="" invert="1" askcount=""/> <item ip="" respond="" invert="1" askcount=""/>
<item ip="" respond="" invert="1" askcount=""/> <item ip="" respond="" invert="1" askcount=""/>
</clients> </clients>
</MBTCPMultiSlave> </MBTCPPersistentSlave>
*/ */
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
/*! Реализация многоптоточного slave-интерфейса */ /*! Реализация многоптоточного slave-интерфейса */
class MBTCPMultiSlave: class MBTCPPersistentSlave:
public MBSlave public MBSlave
{ {
public: public:
MBTCPMultiSlave( UniSetTypes::ObjectId objId, UniSetTypes::ObjectId shmID, const std::shared_ptr<SharedMemory> ic = nullptr, const std::string& prefix = "mbs" ); MBTCPPersistentSlave( UniSetTypes::ObjectId objId, UniSetTypes::ObjectId shmID, const std::shared_ptr<SharedMemory> ic = nullptr, const std::string& prefix = "mbs" );
virtual ~MBTCPMultiSlave(); virtual ~MBTCPPersistentSlave();
/*! глобальная функция для инициализации объекта */ /*! глобальная функция для инициализации объекта */
static std::shared_ptr<MBTCPMultiSlave> init_mbslave( int argc, const char* const* argv, static std::shared_ptr<MBTCPPersistentSlave> init_mbslave( int argc, const char* const* argv,
UniSetTypes::ObjectId shmID, const std::shared_ptr<SharedMemory> ic = nullptr, UniSetTypes::ObjectId shmID, const std::shared_ptr<SharedMemory> ic = nullptr,
const std::string& prefix = "mbs" ); const std::string& prefix = "mbs" );
...@@ -44,6 +44,7 @@ class MBTCPMultiSlave: ...@@ -44,6 +44,7 @@ class MBTCPMultiSlave:
timeout_t waitTimeout; timeout_t waitTimeout;
ModbusTCPServer::Sessions sess; /*!< список открытых сессий */ ModbusTCPServer::Sessions sess; /*!< список открытых сессий */
unsigned int sessMaxNum; unsigned int sessMaxNum;
PassiveTimer ptUpdateInfo;
struct ClientInfo struct ClientInfo
{ {
...@@ -82,5 +83,5 @@ class MBTCPMultiSlave: ...@@ -82,5 +83,5 @@ class MBTCPMultiSlave:
IOController::IOStateList::iterator sesscount_it; IOController::IOStateList::iterator sesscount_it;
}; };
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
#endif // _MBTCPMultiSlave_H_ #endif // _MBTCPPersistentSlave_H_
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
bin_PROGRAMS = @PACKAGE@-mbslave @PACKAGE@-mbtcp-multislave bin_PROGRAMS = @PACKAGE@-mbslave @PACKAGE@-mbtcp-persistentslave
# не забывайте править версию в2.pc-файле # не забывайте править версию в2.pc-файле
UMBS_VER=@LIBVER@ UMBS_VER=@LIBVER@
...@@ -10,7 +10,7 @@ libUniSet2MBSlave_la_LIBADD = $(top_builddir)/lib/libUniSet2.la \ ...@@ -10,7 +10,7 @@ libUniSet2MBSlave_la_LIBADD = $(top_builddir)/lib/libUniSet2.la \
$(top_builddir)/extensions/lib/libUniSet2Extensions.la \ $(top_builddir)/extensions/lib/libUniSet2Extensions.la \
$(SIGC_LIBS) $(COMCPP_LIBS) $(SIGC_LIBS) $(COMCPP_LIBS)
libUniSet2MBSlave_la_CXXFLAGS = -I$(top_builddir)/extensions/include -I$(top_builddir)/extensions/SharedMemory $(SIGC_CFLAGS) $(COMCPP_CFLAGS) libUniSet2MBSlave_la_CXXFLAGS = -I$(top_builddir)/extensions/include -I$(top_builddir)/extensions/SharedMemory $(SIGC_CFLAGS) $(COMCPP_CFLAGS)
libUniSet2MBSlave_la_SOURCES = MBSlave.cc MBTCPMultiSlave.cc libUniSet2MBSlave_la_SOURCES = MBSlave.cc MBTCPPersistentSlave.cc
@PACKAGE@_mbslave_SOURCES = mbslave.cc @PACKAGE@_mbslave_SOURCES = mbslave.cc
@PACKAGE@_mbslave_LDADD = libUniSet2MBSlave.la $(top_builddir)/lib/libUniSet2.la \ @PACKAGE@_mbslave_LDADD = libUniSet2MBSlave.la $(top_builddir)/lib/libUniSet2.la \
...@@ -19,12 +19,12 @@ libUniSet2MBSlave_la_SOURCES = MBSlave.cc MBTCPMultiSlave.cc ...@@ -19,12 +19,12 @@ libUniSet2MBSlave_la_SOURCES = MBSlave.cc MBTCPMultiSlave.cc
$(SIGC_LIBS) $(COMCPP_LIBS) $(SIGC_LIBS) $(COMCPP_LIBS)
@PACKAGE@_mbslave_CXXFLAGS = -I$(top_builddir)/extensions/include -I$(top_builddir)/extensions/SharedMemory $(SIGC_CFLAGS) $(COMCPP_CFLAGS) @PACKAGE@_mbslave_CXXFLAGS = -I$(top_builddir)/extensions/include -I$(top_builddir)/extensions/SharedMemory $(SIGC_CFLAGS) $(COMCPP_CFLAGS)
@PACKAGE@_mbtcp_multislave_SOURCES = mbtcp-multislave.cc @PACKAGE@_mbtcp_persistentslave_SOURCES = mbtcp-persistentslave.cc
@PACKAGE@_mbtcp_multislave_LDADD = libUniSet2MBSlave.la $(top_builddir)/lib/libUniSet2.la \ @PACKAGE@_mbtcp_persistentslave_LDADD = libUniSet2MBSlave.la $(top_builddir)/lib/libUniSet2.la \
$(top_builddir)/extensions/SharedMemory/libUniSet2SharedMemory.la \ $(top_builddir)/extensions/SharedMemory/libUniSet2SharedMemory.la \
$(top_builddir)/extensions/lib/libUniSet2Extensions.la \ $(top_builddir)/extensions/lib/libUniSet2Extensions.la \
$(SIGC_LIBS) $(COMCPP_LIBS) $(SIGC_LIBS) $(COMCPP_LIBS)
@PACKAGE@_mbtcp_multislave_CXXFLAGS = -I$(top_builddir)/extensions/include -I$(top_builddir)/extensions/SharedMemory $(SIGC_CFLAGS) $(COMCPP_CFLAGS) @PACKAGE@_mbtcp_persistentslave_CXXFLAGS = -I$(top_builddir)/extensions/include -I$(top_builddir)/extensions/SharedMemory $(SIGC_CFLAGS) $(COMCPP_CFLAGS)
# install # install
devel_include_HEADERS = *.h devel_include_HEADERS = *.h
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
#include <sstream> #include <sstream>
#include <string> #include <string>
#include <cc++/socket.h> #include <cc++/socket.h>
#include "MBTCPMultiSlave.h" #include "MBTCPPersistentSlave.h"
#include "Configuration.h" #include "Configuration.h"
#include "Debug.h" #include "Debug.h"
#include "UniSetActivator.h" #include "UniSetActivator.h"
...@@ -56,7 +56,7 @@ int main(int argc, const char** argv) ...@@ -56,7 +56,7 @@ int main(int argc, const char** argv)
return 1; return 1;
} }
auto s = MBTCPMultiSlave::init_mbslave(argc, argv, shmID); auto s = MBTCPPersistentSlave::init_mbslave(argc, argv, shmID);
if( !s ) if( !s )
{ {
...@@ -70,9 +70,9 @@ int main(int argc, const char** argv) ...@@ -70,9 +70,9 @@ int main(int argc, const char** argv)
act->broadcast( sm.transport_msg() ); act->broadcast( sm.transport_msg() );
ulogany << "\n\n\n"; ulogany << "\n\n\n";
ulogany << "(main): -------------- MBTCPMultiSlave START -------------------------\n\n"; ulogany << "(main): -------------- MBTCPPersistentSlave START -------------------------\n\n";
dlogany << "\n\n\n"; dlogany << "\n\n\n";
dlogany << "(main): -------------- MBTCPMultiSlave START -------------------------\n\n"; dlogany << "(main): -------------- MBTCPPersistentSlave START -------------------------\n\n";
act->run(false); act->run(false);
return 0; return 0;
......
#!/bin/sh #!/bin/sh
uniset2-start.sh -f ./uniset2-mbtcp-multislave --confile test.xml --dlog-add-levels level3,level4 \ uniset2-start.sh -f ./uniset2-mbtcp-persistentslave --confile test.xml --dlog-add-levels level3,level4 \
--smemory-id SharedMemory \ --smemory-id SharedMemory \
--mbs-name MBMultiSlave1 --mbs-type TCP --mbs-inet-addr 127.0.0.1 --mbs-inet-port 2048 --mbs-reg-from-id 1 --mbs-my-addr 0x01 \ --mbs-name MBMultiSlave1 --mbs-type TCP --mbs-inet-addr 127.0.0.1 --mbs-inet-port 2048 --mbs-reg-from-id 1 --mbs-my-addr 0x01 \
$* $*
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
#include "Extensions.h" #include "Extensions.h"
#include "RTUExchange.h" #include "RTUExchange.h"
#include "MBSlave.h" #include "MBSlave.h"
#include "MBTCPMultiSlave.h" #include "MBTCPPersistentSlave.h"
#include "MBTCPMaster.h" #include "MBTCPMaster.h"
#include "SharedMemory.h" #include "SharedMemory.h"
//#include "UniExchange.h" //#include "UniExchange.h"
...@@ -215,7 +215,7 @@ int main( int argc, const char** argv ) ...@@ -215,7 +215,7 @@ int main( int argc, const char** argv )
dinfo << "(smemory-plus): add MBTCPMultiSlave(" << p.str() << ")" << endl; dinfo << "(smemory-plus): add MBTCPMultiSlave(" << p.str() << ")" << endl;
auto mbs = MBTCPMultiSlave::init_mbslave(argc, argv, shm->getId(), shm, p.str()); auto mbs = MBTCPPersistentSlave::init_mbslave(argc, argv, shm->getId(), shm, p.str());
if( !mbs ) if( !mbs )
return 1; return 1;
......
...@@ -189,12 +189,16 @@ mbErrCode ModbusTCPMaster::query( ModbusAddr addr, ModbusMessage& msg, ...@@ -189,12 +189,16 @@ mbErrCode ModbusTCPMaster::query( ModbusAddr addr, ModbusMessage& msg,
ost::tpport_t port; ost::tpport_t port;
if( dlog->is_warn() ) if( dlog->is_warn() )
{
const char* err = tcp->getErrorString();
dlog->warn() << "(ModbusTCPMaster::query): ret=" << (int)ret dlog->warn() << "(ModbusTCPMaster::query): ret=" << (int)ret
<< " < rmh=" << (int)sizeof(rmh) << " < rmh=" << (int)sizeof(rmh)
<< " errnum: " << tcp->getErrorNumber() << " errnum: " << tcp->getErrorNumber()
<< " perr: " << tcp->getPeer(&port) << " perr: " << tcp->getPeer(&port)
<< " err: " << string(tcp->getErrorString()) << " err: " << (err ? string(err) : "")
<< endl; << endl;
}
disconnect(); disconnect();
return erTimeOut; // return erHardwareError; return erTimeOut; // return erHardwareError;
......
...@@ -41,7 +41,7 @@ extensions/include/MBExchange.h ...@@ -41,7 +41,7 @@ extensions/include/MBExchange.h
extensions/include/MBSlave.h extensions/include/MBSlave.h
extensions/include/MBTCPMaster.h extensions/include/MBTCPMaster.h
extensions/include/MBTCPMultiMaster.h extensions/include/MBTCPMultiMaster.h
extensions/include/MBTCPMultiSlave.h extensions/include/MBTCPPersistentSlave.h
extensions/include/MTR.h extensions/include/MTR.h
extensions/include/PassiveLProcessor.h extensions/include/PassiveLProcessor.h
extensions/include/PID.h extensions/include/PID.h
...@@ -144,9 +144,9 @@ extensions/ModbusSlave/Makefile.am ...@@ -144,9 +144,9 @@ extensions/ModbusSlave/Makefile.am
extensions/ModbusSlave/MBSlave.cc extensions/ModbusSlave/MBSlave.cc
extensions/ModbusSlave/mbslave.cc extensions/ModbusSlave/mbslave.cc
extensions/ModbusSlave/MBSlave.h extensions/ModbusSlave/MBSlave.h
extensions/ModbusSlave/mbtcp-multislave.cc extensions/ModbusSlave/mbtcp-persistentslave.cc
extensions/ModbusSlave/MBTCPMultiSlave.cc extensions/ModbusSlave/MBTCPPersistentSlave.cc
extensions/ModbusSlave/MBTCPMultiSlave.h extensions/ModbusSlave/MBTCPPersistentSlave.h
extensions/ModbusSlave/test.xml extensions/ModbusSlave/test.xml
extensions/RRDServer/libUniSet2RRDServer.pc.in extensions/RRDServer/libUniSet2RRDServer.pc.in
extensions/RRDServer/main.cc extensions/RRDServer/main.cc
......
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