masked enums with single mask, update seltemp in advance

This commit is contained in:
MichaelDvP
2025-05-23 07:41:43 +02:00
parent d3e0f180c5
commit ca81a02a8c
3 changed files with 20 additions and 15 deletions

View File

@@ -197,16 +197,17 @@ class EMSdevice {
}
}
void has_enumupdate(std::shared_ptr<const Telegram> telegram,
uint8_t & value,
const uint8_t index,
const std::vector<uint8_t> & maskIn,
const std::vector<uint8_t> & maskOut) {
void has_enumupdate(std::shared_ptr<const Telegram> telegram, uint8_t & value, const uint8_t index, const std::vector<uint8_t> & maskIn) {
uint8_t val = value < maskIn.size() ? maskIn[value] : EMS_VALUE_UINT8_NOTSET;
if (telegram->read_value(val, index)) {
value = val < maskOut.size() ? maskOut[val] : EMS_VALUE_UINT8_NOTSET;
has_update_ = true;
publish_value((void *)&value);
for (uint8_t i = 0; i < maskIn.size(); i++) {
if (val == maskIn[i]) {
value = i;
has_update_ = true;
publish_value((void *)&value);
return;
}
}
}
}