source: svn/newcon3bcm2_21bu/dst/dmw/src/cc/cc_user.c @ 76

Last change on this file since 76 was 76, checked in by megakiss, 10 years ago

1W 대기전력을 만족시키기 위하여 POWEROFF시 튜너를 Standby 상태로 함

  • Property svn:executable set to *
File size: 6.3 KB
Line 
1
2#include "cc_config.h"
3#include "cc_type.h"
4#include "cc_def.h"
5#include "cc_private.h"
6#include "cc_api.h"
7
8static tDCC_Info p_user_info;
9
10#define INFO(i) p_user_info.i
11
12
13static tDCCDDI_SEM p_mtx;
14
15static void p_lock(BOOL block)
16{
17        if(!p_mtx) return;
18               
19        if(block) DCCDDI_TakeSemaphore(p_mtx);
20        else      DCCDDI_GiveSemaphore(p_mtx);
21}
22
23
24void DCC_Init(tDCC_Config *cfg)
25{
26        static BOOL is_inited=FALSE;
27       
28        if(is_inited) return;
29               
30        p_mtx=DCCDDI_CreateMutexSemaphore("dcc sem");
31       
32        DCCDDI_Init();
33       
34        DCCMain_Init();
35        DCCFront_Init();
36        DCCExec_Init();
37       
38        memcpy(&INFO(config), cfg, sizeof(INFO(config)));
39       
40        if(cfg->color_map) {
41                INFO(config).color_map=DCCDDI_Malloc(sizeof(tDCC_ColorMap));
42                memcpy(INFO(config).color_map, cfg->color_map, sizeof(tDCC_ColorMap));
43        }
44        else
45                INFO(config).color_map=NULL;
46       
47        DCCMain_SendCmd(eCMD_USER_INIT, 0, (UINT32)&INFO(config), 0);
48       
49        memset(&INFO(pen_attr), DCC_AUTO_SET, sizeof(INFO(pen_attr)));
50        memset(&INFO(win_attr), DCC_AUTO_SET, sizeof(INFO(win_attr)));
51                //Ãʱ⠱⺻°ªÀº ¸ðµÎ 0xff
52        DCCMain_SendCmd(eCMD_USER_SET_ATTR, 0, (UINT32)&INFO(win_attr), (UINT32)&INFO(pen_attr));
53       
54        is_inited=TRUE;
55}
56
57
58void DCC_ResetConfig(tDCC_Config *cfg)
59{
60        p_lock(TRUE);
61        memcpy(&INFO(config), cfg, sizeof(INFO(config)));
62        p_lock(FALSE);
63        DCCMain_SendCmd(eCMD_USER_INIT, 0, (UINT32)&INFO(config), 0);
64}
65
66
67void DCC_GetConfig(tDCC_Config *cfg)
68{
69        p_lock(TRUE);
70        *cfg=INFO(config);
71        p_lock(FALSE);
72}
73
74
75void DCC_GetInfo(tDCC_Info *pinfo)
76{
77        p_lock(TRUE);
78        *pinfo=p_user_info;
79        p_lock(FALSE);
80}
81
82void DCC_Ready()
83{
84        p_lock(TRUE);
85        INFO(bready)=TRUE;
86        p_lock(FALSE);
87}
88
89void DCC_Exit()
90{
91        p_lock(TRUE);
92        INFO(bready)=FALSE;
93        p_lock(FALSE);
94}
95
96BOOL DCC_IsReady()
97{
98        BOOL is_ready;
99       
100        p_lock(TRUE);
101        is_ready=INFO(bready);
102        p_lock(FALSE);
103       
104        return is_ready;
105}
106
107
108void DCC_Stop()
109{
110        p_lock(TRUE);
111        if(INFO(bdisplay_on)) {
112                INFO(bdisplay_on)=FALSE;
113                p_lock(FALSE);
114               
115                DCCExec_ForceDLYRelease();
116                DCCMain_ResetQueue();
117                DCCMain_SendCmd(eCMD_USER_SET_SERVICE, 0, eDCC_S_NONE, 0);
118                DCCMain_SendCmd(eCMD_USER_SET_DISPLAY, eDCC_OPT_SYNC, FALSE, 0);
119        }
120        else
121                p_lock(FALSE);
122}
123
124void DCC_Start()
125{
126        p_lock(TRUE);
127        if( !INFO(bdisplay_on)) {
128                INFO(bdisplay_on)=TRUE;
129                p_lock(FALSE);
130                DCCMain_SendCmd(eCMD_USER_SET_SERVICE, 0, INFO(service), 0);
131                DCCMain_SendCmd(eCMD_USER_SET_DISPLAY, eDCC_OPT_SYNC, TRUE, 0);
132        }
133        else
134                p_lock(FALSE);
135}
136
137BOOL DCC_IsStarted()
138{
139        BOOL bon;
140
141        p_lock(TRUE);
142        bon=INFO(bdisplay_on);
143        p_lock(FALSE);
144       
145        return bon;
146}
147
148
149void DCC_SetService(int service_num)
150{
151
152        p_lock(TRUE);
153        INFO(service)=service_num;
154        p_lock(FALSE);
155        DCCMain_SendCmd(eCMD_USER_SET_SERVICE, 0, service_num, 0);
156       
157        if(INFO(service)>=eDCC_S_CC1 && INFO(service)<=eDCC_S_T4) //
158                DCCMain_SendCmd(eCMD_USER_SET_OPTION, 0, FALSE, 0);
159        else
160                DCCMain_SendCmd(eCMD_USER_SET_OPTION, 0, INFO(buser_opt), 0);
161       
162}
163
164tDCC_Service DCC_GetService()
165{
166        UINT8 service;
167
168        p_lock(TRUE);
169        service=INFO(service);
170        p_lock(FALSE);
171       
172        return (tDCC_Service)service;
173}
174
175void DCC_SetOption(BOOL b_user_mode)
176{
177        p_lock(TRUE);
178        INFO(buser_opt)=b_user_mode;
179        p_lock(FALSE);
180       
181        if(INFO(service)>=eDCC_S_CC1 && INFO(service)<=eDCC_S_T4) //
182                DCCMain_SendCmd(eCMD_USER_SET_OPTION, 0, FALSE, 0);
183        else
184                DCCMain_SendCmd(eCMD_USER_SET_OPTION, 0, b_user_mode, 0);
185        //DCCMain_SendCmd(eCMD_USER_SET_OPTION, 0, b_user_mode, 0);
186       
187        // positionÀº option¿¡ µû¶ó Àû¿ë ¿©ºÎ°¡ ¹Ù²îÁö ¾Ê¾Ò¾ú´Âµ¥, ¹Ù²ã¾ß ÇÒ Çʿ伺 »ý±è
188        if(INFO(buser_opt)==FALSE)
189                DCCMain_SendCmd(eCMD_USER_SET_POSITION, 0, 0, 0);
190        else
191                DCCMain_SendCmd(eCMD_USER_SET_POSITION, 0, INFO(win_posx), INFO(win_posy));
192}
193
194BOOL DCC_GetOption()
195{
196        BOOL is_user;
197
198        p_lock(TRUE);
199        is_user=INFO(buser_opt);
200        p_lock(FALSE);
201       
202        return is_user;
203}
204
205void DCC_SetKorean(BOOL b_korean)
206{
207        p_lock(TRUE);
208        INFO(config).is_korean=b_korean;
209        p_lock(FALSE);
210       
211        DCCMain_SendCmd(eCMD_USER_SET_KOREAN, 0, b_korean, INFO(config).is_unicode);
212}
213
214void DCC_SetKoreanMode(BOOL b_unicode)
215{
216        p_lock(TRUE);
217        INFO(config).is_unicode=b_unicode;
218        p_lock(FALSE);
219       
220        DCCMain_SendCmd(eCMD_USER_SET_KOREAN, 0, INFO(config).is_korean, b_unicode);
221}
222
223
224void DCC_SetPenUserAttr(tDCC_PenUserAttr *attr)
225{
226        p_lock(TRUE);
227        memcpy(&INFO(pen_attr), attr, sizeof(INFO(pen_attr)));
228        p_lock(FALSE);
229        DCCMain_SendCmd(eCMD_USER_SET_ATTR, 0, 0, (UINT32)&INFO(pen_attr));
230}
231
232
233void DCC_GetPenUserAttr(tDCC_PenUserAttr *attr)
234{
235        p_lock(TRUE);
236        memcpy(attr, &INFO(pen_attr), sizeof(*attr));
237        p_lock(FALSE);
238}
239
240
241void DCC_GetWinUserAttr(tDCC_WinAttr *attr)
242{
243        p_lock(TRUE);
244        memcpy(attr, &INFO(win_attr), sizeof(*attr));
245        p_lock(FALSE);
246}
247
248
249void DCC_SetWinUserAttr(tDCC_WinAttr *attr)
250{
251        p_lock(TRUE);
252        memcpy(&INFO(win_attr), attr, sizeof(INFO(win_attr)));
253        p_lock(FALSE);
254       
255        DCCMain_SendCmd(eCMD_USER_SET_ATTR, 0, (UINT32)&INFO(win_attr), 0);
256}
257
258
259void DCC_MoveWinPosition(int posx, int posy)
260{
261        p_lock(TRUE);
262        INFO(win_posx)=posx;
263        INFO(win_posy)=posy;
264        p_lock(FALSE);
265       
266        if(INFO(buser_opt)==FALSE)
267                DCCMain_SendCmd(eCMD_USER_SET_POSITION, 0, 0, 0);
268        else
269                DCCMain_SendCmd(eCMD_USER_SET_POSITION, 0, INFO(win_posx), INFO(win_posy));
270}
271
272
273void DCC_GetWinPosition(int *posx, int *posy)
274{
275        p_lock(TRUE);
276        if(posx) *posx=INFO(win_posx);
277        if(posy) *posy=INFO(win_posy);
278        p_lock(FALSE);
279}
280
281
282void DCC_SetFeeding608(BOOL is_on)
283{
284        p_lock(TRUE);
285        INFO(is_feeding_608)=is_on;
286        p_lock(FALSE);
287        DCCMain_SendCmd(eCMD_USER_SET_FEEDING, 0, is_on, 0);
288}
289
290
291BOOL DCC_IsOnFeeding608()
292{
293        BOOL is_on;
294       
295        p_lock(TRUE);
296        is_on=INFO(is_feeding_608);
297        p_lock(FALSE);
298       
299        return is_on;
300}
301
302
303BOOL DCC_IsServiceOn(tDCC_Service service)
304{
305        BOOL is_on;
306
307        p_lock(TRUE);
308        is_on=DCCFront_IsServiceOn(service);
309        p_lock(FALSE);
310       
311        return is_on;
312}
313
314
315void DCC_SetSync()
316{
317        //ÇØ´ç Ccommand°¡ ´Ù ó¸®µÉ ¶§±îÁö ±â´Ù¸²
318        DCCMain_SendCmd(eCMD_SYNC, 0, 0, 0);
319}
320
321
322
323void DCC_SetInfoCallback(tDCC_InfoCallback func) 
324{
325                DCCExec_SetCallback(func);
326                DCCFront_SetCallback(func);
327}
328
329
330#if 0
331__Get_Info__() {}
332#endif
333
334
335
336
337#if 0
338__Test_Func__() {}
339#endif
340
341
342void cc_set_scroll(BOOL bUp)
343{
344        tDCC_WinAttr attr;
345       
346        DCC_SetOption(TRUE);
347       
348        DCC_GetWinUserAttr(&attr);
349       
350        if(bUp)
351                attr.sd=eDCC_D_TPTOBT;
352        else
353                attr.sd=eDCC_D_BTTOTP;
354       
355        DCC_SetWinUserAttr(&attr);
356       
357}
358
Note: See TracBrowser for help on using the repository browser.