Fixed packet count and trip time decoding and tests.

This commit is contained in:
Patrick Fairbank
2014-07-02 22:08:20 -07:00
parent 7f58f366c2
commit 4721e7d8f0
2 changed files with 5 additions and 7 deletions

View File

@@ -173,7 +173,7 @@ func decodeStatusPacket(data [50]byte) *DriverStationStatus {
dsStatus.PacketCount = int(data[28])*256 + int(data[29])
// Average DS-robot trip time in milliseconds, stored in two big-endian bytes.
dsStatus.DsRobotTripTimeMs = int(data[29])*256 + int(data[30])
dsStatus.DsRobotTripTimeMs = int(data[30])*256 + int(data[31])
// Robot battery voltage, stored (bizarrely) what it looks like in decimal but as two hexadecimal numbers.
dsStatus.BatteryVoltage, _ = strconv.ParseFloat(fmt.Sprintf("%x.%x", data[40], data[41]), 32)

View File

@@ -98,7 +98,7 @@ func TestSendControlPacket(t *testing.T) {
func TestDecodeStatusPacket(t *testing.T) {
// Check with no linked robot.
data := [50]byte{0, 0, 64, 1, 2, 54, 0, 0, 0, 0, 82, 49, 0, 0, 0, 0, 0, 0, 48, 50, 49, 50, 49, 51, 48, 48,
152, 160, 152, 160, 255, 255, 255, 255, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 7, 189, 111}
98, 200, 63, 43, 0, 11, 0, 240, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 7, 189, 111}
dsStatus := decodeStatusPacket(data)
assert.Equal(t, 254, dsStatus.TeamId)
assert.Equal(t, "R1", dsStatus.AllianceStation)
@@ -108,9 +108,9 @@ func TestDecodeStatusPacket(t *testing.T) {
assert.Equal(t, false, dsStatus.EmergencyStop)
assert.Equal(t, 0, dsStatus.BatteryVoltage)
assert.Equal(t, "02121300", dsStatus.DsVersion)
assert.Equal(t, 39072, dsStatus.PacketCount)
assert.Equal(t, 39072, dsStatus.MissedPacketCount)
assert.Equal(t, 41215, dsStatus.DsRobotTripTimeMs)
assert.Equal(t, 16171, dsStatus.PacketCount)
assert.Equal(t, 25288, dsStatus.MissedPacketCount)
assert.Equal(t, 11, dsStatus.DsRobotTripTimeMs)
// Check different team numbers.
data = [50]byte{0, 0, 64, 1, 7, 66, 0, 0, 0, 0, 82, 49, 0, 0, 0, 0, 0, 0, 48, 50, 49, 50, 49, 51, 48, 48,
@@ -151,8 +151,6 @@ func TestDecodeStatusPacket(t *testing.T) {
152, 160, 152, 160, 255, 255, 255, 255, 82, 0, 0, 0, 0, 0, 25, 117, 0, 0, 0, 0, 42, 7, 189, 111}
dsStatus = decodeStatusPacket(data)
assert.Equal(t, 19.75, dsStatus.BatteryVoltage)
// TODO(patrick): Check packet counts and trip time.
}
func TestListenForDsPackets(t *testing.T) {