mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-03 02:27:48 +00:00
machine/rp2: unexport machine-specific errors
Errors are part of API, and the exported rp2 errors seemed arbitrary. For example, the very particular ErrRP2040I2CDisable was exported, but errI2CWriteTimeout (which is defined on all platforms) is not. While here, remove "RP2040" from an error name and make the messages consistent and idiomatic.
This commit is contained in:
@@ -58,15 +58,15 @@ type I2C struct {
|
||||
}
|
||||
|
||||
var (
|
||||
ErrInvalidI2CBaudrate = errors.New("invalid i2c baudrate")
|
||||
ErrInvalidTgtAddr = errors.New("invalid target i2c address not in 0..0x80 or is reserved")
|
||||
ErrI2CGeneric = errors.New("i2c error")
|
||||
ErrRP2040I2CDisable = errors.New("i2c rp2040 peripheral timeout in disable")
|
||||
errInvalidI2CSDA = errors.New("invalid I2C SDA pin")
|
||||
errInvalidI2CSCL = errors.New("invalid I2C SCL pin")
|
||||
ErrI2CAlreadyListening = errors.New("i2c already listening")
|
||||
ErrI2CWrongMode = errors.New("i2c wrong mode")
|
||||
ErrI2CUnderflow = errors.New("i2c underflow")
|
||||
errInvalidI2CBaudrate = errors.New("i2c: invalid baudrate")
|
||||
errInvalidTgtAddr = errors.New("i2c: invalid target address: not in 0..0x80 or is reserved")
|
||||
errI2CGeneric = errors.New("i2c: generic error")
|
||||
errI2CDisable = errors.New("i2c: peripheral timeout in disable")
|
||||
errInvalidI2CSDA = errors.New("i2c: invalid SDA pin")
|
||||
errInvalidI2CSCL = errors.New("i2c: invalid SCL pin")
|
||||
errI2CAlreadyListening = errors.New("i2c: already listening")
|
||||
errI2CWrongMode = errors.New("i2c: wrong mode")
|
||||
errI2CUnderflow = errors.New("i2c: underflow")
|
||||
)
|
||||
|
||||
// Tx performs a write and then a read transfer placing the result in
|
||||
@@ -84,7 +84,7 @@ var (
|
||||
// Performs only a write transfer.
|
||||
func (i2c *I2C) Tx(addr uint16, w, r []byte) error {
|
||||
if i2c.mode != I2CModeController {
|
||||
return ErrI2CWrongMode
|
||||
return errI2CWrongMode
|
||||
}
|
||||
return i2c.tx(uint8(addr), w, r)
|
||||
}
|
||||
@@ -94,7 +94,7 @@ func (i2c *I2C) Tx(addr uint16, w, r []byte) error {
|
||||
// addr is the address to listen to
|
||||
func (i2c *I2C) Listen(addr uint16) error {
|
||||
if i2c.mode != I2CModeTarget {
|
||||
return ErrI2CWrongMode
|
||||
return errI2CWrongMode
|
||||
}
|
||||
|
||||
return i2c.listen(uint8(addr))
|
||||
@@ -155,7 +155,7 @@ func (i2c *I2C) Configure(config I2CConfig) error {
|
||||
func (i2c *I2C) SetBaudRate(br uint32) error {
|
||||
|
||||
if br == 0 {
|
||||
return ErrInvalidI2CBaudrate
|
||||
return errInvalidI2CBaudrate
|
||||
}
|
||||
|
||||
// I2C is synchronous design that runs from clk_sys
|
||||
@@ -167,7 +167,7 @@ func (i2c *I2C) SetBaudRate(br uint32) error {
|
||||
hcnt := period - lcnt
|
||||
// Check for out-of-range divisors:
|
||||
if hcnt > rp.I2C0_IC_FS_SCL_HCNT_IC_FS_SCL_HCNT_Msk || hcnt < 8 || lcnt > rp.I2C0_IC_FS_SCL_LCNT_IC_FS_SCL_LCNT_Msk || lcnt < 8 {
|
||||
return ErrInvalidI2CBaudrate
|
||||
return errInvalidI2CBaudrate
|
||||
}
|
||||
|
||||
// Per I2C-bus specification a device in standard or fast mode must
|
||||
@@ -187,7 +187,7 @@ func (i2c *I2C) SetBaudRate(br uint32) error {
|
||||
}
|
||||
|
||||
if sdaTxHoldCnt > lcnt-2 {
|
||||
return ErrInvalidI2CBaudrate
|
||||
return errInvalidI2CBaudrate
|
||||
}
|
||||
err := i2c.disable()
|
||||
if err != nil {
|
||||
@@ -220,7 +220,7 @@ func (i2c *I2C) disable() error {
|
||||
i2c.Bus.IC_ENABLE.Set(0)
|
||||
for i2c.Bus.IC_ENABLE_STATUS.Get()&1 != 0 {
|
||||
if ticks() > deadline {
|
||||
return ErrRP2040I2CDisable
|
||||
return errI2CDisable
|
||||
}
|
||||
}
|
||||
return nil
|
||||
@@ -286,7 +286,7 @@ func (i2c *I2C) tx(addr uint8, tx, rx []byte) (err error) {
|
||||
const timeout_us = 4_000
|
||||
deadline := ticks() + timeout_us
|
||||
if addr >= 0x80 || isReservedI2CAddr(addr) {
|
||||
return ErrInvalidTgtAddr
|
||||
return errInvalidTgtAddr
|
||||
}
|
||||
txlen := len(tx)
|
||||
rxlen := len(rx)
|
||||
@@ -420,7 +420,7 @@ func (i2c *I2C) tx(addr uint8, tx, rx []byte) (err error) {
|
||||
case abortReason == 0 || abortReason&rp.I2C0_IC_TX_ABRT_SOURCE_ABRT_7B_ADDR_NOACK != 0:
|
||||
// No reported errors - seems to happen if there is nothing connected to the bus.
|
||||
// Address byte not acknowledged
|
||||
err = ErrI2CGeneric
|
||||
err = errI2CGeneric
|
||||
case abortReason&rp.I2C0_IC_TX_ABRT_SOURCE_ABRT_TXDATA_NOACK != 0:
|
||||
// Address acknowledged, some data not acknowledged
|
||||
fallthrough
|
||||
@@ -434,7 +434,7 @@ func (i2c *I2C) tx(addr uint8, tx, rx []byte) (err error) {
|
||||
// listen sets up for async handling of requests on the I2C bus.
|
||||
func (i2c *I2C) listen(addr uint8) error {
|
||||
if addr >= 0x80 || isReservedI2CAddr(addr) {
|
||||
return ErrInvalidTgtAddr
|
||||
return errInvalidTgtAddr
|
||||
}
|
||||
|
||||
err := i2c.disable()
|
||||
@@ -497,7 +497,7 @@ func (i2c *I2C) Reply(buf []byte) error {
|
||||
stat := i2c.Bus.IC_RAW_INTR_STAT.Get()
|
||||
|
||||
if stat&rp.I2C0_IC_INTR_MASK_M_RD_REQ == 0 {
|
||||
return ErrI2CWrongMode
|
||||
return errI2CWrongMode
|
||||
}
|
||||
i2c.Bus.IC_CLR_RD_REQ.Get() // clear restart
|
||||
|
||||
|
||||
Reference in New Issue
Block a user