/***************************************************************************//** @file l502api.h Файл содержит все необходимые описания типов, констант и функций для работы с модулем L-502 из пользовательской программы. @date 11.03.2012 @author Borisov Alexey ******************************************************************************/ #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