2025-03-12 10:03:16 +08:00
|
|
|
|
#pragma once
|
|
|
|
|
|
/*!
|
|
|
|
|
|
* @breif 通信信息 和 通过总线 与hmi opt的接口
|
|
|
|
|
|
*
|
|
|
|
|
|
* @author sjq
|
|
|
|
|
|
* @date 五月 2018
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
#include <list>
|
|
|
|
|
|
#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;
|
2025-03-12 14:17:53 +08:00
|
|
|
|
using namespace iot_idl::sequence;
|
2025-03-12 10:03:16 +08:00
|
|
|
|
|
|
|
|
|
|
class CMbCommunicateInfo :
|
2025-03-12 14:54:22 +08:00
|
|
|
|
public iot_application::CSeqForServerApi
|
2025-03-12 10:03:16 +08:00
|
|
|
|
{
|
|
|
|
|
|
public:
|
2025-03-12 14:17:53 +08:00
|
|
|
|
CMbCommunicateInfo(const iot_public::SRunAppInfo& appInfo);
|
2025-03-12 10:03:16 +08:00
|
|
|
|
~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<UiRequestMessageAck*>
|
|
|
|
|
|
m_listUserInterveneResponse;
|
|
|
|
|
|
|
|
|
|
|
|
boost::mutex m_muOptCtrlReply;
|
|
|
|
|
|
std::list<SOptCtrlReply*>
|
|
|
|
|
|
m_listOptCtrlReply;
|
|
|
|
|
|
|
|
|
|
|
|
boost::mutex m_muSeqOperateRequest;
|
|
|
|
|
|
std::list<SeqOperateMessage*>
|
|
|
|
|
|
m_listSeqOperateRequest;
|
|
|
|
|
|
};
|