I2CMaster_WriteThenRead functie
Header: #include <applibs/i2c.h>
Voert een gecombineerde schrijf-dan-leesbewerking uit op een I2C-hoofdinterface. De bewerking wordt weergegeven als een transactie met één bus met de volgende stappen:
- beginvoorwaarde
- Schrijven
- herhaalde startvoorwaarde
- Lezen
- stopvoorwaarde
ssize_t I2CMaster_WriteThenRead(int fd, I2C_DeviceAddress address, const uint8_t *writeData, size_t lenWriteData, uint8_t *readData, size_t lenReadData);
Parameters
fd
De bestandsdescriptor voor de I2C-hoofdinterface.address
Het adres van het doel-I2C-apparaat voor deze bewerking.writeData
De gegevens die moeten worden verzonden naar het doelapparaat.lenWriteData
De bytelengte van de gegevens die moeten worden verzonden.readData
De uitvoerbuffer die gegevens van het doelapparaat ontvangt. Deze buffer moet voldoende ruimte bevatten om bytes te ontvangenlenReadData
.lenReadData
De bytelengte van de gegevens die moeten worden ontvangen.
Fouten
Retourneert -1 als er een fout optreedt en wordt ingesteld errno
op de foutwaarde.
EBUSY: de interface is bezet of de I2C-lijn wordt laag gehouden.
ENXIO: de bewerking heeft geen ACK ontvangen van het onderliggende apparaat.
ETIMEDOUT: er is een time-out opgetreden voordat de bewerking werd voltooid; u kunt de functie I2CMaster_SetTimeout gebruiken om de time-outduur aan te passen.
errno
Andere fouten kunnen ook worden opgegeven; dergelijke fouten zijn niet deterministisch en hetzelfde gedrag wordt mogelijk niet bewaard via systeemupdates.
Retourwaarde
Retourneert het gecombineerde aantal bytes dat is geschreven en gelezen, of -1 voor fout, in welk geval errno
is ingesteld op de foutwaarde. Een gedeeltelijk resultaat, inclusief een overdracht van 0 bytes, wordt beschouwd als geslaagd.
Vereisten voor toepassingsmanifest
Voor toegang tot een I2c-interface moet uw toepassing deze identificeren in het veld I2cMaster van het toepassingsmanifest.