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



i2c_master_funcs_t

Структура, определяющая интерфейс драйвера

Прототип:

#include <hw/i2c.h>
typedef struct {
size_t size; /* size of this structure */
int (*version_info) (i2c_libversion_t *version);
void* (*init) (int argc, char *argv[]);
void (*fini) (void *hdl);
i2c_status_t (*send) (void *hdl, void *buf, unsigned int len,
unsigned int stop);
i2c_status_t (*recv) (void *hdl, void *buf, unsigned int len,
unsigned int stop);
int (*abort) (void *hdl, int rcvid);
int (*set_slave_addr) (void *hdl, unsigned int addr, i2c_addrfmt_t fmt);
int (*set_bus_speed) (void *hdl, unsigned int speed, unsigned int *ospeed);
int (*driver_info) (void *hdl, i2c_driver_info_t *info);
int (*ctl) (void *hdl, int cmd, void *msg, int msglen,
int *nbytes, int *info);
} i2c_master_funcs_t;

Библиотека:

libi2c-master

Описание:

Эта структура представляет собой таблицу указателей на функции, которые вы можете предоставить своему оборудованию. Код более высокого уровня вызывает эти функции.


Note:
  • В системе, где есть несколько ведущих, функции send и recv должны обрабатывать арбитраж шины.
  • Если интерфейс I2C поддерживает DMA, вы можете реализовать его в функциях send и recv.

size
Размер структуры, определяющей функции-обработчиков драйвера.
i2c_master_funcs_t :: version_info()
i2c_master_funcs_t :: init()
i2c_master_funcs_t :: fini()
i2c_master_funcs_t :: send()
i2c_master_funcs_t :: recv()
i2c_master_funcs_t :: abort()
i2c_master_funcs_t :: set_slave_addr()
i2c_master_funcs_t :: set_bus_speed()
i2c_master_funcs_t :: driver_info()
i2c_master_funcs_t :: ctl()
Функции-обработчики драйвера (описаны в разделе Библиотека разработки I²C драйверов).

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

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

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

Библиотека разработки I²C драйверов, i2c_master_funcs_t :: version_info(), i2c_master_funcs_t :: init(), i2c_master_funcs_t :: fini(), i2c_master_funcs_t :: send(), i2c_master_funcs_t :: recv(), i2c_master_funcs_t :: abort(), i2c_master_funcs_t :: set_slave_addr(), i2c_master_funcs_t :: set_bus_speed(), i2c_master_funcs_t :: driver_info(), i2c_master_funcs_t :: ctl()




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