static int lm75_readb16(FAR struct lm75_dev_s *priv, uint8_t regaddr, FAR b16_t *regvalue) { uint8_t buffer[2]; int ret; /* Write the register address */ I2C_SETADDRESS(priv->i2c, priv->addr, 7); ret = I2C_WRITE(priv->i2c, ®addr, 1); if (ret < 0) { sndbg("I2C_WRITE failed: %d\n", ret); return ret; } /* Restart and read 16-bits from the register (discarding 7) */ ret = I2C_READ(priv->i2c, buffer, 2); if (ret < 0) { sndbg("I2C_READ failed: %d\n", ret); return ret; } /* Data format is: TTTTTTTT Txxxxxxx where TTTTTTTTT is a nine-bit, * signed temperature value with LSB = 0.5 degrees centigrade. So the * raw data is b8_t */ *regvalue = b8tob16((b8_t)buffer[0] << 8 | (b8_t)buffer[1]); sndbg("addr: %02x value: %08x ret: %d\n", regaddr, *regvalue, ret); return OK; }
static int lm75_readb16(FAR struct lm75_dev_s *priv, uint8_t regaddr, FAR b16_t *regvalue) { uint8_t buffer[2]; int ret; /* Write the register address */ ret = lm75_i2c_write(priv, ®addr, 1); if (ret < 0) { snerr("ERROR: i2c_write failed: %d\n", ret); return ret; } /* Restart and read 16-bits from the register (discarding 7) */ ret = lm75_i2c_read(priv, buffer, 2); if (ret < 0) { snerr("ERROR: i2c_read failed: %d\n", ret); return ret; } /* Data format is: TTTTTTTT Txxxxxxx where TTTTTTTTT is a nine-bit, * signed temperature value with LSB = 0.5 degrees centigrade. So the * raw data is b8_t */ *regvalue = b8tob16((b8_t)buffer[0] << 8 | (b8_t)buffer[1]); sninfo("addr: %02x value: %08x ret: %d\n", regaddr, *regvalue, ret); return OK; }