Настройка десктопа и конфигурация MiniOS

Замена модуля Mobile TV на Flash Player

По умолчанию в основном меню есть пункт Mobile TV, выбор которого ни к чему не приводит (так как у нас отсутствует сам модуль motv). Его можно заменить на модуль Flash Player. Конечно, он весьма глючен и проигрывает только самые простые swf-флеш, но все-таки несет хоть какой-то функционал, в отличии от совершенного бесполезного Mobile TV. Для этого в файле mtv_50/desktop/desktop.c необходимо закомментировать строку ID_MODULE_MOTV и откомментировать строку ID_MODULE_FPLAYER: 

// ID_MODULE_MOTV,
ID_MODULE_FPLAYER,

После этого вместо пункта Mobile TV появиться Flash:


Удаление из меню пункта FM Radio

В устройстве отсутствует FM-тракт, однако по умолчанию происходит компиляция модуля fmradio и соответственно добавление его в системное меню. Так как практической пользы он не несет, предлагается исключить его из системного меню. Тут нужно оговорится, что полностью из прошивки этот модуль было решено не исключать, так как на него завязаны некоторые функции Recorder (запись с микрофона). Модуль Recorder вполне может понадобиться в дальнейшем, так как подключить к устройству микрофон (или line-in) не представляется на первый взгляд сильно сложным.

Итак, казалось бы такая простая задача, как уменьшение количества иконок в системном меню должна решаться тоже очень просто. Но нет. Для каждого типа меню (Simpleness, Tradition, Diorama, Arena, Drawer) существует отдельно написанный программный код обработки этого типа меню. И изначально каждый тип меню "заточен" для 9-ти модулей (пунктов). Попробуем показать на примере Simpleness меню необходимые изменения.

Первое, что необходимо сделать для всех типов меню, это в файле /mtv_50/desktop/desktop.c закомментировать строку ID_MODULE_FMRADIO:

// ID_MODULE_FMRADIO,  

А в файле /mtv_50/desktop/desktop.h изменить значение MAIN_MODULE_COUNT с 9 на 8 и FOCUS_POSITION с 5 на 4:

#define MAIN_MODULE_COUNT 8
#define FOCUS_POSITION 4


Desktop SIMPLENESS

Далее, для Simpleness-типа отображения меню в файле /mtv_50/desktop/simpleness/dt_simpleness.c заменить строку

if (pSimplPosX[i] == pstSimplStyle->icon9_x)
на строку:
if (i == MAIN_MODULE_COUNT-1)              // vogue Night_Gryphon

И далее, в функции dtSimplenessMidScreen(), заменить строку
} else if (8 == i) {
на строку:
} else if (MAIN_MODULE_COUNT-1 == i) {     // vogue Night_Gryphon


Desktop TRADITION

Для Tradition-типа отображения меню в файле /mtv_50/desktop/tradition/dt_tradition.c
исправить

#define TRADITION_ICON_COUNT    9       // vogue Night_Gryphon

static int      pTraditionPosX[TRADITION_ICON_COUNT];       // vogue Night_Gryphon
static int      pTraditionPosY[TRADITION_ICON_COUNT];       // vogue Night_Gryphon
static int      pTraditionSaveX[TRADITION_ICON_COUNT];       // vogue Night_Gryphon
static int      pTraditionSaveY[TRADITION_ICON_COUNT];       // vogue Night_Gryphon

В функции dtTraditionRunArrInit

static void dtTraditionRunArrInit(void)
{
        int size = TRADITION_ICON_COUNT * pstTradStyle->loop_count; // vogue Night_Gryphon

В функции dtTraditionInitDesktopStyle

        for (i=0; i<TRADITION_ICON_COUNT; i++) {        // vogue Night_Gryphon

В функции dtTraditionCartoonTreadRenewScreen

//      for (i=0; i<MAIN_MODULE_COUNT; i++) {
        for (i=0; i<TRADITION_ICON_COUNT; i++) {        // vogue Night_Gryphon

//                      if (i == 8) {
                        if (i == TRADITION_ICON_COUNT-1) {      // vogue Night_Gryphon

//                AlphaBlt(pbmp, rc, x, mid_y, s_icon_x, s_icon_y, &bmpTradiMainIcon, pos*s_icon_x,0);
         // vogue Night_Gryphon
         if (pos>0) {
                 AlphaBlt(pbmp, rc, x, mid_y, s_icon_x, s_icon_y, &bmpTradiMainIcon, (pos-1)*s_icon_x,0);
         } else {
                 AlphaBlt(pbmp, rc, x, mid_y, s_icon_x, s_icon_y, &bmpTradiMainIcon, MAIN_MODULE_COUNT*s_icon_x,0);
         }

//           AlphaBlt(pbmp, rc, x, mid_y, s_icon_x, s_icon_y, &bmpTradiMainIcon, pos*s_icon_x,0);
             // vogue Night_Gryphon
             AlphaBlt(pbmp, rc, x, mid_y, s_icon_x, s_icon_y, &bmpTradiMainIcon, ((pos + 1) % MAIN_MODULE_COUNT)*s_icon_x,0);

В функции dtTraditionRenewScreen

//      for (i=0; i<MAIN_MODULE_COUNT; i++) {
        for (i=0; i<TRADITION_ICON_COUNT; i++) {        // vogue Night_Gryphon
 


С остальными типами отображения меню необходимо проделать похожие действия (смотрите по коду), иначе при выборе отличного от Simpleness отображения меню можно получить либо зависания либо другие глюки.

Изменение значений "по умолчанию" при первом старте

При каждом запуске MiniOS проверяет наличие файла-конфигурации во встроенной файловой системе (путь nfl://SYSTEM/system.cfg) и если его не существует, создается новый файл с параметрами "по умолчанию". Эти параметры можно изменить в файле /mtv_50/common/system.c в процедуре sysDefaultSystemAttr :

static void sysDefaultSystemAttr(BYTE* pdata)
{
StSystemAttribute* p = (StSystemAttribute*)pdata;
p->stMidAttr.nTimingShutdown = 0;        // Автовыключение через N минут. 0 - никогда
p->stMidAttr.nBacklightLuminance = 5;    // Яркость подсветки экрана. От 1 до 5.
p->stMidAttr.nBacklightTime = 0;         // Автовыключение дисплея. 0 - никогда.
p->nDesktopBk = DESKTOP_BK_IMG_GREEN;    // Фоновая картинка на десктопе
p->nDesktopMode = DESKTOP_MODE_SIMPLENESS;    // Режим отображения меню
p->nDesktopClock = DESKTOP_CLOCK_MACHINICAL;  // Режим отображения часов
p->nAnimateType = MODULE_SWITCH_ANI_SCREEN;   // Режим анимации
p->stSysGuiAttr.nTimeFormat = TIME_FORMAT_24; // Формат времени
p->stSysGuiAttr.nDateFormat = DATE_FORMAT_YYYY_MM_DD;    // Формат даты
p->stSysGuiAttr.nWeekFormat = WEEK_FORMAT_BEFORE_DATE;   // Вывод дней недели 
p->nTimeZone = 8;                                        // Временная зона GMT
p->stSysGuiAttr.nBootOption = BOOT_OPTION_ENTER_DESKTOP; // Режим после загрузки
p->nAreaCode = AREA_CODE_SC;                  // Текущая страна
p->nVolume = 10;                              // Общая громкость по умолчанию
p->nFmVolume = 10;                            // Громкость FM-приемника
p->nDvbVolume = 10;                           // Громкость DVB-приемника (не использ.)
//p->nStandardTV = STANDARD_TV_PAL;
}

Возможные значения для фоновой картинки десктопа:
DESKTOP_BK_IMG_RED
DESKTOP_BK_IMG_BLUE
DESKTOP_BK_IMG_GREEN
DESKTOP_BK_IMG_GOLDEN

Режимы отображения меню:
DESKTOP_MODE_SIMPLENESS
DESKTOP_MODE_TRADITION
DESKTOP_MODE_ARENA
DESKTOP_MODE_DIORAMA
DESKTOP_MODE_DRAWER
DESKTOP_MODE_SLIDE

Режимы отображения часов:
DESKTOP_CLOCK_MACHINICAL
DESKTOP_CLOCK_NUMERICAL
DESKTOP_CLOCK_WORLD_TIME
DESKTOP_CLOCK_STATUS_BAR

Режимы анимации:
 MODULE_SWITCH_ANI_NO_EFFECT
 MODULE_SWITCH_ANI_SCREEN
 MODULE_SWITCH_ANI_SHADE

Допустимые значения формата времени:
TIME_FORMAT_24
TIME_FORMAT_12

Значения формата даты:
DATE_FORMAT_YYYY_MM_DD // yyyy-mm-dd
DATE_FORMAT_DD_MM_YYYY // dd-mm-yyyy
DATE_FORMAT_MM_DD_YYYY // mm-dd-yyyy
DATE_FORMAT_YYYYZMMZDD // yyyy/mm/dd
DATE_FORMAT_DDZMMZYYYY // dd/mm/yyyy
DATE_FORMAT_MMZDDZYYYY // mm/dd/yyyy

Значения для вывода картинок дней недели:
WEEK_FORMAT_BEFORE_DATE //картинка с днем недели перед датой
WEEK_FORMAT_AFTER_DATE  //после даты
WEEK_FORMAT_HIDE        //не показывать

Значения для режима после загрузки устройства:
  BOOT_OPTION_ENTER_DESKTOP  // выйти на десктоп
  BOOT_OPTION_KEEP_SCENE     // открыть последние действия

Значения для страны:
AREA_CODE_SC
AREA_CODE_TC
AREA_CODE_ENGLISH
AREA_CODE_ARABIC
AREA_CODE_RUSSIAN
AREA_CODE_KOREAN
AREA_CODE_JAPAN
AREA_CODE_GERMANY
AREA_CODE_ITALY
AREA_CODE_SPAIN
AREA_CODE_PORTUGAL
AREA_CODE_NETHERLANDS
AREA_CODE_SWEDEN
AREA_CODE_DENMARK
AREA_CODE_NORWAY
AREA_CODE_POLAND
AREA_CODE_GREECE
AREA_CODE_FR
AREA_CODE_FINLAND
AREA_CODE_INDIA
AREA_CODE_VIETNAM
AREA_CODE_INDONESIA
AREA_CODE_THAI
AREA_CODE_CZECH
AREA_CODE_TURKEY
AREA_CODE_HEBREW

Comments