diff options
| author | Sam Anthony <sam@samanthony.xyz> | 2025-11-08 18:11:23 -0500 |
|---|---|---|
| committer | Sam Anthony <sam@samanthony.xyz> | 2025-11-08 18:11:23 -0500 |
| commit | c6573ad10a8d96d744324937195cd50bb1442c26 (patch) | |
| tree | 4d87e7cee19dd1c5fe3bdd9db5e128c605c9ef64 /sw/cal/dbc.go | |
| parent | 8f0fc9ba2a8efe870f3584af2c439b2c2fd899e5 (diff) | |
| download | can-gauge-interface-c6573ad10a8d96d744324937195cd50bb1442c26.zip | |
cal: verify signal encoding after writing
Diffstat (limited to 'sw/cal/dbc.go')
| -rw-r--r-- | sw/cal/dbc.go | 38 |
1 files changed, 10 insertions, 28 deletions
diff --git a/sw/cal/dbc.go b/sw/cal/dbc.go index f746504..0a22a14 100644 --- a/sw/cal/dbc.go +++ b/sw/cal/dbc.go @@ -8,27 +8,8 @@ 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]SignalDef, error) { +func parseSignals(filename string, names map[uint8]string) ([]SignalDef, error) { // Parse DBC file msgDefs, err := parseDbcFile(filename) if err != nil { @@ -36,26 +17,27 @@ func parseSignals(filename string, names map[int]string) (map[int]SignalDef, err } // Search for signals - signals := make(map[int]SignalDef) + signals := make([]SignalDef, 0, len(names)) 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) }) if i < 0 { continue } - if _, ok := signals[k]; ok { - return nil, ErrDupSig{msg.Signals[i]} + fmt.Printf("Found signal %v\n", msg.Signals[i]) + sig, err := NewSignalDef(k, msg, msg.Signals[i]) + if err != nil { + return nil, err } - fmt.Println(msg.Signals[i]) - signals[k] = newSignalDef(msg, msg.Signals[i]) + signals = append(signals, sig) } } // Check all signals are present if len(signals) != len(names) { - for k, name := range names { - if _, ok := signals[k]; !ok { - return nil, ErrNoSig{filename, name} + for i := 0; i < len(signals); i++ { + if names[uint8(i)] != signals[i].name { + return nil, ErrNoSig{filename, names[uint8(i)]} } } } |