legacy.PinOutput->pin.Output and add High+Low methods on drivers.PinOutput and use them in drivers

This commit is contained in:
Patricio Whittingslow
2025-09-16 17:53:18 -03:00
committed by deadprogram
parent 2e007a6de7
commit 8ac285e821
30 changed files with 280 additions and 245 deletions
+19 -18
View File
@@ -12,6 +12,7 @@ import (
"tinygo.org/x/drivers"
"tinygo.org/x/drivers/internal/legacy"
"tinygo.org/x/drivers/internal/pin"
)
// Device wraps MCP2515 SPI CAN Module.
@@ -37,7 +38,7 @@ const (
)
// New returns a new MCP2515 driver. Pass in a fully configured SPI bus.
func New(b drivers.SPI, csPin legacy.PinOutput) *Device {
func New(b drivers.SPI, csPin pin.Output) *Device {
d := &Device{
spi: SPI{
bus: b,
@@ -166,9 +167,9 @@ func (d *Device) init(speed, clock byte) error {
// Reset resets mcp2515.
func (d *Device) Reset() error {
d.cs(false)
d.cs.Low()
_, err := d.spi.readWrite(mcpReset)
d.cs(true)
d.cs.High()
// time.Sleep(time.Microsecond * 4)
if err != nil {
return err
@@ -456,8 +457,8 @@ func (d *Device) readMsg() error {
func (d *Device) readRxBuffer(loadAddr uint8) error {
msg := d.msg
d.cs(false)
defer d.cs(true)
d.cs.Low()
defer d.cs.High()
_, err := d.spi.readWrite(loadAddr)
if err != nil {
return err
@@ -524,8 +525,8 @@ func (d *Device) getNextFreeTxBuf() (uint8, uint8, error) {
}
func (d *Device) writeCANMsg(bufNum uint8, canid uint32, ext, rtrBit, dlc uint8, data []byte) error {
d.cs(false)
defer d.cs(true)
d.cs.Low()
defer d.cs.High()
_, err := d.spi.readWrite(txSidhToLoad(bufNum))
if err != nil {
return err
@@ -544,7 +545,7 @@ func (d *Device) writeCANMsg(bufNum uint8, canid uint32, ext, rtrBit, dlc uint8,
}
// Since cs.Low and cs.High are executed in d.startTransmission,
// it is necessary to set cs.High once to separate the instruction of mcp2515.
d.cs(true)
d.cs.High()
err = d.startTransmission(bufNum)
if err != nil {
@@ -612,9 +613,9 @@ func (s *SPI) setTxBufData(canid uint32, ext, rtrBit, dlc uint8, data []byte) er
}
func (d *Device) startTransmission(bufNum uint8) error {
d.cs(false)
d.cs.Low()
_, err := d.spi.readWrite(txSidhToRTS(bufNum))
d.cs(true)
d.cs.High()
if err != nil {
return err
}
@@ -708,8 +709,8 @@ func txSidhToLoad(i uint8) uint8 {
}
func (d *Device) setRegister(addr, value byte) error {
d.cs(false)
defer d.cs(true)
d.cs.Low()
defer d.cs.High()
_, err := d.spi.readWrite(mcpWrite)
if err != nil {
return err
@@ -728,8 +729,8 @@ func (d *Device) setRegister(addr, value byte) error {
}
func (d *Device) readRegister(addr byte) (byte, error) {
d.cs(false)
defer d.cs(true)
d.cs.Low()
defer d.cs.High()
_, err := d.spi.readWrite(mcpRead)
if err != nil {
return 0, err
@@ -747,8 +748,8 @@ func (d *Device) readRegister(addr byte) (byte, error) {
}
func (d *Device) modifyRegister(addr, mask, data byte) error {
d.cs(false)
defer d.cs(true)
d.cs.Low()
defer d.cs.High()
_, err := d.spi.readWrite(mcpBitMod)
if err != nil {
return err
@@ -790,8 +791,8 @@ func (d *Device) requestNewMode(newMode byte) error {
}
func (d *Device) readStatus() (byte, error) {
d.cs(false)
defer d.cs(true)
d.cs.Low()
defer d.cs.High()
_, err := d.spi.readWrite(mcpReadStatus)
if err != nil {
return 0, err