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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Q64 организация TCP/IP с помощью OpenAt, Использование adl_grps в WIP плагине
parfum
сообщение Mar 31 2010, 13:32
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 31-12-08
Пользователь №: 42 862



Раньше свои решения реализовывал на GR64, так как его сняли, начал смотреть Q64. Брал пример смотрел как работает и так далее. Что уже сделал:

Инициализирую симку при помощи adl_simSubscribe(<sim_handler>,<pin_code>),
дожидаюсь результата: ADL_SIM_EVENT_FULL_INIT;
далее проверяю наличие в сети значения: NETWORK_HOME_REG;
после начинаю с GPRS, определяю контекст:
// adl_gprsSetupParams_t gprs_setup;
// u8 ctx_id=1;
adl_gprsSetup (ctx_id,gprs_setup);
ожидаю результата: ADL_GPRS_EVENT_SETUP_OK;
следую дальше, аттачу GPRS и активиру контекст:
запускаю adl_gprsAct(ctx_id), ожидаю сзначений
ADL_GPRS_EVENT_ME_ATTACH...ADL_GPRS_EVENT_ACTIVATE_OK;
после приходится лезть в wip:
инициализирую wip_netInit(), получаю положительный результат: 0;

И вот что делать дальше не понимаю, в GR64 открывал сокет и коннектился, в примерах по WIP
все сетевые работы делаются при помощи WIP функций
wip_bearerOpen(...), wip_bearerStart(...), wip_bearerStart(...) которые поднимают GPRS и активируют контекст,
а далее работа с tcp/ip при помощи wip_TCPClientCreate(PEER_STRADDR,PEER_PORT....).

Так вот непойму, как подсунуть активированный при помощи adl функций GPRS для активации сокета
и tcp/ip коннекта, а не проделывать GPRS манипуляции с помощью wip_bearer* функций,
ну типа засунуть куда нибудь готовый CID, а далее wip_TCPClientCreate(...).
От Sierra Wireless ответа ждать долго придется, я так полагаю. Заранее спасибо.
Go to the top of the page
 
+Quote Post
bolmoe
сообщение Apr 1 2010, 08:20
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 121
Регистрация: 5-04-06
Из: Рязань
Пользователь №: 15 830



а после активации GPRS сразу если попробовать wip_TCPClientCreate(...), все должно прокатить...

А почему не используешь wip_bearer?
Go to the top of the page
 
+Quote Post
parfum
сообщение Apr 1 2010, 10:47
Сообщение #3





Группа: Участник
Сообщений: 11
Регистрация: 31-12-08
Пользователь №: 42 862



Цитата(bolmoe @ Apr 1 2010, 12:20) *
а после активации GPRS сразу если попробовать wip_TCPClientCreate(...), все должно прокатить...
А почему не используешь wip_bearer?

В том то и дело что-то не проходит, ошибка в handle вылетает, wip_bearer не использовал, потому что щас переписываю код с GR64 на Q64, и двигаюсь по аналогии, а adl_gprs как то понятней (адекватней), про поведение wip_bearer пока мне не понятно.
На GR-ке поднимал GPRS а далее сокет и tcp соединение, если адрес не доступен другой адрес и т.д., GPRS не трогаю. Вообще как то после GR-64 туговато идет, не нашел в Q64 кода события GRPS_DENIED, когда GPRS запрещен оператором, в Q-ке общая ошибка что ошибка в пароле, что запрет оператора - один код.
В wip_bearerOpen есть указатель на контекст - ему случаем нельзя подсунуть указатель на переменную с номером контескта из adp_gprs ?? или с помощью wip_setCtx чего поиграться?? Если не получиться в этом направлении то сделаю конечно через wip_bearer, но интересней прикрутить к готовому adl-кому GPRS, не пойму в чем проблема.
Go to the top of the page
 
+Quote Post
bolmoe
сообщение Apr 1 2010, 12:53
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 121
Регистрация: 5-04-06
Из: Рязань
Пользователь №: 15 830



Если ты про ctxId, то это указатель на данные, которые ты можешь передать в обработчик bearer events handler, из которого можно запустить tcpCreate...
там у них в документации есть простенький пример через bearer...(у меня FASTRACK GO (Q2686)), а ты там при создании проекта прикрутил wip библиотеку(Пользуешься m2m studio?)?
Не знаю, пригодится или нет...., у меня несколько задач запускаются, так вот..., GPRS только в main task инициализируется, хоть в мурзилке и пишется что tcp можно в любой задаче запустить, у меня не прошло (может что и не так сделал), пришлось в основной задаче крутиться, это достаточно просто там делается через msg сервис, если задача одна, то все делается через bearer events handler
Хотя, честно говоря, не понимаю, почему tcpClientCreate не заработало, там же нет параметров входных от bearer, ctxId - можешь передавать, а можешь не передавать(NULL написать), через этот параметр в обработчик tcp можно передавть параметры, я к примеру передаю структуру, в которой хранятся параметры HTTP запроса на сервак (GET ...HTTP 1.1\r\n)
Go to the top of the page
 
+Quote Post
parfum
сообщение Apr 2 2010, 05:59
Сообщение #5





Группа: Участник
Сообщений: 11
Регистрация: 31-12-08
Пользователь №: 42 862



Цитата(bolmoe @ Apr 1 2010, 16:53) *
(Пользуешься m2m studio?)?

Только для компиляции, нет времени свой make сделать, разберусь, откажусь от этого монстра.

Цитата(bolmoe @ Apr 1 2010, 16:53) *
Хотя, честно говоря, не понимаю, почему tcpClientCreate не заработало, там же нет параметров входных от bearer,

Я то же не понимаю, щас выкину все из кода оставлю только ветку sim->gprs->ip и буду копать глубже. А bearer точно не устанавливает где-то внутрях у себя какие-нибуть указатели на установленный context gprs? В доках как-то все по скромному.
Если не добью до конца, выложу код, может мысли какие появятся.
Go to the top of the page
 
+Quote Post
bolmoe
сообщение Apr 2 2010, 06:37
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 121
Регистрация: 5-04-06
Из: Рязань
Пользователь №: 15 830



Еще раз повторюсь, не забудь "прикрутить" wip библиотеку (это НЕ #include "wip.h")..., она включается на стадии создания проекта..., после этого она добавляется в твой код при компиляции
Go to the top of the page
 
+Quote Post
parfum
сообщение Apr 2 2010, 08:07
Сообщение #7





Группа: Участник
Сообщений: 11
Регистрация: 31-12-08
Пользователь №: 42 862



Цитата(bolmoe @ Apr 2 2010, 10:37) *
Еще раз повторюсь, не забудь "прикрутить" wip библиотеку (это НЕ #include "wip.h")..., она включается на стадии создания проекта..., после этого она добавляется в твой код при компиляции

Это само-собой разумеется, иначе бы wip_bearerStart не отрабатывал бы, а вариант с bearer я попробывал и он работает, ну чтоб исключить проблемы сборки. Когда будет результат (любой), отпишусь.
Go to the top of the page
 
+Quote Post
parfum
сообщение Apr 2 2010, 15:59
Сообщение #8





Группа: Участник
Сообщений: 11
Регистрация: 31-12-08
Пользователь №: 42 862



Вообщем пришёл к выводу, что bearerStart предполагаю не только GPRS поднимает, если есть событие WIP_BEV_IP_CONNECTED. Если поднимаю GPRS через adl а потом wip_TCPClientCreate(PEER_STRADDR,PEER_PORT,my_handler,NULL) то в обработчике сразу появляется WIP_CEV_ERROR. Если делаю все через bearer, то в bearer обработчике появляется событие WIP_BEV_IP_CONNECTED далее wip_TCPClientCreate(PEER_STRADDR,PEER_PORT,my_handler,NULL) и в my_handler появляется событие WIP_CEV_WRITE. Но самое интересное перед этим не появляется событие WIP_CEV_OPEN, это как понимать??

Сообщение отредактировал parfum - Apr 2 2010, 16:00
Go to the top of the page
 
+Quote Post
bolmoe
сообщение Apr 3 2010, 09:44
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 121
Регистрация: 5-04-06
Из: Рязань
Пользователь №: 15 830



WIP_CEV_OPEN у меня возникает,я там формирую строку запроса GET .....HTTP 1.1
Меня тут другое интересует, если соединение с сервером заканчивается, то через несколько секунд bearer закрывается, что естественно меня не устраивает, где это полечить пока не нашел, до этих сообщений от тебя тоже собирался на GPRS активацию без bearer, теперь вот не знаю что делать, "мурзилку" буду дальше читать...
Go to the top of the page
 
+Quote Post
parfum
сообщение Apr 4 2010, 05:37
Сообщение #10





Группа: Участник
Сообщений: 11
Регистрация: 31-12-08
Пользователь №: 42 862



Цитата(bolmoe @ Apr 3 2010, 13:44) *
Меня тут другое интересует, если соединение с сервером заканчивается, то через несколько секунд bearer закрывается, что естественно меня не устраивает, где это полечить пока не нашел, до этих сообщений от тебя тоже собирался на GPRS активацию без bearer, теперь вот не знаю что делать, "мурзилку" буду дальше читать...

Так по этому я и пошёл по прокатанному варианту (отработано на GR64), Я вот думаю можеть информацию полученную с помощью adl_gprsGetCidInfomations куда-нибудь прикручивать. А каждый раз проходить цепочку GPRS -> IP в случае обрыва сокета, то же не охота, раньше заново переоткрывал сокет (если он был закрыт) и только ip connection, Буду дальше ковырять, от sierra wireless все равно ничего не добьешься. После исследований отпишусь.
Go to the top of the page
 
+Quote Post
parfum
сообщение Apr 5 2010, 05:23
Сообщение #11





Группа: Участник
Сообщений: 11
Регистрация: 31-12-08
Пользователь №: 42 862



Цитата(bolmoe @ Apr 3 2010, 13:44) *
Меня тут другое интересует, если соединение с сервером заканчивается, то через несколько секунд bearer закрывается, что естественно меня не устраивает

А что значит bearer закрывается - какое событий, и в каком обработчике в bearerStart или TCPxxxCreate?
Go to the top of the page
 
+Quote Post
bolmoe
сообщение Apr 5 2010, 06:51
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 121
Регистрация: 5-04-06
Из: Рязань
Пользователь №: 15 830



сначало, сокет заврывается (как только все данные получены) - WIP_CEV_PEER_CLOSE, буквально через нескольлко секунд - WIP CE PEER CLOSE. Меня это совсем не устаривает, если бы отконнекчивался хотя бы через минуту...
Go to the top of the page
 
+Quote Post
parfum
сообщение Apr 5 2010, 08:58
Сообщение #13





Группа: Участник
Сообщений: 11
Регистрация: 31-12-08
Пользователь №: 42 862



Цитата(bolmoe @ Apr 5 2010, 10:51) *
сначало, сокет заврывается (как только все данные получены) - WIP_CEV_PEER_CLOSE, буквально через нескольлко секунд - WIP CE PEER CLOSE. Меня это совсем не устаривает, если бы отконнекчивался хотя бы через минуту...

Я себе делал так:
if (WIP_CEV_PEER_CLOSE==Event->kind){
wip_close(Event->channel);
adl_tmrSubscribe(FALSE, 1, ADL_TMR_TYPE_100MS, (adl_tmrHandler_t) &connect);
}
static void connect(u8 Id) {
wip_TCPClientCreate(xxxx_ipaddress,xxxx_port, xxxx_handler,NULL);
}
А вот почему у тебя приходит дважды, один за одним WIP_CEV_PEER_CLOSE - не понял, у тебя случайно где-то не сделано wip_close(), или bearerClose(), т.е. закрытие идет по цепочке, откидывается GPRS например, и он ложит соединение, и в handler пробрасывается еще раз WIP_CEV_PEER_CLOSE?
Go to the top of the page
 
+Quote Post
bolmoe
сообщение Apr 5 2010, 13:55
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 121
Регистрация: 5-04-06
Из: Рязань
Пользователь №: 15 830



))), это я по ошибке скопированное вставил дважды))), естественно в последнем случае WIP_BEV_IP_DISCONNECTED
мне так часто раз в 100мс не надо, мне раз в 20-30 сек....

Сообщение отредактировал bolmoe - Apr 5 2010, 13:56
Go to the top of the page
 
+Quote Post
parfum
сообщение Apr 6 2010, 04:12
Сообщение #15





Группа: Участник
Сообщений: 11
Регистрация: 31-12-08
Пользователь №: 42 862



Цитата(bolmoe @ Apr 5 2010, 17:55) *
естественно в последнем случае WIP_BEV_IP_DISCONNECTED

Ну тогда как и писал выше, у тебя не ip сокет закрывается, а ложиться GPRS, он по цепочке закрывает сокет.
А почему GPRS у тебя ложеться, оператор ложит, или ты сам закрывешь? чего то я не понял.
Пример выше, на случай когда рубиться TCP/IP соединение, но GPRS при этом поднят, делаешь новый коннект, у меня на этот случай идет перебор резервных серверов, и будет тебе счастье.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 09:19
Рейтинг@Mail.ru


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