motofan logo
16 страниц V « < 11 12 13 14 15 > »         
> 

Учимся писать эльфов вместе, Обсуждение процесса кодинга

Andy51
сообщение 29.10.2007, 20:13 Закрепленное сообщение!


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255

Рейтинг: 1224



Вот и долгожданное обновление SDK до v0.2

Основные новшества с прошлой версии:
+ Добавлено множество функций в SDK
+ Добавлено два новых примера - на этот раз GUI

Что внутри:
Папка SDK - ну, и так ясно, заголовочные файлы. За описаниями функций заглядываем в эту папку.

helloworld_snd - первый пример эльфа. Несколько нестандартный HelloWorld, заменяет озвучку цифровой клавиатуры системными звуками. Предназначен в основном для изучения структуры приложения (Application), ну и как пример приложения, работающего в фоне.

helloworld_gui - классический HelloWorld эльф, на этот раз с использованием GUI. Выводит сообщение с помощью диалога Notice. Предназначен для изучения структуры простейшего GUI-приложения.

ListTest - пример использования диалога List. Значительно более сложный пример, предназначен для изучения возможностей и принципов управления диалогами.

make_*.bat - батники для сборки эльфов-примеров. Эльфы расчитаны на компиляцию с комплектом ADS. Из-за правил форума, я не могу включить его в SDK, однако оставляю ссылки
http://ifolder.ru/3937671
http://slil.ru/25060171
http://rapidshare.com/files/67580866/ads.7z.html

Lib.o - для функционирования эльфа под моим загрузчиком, необходимо подлинковать этот файл к проекту (в make.bat уже прописан).
Внимание! Этот файл не зависит от конкретной версии прошивки, под которую собирается эльф, но, тем не менее, зависит от версии библиотеки!
В этом SDK уже включен Lib.o для библиотеки v071218 (оч. старый - не забудьте обновить, если понадобятся новые функции)

Пара слов об т.н. Application.
В телефонах motorola есть система AFW, которая позволяет, не затрачивая лишних ресурсов процессора на обеспечение "полноценной" многозадачности, достаточно полноценно работать нескольким приложениям, ориентированным на диалог с пользователем. Как это работает: приложения представляют собой, фактически, набор обработчиков событий(ивентов, events) + структура данных приложения. Откликаясь на те или иные события, приложения поочерёдно обрабатывают списки накопившихся ивентов. Таким образом, мы фактически имеем невытесняющую многозадачность.
Есть теоретическая возможность писать и эльфы, выделенные в отдельный процесс(task), но эта часть всё ещё в разработке.

Книги по Си
  1. Руководство полного идиота по программированию (на языке Си) - Не смотря на такое название все азы разжёваны. Если вы вообще никогда не видели Си, начните с этой книги
  2. Герберт Шилдт, "Полный справочник по С (4-е издание)"
    Прикрепленный файл Spr_po_C.rar   ( 934.62 килобайт ) Кол-во скачиваний: 1153
  3. "Язык программирования C"
    Прикрепленный файл C_book.zip   ( 220.86 килобайт ) Кол-во скачиваний: 897
Исходники эльфов
  1. SRC by om2804
  2. SRC by G-XaD
SDK
  1. SDK by om2804
  2. SDK by G-XaD
Эльфостроение на motoWiki

Компилятор + исходники от om2804 для EP1 скачать

Сообщение отредактировал om2804 - 3.5.2011, 13:59
Прикрепленный файл SDKv02.rar   ( 24.88 килобайт ) Кол-во скачиваний: 2172
Прикрепленный файл C_book.zip   ( 220.86 килобайт ) Кол-во скачиваний: 897
Прикрепленный файл Spr_po_C.rar   ( 934.62 килобайт ) Кол-во скачиваний: 1153
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Bad_Santa
сообщение 6.1.2010, 14:03


Интересующийся
**

Группа: Пользователи
Сообщений: 75
Регистрация: 18.6.2007
Пользователь №: 138 555
Модель телефона: L7E

Рейтинг: 36.5



baat, раньше же шли... до появления ЕП2 на теле
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
tim apple
сообщение 6.1.2010, 15:02


Мастер
****

Группа: Разработчики
Сообщений: 260
Регистрация: 13.7.2007
Из: РФ, Башкирия, Стерлитамак
Пользователь №: 141 375
Модель телефона: ---
Прошивка: ---

Рейтинг: 435



to ИАА, откати патч log_off2.fpa
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fkcoder
сообщение 7.1.2010, 12:55


Eve
******

Группа: Разработчики
Сообщений: 1 014
Регистрация: 31.1.2006
Из: Новокузнецк
Пользователь №: 68 287
Модель телефона: L9 ATRIX 4G iPhone SE E1

Рейтинг: 650



Цитата
P.S. А можно из эльфа под еп1 выдавать сообщения в консоль еп2?
нет

а как насчет добавить функции cprint и cprintf в elfloader.lib?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 7.1.2010, 13:32


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255

Рейтинг: 1224



lavmen, а как насчёт начать уже писать под EP2? Я например не буду выуживать, где там эти функции в EP2 находятся, ибо во внутренней либе хранятся.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Bad_Santa
сообщение 7.1.2010, 13:54


Интересующийся
**

Группа: Пользователи
Сообщений: 75
Регистрация: 18.6.2007
Пользователь №: 138 555
Модель телефона: L7E

Рейтинг: 36.5



Andy51, не у всех стоит ЕП2 (не знаю, извините почему). И просят под ЕП1.

У кого есть рабочий INIparser для ЕП2?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
R.U.S.H.A.N.
сообщение 7.1.2010, 14:17


Интересующийся
**

Группа: Разработчики
Сообщений: 95
Регистрация: 13.4.2009
Из: home://russia/ufa/
Пользователь №: 197 674
Модель телефона: Е398, Milestone, XT912
Прошивка: DaR_v2.15

Рейтинг: 231



ИАА лови


Добавлено позже (7.1.2010, 19:53):
Библиотека libshell.a
Набор функций для работы с ATI и Canvas.
Установка:
Содержимое архива распокововаем в папку Elfs2\libs\
В файле Elfs2\Makefiles\Makefile.defines в переменную LIBS дописать libshell.a
Запускаем make_shell.cmd

PS: Делал для себя, вдруг кому понадобится.

Сообщение отредактировал R.U.S.H.A.N. - 7.1.2010, 14:55
Прикрепленный файл INIparser.zip   ( 1.07 килобайт ) Кол-во скачиваний: 52
Прикрепленный файл libshell.zip   ( 7.6 килобайт ) Кол-во скачиваний: 56
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
tim apple
сообщение 7.1.2010, 16:01


Мастер
****

Группа: Разработчики
Сообщений: 260
Регистрация: 13.7.2007
Из: РФ, Башкирия, Стерлитамак
Пользователь №: 141 375
Модель телефона: ---
Прошивка: ---

Рейтинг: 435



to R.U.S.H.A.N.,
несколько замечаний:
  • зачем дублировать ф-ции из ahg.h, которые входят в библу gfx.a ? это нехорошо - либо ссылайся на ahg.h, либо переименуй ф-ции и переменные
  • ф-ция RGB_ быссмысленна
  • в конце ф-ции DrawBmpImageFS нужно освобождать память в bitmap.image

Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fkcoder
сообщение 7.1.2010, 17:16


Eve
******

Группа: Разработчики
Сообщений: 1 014
Регистрация: 31.1.2006
Из: Новокузнецк
Пользователь №: 68 287
Модель телефона: L9 ATRIX 4G iPhone SE E1

Рейтинг: 650



Цитата
lavmen, а как насчёт начать уже писать под EP2?

А как насчет ответить не мне, а тому кто спрашивал про вывод из EP1 в консоль EP2? wink.gif

Это я к тому, чтобы вредные мысли не распространял среди народа smile.gif A51

Сообщение отредактировал Andy51 - 7.1.2010, 20:24
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
beelineman
сообщение 7.1.2010, 18:09


Мото-писатель
******

Группа: Почётные мотофаны
Сообщений: 1 070
Регистрация: 22.12.2007
Из: Cити 8184
Пользователь №: 157 925
Модель телефона: Defy+, iPad Mini
Прошивка: CM10, iOS 7
Победитель конкурса 2008


Настроение:
^.^



Рейтинг: 372



Цитата(Andy51 @ Сегодня, 16:32)

а как насчёт начать уже писать под EP2?
*


/mf/чую, имхо GCC менее требователен к синтаксису языка, чем ADS.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
logotoy73
сообщение 7.1.2010, 19:02


Ветеран
*****

Группа: Пользователи
Сообщений: 362
Регистрация: 10.1.2007
Из: Подмосковье
Пользователь №: 116 014
Модель телефона: RAZR MAXX, V3i, Defy+
Прошивка: VZV-16, 03.03R, 231


Настроение:
в процессе...



Рейтинг: 220



Цитата(beelineman @ 7.1.2010, 21:09) *

/mf/чую, имхо GCC менее требователен к синтаксису языка, чем ADS.


А мы легких путей не ищем? smile.gif

Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
beelineman
сообщение 8.1.2010, 18:06


Мото-писатель
******

Группа: Почётные мотофаны
Сообщений: 1 070
Регистрация: 22.12.2007
Из: Cити 8184
Пользователь №: 157 925
Модель телефона: Defy+, iPad Mini
Прошивка: CM10, iOS 7
Победитель конкурса 2008


Настроение:
^.^



Рейтинг: 372



Про книги по Си: ещё неплохая "Д. Стефан - C++ для чайников", правда к Pure C (чистому С) относятся только 1 и 2 главы. Дальше уже про ООП.
Прикрепленный файл _.__________C_______________.pdf   ( 6.51 мегабайт ) Кол-во скачиваний: 1039
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
baat
сообщение 8.1.2010, 18:23


Самый Наглый
******

Группа: В отставке
Сообщений: 1 282
Регистрация: 18.5.2006
Из: Дом, милый дом...
Пользователь №: 83 674
Модель телефона: старая модель...
Прошивка: какая уж есть...
Победитель конкурса 2008


Настроение:
...



Рейтинг: 1535



beelineman, и зачем оно? книг по си и на форуме и в интернете очень уж много и мотовики есть, "желание делать что-то" людям выложи... а так знаний паскаля и без книг с головой хватит чтобы эльфы писать!
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
beelineman
сообщение 8.1.2010, 18:53


Мото-писатель
******

Группа: Почётные мотофаны
Сообщений: 1 070
Регистрация: 22.12.2007
Из: Cити 8184
Пользователь №: 157 925
Модель телефона: Defy+, iPad Mini
Прошивка: CM10, iOS 7
Победитель конкурса 2008


Настроение:
^.^



Рейтинг: 372



Cоdeblocks выдаёт ошибку:
error: expected declaration or statement at end of input
в последней функции. Если закомментировать функцию, выдаёт на предпоследней.
Пытаюсь скомпилить хелловорд от EP2, с изменением, что при нажатии клавиши будет писать в консоль модель телефона.

Сообщение отредактировал beelineman - 8.1.2010, 18:57
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
baat
сообщение 8.1.2010, 20:08


Самый Наглый
******

Группа: В отставке
Сообщений: 1 282
Регистрация: 18.5.2006
Из: Дом, милый дом...
Пользователь №: 83 674
Модель телефона: старая модель...
Прошивка: какая уж есть...
Победитель конкурса 2008


Настроение:
...



Рейтинг: 1535



beelineman, скобку видимо не поствил где-то... фигурную...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
beelineman
сообщение 8.1.2010, 20:15


Мото-писатель
******

Группа: Почётные мотофаны
Сообщений: 1 070
Регистрация: 22.12.2007
Из: Cити 8184
Пользователь №: 157 925
Модель телефона: Defy+, iPad Mini
Прошивка: CM10, iOS 7
Победитель конкурса 2008


Настроение:
^.^



Рейтинг: 372



ага, точно. Спасибо!
Только эльф нормально на телефоне не пашет sad.gif

Сообщение отредактировал beelineman - 8.1.2010, 20:20
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
baat
сообщение 8.1.2010, 21:00


Самый Наглый
******

Группа: В отставке
Сообщений: 1 282
Регистрация: 18.5.2006
Из: Дом, милый дом...
Пользователь №: 83 674
Модель телефона: старая модель...
Прошивка: какая уж есть...
Победитель конкурса 2008


Настроение:
...



Рейтинг: 1535



beelineman, скорее всего либа старая, и мотоцмд, а собранный под новые) с свн надо качать всё... ну или ты неправильно код составил, как вариант...
ты конкретизируй, догадаться трудно, что делал, код выложи - думаю исправить можно, что должно было получится, что получилось, что работает, что нет, а то мои асторосенсорные способности закончились когда я пытался в сознании Осты найти почему то, что на форуме можно всем и во многих темах так мне нельзя, всё я не так делаю...

Сообщение отредактировал baat - 8.1.2010, 21:03
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
beelineman
сообщение 9.1.2010, 9:43


Мото-писатель
******

Группа: Почётные мотофаны
Сообщений: 1 070
Регистрация: 22.12.2007
Из: Cити 8184
Пользователь №: 157 925
Модель телефона: Defy+, iPad Mini
Прошивка: CM10, iOS 7
Победитель конкурса 2008


Настроение:
^.^



Рейтинг: 372



Телефон должен при нажатии клавиши те только пиликать но и выводить в консоль (функция cprintf) сообщение о нажатии клавиши и модели телефона. Но он не выводит сообщение sad.gif
Сорец прилагаю.

Может, я не тот эльф залил. Сейчас попробую скомпилирую и залью.

Сообщение отредактировал beelineman - 9.1.2010, 9:46
Прикрепленный файл main.c.zip   ( 2.72 килобайт ) Кол-во скачиваний: 78
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 9.1.2010, 10:57


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255

Рейтинг: 1224



beelineman, так а консоль в конфиге эльфпака включена?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
CrayZor
сообщение 9.1.2010, 11:31


Мастер
****

Группа: Пользователи
Сообщений: 168
Регистрация: 22.3.2008
Пользователь №: 167 295
Модель телефона: E398, ROKR E1, X2, G100
Прошивка: In development

Рейтинг: 70



А где у тебя в коде прописан вывод самой консоли на экран ldrToggleConsole, если в конфиге консоль отключена то она так просто непоявится....
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
tim apple
сообщение 9.1.2010, 11:51


Мастер
****

Группа: Разработчики
Сообщений: 260
Регистрация: 13.7.2007
Из: РФ, Башкирия, Стерлитамак
Пользователь №: 141 375
Модель телефона: ---
Прошивка: ---

Рейтинг: 435



beelineman,
для чего строка 156 ?
Код
const char* ldrGetPhoneName( void );

почему используешь ф-цию ЕР1 ?
Код
fw = LdrGetPhoneName();

исправь.
если консоль сама не появляется, то вызови ее вручную.

Сообщение отредактировал tim apple - 9.1.2010, 11:52
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
beelineman
сообщение 18.1.2010, 8:59


Мото-писатель
******

Группа: Почётные мотофаны
Сообщений: 1 070
Регистрация: 22.12.2007
Из: Cити 8184
Пользователь №: 157 925
Модель телефона: Defy+, iPad Mini
Прошивка: CM10, iOS 7
Победитель конкурса 2008


Настроение:
^.^



Рейтинг: 372



А где взять коды клавиш (нужна смарт клавиша на E398) и как сделать чтобы при нажатии на клавишу эльф запускал ивент?
Есть один проект по "фонарику".
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Alesha_Pl
сообщение 18.1.2010, 9:22


Гуру
******

Группа: Почётные мотофаны
Сообщений: 986
Регистрация: 19.5.2005
Из: Россия, г.Петрозаводск
Пользователь №: 42 716
Модель телефона: e398
Прошивка: 49R+EP1+EP2

Рейтинг: 681



KEY_SMART код нужный в сдк найдется сам.
Ивент выполняется
Код

UINT32 AFW_CreateInternalQueuedEvAux( UINT32 event_code,
                                      FREE_BUF_FLAG_T  free_buf,
                                      UINT32 att_size,
                                      void* att_data );


Примеры можно вроде в эльфе смарткей от Ома посмотреть. Там есть и обработка простого нажатия и удержания кнопки и вроде запуск ивента тоже...

Сообщение отредактировал Alesha_Pl - 18.1.2010, 9:23
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 18.1.2010, 10:56


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255

Рейтинг: 1224



beelineman, либо под EP2 можно использовать
Код
UINT32    ldrSendEvent( UINT32 evcode );

если не нужно с ивентом никаких данных передавать
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fkcoder
сообщение 18.1.2010, 12:00


Eve
******

Группа: Разработчики
Сообщений: 1 014
Регистрация: 31.1.2006
Из: Новокузнецк
Пользователь №: 68 287
Модель телефона: L9 ATRIX 4G iPhone SE E1

Рейтинг: 650



Цитата(beelineman @ 18.1.2010, 15:59) *

как сделать чтобы при нажатии на клавишу эльф запускал ивент?


1) Сделать обработчик EV_KEY_PRESS
2) В обработчике из ивента брать номер клавиши
3) если клавиша смарт - отправлять нужный ивент через ldrSendEvent
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
beelineman
сообщение 18.1.2010, 18:22


Мото-писатель
******

Группа: Почётные мотофаны
Сообщений: 1 070
Регистрация: 22.12.2007
Из: Cити 8184
Пользователь №: 157 925
Модель телефона: Defy+, iPad Mini
Прошивка: CM10, iOS 7
Победитель конкурса 2008


Настроение:
^.^



Рейтинг: 372



В общем, написал "фонарик", который должен по кнопке RED включать вспышку и завершать работу по звёздочке. У меня пишет, что ошибок нет, но не компилируется - под Wine работает, всё жду сборку под никс.
Скомпилируйте кто-нибудь, пожалуйста (сорцы прилагаю)! Собственно, это мод хелловорлда, немного изменён main.c.

И протестируйте, работает или нет.



Давай не будем распространяться о конкретных способах вредительства, если и так все знают, что их - великое множество? A51

Сообщение отредактировал Osta - 19.1.2010, 13:25
Прикрепленный файл main.c.zip   ( 3.19 килобайт ) Кол-во скачиваний: 77
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 18.1.2010, 22:49


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255

Рейтинг: 1224



beelineman, 2 ошибки: вместо "LdrGetPhoneName" - надо "ldrGetPhoneName", и вместо "ldrSentEvent" - "ldrSendEvent".

Работает, только есть баг. Думаю, и сам догадываешься - попробуй выйти из эльфа, не нажимая красной кнопки smile.gif
Прикрепленный файл main.zip   ( 1.05 килобайт ) Кол-во скачиваний: 239
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
beelineman
сообщение 19.1.2010, 13:05


Мото-писатель
******

Группа: Почётные мотофаны
Сообщений: 1 070
Регистрация: 22.12.2007
Из: Cити 8184
Пользователь №: 157 925
Модель телефона: Defy+, iPad Mini
Прошивка: CM10, iOS 7
Победитель конкурса 2008


Настроение:
^.^



Рейтинг: 372



1. ГетФонНейм здесь неважна.
2. Пофикшу.
3. Попробую пофиксить.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 19.1.2010, 13:27


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



Цитата(Andy51 @ Сегодня, 0:49)

Работает, только есть баг.
*


я с еп2 не разбирался, но beelineman в коде указывает явный ивент
вроде 2ххх , "заточка" под е398 или универсален сей ивент?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fkcoder
сообщение 19.1.2010, 13:34


Eve
******

Группа: Разработчики
Сообщений: 1 014
Регистрация: 31.1.2006
Из: Новокузнецк
Пользователь №: 68 287
Модель телефона: L9 ATRIX 4G iPhone SE E1

Рейтинг: 650



Цитата(Osta @ 19.1.2010, 20:27) *

beelineman в коде указывает явный ивент
вроде 2ххх , "заточка" под е398 или универсален сей ивент?


Ивенты 0x2XXX - ивенты UIS, одинаковы на моторолах так как скорее всего являются енумом и для новых ивентов список рос только вниз.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
beelineman
сообщение 19.1.2010, 14:36


Мото-писатель
******

Группа: Почётные мотофаны
Сообщений: 1 070
Регистрация: 22.12.2007
Из: Cити 8184
Пользователь №: 157 925
Модель телефона: Defy+, iPad Mini
Прошивка: CM10, iOS 7
Победитель конкурса 2008


Настроение:
^.^



Рейтинг: 372



Цитата(Osta @ Сегодня, 16:27)

"заточка" под е398 или универсален сей ивент?
*


Вспышка есть только на Е398 и Z3 из P2k моторол.

Цитата(Andy51 @ Сегодня, 1:49)

Работает, только есть баг. Думаю, и сам догадываешься - попробуй выйти из эльфа, не нажимая красной кнопки smile.gif
*



Я смогу. Через Pm.



Сообщение отредактировал beelineman - 20.1.2010, 10:54
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
beelineman
сообщение 20.1.2010, 5:13


Мото-писатель
******

Группа: Почётные мотофаны
Сообщений: 1 070
Регистрация: 22.12.2007
Из: Cити 8184
Пользователь №: 157 925
Модель телефона: Defy+, iPad Mini
Прошивка: CM10, iOS 7
Победитель конкурса 2008


Настроение:
^.^



Рейтинг: 372



Итак...
Flash v. 1.0!

Включает фонарик одной кнопкой. Эльф для EP2.

Управление:
PWR (красная кнопка) - вкл/выкл фонарик
* - выйти из эльфа.

Перед выходом из эльфа не забудьте выключить фонарик, иначе он будет продолжать гореть!

Изменения с прошлой версии:

Не вызывает ивент включения/выключения при выходе из эльфа.
Убрана функция ldrGetPhoneName, которая не нужна была даже.
Теперь эльф называется не HelloWorld в main.c, а Flash.

Просьба скомпилировать. Сорцы прилагаю.

Сообщение отредактировал beelineman - 20.1.2010, 10:54
Прикрепленный файл Flash.zip   ( 3.21 килобайт ) Кол-во скачиваний: 104
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
zema00
сообщение 22.1.2010, 20:18


Опытный
***

Группа: Пользователи
Сообщений: 112
Регистрация: 19.6.2009
Пользователь №: 201 595
Модель телефона: v3r
Прошивка: d3r

Рейтинг: 35



Цитата(beelineman @ 20.1.2010, 8:13) *



Просьба скомпилировать. Сорцы прилагаю.

Прикрепленный файл HelloWorld.rar   ( 1.32 килобайт ) Кол-во скачиваний: 97
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Bad_Santa
сообщение 9.2.2010, 16:37


Интересующийся
**

Группа: Пользователи
Сообщений: 75
Регистрация: 18.6.2007
Пользователь №: 138 555
Модель телефона: L7E

Рейтинг: 36.5



Люди. что то не лады у меня с UIS. хочу вывести на экран диалог(а какого типа диалог будильника?).

пишу:
создаю контент в ldrElf* _start
Код
UIS_MakeContentFromString("MCq0Np3", &content, L"Hello world!", 0x120000D0 );


далее:

Код
dialog = UIS_CreateConfirmation(elf.app->port, &content);
elf.app->dialog = dialog;



Что я делаю не так?

P.S. A51, пишу под EP2 smile.gif

Сообщение отредактировал Bad_Santa - 9.2.2010, 16:38
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 9.2.2010, 18:47


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255

Рейтинг: 1224



Bad_Santa, у тебя неправильно составлена строка формата в MakeContentFromString. Вместо "p3" надо "p1". Ты ведь передаёшь картинку первым параметром, а не третьим, так? И создавать диалог-то с контентом надо в HelloWorldStart (эта функция так называется в helloworld_snd, чтоб ориентироваться), а не _start.

И ещё одно - helloworld_snd из SVN годится только как основа для фоновых приложений (а ты судя по всему, использовал какой-то старый код как основу). Для создания эльфов с диалогами требуются некоторые модификации. Я кстати переделал и осовременил свои давние примеры из этой темы для работы с новым SDK, только всё никак обновить тему руки не дойдут.

P.S. Молодец :)

Сообщение отредактировал Andy51 - 9.2.2010, 18:57
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Bad_Santa
сообщение 10.2.2010, 8:37


Интересующийся
**

Группа: Пользователи
Сообщений: 75
Регистрация: 18.6.2007
Пользователь №: 138 555
Модель телефона: L7E

Рейтинг: 36.5



Цитата
Для создания эльфов с диалогами требуются некоторые модификации

Какие?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
G-XaD
сообщение 10.2.2010, 11:18


Мастер
****

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

Рейтинг: 323



Bad_Santa,
(Далее по тексту не путать приложение и эльф. Эльф - эльф-файл который загружается эльфлоадером и получает управление в ф-ции _start. Приложение - приложение для AFW системы)
1. Чтобы создать диалог для AFW приложения нужно сначала создать приложение (это как минимум структура APPLICATION_T). Поэтому функция _start не подходит.
2. Приложение с диалогом создается с параметрами AFW_APP_CENTRICITY_SECONDARY, AFW_FOCUS, а фоновое - AFW_PREPROCESSING, AFW_APP_CENTRICITY_NONE. Это какието параметры приоритета в системе AFW.
3. Обычно у приложений с диалогом есть доп. стэйт под назаванием init, в котором ловится только один ивент EV_GRANT_TOKEN. Раекцией на этот ивент должно быть изменение стэйта приложения на первый нефоновый стэйт. Так сделано в прошивке, так делают эльфописатели, будем считать это правилом, пока никто не доказал что можно делать по другому.
4. В структуре приложения нужно выставить хэндлер (идентификарот) UIS диалога, чтобы диалог появился на экране. С этим ты похоже разобрался. Расписывать не буду.
5. Желательно добавить чтото типа APP_ExitStateAndApp в функции выхода из приложения. Сравнительно недавно обнаружил утечку во всех своих эльфах написанных ранее - при нажатии красной кнопки приложение закрывается но не вызывается при этом выход из последнего стэйта. У себя я добавиляю
Код
    if ( state_handling_table[app->state].exit_fn != NULL && app->state != APP_STATE_BG )
        (state_handling_table[app->state].exit_fn)(ev_st, app, EXIT_STATE_EXIT);



Итого нужно добавлять в фоновое приложение:
инит стэйт
Spoiler:
Код

/* Таблица соответствий обработчиков, состояний и функций входа-выхода из состояния.
    Порядок состояний такой же, как в enum-e */
// ...
    { APP_STATE_INIT,
      NULL,
      NULL,
      init_state_handlers
    },
// ...

const EVENT_HANDLER_ENTRY_T init_state_handlers[] =
{
    { EV_GRANT_TOKEN,            HandleUITokenGranted },
    
    { STATE_HANDLERS_END,        NULL }
};
UINT32 HandleUITokenGranted( EVENT_STACK_T * ev_st, APPLICATION_T * app )
{
    UINT32            status;

    dbg("HandleUITokenGranted: Enter", 0);
    
    // Call standart event handler
    status = APP_HandleUITokenGranted( ev_st, app );
    dbg("HandleUITokenGranted: APP_HandleUITokenGranted DONE, status = %d", status);
    
    // Application is ready, now change init state to main state with UI
    if( (status == RESULT_OK) && (app->token_status == 2) ) {
        status = APP_UtilChangeState( APP_STATE_MAIN, ev_st, app );
    }

    dbg("HandleUITokenGranted: END", 0);
    return status;
}
[close]


изменить инит структуры приложения в функции старта приложения:
Spoiler:
Код
    papp = (THISAPP_T *)APP_InitAppData( (void *)APP_HandleEvent,
                                            sizeof(THISAPP_T),
                                            reg_id,
                                            0,
                                            0,            // history size
                                            1,            // priority
                                            AFW_APP_CENTRICITY_SECONDARY,
                                            AFW_FOCUS,
                                            AFW_POSITION_TOP );
[close]


добавить вход/выход в стэйт с главным диалогом:
взято из motocmd2/src/confirm.c
Spoiler:
Код
UINT32 ConfirmStateEnter( EVENT_STACK_T * ev_st, APPLICATION_T * app, ENTER_STATE_TYPE_T type )
{
    MOTOCMD_T *        papp = motocmd(app);
    SU_PORT_T        port = papp->apt.port;
    UIS_DIALOG_T    dialog;
    CONTENT_T        cnt;
    UINT32            status;
    
    dbg("ConfirmStateEnter: Enter, type = %d", type);
    if ( type != ENTER_STATE_ENTER )
        return RESULT_OK;
    
    // TODO: add your code here
    dialog = 0;
    switch ( papp->pro_buf.fbuf->operation ) {
        case OP_DELETE:
            status = UIS_MakeContentFromString( "s0 i1 s2s3", &cnt,
                    LANG_DELETE, papp->pro_buf.fbuf->count, LANG_FILES, 0x01000108 );
            
            if ( status != RESULT_OK )
                return status;
            
            dialog = UIS_CreateConfirmation( &port, &cnt );
            dbg("ConfirmStateEnter: UIS_CreateConfirmation DONE, dialog = %d", dialog);
            break;
        default:
            warn("ConfirmStateEnter: unknown operation %d", papp->pro_buf.fbuf->operation);
            
            status = UIS_MakeContentFromString( "q0", &cnt, str_question );
            dbg("ConfirmStateEnter: UIS_MakeContentFromString DONE, status = %d", status);
            
            if ( status != RESULT_OK )
                return status;
            
            dialog = UIS_CreateConfirmation( &port, &cnt );
            dbg("ConfirmStateEnter: UIS_CreateConfirmation DONE, dialog = %d", dialog);
    }
    
    if ( dialog == 0 )
        return RESULT_FAIL;
    papp->apt.dialog = dialog;
    
    dbg("ConfirmStateEnter: END");
    return RESULT_OK;
}

UINT32 ConfirmStateExit( EVENT_STACK_T * ev_st, APPLICATION_T * app, EXIT_STATE_TYPE_T type )
{
    MOTOCMD_T *        papp = motocmd(app);
    UINT32            status;
    
    dbg("ConfirmStateExit: Enter, type = %d", type);
    if ( type != EXIT_STATE_EXIT )
        return RESULT_OK;
    
    status = APP_UtilUISDialogDelete( &papp->apt.dialog );
    
    dbg("ConfirmStateExit: END, status = %d", status);
    return status;
}
[close]


Сообщение отредактировал G-XaD - 10.2.2010, 11:37
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Hairo Carela
сообщение 10.2.2010, 14:40


From a Distant Land
***

Группа: Пользователи
Сообщений: 141
Регистрация: 17.8.2009
Из: Dominican Republic
Пользователь №: 204 655
Модель телефона: ZINE Zn5
Прошивка: Qtopia Alpha


Настроение:
(-.-)'



Рейтинг: 230



QUOTE(beelineman @ 20.1.2010, 6:13) *

Итак...
Flash v. 1.0!

Включает фонарик одной кнопкой. Эльф для EP2.

Управление:
PWR (красная кнопка) - вкл/выкл фонарик
* - выйти из эльфа.

Перед выходом из эльфа не забудьте выключить фонарик, иначе он будет продолжать гореть!

Изменения с прошлой версии:

Не вызывает ивент включения/выключения при выходе из эльфа.
Убрана функция ldrGetPhoneName, которая не нужна была даже.
Теперь эльф называется не HelloWorld в main.c, а Flash.

Просьба скомпилировать. Сорцы прилагаю.


It works on Z3??? or it's only for E398???
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Мачо
сообщение 10.2.2010, 14:42


Ветеран
*****

Группа: Легенды MotoFan.Ru
Сообщений: 456
Регистрация: 26.7.2004
Из: Киров
Пользователь №: 8 569
Модель телефона: Е398 (умер), E6
Прошивка: Dream A Reality 2.0
Финалист Конкурса 2010

Рейтинг: 1410



Эльфы для 1 эп можно и под линукс собирать. На оф сайте ads есть линукс версия компилятора.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
G-XaD
сообщение 10.2.2010, 16:17


Мастер
****

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

Рейтинг: 323



Мачо,
Только там нужен файл с лицензией. Подходит тот, что используется с виндовой версией. Куда его ложить компилятор сам скажет :)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Fenja
сообщение 21.2.2010, 13:04


Авторитет
********

Группа: Модераторы
Сообщений: 5 564
Регистрация: 25.8.2008
Из: г. Пенза
Пользователь №: 179 851
Модель телефона: MotoRazr v3i
Прошивка: MotoUpdate v1.1

Рейтинг: 1756



Хочу сделать, что бы в Tunes 4.0 время отображения трека в яве было не до бесконечности,а 5-10 секунд.
Открыл функцию
Код
UINT32 Play( EVENT_STACK_T *ev_st,  void *app )

Нашел
Код
JavaStartMarquee(SplitPath(TunesTrackU, L"/"));
StartTimer(1000,13,0,app);

Дописал:
Код

JavaStopMarquee(jsapi_marquee_text);

Итого всесте с отладкой:
Код

JavaStartMarquee(SplitPath(TunesTrackU, L"/"));
dbg("Play", NULL);
dbg("Start timer", NULL);
StartTimer(1000,13,0,app);
dbg("EndTimer", NULL);
JavaStopMarquee(jsapi_marquee_text);
dbg("Kill text", NULL);

Смотрю в MIDway, после строки "Kill text" в яве текст так и остался, где я делаю не правильно? ph34r.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Учимся писать эльфов вместе, Обсуждение процесса кодинга · Эльфы, их разработка и портирование · Forum
 

16 страниц V « < 11 12 13 14 15 > » 
Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 18.7.2025, 16:59

Форум живёт: