Utilities/MBTester/MBSlave.h
00001
00002 #ifndef MBSlave_H_
00003 #define MBSlave_H_
00004
00005 #include <map>
00006 #include <string>
00007 #include "modbus/ModbusRTUSlaveSlot.h"
00008
00009
00011 class MBSlave
00012 {
00013 public:
00014 MBSlave( ModbusRTU::ModbusAddr addr, const std::string dev, const std::string speed, bool use485=false );
00015 ~MBSlave();
00016
00017 inline void setVerbose( bool state )
00018 {
00019 verbose = state;
00020 }
00021
00022 inline void setReply( long val )
00023 {
00024 replyVal = val;
00025 }
00026 inline void setReply2( long val )
00027 {
00028 replyVal2 = val;
00029 }
00030 inline void setReply3( long val )
00031 {
00032 replyVal3 = val;
00033 }
00034
00035 void execute();
00038 void setLog( DebugStream& dlog );
00039
00040 protected:
00041
00042 void sigterm( int signo );
00043
00045 ModbusRTU::mbErrCode readCoilStatus( ModbusRTU::ReadCoilMessage& query,
00046 ModbusRTU::ReadCoilRetMessage& reply );
00048 ModbusRTU::mbErrCode readInputStatus( ModbusRTU::ReadInputStatusMessage& query,
00049 ModbusRTU::ReadInputStatusRetMessage& reply );
00050
00052 ModbusRTU::mbErrCode readOutputRegisters( ModbusRTU::ReadOutputMessage& query,
00053 ModbusRTU::ReadOutputRetMessage& reply );
00054
00056 ModbusRTU::mbErrCode readInputRegisters( ModbusRTU::ReadInputMessage& query,
00057 ModbusRTU::ReadInputRetMessage& reply );
00058
00060 ModbusRTU::mbErrCode forceSingleCoil( ModbusRTU::ForceSingleCoilMessage& query,
00061 ModbusRTU::ForceSingleCoilRetMessage& reply );
00062
00064 ModbusRTU::mbErrCode forceMultipleCoils( ModbusRTU::ForceCoilsMessage& query,
00065 ModbusRTU::ForceCoilsRetMessage& reply );
00066
00067
00069 ModbusRTU::mbErrCode writeOutputRegisters( ModbusRTU::WriteOutputMessage& query,
00070 ModbusRTU::WriteOutputRetMessage& reply );
00071
00073 ModbusRTU::mbErrCode writeOutputSingleRegister( ModbusRTU::WriteSingleOutputMessage& query,
00074 ModbusRTU::WriteSingleOutputRetMessage& reply );
00075
00077 ModbusRTU::mbErrCode journalCommand( ModbusRTU::JournalCommandMessage& query,
00078 ModbusRTU::JournalCommandRetMessage& reply );
00079
00081 ModbusRTU::mbErrCode setDateTime( ModbusRTU::SetDateTimeMessage& query,
00082 ModbusRTU::SetDateTimeRetMessage& reply );
00083
00085 ModbusRTU::mbErrCode remoteService( ModbusRTU::RemoteServiceMessage& query,
00086 ModbusRTU::RemoteServiceRetMessage& reply );
00087
00088 ModbusRTU::mbErrCode fileTransfer( ModbusRTU::FileTransferMessage& query,
00089 ModbusRTU::FileTransferRetMessage& reply );
00090
00091 ModbusRTU::mbErrCode diagnostics( ModbusRTU::DiagnosticMessage& query,
00092 ModbusRTU::DiagnosticRetMessage& reply );
00093
00095 ModbusRTUSlaveSlot* rscomm;
00096 ModbusRTU::ModbusAddr addr;
00098 bool verbose;
00099 #if 0
00100 typedef std::map<ModbusRTU::mbErrCode,unsigned int> ExchangeErrorMap;
00101 ExchangeErrorMap errmap;
00102 ModbusRTU::mbErrCode prev;
00103
00104
00105
00106
00107 long askCount;
00110 typedef std::map<int,std::string> FileList;
00111 FileList flist;
00112 #endif
00113 long replyVal;
00114 long replyVal2;
00115 long replyVal3;
00116 private:
00117
00118 };
00119
00120 #endif // MBSlave_H_
00121