From 426e6a1b46a1e3a8cc1859cc7fb878c97077ee3b Mon Sep 17 00:00:00 2001 From: sekkr1 Date: Thu, 12 Mar 2020 02:25:54 +0200 Subject: [PATCH] Fixed iBeacon struct and major and minor parsing (#987) Co-authored-by: sekkr1 --- esphome/components/esp32_ble_tracker/esp32_ble_tracker.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/esphome/components/esp32_ble_tracker/esp32_ble_tracker.h b/esphome/components/esp32_ble_tracker/esp32_ble_tracker.h index 74bb7e5d10..5456adbfe5 100644 --- a/esphome/components/esp32_ble_tracker/esp32_ble_tracker.h +++ b/esphome/components/esp32_ble_tracker/esp32_ble_tracker.h @@ -46,14 +46,15 @@ class ESPBLEiBeacon { ESPBLEiBeacon(const uint8_t *data); static optional from_manufacturer_data(const ServiceData &data); - uint16_t get_major() { return reverse_bits_16(this->beacon_data_.major); } - uint16_t get_minor() { return reverse_bits_16(this->beacon_data_.minor); } + uint16_t get_major() { return ((this->beacon_data_.major & 0xFF) << 8) | (this->beacon_data_.major >> 8); } + uint16_t get_minor() { return ((this->beacon_data_.minor & 0xFF) << 8) | (this->beacon_data_.minor >> 8); } int8_t get_signal_power() { return this->beacon_data_.signal_power; } ESPBTUUID get_uuid() { return ESPBTUUID::from_raw(this->beacon_data_.proximity_uuid); } protected: struct { uint8_t sub_type; + uint8_t length; uint8_t proximity_uuid[16]; uint16_t major; uint16_t minor;