motofan logo
16 страниц V « < 2 3 4 5 > »         
> 

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

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 килобайт ) Кол-во скачиваний: 1154
  3. "Язык программирования C"
    Прикрепленный файл C_book.zip   ( 220.86 килобайт ) Кол-во скачиваний: 898
Исходники эльфов
  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 килобайт ) Кол-во скачиваний: 898
Прикрепленный файл Spr_po_C.rar   ( 934.62 килобайт ) Кол-во скачиваний: 1154
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Nur87
сообщение 2.8.2008, 20:16


Мастер
****

Группа: Пользователи
Сообщений: 298
Регистрация: 17.10.2005
Из: Татарстан
Пользователь №: 54 836
Модель телефона: E398

Рейтинг: 100



что означает
Цитата
UtilLogStringData(" *** ELF *** HelloWorld: MainStateEnter");

из helloworld.c.

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


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 175
Регистрация: 31.3.2007
Пользователь №: 129 181
Модель телефона: LG GW620, L7e и др.
Победитель конкурса 2008

Рейтинг: 680



Nur87,
вывести строку " *** ELF *** HelloWorld: MainStateEnter" в p2kDataLogger
Используется для отладки

Сообщение отредактировал DmT - 3.8.2008, 15:31
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Nur87
сообщение 3.8.2008, 15:02


Мастер
****

Группа: Пользователи
Сообщений: 298
Регистрация: 17.10.2005
Из: Татарстан
Пользователь №: 54 836
Модель телефона: E398

Рейтинг: 100



1.
Код
UINT32 UIS_MakeContentFromString( char *format,  CONTENT_T *dst,  ... );

из SDK.
первые два параметра понятны. а что значит следуюшие ......

2. хочу сделать вот такое. при запуске эльфа появляется окно, как в motocmd, при входе в пункт О программе. но все никак не разберусь. может кто помочь, написать код с коментариями.

спасибо.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
G-XaD
сообщение 3.8.2008, 15:25


Мастер
****

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

Рейтинг: 323



Не в мидвей, а в p2kDataLogger. Только
1) Отладка должна быть включена в заблокированном симе. Разблокировка патчем.
2) Все логи прошивки выводятся туда же. Потом приходится выбирать свое.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Nur87
сообщение 3.8.2008, 19:09


Мастер
****

Группа: Пользователи
Сообщений: 298
Регистрация: 17.10.2005
Из: Татарстан
Пользователь №: 54 836
Модель телефона: E398

Рейтинг: 100



Цитата(Nur87 @ Сегодня, 19:02)

2. хочу сделать вот такое. при запуске эльфа появляется окно, как в motocmd, при входе в пункт О программе. но все никак не разберусь. может кто помочь, написать код с коментариями.
*


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

Я конечно всё понимаю, но меру знать надо! Нельзя в посте такие большие куски кода вставлять! Прикрепи файлом. A51
прикрепил. smile.gif

Сообщение отредактировал Nur87 - 3.8.2008, 19:25
Прикрепленный файл list.zip   ( 3.04 килобайт ) Кол-во скачиваний: 95
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 3.8.2008, 19:15


0xFFFF
******

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

Рейтинг: 1224



Nur87, ну вот в сдк пример написан "MCq0p1"
вот и передаёшь параметры согласно этой строке
Код
MakeContentFromString("MCq0p1", &content, L"Hello World", 0x12000010);

В основном параметры представляют собой ресурсы.

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


Мастер
****

Группа: Пользователи
Сообщений: 298
Регистрация: 17.10.2005
Из: Татарстан
Пользователь №: 54 836
Модель телефона: E398

Рейтинг: 100



Andy51
а моя
Код
UIS_MakeContentFromString("CTq0", &dst, L"О программе");
неправильная?

Вроде правильная. A51

Добавлено позже (3.8.2008, 23:22):
ладно. исправил
Код
UIS_MakeContentFromString("CTq0", &dst, L"О программе");

на
Код
UIS_MakeContentFromString("MCq0p1", &dst,"Hello World", 0x12000010);

все равно ребут.

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


0xFFFF
******

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

Рейтинг: 1224



Nur87, без неё всё работает? И какой телефон? Ты проверяешь, создаётся ли контент?

Сообщение отредактировал Andy51 - 3.8.2008, 19:25
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Nur87
сообщение 3.8.2008, 19:27


Мастер
****

Группа: Пользователи
Сообщений: 298
Регистрация: 17.10.2005
Из: Татарстан
Пользователь №: 54 836
Модель телефона: E398

Рейтинг: 100



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

Nur87, без неё всё работает? И какой телефон?
*


без неё также ребут.
телефон 398, прошивка чистая 49R
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 4.8.2008, 7:24


Freestyler
********

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


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



Рейтинг: 4362



Цитата(Nur87 @ Вчера, 21:27)

без неё также ребут.
*


мм.. так может ошибки в другом ?
а вообще возьми исходники om2804
и пример \ToneDBKiller\src\ELF.c
Код
    APPLICATION_T           *papp = (APPLICATION_T*) app;
    SU_PORT_T               port = papp->port;
    CONTENT_T               content;
    UIS_DIALOG_T            dialog = 0;
    WCHAR msg[64];
    u_atou( "Запуск плейлиста ?\nStart playlist ?",  msg );
    if(type!=ENTER_STATE_ENTER) return RESULT_OK;    
    UIS_MakeContentFromString("MCq0", &content, msg); //Создаём контент из строки    
    dialog = UIS_CreateConfirmation( &port, &content);    
    if(dialog == 0) return RESULT_FAIL;
    papp->dialog = dialog;
    return RESULT_OK;
}
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Nur87
сообщение 4.8.2008, 18:09


Мастер
****

Группа: Пользователи
Сообщений: 298
Регистрация: 17.10.2005
Из: Татарстан
Пользователь №: 54 836
Модель телефона: E398

Рейтинг: 100



опять я со своим эльфом. (мне надо создать окно с заголвком.)
пробую вот так.
Код
UINT32 MainStateEnter( EVENT_STACK_T *ev_st,  void *app,  ENTER_STATE_TYPE_T type )
{
    APPLICATION_T           *papp = (APPLICATION_T*) app;
    SU_PORT_T                  port = papp->port;
    CONTENT_T                  content;
    ACTIONS_T                  actions;
    UIS_DIALOG_T            dialog = 0;
    WCHAR msg[64];
    u_atou( "Удалить ToneDB ?",  msg );
    if(type!=ENTER_STATE_ENTER) return RESULT_OK;
    UIS_MakeContentFromString("MCq0", &content, msg); //Создаём контент из строки
    /* Добавим к нашим имеющимся по умолчанию действиям одно новое */    
151    actions->action[0].operation = ACTION_OP_ADD;
    /* Так как у нас в таблице обработчиков стол STATE_HANDLERS_RESERVED, то мы должны получить реальное значение ивенткода */
153   actions->action[0].event = .....; /* вот здесь можно ли прописать функцию     DAL_DisableDisplay( 0 );
или подскажите что нибудь простое.
как я понял это вызываемое действие при нажатии на этот пункт? */
154    actions->action[0].action_res = &content; // Ресурс, описывающий действие. это правильно я сделал?
/* Мы добавили только одно действие */
157    actions->count = 1;
    dialog = UIS_CreateViewer( &port, &content, &actions);
    if(dialog == 0) return RESULT_FAIL;
   papp->dialog = dialog;
    return RESULT_OK;
}

при компиляции выскакивает вот такое:
Код
'ELF.c", line 151:   Serious error: C2947E: Illegal types for operands: '->'
'ELF.c", line 153:   Serious error: C2947E: Illegal types for operands: '->'
'ELF.c1', line 154:   Serious error: C2947E: Illegal types for operands: '->'
'ELF.c1', line 157:   Serious error: C2947E: Illegal types for operands: '->'
LF.c: 0 warnings,   0 errors, 5 serious errors
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 4.8.2008, 18:19


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 175
Регистрация: 31.3.2007
Пользователь №: 129 181
Модель телефона: LG GW620, L7e и др.
Победитель конкурса 2008

Рейтинг: 680



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

ACTIONS_T actions;
*


у тебя тут локальная переменная, а не указатель.
Для локальных переменных пишется через ".", а для указателей через "->"
Цитата(Nur87 @ Сегодня, 0:09)

actions->action
*


actions.action
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Nur87
сообщение 4.8.2008, 19:00


Мастер
****

Группа: Пользователи
Сообщений: 298
Регистрация: 17.10.2005
Из: Татарстан
Пользователь №: 54 836
Модель телефона: E398

Рейтинг: 100



DmT, спасибо.

вот так получилось создать окно с заголовком.
Код
UINT32 MainStateEnter( EVENT_STACK_T *ev_st,  void *app,  ENTER_STATE_TYPE_T type )
{
    APPLICATION_T           *papp = (APPLICATION_T*) app;
    SU_PORT_T               port = papp->port;
    CONTENT_T               content;
    ACTIONS_T       actions;
    //RESOURCE_ID       CaptionEditor;
    //CaptionEditor = 0001;
    UIS_DIALOG_T            dialog = 0;
    WCHAR msg[64];
    u_atou( "Удалить ToneDB ?",  msg );
    if(type!=ENTER_STATE_ENTER) return RESULT_OK;
    
    UIS_MakeContentFromString("MCq0", &content, msg); //Создаём контент из строки
        /* Добавим к нашим имеющимся по умолчанию действиям одно новое */    
    actions.action[0].operation = ACTION_OP_ADD;
    /* Так как у нас в таблице обработчиков стол STATE_HANDLERS_RESERVED, то мы должны получить реальное значение ивенткода */
   actions.action[0].event = 0404; // Какой ивент будет создан при выборе действия
    actions.action[0].action_res = 0x010001CB; // Ресурс, описывающий действие

    /* Мы добавили только одно действие */
    actions.count = 1;

    dialog = UIS_CreateViewer( &port, &content, &actions);
        
    if(dialog == 0) return RESULT_FAIL;

    papp->dialog = dialog;

    return RESULT_OK;
}

но список в нём пуст. как добавить текст внутрь? или я не тот диалог использую.
скрин 1 - как получилось.
скрин 2 - как хочу получить.


Сообщение отредактировал Nur87 - 4.8.2008, 19:26
Прикрепленное изображение Прикрепленное изображение
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 4.8.2008, 21:28


0xFFFF
******

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

Рейтинг: 1224



Nur87, не уверен, но попробуй многострочный content - 'N'.
И u_atou( "Удалить ToneDB ?", msg ); использовать для кириллицы нельзя - получишь крякозябры.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Nur87
сообщение 5.8.2008, 7:13


Мастер
****

Группа: Пользователи
Сообщений: 298
Регистрация: 17.10.2005
Из: Татарстан
Пользователь №: 54 836
Модель телефона: E398

Рейтинг: 100



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

не уверен, но попробуй многострочный content - 'N'.
*


да получилось. сделал вот так
Код
    WCHAR msg[64];
    WCHAR msg1[64];
    u_atou( "Del ToneDB ?",  msg );
    u_atou( "Del ToneDB ?1111",  msg1 );
             UIS_MakeContentFromString("MCq0Nq1", &content, msg, msg1); //Создаём контент из строки


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

И u_atou( "Удалить ToneDB ?", msg ); использовать для кириллицы нельзя - получишь крякозябры.
*


а что лучше мне использовать?
пробовал и так
Код
    WCHAR msg1[64] =L"Удалить";

все равно кряки.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 5.8.2008, 7:28


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 175
Регистрация: 31.3.2007
Пользователь №: 129 181
Модель телефона: LG GW620, L7e и др.
Победитель конкурса 2008

Рейтинг: 680



Nur87,
Ты ленг уже правил?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 5.8.2008, 7:44


Freestyler
********

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


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



Рейтинг: 4362



Цитата(Nur87 @ Сегодня, 9:13)

а что лучше мне использовать?
*


01000866

UIS_MakeContentFromString("MCs0Nq1", &content, 0x01000866, msg1);




а кто в чём пишет код ? я в проге EditPlus 2 , может есть получше что ?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Nur87
сообщение 5.8.2008, 8:31


Мастер
****

Группа: Пользователи
Сообщений: 298
Регистрация: 17.10.2005
Из: Татарстан
Пользователь №: 54 836
Модель телефона: E398

Рейтинг: 100



Цитата(DmT @ Сегодня, 11:28)

Ты ленг уже правил?
*


нет. из-за этого наверное? все руки не доходят

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

а кто в чём пишет код ? я в проге EditPlus 2 , может есть получше что ?
*


я в Notepad++. выделение синтаксиса в зависимости от языка програмирования. справа список функции. вроде удобно. посмотрел EditPlus 2. мне моя больше понравилась. smile.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 5.8.2008, 8:39


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 175
Регистрация: 31.3.2007
Пользователь №: 129 181
Модель телефона: LG GW620, L7e и др.
Победитель конкурса 2008

Рейтинг: 680



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

а кто в чём пишет код ? я в проге EditPlus 2 , может есть получше что ?
*


В плагине к тоталкомандеру synplus(lister-плагин)
Andy51 советует Source Insight
Но он перегруженный помоему.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Chik_v
сообщение 5.8.2008, 8:39


Опытный
***

Группа: Разработчики
Сообщений: 107
Регистрация: 13.1.2007
Из: Херсон
Пользователь №: 116 653
Модель телефона: Samsung i5700
Прошивка: i570EXXJH7
Победитель конкурса 2008

Рейтинг: 174.5



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

а кто в чём пишет код ? я в проге EditPlus 2 , может есть получше что ?
*



А я пользую CodeBlocks IDE. Я его настроил на работу с компилером для M*Core. Есть подсветка синтаксиса, автодополнение и прочее
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Nur87
сообщение 5.8.2008, 8:54


Мастер
****

Группа: Пользователи
Сообщений: 298
Регистрация: 17.10.2005
Из: Татарстан
Пользователь №: 54 836
Модель телефона: E398

Рейтинг: 100



пробую теперь создать диалог-список

Код
RESOURCE_ID       CaptionEditor;
CaptionEditor = 0x010001CB;//это у меня правильно?         
dialog = UIS_CreateList( &port,
                             0,
                             1,//ENTRIES_NUM кол-во пунктов меню
                             0,
                             1,// starting_num
                             0,
                             2,
                             &actions,
174                             CaptionEditor);//заголовок списка

возникает ошибка
Код
'ELF.с",   line  174:   Error:   C3029E:   <argument  5  to   'UIS_CreateList'>:   implicit   casе  of  non-0  int  to  pointer
ELF.c:   0  warnings,   1  error,   Ш serious  errors


что за параметр RESOURCE_ID CaptionEditor;.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 5.8.2008, 13:32


0xFFFF
******

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

Рейтинг: 1224



Nur87, он тебе говорит, что в пятом параметре требуется указатель, а не число.
Пятый параметр - это
Код
1,// starting_num
Так что тебе нужно сделать так:
Код
starting_num = 1;
dialog = UIS_CreateList( &port,
                             0,
                             1,//ENTRIES_NUM кол-во пунктов меню
                             0,
                             &starting_num,
                             0,
                             2,
                             &actions,
                             CaptionEditor);//заголовок списка

Ну вот, наконец-то кому-то эта тема помогает smile.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Nur87
сообщение 5.8.2008, 14:24


Мастер
****

Группа: Пользователи
Сообщений: 298
Регистрация: 17.10.2005
Из: Татарстан
Пользователь №: 54 836
Модель телефона: E398

Рейтинг: 100



Andy51, спасибо. почему то ссылка на строку была на последний параметр. и я думал что в ней ошибка. сделал как ты сказал, теперь вроде работает.

если я правильно понял:
UIS_CreateViewer - создает диалог сразу при запуске эльфа?
UIS_CreateList - создает окно с диалогом при нажатии на кнопку меню?
потому что у меня они именно так работают.

когда я использую UIS_CreateList то заголовок и пункт меню пустые. может я их неправильно задаю.
Код
    RESOURCE_ID       CaptionEditor;
    CaptionEditor = 0x010001CB;       // это заголовок. а как суда свой текст вписать? тут тип типа int

Код
    ACTIONS_T       actions;
           actions.action[0].operation = ACTION_OP_ADD;
           actions.action[0].event = 0404; // Какой ивент будет создан при выборе действия
           actions.action[0].action_res = 0x010001CB; // Ресурс, описывающий действие
           actions.count = 1;

Код
        dialog1 = UIS_CreateList( &port,
                             0,
                             1,//ENTRIES_NUM кол-во пунктов меню
                             0,
                              &starting_num,
                             0,
                             2,
                             &actions,
                             CaptionEditor);


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

Ну вот, наконец-то кому-то эта тема помогает
*


главное что есть кому помочь. спасибо всем кто помогает. clap.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 5.8.2008, 14:54


Freestyler
********

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


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



Рейтинг: 4362



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

actions.action[0].action_res = 0x010001CB; // Ресурс, описывающий действие
*


это работает ? ведь Экшены вроде 0x0600хххх...
или это на софт-клавишах ...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Nur87
сообщение 5.8.2008, 15:10


Мастер
****

Группа: Пользователи
Сообщений: 298
Регистрация: 17.10.2005
Из: Татарстан
Пользователь №: 54 836
Модель телефона: E398

Рейтинг: 100



Osta,
а как проверить? компилится все без ошибок.

кстати когда создаем диалог, на софт клавишах имеются НАЗАД и ВЫБОР. каким образом на них выставить определенные действия.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 5.8.2008, 15:22


Freestyler
********

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


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



Рейтинг: 4362



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

res = 0x010001CB; // Ресурс, описывающий действие
*



кст это 01CB | Ужин :-) есть где-то такое у тебя?

подставь что-то типа

#define RES_ID_ACTION_LIST_BACK 0x06000001
#define RES_ID_ACTION_LIST_CALL 0x06000002
#define RES_ID_ACTION_LIST_CALLBACK 0x06000003
#define RES_ID_ACTION_LIST_CANCEL 0x06000004
#define RES_ID_ACTION_LIST_CHANGE 0x06000005
#define RES_ID_ACTION_LIST_CLEANUP_ALL 0x06000006
#define RES_ID_ACTION_LIST_CNF_NEW 0x06000007
#define RES_ID_ACTION_LIST_CONFIRMATION_NO 0x06000008
#define RES_ID_ACTION_LIST_CONFIRMATION_YES 0x06000009

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


Мастер
****

Группа: Пользователи
Сообщений: 298
Регистрация: 17.10.2005
Из: Татарстан
Пользователь №: 54 836
Модель телефона: E398

Рейтинг: 100



практикуюсь на исходниках ListTest.
заменил код:
Код
for( index=0, i=start; (i<start+num) && (i<=ENTRIES_NUM); i++, index++)
    {
        plist[index].editable = FALSE;            // Поле нередактируемо
        plist[index].content.static_entry.unk6 = 1;

        //Возьмём для примера уже готовые строки прямо из ленга
        UIS_MakeContentFromString( "Cs0", &(plist[index].content.static_entry.text), msg );
    }

вот на такой.
Код
UINT32 SendListItems( EVENT_STACK_T *ev_st,  void *app, UINT32 start, UINT32 num)
{
    APPLICATION_T            *papp = (APPLICATION_T*) app;
    LIST_ENTRY_T            *plist; // Буффер для элементов списка
    UINT32                     status=RESULT_OK;
        WCHAR msg[64] =L"строка1";
    WCHAR msg1[64] =L"строка2";
        WCHAR msg2[64] =L"строка3";
                WCHAR msg3[64] =L"строка4";        

plist[0].editable = FALSE;            // Поле нередактируемо
        plist[0].content.static_entry.unk6 = 1;
        UIS_MakeContentFromString( "CTq0Nq1Nq2Nq3", &(plist[0].content.static_entry.text), msg, msg1, msg2,msg3);


но при запуске эльфа происходит ребут. компилится все без ошибок.

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


0xFFFF
******

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

Рейтинг: 1224



Nur87, контент для списка должен быть однострочным
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Nur87
сообщение 5.8.2008, 19:06


Мастер
****

Группа: Пользователи
Сообщений: 298
Регистрация: 17.10.2005
Из: Татарстан
Пользователь №: 54 836
Модель телефона: E398

Рейтинг: 100



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

контент для списка должен быть однострочным
*


т.е. так?
Код
UIS_MakeContentFromString( "Cq0", &(plist[0].content.static_entry.text), msg);

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


Мастер
****

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

Рейтинг: 323



Nur87,
под plist память кто будет выделять?
p.s. пишу с трубы
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Nur87
сообщение 6.8.2008, 7:10


Мастер
****

Группа: Пользователи
Сообщений: 298
Регистрация: 17.10.2005
Из: Татарстан
Пользователь №: 54 836
Модель телефона: E398

Рейтинг: 100



Цитата(G-XaD @ Сегодня, 10:54)

под plist память кто будет выделять?
*


вот это имеешь ввиду?

Код
plist = (LIST_ENTRY_T*) suAllocMem( sizeof(LIST_ENTRY_T)*num, NULL ); // malloc

она есть.

в 136 посте я показал только что именно изменил.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
G-XaD
сообщение 6.8.2008, 8:30


Мастер
****

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

Рейтинг: 323



А ты уверен, что num никогда не может быть равоым нулю и память удачно выделилась?

Добавлено позже (6.8.2008, 11:34):
А проще всего накидать после каждой строки отладочных сообщений и определить где вышел ребут

Добавлено позже (6.8.2008, 11:37):
Доберусь до компа, укажу на грубые ошибки.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Nur87
сообщение 6.8.2008, 9:04


Мастер
****

Группа: Пользователи
Сообщений: 298
Регистрация: 17.10.2005
Из: Татарстан
Пользователь №: 54 836
Модель телефона: E398

Рейтинг: 100



G-XaD,
вроде нашёл ошибку. у меня объявлено 4 элемента в списке.
Код
#define ENTRIES_NUM 4        // Разумеется, здесь это для примера

а описал я только одну:
Код
plist[0].editable = FALSE;            // Поле нередактируемо
        plist[0].content.static_entry.unk6 = 1;
        UIS_MakeContentFromString( "Cq0", &(plist[0].content.static_entry.text), msg);
....  

добавил ещё
Код
plist[1].editable = FALSE;            // Поле нередактируемо
....
plist[2].editable = FALSE;            // Поле нередактируемо
......
plist[3].editable = FALSE;            // Поле нередактируемо

ребутов нет.

теперь у меня такой вопрос. создал я окно с диалогом.
Код
dialog = UIS_CreateViewer( &port, &content, &action);

что такое action? это список действйии на софт кнопках?

вот как у меня эльф сейчас. как мне повесить на софт кнопки свои действия:
например чтоб при нажатии на левую выполнялось действие1, на кнопку меню действие2, прав софт - действие3.

Сообщение отредактировал Nur87 - 6.8.2008, 10:16
Прикрепленное изображение
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
G-XaD
сообщение 6.8.2008, 9:53


Мастер
****

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

Рейтинг: 323



На сколько я помню ENTRIES_NUM кол-во элементов в диалоге-списке. Список(List) и список действий(action_list) это разные вещи. Каждый диалог имеет список действий. Список действий - это список под кнопкой Меню а также 2 действия на софт кнопках.

Добавлено позже (6.8.2008, 13:03):
Чтобы обрабатывать нажатия кнопок нужно ловить ивент EV_KEY_PRESS

Добавлено позже (6.8.2008, 13:11):
При нажатии любой кнопки ОСь создает событие EV_KEY_PRESS. Сначала это событие обрабатывают приложения, далее, если оно не удалено, то его обрабатывает верхний диалог.

Добавлено позже (6.8.2008, 13:16):
action - список действий. В описании ф-ции указан же тип параметра.

Сообщение отредактировал G-XaD - 10.8.2008, 5:46
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Nur87
сообщение 6.8.2008, 10:25


Мастер
****

Группа: Пользователи
Сообщений: 298
Регистрация: 17.10.2005
Из: Татарстан
Пользователь №: 54 836
Модель телефона: E398

Рейтинг: 100



G-XaD,
поправил свой предыдущий пост. опечатка была. не
Код
action_list->action[0].operation = ACTION_OP_ADD;

а
Код
plist[1].editable = FALSE;            // Поле нередактируемо



Добавлено позже (6.8.2008, 14:29):
Цитата(G-XaD @ Сегодня, 13:53)

Чтобы обрабатывать нажатия кнопок нужно ловить ивент EV_KEY_PRESS
*


в том же ListTest. там же нет никаких EV_KEY_PRESS. но однако при запуске создается список, и при нажатии МЕНЮ пояаляется второй список со списком действии..

Сообщение отредактировал Nur87 - 6.8.2008, 10:26
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
G-XaD
сообщение 6.8.2008, 10:39


Мастер
****

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

Рейтинг: 323



В примере нажатие кнопки МЕНЮ обработал диалог-список и открыл список действий, который указал ему программист
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Alesha_Pl
сообщение 12.9.2008, 7:59


Гуру
******

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

Рейтинг: 681



Пожалуйста, помогите разобраться с чтением данных из сима.
Надо прочитать значение из сима 004A_0001 офсет 4E (там 0 или 1 бывает) и присвоить его переменной для дальнейшего использования.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 12.9.2008, 8:12


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 175
Регистрация: 31.3.2007
Пользователь №: 129 181
Модель телефона: LG GW620, L7e и др.
Победитель конкурса 2008

Рейтинг: 680



самый простой вариант
BYTE data[SEEM_SIZE];
SEEM_FDI_OUTSIDE_SEEM_ACCESS_read(SEEM_NAME,1,&data,SEEM_SIZE);
T = data[4E];
в T будет твое значение
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
om2804
сообщение 12.9.2008, 8:58


МотоКодер
******

Группа: Разработчики
Сообщений: 786
Регистрация: 14.8.2006
Из: Архангельск
Пользователь №: 95 055
Модель телефона: E398
Прошивка: DaR
Победитель конкурса 2008

Рейтинг: 1650



Зачем читать весь сим, когда нужен один оффсет?


Код

SEEM_ELEMENT_DATA_CONTROL_T  data_seem;
UINT8  data;

// заполним структуру
data_seem.seem_element_id = 0x004A;
data_seem.seem_record_number = 0x0001;
data_seem.seem_offset = 0x4E;
data_seem.seem_size = 1; // нужно прочитать один байт

SEEM_ELEMENT_DATA_read ( &data_seem,  &data,  TRUE );


В data будет значение

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


Гуру
******

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

Рейтинг: 681



Спасибо! Все получилось.

Сообщение отредактировал Alesha_Pl - 13.9.2008, 6:57
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Учимся писать эльфов вместе, Обсуждение процесса кодинга · Эльфы, их разработка и портирование · Forum
 

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

 



Текстовая версия Сейчас: 2.8.2025, 2:02

Форум живёт: