#ifndef CARDBASE_H #define CARDBASE_H #include "data_config.h" #ifdef NAME #undef NAME #endif #define NAME(x) (x, #x) class CardBase { public: CardBase() {} ~CardBase() {} void FromJson(const Json::Value &cfg) { version_ = cfg["version"].asInt(); slot_ = cfg["slot"].asInt(); card_type_ = static_cast(cfg["type"].asInt()); } Json::Value ToJson() { Json::Value ch; ch[NAME(version)] = version_; ch[NAME(slot)] = slot_; ch[NAME(type)] = card_type_; return ch; } protected: int version_; int slot_; // 从1~15 CardType card_type_; }; class VariableBase { public: VariableBase() {} ~VariableBase() {} // TODO: fromjson, tojson int id_; VibChannelType type_; Delay delay_; DirectImpl direct_; XImpl x1_; XImpl x2_; RecorderOut recorder_out_; }; // 位移 class RadialVariable : public VariableBase { public: bool alert_latching_; bool danger_latching_; RadialImpl not1x_; RadialImpl smax_; }; // 加速度与速度 class AccVelVariable : public VariableBase { public: bool alert_latching_; bool danger_latching_; bool timed_ok_; bool rms_active_; bool integrate_active_; }; #endif // CARDBASE_H