1016 lines
55 KiB
C
1016 lines
55 KiB
C
#ifndef E502API_H
|
||
#define E502API_H
|
||
|
||
#include "x502api.h"
|
||
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
/***************************************************************************//**
|
||
@addtogroup const_list
|
||
@{
|
||
*****************************************************************************/
|
||
/** @brief События поиска сетевых сервисов
|
||
|
||
Коды событий, возникающих при поиске сетевых сервисов, возвращаемые
|
||
функцией E502_EthSvcBrowseGetEvent() */
|
||
typedef enum {
|
||
E502_ETH_SVC_EVENT_NONE = 0, /**< Ни одного события не произошло */
|
||
E502_ETH_SVC_EVENT_ADD = 1, /**< Обнаружено появление нового сетевого сервиса */
|
||
E502_ETH_SVC_EVENT_REMOVE = 2, /**< Обнаружено исчезновение ранее доступного
|
||
сетевого сервиса */
|
||
E502_ETH_SVC_EVENT_CHANGED = 3 /**< Изменение параметров ранее обнаруженного
|
||
сетевого сервиса */
|
||
} t_e502_eth_svc_event;
|
||
|
||
/** @} */
|
||
|
||
/***************************************************************************//**
|
||
@addtogroup type_list
|
||
@{
|
||
*******************************************************************************/
|
||
|
||
/***************************************************************************//**
|
||
@brief Описатель конфигурации сетевого интерфейса
|
||
|
||
Непрозрачный указатель на структуру, содержащую параметры конфигурации
|
||
сетевого интерфейса модуля E-502.
|
||
Пользовательской программе не доступны поля структуры напрямую, а только
|
||
через функции библиотеки.
|
||
Описатель конфигурации создается с помощью E502_EthConfigCreate() и в конце работы
|
||
освобождается с помощью E502_EthConfigFree().
|
||
Как правило все настройки не должны заполняться пользователем вручную,
|
||
обычно сперва они считываются из устройства с помощью E502_EthConfigRead(),
|
||
после чего часть настроек можно изменить и сохранить в модуль через
|
||
E502_EthConfigWrite()
|
||
*****************************************************************************/
|
||
typedef struct st_e502_eth_config_state* t_e502_eth_config_hnd;
|
||
|
||
/**************************************************************************//**
|
||
@brief Описатель контекста поиска устройств в сети
|
||
|
||
Указатель на непрозрачную структуру с информацией о состоянии текущего
|
||
сеанса поиска устройств в сети. Создается при начале поиска вызовом
|
||
E502_EthSvcBrowseStart() и уничтожается с помощью E502_EthSvcBrowseStop()
|
||
*****************************************************************************/
|
||
typedef struct st_e502_eth_svc_browse_context *t_e502_eth_svc_browse_hnd;
|
||
/**************************************************************************//**
|
||
@brief Описатель сетевого сервиса
|
||
|
||
Указатель на непрозрачную структуру с информацией о сервисе в сети,
|
||
соответствующем одному модулю E-502. Используется при автоматическом обнаружении
|
||
устройств в локальной сети. Создается при вызове E502_EthSvcBrowseGetEvent()
|
||
и уничтожается с помощью E502_EthSvcRecordFree()
|
||
*****************************************************************************/
|
||
typedef struct st_e502_eth_svc_record *t_e502_eth_svc_record_hnd;
|
||
|
||
/** @} */
|
||
|
||
/***************************************************************************//**
|
||
@addtogroup func_open
|
||
@{
|
||
*******************************************************************************/
|
||
|
||
/***************************************************************************//**
|
||
@brief Получение списка серийных номеров модулей E-502, подключенных по USB
|
||
|
||
Функция возвращает список номеров всех найденных модулей E-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, то в данную переменную сохраняется
|
||
общее число найденных модулей E502
|
||
(может быть больше size).
|
||
@return Если <0 - код ошибки, иначе количество сохраненных
|
||
серийных номеров в массиве serials (всегда <= size)
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_UsbGetSerialList(char serials[][X502_SERIAL_SIZE], uint32_t size,
|
||
uint32_t flags, uint32_t *devcnt);
|
||
|
||
/***************************************************************************//**
|
||
@brief Работает аналогично E502_UsbGetSerialList, только для модулей E16
|
||
******************************************************************************/
|
||
X502_EXPORT(int32_t) E16_UsbGetSerialList(char serials[][X502_SERIAL_SIZE], uint32_t size,
|
||
uint32_t flags, uint32_t *devcnt);
|
||
|
||
/***************************************************************************//**
|
||
@brief Открытие модуля E-502, подключенного по USB, по его серийному номеру
|
||
|
||
Функция устанавливает связь с модулем E-502, подключенным по интерфейсу USB,
|
||
по его серийному номеру.
|
||
|
||
После успешного выполнения этой функции, пользователь получает эксклюзивный
|
||
доступ к модулю через описатель модуля. До закрытия связи с помощью
|
||
X502_Close() никто другой установить связь с модулем не сможет
|
||
(будет возвращена ошибка #X502_ERR_DEVICE_ACCESS_DENIED).
|
||
|
||
Если в качестве серийного номера передан NULL или пустая строка, то будет
|
||
установлена связь с первым найденным модулем, с которым получится успешно
|
||
ее установить.
|
||
Если в системе нет ни одного модуля, то будет возвращена ошибка
|
||
#X502_ERR_DEVICE_NOT_FOUND. Если в системе присутствуют модули E-502, но
|
||
соединение ни с одним из них установить не удалось, то будет возвращена
|
||
ошибка, полученная при попытке установить соединение с последним
|
||
найденным модулем.
|
||
|
||
После завершения работы с устройством соединение должно быть закрыто с
|
||
помощью X502_Close().
|
||
|
||
@param[in] hnd Описатель устройства.
|
||
@param[in] serial Указатель на строку с серийным номером открываемого
|
||
модуля или NULL.
|
||
@return Код ошибки.
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_OpenUsb(t_x502_hnd hnd, const char *serial);
|
||
|
||
/***************************************************************************//**
|
||
@brief Работает аналогично E502_OpenUsb, только для модулей E16
|
||
******************************************************************************/
|
||
X502_EXPORT(int32_t) E16_OpenUsb(t_x502_hnd hnd, const char *serial);
|
||
|
||
/***************************************************************************//**
|
||
@brief Открытие модуля E-502 по IP-адресу
|
||
|
||
Функция устанавливает связь с модулем E-502, подключенным по интерфейсу Ethernet,
|
||
для которого установлен указанный адрес IPv4.
|
||
|
||
После завершения работы с устройством соединение должно быть закрыто с
|
||
помощью X502_Close().
|
||
|
||
@param[in] hnd Описатель устройства.
|
||
@param[in] ip_addr IPv4 адрес модуля в виде 32-битного слова.
|
||
Для адреса "a.b.c.d" ip_addr = (a<<24)|(b<<16)|(c<<8)|d.
|
||
@param[in] flags Флаги, управляющие работой функции. Резерв, должны быть всегда 0.
|
||
@param[in] tout Время на установления подключения в мс. Если подключение
|
||
не удастся завершить за заданное время, то функция вернет ошибку.
|
||
@return Код ошибки.
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_OpenByIpAddr(t_x502_hnd hnd, uint32_t ip_addr,
|
||
uint32_t flags, uint32_t tout);
|
||
|
||
/***************************************************************************//**
|
||
@brief Открытие модуля E-16 по IP-адресу
|
||
|
||
Функция устанавливает связь с модулем E-16, подключенным по интерфейсу Ethernet,
|
||
для которого установлен указанный адрес IPv4.
|
||
|
||
После завершения работы с устройством соединение должно быть закрыто с
|
||
помощью X502_Close().
|
||
|
||
@param[in] hnd Описатель устройства.
|
||
@param[in] ip_addr IPv4 адрес модуля в виде 32-битного слова.
|
||
Для адреса "a.b.c.d" ip_addr = (a<<24)|(b<<16)|(c<<8)|d.
|
||
@param[in] flags Флаги, управляющие работой функции. Резерв, должны быть всегда 0.
|
||
@param[in] tout Время на установления подключения в мс. Если подключение
|
||
не удастся завершить за заданное время, то функция вернет ошибку.
|
||
@return Код ошибки.
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E16_OpenByIpAddr(t_x502_hnd hnd, uint32_t ip_addr,
|
||
uint32_t flags, uint32_t tout);
|
||
|
||
|
||
/** @} */
|
||
|
||
/***************************************************************************//**
|
||
@addtogroup func_devrec
|
||
@{
|
||
*******************************************************************************/
|
||
|
||
/***************************************************************************//**
|
||
@brief Получить список записей, соответствующих подключенным модулям E502
|
||
|
||
Функция находит все подключенные по интерфейсу USB модули E-502 и инициализирует
|
||
записи о каждом найденном устройстве и сохраняет их в переданный список
|
||
(если не нулевой).
|
||
Возвращенные в списке записи должны быть очищены после использования
|
||
с помощью X502_FreeDevRecordList() (также в случае повторного
|
||
вызов E502_UsbGetDevRecordsList() с тем же массивом записей, записи, полученные
|
||
при предыдущем вызове, должны быть сперва очищены).
|
||
|
||
@param[out] list Массив для сохранения записей о найденных устройствах.
|
||
Должен содержать место для сохранения не менее size записей.
|
||
Может быть NULL, если size=0, а devcnt!=NULL, в случае,
|
||
если нужно только получить количество модулей в системе.
|
||
@param[in] size Определяет, сколько максимально записей может
|
||
быть сохранено в массив list. Будут сохранены только
|
||
первые size записей, если устройств найдено больше.
|
||
@param[in] flags Флаги из #t_x502_getdevs_flags, определяющие поведение
|
||
функции.
|
||
@param[out] devcnt Если не нулевой указатель, то в данную переменную сохраняется
|
||
общее число найденных модулей E-502, подключенных по
|
||
интерфейсу USB (может быть больше size).
|
||
@return Если <0 --- код ошибки, иначе количество сохраненных
|
||
записей о найденных устройствах (всегда <= size).
|
||
Именно на этот размер нужно сделать в дальнейшем
|
||
X502_FreeDevRecordList() для освобождения памяти,
|
||
выделенной под информацию, на которую ссылается запись.
|
||
******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_UsbGetDevRecordsList(t_x502_devrec* list, uint32_t size,
|
||
uint32_t flags, uint32_t* devcnt) ;
|
||
|
||
|
||
/***************************************************************************//**
|
||
@brief Аналогично E502_UsbGetDevRecordsList, получить список записей, соответствующих подключенным модулям E16
|
||
******************************************************************************/
|
||
X502_EXPORT(int32_t) E16_UsbGetDevRecordsList(t_x502_devrec* list, uint32_t size,
|
||
uint32_t flags, uint32_t* devcnt) ;
|
||
|
||
/***************************************************************************//**
|
||
@brief Аналогично E502_UsbGetDevRecordsList, получить список записей, соответствующих подключенным модулям E14-440
|
||
******************************************************************************/
|
||
X502_EXPORT(int32_t) E440_UsbGetDevRecordsList(t_x502_devrec* list, uint32_t size,
|
||
uint32_t flags, uint32_t* devcnt) ;
|
||
|
||
|
||
/***************************************************************************//**
|
||
@brief Получить список записей, соответствующих подключенным модулям E502
|
||
|
||
Делает тоже самое что и E502_UsbGetDevRecordsList, отличие в том что можно указать idVendor и idProduct USB устройства
|
||
|
||
@param[in] idVendor idVendor
|
||
@param[in] idProduct idProduct
|
||
@return Если <0 --- код ошибки, иначе количество сохраненных
|
||
записей о найденных устройствах (всегда <= size).
|
||
Именно на этот размер нужно сделать в дальнейшем
|
||
X502_FreeDevRecordList() для освобождения памяти,
|
||
выделенной под информацию, на которую ссылается запись.
|
||
******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_UsbGetDevRecordsList2(t_x502_devrec *list, uint32_t size,
|
||
uint32_t flags, uint32_t *devcnt, uint16_t idVendor, uint16_t idProduct);
|
||
|
||
/***************************************************************************//**
|
||
@brief Создание записи о устройстве с указанным IP-адресом
|
||
|
||
Данная функция инициализирует запись о устройстве, подключенном по интерфейсу
|
||
Ethernet, с указанным IPv4 адресом. Данная функция только создает запись, но
|
||
не проверяет наличие соответствующего устройства. Подключение к модулю
|
||
выполняется аналогично другим записям через X502_OpenByDevRecord().
|
||
|
||
@param[out] devrec Указатель на запись устройства, которая должна быть
|
||
создана и заполнена нужными параметрами.
|
||
@param[in] ip_addr IPv4 адрес модуля в виде 32-битного слова (аналогично
|
||
параметру ip_addr функции E502_OpenByIpAddr()).
|
||
@param[in] flags Флаги. Резерв, должны быть всегда 0.
|
||
@param[in] tout Время для установления подключения в мс.
|
||
Данное время сохраняется в записи и используется при
|
||
последующем вызове X502_OpenByDevRecord(). Если подключение
|
||
не удастся завершить за это время, то функция
|
||
X502_OpenByDevRecord() вернет ошибку.
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_MakeDevRecordByIpAddr(t_x502_devrec *devrec, uint32_t ip_addr,
|
||
uint32_t flags, uint32_t tout);
|
||
|
||
/***************************************************************************//**
|
||
@brief Создание записи о устройстве с указанным IP-адресом
|
||
|
||
Работает аналогично функции E502_MakeDevRecordByIpAddr.
|
||
Для поддержки E16 добавлен параметр *devname.
|
||
|
||
@param[out] devrec Указатель на запись устройства, которая должна быть
|
||
создана и заполнена нужными параметрами.
|
||
@param[in] ip_addr IPv4 адрес модуля в виде 32-битного слова (аналогично
|
||
параметру ip_addr функции E502_OpenByIpAddr()).
|
||
@param[in] flags Флаги. Резерв, должны быть всегда 0.
|
||
@param[in] tout Время для установления подключения в мс.
|
||
Данное время сохраняется в записи и используется при
|
||
последующем вызове X502_OpenByDevRecord(). Если подключение
|
||
не удастся завершить за это время, то функция
|
||
X502_OpenByDevRecord() вернет ошибку.
|
||
@param[in] devname Имя устройства "E16" или "E502".
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_MakeDevRecordByIpAddr2(t_x502_devrec *devrec, uint32_t ip_addr,
|
||
uint32_t flags, uint32_t tout, char const *devname);
|
||
|
||
|
||
/***************************************************************************//**
|
||
@brief Установка TCP-порта управляющего соединения для записи о устройстве
|
||
|
||
Данная функция позволяет изменить TCP-порт управляющего соединения модуля
|
||
E-502. Это может быть необходимо, если модуль E-502 и хост, с которого
|
||
необходимо установить соединение, находятся в разных сетях и адрес модуля
|
||
E-502 не доступен из сети хоста. В этом случае требуется настройка проброса
|
||
портов на маршрутизаторе и при наличие более одного такого модуля E-502, т.к
|
||
все соединения идут с маршрутизитором, то различить эти модули можно только
|
||
по TCP-порту, если настроить разные порты при пробросе.
|
||
В этом случае помимо порта управляющего соединения, необходимо изменить и
|
||
порт соединения для передачи данных, вызвав E502_EthDevRecordSetDataPort().
|
||
|
||
Данная функция должна быть вызвана для записи, созданной до этого с помощью
|
||
E502_MakeDevRecordByIpAddr() и до открытия соединения с помощью
|
||
X502_OpenByDevRecord().
|
||
|
||
@param[in] devrec Указатель на запись устройства, в которой нужно изменить
|
||
управляющий TCP-порт.
|
||
@param[in] cmd_port Новое значение TCP-порта для управляющего соединения
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthDevRecordSetCmdPort(t_x502_devrec *devrec, uint16_t cmd_port);
|
||
|
||
/***************************************************************************//**
|
||
@brief Установка TCP-порта соединения передачи данных для записи о устройстве
|
||
|
||
Функция аналогична E502_EthDevRecordSetCmdPort(), но изменяет TCP-порт для
|
||
соединения, по которому идет обмен данных потоков ввода-вывода.
|
||
|
||
@param[in] devrec Указатель на запись устройства, в которой нужно изменить
|
||
управляющий TCP-порт.
|
||
@param[in] data_port Новое значение TCP-порта для соединения передачи данных
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthDevRecordSetDataPort(t_x502_devrec *devrec, uint16_t data_port);
|
||
|
||
|
||
|
||
/***************************************************************************//**
|
||
@brief Создание записи о устройстве по описателю сетевого сервиса
|
||
|
||
Данная функция инициализирует запись о устройстве, подключенном по интерфейсу
|
||
Ethernet, соответствующему сетевому сервису, на который указывает переданный
|
||
описатель сетевого сервиса. Этот описатель может быть получен с помощью
|
||
функций поиска сетевых сервисов, соответствующих модулям E-502, в локальной сети.
|
||
Данная функция только создает запись, но не проверяет наличие соответствующего
|
||
устройства. Подключение к модулю выполняется аналогично другим
|
||
записям через X502_OpenByDevRecord().
|
||
Вся необходимая информация из описателя сетевого сервиса сохраняется в записи
|
||
о устройстве, т.е. после вызова данной фунции при желании описатель
|
||
сетевого сервиса можно сразу освобождать с помощью E502_EthSvcRecordFree().
|
||
|
||
@param[out] devrec Указатель на запись устройства, которая должна быть
|
||
создана и заполнена нужными параметрами.
|
||
@param[in] svc Описатель сетевого сервиса, полученный с помощью
|
||
E502_EthSvcBrowseGetEvent().
|
||
@param[in] flags Флаги. Резерв, должны быть всегда 0.
|
||
@param[in] tout Время для установления подключения в мс.
|
||
Данное время сохраняется в записи и используется при
|
||
последующем вызове X502_OpenByDevRecord(). Если подключение
|
||
не удастся завершить за это время, то функция
|
||
X502_OpenByDevRecord() вернет ошибку.
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_MakeDevRecordByEthSvc(t_x502_devrec *devrec, t_e502_eth_svc_record_hnd svc,
|
||
uint32_t flags, uint32_t tout);
|
||
|
||
/** @} */
|
||
|
||
|
||
/***************************************************************************//**
|
||
@addtogroup func_eth_config Функции для настройки сетевых параметров модуля E502
|
||
@{
|
||
*******************************************************************************/
|
||
|
||
|
||
|
||
|
||
/***************************************************************************//**
|
||
@brief Получение текущего IP-адреса устройства
|
||
|
||
Функция возвращает IP-адрес устройства по которому было установлено соединение.
|
||
То есть связь с устройством должна быть уже установлена и кроме того,
|
||
установлена именно по интерфейсу Ethernet.
|
||
@param[in] hnd Описатель устройства
|
||
@param[out] ip_addr Текущий IPv4 адрес модуля в виде 32-битного слова (аналогично
|
||
параметру ip_addr функции E502_OpenByIpAddr()).
|
||
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_GetIpAddr(t_x502_hnd hnd, uint32_t *ip_addr);
|
||
|
||
|
||
|
||
/***************************************************************************//**
|
||
@brief Создание описателя конфигурации сетевого интерфейса
|
||
|
||
Создание описателя конфигурации сетевого интерфейса.
|
||
В случае успешного выделения памяти инициализирует поля описателя
|
||
значениями по-умолчанию.
|
||
@return NULL в случае ошибки, иначе - описатель модуля
|
||
*******************************************************************************/
|
||
X502_EXPORT(t_e502_eth_config_hnd) E502_EthConfigCreate(void);
|
||
|
||
/***************************************************************************//**
|
||
@brief Освобождение описателя конфигурации сетевого интерфейса.
|
||
|
||
Освобождение памяти, выделенной под описатель конфигурации сетевого интерфейса
|
||
с помощью E502_EthConfigCreate().
|
||
После этого описатель уже использовать нельзя, независимо от возвращенного
|
||
значения!
|
||
@param[in] cfg Описатель конфигурации сетевого интерфейса
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthConfigFree(t_e502_eth_config_hnd cfg);
|
||
|
||
|
||
|
||
/***************************************************************************//**
|
||
@brief Чтение текущей сетевой конфигурации интерфейса
|
||
|
||
Функция читает текущие параметры интерфейса и сохраняет их в структуру,
|
||
на которую указывает созданный с помощью E502_EthConfigCreate() описатель
|
||
конфигурации сетевого интерфейса.
|
||
|
||
Соединение с устройством при этом должно быть установлено, но может быть
|
||
установлено по любому поддерживаемому интерфейсу.
|
||
|
||
@param[in] hnd Описатель устройства из которого нужно считать конфигурацию
|
||
@param[in,out] cfg Описатель конфигурации сетевого интерфейса
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthConfigRead(t_x502_hnd hnd, t_e502_eth_config_hnd cfg);
|
||
|
||
|
||
/***************************************************************************//**
|
||
@brief Запись сетевой конфигурации интерфейса
|
||
|
||
Функция передает модулю конфигурацию сетевого интерфейса, которую модуль
|
||
должен сохранить в своей энергонезависимой памяти.
|
||
|
||
При успешном выполнении данной функции модуль отключает Ethernet-интерфейс,
|
||
настраивает его на новые параметры и снова его инициализирует, поэтому
|
||
если соединение с устройством установлено по сети, то дальнейшая работа
|
||
с устройством будет уже не возможна --- необходимо закрыть связь с устройством
|
||
и установить ее заново.
|
||
|
||
Для изменения конфигурации необходимо передать пароль для конфигурации
|
||
(пустая строка, если пароль не был установлен). При работе по USB интерфейсу
|
||
в качестве пароля можно передать текущий серийный номер устройства
|
||
(для случая, если забыт установленный пароль).
|
||
|
||
@param[in] hnd Описатель устройства из которого нужно считать конфигурацию
|
||
@param[in] cfg Описатель конфигурации сетевого интерфейса
|
||
@param[in] passwd Строка с паролем для изменения конфигурации
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthConfigWrite(t_x502_hnd hnd, t_e502_eth_config_hnd cfg,
|
||
const char *passwd);
|
||
|
||
|
||
/***************************************************************************//**
|
||
@brief Копирование содержимого сетевой конфигурации интерфейса
|
||
|
||
Функция выполняет копирование всех параметров одной созданной конфигурации
|
||
в другую конфирурацию, создавая полную копию.
|
||
|
||
@param[in] src_cfg Описатель исходной сетевой конфигурации интерфейса,
|
||
содержимое которой нужно скопировать.
|
||
@param[out] dst_cfg Описатель сетевой конфигурации интерфейса, в которую
|
||
нужно скопировать содержимое исходной конфигурации
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthConfigCopy(t_e502_eth_config_hnd src_cfg,
|
||
t_e502_eth_config_hnd dst_cfg);
|
||
|
||
/***************************************************************************//**
|
||
@brief Определение, разрешен ли интерфейс Ethernet
|
||
|
||
Функция возвращает, разрешен ли интерфейс Ethernet в указанной конфигурации.
|
||
Если интерфейс не разрешен, то Ethernet контроллер полностью отключен.
|
||
@param[in] cfg Описатель конфигурации сетевого интерфейса
|
||
@param[out] en Если интерфейс разрешен, то в данной переменной возвращается 1,
|
||
иначе --- 0
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthConfigGetEnabled(t_e502_eth_config_hnd cfg, uint32_t *en);
|
||
|
||
/***************************************************************************//**
|
||
@brief Разрешение интерфейса Ethernet
|
||
|
||
Функция устанавливает, разрешена ли работа по интерфейсу Ethernet.
|
||
Если интерфейс не разрешен, то Ethernet контроллер полностью отключен.
|
||
@param[in] cfg Описатель конфигурации сетевого интерфейса
|
||
@param[in] en 0 означает запрет интерфейса Ethernet, 1 --- разрешение
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthConfigSetEnabled(t_e502_eth_config_hnd cfg, uint32_t en);
|
||
/***************************************************************************//**
|
||
@brief Определение, разрешено ли автоматическое получение параметров IP
|
||
|
||
Функция возвращает, разрешено ли автоматическое получение параметров IP
|
||
(IP-адрес, маска подсети, адрес шлюза) с использованием DHCP/linklocal или
|
||
используются статически заданные параметры.
|
||
@param[in] cfg Описатель конфигурации сетевого интерфейса
|
||
@param[out] en Если разрешено автоматическое получение параметров, то
|
||
возвращается 1, иначе --- 0
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthConfigGetAutoIPEnabled(t_e502_eth_config_hnd cfg, uint32_t *en);
|
||
/***************************************************************************//**
|
||
@brief Разрешение автоматического получения параметров IP
|
||
|
||
Функция устанавливает, разрешено ли автоматическое получение параметров IP
|
||
(IP-адрес, маска подсети, адрес шлюза) с использованием DHCP/linklocal или
|
||
используются статически заданные параметры.
|
||
@param[in] cfg Описатель конфигурации сетевого интерфейса
|
||
@param[in] en Если разрешено автоматическое получение параметров, то
|
||
возвращается 1, иначе --- 0
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthConfigSetAutoIPEnabled(t_e502_eth_config_hnd cfg, uint32_t en);
|
||
/***************************************************************************//**
|
||
@brief Получить состояние автоматического получения параметров IP
|
||
|
||
Функция возвращает, получил ли модуль параметры IP
|
||
(IP-адрес, маска подсети, адрес шлюза) с использованием DHCP/linklocal
|
||
@param[in] cfg Описатель конфигурации сетевого интерфейса
|
||
@param[out] state Состояние автоматического получения параметров IP
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthConfigGetAutoIPState(t_e502_eth_config_hnd cfg, uint32_t *state);
|
||
|
||
/***************************************************************************//**
|
||
@brief Определение, разрешен ли пользовательский MAC-адрес
|
||
|
||
Функция возвращает, разрешен ли MAC-адрес, заданный пользователем, или
|
||
используется заводской MAC-адрес.
|
||
|
||
@param[in] cfg Описатель конфигурации сетевого интерфейса.
|
||
@param[out] en Если разрешен пользовательский MAC-адрес, то
|
||
возвращается 1, иначе (если используется заводской) --- 0
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthConfigGetUserMACEnabled(t_e502_eth_config_hnd cfg, uint32_t *en);
|
||
/***************************************************************************//**
|
||
@brief Определение, разрешен ли пользовательский MAC-адрес
|
||
|
||
Функция возвращает, разрешен ли MAC-адрес, заданный пользователем, или
|
||
используется заводской MAC-адрес.
|
||
|
||
@param[in] cfg Описатель конфигурации сетевого интерфейса.
|
||
@param[in] en Если разрешен пользовательский MAC-адрес, то
|
||
возвращается 1, иначе (если используется заводской) --- 0
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthConfigSetUserMACEnabled(t_e502_eth_config_hnd cfg, uint32_t en);
|
||
|
||
/***************************************************************************//**
|
||
@brief Получение установленного статического IP-адреса
|
||
|
||
Функция возвращает заданный в конфигурации статический IP-адрес, который
|
||
используется устройством, если запрещено автоматическое получение IP-параметров.
|
||
|
||
@param[in] cfg Описатель конфигурации сетевого интерфейса.
|
||
@param[out] ip_addr Заданный IP-адрес в виде 32-битного слова (аналогично
|
||
параметру ip_addr функции E502_OpenByIpAddr()).
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthConfigGetIPv4Addr(t_e502_eth_config_hnd cfg, uint32_t *ip_addr);
|
||
/***************************************************************************//**
|
||
@brief Установка статического IP-адреса
|
||
|
||
Функция устанавливает в конфигурации заданный статический IP-адрес, который
|
||
будет использоваться устройством, если запрещено автоматическое получение IP-параметров.
|
||
|
||
@param[in] cfg Описатель конфигурации сетевого интерфейса.
|
||
@param[in] ip_addr Устанавливаемый IP-адрес в виде 32-битного слова (аналогично
|
||
параметру ip_addr функции E502_OpenByIpAddr()).
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthConfigSetIPv4Addr(t_e502_eth_config_hnd cfg, uint32_t ip_addr);
|
||
|
||
/***************************************************************************//**
|
||
@brief Получение установленной статической маски подсети
|
||
|
||
Функция возвращает заданное в конфигурации значение маски подсети, которая
|
||
используется устройством, если запрещено автоматическое получение IP-параметров.
|
||
|
||
@param[in] cfg Описатель конфигурации сетевого интерфейса.
|
||
@param[out] mask Маска подсети в виде 32-битного слова (аналогично
|
||
параметру ip_addr функции E502_OpenByIpAddr()).
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthConfigGetIPv4Mask(t_e502_eth_config_hnd cfg, uint32_t *mask);
|
||
/***************************************************************************//**
|
||
@brief Установка статической маски подсети
|
||
|
||
Функция устанавливает в конфигурации значение маски подсети, которая будет
|
||
использоваться устройством, если запрещено автоматическое получение IP-параметров.
|
||
|
||
@param[in] cfg Описатель конфигурации сетевого интерфейса.
|
||
@param[in] mask Устанавливаемое значение маски подсети в виде 32-битного слова
|
||
(аналогично параметру ip_addr функции E502_OpenByIpAddr()).
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthConfigSetIPv4Mask(t_e502_eth_config_hnd cfg, uint32_t mask);
|
||
|
||
/***************************************************************************//**
|
||
@brief Получение установленного статического адреса шлюза
|
||
|
||
Функция возвращает заданное в конфигурации значение адреса шлюза, который
|
||
используется устройством, если запрещено автоматическое получение IP-параметров.
|
||
|
||
@param[in] cfg Описатель конфигурации сетевого интерфейса.
|
||
@param[out] gate Адрес шлюза в виде 32-битного слова (аналогично
|
||
параметру ip_addr функции E502_OpenByIpAddr()).
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthConfigGetIPv4Gate(t_e502_eth_config_hnd cfg, uint32_t *gate);
|
||
/***************************************************************************//**
|
||
@brief Установка статического адреса шлюза
|
||
|
||
Функция устанавливает в конфигурации значение адреса шлюза, который
|
||
будет использоваться устройством, если запрещено автоматическое получение IP-параметров.
|
||
|
||
@param[in] cfg Описатель конфигурации сетевого интерфейса.
|
||
@param[in] gate Устанавливаемое значение адреса шлюза в виде 32-битного слова
|
||
(аналогично параметру ip_addr функции E502_OpenByIpAddr()).
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthConfigSetIPv4Gate(t_e502_eth_config_hnd cfg, uint32_t gate);
|
||
|
||
/***************************************************************************//**
|
||
@brief Получение установленного пользовательского MAC-адреса
|
||
|
||
Функция возвращает заданное в конфигурации значение пользовательского MAC-адреса,
|
||
который используется устройством при явном его разрешении (см.
|
||
E502_EthConfigSetUserMACEnabled()).
|
||
|
||
@param[in] cfg Описатель конфигурации сетевого интерфейса.
|
||
@param[out] mac Пользовательский MAC-адрес устройства в виде массива из
|
||
#X502_MAC_ADDR_SIZE байт в порядке записи адреса
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthConfigGetUserMac(t_e502_eth_config_hnd cfg, uint8_t *mac);
|
||
/***************************************************************************//**
|
||
@brief Установка пользовательского MAC-адреса
|
||
|
||
Функция устанавливает в конфигурации значение пользовательского MAC-адреса,
|
||
который будет использоваться устройством при явном его разрешении (см.
|
||
E502_EthConfigSetUserMACEnabled()).
|
||
|
||
@param[in] cfg Описатель конфигурации сетевого интерфейса.
|
||
@param[in] mac Устанавливаемое значение пользовательского MAC-адрес устройства
|
||
в виде массива из #X502_MAC_ADDR_SIZE байт в порядке записи адреса
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthConfigSetUserMac(t_e502_eth_config_hnd cfg, const uint8_t *mac);
|
||
/***************************************************************************//**
|
||
@brief Получение заводского MAC-адреса устройства
|
||
|
||
Функция возвращает значение заводского MAC-адреса устройства, которому
|
||
соответствует переданная первым параметром конфигурация.
|
||
Заводской MAC-адрес, используемый устройством по-умолчанию, записывается
|
||
производителем (в "Л Кард") при производстве устройства вместе с его серийным
|
||
номером и не может быть изменен пользователем. Если пользователю нужно
|
||
изменить MAC-адрес устройства, то он должен задать пользовательский
|
||
MAC-адрес с помощью E502_EthConfigGetUserMac() и разрешить его использование
|
||
через E502_EthConfigSetUserMACEnabled(). При этом всегда есть возможность
|
||
снова вернуться к использованию оригинального заводского MAC-адреса.
|
||
|
||
|
||
@param[in] cfg Описатель конфигурации сетевого интерфейса.
|
||
@param[out] mac Заводской MAC-адрес устройства в виде массива из
|
||
#X502_MAC_ADDR_SIZE байт в порядке записи адреса
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthConfigGetFactoryMac(t_e502_eth_config_hnd cfg, uint8_t *mac);
|
||
|
||
|
||
/***************************************************************************//**
|
||
@brief Получение установленного имени экземпляра устройства
|
||
|
||
Функция возвращает заданное пользователем имя экземпляра устройства. Данное
|
||
имя может использоваться для обнаружения устройства в сети. Если не задано,
|
||
то используется имя, образованное названием устройства и его серийным номером.
|
||
Данное имя должно быть уникально в пределах сети.
|
||
|
||
@param[in] cfg Описатель конфигурации сетевого интерфейса.
|
||
@param[out] name Оканчивающаяся нулем строка с заданным именем экземпляра устройства в формате
|
||
UTF-8. Массив должен быть рассчитан на #X502_INSTANCE_NAME_SIZE
|
||
байт данных.
|
||
@return Код ошибки.
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthConfigGetInstanceName(t_e502_eth_config_hnd cfg, char *name);
|
||
/***************************************************************************//**
|
||
@brief Установка имени экземпляра устройства
|
||
|
||
Функция устанавливает имя экземпляра устройства, которое может использоваться
|
||
для обнаружения устройства локальной в сети.
|
||
|
||
@param[in] cfg Описатель конфигурации сетевого интерфейса.
|
||
@param[in] name Оканчивающаяся нулем строка с заданным именем экземпляра устройства в формате
|
||
UTF-8. Максимальный размер массива (включая завершающий ноль)
|
||
составляет #X502_INSTANCE_NAME_SIZE байт данных.
|
||
@return Код ошибки.
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthConfigSetInstanceName(t_e502_eth_config_hnd cfg, const char *name);
|
||
|
||
|
||
/***************************************************************************//**
|
||
@brief Установка нового пароля для смены конфигурации
|
||
|
||
Функция устанавливает новое значение пароля, которое должно будет использоваться
|
||
для смены конфигурации через E502_EthConfigWrite().
|
||
|
||
При этом значение при сохранении конфигурации с установленным новым паролем
|
||
необходимо для успешной смены конфигурации в E502_EthConfigWrite() передать
|
||
значение пароля, которое было установлено до этого. Если функция завершится
|
||
успешно, то для последующего изменения конфигурации в E502_EthConfigWrite()
|
||
нужно будет передавать уже новое установленное значение пароля.
|
||
|
||
@param[in] cfg Описатель конфигурации сетевого интерфейса.
|
||
@param[in] new_passwd Оканчивающаяся нулем строка, содержащая новое значение
|
||
пароля для смены конфигурации сетевого интерфейса.
|
||
Максимальный размер массива (включая завершающий ноль)
|
||
составляет #X502_PASSWORD_SIZE байт данных.
|
||
@return Код ошибки.
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthConfigSetNewPassword(t_e502_eth_config_hnd cfg, const char *new_passwd);
|
||
|
||
|
||
/** @} */
|
||
|
||
|
||
/***************************************************************************//**
|
||
@addtogroup func_misc
|
||
@{
|
||
*******************************************************************************/
|
||
|
||
|
||
/***************************************************************************//**
|
||
@brief Перевод модуля E-502 в режим загрузчика
|
||
|
||
Функция переводит устройство в режим загрузчика для возможности обновления
|
||
прошивки контроллера Cortex-M4 модуля E-502 с помощью утилиты lboot.
|
||
|
||
В зависимости от используемого текущего интерфейса для соединения с модулем,
|
||
модуль переводится в режим загрузки прошивки по интерфейсу USB (если соединение
|
||
было по USB) или по TFTP (если соединение было по интерфейсу Ethernet).
|
||
|
||
При успешном вызове данной функции дальнейшая работа с текущем соединением невозможна,
|
||
т.е. единственным допустимым следующим вызовом является X502_Close().
|
||
|
||
При переходе в загрузчик находится в режиме загрузчика порядка 30с после чего,
|
||
если не поступало запросов на перепрошивку загрузчик возвращает управление штатной прошивке.
|
||
Пока модуль находится в режиме загрузчика с ним невозможно установить соединение
|
||
с помощью функций данной библиотеки.
|
||
|
||
|
||
@param[in] hnd Описатель устройства.
|
||
@return Код ошибки.
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_SwitchToBootloader(t_x502_hnd hnd);
|
||
|
||
/***************************************************************************//**
|
||
@brief Перезагрузка прошивки ПЛИС
|
||
|
||
По данной команде контроллер Cortex-M4 модуля E-502 выполняет сброс ПЛИС
|
||
и загрузку прошивки ПЛИС из внутренней Flash-памяти.
|
||
|
||
Это сервисная функция, которая используется главным образом для обновления
|
||
прошивки ПЛИС.
|
||
|
||
@param[in] hnd Описатель устройства.
|
||
@return Код ошибки.
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_ReloadFPGA(t_x502_hnd hnd);
|
||
|
||
|
||
|
||
/***************************************************************************//**
|
||
@brief Передача управляющей команды контроллеру Cortex-M4.
|
||
|
||
Функция предназначена для передачи пользовательских управляющих команд
|
||
контроллеру для случая модифицированной прошивки Cortex-M4.
|
||
|
||
|
||
@param[in] hnd Описатель модуля.
|
||
@param[in] cmd_code Код команды - определяет, что за команда выполняется.
|
||
@param[in] par Параметр, передаваемый с командой (значение зависит
|
||
от кода команды).
|
||
@param[in] snd_data Опциональные данные, передаваемые вместе с командой.
|
||
Если данные не передаются, то должен передаваться
|
||
нулевой указатель и snd_size = 0.
|
||
@param[in] snd_size Количество байт, передаваемых в snd_data
|
||
@param[out] rcv_data Массив, в который будут переданы данные, возвращенные
|
||
процессором по завершению команды. Если данные не
|
||
должны возвращаться, то должен передаваться нулевой
|
||
указатель, а rcv_size = 0.
|
||
@param[in] rcv_size Количество байт, которое ожидается, что
|
||
вернет контроллер по выполнению команды. Массив
|
||
rcv_data должен быть рассчитан на данное количество
|
||
слов.
|
||
@param[in] tout Таймаут в течении которого будет ожидаться, когда
|
||
контроллер завершит выполнение команды. Функция
|
||
возвратит управление либо по завершению команды,
|
||
либо по таймауту.
|
||
@param[out] recvd_size Если не является нулевым указателем, то в эту
|
||
переменную будет сохранено количество байт,
|
||
которое реально вернул контроллер после выполнения
|
||
команды (контроллер имеет право вернуть меньше данных,
|
||
чем запрашивалось в rcv_size). Если указатель нулевой,
|
||
то возвращаение меньшего количества данных считается
|
||
ошибкой.
|
||
@return Код ошибки.
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_CortexExecCmd(t_x502_hnd hnd, uint32_t cmd_code, uint32_t par,
|
||
const uint8_t* snd_data, uint32_t snd_size,
|
||
uint8_t* rcv_data, uint32_t rcv_size,
|
||
uint32_t tout, uint32_t* recvd_size);
|
||
|
||
|
||
/** @} */
|
||
|
||
|
||
|
||
/***************************************************************************//**
|
||
@addtogroup func_eth_svc_browse Функции для поиска модулей в локальной сети
|
||
@{
|
||
*******************************************************************************/
|
||
|
||
/***************************************************************************//**
|
||
@brief Начало сеанса поиска модулей в локальной сети
|
||
|
||
При вызове данной функции запускается процесс поиска сервисов, соответствующих
|
||
модулям E-502, в локальной сети и создается контекст текущего сеанса поиска.
|
||
Этот контекст используется для дальнейших вызовов E502_EthSvcBrowseGetEvent().
|
||
После завершения поиска должна быть вызвана функция E502_EthSvcBrowseStop().
|
||
Для запуска сеанса необходима запущенная служба (демон) обнаружения ---
|
||
поддерживаются Bonjour для ОС Windows и Avahi для ОС Linux.
|
||
@param[out] pcontext Указатель, в который при успешном выполнении
|
||
сохраняется контекст сеанса поиска устройств.
|
||
@param[in] flags Флаги (резерв). Должен всегда передаваться 0.
|
||
@return Код ошибки.
|
||
******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthSvcBrowseStart(t_e502_eth_svc_browse_hnd *pcontext,
|
||
uint32_t flags);
|
||
|
||
/***************************************************************************//**
|
||
@brief Получение информации о изменении присутствия модулей в локальной сети
|
||
|
||
Данная функция позволяет как получить список присутствующих модулей
|
||
(сетевых сервисов) в локальной сети, так и отслеживать
|
||
в дальнейшем изменение их состояния.
|
||
|
||
Функция ждет первого изменения состояния и возвращает информацию о нем.
|
||
Информация состоит из события (появление сетевого сервиса, исчезновение,
|
||
изменение параметров) и из описателя сетевого сервиса, которому соответствует событие.
|
||
|
||
После начала поиска с помощью E502_EthSvcBrowseStart() контекст не содержит
|
||
информации о наличие сетевых сервисов. Если уже есть подключенные в локальной сети
|
||
модули E-502, то информация о них будет возвращена в следующих
|
||
E502_EthSvcBrowseGetEvent() с событием #E502_ETH_SVC_EVENT_ADD, за
|
||
каждый вызов по одному устройству.
|
||
|
||
Если за заданный таймаут не произошло ни одного изменения, то функция
|
||
завершится успешно по окончанию таймаута и вернет событие #E502_ETH_SVC_EVENT_NONE.
|
||
|
||
При желании можно продолжать вызвать данную функцию для непрерывного отслеживания
|
||
состояния подключения модулей.
|
||
|
||
@param[in] context Описатель контекста поиска, созданный при вызове
|
||
E502_EthSvcBrowseStart().
|
||
@param[out] svc Если возвращенное событие не равно #E502_ETH_SVC_EVENT_NONE,
|
||
то в данной переменной сохраняется созданный описатель
|
||
сетевого сервиса, соответствующего указанному событию. Этот
|
||
описатель должен быть всегда уничтожен вручную
|
||
с помощью E502_EthSvcRecordFree().
|
||
@param[out] event В данную переменную сохраняется код события (один из
|
||
#t_e502_eth_svc_event). Если за указанное время не
|
||
произошло ни одного события, то возвращается код
|
||
#E502_ETH_SVC_EVENT_NONE.
|
||
@param[out] flags В данной переменной сохраняются дополнительные коды
|
||
флагов (резерв). Может быть передан нулевой указатель,
|
||
если значение флагов не интересует.
|
||
@param[in] tout Таймаут (в мс) на время ожидания события
|
||
@return Код ошибки.
|
||
******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthSvcBrowseGetEvent(t_e502_eth_svc_browse_hnd context,
|
||
t_e502_eth_svc_record_hnd *svc ,
|
||
uint32_t *event, uint32_t *flags,
|
||
uint32_t tout);
|
||
|
||
/***************************************************************************//**
|
||
@brief Останов сеанса поиска модулей в локальной сети
|
||
|
||
При вызове данной функции процесс поиска сетевых сервисов, соответствующий
|
||
указанному контексту, останавливается. Все ресурсы, выделенные на этапе
|
||
E502_EthSvcBrowseStart() освобождаются. Контекст с этого момента становится
|
||
недействительным.
|
||
Вызову E502_EthSvcBrowseStart() всегда должен соответствовать последующий
|
||
вызов E502_EthSvcBrowseStop() для корректного освобождения ресурсов.
|
||
|
||
@param[in] context Описатель контекста поиска, созданный при вызове
|
||
E502_EthSvcBrowseStart().
|
||
@return Код ошибки.
|
||
******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthSvcBrowseStop(t_e502_eth_svc_browse_hnd context);
|
||
|
||
|
||
|
||
/***************************************************************************//**
|
||
@brief Освобождение описателя сетевого сервиса
|
||
|
||
Освобождение памяти, выделенной под описатель сетевого сервиса при вызове
|
||
E502_EthSvcBrowseGetEvent().
|
||
|
||
@param[in] svc Описатель сетевого сервиса
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthSvcRecordFree(t_e502_eth_svc_record_hnd svc);
|
||
|
||
/***************************************************************************//**
|
||
@brief Получить имя экземпляра по описателю сервиса
|
||
|
||
Функция возвращает имя экземпляра сервиса. Это имя соответствует имени,
|
||
которое установлено в сетевых настройках модуля, соответствующего указанному
|
||
сервису, с помощью E502_EthConfigSetInstanceName().
|
||
Следует отметить, что данное имя, в отличие от остальных строк, представлено
|
||
в кодировке UTF-8, которая совпадает с обычной ASCII строкой только для
|
||
символов английского алфавита.
|
||
Функция не выполняет запросов к самому модулю.
|
||
|
||
@param[in] svc Описатель сетевого сервиса
|
||
@param[out] name Массив на #X502_INSTANCE_NAME_SIZE байт, в который будет
|
||
сохранено название экземпляра
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthSvcRecordGetInstanceName(t_e502_eth_svc_record_hnd svc, char *name);
|
||
|
||
/***************************************************************************//**
|
||
@brief Получить серийный номер модуля по описателю сетевого сервиса
|
||
|
||
Функция возвращает серийный номер модуля E-502, соответствующего сетевому
|
||
сервису, на который указывает переданный описатель.
|
||
Функция не выполняет запросов к самому модулю.
|
||
|
||
@param[in] svc Описатель сетевого сервиса
|
||
@param[out] serial Массив на #X502_SERIAL_SIZE байт, в который будет
|
||
сохранен серийный номер
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthSvcRecordGetDevSerial(t_e502_eth_svc_record_hnd svc, char *serial);
|
||
|
||
/***************************************************************************//**
|
||
@brief Получить имя усройства модуля по описателю сетевого сервиса
|
||
|
||
Функция возвращает имя устройства модуля ("E502" или "E16"), соответствующего сетевому
|
||
сервису, на который указывает переданный описатель.
|
||
Функция не выполняет запросов к самому модулю.
|
||
|
||
@param[in] svc Описатель сетевого сервиса
|
||
@param[out] devname Массив на #X502_DEVNAME_SIZE байт, в который будет
|
||
сохранено имя устройства
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthSvcRecordGetDevName(t_e502_eth_svc_record_hnd rec, char *devname);
|
||
|
||
|
||
/***************************************************************************//**
|
||
@brief Получить IP адрес сетевого сервиса
|
||
|
||
Функция получает IP-адрес модуля E-502, соответствующего сетевому
|
||
сервису, на который указывает переданный описатель. Функция при необходимости
|
||
может выполнять запросы к самому модулю для получения этого адреса, если
|
||
информации о адресе нет в кеше.
|
||
|
||
@param[in] svc Описатель сетевого сервиса
|
||
@param[out] addr IP-адрес модуля в виде 32-битного слова (аналогично
|
||
параметру ip_addr функции E502_OpenByIpAddr())
|
||
@param[in] tout Время ожидания ответа от модуля в случае необходимости
|
||
выполнить запрос для установления адреса.
|
||
@return Код ошибки
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthSvcRecordResolveIPv4Addr(t_e502_eth_svc_record_hnd svc,
|
||
uint32_t *addr, uint32_t tout);
|
||
|
||
|
||
/***************************************************************************//**
|
||
@brief Проверка, указывают ли оба описателя на один экземпляр сервиса
|
||
|
||
Функция проверяет, указывают ли оба описателя сервисов на один и тот же
|
||
экземпляр. Если приложение сохраняет список описателей сервисов при их
|
||
обнаружении, то данная функция может использоваться, например, при событиях
|
||
#E502_ETH_SVC_EVENT_REMOVE или #E502_ETH_SVC_EVENT_CHANGED, чтобы понять,
|
||
какой записи в сохраненном списке соответствует событие (т.е. функция
|
||
E502_EthSvcBrowseGetEvent() вернет новый описатель, но указывающий на тот
|
||
же экземпляр, что и при событии #E502_ETH_SVC_EVENT_ADD)
|
||
|
||
@param[in] svc1 Первый описатель сетевого сервиса для сравнения
|
||
@param[in] svc2 Второй описатель сетевого сервиса для сравнения
|
||
@return Код ошибки. Возвращает #X502_ERR_OK, если оба описателя
|
||
указывают на один экземпляр.
|
||
*******************************************************************************/
|
||
X502_EXPORT(int32_t) E502_EthSvcRecordIsSameInstance(t_e502_eth_svc_record_hnd svc1,
|
||
t_e502_eth_svc_record_hnd svc2);
|
||
|
||
/** @} */
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
#endif // E502API_H
|