Функция I2CMaster_WriteThenRead
Заголовок: #include <applibs/i2c.h>
Выполняет комбинированную операцию записи и последующего чтения в интерфейсе I2C master. Операция отображается как одна транзакция шины со следующими шагами:
- Условие запуска
- Написать
- повторяющееся условие запуска
- Прочитать
- условие остановки
ssize_t I2CMaster_WriteThenRead(int fd, I2C_DeviceAddress address, const uint8_t *writeData, size_t lenWriteData, uint8_t *readData, size_t lenReadData);
Параметры
fd
Дескриптор файла для интерфейса I2C master.address
Адрес целевого устройства I2C для этой операции.writeData
Данные для передачи на целевое устройство.lenWriteData
Длина байтов передаваемых данных.readData
Выходной буфер, получающий данные с целевого устройства. Этот буфер должен содержать достаточно места для полученияlenReadData
байтов.lenReadData
Длина байтов получаемых данных.
Ошибки
Возвращает значение -1 при обнаружении ошибки и задает errno
значение ошибки.
EBUSY: интерфейс занят или линия I2C удерживается на низком уровне.
ENXIO: операция не получила ACK от подчиненного устройства.
ETIMEDOUT: время ожидания операции истекло до завершения; Для настройки времени ожидания можно использовать функцию I2CMaster_SetTimeout .
Можно также указать любой другой errno
. Такие ошибки не являются детерминированными, и такое же поведение может не сохраняться при обновлении системы.
Возвращаемое значение
Возвращает объединенное число байтов, успешно записанных и прочитанных, или -1 для сбоя, в этом случае errno
устанавливается значение ошибки. Частичный результат, включая передачу 0 байтов, считается успешным.
Требования к манифесту приложения
Чтобы получить доступ к интерфейсу I2c, приложение должно определить его в поле I2cMaster манифеста приложения.