UniSet  2.2.1
ModbusRTUSlave.h
00001 // -------------------------------------------------------------------------
00002 #ifndef ModbusRTUSlave_H_
00003 #define ModbusRTUSlave_H_
00004 // -------------------------------------------------------------------------
00005 #include <string>
00006 #include <unordered_set>
00007 #include "Mutex.h"
00008 #include "Debug.h"
00009 #include "Configuration.h"
00010 #include "PassiveTimer.h"
00011 #include "ComPort.h"
00012 #include "ModbusTypes.h"
00013 #include "ModbusServer.h"
00014 // -------------------------------------------------------------------------
00023 class ModbusRTUSlave:
00024     public ModbusServer
00025 {
00026     public:
00027         ModbusRTUSlave( const std::string& dev, bool use485 = false, bool tr_ctl = false  );
00028         ModbusRTUSlave( ComPort* com );
00029         virtual ~ModbusRTUSlave();
00030 
00031         void setSpeed( ComPort::Speed s );
00032         void setSpeed( const std::string& s );
00033         ComPort::Speed getSpeed();
00034 
00035         virtual ModbusRTU::mbErrCode receive( const std::unordered_set<ModbusRTU::ModbusAddr>& vmbaddr, timeout_t msecTimeout ) override;
00036 
00037         virtual void cleanupChannel() override
00038         {
00039             if(port) port->cleanupChannel();
00040         }
00041 
00042         virtual void terminate() override;
00043 
00044     protected:
00045 
00046         // realisation (see ModbusServer.h)
00047         virtual int getNextData( unsigned char* buf, int len ) override;
00048         virtual void setChannelTimeout( timeout_t msec ) override;
00049         virtual ModbusRTU::mbErrCode sendData( unsigned char* buf, int len ) override;
00050 
00051         std::string dev;    
00052         ComPort* port;        
00053         bool myport;
00054 
00055     private:
00056 
00057 };
00058 // -------------------------------------------------------------------------
00059 #endif // ModbusRTUSlave_H_
00060 // -------------------------------------------------------------------------