kopia lustrzana https://github.com/weetmuts/wmbusmeters
Move mfct specific bits from driverinfo into meter constructor.
rodzic
bda349bcd2
commit
601b28332b
|
@ -30,17 +30,18 @@ namespace
|
|||
di.setMeterType(MeterType::SmokeDetector);
|
||||
di.addLinkMode(LinkMode::T1);
|
||||
di.addDetection(MANUFACTURER_EIE, 0x1a, 0x0c);
|
||||
di.addMfctTPLStatusBits(
|
||||
Translate::Lookup()
|
||||
.add(Translate::Rule("TPL_STS", Translate::Type::BitToString)
|
||||
.set(MaskBits(0xe0))
|
||||
.set(DefaultMessage("OK"))
|
||||
.add(Translate::Map(0x04 ,"RTC_INVALID", TestBit::Set))));
|
||||
di.setConstructor([](MeterInfo& mi, DriverInfo& di){ return shared_ptr<Meter>(new Driver(mi, di)); });
|
||||
});
|
||||
|
||||
Driver::Driver(MeterInfo &mi, DriverInfo &di) : MeterCommonImplementation(mi, di)
|
||||
{
|
||||
setMfctTPLStatusBits(
|
||||
Translate::Lookup()
|
||||
.add(Translate::Rule("TPL_STS", Translate::Type::BitToString)
|
||||
.set(MaskBits(0xe0))
|
||||
.set(DefaultMessage("OK"))
|
||||
.add(Translate::Map(0x04 ,"RTC_INVALID", TestBit::Set))));
|
||||
|
||||
addStringFieldWithExtractorAndLookup(
|
||||
"status",
|
||||
"Meter error flags. IMPORTANT! Smoke alarm is NOT reported here! You MUST check last alarm date and counter!",
|
||||
|
|
|
@ -31,17 +31,18 @@ namespace
|
|||
di.setMeterType(MeterType::HeatMeter);
|
||||
di.addLinkMode(LinkMode::T1);
|
||||
di.addDetection(MANUFACTURER_BMT, 0x0d, 0x0b);
|
||||
di.addMfctTPLStatusBits(
|
||||
Translate::Lookup()
|
||||
.add(Translate::Rule("TPL_STS", Translate::Type::BitToString)
|
||||
.set(MaskBits(0xe0))
|
||||
.set(DefaultMessage("OK"))
|
||||
.add(Translate::Map(0x80 ,"SABOTAGE_ENCLOSURE", TestBit::Set))));
|
||||
di.setConstructor([](MeterInfo& mi, DriverInfo& di){ return shared_ptr<Meter>(new Driver(mi, di)); });
|
||||
});
|
||||
|
||||
Driver::Driver(MeterInfo &mi, DriverInfo &di) : MeterCommonImplementation(mi, di)
|
||||
{
|
||||
setMfctTPLStatusBits(
|
||||
Translate::Lookup()
|
||||
.add(Translate::Rule("TPL_STS", Translate::Type::BitToString)
|
||||
.set(MaskBits(0xe0))
|
||||
.set(DefaultMessage("OK"))
|
||||
.add(Translate::Map(0x80 ,"SABOTAGE_ENCLOSURE", TestBit::Set))));
|
||||
|
||||
addStringField(
|
||||
"status",
|
||||
"Meter status from tpl status field.",
|
||||
|
|
|
@ -32,17 +32,18 @@ namespace
|
|||
di.addDetection(MANUFACTURER_LAS, 0x00, 0x14);
|
||||
di.addDetection(MANUFACTURER_LAS, 0x00, 0x1b);
|
||||
di.addDetection(MANUFACTURER_LAS, 0x02, 0x0b);
|
||||
di.addMfctTPLStatusBits(
|
||||
Translate::Lookup()
|
||||
.add(Translate::Rule("TPL_STS", Translate::Type::BitToString)
|
||||
.set(MaskBits(0xe0))
|
||||
.set(DefaultMessage("OK"))
|
||||
.add(Translate::Map(0x40 ,"SABOTAGE_ENCLOSURE", TestBit::Set))));
|
||||
di.setConstructor([](MeterInfo& mi, DriverInfo& di){ return shared_ptr<Meter>(new Driver(mi, di)); });
|
||||
});
|
||||
|
||||
Driver::Driver(MeterInfo &mi, DriverInfo &di) : MeterCommonImplementation(mi, di)
|
||||
{
|
||||
setMfctTPLStatusBits(
|
||||
Translate::Lookup()
|
||||
.add(Translate::Rule("TPL_STS", Translate::Type::BitToString)
|
||||
.set(MaskBits(0xe0))
|
||||
.set(DefaultMessage("OK"))
|
||||
.add(Translate::Map(0x40 ,"SABOTAGE_ENCLOSURE", TestBit::Set))));
|
||||
|
||||
addStringField(
|
||||
"status",
|
||||
"Meter status from tpl status field.",
|
||||
|
|
|
@ -30,17 +30,18 @@ namespace
|
|||
di.setDefaultFields("name,id,current_temperature_c,current_relative_humidity_rh,timestamp");
|
||||
di.setMeterType(MeterType::TempHygroMeter);
|
||||
di.addDetection(MANUFACTURER_LAS, 0x1b, 0x07);
|
||||
di.addMfctTPLStatusBits(
|
||||
Translate::Lookup()
|
||||
.add(Translate::Rule("TPL_STS", Translate::Type::BitToString)
|
||||
.set(MaskBits(0xe0))
|
||||
.set(DefaultMessage("OK"))
|
||||
.add(Translate::Map(0x40 ,"SABOTAGE_ENCLOSURE", TestBit::Set))));
|
||||
di.setConstructor([](MeterInfo& mi, DriverInfo& di){ return shared_ptr<Meter>(new Driver(mi, di)); });
|
||||
});
|
||||
|
||||
Driver::Driver(MeterInfo &mi, DriverInfo &di) : MeterCommonImplementation(mi, di)
|
||||
{
|
||||
setMfctTPLStatusBits(
|
||||
Translate::Lookup()
|
||||
.add(Translate::Rule("TPL_STS", Translate::Type::BitToString)
|
||||
.set(MaskBits(0xe0))
|
||||
.set(DefaultMessage("OK"))
|
||||
.add(Translate::Map(0x40 ,"SABOTAGE_ENCLOSURE", TestBit::Set))));
|
||||
|
||||
addStringField(
|
||||
"status",
|
||||
"Meter status from tpl status field.",
|
||||
|
|
|
@ -286,7 +286,7 @@ void MeterCommonImplementation::addLinkMode(LinkMode lm)
|
|||
link_modes_.addLinkMode(lm);
|
||||
}
|
||||
|
||||
void MeterCommonImplementation::addMfctTPLStatusBits(Translate::Lookup &lookup)
|
||||
void MeterCommonImplementation::setMfctTPLStatusBits(Translate::Lookup &lookup)
|
||||
{
|
||||
mfct_tpl_status_bits_ = lookup;
|
||||
}
|
||||
|
|
|
@ -191,7 +191,6 @@ public:
|
|||
void setDefaultFields(string f) { default_fields_ = splitString(f, ','); }
|
||||
void addLinkMode(LinkMode lm) { linkmodes_.addLinkMode(lm); }
|
||||
void forceMfctIndex(int i) { force_mfct_index_ = i; }
|
||||
void addMfctTPLStatusBits(Translate::Lookup &lookup) { mfct_tpl_status_bits_ = lookup; }
|
||||
void setConstructor(function<shared_ptr<Meter>(MeterInfo&,DriverInfo&)> c) { constructor_ = c; }
|
||||
void addDetection(uint16_t mfct, uchar type, uchar ver) { detect_.push_back({ mfct, type, ver }); }
|
||||
vector<DriverDetect> &detect() { return detect_; }
|
||||
|
|
|
@ -98,7 +98,7 @@ protected:
|
|||
std::vector<std::string> &meterExtraConstantFields();
|
||||
void setMeterType(MeterType mt);
|
||||
void addLinkMode(LinkMode lm);
|
||||
void addMfctTPLStatusBits(Translate::Lookup &lookup);
|
||||
void setMfctTPLStatusBits(Translate::Lookup &lookup);
|
||||
|
||||
// Print with the default unit for this quantity.
|
||||
void addPrint(string vname, Quantity vquantity,
|
||||
|
|
Ładowanie…
Reference in New Issue