Skip to content

Commit 7bfec7c

Browse files
authored
spi(all): ensure halt is idempotent (#1173)
1 parent da730b2 commit 7bfec7c

22 files changed

+280
-125
lines changed

drivers/spi/apa102.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,5 +86,5 @@ func (d *APA102Driver) Draw() error {
8686
tx[i] = 0xff
8787
}
8888

89-
return d.connection.WriteBytes(tx)
89+
return d.writeBytes(tx)
9090
}

drivers/spi/apa102_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,15 @@ func TestNewAPA102Driver(t *testing.T) {
3434
assert.True(t, strings.HasPrefix(d.Name(), "APA102"))
3535
}
3636

37+
func TestAPA102Halt(t *testing.T) {
38+
// arrange
39+
d := NewAPA102Driver(newSpiTestAdaptor(), 10, 31)
40+
// act, assert
41+
require.NoError(t, d.Halt()) // must be idempotent
42+
require.NoError(t, d.Start())
43+
require.NoError(t, d.Halt())
44+
}
45+
3746
func TestDriverLEDs(t *testing.T) {
3847
d := initTestAPA102DriverWithStubbedAdaptor()
3948

drivers/spi/mcp3002.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ func (d *MCP3002Driver) Read(channel int) (int, error) {
4848

4949
rx := make([]byte, 2)
5050

51-
if err := d.connection.ReadCommandData(tx, rx); err != nil {
51+
if err := d.readCommandData(tx, rx); err != nil {
5252
return 0, err
5353
}
5454

drivers/spi/mcp3002_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,15 @@ func TestNewMCP3002Driver(t *testing.T) {
3838
assert.True(t, strings.HasPrefix(d.Name(), "MCP3002"))
3939
}
4040

41+
func TestMCP3002Halt(t *testing.T) {
42+
// arrange
43+
d := NewMCP3002Driver(newSpiTestAdaptor())
44+
// act, assert
45+
require.NoError(t, d.Halt()) // must be idempotent
46+
require.NoError(t, d.Start())
47+
require.NoError(t, d.Halt())
48+
}
49+
4150
func TestMCP3002Read(t *testing.T) {
4251
tests := map[string]struct {
4352
chanNum int

drivers/spi/mcp3004.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func (d *MCP3004Driver) Read(channel int) (int, error) {
4949

5050
rx := make([]byte, 3)
5151

52-
if err := d.connection.ReadCommandData(tx, rx); err != nil || len(rx) != 3 {
52+
if err := d.readCommandData(tx, rx); err != nil || len(rx) != 3 {
5353
return 0, err
5454
}
5555

drivers/spi/mcp3004_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,15 @@ func TestNewMCP3004Driver(t *testing.T) {
3838
assert.True(t, strings.HasPrefix(d.Name(), "MCP3004"))
3939
}
4040

41+
func TestMCP3004Halt(t *testing.T) {
42+
// arrange
43+
d := NewMCP3004Driver(newSpiTestAdaptor())
44+
// act, assert
45+
require.NoError(t, d.Halt()) // must be idempotent
46+
require.NoError(t, d.Start())
47+
require.NoError(t, d.Halt())
48+
}
49+
4150
func TestMCP3004Read(t *testing.T) {
4251
tests := map[string]struct {
4352
chanNum int

drivers/spi/mcp3008.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func (d *MCP3008Driver) Read(channel int) (int, error) {
4949

5050
rx := make([]byte, 3)
5151

52-
if err := d.connection.ReadCommandData(tx, rx); err != nil || len(rx) != 3 {
52+
if err := d.readCommandData(tx, rx); err != nil || len(rx) != 3 {
5353
return 0, err
5454
}
5555

drivers/spi/mcp3008_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,15 @@ func TestNewMCP3008Driver(t *testing.T) {
3838
assert.True(t, strings.HasPrefix(d.Name(), "MCP3008"))
3939
}
4040

41+
func TestMCP3008Halt(t *testing.T) {
42+
// arrange
43+
d := NewMCP3008Driver(newSpiTestAdaptor())
44+
// act, assert
45+
require.NoError(t, d.Halt()) // must be idempotent
46+
require.NoError(t, d.Start())
47+
require.NoError(t, d.Halt())
48+
}
49+
4150
func TestMCP3008Read(t *testing.T) {
4251
tests := map[string]struct {
4352
chanNum int

drivers/spi/mcp3202.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ func (d *MCP3202Driver) Read(channel int) (int, error) {
5151

5252
rx := make([]byte, 3)
5353

54-
if err := d.connection.ReadCommandData(tx, rx); err != nil || len(rx) != 3 {
54+
if err := d.readCommandData(tx, rx); err != nil || len(rx) != 3 {
5555
return 0, err
5656
}
5757

drivers/spi/mcp3202_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,15 @@ func TestNewMCP3202Driver(t *testing.T) {
3838
assert.True(t, strings.HasPrefix(d.Name(), "MCP3202"))
3939
}
4040

41+
func TestMCP3202Halt(t *testing.T) {
42+
// arrange
43+
d := NewMCP3202Driver(newSpiTestAdaptor())
44+
// act, assert
45+
require.NoError(t, d.Halt()) // must be idempotent
46+
require.NoError(t, d.Start())
47+
require.NoError(t, d.Halt())
48+
}
49+
4150
func TestMCP3202Read(t *testing.T) {
4251
tests := map[string]struct {
4352
chanNum int

0 commit comments

Comments
 (0)