X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fhw%2Fhw_i2c_bitbang.h;h=6aabb46d6a1bb063eaeff211f73b13631b1c1ba7;hb=refs%2Fheads%2Fmaster;hp=18ad79faa551a78289880a700b91264252faa918;hpb=4d6ca1d5704c113795418f5c0edaef83db3de96a;p=bertos.git diff --git a/bertos/hw/hw_i2c_bitbang.h b/bertos/hw/hw_i2c_bitbang.h index 18ad79fa..6aabb46d 100644 --- a/bertos/hw/hw_i2c_bitbang.h +++ b/bertos/hw/hw_i2c_bitbang.h @@ -34,7 +34,6 @@ * \brief Macro for I2C bitbang operation. * * - * \version $Id$ * * \author Francesco Sacchi */ @@ -44,10 +43,10 @@ #warning TODO:This is an example implementation, you must implement it! -#define SDA_HI /* Implement me:Set SDA High by setting SDA pin as input */ -#define SDA_LO /* Implement me:Set SDA Low by setting SDA pin as open collector output */ -#define SCL_HI /* Implement me:Set SCL High by setting SCL pin as input */ -#define SCL_LO /* Implement me:Set SCL Low by setting SCL pin as open collector output */ +#define SDA_HI do { /* Implement me:Set SDA High by setting SDA pin as input */ } while (0) +#define SDA_LO do { /* Implement me:Set SDA Low by setting SDA pin as open collector output */ } while (0) +#define SCL_HI do { /* Implement me:Set SCL High by setting SCL pin as input */ } while (0) +#define SCL_LO do { /* Implement me:Set SCL Low by setting SCL pin as open collector output */ } while (0) #define SCL_IN (true) /* Implement me: read SDA pin state */ @@ -56,11 +55,73 @@ /** * This macro should set SDA and SCL lines as input. */ -#define I2C_BITBANG_HW_INIT /* Implement me! */ +#define I2C_BITBANG_HW_INIT do { /* Implement me! */ } while (0) /** * Half bit delay routine used to generate the correct timings. */ -#define I2C_HALFBIT_DELAY() /* Implement me! */ +#define I2C_HALFBIT_DELAY() do { /* Implement me! */ } while (0) + + +/* + * New api + */ +#include + +INLINE void i2c_sdaHi(int dev) +{ + (void)(dev); + /* Implement me:Set SDA High by setting SDA pin as input */ +} + +INLINE void i2c_sdaLo(int dev) +{ + (void)(dev); + /* Implement me:Set SDA Low by setting SDA pin as open collector output */ +} + +INLINE void i2c_sclHi(int dev) +{ + (void)(dev); + /* Implement me:Set SCL High by setting SCL pin as input */ +} + +INLINE void i2c_sclLo(int dev) +{ + (void)(dev); + /* Implement me:Set SCL Low by setting SCL pin as open collector output */ +} + +INLINE bool i2c_sdaIn(int dev) +{ + (void)(dev); + /* Implement me: read SDA pin state */ + return true; +} + +INLINE bool i2c_sclIn(int dev) +{ + (void)(dev); + /* Implement me: read SCL pin state */ + return true; +} + +/** + * Half bit delay routine used to generate the correct timings. + */ +INLINE void i2c_halfbitDelay(int dev) +{ + (void)(dev); + /* Implement me! */ +} + +/** + * This macro should set SDA and SCL lines as input. + */ +INLINE void i2c_bitbangInit(int dev) +{ + (void)(dev); + /* Implement me! */ +} #endif /* HW_I2C_BITBANG_H */