aboutsummaryrefslogtreecommitdiff
path: root/protocol2.go
blob: 6e71b0ccc829b639ce6270200e8f64b9f764002d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package anki

const (
	VehicleMsgV2CSpeedUpdate              ID = 0x36
	VehicleMsgV2CStatusUpdate             ID = 0x3f
	VehicleMsgV2CLaneChangeUpdate         ID = 0x41
	VehicleMsgV2CDelocAutoRecoveryEntered ID = 0x43
	VehicleMsgV2CDelocAutoRecoverySuccess ID = 0x44
	VehicleMsgV2CCollisionDetected        ID = 0x4d
	VehicleMsgV2CCycleOvertime            ID = 0x86
	VehicleMsgV2CDebug                    ID = 0xc9
)

// 07 36  20 03  98 3A  2A 00 cchhh
type VehicleMsgSpeedUpdate struct {
	Size         uint8
	MsgID        ID
	DesiredSpeed MMperSec   // mm/sec
	Accel        MMperSecSQ // mm/sec² -- missing on older firmware
	CurrentSpeed MMperSec   // mm/sec  -- missing on older firmware
}

// 05 3F  01  00  01  00
type VehicleMsgStatusUpdate struct {
	Size              uint8
	MsgID             ID
	IsOnTrack         uint8
	IsOnCharger       uint8
	HasLowBattery     uint8
	HasChargedBattery uint8
}

// ID(65) | 00 00 99 42  00 00 99 42  00 00  F4 01  81
type VehicleMsgLaneChangeUpdate struct {
	Size                        uint8
	MsgID                       ID
	CurrentOffsetFromRoadCenter float32
	TargetOffsetFromRoadCenter  float32
	HorizontalSpeed             MMperSec
	VerticalSpeed               MMperSec
	LaneChangeID                uint8
}

// 03 4D  01  00
type VehicleMsgCollisionDetected struct {
	Size                  uint8
	MsgID                 ID
	WasSideOnCollision    Bool
	WasFrontBackCollision Bool
}

// 0B 86  11 00  26 08 00 00  13 10 00 00 cchii
type VehicleMsgCycleOvertime struct {
	Size              uint8
	MsgID             ID
	NumOvertimeCycles uint16
	AverageCycleTime  MicroSec // µsec
	MaxCycleTime      MicroSec // µsec
}

// ID(201) | 04 15 03 00 00
// case 0: read char
// case 1: read char
// case 2: read uint16
// case 3: read uint16: Debug message (s16) from vehicle
// case 4: read uint32
// case 5: read uint32
// case 6: read float: Debug message (float) from vehicle
// case 7: read char: Vehicle Error: Error triggered on vehicle
// default: Invalid CMD_DEBUG type