Added function t retrieve a inverter just by a given payload fragment
This commit is contained in:
parent
b597e907de
commit
0d9b994c92
@ -53,6 +53,29 @@ std::shared_ptr<InverterAbstract> HoymilesClass::getInverterBySerial(uint64_t se
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::shared_ptr<InverterAbstract> HoymilesClass::getInverterByFragment(fragment_t* fragment)
|
||||
{
|
||||
if (fragment->len <= 4) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::shared_ptr<InverterAbstract> inv;
|
||||
for (uint8_t i = 0; i < _inverters.size(); i++) {
|
||||
inv = _inverters[i];
|
||||
serial_u p;
|
||||
p.u64 = inv->serial();
|
||||
|
||||
if ((p.b[3] == fragment->fragment[1])
|
||||
&& (p.b[2] == fragment->fragment[2])
|
||||
&& (p.b[1] == fragment->fragment[3])
|
||||
&& (p.b[0] == fragment->fragment[4])) {
|
||||
|
||||
return inv;
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void HoymilesClass::removeInverterByPos(uint8_t pos)
|
||||
{
|
||||
_inverters.erase(_inverters.begin() + pos);
|
||||
|
||||
@ -15,7 +15,7 @@ public:
|
||||
std::shared_ptr<InverterAbstract> addInverter(const char* name, uint64_t serial);
|
||||
std::shared_ptr<InverterAbstract> getInverterByPos(uint8_t pos);
|
||||
std::shared_ptr<InverterAbstract> getInverterBySerial(uint64_t serial);
|
||||
std::shared_ptr<InverterAbstract> getInverterByTelegram(uint8_t buf[]);
|
||||
std::shared_ptr<InverterAbstract> getInverterByFragment(fragment_t* fragment);
|
||||
void removeInverterByPos(uint8_t pos);
|
||||
size_t getNumInverters();
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user