From c43588e172917783843133eb0061bf0d118ae5d5 Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Fri, 7 Nov 2025 19:10:23 -0500 Subject: cal: transmit table to CAN bus --- sw/cal/csv.go | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'sw/cal/csv.go') 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 } -- cgit v1.2.3