vfd_o.c
上传用户:poi891205
上传日期:2013-07-15
资源大小:9745k
文件大小:169k
源码类别:

DVD

开发平台:

C/C++

  1. /*
  2. ** FILE
  3. ** vfd.c
  4. **
  5. ** DESCRIPTION
  6. ** handle VFD functions.
  7. */
  8. #include "user_init.h"
  9. #include "config.h"
  10. #include "global.h"
  11. #include "memmap.h"
  12. #include "sio.h"
  13. //#include "epp.h"
  14. //#include "fastmath.h"
  15. //#include "auctrl.h"
  16. //#include "user_init.h"
  17. //#include "vfd.h"
  18. #include "vfdfunc.h"
  19. //#include "vfd_7seg.h"//kenny mark 2001/10/23
  20. //#include "vfd_p.h"//kenny mark 2001/10/23
  21. #include "ircode.h"
  22. #include "ircmd.h"
  23. #include "func.h"
  24. //#include "sig.h"
  25. //#include "fs96602.h"//kenny mark 2001/10/23
  26. #include "osd.h"
  27. #include "avd.h"                                //zyf 2000/11/22
  28. //#include "vfd_prg.h"//kenny mark 2001/10/23
  29. //#include "reverse.h"
  30. #include "gpio.h"
  31. #include "iop.h"
  32. #include "cd.h"
  33. #ifdef USE_VFDPORT_TRANDATA         //add by linrc 2004-3-24 21:56 for minidvd receive
  34.     #include "8200_51MCU.c"     //program introduce in the /IR_VFD/8200_51MCU.c file
  35. #endif    
  36. UINT32  get_rtc_val();
  37. //#ifdef P9c9_Panel //jacky 2003/10/23 07:35PM
  38. #ifdef USE_VFD_CONTROL_P9C9_LED_ON_OFF      //gerry,2004-1-30 18:11
  39. int led_flash_interval=0;
  40. int led_flash_time=0;
  41. #endif 
  42. //#define     VFD_DBG     1
  43. //#define VFD_KEY_TEST
  44. #ifdef  BBK_DVD   //fengjl add  4-2-3 20:22
  45. extern tv_output_vfd_time;  
  46. #endif
  47. static UINT16  counter, index;
  48. BYTE    vfd_state = 0;
  49. extern UINT32 save_srn_start_t;
  50. #include "vfd_mod.c"
  51. #ifdef HT1621_PANNEL//nono 4-5-9 23:56
  52. const BYTE vfd_keycode[]={};
  53. #endif//HT1621_PANNEL
  54. #ifdef NEW_JPEG
  55. extern BYTE bJpgVFDPause;
  56. #else
  57. #ifndef SHARE_NAV_VAR
  58. extern BYTE bJpgVFDPause;               //Jeff 20020523
  59. #else
  60. #define bJpgVFDPause (pFsJpeg->bJpgVFDPause)
  61. #endif
  62. #endif
  63. extern UINT16 Is_JPEG_SlideMode(void);
  64. #if defined(SLEEP_WHEN_POWER_ON)&&defined(TONIC_DVD)//20040206
  65. extern int power_on_flag;   //zhg 2004-1-4 15:46
  66. #endif
  67. #ifdef TWO_FUN_IN_ONE_VFD_KEY
  68. UINT32 keycode_to_num(UINT32 key_data)
  69. {
  70.     UINT32 temp;
  71.     UINT8   i;
  72.     for(i = 0; i < 24; i++)
  73.     {
  74.         temp = 0x01 << i;
  75.         if(key_data & temp)
  76.         {
  77.             if (key_data > temp) 
  78.             {
  79.                 return 0;
  80.             }
  81.             else
  82.             {
  83.                 key_data = i + 1;
  84.                 break;
  85.             }
  86.         }
  87.     }
  88.     return key_data; 
  89. }
  90. #endif //TWO_FUN_IN_ONE_VFD_KEY
  91. #ifdef TEST_VFD                                 //shawn add at 910131
  92. UINT8   SC_1 = 15;
  93. UINT8   COMMAND_MODE = 2;
  94. void update_vfd_dot_inc(void)       //shawn add at 910131
  95. {
  96.     if(SC_1 < 40)
  97.         SC_1++;
  98.     printf("n SC_1(BYTE_INC)=%dnn", SC_1);
  99.     
  100. #ifdef VFD2OSD_DBG_TXD                  //nono 2-8-9 14:39
  101.     psprintf(RegionValStr[REGION1], "SC_1 BYTE_INC: %d", SC_1);
  102.     PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
  103. #endif
  104. }
  105. void update_vfd_dot_dec(void)       //shawn add at 910131
  106. {
  107.     UINT8   a;
  108.     
  109.     for(a = SC_1; a <= 25; a++)
  110.         vfd_mem[a] = 0x00;
  111.     if(SC_1 > 0)
  112.         SC_1--;
  113.     printf("n SC_1(BYTE_DEC)=%dnn", SC_1);
  114.     
  115. #ifdef VFD2OSD_DBG_TXD                  //nono 2-8-9 14:39
  116.     psprintf(RegionValStr[REGION1], "SC_1 BYTE_DEC: %d", SC_1);
  117.     PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
  118. #endif
  119. }
  120. void update_vfd_mod_inc(void)       //shawn add at 910131
  121. {
  122.     //counter++;
  123.     
  124.     if(COMMAND_MODE < 16)
  125.         COMMAND_MODE++;
  126.     
  127.     printf("n COMMAND_MODE(INC)=%dnn", COMMAND_MODE);
  128.     
  129. #ifdef VFD2OSD_DBG_TXD                  //nono 2-8-9 14:40
  130.     psprintf(RegionValStr[REGION3], "COMMAND_MODE INC: %d", COMMAND_MODE);
  131.     PrintOsdMsg(STR_OS_SPACE, REGION3, 1, 1);
  132.     
  133. #endif
  134.     
  135.     reset_vfd();
  136. }
  137. void update_vfd_mod_dec(void)       //shawn add at 910131
  138. {
  139.     //counter--;
  140.     
  141.     if(COMMAND_MODE > 0)
  142.         COMMAND_MODE--;
  143.     printf("n COMMAND_MODE(DEC)=%dnn", COMMAND_MODE);
  144.     
  145. #ifdef VFD2OSD_DBG_TXD                  //nono 2-8-9 14:40
  146.     psprintf(RegionValStr[REGION1], "COMMAND_MODE DEC: %d", COMMAND_MODE);
  147.     PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
  148. #endif
  149.     
  150.     reset_vfd();
  151. }
  152. void update_vfd_inc(void)               //shawn modify at 910131
  153. {
  154.     counter++;
  155. }
  156. void update_vfd_dec(void)               //shawn modify at 910131
  157. {
  158.     counter--;
  159. }
  160. #endif //TEST_VFD
  161. #ifdef SHOW_VOL_ON_VFD //huziqin 2004-4-29.if setting channel volume.
  162. extern  BYTE subvol_time_out;
  163. #endif
  164. #ifdef SUPPORT_VFD//nono 20031124
  165. void update_vfd_data(void)
  166. {
  167. #ifdef VFD_SHOW_LOAD_TOGGLE//nono 2003-10-17 18:23      
  168. static BYTE load_toggle_flag;
  169. #endif//#ifdef VFD_SHOW_LOAD_TOGGLE
  170. #ifdef SHOW_VOL_ON_VFD
  171.     if(subvol_time_out)
  172.         {
  173.         show_amp_vol_on_vfd();
  174.         return;
  175.         }
  176. #endif
  177. #ifdef TEST_VFD
  178.     UINT8   by, bit, i;                     //,j;            //shawn modify at 910131
  179.     
  180.     
  181.     index++;
  182.     if(index % 10)
  183.         return;
  184.     
  185.     
  186.     
  187.     by = counter / 8;
  188.     bit = counter % 8;
  189.     
  190.     #ifdef YADAI_PT6554_PANNEL
  191.         for(i = 0; i < SC_1; i++)
  192.         {
  193.             if((i==5)||(i==11)||(i==17)||(i==23))
  194.             {
  195.                 vfd_mem[i] = 0x00;
  196.             }
  197.             else
  198.             {           
  199.         vfd_mem[i] = 0xff;
  200.             }
  201.         }
  202.     #else
  203.     
  204.         for(i = 0; i < SC_1; i++)               
  205.         vfd_mem[i] = 0xff;  
  206.     
  207.     #endif  
  208.     
  209.     
  210.     vfd_mem[by] = ~(0x01 << bit);
  211.     
  212.     
  213.     //vfd_set_str(STR_OS_CLOSE,"");
  214.     
  215.     printf("BYTE:%d BIT:%dn", by, bit);
  216.     //psprintf(linebuf,"BYTE:%d BIT:%d",by,bit);
  217.     
  218. #ifdef VFD2OSD_DBG_TXD                  //nono 2-8-9 14:40
  219.     psprintf(RegionValStr[REGION1], "BYTE:%d BIT:%d", by, bit);
  220.     PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
  221. #endif
  222.     //ShowOsdMsg(linebuf,0);
  223.     return;
  224. #endif
  225.     
  226. #ifdef BBK_DV961_DVD//zhaoyanhua add to show VFD Message for VGA/INTERLACE/P_SCAN  3-11-27 9:50
  227.     if(tv_output_vfd_time != 0)
  228.     {
  229.         tv_output_vfd_time--; 
  230.         switch(tv_out_id)
  231.         {
  232.             case INTERLACE:
  233.                 vfd_set_str(0,"1-    ");
  234.                 break;
  235.             case PC_VGA:
  236.                 vfd_set_str(0,"2-    ");
  237.                 break;
  238.             case P_SCAN:
  239.                 vfd_set_str(0,"3-    ");
  240.                 break;
  241.         
  242.         }
  243.         
  244.         //turn off ":"(min)":"(sec)
  245.         vfd_reset_dot(VFD_DOT_MINSEC);
  246.         vfd_reset_dot(VFD_DOT_MIN);
  247.         return;
  248.     }
  249. #endif  
  250.     
  251.     
  252.     if(play_state != VCD_STATE_TUNER)
  253.     {
  254.         //===========================================
  255. #ifdef HUAJIA_DVD
  256. #define INTV_TM 20
  257. #else
  258. #define INTV_TM 10
  259. #endif  
  260.         counter++;
  261.         
  262.         
  263.         if(adv_search_time > 0)
  264.         {
  265.             if(counter % (INTV_TM / adv_search_time))
  266.                 return;
  267.         }
  268.         else if(adv_search_time < 0)
  269.         {
  270.             if(counter % (INTV_TM / (-adv_search_time)))
  271.                 return;
  272.         }
  273.         else if(video_slow)
  274.         {
  275.             {
  276.                 UINT8   rate = (UINT8) video_slow;
  277.                 
  278.                 if(counter % (INTV_TM * rate))
  279.                     return;
  280.             }
  281.         }
  282.         else if(play_state != VCD_STATE_CLOSE)
  283.         {
  284.                 if(counter % INTV_TM)
  285.                     return;
  286.         }
  287.         else if(counter % (INTV_TM / 2))
  288.             return;
  289.         counter = 0;
  290.     }
  291.     
  292.     /********************************************************/
  293.     // try the function by chichang 2001 6/5
  294.     /********************************************************/
  295.     /*
  296.     vfd_mem[36]=0xff;
  297.     vfd_mem[37]=0xff;
  298.     
  299.       vfd_set_dot(VFD_DOT_PLAY);
  300.       vfd_set_dot(vfd_disc[index]);
  301.       //vfd_set_str(0,"WELCOME");
  302.       
  303.         
  304.           if(index>=11)
  305.           {
  306.           index=0;
  307.           }else
  308.           index++;
  309.           vfd_reset_dot(vfd_disc[index]);
  310.     */
  311.     //===========================================================//
  312.     // process the vfd display of volume and tone   2002-07-03 freyman
  313.     /************************************************************/
  314. #ifdef VFD_VOLUME_DISPLAY
  315.     //  if(vfd_mode_state != DVD_NORMAL_MODE)
  316.     if(timeout_vfd != 0)
  317.         return;
  318. #endif
  319.     /************************************************************/
  320.     // start the vfd program
  321.     /************************************************************/
  322.     #ifdef VOL_LED
  323.     write_vfd_led(0xff);
  324.     #endif
  325.     #ifdef GBM_USE_VFD_CONTROL_LED      //GERRY,2004/2/12 04:14