refactor: generalise channel management
This commit is contained in:
parent
973ebb9df9
commit
e64c7ff559
@ -21,7 +21,7 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
serialLineRegex = regexp.MustCompile(`(?P<timestamp>\d+),(?P<channel_1>\d+),(?P<channel_2>\d+),(?P<channel_3>\d+),(?P<channel_4>\d+),(?P<channel_5>\d+),(?P<channel_6>\d+),(?P<frequency>\d+),(?P<distance_cm>\d+)?`)
|
serialLineRegex = regexp.MustCompile(`(?P<timestamp>\d+),(?P<channel_1>\d+),(?P<channel_2>\d+),(?P<channel_3>\d+),(?P<channel_4>\d+),(?P<channel_5>\d+),(?P<channel_6>\d+),(?P<channel_7>\d+),(?P<channel_8>\d+),(?P<frequency>\d+)`)
|
||||||
)
|
)
|
||||||
|
|
||||||
type Part struct {
|
type Part struct {
|
||||||
|
@ -71,7 +71,7 @@ func TestArduinoPart_Update(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
channel1, channel2, channel3, channel4, channel5, channel6, distanceCm := 678, 910, 1112, 1678, 1910, 112, 128
|
channel1, channel2, channel3, channel4, channel5, channel6, channel7, channel8 := 678, 910, 1112, 1678, 1910, 112, 0, 0
|
||||||
cases := []struct {
|
cases := []struct {
|
||||||
name, content string
|
name, content string
|
||||||
throttlePwmConfig PWMThrottleConfig
|
throttlePwmConfig PWMThrottleConfig
|
||||||
@ -80,90 +80,79 @@ func TestArduinoPart_Update(t *testing.T) {
|
|||||||
expectedSwitchRecord bool
|
expectedSwitchRecord bool
|
||||||
}{
|
}{
|
||||||
{"Good value",
|
{"Good value",
|
||||||
fmt.Sprintf("12345,%d,%d,%d,%d,%d,%d,50,%d\n", channel1, channel2, channel3, channel4, channel5, channel6, distanceCm),
|
fmt.Sprintf("12345,%d,%d,%d,%d,%d,%d,%d,%d,50\n", channel1, channel2, channel3, channel4, channel5, channel6, channel7, channel8),
|
||||||
defaultPwmThrottleConfig, -1., -1.,
|
defaultPwmThrottleConfig, -1., -1.,
|
||||||
events.DriveMode_USER, false},
|
events.DriveMode_USER, false},
|
||||||
{"Unparsable line",
|
{"Unparsable line",
|
||||||
"12350,invalid line\n", defaultPwmThrottleConfig,
|
"12350,invalid line\n", defaultPwmThrottleConfig,
|
||||||
-1., -1., events.DriveMode_USER, false},
|
-1., -1., events.DriveMode_USER, false},
|
||||||
{"Switch record on",
|
{"Switch record on",
|
||||||
fmt.Sprintf("12355,%d,%d,%d,%d,%d,%d,50,%d\n", channel1, channel2, channel3, channel4, 998, channel6, distanceCm), defaultPwmThrottleConfig,
|
fmt.Sprintf("12355,%d,%d,%d,%d,%d,%d,%d,%d,50\n", channel1, channel2, channel3, channel4, 998, channel6, channel7, channel8),
|
||||||
-1., -1., events.DriveMode_USER, true},
|
defaultPwmThrottleConfig, -1., -1., events.DriveMode_USER, true},
|
||||||
|
|
||||||
{"Switch record off",
|
{"Switch record off",
|
||||||
fmt.Sprintf("12360,%d,%d,%d,%d,%d,%d,50,%d\n", channel1, channel2, channel3, channel4, 1987, channel6, distanceCm), defaultPwmThrottleConfig,
|
fmt.Sprintf("12360,%d,%d,%d,%d,%d,%d,%d,%d,50\n", channel1, channel2, channel3, channel4, 1987, channel6, channel7, channel8),
|
||||||
-1., -1., events.DriveMode_USER, false},
|
defaultPwmThrottleConfig, -1., -1., events.DriveMode_USER, false},
|
||||||
{"Switch record off",
|
{"Switch record off",
|
||||||
fmt.Sprintf("12365,%d,%d,%d,%d,%d,%d,50,%d\n", channel1, channel2, channel3, channel4, 1850, channel6, distanceCm), defaultPwmThrottleConfig,
|
fmt.Sprintf("12365,%d,%d,%d,%d,%d,%d,%d,%d,50\n", channel1, channel2, channel3, channel4, 1850, channel6, channel7, channel8),
|
||||||
-1., -1., events.DriveMode_USER, false},
|
defaultPwmThrottleConfig, -1., -1., events.DriveMode_USER, false},
|
||||||
{"Switch record on",
|
{"Switch record on",
|
||||||
fmt.Sprintf("12370,%d,%d,%d,%d,%d,%d,50,%d\n", channel1, channel2, channel3, channel4, 1003, channel6, distanceCm), defaultPwmThrottleConfig,
|
fmt.Sprintf("12370,%d,%d,%d,%d,%d,%d,%d,%d,50\n", channel1, channel2, channel3, channel4, 1003, channel6, channel7, channel8),
|
||||||
-1., -1., events.DriveMode_USER, true},
|
defaultPwmThrottleConfig, -1., -1., events.DriveMode_USER, true},
|
||||||
|
|
||||||
{"DriveMode: user",
|
{"DriveMode: user",
|
||||||
fmt.Sprintf("12375,%d,%d,%d,%d,%d,%d,50,%d\n", channel1, channel2, channel3, channel4, channel5, 998, distanceCm), defaultPwmThrottleConfig,
|
fmt.Sprintf("12375,%d,%d,%d,%d,%d,%d,%d,%d,50\n", channel1, channel2, channel3, channel4, channel5, 998, channel7, channel8),
|
||||||
-1., -1., events.DriveMode_USER, false},
|
defaultPwmThrottleConfig, -1., -1., events.DriveMode_USER, false},
|
||||||
{"DriveMode: pilot",
|
{"DriveMode: pilot",
|
||||||
fmt.Sprintf("12380,%d,%d,%d,%d,%d,%d,50,%d\n", channel1, channel2, channel3, channel4, channel5, 1987, distanceCm), defaultPwmThrottleConfig,
|
fmt.Sprintf("12380,%d,%d,%d,%d,%d,%d,%d,%d,50\n", channel1, channel2, channel3, channel4, channel5, 1987, channel7, channel8),
|
||||||
-1., -1., events.DriveMode_PILOT, false},
|
defaultPwmThrottleConfig, -1., -1., events.DriveMode_PILOT, false},
|
||||||
{"DriveMode: pilot",
|
{"DriveMode: pilot",
|
||||||
fmt.Sprintf("12385,%d,%d,%d,%d,%d,%d,50,%d\n", channel1, channel2, channel3, channel4, channel5, 1850, distanceCm), defaultPwmThrottleConfig,
|
fmt.Sprintf("12385,%d,%d,%d,%d,%d,%d,%d,%d,50\n", channel1, channel2, channel3, channel4, channel5, 1850, channel7, channel8),
|
||||||
-1., -1., events.DriveMode_PILOT, false},
|
defaultPwmThrottleConfig, -1., -1., events.DriveMode_PILOT, false},
|
||||||
|
|
||||||
// DriveMode: user
|
// DriveMode: user
|
||||||
{"DriveMode: user",
|
{"DriveMode: user",
|
||||||
fmt.Sprintf("12390,%d,%d,%d,%d,%d,%d,50,%d\n", channel1, channel2, channel3, channel4, channel5, 1003, distanceCm),
|
fmt.Sprintf("12390,%d,%d,%d,%d,%d,%d,%d,%d,50\n", channel1, channel2, channel3, channel4, channel5, 1003, channel7, channel8),
|
||||||
defaultPwmThrottleConfig,
|
defaultPwmThrottleConfig, -1., -1., events.DriveMode_USER, false},
|
||||||
-1., -1., events.DriveMode_USER, false},
|
|
||||||
|
|
||||||
{"Sterring: over left",
|
{"Sterring: over left", fmt.Sprintf("12395,%d,%d,%d,%d,%d,%d,%d,%d,50\n", 99, channel2, channel3, channel4, channel5, channel6, channel7, channel8),
|
||||||
fmt.Sprintf("12395,%d,%d,%d,%d,%d,%d,50,%d\n", 99, channel2, channel3, channel4, channel5, channel6, distanceCm),
|
defaultPwmThrottleConfig, -1., -1., events.DriveMode_USER, false},
|
||||||
defaultPwmThrottleConfig,
|
|
||||||
-1., -1., events.DriveMode_USER, false},
|
|
||||||
{"Sterring: left",
|
{"Sterring: left",
|
||||||
fmt.Sprintf("12400,%d,%d,%d,%d,%d,%d,50,%d\n", int(MinPwmAngle+40), channel2, channel3, channel4, channel5, channel6, distanceCm),
|
fmt.Sprintf("12400,%d,%d,%d,%d,%d,%d,%d,%d,50\n", int(MinPwmAngle+40), channel2, channel3, channel4, channel5, channel6, channel7, channel8),
|
||||||
defaultPwmThrottleConfig,
|
defaultPwmThrottleConfig, -1., -0.92, events.DriveMode_USER, false},
|
||||||
-1., -0.92, events.DriveMode_USER, false},
|
|
||||||
{"Sterring: middle",
|
{"Sterring: middle",
|
||||||
fmt.Sprintf("12405,%d,%d,%d,%d,%d,%d,50,%d\n", 1450, channel2, channel3, channel4, channel5, channel6, distanceCm),
|
fmt.Sprintf("12405,%d,%d,%d,%d,%d,%d,%d,%d,50\n", 1450, channel2, channel3, channel4, channel5, channel6, channel7, channel8),
|
||||||
defaultPwmThrottleConfig,
|
defaultPwmThrottleConfig, -1., -0.09, events.DriveMode_USER, false},
|
||||||
-1., -0.09, events.DriveMode_USER, false},
|
|
||||||
{"Sterring: right",
|
{"Sterring: right",
|
||||||
fmt.Sprintf("12410,%d,%d,%d,%d,%d,%d,50,%d\n", 1958, channel2, channel3, channel4, channel5, channel6, distanceCm),
|
fmt.Sprintf("12410,%d,%d,%d,%d,%d,%d,%d,%d,50\n", 1958, channel2, channel3, channel4, channel5, channel6, channel7, channel8),
|
||||||
defaultPwmThrottleConfig,
|
defaultPwmThrottleConfig, -1., 0.95, events.DriveMode_USER, false},
|
||||||
-1., 0.95, events.DriveMode_USER, false},
|
|
||||||
{"Sterring: over right",
|
{"Sterring: over right",
|
||||||
fmt.Sprintf("12415,%d,%d,%d,%d,%d,%d,50,%d\n", 2998, channel2, channel3, channel4, channel5, channel6, distanceCm),
|
fmt.Sprintf("12415,%d,%d,%d,%d,%d,%d,%d,%d,50\n", 2998, channel2, channel3, channel4, channel5, channel6, channel7, channel8),
|
||||||
defaultPwmThrottleConfig,
|
defaultPwmThrottleConfig, -1., 1., events.DriveMode_USER, false},
|
||||||
-1., 1., events.DriveMode_USER, false},
|
|
||||||
|
|
||||||
{"Throttle: over down",
|
{"Throttle: over down",
|
||||||
fmt.Sprintf("12420,%d,%d,%d,%d,%d,%d,50,%d\n", channel1, 99, channel3, channel4, channel5, channel6, distanceCm),
|
fmt.Sprintf("12420,%d,%d,%d,%d,%d,%d,%d,%d,50\n", channel1, 99, channel3, channel4, channel5, channel6, channel7, channel8),
|
||||||
defaultPwmThrottleConfig,
|
defaultPwmThrottleConfig, -1., -1., events.DriveMode_USER, false},
|
||||||
-1., -1., events.DriveMode_USER, false},
|
|
||||||
{"Throttle: down",
|
{"Throttle: down",
|
||||||
fmt.Sprintf("12425,%d,%d,%d,%d,%d,%d,50,%d\n", channel1, 998, channel3, channel4, channel5, channel6, distanceCm),
|
fmt.Sprintf("12425,%d,%d,%d,%d,%d,%d,%d,%d,50\n", channel1, 998, channel3, channel4, channel5, channel6, channel7, channel8),
|
||||||
defaultPwmThrottleConfig,
|
defaultPwmThrottleConfig, -0.95, -1., events.DriveMode_USER, false},
|
||||||
-0.95, -1., events.DriveMode_USER, false},
|
|
||||||
{"Throttle: stop",
|
{"Throttle: stop",
|
||||||
fmt.Sprintf("12430,%d,%d,%d,%d,%d,%d,50,%d\n", channel1, 1450, channel3, channel4, channel5, channel6, distanceCm),
|
fmt.Sprintf("12430,%d,%d,%d,%d,%d,%d,%d,%d,50\n", channel1, 1450, channel3, channel4, channel5, channel6, channel7, channel8),
|
||||||
defaultPwmThrottleConfig,
|
defaultPwmThrottleConfig, 0.0, -1., events.DriveMode_USER, false},
|
||||||
0.0, -1., events.DriveMode_USER, false},
|
|
||||||
{"Throttle: up",
|
{"Throttle: up",
|
||||||
fmt.Sprintf("12435,%d,%d,%d,%d,%d,%d,50,%d\n", channel1, 1948, channel3, channel4, channel5, channel6, distanceCm),
|
fmt.Sprintf("12435,%d,%d,%d,%d,%d,%d,%d,%d,50\n", channel1, 1948, channel3, channel4, channel5, channel6, channel7, channel8),
|
||||||
defaultPwmThrottleConfig,
|
defaultPwmThrottleConfig, 0.99, -1., events.DriveMode_USER, false},
|
||||||
0.99, -1., events.DriveMode_USER, false},
|
|
||||||
{"Throttle: over up",
|
{"Throttle: over up",
|
||||||
fmt.Sprintf("12440,%d,%d,%d,%d,%d,%d,50,%d\n", channel1, 2998, channel3, channel4, channel5, channel6, distanceCm),
|
fmt.Sprintf("12440,%d,%d,%d,%d,%d,%d,%d,%d,50\n", channel1, 2998, channel3, channel4, channel5, channel6, channel7, channel8),
|
||||||
defaultPwmThrottleConfig,
|
defaultPwmThrottleConfig, 1., -1., events.DriveMode_USER, false},
|
||||||
1., -1., events.DriveMode_USER, false},
|
|
||||||
{"Throttle: zero not middle",
|
{"Throttle: zero not middle",
|
||||||
fmt.Sprintf("12440,%d,%d,%d,%d,%d,%d,50,%d\n", channel1, 1600, channel3, channel4, channel5, channel6, distanceCm),
|
fmt.Sprintf("12440,%d,%d,%d,%d,%d,%d,%d,%d,50\n", channel1, 1600, channel3, channel4, channel5, channel6, channel7, channel8),
|
||||||
PWMThrottleConfig{1000, 1700, 1500},
|
PWMThrottleConfig{1000, 1700, 1500},
|
||||||
0.5, -1., events.DriveMode_USER, false},
|
0.5, -1., events.DriveMode_USER, false},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, c := range cases {
|
for _, c := range cases {
|
||||||
|
t.Run(c.name, func(t *testing.T) {
|
||||||
w := bufio.NewWriter(serialClient)
|
w := bufio.NewWriter(serialClient)
|
||||||
_, err := w.WriteString(c.content)
|
_, err := w.WriteString(c.content)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -178,6 +167,7 @@ func TestArduinoPart_Update(t *testing.T) {
|
|||||||
|
|
||||||
time.Sleep(10 * time.Millisecond)
|
time.Sleep(10 * time.Millisecond)
|
||||||
a.mutex.Lock()
|
a.mutex.Lock()
|
||||||
|
a.mutex.Unlock()
|
||||||
if fmt.Sprintf("%0.2f", a.throttle) != fmt.Sprintf("%0.2f", c.expectedThrottle) {
|
if fmt.Sprintf("%0.2f", a.throttle) != fmt.Sprintf("%0.2f", c.expectedThrottle) {
|
||||||
t.Errorf("%s: bad throttle value, expected: %0.2f, actual: %.2f", c.name, c.expectedThrottle, a.throttle)
|
t.Errorf("%s: bad throttle value, expected: %0.2f, actual: %.2f", c.name, c.expectedThrottle, a.throttle)
|
||||||
}
|
}
|
||||||
@ -190,7 +180,7 @@ func TestArduinoPart_Update(t *testing.T) {
|
|||||||
if a.ctrlRecord != c.expectedSwitchRecord {
|
if a.ctrlRecord != c.expectedSwitchRecord {
|
||||||
t.Errorf("%s: bad switch record, expected: %v, actual:%v", c.name, c.expectedSwitchRecord, a.ctrlRecord)
|
t.Errorf("%s: bad switch record, expected: %v, actual:%v", c.name, c.expectedSwitchRecord, a.ctrlRecord)
|
||||||
}
|
}
|
||||||
a.mutex.Unlock()
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user