Funkcja I2CMaster_WriteThenRead
Nagłówek: #include <applibs/i2c.h>
Wykonuje połączoną operację zapisu i odczytu w interfejsie głównym I2C. Operacja jest wyświetlana jako pojedyncza transakcja autobusowa z następującymi krokami:
- warunek rozpoczęcia
- Napisz
- powtarzający się warunek rozpoczęcia
- Odczytu
- warunek zatrzymania
ssize_t I2CMaster_WriteThenRead(int fd, I2C_DeviceAddress address, const uint8_t *writeData, size_t lenWriteData, uint8_t *readData, size_t lenReadData);
Parametry
fd
Deskryptor plików interfejsu głównego I2C.address
Adres docelowego urządzenia I2C dla tej operacji.writeData
Dane przesyłane do urządzenia docelowego.lenWriteData
Długość bajtów przesyłanych danych.readData
Bufor wyjściowy, który odbiera dane z urządzenia docelowego. Ten bufor musi zawierać wystarczającą ilość miejsca do odbieranialenReadData
bajtów.lenReadData
Długość bajtów danych, które mają zostać odebrane.
Błędy
Zwraca wartość -1 w przypadku napotkania błędu i ustawia errno
wartość błędu.
EBUSY: interfejs jest zajęty lub linia I2C jest utrzymywana na niskim poziomie.
ENXIO: operacja nie otrzymała ACK z urządzenia podrzędnego.
ETIMEDOUT: przekroczona została przekroczona limit czasu operacji przed ukończeniem operacji; możesz użyć funkcji I2CMaster_SetTimeout , aby dostosować czas trwania limitu czasu.
Mogą być również określone inne errno
błędy; takie błędy nie są deterministyczne i to samo zachowanie może nie być zachowane za pośrednictwem aktualizacji systemu.
Zwracana wartość
Zwraca połączoną liczbę bajtów pomyślnie napisanych i przeczytanych lub -1 dla niepowodzenia, w którym to przypadku errno
jest ustawiona wartość błędu. Częściowy wynik, w tym transfer 0 bajtów, jest uważany za sukces.
Wymagania dotyczące manifestu aplikacji
Aby uzyskać dostęp do interfejsu I2c, aplikacja musi zidentyfikować go w polu I2cMaster manifestu aplikacji.