microbitmatrix: refactor to eliminate duplicate code with microbit v1/v2

Signed-off-by: deadprogram <ron@hybridgroup.com>
This commit is contained in:
deadprogram
2021-01-28 00:01:16 +01:00
committed by Daniel Esteban
parent 231ec57202
commit 01acd977f3
3 changed files with 112 additions and 139 deletions
-35
View File
@@ -7,7 +7,6 @@
package microbitmatrix // import "tinygo.org/x/drivers/microbitmatrix"
import (
"image/color"
"machine"
"time"
)
@@ -43,21 +42,12 @@ var matrixRotations = [4][5][5][2]uint8{
},
}
type Config struct {
Rotation uint8
}
type Device struct {
pin [10]machine.Pin
buffer [5][5]bool
rotation uint8
}
// New returns a new microbitmatrix driver.
func New() Device {
return Device{}
}
// Configure sets up the device.
func (d *Device) Configure(cfg Config) {
d.SetRotation(cfg.Rotation)
@@ -82,31 +72,6 @@ func (d *Device) Configure(cfg Config) {
d.DisableAll()
}
// SetRotation changes the rotation of the LED matrix
func (d *Device) SetRotation(rotation uint8) {
d.rotation = rotation % 4
}
// SetPixel modifies the internal buffer in a single pixel.
func (d *Device) SetPixel(x int16, y int16, c color.RGBA) {
if x < 0 || x >= 5 || y < 0 || y >= 5 {
return
}
if c.R != 0 || c.G != 0 || c.B != 0 {
d.buffer[matrixRotations[d.rotation][x][y][0]][matrixRotations[d.rotation][x][y][1]] = true
} else {
d.buffer[matrixRotations[d.rotation][x][y][0]][matrixRotations[d.rotation][x][y][1]] = false
}
}
// GetPixel returns if the specific pixels is enabled
func (d *Device) GetPixel(x int16, y int16) bool {
if x < 0 || x >= 5 || y < 0 || y >= 5 {
return false
}
return d.buffer[matrixRotations[d.rotation][x][y][0]][matrixRotations[d.rotation][x][y][1]]
}
// Display sends the buffer (if any) to the screen.
func (d *Device) Display() error {
for x := 0; x < 5; x++ {