i2c.h

Go to the documentation of this file.
00001 
00043 #ifndef DRV_I2C_H
00044 #define DRV_I2C_H
00045 
00046 #include "cfg/cfg_i2c.h"
00047 #include <cfg/compiler.h>
00048 
00049 #define I2C_READBIT BV(0)
00050 
00060 #define I2C_BACKEND_BUILTIN 0 ///< Uses cpu builtin i2c driver
00061 #define I2C_BACKEND_BITBANG 1 ///< Uses emulated bitbang driver
00062 
00063 
00072 void i2c_builtin_init(void);
00073 bool i2c_builtin_start_w(uint8_t id);
00074 bool i2c_builtin_start_r(uint8_t id);
00075 void i2c_builtin_stop(void);
00076 bool i2c_builtin_put(uint8_t _data);
00077 int i2c_builtin_get(bool ack);
00078 /*\}*/
00079 
00088 void i2c_bitbang_init(void);
00089 bool i2c_bitbang_start_w(uint8_t id);
00090 bool i2c_bitbang_start_r(uint8_t id);
00091 void i2c_bitbang_stop(void);
00092 bool i2c_bitbang_put(uint8_t _data);
00093 int i2c_bitbang_get(bool ack);
00094 /*\}*/
00095 
00096 #if CONFIG_I2C_BACKEND == I2C_BACKEND_BUILTIN
00097     #define i2c_init    i2c_builtin_init
00098     #define i2c_start_w i2c_builtin_start_w
00099     #define i2c_start_r i2c_builtin_start_r
00100     #define i2c_stop    i2c_builtin_stop
00101     #define i2c_put     i2c_builtin_put
00102     #define i2c_get     i2c_builtin_get
00103 #elif CONFIG_I2C_BACKEND == I2C_BACKEND_BITBANG
00104     #define i2c_init    i2c_bitbang_init
00105     #define i2c_start_w i2c_bitbang_start_w
00106     #define i2c_start_r i2c_bitbang_start_r
00107     #define i2c_stop    i2c_bitbang_stop
00108     #define i2c_put     i2c_bitbang_put
00109     #define i2c_get     i2c_bitbang_get
00110 #else
00111     #error Unsupported i2c backend.
00112 #endif
00113 
00114 bool i2c_send(const void *_buf, size_t count);
00115 bool i2c_recv(void *_buf, size_t count);
00116 
00117 #endif