i2c.h

Go to the documentation of this file.
00001 
00038 #ifndef DRV_I2C_H
00039 #define DRV_I2C_H
00040 
00041 #include "cfg/cfg_i2c.h"
00042 #include <cfg/compiler.h>
00043 
00044 #define I2C_READBIT BV(0)
00045 
00054 #define I2C_BACKEND_BUILTIN 0 
00055 #define I2C_BACKEND_BITBANG 1 
00056 /*\}*/
00057 
00058 
00067 void i2c_builtin_init(void);
00068 bool i2c_builtin_start_w(uint8_t id);
00069 bool i2c_builtin_start_r(uint8_t id);
00070 void i2c_builtin_stop(void);
00071 bool i2c_builtin_put(uint8_t _data);
00072 int i2c_builtin_get(bool ack);
00073 /*\}*/
00074 
00083 void i2c_bitbang_init(void);
00084 bool i2c_bitbang_start_w(uint8_t id);
00085 bool i2c_bitbang_start_r(uint8_t id);
00086 void i2c_bitbang_stop(void);
00087 bool i2c_bitbang_put(uint8_t _data);
00088 int i2c_bitbang_get(bool ack);
00089 /*\}*/
00090 
00091 #if CONFIG_I2C_BACKEND == I2C_BACKEND_BUILTIN
00092     #define i2c_init    i2c_builtin_init
00093     #define i2c_start_w i2c_builtin_start_w
00094     #define i2c_start_r i2c_builtin_start_r
00095     #define i2c_stop    i2c_builtin_stop
00096     #define i2c_put     i2c_builtin_put
00097     #define i2c_get     i2c_builtin_get
00098 #elif CONFIG_I2C_BACKEND == I2C_BACKEND_BITBANG
00099     #define i2c_init    i2c_bitbang_init
00100     #define i2c_start_w i2c_bitbang_start_w
00101     #define i2c_start_r i2c_bitbang_start_r
00102     #define i2c_stop    i2c_bitbang_stop
00103     #define i2c_put     i2c_bitbang_put
00104     #define i2c_get     i2c_bitbang_get
00105 #else
00106     #error Unsupported i2c backend.
00107 #endif
00108 
00109 bool i2c_send(const void *_buf, size_t count);
00110 bool i2c_recv(void *_buf, size_t count);
00111 
00112 #endif