12 data.push_back(value & 0xFFFF);
17 data.push_back((value & 0xFFFF0000) >> 16);
18 data.push_back(value & 0xFFFF);
23 data.push_back(value & 0xFFFF);
24 data.push_back((value & 0xFFFF0000) >> 16);
28 data.push_back((value & 0xFFFF000000000000) >> 48);
29 data.push_back((value & 0xFFFF00000000) >> 32);
30 data.push_back((value & 0xFFFF0000) >> 16);
31 data.push_back(value & 0xFFFF);
35 data.push_back(value & 0xFFFF);
36 data.push_back((value & 0xFFFF0000) >> 16);
37 data.push_back((value & 0xFFFF00000000) >> 32);
38 data.push_back((value & 0xFFFF000000000000) >> 48);
41 ESP_LOGE(TAG,
"Invalid data type for modbus number to payload conversion: %d",
static_cast<uint16_t
>(value_type));
50 if (offset > data.size()) {
51 ESP_LOGE(TAG,
"not enough data for value");
55 size_t size = data.size() - offset;
57 switch (sensor_value_type) {
79 value =
static_cast<uint32_t>(value & 0xFFFF) << 16 | (value & 0xFFFF0000) >> 16;
105 uint32_t sign_bit = (value & 0x8000) << 16;
107 static_cast<int32_t
>(((value & 0x7FFF) << 16 | (value & 0xFFFF0000) >> 16) | sign_bit), bitmask);
126 value = (tmp << 48) | (tmp >> 48) | ((tmp & 0xFFFF0000) << 16) | ((tmp >> 16) & 0xFFFF0000);
136 ESP_LOGE(TAG,
"not enough data for value");