@@ -10,7 +10,6 @@ package machine
1010import (
1111 "device/arm"
1212 "device/sam"
13- "errors"
1413 "runtime/interrupt"
1514 "unsafe"
1615)
@@ -925,13 +924,13 @@ func (i2c I2C) Tx(addr uint16, w, r []byte) error {
925924 for ! i2c .Bus .INTFLAG .HasBits (sam .SERCOM_I2CM_INTFLAG_MB ) {
926925 timeout --
927926 if timeout == 0 {
928- return errors . New ( "I2C timeout on ready to write data" )
927+ return errI2CWriteTimeout
929928 }
930929 }
931930
932931 // ACK received (0: ACK, 1: NACK)
933932 if i2c .Bus .STATUS .HasBits (sam .SERCOM_I2CM_STATUS_RXNACK ) {
934- return errors . New ( "I2C write error: expected ACK not NACK" )
933+ return errI2CAckExpected
935934 }
936935
937936 // write data
@@ -957,13 +956,13 @@ func (i2c I2C) Tx(addr uint16, w, r []byte) error {
957956 // In that case, send a stop condition and return error.
958957 if i2c .Bus .INTFLAG .HasBits (sam .SERCOM_I2CM_INTFLAG_MB ) {
959958 i2c .Bus .CTRLB .SetBits (wireCmdStop << sam .SERCOM_I2CM_CTRLB_CMD_Pos ) // Stop condition
960- return errors . New ( "I2C read error: expected ACK not NACK" )
959+ return errI2CAckExpected
961960 }
962961 }
963962
964963 // ACK received (0: ACK, 1: NACK)
965964 if i2c .Bus .STATUS .HasBits (sam .SERCOM_I2CM_STATUS_RXNACK ) {
966- return errors . New ( "I2C read error: expected ACK not NACK" )
965+ return errI2CAckExpected
967966 }
968967
969968 // read first byte
@@ -1000,16 +999,16 @@ func (i2c I2C) WriteByte(data byte) error {
1000999 for ! i2c .Bus .INTFLAG .HasBits (sam .SERCOM_I2CM_INTFLAG_MB ) {
10011000 // check for bus error
10021001 if i2c .Bus .STATUS .HasBits (sam .SERCOM_I2CM_STATUS_BUSERR ) {
1003- return errors . New ( "I2C bus error" )
1002+ return errI2CBusError
10041003 }
10051004 timeout --
10061005 if timeout == 0 {
1007- return errors . New ( "I2C timeout on write data" )
1006+ return errI2CWriteTimeout
10081007 }
10091008 }
10101009
10111010 if i2c .Bus .STATUS .HasBits (sam .SERCOM_I2CM_STATUS_RXNACK ) {
1012- return errors . New ( "I2C write error: expected ACK not NACK" )
1011+ return errI2CAckExpected
10131012 }
10141013
10151014 return nil
@@ -1028,7 +1027,7 @@ func (i2c I2C) sendAddress(address uint16, write bool) error {
10281027 ! i2c .Bus .STATUS .HasBits (wireOwnerState << sam .SERCOM_I2CM_STATUS_BUSSTATE_Pos ) {
10291028 timeout --
10301029 if timeout == 0 {
1031- return errors . New ( "I2C timeout on bus ready" )
1030+ return errI2CBusReadyTimeout
10321031 }
10331032 }
10341033 i2c .Bus .ADDR .Set (uint32 (data ))
@@ -1042,7 +1041,7 @@ func (i2c I2C) signalStop() error {
10421041 for i2c .Bus .SYNCBUSY .HasBits (sam .SERCOM_I2CM_SYNCBUSY_SYSOP ) {
10431042 timeout --
10441043 if timeout == 0 {
1045- return errors . New ( "I2C timeout on signal stop" )
1044+ return errI2CSignalStopTimeout
10461045 }
10471046 }
10481047 return nil
@@ -1054,7 +1053,7 @@ func (i2c I2C) signalRead() error {
10541053 for i2c .Bus .SYNCBUSY .HasBits (sam .SERCOM_I2CM_SYNCBUSY_SYSOP ) {
10551054 timeout --
10561055 if timeout == 0 {
1057- return errors . New ( "I2C timeout on signal read" )
1056+ return errI2CSignalReadTimeout
10581057 }
10591058 }
10601059 return nil
@@ -1455,7 +1454,7 @@ func (usbcdc USBCDC) WriteByte(c byte) error {
14551454 for (getEPINTFLAG (usb_CDC_ENDPOINT_IN ) & sam .USB_DEVICE_ENDPOINT_EPINTFLAG_TRCPT1 ) == 0 {
14561455 timeout --
14571456 if timeout == 0 {
1458- return errors . New ( "USBCDC write byte timeout" )
1457+ return errUSBCDCWriteByteTimeout
14591458 }
14601459 }
14611460 }
0 commit comments