Интерфейс драйверов устройств


Подробное описание

Драйвер устройства состоит из структуры GATE_DRIVER, функций чтения и/или записи в регистр, и (необязательно) функции инициализации драйвера.

Регистры, используемые драйвером, должны содержаться в массиве, на который указывает поле registers. Количество используемых регистров задается полем num_registers.

Работа с устройством ввода/вывода заключается в записи массива данных в регистры или чтения из регистра. То, как использовать массив данных, переданных для записи, или как заполнять буфер данных при чтении, целиком определяется драйвером устройства.


Структуры данных

struct  GATE_DRIVER
 Конфигурация драйвера устройств. Подробнее...

Определения типов

typedef GATE_RESULT(* GATE_READ )(uint8_t reg, uint8_t *data, uint8_t *data_len)
 Прототип функции чтения данных из драйвера.
typedef GATE_RESULT(* GATE_WRITE )(uint8_t reg, uint8_t *data, uint8_t data_len)
 Прототип функции записи данных в драйвер.
typedef GATE_RESULT(* GATE_INIT )(void)
 Прототип функции инициализации драйвера.

Функции

GATE_RESULT gate_driver_register (GATE_DRIVER *driver)
 Регистрирует драйвер устройства.
GATE_RESULT gate_register_read (uint8_t reg, uint8_t *data, uint8_t *data_len)
 Чтение из регистра.
GATE_RESULT gate_register_write (uint8_t reg, uint8_t *data, uint8_t data_len)
 Запись в регистр.


Типы

typedef GATE_RESULT(* GATE_INIT)(void)

Прототип функции инициализации драйвера.

Функция инициализации драйвера вызывается при регистрации драйвера.

Возвращает:
Функция должна возвращать GR_OK при успешной инициализации, иначе - код ошибки

typedef GATE_RESULT(* GATE_READ)(uint8_t reg, uint8_t *data, uint8_t *data_len)

Прототип функции чтения данных из драйвера.

Драйвер, реализующий чтение из регистров, должен предоставлять функцию типа GATE_READ. Прочитанные данные помещаются в буфер data. Количество байт для чтения задается переменной, указатель на которую содержится в data_len. В эту же переменную помещается количество фактически прочитанных байтов.

Аргументы:
reg Номер регистра.
data Указатель на буфер данных
data_len Указатель на переменную, значение которй задает количество байт для чтения.
Возвращает:
GR_OK - если данные успешно прочитаны. Иначе - код ошибки. Функция должна возвращать GR_NO_ACCESS, если чтение из запрошенного регистра не поддерживается.

typedef GATE_RESULT(* GATE_WRITE)(uint8_t reg, uint8_t *data, uint8_t data_len)

Прототип функции записи данных в драйвер.

Драйвер, реализующий запись в регистры, должен предоставлять функцию типа GATE_READ.

Аргументы:
reg Номер регистра.
data Указатель на массив с данными.
data_len Количество байт для записи.
Возвращает:
GR_OK - если данные успешно записаны. Иначе - код ошибки. Функция должна возвращать GR_NO_ACCESS, если запись в запрошенный регистр не поддерживается.


Функции

GATE_RESULT gate_driver_register ( GATE_DRIVER driver  ) 

Регистрирует драйвер устройства.

Аргументы:
driver Указатель на структуру с описанием драйвера
Возвращает:
GR_OK, если драйвер был успешно добавлен. GR_DUPLICATE_REGISTER, если один из регистров уже используется другим драйвером.Если драйвер предоставляетт функцию инициализации, возможны и другие значения. Любое значение, отличное от GR_OK, означает, что драйвер не был добавлен, и использовать его регистры невозможно.

Перекрестные ссылки GR_DUPLICATE_REGISTER, GR_OK, GATE_DRIVER::init, GATE_DRIVER::next, GATE_DRIVER::num_registers и GATE_DRIVER::registers.

GATE_RESULT gate_register_read ( uint8_t  reg,
uint8_t *  data,
uint8_t *  data_len 
)

Чтение из регистра.

Аргументы:
reg Номер регистра
data Указатель на буфер данных
data_len Указатель на переменную, значение которй задает количество байт для чтения.
Возвращает:
GR_INVALID_REGISTER - если для указанного регистра нет зарегистрированного драйвера. GR_NO_ACCESS - если драйвер, связанный с регистром, не предоставляет функцию чтения или чтение из запрошенного регистра не поддерживается. Иначе - результат выполнения функции чтения драйвера.
См. также:
GATE_READ

Перекрестные ссылки GR_INVALID_REGISTER, GR_NO_ACCESS и GATE_DRIVER::read.

GATE_RESULT gate_register_write ( uint8_t  reg,
uint8_t *  data,
uint8_t  data_len 
)

Запись в регистр.

Аргументы:
reg Номер регистра.
data Указатель на массив с данными.
data_len Количество байт для записи.
Возвращает:
GR_INVALID_REGISTER - если для указанного регистра нет зарегистрированного драйвера. GR_NO_ACCESS - если драйвер, связанный с регистром, не предоставляет функцию записи или запись в запрошенный регистр не поддерживается. Иначе - результат выполнения функции записи драйвера.
См. также:
GATE_WRITE

Перекрестные ссылки GR_INVALID_REGISTER, GR_NO_ACCESS и GATE_DRIVER::write.


Документация по Интерфейсы программирования шлюз-контроллера. Последние изменения: Fri May 1 19:20:21 2009. Создано системой  doxygen 1.5.6