Documentation
      ¶
    
    
  
    
  
    Overview ¶
Package dbc provides primitives for parsing, formatting and linting DBC files.
The implementation adheres to the "DBC File Format Documentation Version 01/2007" unless specified otherwise.
Index ¶
- Constants
 - func IsIndependentSignalsMessage(m *MessageDef) bool
 - type AccessType
 - type AttributeDef
 - type AttributeDefaultValueDef
 - type AttributeValueForObjectDef
 - type AttributeValueType
 - type BitTimingDef
 - type CommentDef
 - type Def
 - type EnvironmentVariableDataDef
 - type EnvironmentVariableDef
 - type EnvironmentVariableType
 - type Error
 - type File
 - type Identifier
 - type Keyword
 - type MessageDef
 - type MessageID
 - type MessageTransmittersDef
 - type NewSymbolsDef
 - type NodesDef
 - type ObjectType
 - type Parser
 - type SignalDef
 - type SignalValueType
 - type SignalValueTypeDef
 - type UnknownDef
 - type ValueDescriptionDef
 - type ValueDescriptionsDef
 - type ValueTableDef
 - type VersionDef
 
Constants ¶
const ( // IndependentSignalsMessageName is the message name used by the special independent signals message. IndependentSignalsMessageName Identifier = "VECTOR__INDEPENDENT_SIG_MSG" // IndependentSignalsMessageName is the message ID used by the special independent signals message. IndependentSignalsMessageID MessageID = 0xc0000000 // IndependentSignalsMessageSize is the size used by the special independent signals message. IndependentSignalsMessageSize = 0 )
Independent signals constants.
DBC files may contain a special message with the following message name and message ID.
This message will have size 0 and may contain duplicate signal names.
Variables ¶
This section is empty.
Functions ¶
func IsIndependentSignalsMessage ¶
func IsIndependentSignalsMessage(m *MessageDef) bool
IsIndependentSignalsMessage returns true if m is the special independent signals message.
Types ¶
type AccessType ¶
type AccessType string
AccessType represents the access type of an environment variable.
const ( AccessTypeUnrestricted AccessType = "DUMMY_NODE_VECTOR0" AccessTypeRead AccessType = "DUMMY_NODE_VECTOR1" AccessTypeWrite AccessType = "DUMMY_NODE_VECTOR2" AccessTypeReadWrite AccessType = "DUMMY_NODE_VECTOR3" )
func (AccessType) Validate ¶
func (a AccessType) Validate() error
Validate returns an error for invalid access types.
type AttributeDef ¶
type AttributeDef struct {
	Pos          scanner.Position
	ObjectType   ObjectType
	Name         Identifier
	Type         AttributeValueType
	MinimumInt   int64
	MaximumInt   int64
	MinimumFloat float64
	MaximumFloat float64
	EnumValues   []string
}
    AttributeDef defines a user-defined attribute.
User-defined attributes are a means to extend the object properties of the DBC file.
These additional attributes have to be defined using an attribute definition with an attribute default value.
For each object having a value defined for the attribute, an attribute value entry has to be defined.
If no attribute value entry is defined for an object, the value of the object's attribute is the attribute's default.
func (*AttributeDef) Position ¶
func (d *AttributeDef) Position() scanner.Position
Position returns the position of the definition.
type AttributeDefaultValueDef ¶
type AttributeDefaultValueDef struct {
	Pos                scanner.Position
	AttributeName      Identifier
	DefaultIntValue    int64
	DefaultFloatValue  float64
	DefaultStringValue string
}
    AttributeDefaultValueDef defines the default value for an attribute.
func (*AttributeDefaultValueDef) Position ¶
func (d *AttributeDefaultValueDef) Position() scanner.Position
Position returns the position of the definition.
type AttributeValueForObjectDef ¶
type AttributeValueForObjectDef struct {
	Pos                     scanner.Position
	AttributeName           Identifier
	ObjectType              ObjectType
	MessageID               MessageID
	SignalName              Identifier
	NodeName                Identifier
	EnvironmentVariableName Identifier
	IntValue                int64
	FloatValue              float64
	StringValue             string
}
    AttributeValueForObjectDef defines a value for an attribute and an object.
func (*AttributeValueForObjectDef) Position ¶
func (d *AttributeValueForObjectDef) Position() scanner.Position
Position returns the position of the definition.
type AttributeValueType ¶
type AttributeValueType string
AttributeValueType represents an attribute value type.
const ( AttributeValueTypeInt AttributeValueType = "INT" AttributeValueTypeHex AttributeValueType = "HEX" AttributeValueTypeFloat AttributeValueType = "FLOAT" AttributeValueTypeString AttributeValueType = "STRING" AttributeValueTypeEnum AttributeValueType = "ENUM" )
func (AttributeValueType) Validate ¶
func (a AttributeValueType) Validate() error
Validate returns an error for invalid attribute value types.
type BitTimingDef ¶
BitTimingDef defines the baud rate and the settings of the BTR registers of a CAN network.
This definition is obsolete and not used anymore.
func (*BitTimingDef) Position ¶
func (d *BitTimingDef) Position() scanner.Position
Position returns the position of the definition.
type CommentDef ¶
type CommentDef struct {
	Pos                     scanner.Position
	ObjectType              ObjectType
	NodeName                Identifier
	MessageID               MessageID
	SignalName              Identifier
	EnvironmentVariableName Identifier
	Comment                 string
}
    CommentDef defines a comment.
func (*CommentDef) Position ¶
func (d *CommentDef) Position() scanner.Position
Position returns the position of the definition.
type Def ¶
type Def interface {
	// Position of the definition.
	Position() scanner.Position
	// contains filtered or unexported methods
}
    Def represents a single definition within a DBC file.
type EnvironmentVariableDataDef ¶
type EnvironmentVariableDataDef struct {
	Pos scanner.Position
	// EnvironmentVariableName is the name of the environment variable.
	EnvironmentVariableName Identifier
	// DataSize is the size of the environment variable data in bytes.
	DataSize uint64
}
    EnvironmentVariableDataDef defines an environment variable as being of type "data".
Environment variables of this type can store an arbitrary binary data of the given length. The length is given in bytes.
func (*EnvironmentVariableDataDef) Position ¶
func (d *EnvironmentVariableDataDef) Position() scanner.Position
Position returns the position of the definition.
type EnvironmentVariableDef ¶
type EnvironmentVariableDef struct {
	Pos          scanner.Position
	Name         Identifier
	Type         EnvironmentVariableType
	Minimum      float64
	Maximum      float64
	Unit         string
	InitialValue float64
	ID           uint64
	AccessType   AccessType
	AccessNodes  []Identifier
}
    EnvironmentVariableDef defines an environment variable.
DBC files that describe the CAN communication and don't define any additional data for system or remaining bus simulations don't include environment variables.
func (*EnvironmentVariableDef) Position ¶
func (d *EnvironmentVariableDef) Position() scanner.Position
Position returns the position of the definition.
type EnvironmentVariableType ¶
type EnvironmentVariableType uint64
EnvironmentVariableType represents the type of an environment variable.
const ( EnvironmentVariableTypeInteger EnvironmentVariableType = 0 EnvironmentVariableTypeFloat EnvironmentVariableType = 1 EnvironmentVariableTypeString EnvironmentVariableType = 2 )
func (EnvironmentVariableType) Validate ¶
func (e EnvironmentVariableType) Validate() error
Validate returns an error for invalid environment variable types.
type Error ¶
type Error interface {
	error
	// Position of the error in the DBC file.
	Position() scanner.Position
	// Reason for the error.
	Reason() string
}
    Error represents an error in a DBC file.
type File ¶
type File struct {
	// Name of the file.
	Name string
	// Data contains the raw file data.
	Data []byte
	// Defs in the file.
	Defs []Def
}
    File is a parsed DBC source file.
type Identifier ¶
type Identifier string
Identifier represents a DBC identifier.
const NodePlaceholder Identifier = "Vector__XXX"
    NodePlaceholder is the placeholder node name used when no actual node is specified.
func (Identifier) Validate ¶
func (id Identifier) Validate() (err error)
Validate returns an error for invalid DBC identifiers.
type Keyword ¶
type Keyword string
Keyword represents a DBC keyword.
const ( KeywordAttribute Keyword = "BA_DEF_" KeywordAttributeDefault Keyword = "BA_DEF_DEF_" KeywordAttributeValue Keyword = "BA_" KeywordBitTiming Keyword = "BS_" KeywordComment Keyword = "CM_" KeywordEnvironmentVariable Keyword = "EV_" KeywordEnvironmentVariableData Keyword = "ENVVAR_DATA_" KeywordMessage Keyword = "BO_" KeywordMessageTransmitters Keyword = "BO_TX_BU_" KeywordNewSymbols Keyword = "NS_" KeywordNodes Keyword = "BU_" KeywordSignal Keyword = "SG_" KeywordSignalGroup Keyword = "SIG_GROUP_" KeywordSignalType Keyword = "SGTYPE_" KeywordSignalValueType Keyword = "SIG_VALTYPE_" KeywordValueDescriptions Keyword = "VAL_" KeywordValueTable Keyword = "VAL_TABLE_" KeywordVersion Keyword = "VERSION" )
type MessageDef ¶
type MessageDef struct {
	// Pos is the position of the message definition.
	Pos scanner.Position
	// MessageID contains the message CAN ID.
	//
	// The CAN ID has to be unique within the DBC file.
	//
	// If the most significant bit of the message ID is set, the ID is an extended CAN ID. The extended CAN ID can be
	// determined by masking out the most significant bit with the mask 0xCFFFFFFF.
	MessageID MessageID
	// Name is the name of the message.
	//
	// The message name has to be unique within the DBC file.
	Name Identifier
	// Size specifies the size of the message in bytes.
	Size uint64
	// Transmitter specifies the name of the node transmitting the message.
	//
	// The transmitter has to be defined in the set of node names in the nodes definition.
	//
	// If the message has no transmitter, the string 'Vector__XXX' has to be given here.
	Transmitter Identifier
	// Signals specifies the signals of the message.
	Signals []SignalDef
}
    MessageDef defines a frame in the network.
The definition includes the name of a frame as well as its properties and the signals transferred.
func (*MessageDef) Position ¶
func (d *MessageDef) Position() scanner.Position
Position returns the position of the definition.
type MessageID ¶
type MessageID uint32
MessageID represents a message ID.
func (MessageID) IsExtended ¶
IsExtended returns true if the message ID is an extended CAN ID.
type MessageTransmittersDef ¶
type MessageTransmittersDef struct {
	Pos          scanner.Position
	MessageID    MessageID
	Transmitters []Identifier
}
    MessageTransmittersDef defines multiple transmitter nodes of a single message.
This definition is used to describe communication data for higher layer protocols.
This is not used to define CAN layer-2 communication.
func (*MessageTransmittersDef) Position ¶
func (d *MessageTransmittersDef) Position() scanner.Position
Position returns the position of the definition.
type NewSymbolsDef ¶
NewSymbolsDef defines new symbol entries in a DBC file.
func (*NewSymbolsDef) Position ¶
func (d *NewSymbolsDef) Position() scanner.Position
Position returns the position of the definition.
type NodesDef ¶
type NodesDef struct {
	Pos       scanner.Position
	NodeNames []Identifier
}
    NodesDef defines the names of all nodes participating in the network.
This definition is required in every DBC file.
All node names must be unique.
type ObjectType ¶
type ObjectType string
ObjectType identifies the type of a DBC object.
const ( ObjectTypeUnspecified ObjectType = "" ObjectTypeNetworkNode ObjectType = "BU_" ObjectTypeMessage ObjectType = "BO_" ObjectTypeSignal ObjectType = "SG_" ObjectTypeEnvironmentVariable ObjectType = "EV_" )
func (ObjectType) Validate ¶
func (o ObjectType) Validate() error
Validate returns an error for invalid object types.
type SignalDef ¶
type SignalDef struct {
	// Pos is the position of the definition.
	Pos scanner.Position
	// Name of the signal.
	//
	// Has to be unique for all signals within the same message.
	Name Identifier
	// StartBit specifies the position of the signal within the data field of the frame.
	//
	// For signals with byte order Intel (little-endian) the position of the least-significant bit is given.
	//
	// For signals with byte order Motorola (big-endian) the position of the most significant bit is given.
	//
	// The bits are counted in a saw-tooth manner.
	//
	// The start bit has to be in the range of [0 ,8*message_size-1].
	StartBit uint64
	// Size specifies the size of the signal in bits.
	Size uint64
	// IsBigEndian is true if the signal's byte order is Motorola (big-endian).
	IsBigEndian bool
	// IsSigned is true if the signal is signed.
	IsSigned bool
	// IsMultiplexerSwitch is true if the signal is a multiplexer switch.
	//
	// A multiplexer indicator of 'M' defines the signal as the multiplexer switch.
	// Only one signal within a single message can be the multiplexer switch.
	IsMultiplexerSwitch bool
	// IsMultiplexed is true if the signal is multiplexed by the message's multiplexer switch.
	IsMultiplexed bool
	// MultiplexerSwitch is the multiplexer switch value of the signal.
	//
	// The multiplexed signal is transferred in the message if the switch value of the multiplexer signal is equal to
	// its multiplexer switch value.
	MultiplexerSwitch uint64
	// Offset is the signals physical value offset.
	//
	// Together with the factor, the offset defines the linear conversion rule to convert the signal's raw value into
	// the signal's physical value and vice versa.
	//
	//  physical_value = raw_value * factor + offset
	//  raw_value      = (physical_value - offset) / factor
	Offset float64
	// Factor is the signal's physical value factor.
	//
	// See: Offset.
	Factor float64
	// Minimum defines the signal's minimum physical value.
	Minimum float64
	// Maximum defines the signal's maximum physical value.
	Maximum float64
	// Unit defines the unit of the signal's physical value.
	Unit string
	// Receivers specifies the nodes receiving the signal.
	//
	// If the signal has no receiver, the string 'Vector__XXX' has to be given here.
	Receivers []Identifier
}
    SignalDef defines a signal within a message.
type SignalValueType ¶
type SignalValueType uint64
SignalValueType represents an extended signal value type.
const ( SignalValueTypeInt SignalValueType = 0 SignalValueTypeFloat32 SignalValueType = 1 SignalValueTypeFloat64 SignalValueType = 2 )
func (SignalValueType) Validate ¶
func (s SignalValueType) Validate() error
Validate returns an error for invalid signal value types.
type SignalValueTypeDef ¶
type SignalValueTypeDef struct {
	Pos             scanner.Position
	MessageID       MessageID
	SignalName      Identifier
	SignalValueType SignalValueType
}
    SignalValueTypeDef defines an extended type definition for a signal.
func (*SignalValueTypeDef) Position ¶
func (d *SignalValueTypeDef) Position() scanner.Position
Position returns the position of the definition.
type UnknownDef ¶
UnknownDef represents an unknown or unsupported DBC definition.
func (*UnknownDef) Position ¶
func (d *UnknownDef) Position() scanner.Position
Position returns the position of the definition.
type ValueDescriptionDef ¶
ValueDescriptionDef defines a textual description for a single signal value.
The value may either be a signal raw value transferred on the bus or the value of an environment variable in a remaining bus simulation.
func (*ValueDescriptionDef) Position ¶
func (d *ValueDescriptionDef) Position() scanner.Position
Position returns the position of the definition.
type ValueDescriptionsDef ¶
type ValueDescriptionsDef struct {
	Pos                     scanner.Position
	ObjectType              ObjectType
	MessageID               MessageID
	SignalName              Identifier
	EnvironmentVariableName Identifier
	ValueDescriptions       []ValueDescriptionDef
}
    ValueDescriptionsDef defines inline descriptions for specific raw signal values.
func (*ValueDescriptionsDef) Position ¶
func (d *ValueDescriptionsDef) Position() scanner.Position
Position returns the position of the definition.
type ValueTableDef ¶
type ValueTableDef struct {
	Pos               scanner.Position
	TableName         Identifier
	ValueDescriptions []ValueDescriptionDef
}
    ValueTableDef defines a global value table.
The value descriptions in value tables define value encodings for signal raw values.
In commonly used DBC files, the global value tables aren't used, but the value descriptions are defined for each signal independently.
func (*ValueTableDef) Position ¶
func (d *ValueTableDef) Position() scanner.Position
Position returns the position of the definition.
type VersionDef ¶
VersionDef defines the version of a DBC file.
func (*VersionDef) Position ¶
func (d *VersionDef) Position() scanner.Position
Position returns the position of the definition.