Fix rtl_wmbus -f detection.

pull/1167/head
Fredrik Öhrström 2024-02-12 14:07:53 +01:00
rodzic 0d0338c9a4
commit 14ca481c63
4 zmienionych plików z 21 dodań i 6 usunięć

Wyświetl plik

@ -237,7 +237,14 @@ XMQProceed DriverDynamic::add_detect(XMQDoc *doc, XMQNode *detect, DriverInfo *d
XMQProceed DriverDynamic::add_use(XMQDoc *doc, XMQNode *field, DriverDynamic *dd) XMQProceed DriverDynamic::add_use(XMQDoc *doc, XMQNode *field, DriverDynamic *dd)
{ {
string name = xmqGetString(doc, field, "."); string name = xmqGetString(doc, field, ".");
dd->addOptionalLibraryFields(name); bool ok = dd->addOptionalLibraryFields(name);
if (!ok)
{
warning("(driver) error in %s, unknown library field: %s \n",
dd->fileName().c_str(),
name.c_str());
}
return XMQ_CONTINUE; return XMQ_CONTINUE;
} }

Wyświetl plik

@ -2679,7 +2679,7 @@ bool checkIf(set<string> &fields, const char *s)
return false; return false;
} }
void checkFieldsEmpty(set<string> &fields, string name) bool checkFieldsEmpty(set<string> &fields, string driver_name)
{ {
if (fields.size() > 0) if (fields.size() > 0)
{ {
@ -2687,12 +2687,14 @@ void checkFieldsEmpty(set<string> &fields, string name)
for (auto &s : fields) { info += s+" "; } for (auto &s : fields) { info += s+" "; }
warning("(meter) when adding common fields to driver %s, these fields were not found: %s\n", warning("(meter) when adding common fields to driver %s, these fields were not found: %s\n",
name.c_str(), driver_name.c_str(),
info.c_str()); info.c_str());
return false;
} }
return true;
} }
void MeterCommonImplementation::addOptionalLibraryFields(string field_names) bool MeterCommonImplementation::addOptionalLibraryFields(string field_names)
{ {
set<string> fields = splitStringIntoSet(field_names, ','); set<string> fields = splitStringIntoSet(field_names, ',');
@ -3095,6 +3097,12 @@ void MeterCommonImplementation::addOptionalLibraryFields(string field_names)
.set(VIFRange::HeatCostAllocation) .set(VIFRange::HeatCostAllocation)
); );
} }
if (!checkFieldsEmpty(fields, name()))
{
return false;
}
return true;
} }
const char *toString(VifScaling s) const char *toString(VifScaling s)

Wyświetl plik

@ -204,7 +204,7 @@ protected:
std::string decodeTPLStatusByte(uchar sts); std::string decodeTPLStatusByte(uchar sts);
void addOptionalLibraryFields(string fields); bool addOptionalLibraryFields(string fields);
vector<string> &selectedFields() { return selected_fields_; } vector<string> &selectedFields() { return selected_fields_; }
void setSelectedFields(vector<string> &f) { selected_fields_ = f; } void setSelectedFields(vector<string> &f) { selected_fields_ = f; }

Wyświetl plik

@ -168,7 +168,7 @@ shared_ptr<BusDevice> openRTLWMBUS(Detected detected,
args.push_back("-h"); args.push_back("-h");
invokeShellCaptureOutput(rtl_wmbus, { "-h" }, {}, &out, true); invokeShellCaptureOutput(rtl_wmbus, { "-h" }, {}, &out, true);
debug("(rtlwmbus) help %s\n", out.c_str()); debug("(rtlwmbus) help %s\n", out.c_str());
if (out.find("-f exit if flow") != string::npos) if (out.find("-f exit") != string::npos)
{ {
add_f = " -f"; add_f = " -f";
} }