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

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

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


Freestyler
********

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


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



Рейтинг: 4362




Цитата(DmT @ Вчера, 10:12)

самый простой вариант
*


Цитата(om2804 @ Вчера, 10:58)

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


а нафига мы вводили в либу BEGIN_4A__IN_DB ???

Цитата(Alesha_Pl @ Вчера, 9:59)

Надо прочитать значение из сима 004A_0001 офсет 4E
*



UINT8 feature_state;
UINT32 drop;
drop=*BEGIN_4A__IN_DB+78;
DL_DbFeatureGetCurrentState( drop, &feature_state);

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


Гуру
******

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

Рейтинг: 681



Расскажите тогда принципиальную разницу между использованием

Цитата(om2804 @ Вчера, 12:58)

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 );
*



и


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

UINT8 feature_state;
UINT32 drop;
drop=*BEGIN_4A__IN_DB+78;
DL_DbFeatureGetCurrentState( drop, &feature_state);
*



Если мне надо считать всего один офсет. Эти два метода чем отличаются в конечном итоге? Скорость? Размер конечного файла?



G-XaD, спасибо за разъяснение!


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


Мастер
****

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

Рейтинг: 323



Alesha_Pl,

SEEM_ELEMENT_DATA_read - API для работы с симами.
DL_Db* - API для работы с базой данных, а база данных сделана на симах. (DL=Device Layer, Db = DataBase) Прослойка между симами и программами, где под каждую "особенность" (eng: Feature), характеристику выделен бит из сима.
Сам посуди, неудобно же каждый раз читать номер байта и номер бита в этом байте. А для обращения к DL_Db* функциям достаточно указать уникальный номер характеристики, который просто обьявляется через enum.
Еще удобство - если вдруг захочется заменить симы реестром, то достаточно будет изменить функции DL_Db* и на работе программ это никак не отразится.
Если нужно будет изменить номер сима достаточно будет подправить функции DL_Db*, хотя и это врятли.

Если тебе нужно работать с симами, используй SEEM_ELEMENT_DATA_*, если с конкретной характеристикой, номер которой известен и между платформами не изменяется, используй DL_Db*

Сообщение отредактировал G-XaD - 13.9.2008, 10:24
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Alesha_Pl
сообщение 17.9.2008, 8:15


Гуру
******

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

Рейтинг: 681



Снова я. В общем начну по порядку.
переделываю я инфограф1.6. Добавил отображение включенного блютуза. Все отображалось, но позиция БТ была связана с позицией текстовой инфы о дисках. Все прекрасно работало. Но вот я решил выдать БТ отдельную позицию в конфиге. Вынес его в отдельную функцию UINT8 BT(char *buf_con). Добавил все как надо в конфиг. Позиция считывается. НО. Первый раз она выводится в нужную позицию, а потом с позиции на которой остановился в предыдущий раз. Т.е получается не выкл, а выкл выкл выкл и т.д. Ну понятно изъясняюсь. Гляньте исходники пожалуйса. Почему он БТ выводит в позицию из конфига только в первый раз, а потом лепит рядом.





tim apple, спасибо!!!


Сообщение отредактировал Alesha_Pl - 23.9.2008, 4:10
Прикрепленный файл src.zip   ( 19.1 килобайт ) Кол-во скачиваний: 87
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
tim apple
сообщение 22.9.2008, 18:12


Мастер
****

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

Рейтинг: 403



а буфер строки кто будет очищать ?

Код
UINT8 BT(char *buf_con)

{
   UINT8       data;

  dbg("Load BT", NULL);    

   // заполним структуру
      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 );
      
      /// strcat(buf_con, " ");       /// тут был баг
      strcpy(buf_con, " ");          /// баг-фикс
      if (data == 1 || data == 2) {strcat(buf_con, "(");} else {strcat(buf_con, ")");}


    
return data;
}


Сообщение отредактировал tim apple - 22.9.2008, 18:14
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
MIG~
сообщение 22.9.2008, 19:10


Мастер
****

Группа: Пользователи
Сообщений: 169
Регистрация: 10.4.2007
Пользователь №: 130 619
Модель телефона: V3I,E770,SE K800i
Победитель конкурса 2008

Рейтинг: 245



Подскажите пожалуйста имена функций которые отвечают за выключение дисплея ? Переделывал эльфы для запуска функций на подобе DAL_DisableDisplay , но они выключают дисплей на короткое время . На mCore есть эльфы для запуска функций с адреса прошивки это SwitchToBoot , есть эльфы запуска функций загруженых в оперативку это flesh . Подскажите структуру какого эльфа можно взять за образец чтобы выключать дисплей или эмулировать закрытие флипа ( прошивки с V3X у E770 почти одинаковые ) ... Проблема в том что на E770 дисплей у меня светится постоянно , ночью от зарядки , днём от jimm .... ПС такой эльф как flesh работает даже в яве ( по заданой комбинации кнопок ) , может его можно переделать ?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Chik_v
сообщение 22.9.2008, 20:03


Опытный
***

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

Рейтинг: 174.5



Поройся в эльфе Light, и попробуй UIS_SetBacklightWithIntensity
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Campanula
сообщение 5.10.2008, 7:18


Мастер
****

Группа: Пользователи
Сообщений: 287
Регистрация: 10.7.2008
Пользователь №: 176 749
Модель телефона: E398

Рейтинг: 123.5



Andy51

What's the ralationship between EVENTs and functions?

What's the ralationship between EVENTs and functions?Can we find which function will run after an event was send?How can I find the function which to be patched on when I want to change something of the phone?
Thanks for your reading.forgive me of my poor english



Will anyone share your MP MAP?

If you had renamed your function name in your IDA pro,why not share it with us?Then we should not find it again.
You can export your map file,Then I will turn it into IDC file by map2IDC.Everyone can import it !

After you tranformed the map file into idc file,you should add"#include <idc.idc>"in front of the file
QUOTE
#include <idc.idc>
Прикрепленный файл map2idc.zip   ( 334.3 килобайт ) Кол-во скачиваний: 130


Сообщение отредактировал Campanula - 5.10.2008, 7:50
Прикрепленный файл map2idc.zip   ( 334.3 килобайт ) Кол-во скачиваний: 130
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 6.10.2008, 18:22


0xFFFF
******

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

Рейтинг: 1224



Цитата(Campanula @ Вчера, 11:18)

What's the ralationship between EVENTs and functions?
*

Event tables, the same as you write in the elfs. So you need to search for this in the firmware.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Campanula
сообщение 7.10.2008, 6:10


Мастер
****

Группа: Пользователи
Сообщений: 287
Регистрация: 10.7.2008
Пользователь №: 176 749
Модель телефона: E398

Рейтинг: 123.5



QUOTE(Andy51 @ 6.10.2008, 18:22) *

Event tables, the same as you write in the elfs. So you need to search for this in the firmware.

Can you give me any infomation of the event table?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Учимся писать эльфов вместе, Обсуждение процесса кодинга · Эльфы, их разработка и портирование · Forum
 

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

 



Текстовая версия Сейчас: 23.5.2024, 5:04

Форум живёт: