96 lines
2.4 KiB
C
Raw Normal View History

#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;
class CMbCommunicateInfo :
2025-03-13 13:41:29 +08:00
public iot_app::CSeqForServerApi
{
public:
2025-03-12 14:17:53 +08:00
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<UiRequestMessageAck*>
m_listUserInterveneResponse;
boost::mutex m_muOptCtrlReply;
std::list<SOptCtrlReply*>
m_listOptCtrlReply;
boost::mutex m_muSeqOperateRequest;
std::list<SeqOperateMessage*>
m_listSeqOperateRequest;
};