Funkcja I2CMaster_Read
Nagłówek: #include <applibs/i2c.h>
Wykonuje operację odczytu na interfejsie głównym I2C. Ta funkcja zapewnia taką samą funkcjonalność jak funkcja POSIX read(2), z wyjątkiem tego, że określa adres podrzędnego urządzenia I2C, które jest obiektem docelowym operacji.
ssize_t I2CMaster_Read(int fd, I2C_DeviceAddress address, uint8_t *buffer, size_t maxLength);
Parametry
fd
Deskryptor plików interfejsu głównego I2C.address
Adres podrzędnego urządzenia I2C, które jest źródłem operacji odczytu.buffer
Bufor wyjściowy, który odbiera dane z urządzenia podrzędnego. Ten bufor musi zawierać wystarczającą ilość miejsca do odbieraniamaxLength
bajtów. Może to być wartość NULL, jeślimaxLength
jest równa 0.maxLength
Maksymalna liczba bajtów do odebrania. Wartość może wynosić 0.
Błędy
Zwraca wartość -1 w przypadku napotkania błędu i ustawia errno
wartość błędu.
EBUSY: interfejs jest zajęty lub linia zegara I2C (SCL) 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 liczbę bajtów pomyślnie przeczytanych. lub -1 dla niepowodzenia, w którym to przypadku errno
zostanie ustawiona wartość błędu. Operacja częściowego odczytu, w tym odczyt 0 bajtów, jest uważana za sukces.
Wymagania dotyczące manifestu aplikacji
Aby uzyskać dostęp do interfejsu I2c, aplikacja musi zidentyfikować go w polu I2cMaster manifestu aplikacji.