mirror of
https://github.com/bettercap/bettercap.git
synced 2024-11-08 06:30:13 -08:00
75 lines
1.8 KiB
Go
75 lines
1.8 KiB
Go
package can
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
// https://en.wikipedia.org/wiki/OBD-II_PIDs
|
|
|
|
// https://www.csselectronics.com/pages/obd2-explained-simple-intro
|
|
// https://www.csselectronics.com/pages/obd2-pid-table-on-board-diagnostics-j1979
|
|
|
|
// https://stackoverflow.com/questions/40826932/how-can-i-get-mode-pids-from-raw-obd2-identifier-11-or-29-bit
|
|
|
|
// https://github.com/ejvaughan/obdii/blob/master/src/OBDII.c
|
|
|
|
const OBD2BroadcastRequestID = 0x7DF
|
|
const OBD2ECUResponseMinID = 0x7E0
|
|
const OBD2ECUResponseMaxID = 0x7EF
|
|
const OBD2BroadcastRequestID29bit = 0x18DB33F1
|
|
const OBD2ECUResponseMinID29bit = 0x18DAF100
|
|
const OBD2ECUResponseMaxID29bit = 0x18DAF1FF
|
|
|
|
type OBD2Service uint8
|
|
|
|
func (s OBD2Service) String() string {
|
|
switch s {
|
|
case 0x01:
|
|
return "Show current data"
|
|
case 0x02:
|
|
return "Show freeze frame data"
|
|
case 0x03:
|
|
return "Show stored Diagnostic Trouble Codes"
|
|
case 0x04:
|
|
return "Clear Diagnostic Trouble Codes and stored values"
|
|
case 0x05:
|
|
return "Test results, oxygen sensor monitoring (non CAN only)"
|
|
case 0x06:
|
|
return "Test results, other component/system monitoring (Test results, oxygen sensor monitoring for CAN only)"
|
|
case 0x07:
|
|
return "Show pending Diagnostic Trouble Codes (detected during current or last driving cycle)"
|
|
case 0x08:
|
|
return "Control operation of on-board component/system"
|
|
case 0x09:
|
|
return "Request vehicle information"
|
|
case 0x0A:
|
|
return "Permanent Diagnostic Trouble Codes (DTCs) (Cleared DTCs)"
|
|
}
|
|
|
|
return fmt.Sprintf("service 0x%x", uint8(s))
|
|
}
|
|
|
|
type OBD2MessageType uint8
|
|
|
|
const (
|
|
OBD2MessageTypeRequest OBD2MessageType = iota
|
|
OBD2MessageTypeResponse
|
|
)
|
|
|
|
func (t OBD2MessageType) String() string {
|
|
if t == OBD2MessageTypeRequest {
|
|
return "request"
|
|
} else {
|
|
return "response"
|
|
}
|
|
}
|
|
|
|
type OBD2Message struct {
|
|
Type OBD2MessageType
|
|
ECU uint8
|
|
Service OBD2Service
|
|
PID OBD2PID
|
|
Size uint8
|
|
Data []uint8
|
|
}
|