Commit b2cf6d77 authored by Pavel Vainerman's avatar Pavel Vainerman

move UniSetObject::askTimer to public, make style

parent b59446ed
...@@ -225,6 +225,7 @@ int main(int argc, char** argv) ...@@ -225,6 +225,7 @@ int main(int argc, char** argv)
ui.initBackId(UniSetTypes::AdminID); ui.initBackId(UniSetTypes::AdminID);
int userparam = 0; int userparam = 0;
if( optind < argc ) if( optind < argc )
userparam = uni_atoi(argv[optind]); userparam = uni_atoi(argv[optind]);
...@@ -538,6 +539,7 @@ static void createSections( const std::shared_ptr<UniSetTypes::Configuration>& r ...@@ -538,6 +539,7 @@ static void createSections( const std::shared_ptr<UniSetTypes::Configuration>& r
int omap() int omap()
{ {
std::ios_base::fmtflags old_flags = cout.flags(); std::ios_base::fmtflags old_flags = cout.flags();
try try
{ {
cout.setf(ios::left, ios::adjustfield); cout.setf(ios::left, ios::adjustfield);
......
...@@ -398,6 +398,7 @@ ModbusRTU::mbErrCode MBTCPServer::fileTransfer( ModbusRTU::FileTransferMessage& ...@@ -398,6 +398,7 @@ ModbusRTU::mbErrCode MBTCPServer::fileTransfer( ModbusRTU::FileTransferMessage&
int seek = query.numpacket * ModbusRTU::FileTransferRetMessage::MaxDataLen; int seek = query.numpacket * ModbusRTU::FileTransferRetMessage::MaxDataLen;
int ret = lseek(fd, seek, SEEK_SET); int ret = lseek(fd, seek, SEEK_SET);
if( ret < 0 ) if( ret < 0 )
{ {
close(fd); close(fd);
......
...@@ -54,6 +54,7 @@ int main( int argc, char** argv ) ...@@ -54,6 +54,7 @@ int main( int argc, char** argv )
while(1) while(1)
{ {
opt = getopt_long(argc, argv, "hva:d:s:yc:", longopts, &optindex); opt = getopt_long(argc, argv, "hva:d:s:yc:", longopts, &optindex);
if( opt == -1 ) if( opt == -1 )
break; break;
......
...@@ -127,6 +127,7 @@ int main( int argc, char** argv ) ...@@ -127,6 +127,7 @@ int main( int argc, char** argv )
while(1) while(1)
{ {
opt = getopt_long(argc, argv, "hva:w:z:m:r:x:c:b:d:s:t:qn:u:yl:t:o:e:", longopts, &optindex); opt = getopt_long(argc, argv, "hva:w:z:m:r:x:c:b:d:s:t:qn:u:yl:t:o:e:", longopts, &optindex);
if( opt == -1 ) if( opt == -1 )
break; break;
......
...@@ -51,8 +51,10 @@ int main( int argc, char** argv ) ...@@ -51,8 +51,10 @@ int main( int argc, char** argv )
while(1) while(1)
{ {
opt = getopt_long(argc, argv, "hva:d:s:c:", longopts, &optindex); opt = getopt_long(argc, argv, "hva:d:s:c:", longopts, &optindex);
if( opt == -1 ) if( opt == -1 )
break; break;
switch (opt) switch (opt)
{ {
case 'h': case 'h':
...@@ -90,9 +92,10 @@ int main( int argc, char** argv ) ...@@ -90,9 +92,10 @@ int main( int argc, char** argv )
} }
} }
auto avec = UniSetTypes::explode_str(myaddr,','); auto avec = UniSetTypes::explode_str(myaddr, ',');
std::unordered_set<ModbusRTU::ModbusAddr> vaddr; std::unordered_set<ModbusRTU::ModbusAddr> vaddr;
for( const auto& a: avec )
for( const auto& a : avec )
vaddr.emplace( ModbusRTU::str2mbAddr(a) ); vaddr.emplace( ModbusRTU::str2mbAddr(a) );
if( verb ) if( verb )
......
...@@ -50,6 +50,7 @@ int main( int argc, char** argv ) ...@@ -50,6 +50,7 @@ int main( int argc, char** argv )
while(1) while(1)
{ {
opt = getopt_long(argc, argv, "hva:p:i:bc:", longopts, &optindex); opt = getopt_long(argc, argv, "hva:p:i:bc:", longopts, &optindex);
if( opt != -1 ) if( opt != -1 )
break; break;
...@@ -86,9 +87,10 @@ int main( int argc, char** argv ) ...@@ -86,9 +87,10 @@ int main( int argc, char** argv )
} }
} }
auto avec = UniSetTypes::explode_str(myaddr,','); auto avec = UniSetTypes::explode_str(myaddr, ',');
std::unordered_set<ModbusRTU::ModbusAddr> vaddr; std::unordered_set<ModbusRTU::ModbusAddr> vaddr;
for( const auto& a: avec )
for( const auto& a : avec )
vaddr.emplace( ModbusRTU::str2mbAddr(a) ); vaddr.emplace( ModbusRTU::str2mbAddr(a) );
if( verb ) if( verb )
......
...@@ -39,6 +39,7 @@ int main( int argc, char* argv[], char* envp[] ) ...@@ -39,6 +39,7 @@ int main( int argc, char* argv[], char* envp[] )
while(1) while(1)
{ {
opt = getopt_long(argc, argv, "hvi:p:", longopts, &optindex); opt = getopt_long(argc, argv, "hvi:p:", longopts, &optindex);
if( opt == -1 ) if( opt == -1 )
break; break;
......
...@@ -82,6 +82,7 @@ int main( int argc, char** argv ) ...@@ -82,6 +82,7 @@ int main( int argc, char** argv )
while(1) while(1)
{ {
opt = getopt_long(argc, argv, "chvlf:a:p:i:d:s:n:eorbx:w:", longopts, &optindex); opt = getopt_long(argc, argv, "chvlf:a:p:i:d:s:n:eorbx:w:", longopts, &optindex);
if( opt == -1 ) if( opt == -1 )
break; break;
......
...@@ -51,6 +51,7 @@ int main( int argc, char** argv ) ...@@ -51,6 +51,7 @@ int main( int argc, char** argv )
while(1) while(1)
{ {
opt = getopt_long(argc, argv, "hvi:p:d:m:", longopts, &optindex); opt = getopt_long(argc, argv, "hvi:p:d:m:", longopts, &optindex);
if( opt == -1 ) if( opt == -1 )
break; break;
......
...@@ -11,6 +11,7 @@ TestGen::TestGen( UniSetTypes::ObjectId id, xmlNode* confnode ): ...@@ -11,6 +11,7 @@ TestGen::TestGen( UniSetTypes::ObjectId id, xmlNode* confnode ):
vmonit(bool_var); vmonit(bool_var);
long* i = valptr(input2_s); long* i = valptr(input2_s);
if( !i ) if( !i )
cerr << "input2_s NOT FOUND!!!" << endl; cerr << "input2_s NOT FOUND!!!" << endl;
else else
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
Name: libuniset2 Name: libuniset2
Version: 2.2 Version: 2.2
Release: alt12 Release: alt13
Summary: UniSet - library for building distributed industrial control systems Summary: UniSet - library for building distributed industrial control systems
...@@ -451,6 +451,9 @@ mv -f %buildroot%python_sitelibdir_noarch/* %buildroot%python_sitelibdir/%oname ...@@ -451,6 +451,9 @@ mv -f %buildroot%python_sitelibdir_noarch/* %buildroot%python_sitelibdir/%oname
# .. # ..
%changelog %changelog
* Wed Dec 16 2015 Pavel Vainerman <pv@altlinux.ru> 2.2-alt13
- set public for UniSetObject::askTimer
* Mon Dec 14 2015 Pavel Vainerman <pv@altlinux.ru> 2.2-alt12 * Mon Dec 14 2015 Pavel Vainerman <pv@altlinux.ru> 2.2-alt12
- refactoring: remove xxx_LT classes - refactoring: remove xxx_LT classes
- add new function for LT_Object - add new function for LT_Object
......
...@@ -46,7 +46,7 @@ class PostgreSQLInterface ...@@ -46,7 +46,7 @@ class PostgreSQLInterface
class PostgreSQLResult class PostgreSQLResult
{ {
public: public:
PostgreSQLResult(){} PostgreSQLResult() {}
explicit PostgreSQLResult( const pqxx::result& res ); explicit PostgreSQLResult( const pqxx::result& res );
~PostgreSQLResult(); ~PostgreSQLResult();
......
...@@ -86,6 +86,7 @@ int main(int argc, char* argv[]) ...@@ -86,6 +86,7 @@ int main(int argc, char* argv[])
while(1) while(1)
{ {
opt = getopt_long(argc, argv, "hr:s:d:a:x:o:f:n:i:c:", longopts, &optindex); opt = getopt_long(argc, argv, "hr:s:d:a:x:o:f:n:i:c:", longopts, &optindex);
if( opt == -1 ) if( opt == -1 )
break; break;
...@@ -196,6 +197,7 @@ int main(int argc, char* argv[]) ...@@ -196,6 +197,7 @@ int main(int argc, char* argv[])
cout << "\r" << "data: " << setw(5) << data << " " << flush; cout << "\r" << "data: " << setw(5) << data << " " << flush;
ssize_t temp = read(fd, &buf, sizeof(buf)); ssize_t temp = read(fd, &buf, sizeof(buf));
if( temp == -1 ) if( temp == -1 )
{ {
close(fd); close(fd);
...@@ -347,6 +349,7 @@ void readCalibr(int fixed) ...@@ -347,6 +349,7 @@ void readCalibr(int fixed)
close(f); close(f);
return; return;
} }
if (temp > 1) if (temp > 1)
{ {
int s; int s;
......
...@@ -71,6 +71,7 @@ int main(int argc, char* argv[]) ...@@ -71,6 +71,7 @@ int main(int argc, char* argv[])
while(1) while(1)
{ {
opt = getopt_long(argc, argv, "habvr:w:i:o:s:d:c:p:m:q:x:z:", longopts, &optindex); opt = getopt_long(argc, argv, "habvr:w:i:o:s:d:c:p:m:q:x:z:", longopts, &optindex);
if( opt == -1 ) if( opt == -1 )
break; break;
......
...@@ -270,6 +270,7 @@ void MBExchange::waitSMReady() ...@@ -270,6 +270,7 @@ void MBExchange::waitSMReady()
// waiting for SM is ready... // waiting for SM is ready...
int tout = uniset_conf()->getArgInt("--" + prefix + "-sm-ready-timeout", "15000"); int tout = uniset_conf()->getArgInt("--" + prefix + "-sm-ready-timeout", "15000");
timeout_t ready_timeout = 15000; timeout_t ready_timeout = 15000;
if( tout > 0 ) if( tout > 0 )
ready_timeout = tout; ready_timeout = tout;
else if( tout < 0 ) else if( tout < 0 )
...@@ -333,10 +334,11 @@ void MBExchange::sigterm( int signo ) ...@@ -333,10 +334,11 @@ void MBExchange::sigterm( int signo )
{ {
mbwarn << myname << "SIGTERM(" << signo << "): " << ex.what() << endl; mbwarn << myname << "SIGTERM(" << signo << "): " << ex.what() << endl;
} }
// {
// {
// std::exception_ptr p = std::current_exception(); // std::exception_ptr p = std::current_exception();
// std::clog <<(p ? p.__cxa_exception_type()->name() : "null") << std::endl; // std::clog <<(p ? p.__cxa_exception_type()->name() : "null") << std::endl;
// } // }
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void MBExchange::readConfiguration() void MBExchange::readConfiguration()
...@@ -405,9 +407,10 @@ void MBExchange::initIterators() ...@@ -405,9 +407,10 @@ void MBExchange::initIterators()
shm->initIterator(d->resp_it); shm->initIterator(d->resp_it);
shm->initIterator(d->mode_it); shm->initIterator(d->mode_it);
for( auto&& m: d->pollmap ) for( auto && m : d->pollmap )
{ {
auto& regmap = m.second; auto& regmap = m.second;
for( auto it = regmap->begin(); it != regmap->end(); ++it ) for( auto it = regmap->begin(); it != regmap->end(); ++it )
{ {
for( auto it2 = it->second->slst.begin(); it2 != it->second->slst.end(); ++it2 ) for( auto it2 = it->second->slst.begin(); it2 != it->second->slst.end(); ++it2 )
...@@ -432,9 +435,10 @@ void MBExchange::initValues() ...@@ -432,9 +435,10 @@ void MBExchange::initValues()
{ {
auto d = it1->second; auto d = it1->second;
for( auto&& m: d->pollmap ) for( auto && m : d->pollmap )
{ {
auto regmap = m.second; auto regmap = m.second;
for( auto it = regmap->begin(); it != regmap->end(); ++it ) for( auto it = regmap->begin(); it != regmap->end(); ++it )
{ {
for( auto it2 = it->second->slst.begin(); it2 != it->second->slst.end(); ++it2 ) for( auto it2 = it->second->slst.begin(); it2 != it->second->slst.end(); ++it2 )
...@@ -543,9 +547,9 @@ std::ostream& operator<<( std::ostream& os, MBExchange::RTUDevice& d ) ...@@ -543,9 +547,9 @@ std::ostream& operator<<( std::ostream& os, MBExchange::RTUDevice& d )
os << " regs: " << endl; os << " regs: " << endl;
for( const auto& m: d.pollmap ) for( const auto& m : d.pollmap )
{ {
for( const auto& it: *(m.second) ) for( const auto& it : * (m.second) )
os << " " << it.second << endl; os << " " << it.second << endl;
} }
...@@ -581,11 +585,11 @@ void MBExchange::rtuQueryOptimization( RTUDeviceMap& dm ) ...@@ -581,11 +585,11 @@ void MBExchange::rtuQueryOptimization( RTUDeviceMap& dm )
mbinfo << myname << "(rtuQueryOptimization): optimization..." << endl; mbinfo << myname << "(rtuQueryOptimization): optimization..." << endl;
for( auto&& it1: dm ) for( auto && it1 : dm )
{ {
auto d = it1.second; auto d = it1.second;
for( auto&& m: d->pollmap ) for( auto && m : d->pollmap )
{ {
auto& regmap = m.second; auto& regmap = m.second;
...@@ -1184,7 +1188,7 @@ void MBExchange::updateSM() ...@@ -1184,7 +1188,7 @@ void MBExchange::updateSM()
} }
for( auto&& m: d->pollmap ) for( auto && m : d->pollmap )
{ {
auto& regmap = m.second; auto& regmap = m.second;
...@@ -1242,7 +1246,7 @@ void MBExchange::updateRTU( RegMap::iterator& rit ) ...@@ -1242,7 +1246,7 @@ void MBExchange::updateRTU( RegMap::iterator& rit )
{ {
auto& r = rit->second; auto& r = rit->second;
for( auto&& it: r->slst ) for( auto && it : r->slst )
updateRSProperty( &it, false ); updateRSProperty( &it, false );
} }
...@@ -2375,10 +2379,11 @@ bool MBExchange::initItem( UniXML::iterator& it ) ...@@ -2375,10 +2379,11 @@ bool MBExchange::initItem( UniXML::iterator& it )
std::shared_ptr<RegMap> rmap; std::shared_ptr<RegMap> rmap;
auto rit = dev->pollmap.find(pollfactor); auto rit = dev->pollmap.find(pollfactor);
if( rit == dev->pollmap.end() ) if( rit == dev->pollmap.end() )
{ {
rmap = make_shared<RegMap>(); rmap = make_shared<RegMap>();
dev->pollmap.emplace(pollfactor,rmap); dev->pollmap.emplace(pollfactor, rmap);
} }
else else
rmap = rit->second; rmap = rit->second;
...@@ -2933,9 +2938,10 @@ void MBExchange::askSensors( UniversalIO::UIOCommand cmd ) ...@@ -2933,9 +2938,10 @@ void MBExchange::askSensors( UniversalIO::UIOCommand cmd )
if( force_out ) if( force_out )
return; return;
for( auto&& m: d->pollmap ) for( auto && m : d->pollmap )
{ {
auto& regmap = m.second; auto& regmap = m.second;
for( auto it = regmap->begin(); it != regmap->end(); ++it ) for( auto it = regmap->begin(); it != regmap->end(); ++it )
{ {
if( !isWriteFunction(it->second->mbfunc) ) if( !isWriteFunction(it->second->mbfunc) )
...@@ -2984,7 +2990,7 @@ void MBExchange::sensorInfo( const UniSetTypes::SensorMessage* sm ) ...@@ -2984,7 +2990,7 @@ void MBExchange::sensorInfo( const UniSetTypes::SensorMessage* sm )
{ {
auto&& regmap = m.second; auto&& regmap = m.second;
for( const auto& it: (*regmap) ) for( const auto& it : (*regmap) )
{ {
if( !isWriteFunction(it.second->mbfunc) ) if( !isWriteFunction(it.second->mbfunc) )
continue; continue;
...@@ -3062,9 +3068,9 @@ bool MBExchange::poll() ...@@ -3062,9 +3068,9 @@ bool MBExchange::poll()
d->prev_numreply.store(d->numreply); d->prev_numreply.store(d->numreply);
for( auto&& m: d->pollmap ) for( auto && m : d->pollmap )
{ {
if( m.first>1 && (ncycle % m.first) != 0 ) if( m.first > 1 && (ncycle % m.first) != 0 )
continue; continue;
auto&& regmap = m.second; auto&& regmap = m.second;
......
...@@ -451,11 +451,12 @@ void MBTCPMultiMaster::sigterm( int signo ) ...@@ -451,11 +451,12 @@ void MBTCPMultiMaster::sigterm( int signo )
{ {
mbcrit << myname << "(sigterm): " << ex.what() << std::endl; mbcrit << myname << "(sigterm): " << ex.what() << std::endl;
} }
// catch( ... )
// { // catch( ... )
// std::exception_ptr p = std::current_exception(); // {
// std::clog << (p ? p.__cxa_exception_type()->name() : "null") << std::endl; // std::exception_ptr p = std::current_exception();
// } // std::clog << (p ? p.__cxa_exception_type()->name() : "null") << std::endl;
// }
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
......
...@@ -251,14 +251,14 @@ bool RTUExchange::poll() ...@@ -251,14 +251,14 @@ bool RTUExchange::poll()
dlog3 << myname << "(poll): ask addr=" << ModbusRTU::addr2str(d->mbaddr) dlog3 << myname << "(poll): ask addr=" << ModbusRTU::addr2str(d->mbaddr)
<< " regs=" << d->pollmap.size() << endl; << " regs=" << d->pollmap.size() << endl;
for( auto&& m: d->pollmap ) for( auto && m : d->pollmap )
{ {
if( m.first!=0 && (ncycle % m.first) != 0 ) if( m.first != 0 && (ncycle % m.first) != 0 )
continue; continue;
auto rmap = m.second; auto rmap = m.second;
for( auto&& it = rmap->begin(); it != rmap->end(); ++it ) for( auto && it = rmap->begin(); it != rmap->end(); ++it )
{ {
try try
{ {
......
...@@ -132,8 +132,10 @@ void RTUStorage::poll( const std::shared_ptr<ModbusRTUMaster>& mb ) throw( Modbu ...@@ -132,8 +132,10 @@ void RTUStorage::poll( const std::shared_ptr<ModbusRTUMaster>& mb ) throw( Modbu
for( unsigned int i = 0; i < 8; i++ ) for( unsigned int i = 0; i < 8; i++ )
{ {
int k = i + 8 * b; int k = i + 8 * b;
if( k>=48 )
if( k >= 48 )
break; break;
unio_do[k] = bits[i]; unio_do[k] = bits[i];
} }
} }
...@@ -152,8 +154,10 @@ void RTUStorage::poll( const std::shared_ptr<ModbusRTUMaster>& mb ) throw( Modbu ...@@ -152,8 +154,10 @@ void RTUStorage::poll( const std::shared_ptr<ModbusRTUMaster>& mb ) throw( Modbu
for( unsigned int i = 0; i < 8; i++ ) for( unsigned int i = 0; i < 8; i++ )
{ {
int k = i + 8 * b; int k = i + 8 * b;
if( k>=48 )
if( k >= 48 )
break; break;
unio_di[k] = bits[i]; unio_di[k] = bits[i];
} }
} }
......
...@@ -79,6 +79,7 @@ int main( int argc, char** argv ) ...@@ -79,6 +79,7 @@ int main( int argc, char** argv )
while(1) while(1)
{ {
opt = getopt_long(argc, argv, "hvyq:r:d:s:t:x:m:n:", longopts, &optindex); opt = getopt_long(argc, argv, "hvyq:r:d:s:t:x:m:n:", longopts, &optindex);
if( opt == -1 ) if( opt == -1 )
break; break;
......
...@@ -105,6 +105,7 @@ int main( int argc, char** argv ) ...@@ -105,6 +105,7 @@ int main( int argc, char** argv )
while(1) while(1)
{ {
opt = getopt_long(argc, argv, "hvw:r:x:d:s:t:l:n:yb:e:x:z:", longopts, &optindex); opt = getopt_long(argc, argv, "hvw:r:x:d:s:t:l:n:yb:e:x:z:", longopts, &optindex);
if( opt == -1 ) if( opt == -1 )
break; break;
......
...@@ -47,6 +47,7 @@ int main( int argc, char** argv ) ...@@ -47,6 +47,7 @@ int main( int argc, char** argv )
while(1) while(1)
{ {
opt = getopt_long(argc, argv, "hva:d:s:t:q:", longopts, &optindex); opt = getopt_long(argc, argv, "hva:d:s:t:q:", longopts, &optindex);
if( opt == -1 ) if( opt == -1 )
break; break;
......
...@@ -483,6 +483,7 @@ ModbusRTU::mbErrCode MBTCPTestServer::fileTransfer( ModbusRTU::FileTransferMessa ...@@ -483,6 +483,7 @@ ModbusRTU::mbErrCode MBTCPTestServer::fileTransfer( ModbusRTU::FileTransferMessa
int seek = query.numpacket * ModbusRTU::FileTransferRetMessage::MaxDataLen; int seek = query.numpacket * ModbusRTU::FileTransferRetMessage::MaxDataLen;
int ret = lseek(fd, seek, SEEK_SET); int ret = lseek(fd, seek, SEEK_SET);
if( ret < 0 ) if( ret < 0 )
{ {
close(fd); close(fd);
......
...@@ -463,6 +463,7 @@ void MBSlave::waitSMReady() ...@@ -463,6 +463,7 @@ void MBSlave::waitSMReady()
// waiting for SM is ready... // waiting for SM is ready...
int tout = uniset_conf()->getArgInt("--" + prefix + "-sm-ready-timeout", "15000"); int tout = uniset_conf()->getArgInt("--" + prefix + "-sm-ready-timeout", "15000");
timeout_t ready_timeout = 15000; timeout_t ready_timeout = 15000;
if( tout > 0 ) if( tout > 0 )
ready_timeout = tout; ready_timeout = tout;
else if( tout < 0 ) else if( tout < 0 )
...@@ -491,6 +492,7 @@ void MBSlave::execute_rtu() ...@@ -491,6 +492,7 @@ void MBSlave::execute_rtu()
if( !shm->isLocalwork() ) if( !shm->isLocalwork() )
{ {
std::unique_lock<std::mutex> locker(mutexStartNotify); std::unique_lock<std::mutex> locker(mutexStartNotify);
while( !activated ) while( !activated )
startNotifyEvent.wait(locker); startNotifyEvent.wait(locker);
} }
...@@ -577,9 +579,9 @@ void MBSlave::execute_rtu() ...@@ -577,9 +579,9 @@ void MBSlave::execute_rtu()
} }
} }
for( auto&& rmap: iomap ) for( auto && rmap : iomap )
{ {
for( auto&& it: rmap.second ) for( auto && it : rmap.second )
IOBase::processingThreshold(&it.second, shm, force); IOBase::processingThreshold(&it.second, shm, force);
} }
} }
...@@ -598,6 +600,7 @@ void MBSlave::execute_tcp() ...@@ -598,6 +600,7 @@ void MBSlave::execute_tcp()
if( !shm->isLocalwork() ) if( !shm->isLocalwork() )
{ {
std::unique_lock<std::mutex> locker(mutexStartNotify); std::unique_lock<std::mutex> locker(mutexStartNotify);
while( !activated ) while( !activated )
startNotifyEvent.wait(locker); startNotifyEvent.wait(locker);
} }
...@@ -685,9 +688,9 @@ void MBSlave::execute_tcp() ...@@ -685,9 +688,9 @@ void MBSlave::execute_tcp()
} }
} }
for( auto&& rmap: iomap ) for( auto && rmap : iomap )
{ {
for( auto&& it : rmap.second ) for( auto && it : rmap.second )
IOBase::processingThreshold(&it.second, shm, force); IOBase::processingThreshold(&it.second, shm, force);
} }
} }
...@@ -802,7 +805,7 @@ void MBSlave::askSensors( UniversalIO::UIOCommand cmd ) ...@@ -802,7 +805,7 @@ void MBSlave::askSensors( UniversalIO::UIOCommand cmd )
if( force ) if( force )
return; return;
for( const auto& rmap: iomap ) for( const auto& rmap : iomap )
{ {
for( const auto& it : rmap.second ) for( const auto& it : rmap.second )
{ {
...@@ -823,10 +826,11 @@ void MBSlave::askSensors( UniversalIO::UIOCommand cmd ) ...@@ -823,10 +826,11 @@ void MBSlave::askSensors( UniversalIO::UIOCommand cmd )
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void MBSlave::sensorInfo( const UniSetTypes::SensorMessage* sm ) void MBSlave::sensorInfo( const UniSetTypes::SensorMessage* sm )
{ {
for( auto&& regs: iomap ) for( auto && regs : iomap )
{ {
auto& rmap = regs.second; auto& rmap = regs.second;
for( auto it =rmap.begin(); it != rmap.end(); ++it )
for( auto it = rmap.begin(); it != rmap.end(); ++it )
{ {
if( it->second.si.id == sm->id ) if( it->second.si.id == sm->id )
{ {
...@@ -1229,7 +1233,7 @@ bool MBSlave::BitRegProperty::check( const IOController_i::SensorInfo& si ) ...@@ -1229,7 +1233,7 @@ bool MBSlave::BitRegProperty::check( const IOController_i::SensorInfo& si )
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
void MBSlave::initIterators() void MBSlave::initIterators()
{ {
for( auto&& regs: iomap ) for( auto && regs : iomap )
{ {
auto& rmap = regs.second; auto& rmap = regs.second;
...@@ -1377,6 +1381,7 @@ ModbusRTU::mbErrCode MBSlave::readOutputRegisters( ModbusRTU::ReadOutputMessage& ...@@ -1377,6 +1381,7 @@ ModbusRTU::mbErrCode MBSlave::readOutputRegisters( ModbusRTU::ReadOutputMessage&
mbinfo << myname << "(readOutputRegisters): " << query << endl; mbinfo << myname << "(readOutputRegisters): " << query << endl;
auto regmap = iomap.find(query.addr); auto regmap = iomap.find(query.addr);
if( regmap == iomap.end() ) if( regmap == iomap.end() )
{ {
mbinfo << myname << "(readOutputRegisters): Unknown addr=" << ModbusRTU::addr2str(query.addr) << endl; mbinfo << myname << "(readOutputRegisters): Unknown addr=" << ModbusRTU::addr2str(query.addr) << endl;
...@@ -1415,6 +1420,7 @@ ModbusRTU::mbErrCode MBSlave::writeOutputRegisters( ModbusRTU::WriteOutputMessag ...@@ -1415,6 +1420,7 @@ ModbusRTU::mbErrCode MBSlave::writeOutputRegisters( ModbusRTU::WriteOutputMessag
mbinfo << myname << "(writeOutputRegisters): " << query << endl; mbinfo << myname << "(writeOutputRegisters): " << query << endl;
auto regmap = iomap.find(query.addr); auto regmap = iomap.find(query.addr);
if( regmap == iomap.end() ) if( regmap == iomap.end() )
{ {
mbinfo << myname << "(writeOutputRegisters): Unknown addr=" << ModbusRTU::addr2str(query.addr) << endl; mbinfo << myname << "(writeOutputRegisters): Unknown addr=" << ModbusRTU::addr2str(query.addr) << endl;
...@@ -1437,6 +1443,7 @@ ModbusRTU::mbErrCode MBSlave::writeOutputSingleRegister( ModbusRTU::WriteSingleO ...@@ -1437,6 +1443,7 @@ ModbusRTU::mbErrCode MBSlave::writeOutputSingleRegister( ModbusRTU::WriteSingleO
mbinfo << myname << "(writeOutputSingleRegisters): " << query << endl; mbinfo << myname << "(writeOutputSingleRegisters): " << query << endl;
auto regmap = iomap.find(query.addr); auto regmap = iomap.find(query.addr);
if( regmap == iomap.end() ) if( regmap == iomap.end() )
{ {
mbinfo << myname << "(writeOutputRegisters): Unknown addr=" << ModbusRTU::addr2str(query.addr) << endl; mbinfo << myname << "(writeOutputRegisters): Unknown addr=" << ModbusRTU::addr2str(query.addr) << endl;
...@@ -2046,6 +2053,7 @@ mbErrCode MBSlave::readInputRegisters( ReadInputMessage& query, ReadInputRetMess ...@@ -2046,6 +2053,7 @@ mbErrCode MBSlave::readInputRegisters( ReadInputMessage& query, ReadInputRetMess
mbinfo << myname << "(readInputRegisters): " << query << endl; mbinfo << myname << "(readInputRegisters): " << query << endl;
auto regmap = iomap.find(query.addr); auto regmap = iomap.find(query.addr);
if( regmap == iomap.end() ) if( regmap == iomap.end() )
{ {
mbinfo << myname << "(readInputRegisters): Unknown addr=" << ModbusRTU::addr2str(query.addr) << endl; mbinfo << myname << "(readInputRegisters): Unknown addr=" << ModbusRTU::addr2str(query.addr) << endl;
...@@ -2110,6 +2118,7 @@ ModbusRTU::mbErrCode MBSlave::readCoilStatus( ReadCoilMessage& query, ...@@ -2110,6 +2118,7 @@ ModbusRTU::mbErrCode MBSlave::readCoilStatus( ReadCoilMessage& query,
mbinfo << myname << "(readCoilStatus): " << query << endl; mbinfo << myname << "(readCoilStatus): " << query << endl;
auto regmap = iomap.find(query.addr); auto regmap = iomap.find(query.addr);
if( regmap == iomap.end() ) if( regmap == iomap.end() )
{ {
mbinfo << myname << "(readCoilStatus): Unknown addr=" << ModbusRTU::addr2str(query.addr) << endl; mbinfo << myname << "(readCoilStatus): Unknown addr=" << ModbusRTU::addr2str(query.addr) << endl;
...@@ -2121,7 +2130,7 @@ ModbusRTU::mbErrCode MBSlave::readCoilStatus( ReadCoilMessage& query, ...@@ -2121,7 +2130,7 @@ ModbusRTU::mbErrCode MBSlave::readCoilStatus( ReadCoilMessage& query,
if( query.count <= 1 ) if( query.count <= 1 )
{ {
ModbusRTU::ModbusData d = 0; ModbusRTU::ModbusData d = 0;
ModbusRTU::mbErrCode ret = real_read(regmap->second,query.start, d, query.func); ModbusRTU::mbErrCode ret = real_read(regmap->second, query.start, d, query.func);
reply.addData(0); reply.addData(0);
if( ret == ModbusRTU::erNoError ) if( ret == ModbusRTU::erNoError )
...@@ -2182,6 +2191,7 @@ ModbusRTU::mbErrCode MBSlave::readInputStatus( ReadInputStatusMessage& query, ...@@ -2182,6 +2191,7 @@ ModbusRTU::mbErrCode MBSlave::readInputStatus( ReadInputStatusMessage& query,
mbinfo << myname << "(readInputStatus): " << query << endl; mbinfo << myname << "(readInputStatus): " << query << endl;
auto regmap = iomap.find(query.addr); auto regmap = iomap.find(query.addr);
if( regmap == iomap.end() ) if( regmap == iomap.end() )
{ {
mbinfo << myname << "(readInputStatus): Unknown addr=" << ModbusRTU::addr2str(query.addr) << endl; mbinfo << myname << "(readInputStatus): Unknown addr=" << ModbusRTU::addr2str(query.addr) << endl;
...@@ -2254,6 +2264,7 @@ ModbusRTU::mbErrCode MBSlave::forceMultipleCoils( ModbusRTU::ForceCoilsMessage& ...@@ -2254,6 +2264,7 @@ ModbusRTU::mbErrCode MBSlave::forceMultipleCoils( ModbusRTU::ForceCoilsMessage&
mbinfo << myname << "(forceMultipleCoils): " << query << endl; mbinfo << myname << "(forceMultipleCoils): " << query << endl;
auto regmap = iomap.find(query.addr); auto regmap = iomap.find(query.addr);
if( regmap == iomap.end() ) if( regmap == iomap.end() )
{ {
mbinfo << myname << "(forceMultipleCoils): Unknown addr=" << ModbusRTU::addr2str(query.addr) << endl; mbinfo << myname << "(forceMultipleCoils): Unknown addr=" << ModbusRTU::addr2str(query.addr) << endl;
...@@ -2290,6 +2301,7 @@ ModbusRTU::mbErrCode MBSlave::forceSingleCoil( ModbusRTU::ForceSingleCoilMessage ...@@ -2290,6 +2301,7 @@ ModbusRTU::mbErrCode MBSlave::forceSingleCoil( ModbusRTU::ForceSingleCoilMessage
mbinfo << myname << "(forceSingleCoil): " << query << endl; mbinfo << myname << "(forceSingleCoil): " << query << endl;
auto regmap = iomap.find(query.addr); auto regmap = iomap.find(query.addr);
if( regmap == iomap.end() ) if( regmap == iomap.end() )
{ {
mbinfo << myname << "(forceSingleCoil): Unknown addr=" << ModbusRTU::addr2str(query.addr) << endl; mbinfo << myname << "(forceSingleCoil): Unknown addr=" << ModbusRTU::addr2str(query.addr) << endl;
......
...@@ -439,7 +439,7 @@ class MBSlave: ...@@ -439,7 +439,7 @@ class MBSlave:
// то использовать unordered_map нельзя // то использовать unordered_map нельзя
typedef std::map<ModbusRTU::RegID, IOProperty> RegMap; typedef std::map<ModbusRTU::RegID, IOProperty> RegMap;
typedef std::unordered_map<ModbusRTU::ModbusAddr,RegMap> IOMap; typedef std::unordered_map<ModbusRTU::ModbusAddr, RegMap> IOMap;
IOMap iomap; /*!< список входов/выходов по адресам */ IOMap iomap; /*!< список входов/выходов по адресам */
......
...@@ -156,6 +156,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID ) ...@@ -156,6 +156,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
} }
std::string dsname(it1.getProp(ds)); std::string dsname(it1.getProp(ds));
if( dsname.empty() ) if( dsname.empty() )
dsname = it1.getProp("name"); dsname = it1.getProp("name");
......
...@@ -457,6 +457,7 @@ void UNetExchange::waitSMReady() ...@@ -457,6 +457,7 @@ void UNetExchange::waitSMReady()
int tout = uniset_conf()->getArgInt("--unet-sm-ready-timeout", "15000"); int tout = uniset_conf()->getArgInt("--unet-sm-ready-timeout", "15000");
timeout_t ready_timeout = 15000; timeout_t ready_timeout = 15000;
if( tout > 0 ) if( tout > 0 )
ready_timeout = tout; ready_timeout = tout;
else if( tout < 0 ) else if( tout < 0 )
......
...@@ -76,6 +76,7 @@ int main(int argc, char* argv[]) ...@@ -76,6 +76,7 @@ int main(int argc, char* argv[])
while(1) while(1)
{ {
opt = getopt_long(argc, argv, "hs:c:r:p:n:t:x:blvdz:y:", longopts, &optindex); opt = getopt_long(argc, argv, "hs:c:r:p:n:t:x:blvdz:y:", longopts, &optindex);
if( opt == -1 ) if( opt == -1 )
break; break;
......
...@@ -296,7 +296,7 @@ namespace MTR ...@@ -296,7 +296,7 @@ namespace MTR
val = raw.u2.val * pow( (long)10, (long)raw.u2.exp ); val = raw.u2.val * pow( (long)10, (long)raw.u2.exp );
} }
T5( const ModbusRTU::ModbusData* data, int size ):val(0) T5( const ModbusRTU::ModbusData* data, int size ): val(0)
{ {
if( size >= u2size ) if( size >= u2size )
{ {
......
...@@ -29,7 +29,7 @@ class UObject_SK: ...@@ -29,7 +29,7 @@ class UObject_SK:
public UniSetObject public UniSetObject
{ {
public: public:
UObject_SK( UniSetTypes::ObjectId id, xmlNode* node=UniSetTypes::uniset_conf()->getNode("UObject"), const std::string& argprefix="" ); UObject_SK( UniSetTypes::ObjectId id, xmlNode* node = UniSetTypes::uniset_conf()->getNode("UObject"), const std::string& argprefix = "" );
UObject_SK(); UObject_SK();
virtual ~UObject_SK(); virtual ~UObject_SK();
...@@ -43,54 +43,60 @@ class UObject_SK: ...@@ -43,54 +43,60 @@ class UObject_SK:
virtual bool setMsg( UniSetTypes::ObjectId code, bool state = true ); virtual bool setMsg( UniSetTypes::ObjectId code, bool state = true );
inline std::shared_ptr<DebugStream> log(){ return mylog; } inline std::shared_ptr<DebugStream> log()
inline std::shared_ptr<LogAgregator> logAgregator(){ return loga; } {
return mylog;
}
inline std::shared_ptr<LogAgregator> logAgregator()
{
return loga;
}
void init_dlog( std::shared_ptr<DebugStream> d ); void init_dlog( std::shared_ptr<DebugStream> d );
// "синтаксический сахар"..для логов // "синтаксический сахар"..для логов
#ifndef myinfo #ifndef myinfo
#define myinfo if( log()->debugging(Debug::INFO) ) log()->info() #define myinfo if( log()->debugging(Debug::INFO) ) log()->info()
#endif #endif
#ifndef mywarn #ifndef mywarn
#define mywarn if( log()->debugging(Debug::WARN) ) log()->warn() #define mywarn if( log()->debugging(Debug::WARN) ) log()->warn()
#endif #endif
#ifndef mycrit #ifndef mycrit
#define mycrit if( log()->debugging(Debug::CRIT) ) log()->crit() #define mycrit if( log()->debugging(Debug::CRIT) ) log()->crit()
#endif #endif
#ifndef mylog1 #ifndef mylog1
#define mylog1 if( log()->debugging(Debug::LEVEL1) ) log()->level1() #define mylog1 if( log()->debugging(Debug::LEVEL1) ) log()->level1()
#endif #endif
#ifndef mylog2 #ifndef mylog2
#define mylog2 if( log()->debugging(Debug::LEVEL2) ) log()->level2() #define mylog2 if( log()->debugging(Debug::LEVEL2) ) log()->level2()
#endif #endif
#ifndef mylog3 #ifndef mylog3
#define mylog3 if( log()->debugging(Debug::LEVEL3) ) log()->level3() #define mylog3 if( log()->debugging(Debug::LEVEL3) ) log()->level3()
#endif #endif
#ifndef mylog4 #ifndef mylog4
#define mylog4 if( log()->debugging(Debug::LEVEL4) ) log()->level4() #define mylog4 if( log()->debugging(Debug::LEVEL4) ) log()->level4()
#endif #endif
#ifndef mylog5 #ifndef mylog5
#define mylog5 if( log()->debugging(Debug::LEVEL5) ) log()->level5() #define mylog5 if( log()->debugging(Debug::LEVEL5) ) log()->level5()
#endif #endif
#ifndef mylog6 #ifndef mylog6
#define mylog6 if( log()->debugging(Debug::LEVEL6) ) log()->level6() #define mylog6 if( log()->debugging(Debug::LEVEL6) ) log()->level6()
#endif #endif
#ifndef mylog7 #ifndef mylog7
#define mylog7 if( log()->debugging(Debug::LEVEL7) ) log()->level7() #define mylog7 if( log()->debugging(Debug::LEVEL7) ) log()->level7()
#endif #endif
#ifndef mylog8 #ifndef mylog8
#define mylog8 if( log()->debugging(Debug::LEVEL8) ) log()->level8() #define mylog8 if( log()->debugging(Debug::LEVEL8) ) log()->level8()
#endif #endif
#ifndef mylog9 #ifndef mylog9
#define mylog9 if( log()->debugging(Debug::LEVEL9) ) log()->level9() #define mylog9 if( log()->debugging(Debug::LEVEL9) ) log()->level9()
#endif #endif
#ifndef mylogany #ifndef mylogany
#define mylogany log()->any() #define mylogany log()->any()
#endif #endif
#ifndef vmonit #ifndef vmonit
#define vmonit( var ) vmon.add( #var, var ) #define vmonit( var ) vmon.add( #var, var )
#endif #endif
// Вспомогательные функции для удобства логирования // Вспомогательные функции для удобства логирования
// ------------------------------------------------------------ // ------------------------------------------------------------
...@@ -107,16 +113,19 @@ class UObject_SK: ...@@ -107,16 +113,19 @@ class UObject_SK:
\param id - идентификатор датчика \param id - идентификатор датчика
\param showLinkName - TRUE - выводить SensorName, FALSE - не выводить \param showLinkName - TRUE - выводить SensorName, FALSE - не выводить
*/ */
std::string str( UniSetTypes::ObjectId id, bool showLinkName=true ); std::string str( UniSetTypes::ObjectId id, bool showLinkName = true );
/*! Вывод значения входа/выхода в формате: in_xxx(SensorName)=val /*! Вывод значения входа/выхода в формате: in_xxx(SensorName)=val
\param id - идентификатор датчика \param id - идентификатор датчика
\param showLinkName - TRUE - выводить SensorName, FALSE - не выводить \param showLinkName - TRUE - выводить SensorName, FALSE - не выводить
*/ */
std::string strval( UniSetTypes::ObjectId id, bool showLinkName=true ); std::string strval( UniSetTypes::ObjectId id, bool showLinkName = true );
/*! Вывод состояния внутренних переменных */ /*! Вывод состояния внутренних переменных */
inline std::string dumpVars(){ return std::move(vmon.pretty_str()); } inline std::string dumpVars()
{
return std::move(vmon.pretty_str());
}
// ------------------------------------------------------------ // ------------------------------------------------------------
std::string help(); std::string help();
...@@ -145,13 +154,16 @@ class UObject_SK: ...@@ -145,13 +154,16 @@ class UObject_SK:
virtual void callback() override; virtual void callback() override;
virtual void processingMessage( UniSetTypes::VoidMessage* msg ) override; virtual void processingMessage( UniSetTypes::VoidMessage* msg ) override;
virtual void sysCommand( const UniSetTypes::SystemMessage* sm ){}; virtual void sysCommand( const UniSetTypes::SystemMessage* sm ) {};
virtual void askSensors( UniversalIO::UIOCommand cmd ){} virtual void askSensors( UniversalIO::UIOCommand cmd ) {}
virtual void sensorInfo( const UniSetTypes::SensorMessage* sm ) override{} virtual void sensorInfo( const UniSetTypes::SensorMessage* sm ) override {}
virtual void timerInfo( const UniSetTypes::TimerMessage* tm ) override{} virtual void timerInfo( const UniSetTypes::TimerMessage* tm ) override {}
virtual void sigterm( int signo ) override; virtual void sigterm( int signo ) override;
virtual bool activateObject() override; virtual bool activateObject() override;
virtual std::string getMonitInfo(){ return ""; } /*!< пользовательская информация выводимая в getInfo() */ virtual std::string getMonitInfo()
{
return ""; /*!< пользовательская информация выводимая в getInfo() */
}
virtual void testMode( bool state ); virtual void testMode( bool state );
void updatePreviousValues(); void updatePreviousValues();
...@@ -171,7 +183,7 @@ class UObject_SK: ...@@ -171,7 +183,7 @@ class UObject_SK:
int resetMsgTime; int resetMsgTime;
// Выполнение очередного шага программы // Выполнение очередного шага программы
virtual void step(){} virtual void step() {}
int sleep_msec; /*!< пауза между итерациями */ int sleep_msec; /*!< пауза между итерациями */
bool active; bool active;
...@@ -186,9 +198,15 @@ class UObject_SK: ...@@ -186,9 +198,15 @@ class UObject_SK:
xmlNode* confnode; xmlNode* confnode;
/*! получить числовое свойство из конф. файла по привязанной confnode */ /*! получить числовое свойство из конф. файла по привязанной confnode */
int getIntProp(const std::string& name) { return UniSetTypes::uniset_conf()->getIntProp(confnode, name); } int getIntProp(const std::string& name)
{
return UniSetTypes::uniset_conf()->getIntProp(confnode, name);
}
/*! получить текстовое свойство из конф. файла по привязанной confnode */ /*! получить текстовое свойство из конф. файла по привязанной confnode */
inline const std::string getProp(const std::string& name) { return UniSetTypes::uniset_conf()->getProp(confnode, name); } inline const std::string getProp(const std::string& name)
{
return UniSetTypes::uniset_conf()->getProp(confnode, name);
}
timeout_t smReadyTimeout; /*!< время ожидания готовности SM */ timeout_t smReadyTimeout; /*!< время ожидания готовности SM */
std::atomic_bool activated; std::atomic_bool activated;
......
...@@ -579,7 +579,7 @@ bool IOBase::initItem( IOBase* b, UniXML::iterator& it, const std::shared_ptr<SM ...@@ -579,7 +579,7 @@ bool IOBase::initItem( IOBase* b, UniXML::iterator& it, const std::shared_ptr<SM
&& d_on_msec != UniSetTimer::WaitUpTime && d_on_msec != UniSetTimer::WaitUpTime
&& d_off_msec != UniSetTimer::WaitUpTime ) && d_off_msec != UniSetTimer::WaitUpTime )
{ {
dlog->warn() << myname <<"(IOBase::readItem): " dlog->warn() << myname << "(IOBase::readItem): "
<< " 'debouncedelay' is used in conjunction with the 'ondelay' and 'offdelay'. Sure?" << " 'debouncedelay' is used in conjunction with the 'ondelay' and 'offdelay'. Sure?"
<< " [ debouncedelay=" << d_msec << " [ debouncedelay=" << d_msec
<< " ondelay=" << d_on_msec << " ondelay=" << d_on_msec
......
...@@ -32,26 +32,26 @@ using namespace UniSetTypes; ...@@ -32,26 +32,26 @@ using namespace UniSetTypes;
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
UObject_SK::UObject_SK(): UObject_SK::UObject_SK():
// Инициализация идентификаторов (имена берутся из конф. файла) // Инициализация идентификаторов (имена берутся из конф. файла)
// Используемые идентификаторы сообщений (имена берутся из конф. файла) // Используемые идентификаторы сообщений (имена берутся из конф. файла)
// variables // variables
active(false), active(false),
idHeartBeat(DefaultObjectId), idHeartBeat(DefaultObjectId),
maxHeartBeat(10), maxHeartBeat(10),
confnode(0), confnode(0),
smReadyTimeout(0), smReadyTimeout(0),
activated(false), activated(false),
askPause(2000), askPause(2000),
forceOut(false), forceOut(false),
end_private(false) end_private(false)
{ {
ucrit << "UObject: init failed!!!!!!!!!!!!!!!" << endl; ucrit << "UObject: init failed!!!!!!!!!!!!!!!" << endl;
throw Exception( string(myname+": init failed!!!") ); throw Exception( string(myname + ": init failed!!!") );
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
// ( val, confval, default val ) // ( val, confval, default val )
...@@ -59,6 +59,7 @@ static const std::string init3_str( const std::string& s1, const std::string& s2 ...@@ -59,6 +59,7 @@ static const std::string init3_str( const std::string& s1, const std::string& s2
{ {
if( !s1.empty() ) if( !s1.empty() )
return s1; return s1;
if( !s2.empty() ) if( !s2.empty() )
return s2; return s2;
...@@ -66,34 +67,34 @@ static const std::string init3_str( const std::string& s1, const std::string& s2 ...@@ -66,34 +67,34 @@ static const std::string init3_str( const std::string& s1, const std::string& s2
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
UObject_SK::UObject_SK( ObjectId id, xmlNode* cnode, const std::string& _argprefix ): UObject_SK::UObject_SK( ObjectId id, xmlNode* cnode, const std::string& _argprefix ):
UniSetObject(id), UniSetObject(id),
// Инициализация идентификаторов (имена берутся из конф. файла) // Инициализация идентификаторов (имена берутся из конф. файла)
// Используемые идентификаторы сообщений (имена берутся из конф. файла) // Используемые идентификаторы сообщений (имена берутся из конф. файла)
// variables // variables
sleep_msec(150), sleep_msec(150),
active(true), active(true),
argprefix( (_argprefix.empty() ? myname+"-" : _argprefix) ), argprefix( (_argprefix.empty() ? myname + "-" : _argprefix) ),
idHeartBeat(DefaultObjectId), idHeartBeat(DefaultObjectId),
maxHeartBeat(10), maxHeartBeat(10),
confnode(cnode), confnode(cnode),
smReadyTimeout(0), smReadyTimeout(0),
activated(false), activated(false),
askPause(uniset_conf()->getPIntProp(cnode,"askPause",2000)), askPause(uniset_conf()->getPIntProp(cnode, "askPause", 2000)),
forceOut(false), forceOut(false),
end_private(false) end_private(false)
{ {
auto conf = uniset_conf(); auto conf = uniset_conf();
if( UniSetTypes::findArgParam("--print-id-list",uniset_conf()->getArgc(),uniset_conf()->getArgv()) != -1 ) if( UniSetTypes::findArgParam("--print-id-list", uniset_conf()->getArgc(), uniset_conf()->getArgv()) != -1 )
{ {
// abort(); // abort();
} }
...@@ -109,10 +110,10 @@ end_private(false) ...@@ -109,10 +110,10 @@ end_private(false)
{ {
ostringstream s; ostringstream s;
s << argprefix << "log"; s << argprefix << "log";
conf->initLogStream(mylog,s.str()); conf->initLogStream(mylog, s.str());
} }
loga = make_shared<LogAgregator>(myname+"-loga"); loga = make_shared<LogAgregator>(myname + "-loga");
loga->add(mylog); loga->add(mylog);
loga->add(ulog()); loga->add(ulog());
...@@ -130,12 +131,14 @@ end_private(false) ...@@ -130,12 +131,14 @@ end_private(false)
logserv_port = conf->getArgPInt("--" + argprefix + "logserver-port", it.getProp("logserverPort"), getId()); logserv_port = conf->getArgPInt("--" + argprefix + "logserver-port", it.getProp("logserverPort"), getId());
} }
forceOut = conf->getArgPInt("--" + argprefix + "force-out",it.getProp("forceOut"),false); forceOut = conf->getArgPInt("--" + argprefix + "force-out", it.getProp("forceOut"), false);
string heart = conf->getArgParam("--" + argprefix + "heartbeat-id", it.getProp("heartbeat_id"));
string heart = conf->getArgParam("--" + argprefix + "heartbeat-id",it.getProp("heartbeat_id"));
if( !heart.empty() ) if( !heart.empty() )
{ {
idHeartBeat = conf->getSensorID(heart); idHeartBeat = conf->getSensorID(heart);
if( idHeartBeat == DefaultObjectId ) if( idHeartBeat == DefaultObjectId )
{ {
ostringstream err; ostringstream err;
...@@ -143,13 +146,14 @@ end_private(false) ...@@ -143,13 +146,14 @@ end_private(false)
throw SystemError(err.str()); throw SystemError(err.str());
} }
int heartbeatTime = conf->getArgPInt("--" + argprefix + "heartbeat-time",it.getProp("heartbeatTime"),conf->getHeartBeatTime()); int heartbeatTime = conf->getArgPInt("--" + argprefix + "heartbeat-time", it.getProp("heartbeatTime"), conf->getHeartBeatTime());
if( heartbeatTime>0 )
if( heartbeatTime > 0 )
ptHeartBeat.setTiming(heartbeatTime); ptHeartBeat.setTiming(heartbeatTime);
else else
ptHeartBeat.setTiming(UniSetTimer::WaitUpTime); ptHeartBeat.setTiming(UniSetTimer::WaitUpTime);
maxHeartBeat = conf->getArgPInt("--" + argprefix + "heartbeat-max",it.getProp("heartbeat_max"), 10); maxHeartBeat = conf->getArgPInt("--" + argprefix + "heartbeat-max", it.getProp("heartbeat_max"), 10);
} }
// Инициализация значений // Инициализация значений
...@@ -158,16 +162,18 @@ end_private(false) ...@@ -158,16 +162,18 @@ end_private(false)
si.id = UniSetTypes::DefaultObjectId; si.id = UniSetTypes::DefaultObjectId;
si.node = conf->getLocalNode(); si.node = conf->getLocalNode();
sleep_msec = conf->getArgPInt("--" + argprefix + "sleep-msec","150", 150); sleep_msec = conf->getArgPInt("--" + argprefix + "sleep-msec", "150", 150);
string s_resetTime(""); string s_resetTime("");
if( s_resetTime.empty() ) if( s_resetTime.empty() )
s_resetTime = "500"; s_resetTime = "500";
resetMsgTime = uni_atoi(init3_str(conf->getArgParam("--" + argprefix + "resetMsgTime"),conf->getProp(cnode,"resetMsgTime"),s_resetTime)); resetMsgTime = uni_atoi(init3_str(conf->getArgParam("--" + argprefix + "resetMsgTime"), conf->getProp(cnode, "resetMsgTime"), s_resetTime));
ptResetMsg.setTiming(resetMsgTime); ptResetMsg.setTiming(resetMsgTime);
int sm_tout = conf->getArgInt("--" + argprefix + "sm-ready-timeout",""); int sm_tout = conf->getArgInt("--" + argprefix + "sm-ready-timeout", "");
if( sm_tout == 0 ) if( sm_tout == 0 )
smReadyTimeout = 60000; smReadyTimeout = 60000;
else if( sm_tout < 0 ) else if( sm_tout < 0 )
...@@ -175,7 +181,7 @@ end_private(false) ...@@ -175,7 +181,7 @@ end_private(false)
else else
smReadyTimeout = sm_tout; smReadyTimeout = sm_tout;
smTestID = conf->getSensorID(init3_str(conf->getArgParam("--" + argprefix + "sm-test-id"),conf->getProp(cnode,"smTestID"),"")); smTestID = conf->getSensorID(init3_str(conf->getArgParam("--" + argprefix + "sm-test-id"), conf->getProp(cnode, "smTestID"), ""));
activateTimeout = conf->getArgPInt("--" + argprefix + "activate-timeout", 20000); activateTimeout = conf->getArgPInt("--" + argprefix + "activate-timeout", 20000);
...@@ -245,7 +251,7 @@ bool UObject_SK::setMsg( UniSetTypes::ObjectId _code, bool _state ) ...@@ -245,7 +251,7 @@ bool UObject_SK::setMsg( UniSetTypes::ObjectId _code, bool _state )
void UObject_SK::resetMsg() void UObject_SK::resetMsg()
{ {
mylog8 << myname << "(resetMsg): reset messages.." << endl; mylog8 << myname << "(resetMsg): reset messages.." << endl;
// reset messages // reset messages
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -273,19 +279,23 @@ std::string UObject_SK::dumpIO() ...@@ -273,19 +279,23 @@ std::string UObject_SK::dumpIO()
s << endl; s << endl;
int n = 0; int n = 0;
for( const auto& e: v_in )
for( const auto& e : v_in )
{ {
s << e; s << e;
if( (n++)%2 )
if( (n++) % 2 )
s << std::endl; s << std::endl;
} }
s << endl; s << endl;
n = 0; n = 0;
for( const auto& e: v_out )
for( const auto& e : v_out )
{ {
s << e; s << e;
if( (n++)%2 )
if( (n++) % 2 )
s << std::endl; s << std::endl;
} }
...@@ -349,11 +359,13 @@ void UObject_SK::preSysCommand( const SystemMessage* _sm ) ...@@ -349,11 +359,13 @@ void UObject_SK::preSysCommand( const SystemMessage* _sm )
{ {
case SystemMessage::WatchDog: case SystemMessage::WatchDog:
uinfo << myname << "(preSysCommand): WatchDog" << endl; uinfo << myname << "(preSysCommand): WatchDog" << endl;
if( !active || !ptStartUpTimeout.checkTime() ) if( !active || !ptStartUpTimeout.checkTime() )
{ {
uwarn << myname << "(preSysCommand): игнорируем WatchDog, потому-что только-что стартанули" << endl; uwarn << myname << "(preSysCommand): игнорируем WatchDog, потому-что только-что стартанули" << endl;
break; break;
} }
case SystemMessage::StartUp: case SystemMessage::StartUp:
{ {
if( !logserv_host.empty() && logserv_port != 0 && !logserv->isRunning() ) if( !logserv_host.empty() && logserv_port != 0 && !logserv->isRunning() )
...@@ -386,9 +398,10 @@ void UObject_SK::preSysCommand( const SystemMessage* _sm ) ...@@ -386,9 +398,10 @@ void UObject_SK::preSysCommand( const SystemMessage* _sm )
// переоткрываем логи // переоткрываем логи
mylogany << myname << "(preSysCommand): logRotate" << endl; mylogany << myname << "(preSysCommand): logRotate" << endl;
string fname( log()->getLogFile() ); string fname( log()->getLogFile() );
if( !fname.empty() ) if( !fname.empty() )
{ {
mylog->logFile(fname.c_str(),true); mylog->logFile(fname.c_str(), true);
mylogany << myname << "(preSysCommand): ***************** mylog LOG ROTATE *****************" << endl; mylogany << myname << "(preSysCommand): ***************** mylog LOG ROTATE *****************" << endl;
} }
} }
...@@ -460,7 +473,7 @@ void UObject_SK::waitSM( int wait_msec, ObjectId _testID ) ...@@ -460,7 +473,7 @@ void UObject_SK::waitSM( int wait_msec, ObjectId _testID )
<< wait_msec << " msec" << wait_msec << " msec"
<< " testID=" << _testID << endl; << " testID=" << _testID << endl;
if( !ui->waitReady(_testID,wait_msec) ) if( !ui->waitReady(_testID, wait_msec) )
{ {
ostringstream err; ostringstream err;
err << myname err << myname
...@@ -468,11 +481,11 @@ void UObject_SK::waitSM( int wait_msec, ObjectId _testID ) ...@@ -468,11 +481,11 @@ void UObject_SK::waitSM( int wait_msec, ObjectId _testID )
<< wait_msec << " мсек"; << wait_msec << " мсек";
ucrit << err.str() << endl; ucrit << err.str() << endl;
// terminate(); // terminate();
// abort(); // abort();
raise(SIGTERM); raise(SIGTERM);
terminate(); terminate();
// throw SystemError(err.str()); // throw SystemError(err.str());
} }
...@@ -492,37 +505,39 @@ void UObject_SK::callback() ...@@ -492,37 +505,39 @@ void UObject_SK::callback()
{ {
if( !active ) if( !active )
return; return;
try try
{ {
// проверка таймеров // проверка таймеров
checkTimers(this); checkTimers(this);
if( resetMsgTime>0 && trResetMsg.hi(ptResetMsg.checkTime()) ) if( resetMsgTime > 0 && trResetMsg.hi(ptResetMsg.checkTime()) )
{ {
// cout << myname << ": ********* reset messages *********" << endl; // cout << myname << ": ********* reset messages *********" << endl;
resetMsg(); resetMsg();
} }
// обработка сообщений (таймеров и т.п.) // обработка сообщений (таймеров и т.п.)
for( unsigned int i=0; i<20; i++ ) for( unsigned int i = 0; i < 20; i++ )
{ {
if( !receiveMessage(msg) ) if( !receiveMessage(msg) )
break; break;
processingMessage(&msg); processingMessage(&msg);
updateOutputs(forceOut); updateOutputs(forceOut);
// updatePreviousValues(); // updatePreviousValues();
} }
// Выполнение шага программы // Выполнение шага программы
step(); step();
// "сердцебиение" // "сердцебиение"
if( idHeartBeat!=DefaultObjectId && ptHeartBeat.checkTime() ) if( idHeartBeat != DefaultObjectId && ptHeartBeat.checkTime() )
{ {
try try
{ {
ui->setValue(idHeartBeat,maxHeartBeat); ui->setValue(idHeartBeat, maxHeartBeat);
ptHeartBeat.reset(); ptHeartBeat.reset();
} }
catch( const Exception& ex ) catch( const Exception& ex )
...@@ -544,7 +559,7 @@ void UObject_SK::callback() ...@@ -544,7 +559,7 @@ void UObject_SK::callback()
ucrit << myname << "(execute): СORBA::SystemException: " ucrit << myname << "(execute): СORBA::SystemException: "
<< ex.NP_minorString() << endl; << ex.NP_minorString() << endl;
} }
catch( const std::exception&ex ) catch( const std::exception& ex )
{ {
ucrit << myname << "(execute): catch " << ex.what() << endl; ucrit << myname << "(execute): catch " << ex.what() << endl;
} }
...@@ -562,7 +577,7 @@ void UObject_SK::setValue( UniSetTypes::ObjectId _sid, long _val ) ...@@ -562,7 +577,7 @@ void UObject_SK::setValue( UniSetTypes::ObjectId _sid, long _val )
ui->setValue(_sid,_val); ui->setValue(_sid, _val);
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void UObject_SK::updateOutputs( bool _force ) void UObject_SK::updateOutputs( bool _force )
...@@ -584,7 +599,7 @@ void UObject_SK::initFromSM() ...@@ -584,7 +599,7 @@ void UObject_SK::initFromSM()
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void UObject_SK::askSensor( UniSetTypes::ObjectId _sid, UniversalIO::UIOCommand _cmd, UniSetTypes::ObjectId _node ) void UObject_SK::askSensor( UniSetTypes::ObjectId _sid, UniversalIO::UIOCommand _cmd, UniSetTypes::ObjectId _node )
{ {
ui->askRemoteSensor(_sid,_cmd,_node,getId()); ui->askRemoteSensor(_sid, _cmd, _node, getId());
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
long UObject_SK::getValue( UniSetTypes::ObjectId _sid ) long UObject_SK::getValue( UniSetTypes::ObjectId _sid )
...@@ -606,10 +621,12 @@ long UObject_SK::getValue( UniSetTypes::ObjectId _sid ) ...@@ -606,10 +621,12 @@ long UObject_SK::getValue( UniSetTypes::ObjectId _sid )
void UObject_SK::preAskSensors( UniversalIO::UIOCommand _cmd ) void UObject_SK::preAskSensors( UniversalIO::UIOCommand _cmd )
{ {
PassiveTimer ptAct(activateTimeout); PassiveTimer ptAct(activateTimeout);
while( !activated && !ptAct.checkTime() ) while( !activated && !ptAct.checkTime() )
{ {
cout << myname << "(preAskSensors): wait activate..." << endl; cout << myname << "(preAskSensors): wait activate..." << endl;
msleep(300); msleep(300);
if( activated ) if( activated )
break; break;
} }
...@@ -629,7 +646,7 @@ void UObject_SK::preAskSensors( UniversalIO::UIOCommand _cmd ) ...@@ -629,7 +646,7 @@ void UObject_SK::preAskSensors( UniversalIO::UIOCommand _cmd )
{ {
ucrit << myname << "(preAskSensors): " << ex << endl; ucrit << myname << "(preAskSensors): " << ex << endl;
} }
catch( const std::exception&ex ) catch( const std::exception& ex )
{ {
ucrit << myname << "(execute): catch " << ex.what() << endl; ucrit << myname << "(execute): catch " << ex.what() << endl;
} }
......
...@@ -72,7 +72,10 @@ class Trigger ...@@ -72,7 +72,10 @@ class Trigger
return false; return false;
} }
inline bool get(){ return oldstate; } inline bool get()
{
return oldstate;
}
private: private:
bool oldstate; /*!< предыдущее состояние */ bool oldstate; /*!< предыдущее состояние */
......
...@@ -116,6 +116,9 @@ class UniSetObject: ...@@ -116,6 +116,9 @@ class UniSetObject:
return (UniSetTypes::ObjectPtr)CORBA::Object::_duplicate(oref); return (UniSetTypes::ObjectPtr)CORBA::Object::_duplicate(oref);
} }
virtual timeout_t askTimer( UniSetTypes::TimerId timerid, timeout_t timeMS, clock_t ticks = -1,
UniSetTypes::Message::Priority p = UniSetTypes::Message::High ) override;
protected: protected:
/*! обработка приходящих сообщений */ /*! обработка приходящих сообщений */
virtual void processingMessage( UniSetTypes::VoidMessage* msg ); virtual void processingMessage( UniSetTypes::VoidMessage* msg );
...@@ -123,9 +126,6 @@ class UniSetObject: ...@@ -123,9 +126,6 @@ class UniSetObject:
virtual void sensorInfo( const UniSetTypes::SensorMessage* sm ) {} virtual void sensorInfo( const UniSetTypes::SensorMessage* sm ) {}
virtual void timerInfo( const UniSetTypes::TimerMessage* tm ) {} virtual void timerInfo( const UniSetTypes::TimerMessage* tm ) {}
virtual timeout_t askTimer( UniSetTypes::TimerId timerid, timeout_t timeMS, clock_t ticks = -1,
UniSetTypes::Message::Priority p = UniSetTypes::Message::High ) override;
/*! Получить сообщение */ /*! Получить сообщение */
bool receiveMessage( UniSetTypes::VoidMessage& vm ); bool receiveMessage( UniSetTypes::VoidMessage& vm );
......
...@@ -994,7 +994,7 @@ mbErrCode ModbusClient::recv_pdu( ModbusByte qfunc, ModbusMessage& rbuf, timeout ...@@ -994,7 +994,7 @@ mbErrCode ModbusClient::recv_pdu( ModbusByte qfunc, ModbusMessage& rbuf, timeout
{ {
size_t onum = 0; size_t onum = 0;
while( (rlen+2) < sizeof(rbuf.data) && onum < mPreRDI.objNum ) while( (rlen + 2) < sizeof(rbuf.data) && onum < mPreRDI.objNum )
{ {
// сперва получаем два байта, для определения длины последующих данных // сперва получаем два байта, для определения длины последующих данных
size_t szDataLen = 2; // object id + len size_t szDataLen = 2; // object id + len
......
...@@ -96,7 +96,8 @@ mbErrCode ModbusRTUSlave::receive(const std::unordered_set<ModbusAddr>& vmbaddr, ...@@ -96,7 +96,8 @@ mbErrCode ModbusRTUSlave::receive(const std::unordered_set<ModbusAddr>& vmbaddr,
if( aftersend_msec > 0 ) if( aftersend_msec > 0 )
msleep(aftersend_msec); msleep(aftersend_msec);
// usleep(10000);
// usleep(10000);
return res; return res;
} }
......
...@@ -72,16 +72,18 @@ bool ModbusServer::checkAddr(const std::unordered_set<ModbusAddr>& vaddr, const ...@@ -72,16 +72,18 @@ bool ModbusServer::checkAddr(const std::unordered_set<ModbusAddr>& vaddr, const
return true; return true;
auto i = vaddr.find(addr); auto i = vaddr.find(addr);
return (i!=vaddr.end()); return (i != vaddr.end());
} }
// -------------------------------------------------------------------------------- // --------------------------------------------------------------------------------
std::string ModbusServer::vaddr2str( const std::unordered_set<ModbusAddr>& vaddr ) std::string ModbusServer::vaddr2str( const std::unordered_set<ModbusAddr>& vaddr )
{ {
ostringstream s; ostringstream s;
s << "[ "; s << "[ ";
for( const auto& a: vaddr )
for( const auto& a : vaddr )
s << addr2str(a) << " "; s << addr2str(a) << " ";
s <<"]";
s << "]";
return std::move(s.str()); return std::move(s.str());
} }
...@@ -583,7 +585,7 @@ mbErrCode ModbusServer::recv( const std::unordered_set<ModbusRTU::ModbusAddr>& v ...@@ -583,7 +585,7 @@ mbErrCode ModbusServer::recv( const std::unordered_set<ModbusRTU::ModbusAddr>& v
{ {
bcnt = getNextData((unsigned char*)(&rbuf), sizeof(ModbusAddr)); bcnt = getNextData((unsigned char*)(&rbuf), sizeof(ModbusAddr));
if( bcnt > 0 && checkAddr(vaddr,rbuf.addr) ) if( bcnt > 0 && checkAddr(vaddr, rbuf.addr) )
{ {
begin = true; begin = true;
break; break;
...@@ -599,7 +601,7 @@ mbErrCode ModbusServer::recv( const std::unordered_set<ModbusRTU::ModbusAddr>& v ...@@ -599,7 +601,7 @@ mbErrCode ModbusServer::recv( const std::unordered_set<ModbusRTU::ModbusAddr>& v
// Lav: конечно стоит, нам же надо буфер чистить // Lav: конечно стоит, нам же надо буфер чистить
*/ */
// Проверка кому адресован пакет... (только если не включён режим отвечать на любые адреса) // Проверка кому адресован пакет... (только если не включён режим отвечать на любые адреса)
if( !(onBroadcast && rbuf.addr == BroadcastAddr) && !checkAddr(vaddr,rbuf.addr) ) if( !(onBroadcast && rbuf.addr == BroadcastAddr) && !checkAddr(vaddr, rbuf.addr) )
{ {
if( dlog->is_warn() ) if( dlog->is_warn() )
{ {
...@@ -1505,7 +1507,7 @@ std::unordered_set<ModbusAddr> ModbusServer::addr2vaddr(ModbusAddr& mbaddr) ...@@ -1505,7 +1507,7 @@ std::unordered_set<ModbusAddr> ModbusServer::addr2vaddr(ModbusAddr& mbaddr)
mbErrCode ModbusServer::receive_one( ModbusAddr a, timeout_t msec ) mbErrCode ModbusServer::receive_one( ModbusAddr a, timeout_t msec )
{ {
auto v = addr2vaddr(a); auto v = addr2vaddr(a);
return receive(v,msec); return receive(v, msec);
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
...@@ -1548,6 +1550,7 @@ ModbusRTU::mbErrCode ModbusServer::replyFileTransfer( const std::string& fname, ...@@ -1548,6 +1550,7 @@ ModbusRTU::mbErrCode ModbusServer::replyFileTransfer( const std::string& fname,
if( ret == -1 ) if( ret == -1 )
{ {
close(fd); close(fd);
if( dlog && dlog->is_warn() ) if( dlog && dlog->is_warn() )
(*dlog)[Debug::WARN] << "(replyFileTransfer): open '" << fname << "' with error: " << strerror(errno) << endl; (*dlog)[Debug::WARN] << "(replyFileTransfer): open '" << fname << "' with error: " << strerror(errno) << endl;
...@@ -1561,6 +1564,7 @@ ModbusRTU::mbErrCode ModbusServer::replyFileTransfer( const std::string& fname, ...@@ -1561,6 +1564,7 @@ ModbusRTU::mbErrCode ModbusServer::replyFileTransfer( const std::string& fname,
if( ret < 0 ) if( ret < 0 )
{ {
close(fd); close(fd);
if( dlog && dlog->is_warn() ) if( dlog && dlog->is_warn() )
(*dlog)[Debug::WARN] << "(replyFileTransfer): read from '" << fname << "' with error: " << strerror(errno) << endl; (*dlog)[Debug::WARN] << "(replyFileTransfer): read from '" << fname << "' with error: " << strerror(errno) << endl;
...@@ -1572,6 +1576,7 @@ ModbusRTU::mbErrCode ModbusServer::replyFileTransfer( const std::string& fname, ...@@ -1572,6 +1576,7 @@ ModbusRTU::mbErrCode ModbusServer::replyFileTransfer( const std::string& fname,
if( fstat(fd, &fs) < 0 ) if( fstat(fd, &fs) < 0 )
{ {
close(fd); close(fd);
if( dlog && dlog->is_warn() ) if( dlog && dlog->is_warn() )
(*dlog)[Debug::WARN] << "(replyFileTransfer): fstat for '" << fname << "' with error: " << strerror(errno) << endl; (*dlog)[Debug::WARN] << "(replyFileTransfer): fstat for '" << fname << "' with error: " << strerror(errno) << endl;
...@@ -1620,7 +1625,7 @@ ModbusRTU::mbErrCode ModbusServer::replySetDateTime( ModbusRTU::SetDateTimeMessa ...@@ -1620,7 +1625,7 @@ ModbusRTU::mbErrCode ModbusServer::replySetDateTime( ModbusRTU::SetDateTimeMessa
set.tv_sec = mktime(&t); // может вернуть -1 (!) set.tv_sec = mktime(&t); // может вернуть -1 (!)
set.tv_usec = 0; set.tv_usec = 0;
if( set.tv_sec >=0 && settimeofday(&set, &tz) == 0 ) if( set.tv_sec >= 0 && settimeofday(&set, &tz) == 0 )
{ {
// подтверждаем сохранение // подтверждаем сохранение
// в ответе возвращаем установленное время... // в ответе возвращаем установленное время...
......
...@@ -232,6 +232,7 @@ mbErrCode ModbusTCPServer::receive(const std::unordered_set<ModbusAddr>& vmbaddr ...@@ -232,6 +232,7 @@ mbErrCode ModbusTCPServer::receive(const std::unordered_set<ModbusAddr>& vmbaddr
{ {
if( dlog->is_crit() ) if( dlog->is_crit() )
dlog->crit() << "(ModbusTCPServer): " << e.what() << endl; dlog->crit() << "(ModbusTCPServer): " << e.what() << endl;
return erInternalErrorCode; return erInternalErrorCode;
} }
......
...@@ -33,8 +33,9 @@ ModbusTCPSession::ModbusTCPSession(ost::TCPSocket& server, const std::unordered_ ...@@ -33,8 +33,9 @@ ModbusTCPSession::ModbusTCPSession(ost::TCPSocket& server, const std::unordered_
{ {
setCRCNoCheckit(true); setCRCNoCheckit(true);
timeout_t tout = timeout/1000; timeout_t tout = timeout / 1000;
if( tout <=0 )
if( tout <= 0 )
tout = 3; tout = 3;
setKeepAlive(true); setKeepAlive(true);
......
...@@ -997,6 +997,7 @@ ModbusMessage ReadOutputRetMessage::transport_msg() ...@@ -997,6 +997,7 @@ ModbusMessage ReadOutputRetMessage::transport_msg()
ind += bcnt; ind += bcnt;
} }
// пересчитываем CRC по перевёрнутым данным // пересчитываем CRC по перевёрнутым данным
ModbusData crc = checkCRC( (ModbusByte*)(&mm), szModbusHeader + sizeof(bcnt) + bcnt ); ModbusData crc = checkCRC( (ModbusByte*)(&mm), szModbusHeader + sizeof(bcnt) + bcnt );
...@@ -1209,6 +1210,7 @@ ModbusMessage ReadInputRetMessage::transport_msg() ...@@ -1209,6 +1210,7 @@ ModbusMessage ReadInputRetMessage::transport_msg()
ind += bcnt; ind += bcnt;
} }
// пересчитываем CRC по перевёрнутым данным // пересчитываем CRC по перевёрнутым данным
ModbusData crc = checkCRC( (ModbusByte*)(&mm), szModbusHeader + sizeof(bcnt) + bcnt ); ModbusData crc = checkCRC( (ModbusByte*)(&mm), szModbusHeader + sizeof(bcnt) + bcnt );
......
...@@ -28,6 +28,7 @@ bool UTCPStream::setKeepAliveParams(timeout_t timeout_sec, int keepcnt, int keep ...@@ -28,6 +28,7 @@ bool UTCPStream::setKeepAliveParams(timeout_t timeout_sec, int keepcnt, int keep
SOCKET fd = TCPStream::so; SOCKET fd = TCPStream::so;
int enable = 1; int enable = 1;
bool ok = true; bool ok = true;
if( setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, (void*)&enable, sizeof(enable)) == -1 ) if( setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, (void*)&enable, sizeof(enable)) == -1 )
ok = false; ok = false;
......
...@@ -307,7 +307,7 @@ void LogReader::readlogs( const std::string& _addr, ost::tpport_t _port, LogServ ...@@ -307,7 +307,7 @@ void LogReader::readlogs( const std::string& _addr, ost::tpport_t _port, LogServ
log << buf; log << buf;
} }
else if( n == 0 && readcount <=0 ) else if( n == 0 && readcount <= 0 )
break; break;
if( rcount > 0 && readcount > 0 ) if( rcount > 0 && readcount > 0 )
......
...@@ -31,6 +31,7 @@ LogServer::~LogServer() ...@@ -31,6 +31,7 @@ LogServer::~LogServer()
if( thr ) if( thr )
{ {
thr->stop(); thr->stop();
if( thr->isRunning() ) if( thr->isRunning() )
thr->join(); thr->join();
} }
......
...@@ -19,6 +19,7 @@ using namespace UniSetTypes; ...@@ -19,6 +19,7 @@ using namespace UniSetTypes;
LogSession::~LogSession() LogSession::~LogSession()
{ {
cancelled = true; cancelled = true;
if( isRunning() ) if( isRunning() )
{ {
ost::Thread::join(); ost::Thread::join();
...@@ -310,6 +311,7 @@ void LogSession::run() ...@@ -310,6 +311,7 @@ void LogSession::run()
disconnect(); disconnect();
cancelled = true; cancelled = true;
if( slog.debugging(Debug::INFO) ) if( slog.debugging(Debug::INFO) )
slog[Debug::INFO] << peername << "(run): thread stopping..." << endl; slog[Debug::INFO] << peername << "(run): thread stopping..." << endl;
...@@ -325,6 +327,7 @@ void LogSession::final() ...@@ -325,6 +327,7 @@ void LogSession::final()
try try
{ {
auto s = shared_from_this(); auto s = shared_from_this();
if( s ) if( s )
slFin(s); slFin(s);
} }
...@@ -350,8 +353,8 @@ NullLogSession::~NullLogSession() ...@@ -350,8 +353,8 @@ NullLogSession::~NullLogSession()
{ {
cancelled = true; cancelled = true;
// if( isRunning() ) // if( isRunning() )
// exit(); // terminate(); // exit(); // terminate();
} }
// --------------------------------------------------------------------- // ---------------------------------------------------------------------
void NullLogSession::add( ost::TCPSocket& sock ) void NullLogSession::add( ost::TCPSocket& sock )
......
...@@ -204,11 +204,14 @@ void terminate_thread() ...@@ -204,11 +204,14 @@ void terminate_thread()
g_act->terminated(g_signo); g_act->terminated(g_signo);
#if 0 #if 0
try try
{ {
ulogsys << "TERMINATE THREAD: orb shutdown.." << endl; ulogsys << "TERMINATE THREAD: orb shutdown.." << endl;
if( g_act->orb ) if( g_act->orb )
g_act->orb->shutdown(true); g_act->orb->shutdown(true);
ulogsys << "TERMINATE THREAD: orb shutdown ok.." << endl; ulogsys << "TERMINATE THREAD: orb shutdown ok.." << endl;
} }
catch( const omniORB::fatalException& fe ) catch( const omniORB::fatalException& fe )
...@@ -222,7 +225,9 @@ void terminate_thread() ...@@ -222,7 +225,9 @@ void terminate_thread()
{ {
ulogsys << "(TERMINATE THREAD): " << ex.what() << endl; ulogsys << "(TERMINATE THREAD): " << ex.what() << endl;
} }
#endif #endif
if( g_fini_thread && g_fini_thread->joinable() ) if( g_fini_thread && g_fini_thread->joinable() )
g_fini_thread->join(); g_fini_thread->join();
...@@ -385,8 +390,10 @@ void UniSetActivator::uaDestroy(int signo) ...@@ -385,8 +390,10 @@ void UniSetActivator::uaDestroy(int signo)
try try
{ {
ulogsys << myname << "(uaDestroy): shutdown orb... " << endl; ulogsys << myname << "(uaDestroy): shutdown orb... " << endl;
if( orb ) if( orb )
orb->shutdown(true); orb->shutdown(true);
ulogsys << myname << "(uaDestroy): shutdown ok." << endl; ulogsys << myname << "(uaDestroy): shutdown ok." << endl;
} }
catch( const omniORB::fatalException& fe ) catch( const omniORB::fatalException& fe )
......
...@@ -133,6 +133,7 @@ UniSetObject::UniSetObject( const string& name, const string& section ): ...@@ -133,6 +133,7 @@ UniSetObject::UniSetObject( const string& name, const string& section ):
UniSetObject::~UniSetObject() UniSetObject::~UniSetObject()
{ {
#if 0 #if 0
try try
{ {
deactivate(); deactivate();
...@@ -156,6 +157,7 @@ UniSetObject::~UniSetObject() ...@@ -156,6 +157,7 @@ UniSetObject::~UniSetObject()
} }
catch(...) {} catch(...) {}
} }
#endif #endif
} }
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
......
...@@ -196,6 +196,7 @@ namespace UniSetTypes ...@@ -196,6 +196,7 @@ namespace UniSetTypes
xmlNodesSec = 0; xmlNodesSec = 0;
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
char curdir[FILENAME_MAX]; char curdir[FILENAME_MAX];
if( getcwd(curdir, FILENAME_MAX) == NULL ) if( getcwd(curdir, FILENAME_MAX) == NULL )
rootDir = ""; rootDir = "";
else else
......
...@@ -130,7 +130,8 @@ timeout_t LT_Object::getTimeInterval( TimerId timerid ) ...@@ -130,7 +130,8 @@ timeout_t LT_Object::getTimeInterval( TimerId timerid )
{ {
// lock // lock
uniset_rwmutex_rlock lock(lstMutex); uniset_rwmutex_rlock lock(lstMutex);
for( const auto& li: tlst )
for( const auto& li : tlst )
{ {
if( li.id == timerid ) if( li.id == timerid )
return li.tmr.getInterval(); return li.tmr.getInterval();
...@@ -143,7 +144,8 @@ timeout_t LT_Object::getTimeLeft(TimerId timerid) ...@@ -143,7 +144,8 @@ timeout_t LT_Object::getTimeLeft(TimerId timerid)
{ {
// lock // lock
uniset_rwmutex_rlock lock(lstMutex); uniset_rwmutex_rlock lock(lstMutex);
for( const auto& li: tlst )
for( const auto& li : tlst )
{ {
if( li.id == timerid ) if( li.id == timerid )
return li.curTimeMS; return li.curTimeMS;
......
...@@ -48,6 +48,7 @@ bool RunLock::isLocked( const string& name ) ...@@ -48,6 +48,7 @@ bool RunLock::isLocked( const string& name )
char ptr[10]; char ptr[10];
int n = fscanf( out, "%9s", ptr ); int n = fscanf( out, "%9s", ptr );
if( n < 1 ) if( n < 1 )
{ {
fclose(out); fclose(out);
......
...@@ -117,8 +117,9 @@ void SMonitor::sensorInfo( const SensorMessage* si ) ...@@ -117,8 +117,9 @@ void SMonitor::sensorInfo( const SensorMessage* si )
int ret = system(cmd.str().c_str()); int ret = system(cmd.str().c_str());
int res = WEXITSTATUS(ret); int res = WEXITSTATUS(ret);
if( res != 0 ) if( res != 0 )
cerr << "run script '" <<cmd.str() << "' failed.." << endl; cerr << "run script '" << cmd.str() << "' failed.." << endl;
// if( WIFSIGNALED(ret) && (WTERMSIG(ret) == SIGINT || WTERMSIG(ret) == SIGQUIT)) // if( WIFSIGNALED(ret) && (WTERMSIG(ret) == SIGINT || WTERMSIG(ret) == SIGQUIT))
// { // {
......
...@@ -113,9 +113,12 @@ std::ostream& operator<<( std::ostream& os, VMonitor& m ) ...@@ -113,9 +113,12 @@ std::ostream& operator<<( std::ostream& os, VMonitor& m )
{ {
auto vlist = m.getList(); auto vlist = m.getList();
// сортируем по алфавиту // сортируем по алфавиту
vlist.sort( []( const std::pair<std::string,std::string> &a, const std::pair<std::string,std::string> &b ) { return a.first < b.first; }); vlist.sort( []( const std::pair<std::string, std::string>& a, const std::pair<std::string, std::string>& b )
{
return a.first < b.first;
});
for( const auto& e: vlist ) for( const auto& e : vlist )
os << e.first << " = " << e.second; os << e.first << " = " << e.second;
return os; return os;
...@@ -130,15 +133,15 @@ std::string VMonitor::str() ...@@ -130,15 +133,15 @@ std::string VMonitor::str()
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
std::list<std::pair<std::string, std::string> > VMonitor::getList() std::list<std::pair<std::string, std::string> > VMonitor::getList()
{ {
std::list<std::pair<std::string,std::string>> vlist; std::list<std::pair<std::string, std::string>> vlist;
VMON_MAKE_PAIR2(vlist,int); VMON_MAKE_PAIR2(vlist, int);
VMON_MAKE_PAIR2(vlist,long); VMON_MAKE_PAIR2(vlist, long);
VMON_MAKE_PAIR2(vlist,short); VMON_MAKE_PAIR2(vlist, short);
VMON_MAKE_PAIR_CHAR(vlist); VMON_MAKE_PAIR_CHAR(vlist);
VMON_MAKE_PAIR(vlist,bool); VMON_MAKE_PAIR(vlist, bool);
VMON_MAKE_PAIR(vlist,float); VMON_MAKE_PAIR(vlist, float);
VMON_MAKE_PAIR(vlist,double); VMON_MAKE_PAIR(vlist, double);
VMON_MAKE_PAIR_S(vlist,string); VMON_MAKE_PAIR_S(vlist, string);
return std::move(vlist); return std::move(vlist);
} }
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
...@@ -148,13 +151,18 @@ std::string VMonitor::pretty_str( int namewidth, int colnum ) ...@@ -148,13 +151,18 @@ std::string VMonitor::pretty_str( int namewidth, int colnum )
std::ostringstream os; std::ostringstream os;
// сортируем по алфавиту // сортируем по алфавиту
vlist.sort( []( const std::pair<std::string,std::string> &a, const std::pair<std::string,std::string> &b ) { return a.first < b.first; }); vlist.sort( []( const std::pair<std::string, std::string>& a, const std::pair<std::string, std::string>& b )
{
return a.first < b.first;
});
int n = 0; int n = 0;
for( const auto& e: vlist )
for( const auto& e : vlist )
{ {
os << std::right << std::setw(namewidth) << e.first << std::left << " = " << std::right << std::setw(10) << e.second; os << std::right << std::setw(namewidth) << e.first << std::left << " = " << std::right << std::setw(10) << e.second;
if( (n++)%colnum )
if( (n++) % colnum )
os << std::endl; os << std::endl;
} }
......
...@@ -32,6 +32,7 @@ bool WDTInterface::ping() ...@@ -32,6 +32,7 @@ bool WDTInterface::ping()
} }
int ret = write(fd, (void*)CMD_PING, sizeof(CMD_PING)); int ret = write(fd, (void*)CMD_PING, sizeof(CMD_PING));
if( ret == -1 ) if( ret == -1 )
{ {
cerr << ": Unable to open device " << dev << " with err: " << strerror(errno) << endl; cerr << ": Unable to open device " << dev << " with err: " << strerror(errno) << endl;
...@@ -54,6 +55,7 @@ bool WDTInterface::stop() ...@@ -54,6 +55,7 @@ bool WDTInterface::stop()
} }
int ret = write(fd, (void*)CMD_STOP, sizeof(CMD_STOP)); int ret = write(fd, (void*)CMD_STOP, sizeof(CMD_STOP));
if( ret == -1 ) if( ret == -1 )
{ {
cerr << ": Unable to open device " << dev << " with err: " << strerror(errno) << endl; cerr << ": Unable to open device " << dev << " with err: " << strerror(errno) << endl;
......
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