Commit e959c3a8 authored by Pavel Vainerman's avatar Pavel Vainerman

Исправления ошибок по результатам компиляции с -Werror

parent fe804c9f
...@@ -275,7 +275,7 @@ AM_CONDITIONAL(HAVE_COVERAGE, test ${buildgcov} = true) ...@@ -275,7 +275,7 @@ AM_CONDITIONAL(HAVE_COVERAGE, test ${buildgcov} = true)
AM_CONDITIONAL(HAVE_TESTS, test ${buildtests} = true) AM_CONDITIONAL(HAVE_TESTS, test ${buildtests} = true)
# -Weffc++ # -Weffc++
CXX_EXTRA_FLAGS="-Wnon-virtual-dtor -Wctor-dtor-privacy -Woverloaded-virtual" CXX_EXTRA_FLAGS="-Wnon-virtual-dtor -Wctor-dtor-privacy -Woverloaded-virtual -Werror"
# export # export
LDFLAGS="$LDFLAGS ${OMNI_LIBS} ${XML_LIBS} ${SIGC_LIBS} ${COV_LIBS} ${COMCPP_LIBS}" LDFLAGS="$LDFLAGS ${OMNI_LIBS} ${XML_LIBS} ${SIGC_LIBS} ${COV_LIBS} ${COMCPP_LIBS}"
......
...@@ -207,7 +207,7 @@ PostgreSQLResult::PostgreSQLResult( const pqxx::result& res ) ...@@ -207,7 +207,7 @@ PostgreSQLResult::PostgreSQLResult( const pqxx::result& res )
{ {
COL col; COL col;
for( int i = 0; i < c.size(); i++ ) for( size_t i = 0; i < c.size(); i++ )
col.push_back( c[i].as<string>() ); col.push_back( c[i].as<string>() );
row.push_back(col); row.push_back(col);
......
...@@ -6,11 +6,6 @@ ...@@ -6,11 +6,6 @@
using namespace UniSetTypes; using namespace UniSetTypes;
using namespace std; using namespace std;
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
static void short_usage()
{
cout << "Usage: uniset-mysql-dbserver [--name ObjectId] [--confile configure.xml]\n";
}
// --------------------------------------------------------------------------
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
// std::ios::sync_with_stdio(false); // std::ios::sync_with_stdio(false);
......
...@@ -124,7 +124,7 @@ class TOR: ...@@ -124,7 +124,7 @@ class TOR:
{ {
public: public:
TOR( ElementID id, int numbers = 0, bool st = false ); TOR( ElementID id, unsigned int numbers = 0, bool st = false );
virtual ~TOR(); virtual ~TOR();
virtual void setIn( int num, bool state ) override; virtual void setIn( int num, bool state ) override;
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
using namespace std; using namespace std;
using namespace UniSetExtensions; using namespace UniSetExtensions;
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
TDelay::TDelay( Element::ElementID id, int delayMS, int inCount): TDelay::TDelay( Element::ElementID id, timeout_t delayMS, unsigned int inCount):
Element(id), Element(id),
myout(false), myout(false),
delay(delayMS) delay(delayMS)
...@@ -78,7 +78,7 @@ bool TDelay::getOut() ...@@ -78,7 +78,7 @@ bool TDelay::getOut()
return myout; return myout;
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
void TDelay::setDelay( int timeMS ) void TDelay::setDelay( timeout_t timeMS )
{ {
delay = timeMS; delay = timeMS;
} }
......
...@@ -11,7 +11,7 @@ class TDelay: ...@@ -11,7 +11,7 @@ class TDelay:
{ {
public: public:
TDelay( Element::ElementID id, int delayMS = 0, int inCount = 0 ); TDelay( Element::ElementID id, timeout_t delayMS = 0, unsigned int inCount = 0 );
virtual ~TDelay(); virtual ~TDelay();
...@@ -23,8 +23,8 @@ class TDelay: ...@@ -23,8 +23,8 @@ class TDelay:
return "Delay"; return "Delay";
} }
void setDelay( int timeMS ); void setDelay( timeout_t timeMS );
inline int getDelay() inline timeout_t getDelay()
{ {
return delay; return delay;
} }
...@@ -34,7 +34,7 @@ class TDelay: ...@@ -34,7 +34,7 @@ class TDelay:
bool myout; bool myout;
PassiveTimer pt; PassiveTimer pt;
int delay; timeout_t delay;
private: private:
}; };
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
using namespace std; using namespace std;
using namespace UniSetExtensions; using namespace UniSetExtensions;
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
TOR::TOR(ElementID id, int num, bool st): TOR::TOR(ElementID id, unsigned int num, bool st):
Element(id), Element(id),
myout(false) myout(false)
{ {
......
...@@ -139,12 +139,6 @@ TEST_CASE("Logic processor: elements", "[LogicProcessor][elements]") ...@@ -139,12 +139,6 @@ TEST_CASE("Logic processor: elements", "[LogicProcessor][elements]")
e.setDelay(0); e.setDelay(0);
e.setIn(1, true); e.setIn(1, true);
CHECK( e.getOut() ); CHECK( e.getOut() );
// delay < 0 === 0
e.setIn(1, false);
e.setDelay(-10);
e.setIn(1, true);
CHECK( e.getOut() );
} }
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
......
...@@ -1052,8 +1052,8 @@ bool MBExchange::pollRTU( std::shared_ptr<RTUDevice>& dev, RegMap::iterator& it ...@@ -1052,8 +1052,8 @@ bool MBExchange::pollRTU( std::shared_ptr<RTUDevice>& dev, RegMap::iterator& it
return true; return true;
} }
// cerr << "**** mbreg=" << ModbusRTU::dat2str(p->mbreg) << " val=" << ModbusRTU::dat2str(p->mbval) << endl; // игнорируем return т.к. в случае ошибки будет исключение..
ModbusRTU::WriteSingleOutputRetMessage ret = mb->write06(dev->mbaddr, p->mbreg, p->mbval); (void)mb->write06(dev->mbaddr, p->mbreg, p->mbval);
} }
break; break;
...@@ -1081,7 +1081,9 @@ bool MBExchange::pollRTU( std::shared_ptr<RTUDevice>& dev, RegMap::iterator& it ...@@ -1081,7 +1081,9 @@ bool MBExchange::pollRTU( std::shared_ptr<RTUDevice>& dev, RegMap::iterator& it
msg.addData(it->second->mbval); msg.addData(it->second->mbval);
it--; it--;
ModbusRTU::WriteOutputRetMessage ret = mb->write10(msg);
// игнорируем return т.к. в случае ошибки будет исключение..
(void)mb->write10(msg);
} }
break; break;
...@@ -1101,7 +1103,8 @@ bool MBExchange::pollRTU( std::shared_ptr<RTUDevice>& dev, RegMap::iterator& it ...@@ -1101,7 +1103,8 @@ bool MBExchange::pollRTU( std::shared_ptr<RTUDevice>& dev, RegMap::iterator& it
return true; return true;
} }
ModbusRTU::ForceSingleCoilRetMessage ret = mb->write05(dev->mbaddr, p->mbreg, p->mbval); // игнорируем return т.к. в случае ошибки будет исключение..
(void)mb->write05(dev->mbaddr, p->mbreg, p->mbval);
} }
break; break;
...@@ -1120,7 +1123,8 @@ bool MBExchange::pollRTU( std::shared_ptr<RTUDevice>& dev, RegMap::iterator& it ...@@ -1120,7 +1123,8 @@ bool MBExchange::pollRTU( std::shared_ptr<RTUDevice>& dev, RegMap::iterator& it
msg.addBit( (it->second->mbval ? true : false) ); msg.addBit( (it->second->mbval ? true : false) );
it--; it--;
ModbusRTU::ForceCoilsRetMessage ret = mb->write0F(msg); // игнорируем return т.к. в случае ошибки будет исключение..
(void)mb->write0F(msg);
} }
break; break;
......
...@@ -83,20 +83,6 @@ static void InitTest() ...@@ -83,20 +83,6 @@ static void InitTest()
} }
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
static bool init_iobase( IOBase* ib, const std::string& sensor )
{
InitTest();
auto conf = uniset_conf();
xmlNode* snode = conf->getXMLObjectNode( conf->getSensorID(sensor) );
CHECK( snode != 0 );
UniXML::iterator it(snode);
smi->initIterator(ib->d_it);
smi->initIterator(ib->ioit);
smi->initIterator(ib->t_ait);
return IOBase::initItem(ib, it, smi, "", false);
}
// -----------------------------------------------------------------------------
TEST_CASE("MBTCPMaster: 0x01 (read coil status)", "[modbus][0x01][mbmaster][mbtcpmaster]") TEST_CASE("MBTCPMaster: 0x01 (read coil status)", "[modbus][0x01][mbmaster][mbtcpmaster]")
{ {
InitTest(); InitTest();
...@@ -602,6 +588,21 @@ TEST_CASE("MBTCPMaster: 0x66 (file transfer)", "[modbus][0x66][mbmaster][mbtcpma ...@@ -602,6 +588,21 @@ TEST_CASE("MBTCPMaster: 0x66 (file transfer)", "[modbus][0x66][mbmaster][mbtcpma
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
#if 0 #if 0
// -----------------------------------------------------------------------------
static bool init_iobase( IOBase* ib, const std::string& sensor )
{
InitTest();
auto conf = uniset_conf();
xmlNode* snode = conf->getXMLObjectNode( conf->getSensorID(sensor) );
CHECK( snode != 0 );
UniXML::iterator it(snode);
smi->initIterator(ib->d_it);
smi->initIterator(ib->ioit);
smi->initIterator(ib->t_ait);
return IOBase::initItem(ib, it, smi, "", false);
}
// -----------------------------------------------------------------------------
TEST_CASE("MBTCPMaster: 0x10 (F2)", "[modbus][0x10][F2][mbmaster][mbtcpmaster]") TEST_CASE("MBTCPMaster: 0x10 (F2)", "[modbus][0x10][F2][mbmaster][mbtcpmaster]")
{ {
InitTest(); InitTest();
......
...@@ -28,7 +28,6 @@ using namespace UniSetExtensions; ...@@ -28,7 +28,6 @@ using namespace UniSetExtensions;
const unsigned int MaxAddNum = 10; const unsigned int MaxAddNum = 10;
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
static void help_print( int argc, const char* argv[] ); static void help_print( int argc, const char* argv[] );
static std::shared_ptr<LogServer> run_logserver( const std::string& cnamem, std::shared_ptr<LogAgregator>& log );
#ifdef UNISET_ENABLE_IO #ifdef UNISET_ENABLE_IO
std::list< ThreadCreator<IOControl>* > lst_iothr; std::list< ThreadCreator<IOControl>* > lst_iothr;
#endif #endif
...@@ -295,49 +294,3 @@ void help_print( int argc, const char* argv[] ) ...@@ -295,49 +294,3 @@ void help_print( int argc, const char* argv[] )
cout << "--logfile - Use logfile. Default: smemory-plus.log" << endl; cout << "--logfile - Use logfile. Default: smemory-plus.log" << endl;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
std::shared_ptr<LogServer> run_logserver( const std::string& cname, std::shared_ptr<LogAgregator>& log )
{
auto conf = uniset_conf();
auto xml = conf->getConfXML();
xmlNode* cnode = conf->findNode(xml->getFirstNode(), "LogServer", cname);
if( cnode == 0 )
{
cerr << "(init_ulogserver): Not found xmlnode for '" << cname << "'" << endl;
return 0;
}
UniXML::iterator it(cnode);
auto ls = make_shared<LogServer>( log );
timeout_t sessTimeout = conf->getArgPInt("--" + cname + "-session-timeout", it.getProp("sessTimeout"), 3600000);
timeout_t cmdTimeout = conf->getArgPInt("--" + cname + "-cmd-timeout", it.getProp("cmdTimeout"), 2000);
timeout_t outTimeout = conf->getArgPInt("--" + cname + "-out-timeout", it.getProp("outTimeout"), 2000);
ls->setSessionTimeout(sessTimeout);
ls->setCmdTimeout(cmdTimeout);
ls->setOutTimeout(outTimeout);
std::string host = conf->getArgParam("--" + cname + "-host", it.getProp("host"));
if( host.empty() )
{
cerr << "(init_ulogserver): " << cname << ": unknown host.." << endl;
return nullptr;
}
ost::tpport_t port = conf->getArgPInt("--" + cname + "-port", it.getProp("port"), 0);
if( port == 0 )
{
cerr << "(init_ulogserver): " << cname << ": unknown port.." << endl;
return nullptr;
}
cout << "logserver: " << host << ":" << port << endl;
ls->run(host, port, true);
return ls;
}
// -----------------------------------------------------------------------------
...@@ -61,7 +61,7 @@ namespace UniSetUDP ...@@ -61,7 +61,7 @@ namespace UniSetUDP
{ {
UDPPacket(): len(0) {} UDPPacket(): len(0) {}
int len; size_t len;
unsigned char data[ sizeof(UDPHeader) + MaxDCount * sizeof(long) + MaxDDataCount + MaxACount * sizeof(UDPAData) ]; unsigned char data[ sizeof(UDPHeader) + MaxDCount * sizeof(long) + MaxDDataCount + MaxACount * sizeof(UDPAData) ];
} __attribute__((packed)); } __attribute__((packed));
......
...@@ -349,7 +349,7 @@ bool UNetSender::initItem( UniXML::iterator& it ) ...@@ -349,7 +349,7 @@ bool UNetSender::initItem( UniXML::iterator& it )
if( p.iotype == UniversalIO::DI || p.iotype == UniversalIO::DO ) if( p.iotype == UniversalIO::DI || p.iotype == UniversalIO::DO )
{ {
int dnum = packs_dnum[priority]; size_t dnum = packs_dnum[priority];
if( pk.size() <= dnum ) if( pk.size() <= dnum )
pk.resize(dnum + 1); pk.resize(dnum + 1);
...@@ -386,7 +386,7 @@ bool UNetSender::initItem( UniXML::iterator& it ) ...@@ -386,7 +386,7 @@ bool UNetSender::initItem( UniXML::iterator& it )
} }
else if( p.iotype == UniversalIO::AI || p.iotype == UniversalIO::AO ) else if( p.iotype == UniversalIO::AI || p.iotype == UniversalIO::AO )
{ {
int anum = packs_anum[priority]; size_t anum = packs_anum[priority];
if( pk.size() <= anum ) if( pk.size() <= anum )
pk.resize(anum + 1); pk.resize(anum + 1);
...@@ -452,7 +452,7 @@ void UNetSender::askSensors( UniversalIO::UIOCommand cmd ) ...@@ -452,7 +452,7 @@ void UNetSender::askSensors( UniversalIO::UIOCommand cmd )
shm->askSensor(it.id, cmd); shm->askSensor(it.id, cmd);
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
int UNetSender::getDataPackCount() const size_t UNetSender::getDataPackCount() const
{ {
return mypacks.size(); return mypacks.size();
} }
......
...@@ -48,15 +48,15 @@ class UNetSender ...@@ -48,15 +48,15 @@ class UNetSender
UItem(): UItem():
iotype(UniversalIO::UnknownIOType), iotype(UniversalIO::UnknownIOType),
id(UniSetTypes::DefaultObjectId), id(UniSetTypes::DefaultObjectId),
pack_num(-1), pack_num(0),
pack_ind(-1), pack_ind(0),
pack_sendfactor(0) {} pack_sendfactor(0) {}
UniversalIO::IOType iotype; UniversalIO::IOType iotype;
UniSetTypes::ObjectId id; UniSetTypes::ObjectId id;
IOController::IOStateList::iterator ioit; IOController::IOStateList::iterator ioit;
int pack_num; size_t pack_num;
int pack_ind; size_t pack_ind;
sendfactor_t pack_sendfactor = { 0 }; sendfactor_t pack_sendfactor = { 0 };
friend std::ostream& operator<<( std::ostream& os, UItem& p ); friend std::ostream& operator<<( std::ostream& os, UItem& p );
...@@ -64,7 +64,7 @@ class UNetSender ...@@ -64,7 +64,7 @@ class UNetSender
typedef std::vector<UItem> DMap; typedef std::vector<UItem> DMap;
int getDataPackCount() const; size_t getDataPackCount() const;
void start(); void start();
void stop(); void stop();
...@@ -144,8 +144,8 @@ class UNetSender ...@@ -144,8 +144,8 @@ class UNetSender
std::string s_host = { "" }; std::string s_host = { "" };
std::string myname = { "" }; std::string myname = { "" };
int sendpause = { 150 }; timeout_t sendpause = { 150 };
int packsendpause = { 5 }; timeout_t packsendpause = { 5 };
std::atomic_bool activated = { false }; std::atomic_bool activated = { false };
UniSetTypes::uniset_rwmutex pack_mutex; UniSetTypes::uniset_rwmutex pack_mutex;
...@@ -153,11 +153,11 @@ class UNetSender ...@@ -153,11 +153,11 @@ class UNetSender
typedef std::unordered_map<sendfactor_t, std::vector<UniSetUDP::UDPMessage>> Packs; typedef std::unordered_map<sendfactor_t, std::vector<UniSetUDP::UDPMessage>> Packs;
Packs mypacks; Packs mypacks;
std::unordered_map<sendfactor_t, int> packs_anum; std::unordered_map<sendfactor_t, size_t> packs_anum;
std::unordered_map<sendfactor_t, int> packs_dnum; std::unordered_map<sendfactor_t, size_t> packs_dnum;
DMap dlist; DMap dlist;
int maxItem = { 0 }; size_t maxItem = { 0 };
unsigned long packetnum = { 1 }; /*!< номер очередного посылаемого пакета */ size_t packetnum = { 1 }; /*!< номер очередного посылаемого пакета */
unsigned short lastcrc = { 0 }; unsigned short lastcrc = { 0 };
UniSetUDP::UDPPacket s_msg; UniSetUDP::UDPPacket s_msg;
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
ВСЕ ВАШИ ИЗМЕНЕНИЯ БУДУТ ПОТЕРЯНЫ. ВСЕ ВАШИ ИЗМЕНЕНИЯ БУДУТ ПОТЕРЯНЫ.
*/ */
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
// generate timestamp: 2015-10-14+03:00 // generate timestamp: 2015-10-25+03:00
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
#ifndef UObject_SK_H_ #ifndef UObject_SK_H_
#define UObject_SK_H_ #define UObject_SK_H_
...@@ -191,9 +191,9 @@ class UObject_SK: ...@@ -191,9 +191,9 @@ class UObject_SK:
/*! получить текстовое свойство из конф. файла по привязанной 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); }
int smReadyTimeout; /*!< время ожидания готовности SM */ timeout_t smReadyTimeout; /*!< время ожидания готовности SM */
std::atomic_bool activated; std::atomic_bool activated;
int activateTimeout; /*!< время ожидания готовности UniSetObject к работе */ timeout_t activateTimeout; /*!< время ожидания готовности UniSetObject к работе */
PassiveTimer ptStartUpTimeout; /*!< время на блокировку обработки WatchDog, если недавно был StartUp */ PassiveTimer ptStartUpTimeout; /*!< время на блокировку обработки WatchDog, если недавно был StartUp */
int askPause; /*!< пауза между неудачными попытками заказать датчики */ int askPause; /*!< пауза между неудачными попытками заказать датчики */
......
...@@ -550,13 +550,13 @@ bool IOBase::initItem( IOBase* b, UniXML::iterator& it, const std::shared_ptr<SM ...@@ -550,13 +550,13 @@ bool IOBase::initItem( IOBase* b, UniXML::iterator& it, const std::shared_ptr<SM
b->breaklim = initIntProp(it, "breaklim", prefix, init_prefix_only); b->breaklim = initIntProp(it, "breaklim", prefix, init_prefix_only);
b->rawdata = initIntProp(it, "rawdata", prefix, init_prefix_only); b->rawdata = initIntProp(it, "rawdata", prefix, init_prefix_only);
long d_msec = initIntProp(it, "debouncedelay", prefix, init_prefix_only, UniSetTimer::WaitUpTime); timeout_t d_msec = initIntProp(it, "debouncedelay", prefix, init_prefix_only, UniSetTimer::WaitUpTime);
b->ptDebounce.setTiming(d_msec); b->ptDebounce.setTiming(d_msec);
long d_on_msec = initIntProp(it, "ondelay", prefix, init_prefix_only, UniSetTimer::WaitUpTime); timeout_t d_on_msec = initIntProp(it, "ondelay", prefix, init_prefix_only, UniSetTimer::WaitUpTime);
b->ptOnDelay.setTiming(d_on_msec); b->ptOnDelay.setTiming(d_on_msec);
long d_off_msec = initIntProp(it, "offdelay", prefix, init_prefix_only, UniSetTimer::WaitUpTime); timeout_t d_off_msec = initIntProp(it, "offdelay", prefix, init_prefix_only, UniSetTimer::WaitUpTime);
b->ptOffDelay.setTiming(d_off_msec); b->ptOffDelay.setTiming(d_off_msec);
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
ВСЕ ВАШИ ИЗМЕНЕНИЯ БУДУТ ПОТЕРЯНЫ. ВСЕ ВАШИ ИЗМЕНЕНИЯ БУДУТ ПОТЕРЯНЫ.
*/ */
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
// generate timestamp: 2015-10-14+03:00 // generate timestamp: 2015-10-25+03:00
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
#include <memory> #include <memory>
#include <iomanip> #include <iomanip>
...@@ -67,7 +67,6 @@ static const std::string init3_str( const std::string& s1, const std::string& s2 ...@@ -67,7 +67,6 @@ 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),
argprefix( (_argprefix.empty() ? myname+"-" : _argprefix) ),
// Инициализация идентификаторов (имена берутся из конф. файла) // Инициализация идентификаторов (имена берутся из конф. файла)
// Используемые идентификаторы сообщений (имена берутся из конф. файла) // Используемые идентификаторы сообщений (имена берутся из конф. файла)
...@@ -76,6 +75,7 @@ argprefix( (_argprefix.empty() ? myname+"-" : _argprefix) ), ...@@ -76,6 +75,7 @@ argprefix( (_argprefix.empty() ? myname+"-" : _argprefix) ),
sleep_msec(150), sleep_msec(150),
active(true), active(true),
argprefix( (_argprefix.empty() ? myname+"-" : _argprefix) ),
idHeartBeat(DefaultObjectId), idHeartBeat(DefaultObjectId),
maxHeartBeat(10), maxHeartBeat(10),
...@@ -155,6 +155,9 @@ end_private(false) ...@@ -155,6 +155,9 @@ end_private(false)
// Инициализация значений // Инициализация значений
si.id = UniSetTypes::DefaultObjectId;
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("");
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include <fcntl.h> #include <fcntl.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>
#include <string> #include <string>
#include <cc++/thread.h> // for use timeout_t
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
class ComPort class ComPort
{ {
...@@ -88,8 +89,8 @@ class ComPort ...@@ -88,8 +89,8 @@ class ComPort
void setCharacterSize(CharacterSize); void setCharacterSize(CharacterSize);
void setStopBits(StopBits sBit); void setStopBits(StopBits sBit);
virtual void setTimeout(int msec); virtual void setTimeout( timeout_t msec );
inline int getTimeout() inline timeout_t getTimeout()
{ {
return uTimeout / 1000; // msec return uTimeout / 1000; // msec
} }
...@@ -99,8 +100,8 @@ class ComPort ...@@ -99,8 +100,8 @@ class ComPort
virtual unsigned char receiveByte(); virtual unsigned char receiveByte();
virtual void sendByte(unsigned char x); virtual void sendByte(unsigned char x);
virtual int receiveBlock(unsigned char* msg, int len); virtual size_t receiveBlock(unsigned char* msg, size_t len);
virtual int sendBlock(unsigned char* msg, int len); virtual size_t sendBlock(unsigned char* msg, size_t len);
void setBlocking(bool blocking); void setBlocking(bool blocking);
...@@ -115,7 +116,7 @@ class ComPort ...@@ -115,7 +116,7 @@ class ComPort
int curSym = { 0 }; int curSym = { 0 };
int bufLength = { 0 }; int bufLength = { 0 };
int fd = { -1 }; int fd = { -1 };
int uTimeout = { 0 }; timeout_t uTimeout = { 0 };
bool waiting = { false }; bool waiting = { false };
Speed speed = ComSpeed38400; Speed speed = ComSpeed38400;
std::string dev = { "" }; std::string dev = { "" };
......
#ifndef _COMPORT_485F_H_ #ifndef COMPORT_485F_H_
#define _COMPORT_485F_H_ #define COMPORT_485F_H_
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
#include <queue> #include <queue>
#include "ComPort.h" #include "ComPort.h"
...@@ -23,16 +23,16 @@ class ComPort485F: ...@@ -23,16 +23,16 @@ class ComPort485F:
ComPort485F( const std::string& comDevice, int gpio_num, bool tmit_ctrl = false ); ComPort485F( const std::string& comDevice, int gpio_num, bool tmit_ctrl = false );
virtual void sendByte( unsigned char x ); virtual void sendByte( unsigned char x ) override;
virtual void setTimeout( int timeout ); virtual void setTimeout( timeout_t timeout ) override;
virtual int sendBlock( unsigned char* msg, int len ); virtual size_t sendBlock( unsigned char* msg, size_t len ) override;
virtual void cleanupChannel(); virtual void cleanupChannel() override;
virtual void reopen(); virtual void reopen() override;
protected: protected:
virtual unsigned char m_receiveByte( bool wait ); virtual unsigned char m_receiveByte( bool wait ) override;
void save2queue( unsigned char* msg, int len, int bnum ); void save2queue( unsigned char* msg, int len, int bnum );
bool remove_echo( unsigned char tb[], int len ); bool remove_echo( unsigned char tb[], int len );
void m_read( int tmsec ); void m_read( int tmsec );
...@@ -46,8 +46,8 @@ class ComPort485F: ...@@ -46,8 +46,8 @@ class ComPort485F:
int gpio_num; int gpio_num;
bool tmit_ctrl_on; bool tmit_ctrl_on;
PassiveTimer ptRecv; PassiveTimer ptRecv;
int tout_msec = { 2000 }; timeout_t tout_msec = { 2000 };
}; };
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
#endif // _COMPORT_E_H_ #endif // COMPORT_485F_H_
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
...@@ -170,7 +170,7 @@ class ModbusClient ...@@ -170,7 +170,7 @@ class ModbusClient
\param len - size of buf \param len - size of buf
\return real data lenght ( must be <= len ) \return real data lenght ( must be <= len )
*/ */
virtual int getNextData( unsigned char* buf, int len ) = 0; virtual size_t getNextData( unsigned char* buf, int len ) = 0;
/*! set timeout for send/receive data */ /*! set timeout for send/receive data */
virtual void setChannelTimeout( timeout_t msec ) = 0; virtual void setChannelTimeout( timeout_t msec ) = 0;
......
...@@ -46,7 +46,7 @@ class ModbusRTUMaster: ...@@ -46,7 +46,7 @@ class ModbusRTUMaster:
\param len - size of buf \param len - size of buf
\return real data lenght ( must be <= len ) \return real data lenght ( must be <= len )
*/ */
virtual int getNextData( unsigned char* buf, int len ) override; virtual size_t getNextData( unsigned char* buf, int len ) override;
/*! set timeout for send/receive data */ /*! set timeout for send/receive data */
virtual void setChannelTimeout( timeout_t msec ) override; virtual void setChannelTimeout( timeout_t msec ) override;
......
...@@ -9,9 +9,9 @@ ...@@ -9,9 +9,9 @@
/*! ModbusTCP core functions */ /*! ModbusTCP core functions */
namespace ModbusTCPCore namespace ModbusTCPCore
{ {
int readNextData( ost::TCPStream* tcp, std::queue<unsigned char>& qrecv, int max = 100 ); size_t readNextData( ost::TCPStream* tcp, std::queue<unsigned char>& qrecv, int max = 100 );
int getNextData( ost::TCPStream* tcp, std::queue<unsigned char>& qrecv, unsigned char* buf, int len ); size_t getNextData( ost::TCPStream* tcp, std::queue<unsigned char>& qrecv, unsigned char* buf, size_t len );
ModbusRTU::mbErrCode sendData( ost::TCPStream* tcp, unsigned char* buf, int len ); ModbusRTU::mbErrCode sendData( ost::TCPStream* tcp, unsigned char* buf, size_t len );
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
#endif // ModbusTCPCore_H_ #endif // ModbusTCPCore_H_
......
...@@ -49,7 +49,7 @@ class ModbusTCPMaster: ...@@ -49,7 +49,7 @@ class ModbusTCPMaster:
protected: protected:
virtual int getNextData( unsigned char* buf, int len ) override; virtual size_t getNextData( unsigned char* buf, int len ) override;
virtual void setChannelTimeout( timeout_t msec ) override; virtual void setChannelTimeout( timeout_t msec ) override;
virtual ModbusRTU::mbErrCode sendData( unsigned char* buf, int len ) override; virtual ModbusRTU::mbErrCode sendData( unsigned char* buf, int len ) override;
virtual ModbusRTU::mbErrCode query( ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusMessage& msg, virtual ModbusRTU::mbErrCode query( ModbusRTU::ModbusAddr addr, ModbusRTU::ModbusMessage& msg,
......
...@@ -175,7 +175,7 @@ namespace ModbusRTU ...@@ -175,7 +175,7 @@ namespace ModbusRTU
ModbusByte data[MAXLENPACKET + szCRC]; /*!< данные */ ModbusByte data[MAXLENPACKET + szCRC]; /*!< данные */
// Это поле вспомогательное и игнорируется при пересылке // Это поле вспомогательное и игнорируется при пересылке
int len; /*!< фактическая длина */ size_t len; /*!< фактическая длина */
} __attribute__((packed)); } __attribute__((packed));
std::ostream& operator<<(std::ostream& os, ModbusMessage& m ); std::ostream& operator<<(std::ostream& os, ModbusMessage& m );
......
...@@ -49,8 +49,10 @@ _pyUExceptions_la_LIBADD = $(UNISET_LIBS) $(UNISET_EXT_LIBS) $(PYTHON_LIBS) ...@@ -49,8 +49,10 @@ _pyUExceptions_la_LIBADD = $(UNISET_LIBS) $(UNISET_EXT_LIBS) $(PYTHON_LIBS)
UExceptions_wrap.cxx: UExceptions.i UExceptions.h UExceptions_wrap.cxx: UExceptions.i UExceptions.h
swig -python -c++ -classic UExceptions.i swig -python -c++ -classic UExceptions.i
clean-local: # Специальное правило для удаления сгенерированного кода
rm -rf *.py* # для дальнейшей перегенерации
clean-gen:
rm -rf *.py* *_wrap.cxx
include $(top_builddir)/include.mk include $(top_builddir)/include.mk
......
...@@ -303,7 +303,9 @@ void UModbus::mbwrite( int mbaddr, int mbreg, int val, int mbfunc, const char* n ...@@ -303,7 +303,9 @@ void UModbus::mbwrite( int mbaddr, int mbreg, int val, int mbfunc, const char* n
{ {
case ModbusRTU::fnWriteOutputSingleRegister: case ModbusRTU::fnWriteOutputSingleRegister:
{ {
ModbusRTU::WriteSingleOutputRetMessage ret = mb->write06(mbaddr, mbreg, val); // ModbusRTU::WriteSingleOutputRetMessage ret =
// игнорируем return т.к. если будет ошибка, то будет исключение
(void)mb->write06(mbaddr, mbreg, val);
} }
break; break;
...@@ -311,13 +313,17 @@ void UModbus::mbwrite( int mbaddr, int mbreg, int val, int mbfunc, const char* n ...@@ -311,13 +313,17 @@ void UModbus::mbwrite( int mbaddr, int mbreg, int val, int mbfunc, const char* n
{ {
ModbusRTU::WriteOutputMessage msg(mbaddr, mbreg); ModbusRTU::WriteOutputMessage msg(mbaddr, mbreg);
msg.addData(val); msg.addData(val);
ModbusRTU::WriteOutputRetMessage ret = mb->write10(msg); //ModbusRTU::WriteOutputRetMessage ret =
// игнорируем return т.к. если будет ошибка, то будет исключение
(void)mb->write10(msg);
} }
break; break;
case ModbusRTU::fnForceSingleCoil: case ModbusRTU::fnForceSingleCoil:
{ {
ModbusRTU::ForceSingleCoilRetMessage ret = mb->write05(mbaddr, mbreg, val); // ModbusRTU::ForceSingleCoilRetMessage ret =
// игнорируем return т.к. если будет ошибка, то будет исключение
(void)mb->write05(mbaddr, mbreg, val);
} }
break; break;
...@@ -325,7 +331,9 @@ void UModbus::mbwrite( int mbaddr, int mbreg, int val, int mbfunc, const char* n ...@@ -325,7 +331,9 @@ void UModbus::mbwrite( int mbaddr, int mbreg, int val, int mbfunc, const char* n
{ {
ModbusRTU::ForceCoilsMessage msg(mbaddr, mbreg); ModbusRTU::ForceCoilsMessage msg(mbaddr, mbreg);
msg.addBit( (val ? true : false) ); msg.addBit( (val ? true : false) );
ModbusRTU::ForceCoilsRetMessage ret = mb->write0F(msg); // ModbusRTU::ForceCoilsRetMessage ret =
// игнорируем return т.к. если будет ошибка, то будет исключение
(void)mb->write0F(msg);
} }
break; break;
...@@ -338,7 +346,7 @@ void UModbus::mbwrite( int mbaddr, int mbreg, int val, int mbfunc, const char* n ...@@ -338,7 +346,7 @@ void UModbus::mbwrite( int mbaddr, int mbreg, int val, int mbfunc, const char* n
break; break;
} }
} }
catch( ModbusRTU::mbException& ex ) catch( const ModbusRTU::mbException& ex )
{ {
if( ex.err != ModbusRTU::erTimeOut ) if( ex.err != ModbusRTU::erTimeOut )
throw UTimeOut(); throw UTimeOut();
...@@ -347,9 +355,9 @@ void UModbus::mbwrite( int mbaddr, int mbreg, int val, int mbfunc, const char* n ...@@ -347,9 +355,9 @@ void UModbus::mbwrite( int mbaddr, int mbreg, int val, int mbfunc, const char* n
err << ex; err << ex;
throw UException(err.str()); throw UException(err.str());
} }
catch(...) catch( const std::exception& ex )
{ {
throw UException("(mbwrite): catch..."); throw UException("(mbwrite): catch " + std::string(ex.what()) );
} }
} }
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
...@@ -271,18 +271,18 @@ void ComPort::sendByte(unsigned char x) ...@@ -271,18 +271,18 @@ void ComPort::sendByte(unsigned char x)
} }
// -------------------------------------------------------------------------------- // --------------------------------------------------------------------------------
// Lav: убрать, переделать в receiveBlock // Lav: убрать, переделать в receiveBlock
void ComPort::setTimeout( int msec ) void ComPort::setTimeout( timeout_t msec )
{ {
uTimeout = msec * 1000; uTimeout = msec * 1000;
} }
// -------------------------------------------------------------------------------- // --------------------------------------------------------------------------------
// Lav: ситуация, когда отправлено меньше запрошенного, не типична и должна // Lav: ситуация, когда отправлено меньше запрошенного, не типична и должна
// генерировать исключение // генерировать исключение
int ComPort::sendBlock(unsigned char* msg, int len) size_t ComPort::sendBlock(unsigned char* msg, size_t len)
{ {
// fcntl(fd,F_SETFL,0); // fcntl(fd,F_SETFL,0);
int sndLen =::write(fd, msg, len); ssize_t sndLen =::write(fd, msg, len);
// fcntl(fd,F_SETFL,O_NONBLOCK); // fcntl(fd,F_SETFL,O_NONBLOCK);
...@@ -298,9 +298,9 @@ int ComPort::sendBlock(unsigned char* msg, int len) ...@@ -298,9 +298,9 @@ int ComPort::sendBlock(unsigned char* msg, int len)
// -------------------------------------------------------------------------------- // --------------------------------------------------------------------------------
// Lav: ожидание задавать третим необязательным параметром // Lav: ожидание задавать третим необязательным параметром
// Lav: Никогда не возвращаТЬ меньше запрошенного (кроме 0) // Lav: Никогда не возвращаТЬ меньше запрошенного (кроме 0)
int ComPort::receiveBlock(unsigned char* msg, int len) size_t ComPort::receiveBlock(unsigned char* msg, size_t len)
{ {
int k; size_t k = 0;
if(!len) if(!len)
return 0; return 0;
......
...@@ -80,7 +80,7 @@ ComPort485F::ComPort485F( const string& dev, int gpio_num, bool tmit_ctrl ): ...@@ -80,7 +80,7 @@ ComPort485F::ComPort485F( const string& dev, int gpio_num, bool tmit_ctrl ):
} }
} }
// -------------------------------------------------------------------------------- // --------------------------------------------------------------------------------
void ComPort485F::setTimeout( int msec ) void ComPort485F::setTimeout( timeout_t msec )
{ {
tout_msec = msec; tout_msec = msec;
ComPort::setTimeout(msec); ComPort::setTimeout(msec);
...@@ -152,7 +152,7 @@ unsigned char ComPort485F::m_receiveByte( bool wait ) ...@@ -152,7 +152,7 @@ unsigned char ComPort485F::m_receiveByte( bool wait )
return x; return x;
} }
// -------------------------------------------------------------------------------- // --------------------------------------------------------------------------------
int ComPort485F::sendBlock( unsigned char* msg, int len ) size_t ComPort485F::sendBlock(unsigned char* msg, size_t len )
{ {
if( tmit_ctrl_on ) if( tmit_ctrl_on )
{ {
...@@ -160,7 +160,7 @@ int ComPort485F::sendBlock( unsigned char* msg, int len ) ...@@ -160,7 +160,7 @@ int ComPort485F::sendBlock( unsigned char* msg, int len )
gpio_low_set_value(gpio_num, 1); gpio_low_set_value(gpio_num, 1);
} }
int r = 0; size_t r = 0;
try try
{ {
......
...@@ -419,7 +419,7 @@ mbErrCode ModbusClient::recv_pdu( ModbusByte qfunc, ModbusMessage& rbuf, timeout ...@@ -419,7 +419,7 @@ mbErrCode ModbusClient::recv_pdu( ModbusByte qfunc, ModbusMessage& rbuf, timeout
if( crcNoCheckit ) if( crcNoCheckit )
rbuf.len -= szCRC; rbuf.len -= szCRC;
int rlen = getNextData((unsigned char*)(&(rbuf.data)), rbuf.len); size_t rlen = getNextData((unsigned char*)(&(rbuf.data)), rbuf.len);
if( rlen < rbuf.len ) if( rlen < rbuf.len )
{ {
...@@ -555,7 +555,7 @@ mbErrCode ModbusClient::recv_pdu( ModbusByte qfunc, ModbusMessage& rbuf, timeout ...@@ -555,7 +555,7 @@ mbErrCode ModbusClient::recv_pdu( ModbusByte qfunc, ModbusMessage& rbuf, timeout
setChannelTimeout(10); // 10 msec setChannelTimeout(10); // 10 msec
// Получаем остальную часть сообщения // Получаем остальную часть сообщения
int rlen = getNextData((unsigned char*)(rbuf.data), rbuf.len); size_t rlen = getNextData((unsigned char*)(rbuf.data), rbuf.len);
if( rlen < rbuf.len ) if( rlen < rbuf.len )
{ {
...@@ -992,7 +992,7 @@ mbErrCode ModbusClient::recv_pdu( ModbusByte qfunc, ModbusMessage& rbuf, timeout ...@@ -992,7 +992,7 @@ mbErrCode ModbusClient::recv_pdu( ModbusByte qfunc, ModbusMessage& rbuf, timeout
if( mPreRDI.objNum > 0 ) if( mPreRDI.objNum > 0 )
{ {
int onum = 0; size_t onum = 0;
while( (rlen+2) < sizeof(rbuf) && onum < mPreRDI.objNum ) while( (rlen+2) < sizeof(rbuf) && onum < mPreRDI.objNum )
{ {
......
...@@ -108,7 +108,7 @@ int ModbusRTUMaster::getTimeout() ...@@ -108,7 +108,7 @@ int ModbusRTUMaster::getTimeout()
return port->getTimeout(); return port->getTimeout();
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
int ModbusRTUMaster::getNextData( unsigned char* buf, int len ) size_t ModbusRTUMaster::getNextData( unsigned char* buf, int len )
{ {
// if( !port ) return 0; // if( !port ) return 0;
return port->receiveBlock(buf, len); return port->receiveBlock(buf, len);
......
...@@ -751,7 +751,7 @@ mbErrCode ModbusServer::recv_pdu( ModbusMessage& rbuf, timeout_t timeout ) ...@@ -751,7 +751,7 @@ mbErrCode ModbusServer::recv_pdu( ModbusMessage& rbuf, timeout_t timeout )
setChannelTimeout(10); // 10 msec setChannelTimeout(10); // 10 msec
// Получаем остальную часть сообщения // Получаем остальную часть сообщения
int rlen = getNextData((unsigned char*)(rbuf.data), rbuf.len); size_t rlen = getNextData((unsigned char*)(rbuf.data), rbuf.len);
if( rlen < rbuf.len ) if( rlen < rbuf.len )
{ {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
using namespace std; using namespace std;
using namespace ModbusRTU; using namespace ModbusRTU;
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
int ModbusTCPCore::readNextData( ost::TCPStream* tcp, size_t ModbusTCPCore::readNextData( ost::TCPStream* tcp,
std::queue<unsigned char>& qrecv, int max ) std::queue<unsigned char>& qrecv, int max )
{ {
if( !tcp || !tcp->isConnected() ) if( !tcp || !tcp->isConnected() )
...@@ -25,9 +25,9 @@ int ModbusTCPCore::readNextData( ost::TCPStream* tcp, ...@@ -25,9 +25,9 @@ int ModbusTCPCore::readNextData( ost::TCPStream* tcp,
return i; return i;
} }
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------
int ModbusTCPCore::getNextData( ost::TCPStream* tcp, size_t ModbusTCPCore::getNextData(ost::TCPStream* tcp,
std::queue<unsigned char>& qrecv, std::queue<unsigned char>& qrecv,
unsigned char* buf, int len ) unsigned char* buf, size_t len )
{ {
if( !tcp || !tcp->isConnected() ) if( !tcp || !tcp->isConnected() )
return 0; return 0;
...@@ -43,7 +43,7 @@ int ModbusTCPCore::getNextData( ost::TCPStream* tcp, ...@@ -43,7 +43,7 @@ int ModbusTCPCore::getNextData( ost::TCPStream* tcp,
return 0; return 0;
} }
int i = 0; size_t i = 0;
for( ; i < len && !qrecv.empty(); i++ ) for( ; i < len && !qrecv.empty(); i++ )
{ {
...@@ -54,14 +54,14 @@ int ModbusTCPCore::getNextData( ost::TCPStream* tcp, ...@@ -54,14 +54,14 @@ int ModbusTCPCore::getNextData( ost::TCPStream* tcp,
return i; return i;
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
mbErrCode ModbusTCPCore::sendData( ost::TCPStream* tcp, unsigned char* buf, int len ) mbErrCode ModbusTCPCore::sendData(ost::TCPStream* tcp, unsigned char* buf, size_t len )
{ {
if( !tcp || !tcp->isConnected() ) if( !tcp || !tcp->isConnected() )
return erTimeOut; return erTimeOut;
try try
{ {
for( auto i = 0; i < len; i++ ) for( size_t i = 0; i < len; i++ )
(*tcp) << buf[i]; (*tcp) << buf[i];
return erNoError; return erNoError;
......
...@@ -33,7 +33,7 @@ ModbusTCPMaster::~ModbusTCPMaster() ...@@ -33,7 +33,7 @@ ModbusTCPMaster::~ModbusTCPMaster()
tcp.reset(); tcp.reset();
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
int ModbusTCPMaster::getNextData( unsigned char* buf, int len ) size_t ModbusTCPMaster::getNextData( unsigned char* buf, int len )
{ {
return ModbusTCPCore::getNextData(tcp.get(), qrecv, buf, len); return ModbusTCPCore::getNextData(tcp.get(), qrecv, buf, len);
} }
......
...@@ -2521,7 +2521,7 @@ void MEIMessageRetRDI::init( ModbusMessage& m ) ...@@ -2521,7 +2521,7 @@ void MEIMessageRetRDI::init( ModbusMessage& m )
bcnt = 0; bcnt = 0;
dlist.clear(); dlist.clear();
int i = 6; size_t i = 6;
if( objNum > 0 ) if( objNum > 0 )
{ {
......
...@@ -89,6 +89,7 @@ bool RunLock::isLocked( const string& name ) ...@@ -89,6 +89,7 @@ bool RunLock::isLocked( const string& name )
fclose(out); fclose(out);
closedir(d); closedir(d);
return false;
} }
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
bool RunLock::lock( const string& name ) bool RunLock::lock( const string& name )
......
...@@ -115,7 +115,11 @@ void SMonitor::sensorInfo( const SensorMessage* si ) ...@@ -115,7 +115,11 @@ void SMonitor::sensorInfo( const SensorMessage* si )
cmd << " " << si->id << " " << si->value << " " << si->sm_tv_sec << " " << si->sm_tv_usec; cmd << " " << si->id << " " << si->value << " " << si->sm_tv_sec << " " << si->sm_tv_usec;
(void)system(cmd.str().c_str()); int ret = system(cmd.str().c_str());
int res = WEXITSTATUS(ret);
if( res != 0 )
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))
// { // {
// cout << "finish..." << endl; // cout << "finish..." << endl;
......
...@@ -31,7 +31,14 @@ bool WDTInterface::ping() ...@@ -31,7 +31,14 @@ bool WDTInterface::ping()
return false; return false;
} }
write(fd, (void*)CMD_PING, sizeof(CMD_PING)); int ret = write(fd, (void*)CMD_PING, sizeof(CMD_PING));
if( ret == -1 )
{
cerr << ": Unable to open device " << dev << " with err: " << strerror(errno) << endl;
close(fd);
return false;
}
close(fd); close(fd);
return true; return true;
} }
...@@ -46,7 +53,14 @@ bool WDTInterface::stop() ...@@ -46,7 +53,14 @@ bool WDTInterface::stop()
return false; return false;
} }
write(fd, (void*)CMD_STOP, sizeof(CMD_STOP)); int ret = write(fd, (void*)CMD_STOP, sizeof(CMD_STOP));
if( ret == -1 )
{
cerr << ": Unable to open device " << dev << " with err: " << strerror(errno) << endl;
close(fd);
return false;
}
close(fd); close(fd);
return true; return true;
} }
......
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