aboutsummaryrefslogtreecommitdiffstats
path: root/sw/cal/csv.go
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2025-11-07 19:10:23 -0500
committerSam Anthony <sam@samanthony.xyz>2025-11-07 19:10:23 -0500
commitc43588e172917783843133eb0061bf0d118ae5d5 (patch)
treec748fecb1b530422c57dae449064cd8a5beb6c6a /sw/cal/csv.go
parent688972df9daa1f80d24feff5c056ab3a66c4eee9 (diff)
downloadcan-gauge-interface-c43588e172917783843133eb0061bf0d118ae5d5.zip
cal: transmit table to CAN bus
Diffstat (limited to 'sw/cal/csv.go')
-rw-r--r--sw/cal/csv.go19
1 files changed, 9 insertions, 10 deletions
diff --git a/sw/cal/csv.go b/sw/cal/csv.go
index bb5cd01..cdd5b44 100644
--- a/sw/cal/csv.go
+++ b/sw/cal/csv.go
@@ -1,33 +1,33 @@
package main
import (
- "os"
+ "encoding/csv"
"fmt"
"io"
+ "os"
"strconv"
- "encoding/csv"
)
-func parseTable(filename string) (map[int32]uint16, error) {
+func parseTable(filename string) (Table, error) {
f, err := os.Open(filename)
if err != nil {
eprintf("%v\n", err)
}
defer f.Close()
- tbl := make(map[int32]uint16)
+ var tbl Table
rdr := csv.NewReader(f)
for {
- err := parseRow(rdr, tbl)
+ err := parseRow(rdr, &tbl)
if err == io.EOF {
return tbl, nil
} else if err != nil {
- return nil, fmt.Errorf("%s:%v", filename, err)
+ return Table{}, fmt.Errorf("%s:%v", filename, err)
}
}
}
-func parseRow(rdr *csv.Reader, tbl map[int32]uint16) error {
+func parseRow(rdr *csv.Reader, tbl *Table) error {
row, err := rdr.Read()
if err != nil {
return err
@@ -46,10 +46,9 @@ func parseRow(rdr *csv.Reader, tbl map[int32]uint16) error {
line, col := rdr.FieldPos(1)
return fmt.Errorf("%d:%d: %v", line, col, err)
}
- if _, ok := tbl[int32(key)]; ok {
+ if err := tbl.Insert(int32(key), uint16(val)); err != nil {
line, col := rdr.FieldPos(0)
- return fmt.Errorf("%d: %d: duplicate key %d", line, col, key)
+ return fmt.Errorf("%d:%d: %v", line, col, err)
}
- tbl[int32(key)] = uint16(val)
return nil
}