Función I2CMaster_WriteThenRead
Encabezado: #include <applibs/i2c.h>
Realiza una operación combinada de escritura y lectura en una interfaz maestra I2C. La operación aparece como una única transacción de bus con los siguientes pasos:
- condición de inicio
- Escribir
- condición de inicio repetida
- Leer
- condición de detención
ssize_t I2CMaster_WriteThenRead(int fd, I2C_DeviceAddress address, const uint8_t *writeData, size_t lenWriteData, uint8_t *readData, size_t lenReadData);
Parámetros
fd
Descriptor de archivo para la interfaz maestra I2C.address
La dirección del dispositivo I2C de destino para esta operación.writeData
Los datos que se transmitirán al dispositivo de destino.lenWriteData
La longitud del byte de los datos que se transmitirán.readData
El búfer de salida que recibe datos del dispositivo de destino. Este búfer debe contener suficiente espacio para recibirlenReadData
bytes.lenReadData
La longitud del byte de los datos que se recibirán.
Errores
Devuelve -1 si se encuentra un error y se establece errno
en el valor de error.
EBUSY: la interfaz está ocupada o la línea I2C se mantiene baja.
ENXIO: la operación no recibió un ACK del dispositivo subordinado.
ETIMEDOUT: se ha agotado el tiempo de finalización de la operación; puedes usar la función I2CMaster_SetTimeout para ajustar la duración del tiempo de espera.
También se pueden especificar otros errno
errores; estos errores no son deterministas y es posible que no se conserve el mismo comportamiento a través de las actualizaciones del sistema.
Valor devuelto
Devuelve el número combinado de bytes escritos y leídos correctamente, o -1 para error, en cuyo caso errno
se establece en el valor de error. Un resultado parcial, incluida una transferencia de 0 bytes, se considera un éxito.
Requisitos del manifiesto de la aplicación
Para acceder a una interfaz I2c, la aplicación debe identificarla en el campo I2cMaster del manifiesto de la aplicación.