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