source: svn/trunk/zasc/app_c/DST_CommonAPI.c @ 37

Last change on this file since 37 was 2, checked in by jglee, 11 years ago

first commit

File size: 23.5 KB
Line 
1#include "DST_Common.h"
2#include "DST_GlobalVariables.h"
3#include "DST_HostInterface.h"
4#include "DST_CommonAPI.h"
5#include "DST_ChannelTune.h"
6#include "DST_WindowType.h"
7#include "DST_WindowEvent.h"
8#include "DST_SignalMonitor.h"
9#include "DST_DataStrings.h"
10#include "DST_WinManagerTask.h" //ui
11#include "DST_FontEngine.h"
12#include "DST_UserInterface.h"
13#include "DST_WinManager.h"
14#include "DST_DB.h"
15#include "DST_ChannelTune.h"
16#include "DST_CC_Setup.h"
17
18bool DST_CC_Available();
19bool DST_FlashSync();
20
21#if 0
22____Channel_APIs___()
23#endif
24
25
26// °¡Àå ³·Àº Á֯ļö ¹øÈ£
27DS_U8 DST_MinRF()
28{
29        return 0;
30        //return DST_EEPROM_GetMinRF();
31}
32
33// °¡Àå ³ôÀº Á֯ļö ¹øÈ£
34DS_U8 DST_MaxRF()
35{
36        return RF_COUNT - DST_MinRF() - 1; // RF 85¹ø Index 83
37        //return DST_EEPROM_GetMaxRF();
38}
39
40#if 0
41____Image_APIs___()
42#endif
43
44// À̹ÌÁöÀÇ ÆøÀ» °¡Á®¿Â´Ù.
45int DST_GetImageWidth(DS_U8 *Image)
46{
47        return Image[1]*256+Image[2];
48}
49
50// À̹ÌÁöÀÇ ³ôÀ̸¦ °¡Á®¿Â´Ù.
51int DST_GetImageHeight(DS_U8 *Image)
52{
53        return Image[3]*256+Image[4];
54}
55
56#if 0
57____EPG_APIs___()
58#endif
59
60// ½Ã°£ ¹üÀ§¸¦ ³ªÅ¸³»´Â ¹®ÀÚ¿­À» °¡Á®¿Â´Ù.
61int DST_GetTimeDurationString(int date, int start, DS_U32 duration, DS_U16* strText)
62{
63        // ½á¸ÓŸÀÓ+ŸÀÓÁ¸ Àû¿ë
64        start += (DST_GetTimeOffset()*60*60);
65        if (start < 0) start += (24*60*60);
66
67        //int year = 0;
68        int month = 0;
69        int day = 0;
70        //int wday = 0;
71        int y = /*int*/((date-15078.2f)/365.25f);
72        int m = /*int*/((date-14956.1f - /*int*/(y*365.25f)) / 30.6001f);
73        int k = (m==14 || m==15) ? 1 : 0;
74        day = date-14956-/*int*/(y*365.25f)-/*int*/(m*30.6001f);
75        //year = 1900 + y + k;
76        month = m - 1 - k * 12;
77        //wday = ((date+3) % 7); // ÀÏ¿äÀÏÀÌ 0 ¿ù¿äÀÏÀÌ 1
78
79        char str[10] = {0,};
80        sprintf(str, "%02d/%02d ",day,month);
81        str2uni(strText, str);
82       
83        DST_UI_GetTimeString(((start)/3600)%24, (start/60)%60,  &strText[strlen16(strText)]);
84        str2uni(&strText[strlen16(strText)], (char*)"-");
85        DST_UI_GetTimeString(((start+duration)/3600)%24, ((start+duration)/60)%60,  &strText[strlen16(strText)]);
86        return strlen16(strText);
87}
88
89// ½Ã°£À» ³ªÅ³»´Â ¹®ÀÚ¿­À» °¡Á®¿Â´Ù.
90//int DST_GetTimeString(DS_U32 bcd, DS_U32 duration, DS_U16* strText)
91//{
92//      STime_t st = DST_GetTime(bcd, duration);
93//      return DST_UI_GetTimeString(st.hour, st.min, strText);
94//}
95
96//// ÇöÀç ¹æ¼ÛÁßÀÎ ÇÁ·Î±×·¥ÀÇ À̸§°ú ŸÀӵ෹À̼ÇÀ» ¹®ÀÚ¿­·Î °¡Á®¿Â´Ù.
97//void DST_GetProgramInfoString(DS_U8 *cur_info, DS_U16 *duration)
98//{
99//      int nCount = 0;
100//      EPG_DB* db = DST_EPG_DB_Get(&nCount);
101//      if (nCount == 0) return;
102//      DST_GetTimeDurationString(db[0].start_time, db[0].duration, duration); // À̺¥Æ®ÀÇ ½ÃÀ۽ð£°ú ³¡½Ã°£À» Ç¥½Ã
103//      int nLen = db[0].name_length[0];
104//      memset(cur_info, 0, nLen+1);
105//      if (nLen > 0) memcpy(cur_info, db[0].p_name[0], nLen);
106//      DST_EPG_DB_Free(db, nCount);
107//}
108
109#if 0
110____Aspect_APIs___()
111#endif
112
113// ÇöÀç ÇØ»óµµ Á¤º¸¸¦ °¡Á®¿Â´Ù.
114// ¹Ýȯ°ªÀÌ 0À̸é ÇØ»óµµ Á¤º¸ ¾øÀ½
115int DST_GetResolutionInfo()
116{
117        DS_U16 w = 0, h = 0, fps = 0;
118        bool bWide = false, bInterlace = false;
119        DST_GetVideoSize(&w, &h, &fps, &bInterlace, &bWide);
120        if (h == 0) return 0;
121        if (h < 180) return 1;// SQVGA  160x120 160x90
122        if (h < 264) return 2;// QVGA   320x240 320x180
123        if (h < 384) return 3;// CIF    352x288
124        if (h < 528) return bWide ? 4 : 5;// 480p/i     720x480
125        if (h < 648) return bWide ? 6 : 7;// 576p/i     720x576
126        if (h < 900) return 8;// 720p   1280x720
127        return 9;
128}
129
130// ÇöÀç ºñµð¿À°¡ Ç÷¡ÀÌ ÁßÀÎÁö ¹ÝȯÇÑ´Ù.
131bool DST_IsVideoPlay()
132{
133                if (DST_IsWeakSignal()) return false;
134                if (DST_IsNoProgram()) return false;
135                if (DST_IsAudioOnly()) return false;
136                return true;
137}
138
139// ÇöÀç ¹æ¼ÛÁßÀÎ ºñµð¿À°¡ HD ¹æ¼ÛÀΰ¡?
140bool DST_GetHDInfo()
141{
142        return (DST_GetResolutionInfo() >= 8); // 720p ÀÌ»óÀ̸é HD
143}
144
145
146#if 0
147____CC_APIs___()
148#endif
149
150// ÇöÀç CC º¸¿©ÁֱⰡ °¡´ÉÇѰ¡?
151bool DST_GetCCInfo()
152{
153        if (DST_IsWeakSignal()) return false;
154        if (DST_IsNoProgram()) return false;
155        return DST_CC_Available();
156}
157
158#if 0
159____Date_Time_APIs___()
160#endif
161
162// ¿äÀÏ ¹®ÀÚ¿­À» °¡Á®¿Â´Ù.
163// 0(ÀÏ¿äÀÏ)-6(Åä¿äÀ×)
164DS_U16 *DST_GetDayOfWeakString(int nDayOfWeak)
165{
166        switch (nDayOfWeak)
167        {
168                case 1: return pz_Mon[OSD_Lang];
169                case 2: return pz_Tue[OSD_Lang];
170                case 3: return pz_Wed[OSD_Lang];
171                case 4: return pz_Thu[OSD_Lang];
172                case 5: return pz_Fri[OSD_Lang];
173                case 6: return pz_Sat[OSD_Lang];
174        }
175        return pz_Sun[OSD_Lang];
176}
177
178// °¢ ´ÞÀÇ À̸§À» °¡Á®¿Â´Ù.
179// 1-12
180DS_U16 *DST_GetMonthOfYearString(int nMonthOfYear)
181{
182        switch (nMonthOfYear)
183        {
184                case 2: return pz_Feb[OSD_Lang];
185                case 3: return pz_Mar[OSD_Lang];
186                case 4: return pz_Apr[OSD_Lang];
187                case 5: return pz_May[OSD_Lang];
188                case 6: return pz_Jun[OSD_Lang];
189                case 7: return pz_Jul[OSD_Lang];
190                case 8: return pz_Aug[OSD_Lang];
191                case 9: return pz_Sep[OSD_Lang];
192                case 10:        return pz_Oct[OSD_Lang];
193                case 11:        return pz_Nov[OSD_Lang];
194                case 12:        return pz_Dec[OSD_Lang];
195        }
196        return pz_Jan[OSD_Lang];
197}
198
199#if 0
200____Brightness_APIs___()
201#endif
202
203// ¹à±â ¼³Á¤À» ÇÑ´Ù.
204void DST_SetBrightness(DS_U8 value)
205{
206//      DHL_DISP_SetLCDBacklight(value);
207//      DST_Printf("DHL_DISP_SetLCDBacklight %d\n", value);
208}
209
210#if 0
211____Power_APIs___()
212#endif
213
214/*extern "C" */void DHL_SYS_Terminate();
215void DST_PowerDown(void)
216{
217        DST_g_PowerOn = false;
218        DST_RemoveAllWindowExceptBasicWin();
219        // AV °­Á¦ ¹ÂÆ®
220//      DST_PowerOnMute(true);
221        //DHL_DISP_MuteMain(1);
222        DHL_VID_Mute(1);
223        DST_DB_Sync();
224        int i;
225        for ( i = 0; i < 500; i++)
226        {
227                DST_OS_Delay(50);
228                T();
229                if (DST_DB_IsSync() == false) continue;
230                break;
231        }
232       
233        DHL_SYS_Off();
234}
235
236#if 0
237____Country_APIs___()
238#endif
239
240DS_U16* DST_GetISOLanguageName(DS_U8 nNumber)
241{
242        static DS_U16 strText16[20];
243        strcpy16(strText16, pz_Unknown[OSD_Lang]);
244        // ¸ÖƼ ¸µ±¸¾ó Àü ÄÚµå
245        switch (nNumber)
246        {
247                case 0x01: str2uni(strText16, (char*)"Albanian"); break;
248                case 0x02: str2uni(strText16, (char*)"Breton"); break;
249                case 0x03: str2uni(strText16, (char*)"Catalan"); break;
250                case 0x04: str2uni(strText16, (char*)"Croatian"); break;
251                case 0x05: str2uni(strText16, (char*)"Welsh"); break;
252                case 0x06: str2uni(strText16, (char*)"Czech"); break;
253                case 0x07: str2uni(strText16, (char*)"Danish"); break;
254                //case 0x08: str2uni(strText16, (char*)"German"); break;
255                //case 0x09: str2uni(strText16, (char*)"English"); break;
256                //case 0x0A: str2uni(strText16, (char*)"Spanish"); break;
257                case 0x0B: str2uni(strText16, (char*)"Esperanto"); break;
258                case 0x0C: str2uni(strText16, (char*)"Estonian"); break;
259                case 0x0D: str2uni(strText16, (char*)"Basque"); break;
260                case 0x0E: str2uni(strText16, (char*)"Faroese"); break;
261                //case 0x0F: str2uni(strText16, "French"); break;
262                case 0x10: str2uni(strText16, (char*)"Frisian"); break;
263                case 0x11: str2uni(strText16, (char*)"Irish"); break;
264                case 0x12: str2uni(strText16, (char*)"Gaelic"); break;
265                case 0x13: str2uni(strText16, (char*)"Galician"); break;
266                case 0x14: str2uni(strText16, (char*)"Icelandic"); break;
267                case 0x15: str2uni(strText16, (char*)"Italian"); break;
268                case 0x16: str2uni(strText16, (char*)"Lappish"); break;
269                case 0x17: str2uni(strText16, (char*)"Latin"); break;
270                case 0x18: str2uni(strText16, (char*)"Latvian"); break;
271                case 0x19: str2uni(strText16, (char*)"Luxembourgian"); break;
272                case 0x1A: str2uni(strText16, (char*)"Lithuanian"); break;
273                case 0x1B: str2uni(strText16, (char*)"Hungarian"); break;
274                case 0x1C: str2uni(strText16, (char*)"Maltese"); break;
275                case 0x1D: str2uni(strText16, (char*)"Dutch"); break;
276                case 0x1E: str2uni(strText16, (char*)"Norwegian"); break;
277                case 0x1F: str2uni(strText16, (char*)"Occitan"); break;
278                case 0x20: str2uni(strText16, (char*)"Polish"); break;
279                //case 0x21: str2uni(strText16, (char*)"Portuguese"); break;
280                case 0x22: str2uni(strText16, (char*)"Romanian"); break;
281                case 0x23: str2uni(strText16, (char*)"Romansh"); break;
282                case 0x24: str2uni(strText16, (char*)"Serbian"); break;
283                case 0x25: str2uni(strText16, (char*)"Slovak"); break;
284                case 0x26: str2uni(strText16, (char*)"Slovene"); break;
285                case 0x27: str2uni(strText16, (char*)"Finnish"); break;
286                case 0x28: str2uni(strText16, (char*)"Swedish"); break;
287                case 0x29: str2uni(strText16, (char*)"Turkish"); break;
288                case 0x2A: str2uni(strText16, (char*)"Flemish"); break;
289                case 0x2B: str2uni(strText16, (char*)"Wallon"); break;
290                case 0x45: str2uni(strText16, (char*)"Zulu"); break;
291                case 0x46: str2uni(strText16, (char*)"Vietnamese"); break;
292                case 0x47: str2uni(strText16, (char*)"Uzbek"); break;
293                case 0x48: str2uni(strText16, (char*)"Urdu"); break;
294                case 0x49: str2uni(strText16, (char*)"Ukrainian"); break;
295                case 0x4A: str2uni(strText16, (char*)"Thai"); break;
296                case 0x4B: str2uni(strText16, (char*)"Telugu"); break;
297                case 0x4C: str2uni(strText16, (char*)"Tarar"); break;
298                case 0x4D: str2uni(strText16, (char*)"Tamil"); break;
299                case 0x4E: str2uni(strText16, (char*)"Tadzhik"); break;
300                case 0x4F: str2uni(strText16, (char*)"Swahili"); break;
301                case 0x50: str2uni(strText16, (char*)"Sranan Tongo"); break;
302                case 0x51: str2uni(strText16, (char*)"Somali"); break;
303                case 0x52: str2uni(strText16, (char*)"Sinhalese"); break;
304                case 0x53: str2uni(strText16, (char*)"Shona"); break;
305                case 0x54: str2uni(strText16, (char*)"Serbo-Croat"); break;
306                case 0x55: str2uni(strText16, (char*)"Ruthenian"); break;
307                case 0x56: str2uni(strText16, (char*)"Russian"); break;
308                case 0x57: str2uni(strText16, (char*)"Quechua"); break;
309                case 0x58: str2uni(strText16, (char*)"Pustu"); break;
310                case 0x59: str2uni(strText16, (char*)"Punjabi"); break;
311                case 0x5A: str2uni(strText16, (char*)"Persian"); break;
312                case 0x5B: str2uni(strText16, (char*)"Papamiento"); break;
313                case 0x5C: str2uni(strText16, (char*)"Oriya"); break;
314                case 0x5D: str2uni(strText16, (char*)"Nepali"); break;
315                case 0x5E: str2uni(strText16, (char*)"Ndebele"); break;
316                case 0x5F: str2uni(strText16, (char*)"Marathi"); break;
317                case 0x60: str2uni(strText16, (char*)"Moldavian"); break;
318                case 0x61: str2uni(strText16, (char*)"Malaysian"); break;
319                case 0x62: str2uni(strText16, (char*)"Malagasay"); break;
320                case 0x63: str2uni(strText16, (char*)"Macedonian"); break;
321                case 0x64: str2uni(strText16, (char*)"Laotian"); break;
322                //case 0x65: str2uni(strText16, (char*)"Korean"); break;
323                case 0x66: str2uni(strText16, (char*)"Khmer"); break;
324                case 0x67: str2uni(strText16, (char*)"Kazakh"); break;
325                case 0x68: str2uni(strText16, (char*)"Kannada"); break;
326                //case 0x69: str2uni(strText16, (char*)"Japanese"); break;
327                case 0x6A: str2uni(strText16, (char*)"Indonesian"); break;
328                case 0x6B: str2uni(strText16, (char*)"Hindi"); break;
329                case 0x6C: str2uni(strText16, (char*)"Hebrew"); break;
330                case 0x6D: str2uni(strText16, (char*)"Hausa"); break;
331                case 0x6E: str2uni(strText16, (char*)"Gurani"); break;
332                case 0x6F: str2uni(strText16, (char*)"Gujurati"); break;
333                case 0x70: str2uni(strText16, (char*)"Greek"); break;
334                case 0x71: str2uni(strText16, (char*)"Georigian"); break;
335                case 0x72: str2uni(strText16, (char*)"Fulani"); break;
336                case 0x73: str2uni(strText16, (char*)"Dari"); break;
337                case 0x74: str2uni(strText16, (char*)"Churash"); break;
338                //case 0x75: str2uni(strText16, (char*)"Chinese"); break;
339                case 0x76: str2uni(strText16, (char*)"Burmese"); break;
340                case 0x77: str2uni(strText16, (char*)"Bulgarian"); break;
341                case 0x78: str2uni(strText16, (char*)"Bengali"); break;
342                case 0x79: str2uni(strText16, (char*)"Belorussian"); break;
343                case 0x7A: str2uni(strText16, (char*)"Bambora"); break;
344                case 0x7B: str2uni(strText16, (char*)"Azerbijani"); break;
345                case 0x7C: str2uni(strText16, (char*)"Assamese"); break;
346                case 0x7D: str2uni(strText16, (char*)"Armenian"); break;
347                case 0x7E: str2uni(strText16, (char*)"Arabic"); break;
348                case 0x7F: str2uni(strText16, (char*)"Amharic"); break;
349        }
350        // ¸ÖƼ ¸µ±¸¾ó Àû¿ë
351        switch (nNumber)
352        {
353                case 0x65: strcpy16(strText16, pz_Korean[OSD_Lang]); break;// pz_Korean
354                case 0x75: strcpy16(strText16, pz_Chinese[OSD_Lang]); break;// pz_Chinese
355                case 0x08: strcpy16(strText16, pz_German[OSD_Lang]); break;// pz_German
356                case 0x09: strcpy16(strText16, pz_English[OSD_Lang]); break;// pz_English
357                case 0x0A: strcpy16(strText16, pz_Spanish[OSD_Lang]); break;// pz_Spanish
358                case 0x0F: strcpy16(strText16, pz_French[OSD_Lang]); break;// pz_French
359                case 0x21: strcpy16(strText16, pz_Portuguese[OSD_Lang]); break;// pz_Portuguese
360                case 0x69: strcpy16(strText16, pz_Japanese[OSD_Lang]); break;// pz_Japanese
361        }
362        return strText16;
363}
364
365static bool DST_IsAlphabetCharacter(char c)
366{
367        if ('A' <= c && c <= 'Z') return true;
368        if ('a' <= c && c <= 'z') return true;
369        return false;
370}
371
372static char DST_ToLowerCharacter(char c)
373{
374        if ('A' <= c && c <= 'Z') return c+0x20;
375        return c;
376}
377
378DS_U8 DST_GetLangCodeFromISO639String(char* code)
379{
380        if (code == 0) return 0;
381        // ¹®ÀÚ¿­°ú ºñ±³ÇÏ¿© ¿Àµð¿À Äڵ带 ¹ÝȯÇÑ´Ù.
382        if (strcmp(code, "alb")==0) return 0x01;
383        if (strcmp(code, "bre")==0) return 0x02;
384        if (strcmp(code, "cat")==0) return 0x03;
385        if (strcmp(code, "scr")==0) return 0x04;
386        if (strcmp(code, "wel")==0) return 0x05;
387        if (strcmp(code, "cze")==0) return 0x06;
388        if (strcmp(code, "dan")==0) return 0x07;
389
390        if (strcmp(code, "ger")==0) return 0x08;
391        if (strcmp(code, "eng")==0) return 0x09;
392        if (strcmp(code, "spa")==0 || strcmp(code, "esl")==0) return 0x0A;
393        if (strcmp(code, "epo")==0) return 0x0B;
394        if (strcmp(code, "est")==0) return 0x0C;
395        if (strcmp(code, "baq")==0) return 0x0D;
396        if (strcmp(code, "fao")==0) return 0x0E;
397        if (strcmp(code, "fre")==0 || strcmp(code, "fra")==0) return 0x0F;
398
399        if (strcmp(code, "fry")==0) return 0x10;
400        if (strcmp(code, "gle")==0) return 0x11;
401        if (strcmp(code, "gla")==0) return 0x12;
402        if (strcmp(code, "glg")==0) return 0x13;
403        if (strcmp(code, "ice")==0) return 0x14;
404        if (strcmp(code, "ita")==0) return 0x15;
405        if (strcmp(code, "lat")==0) return 0x17;
406
407        if (strcmp(code, "lav")==0) return 0x18;
408        if (strcmp(code, "lit")==0) return 0x1A;
409        if (strcmp(code, "hun")==0) return 0x1B;
410        if (strcmp(code, "mlt")==0) return 0x1C;
411        if (strcmp(code, "dut")==0) return 0x1D;
412        if (strcmp(code, "nor")==0) return 0x1E;
413        if (strcmp(code, "oci")==0) return 0x1F;
414
415        if (strcmp(code, "pol")==0) return 0x20;
416        if (strcmp(code, "por")==0) return 0x21;
417        if (strcmp(code, "rum")==0) return 0x22;
418        if (strcmp(code, "scc")==0) return 0x24;
419        if (strcmp(code, "slo")==0) return 0x25;
420        if (strcmp(code, "fin")==0) return 0x27;
421
422        if (strcmp(code, "swe")==0) return 0x28;
423        if (strcmp(code, "tur")==0) return 0x29;
424
425        if (strcmp(code, "zul")==0) return 0x45;
426        if (strcmp(code, "vie")==0) return 0x46;
427        if (strcmp(code, "uzb")==0) return 0x47;
428
429        if (strcmp(code, "urd")==0) return 0x48;
430        if (strcmp(code, "ukr")==0) return 0x49;
431        if (strcmp(code, "tha")==0) return 0x4A;
432        if (strcmp(code, "tel")==0) return 0x4B;
433        if (strcmp(code, "tat")==0) return 0x4C;
434        if (strcmp(code, "tam")==0) return 0x4D;
435        if (strcmp(code, "swa")==0) return 0x4F;
436
437        if (strcmp(code, "som")==0) return 0x51;
438        if (strcmp(code, "sin")==0) return 0x52;
439        if (strcmp(code, "sna")==0) return 0x53;
440        if (strcmp(code, "rus")==0) return 0x56;
441        if (strcmp(code, "que")==0) return 0x57;
442
443        if (strcmp(code, "pus")==0) return 0x58;
444        if (strcmp(code, "per")==0) return 0x5A;
445        if (strcmp(code, "pap")==0) return 0x5B;
446        if (strcmp(code, "ori")==0) return 0x5C;
447        if (strcmp(code, "nep")==0) return 0x5D;
448        if (strcmp(code, "nde")==0) return 0x5E;
449        if (strcmp(code, "mar")==0) return 0x5F;
450
451        if (strcmp(code, "mol")==0) return 0x60;
452        if (strcmp(code, "may")==0) return 0x61;
453        if (strcmp(code, "mlg")==0) return 0x62;
454        if (strcmp(code, "mac")==0) return 0x63;
455        if (strcmp(code, "kor")==0) return 0x65;
456        if (strcmp(code, "khm")==0) return 0x66;
457        if (strcmp(code, "kaz")==0) return 0x67;
458
459        if (strcmp(code, "kan")==0) return 0x68;
460        if (strcmp(code, "jpn")==0) return 0x69;
461        if (strcmp(code, "ind")==0) return 0x6A;
462        if (strcmp(code, "hin")==0) return 0x6B;
463        if (strcmp(code, "heb")==0) return 0x6C;
464        if (strcmp(code, "hau")==0) return 0x6D;
465        if (strcmp(code, "grn")==0) return 0x6E;
466        if (strcmp(code, "guj")==0) return 0x6F;
467
468        if (strcmp(code, "gre")==0) return 0x70;
469        if (strcmp(code, "geo")==0) return 0x71;
470        if (strcmp(code, "chv")==0) return 0x74;
471        if (strcmp(code, "chi")==0 || strcmp(code, "zho")==0) return 0x75;
472        if (strcmp(code, "bur")==0) return 0x76;
473        if (strcmp(code, "bul")==0) return 0x77;
474
475        if (strcmp(code, "ben")==0) return 0x78;
476        if (strcmp(code, "bel")==0) return 0x79;
477        if (strcmp(code, "bam")==0) return 0x7A;
478        if (strcmp(code, "aze")==0) return 0x7B;
479        if (strcmp(code, "asm")==0) return 0x7C;
480        if (strcmp(code, "arm")==0) return 0x7D;
481        if (strcmp(code, "ara")==0) return 0x7E;
482        if (strcmp(code, "amh")==0) return 0x7F;
483
484        return 0; // Unknown
485}
486
487DS_U8 DST_GetLangCodeFromISO639(DS_U32 iso639)
488{
489        char code[4] = {0,0,0,0};
490        code[0] = (iso639 >> 16) & 0xFF;
491        code[1] = (iso639 >> 8) & 0xFF;
492        code[2] = (iso639 >> 0) & 0xFF;
493        // ¼¼ ±ÛÀÚÀÇ ¾ËÆÄºªÀÎÁö È®ÀÎ
494        if (DST_IsAlphabetCharacter(code[0]) == false) return 0;
495        if (DST_IsAlphabetCharacter(code[1]) == false) return 0;
496        if (DST_IsAlphabetCharacter(code[2]) == false) return 0;
497        // ¼Ò¹®ÀÚ·Î Á¤±ÔÈ­
498        code[0] = DST_ToLowerCharacter(code[0]);
499        code[1] = DST_ToLowerCharacter(code[1]);
500        code[2] = DST_ToLowerCharacter(code[2]);
501       
502        return DST_GetLangCodeFromISO639String(code);
503}
504
505#if 0
506____String_APIs___()
507#endif
508
509void strcpy16(DS_U16* des, DS_U16* src)
510{
511        unsigned i;
512        for ( i = 0; i < 4096; i++)
513        {
514                des[i] = src[i];
515                if (des[i] == 0) break;
516        }
517}
518
519int strcmp16(DS_U16* des, DS_U16* src)
520{
521        int len_des = strlen16(des);
522        int len_src = strlen16(src);
523        if (len_des !=  len_src) return -1;
524        return memcmp(des, src, len_des);
525}
526
527void strcpy32(DS_U32* des, DS_U32* src)
528{
529        unsigned i;
530        for ( i = 0; i < 4096; i++)
531        {
532                des[i] = src[i];
533                if (des[i] == 0) break;
534        }
535}
536
537unsigned strlen16(DS_U16 *str)
538{
539        if (str == 0) return 0;
540        unsigned i;
541        for ( i = 0; i < 4096; i++) if (str[i] == 0) return i;
542        return 0;
543}
544
545unsigned strlen32(DS_U32 *str)
546{
547        if (str == 0) return 0;
548        unsigned i;
549        for ( i = 0; i < 4096; i++) if (str[i] == 0) return i;
550        return 0;
551}
552
553void str2uni(DS_U16* des, char* src)
554{
555        unsigned nLen = strlen(src);
556        unsigned i;
557        for ( i = 0; i < nLen; i++) des[i] = (DS_U16)(DS_U8)src[i];
558        des[nLen] = 0;
559}
560
561void str232(DS_U32* des, char* src)
562{
563        unsigned nLen = strlen(src);
564        unsigned i;
565        for ( i = 0; i < nLen; i++) des[i] = (DS_U32)(DS_U8)src[i];
566        des[nLen] = 0;
567}
568
569void uni232(DS_U32* des, DS_U16* src)
570{
571        unsigned nLen = strlen16(src);
572        unsigned i;
573        for ( i = 0; i < nLen; i++) des[i] = (DS_U32)src[i];
574        des[nLen] = 0;
575}
576
577void strcat16(DS_U16* des, DS_U16* src)
578{
579        unsigned desLen = strlen16(des);
580        unsigned srcLen = strlen16(src);
581       
582        unsigned i;
583        for ( i = 0 ; i < srcLen ; i++)
584        {
585                des[desLen + i] = src[i];
586                if (des[desLen + i] == 0) break;
587        }
588        des[desLen + srcLen] = 0;
589}
590
591void strcat16_8(DS_U16* des, char* src)
592{
593        unsigned desLen = strlen16(des);
594        unsigned srcLen = strlen(src);
595
596        unsigned i;
597        for ( i = 0 ; i < srcLen ; i++)
598        {
599                des[desLen + i] = (DS_U16)(DS_U8)src[i];
600                if (des[desLen + i] == 0) break;
601        }
602        des[desLen + srcLen] = 0;
603}
604
605#if 0
606____Reset_APIs___()
607#endif
608
609/*extern "C" */void DHL_SYS_Reset();
610void DST_Reset(const char * function)
611{
612        DST_Printf("%s|%d by %s \n",__func__, __LINE__,function);
613//      DST_FlashSyncStart();
614        DST_DB_Sync();
615        int i;
616        for ( i = 0; i < 500; i++)
617        {
618                DST_OS_Delay(50);
619                T();
620                if (DST_DB_IsSync() == false) continue;
621                break;
622        }
623        DHL_SYS_Reboot();
624}
625
626#if 0
627____Item_Scroll_APIs____()
628#endif
629DS_U8 DST_IncreaseValue(DS_U16 min, DS_U16 max, DS_U16 *value, DS_U16 step/*=1*/)
630{
631    if ((max-min+1) <= step)        return *value;
632
633    if((*value+step)>max)
634    {
635             *value = *value+step-(max-min+1);
636    }
637    else
638    {
639            *value = *value + step;
640    }
641    return *value;
642}
643       
644DS_U8 DST_DecreaseValue(DS_U16 min, DS_U16 max, DS_U16 *value, DS_U16 step/*=1*/)
645{
646    if ((max-min+1) <= step)        return *value;
647
648    if((*value-step)<min)
649    {
650             *value = *value-step+(max-min+1);
651    }
652    else
653    {
654            *value = *value - step;
655    }
656    return *value;
657}
658
659
660void InitItemValues(DS_U16 listNum, DS_U16 select, DS_U16 *start, DS_U16 *cursor)
661{
662    *start = 0;
663    if (select >= listNum)  *start  = select-listNum+1;
664    *cursor = select-*start;
665}
666
667void ItemDecrease(DS_U16 itemNum, DS_U16 listNum, DS_U16 *start, DS_U16 *select, DS_U16 *cursor, DS_U16 step)
668{
669        int i;
670        for( i=0;i<step;i++)
671        {
672            if (*cursor == 0)
673                        DST_DecreaseValue(0, itemNum-listNum, start, 1);
674            DST_DecreaseValue(0, itemNum-1, select, 1);
675            *cursor = *select - *start;         
676        }
677}
678
679void ItemIncrease(DS_U16 itemNum, DS_U16 listNum, DS_U16 *start, DS_U16 *select, DS_U16 *cursor, DS_U16 step)
680{
681        int i;
682        for( i=0;i<step;i++)
683        {
684            if (*cursor >= listNum-1)
685                        DST_IncreaseValue(0, itemNum-listNum, start, 1);
686            DST_IncreaseValue(0, itemNum-1, select, 1);
687            *cursor = *select - *start;         
688        }
689}
690
691//static DS_U32 l_pdwCrc32Table[256] =
692//{
693//      0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,
694//      0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,
695//      0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,
696//      0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,
697//      0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,
698//      0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,
699//      0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,
700//      0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,
701//      0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,
702//      0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,
703//      0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,
704//      0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,
705//      0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,
706//      0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,
707//      0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,
708//      0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,
709//
710//      0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,
711//      0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,
712//      0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,
713//      0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,
714//      0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,
715//      0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,
716//      0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,
717//      0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,
718//      0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,
719//      0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,
720//      0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,
721//      0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,
722//      0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,
723//      0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
724//      0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,
725//      0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,
726//
727//      0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,
728//      0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,
729//      0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,
730//      0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,
731//      0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,
732//      0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,
733//      0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,
734//      0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,
735//      0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,
736//      0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
737//      0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,
738//      0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,
739//      0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,
740//      0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,
741//      0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,
742//      0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,
743//
744//      0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,
745//      0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,
746//      0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,
747//      0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,
748//      0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,
749//      0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,
750//      0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,
751//      0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,
752//      0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,
753//      0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,
754//      0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,
755//      0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
756//      0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,
757//      0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,
758//      0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
759//      0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D,
760//};
761//
762//DS_U32 DST_crc32 (DS_U8 *data, int len)
763//{
764//      int i;
765//      DS_U32 crc = 0xffffffff;
766//
767//      for (i=0; i<len; i++)
768//              crc  = ((crc) >> 8) ^ l_pdwCrc32Table[(*data++) ^ ((crc) & 0x000000FF)];
769//
770//      crc = ~crc;
771//
772//      return crc;
773//}
Note: See TracBrowser for help on using the repository browser.