Регистры, используемые драйвером, должны содержаться в массиве, на который указывает поле 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) |
Прототип функции инициализации драйвера.
Функция инициализации драйвера вызывается при регистрации драйвера.
| typedef GATE_RESULT(* GATE_READ)(uint8_t reg, uint8_t *data, uint8_t *data_len) |
Прототип функции чтения данных из драйвера.
Драйвер, реализующий чтение из регистров, должен предоставлять функцию типа GATE_READ. Прочитанные данные помещаются в буфер data. Количество байт для чтения задается переменной, указатель на которую содержится в data_len. В эту же переменную помещается количество фактически прочитанных байтов.
| reg | Номер регистра. | |
| data | Указатель на буфер данных | |
| data_len | Указатель на переменную, значение которй задает количество байт для чтения. |
| typedef GATE_RESULT(* GATE_WRITE)(uint8_t reg, uint8_t *data, uint8_t data_len) |
Прототип функции записи данных в драйвер.
Драйвер, реализующий запись в регистры, должен предоставлять функцию типа GATE_READ.
| reg | Номер регистра. | |
| data | Указатель на массив с данными. | |
| data_len | Количество байт для записи. |
| GATE_RESULT gate_driver_register | ( | GATE_DRIVER * | driver | ) |
Регистрирует драйвер устройства.
| driver | Указатель на структуру с описанием драйвера |
Перекрестные ссылки 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_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_DRIVER::write.
1.5.6