Skip to content

Commit 688b117

Browse files
committed
add a timeout setting
1 parent 8d437bb commit 688b117

File tree

3 files changed

+27
-10
lines changed

3 files changed

+27
-10
lines changed

internal/config/config.go

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package config
33
import (
44
"fmt"
55
"io"
6+
"os"
7+
"time"
68

79
"github.com/lazy-electron-consulting/ve-direct-exporter/internal/util"
810
"gopkg.in/yaml.v2"
@@ -14,21 +16,24 @@ const (
1416
DefaultDataBits = 8
1517
DefaultStopBits = 1
1618
DefaultParity = "N"
19+
DefaultTimeout = 5 * time.Second
1720
)
1821

1922
type Serial struct {
20-
Path string `json:"path,omitempty" yaml:"path,omitempty"`
21-
BaudRate int `json:"baudRate,omitempty" yaml:"baudRate,omitempty"`
22-
DataBits int `json:"dataBits,omitempty" yaml:"dataBits,omitempty"`
23-
StopBits int `json:"stopBits,omitempty" yaml:"stopBits,omitempty"`
24-
Parity string `json:"parity,omitempty" yaml:"parity,omitempty"`
23+
Path string `json:"path,omitempty" yaml:"path,omitempty"`
24+
BaudRate int `json:"baudRate,omitempty" yaml:"baudRate,omitempty"`
25+
DataBits int `json:"dataBits,omitempty" yaml:"dataBits,omitempty"`
26+
StopBits int `json:"stopBits,omitempty" yaml:"stopBits,omitempty"`
27+
Parity string `json:"parity,omitempty" yaml:"parity,omitempty"`
28+
Timeout time.Duration `json:"timeout,omitempty" yaml:"timeout,omitempty"`
2529
}
2630

27-
func (m *Serial) defaults() {
28-
m.BaudRate = util.Default(m.BaudRate, DefaultBaudRate)
29-
m.DataBits = util.Default(m.DataBits, DefaultDataBits)
30-
m.StopBits = util.Default(m.StopBits, DefaultStopBits)
31-
m.Parity = util.Default(m.Parity, DefaultParity)
31+
func (s *Serial) defaults() {
32+
s.BaudRate = util.Default(s.BaudRate, DefaultBaudRate)
33+
s.DataBits = util.Default(s.DataBits, DefaultDataBits)
34+
s.StopBits = util.Default(s.StopBits, DefaultStopBits)
35+
s.Parity = util.Default(s.Parity, DefaultParity)
36+
s.Timeout = util.Default(s.Timeout, DefaultTimeout)
3237
}
3338

3439
type Gauge struct {
@@ -61,3 +66,11 @@ func ParseYaml(r io.Reader) (*Config, error) {
6166
config.defaults()
6267
return &config, nil
6368
}
69+
70+
func ReadYaml(path string) (*Config, error) {
71+
f, err := os.Open(path)
72+
if err != nil {
73+
return nil, err
74+
}
75+
return ParseYaml(f)
76+
}

internal/config/config_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package config_test
33
import (
44
"embed"
55
"testing"
6+
"time"
67

78
"github.com/lazy-electron-consulting/ve-direct-exporter/internal/config"
89
"github.com/stretchr/testify/require"
@@ -28,6 +29,7 @@ func TestParseYaml(t *testing.T) {
2829
DataBits: 7,
2930
StopBits: 2,
3031
Parity: "Y",
32+
Timeout: time.Hour,
3133
},
3234
Gauges: []config.Gauge{
3335
{
@@ -49,6 +51,7 @@ func TestParseYaml(t *testing.T) {
4951
DataBits: config.DefaultDataBits,
5052
StopBits: config.DefaultStopBits,
5153
Parity: config.DefaultParity,
54+
Timeout: config.DefaultTimeout,
5255
},
5356
},
5457
},

internal/config/testdata/full.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ serial:
55
dataBits: 7
66
stopBits: 2
77
parity: Y
8+
timeout: 60m
89
gauges:
910
- name: "battery_volts"
1011
help: "Main battery voltage"

0 commit comments

Comments
 (0)