Define names for twi errors
Rebase of https://github.com/arduino/Arduino/pull/2152
This commit is contained in:
parent
6c861d8c70
commit
2d3ad65e6b
|
@ -17,6 +17,7 @@
|
|||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts
|
||||
Modified 2014 by Mickael Germain to define names for twi errors.
|
||||
*/
|
||||
|
||||
#include <math.h>
|
||||
|
@ -217,11 +218,11 @@ uint8_t twi_readFrom(uint8_t address, uint8_t* data, uint8_t length, uint8_t sen
|
|||
* length: number of bytes in array
|
||||
* wait: boolean indicating to wait for write or not
|
||||
* sendStop: boolean indicating whether or not to send a stop at the end
|
||||
* Output 0 .. success
|
||||
* 1 .. length to long for buffer
|
||||
* 2 .. address send, NACK received
|
||||
* 3 .. data send, NACK received
|
||||
* 4 .. other twi error (lost bus arbitration, bus error, ..)
|
||||
* Output TWI_SUCCESS .. success
|
||||
* TWI_DATA_TOO_LONG .. length to long for buffer
|
||||
* TWI_NACK_ON_ADDR .. address send, NACK received
|
||||
* TWI_NACK_ON_DATA .. data send, NACK received
|
||||
* TWI_OTHER_ERROR .. other twi error (lost bus arbitration, bus error, ..)
|
||||
*/
|
||||
uint8_t twi_writeTo(uint8_t address, uint8_t* data, uint8_t length, uint8_t wait, uint8_t sendStop)
|
||||
{
|
||||
|
@ -229,7 +230,7 @@ uint8_t twi_writeTo(uint8_t address, uint8_t* data, uint8_t length, uint8_t wait
|
|||
|
||||
// ensure data will fit into buffer
|
||||
if(TWI_BUFFER_LENGTH < length){
|
||||
return 1;
|
||||
return TWI_DATA_TOO_LONG;
|
||||
}
|
||||
|
||||
// wait until twi is ready, become master transmitter
|
||||
|
@ -280,13 +281,13 @@ uint8_t twi_writeTo(uint8_t address, uint8_t* data, uint8_t length, uint8_t wait
|
|||
}
|
||||
|
||||
if (twi_error == 0xFF)
|
||||
return 0; // success
|
||||
return TWI_SUCCESS; // success
|
||||
else if (twi_error == TW_MT_SLA_NACK)
|
||||
return 2; // error: address send, nack received
|
||||
return TWI_NACK_ON_ADDR; // error: address send, nack received
|
||||
else if (twi_error == TW_MT_DATA_NACK)
|
||||
return 3; // error: data send, nack received
|
||||
return TWI_NACK_ON_DATA; // error: data send, nack received
|
||||
else
|
||||
return 4; // other twi error
|
||||
return TWI_OTHER_ERROR; // other twi error
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -295,9 +296,9 @@ uint8_t twi_writeTo(uint8_t address, uint8_t* data, uint8_t length, uint8_t wait
|
|||
* must be called in slave tx event callback
|
||||
* Input data: pointer to byte array
|
||||
* length: number of bytes in array
|
||||
* Output 1 length too long for buffer
|
||||
* 2 not slave transmitter
|
||||
* 0 ok
|
||||
* Output TWI_DATA_TOO_LONG .. length too long for buffer
|
||||
* TWI_NOT_SLAVE_TX .. not slave transmitter
|
||||
* 0 .. ok
|
||||
*/
|
||||
uint8_t twi_transmit(const uint8_t* data, uint8_t length)
|
||||
{
|
||||
|
@ -305,12 +306,12 @@ uint8_t twi_transmit(const uint8_t* data, uint8_t length)
|
|||
|
||||
// ensure data will fit into buffer
|
||||
if(TWI_BUFFER_LENGTH < (twi_txBufferLength+length)){
|
||||
return 1;
|
||||
return TWI_DATA_TOO_LONG;
|
||||
}
|
||||
|
||||
// ensure we are currently a slave transmitter
|
||||
if(TWI_STX != twi_state){
|
||||
return 2;
|
||||
return TWI_NOT_SLAVE_TX;
|
||||
}
|
||||
|
||||
// set length and copy data into tx buffer
|
||||
|
|
|
@ -37,7 +37,14 @@
|
|||
#define TWI_MTX 2
|
||||
#define TWI_SRX 3
|
||||
#define TWI_STX 4
|
||||
|
||||
|
||||
#define TWI_SUCCESS 0
|
||||
#define TWI_DATA_TOO_LONG 1
|
||||
#define TWI_NACK_ON_ADDR 2
|
||||
#define TWI_NOT_SLAVE_TX 2
|
||||
#define TWI_NACK_ON_DATA 3
|
||||
#define TWI_OTHER_ERROR 4
|
||||
|
||||
void twi_init(void);
|
||||
void twi_disable(void);
|
||||
void twi_setAddress(uint8_t);
|
||||
|
|
Loading…
Reference in New Issue