Source code for brainstem.autoGen_I2C_Entity

# This file was auto-generated. Do not modify.

from ._bs_c_cffi import ffi
from . import _BS_C #imported from __init__
from .Entity_Entity import *
from .result import Result
from .ffi_utils import data_to_bytearray, bytes_to_string, handle_sign, handle_sign_value, get_ffi_buffer

[docs]class I2C(Entity): ''' Interface the I2C buses on BrainStem modules. The class provides a way to send read and write commands to I2C devices on the entities bus. ''' I2C_DEFAULT_SPEED = 0 I2C_SPEED_100Khz = 1 I2C_SPEED_400Khz = 2 I2C_SPEED_1000Khz = 3 def __init__(self, module, index): super(I2C, self).__init__(module, _BS_C.cmdI2C, index)
[docs] def read(self, address, read_length): ''' Read from a device on this I2C bus. Parameters ---------- address : unsigned char The I2C address (7bit <XXXX-XXX0>) of the device to read. read_length : unsigned char The length of the data to read in bytes. Returns ------- brainstem.result.Result Object containing error code and returned value on success. error : unsigned byte An error result from the list of defined error codes value : list(unsigned char) The array of bytes that will be filled with the result, upon success. This array should be larger or equivalent to aBRAINSTEM_MAXPACKETBYTES - 5 ''' ffi_buffer = get_ffi_buffer(8, False, 256) result = ffi.new("struct Result*") _BS_C.i2c_read(self._module._id_pointer, result, self._index, address, read_length, ffi_buffer) return_list = [handle_sign_value(ffi_buffer[i], 8, False) for i in range(result.value)] return Result(result.error, [ffi_buffer[i] for i in range(result.value)])
[docs] def write(self, address, buffer): ''' Write to a device on this I2C bus. Parameters ---------- address : unsigned char The I2C address (7bit <XXXX-XXX0>) of the device to write. buffer : unsigned char The data to send to the device This array should be no larger than aBRAINSTEM_MAXPACKETBYTES - 5 Returns ------- unsigned byte An error result from the list of defined error codes in brainstem.result.Result ''' buffer = data_to_bytearray(buffer) buffer_length = len(buffer) ffi_buffer = get_ffi_buffer(8, False, buffer_length) for x in range(buffer_length): ffi_buffer[x] = buffer[x] result = ffi.new("struct Result*") _BS_C.i2c_write(self._module._id_pointer, result, self._index, address, buffer_length, ffi_buffer) return result.error
[docs] def setPullup(self, enable): ''' Set bus pull-up state. This call only works with stems that have software controlled pull-ups. Check the datasheet for more information. This parameter is saved when system.save is called. Parameters ---------- enable : bool true enables pull-ups false disables them. Returns ------- unsigned byte An error result from the list of defined error codes in brainstem.result.Result ''' result = ffi.new("struct Result*") _BS_C.i2c_setPullup(self._module._id_pointer, result, self._index, enable) return result.error
[docs] def setSpeed(self, speed): ''' Set I2C bus speed. This call sets the communication speed for I2C transactions through this API. Speed is an enumeration value which can take the following values: 1 - 100Khz 2 - 400Khz 3 - 1MHz Parameters ---------- speed : unsigned char The speed setting value. Returns ------- unsigned byte An error result from the list of defined error codes in brainstem.result.Result ''' result = ffi.new("struct Result*") _BS_C.i2c_setSpeed(self._module._id_pointer, result, self._index, speed) return result.error
[docs] def getSpeed(self): ''' Get I2C bus speed. This call gets the communication speed for I2C transactions through this API. Speed is an enumeration value which can take the following values: 1 - 100Khz 2 - 400Khz 3 - 1MHz Returns ------- brainstem.result.Result Object containing error code and returned value on success. error : unsigned byte An error result from the list of defined error codes value : unsigned char The speed setting value. ''' result = ffi.new("struct Result*") _BS_C.i2c_getSpeed(self._module._id_pointer, result, self._index) return handle_sign(Result(result.error, result.value), 8, False)