#pragma once #include "pub_sysinfo_api/SysInfoApi.h" #include "TimetableCommon.h" #include "TimetableMsgBusMng.h" #include "BasicOperation.h" namespace kbd_app { class CReadTimetable { public: CReadTimetable(const iot_public::SRunAppInfo &stRunAppInfo, const CParamMngPtr &ptrParamMng, const CTimetableMsgBusMngPtr &ptrMsgMng, const CBasicOperationPtr &ptrBasicOpt); virtual ~CReadTimetable(); /* @brief 处理读取命令 @param STimetableCmd & stCmd 下载命令 */ void handleManualRead(STimetableCmd &stCmd); private: void setURFFlag(STimetableCmd &stCmd, const ETimetableCmdState eSuccessState, const ETimetableCmdState eFailState); void waitURFFlagRep(STimetableCmd &stCmd, const ETimetableCmdState eSuccessState, const ETimetableCmdState eFailState); void waitRRFFlag(STimetableCmd &stCmd, const ETimetableCmdState eSuccessState, const ETimetableCmdState eFailState); void checkFlag(STimetableCmd &stCmd, const ETimetableCmdState eSuccessState, const ETimetableCmdState eFailState); void resetRRFFlag(STimetableCmd &stCmd, const ETimetableCmdState eSuccessState, const ETimetableCmdState eFailState); void waitResetRRFFlagRep(STimetableCmd &stCmd, const ETimetableCmdState eSuccessState, const ETimetableCmdState eFailState); /* @brief 发送读取命令消息 @param STimetableCmd & stCmd 当前命令 @param const EDownloadState eSuccessState 成功设置的状态 @param const EDownloadState eFailState 失败设置的状态 */ void sendReadCmd(STimetableCmd &stCmd, const ETimetableCmdState eSuccessState, const ETimetableCmdState eFailState); /* @brief 检查读取命令执行结果 @param STimetableCmd & stCmd 当前命令 @param const EDownloadState eSuccessState 成功设置的状态 @param const EDownloadState eFailState 失败设置的状态 */ void waitReadResult(STimetableCmd &stCmd, const ETimetableCmdState eSuccessState, const ETimetableCmdState eFailState); /* @brief 读取命令完成后的处理 @param STimetableCmd & stCmd 当前命令 */ void readCompleted(STimetableCmd &stCmd); /* @brief 生成读取时间表命令报文 @param const STimetableCmd & stCmd 当前命令 @param std::string & strMsg 返回的命令报文 @return 成功返回true,失败返回false */ bool makeReadMsg(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 CReadTimetablePtr; } //namespace kbd_app