from enum import IntFlag from typing import Optional, Sequence, List, Type, SupportsBytes, Iterable from typing import Union as _UnionT from types import TracebackType from ctypes import c_uint32, c_uint8, c_uint16, pointer, Structure, Array, Union I2C_SLAVE: int I2C_SLAVE_FORCE: int I2C_FUNCS: int I2C_RDWR: int I2C_SMBUS: int I2C_PEC: int I2C_SMBUS_WRITE: int I2C_SMBUS_READ: int I2C_SMBUS_QUICK: int I2C_SMBUS_BYTE: int I2C_SMBUS_BYTE_DATA: int I2C_SMBUS_WORD_DATA: int I2C_SMBUS_PROC_CALL: int I2C_SMBUS_BLOCK_DATA: int I2C_SMBUS_BLOCK_PROC_CALL: int I2C_SMBUS_I2C_BLOCK_DATA: int I2C_SMBUS_BLOCK_MAX: int class I2cFunc(IntFlag): I2C = ... ADDR_10BIT = ... PROTOCOL_MANGLING = ... SMBUS_PEC = ... NOSTART = ... SLAVE = ... SMBUS_BLOCK_PROC_CALL = ... SMBUS_QUICK = ... SMBUS_READ_BYTE = ... SMBUS_WRITE_BYTE = ... SMBUS_READ_BYTE_DATA = ... SMBUS_WRITE_BYTE_DATA = ... SMBUS_READ_WORD_DATA = ... SMBUS_WRITE_WORD_DATA = ... SMBUS_PROC_CALL = ... SMBUS_READ_BLOCK_DATA = ... SMBUS_WRITE_BLOCK_DATA = ... SMBUS_READ_I2C_BLOCK = ... SMBUS_WRITE_I2C_BLOCK = ... SMBUS_HOST_NOTIFY = ... SMBUS_BYTE = ... SMBUS_BYTE_DATA = ... SMBUS_WORD_DATA = ... SMBUS_BLOCK_DATA = ... SMBUS_I2C_BLOCK = ... SMBUS_EMUL = ... I2C_M_RD: int LP_c_uint8: Type[pointer[c_uint8]] LP_c_uint16: Type[pointer[c_uint16]] LP_c_uint32: Type[pointer[c_uint32]] class i2c_smbus_data(Array): ... class union_i2c_smbus_data(Union): ... union_pointer_type: pointer[union_i2c_smbus_data] class i2c_smbus_ioctl_data(Structure): @staticmethod def create( read_write: int = ..., command: int = ..., size: int = ... ) -> "i2c_smbus_ioctl_data": ... class i2c_msg(Structure): def __iter__(self) -> int: ... def __len__(self) -> int: ... def __bytes__(self) -> str: ... @staticmethod def read(address: int, length: int) -> "i2c_msg": ... @staticmethod def write(address: int, buf: _UnionT[str, Iterable[int], SupportsBytes]) -> "i2c_msg": ... class i2c_rdwr_ioctl_data(Structure): @staticmethod def create(*i2c_msg_instances: Sequence[i2c_msg]) -> "i2c_rdwr_ioctl_data": ... class SMBus: fd: Optional[int] = ... funcs: I2cFunc = ... address: Optional[int] = ... force: bool = ... pec: int = ... def __init__( self, bus: _UnionT[None, int, str] = ..., force: bool = ... ) -> None: ... def __enter__(self) -> "SMBus": ... def __exit__( self, exc_type: Optional[Type[BaseException]], exc_val: Optional[BaseException], exc_tb: Optional[TracebackType], ) -> None: ... def open(self, bus: _UnionT[int, str]) -> None: ... def close(self) -> None: ... def enable_pec(self, enable: bool = ...) -> None: ... def write_quick(self, i2c_addr: int, force: Optional[bool] = ...) -> None: ... def read_byte(self, i2c_addr: int, force: Optional[bool] = ...) -> int: ... def write_byte( self, i2c_addr: int, value: int, force: Optional[bool] = ... ) -> None: ... def read_byte_data( self, i2c_addr: int, register: int, force: Optional[bool] = ... ) -> int: ... def write_byte_data( self, i2c_addr: int, register: int, value: int, force: Optional[bool] = ... ) -> None: ... def read_word_data( self, i2c_addr: int, register: int, force: Optional[bool] = ... ) -> int: ... def write_word_data( self, i2c_addr: int, register: int, value: int, force: Optional[bool] = ... ) -> None: ... def process_call( self, i2c_addr: int, register: int, value: int, force: Optional[bool] = ... ): ... def read_block_data( self, i2c_addr: int, register: int, force: Optional[bool] = ... ) -> List[int]: ... def write_block_data( self, i2c_addr: int, register: int, data: Sequence[int], force: Optional[bool] = ..., ) -> None: ... def block_process_call( self, i2c_addr: int, register: int, data: Sequence[int], force: Optional[bool] = ..., ) -> List[int]: ... def read_i2c_block_data( self, i2c_addr: int, register: int, length: int, force: Optional[bool] = ... ) -> List[int]: ... def write_i2c_block_data( self, i2c_addr: int, register: int, data: Sequence[int], force: Optional[bool] = ..., ) -> None: ... def i2c_rdwr(self, *i2c_msgs: i2c_msg) -> None: ...