2025-03-12 14:17:53 +08:00

130 lines
5.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
@file DownloadTimetable.h
@brief 时间表下载操作类
@author 曹顶法
*/
#pragma once
#include "pub_sysinfo_api/SysInfoApi.h"
#include "TimetableCommon.h"
#include "TimetableCtrlParamTable.h"
#include "TimetableRtdbTableOperate.h"
#include "TimetableMsgBusMng.h"
#include "BasicOperation.h"
namespace kbd_app
{
class CDownloadTimetable
{
public:
CDownloadTimetable(const iot_public::SRunAppInfo &stRunAppInfo,
const CParamMngPtr &ptrParamMng,
const CTimetableMsgBusMngPtr &ptrMsgMng,
const CBasicOperationPtr &ptrBasicOpt);
virtual ~CDownloadTimetable();
/*
@brief 处理下载命令
@param STimetableCmd & stCmd 下载命令
*/
void handleDownloadCmd(STimetableCmd &stCmd);
private:
/*
@brief 检查DCF、URF、RRF标识
@param STimetableCmd & stCmd 当前下载命令
@param const ETimetableCmdState eSuccessState 成功设置的状态
@param const ETimetableCmdState eFailState 失败设置的状态
@return 无
*/
void checkFlag(STimetableCmd &stCmd,
const ETimetableCmdState eSuccessState,
const ETimetableCmdState eFailState);
/*
@brief 等待关系库中的配置同步到内存库
@param STimetableCmd & stCmd 当前命令
@param const ETimetableCmdState eSuccessState 成功设置的状态
@param const ETimetableCmdState eFailState 失败设置的状态
@return 无
*/
void waitSyncTimetableInfo(STimetableCmd &stCmd,
const ETimetableCmdState eSuccessState,
const ETimetableCmdState eFailState);
/*
@brief 发送下载命令消息
@param STimetableCmd & stCmd 当前命令
@param const EDownloadState eSuccessState 成功设置的状态
@param const EDownloadState eFailState 失败设置的状态
*/
void sendDownloadCmd(STimetableCmd &stCmd,
const ETimetableCmdState eSuccessState,
const ETimetableCmdState eFailState);
/*
@brief 检查下载命令反馈结果
@param STimetableCmd & stCmd 当前命令
@param const EDownloadState eSuccessState 成功设置的状态
@param const EDownloadState eFailState 失败设置的状态
*/
void waitDownloadResponse(STimetableCmd &stCmd,
const ETimetableCmdState eSuccessState,
const ETimetableCmdState eFailState);
/*
@brief 设置下载完成标识DCF
@param STimetableCmd & stCmd 当前命令
@param const ETimetableCmdState eSuccessState 成功设置的状态
@param const ETimetableCmdState eFailState 失败设置的状态
@return 无
*/
void setDownloadFlag(STimetableCmd &stCmd,
const ETimetableCmdState eSuccessState,
const ETimetableCmdState eFailState);
/*
@brief 等待设置下载完成标识DCF的命令反馈
@param STimetableCmd & stCmd 当前命令
@param const ETimetableCmdState eSuccessState 成功设置的状态
@param const ETimetableCmdState eFailState 失败设置的状态
@return 无
*/
void waitDownloadFlagRep(STimetableCmd &stCmd,
const ETimetableCmdState eSuccessState,
const ETimetableCmdState eFailState);
/*
@brief 校验时间表ID和版本号
@param STimetableCmd & stCmd 当前命令
@param const ETimetableCmdState eSuccessState 成功设置的状态
@param const ETimetableCmdState eFailState 失败设置的状态
@return 无
*/
void verifyVersion(STimetableCmd &stCmd,
const ETimetableCmdState eSuccessState,
const ETimetableCmdState eFailState);
/*
@brief 下载命令完成后的处理
@param STimetableCmd & stCmd 当前命令
*/
void downloadCompleted(STimetableCmd &stCmd);
/*
@brief 生成下载命令报文
@param const STimetableCmd & stCmd 当前命令
@param std::string & strMsg 返回的命令报文
@return 成功返回true失败返回false
*/
bool makeDownloadMsg(const STimetableCmd &stCmd, std::string &strMsg);
private:
iot_public::SRunAppInfo m_stRunAppInfo; //< 本应用相关运行参数
CParamMngPtr m_ptrParamMng; //< 参数信息管理类
CTimetableMsgBusMngPtr m_ptrMsgMng; //< 消息管理类
CBasicOperationPtr m_ptrBasicOpt; //< 基础操作类
};
typedef boost::shared_ptr<CDownloadTimetable> CCDownloadTimetablePtr;
}