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

DVD

开发平台:

C/C++

  1. //liweihua, 2004-12-24 15:54
  2. #ifdef PMP_KEYBOARD  //xyy 2005-1-10
  3. //PMP I/O DEFINE  //xyy 2005-1-13
  4. #define PMP_IO1 16
  5. #define PMP_IO2 55
  6. #define PMP_IO3 54
  7. #define PMP_IO4 4
  8. #define PMP_POWER_OFF_SELECT 8
  9. #define PMP_CUT_POWER        3
  10. #define PMP_HDD_POWER_CONTROL 30
  11. #define PMP_USB_IC_POWER     7
  12. #define PMP_CUT_PANEL_POWER  17
  13. #define PMP_KEY_PRESS_POLLING (regs0->gpio_in[PMP_IO4/16]&(1<<(PMP_IO4%16)))
  14. #define IO1_STATUS (regs0->gpio_in[PMP_IO1/16]&(1<<(PMP_IO1%16)))
  15. #define IO2_STATUS (regs0->gpio_in[PMP_IO2/16]&(1<<(PMP_IO2%16)))
  16. #define IO3_STATUS (regs0->gpio_in[PMP_IO3/16]&(1<<(PMP_IO3%16)))
  17. #define GET_PMP_POWER_OFF_SELECT (regs0->gpio_in[PMP_POWER_OFF_SELECT/16]&(1<<(PMP_POWER_OFF_SELECT%16)))
  18. void polling_key_press(void)
  19. {
  20. int i,temp=5;
  21. regs0->sft_cfg1 &= ~(0x1 << 3);
  22. regs0->sft_cfg1 &= ~(0x1 << 7);
  23. regs0->sft_cfg8 &= ~(0x1 << 9);
  24. GPIO_M_SET(PMP_IO1,1);                                                                                                                                                                            
  25. GPIO_E_SET(PMP_IO1,1);
  26. regs0->sft_cfg3 &= ~(0x1 << 3);
  27. regs0->sft_cfg8 &= ~(0x3 << 8);
  28. GPIO_M_SET(PMP_IO2,1);
  29. GPIO_E_SET(PMP_IO2,1);
  30. for(i=0;i<temp;i++)
  31. {
  32. GPIO_E_SET(PMP_IO1,1);
  33. GPIO_E_SET(PMP_IO2,0);
  34. GPIO_E_SET(PMP_IO3,0);
  35. GPIO_O_SET(PMP_IO1,1);
  36. }
  37. if(IO2_STATUS)
  38. {
  39.     #ifdef IRCMD_DBG
  40. psprintf(RegionValStr[REGION1],"SW6");
  41.   PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
  42.   #endif
  43.   pmpkey_down();
  44.  }
  45. else if(IO3_STATUS)
  46. {
  47.     #ifdef IRCMD_DBG
  48. psprintf(RegionValStr[REGION1],"SW10");
  49.   PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
  50.   #endif
  51. }
  52. for(i=0;i<temp;i++)
  53. {
  54. GPIO_E_SET(PMP_IO1,0);
  55. GPIO_E_SET(PMP_IO2,1);
  56. GPIO_E_SET(PMP_IO3,0);
  57. GPIO_O_SET(PMP_IO2,1);
  58. }
  59. if(IO1_STATUS)
  60. {
  61.     #ifdef IRCMD_DBG
  62. psprintf(RegionValStr[REGION1],"SW2");
  63.   PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
  64.   #endif
  65.   pmpkey_up();
  66.  }
  67. else if(IO3_STATUS)
  68. {
  69.     #ifdef IRCMD_DBG
  70. psprintf(RegionValStr[REGION1],"SW9");
  71.   PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
  72.   #endif
  73.   pmpkey_select();
  74. }
  75. for(i=0;i<temp;i++)
  76. {
  77. GPIO_E_SET(PMP_IO1,0);
  78. GPIO_E_SET(PMP_IO2,0);
  79. GPIO_E_SET(PMP_IO3,1);
  80. GPIO_O_SET(PMP_IO3,1);
  81. }
  82. if(IO1_STATUS)
  83. {
  84.     #ifdef IRCMD_DBG
  85. psprintf(RegionValStr[REGION1],"SW1");
  86.   PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
  87.   #endif
  88.   pmpkey_left();
  89.  }
  90. else if(IO2_STATUS)
  91. {
  92.     #ifdef IRCMD_DBG
  93. psprintf(RegionValStr[REGION1],"SW4");
  94.   PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
  95.   #endif
  96.   pmpkey_right();
  97. }
  98. }
  99. void polling_pmpkey(void)
  100. {
  101. //static int iTmCount;
  102. regs0->sft_cfg1 &= ~(0x1 << 3);
  103. regs0->sft_cfg1 &= ~(0x1 << 7);
  104. regs0->sft_cfg8 &= ~(0x1 << 9);
  105. GPIO_M_SET(PMP_IO1,1);                                                                                                                                                                            
  106. GPIO_E_SET(PMP_IO1,1);
  107. // GPIO_O_SET(PMP_IO1,1);
  108. regs0->sft_cfg3 &= ~(0x1 << 3);
  109. regs0->sft_cfg8 &= ~(0x3 << 8);
  110. GPIO_M_SET(PMP_IO2,1);
  111. GPIO_E_SET(PMP_IO2,1);
  112. // GPIO_O_SET(PMP_IO2,1);   
  113. if(!PMP_KEY_PRESS_POLLING)
  114. polling_key_press();
  115. if(GET_PMP_POWER_OFF_SELECT)
  116. {
  117. printf("-------------  hello ----------------n");
  118. //iTmCount++;
  119. //if(iTmCount==1)
  120. pmpkey_return();
  121. }
  122. /*else
  123. iTmCount=0;
  124. if(iTmCount > 5)
  125. {
  126. printf("==========   hello hello hello ===========n");
  127. GPIO_E_SET(PMP_POWER_OFF_SELECT,1);
  128. GPIO_O_SET(PMP_POWER_OFF_SELECT,0);
  129. delay_1ms(1000);
  130. GPIO_E_SET(PMP_POWER_OFF_SELECT,0);
  131. }*/
  132.  
  133. }
  134. void Set_PMP_Key(void)
  135. {
  136.     regs0->sft_cfg2 &= ~(0x3<<10);
  137. regs0->sft_cfg4 &= ~(0x1<<1);
  138. regs0->sft_cfg8 &= ~(0x3<<8);
  139. GPIO_M_SET(PMP_IO4,1);
  140. GPIO_E_SET(PMP_IO4,0);
  141.     
  142. regs0->sft_cfg3 &= ~(0x1 << 2);
  143. regs0->sft_cfg8 &= ~(0x3 << 8);
  144. GPIO_M_SET(PMP_IO3,1);
  145. GPIO_E_SET(PMP_IO3,1);
  146. GPIO_O_SET(PMP_IO3,1);
  147. regs0->sft_cfg1 &= ~(0x1 << 3);
  148. regs0->sft_cfg1 &= ~(0x1 << 7);
  149. regs0->sft_cfg8 &= ~(0x1 << 9);
  150. GPIO_M_SET(PMP_IO1,1);                                                                                                                                                                            
  151. GPIO_E_SET(PMP_IO1,1);
  152. GPIO_O_SET(PMP_IO1,1);
  153. regs0->sft_cfg3 &= ~(0x1 << 3);
  154. regs0->sft_cfg8 &= ~(0x3 << 8);
  155. GPIO_M_SET(PMP_IO2,1);
  156. GPIO_E_SET(PMP_IO2,1);
  157. GPIO_O_SET(PMP_IO2,1);   
  158. regs0->sft_cfg2 &= ~(0x1 << 10);
  159. regs0->sft_cfg4 &= ~(0x1 << 6);
  160. regs0->sft_cfg8 &= ~(0x1 << 9);
  161. GPIO_M_SET(PMP_POWER_OFF_SELECT,1);                                                                                                                                                                            
  162. GPIO_E_SET(PMP_POWER_OFF_SELECT,0);
  163. GPIO_O_SET(PMP_POWER_OFF_SELECT,0);
  164. regs0->sft_cfg2 &= ~(0x1 << 10);
  165. regs0->sft_cfg4 &= ~(0x1 << 3);
  166. regs0->sft_cfg8 &= ~(0x3 << 8);
  167. GPIO_M_SET(PMP_CUT_POWER,1);                                                                                                                                                                            
  168. GPIO_E_SET(PMP_CUT_POWER,1);
  169. GPIO_O_SET(PMP_CUT_POWER,0);
  170. regs0->sft_cfg2 &= ~(0x3 << 4);
  171. regs0->sft_cfg2 &= ~(0x1 << 10);
  172. regs0->sft_cfg1 &= ~(0x2 << 9);
  173. regs0->sft_cfg0 &= ~(0x1 << 12);
  174. regs0->sft_cfg8 &= ~(0x1f << 6);
  175. regs0->sft_cfg7 &= ~(0x0 << 1);
  176. regs0->sft_cfg2 &= ~(0xa << 2);
  177. regs0->sft_cfg7 &= ~(0x3 << 6);
  178. regs0->sft_cfg8 &= ~(0x1 << 2);
  179. regs0->sft_cfg8 &= ~(0x1 << 9);
  180. regs0->sft_cfg7 &= ~(0x3 << 14);
  181. regs0->sft_cfg9 &= ~(0x2 << 13);
  182. regs0->sft_cfg6 &= ~(0x1 << 4);
  183. GPIO_M_SET(PMP_USB_IC_POWER,1);                                                                                                                                                                            
  184. GPIO_E_SET(PMP_USB_IC_POWER,1);
  185. GPIO_O_SET(PMP_USB_IC_POWER,0);
  186. regs0->sft_cfg1 &= ~(0x1 << 2);
  187. regs0->sft_cfg8 &= ~(0x1 << 9);
  188. GPIO_M_SET(PMP_CUT_PANEL_POWER,1);                                                                                                                                                                            
  189. GPIO_E_SET(PMP_CUT_PANEL_POWER,1);
  190. GPIO_O_SET(PMP_CUT_PANEL_POWER,0);
  191. regs0->sft_cfg2 &= ~(0x3<<10);
  192. GPIO_M_SET(PMP_IO4,1);
  193. GPIO_E_SET(PMP_IO4,0);
  194.     
  195. regs0->sft_cfg3 &= ~(0x1 << 2);
  196. GPIO_M_SET(PMP_IO3,1);
  197. GPIO_E_SET(PMP_IO3,1);
  198. GPIO_O_SET(PMP_IO3,1);
  199. regs0->sft_cfg2 &= ~(0x1 << 2);
  200. regs0->sft_cfg3 &= ~(0x01 << 12);
  201. regs0->sft_cfg4 &= ~(0x3 << 13);
  202. GPIO_M_SET(PMP_IO1,1);                                                                                                                                                                            
  203. GPIO_E_SET(PMP_IO1,1);
  204. GPIO_O_SET(PMP_IO1,1);
  205. GPIO_M_SET(PMP_IO2,1);
  206. GPIO_E_SET(PMP_IO2,1);
  207. GPIO_O_SET(PMP_IO2,1);    
  208. }
  209. #endif
  210. void pmpkey_up(void)
  211. {
  212.     if((pFsJpeg->gifsState == FS_STATE_MP3)||(pFsJpeg->gifsState == FS_STATE_OTHER))
  213.         ircmd_volume_up();
  214.     else
  215.     HDDCard_up();
  216.     return;
  217. }
  218. void pmpkey_down(void)
  219. {
  220.     if((pFsJpeg->gifsState == FS_STATE_MP3)||(pFsJpeg->gifsState == FS_STATE_OTHER))
  221.         ircmd_volume_down();
  222.     else
  223.     HDDCard_down();
  224.     return;
  225. }
  226. void pmpkey_left(void)
  227. {
  228.     HDDCard_left();
  229.     return;
  230. }
  231. void pmpkey_right(void)
  232. {
  233.     HDDCard_right();
  234.     return;
  235. }
  236. void pmpkey_return(void)
  237. {
  238.     #ifdef PMP_KEYBOARD
  239.     if(pFsJpeg->gifsState == FS_STATE_MODE)
  240.     {
  241.         GPIO_E_SET(PMP_POWER_OFF_SELECT,1);
  242. GPIO_O_SET(PMP_POWER_OFF_SELECT,0);
  243. delay_1ms(1000);
  244. GPIO_E_SET(PMP_POWER_OFF_SELECT,0);
  245.     }
  246.     else
  247.     #endif
  248.     HDDCard_return();
  249.     return;
  250. }
  251. void pmpkey_select(void)
  252. {
  253.     HDDCard_select();
  254.     return;
  255. }