I2CMaster_WriteThenRead, fonction
En-tête : #include <applibs/i2c.h>
Effectue une opération combinée d’écriture, puis de lecture sur une interface de master I2C. L’opération s’affiche sous la forme d’une transaction de bus unique avec les étapes suivantes :
- condition de démarrage
- Écrire
- condition de démarrage répétée
- Lire
- condition d’arrêt
ssize_t I2CMaster_WriteThenRead(int fd, I2C_DeviceAddress address, const uint8_t *writeData, size_t lenWriteData, uint8_t *readData, size_t lenReadData);
Paramètres
fd
Descripteur de fichier pour l’interface de master I2C.address
Adresse de l’appareil I2C cible pour cette opération.writeData
Données à transmettre à l’appareil ciblé.lenWriteData
Longueur en octets des données à transmettre.readData
Mémoire tampon de sortie qui reçoit les données de l’appareil cible. Cette mémoire tampon doit contenir suffisamment d’espace pour recevoir deslenReadData
octets.lenReadData
Longueur d’octet des données à recevoir.
Erreurs
Retourne -1 si une erreur est rencontrée et définit errno
sur la valeur d’erreur.
EBUSY : l’interface est occupée ou la ligne I2C est maintenue bas.
ENXIO : l’opération n’a pas reçu d’ACK de l’appareil subordonné.
ETIMEDOUT : l’opération a expiré avant de se terminer; vous pouvez utiliser la fonction I2CMaster_SetTimeout pour ajuster la durée du délai d’expiration.
Toutes les autres errno
peuvent également être spécifiées ; ces erreurs ne sont pas déterministes et le même comportement peut ne pas être conservé par le biais des mises à jour système.
Valeur de retour
Retourne le nombre combiné d’octets correctement écrits et lus, ou -1 en cas d’échec, auquel cas errno
est défini sur la valeur d’erreur. Un résultat partiel, y compris un transfert de 0 octet, est considéré comme un succès.
Exigences du manifeste d’application
Pour accéder à une interface I2c, votre application doit l’identifier dans le champ I2cMaster du manifeste de l’application.