diff --git a/beast.c b/beast.c index 61eace6..6e7f5ac 100644 --- a/beast.c +++ b/beast.c @@ -76,7 +76,7 @@ static bool beast_parse_mode_s_short(struct buf *buf, struct packet *packet, str packet->type = MODE_S_SHORT; uint64_t source_mlat = beast_parse_mlat(overlay->mlat_timestamp); packet->mlat_timestamp = mlat_timestamp_scale_in(source_mlat, UINT64_C(0xffffffffffff), 12, &state->mlat_state); - packet->rssi = rssi_scale_in(overlay->rssi, UINT8_MAX); + packet->rssi = rssi_scale_in(overlay->rssi == UINT8_MAX ? 0 : overlay->rssi, UINT8_MAX); memcpy(packet->payload, overlay->payload, sizeof(overlay->payload)); buf_consume(buf, in_bytes); return true; @@ -92,7 +92,7 @@ static bool beast_parse_mode_s_long(struct buf *buf, struct packet *packet, stru packet->type = MODE_S_LONG; uint64_t source_mlat = beast_parse_mlat(overlay->mlat_timestamp); packet->mlat_timestamp = mlat_timestamp_scale_in(source_mlat, UINT64_C(0xffffffffffff), 12, &state->mlat_state); - packet->rssi = rssi_scale_in(overlay->rssi, UINT8_MAX); + packet->rssi = rssi_scale_in(overlay->rssi == UINT8_MAX ? 0 : overlay->rssi, UINT8_MAX); memcpy(packet->payload, overlay->payload, sizeof(overlay->payload)); buf_consume(buf, in_bytes); return true;