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

DVD

开发平台:

C/C++

  1. #include "user_init.h"
  2. #include "config.h"
  3. #include "global.h"
  4. #include "vfdfunc.h"
  5. //#include "vfd_7seg.h"
  6. #include "stdlib.h"
  7. #include "user_if.h"
  8. #include "audif.h"
  9. extern UINT16 Is_MP3_STATE(void);
  10. extern UINT32 coding_mode_now;
  11. #define OFFSET 0//20 jim
  12. #define MAX_POS 7
  13. #define VFD_DISPLAY_SIZE 12//12 jim=10
  14. #define VFD_DISPLAY_MODE VFDC_SET_DISP_6D16S //jim==1 or 2
  15. #define DISC_SIZE 13
  16. //const UINT8 vfd_disc[DISC_SIZE] = {94,93,92,91,90,89,88,87,86,85,84,83,82}; //BYTE, BIT (11,6),(11,5).....(10,2)
  17. const UINT8 vfd_disc[DISC_SIZE] = {77,76,75,74,73,72,71,70,69,68,67,66,65}; //jim
  18. #define TOTAL_SEG 7
  19. //const UINT8 vfd_7seg_p[TOTAL_SEG]={8,7,6,5,4,3,2};//7 seg position BYTE
  20. const UINT8 vfd_7seg_p[TOTAL_SEG]={7,4,5,2,3,0,1};//jim
  21. const UINT16 vfd_char[26]=
  22. {
  23. VFD_7SEG_A,
  24. VFD_7SEG_B,
  25. VFD_7SEG_C,
  26. VFD_7SEG_D,
  27. VFD_7SEG_E,
  28. VFD_7SEG_F,
  29. VFD_7SEG_G,
  30. VFD_7SEG_H,
  31. VFD_7SEG_I,
  32. VFD_7SEG_J,
  33. VFD_7SEG_K,
  34. VFD_7SEG_L,
  35. VFD_7SEG_M,
  36. VFD_7SEG_N,
  37. VFD_7SEG_O,
  38. VFD_7SEG_P,
  39. VFD_7SEG_P,//q
  40. VFD_7SEG_R,
  41. VFD_7SEG_S,
  42. VFD_7SEG_T,
  43. VFD_7SEG_U,
  44. VFD_7SEG_U,//v
  45. VFD_7SEG_W,
  46. VFD_7SEG_X,
  47. VFD_7SEG_Y,
  48. VFD_7SEG_Z //z
  49. };
  50. const  UINT16  vfd_digit[] =
  51. {
  52. VFD_7SEG_0,
  53. VFD_7SEG_1,
  54. VFD_7SEG_2,
  55. VFD_7SEG_3,
  56. VFD_7SEG_4,
  57. VFD_7SEG_5,
  58. VFD_7SEG_6,
  59. VFD_7SEG_7,
  60. VFD_7SEG_8,
  61. VFD_7SEG_9
  62. };
  63. /****************************************************************************************/
  64. /*  cpy_src_len: bit 8 is 1 means that bit 8 means that only show partial string between 0 and cpy_src_len */
  65. /*         bit 8 is 0: normal show string, that is copy total string */
  66. /*         bit0~bit7 mean that copied source length */
  67. /*  start_p: start position of VFD for show string(position:0~9) */
  68. /****************************************************************************************/
  69. void  vfd_set_str(UINT8 id, char *s)
  70. {
  71. BYTE i,j;
  72. UINT16 c=0;
  73. BYTE    var_data;
  74. if(id) {//english id
  75. //s=(char *)_OsdMessegeFont1[id][0];
  76. s=(char *)&(_OsdMessegeFont1[0][id][0]);
  77. }
  78. i=strlen(s);
  79. //printf("%s",s);
  80. //linebuf[20]=0;
  81. for(j=TOTAL_SEG;j>0;j--)
  82. {
  83. if(i>0)
  84. {
  85. i--;
  86. if( (s[i]>='a')&&(s[i]<='z') )
  87. c=vfd_char[s[i]-0x20-'A'];
  88. else if( (s[i]>='A')&&(s[i]<='Z') )
  89. c=vfd_char[s[i]-'A'];
  90. else if( (s[i]>='0')&&(s[i]<='9') )
  91. c=vfd_digit[s[i]-'0'];
  92. else
  93. {
  94. if(s[i]==0x20)
  95. {
  96. c=0;
  97. }
  98. }
  99. //linebuf[2*j+OFFSET]=c>>8;
  100. //linebuf[2*j-1+OFFSET]=c&0x00ff;
  101. linebuf[j+OFFSET]=c&0xff;
  102. }else
  103. {
  104. //linebuf[2*j+OFFSET]=0x00;
  105. //linebuf[2*j-1+OFFSET]=0x00;
  106. linebuf[j+OFFSET]=0x00;
  107.         }
  108. }/*for loop*/
  109. for(i=0,j=1;i<TOTAL_SEG;i++,j++)
  110. {
  111.    var_data=vfd_7seg_p[i];                             //modified by jim 2003.0524
  112.            if(var_data==0)// BYTE 0
  113.            {
  114.               vfd_mem[var_data] = (vfd_mem[var_data]&0x03)|    //keep bit 0,1 no change
  115.                ((linebuf[j+OFFSET]<<2)&0xfc);        //bit 2~7 updated
  116.               vfd_mem[var_data+1]= (vfd_mem[var_data+1]&0xfe)| //keep bit 1~7 no change
  117.                ((linebuf[j+OFFSET]>>6)&0x01);         //bit 1 updated
  118.            }
  119.            else
  120.            {
  121.       vfd_mem[var_data] = (vfd_mem[var_data]&0x01)|    //keep bit 0 no change
  122.                  ((linebuf[j+OFFSET]<<1)&0xfe);        //bit 1~7 updated
  123.    }
  124.      }
  125. }
  126. UINT16 vfd_set_disc_run(UINT16 index)
  127. {
  128.     vfd_set_dot(vfd_disc[index]);                 //modify by shwan 0412
  129. if(adv_search_time>=0)
  130.     {
  131.         //vfd_set_dot(vfd_disc[index]);
  132. if(index>=(DISC_SIZE-1))
  133. {
  134. index=0;
  135. }else
  136. index++;
  137. //vfd_reset_dot(vfd_disc[index]);
  138.     }else
  139.     {
  140.         //vfd_set_dot(vfd_disc[index]);
  141. if(index==0)
  142. {
  143. index=DISC_SIZE-1;
  144. }else
  145. index--;
  146. //vfd_reset_dot(vfd_disc[index]);
  147.     }
  148. vfd_reset_dot(vfd_disc[index]);
  149.     return index;
  150. }
  151. void vfd_set_cd_type(void)
  152. {
  153. switch(cd_type_loaded)
  154. {
  155. case CDDVD:
  156. vfd_set_dot(VFD_DOT_DVD);
  157. if(get_angle_Ns()>1)
  158. vfd_set_dot(VFD_DOT_ANGLE);
  159. else
  160. vfd_reset_dot(VFD_DOT_ANGLE);
  161. break;
  162. case CDROM:
  163. if( (Is_MP3_STATE())&&(Mp3ReadFinish) )//nono 2-5-10 13:50
  164. vfd_set_dot(VFD_DOT_MP3);
  165. else
  166. vfd_reset_dot(VFD_DOT_MP3);
  167. break;
  168. case CDDA:
  169. vfd_set_dot(VFD_DOT_CD);
  170. break;
  171. case CDUNKNOWN:
  172. break;
  173. case CDSVCD:
  174. vfd_set_dot(VFD_DOT_S);
  175. vfd_set_dot(VFD_DOT_V);
  176. vfd_set_dot(VFD_DOT_CD);
  177. break;
  178. default://vcd
  179. vfd_set_dot(VFD_DOT_V);
  180. vfd_set_dot(VFD_DOT_CD);
  181. break;
  182. }
  183. }
  184. void vfd_set_showtime(void)
  185. {
  186. BYTE track_num;
  187. if(cd_type_loaded==CDDVD)
  188. if(play_state==VCD_STATE_STOP)
  189. {
  190. track_num=get_tt_info(DISP_TT_Ns);//DISP_CH);
  191. }
  192. else
  193. {
  194. track_num=get_tt_info(DISP_CH);//nono 1-12-12 21:15
  195. }
  196. else
  197. track_num=disp_trk_now;
  198. //if(show_time_hh)
  199. //{
  200. //psprintf(linebuf,"%02d%01d%02d%02d",track_num,show_time_hh,show_time_mm,show_time_ss);
  201. //      vfd_set_str(0,linebuf);                                    // modify by shawn 0412
  202. //vfd_set_dot(VFD_DOT_MIN);
  203. //}
  204. //else
  205. //{
  206. //nono modify it for when show_time_hh==1,VFD_DOT_MIN can't be set dot.2-5-26 0:12
  207. psprintf(linebuf,"%02d%01d%02d%02d",track_num,show_time_hh,show_time_mm,show_time_ss);
  208. //psprintf(linebuf,"%02d %02d%02d",track_num,show_time_mm,show_time_ss);
  209. //       vfd_set_str(0,linebuf);
  210. //}
  211. vfd_set_str(0,linebuf);
  212. vfd_set_dot(VFD_DOT_MINSEC);
  213. vfd_set_dot(VFD_DOT_MIN);
  214. //*****************************************************************
  215. #if 0
  216. if(cd_type_loaded!=CDROM)  //jjding 2000/11/17
  217. {
  218. vfd_set_dot(VFD_DOT_CHAPTER);
  219. vfd_set_dot(VFD_DOT_TITLE);
  220. vfd_set_dot(VFD_DOT_VCD);
  221. vfd_set_dot(VFD_DOT_MINSEC);
  222. vfd_set_dot(VFD_DOT_H_M);
  223. //vfd_set_tt(cd_total_trk());
  224. //vfd_set_pp(disp_trk_now);       //VFD set min
  225. }else if(play_state!=VCD_STATE_STOP)
  226. {
  227. /*if(play_state==VCD_STATE_MP3_DIRLIST)
  228. {
  229.       vfd_set_pp(0);
  230. vfd_set_mm(0);
  231. vfd_set_ss(0);
  232. }else*/
  233. {
  234. if(mp3_user_select>99)
  235. {
  236. vfd_set_tt(mp3_user_select/100);
  237. vfd_set_pp(mp3_user_select%100);
  238. }
  239. else
  240. {
  241. vfd_set_tt(0);
  242. vfd_set_pp(mp3_user_select);
  243. }
  244. }
  245. }else
  246. {
  247. vfd_set_tt(mp3_total_dir);
  248. vfd_reset_dot(VFD_DOT_MINSEC);
  249. vfd_set_mm(iso9660_file_cnt/100);
  250. vfd_set_ss(iso9660_file_cnt%100);
  251. }
  252. #endif
  253. }
  254. void vfd_set_audio(void)
  255. {
  256. vfd_reset_dot(VFD_DOT_DTS);
  257. vfd_reset_dot(VFD_DOT_DOBLY);
  258. if( ( coding_mode_now&(AUDIF_CODING_MODE_DTS|AUDIF_CODING_MODE_DTSCD) )||(cd_subtype==CD_DTS) )//nono 2-7-25 16:13
  259. {
  260. vfd_set_dot(VFD_DOT_DTS);
  261. }
  262. else if(coding_mode_now==AUDIF_CODING_MODE_AC3)
  263. {
  264. vfd_set_dot(VFD_DOT_DOBLY);
  265. }
  266. /*   switch(cd_type_loaded)
  267. {
  268. case CDDVD:
  269.   //vfd_set_dot(VFD_DOT_DOBLY);
  270.   if(*get_audio_mode()==68)
  271.   {
  272.   vfd_set_dot(VFD_DOT_DTS);
  273.   vfd_reset_dot(VFD_DOT_DOBLY);
  274.   }
  275.   else
  276.   {
  277.   vfd_set_dot(VFD_DOT_DOBLY);
  278.   vfd_reset_dot(VFD_DOT_DTS);
  279.   }
  280. break;
  281.   default:
  282.   break;
  283.   }
  284. */
  285. #if 0
  286. #ifdef VFD_DOT_MIC1
  287. switch(audio_channel)
  288. {
  289. case CH_LR:
  290. case CH_RR:
  291. case CH_LL:
  292. //  vfd_reset_dot(VFD_DOT_MIC1);
  293.         //  vfd_reset_dot(VFD_DOT_MIC2);
  294. break;
  295. case CH_AUTO_L:
  296. case CH_AUTO_R:
  297. vfd_set_dot(VFD_DOT_MIC1);
  298. vfd_set_dot(VFD_DOT_MIC2);
  299. break;
  300. }
  301. #endif
  302. #endif
  303. #if 0
  304. #ifdef VFD_DOT_1L
  305. switch(audio_effect)
  306. {
  307. case SE_STEREO:
  308. vfd_reset_dot(VFD_DOT_1L);
  309. vfd_reset_dot(VFD_DOT_2R);
  310. break;
  311. case SE_HALL:
  312. case SE_LIVE:
  313. case SE_THEATER:
  314. case SE_ROOM:
  315. vfd_set_dot(VFD_DOT_1L);
  316. vfd_set_dot(VFD_DOT_2R);
  317. break;
  318. }
  319. #endif
  320. #endif
  321. }
  322. void vfd_set_playback(void)
  323. {
  324. if(play_state==VCD_STATE_PAUSE)
  325. {
  326. //erase_vfd_mem();
  327. vfd_set_dot(VFD_DOT_PAUSE);
  328. //vfd_set_str(STR_OS_PAUSE,"");
  329. }else
  330. {
  331. vfd_reset_dot(VFD_DOT_PAUSE);
  332. }
  333. if(IsPBCOn())
  334. {
  335. vfd_set_dot(VFD_DOT_PBC);
  336. }
  337. else
  338.         vfd_reset_dot(VFD_DOT_PBC);
  339. vfd_reset_dot(VFD_DOT_REPEAT);
  340. vfd_reset_dot(VFD_DOT_REPALL);
  341.     if(rep_mode==REPEAT_TRACK||rep_ab_mode==REPEAT_FIND_A||rep_ab_mode==REPEAT_FIND_B)
  342. {
  343. // vfd_reset_dot(VFD_DOT_REPALL);
  344. vfd_set_dot(VFD_DOT_REPEAT);
  345. }else if(rep_mode==REPEAT_DISC)
  346. {
  347. vfd_set_dot(VFD_DOT_REPEAT);
  348.         vfd_set_dot(VFD_DOT_REPALL);
  349. }
  350. else if(rep_mode==REPEAT_DIRECTORY)
  351. {
  352. //  vfd_reset_dot(VFD_DOT_REPEAT);
  353. vfd_set_dot(VFD_DOT_REPALL);
  354. }/*else
  355.  {
  356.    vfd_reset_dot(VFD_DOT_REPEAT);
  357.    vfd_reset_dot(VFD_DOT_REPALL);
  358. }*/
  359. /*if(rep_mode==REPEAT_DISC)
  360. {
  361. vfd_set_dot(VFD_DOT_REPALL);
  362. }else if(rep_mode || rep_ab_mode)
  363. vfd_set_dot(VFD_DOT_REPEAT);
  364. else
  365. {
  366. vfd_reset_dot(VFD_DOT_REPEAT);
  367. vfd_reset_dot(VFD_DOT_REPALL);
  368. }*/
  369. #if 0
  370. if(rep_ab_mode==REPEAT_FIND_A)
  371. {
  372. vfd_set_dot(VFD_DOT_REPAB);
  373. }else if(rep_ab_mode==REPEAT_FIND_B)
  374. {
  375. vfd_set_dot(VFD_DOT_REPAB);
  376. }else
  377. {
  378. vfd_reset_dot(VFD_DOT_REPAB);
  379. }
  380. #endif
  381. #if 0
  382. if(prog_state)
  383. {
  384. if(play_state==VCD_STATE_STOP)
  385. vfd_set_dot(VFD_DOT_PGM);
  386. }else
  387. {
  388. //vfd_set_pgm(0);
  389. vfd_reset_dot(VFD_DOT_PGM);
  390. }
  391. #endif
  392. #ifdef VFD_DOT_PAL
  393. if(tv_format==MODE_PAL)
  394. {
  395. vfd_set_dot(VFD_DOT_PAL);
  396. vfd_reset_dot(VFD_DOT_NTSC);
  397. }
  398. else
  399. {
  400. vfd_set_dot(VFD_DOT_NTSC);
  401. vfd_reset_dot(VFD_DOT_PAL);
  402. }
  403. #endif
  404. vfd_set_cd_type();
  405. vfd_set_audio();
  406. //printf("V=%xn",vfd_mem[3]);
  407. vfd_set_showtime();
  408. }
  409. UINT16 vfd_set_power_state(UINT16 index)
  410. {
  411. // char light_str[]="CLOSE";                        //modify by shawn 0412
  412.     erase_vfd_mem();
  413.     //vfd_set_str(STR_OS_CLOSE,"");
  414. return index;
  415. }
  416. UINT16 vfd_set_idle_state(UINT16 index)
  417. {
  418. //char light_str[]="CLOSE";
  419.     erase_vfd_mem();
  420.     vfd_set_str(STR_OS_CLOSE,"");
  421. return index;
  422. }
  423. UINT16 vfd_set_no_disc_state(UINT16 index)
  424. {
  425. char light_str[]="Errdisc";
  426.     erase_vfd_mem();
  427.     if (bDiscType == CD_OKO)
  428.     {
  429. vfd_set_str(0,light_str);
  430.     }else
  431.         vfd_set_str(STR_OS_NODISC,"");
  432. return index;
  433. }
  434. UINT16 vfd_set_close_state(UINT16 index)
  435. {
  436. //char light_str[]="CLOSE";
  437.     erase_vfd_mem();
  438.     if(is_test_unit()==TRUE||system_state==SYSTEM_READ_TITLE||system_state==SYSTEM_NODISC)
  439.         //vfd_set_str(STR_OS_READ,"");
  440.         vfd_set_str(0,"LOAD");
  441. else
  442.         vfd_set_str(STR_OS_CLOSE,"");
  443.     return index;
  444. }
  445. UINT16 vfd_set_toc_state(UINT16 index)
  446. {
  447. //char light_str[]="READ";
  448.     erase_vfd_mem();
  449.     //vfd_set_str(STR_OS_READ,"");
  450.     vfd_set_str(0,"LOAD");
  451.     return index;
  452. }
  453. UINT16 vfd_set_open_state(UINT16 index)
  454. {
  455. //char light_str[]="OPEN";
  456.     erase_vfd_mem();
  457.     vfd_set_str(STR_OS_OPEN,"");
  458.     return index;
  459. }
  460. /*
  461. UINT16 vfd_set_game_state(UINT16 index)
  462. {
  463. vfd_reset_dot(VFD_DOT_PLAY);
  464.   return index;
  465.   }
  466. */
  467. UINT16 vfd_set_pause_state(UINT16 index)
  468. {
  469. vfd_reset_dot(VFD_DOT_PLAY);
  470. return index;
  471. }
  472. UINT16 vfd_set_mp3_state(UINT16 index)
  473. {
  474. vfd_set_dot(VFD_DOT_PLAY);
  475. return index;
  476. }
  477. UINT16 vfd_set_stop_state(UINT16 index)
  478. {
  479.     int i;
  480.     vfd_reset_dot(VFD_DOT_PLAY);
  481.     for(i=0;i<DISC_SIZE;i++)
  482.         vfd_set_dot(vfd_disc[i]);  //nono 1-12-12 20:55
  483.     return index;
  484. }
  485. UINT16 vfd_set_normal_state(UINT16 index)
  486. {
  487.     vfd_set_dot(VFD_DOT_PLAY);
  488.     index=vfd_set_disc_run(index);
  489.     return index;
  490. }