| | |
| | | #include <string> |
| | | #include <list> |
| | | #include "HsmsAction.h" |
| | | #include <functional> |
| | | #include <vector> |
| | | #include <map> |
| | | #include <set> |
| | | #include "CCollectionEvent.h" |
| | | |
| | | |
| | | #define ER_NOERROR 0 |
| | | #define ER_NOTSELECT -1 |
| | | #define ER_BUSY -2 |
| | | #define EQCONSTANT_VALUE_MAX 64 |
| | | #define COMMAND_NAME_MAX 64 |
| | | #define COMMAND_VALUE_MAX 64 |
| | | #define REPORT_NAME_MAX 64 |
| | | #define VALUE_NAME_MAX 64 |
| | | |
| | | |
| | | #define ER_NOERROR 0 |
| | | #define ER_NOTSELECT -1 |
| | | #define ER_BUSY -2 |
| | | #define ER_PARAM_ERROR -3 |
| | | #define ER_NO_EVENT -4 |
| | | #define ER_UNLINK_EVENT_REPORT -5 |
| | | |
| | | |
| | | /* |
| | | * 常量数据结构 |
| | | */ |
| | | typedef struct _EQConstant |
| | | { |
| | | unsigned int id; |
| | | char szValue[EQCONSTANT_VALUE_MAX]; |
| | | } EQConstant; |
| | | |
| | | /* |
| | | * Command 数据结构 |
| | | */ |
| | | typedef struct _CommandParameter |
| | | { |
| | | char szName[COMMAND_NAME_MAX]; |
| | | char szValue[COMMAND_VALUE_MAX]; |
| | | } CommandParameter; |
| | | |
| | | /* |
| | | * Report 数据结构 |
| | | */ |
| | | typedef struct _REPORT |
| | | { |
| | | char szName[REPORT_NAME_MAX]; |
| | | unsigned int id; |
| | | } REPORT; |
| | | |
| | | /* |
| | | * Value 数据结构 |
| | | */ |
| | | typedef struct _VALUE |
| | | { |
| | | char szName[VALUE_NAME_MAX]; |
| | | unsigned int id; |
| | | } VALUE; |
| | | |
| | | |
| | | typedef std::function<void(void* pFrom)> SECSEQOFFLINE; |
| | | typedef std::function<void(void* pFrom, std::vector<EQConstant>&)> SECSEQCONSTANTREQUEST; |
| | | typedef std::function<void(void* pFrom, const char*, std::vector<CommandParameter>&)> SECSCommand; |
| | | typedef std::function<void(void* pFrom, SYSTEMTIME& time)> DATETIMESYNC; |
| | | typedef std::function<void(void* pFrom, bool bEnable, std::vector<unsigned int>& ids)> EDEVENTREPORT; |
| | | typedef std::function<void(void* pFrom, bool bEnable, unsigned int id)> EDALARMREPORT; |
| | | typedef struct _SECSListener |
| | | { |
| | | SECSEQOFFLINE onEQOffLine; |
| | | SECSEQOFFLINE onEQOnLine; |
| | | SECSEQCONSTANTREQUEST onEQConstantRequest; |
| | | SECSEQCONSTANTREQUEST onEQConstantSend; |
| | | SECSCommand onCommand; |
| | | DATETIMESYNC onDatetimeSync; |
| | | EDEVENTREPORT onEnableDisableEventReport; |
| | | EDALARMREPORT onEnableDisableAlarmReport; |
| | | } SECSListener; |
| | | |
| | | |
| | | class CModel; |
| | |
| | | ~CHsmsPassive(); |
| | | |
| | | public: |
| | | /* 设置机器型号 最大长度 20 bytes */ |
| | | void setEquipmentModelType(const char* pszMode); |
| | | |
| | | /* 设置软件版本号 最大长度 20 bytes */ |
| | | void setSoftRev(const char* pszRev); |
| | | |
| | | // 连接Report |
| | | void linkEventReport(unsigned int CEID, unsigned int RPTID); |
| | | |
| | | // 取消连接report |
| | | void unlinkEventReport(unsigned int CEID); |
| | | |
| | | // define Report |
| | | SERVO::CReport* defineReport(unsigned int RPTID, std::vector<unsigned int>& vids); |
| | | |
| | | // 取消 define report |
| | | bool removeReport(int rptid); |
| | | void clearAllReport(); |
| | | |
| | | // 从文件中加载CVariable列表 |
| | | int loadVarialbles(const char* pszFilepath); |
| | | |
| | | // 取得CVariable列表 |
| | | std::vector<SERVO::CVariable*>& getVariables(); |
| | | |
| | | // 取得指定Variable |
| | | SERVO::CVariable* getVariable(int variableId); |
| | | |
| | | // 从文件中加载CReport列表 |
| | | int loadReports(const char* pszFilepath); |
| | | |
| | | // 取得Report列表 |
| | | std::vector<SERVO::CReport*>& getReports(); |
| | | |
| | | // 从文件中加载CCollectionEvent列表 |
| | | int loadCollectionEvents(const char* pszFilepath); |
| | | |
| | | // 取得CCollectionEvent列表 |
| | | std::vector<SERVO::CCollectionEvent*>& getCollectionEvents(); |
| | | |
| | | // 取消/删除所有CollectionEvent |
| | | void clearAllCollectionEvent(); |
| | | |
| | | // 取得CCollectionEvent |
| | | SERVO::CCollectionEvent* getEvent(unsigned short CEID); |
| | | |
| | | // 取得Report |
| | | SERVO::CReport* getReport(int rptid); |
| | | |
| | | void setListener(SECSListener listener); |
| | | unsigned OnCimWork(); |
| | | void OnTimer(UINT nTimerid); |
| | | void setActionTimeout(int nSecond); |
| | | int init(CModel* pModel, const char* pszName, unsigned int port); |
| | | int term(); |
| | | int secsAreYouThereRequest(); |
| | | int secsAreYouThereReply(unsigned int sessionId, unsigned int systemBytes); |
| | | |
| | | public: |
| | | /* request开头的函数为主动发送数据的函数 */ |
| | | int requestAreYouThere(); |
| | | int requestAlarmReport(int ALCD, int ALID, const char* ALTX); |
| | | int requestEventReportSend(unsigned int DATAID, unsigned int CEID, const std::vector<std::string>& values); |
| | | |
| | | private: |
| | | void replyAck(int s, int f, unsigned int systemBytes, BYTE ack, const char* pszAckName); |
| | | |
| | | /* reply开头的函数为回复函数 */ |
| | | int replyAreYouThere(IMessage* pRecv); |
| | | int replyEstablishCommunications(IMessage* pRecv); |
| | | int replyOnLine(IMessage* pRecv); |
| | | int replyOffLine(IMessage* pRecv); |
| | | int replyEquipmentConstantRequest(IMessage* pRecv); |
| | | int replyEquipmentConstantSend(IMessage* pRecv); |
| | | int replyDatetime(IMessage* pRecv); |
| | | int replyDefineReport(IMessage* pRecv); |
| | | int replyLinkEventReport(IMessage* pRecv); |
| | | int replyEanbleDisableEventReport(IMessage* pRecv); |
| | | int replyCommand(IMessage* pRecv); |
| | | int replyConfigureSpooling(IMessage* pRecv); |
| | | int replyEanbleDisableAlarmReport(IMessage* pRecv); |
| | | int replyQueryPPIDList(IMessage* pRecv); |
| | | int replyTerminalDisplay(IMessage* pRecv); |
| | | |
| | | private: |
| | | inline void Lock() { EnterCriticalSection(&m_criticalSection); } |
| | | inline void Unlock() { LeaveCriticalSection(&m_criticalSection); } |
| | | int onRecvMsg(IMessage* pMessage); |
| | | void clearAllVariabel(); |
| | | std::vector<unsigned int> parseVidList(CString& strNums); |
| | | |
| | | private: |
| | | CModel* m_pModel; |
| | | IPassive* m_pPassive; |
| | | int m_nActionTimeout; |
| | | unsigned int m_nSystemByte; |
| | | unsigned short m_nSessionId; |
| | | BOOL m_bAreYouThereRequest; |
| | | std::string m_strEquipmentModelType; |
| | | std::string m_strSoftRev; |
| | |
| | | std::list<CHsmsAction*> m_listActionSent; |
| | | |
| | | private: |
| | | SECSListener m_listener; |
| | | BOOL m_bCimWorking; |
| | | HANDLE m_hCimWorkEvent; |
| | | HANDLE m_hCimWorkThreadHandle; |
| | | unsigned m_nCimWorkThrdaddr; |
| | | |
| | | private: |
| | | // CVariable vector |
| | | std::vector<SERVO::CVariable*> m_variabels; |
| | | |
| | | // CReport vector |
| | | std::vector<SERVO::CReport*> m_reports; |
| | | |
| | | // CollectionEvent vector |
| | | std::vector<SERVO::CCollectionEvent*> m_collectionEvents; |
| | | |
| | | // Spooling Config |
| | | std::map<uint16_t, std::set<uint16_t>> m_spoolingConfig; |
| | | }; |
| | | |