Funzione I2CMaster_WriteThenReadI2CMaster_WriteThenRead Function

Intestazione: #include <applibs/i2c.h>Header: #include <applibs/i2c.h>

Esegue un'operazione combinata di scrittura e quindi lettura su un'interfaccia master I2C.Performs a combined write-then-read operation on an I2C master interface. L'operazione corrisponde a una singola transazione del bus con i passaggi seguenti:The operation appears as a single bus transaction with the following steps:

  1. condizione di avviostart condition
  2. scriverewrite
  3. condizione di avvio ripetutarepeated start condition
  4. leggereread
  5. condizione di arrestostop condition
ssize_t I2CMaster_WriteThenRead(int fd, I2C_DeviceAddress address, const uint8_t *writeData, size_t lenWriteData, uint8_t *readData, size_t lenReadData);

ParametriParameters

  • fd Il descrittore del file per l'interfaccia master I2C.fd The file descriptor for the I2C master interface.

  • address L'indirizzo del dispositivo I2C di destinazione per questa operazione.address The address of the target I2C device for this operation.

  • writeData I dati da trasmettere al dispositivo di destinazione.writeData The data to transmit to the targeted device.

  • lenWriteData La lunghezza in byte dei dati da trasmettere.lenWriteData The byte length of the data to transmit.

  • readData Il buffer di output che riceve i dati dal dispositivo di destinazione.readData The output buffer that receives data from the target device. Questo buffer deve contenere uno spazio sufficiente per ricevere il numero di byte lenReadData.This buffer must contain sufficient space to receive lenReadData bytes.

  • lenReadData La lunghezza in byte dei dati da ricevere.lenReadData The byte length of the data to receive.

ErrorsErrors

Restituisce-1 se viene rilevato un errore e imposta sul errno valore di errore.Returns -1 if an error is encountered and sets errno to the error value.

  • EBUSY: l'interfaccia è occupata oppure la linea di I2C viene tenuta bassa.EBUSY: the interface is busy or the I2C line is being held low.

  • ENXIO: l'operazione non ha ricevuto un messaggio ACK dal dispositivo subordinato.ENXIO: the operation did not receive an ACK from the subordinate device.

  • ETIMEDOUT: si è verificato un timeout dell'operazione prima del completamento; è possibile usare la funzione I2CMaster_SetTimeout per regolare la durata del timeout.ETIMEDOUT: the operation timed out before completing; you can use the I2CMaster_SetTimeout function to adjust the timeout duration.

errnoÈ possibile specificare anche qualsiasi altro tipo di errore. tali errori non sono deterministici e lo stesso comportamento potrebbe non essere mantenuto tramite gli aggiornamenti del sistema.Any other errno may also be specified; such errors aren't deterministic and the same behavior might not be retained through system updates.

Valore restituitoReturn value

Restituisce il numero combinato di byte scritti e letti correttamente oppure-1 per l'errore, nel qual caso errno viene impostato sul valore di errore.Returns the combined number of bytes successfully written and read, or -1 for failure, in which case errno is set to the error value. Un risultato parziale, anche un trasferimento di 0 byte, viene considerato riuscito.A partial result, including a transfer of 0 bytes, is considered a success.

Requisiti del manifesto dell'applicazioneApplication manifest requirements

Per accedere a un'interfaccia I2C, l'applicazione deve identificarla nel campo I2cMaster del manifesto dell'applicazione.To access an I2c interface, your application must identify it in the I2cMaster field of the application manifest.