TSI_Config/cardbase.h

68 lines
1.3 KiB
C
Raw Normal View History

2025-03-29 18:05:12 +08:00
#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<CardType>(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