#pragma once /** * @file fault_code.h * @brief 故障代码解析 * * @author your name (you@domain.com) * @version 0.1 * @date 2024-03-04 * * Copyright: Baosight Co. Ltd. * DO NOT COPY/USE WITHOUT PERMISSION * */ #include class FaultCode : public AlgBase { public: FaultCode(const string name, const mix_cc::json& rule_json, const string ruleId,size_t code_type); ~FaultCode() override; public: int init() override; /** * @brief 执行函数 * @return AlarmInfo */ AlarmInfo exec_mon() override; /** * @brief 单次执行 * @param time_range My Param doc * @return std::vector */ std::vector exec_task(mix_cc::time_range_t time_range) override; protected: /** * @brief 取位函数 * 获取 value的第sub位 * @tparam T * @param value 数据 * @param sub 第sub位 * @return T 0或1 */ template T static gitbit(T value, T sub) { return int(value) >> int(sub) & 1; }; /** * @brief * @return true * @return false */ int select_t_lov_fcode(); protected: const size_t code_type_; ///< 故障代码解析类型:0-整体解析;1-按位解析 struct FaultCodeInfo { bool is_usable = false; std::string name; std::string content; }; std::map map2fcode_; ///<故障代码对应表 std::string alarm_content_; ///<报警内容 bool is_valid_ = false; ///<配置参数是否合法 };