diff --git a/mcp23xxx/grouprecording_test.go b/mcp23xxx/grouprecording_test.go new file mode 100644 index 0000000..2e813ab --- /dev/null +++ b/mcp23xxx/grouprecording_test.go @@ -0,0 +1,159 @@ +// Copyright 2025 The Periph Authors. All rights reserved. +// Use of this source code is governed under the Apache License, Version 2.0 +// that can be found in the LICENSE file. + +package mcp23xxx + +import ( + "periph.io/x/conn/v3/i2c/i2ctest" +) + +var recordingData = map[string][]i2ctest.IO{ + "TestGroup": { + {Addr: 0x20, W: []uint8{0x0}, R: []uint8{0x0}}, + {Addr: 0x20, W: []uint8{0x0, 0x10}}, + {Addr: 0x20, W: []uint8{0xa}, R: []uint8{0x40}}, + {Addr: 0x20, W: []uint8{0xa, 0x41}}, + {Addr: 0x20, W: []uint8{0xa, 0x40}}, + {Addr: 0x20, W: []uint8{0xa, 0x41}}, + {Addr: 0x20, W: []uint8{0xa, 0x40}}, + {Addr: 0x20, W: []uint8{0xa, 0x41}}, + {Addr: 0x20, W: []uint8{0xa, 0x40}}, + {Addr: 0x20, W: []uint8{0xa, 0x41}}, + {Addr: 0x20, W: []uint8{0xa, 0x40}}, + {Addr: 0x20, W: []uint8{0xa, 0x41}}, + {Addr: 0x20, W: []uint8{0xa, 0x40}}, + {Addr: 0x20, W: []uint8{0xa, 0x41}}, + {Addr: 0x20, W: []uint8{0xa, 0x40}}, + {Addr: 0x20, W: []uint8{0xa, 0x41}}, + {Addr: 0x20, W: []uint8{0xa, 0x40}}, + {Addr: 0x20, W: []uint8{0xa, 0x41}}, + {Addr: 0x20, W: []uint8{0xa, 0x40}}, + {Addr: 0x20, W: []uint8{0xa, 0x41}}, + {Addr: 0x20, W: []uint8{0xa, 0x40}}, + {Addr: 0x20, W: []uint8{0xa, 0x41}}, + {Addr: 0x20, W: []uint8{0xa, 0x40}}}, + "TestReadWrite": { + {Addr: 0x20, W: []uint8{0x0}, R: []uint8{0x10}}, + {Addr: 0x20, W: []uint8{0xa}, R: []uint8{0x40}}, + {Addr: 0x20, W: []uint8{0x0, 0xf0}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x0}}, + {Addr: 0x20, W: []uint8{0xa, 0x41}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x11}}, + {Addr: 0x20, W: []uint8{0xa, 0x42}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x22}}, + {Addr: 0x20, W: []uint8{0xa, 0x43}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x33}}, + {Addr: 0x20, W: []uint8{0xa, 0x44}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x44}}, + {Addr: 0x20, W: []uint8{0xa, 0x45}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x55}}, + {Addr: 0x20, W: []uint8{0xa, 0x46}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x66}}, + {Addr: 0x20, W: []uint8{0xa, 0x47}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x77}}, + {Addr: 0x20, W: []uint8{0xa, 0x48}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x88}}, + {Addr: 0x20, W: []uint8{0xa, 0x49}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x99}}, + {Addr: 0x20, W: []uint8{0xa, 0x4a}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0xaa}}, + {Addr: 0x20, W: []uint8{0xa, 0x4b}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0xbb}}, + {Addr: 0x20, W: []uint8{0xa, 0x4c}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0xcc}}, + {Addr: 0x20, W: []uint8{0xa, 0x4d}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0xdd}}, + {Addr: 0x20, W: []uint8{0xa, 0x4e}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0xee}}, + {Addr: 0x20, W: []uint8{0xa, 0x4f}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0xff}}, + {Addr: 0x20, W: []uint8{0x0, 0x0}}, + {Addr: 0x20, W: []uint8{0xa, 0xf}}, + {Addr: 0x20, W: []uint8{0x0, 0xf}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x0}}, + {Addr: 0x20, W: []uint8{0xa, 0x1f}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x11}}, + {Addr: 0x20, W: []uint8{0xa, 0x2f}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x22}}, + {Addr: 0x20, W: []uint8{0xa, 0x3f}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x33}}, + {Addr: 0x20, W: []uint8{0xa, 0x4f}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x44}}, + {Addr: 0x20, W: []uint8{0xa, 0x5f}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x55}}, + {Addr: 0x20, W: []uint8{0xa, 0x6f}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x66}}, + {Addr: 0x20, W: []uint8{0xa, 0x7f}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x77}}, + {Addr: 0x20, W: []uint8{0xa, 0x8f}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x88}}, + {Addr: 0x20, W: []uint8{0xa, 0x9f}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x99}}, + {Addr: 0x20, W: []uint8{0xa, 0xaf}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0xaa}}, + {Addr: 0x20, W: []uint8{0xa, 0xbf}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0xbb}}, + {Addr: 0x20, W: []uint8{0xa, 0xcf}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0xcc}}, + {Addr: 0x20, W: []uint8{0xa, 0xdf}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0xdd}}, + {Addr: 0x20, W: []uint8{0xa, 0xef}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0xee}}, + {Addr: 0x20, W: []uint8{0xa, 0xff}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0xff}}, + {Addr: 0x20, W: []uint8{0x0, 0xe}}, + {Addr: 0x20, W: []uint8{0xa, 0xfe}}, + {Addr: 0x20, W: []uint8{0x0, 0xc}}, + {Addr: 0x20, W: []uint8{0xa, 0xfc}}, + {Addr: 0x20, W: []uint8{0x0, 0x8}}, + {Addr: 0x20, W: []uint8{0xa, 0xf8}}, + {Addr: 0x20, W: []uint8{0x0, 0x0}}, + {Addr: 0x20, W: []uint8{0xa, 0xf0}}, + {Addr: 0x20, W: []uint8{0x0, 0xf0}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x0}}, + {Addr: 0x20, W: []uint8{0xa, 0xf1}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x11}}, + {Addr: 0x20, W: []uint8{0xa, 0xf0}}, + {Addr: 0x20, W: []uint8{0xa, 0xf2}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x22}}, + {Addr: 0x20, W: []uint8{0xa, 0xf3}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x33}}, + {Addr: 0x20, W: []uint8{0xa, 0xf2}}, + {Addr: 0x20, W: []uint8{0xa, 0xf0}}, + {Addr: 0x20, W: []uint8{0xa, 0xf4}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x44}}, + {Addr: 0x20, W: []uint8{0xa, 0xf5}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x55}}, + {Addr: 0x20, W: []uint8{0xa, 0xf4}}, + {Addr: 0x20, W: []uint8{0xa, 0xf6}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x66}}, + {Addr: 0x20, W: []uint8{0xa, 0xf7}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x77}}, + {Addr: 0x20, W: []uint8{0xa, 0xf6}}, + {Addr: 0x20, W: []uint8{0xa, 0xf4}}, + {Addr: 0x20, W: []uint8{0xa, 0xf0}}, + {Addr: 0x20, W: []uint8{0xa, 0xf8}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x88}}, + {Addr: 0x20, W: []uint8{0xa, 0xf9}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0x99}}, + {Addr: 0x20, W: []uint8{0xa, 0xf8}}, + {Addr: 0x20, W: []uint8{0xa, 0xfa}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0xaa}}, + {Addr: 0x20, W: []uint8{0xa, 0xfb}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0xbb}}, + {Addr: 0x20, W: []uint8{0xa, 0xfa}}, + {Addr: 0x20, W: []uint8{0xa, 0xf8}}, + {Addr: 0x20, W: []uint8{0xa, 0xfc}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0xcc}}, + {Addr: 0x20, W: []uint8{0xa, 0xfd}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0xdd}}, + {Addr: 0x20, W: []uint8{0xa, 0xfc}}, + {Addr: 0x20, W: []uint8{0xa, 0xfe}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0xee}}, + {Addr: 0x20, W: []uint8{0xa, 0xff}}, + {Addr: 0x20, W: []uint8{0x9}, R: []uint8{0xff}}, + {Addr: 0x20, W: []uint8{0x0, 0x0}}, + {Addr: 0x20, W: []uint8{0xa, 0xf}}, + {Addr: 0x20, W: []uint8{0xa, 0x0}}}, +}