реклама на сайте
подробности

 
 
> TCP/IP стек wIP в модулях Wavecom, Получение кода ошибки
Eddy_Og
сообщение Sep 13 2007, 09:14
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 36
Регистрация: 16-08-06
Пользователь №: 19 579



В новых модулях Wavecom, Q24PL, Q2686, используется TCP/IP стек wIP (а не eDLib, как в старых модулях Q2406B). При работе с этим новым стеком, с сокетами в режиме клиента, при возникновени ошибок можно получить тип ошибки. По описанию это делается функцией
wip_getOpts(socket,WIP_COPT_ERROR, err1,WIP_COPT_END);
Но при попытке ей воспользоваться в любом случае возвращается ошибка WIP_CERR_NOT_SUPPORTED, т.е. якобы WIP_COPT_ERROR - недопустимая опция. При том, что компиляция выполняется и эта опция в заголовочных файлах присутствует. Эта же функция, но возвращающая другие параметры, например, размер буфера записи
wip_getOpts(socket,WIP_COPT_SND_BUFSIZE,allbuf,WIP_COPT_NWRITE, freebuf,WIP_COPT_END);
успешно выполняется. В чем может быть дело? Код ошибки нужен, так как в зависимости от него будет приниматься решение, то-ли надо сразу переоткрывать сокет, то-ли сделать паузу, то-ли вообще все отвалилось и надо заново открывать GPRS-сессию.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
alexQ
сообщение Sep 19 2007, 06:27
Сообщение #2


Знающий
****

Группа: Banned
Сообщений: 520
Регистрация: 6-02-06
Пользователь №: 14 040



2Eddy_Og

>По ошибке с wip_getOpts(socket,WIP_COPT_ERROR, err1,WIP_COPT_END) можете чего-нибудь >подсказать? Техподдержку Компэла интенсивно дергал, они сказали что сами с этим не работали и >переадресуют вопрос разработчикам модулей, т.е. во Францию. И вот уже почти 3 недели тянется эта >волынка.

если ошибка с плюсом, то что-то не так с SMTP, если минусовая то относится к библиотеке сокетов,
соответственно и смотреть нужно нужные коды в этих разделах.
расписанов документации WIP_Open_AT_IP_Connectivity_Development_Guide_V3_00.pdf
этот файл лежит в каталоге C:\OpenAT\Plug-ins\WIP\3.00.06\doc\
Go to the top of the page
 
+Quote Post
Eddy_Og
сообщение Sep 20 2007, 11:32
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 36
Регистрация: 16-08-06
Пользователь №: 19 579



Цитата
если ошибка с плюсом, то что-то не так с SMTP, если минусовая то относится к библиотеке сокетов,
соответственно и смотреть нужно нужные коды в этих разделах.
расписанов документации WIP_Open_AT_IP_Connectivity_Development_Guide_V3_00.pdf
этот файл лежит в каталоге C:\OpenAT\Plug-ins\WIP\3.00.06\doc\


Ситуация такая. Используется не SMTP, а только уровень сокетов. С помощью wip_TCPClientCreate модуль коннектится к серверу и начинает время от времени гнать туда данные. Если возникает какая-то ошибка, приходит событие WIP_CEV_ERROR. Теперь задача понять, по какой причине ошибка. В документации по стеку написано, что это делается вызовом функции wip_getOpts с опцией WIP_COPT_ERROR: wip_getOpts(socket,WIP_COPT_ERROR,&err1,WIP_COPT_END) . При этом сама функция возвращает ошибку или успешность ее вызова, а код ошибки оказывается в переменной err1 (тип s32). Проблема в том, что функция завершается с ошибкой WIP_CERR_NOT_SUPPORTED, т.е. что опция якобы неправильная. Функция же сама по себе живая, с другими опциями она работает и успешно возвращает запрошенные данные, например wip_getOpts(socket,WIP_COPT_SND_BUFSIZE,&allbuf,WIP_COPT_NWRITE,&freebuf,WIP_COPT_END).

Еще покопался в примерах, выход из положения вроде нашелся, в callback-функции evh(wip_event_t *ev, void *ctx) код ошибки можно получить как ev->content.error.errnum . Но в документации об этом упомянтуто только в одном месте и мельком, я нашел только целенаправленным поиском.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 4th September 2025 - 00:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01611 секунд с 7
ELECTRONIX ©2004-2016