Added Knots <-> MMperSec conversions to AC35UnitConverter.

Removed redundant/unused conversions.
Documented all of the conversions, and renamed them to pack/unpackX, to match the API spec.
Updated/added some tests in AC35UnitConverterTest.
RaceStatus now contains a Bearing instead of a packed int bearing.
RaceStatus now contains wind speed in knots, instead of MMperSec packed.
This means that only RaceStatus decoder/encoder need to care about the bits-over-wire packed values.
issue #35 #36
#story[1095]
This commit is contained in:
fjc40
2017-08-06 14:57:51 +12:00
parent a0f98eadaa
commit ff262a6227
9 changed files with 177 additions and 83 deletions
@@ -5,6 +5,8 @@ import network.Messages.BoatStatus;
import network.Messages.Enums.RaceStatusEnum;
import network.Messages.Enums.RaceTypeEnum;
import network.Messages.RaceStatus;
import network.Utils.AC35UnitConverter;
import shared.model.Bearing;
import java.util.ArrayList;
import java.util.Arrays;
@@ -65,10 +67,12 @@ public class RaceStatusDecoder {
long expectedStart = bytesToLong(expectedStartBytes);
byte[] windDirectionBytes = Arrays.copyOfRange(encodedMessage, 18, 20);
int windDirection = bytesToInt(windDirectionBytes);
int windDirectionInt = bytesToInt(windDirectionBytes);
Bearing windDirection = Bearing.fromDegrees(AC35UnitConverter.unpackHeading(windDirectionInt));
byte[] windSpeedBytes = Arrays.copyOfRange(encodedMessage, 20, 22);
short windSpeed = bytesToShort(windSpeedBytes);
int windSpeedInt = bytesToInt(windSpeedBytes);
double windSpeedKnots = AC35UnitConverter.unpackMMperSecToKnots(windSpeedInt);
byte[] numberOfBoatsBytes = Arrays.copyOfRange(encodedMessage, 22, 23);
int numberOfBoats = bytesToInt(numberOfBoatsBytes);
@@ -99,7 +103,7 @@ public class RaceStatusDecoder {
raceStatus,
expectedStart,
windDirection,
windSpeed,
windSpeedKnots,
raceType,
boatStatuses );
}