Commit c5d199b4 authored by Pavel Vainerman's avatar Pavel Vainerman

ModbusMaster: рефакторинг: чистка от лишнего, неиспользуемого кода.

parent 2d4d7dd1
......@@ -28,8 +28,7 @@ MBExchange::MBExchange( UniSetTypes::ObjectId objId, UniSetTypes::ObjectId shmId
prefix(prefix),
poll_count(0),
prop_prefix(""),
mb(nullptr),
pollActivated(false)
mb(nullptr)
{
if( objId == DefaultObjectId )
throw UniSetTypes::SystemError("(MBExchange): objId=-1?!! Use --" + prefix + "-name" );
......@@ -63,13 +62,9 @@ MBExchange::MBExchange( UniSetTypes::ObjectId objId, UniSetTypes::ObjectId shmId
recv_timeout = conf->getArgPInt("--" + prefix + "-recv-timeout", it.getProp("recv_timeout"), 500);
int tout = conf->getArgPInt("--" + prefix + "-timeout", it.getProp("timeout"), 5000);
// для совместимости со старым RTUExchange
// надо обратывать и all-timeout
tout = conf->getArgPInt("--" + prefix + "-all-timeout", it.getProp("all_timeout"), tout);
ptTimeout.setTiming(tout);
default_timeout = conf->getArgPInt("--" + prefix + "-timeout", it.getProp("timeout"), 5000);
tout = conf->getArgPInt("--" + prefix + "-reopen-timeout", it.getProp("reopen_timeout"), 10000);
int tout = conf->getArgPInt("--" + prefix + "-reopen-timeout", it.getProp("reopen_timeout"), default_timeout*2);
ptReopen.setTiming(tout);
aftersend_pause = conf->getArgPInt("--" + prefix + "-aftersend-pause", it.getProp("aftersend_pause"), 0);
......@@ -2672,7 +2667,7 @@ bool MBExchange::initDeviceInfo( RTUDeviceMap& m, ModbusRTU::ModbusAddr a, UniXM
}
dinfo << myname << "(initDeviceInfo): add addr=" << ModbusRTU::addr2str(a) << endl;
int tout = it.getPIntProp("timeout", ptTimeout.getInterval() );
int tout = it.getPIntProp("timeout", default_timeout );
d->second->resp_Delay.set(0, tout); // ставим время на отпускание.. см. checkRespond()
d->second->resp_invert = it.getIntProp("invert");
......@@ -2942,11 +2937,7 @@ bool MBExchange::poll()
{
if( !mb )
{
{
uniset_rwmutex_wrlock l(pollMutex);
pollActivated = false;
mb = initMB(false);
}
mb = initMB(false);
if( !checkProcActive() )
return false;
......@@ -2956,12 +2947,6 @@ bool MBExchange::poll()
return false;
}
{
uniset_rwmutex_wrlock l(pollMutex);
pollActivated = true;
ptTimeout.reset();
}
if( !allInitOK )
firstInitRegisters();
......@@ -2980,7 +2965,7 @@ bool MBExchange::poll()
dlog3 << myname << "(poll): ask addr=" << ModbusRTU::addr2str(d->mbaddr)
<< " regs=" << d->regmap.size() << endl;
int prev_numreply = d->numreply.load();
unsigned int prev_numreply = d->numreply.load();
for( auto it = d->regmap.begin(); it != d->regmap.end(); ++it )
{
......@@ -3031,11 +3016,6 @@ bool MBExchange::poll()
poll_count = 0;
}
{
uniset_rwmutex_wrlock l(pollMutex);
pollActivated = false;
}
if( !checkProcActive() )
return false;
......
......@@ -331,9 +331,8 @@ class MBExchange:
std::shared_ptr<ModbusClient> mb;
// определение timeout для соединения
PassiveTimer ptTimeout;
bool pollActivated;
int recv_timeout;
timeout_t recv_timeout;
timeout_t default_timeout;
int aftersend_pause;
......
......@@ -139,11 +139,6 @@ void MBTCPMaster::final_thread()
// -----------------------------------------------------------------------------
void MBTCPMaster::poll_thread()
{
{
uniset_rwmutex_wrlock l(pollMutex);
ptTimeout.reset();
}
// ждём начала работы..(см. MBExchange::activateObject)
while( !checkProcActive() )
{
......
......@@ -137,7 +137,7 @@ MBTCPMultiMaster::MBTCPMultiMaster( UniSetTypes::ObjectId objId, UniSetTypes::Ob
// Т.к. при "многоканальном" доступе к slave, смена канала должна происходит сразу после
// неудачной попытки запросов по одному из каналов, то ПЕРЕОПРЕДЕЛЯЕМ reopen, на timeout..
ptReopen.setTiming(ptTimeout.getInterval());
ptReopen.setTiming(default_timeout);
if( dlog()->is_info() )
printMap(rmap);
......@@ -315,11 +315,6 @@ void MBTCPMultiMaster::sysCommand( const UniSetTypes::SystemMessage* sm )
// -----------------------------------------------------------------------------
void MBTCPMultiMaster::poll_thread()
{
{
uniset_rwmutex_wrlock l(pollMutex);
ptTimeout.reset();
}
// ждём начала работы..(см. MBExchange::activateObject)
while( !checkProcActive() )
{
......@@ -407,6 +402,40 @@ void MBTCPMultiMaster::initIterators()
shm->initIterator(it.respond_it);
}
// -----------------------------------------------------------------------------
void MBTCPMultiMaster::sigterm( int signo )
{
if( pollThread )
{
pollThread->stop();
if( pollThread->isRunning() )
pollThread->join();
}
if( checkThread )
{
checkThread->stop();
if( checkThread->isRunning() )
checkThread->join();
}
try
{
MBExchange::sigterm(signo);
}
catch( const std::exception& ex )
{
cerr << "catch: " << ex.what() << endl;
}
catch( ... )
{
std::exception_ptr p = std::current_exception();
std::clog << (p ? p.__cxa_exception_type()->name() : "null") << std::endl;
}
}
// -----------------------------------------------------------------------------
void MBTCPMultiMaster::help_print( int argc, const char* const* argv )
{
cout << "Default: prefix='mbtcp'" << endl;
......
......@@ -230,10 +230,13 @@ class MBTCPMultiMaster:
virtual void sysCommand( const UniSetTypes::SystemMessage* sm ) override;
virtual void initIterators() override;
virtual std::shared_ptr<ModbusClient> initMB( bool reopen = false ) override;
virtual void sigterm( int signo ) override;
void poll_thread();
void check_thread();
void final_thread();
UniSetTypes::uniset_rwmutex mbMutex;
bool force_disconnect;
int checktime;
......
......@@ -180,11 +180,7 @@ bool RTUExchange::poll()
{
if( !mb )
{
{
uniset_rwmutex_wrlock l(pollMutex);
pollActivated = false;
mb = initMB(false);
}
mb = initMB(false);
if( !checkProcActive() )
return false;
......@@ -194,12 +190,6 @@ bool RTUExchange::poll()
return false;
}
{
uniset_rwmutex_wrlock l(pollMutex);
pollActivated = true;
ptTimeout.reset();
}
if( !allInitOK )
firstInitRegisters();
......@@ -222,7 +212,7 @@ bool RTUExchange::poll()
mbrtu->setSpeed(d->speed);
}
int prev_numreply = d->numreply;
unsigned int prev_numreply = d->numreply;
if( d->dtype == MBExchange::dtRTU188 )
{
......
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