Rework force system

This commit is contained in:
Zaltora 2017-02-04 10:02:11 +01:00 committed by Gogs
parent c5b480995d
commit 79a0b2d6b6
15 changed files with 67 additions and 56 deletions

View file

@ -55,7 +55,7 @@ const float ads111x_gain_values[] = {
static uint16_t read_reg(uint8_t addr, uint8_t reg) static uint16_t read_reg(uint8_t addr, uint8_t reg)
{ {
uint16_t res = 0; uint16_t res = 0;
if (i2c_slave_read(addr, &reg, (uint8_t *)&res, 2, false)) if (i2c_slave_read(addr, &reg, (uint8_t *)&res, 2))
debug("Could not read register %d", reg); debug("Could not read register %d", reg);
//debug("Read %d: 0x%04x", reg, res); //debug("Read %d: 0x%04x", reg, res);
return res; return res;
@ -65,7 +65,7 @@ static void write_reg(uint8_t addr, uint8_t reg, uint16_t val)
{ {
//debug("Write %d: 0x%04x", reg, val); //debug("Write %d: 0x%04x", reg, val);
uint8_t buf[2] = { val >> 8, val}; uint8_t buf[2] = { val >> 8, val};
if (i2c_slave_write(addr, &reg, buf, 2, false)) if (i2c_slave_write(addr, &reg, buf, 2))
debug("Could not write 0x%04x to register %d", val, reg); debug("Could not write 0x%04x to register %d", val, reg);
} }

View file

@ -44,7 +44,7 @@ static int bmp180_readRegister16(uint8_t reg, int16_t *r)
uint8_t d[] = { 0, 0 }; uint8_t d[] = { 0, 0 };
int error ; int error ;
if ((error = i2c_slave_read(BMP180_DEVICE_ADDRESS, &reg, d, 2, false))) if ((error = i2c_slave_read(BMP180_DEVICE_ADDRESS, &reg, d, 2)))
return error; return error;
*r = ((int16_t)d[0] << 8) | (d[1]); *r = ((int16_t)d[0] << 8) | (d[1]);
@ -55,7 +55,7 @@ static int bmp180_start_Messurement(uint8_t cmd)
{ {
uint8_t reg = BMP180_CONTROL_REG ; uint8_t reg = BMP180_CONTROL_REG ;
return i2c_slave_write(BMP180_DEVICE_ADDRESS, &reg, &cmd, 1, false); return i2c_slave_write(BMP180_DEVICE_ADDRESS, &reg, &cmd, 1);
} }
static bool bmp180_get_uncompensated_temperature(int32_t *ut) static bool bmp180_get_uncompensated_temperature(int32_t *ut)
@ -96,7 +96,7 @@ static bool bmp180_get_uncompensated_pressure(uint8_t oss, uint32_t *up)
uint8_t d[] = { 0, 0, 0 }; uint8_t d[] = { 0, 0, 0 };
uint8_t reg = BMP180_OUT_MSB_REG; uint8_t reg = BMP180_OUT_MSB_REG;
if (i2c_slave_read(BMP180_DEVICE_ADDRESS, &reg, d, 3, false)) if (i2c_slave_read(BMP180_DEVICE_ADDRESS, &reg, d, 3))
return false; return false;
uint32_t r = ((uint32_t)d[0] << 16) | ((uint32_t)d[1] << 8) | d[2]; uint32_t r = ((uint32_t)d[0] << 16) | ((uint32_t)d[1] << 8) | d[2];
@ -143,7 +143,7 @@ bool bmp180_is_available()
{ {
uint8_t id; uint8_t id;
uint8_t reg = BMP180_VERSION_REG; uint8_t reg = BMP180_VERSION_REG;
if (i2c_slave_read(BMP180_DEVICE_ADDRESS, &reg, &id, 1, false)) if (i2c_slave_read(BMP180_DEVICE_ADDRESS, &reg, &id, 1))
return false; return false;
return id == BMP180_CHIP_ID; return id == BMP180_CHIP_ID;
} }

View file

@ -69,7 +69,7 @@ void bmp280_init_default_params(bmp280_params_t *params)
static bool read_register16(uint8_t i2c_addr, uint8_t addr, uint16_t *value) static bool read_register16(uint8_t i2c_addr, uint8_t addr, uint16_t *value)
{ {
uint8_t d[] = {0, 0}; uint8_t d[] = {0, 0};
if (!i2c_slave_read(i2c_addr, &addr, d, sizeof(d), false)) { if (!i2c_slave_read(i2c_addr, &addr, d, sizeof(d))) {
*value = d[0] | (d[1] << 8); *value = d[0] | (d[1] << 8);
return true; return true;
} }
@ -78,7 +78,7 @@ static bool read_register16(uint8_t i2c_addr, uint8_t addr, uint16_t *value)
static inline int read_data(uint8_t i2c_addr, uint8_t addr, uint8_t *value, uint8_t len) static inline int read_data(uint8_t i2c_addr, uint8_t addr, uint8_t *value, uint8_t len)
{ {
return i2c_slave_read(i2c_addr, &addr, value, len, false); return i2c_slave_read(i2c_addr, &addr, value, len);
} }
static bool read_calibration_data(bmp280_t *dev) static bool read_calibration_data(bmp280_t *dev)
@ -146,7 +146,7 @@ static bool read_hum_calibration_data(bmp280_t *dev)
static int write_register8(uint8_t i2c_addr, uint8_t addr, uint8_t value) static int write_register8(uint8_t i2c_addr, uint8_t addr, uint8_t value)
{ {
return i2c_slave_write(i2c_addr, &addr, &value, 1, false); return i2c_slave_write(i2c_addr, &addr, &value, 1);
} }
bool bmp280_init(bmp280_t *dev, bmp280_params_t *params) bool bmp280_init(bmp280_t *dev, bmp280_params_t *params)

View file

@ -43,7 +43,7 @@ static uint8_t dec2bcd(uint8_t val)
static uint8_t read_register(uint8_t reg) static uint8_t read_register(uint8_t reg)
{ {
uint8_t val; uint8_t val;
i2c_slave_read(ADDR, &reg, &val, 1, false); i2c_slave_read(ADDR, &reg, &val, 1);
return val; return val;
} }
@ -51,7 +51,7 @@ static void update_register(uint8_t reg, uint8_t mask, uint8_t val)
{ {
uint8_t buf = (read_register(reg) & mask) | val; uint8_t buf = (read_register(reg) & mask) | val;
i2c_slave_write(ADDR, &reg, &buf, 1, false); i2c_slave_write(ADDR, &reg, &buf, 1);
} }
void ds1307_start(bool start) void ds1307_start(bool start)
@ -69,7 +69,7 @@ void ds1307_get_time(struct tm *time)
uint8_t buf[7]; uint8_t buf[7];
uint8_t reg = TIME_REG ; uint8_t reg = TIME_REG ;
i2c_slave_read(ADDR, &reg , buf, 7 , false); i2c_slave_read(ADDR, &reg , buf, 7);
time->tm_sec = bcd2dec(buf[0] & SECONDS_MASK); time->tm_sec = bcd2dec(buf[0] & SECONDS_MASK);
time->tm_min = bcd2dec(buf[1]); time->tm_min = bcd2dec(buf[1]);
@ -99,7 +99,7 @@ void ds1307_set_time(const struct tm *time)
buf[6] = dec2bcd(time->tm_mon + 1); buf[6] = dec2bcd(time->tm_mon + 1);
buf[7] = dec2bcd(time->tm_year - 2000); buf[7] = dec2bcd(time->tm_year - 2000);
i2c_slave_write(ADDR, &buf[0], &buf[1] , 7, false); i2c_slave_write(ADDR, &buf[0], &buf[1] , 7);
} }
void ds1307_enable_squarewave(bool enable) void ds1307_enable_squarewave(bool enable)
@ -137,7 +137,7 @@ int ds1307_read_ram(uint8_t offset, uint8_t *buf, uint8_t len)
if (offset + len > RAM_SIZE) return false; if (offset + len > RAM_SIZE) return false;
uint8_t reg = RAM_REG + offset ; uint8_t reg = RAM_REG + offset ;
return i2c_slave_read(ADDR, &reg, buf, len, false); return i2c_slave_read(ADDR, &reg, buf, len);
} }
int ds1307_write_ram(uint8_t offset, uint8_t *buf, uint8_t len) int ds1307_write_ram(uint8_t offset, uint8_t *buf, uint8_t len)
@ -145,5 +145,5 @@ int ds1307_write_ram(uint8_t offset, uint8_t *buf, uint8_t len)
if (offset + len > RAM_SIZE) return false; if (offset + len > RAM_SIZE) return false;
uint8_t reg = RAM_REG + offset ; uint8_t reg = RAM_REG + offset ;
return i2c_slave_write(ADDR, &reg, buf, len, false); return i2c_slave_write(ADDR, &reg, buf, len);
} }

View file

@ -30,7 +30,7 @@ static inline uint8_t bcdToDec(uint8_t bcd)
*/ */
static inline int ds3231_send(uint8_t reg, uint8_t *data, uint8_t len) static inline int ds3231_send(uint8_t reg, uint8_t *data, uint8_t len)
{ {
return i2c_slave_write(DS3231_ADDR, &reg, data, len, false); return i2c_slave_write(DS3231_ADDR, &reg, data, len);
} }
/* Read a number of bytes from the rtc over i2c /* Read a number of bytes from the rtc over i2c
@ -38,7 +38,7 @@ static inline int ds3231_send(uint8_t reg, uint8_t *data, uint8_t len)
*/ */
static inline int ds3231_recv(uint8_t reg, uint8_t *data, uint8_t len) static inline int ds3231_recv(uint8_t reg, uint8_t *data, uint8_t len)
{ {
return i2c_slave_read(DS3231_ADDR, &reg, data, len, false); return i2c_slave_read(DS3231_ADDR, &reg, data, len);
} }
int ds3231_setTime(struct tm *time) int ds3231_setTime(struct tm *time)

View file

@ -54,13 +54,13 @@ static hmc5883l_operating_mode_t current_mode;
static inline void write_register(uint8_t reg, uint8_t val) static inline void write_register(uint8_t reg, uint8_t val)
{ {
i2c_slave_write(ADDR, &reg, &val, 1, false); i2c_slave_write(ADDR, &reg, &val, 1);
} }
static inline uint8_t read_register(uint8_t reg) static inline uint8_t read_register(uint8_t reg)
{ {
uint8_t res; uint8_t res;
i2c_slave_read(ADDR, &reg, &res, 1, false); i2c_slave_read(ADDR, &reg, &res, 1);
return res; return res;
} }
@ -82,7 +82,7 @@ uint32_t hmc5883l_get_id()
{ {
uint32_t res = 0; uint32_t res = 0;
uint8_t reg = REG_ID_A; uint8_t reg = REG_ID_A;
i2c_slave_read(ADDR, &reg, (uint8_t *)&res, 3, false); i2c_slave_read(ADDR, &reg, (uint8_t *)&res, 3);
return res; return res;
} }
@ -165,7 +165,7 @@ bool hmc5883l_get_raw_data(hmc5883l_raw_data_t *data)
} }
uint8_t buf[6]; uint8_t buf[6];
uint8_t reg = REG_DX_H; uint8_t reg = REG_DX_H;
i2c_slave_read(ADDR, &reg, buf, 6, false); i2c_slave_read(ADDR, &reg, buf, 6);
data->x = ((int16_t)buf[REG_DX_H - REG_DX_H] << 8) | buf[REG_DX_L - REG_DX_H]; data->x = ((int16_t)buf[REG_DX_H - REG_DX_H] << 8) | buf[REG_DX_L - REG_DX_H];
data->y = ((int16_t)buf[REG_DY_H - REG_DX_H] << 8) | buf[REG_DY_L - REG_DX_H]; data->y = ((int16_t)buf[REG_DY_H - REG_DX_H] << 8) | buf[REG_DY_L - REG_DX_H];
data->z = ((int16_t)buf[REG_DZ_H - REG_DX_H] << 8) | buf[REG_DZ_L - REG_DX_H]; data->z = ((int16_t)buf[REG_DZ_H - REG_DX_H] << 8) | buf[REG_DZ_L - REG_DX_H];

View file

@ -39,6 +39,7 @@
static bool started; static bool started;
static bool flag; static bool flag;
static bool force;
static uint8_t freq ; static uint8_t freq ;
static uint8_t g_scl_pin; static uint8_t g_scl_pin;
static uint8_t g_sda_pin; static uint8_t g_sda_pin;
@ -232,7 +233,13 @@ uint8_t i2c_read(bool ack)
return byte; return byte;
} }
static int i2c_bus_test(bool force) void i2c_force_bus(bool state)
{
force = state ;
}
static int i2c_bus_test()
{ {
taskENTER_CRITICAL(); // To prevent task swaping after checking flag and before set it! taskENTER_CRITICAL(); // To prevent task swaping after checking flag and before set it!
bool status = flag ; // get current status bool status = flag ; // get current status
@ -261,9 +268,9 @@ static int i2c_bus_test(bool force)
return 0 ; return 0 ;
} }
int i2c_slave_write(uint8_t slave_addr, uint8_t *data, uint8_t *buf, uint32_t len, bool force) int i2c_slave_write(uint8_t slave_addr, uint8_t *data, uint8_t *buf, uint32_t len)
{ {
if(i2c_bus_test(force)) if(i2c_bus_test())
return -EBUSY ; return -EBUSY ;
i2c_start(); i2c_start();
if (!i2c_write(slave_addr << 1)) if (!i2c_write(slave_addr << 1))
@ -287,9 +294,9 @@ int i2c_slave_write(uint8_t slave_addr, uint8_t *data, uint8_t *buf, uint32_t le
return -EIO; return -EIO;
} }
int i2c_slave_read(uint8_t slave_addr, uint8_t *data, uint8_t *buf, uint32_t len, bool force) int i2c_slave_read(uint8_t slave_addr, uint8_t *data, uint8_t *buf, uint32_t len)
{ {
if(i2c_bus_test(force)) if(i2c_bus_test())
return -EBUSY ; return -EBUSY ;
if(data != NULL) { if(data != NULL) {
i2c_start(); i2c_start();

View file

@ -102,16 +102,21 @@ bool i2c_status(void);
//Level 1 API (Don't need functions above) //Level 1 API (Don't need functions above)
/**
* This function will allow you to force a transmission I2C, canceled the current one.
* @param state Force the next I2C transmission if true (Use with precaution)
*/
void i2c_force_bus(bool state);
/** /**
* Write 'len' bytes from 'buf' to slave at 'data' register adress . * Write 'len' bytes from 'buf' to slave at 'data' register adress .
* @param slave_addr slave device address * @param slave_addr slave device address
* @param data Pointer to register address to send if non-null * @param data Pointer to register address to send if non-null
* @param buf Pointer to data buffer * @param buf Pointer to data buffer
* @param len Number of byte to send * @param len Number of byte to send
* @param force Force transaction if bus busy (use with precaution)
* @return Non-Zero if error occured * @return Non-Zero if error occured
*/ */
int i2c_slave_write(uint8_t slave_addr, uint8_t *data, uint8_t *buf, uint32_t len, bool force); int i2c_slave_write(uint8_t slave_addr, uint8_t *data, uint8_t *buf, uint32_t len);
/** /**
* Issue a send operation of 'data' register adress, followed by reading 'len' bytes * Issue a send operation of 'data' register adress, followed by reading 'len' bytes
@ -120,10 +125,9 @@ int i2c_slave_write(uint8_t slave_addr, uint8_t *data, uint8_t *buf, uint32_t le
* @param data Pointer to register address to send if non-null * @param data Pointer to register address to send if non-null
* @param buf Pointer to data buffer * @param buf Pointer to data buffer
* @param len Number of byte to read * @param len Number of byte to read
* @param force Force transaction if bus busy (use with precaution)
* @return Non-Zero if error occured * @return Non-Zero if error occured
*/ */
int i2c_slave_read(uint8_t slave_addr, uint8_t *data, uint8_t *buf, uint32_t len, bool force); int i2c_slave_read(uint8_t slave_addr, uint8_t *data, uint8_t *buf, uint32_t len);
#ifdef __cplusplus #ifdef __cplusplus
} }

View file

@ -24,13 +24,13 @@ static int _wireWriteRegister (uint8_t addr, uint8_t reg, uint16_t value)
d[1] = value & 0x00FF; d[1] = value & 0x00FF;
d[0] = (value >> 8) & 0x00FF; d[0] = (value >> 8) & 0x00FF;
debug("Data write to %02X : %02X+%04X\n",addr,reg,value); debug("Data write to %02X : %02X+%04X\n",addr,reg,value);
return i2c_slave_write(addr, &reg, d, sizeof(d), false); return i2c_slave_write(addr, &reg, d, sizeof(d));
} }
static int _wireReadRegister(uint8_t addr, uint8_t reg, uint16_t *value) static int _wireReadRegister(uint8_t addr, uint8_t reg, uint16_t *value)
{ {
uint8_t d[] = {0, 0}; uint8_t d[] = {0, 0};
int error = i2c_slave_read(addr, &reg, d, sizeof(d), false) int error = i2c_slave_read(addr, &reg, d, sizeof(d))
debug("Data read from %02X: %02X+%04X\n",addr,reg,*value); debug("Data read from %02X: %02X+%04X\n",addr,reg,*value);
*value = d[1] | (d[0] << 8); *value = d[1] | (d[0] << 8);
return error; return error;

View file

@ -14,7 +14,7 @@
static void read_data(uint8_t addr, uint8_t *buf, uint8_t size) static void read_data(uint8_t addr, uint8_t *buf, uint8_t size)
{ {
i2c_slave_read(addr, NULL, buf, size, false); i2c_slave_read(addr, NULL, buf, size);
} }
bool mcp4725_eeprom_busy(uint8_t addr) bool mcp4725_eeprom_busy(uint8_t addr)
@ -41,7 +41,7 @@ void mcp4725_set_power_mode(uint8_t addr, mcp4725_power_mode_t mode, bool eeprom
value >> 4, value >> 4,
value << 4 value << 4
}; };
i2c_slave_write(addr, &data[0], &data[1], 2, false); i2c_slave_write(addr, &data[0], &data[1], 2);
} }
uint16_t mcp4725_get_raw_output(uint8_t addr, bool eeprom) uint16_t mcp4725_get_raw_output(uint8_t addr, bool eeprom)
@ -61,7 +61,7 @@ void mcp4725_set_raw_output(uint8_t addr, uint16_t value, bool eeprom)
value >> 4, value >> 4,
value << 4 value << 4
}; };
i2c_slave_write(addr, &data[0], &data[1], 2, false); i2c_slave_write(addr, &data[0], &data[1], 2);
} }

View file

@ -29,7 +29,7 @@
static inline int reset(uint8_t addr) static inline int reset(uint8_t addr)
{ {
uint8_t buf[1] = { RESET }; uint8_t buf[1] = { RESET };
return i2c_slave_write(addr, NULL, buf, 1, false); return i2c_slave_write(addr, NULL, buf, 1);
} }
static inline bool read_prom(ms561101ba03_t *dev) static inline bool read_prom(ms561101ba03_t *dev)
@ -37,32 +37,32 @@ static inline bool read_prom(ms561101ba03_t *dev)
uint8_t tmp[2] = { 0, 0 }; uint8_t tmp[2] = { 0, 0 };
uint8_t reg = 0xA2 ; uint8_t reg = 0xA2 ;
if (i2c_slave_read(dev->addr, &reg, tmp, 2, false)) if (i2c_slave_read(dev->addr, &reg, tmp, 2))
return false; return false;
dev->config_data.sens = tmp[0] << 8 | tmp[1]; dev->config_data.sens = tmp[0] << 8 | tmp[1];
reg = 0xA4 ; reg = 0xA4 ;
if (i2c_slave_read(dev->addr, &reg, tmp, 2, false)) if (i2c_slave_read(dev->addr, &reg, tmp, 2))
return false; return false;
dev->config_data.off = tmp[0] << 8 | tmp[1]; dev->config_data.off = tmp[0] << 8 | tmp[1];
reg = 0xA6 ; reg = 0xA6 ;
if (i2c_slave_read(dev->addr, &reg, tmp, 2, false)) if (i2c_slave_read(dev->addr, &reg, tmp, 2))
return false; return false;
dev->config_data.tcs = tmp[0] << 8 | tmp[1]; dev->config_data.tcs = tmp[0] << 8 | tmp[1];
reg = 0xA8 ; reg = 0xA8 ;
if (i2c_slave_read(dev->addr, &reg, tmp, 2, false)) if (i2c_slave_read(dev->addr, &reg, tmp, 2))
return false; return false;
dev->config_data.tco = tmp[0] << 8 | tmp[1]; dev->config_data.tco = tmp[0] << 8 | tmp[1];
reg = 0xAA ; reg = 0xAA ;
if (i2c_slave_read(dev->addr, &reg, tmp, 2, false)) if (i2c_slave_read(dev->addr, &reg, tmp, 2))
return false; return false;
dev->config_data.t_ref = tmp[0] << 8 | tmp[1]; dev->config_data.t_ref = tmp[0] << 8 | tmp[1];
reg = 0xAC ; reg = 0xAC ;
if (i2c_slave_read(dev->addr, &reg, tmp, 2, false)) if (i2c_slave_read(dev->addr, &reg, tmp, 2))
return false; return false;
dev->config_data.tempsens = tmp[0] << 8 | tmp[1]; dev->config_data.tempsens = tmp[0] << 8 | tmp[1];
@ -72,13 +72,13 @@ static inline bool read_prom(ms561101ba03_t *dev)
static inline int start_pressure_conversion(ms561101ba03_t *dev) //D1 static inline int start_pressure_conversion(ms561101ba03_t *dev) //D1
{ {
uint8_t buf = CONVERT_D1 + dev->osr; uint8_t buf = CONVERT_D1 + dev->osr;
return i2c_slave_write(dev->addr, NULL, &buf, 1, false); return i2c_slave_write(dev->addr, NULL, &buf, 1);
} }
static inline int start_temperature_conversion(ms561101ba03_t *dev) //D2 static inline int start_temperature_conversion(ms561101ba03_t *dev) //D2
{ {
uint8_t buf = CONVERT_D2 + dev->osr; uint8_t buf = CONVERT_D2 + dev->osr;
return i2c_slave_write(dev->addr, NULL, &buf, 1, false); return i2c_slave_write(dev->addr, NULL, &buf, 1);
} }
static inline bool read_adc(uint8_t addr, uint32_t *result) static inline bool read_adc(uint8_t addr, uint32_t *result)
@ -86,7 +86,7 @@ static inline bool read_adc(uint8_t addr, uint32_t *result)
*result = 0; *result = 0;
uint8_t tmp[3]; uint8_t tmp[3];
uint8_t reg = 0x00 ; uint8_t reg = 0x00 ;
if (i2c_slave_read(addr, &reg, tmp, 3, false)) if (i2c_slave_read(addr, &reg, tmp, 3))
return false; return false;
*result = (tmp[0] << 16) | (tmp[1] << 8) | tmp[2]; *result = (tmp[0] << 16) | (tmp[1] << 8) | tmp[2];

View file

@ -61,14 +61,14 @@ inline static uint32_t round_div(uint32_t x, uint32_t y)
inline static void write_reg(uint8_t addr, uint8_t reg, uint8_t val) inline static void write_reg(uint8_t addr, uint8_t reg, uint8_t val)
{ {
if (i2c_slave_write(addr, &reg, &val, 1, false)) if (i2c_slave_write(addr, &reg, &val, 1))
debug("Could not write 0x%02x to 0x%02x, addr = 0x%02x", reg, val, addr); debug("Could not write 0x%02x to 0x%02x, addr = 0x%02x", reg, val, addr);
} }
inline static uint8_t read_reg(uint8_t addr, uint8_t reg) inline static uint8_t read_reg(uint8_t addr, uint8_t reg)
{ {
uint8_t res = 0; uint8_t res = 0;
if (i2c_slave_read(addr, &reg, &res, 1, false)) if (i2c_slave_read(addr, &reg, &res, 1))
debug("Could not read from 0x%02x, addr = 0x%02x", reg, addr); debug("Could not read from 0x%02x, addr = 0x%02x", reg, addr);
return res; return res;
} }
@ -192,7 +192,7 @@ void pca9685_set_pwm_value(uint8_t addr, uint8_t channel, uint16_t val)
{ {
// Normal // Normal
uint8_t buf[4] = { 0, 0, val, val >> 8 }; uint8_t buf[4] = { 0, 0, val, val >> 8 };
i2c_slave_write(addr, &reg, buf, 4, false); i2c_slave_write(addr, &reg, buf, 4);
} }
else else
{ {

View file

@ -4,7 +4,7 @@
uint8_t pcf8574_port_read(uint8_t addr) uint8_t pcf8574_port_read(uint8_t addr)
{ {
uint8_t res; uint8_t res;
if (i2c_slave_read(addr, NULL, &res, 1, false)) if (i2c_slave_read(addr, NULL, &res, 1))
return 0; return 0;
return res; return res;
} }
@ -14,7 +14,7 @@ size_t pcf8574_port_read_buf(uint8_t addr, void *buf, size_t len)
if (!len || !buf) return 0; if (!len || !buf) return 0;
uint8_t *_buf = (uint8_t *)buf; uint8_t *_buf = (uint8_t *)buf;
if (i2c_slave_read(addr, NULL, _buf, len, false)) if (i2c_slave_read(addr, NULL, _buf, len))
return 0; return 0;
return len; return len;
} }
@ -24,14 +24,14 @@ size_t pcf8574_port_write_buf(uint8_t addr, void *buf, size_t len)
if (!len || !buf) return 0; if (!len || !buf) return 0;
uint8_t *_buf = (uint8_t *)buf; uint8_t *_buf = (uint8_t *)buf;
if (i2c_slave_write(addr, NULL, _buf, len, false)) if (i2c_slave_write(addr, NULL, _buf, len))
return 0; return 0;
return len; return len;
} }
void pcf8574_port_write(uint8_t addr, uint8_t value) void pcf8574_port_write(uint8_t addr, uint8_t value)
{ {
i2c_slave_write(addr, NULL, &value, 1, false); i2c_slave_write(addr, NULL, &value, 1);
} }
bool pcf8574_gpio_read(uint8_t addr, uint8_t num) bool pcf8574_gpio_read(uint8_t addr, uint8_t num)

View file

@ -92,7 +92,7 @@
#if (SSD1306_I2C_SUPPORT) #if (SSD1306_I2C_SUPPORT)
static int inline i2c_send(const ssd1306_t *dev, uint8_t reg, uint8_t* data, uint8_t len) static int inline i2c_send(const ssd1306_t *dev, uint8_t reg, uint8_t* data, uint8_t len)
{ {
return i2c_slave_write(dev->addr, &reg, data, len, false); return i2c_slave_write(dev->addr, &reg, data, len);
} }
#endif #endif

View file

@ -99,7 +99,7 @@
static int write_register(uint8_t i2c_addr, uint8_t reg, uint8_t value) static int write_register(uint8_t i2c_addr, uint8_t reg, uint8_t value)
{ {
reg = TSL2561_REG_COMMAND | reg; reg = TSL2561_REG_COMMAND | reg;
return i2c_slave_write(i2c_addr, &reg, &value, 1, false); return i2c_slave_write(i2c_addr, &reg, &value, 1);
} }
static uint8_t read_register(uint8_t i2c_addr, uint8_t reg) static uint8_t read_register(uint8_t i2c_addr, uint8_t reg)
@ -107,7 +107,7 @@ static uint8_t read_register(uint8_t i2c_addr, uint8_t reg)
uint8_t data[1]; uint8_t data[1];
reg = TSL2561_REG_COMMAND | reg; reg = TSL2561_REG_COMMAND | reg;
if (i2c_slave_read(i2c_addr, &reg , data, 1, false)) if (i2c_slave_read(i2c_addr, &reg , data, 1))
{ {
printf("Error in tsl261 read_register\n"); printf("Error in tsl261 read_register\n");
} }
@ -121,7 +121,7 @@ static uint16_t read_register_16(uint8_t i2c_addr, uint8_t low_register_addr)
uint8_t data[2]; uint8_t data[2];
low_register_addr = TSL2561_REG_COMMAND | TSL2561_READ_WORD | low_register_addr; low_register_addr = TSL2561_REG_COMMAND | TSL2561_READ_WORD | low_register_addr;
if (i2c_slave_read(i2c_addr, &low_register_addr, data, 2, false)) if (i2c_slave_read(i2c_addr, &low_register_addr, data, 2))
{ {
printf("Error with i2c_slave_read in read_register_16\n"); printf("Error with i2c_slave_read in read_register_16\n");
} }