Операционная система ЗОСРВ «Нейтрино» > Руководство разработчика > Основные принципы системной разработки > Разработка драйверов и драйверные библиотеки > Драйверные библиотеки > Библиотека разработки SPI драйверов (libspi-master) > API библиотеки > spi_cmdread()



spi_cmdread()

Функция отправки команды с последующим чтением.

Прототип:

#include <hw/spi-master.h>
int spi_cmdread( int fd,
uint32_t device,
void *cbuf,
int16_t clen,
void *rbuf,
int rlen );

Аргументы:

fd
Дескриптор файла, который вернула функция spi_open().
device
Идентификатор устройства с не более чем одним из следующих флагов, опционально объединенных:
SPI_DEV_DEFAULT
Устройство по умолчанию, используется spi_setcfg(), spi_getdevinfo().
SPI_DEV_LOCK
Заблокировать устройство для spi_read(), spi_write(), spi_xchange().
SPI_DEV_UNLOCK
Разблокировать устройство для функций указанных в SPI_DEV_LOCK.
cbuf
Указатель на буфер команды.
clen
Длина команды, в байтах.
rbuf
Указатель на буфер для получения.
rlen
Длина чтения, в байтах.

Библиотека:

libspi-master

Описание:

Функция отправляет команду и затем считывает данные с конкретного устройства на шине SPI. Драйвер SPI обычно считает ошибкой, если количество байт, возвращаемых этой функцией, не совпадает с количеством байт, которые он попросил функцию прочитать. Вы можете достичь тех же результатов, вызвав spi_xchange().

Возвращаемое значение:

nbytes
Количество успешно прочитанных байт.
-1
Произошла ошибка, код ошибки записывается в errno.

Коды ошибок:

EIO
Запись на устройство не удалась, или произошла аппаратная ошибка.
EINVAL
Идентификатор устройства недействителен, или вы пытаетесь разблокировать устройство, которое не заблокировано.
ENOMEM
Недостаточно памяти.
EPERM
Устройство заблокировано другим подключением.

Классификация:

ЗОСРВ «Нейтрино»

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Тематические ссылки:

errno, spi_xchange()




Предыдущий раздел: Библиотека разработки SPI драйверов