redo TypeDef

This commit is contained in:
Michael Davidsaver
2019-12-13 20:02:47 -08:00
parent 4b084b31be
commit 21ac70db46
5 changed files with 156 additions and 286 deletions
+59 -53
View File
@@ -12,64 +12,70 @@ namespace nt {
TypeDef NTScalar::build()
{
TypeDef def(TypeCode::Struct,
value.isarray() ? "epics:nt/NTScalarArray:1.0" : "epics:nt/NTScalar:1.0");
return TypeDef(TypeCode::Struct,
value.isarray() ? "epics:nt/NTScalarArray:1.0" : "epics:nt/NTScalar:1.0", {
Member(value, "value"),
Member(TypeCode::Struct, "alarm", "alarm_t", {
Member(TypeCode::Int32, "severity"),
Member(TypeCode::Int32, "status"),
Member(TypeCode::String, "message"),
}),
Member(TypeCode::Struct, "timeStamp", "time_t", {
Member(TypeCode::Int64, "secondsPastEpoch"),
Member(TypeCode::Int32, "nanoseconds"),
Member(TypeCode::Int32, "userTag"),
}),
});
const bool isnumeric = value.kind()==Kind::Integer || value.kind()==Kind::Real;
const auto scalar = value.scalarOf();
// const bool isnumeric = value.kind()==Kind::Integer || value.kind()==Kind::Real;
// const auto scalar = value.scalarOf();
def.begin()
.insert("value", value)
.insert("alarm", "alarm_t", TypeCode::Struct).seek("alarm")
.insert("severity", TypeCode::Int32)
.insert("status", TypeCode::Int32)
.insert("message", TypeCode::String)
.up()
.insert("timeStamp", "time_t", TypeCode::Struct).seek("timeStamp")
.insert("secondsPastEpoch", TypeCode::Int64)
.insert("nanoseconds", TypeCode::Int32)
.insert("userTag", TypeCode::Int32)
.up()
;
// if(display && isnumeric) {
// def.begin()
// .insert("display", TypeCode::Struct).seek("display")
// .insert("limitLow", scalar)
// .insert("limitHigh", scalar)
// .insert("description", TypeCode::String)
// //.insert("format", TypeCode::String)
// .insert("units", TypeCode::String)
// .up()
// ;
// }
if(display && isnumeric) {
def.begin()
.insert("display", TypeCode::Struct).seek("display")
.insert("limitLow", scalar)
.insert("limitHigh", scalar)
.insert("description", TypeCode::String)
//.insert("format", TypeCode::String)
.insert("units", TypeCode::String)
.up()
;
}
// if(control && isnumeric) {
// def.begin()
// .insert("control", TypeCode::Struct).seek("control")
// .insert("limitLow", scalar)
// .insert("limitHigh", scalar)
// .insert("minStep", scalar)
// .up()
// ;
// }
if(control && isnumeric) {
def.begin()
.insert("control", TypeCode::Struct).seek("control")
.insert("limitLow", scalar)
.insert("limitHigh", scalar)
.insert("minStep", scalar)
.up()
;
}
// if(valueAlarm && isnumeric) {
// def.begin()
// .insert("valueAlarm", TypeCode::Struct).seek("valueAlarm")
// .insert("active", TypeCode::Bool) // useless?
// .insert("lowAlarmLimit", scalar)
// .insert("lowWarningLimit", scalar)
// .insert("highWarningLimit", scalar)
// .insert("highAlarmLimit", scalar)
// .insert("lowAlarmSeverity", TypeCode::Int32)
// .insert("lowWarningSeverity", TypeCode::Int32)
// .insert("highWarningSeverity", TypeCode::Int32)
// .insert("highAlarmSeverity", TypeCode::Int32)
// .insert("hysteresis", TypeCode::Float64)
// .up()
// ;
// }
// return def;
}
TypeDef NTNDArray::build()
{
TypeDef def(TypeCode::Struct, "epics:nt/NTNDArray:1.0");
if(valueAlarm && isnumeric) {
def.begin()
.insert("valueAlarm", TypeCode::Struct).seek("valueAlarm")
.insert("active", TypeCode::Bool) // useless?
.insert("lowAlarmLimit", scalar)
.insert("lowWarningLimit", scalar)
.insert("highWarningLimit", scalar)
.insert("highAlarmLimit", scalar)
.insert("lowAlarmSeverity", TypeCode::Int32)
.insert("lowWarningSeverity", TypeCode::Int32)
.insert("highWarningSeverity", TypeCode::Int32)
.insert("highAlarmSeverity", TypeCode::Int32)
.insert("hysteresis", TypeCode::Float64)
.up()
;
}
return def;
}