UniSet  2.6.0
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 // -------------------------------------------------------------------------
00015 namespace uniset
00016 {
00026 class ModbusRTUSlave:
00027     public ModbusServer
00028 {
00029     public:
00030         ModbusRTUSlave( const std::string& dev, bool use485 = false, bool tr_ctl = false  );
00031         ModbusRTUSlave( ComPort* com );
00032         virtual ~ModbusRTUSlave();
00033 
00034         void setSpeed( ComPort::Speed s );
00035         void setSpeed( const std::string& s );
00036         ComPort::Speed getSpeed();
00037 
00038         virtual void cleanupChannel() override
00039         {
00040             if(port) port->cleanupChannel();
00041         }
00042 
00043         virtual void terminate() override;
00044         virtual bool isActive() const override;
00045 
00046     protected:
00047 
00048         virtual ModbusRTU::mbErrCode realReceive( const std::unordered_set<ModbusRTU::ModbusAddr>& vmbaddr, timeout_t msecTimeout ) override;
00049 
00050         // realisation (see ModbusServer.h)
00051         virtual size_t getNextData( unsigned char* buf, int len ) override;
00052         virtual void setChannelTimeout( timeout_t msec ) override;
00053         virtual ModbusRTU::mbErrCode sendData( unsigned char* buf, int len ) override;
00054 
00055         std::string dev;    
00056         ComPort* port;        
00057         bool myport;
00058 
00059     private:
00060 
00061 };
00062 // -------------------------------------------------------------------------
00063 } // end of namespace uniset
00064 // -------------------------------------------------------------------------
00065 #endif // ModbusRTUSlave_H_
00066 // -------------------------------------------------------------------------