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