mirror of
https://github.com/Threnklyn/esphome-dev.git
synced 2026-05-31 10:08:27 +02:00
Add encode_uint32 method (#1427)
This commit is contained in:
@@ -62,8 +62,7 @@ void ProtoMessage::decode(const uint8_t *buffer, size_t length) {
|
||||
error = true;
|
||||
break;
|
||||
}
|
||||
uint32_t val = (uint32_t(buffer[i]) << 0) | (uint32_t(buffer[i + 1]) << 8) | (uint32_t(buffer[i + 2]) << 16) |
|
||||
(uint32_t(buffer[i + 3]) << 24);
|
||||
uint32_t val = encode_uint32(buffer[i + 3], buffer[i + 2], buffer[i + 1], buffer[i]);
|
||||
if (!this->decode_32bit(field_id, Proto32Bit(val))) {
|
||||
ESP_LOGV(TAG, "Cannot decode 32-bit field %u with value %u!", field_id, val);
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ void MAX31855Sensor::read_data_() {
|
||||
this->read_array(data, 4);
|
||||
this->disable();
|
||||
|
||||
const uint32_t mem = data[0] << 24 | data[1] << 16 | data[2] << 8 | data[3] << 0;
|
||||
const uint32_t mem = encode_uint32(data[0], data[1], data[2], data[3]);
|
||||
|
||||
// Verify we got data
|
||||
if (mem != 0xFFFFFFFF) {
|
||||
|
||||
@@ -46,8 +46,7 @@ void rdm6300::RDM6300Component::loop() {
|
||||
} else {
|
||||
// Valid data
|
||||
this->status_clear_warning();
|
||||
const uint32_t result = (uint32_t(this->buffer_[1]) << 24) | (uint32_t(this->buffer_[2]) << 16) |
|
||||
(uint32_t(this->buffer_[3]) << 8) | this->buffer_[4];
|
||||
const uint32_t result = encode_uint32(this->buffer_[1], this->buffer_[2], this->buffer_[3], this->buffer_[4]);
|
||||
bool report = result != last_id_;
|
||||
for (auto *card : this->cards_) {
|
||||
if (card->process(result)) {
|
||||
|
||||
@@ -281,8 +281,7 @@ void Tuya::handle_datapoint_(const uint8_t *buffer, size_t len) {
|
||||
case TuyaDatapointType::INTEGER:
|
||||
if (data_len != 4)
|
||||
return;
|
||||
datapoint.value_uint =
|
||||
(uint32_t(data[0]) << 24) | (uint32_t(data[1]) << 16) | (uint32_t(data[2]) << 8) | (uint32_t(data[3]) << 0);
|
||||
datapoint.value_uint = encode_uint32(data[0], data[1], data[2], data[3]);
|
||||
break;
|
||||
case TuyaDatapointType::ENUM:
|
||||
if (data_len != 1)
|
||||
|
||||
@@ -70,8 +70,7 @@ bool parse_xiaomi_value(uint8_t value_type, const uint8_t *data, uint8_t value_l
|
||||
}
|
||||
// idle time since last motion, 4 byte, 32-bit unsigned integer, 1 min
|
||||
else if ((value_type == 0x17) && (value_length == 4)) {
|
||||
const uint32_t idle_time =
|
||||
uint32_t(data[0]) | (uint32_t(data[1]) << 8) | (uint32_t(data[2]) << 16) | (uint32_t(data[2]) << 24);
|
||||
const uint32_t idle_time = encode_uint32(data[3], data[2], data[1], data[0]);
|
||||
result.idle_time = idle_time / 60.0f;
|
||||
result.has_motion = (idle_time) ? false : true;
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user