#pragma once /*! * @breif 通信信息 和 通过总线 与hmi opt的接口 * * @author sjq * @date 五月 2018 */ #include #include "boost/thread/mutex.hpp" #include "application/sequence_server_api/CSeqForServerApi.h" #include "CActionNodeAnalysis.h" #include "CHmiMessageAnalysis.h" class CNode; class CNodeSeq; class CNodeFunc; class CNodeAction; class CRecoverNode; using namespace iot_idl::sequence; class CMbCommunicateInfo : public iot_app::CSeqForServerApi { public: CMbCommunicateInfo(const iot_public::SRunAppInfo& appInfo); ~CMbCommunicateInfo(); //发送动作执行 bool sendActionToOpt(const CNodeAction& action);//发送opt操作 执行 //状态更新 bool nodeStatusToHmi(const CNodeSeq& seq); bool nodeStatusToHmi(const CNodeFunc& func); bool nodeStatusToHmi(const CNodeAction& action); bool nodeStatusToHmi( const CNodeAction& action, const SActionErrorInfo& erroInfo); //顺控异常结束 bool nodeAbnormalEndStatusToHmi( const CRecoverNode& seq, const SActionErrorInfo& erroInfo); //人工干预 请求 bool sendUiRequest( const CNodeAction& action, const SActionErrorInfo& erroInfo); //顺控操作应答 bool seqOperateResponse( SeqOperateMessage* pMsg, CNodeSeq* seq, const SActionErrorInfo& erroInfo ); UiRequestMessageAck* getUserInterveneResponse(); SOptCtrlReply* getOptCtrlResponse(); SeqOperateMessage* getSeqOperateRequest(); protected: //hmi->server人工干预应答 bool handleUserInterveneResponse( UiRequestMessageAck& msg); //opt->server 应答 bool handleOptCtrlResponse( SOptCtrlReply& msg); //hmi->server 顺控操作 bool handleSeqOperateRequest( SeqOperateMessage& msg); private: void clearAll(); void clearUiRequestMessageAck(); void clearSOptCtrlReply(); void clearSeqOperateMessage(); protected: CActionNodeAnalysis m_objActionAnalysis; CHmiMessageAnalysis m_objHmiMsgAnalysis; const int m_nDomain;//本域id boost::mutex m_muUserInterveneResponse; std::list m_listUserInterveneResponse; boost::mutex m_muOptCtrlReply; std::list m_listOptCtrlReply; boost::mutex m_muSeqOperateRequest; std::list m_listSeqOperateRequest; };