From 7e62f728fe33fd81ccadf11eca43d424a9260d09 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Fri, 30 Dec 2016 03:26:51 +0100 Subject: tweak around --- protocol.go | 60 ++++++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 42 insertions(+), 18 deletions(-) (limited to 'protocol.go') diff --git a/protocol.go b/protocol.go index 113ee31..3317f55 100644 --- a/protocol.go +++ b/protocol.go @@ -98,10 +98,16 @@ type VehicleMsgVersionResponse struct { Version uint32 } -type VehicleBatteryLevelResponse struct { +type MilliVolt uint16 + +func (v MilliVolt) String() string { + return fmt.Sprintf("%6.4fV", float64(v)/1000.0) +} + +type VehicleMsgBatteryLevelResponse struct { Size uint8 MsgID ID - BatteryLevel uint16 // mV + BatteryLevel MilliVolt // mV } type VehicleMsgSDKMode struct { @@ -118,15 +124,27 @@ func (v *VehicleMsgSDKMode) Set(on uint8, flags uint8) { v.Flags = flags } +type Accel uint16 + +func (a Accel) String() string { + return fmt.Sprintf("%5.3fm/s²", float64(a)/1000.0) +} + +type Speed uint16 + +func (s Speed) String() string { + return fmt.Sprintf("%5.3fm/s", float64(s)/1000.0) +} + type VehicleMsgSetSpeed struct { Size uint8 MsgID ID - Speed uint16 // mm/sec - Accel uint16 // mm/sec² - SpeedLimit uint8 // respect road piece speed limit + Speed Speed // mm/sec + Accel Accel // mm/sec² + SpeedLimit uint8 // respect road piece speed limit } -func (v *VehicleMsgSetSpeed) Set(speed, accel uint16) { +func (v *VehicleMsgSetSpeed) Set(speed Speed, accel Accel) { v.Size = uint8(binary.Size(v) - 1) v.MsgID = VehicleMsgC2VSetSpeed v.Speed = speed @@ -174,10 +192,16 @@ see also: https://github.com/IBM-Bluemix/node-mqtt-for-anki-overdrive type VehicleMsgSetOffsetFromRoadCenter struct { Size uint8 MsgID ID - Offset float32 // mm + Offset Offset // mm +} + +type Offset float32 + +func (c Offset) String() string { + return fmt.Sprintf("%4.1fmm", c) } -func (v *VehicleMsgSetOffsetFromRoadCenter) Set(offset float32) { +func (v *VehicleMsgSetOffsetFromRoadCenter) Set(offset Offset) { v.Size = uint8(binary.Size(v) - 1) v.MsgID = VehicleMsgC2VSetOffsetFromRoadCenter v.Offset = offset @@ -186,14 +210,14 @@ func (v *VehicleMsgSetOffsetFromRoadCenter) Set(offset float32) { type VehicleMsgChangeLane struct { Size uint8 MsgID ID - HorizontalSpeed uint16 // mm/sec - HorizontalAccel uint16 // mm/sec² - Offset float32 // from road center mm + HorizontalSpeed Speed // mm/sec + HorizontalAccel Accel // mm/sec² + Offset Offset // from road center mm HopIntent uint8 Tag uint8 } -func (v *VehicleMsgChangeLane) Set(hspeed, haccel uint16, offset float32) { +func (v *VehicleMsgChangeLane) Set(hspeed Speed, haccel Accel, offset Offset) { v.Size = uint8(binary.Size(v) - 1) v.MsgID = VehicleMsgC2VChangeLane v.HorizontalSpeed = hspeed @@ -224,15 +248,15 @@ type VehicleLocalizationPositionUpdate struct { MsgID ID LocalizationID uint8 RoadPieceID uint8 - Offset float32 // from road center mm - Speed uint16 // mm/sec + Offset Offset // from road center mm + Speed Speed // mm/sec ParsingFlags Flags // ACK commands received LastRecvLaneChangeCmdID uint8 LastExecLaneChangeCmdID uint8 - LastDesiredHorizontalSpeed uint16 // mm/sec - LastDesiredSpeed uint16 // mm/sec + LastDesiredHorizontalSpeed Speed // mm/sec + LastDesiredSpeed Speed // mm/sec } //go:generate stringer -type=Direction @@ -256,8 +280,8 @@ type VehicleMsgLocalizationTransitionUpdate struct { // ACK commands received LastRecvLaneChangeCmdID uint8 LastExecLaneChangeCmdID uint8 - LastDesiredHorizontalSpeed uint16 // mm/sec - LastDesiredSpeed uint16 // mm/sec + LastDesiredHorizontalSpeed Speed // mm/sec + LastDesiredSpeed Speed // mm/sec // track grade detection UphillCounter uint8 -- cgit v1.2.3