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

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

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
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
IlyaSkriblovsky
сообщение 20.10.2008, 11:23


Новичок
*

Группа: Пользователи
Сообщений: 5
Регистрация: 17.10.2008
Пользователь №: 183 912
Модель телефона: L7e
Прошивка: NewStyle 2.1

Рейтинг: 0



1. Может ли фоновый эльф считать данные из текущего диалога на экране? Получить его тип может, есть такая функция, а, например, считать данные из MessageBox'а?

2. В либе есть функция suSendMessage(), а где найти ее описание и заголовок? Перерыл форум, не нашел.

3. Есть ли способ из эльфа пользоваться USSD? Или только эмулируя нажатия клавиш? wink.gif Но тогда чтобы считать ответ - возникает вопрос в пункте 1.

Спасибо
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 20.10.2008, 13:01


Freestyler
********

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


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



Рейтинг: 4362



Цитата(Alesha_Pl @ 18.10.2008, 6:33)

Или текущий стиль на всех телефонах в симе 4A офсет 0A и можно просто через сим смотреть.
*


да
Цитата(AKAmasol @ 18.10.2008, 12:49)

У меня только на вытаскивание шнура реагирует
*


тоесть проблема решена ?
Цитата(IlyaSkriblovsky @ Сегодня, 13:23)

Есть ли способ из эльфа пользоваться USSD?
*


я думаю, USSD-запрос ничем не отличается от набора номера и звонка на него
я бы порыскал по эльф-прошивке , поглазел на реализацию АТ-комманд
Цитата(IlyaSkriblovsky @ Сегодня, 13:23)

считать данные из MessageBox'а?
*


смс-ки читать ? опять же
я бы порыскал по эльф-прошивке , поглазел на реализацию считывания сообщений через корелет
или может кто видел ивент сообщения с аттачем?


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

2. В либе есть функция suSendMessage(),
*


точно она тебе нужна ? может эта надо
пишет om2804
Код

/*******************************
  Отправка сообщений
*******************************/

typedef struct
{
    WCHAR  address[51];
    UINT8  addr_type; // 0 -SMS, 1 - EMAIL, 2 - No, 3 - Long Msg ???
    WCHAR  contents[512]; // максимальный размер 0x7BFE, только для SMS, думаю, это много
} SEND_TEXT_MESSAGE_T;

UINT32 DL_SigMsgSendTextMsgReq(IFACE_DATA_T *port, SEND_TEXT_MESSAGE_T *msg_ptr);
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
AKAmasol
сообщение 20.10.2008, 13:33


Опытный
***

Группа: Пользователи
Сообщений: 117
Регистрация: 15.2.2008
Из: Казань
Пользователь №: 163 680
Модель телефона: E398
Прошивка: DaRII [test15] Mod

Рейтинг: 40



Цитата(AKAmasol @ 18.10.2008, 14:49) *

У меня только на вытаскивание шнура реагирует (по крайней мере никакое окно не выскакивает, ничего не запускается).
Функцию аналогичную DL_AccIsHeadsetAvailable, только для вытаскивания гарнитуры, в либе не нашел. Может есть такие для вытаскивания зарядки и кабеля?

Цитата(Osta @ 20.10.2008, 17:01) *

то есть проблема решена ?

Не совсем. Нужна функция аналогичная DL_AccIsHeadsetAvailable, только для вытаскивания гарнитуры. Иначе реагирует на юсб и зарядку. В остальном всё норм.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
om2804
сообщение 20.10.2008, 13:59


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

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

Рейтинг: 1650



Про USSD могу пока сказать только название функций
DL_SigCallSSSendUSSDResponseReq - для посылки запроса
DL_SigCallSSAbortUSSDReq - для отмены запроса

Данные видимо приходят по ивенту 0x8203B

Сообщение отредактировал om2804 - 20.10.2008, 14:05
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
IlyaSkriblovsky
сообщение 20.10.2008, 14:10


Новичок
*

Группа: Пользователи
Сообщений: 5
Регистрация: 17.10.2008
Пользователь №: 183 912
Модель телефона: L7e
Прошивка: NewStyle 2.1

Рейтинг: 0



Цитата(Osta @ 20.10.2008, 17:01) *

я думаю, USSD-запрос ничем не отличается от набора номера и звонка на него

Ну, с точки зрения как его инициировать - да. Но интереснее другое - как считать ответ на USSD-запрос? Насколько я знаю, стандартными АТ-командами этого сделать нельзя

Цитата(Osta @ 20.10.2008, 17:01) *

я бы порыскал по эльф-прошивке , поглазел на реализацию АТ-комманд

Может вопрос тупой, но что такое эльф-прошивка? Сама прошивка телефона? А причем тут "эльф-"?

Цитата(Osta @ 20.10.2008, 17:01) *

смс-ки читать ? опять же

Не, про чтение MessageBox'а я спрашивал чтобы читать USSD-ответ

Цитата(Osta @ 20.10.2008, 17:01) *

точно она тебе нужна ? может эта надо

Спасибо!

Сообщение отредактировал IlyaSkriblovsky - 20.10.2008, 14:11
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 20.10.2008, 14:27


Freestyler
********

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


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



Рейтинг: 4362



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

Может вопрос тупой, но что такое эльф-прошивка? Сама прошивка телефона? А причем тут "эльф-"?
*


IlyaSkriblovsky, жаль , что вы ещё не обладаете знаниями от этого чуда
Some useful stuff for patchers!
из него беруться названия функций и смотриться использование этих функций
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
om2804
сообщение 20.10.2008, 14:29


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

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

Рейтинг: 1650



IlyaSkriblovsky, про USSD смотри тут
Паттерны и описания функций



Сообщение отредактировал om2804 - 20.10.2008, 14:34
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
IlyaSkriblovsky
сообщение 20.10.2008, 14:38


Новичок
*

Группа: Пользователи
Сообщений: 5
Регистрация: 17.10.2008
Пользователь №: 183 912
Модель телефона: L7e
Прошивка: NewStyle 2.1

Рейтинг: 0



Цитата

IlyaSkriblovsky, жаль , что вы ещё не обладаете знаниями от этого чуда

Класс! И правда жаль что я этой темы раньше не увидел. Как же я это пропустил!? Спасибо, буду копать
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Campanula
сообщение 22.10.2008, 8:02


Мастер
****

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

Рейтинг: 123.5




Can someone help me to find this libgen?

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


Freestyler
********

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


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



Рейтинг: 4362



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

Can someone help me to find this libgen?
*


?? To find its address or how it to use?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Alesha_Pl
сообщение 22.10.2008, 9:05


Гуру
******

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

Рейтинг: 681



Osta, ее нет в сдк, как я понял, и в либгене видимо тоже. Она должна возвращать значение яркости подсветки дисплея? Я в моде секундомера из сима читал, потому что UIS_SetBacklightWithIntensity есть в сдк и установить подсветку на нужную яркость можно, а вот получить текушее... Не нашел ничего лучше, чем читать его из сима яркости. Хотя похоже значение яркости в симе и то которое ставит UIS_SetBacklightWithIntensity немного разные - В секундомере видно например, что если выключить подсветку (кнопкой), то потом она включается немного с меньшей яркостью.

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


Мастер
****

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

Рейтинг: 123.5



QUOTE(Osta @ 22.10.2008, 9:01) *

?? To find its address or how it to use?

find its address

thanks smile.gif

and i think that it can get the brightness currently

Сообщение отредактировал Campanula - 22.10.2008, 9:11
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 22.10.2008, 9:13


Freestyler
********

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


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



Рейтинг: 4362



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

Osta, ее нет в сдк, как я понял, и в либгене видимо тоже.
*


так её и в прошивке нет вроде :-)

Добавлено позже (22.10.2008, 11:14):
Цитата(Campanula @ Сегодня, 11:10)

and i think that it can get the brightness currently
*



read in seem
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Campanula
сообщение 22.10.2008, 9:20


Мастер
****

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

Рейтинг: 123.5



How to find and read in seem?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Alesha_Pl
сообщение 22.10.2008, 9:22


Гуру
******

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

Рейтинг: 681



Campanula,
seem 0180; record 0001; offset 0C

Код
typedef UINT16 SEEM_ELEMENT_TYPE; // номер сима

typedef struct {
  SEEM_ELEMENT_TYPE   seem_element_id; // seem
  UINT16   seem_record_number; // record
  UINT32  seem_offset; // offset
  UINT32  seem_size;
} SEEM_ELEMENT_DATA_CONTROL;


SEEM_ELEMENT_DATA_CONTROL_T  data_seem;
UINT8  data;

data_seem.seem_element_id = 0x0180;
data_seem.seem_record_number = 0x0001;
data_seem.seem_offset = 0x0C;
data_seem.seem_size = 1; // нужно прочитать один байт
SEEM_ELEMENT_DATA_read ( &data_seem,  &data,  TRUE );



Значение считается в data.

Вообще-то написано несколькими страницами раньше - меня учили smile.gif

Сообщение отредактировал Alesha_Pl - 22.10.2008, 9:28
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
rex
сообщение 22.10.2008, 15:49


Мастер
****

Группа: Пользователи
Сообщений: 162
Регистрация: 10.5.2007
Из: Украина,Винницкая область
Пользователь №: 134 392
Модель телефона: L7/L9/Z3/E1
Прошивка: У меня их много :)

Рейтинг: 25.5



А кто нить может показать как зделать скитывания офсета из сима и потом запись офсета?


[om2804]
Смотрим исходники SeemEditor


Сообщение отредактировал om2804 - 22.10.2008, 18:06
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
AKAmasol
сообщение 22.10.2008, 16:26


Опытный
***

Группа: Пользователи
Сообщений: 117
Регистрация: 15.2.2008
Из: Казань
Пользователь №: 163 680
Модель телефона: E398
Прошивка: DaRII [test15] Mod

Рейтинг: 40



rex, читай чуть выше своего поста, также смотри на стр. 15.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
tim apple
сообщение 23.10.2008, 8:02


Мастер
****

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

Рейтинг: 435



работаю над эльфом "меню USB". в результате хочу получить:
1) замена стандартного пункта меню своим эльфом
2) запуск эльфа при втыкании кабеля

преключение режимов нашел и проверил.
замена меню - знаю как (патчем).

вопрос: кто что-нибудь знает по поводу отслеживания состояния кабеля ?
пока идея одна - патч на USB_RTIME... чтобы посылал ивент при обнаружении хоста.
но хотелось бы проще.

USB_RTIME... посылает системное сообщение, но не разобрал к чему оно ведет.
может кто находит ивент ?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 23.10.2008, 8:23


Freestyler
********

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


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



Рейтинг: 4362



Цитата(tim apple @ Сегодня, 10:02)

кто что-нибудь знает по поводу отслеживания состояния кабеля ?
*


какое состояние должно отслеживатся ? в прошивке несколько состояний
присоединённых устройств
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
tim apple
сообщение 23.10.2008, 11:23


Мастер
****

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

Рейтинг: 435



Osta,
сам факт подключения кабеля к телефону (не зарядку, а дата-кабель)

> в прошивке несколько состояний
а можно подробнее?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 23.10.2008, 11:58


Freestyler
********

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


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



Рейтинг: 4362



Цитата(tim apple @ Сегодня, 13:23)

а можно подробнее?
*


ну к примеру есть функция
get_connection_status__9DL_ACC_SPSFUc

её пользуется дополнительная функция DL_AccGetConnectionStatus
если в неё послать цифровое значение интересующего устройства,
то возврат 1 - устройство есть

какие значения посылать , можно найти в функциях
DL_AccVehicleKitPresent , DL_AccIsHeadsetAvailable ,
headsetConnected, DL_AccBtScoLinkControlReq ,
IdleHandleExternalDeviceStatus , VP_AudioCapture_IsAccyConnected

наверное сумбурно немного ? по эльф-прошивке лучше смотрится

ну а "втыкивание" кабеля я описывал уже в этой теме
{ 0x822F3, OS7}, // ивент вставки кабеля в usb, одинаков для всех моделей
находятся эти ивенты тут
Код

s_SerialEvTab   DCD 0x82079, ams_SerialAccAttach+1, 0x8207A, ams_SerialAccDetach+1
                 DCD 0x820ED, ams_SerialDevAttach+1, 0x820EE, ams_SerialDevDetach+1
                 DCD 0x82085, ams_SerialDataReady+1, 0x82084, ams_SerialEstablished+1
                 DCD 0x82088, ams_SerialBrokenPath+1, 0x82087, ams_SerialXoff+1
                 DCD 0x82086, ams_SerialXon+1, 0x822F3, ams_AccHandleCableInd+1
                 DCD 0x822F4, ams_AccHandleCableInd+1
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
AKAmasol
сообщение 23.10.2008, 12:05


Опытный
***

Группа: Пользователи
Сообщений: 117
Регистрация: 15.2.2008
Из: Казань
Пользователь №: 163 680
Модель телефона: E398
Прошивка: DaRII [test15] Mod

Рейтинг: 40



В массиве Tunes 3.4 определил ивент, на который сработает процедура
EVENT_HANDLER_ENTRY_T shell_any_state_handlers[] =
{ 0x822F4, Pause}


т.е. при вызове ивента ставится пауза во время воспроизведения:
Код
UINT32 Pause(EVENT_STACK_T *ev_st,  void *app)
{
    UINT32              Error=1;
    APP_SHELL_T         *papp = ( APP_SHELL_T* ) app;

             if (papp->mme_media_file != 0)
    {
        Error = MME_GC_playback_pause(papp->mme_media_file); // пауза
        dbg( "Error_Pause = %d", Error );
    }
    
    // если всё хорошо, меняем состояние
    if (Error == 0)    
    {
        State_Player = PAUSE;
        ShowiTunesState();
        //paint();
        
        paint_stateicons(ev_st, app);
        paint_clear_time(ev_st,app);
        paint_progressbar(ev_st, app);
    }
  return RESULT_OK;
}


Всё работает отлично, но две последние функции никак не хотят работать, а именно paint_clear_time(ev_st,app) и paint_progressbar(ev_st, app). Т.е. ивент срабатывает, воспроизведение ставится на паузу, меняется значок в статус-строке, меняется значок из скина на соответствующий, а прогресс бар и время трека продолжает идти вперёд.
Можно ли это исправить и как?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 23.10.2008, 13:37


Freestyler
********

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


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



Рейтинг: 4362



Цитата(AKAmasol @ Сегодня, 14:05)

но две последние функции никак не хотят работать, а именно paint_clear_time(ev_st,app) и paint_progressbar(ev_st, app).
*


ничего , что мы их не видим в посте ? :-)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
AKAmasol
сообщение 28.10.2008, 14:04


Опытный
***

Группа: Пользователи
Сообщений: 117
Регистрация: 15.2.2008
Из: Казань
Пользователь №: 163 680
Модель телефона: E398
Прошивка: DaRII [test15] Mod

Рейтинг: 40



Сам кое-как смог исправить. Вот что получилось:
Код
UINT32 Pause(EVENT_STACK_T *ev_st,  void *app)
{
    UINT32              Error=1;
    APP_SHELL_T         *papp = ( APP_SHELL_T* ) app;
    EVENT_T             *event = AFW_GetEv(ev_st );

    if (event->code == 0x0822F4)
    {
    if (papp->mme_media_file != 0)
       {
        Error = MME_GC_playback_pause(papp->mme_media_file); // пауза
        dbg( "Error_Pause = %d", Error );
       }
    
    // если всё хорошо, меняем состояние
    if (Error == 0)    
       {
        MME_GC_playback_get_attribute(papp->mme_media_file, DURATION, &timeDuraction);
        timeDuraction = timeDuraction;
        MME_GC_playback_get_attribute(papp->mme_media_file, POSITION, &timePosition);

        StopTimer( 0, app );

        State_Player = PAUSE;
        ShowiTunesState();
        //paint();
        
        repaint(ev_st, app);
        //paint_stateicons(ev_st, app);
        //paint_progressbar(ev_st, app);
       }
    }
    else
    {
    if (papp->mme_media_file != 0)
       {
        Error = MME_GC_playback_pause(papp->mme_media_file); // пауза
        dbg( "Error_Pause = %d", Error );
       }
    
    // если всё хорошо, меняем состояние
    if (Error == 0)    
       {
        State_Player = PAUSE;
        ShowiTunesState();
        //paint();
        
        paint_stateicons(ev_st, app);
        paint_clear_time(ev_st,app);
        paint_progressbar(ev_st, app);
       }
    }

    return RESULT_OK;
}

Я случайно ничего лишнего не добавил?

Добавлено позже (28.10.2008, 18:11):
Цитата(Osta @ 23.10.2008, 15:58) *

Код

s_SerialEvTab   DCD 0x82079, ams_SerialAccAttach+1, 0x8207A, ams_SerialAccDetach+1
                 DCD 0x820ED, ams_SerialDevAttach+1, 0x820EE, ams_SerialDevDetach+1
                 DCD 0x82085, ams_SerialDataReady+1, 0x82084, ams_SerialEstablished+1
                 DCD 0x82088, ams_SerialBrokenPath+1, 0x82087, ams_SerialXoff+1
                 DCD 0x82086, ams_SerialXon+1, 0x822F3, ams_AccHandleCableInd+1
                 DCD 0x822F4, ams_AccHandleCableInd+1


Здесь есть ивенты на вытаскивание или на проверку отдельно зарядки, кабеля или гарнитуры?

Сообщение отредактировал AKAmasol - 28.10.2008, 14:17
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 28.10.2008, 14:18


Freestyler
********

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


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



Рейтинг: 4362



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

Здесь есть ивенты на вытаскивание зарядки, кабеля или гарнитуры?
*


проверять нужно.. слово "Detach" на что-то похоже..
и ты ж сам писал , что проверил DCD 0x822F4, ams_AccHandleCableInd+1
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
AKAmasol
сообщение 28.10.2008, 14:29


Опытный
***

Группа: Пользователи
Сообщений: 117
Регистрация: 15.2.2008
Из: Казань
Пользователь №: 163 680
Модель телефона: E398
Прошивка: DaRII [test15] Mod

Рейтинг: 40



Цитата(Osta @ 28.10.2008, 18:18) *

DCD 0x822F4, ams_AccHandleCableInd+1

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


Freestyler
********

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


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



Рейтинг: 4362



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

Мне надо, чтобы только на гарнитуру реагировал.
*


согласись , что проверить 11 ивентов указанных в таблице можно за полчаса,
а разговор в теме ведется уже не первый день

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

Здесь есть ивенты на вытаскивание или на проверку отдельно зарядки, кабеля или гарнитуры?
*


ставь глобальную переменную UINT8 GARNITURA=0;
ставь сначала реакцию на ивент { 0x822F3, OS7}, // ивент вставки кабеля в usb, одинаков для всех моделей
взять код из поста №181 этой темы
в ней в глобальную переменную GARNITURA пиши 1 (GARNITURA=1)
затем в другой функции ставь реакцию на 0x822F4 и проверяй

если GARNITURA==1 // гарнитура была вставлена
и если DL_AccIsHeadsetAvailable( ) == NULL // но этой гарнитуры уже нет
то
GARNITURA=0;
и ставим на паузу или делаем, что хотели при выемке гарнитуры
иначе ничего не делаем
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Sany_Angel
сообщение 28.10.2008, 19:05


Новичок
*

Группа: Пользователи
Сообщений: 3
Регистрация: 28.10.2008
Пользователь №: 184 757
Модель телефона: Motorola v360

Рейтинг: 0



Скажите прлиз как можно обучится языку програмирования элбфов, если чё, то я знаю более-менее паскаль - это понадобится?

[om2804]
Нужно знать Си


Сообщение отредактировал om2804 - 28.10.2008, 21:31
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Sany_Angel
сообщение 29.10.2008, 18:44


Новичок
*

Группа: Пользователи
Сообщений: 3
Регистрация: 28.10.2008
Пользователь №: 184 757
Модель телефона: Motorola v360

Рейтинг: 0



Хорошо smile.gif буду учить. не мог бы кто нить скинуть текс уже рабочего эльфа (желательно простого) и обьяснение к каждому действию, как например Оsta рассказывает про гарнитуру shuffle.gif , мне на мыло zzzzzcahekzzzzz@mail.ru буду очень признателен thumbsup.gif

Просто я очень хочу научиться писать эльфы самому shuffle.gif
Пожалуйста поделитесь знаниями unsure.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
om2804
сообщение 29.10.2008, 19:14


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

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

Рейтинг: 1650



Исходников полно здесь, а так же и в других темах. Самые простые примеры можно найти в первом посте.
Сюда с конкретными вопросами желательно

Сообщение отредактировал om2804 - 29.10.2008, 19:16
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
AKAmasol
сообщение 30.10.2008, 18:33


Опытный
***

Группа: Пользователи
Сообщений: 117
Регистрация: 15.2.2008
Из: Казань
Пользователь №: 163 680
Модель телефона: E398
Прошивка: DaRII [test15] Mod

Рейтинг: 40



Цитата(Sany_Angel @ 29.10.2008, 22:44) *

Просто я очень хочу научиться писать эльфы самому

Если очень сильное желание можешь начать учить язык, но многие на полпути бросают это занятие и получается ни себе, ни людям.
Советую начать с модов и багфиксов, для этого достаточно знать Паскаль (хотя бы на троечку).
Моды сэкономят твоё драгоценное время и удовлетворят желания творчества.
Также ещё придётся познавать функции прошивки Synerj (это даже важнее Си). Их можно найти на этом форуме, например Паттерны и описания функций.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
AKAmasol
сообщение 1.11.2008, 19:08


Опытный
***

Группа: Пользователи
Сообщений: 117
Регистрация: 15.2.2008
Из: Казань
Пользователь №: 163 680
Модель телефона: E398
Прошивка: DaRII [test15] Mod

Рейтинг: 40



Вот что получилось с гарнитурой:
глобальная переменная UINT8 GARNITURA=0;
в массиве прописал ивенты, на которые сработают процедуры
EVENT_HANDLER_ENTRY_T shell_any_state_handlers[] =
{ 0x0822F4, Pause},
{ 0x0822F3, Stop},

при вызовах ивента
Код
UINT32 Stop(EVENT_STACK_T *ev_st,  void *app)
{
    UINT32              Error=1;
    APP_SHELL_T         *papp = ( APP_SHELL_T* ) app;
    EVENT_T             *event = AFW_GetEv(ev_st );
    
    if (event->code == 0x0822F3)
    {
      if (DL_AccIsHeadsetAvailable( ) == TRUE)
     {
      GARNITURA=1;
     }
    }
    else
    {
     if (papp->mme_media_file != 0)
       {
        Error = MME_GC_playback_stop(papp->mme_media_file); // стоп
        dbg( "Error_Stop = %d", Error );
       }
    
    // если всё хорошо, меняем состояние
     if (Error == 0)
       {
        State_Player = STOP;
        ShowiTunesState();
        timePosition = 0;
        //paint();
        paint_stateicons(ev_st, app);
        paint_clear_time(ev_st,app);
        paint_progressbar(ev_st, app);
       }
    }
    
    return RESULT_OK;
}

UINT32 Pause(EVENT_STACK_T *ev_st,  void *app)
{
    UINT32              Error=1;
    APP_SHELL_T         *papp = ( APP_SHELL_T* ) app;
    EVENT_T             *event = AFW_GetEv(ev_st );
    
    if (event->code == 0x0822F4)
    {
    if (GARNITURA==1 && DL_AccIsHeadsetAvailable( ) == NULL)
     {
    GARNITURA=0;
    if (papp->mme_media_file != 0)
       {
        Error = MME_GC_playback_pause(papp->mme_media_file); // пауза
        dbg( "Error_Pause = %d", Error );
       }
    
    // если всё хорошо, меняем состояние
    if (Error == 0)    
       {
        MME_GC_playback_get_attribute(papp->mme_media_file, DURATION, &timeDuraction);
        timeDuraction = timeDuraction;
        MME_GC_playback_get_attribute(papp->mme_media_file, POSITION, &timePosition);

        StopTimer( 0, app );

        State_Player = PAUSE;
        ShowiTunesState();
        //paint();
        
        repaint(ev_st, app);
        //paint_stateicons(ev_st, app);
        //paint_progressbar(ev_st, app);
       }
     }
    }
    else
    {
    if (papp->mme_media_file != 0)
       {
        Error = MME_GC_playback_pause(papp->mme_media_file); // пауза
        dbg( "Error_Pause = %d", Error );
       }
    
    // если всё хорошо, меняем состояние
    if (Error == 0)    
       {
        State_Player = PAUSE;
        ShowiTunesState();
        //paint();
        
        paint_stateicons(ev_st, app);
        paint_clear_time(ev_st,app);
        paint_progressbar(ev_st, app);
       }
    }

    return RESULT_OK;
}
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
G-XaD
сообщение 2.11.2008, 15:02


Мастер
****

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

Рейтинг: 323



Для облегчения разработки приложений с GUI сделал шаблон приложения и шаблоны некоторых диалогов, в идеале хотелось бы по шаблону на каждый далог.

Шаблон приложения без главного диалога: http://motoelfs.googlecode.com/svn/trunk/_template/uis_app/
Шаблоны далогов: http://motoelfs.googlecode.com/svn/trunk/_...te/uis_dialogs/
В шаблонах, в коментах помечено "TODO:" в местах, где нужно дописывать нужный вам код. Также название структуры приложения и макрос желательно изменять под название эльфа.

Примеры использования шаблонов:
http://motoelfs.googlecode.com/svn/trunk/test_uis/ - "полигон" для тестирования различных далогов, некоторые файлы без изменений из шаблонов.
http://motoelfs.googlecode.com/svn/trunk/icq/ - шаблоны написал позже, но очень похоже.
http://motoelfs.googlecode.com/svn/trunk/motocmd2/ - тут точно на шаблонах.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
AKAmasol
сообщение 3.11.2008, 12:09


Опытный
***

Группа: Пользователи
Сообщений: 117
Регистрация: 15.2.2008
Из: Казань
Пользователь №: 163 680
Модель телефона: E398
Прошивка: DaRII [test15] Mod

Рейтинг: 40



Хочу сделать так, чтобы Light в Tunes не выключал активность дисплея. Как можно определить, что Тюнс запущен? Можно конечно взять глобальную переменную State_Player и часть кода из Тюнса, но это существенно увеличит размер эльфа.

Сообщение отредактировал AKAmasol - 10.11.2008, 10:41
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 3.11.2008, 12:13


Freestyler
********

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


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



Рейтинг: 4362



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

Как можно определить, что Тюнс запущен?
*


при запуске Тюнса писать 01 в seem 004a
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
AKAmasol
сообщение 3.11.2008, 13:05


Опытный
***

Группа: Пользователи
Сообщений: 117
Регистрация: 15.2.2008
Из: Казань
Пользователь №: 163 680
Модель телефона: E398
Прошивка: DaRII [test15] Mod

Рейтинг: 40



Цитата(Osta @ 3.11.2008, 16:13) *

при запуске Тюнса писать 01 в seem 004a

А подскажите тогда ненужный оффсет.

Сообщение отредактировал AKAmasol - 10.11.2008, 10:41
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 3.11.2008, 13:17


Freestyler
********

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


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



Рейтинг: 4362



Цитата(AKAmasol @ Сегодня, 15:05)

А подскажите тогда ненужный оффсет.
*


SEEM 004A_0001, Смещ-е 00C8h/200d (Абс.бит 1600): GAMES_FN_STARTING_LEVEL
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
xBaguMx
сообщение 10.11.2008, 19:55


Новичок
*

Группа: Пользователи
Сообщений: 10
Регистрация: 20.2.2007
Пользователь №: 123 350
Модель телефона: Motorola Roker E1

Рейтинг: 0



Выложите плиз исходник эльфа чтобы моргали боковые светодиоды синим каждые 5 секунд пожалуйста. Ничего не получается.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Alesha_Pl
сообщение 11.11.2008, 7:54


Гуру
******

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

Рейтинг: 681



А вот такой у меня назрел вопрос.
Как описывать переменные для работы с дробными числами (в слысле с вещественными, типа float)? А то все UINT да UINT. В итоге непонятно как быть с дробными (не целыми) числами. Извращаться чтоли пергоняя в два целых (до запятой одно, после запятой второе)?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
tim apple
сообщение 11.11.2008, 9:02


Мастер
****

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

Рейтинг: 435



Alesha_Pl,
а ты проверь и сообщи результаты. по идее компилер должен эмулировать команды с плавающей точкой, если нет аппаратной поддержки (по крайней мере в паскале так было)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Учимся писать эльфов вместе, Обсуждение процесса кодинга · Эльфы, их разработка и портирование · Forum
 

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

 



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

Форум живёт: