Exemple #1
0
uint8_t DFTwoWire::requestFrom(uint8_t address, uint8_t quantity, uint8_t sendStop)
{
	if (quantity > BUFFER_LENGTH)
		quantity = BUFFER_LENGTH;

	/* Set slave address via ioctl  */ 
	i2c_setslave(i2c_fd, address);

	if(i2c_transfer) {
	/* Need to perform a combined read/write operation
	 */	
		i2c_transfer = 0;
		if (sendStop == false)
			return 0;

		i2c_add_to_buf(address, 1, rxBuffer, quantity);
		if (!i2c_readwrite(i2c_fd)) {
			rxBufferIndex = 0;
			rxBufferLength = quantity;
			i2c_transfer = 0;
			return quantity;
		} else
			return 0;
	}

	if (i2c_readbytes(i2c_fd, rxBuffer, quantity) < 0)
		return 0;
	// set rx buffer iterator vars
	rxBufferIndex = 0;
	rxBufferLength = quantity;

	return quantity;
}
Exemple #2
0
I2CError i2c_tx(int bus, int iicaddr, void* buffer, int len) {
	I2C[bus].address = iicaddr;
	I2C[bus].is_write = TRUE;
	I2C[bus].registers = ((uint8_t*) buffer);
	I2C[bus].buffer = ((uint8_t*) (buffer))+1;
	I2C[bus].bufferLen = len-1;
	return i2c_readwrite(&I2C[bus]);
}
Exemple #3
0
I2CError i2c_rx(int bus, int iicaddr, const uint8_t* registers, int num_regs, void* buffer, int len) {
	if (num_regs != 1)
		return 1;

	I2C[bus].address = iicaddr;
	I2C[bus].is_write = FALSE;
	I2C[bus].registers = registers;
	I2C[bus].bufferLen = len;
	I2C[bus].buffer = (uint8_t*) buffer;
	return i2c_readwrite(&I2C[bus]);
}
Exemple #4
0
int i2c_write(unsigned bus, unsigned chip, unsigned addr,
		unsigned alen, const uint8_t *buf, unsigned len)
{
	return i2c_readwrite(bus, chip, addr, alen, (void *)buf, len, 0);
}
Exemple #5
0
int i2c_read(unsigned bus, unsigned chip, unsigned addr,
		unsigned alen, uint8_t *buf, unsigned len)
{
	return i2c_readwrite(bus, chip, addr, alen, buf, len, 1);
}