[novafinedust] Fix measurement parsing overflow (#12543)

Fixes #12542

Signed-off-by: Stefan Triller <github@stefantriller.de>
This commit is contained in:
Stefan Triller 2022-03-29 18:54:21 +02:00 committed by GitHub
parent 4f4dfcca20
commit 3c0d27dad8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 3 additions and 2 deletions

View File

@ -227,6 +227,7 @@ public class SDS011Communicator {
if (logger.isDebugEnabled()) {
logger.debug("Read remaining bytes: {}, full reply={}", remainingBytesRead,
HexUtils.bytesToHex(readBuffer));
logger.trace("Read bytes as numbers: {}", Arrays.toString(readBuffer));
}
return ReplyFactory.create(readBuffer);
}

View File

@ -54,7 +54,7 @@ public class SensorMeasuredDataReply extends SensorReply {
* @return the measured PM2.5 value
*/
public float getPm25() {
int shiftedValue = (pm25highByte << 8 & 0xFF) | pm25lowByte & 0xFF;
int shiftedValue = ((pm25highByte & 0xFF) << 8) | pm25lowByte & 0xFF;
return ((float) shiftedValue) / 10;
}
@ -64,7 +64,7 @@ public class SensorMeasuredDataReply extends SensorReply {
* @return the measured PM10 value
*/
public float getPm10() {
int shiftedValue = (pm10highByte << 8 & 0xFF) | pm10lowByte & 0xFF;
int shiftedValue = ((pm10highByte & 0xFF) << 8) | pm10lowByte & 0xFF;
return ((float) shiftedValue) / 10;
}