17 #ifndef _MBTCPMultiMaster_H_
18 #define _MBTCPMultiMaster_H_
24 #include "MBExchange.h"
25 #include "modbus/ModbusTCPMaster.h"
291 const std::string& prefix =
"mbtcp" );
295 static std::shared_ptr<MBTCPMultiMaster>
init_mbmaster(
int argc,
const char*
const* argv,
297 const std::string& prefix =
"mbtcp" );
299 static void help_print(
int argc,
const char*
const* argv );
305 virtual void initIterators()
override;
306 virtual std::shared_ptr<ModbusClient> initMB(
bool reopen =
false )
override;
308 void initCheckConnectionParameters();
315 bool force_disconnect;
323 MBSlaveInfo(): ip(
""), port(0), mbtcp(0), priority(0),
325 recv_timeout(200), aftersend_pause(0), sleepPause_usec(100),
326 force_disconnect(
true),
327 myname(
""), use(
false), initOK(
false), ignore(
false) {}
331 std::shared_ptr<ModbusTCPMaster> mbtcp;
335 ModbusRTU::SlaveFunctionCode checkFunc = { ModbusRTU::fnUnknown };
336 ModbusRTU::ModbusAddr checkAddr = { 0x00 };
337 ModbusRTU::ModbusData checkReg = { 0 };
341 IOController::IOStateList::iterator respond_it;
343 bool respond_init = {
false };
344 bool respond_force = {
false };
346 timeout_t channel_timeout = { 0 };
348 inline bool operator < (
const MBSlaveInfo& mbs )
const noexcept
350 return priority < mbs.priority;
353 bool init( std::shared_ptr<DebugStream>& mblog );
355 void setUse(
bool st );
357 timeout_t recv_timeout;
358 timeout_t aftersend_pause;
359 timeout_t sleepPause_usec;
360 bool force_disconnect;
364 bool use = {
false };
365 bool initOK = {
false };
366 bool ignore = {
false };
369 const std::string getShortInfo()
const;
374 typedef std::list<std::shared_ptr<MBSlaveInfo>> MBGateList;
377 MBGateList::reverse_iterator mbi;
381 std::unique_ptr< ThreadCreator<MBTCPMultiMaster> > pollThread;
382 std::unique_ptr< ThreadCreator<MBTCPMultiMaster> > checkThread;
387 #endif // _MBTCPMultiMaster_H_