source: svn/trunk/zasc/app/DST_WinUpdate.cpp @ 22

Last change on this file since 22 was 2, checked in by phkim, 11 years ago

1.phkim

  1. revision copy newcon3sk r27
  • Property svn:executable set to *
File size: 8.0 KB
Line 
1#include "DST_Window.h"
2#include "DST_WinManager.h"
3#include "DST_DataStrings.h"
4#include "DST_CommonAPI.h"
5#include "DST_EEPROM.h"
6#include "DST_ChannelTune.h"
7#include "DST_UserInterface.h"
8#include "DST_Updates.h"
9#include "DST_OSDImage.h"
10
11#if 0
12____CMessageWin___()
13#endif
14
15extern unsigned char imgpin_change_back[]; 
16
17class CUpdateWin : public CWindow
18{
19private:
20        bool bDone;
21        bool bNeedLine;
22        int progress;
23        int center_pos;
24        int line_spacing;       
25
26        int nBlock;
27        int nErr;
28        int ErrCategory;
29        int category;
30       
31public:
32        CUpdateWin(SWinEventMsg event):CWindow(event)
33        {
34       
35                DST_g_RFUpdateState = 0;
36                rect.w = 382; 
37                rect.h = 241; 
38                rect.x = (DST_GetScreenWidth() - rect.w) / 2;
39                rect.y = (DST_GetScreenHeight()- rect.h) / 2;
40
41                DST_Printf("\n\n--------------------------WIN_UPDATE----------------------------------\n\n");
42               
43
44                center_pos =  rect.h / 2; 
45                line_spacing = DST_GetFontHeight(fontItemSize) * 150 / 100;
46
47                nErr = 0;
48                ErrCategory = 0;
49                category = 0;
50                bNeedLine = false;
51//              RegisterAllKey();
52                SetTimeOut(0);
53                bDone = false;
54                progress = 0;
55        }
56        virtual void OnTimer(char nID)
57        {
58                switch(nID)
59                {
60                        case 1:
61                                DST_Printf("nErr : %d \n",nErr);
62                                KillTimer(1);
63                                DrawBox32(0, 0, rect.w, rect.h, CONV32_16(0xff24435e));
64                                switch(ErrCategory)
65                                {
66                                        case UPDATE_BOOTLOADER:
67                                                DrawTextUni(0, center_pos-line_spacing, rect.w, line_spacing, pz_Updating_Cat_1[OSD_Lang], &font); 
68                                                break;
69                                        case UPDATE_APPLICATION:
70                                                DrawTextUni(0, center_pos-line_spacing, rect.w, line_spacing, pz_Updating_Cat_4[OSD_Lang], &font); 
71                                                break;
72                                        case UPDATE_APPLICATION0:
73                                                DrawTextUni(0, center_pos-line_spacing, rect.w, line_spacing, pz_Updating_Cat_4_1[OSD_Lang], &font); 
74                                                break;
75                                        case UPDATE_APPLICATION1:
76                                                DrawTextUni(0, center_pos-line_spacing, rect.w, line_spacing, pz_Updating_Cat_4_2[OSD_Lang], &font); 
77                                                break;
78                                        case UPDATE_VERSION_READ:
79                                                DrawTextUni(0, center_pos-line_spacing, rect.w, line_spacing, pz_Updating_Cat_5[OSD_Lang], &font); 
80                                                break;
81                                        default:
82                                                break;
83                                }
84                               
85                                switch(nErr)
86                                {
87                                        case WRITE_FLASH_FAIL:
88                                                DrawTextUni(0, (bNeedLine?center_pos:0), rect.w, (bNeedLine?line_spacing:rect.h), pz_Update_Err_301[OSD_Lang], &font);
89                                                break;
90                                        case CRC_FLASH_BOOTLOADER_FAIL:
91                                                DrawTextUni(0, (bNeedLine?center_pos:0), rect.w, (bNeedLine?line_spacing:rect.h), pz_Update_Err_401[OSD_Lang], &font);
92                                                break;
93                                        case CRC_FLASH_APPLICATION_FAIL:
94                                                DrawTextUni(0, (bNeedLine?center_pos:0), rect.w, (bNeedLine?line_spacing:rect.h), pz_Update_Err_402[OSD_Lang], &font);
95                                                break;
96                                        case CRC_READ_BOOTLOADER_FAIL:
97                                                DrawTextUni(0, (bNeedLine?center_pos:0), rect.w, (bNeedLine?line_spacing:rect.h), pz_Update_Err_403[OSD_Lang], &font);
98                                                break;
99                                        case CRC_READ_APPLICATION_FAIL:
100                                                DrawTextUni(0, (bNeedLine?center_pos:0), rect.w, (bNeedLine?line_spacing:rect.h), pz_Update_Err_404[OSD_Lang], &font);
101                                                break;
102                                        case CRC_READ_TOTAL_FAIL:
103                                                DrawTextUni(0, (bNeedLine?center_pos:0), rect.w, (bNeedLine?line_spacing:rect.h), pz_Update_Err_405[OSD_Lang], &font);
104                                                break;
105                                                break;
106                                        case UPDATE_CHECKING_CRC:
107                                                DrawTextUni(0, center_pos-line_spacing, rect.w, line_spacing, pz_Updating_4[OSD_Lang], &font); 
108                                                DrawTextUni(0, center_pos, rect.w, line_spacing, pz_Updating_5[OSD_Lang], &font); 
109                                                break;
110                                        case UPDATE_FINISHED:
111                                                DrawTextUni(0, center_pos-line_spacing-line_spacing/2, rect.w, line_spacing, pz_Updating_6[OSD_Lang], &font);
112                                                DrawTextUni(0, center_pos-line_spacing/2, rect.w, line_spacing, pz_finished2[OSD_Lang], &font);
113                                                DrawTextUni(0, center_pos+line_spacing-line_spacing/2, rect.w, line_spacing, pz_finished[OSD_Lang], &font);
114                                                break;
115                                        default:
116                                                break;
117                                }
118                                if(nErr == UPDATE_FINISHED || nErr == UPDATE_CHECKING_CRC)
119                                {
120                                        DST_g_LED_PowerState = 2;
121                                       
122                                        SetTimer(2,5000);
123                                }
124                                else
125                                {
126                                        DST_g_LED_PowerState = 1;
127                                }
128                                UpdateScreen(); 
129                                break;
130                        case 2:
131                                Close();
132                                DST_CreateWin(WIN_UPDATE_RESET);
133                                break;
134                        default:
135                                break;
136                }
137        }
138
139        void DrawProgressBar(DS_U32 nPos, DS_U32 nTotal, int x, int y, DS_U32 width)
140        {
141                DrawBox32(x, y, width, 10, CONV32_16(0xffe5e5ff));
142                if(nPos == nTotal)
143                        DrawBox32(x, y, width, 10, CONV32_16(0xff65a5cc));
144                else
145                        DrawBox32(x, y, (nPos*width)/nTotal, 10, CONV32_16(0xff65a5cc));
146                UpdateScreen();
147        }
148       
149        virtual void OnMessage(SWinEventMsg event)
150        {
151                switch (event.cmd)
152                {
153                        case WM_RF_UPDATE:
154                                switch(event.data32[0])
155                                {
156                                        case FLASH_WRITING: // FLASH WRITING
157                                                if(category != (int)event.data32[2])
158                                                {
159                                                        category = event.data32[2];
160                                                        switch(category)
161                                                        {
162                                                                case UPDATE_BOOTLOADER: Draw(pz_Updating_Cat_str_1[OSD_Lang]); break;
163                                                                case UPDATE_APPLICATION0: Draw(pz_Updating_Cat_str_4_1[OSD_Lang]); break;
164                                                                case UPDATE_APPLICATION1: Draw(pz_Updating_Cat_str_4_2[OSD_Lang]); break;
165                                                        }
166                                                       
167                                                }
168                                               
169                                                DrawProgressBar(event.data32[1], 100,rect.w/10,center_pos+2*line_spacing-10,rect.w*8/10);               
170                                               
171                                                DST_g_RFUpdateState = 1;
172                                                break;
173                                        case FLASH_WRITING_COMPLETE: // FLASH WRITING COMPLETE
174                                        case FLASH_WRITING_FAIL:
175                                                nErr = event.data32[1];
176                                                ErrCategory = event.data32[2];
177                                                if(ErrCategory != UPDATE_OK) bNeedLine = true;
178                                                else bNeedLine = false;
179                                                if (nErr != 0) SetTimer(1, 500);                                               
180                                                break;
181                                }
182                                break;
183                }
184        }
185
186       
187        virtual void Show(void)
188        {
189               
190                Draw(pz_Updating_Cat_str_system[OSD_Lang]);
191                RegisterAllKey();
192        }
193
194        void Draw(DS_U16 * category)
195        {
196                DrawBox32(0, 0, rect.w, rect.h, CONV32_16(0xff24435e));
197               
198                setFontStyle(fontItemSize,0xFFE1E1E1,ALIGN_MIDDLE,ALIGN_CENTER);
199
200                DrawTextUni(0, center_pos-2*line_spacing-10, rect.w, line_spacing, category, &font); 
201                DrawTextUni(0, center_pos-line_spacing-10, rect.w, line_spacing, pz_Updating_1[OSD_Lang], &font); 
202                DrawTextUni(0, center_pos-10, rect.w, line_spacing, pz_Updating_2[OSD_Lang], &font); 
203                DrawTextUni(0, center_pos+line_spacing-10, rect.w, line_spacing, pz_Updating_3[OSD_Lang], &font); 
204        }
205        virtual void KeyInput(DS_U8 key, bool /*bRepeat*/)
206        {
207                switch (key)
208                {
209                        case VK_PWR:
210                                if (DST_g_PowerOn) // ÄÑÁø»óÅÂ
211                                {
212                                        DST_g_PowerOn = false;// È­¸éÀ» ²ö´Ù.
213                                }
214                                else // ²¨Áø»óÅÂ
215                                {
216                                        DST_g_PowerOn = true;// È­¸éÀ» ÄÒ´Ù
217                                } 
218                                DHL_POWER_Display(DST_g_PowerOn);
219                                break;
220                }
221        }
222
223};
224
225void DST_CreateUpdateWin(SWinEventMsg event)
226{
227        if (DST_GetWin(WIN_UPDATE)) return;
228        DST_RemoveAllWindowExceptBasicWin();
229        DST_AddWin((WinID)(event.data[0]), new CUpdateWin(event));
230}
231
232
233class CUpdateResetWin : public CWindow
234{
235private:
236        DS_U8 winParentID;
237        DS_U8 msg;
238       
239public:
240        CUpdateResetWin(SWinEventMsg event):CWindow(event)
241        {
242                rect.w = 382; 
243                rect.h = 241; 
244
245                rect.x = (DST_GetScreenWidth() - rect.w) / 2;
246                rect.y = (DST_GetScreenHeight()- rect.h) / 2;
247                SetTimeOut(0);
248               
249
250        }
251        ~CUpdateResetWin()
252        {
253               
254                DST_g_bUpdateCompleted = true;
255                DST_Reset(__func__); // âÀÌ ´ÝÈ÷¸é¼­ ÀçºÎÆÃ
256        }
257        virtual void OnTimer(char nID)
258        {
259                switch(nID)
260                {
261                        case 1:
262                                KillTimer(1);
263                                Close();
264                                break;
265                        default:
266                                break;
267                }
268        }
269       
270        virtual void Show(void)
271        {
272                RegisterAllKey();
273                DrawBox32(0, 0, rect.w, rect.h, CONV32_16(0xff24435e));
274                setFontStyle(22,0xFFFFFFFF,ALIGN_MIDDLE,ALIGN_CENTER);
275                DrawTextUni(0, 0, rect.w, rect.h, pz_sysreset[OSD_Lang], &font);
276                UpdateScreen();
277               
278                SetTimer(1, 1000);
279        }
280        virtual void KeyInput(DS_U8 key, bool /*bRepeat*/)
281        {
282                switch (key)
283                {
284                        case VK_PWR:
285                                if (DST_g_PowerOn) // ÄÑÁø»óÅÂ
286                                {
287                                        DST_g_PowerOn = false; // È­¸éÀ» ²ö´Ù.
288                                }
289                                else // ²¨Áø»óÅÂ
290                                {
291                                        DST_g_PowerOn = true;// È­¸éÀ» ÄÒ´Ù
292                                } 
293                                DHL_POWER_Display(DST_g_PowerOn);
294                                break;
295                }
296        }
297
298};
299void DST_CreateUpdateResetWin(SWinEventMsg event)
300{
301        DST_RemoveAllWindowExceptBasicWin();
302        DST_AddWin((WinID)(event.data[0]), new CUpdateResetWin(event));
303}
304
305
Note: See TracBrowser for help on using the repository browser.