Перейти к содержанию
    

parfum

Участник*
  • Постов

    11
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Это к сожалению у всех ОПС-осов. Разница только во времени, Например в одном регионе может быть округление каждые 15 минут, а в другом каждые 30 минут или что не может радовать 1 час, но это скорее исключение, и как понимаешь речь идёт об одном операторе. Но по-любому такая бадья у всех. Второй нюанс - это когда идёт трафик а далее нет активности некоторое время, у Билайн например 5 минут, идёт принудительный обрыв, с округлением. Третий нюанс это подсчёт трафика в обоих направлениях: отправка/получение. У некоторых операторов есть зона не таррифицирования, он маленький, но из-за него может быть разница в подсчётах одного и того же трафика у разных операторов. Насчёт перехода между БС-ми, это происходит постоянно и не влияет на подсчёт. Раньше были косяки у Билайна при переходе в другой LAC, но давно его уже не видел. Ну и не забываем - подсчёт идёт по сырому трафику: что ты отправил 1 байт, что 50 байт, считаться будет размер сформированного IP пакета.
  2. Попробуй дать ATI9,если в списке есть WIP Open AT Plug-in Package, значит стоит WIP. Прежде чем работать со стеком надо его инициализировать AT+WIPCFG=1, а далее мануал по WIP Удивлю , но некоторый обходятся только фачами модема, без использования IP. Второй UART на некоторых модемах тоже по умолчанию отключен, если нужен - инициализируешь и в путь. Это Нормальный подход - включено только необходимое, а все остальное по желанию.
  3. Ну тогда как и писал выше, у тебя не ip сокет закрывается, а ложиться GPRS, он по цепочке закрывает сокет. А почему GPRS у тебя ложеться, оператор ложит, или ты сам закрывешь? чего то я не понял. Пример выше, на случай когда рубиться TCP/IP соединение, но GPRS при этом поднят, делаешь новый коннект, у меня на этот случай идет перебор резервных серверов, и будет тебе счастье.
  4. Я себе делал так: 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?
  5. А что значит bearer закрывается - какое событий, и в каком обработчике в bearerStart или TCPxxxCreate?
  6. Так по этому я и пошёл по прокатанному варианту (отработано на GR64), Я вот думаю можеть информацию полученную с помощью adl_gprsGetCidInfomations куда-нибудь прикручивать. А каждый раз проходить цепочку GPRS -> IP в случае обрыва сокета, то же не охота, раньше заново переоткрывал сокет (если он был закрыт) и только ip connection, Буду дальше ковырять, от sierra wireless все равно ничего не добьешься. После исследований отпишусь.
  7. Вообщем пришёл к выводу, что 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, это как понимать??
  8. Это само-собой разумеется, иначе бы wip_bearerStart не отрабатывал бы, а вариант с bearer я попробывал и он работает, ну чтоб исключить проблемы сборки. Когда будет результат (любой), отпишусь.
  9. Только для компиляции, нет времени свой make сделать, разберусь, откажусь от этого монстра. Я то же не понимаю, щас выкину все из кода оставлю только ветку sim->gprs->ip и буду копать глубже. А bearer точно не устанавливает где-то внутрях у себя какие-нибуть указатели на установленный context gprs? В доках как-то все по скромному. Если не добью до конца, выложу код, может мысли какие появятся.
  10. В том то и дело что-то не проходит, ошибка в 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, не пойму в чем проблема.
  11. Раньше свои решения реализовывал на 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 ответа ждать долго придется, я так полагаю. Заранее спасибо.
×
×
  • Создать...