163 lines
7.4 KiB
C
163 lines
7.4 KiB
C
/***************************************************************************//**
|
||
@file l502api.h
|
||
Файл содержит все необходимые описания типов, констант и функций для работы
|
||
с модулем L-502 из пользовательской программы.
|
||
@date 11.03.2012
|
||
@author Borisov Alexey <borisov@lcard.ru>
|
||
******************************************************************************/
|
||
|
||
#ifndef L502_API_H
|
||
#define L502_API_H
|
||
|
||
#include "l502api_compat.h"
|
||
#include "x502api.h"
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
/***************************************************************************//**
|
||
@addtogroup func_open
|
||
@{
|
||
*******************************************************************************/
|
||
|
||
/***************************************************************************//**
|
||
@brief Получение списка серийных номеров модулей L-502
|
||
|
||
Функция возвращает список номеров всех найденных модулей L-502, независимо от
|
||
того, открыты они сейчас или нет.
|
||
|
||
Если нужен список только тех модулей, которые не открыты (то есть
|
||
только тех, с которыми можно установить соединение), то для этого можно
|
||
передать в функцию флаг #X502_GETDEVS_FLAGS_ONLY_NOT_OPENED.
|
||
|
||
@param[in] serials Массив размером size*#X502_SERIAL_SIZE байт, в который
|
||
будут сохранены серийные номера найденных модулей.
|
||
Может быть NULL, если size=0, а devcnt!=NULL, в случае,
|
||
если нужно только получить количество модулей в системе.
|
||
@param[in] size Определяет, сколько максимально серийных номеров может
|
||
быть сохранено в массив serial. Будут сохранены только
|
||
первые size серийных номеров.
|
||
Может быть 0, если serials=NULL
|
||
@param[in] flags Флаги из #t_x502_getdevs_flags, определяющие поведение
|
||
функции.
|
||
@param[out] devcnt Если devcnt!=NULL, то в данную переменную сохраняется
|
||
общее число найденных модулей L502
|
||
(может быть больше size).
|
||
@return Если <0 - код ошибки, иначе количество сохраненных
|
||
серийных номеров в массиве serials (всегда <= size)
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) L502_GetSerialList(char serials[][X502_SERIAL_SIZE], uint32_t size,
|
||
uint32_t flags, uint32_t *devcnt);
|
||
|
||
/***************************************************************************//**
|
||
@brief Открытие модуля L-502 по его серийному номеру
|
||
|
||
Функция устанавливает связь с модулем L-502 по его серийному номеру.
|
||
После успешного выполнения этой функции, пользователь получает эксклюзивный
|
||
доступ к модулю через описатель модуля. До закрытия связи с помощью
|
||
X502_Close() никто другой установить связь с модулем не сможет
|
||
(будет возвращена ошибка #X502_ERR_DEVICE_ACCESS_DENIED).
|
||
|
||
Если в качестве серийного номера передан NULL или пустая строка, то будет
|
||
установлена связь с первым найденным модулем, с которым получится успешно
|
||
ее установить.
|
||
Если в системе нет ни одного модуля, то будет возвращена ошибка
|
||
#X502_ERR_DEVICE_NOT_FOUND. Если в системе присутствуют модули L-502, но
|
||
соединение ни с одним из них установить не удалось, то будет возвращена
|
||
ошибка, полученная при попытке установить соединение с последним
|
||
найденным модулем.
|
||
|
||
После завершения работы с устройством соединение должно быть закрыто с
|
||
помощью X502_Close().
|
||
|
||
@param[in] hnd Описатель устройства.
|
||
@param[in] serial Указатель на строку с серийным номером открываемого
|
||
модуля или NULL.
|
||
@return Код ошибки.
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) L502_Open(t_x502_hnd hnd, const char *serial);
|
||
|
||
|
||
/** @} */
|
||
|
||
|
||
/***************************************************************************//**
|
||
@addtogroup func_devrec
|
||
@{
|
||
*******************************************************************************/
|
||
|
||
/***************************************************************************//**
|
||
@brief Получить список записей, соответствующих подключенным модулям L502
|
||
|
||
Функция находит все подключенные модули L-502 и инициализирует
|
||
записи о каждом найденном устройстве и сохраняет их в переданный список
|
||
(если не нулевой).
|
||
Возвращенные в списке записи должны быть очищены после использования
|
||
с помощью X502_FreeDevRecordList() (также в случае повторного
|
||
вызов L502_GetDevRecordsList() с тем же массивом записей, записи, полученные
|
||
при предыдущем вызове, должны быть сперва очищены).
|
||
|
||
@param[in] list Массив для сохранения записей о найденных устройствах.
|
||
Должен содержать место для сохранения не менее size записей.
|
||
Может быть NULL, если size=0, а devcnt!=NULL, в случае,
|
||
если нужно только получить количество модулей в системе.
|
||
@param[in] size Определяет, сколько максимально записей может
|
||
быть сохранено в массив list. Будут сохранены только
|
||
первые size записей, если устройств найденно больше.
|
||
@param[in] flags Флаги из #t_x502_getdevs_flags, определяющие поведение
|
||
функции.
|
||
@param[out] devcnt Если не нулевой указатель, то в данную переменную сохраняется
|
||
общее число найденных модулей L-502 (может быть больше size).
|
||
@return Если <0 --- код ошибки, иначе количество сохраненных
|
||
записей о найденных устройствах (всегда <= size).
|
||
Именно на этот размер нужно сделать в дальнейшем
|
||
X502_FreeDevRecordList() для освобождения памяти,
|
||
выделенной под информацию, на которую ссылается запись.
|
||
******************************************************************************/
|
||
X502_EXPORT(int32_t) L502_GetDevRecordsList(t_x502_devrec *list, uint32_t size,
|
||
uint32_t flags, uint32_t *devcnt) ;
|
||
/** @} */
|
||
|
||
|
||
|
||
|
||
/***************************************************************************//**
|
||
@addtogroup func_misc
|
||
@{
|
||
*******************************************************************************/
|
||
|
||
/**************************************************************************//**
|
||
@brief Получить версию драйвера модуля L-502
|
||
|
||
Функция возвращает версию драйвера, установленного для
|
||
указанного открытого устройства.
|
||
Версия возвращается в виде 32-битного числа.
|
||
Строковое представление возвращенной версии - четыре числа,
|
||
старшее соответствует старшему байту, младшее - младшему.
|
||
|
||
Старший байт - мажорная версия, второй по старшинству байт - минорная,
|
||
третий - ревизия, четвертый - номер сборки (не используется - всегда 0).
|
||
|
||
Это та версия, которая отображается в диспетчере устройств в Windows или
|
||
с помощью modinfo в Linux.
|
||
|
||
Данная функция доступна только для устройств с интерфейсом PCI/PCI-Express (L502)
|
||
|
||
@param[in] hnd Описатель модуля.
|
||
@param[out] ver 32-битное число, представляющее собой версию драйвера
|
||
@return Код ошибки.
|
||
*****************************************************************************/
|
||
X502_EXPORT(int32_t) L502_GetDriverVersion(t_x502_hnd hnd, uint32_t* ver);
|
||
|
||
/** @} */
|
||
|
||
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
#endif
|
||
|