aboutsummaryrefslogtreecommitdiffstats
path: root/sw/cal/dbc.go
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2025-11-08 10:16:42 -0500
committerSam Anthony <sam@samanthony.xyz>2025-11-08 10:16:42 -0500
commit9b562121464ea21ba8c8b4d3783d3f873746ee00 (patch)
tree6ac231d72996efbd7356c462ddb06b183eb9181e /sw/cal/dbc.go
parent413d894d0637d7a4e55025664043ffa1c29e9bbb (diff)
downloadcan-gauge-interface-9b562121464ea21ba8c8b4d3783d3f873746ee00.zip
cal: send Signal Control framess
Diffstat (limited to 'sw/cal/dbc.go')
-rw-r--r--sw/cal/dbc.go26
1 files changed, 23 insertions, 3 deletions
diff --git a/sw/cal/dbc.go b/sw/cal/dbc.go
index 7aa61bd..f746504 100644
--- a/sw/cal/dbc.go
+++ b/sw/cal/dbc.go
@@ -8,8 +8,27 @@ import (
"go.einride.tech/can/pkg/dbc"
)
+type SignalDef struct {
+ id dbc.MessageID
+ name string
+ start, size uint64
+ isBigEndian bool
+ isSigned bool
+}
+
+func newSignalDef(msg *dbc.MessageDef, sig dbc.SignalDef) SignalDef {
+ return SignalDef{
+ msg.MessageID,
+ string(sig.Name),
+ sig.StartBit,
+ sig.Size,
+ sig.IsBigEndian,
+ sig.IsSigned,
+ }
+}
+
// Extract signals from the DBC file.
-func parseSignals(filename string, names map[int]string) (map[int]dbc.SignalDef, error) {
+func parseSignals(filename string, names map[int]string) (map[int]SignalDef, error) {
// Parse DBC file
msgDefs, err := parseDbcFile(filename)
if err != nil {
@@ -17,7 +36,7 @@ func parseSignals(filename string, names map[int]string) (map[int]dbc.SignalDef,
}
// Search for signals
- signals := make(map[int]dbc.SignalDef)
+ signals := make(map[int]SignalDef)
for _, msg := range msgDefs {
for k, name := range names {
i := slices.IndexFunc(msg.Signals, func(sig dbc.SignalDef) bool { return sig.Name == dbc.Identifier(name) })
@@ -27,7 +46,8 @@ func parseSignals(filename string, names map[int]string) (map[int]dbc.SignalDef,
if _, ok := signals[k]; ok {
return nil, ErrDupSig{msg.Signals[i]}
}
- signals[k] = msg.Signals[i]
+ fmt.Println(msg.Signals[i])
+ signals[k] = newSignalDef(msg, msg.Signals[i])
}
}