📄 lcd_msg.lst
字号:
259 3 }
260 2 else
261 2 {
262 3 if (ucKey_Repeat)
263 3 ucKey_Repeat -= 1;
264 3 else
265 3 {
266 4 if (KEY_TURBO_ENABLE > ucKey_Issued)
267 4 {
268 5 ucKey_Issued += 1;
269 5 ucKey_Repeat = KEY_REPEAT_PERIOD;
270 5 }
271 4 else
272 4 ucKey_Repeat = 0;
273 4
274 4 ucNotify = (ucP3_Curr == RIGHT_KEY_MASK) ? NOTIFY_RIGHT_KEY : NOTIFY_LEFT_KEY; //
-Post right-key repeat message
275 4 }
276 3 }
277 2 break;
278 2
279 2 #if (IRPOLLING)
case IR_KEY_MASK :
ucKey_Issued = 0;
if ((ucP3_Prev ^ ucP3_Curr) & IR_KEY_MASK)
{
if (SOURCE_TV == (stGUD1.INPUT_SOURCE & 0x07))
{
//usOSD_Timer = (unsigned int)stGUD1.OSD_TIMEOUT << 9; // Reset OSD timeout timer
usOSD_Timer = (unsigned int)stGUD1.OSD_TIMEOUT * 51;
}
ucNotify = Data[0]; // Post IR-key pressed message
ucKey_Repeat = KEY_REPEAT_COUNT;
}
else if (NOTIFY_IR_VOLINC == Data[0] || NOTIFY_IR_VOLDEC == Data[0])
{
if (ucKey_Repeat)
ucKey_Repeat -= 1;
else
C51 COMPILER V6.20c LCD_MSG 04/15/2004 12:59:11 PAGE 6
{
ucNotify = Data[0];
ucKey_Repeat = KEY_REPEAT_PERIOD;
}
}
break;
#endif
305 2
306 2 default :
307 2 // No key or more than 1 key pressed. Post no message and reset key-repeat.
308 2 ucKey_Repeat = KEY_REPEAT_COUNT;
309 2 ucKey_Issued = 0;
310 2
311 2 #if (HIDDEN_PAGE)
312 2 // For triggering the hidden page
313 2 if (0 == ucOSD_Page_Index && (RIGHT_KEY_MASK | LEFT_KEY_MASK) == ucP3_Curr) ucNotify = NOTI
-FY_LR_KEY;
314 2 #endif
315 2 break;
316 2 }
317 1
318 1 return ucNotify;
319 1 }
320
321
322 void OSD_Dispatcher(unsigned char message)
323 {
324 1 if (NOTIFY_NONE == message)
325 1 {
326 2 if (ucOSD_Page_Index)
327 2 {
328 3 if (0 == usOSD_Timer && 0 != stGUD1.OSD_TIMEOUT && SOURCE_TV != (stGUD1.INPUT_SOURCE & 0x07))
329 3 {
330 4 message = NOTIFY_CLEAR_OSD;
331 4 }
332 3 else
333 3 return;
334 3 }
335 2 else
336 2 {
337 3 if (BEGIN_MODECHANGE == usTaskCnt)
338 3 {
339 4 // Disable and clear input source note text
340 4 RTDSetByte(HOSTCTRL_02, 0x00);
341 4 RTDSetBit(OVL_CTRL_6D, 0xfe, 0x00);
342 4 RTDOSDW(OSD_Reset);
343 4 }
344 3 else if ((BEGIN_SHOWHINT == usTaskCnt))
345 3 {
346 4 Show_Hint();
347 4 }
348 3
349 3 return;
350 3 }
351 2 }
352 1 else if (NOTIFY_RELOAD == message)
353 1 {
354 2 RTDSetByte(HOSTCTRL_02, 0x00); // Wake RTD up
355 2 RTDSetBit(OVL_CTRL_6D, 0xfe, 0x00); // Disable overlay control
356 2 RTDOSDW(OSD_Reset); // Clear OSD
357 2
358 2 if (ucOSD_Page_Index)
C51 COMPILER V6.20c LCD_MSG 04/15/2004 12:59:11 PAGE 7
359 2 {
360 3 message = NOTIFY_SHOW;
361 3 }
362 2 else
363 2 {
364 3 message = NOTIFY_NONE;
365 3
366 3 Set_Background_Color(0, 0, 0);
367 3
368 3 if (BEGIN_MODECHANGE < usTaskCnt) Show_Note();
369 3
370 3 return;
371 3 }
372 2 }
373 1
374 1 switch (message)
375 1 {
376 2 case NOTIFY_CLEAR_OSD :
377 2 if (ucOSD_Page_Index && SOURCE_TV != (stGUD1.INPUT_SOURCE & 0x07))
378 2 {
379 3 // OSD time-out
380 3 ucOSD_Page_Index = 0;
381 3 ucOSD_Item_Index0 = 0;
382 3 ucOSD_Item_Index1 = 0;
383 3 ucOSD_Item_Index2 = 0;
384 3
385 3 RTDSetByte(HOSTCTRL_02, 0x00); // Wake RTD up
386 3
387 3 // Although you can add ending animation here, I don't think it is necessary.
388 3 RTDSetBit(OVL_CTRL_6D, 0xfe, 0x00);
389 3
390 3 RTDOSDW(OSD_Reset); // Clear OSD
391 3 }
392 2 break;
393 2
394 2 #if (IRPOLLING)
case NOTIFY_IR_SOURCE :
#endif
397 2 case NOTIFY_MENU_KEY :
398 2
399 2 if (SOURCE_VGA == (stGUD1.INPUT_SOURCE & 0x07))
400 2 {
401 3 #if (TMDS_ENABLE)
402 3 Change_Source(SOURCE_DVI);
403 3 #else
Change_Source(SOURCE_AV);
#endif
406 3 }
407 2 else if (SOURCE_DVI == (stGUD1.INPUT_SOURCE & 0x07))
408 2 Change_Source(SOURCE_AV);
409 2 else if (SOURCE_AV == (stGUD1.INPUT_SOURCE & 0x07))
410 2 Change_Source(SOURCE_SV);
411 2 else if (SOURCE_SV == (stGUD1.INPUT_SOURCE & 0x07))
412 2 {
413 3 #if (VIDEO_CHIP == VDC_SAA7118)
Change_Source(SOURCE_YUV);
#else
416 3 Change_Source(SOURCE_TV);
417 3 #endif
418 3 }
419 2 else if (SOURCE_YUV == (stGUD1.INPUT_SOURCE & 0x07))
420 2 {
C51 COMPILER V6.20c LCD_MSG 04/15/2004 12:59:11 PAGE 8
421 3 Change_Source(SOURCE_TV);
422 3 }
423 2 else
424 2 {
425 3 Change_Source(SOURCE_VGA);
426 3 }
427 2 break;
428 2
429 2 default :
430 2 {
431 3 // Save the current OSD page index
432 3 unsigned char ucPage_Curr = ucOSD_Page_Index;
433 3
434 3 // Send messages to OSD process
435 3 //(*OSD_Proc[ucOSD_Page_Index][stGUD1.INPUT_SOURCE & 0x07])(message);
436 3 OSD_Proc(message);
437 3
438 3 // If OSD page is changed ...
439 3 if (ucPage_Curr != ucOSD_Page_Index)
440 3 {
441 4 if (ucOSD_Page_Index)
442 4 {
443 5 if (0 == ucPage_Curr)
444 5 {
445 6 // ucOSD_Page_Index becomes non-zero value from zero. It is the first show of OSD.
446 6 // Maybe RTD3001 is still in power-saving mode, or we are showing some text on scr
-een,
447 6 // like "No Signal". So we must wake up RTD3001 and clear screen before we display
- OSD.
448 6 RTDSetByte(HOSTCTRL_02, 0x00);
449 6 RTDSetBit(VDIS_CTRL_20, 0xff, 0x01);
450 6 RTDSetBit(OVL_CTRL_6D, 0xfe, 0x00);
451 6 RTDOSDW(OSD_Reset);
452 6 }
453 5
454 5 //(*OSD_Proc[ucOSD_Page_Index][stGUD1.INPUT_SOURCE & 0x07])(NOTIFY_SHOW);
455 5 OSD_Proc(NOTIFY_SHOW);
456 5
457 5 if (0 == ucPage_Curr)
458 5 {
459 6 OSD_Opening();
460 6 }
461 5 }
462 4 else
463 4 {
464 5 // OSD should be cleared when ucOSD_Page_Index becomes 0.
465 5 // Clear other OSD status registers for safety
466 5 ucOSD_Item_Index0 = 0;
467 5 ucOSD_Item_Index1 = 0;
468 5 ucOSD_Item_Index2 = 0;
469 5
470 5 RTDSetByte(HOSTCTRL_02, 0x00); // Wake RTD up
471 5 OSD_Ending(); // Close OSD
472 5 }
473 4 }
474 3 else
475 3 {
476 4 // OSD page is not changed
477 4 if (ucOSD_Page_Index)
478 4 {
479 5 if (NOTIFY_SHOW == message)
480 5 {
C51 COMPILER V6.20c LCD_MSG 04/15/2004 12:59:11 PAGE 9
481 6 RTDCodeW(OSD_Enable);
482 6 RTDSetBit(OVL_CTRL_6D, 0xfe, 0x01);
483 6 }
484 5
485 5 // Change H/V Position and ADC clock may cause overflow/underflow temporarily.
486 5 if (NOTIFY_RIGHT_KEY == message || NOTIFY_LEFT_KEY == message)
487 5 {
488 6 RTDSetByte(STATUS0_01, 0x00); // Clear status
489 6 RTDSetByte(STATUS1_1F, 0x00); // Clear status
490 6 }
491 5 #if (SHOW_CHECK)
// Just for showing debug information
OSD_Show_Check();
/*
if (1 == ucOSD_Page_Index && 5 == ucOSD_Item_Index0 && 0 != ucOSD_Item_Index1)
{
ucOSD_Page_Index = 7;
OSD_Show_Check();
ucOSD_Page_Index = 1;
}
*/
#endif
503 5 }
504 4
505 4 }
506 3 }
507 2 break;
508 2 }
509 1 }
510
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 700 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 3
IDATA SIZE = 4 ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -