motofan logo
16 страниц V « < 3 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
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
tim apple
сообщение 15.10.2008, 12:19


Мастер
****

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

Рейтинг: 435



Alesha_Pl,

вобщем, utility_draw_image в топку - она слишком низкоуровневая. всё можно и нужно делать через UIS_Canvаs* - и текст писать и картинки рисовать.
примеры в исходниках от Ома. респект ему и уважуха.

П.С. смотри "глубже", т.е. не надо копировать кусок кода и потом утверждать что он тебе не подходит, а пойми принцип использования функций, методы автора и полезные трюки. и тогда поймеш как нужно сделать в твоем случае.
[off]не подумай что критикую, просто совет[/off]

[om2804]
Вообще то идея рисования на канвасе принадлежит китайским братьям smile.gif



Сообщение отредактировал om2804 - 15.10.2008, 13:29
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 16.10.2008, 7:56


Freestyler
********

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


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



Рейтинг: 4362




Как работает в Ostabox (решил объединить свои elf-ы) вот эта процедура :

Цитата(Osta @ 8.8.2008, 16:19)

3. При подключении наушников (обычных или блютуз) эльф может запустить другое приложение,
например Tunes.elf или открыть папку музыка .. вообщем любой ивент. На подключение к компьютеру
или зарядного устройства не реагирует !
Для этого нужно прописать нужный ивент в файле ostabox.ivt в нех-формате
(в базовой поставке эльфа там прописан ивент входа в главное меню)
Если клавиатура заблокирована, то эльф её разблокирует
ps другие эльфы работающие с подключением к usb лучше отключить.
*


попытался выделить из общего кода

в самом начале после #include "zv.h" определяем переменную для указателя на файл с нашим ивентом
WCHAR FILE_IV[256];

в массиве определяется ивент, на который сработает процедура
EVENT_HANDLER_ENTRY_T any_state_handlers[] =
{ 0x822F3, OS7}, // ивент вставки кабеля в usb, одинаков для всех моделей
//------------------------------------------
в процедуре регистрации определяется указатель на файл с ивентом
UINT32 Register( char* file_uri, char* param, UINT32 reserve )
WCHAR IVFile[256];

u_atou(file_uri, IVFile);
IVFile[u_strlen(IVFile)-3] = 0;
u_strcat(IVFile, L"ivt"); // расширение ivt для файла ostabox.ivt
u_strcpy(FILE_IV, IVFile);
//------------------------------------------

UINT32 OS7( EVENT_STACK_T *ev_st, void *app ) // сработал ивент подключения кабеля в usb
FILE_HANDLE_T mafile;
UINT32 baffer=0;
UINT32 ZZZ;
{
if (DL_AccIsHeadsetAvailable( ) == TRUE) // проверка , что это наушники, а не зарядка или комп
{
AFW_CreateInternalQueuedEvAux( *EV_UNLOC_KPAD-0xE , 0x65, 0, 0 ); // разблокируем клавиатуру
if (DL_FsFFileExist( FILE_IV)) // если файл с ивентом есть
{
mafile = DL_FsOpenFile( FILE_IV, FILE_READ_MODE, 0 ); // открыли его
DL_FsReadFile(&baffer, sizeof(UINT32) , 1, mafile, &ZZZ ); // прочитали из него ивент
AFW_CreateInternalQueuedEvAux( baffer, 0x65, 0, 0 ); // запустили прочитанный ивент из файла
DL_FsCloseFile(mafile); // закрыли файл
}
}
return RESULT_OK;
}

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


Гуру
******

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

Рейтинг: 681



tim apple, om2804, давайте попробуем учиться!

Я так понял разобраться нужно с работой этой функции из тюнса
Код
UINT32 DrawImageId( UINT32 n, INT16 x, INT16 y, UINT16 anchor)
{
     PICTURE_TYPE_UNION_T picture_data;
    GRAPHIC_POINT_T anchor_point;

    CANVAS_IMAGE_HANDLE_T image_handle;
    GRAPHIC_POINT_T image_size;
    GRAPHIC_REGION_T image_region;


    picture_data.PointerValue.resourcePicturePointerValue = PIC[n];
    picture_data.PointerValue.imageSize = PIC_SIZE[n];

    anchor_point.x = x;
    anchor_point.y = y;

    image_handle = UIS_CanvasOpenImageAndGetSize(STORED_IN_MEMORY_TYPE,
                                  picture_data,
                                  &image_size);    

    UIS_CanvasSetImageAttribute(image_handle,
                                IA_OBEY_TRANSPARENCY,
                                NULL);

    UIS_CanvasRenderImageToBuffer(image_handle,
                                  image_size,
                                  anchor_point,
                                  anchor,
                                  &image_region,
                                  Copy,
                                  dialog);


    UIS_CanvasCloseImage(image_handle);
/*
    PICTURE_TYPE_UNION_T picture_data;
    GRAPHIC_POINT_T anchor_point;

    picture_data.PointerValue.resourcePicturePointerValue = PIC[n];
    picture_data.PointerValue.imageSize = PIC_SIZE[n];


    anchor_point.x = x;
    anchor_point.y = y;

    // рисует картику                    
    UIS_CanvasDrawImage(STORED_IN_MEMORY_TYPE,            
                        picture_data,
                        anchor_point,
                        anchor,
                        Copy,
                        dialog);
*/
    return RESULT_OK;
}


Ещё раз напоминаю - для оформления кода нужно использовать тег [code]


Как я понял в эту функцию передаются координаты x и y и выравнивание. Так? И еще какой-то n (за ним стоит имя файла или нет?). Поясните пожалуйста назначение остальных вызываемых функций, что они делают, для чего они? Не разберусь я сам, к сожалению. Вот как-то с воспроизведением звуков из файловой системы мне все вродебы понятно - взял имя да вызвал функцию воспроизведения. А с графикой как-то... Почему нельзя Взять имя файла (путь к нему), задать координаты, выравнивания и вызвать функцию которая с этими параметрами нарисует на рабочем столе картинку?

Вот казалосьбы функция рисования
Код
UIS_CanvasDrawImage(STORED_IN_MEMORY_TYPE,            
                        picture_data,
                        anchor_point,
                        anchor,
                        Copy,
                        dialog);

Но опять же что там за параметры?
В общем извините за длинный пост и помогите разобраться с этим всем.

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


Опытный
***

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

Рейтинг: 40



Цитата(Osta @ 16.10.2008, 11:56) *

{ 0x822F3, OS7}

А ивент выдергивания кабеля какой?

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


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

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

Рейтинг: 1650



Alesha_Pl, n - это номер элемента массива указателей на картинки в памяти телефона smile.gif

Рассмотрим UIS_CanvasDrawImage
Код

// рисует картику                    
UINT32 UIS_CanvasDrawImage(UINT8 picture_type,            // тип. откуда будем брать картинку. DRM, файл....
                PICTURE_TYPE_UNION_T picture_data,   // данные
                GRAPHIC_POINT_T anchor_point,
                UINT16 anchor_value,
                UINT8 drawOp,
                UIS_DIALOG_T handle);    


Выстрее всего рисует из памяти и из дрм, но второе нам мало подходит (кому хочется пихать картинки в дрм)
Но для того чтобы рисовать из памяти нужно загрузить картинку, и передать UIS_CanvasDrawImage указатель на неё и размер картинки

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


Опытный
***

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

Рейтинг: 40



Эльф компилится, но выдаёт такую ошибку:
line 161: Warning: C2207W: inventing 'extern int DL_AccIsHeadsetAvailable();'
Помогите пожалуйста.
И подскажите ивент выдергивания кабеля.
Вот исходники
Прикрепленный файл helloworld_snd_Handset_.zip   ( 2.49 килобайт ) Кол-во скачиваний: 117


[om2804]
функция DL_AccIsHeadsetAvailable не описана в SDK
добавь в dl.h строку BOOL DL_AccIsHeadsetAvailable(void);



Сообщение отредактировал om2804 - 16.10.2008, 20:10
Прикрепленный файл helloworld_snd_Handset_.zip   ( 2.49 килобайт ) Кол-во скачиваний: 117
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 17.10.2008, 6:56


Freestyler
********

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


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



Рейтинг: 4362



Цитата(AKAmasol @ Вчера, 20:23)

И подскажите ивент выдергивания кабеля.
*


думал , что 0x822F3 + 1 , но он не только на вытаскивание шнура реагирует ..
даже не знаю .. может f4 + условий наставить ?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
AKAmasol
сообщение 17.10.2008, 12:38


Опытный
***

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

Рейтинг: 40



Цитата(Osta @ 17.10.2008, 10:56) *

может f4

0x822F4? Что кроме вытаскивания шнура на него реагирует?


__________________________
+Osta
а ты проверь , там сразу видно
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Alesha_Pl
сообщение 18.10.2008, 4:33


Гуру
******

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

Рейтинг: 681



Существует ли функция (и какая), которая возвращает номер текущего стиля оповещения? Или текущий стиль на всех телефонах в симе 4A офсет 0A и можно просто через сим смотреть.

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


Опытный
***

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

Рейтинг: 40



Цитата(Osta @ 17.10.2008, 10:56) *

0x822F4, но он не только на вытаскивание шнура реагирует ...

У меня только на вытаскивание шнура реагирует (по крайней мере никакое окно не выскакивает, ничего не запускается).
Цитата(Osta @ 17.10.2008, 10:56) *

может условий наставить ?

Функцию аналогичную DL_AccIsHeadsetAvailable, только для вытаскивания гарнитуры, в либе не нашел. Может есть такие для вытаскивания зарядки и кабеля?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
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
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Учимся писать эльфов вместе, Обсуждение процесса кодинга · Эльфы, их разработка и портирование · Forum
 

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

 



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

Форум живёт: