kopia lustrzana https://github.com/weetmuts/wmbusmeters
Fix rtl_wmbus -f detection.
rodzic
0d0338c9a4
commit
14ca481c63
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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; }
|
||||||
|
|
|
@ -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";
|
||||||
}
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue