← Back

Module i2c

struct I2cAddress(u16);

Source: i2c.joule:8

fn new_7bit(addr: u8) -> Self

Create 7-bit address

Source: i2c.joule:12

fn new_10bit(addr: u16) -> Self

Create 10-bit address

Source: i2c.joule:17

fn value(&self) -> u16

Get raw address value

Source: i2c.joule:22

fn is_10bit(&self) -> bool

Check if 10-bit address

Source: i2c.joule:27

fn from(addr: u8) -> Self

Source: i2c.joule:33

struct I2cBus

I2C bus handle

Source: i2c.joule:39

fn list() -> Result<Vec<u8>, DeviceError>

Source: i2c.joule:48

fn open(bus_num: u8) -> Result<Self, DeviceError>

Source: i2c.joule:69

fn open(path: *const i8, flags: i32) -> i32;

Source: i2c.joule:73

const O_RDWR: i32

Source: i2c.joule:76

fn bus_num(&self) -> u8

Get bus number

Source: i2c.joule:105

fn scan(&self) -> Result<Vec<I2cAddress>, DeviceError>

Source: i2c.joule:111

fn device_present(&self, addr: I2cAddress) -> Result<bool, DeviceError>

Source: i2c.joule:125

fn ioctl(fd: i32, request: u64, ...) -> i32;

Source: i2c.joule:129

const I2C_SLAVE: u64

Source: i2c.joule:132

fn read(fd: i32, buf: *mut u8, count: usize) -> isize;

Source: i2c.joule:143

fn device(&self, addr: I2cAddress) -> Result<I2cDevice, DeviceError>

Source: i2c.joule:158

fn ioctl(fd: i32, request: u64, ...) -> i32;

Source: i2c.joule:162

const I2C_SLAVE: u64

Source: i2c.joule:165

fn read(&self, addr: I2cAddress, buf: &mut [u8]) -> Result<usize, DeviceError>

Source: i2c.joule:186

fn write(&self, addr: I2cAddress, buf: &[u8]) -> Result<usize, DeviceError>

Source: i2c.joule:193

fn write_read(

Source: i2c.joule:200

fn drop(&mut self)

Source: i2c.joule:212

fn close(fd: i32) -> i32;

Source: i2c.joule:216

struct I2cDevice

I2C device handle (specific address on bus)

Source: i2c.joule:224

fn address(&self) -> I2cAddress

Get device address

Source: i2c.joule:232

fn read(&self, buf: &mut [u8]) -> Result<usize, DeviceError>

Source: i2c.joule:238

fn read(fd: i32, buf: *mut u8, count: usize) -> isize;

Source: i2c.joule:242

fn write(&self, buf: &[u8]) -> Result<usize, DeviceError>

Source: i2c.joule:260

fn write(fd: i32, buf: *const u8, count: usize) -> isize;

Source: i2c.joule:264

fn write_read(&self, write_buf: &[u8], read_buf: &mut [u8]) -> Result<(), DeviceError>

Source: i2c.joule:282

fn ioctl(fd: i32, request: u64, ...) -> i32;

Source: i2c.joule:286

const I2C_RDWR: u64

Source: i2c.joule:289

const I2C_M_RD: u16

Source: i2c.joule:290

struct I2cMsg

Source: i2c.joule:293

struct I2cRdwrIoctlData

Source: i2c.joule:301

fn read_reg(&self, reg: u8) -> Result<u8, DeviceError>

Source: i2c.joule:342

fn write_reg(&self, reg: u8, value: u8) -> Result<(), DeviceError>

Source: i2c.joule:350

fn read_regs(&self, start_reg: u8, buf: &mut [u8]) -> Result<(), DeviceError>

Source: i2c.joule:357

fn write_regs(&self, start_reg: u8, values: &[u8]) -> Result<(), DeviceError>

Source: i2c.joule:363

fn read_reg16_be(&self, reg: u8) -> Result<u16, DeviceError>

Source: i2c.joule:373

fn read_reg16_le(&self, reg: u8) -> Result<u16, DeviceError>

Source: i2c.joule:381

fn write_reg16_be(&self, reg: u8, value: u16) -> Result<(), DeviceError>

Source: i2c.joule:389

fn write_reg16_le(&self, reg: u8, value: u16) -> Result<(), DeviceError>

Source: i2c.joule:397

fn modify_reg<F>(&self, reg: u8, f: F) -> Result<(), DeviceError>

Source: i2c.joule:405

fn set_bits(&self, reg: u8, mask: u8) -> Result<(), DeviceError>

Source: i2c.joule:416

fn clear_bits(&self, reg: u8, mask: u8) -> Result<(), DeviceError>

Source: i2c.joule:422

const EEPROM_24C02: I2cAddress

EEPROM (24CXX series)

Source: i2c.joule:432

const EEPROM_24C04: I2cAddress

Source: i2c.joule:433

const EEPROM_24C08: I2cAddress

Source: i2c.joule:434

const LM75: I2cAddress

Temperature sensors

Source: i2c.joule:437

const TMP102: I2cAddress

Source: i2c.joule:438

const TMP117: I2cAddress

Source: i2c.joule:439

const MPU6050: I2cAddress

IMU sensors

Source: i2c.joule:442

const BMI160: I2cAddress

Source: i2c.joule:443

const LSM6DS3: I2cAddress

Source: i2c.joule:444

const BMP280: I2cAddress

Pressure sensors

Source: i2c.joule:447

const BME280: I2cAddress

Source: i2c.joule:448

const BMP388: I2cAddress

Source: i2c.joule:449

const DS1307: I2cAddress

Real-time clocks

Source: i2c.joule:452

const DS3231: I2cAddress

Source: i2c.joule:453

const PCF8523: I2cAddress

Source: i2c.joule:454

const ADS1115: I2cAddress

ADCs

Source: i2c.joule:457

const MCP3421: I2cAddress

Source: i2c.joule:458

const MCP4725: I2cAddress

DACs

Source: i2c.joule:461

const PCF8574: I2cAddress

IO Expanders

Source: i2c.joule:464

const MCP23017: I2cAddress

Source: i2c.joule:465

const SSD1306: I2cAddress

OLED displays

Source: i2c.joule:468