Fix large bit shifts when processing scan

This commit is contained in:
Piv
2020-09-20 10:13:22 +09:30
parent ef84c19f92
commit 9e46097a0a

View File

@@ -48,8 +48,8 @@ func processScan(raw: Data) throws -> LidarScan {
if (raw[1] & 0b1) != 1 { if (raw[1] & 0b1) != 1 {
throw RPLidarError.SCAN_ERROR(message: "Check bit not equal to 1") throw RPLidarError.SCAN_ERROR(message: "Check bit not equal to 1")
} }
let angle = (Float(raw[1] >> 1) + Float(raw[2] << 7)) / 64 let angle = Float((Int(raw[1]) >> 1) + (Int(raw[2]) << 7)) / 64
let distance = (Float(raw[3]) + Float(raw[4] << 8)) / 4 let distance = Float(Int(raw[3]) + (Int(raw[4]) << 8)) / 4
return LidarScan(newScan: newScan == 1, quality: quality, angle: angle, distance: distance) return LidarScan(newScan: newScan == 1, quality: quality, angle: angle, distance: distance)
} }