MBTCPServer.h
00001 #ifndef MBTCPServer_H_
00002 #define MBTCPServer_H_
00003
00004
00005 #include <string>
00006 #include "modbus/ModbusTCPServerSlot.h"
00007
00008
00010 class MBTCPServer
00011 {
00012 public:
00013 MBTCPServer( ModbusRTU::ModbusAddr myaddr, const std::string& inetaddr, int port=502, bool verbose=false );
00014 ~MBTCPServer();
00015
00016 inline void setVerbose( bool state )
00017 {
00018 verbose = state;
00019 }
00020
00021 inline void setReply( long val )
00022 {
00023 replyVal = val;
00024 }
00025
00026 inline void setIgnoreAddrMode( bool state )
00027 {
00028 if( sslot )
00029 sslot->setIgnoreAddrMode(state);
00030 }
00031
00032 void execute();
00033 void setLog( DebugStream& dlog );
00034
00035 protected:
00036
00037 void sigterm( int signo );
00038
00040 ModbusRTU::mbErrCode readCoilStatus( ModbusRTU::ReadCoilMessage& query,
00041 ModbusRTU::ReadCoilRetMessage& reply );
00043 ModbusRTU::mbErrCode readInputStatus( ModbusRTU::ReadInputStatusMessage& query,
00044 ModbusRTU::ReadInputStatusRetMessage& reply );
00045
00047 ModbusRTU::mbErrCode readOutputRegisters( ModbusRTU::ReadOutputMessage& query,
00048 ModbusRTU::ReadOutputRetMessage& reply );
00049
00051 ModbusRTU::mbErrCode readInputRegisters( ModbusRTU::ReadInputMessage& query,
00052 ModbusRTU::ReadInputRetMessage& reply );
00053
00055 ModbusRTU::mbErrCode forceSingleCoil( ModbusRTU::ForceSingleCoilMessage& query,
00056 ModbusRTU::ForceSingleCoilRetMessage& reply );
00057
00059 ModbusRTU::mbErrCode forceMultipleCoils( ModbusRTU::ForceCoilsMessage& query,
00060 ModbusRTU::ForceCoilsRetMessage& reply );
00061
00062
00064 ModbusRTU::mbErrCode writeOutputRegisters( ModbusRTU::WriteOutputMessage& query,
00065 ModbusRTU::WriteOutputRetMessage& reply );
00066
00068 ModbusRTU::mbErrCode writeOutputSingleRegister( ModbusRTU::WriteSingleOutputMessage& query,
00069 ModbusRTU::WriteSingleOutputRetMessage& reply );
00070
00071
00072 ModbusRTU::mbErrCode diagnostics( ModbusRTU::DiagnosticMessage& query,
00073 ModbusRTU::DiagnosticRetMessage& reply );
00074
00075 ModbusRTU::mbErrCode read4314( ModbusRTU::MEIMessageRDI& query,
00076 ModbusRTU::MEIMessageRetRDI& reply );
00077
00079 ModbusRTU::mbErrCode journalCommand( ModbusRTU::JournalCommandMessage& query,
00080 ModbusRTU::JournalCommandRetMessage& reply );
00081
00083 ModbusRTU::mbErrCode setDateTime( ModbusRTU::SetDateTimeMessage& query,
00084 ModbusRTU::SetDateTimeRetMessage& reply );
00085
00087 ModbusRTU::mbErrCode remoteService( ModbusRTU::RemoteServiceMessage& query,
00088 ModbusRTU::RemoteServiceRetMessage& reply );
00089
00090 ModbusRTU::mbErrCode fileTransfer( ModbusRTU::FileTransferMessage& query,
00091 ModbusRTU::FileTransferRetMessage& reply );
00092
00093
00095 ModbusTCPServerSlot* sslot;
00096 ModbusRTU::ModbusAddr addr;
00098 bool verbose;
00099 long replyVal;
00100 #if 0
00101 typedef std::map<ModbusRTU::mbErrCode,unsigned int> ExchangeErrorMap;
00102 ExchangeErrorMap errmap;
00103 ModbusRTU::mbErrCode prev;
00104
00105
00106
00107
00108 long askCount;
00111 typedef std::map<int,std::string> FileList;
00112 FileList flist;
00113 #endif
00114
00115 private:
00116
00117 };
00118
00119 #endif // MBTCPServer_H_
00120