ampvol.c
上传用户:caisangzi8
上传日期:2013-10-25
资源大小:15756k
文件大小:5k
源码类别:

DVD

开发平台:

C/C++

  1. /*
  2. ** freyman delete this file from Makefile 2004-3-23 15:07
  3. */
  4. #include "user_init.h"
  5. #ifdef SVA_SAMPLE
  6. #include "global.h"
  7. #include "osd.h"
  8. #include "func.h"
  9. #include "ircmd.h"
  10. #include "memmap.h"
  11. #include "dsp3_if.h"
  12. #include "cchar.h"
  13. #define LFront      0
  14. #define RFront      1
  15. #define LSurround   2
  16. #define RSurround   3
  17. #define CCenter     4
  18. #define SWoofer     5
  19. #define TOPLEVEL    16
  20. BYTE amp_enter_flag = 0;
  21. typedef void (*AMPFUNC) ();
  22. extern void osd_init_ampvol(void);
  23. extern void strcat1(char *,char *);
  24. extern void set_lfront(void);
  25. extern void set_rfront(void);
  26. extern void set_lrear(void);
  27. extern void set_rrear(void);
  28. extern void set_center(void);
  29. extern void set_woofer(void);
  30. void ShowAmpvolPage(void);
  31. void ampvol_show_level(int id,INT8 level,BYTE total_level) ;
  32. /*
  33. ** WARNING!!!!
  34. ** If you want to modify following two lists,
  35. ** You must be sure that you have known the meaning of them and how they
  36. ** be used in functions,
  37. ** OR,
  38. ** DON'T MOVE! HANDS BEHIND YOUR HEAR!  
  39. ** You must make the three list in the same sequence 
  40. ** you can't declar lev_list to const type ,for the levels could be modified.
  41. */
  42. BYTE * lev_list[6] = 
  43. {
  44.     &lfront_level,&rfront_level,
  45.     &lrear_level,&rrear_level,
  46.     &center_level,&woofer_level, 
  47. };
  48. const AMPFUNC amp_func_table[6] = 
  49. {
  50.     set_lfront,
  51.     set_rfront,
  52.     set_lrear,
  53.     set_rrear,
  54.     set_center,
  55.     set_woofer,
  56. };
  57. const UINT16 id_list[6] = 
  58. {
  59.     STR_OS_LF,
  60.     STR_OS_RF,
  61.     STR_OS_LR,
  62.     STR_OS_RR,
  63.     STR_OS_CC,
  64.     STR_OS_SW
  65. };
  66. void ampvol_func(void)
  67. {
  68.     full_scrn=AMPVOL;
  69.     
  70.     if(amp_enter_flag==0)
  71.     {
  72.         set_volume(80);
  73.         amp_enter_flag++;
  74.     }
  75.     else if(amp_enter_flag==1)
  76.     {
  77.         ampvol_init();
  78.         amp_enter_flag++;
  79.     }
  80.     else if(amp_enter_flag==2)
  81.     {
  82.         ampvol_exit();
  83.         amp_enter_flag = 0;
  84.     }
  85. }
  86. /*
  87. ** Function ampvol_init: 
  88. ** 1.set index_y to 0 means active line at present;
  89. ** 2.init osd for ampvol that is different to others, coordinate and quantity of regions
  90. ** 3.show the page on screen
  91. */
  92. void ampvol_init(void)
  93. {
  94. index_y = 0;
  95. //    full_scrn=AMPVOL;
  96. osd_init_ampvol();
  97.     ShowAmpvolPage();
  98. }
  99. /*
  100. ** show six lines that we need, the sequence is 
  101. ** according to the list of level
  102. */
  103. void ShowAmpvolPage(void)
  104. {
  105. BYTE temp;
  106. for(temp=0;temp<6;temp++)
  107. ampvol_show_level(temp,*lev_list[temp],TOPLEVEL);
  108. }
  109. /*
  110. ** func_left to responce to the iremote of left button 
  111. ** both display and set pt2322 register
  112. */
  113. void ampvol_func_left(void)
  114. {   
  115.     
  116.     if(amp_enter_flag==1)
  117.     {
  118.         set_volume(0);
  119.         return;
  120.     }
  121.        
  122.     if((*lev_list[index_y])==0)
  123.         return;
  124.     
  125.     (*lev_list[index_y])--;
  126.     ampvol_show_level(index_y,*lev_list[index_y],TOPLEVEL);
  127.     amp_func_table[index_y]();
  128. }
  129. /*
  130. ** func_right to responce to the iremote of right button 
  131. ** both display and set pt2322 register
  132. */
  133. void ampvol_func_right(void)
  134. {
  135.     if(amp_enter_flag==1)
  136.     {
  137.         set_volume(1);
  138.         return;
  139.     }
  140.     if((*lev_list[index_y])==15)
  141.         return;
  142.     
  143.     (*lev_list[index_y])++;
  144.     ampvol_show_level(index_y,*lev_list[index_y],TOPLEVEL);
  145.     amp_func_table[index_y]();
  146. }
  147. /*
  148. ** func_up to responce to the iremote of up button 
  149. ** display the line active present and renew the line before
  150. */
  151. void ampvol_func_up(void)
  152. {
  153.     if(index_y==0)
  154.         return;
  155.     index_y--;
  156.     ampvol_show_level(index_y+1,*lev_list[index_y+1],TOPLEVEL);
  157.     ampvol_show_level(index_y,*lev_list[index_y],TOPLEVEL);
  158. }
  159. /*
  160. ** func_down to responce to the iremote of down button 
  161. ** display the line active present and renew the line before
  162. */
  163. void ampvol_func_down(void)
  164. {
  165.     if(index_y==5)
  166.         return;
  167.     index_y++;
  168.     ampvol_show_level(index_y-1,*lev_list[index_y-1],TOPLEVEL);
  169.     ampvol_show_level(index_y,*lev_list[index_y],TOPLEVEL);    
  170. }
  171. /*
  172. ** exit function :
  173. ** 1.reset index_y to 0
  174. ** 2.init osd to ready for other application
  175. ** 
  176. */
  177. void ampvol_exit(void)
  178. {
  179.     index_y = 0;
  180.     
  181. osd_disable();
  182. full_scrn=0;  
  183. amp_enter_flag = 0;
  184. osd_init();
  185. }
  186. /*
  187. **
  188. */
  189. void ampvol_show_level(int id,INT8 level,BYTE total_level) 
  190.     BYTE i;
  191.     int pos;
  192.     BYTE buf[5];
  193.     linebuf[0] = ' ';
  194.     linebuf[1] = '[';
  195.     pos = 2;
  196.     for(i=pos;i<level+pos;i++) 
  197. linebuf[i] = N_longbar; //long bar         
  198.     for(i=level+pos;i<total_level-1+pos;i++) 
  199.         linebuf[i] = N_shortbar; //short bar          
  200.     linebuf[total_level-1+pos] = 0;
  201.     psprintf(RegionValStr[id+1],"] %02d",level);
  202.     strcat1(linebuf,RegionValStr[id+1]);
  203.     if(index_y==id)
  204.     {
  205.         strcpy(buf,_OsdMessegeFont1[osd_font_mode][STR_OS_DIR7]);
  206.         strcat1(linebuf,buf);
  207.     }
  208.     strcpy(RegionValStr[id+1], linebuf);
  209.     PrintOsdMsg(id_list[id], (id+1),0,1);
  210. #endif //SVA_SAMPLE