Перейти к содержанию
Old Phone Forum
  • Вход

    Вы сейчас не залогинены на форуме.

    Для возможности комментариев, загрузки файлов, подписок на ответы - вам надо войти.

Extended Api – Новые стандарты. Новые возможности.


Рекомендуемые сообщения

Внимание! Данная тема предназначена только для специалистов, как минимум знающих ассемблер. Любые технически неграмотные сообщения и неуместные вопросы будут безжалостно удаляться во избежание засорения темы.

 

 

 

Предлагаю вашему вниманию патч-библиотеку ExtendedAPI. Библиотека позволяет использовать программистам удобные унифицированные интерфейсы для написания патчей к телефонам Samsung.

 

 

На данный момент реализованы следующие возможности:

 

1. Расширение текстовых ресурсов, используя дополнительные текстовые индексы двух типов (см. далее).

 

2. Расширение MMI и функций управления за счет использования дополнительных таблиц обработчиков MCC-скриптов:

- Таблица обработчиков MCC_ELSEIF 0x10 (MCC_IF 0x10).

- Таблица обработчиков MCC_TASK 0x10, позволяющая также использовать дополнительные параметры скрипта.

 

 

 

1. Расширение текстовых ресурсов

 

Реализованы два вида расширений текстовых индексов:

 

1. Простой вариант указателей на строки (таблица ExtText_Table). Каждому индексу соответствует свой указатель (4 байта). Если указатель пустой - выдается ошибка (строка "*ERROR*"). Всего 255 индексов из дипапазона 0x1000-0x10FF. Индексы этого типа рекомендуется использовать только для патчей, использующих 1-2 ресурса и не требующих совместимости с разными языками, т.к. индексы нечувствительны к установленному языку.

 

Текущее использование:

Индексы Использование
0х1000 ExtraDesktop
0х1040-0x1041 KeyBacklightOff
0х1042-0х1047 Дополнение_для_KeyBacklightOff_v2_0_2 (v2.0)

Резервирование других индексов предполагается обсуждать в соответвествующей ветке форума.

 

Метод использования: присваивание указателей на строки элементам таблицы.

 

 

2. Второй вариант - таблица указателей обработчиков ресурсов (ExtTextHandler_Table). Содержит 256 указателей на функции-обработчики. Каждый из обработчиков - для диапазона в 0x10 индексов. Таким образом, всего может быть обработано 0х1000 индексов из диапазона 0х2000-0x2FFF. Естественно, один обработчик может быть присвоен нескольким поддиапазонам.

 

Текущее использование:

Обработчики Диапазон индексов Использование
0 – 1 0x2000-0x201F MMF_Player
2 – 3 0x2020-0x203F для моих нужд, в т.ч. FileManager
4 – 5 0х2040-0x205F Vadiks (BlackList)
6 – 7 0х2060-0x207F NeO_2kX (Fast Menu)
8 - 9 0х2080-0x209F зарезервировано MaxKis
0xC 0х20C0-0x20CF зарезервировано cr_az2
0xD 0х20D0-0x20DF зарезервировано Pahanych
0x63 0х2630-0x263F NeO_2kX (CalendarMonthName)
0x64 0х2640-0x264F NeO_2kX (KeyPad BackLight)

Резервирование других индексов предполагается обсуждать в соответвествующей ветке форума.

 

Метод использования: присваивание указателей на обработчики элементам таблицы.

 

 

2. Расширение MMI и функций управления

 

Расширение MMI и функций управления осуществляется за счет написания дополнительный инструкций в виде MCC-скриптов и их обработчиков.

 

Существует два основных вида инструкций, используемых при программировании:

- вызовы подпрограмм ("задач"); реализуются инструкциями вида MCC_TASK.

- ветвления с проверкой условий; переход осуществляется, если результатом выполнения инструкции является единица; реализуются инструкциями вида MCC_IF и MCC_ELSEIF (инструкция MCC_IF приводит к выполнению MCC_ELSEIF с теми же параметрами).

 

Оба вида инструкций могут использоваться для выполнения дополнительных функций, используя незадействованные в прошивке классы команд с индексом 0x10.

 

 

Таблица обработчиков MCC_ELSEIF 0x10 (MCC_IF 0x10)

 

Текущее использование:

Индексы обработчиков Использование
0x00-0x0F Зарезервировано Vadiks’ом
0x10 Graffity Pack v0.4b: Atomic
0x11-0x1C зарезервировано Graffity Pack
0x1D Говорящий будильник (Add-on for Talker by Stepan_V)
0x20-0x3F Зарезервировано мной (в т.ч. FileManager)
0х60-0x62 NeO_2kX (Fast Menu old versions)
0x64 NeO_2kX (KeyPad BackLight)
0х65 NeO_2kX (Fast Menu)

 

Резервирование других индексов предполагается обсуждать в соответвествующей ветке форума.

 

 

Таблица обработчиков MCC_TASK 0x10

 

Текущее использование:

Индексы обработчиков Использование
0x00 – 0x02 Мелодии на абонентов+группы+иконки
0x03-0x0F Зарезервировано Vadiks’ом
0x10 Graffity Pack v0.4b: Atomic
0x11-0x1C зарезервировано Graffity Pack
0x1D Говорящий будильник (Add-on for Talker by Stepan_V)
0x1E зарезервировано vvyura
0x1F Говорящий АОН
0x20 Talker
0x21-0x3F Зарезервировано мной (в т.ч. FileManager)
0x40 KeyBacklightOff v2.0
0x41-0x4F Зарезервировано MaxKis
0х60-0x62 NeO_2kX (Fast Menu old versions)
0x63 Image_Viewer
0x64 NeO_2kX (KeyPad BackLight)
0х65 NeO_2kX (Fast Menu)
0x66 Зарезервировано Pahanych
0x80-0x81 Зарезервировано cr_az2
0x83 Зарезервировано Pahanych

Резервирование других индексов предполагается обсуждать в соответвествующей ветке форума.

 

 

В будущих версиях возможно появление других возможностей. Предложения принимаются.

 

 

На данный момент библиотека реализована только для X100XEDG1 и X600XEDL2. Однако, используя прилагаемый исходный код, не составляет никакого труда перенести библиотеку на любую модель Sysol или Swift.

 

 

Благодарности:

 

Волков Максим – идея и пример использования дополнительных текстовых индексов первого типа.

MaxKis – идея использования дополнительных текстовых индексов второго типа.

Vadiks – идея и первый вариант реализации таблицы обработчиков MCC_TASK 0x10.

AlexeyK – программа BinEdit и перенос библиотеки на X600XEDL2.

 

 

История версий:

 

06.06.2006 Официальный релиз версии 1

- Исправлены ошибки и неточности в описании, обновлены таблицы использования ресурсов и т.д. (файл Extended API.doc).

- Добавлена реализация для X600XEDL2, несколько оптимизирован исходный код библиотеки (спасибо AlexeyK)

- Появился заголовочный файл ExtendedAPI.h

Внимание! Для X100XEDG1 код и все адреса библиотеки не изменились!

 

21.05.2006

- Предварительный релиз библиотеки для X100XEDG1.

 

 

P.S. В прилагаемом архиве находится исходный код (для BinEdit версии 2006.6.4 или выше), данное описание, заголовочный файл ”ExtendedAPI.h” и готовый патч-библиотека для прошивок X100XEDG1 и X600XEDL2 в форматах SMP и DIF.

ExtendedAPI_200606061640.rar

X100 → X700 → i9300

Ссылка на комментарий
Поделиться на другие сайты

А теперь немного о грустном... :shock:

 

Ни одна революция не обходится без жертв. К сожалению, в данном случае тоже. В результате библиотека конфликтует с патчами: ED, GP, Мелодиями на абонента, а также всеми патчами, использующими таблицу в патче Мелодии на абонента (в частности, Talker, KeyBacklightOff v2.0). Хотя, никаких проблем исправить это нет, всё-таки потребуется некоторое время и усилия. Это основная причина, по которой Библиотека публикуется именно здесь...

 

Однако, прелагаемая система позволяет избавиться от проблемы "отмены" патча Мелодий на абонента при установке других патчей и избавится от огромного потока вопросов, связанных с этим явлением. Кроме того, четкое следования стандартам избавит от несовместимости патчей.

 

 

Выкладываю исправленные патчи ExtraDesk 1.3E и Talker 1.1E (Удалена! См. новую версию), полностью совместимые с новой системой.

 

Для всех других исправленных патчей, в связи с отсутствием функциональных изменений, также настоятельно рекомендую вместо изменения номера добавлять букву "E". Это позволит избежать недоразумений.

 

Внимание! Загрузил обновленную версию патча ExtraDesk. Выложенная ранее содержала неточности в формате патча. Рекомендуется обновить.

 

Добавлено 6.06.2006:

В связи с релизом библиотеки патчи перенесены сюда: http://OldPh.one/index.php?app=forums&module=forums&section=findpost&pid=184916...p=184916#184916

X100 → X700 → i9300

Ссылка на комментарий
Поделиться на другие сайты

Ни одна революция не обходится без жертв. К сожалению, в данном случае тоже. В результате библиотека конфликтует с патчами: ED, GP, Мелодиями на абонента, а также всеми патчами, использующими таблицу в патче Мелодии на абонента (в частности, Talker, MMF_Player, KeyBacklightOff v2.0).

Прежлагаю в патч ExtendedAPI добавить изменение идентификатора прошивки, например на X10XEDG1E, это сразу избавит от проблем со старыми патчами.

Ещё не прохобы добавить несколько часто используемых функций: загрузкасохранение файла, вывод картинки, проигрывание мелодии, с учетом что патчи находятся за границей 0x40000. Естественно необходимо засписать весь интерфейс использования

Одна из последних версий binedit здесь.

AlexeyK.gif

Ссылка на комментарий
Поделиться на другие сайты

Прежлагаю в патч ExtendedAPI добавить изменение идентификатора прошивки, например на X10XEDG1E, это сразу избавит от проблем со старыми патчами.

А как быть с патчами, которые ExtAPI не используют?

Думаю, require="..." будет достаточно.

5073IA3.png
Ссылка на комментарий
Поделиться на другие сайты

Предлагаю сделать специальную категорию (например ExtendedAPI), где и будут лежать измененные патчи.

А еще неплохо будет делать обновления некоторых патчей для работы с библиотекой ExtendedAPI. Т.к. многие используют версию ExtraDesk для работы с одноименным мидлетом. А про GP и говорить нечего, после переустановки слетит половина патчей.

Ссылка на комментарий
Поделиться на другие сайты

Предлагаю в патч ExtendedAPI добавить изменение идентификатора прошивки, например на X10XEDG1E, это сразу избавит от проблем со старыми патчами.

А как быть с патчами, которые ExtAPI не используют?

Думаю, require="..." будет достаточно.

полностью согласен. Изменение идентификатора ни к чему. Достаточно лишь соблюсти 2 условия:

1. в описании патча явно указать:

Внимание! Требует предварительной установки патча-библиотеки ExtendedAPI!

2. в свойствах патча (тег info) добавить параметр

require="75DB5C21"

как сделано в выложенных мною патчах.

 

Предлагаю сделать специальную категорию (например ExtendedAPI), где и будут лежать измененные патчи

А вот это лишнее, т.к. порядка от этого не прибавится, а пользователям будет лишняя проблема. Для пользователей применение библиотеки должно быть прозрачно, т.к. реально функционал патчей изменяется мало. Она нужна лишь для удобства программирования.

 

----------------------

 

Ну и на последок выложу исправленную версию ExtraDesktop 1.3E. Однако, для избежания различного рода проблем переименовал патч в "ExtraDesk_Java" (категория "Интерфейс").

ExtraDesk_Java_v1.3E_x100_200605270208.rar

ExtraDesk_Java_v1.3E_x100_200605270208.rar

X100 → X700 → i9300

Ссылка на комментарий
Поделиться на другие сайты

Адаптировал Graffity Pack v0.4b: Atomic. Просьба потестировать, т.к. сам им не пользуюсь... Но теоретически должно работать :idea:

 

 

P.S. Наконец-то патч полностью соответствует стандарту SMP (XML) ;)

 

29.05.2006 14:30 : Немного обновил версию, теперь комментарии привязаны к соотв. блокам.

 

06.06.2006 18:12 : В связи с релизом библоитеки патч перененсен сюда: http://OldPh.one/index.php?app=forums&module=forums&section=findpost&pid=184916

X100 → X700 → i9300

Ссылка на комментарий
Поделиться на другие сайты

stepan_v, теперь, когда Graffity Pack v0.4b: Atomic переделан,

то нет никаких барьеров для использльзования библиотеки...

 

Так Держать...:?:

Ссылка на комментарий
Поделиться на другие сайты

stepan_v, теперь, когда Graffity Pack v0.4b: Atomic переделан,  

то нет никаких барьеров для использльзования библиотеки...

нужно еще Мелодии на абонентов переделать... Сейчас занимаюсь этим :x

X100 → X700 → i9300

Ссылка на комментарий
Поделиться на другие сайты

Кстати:

 

.mcc MCC_IF 0x10 par1 par2 par3 GoToAddr par4

 

Сдается мне, что par3 использует парсер МСС:

0 - переход на адрес;

1 - вызов подпрограммы.

 

Кто-нибудь может подтвердить/опровергнуть?

5073IA3.png
Ссылка на комментарий
Поделиться на другие сайты

Кстати:  

 

.mcc MCC_IF 0x10 par1 par2 par3 GoToAddr par4  

 

Сдается мне, что par3 использует парсер МСС:  

0 - переход на адрес;  

1 - вызов подпрограммы.  

 

Кто-нибудь может подтвердить/опровергнуть?

 

Правильно.

0 - переход без сохранения адреса возврата, аналог GoTo

1 - переход с сохранением адреса возврата, аналог Call

Ссылка на комментарий
Поделиться на другие сайты

.mcc MCC_IF 0x10 par1 par2 par3 GoToAddr par4  

 

Сдается мне, что par3 использует парсер МСС:  

0 - переход на адрес;  

1 - вызов подпрограммы.  

 

Кто-нибудь может подтвердить/опровергнуть?

Да, подтверждаю... Только CALL будет при любом ненулевом значении параметра.

 

Есть еще один момент, который я явно не указал (на мой взгляд очевидный, в отличае от этого): par1 определяет индекс вызываемого обработчика (также и в MCC_TASK).

 

PS. Закончу с патчами и обновлю описание.

X100 → X700 → i9300

Ссылка на комментарий
Поделиться на другие сайты

Для пользователей патча MMF Player ver3, и тех кто перешел на новые возможности:(, выкладываю дополнение к плееру для совместимости его с библиотекой Extended API.

MyGetTextE.rar

Ссылка на комментарий
Поделиться на другие сайты

Многие пользователи могут столкнуться с проблемой при переустановке GP 0.4b: Atomic, т.к. многие патчи используют ресурсы Graffity Pack'а.

 

Данное обновление ставить при установленном GP 0.4b: Atomic, и после ExtendetAPI.

После установки ResMan может показывать что GP 0.4b: Atomic E не установлен - ничего страшного, все работает.

UpdateGP_for_ExtAPI.rar

Ссылка на комментарий
Поделиться на другие сайты

Многие пользователи могут столкнуться с проблемой при переустановке GP 0.4b: Atomic, т.к. многие патчи используют ресурсы Graffity Pack'а.  

 

Данное обновление ставить при установленном GP 0.4b: Atomic, и после ExtendetAPI.  

После установки ResMan может показывать что GP 0.4b: Atomic E не установлен - ничего страшного, все работает.

Дело ваше, конечно... Но я бы рекомендовал ставить все обновленные патчи "начисто". Меньше мусора будет в прошивке и потенциальных конфликтов.

X100 → X700 → i9300

Ссылка на комментарий
Поделиться на другие сайты

Патч "Убрать стандартные мелодии" для Говорящего АОНа версии 4.2

 

Патч искать в "Другое->Говорящий АОН"

_______________________________________________.rar

_______________________________________________.rar

5073IA3.png
Ссылка на комментарий
Поделиться на другие сайты

Резервирование других индексов предполагается обсуждать в соответвествующей ветке форума

Прошу выделить на патч KeyBacklightOff - 2 языковых ресурса, желательно 1 - го типа

Ковыряю e630 :)

Ссылка на комментарий
Поделиться на другие сайты

Хацкер, выделил текстовые ресурсы 1 типа с номерами 0x40 и 0x41 (индексы 0x1040-0x1041). Внес изменения в таблицы.

X100 → X700 → i9300

Ссылка на комментарий
Поделиться на другие сайты

Итак, сегодня произошел официальный релиз библиотеки.

 

Все необходимые патчи перенесены в соответсвующую ветку, тема подчищена. Все изменения см. в первом посте.

 

Также патчи выложены на patches.sgh.ru

 

 

P.S. На этом вынужден попрощаться, в ближайшие пару недель буду очень занят, не факт что буду заглядывать на форум. Просьба без необходимости не беспокоить.

X100 → X700 → i9300

Ссылка на комментарий
Поделиться на другие сайты

  • 5 недель спустя...

Патч:

firmware="

---------------------------------------------

+

---------------------------------------------

Используются индексы первого типа

GameTeam.ru - Крупнейший каталог бесплатных Java-игр!

Ссылка на комментарий
Поделиться на другие сайты

Pimen,

А ссылке где?!!?? :)

Ты только пришёл? Тогда: ЧИТАЙ! Если прочитал, то начни от СЮДА!

Ссылка на комментарий
Поделиться на другие сайты

Библиотека для X460 и E100,в формате dif+исходник и вышка патча,используещую библиотеку.

 

Использовать библиотеку для Х460 с темы патчи для Х460

ExtendedAPI.rar

Mot C350=>X100=>X100=>X460+X640

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

stepan_v, зарезервируй пожалуйста индексы 0x11-0x1c в обработчиках ELSEIF и TASK. Не для меня, для будующего GP5.

 

 

Сделал. А зачем так много???

 

ред. stepan_v

Силы кончались, Слабостей - море...

Разом рухнули все мои сны...

Только я - мимо радости, горя -

Только я продолжаю идти...

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


×
×
  • Создать...