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)
{
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;
}

Wyświetl plik

@ -2679,7 +2679,7 @@ bool checkIf(set<string> &fields, const char *s)
return false;
}
void checkFieldsEmpty(set<string> &fields, string name)
bool checkFieldsEmpty(set<string> &fields, string driver_name)
{
if (fields.size() > 0)
{
@ -2687,12 +2687,14 @@ void checkFieldsEmpty(set<string> &fields, string name)
for (auto &s : fields) { info += s+" "; }
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());
return false;
}
return true;
}
void MeterCommonImplementation::addOptionalLibraryFields(string field_names)
bool MeterCommonImplementation::addOptionalLibraryFields(string field_names)
{
set<string> fields = splitStringIntoSet(field_names, ',');
@ -3095,6 +3097,12 @@ void MeterCommonImplementation::addOptionalLibraryFields(string field_names)
.set(VIFRange::HeatCostAllocation)
);
}
if (!checkFieldsEmpty(fields, name()))
{
return false;
}
return true;
}
const char *toString(VifScaling s)

Wyświetl plik

@ -204,7 +204,7 @@ protected:
std::string decodeTPLStatusByte(uchar sts);
void addOptionalLibraryFields(string fields);
bool addOptionalLibraryFields(string fields);
vector<string> &selectedFields() { return selected_fields_; }
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");
invokeShellCaptureOutput(rtl_wmbus, { "-h" }, {}, &out, true);
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";
}