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
00076 ModbusRTU::mbErrCode journalCommand( ModbusRTU::JournalCommandMessage& query,
00077 ModbusRTU::JournalCommandRetMessage& reply );
00078
00080 ModbusRTU::mbErrCode setDateTime( ModbusRTU::SetDateTimeMessage& query,
00081 ModbusRTU::SetDateTimeRetMessage& reply );
00082
00084 ModbusRTU::mbErrCode remoteService( ModbusRTU::RemoteServiceMessage& query,
00085 ModbusRTU::RemoteServiceRetMessage& reply );
00086
00087 ModbusRTU::mbErrCode fileTransfer( ModbusRTU::FileTransferMessage& query,
00088 ModbusRTU::FileTransferRetMessage& reply );
00089
00090
00092 ModbusTCPServerSlot* sslot;
00093 ModbusRTU::ModbusAddr addr;
00095 bool verbose;
00096 long replyVal;
00097 #if 0
00098 typedef std::map<ModbusRTU::mbErrCode,unsigned int> ExchangeErrorMap;
00099 ExchangeErrorMap errmap;
00100 ModbusRTU::mbErrCode prev;
00101
00102
00103
00104
00105 long askCount;
00108 typedef std::map<int,std::string> FileList;
00109 FileList flist;
00110 #endif
00111
00112 private:
00113
00114 };
00115
00116 #endif // MBTCPServer_H_
00117