aboutsummaryrefslogtreecommitdiff
path: root/protocol.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-12-30 03:26:51 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-12-30 03:26:51 +0100
commit7e62f728fe33fd81ccadf11eca43d424a9260d09 (patch)
treeb5542d22fa1f4a487fba883073e7def515807ed9 /protocol.go
parentdca5172d2f2174ba3f272347840ad1842ded941e (diff)
tweak around
Diffstat (limited to 'protocol.go')
-rw-r--r--protocol.go60
1 files changed, 42 insertions, 18 deletions
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