#pragma once
|
#include <string>
|
#include <functional>
|
|
|
#define TIMEOUT -99
|
|
class IMcChannel;
|
typedef std::function<void(IMcChannel*)> ONCLOSE;
|
typedef std::function<void(IMcChannel*)> ONCLOSING;
|
typedef std::function<void(IMcChannel*, int nErrorCode)> ONCONNECTED;
|
typedef std::function<void(IMcChannel*, char *pData, unsigned int nDataSize, int nDecodeRet)> ONREADRAWDATA;
|
typedef std::function<void(IMcChannel*)> ONWRITERAWDATA;
|
typedef std::function<void(IMcChannel*, int addr, DWORD value, int flag)> ONREAD;
|
typedef std::function<void(IMcChannel*, int addr, char *pData, unsigned int nDataSize, int flag)> ONREADDATA;
|
typedef std::function<void(IMcChannel*, int addr, DWORD value, int flag)> ONWRITE;
|
|
typedef struct _McChannelListener
|
{
|
ONCLOSE funOnClose;
|
ONCLOSING funOnClosing;
|
ONCONNECTED funOnConnected;
|
ONREADRAWDATA funOnRead;
|
ONWRITERAWDATA funOnWrite;
|
} McChannelListener;
|
|
namespace MC {
|
#define LERROR 4
|
#define LWARN 3
|
#define LINFO 2
|
#define LDEBUG 1
|
|
/** @brief ÃüÁî*/
|
typedef enum CMD
|
{
|
/** @brief ³ÉÅú¶Á */
|
BATCH_READ = 0x0401,
|
|
/** @brief ³ÉÅúд */
|
BATCH_WRITE = 0x1401,
|
|
/** @brief Ëæ»ú¶Á */
|
RANDOM_READ = 0x0403,
|
|
/** @brief ²âÊÔ(Ëæ»úд) */
|
TEST_RANDOM_WRITE = 0x0402,
|
|
/** @brief ¼àÊÓ×¢²áÊý¾Ý */
|
MONITOR_REGISTER_DATA = 0x0801,
|
|
/** @brief ¼àÊÓ */
|
MONITOR = 0x0802,
|
|
} CMD;
|
|
|
/** @brief ×ÓÃüÁî*/
|
typedef enum SUBCMD
|
{
|
/** @brief °´×Ö */
|
SC_WORD = 0x0000,
|
|
/** @brief °´Î» */
|
SC_BIT = 0x0001,
|
|
} SUBCMD;
|
|
|
/** @brief ÈíÔª¼þÀàÐÍ*/
|
typedef enum SOFT_COMPONENT
|
{
|
/** @brief ÄÚ²¿¼ÌµçÆ÷(M*) */
|
M = 0x90,
|
|
/** @brief Êý¾Ý¼Ä´æÆ÷(D*) */
|
D = 0xa8,
|
|
/** @brief Á´½Ó¼Ä´æÆ÷(W*) */
|
W = 0xb4,
|
|
/** @brief ÊäÈë(X*) */
|
X = 0x9c,
|
|
/** @brief Êä³ö(Y*) */
|
Y = 0x9d,
|
|
/** @brief Ëø´æ¼ÌµçÆ÷(L*) */
|
L = 0x92,
|
|
/** @brief ²½½ø¼ÌµçÆ÷(S*) */
|
S = 0x98,
|
|
/** @brief Á´½Ó¼ÌµçÆ÷(B*) */
|
B = 0xA0,
|
|
/** @brief ±¨¾¯Æ÷(F*) */
|
F = 0x93,
|
|
/** @brief Îļþ¼Ä´æÆ÷(ZR*) */
|
ZR = 0xB0,
|
|
} SOFT_COMPONENT;
|
}
|
|
class IMcChannel
|
{
|
public:
|
virtual void setChannelListener(McChannelListener *pListener) = 0;
|
virtual void setActionInterval(int millisecond) = 0;
|
virtual std::string &getName() = 0;
|
virtual std::string &getIp() = 0;
|
virtual unsigned int getServerPort() = 0;
|
virtual unsigned int getLocalPort() = 0;
|
virtual bool isConnected() = 0;
|
virtual int connect() = 0;
|
virtual int close() = 0;
|
virtual int sendRawData(char *pData, int nDataSize) = 0;
|
virtual int readData(MC::SOFT_COMPONENT softComponent, unsigned int addr, unsigned int nReadLen, ONREADDATA funOnReadData) = 0;
|
virtual int readData2(MC::SOFT_COMPONENT softComponent, unsigned int addr, unsigned int nReadLen, int executeTime, ONREADDATA funOnReadData) = 0;
|
virtual int readDWord(MC::SOFT_COMPONENT softComponent, unsigned int addr, ONREAD funOnRead) = 0;
|
virtual int readWord(MC::SOFT_COMPONENT softComponent, unsigned int addr, ONREAD funOnRead) = 0;
|
virtual int readWordIfIdle(MC::SOFT_COMPONENT softComponent, unsigned int addr, ONREAD funOnRead) = 0;
|
virtual int readBit(MC::SOFT_COMPONENT softComponent, unsigned int addr, ONREAD funOnRead) = 0;
|
virtual int writeData(MC::SOFT_COMPONENT softComponent, unsigned int addr, const char* pData, unsigned int nDataLen, ONWRITE funOnWrite) = 0;
|
virtual int writeWord(MC::SOFT_COMPONENT softComponent, unsigned int addr, WORD value, ONWRITE funOnWrite) = 0;
|
virtual int writeDWord(MC::SOFT_COMPONENT softComponent, unsigned int addr, DWORD value, ONWRITE funOnWrite) = 0;
|
virtual int writeBit(MC::SOFT_COMPONENT softComponent, unsigned int addr, BOOL value, ONWRITE funOnWrite) = 0;
|
virtual int writeBit2(MC::SOFT_COMPONENT softComponent, unsigned int addr, BOOL value, int executeTime, ONWRITE funOnWrite) = 0;
|
virtual int writeBitIfIdle(MC::SOFT_COMPONENT softComponent, unsigned int addr, BOOL value, ONWRITE funOnWrite) = 0;
|
};
|