motofan logo
> 

GPRS internet, доступ к нэту из эльфов

G-XaD
сообщение 25.9.2008, 13:18


Мастер
****

Группа: Разработчики
Сообщений: 171
Регистрация: 6.11.2007
Из: Donetsk City / Ukraine
Пользователь №: 153 083
Модель телефона: E1, k810
Прошивка: r373_g_0e.30.79r

Рейтинг: 323



Набросал тестовый менеджер сокетов. Нужен для упрощения доступа к интернету из эльфов.
APN пишем в файле 'apn.txt', ничего лишнего не пишем, даже переводов каретки не должно быть. Кидаем файл в корень раздела '/a/' (все маленькими буквами).
Если эльф нормально запускается, без ребутов, можно прописать в автозапуск.
Требуются новые функции в либе!

Эльф менеджер сокетов:
Прикрепленный файл synsock.zip   ( 6.47 килобайт ) Кол-во скачиваний: 990

Эльф должен быть запущен, чтобы демонстрация работала.

Эльф пример работы итернета с исходниками, демонстрация работы:
Прикрепленный файл net_test.zip   ( 8.69 килобайт ) Кол-во скачиваний: 626

Наблюдаем сообщения в мидвее. Запускаем (блокируются все кнопки, красная - выход), жмем 0 - создается сокет (ждем "SockAnsw: CREATE"), жмем 1 - устанавливается соединение с motofan.ru, к порту 80 (ждем включения GPRS и строку "SockAnsw: READY"), 2 - записать в сокет запрос "GET / HTTP/1.1\n..." (полностью текст запроса можно посмотреть в исходниках), если все нормально, то в мидвее будет много строк с ответом от motofan.ru с текстом главной страницы, будет видно, что страница приходит по частям (Внимание! главная страница мотофана не маленькая). 3 - прочитать с сокета (хотя врятли там чтото будет, все читается по приходу ивента), 4 - закрыть сокет, 5 - удалить сокет (GPRS выключается, показывается сколько байт за сеанс).


Схема подключения и работы с нэтом для разработчиков:
0. Основные описания в файле synsock_api.h в исходниках с демонстрацией работы.
1. При старте эльфа создаем запрос(ивент) к менеджеру. Ждем ответа от него на указанный вами ивент.
Если эльф с ГУИ, то можно это делать в Init стэйте, ждать пока прийдет ивент EV_GRANT_TOKEN и ответ от менеджера и только потом переключать стэйт. Там же можно запустить таймер на 0,1 сек, если поймали от таймера, значит менеджер не запущен.
2. При ответе нужно запомнить адреса функций, которые будете использовать.
3. Сначала создаем сокет (функция socket), первый параметр тип соединения (SOCK_TCP/SOCK_UDP), второй - по какому ивенту менеджер будет оповещать о событиях с этим сокетом. Функция возвращает уникальный идентификатор сокета, который нужно запомнить и через него обращаться.
4. Ждем ивент, заданный вторым параметром. В данных к этому ивенту будет код ответа сокета (SOCK_ANSW_CREATE - создание) и статус (успешно/не успешно).
На самом деле событие будет сразу, по окончании ф-ции из которой вызвали socket, без задержек.
5. Вызываем socket_connect. Параметры: идентификтор сокета (запоминили его при создании), имя домена или IP, порт к которому коннект. Возвращает -1 в случае ошибки или 0 если все нормально.
6. Ждем ивент, с кодом SOCK_ANSW_READY. Ивент означает, что gprs включен и соединение установлено.
Ивент прийдет не сразу! Нужно подождать пока все включится. Приложение в это время может делать что угодно.
7. В принципе все, соединение установлено, можно писать в него.
8. Ивент с ответом SOCK_ANSW_DATA означает что в буфере сокета есть данные, их нужно забрать.
Используйте socket_read. Параметры: идентификатор сокета, указатель на буфер куда можно скинуть данные, размер буфера. Возвпажает -1 в случае ошибки или количество байт, записанных в буфер.
Внимание! Данные приходят по частям, генерируя ивент с ответом SOCK_ANSW_DATA. Ваше приложение должно это учитывать.
9. Ивент с ответом SOCK_ANSW_DELETE означает что сокет простаивает уже больше минуты и менеджер его удаляет. В данных к ивенту также есть идентификатор сокета.
10. Ивент с ответом SOCK_ANSW_ERROR означает об ошибке. На данный момент возникат только при ошибке конфигурирования прокси.


Также разработчикам:
Данные с ответом от менеджера идут не в аттаче а в данных ивента (event->data). Можно в каждой функии, обработчике ивента использовать примерно следующее:
Код
UINT32 * params = (UINT32 *)(&event->data);

но удобнее модифицировать обьединение EVENT_DATA_T в SDK:
Код
typedef union
{
    UINT8        key_pressed;
    // ...
    UINT32        params[16];
    // ... прочие структуры
} EVENT_DATA_T;


Максимальное количество одновременно существующих сокетов - 8.
Таймаут простоя сокета - 60 сек. По истечении сокет будет удален и приложение, создавшее его, будет оповещено об этом через ивент.

В заключение: можно не использовать это приложение, а работать напрямую с мотороловским DL_DSMA. Конфликтов не должно быть.

Все это очень сырое, исключительные ситуации почти не рассматриваются. Хотелось бы комментариев, предложений по улучшению.



Synsock mod3 by om2804
Прикрепленный файл synsock_mod3_by_om2804.zip   ( 10.94 килобайт ) Кол-во скачиваний: 644

apn, login, password, время простоя беруться из Web-сессии.
Synsock mod by lavmen
Прикрепленный файл synsock_for_L7e_L9_mod_by_lavmen.zip   ( 5.63 килобайт ) Кол-во скачиваний: 337
для l7e подобных

Сообщение отредактировал om2804 - 24.5.2009, 16:54
Прикрепленный файл synsock_for_L7e_L9_mod_by_lavmen.zip   ( 5.63 килобайт ) Кол-во скачиваний: 337
Прикрепленный файл synsock.zip   ( 6.47 килобайт ) Кол-во скачиваний: 990
Прикрепленный файл net_test.zip   ( 8.69 килобайт ) Кол-во скачиваний: 626
Прикрепленный файл synsock_mod3_by_om2804.zip   ( 10.94 килобайт ) Кол-во скачиваний: 644
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить

Сообщений в этой теме
G-XaD   GPRS internet   25.9.2008, 13:18
WalkеR   Из вебсессий   25.9.2008, 13:28
Andy51   Не встречал таких Лучше, конечно, из настроек сесс...   25.9.2008, 13:42
AKAmasol   Вопрос 1: существуют ли операторы, для которых ну...   25.9.2008, 13:44
G-XaD   AKAmasol, А при подключении через комп (телефон к...   25.9.2008, 13:54
AKAmasol   AKAmasol, А при подключении через комп (телефон ...   25.9.2008, 17:45
RuslanchiK   Да. А вот и нет!!! На теле в вебсесс...   25.9.2008, 18:18
AKAmasol   А вот и нет!!! На теле в вебсессих на...   25.9.2008, 18:30
Lorence   Вопрос 1: существуют ли операторы, для которых ну...   25.9.2008, 15:39
G-XaD   Нашел я на мотофане сборник настроек Сборник настр...   25.9.2008, 16:42
croccio   what do this elf do?   25.9.2008, 16:46
RuslanchiK   Пардон... Да пароль надо. А ДНС не надо. Пожже G-X...   25.9.2008, 18:36
Andy51   croccio, this elf allows to use tcp/udp/icmp socke...   25.9.2008, 20:21
Alesha_Pl   RuslanchiK, AKAmasol, вы меня конечно извините, ...   26.9.2008, 5:29
AKAmasol   RuslanchiK, AKAmasol, По-поводу имен пользовате...   26.9.2008, 6:42
Lorence   G-XaD, DNS1: 217.118.066.243 DNS2: 217.118.066.24...   26.9.2008, 7:48
Alesha_Pl   Lorence, специально для тебя. Зашел на билайн.ру. ...   26.9.2008, 8:07
Serg398   Незнаю как у всех, но у меня на всех четырёх опера...   26.9.2008, 11:11
Nicron   У нас на МегаДВ в основном точку доступа вводим, н...   27.9.2008, 13:25
Proteus_   Вроде как пашет на 3 не реагирует сесии создает и ...   28.9.2008, 5:54
miha-il2   А теперь можна сделать эльф для поддержки жпрс сес...   28.9.2008, 10:34
Proteus_   нет похоже у явы побольше привилегий будет. Я проб...   29.9.2008, 8:46
G-XaD   Proteus_, Я не писал что эльф сам включает/выключ...   29.9.2008, 9:44
tim apple   Proteus_, эльф не контролирует все соединения в т...   29.9.2008, 9:54
miha-il2   Я просто заговорил про разрыв/не разрыв(удерживани...   1.10.2008, 14:23
Alesha_Pl   Лучше конфиг, а в нем 0 разрывать сессию, 1 поддер...   2.10.2008, 10:40
mike_siver   извините за глупый вопрос и оффтоп, но зачем это в...   2.10.2008, 17:36
AKAmasol   извините за глупый вопрос и оффтоп, но зачем это ...   2.10.2008, 18:13
Vanilla999   в файле 'apn.txt' надо написать internet.m...   12.10.2008, 14:16
Skilos   в файле 'apn.txt' надо написать internet....   12.10.2008, 14:49
Osta   это сработало 0x14c14094:NET_test: dbg: "tes...   14.10.2008, 11:51
om2804   Сделал мод synsock mod by om2804 Теперь apn, login...   31.10.2008, 12:52
lgxxl   om2804, т.е. теперь файл apn.txt не нужен больше ...   31.10.2008, 13:03
Osta   да, не нужен. всё равно погоды нет лог мидвея   31.10.2008, 14:08
miha-il2   А у меня наоборот всё заработало на 49р, может это...   1.11.2008, 14:17
G-XaD   Такой период, что мне не до эльфов.... Последняя м...   2.11.2008, 14:07
om2804   Как оказалось, размер структуры DSMA_DATA_T на L7e...   3.11.2008, 13:00
Osta   проверил - работает на L7e lib 4.4   3.11.2008, 13:05
lgxxl   у меня не работает, либа последняя! лог прило...   6.11.2008, 13:12
-SeGa-   у меня отлично несколько раз пороботал, а ща при з...   6.11.2008, 14:00
Proteus_   Synsock mod2 by om2804 - либа 4.4 уходит в ребут   6.11.2008, 14:24
Osta   иногда ребут и у меня на этом сегодня протестиров...   6.11.2008, 14:24
CaHe:K   А может ребут из-за нескольких веб-профилей. У ме...   6.11.2008, 22:04
Alesha_Pl   CaHe:K, ну у нас-то нету такого ребута. Если тольк...   7.11.2008, 5:04
-SeGa-   оста, ИМХО дело не в ЭЛЬФАХ, а только в одном мене...   7.11.2008, 8:13
DDA-E398   почему-то synsock не запускается через авторан а т...   9.11.2008, 22:24
LagHost   Ом 2804 у меня таже история ручками все работает а...   10.11.2008, 5:24
om2804   Дайте свой авторан   10.11.2008, 8:04
lgxxl   что же за проблема такая у меня если руками запуск...   10.11.2008, 13:35
G-XaD   Про проблемы с synsock из авторана Если synsock ч...   11.11.2008, 13:39
lgxxl   G-XaD, с твоим эльфом все получилось, прописал в...   11.11.2008, 14:07
G-XaD   lgxxl, Скорее всего что не работает, в обновленно...   11.11.2008, 14:16
om2804   У меня чтение из веб-сессий только при создании со...   11.11.2008, 14:26
om2804   synsock mod3 Надеюсь будет работать стабильнее   12.11.2008, 22:43
-SeGa-   мод 3, на л7е ребутит тел, хоть с авторана хоть ру...   13.11.2008, 6:10
lgxxl   synsock_mod3_by_om2804, то запускается, то нет, но...   13.11.2008, 6:24
-SeGa-   дык также как и мод 2. то запистица то нет   13.11.2008, 7:01
om2804   Кто-нибудь сделает лог?   13.11.2008, 20:16
RuslanchiK   Кто-нибудь сделает лог? вот- SynSock: dbg...   13.11.2008, 21:13
om2804   проверяем эту версию, у кого ребуты были   19.11.2008, 22:07
plain   проверяем эту версию, у кого ребуты были L7e. Пе...   29.1.2009, 18:55
LigaLayz777   у меня не пашет сам не знаю по чему вроде все прав...   20.11.2008, 0:52
-SeGa-   ом2804, на л7е все как было, то запуск, то ребут.   20.11.2008, 10:37
lavmen   om2804, в ручную вроде работает, но из авторана ни...   20.11.2008, 19:01
-SeGa-   на л7е запускается чаще чем прошлые версии. во как...   20.11.2008, 19:25
lgxxl   А может сделает все таки кто-нибудь стабильную раб...   23.12.2008, 10:46
Andy51   lgxxl, а кто эльфописателей порадует-то? Чего всё ...   23.12.2008, 20:27
lgxxl   Andy51, а истинные творцы радуются своими творени...   24.12.2008, 6:18
baat   G-XaD, что там с асей-то на эльфе? что-то ты прити...   6.1.2009, 21:45
baat   вот блин...когда это он успел... :( я и не знал......   7.1.2009, 9:00
masved   На v360 (ACR) при запущенном weather через какое т...   12.3.2009, 14:18
lavmen   Пользователи L7e, K1, Z3, L9! Пробуем мою моди...   24.5.2009, 6:00
Umka85   synsock работает :) SyncTime время синхронизирует...   24.5.2009, 6:13
Gray One   lavmen, synsock.elf работает без ребутов!...   24.5.2009, 7:01
om2804   Отлчия в dsma.h typedef struct { UINT32 pr...   24.5.2009, 16:45
sever20067   Здарова парни! Такой вопрос, если запущен эльф...   3.12.2009, 18:25
SaniaZ   мигать должен тока при обращении эльфа (агент, ве...   3.12.2009, 18:47

GPRS internet, доступ к нэту из эльфов · Эльфы, их разработка и портирование · Forum
 

Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 30.7.2025, 1:42

Форум живёт: