From 6ef9e1a2ee242c9c7eb81142c99b214e8c741a5b Mon Sep 17 00:00:00 2001 From: Markus Hitter Date: Sun, 3 Apr 2016 21:31:10 +0200 Subject: [PATCH] I2C: encapsulate bus states. No functional changes. --- i2c.c | 28 ++++++++++++++++++++++++++++ i2c.h | 23 ----------------------- 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/i2c.c b/i2c.c index ea08c04..cd1cfad 100644 --- a/i2c.c +++ b/i2c.c @@ -33,6 +33,34 @@ #error Cant be I2C master and slave at the same time. #endif +#ifdef I2C_SLAVE_MODE + #define I2C_MODE 1 +#else + #define I2C_MODE 0 +#endif + +#define I2C_MODE_MASK 0b00001100 +// Start-Addr_R-Read-Stop: just read mode. +#define I2C_MODE_SARP 0b00000000 +// Start-Addr_W-Write-Stop: just write mode. +#define I2C_MODE_SAWP 0b00000100 +// Start-Addr_W-WrPageAdr-rStart-Addr_R-Read-Stop. +#define I2C_MODE_ENHA 0b00001000 +// Transponder is busy. +#define I2C_MODE_BUSY 0b01000000 +// Transponder is free. +#define I2C_MODE_FREE 0b10111111 + +// Transmission interrupted. +#define I2C_INTERRUPTED 0b10000000 +// Transmission not interrupted. +#define I2C_NOINTERRUPTED 0b01111111 + +#define I2C_ERROR_BUS_FAIL 0b00000001 +#define I2C_ERROR_NACK 0b00000010 +#define I2C_ERROR_NO_ANSWER 0b00010000 +#define I2C_ERROR_LOW_PRIO 0b00100000 + // Address of the device that is communicated with. uint8_t i2c_address; diff --git a/i2c.h b/i2c.h index 051ef92..e34d3f9 100644 --- a/i2c.h +++ b/i2c.h @@ -31,29 +31,6 @@ #define I2C_SLAVE_TX_BUFFER_SIZE 1 #endif /* I2C_SLAVE_MODE */ -#ifdef I2C_SLAVE_MODE - #define I2C_MODE 1 -#else - #define I2C_MODE 0 -#endif - -#define I2C_MODE_MASK 0b00001100 -#define I2C_MODE_SARP 0b00000000 // Start-Addr_R-Read-Stop: just read mode -#define I2C_MODE_SAWP 0b00000100 // Start-Addr_W-Write-Stop: just write mode -#define I2C_MODE_ENHA 0b00001000 // Start-Addr_W-WrPageAdr-rStart-Addr_R-Read-Stop -#define I2C_MODE_BUSY 0b01000000 // Transponder is busy -#define I2C_MODE_FREE 0b10111111 // Transponder is free - -// Transmission interrupted. -#define I2C_INTERRUPTED 0b10000000 -// Transmission not interrupted. -#define I2C_NOINTERRUPTED 0b01111111 - -#define I2C_ERROR_BUS_FAIL 0b00000001 -#define I2C_ERROR_NACK 0b00000010 -#define I2C_ERROR_NO_ANSWER 0b00010000 -#define I2C_ERROR_LOW_PRIO 0b00100000 - void i2c_init(uint8_t address); void i2c_send(uint8_t address, uint8_t* block, uint8_t tx_len);