diff --git a/src/modules/SX128x/SX1280.cpp b/src/modules/SX128x/SX1280.cpp index 7692c0a8..a887b801 100644 --- a/src/modules/SX128x/SX1280.cpp +++ b/src/modules/SX128x/SX1280.cpp @@ -176,7 +176,8 @@ float SX1280::getRangingResult() { RADIOLIB_ASSERT(state); // calculate the real result - uint32_t raw = ((uint32_t)data[0] << 16) | ((uint32_t)data[1] << 8) | data[2]; + uint32_t uraw = ((uint32_t)data[0] << 16) | ((uint32_t)data[1] << 8) | data[2]; + int32_t raw = (uraw & ((1<<23) - 1)) | (uraw >> 23 << 31); return((float)raw * 150.0 / (4.096 * this->bandwidthKhz)); }