i2c.h

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