Funzione I2CMaster_WriteThenRead
Intestazione: #include <applicazioni/i2c.h>
Esegue un'operazione combinata di scrittura e lettura su un'interfaccia master I2C. L'operazione viene visualizzata come una singola transazione bus con i seguenti passaggi:
- condizione di inizio
- Scrivere
- condizione di inizio ripetuta
- Leggere
- condizione di interruzione
ssize_t I2CMaster_WriteThenRead(int fd, I2C_DeviceAddress address, const uint8_t *writeData, size_t lenWriteData, uint8_t *readData, size_t lenReadData);
Parametri
fd
Descrittore di file per l'interfaccia master I2C.address
Indirizzo del dispositivo I2C di destinazione per questa operazione.writeData
I dati da trasmettere al dispositivo di destinazione.lenWriteData
Lunghezza dei dati da trasmettere.readData
Buffer di output che riceve i dati dal dispositivo di destinazione. Questo buffer deve contenere spazio sufficiente per riceverelenReadData
byte.lenReadData
Lunghezza dei dati da ricevere.
Errori
Restituisce -1 se si verifica un errore e imposta errno
il valore di errore.
EBUSY: l'interfaccia è occupata o la linea I2C è bassa.
ENXIO: l'operazione non ha ricevuto un ACK dal dispositivo subordinato.
ETIMEDOUT: timeout dell'operazione prima del completamento; è possibile usare la funzione I2CMaster_SetTimeout per modificare la durata del timeout.
Potrebbero anche essere specificati altri errno
errori. Tali errori non sono deterministici e lo stesso comportamento potrebbe non essere mantenuto tramite gli aggiornamenti di sistema.
Valore restituito
Restituisce il numero combinato di byte scritti e letti correttamente oppure -1 per errore, nel qual caso errno
è impostato sul valore di errore. Un risultato parziale, compreso il trasferimento di 0 byte, è considerato un successo.
Requisiti del manifesto dell'applicazione
Per accedere a un'interfaccia I2c, l'applicazione deve identificarla nel campo I2cMaster del manifesto dell'applicazione.