keypad_mapping.c 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772
  1. /*******************************************************************************
  2. * @file keypad_mapping.c
  3. * @note Copyright (c) 2011 Sunplus-prof Technology Co., Ltd.
  4. * @log
  5. * Revision 0.1 2011/04/14
  6. * create
  7. *******************************************************************************/
  8. /*******************************************************************************
  9. * Header Files
  10. ******************************************************************************/
  11. #include "board_config.h"
  12. #include "sysapp_table.h"
  13. #include "main_app.h"
  14. #include "sysapp_if.h"
  15. #include "gobj_mgr.h"
  16. #include "app_guiobj_popmsg.h"
  17. #include "keypad_mapping_table.h"
  18. #include "app_menumgr.h"
  19. #include "app_guiobj_adjust.h"
  20. #ifdef CONFIG_ATV_SUPPORT
  21. #include "atv_guiobj_table.h"
  22. #endif
  23. #if defined(CONFIG_DVB_SYSTEM) || defined(CONFIG_AUS_DVB_SYSTEM) || defined(CONFIG_DTMB_SYSTEM)
  24. #include "dvb_guiobj_table.h"
  25. #endif
  26. #ifdef CONFIG_ISDB_SYSTEM
  27. #include "app_guiobj_sbtvd_table.h"
  28. #endif
  29. #ifdef CONFIG_MEDIA_ENABLE
  30. #include "MM_browser_gui.h"
  31. #include "MM_EBook_gui.h"
  32. #include "MM_music_playback_gui.h"
  33. #endif
  34. #ifdef SUPPORT_FACTORY_AUTO_TEST
  35. //#include "Debug_msg.h"
  36. #endif
  37. #include "app_data_setting.h"
  38. /*******************************************************************************
  39. * Global Variables
  40. ******************************************************************************/
  41. #define KEYPAD_SARADC_DEBAUCE_COUNT 1
  42. #define KEYPAD_SARADC_REPEAT_COUNT 5
  43. #define KEYPAD_GPIO_DEBAUCE_COUNT 3
  44. #define KEYPAD_GPIO_REPEAT_COUNT 3
  45. /*******************************************************************************
  46. * IC keypad Range setting rules
  47. * voltage range(keycode)
  48. * 0V ~ 0.33V 0x001
  49. * 0.33V ~ 0.66V 0x002
  50. * 0.66V ~ 0.99V 0x004
  51. * 0.99V ~ 1.32V 0x008
  52. * 1.32V ~ 1.65V 0x010
  53. * 1.65V ~ 1.98V 0x020
  54. * 1.98V ~ 2.31V 0x040
  55. * 2.31V ~ 2.64V 0x080
  56. * 2.64V ~ 2.97V 0x100
  57. * 2.97V ~ 3.3V none
  58. ******************************************************************************/
  59. KEYPAD_PARAM_t KeypadMap_final[keypadNum] = {{0},{0},{0},{0},{0},{0},{0},{0}};
  60. #ifdef SUPPORT_FACTORY_AUTO_TEST
  61. KEYPAD_PARAM_t KeypadMapFac_final[keypadNum] = {{0},{0},{0},{0},{0},{0},{0},{0}};
  62. #endif
  63. #ifdef CONFIG_ATV_SUPPORT
  64. static void _Keypad_ATV_Event_convert(UINT32 dSystemAppIndex, UINT32 *pbEvent)
  65. {
  66. INT32 dObjectID;
  67. sys_app_errorcode_t ret = SYSTEM_APP_SUCCESS;
  68. PopmsgType_t eType;
  69. switch(*pbEvent)
  70. {
  71. case UI_EVENT_KEYPAD_MENU:
  72. if ((SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID) == SYSTEM_APP_SUCCESS) &&
  73. (dObjectID != APP_GUIOBJ_BANNER) &&
  74. (dObjectID != ATV_GUIOBJ_INPUTINFO) &&
  75. (dObjectID != ATV_GUIOBJ_PROGNUM) &&
  76. (dObjectID != ATV_GUIOBJ_SIF) &&
  77. (dObjectID != APP_GUIOBJ_AMPLIFIERVOLUME) &&
  78. (!((dObjectID == ATV_GUIOBJ_POPMSG) && (!APP_MenuMgr_Exist_Main_Menu()))) &&
  79. (!((dObjectID == APP_GUIOBJ_ADJUST) && (APP_GUIOBJ_Adjust_GetType() == ADJUST_VOLUME || APP_GUIOBJ_Adjust_GetType() == ADJUST_HDMICEC_AMPVOLUME)))
  80. )
  81. {
  82. *pbEvent = UI_EVENT_RETURN;
  83. }
  84. else
  85. {
  86. *pbEvent = UI_EVENT_MENU;
  87. }
  88. break;
  89. case UI_EVENT_KEYPAD_LEFT:
  90. ret = SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID);
  91. APP_GUIOBJ_PopMsg_GetMsgType(&eType);
  92. if (ret == SYSTEM_APP_SUCCESS)
  93. {
  94. if ((dObjectID == ATV_GUIOBJ_INPUTINFO) ||
  95. #ifdef CONFIG_SUPPORT_TTX
  96. (dObjectID == ATV_GUIOBJ_TTX)||
  97. #endif
  98. (dObjectID == ATV_GUIOBJ_PROGNUM) ||
  99. (dObjectID == APP_GUIOBJ_BANNER) ||
  100. (dObjectID == APP_GUIOBJ_AMPLIFIERVOLUME) ||
  101. ((dObjectID == APP_GUIOBJ_ADJUST) && (APP_GUIOBJ_Adjust_GetType() == ADJUST_VOLUME || APP_GUIOBJ_Adjust_GetType() == ADJUST_HDMICEC_AMPVOLUME)) ||
  102. ((dObjectID == ATV_GUIOBJ_POPMSG) && ((eType == POPMSG_TYPE_PROMPT) || (eType == POPMSG_TYPE_PWD))))
  103. {
  104. *pbEvent = UI_EVENT_VOL_DN;
  105. }
  106. else
  107. {
  108. *pbEvent = UI_EVENT_LEFT;
  109. }
  110. }
  111. else if (ret == SYSTEM_APP_NO_FOCUSED_GUIOBJ)
  112. {
  113. *pbEvent = UI_EVENT_VOL_DN;
  114. }
  115. break;
  116. case UI_EVENT_KEYPAD_RIGHT:
  117. ret = SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID);
  118. APP_GUIOBJ_PopMsg_GetMsgType(&eType);
  119. if (ret == SYSTEM_APP_SUCCESS)
  120. {
  121. if ((dObjectID == ATV_GUIOBJ_INPUTINFO) ||
  122. #ifdef CONFIG_SUPPORT_TTX
  123. (dObjectID == ATV_GUIOBJ_TTX)||
  124. #endif
  125. (dObjectID == ATV_GUIOBJ_PROGNUM) ||
  126. (dObjectID == APP_GUIOBJ_BANNER) ||
  127. (dObjectID == APP_GUIOBJ_AMPLIFIERVOLUME) ||
  128. ((dObjectID == APP_GUIOBJ_ADJUST) && (APP_GUIOBJ_Adjust_GetType() == ADJUST_VOLUME || APP_GUIOBJ_Adjust_GetType() == ADJUST_HDMICEC_AMPVOLUME)) ||
  129. ((dObjectID == ATV_GUIOBJ_POPMSG) && ((eType == POPMSG_TYPE_PROMPT) || (eType == POPMSG_TYPE_PWD))))
  130. {
  131. *pbEvent = UI_EVENT_VOL_UP;
  132. }
  133. else if (dObjectID == APP_GUIOBJ_SOURCE)
  134. {
  135. *pbEvent = UI_EVENT_ENTER;
  136. }
  137. else
  138. {
  139. *pbEvent = UI_EVENT_RIGHT;
  140. }
  141. }
  142. else if (ret == SYSTEM_APP_NO_FOCUSED_GUIOBJ)
  143. {
  144. *pbEvent = UI_EVENT_VOL_UP;
  145. }
  146. break;
  147. case UI_EVENT_KEYPAD_UP:
  148. ret = SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID);
  149. APP_GUIOBJ_PopMsg_GetMsgType(&eType);
  150. if (ret == SYSTEM_APP_SUCCESS)
  151. {
  152. if ((dObjectID == ATV_GUIOBJ_INPUTINFO) ||
  153. (dObjectID == ATV_GUIOBJ_PROGNUM) ||
  154. (dObjectID == APP_GUIOBJ_BANNER) ||
  155. ((dObjectID == ATV_GUIOBJ_POPMSG) && ((eType == POPMSG_TYPE_PROMPT) || (eType == POPMSG_TYPE_PWD))))
  156. {
  157. *pbEvent = UI_EVENT_CH_UP;
  158. }
  159. else
  160. {
  161. *pbEvent = UI_EVENT_UP;
  162. }
  163. }
  164. else if (ret == SYSTEM_APP_NO_FOCUSED_GUIOBJ)
  165. {
  166. *pbEvent = UI_EVENT_CH_UP;
  167. }
  168. break;
  169. case UI_EVENT_KEYPAD_DOWN:
  170. ret = SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID);
  171. APP_GUIOBJ_PopMsg_GetMsgType(&eType);
  172. if (ret == SYSTEM_APP_SUCCESS)
  173. {
  174. if ((dObjectID == ATV_GUIOBJ_INPUTINFO) ||
  175. (dObjectID == ATV_GUIOBJ_PROGNUM) ||
  176. (dObjectID == APP_GUIOBJ_BANNER) ||
  177. ((dObjectID == ATV_GUIOBJ_POPMSG) && ((eType == POPMSG_TYPE_PROMPT) || (eType == POPMSG_TYPE_PWD))))
  178. {
  179. *pbEvent = UI_EVENT_CH_DN;
  180. }
  181. else
  182. {
  183. *pbEvent = UI_EVENT_DOWN;
  184. }
  185. }
  186. else if (ret == SYSTEM_APP_NO_FOCUSED_GUIOBJ)
  187. {
  188. *pbEvent = UI_EVENT_CH_DN;
  189. }
  190. break;
  191. case UI_EVENT_KEYPAD_SOURCE:
  192. ret = SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID);
  193. APP_GUIOBJ_PopMsg_GetMsgType(&eType);
  194. if (ret == SYSTEM_APP_SUCCESS)
  195. {
  196. if ((dObjectID == ATV_GUIOBJ_POPMSG) && (eType == POPMSG_TYPE_CONFIRM))
  197. {
  198. *pbEvent = UI_EVENT_ENTER;
  199. }
  200. else
  201. {
  202. *pbEvent = UI_EVENT_SOURCE;
  203. }
  204. }
  205. else
  206. {
  207. *pbEvent = UI_EVENT_SOURCE;
  208. }
  209. break;
  210. case UI_EVENT_KEYPAD_POWER:
  211. *pbEvent = UI_EVENT_POWER;
  212. break;
  213. default:
  214. break;
  215. }
  216. }
  217. #else
  218. static void _Keypad_ATV_Event_convert(UINT32 dSystemAppIndex, UINT32 *pbEvent)
  219. {
  220. INT32 dObjectID;
  221. sys_app_errorcode_t ret = SYSTEM_APP_SUCCESS;
  222. PopmsgType_t eType;
  223. switch(*pbEvent)
  224. {
  225. case UI_EVENT_KEYPAD_MENU:
  226. if ((SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID) == SYSTEM_APP_SUCCESS) &&
  227. (dObjectID != APP_GUIOBJ_BANNER) &&
  228. (dObjectID != APP_GUIOBJ_AMPLIFIERVOLUME) &&
  229. (!((dObjectID == APP_GUIOBJ_ADJUST) && (APP_GUIOBJ_Adjust_GetType() == ADJUST_VOLUME || APP_GUIOBJ_Adjust_GetType() == ADJUST_HDMICEC_AMPVOLUME)))
  230. )
  231. {
  232. *pbEvent = UI_EVENT_RETURN;
  233. }
  234. else
  235. {
  236. *pbEvent = UI_EVENT_MENU;
  237. }
  238. break;
  239. case UI_EVENT_KEYPAD_LEFT:
  240. ret = SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID);
  241. APP_GUIOBJ_PopMsg_GetMsgType(&eType);
  242. if (ret == SYSTEM_APP_SUCCESS)
  243. {
  244. if ((dObjectID == APP_GUIOBJ_BANNER) ||
  245. (dObjectID == APP_GUIOBJ_AMPLIFIERVOLUME) ||
  246. ((dObjectID == APP_GUIOBJ_ADJUST) && (APP_GUIOBJ_Adjust_GetType() == ADJUST_VOLUME || APP_GUIOBJ_Adjust_GetType() == ADJUST_HDMICEC_AMPVOLUME)))
  247. {
  248. *pbEvent = UI_EVENT_VOL_DN;
  249. }
  250. else
  251. {
  252. *pbEvent = UI_EVENT_LEFT;
  253. }
  254. }
  255. else if (ret == SYSTEM_APP_NO_FOCUSED_GUIOBJ)
  256. {
  257. *pbEvent = UI_EVENT_VOL_DN;
  258. }
  259. break;
  260. case UI_EVENT_KEYPAD_RIGHT:
  261. ret = SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID);
  262. APP_GUIOBJ_PopMsg_GetMsgType(&eType);
  263. if (ret == SYSTEM_APP_SUCCESS)
  264. {
  265. if ((dObjectID == APP_GUIOBJ_BANNER) ||
  266. (dObjectID == APP_GUIOBJ_AMPLIFIERVOLUME) ||
  267. ((dObjectID == APP_GUIOBJ_ADJUST) && (APP_GUIOBJ_Adjust_GetType() == ADJUST_VOLUME || APP_GUIOBJ_Adjust_GetType() == ADJUST_HDMICEC_AMPVOLUME)))
  268. {
  269. *pbEvent = UI_EVENT_VOL_UP;
  270. }
  271. else if (dObjectID == APP_GUIOBJ_SOURCE)
  272. {
  273. *pbEvent = UI_EVENT_ENTER;
  274. }
  275. else
  276. {
  277. *pbEvent = UI_EVENT_RIGHT;
  278. }
  279. }
  280. else if (ret == SYSTEM_APP_NO_FOCUSED_GUIOBJ)
  281. {
  282. *pbEvent = UI_EVENT_VOL_UP;
  283. }
  284. break;
  285. case UI_EVENT_KEYPAD_UP:
  286. *pbEvent = UI_EVENT_UP;
  287. break;
  288. case UI_EVENT_KEYPAD_DOWN:
  289. *pbEvent = UI_EVENT_DOWN;
  290. break;
  291. case UI_EVENT_KEYPAD_SOURCE:
  292. *pbEvent = UI_EVENT_SOURCE;
  293. break;
  294. case UI_EVENT_KEYPAD_POWER:
  295. *pbEvent = UI_EVENT_POWER;
  296. break;
  297. default:
  298. break;
  299. }
  300. }
  301. #endif
  302. #ifdef CONFIG_DTV_SUPPORT
  303. static void _Keypad_DVB_Event_convert(UINT32 dSystemAppIndex, UINT32 *pbEvent)
  304. {
  305. INT32 dObjectID;
  306. sys_app_errorcode_t ret = SYSTEM_APP_SUCCESS;
  307. PopmsgType_t eType;
  308. switch(*pbEvent)
  309. {
  310. case UI_EVENT_KEYPAD_MENU:
  311. if ((SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID) == SYSTEM_APP_SUCCESS) &&
  312. (dObjectID != APP_GUIOBJ_BANNER) &&
  313. (dObjectID != DVB_GUIOBJ_PROGINFO) &&
  314. (dObjectID != DVB_GUIOBJ_PROGNUM) &&
  315. (dObjectID != APP_GUIOBJ_AMPLIFIERVOLUME) &&
  316. (!((dObjectID == DVB_GUIOBJ_POPMSG) && (!APP_MenuMgr_Exist_Main_Menu()))) &&
  317. (!((dObjectID == APP_GUIOBJ_ADJUST) && (APP_GUIOBJ_Adjust_GetType() == ADJUST_VOLUME || APP_GUIOBJ_Adjust_GetType() == ADJUST_HDMICEC_AMPVOLUME)))
  318. #ifdef CONFIG_SUPPORT_PVR
  319. && (dObjectID != DVB_GUIOBJ_PVR_PLAYINFO)
  320. && (dObjectID != DVB_GUIOBJ_PVR_FILEPLAY)
  321. #endif
  322. )
  323. {
  324. *pbEvent = UI_EVENT_RETURN;
  325. }
  326. else
  327. {
  328. *pbEvent = UI_EVENT_MENU;
  329. }
  330. break;
  331. case UI_EVENT_KEYPAD_LEFT:
  332. ret = SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID);
  333. APP_GUIOBJ_PopMsg_GetMsgType(&eType);
  334. if (ret == SYSTEM_APP_SUCCESS)
  335. {
  336. if ((dObjectID == DVB_GUIOBJ_PROGINFO) ||
  337. #ifdef CONFIG_SUPPORT_TTX
  338. (dObjectID == DVB_GUIOBJ_TTX)||
  339. #endif
  340. (dObjectID == DVB_GUIOBJ_PROGNUM) ||
  341. (dObjectID == APP_GUIOBJ_BANNER) ||
  342. (dObjectID == APP_GUIOBJ_AMPLIFIERVOLUME) ||
  343. ((dObjectID == APP_GUIOBJ_ADJUST) && (APP_GUIOBJ_Adjust_GetType() == ADJUST_VOLUME || APP_GUIOBJ_Adjust_GetType() == ADJUST_HDMICEC_AMPVOLUME)) ||
  344. ((dObjectID == DVB_GUIOBJ_POPMSG) && ((eType == POPMSG_TYPE_PROMPT) || (eType == POPMSG_TYPE_PWD))))
  345. {
  346. *pbEvent = UI_EVENT_VOL_DN;
  347. }
  348. else
  349. {
  350. *pbEvent = UI_EVENT_LEFT;
  351. }
  352. }
  353. else if (ret == SYSTEM_APP_NO_FOCUSED_GUIOBJ)
  354. {
  355. *pbEvent = UI_EVENT_VOL_DN;
  356. }
  357. break;
  358. case UI_EVENT_KEYPAD_RIGHT:
  359. ret = SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID);
  360. APP_GUIOBJ_PopMsg_GetMsgType(&eType);
  361. if (ret == SYSTEM_APP_SUCCESS)
  362. {
  363. if ((dObjectID == DVB_GUIOBJ_PROGINFO) ||
  364. #ifdef CONFIG_SUPPORT_TTX
  365. (dObjectID == DVB_GUIOBJ_TTX)||
  366. #endif
  367. (dObjectID == DVB_GUIOBJ_PROGNUM) ||
  368. (dObjectID == APP_GUIOBJ_BANNER) ||
  369. (dObjectID == APP_GUIOBJ_AMPLIFIERVOLUME) ||
  370. ((dObjectID == APP_GUIOBJ_ADJUST) && (APP_GUIOBJ_Adjust_GetType() == ADJUST_VOLUME || APP_GUIOBJ_Adjust_GetType() == ADJUST_HDMICEC_AMPVOLUME)) ||
  371. ((dObjectID == DVB_GUIOBJ_POPMSG) && ((eType == POPMSG_TYPE_PROMPT) || (eType == POPMSG_TYPE_PWD))))
  372. {
  373. *pbEvent = UI_EVENT_VOL_UP;
  374. }
  375. else if (dObjectID == APP_GUIOBJ_SOURCE)
  376. {
  377. *pbEvent = UI_EVENT_ENTER;
  378. }
  379. else
  380. {
  381. *pbEvent = UI_EVENT_RIGHT;
  382. }
  383. }
  384. else if (ret == SYSTEM_APP_NO_FOCUSED_GUIOBJ)
  385. {
  386. *pbEvent = UI_EVENT_VOL_UP;
  387. }
  388. break;
  389. case UI_EVENT_KEYPAD_UP:
  390. ret = SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID);
  391. APP_GUIOBJ_PopMsg_GetMsgType(&eType);
  392. if (ret == SYSTEM_APP_SUCCESS)
  393. {
  394. if ((dObjectID == DVB_GUIOBJ_PROGINFO) ||
  395. (dObjectID == DVB_GUIOBJ_PROGNUM) ||
  396. (dObjectID == APP_GUIOBJ_BANNER) ||
  397. ((dObjectID == DVB_GUIOBJ_POPMSG) && ((eType == POPMSG_TYPE_PROMPT) || (eType == POPMSG_TYPE_PWD))))
  398. {
  399. *pbEvent = UI_EVENT_CH_UP;
  400. }
  401. else
  402. {
  403. *pbEvent = UI_EVENT_UP;
  404. }
  405. }
  406. else if (ret == SYSTEM_APP_NO_FOCUSED_GUIOBJ)
  407. {
  408. *pbEvent = UI_EVENT_CH_UP;
  409. }
  410. break;
  411. case UI_EVENT_KEYPAD_DOWN:
  412. ret = SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID);
  413. APP_GUIOBJ_PopMsg_GetMsgType(&eType);
  414. if (ret == SYSTEM_APP_SUCCESS)
  415. {
  416. if ((dObjectID == DVB_GUIOBJ_PROGINFO) ||
  417. (dObjectID == DVB_GUIOBJ_PROGNUM) ||
  418. (dObjectID == APP_GUIOBJ_BANNER) ||
  419. ((dObjectID == DVB_GUIOBJ_POPMSG) && ((eType == POPMSG_TYPE_PROMPT) || (eType == POPMSG_TYPE_PWD))))
  420. {
  421. *pbEvent = UI_EVENT_CH_DN;
  422. }
  423. else
  424. {
  425. *pbEvent = UI_EVENT_DOWN;
  426. }
  427. }
  428. else if (ret == SYSTEM_APP_NO_FOCUSED_GUIOBJ)
  429. {
  430. *pbEvent = UI_EVENT_CH_DN;
  431. }
  432. break;
  433. case UI_EVENT_KEYPAD_SOURCE:
  434. ret = SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID);
  435. APP_GUIOBJ_PopMsg_GetMsgType(&eType);
  436. if (ret == SYSTEM_APP_SUCCESS)
  437. {
  438. if ((dObjectID == DVB_GUIOBJ_POPMSG) && (eType == POPMSG_TYPE_CONFIRM))
  439. {
  440. *pbEvent = UI_EVENT_ENTER;
  441. }
  442. else
  443. {
  444. *pbEvent = UI_EVENT_SOURCE;
  445. }
  446. }
  447. else
  448. {
  449. *pbEvent = UI_EVENT_SOURCE;
  450. }
  451. break;
  452. case UI_EVENT_KEYPAD_POWER:
  453. *pbEvent = UI_EVENT_POWER;
  454. break;
  455. default:
  456. break;
  457. }
  458. }
  459. #endif
  460. #ifdef CONFIG_MEDIA_ENABLE
  461. static void _Keypad_FILE_Player_Event_convert(UINT32 dSystemAppIndex, UINT32 *pbEvent)
  462. {
  463. INT32 dObjectID;
  464. sys_app_errorcode_t ret = SYSTEM_APP_SUCCESS;
  465. PopmsgType_t eType;
  466. ret = SYSAPP_GOBJ_GetFocusedGUIObject(dSystemAppIndex, &dObjectID);
  467. switch(*pbEvent)
  468. {
  469. case UI_EVENT_KEYPAD_MENU:
  470. if ((APP_MenuMgr_Exist_Main_Menu()) ||
  471. (APP_MenuMgr_Exist_Factory_Menu()) ||
  472. (SYSAPP_GOBJ_GUIObjectExist(dSystemAppIndex, APP_GUIOBJ_INITINSTALL)) ||
  473. (SYSAPP_GOBJ_GUIObjectExist(dSystemAppIndex, APP_GUIOBJ_AMPLIFIERVOLUME)) ||
  474. ((SYSAPP_GOBJ_GUIObjectExist(dSystemAppIndex, APP_GUIOBJ_ADJUST)) &&
  475. (APP_GUIOBJ_Adjust_GetType() != ADJUST_VOLUME))||
  476. ((SYSAPP_GOBJ_GUIObjectExist(dSystemAppIndex, APP_GUIOBJ_ADJUST)) &&
  477. (APP_GUIOBJ_Adjust_GetType() != ADJUST_HDMICEC_AMPVOLUME)))
  478. {
  479. *pbEvent = UI_EVENT_RETURN;
  480. }
  481. else
  482. {
  483. *pbEvent = UI_EVENT_MENU;
  484. }
  485. break;
  486. case UI_EVENT_KEYPAD_LEFT:
  487. APP_GUIOBJ_PopMsg_GetMsgType(&eType);
  488. if (ret == SYSTEM_APP_SUCCESS)
  489. {
  490. if ((dObjectID == MEDIA_GUIOBJ_MOVIE_PLAYBACK) ||
  491. (dObjectID == MEDIA_GUIOBJ_PHOTO_PLAYBACK) ||
  492. (dObjectID == MEDIA_GUIOBJ_MUSIC_PLAYBACK && MM_Music_IsMusicPlayerOnFocus()) ||
  493. (dObjectID == MEDIA_GUIOBJ_EBOOK_PLAYBACK && MM_Music_IsEBookPlayerOnFocus()) ||
  494. (dObjectID == APP_GUIOBJ_BANNER) ||
  495. (dObjectID == APP_GUIOBJ_AMPLIFIERVOLUME) ||
  496. ((dObjectID == APP_GUIOBJ_ADJUST) && (APP_GUIOBJ_Adjust_GetType() == ADJUST_VOLUME || APP_GUIOBJ_Adjust_GetType() == ADJUST_HDMICEC_AMPVOLUME)) ||
  497. ((dObjectID == MEDIA_GUIOBJ_POPMSG) && ((eType == POPMSG_TYPE_PROMPT) || (eType == POPMSG_TYPE_PWD))))
  498. {
  499. *pbEvent = UI_EVENT_VOL_DN;
  500. }
  501. else
  502. {
  503. *pbEvent = UI_EVENT_LEFT;
  504. }
  505. }
  506. break;
  507. case UI_EVENT_KEYPAD_RIGHT:
  508. APP_GUIOBJ_PopMsg_GetMsgType(&eType);
  509. if (ret == SYSTEM_APP_SUCCESS)
  510. {
  511. if ((dObjectID == MEDIA_GUIOBJ_MOVIE_PLAYBACK) ||
  512. (dObjectID == MEDIA_GUIOBJ_PHOTO_PLAYBACK) ||
  513. (dObjectID == MEDIA_GUIOBJ_MUSIC_PLAYBACK && MM_Music_IsMusicPlayerOnFocus()) ||
  514. (dObjectID == MEDIA_GUIOBJ_EBOOK_PLAYBACK && MM_Music_IsEBookPlayerOnFocus()) ||
  515. (dObjectID == APP_GUIOBJ_BANNER) ||
  516. (dObjectID == APP_GUIOBJ_AMPLIFIERVOLUME) ||
  517. ((dObjectID == APP_GUIOBJ_ADJUST) && (APP_GUIOBJ_Adjust_GetType() == ADJUST_VOLUME || APP_GUIOBJ_Adjust_GetType() == ADJUST_HDMICEC_AMPVOLUME)) ||
  518. ((dObjectID == MEDIA_GUIOBJ_POPMSG) && ((eType == POPMSG_TYPE_PROMPT) || (eType == POPMSG_TYPE_PWD))))
  519. {
  520. *pbEvent = UI_EVENT_VOL_UP;
  521. }
  522. else if (dObjectID == APP_GUIOBJ_SOURCE)
  523. {
  524. *pbEvent = UI_EVENT_ENTER;
  525. }
  526. else
  527. {
  528. *pbEvent = UI_EVENT_RIGHT;
  529. }
  530. }
  531. break;
  532. case UI_EVENT_KEYPAD_UP:
  533. if (ret == SYSTEM_APP_SUCCESS)
  534. {
  535. if ((dObjectID == MEDIA_GUIOBJ_HOMEPAGE) ||
  536. (dObjectID == MEDIA_GUIOBJ_FILEBROWSER && (memcmp(CONFIG_APP_FOLDER_NAME,"rda_atv",strlen("rda_atv"))==0)) ||
  537. (dObjectID == MEDIA_GUIOBJ_POPMSG_MAINMENU) ||
  538. (dObjectID == MEDIA_GUIOBJ_MOVIE_PLAYBACK) ||
  539. (dObjectID == MEDIA_GUIOBJ_PHOTO_PLAYBACK) ||
  540. (dObjectID == MEDIA_GUIOBJ_MUSIC_PLAYBACK && MM_Music_IsMusicPlayerOnFocus()) ||
  541. (dObjectID == MEDIA_GUIOBJ_EBOOK_PLAYBACK && MM_Music_IsEBookPlayerOnFocus()) )
  542. {
  543. *pbEvent = UI_EVENT_ENTER;
  544. }
  545. else
  546. {
  547. *pbEvent = UI_EVENT_UP;
  548. }
  549. }
  550. else
  551. {
  552. *pbEvent = UI_EVENT_UP;
  553. }
  554. break;
  555. case UI_EVENT_KEYPAD_DOWN:
  556. if (ret == SYSTEM_APP_SUCCESS)
  557. {
  558. if ((dObjectID == MEDIA_GUIOBJ_HOMEPAGE) ||
  559. (dObjectID == MEDIA_GUIOBJ_FILEBROWSER && (memcmp(CONFIG_APP_FOLDER_NAME,"rda_atv",strlen("rda_atv"))==0)) ||
  560. (dObjectID == MEDIA_GUIOBJ_POPMSG_MAINMENU) ||
  561. (dObjectID == MEDIA_GUIOBJ_MOVIE_PLAYBACK) ||
  562. (dObjectID == MEDIA_GUIOBJ_PHOTO_PLAYBACK) ||
  563. (dObjectID == MEDIA_GUIOBJ_MUSIC_PLAYBACK && MM_Music_IsMusicPlayerOnFocus()) ||
  564. (dObjectID == MEDIA_GUIOBJ_EBOOK_PLAYBACK && MM_Music_IsEBookPlayerOnFocus()) )
  565. {
  566. *pbEvent = UI_EVENT_EXIT;
  567. }
  568. else
  569. {
  570. *pbEvent = UI_EVENT_DOWN;
  571. }
  572. }
  573. else
  574. {
  575. *pbEvent = UI_EVENT_DOWN;
  576. }
  577. break;
  578. case UI_EVENT_KEYPAD_SOURCE:
  579. APP_GUIOBJ_PopMsg_GetMsgType(&eType);
  580. if (ret == SYSTEM_APP_SUCCESS)
  581. {
  582. if ((dObjectID == MEDIA_GUIOBJ_THUMBNAIL ||
  583. dObjectID == MEDIA_GUIOBJ_MEIDA_PLAYLIST || dObjectID == MEDIA_GUIOBJ_MUSIC_BGSOURCE)
  584. ||(dObjectID == MEDIA_GUIOBJ_POPMSG && eType == POPMSG_TYPE_CONFIRM))
  585. {
  586. *pbEvent = UI_EVENT_ENTER;
  587. }
  588. else
  589. {
  590. *pbEvent = UI_EVENT_SOURCE;
  591. }
  592. }
  593. else
  594. {
  595. *pbEvent = UI_EVENT_SOURCE;
  596. }
  597. break;
  598. case UI_EVENT_KEYPAD_POWER:
  599. *pbEvent = UI_EVENT_POWER;
  600. break;
  601. default:
  602. break;
  603. }
  604. }
  605. #endif
  606. #ifdef NET_SUPPORT
  607. static void _Keypad_Network_Event_convert(UINT32 dSystemAppIndex, UINT32 *pbEvent)
  608. {
  609. switch(*pbEvent)
  610. {
  611. case UI_EVENT_KEYPAD_MENU:
  612. *pbEvent = UI_EVENT_MENU;
  613. break;
  614. case UI_EVENT_KEYPAD_LEFT:
  615. *pbEvent = UI_EVENT_LEFT;
  616. break;
  617. case UI_EVENT_KEYPAD_RIGHT:
  618. *pbEvent = UI_EVENT_RIGHT;
  619. break;
  620. case UI_EVENT_KEYPAD_UP:
  621. *pbEvent = UI_EVENT_UP;
  622. break;
  623. case UI_EVENT_KEYPAD_DOWN:
  624. *pbEvent = UI_EVENT_DOWN;
  625. break;
  626. case UI_EVENT_KEYPAD_SOURCE:
  627. *pbEvent = UI_EVENT_SOURCE;
  628. break;
  629. case UI_EVENT_KEYPAD_POWER:
  630. *pbEvent = UI_EVENT_POWER;
  631. break;
  632. default:
  633. break;
  634. }
  635. }
  636. #endif
  637. #if (defined(SUPPORT_FACTORY_AUTO_TEST) || defined(SUPPORT_FACTORY_AUTO_TEST_MODE2))
  638. static void _Factory_Auto_Test_Event_convert(UINT32 dSystemAppIndex, UINT32 *pbEvent)
  639. {
  640. //extern void Enable_Debug_Message(UINT32 DBGStatus);
  641. //Enable_Debug_Message(1<<MODULEID_UMF);
  642. switch(*pbEvent)
  643. {
  644. case UI_EVENT_KEYPAD_LEFT:
  645. printf("\n***LEFT***\n");
  646. break;
  647. case UI_EVENT_KEYPAD_RIGHT:
  648. printf("\n***RIGHT***\n");
  649. break;
  650. case UI_EVENT_KEYPAD_UP:
  651. printf("\n***UP***\n");
  652. break;
  653. case UI_EVENT_KEYPAD_DOWN:
  654. printf("\n***DOWN***\n");
  655. break;
  656. case UI_EVENT_KEYPAD_SOURCE:
  657. printf("\n***SOURCE***\n");
  658. break;
  659. case UI_EVENT_KEYPAD_MENU:
  660. printf("\n***MENU***\n");
  661. break;
  662. case UI_EVENT_KEYPAD_POWER:
  663. break;
  664. default:
  665. break;
  666. }
  667. //Enable_Debug_Message(0);
  668. }
  669. #endif
  670. int Keypad_EventConvert(UINT32 *pbEvent)
  671. {
  672. UINT32 dSystemAppIndex;
  673. UINT8 Keylock=0;
  674. if (MAINAPP_GetActiveSystemAppIndex(&dSystemAppIndex) == MAIN_APP_SUCCESS)
  675. {
  676. #if (defined(SUPPORT_FACTORY_AUTO_TEST) || defined(SUPPORT_FACTORY_AUTO_TEST_MODE2))
  677. extern int APP_Factory_GetAutoTestOnOff(void);
  678. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  679. {
  680. _Factory_Auto_Test_Event_convert(dSystemAppIndex, pbEvent);
  681. return 0;
  682. }
  683. #endif
  684. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  685. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  686. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  687. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  688. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER,0,
  689. sizeof(APP_SETTING_FactoryUser_t),&g_stFactoryUserData);
  690. if(memcmp(CONFIG_APP_FOLDER_NAME,"formal",strlen("formal"))==0)
  691. {
  692. if((*pbEvent != UI_EVENT_KEYPAD_POWER)
  693. #ifdef SUPPORT_SEG_KEYLOCK_IN_MAINMENU
  694. &&(g_stFeatureData.KeyLock == 1)
  695. #else
  696. &&(g_stFactoryUserData.Function.n_Funct_HotelMode == 1)
  697. &&(g_stFactoryHotelData.HotelModeOnOff == 1)
  698. &&(g_stFactoryHotelData.KeypadOperation == 1)
  699. #endif
  700. )
  701. Keylock = 1;
  702. }
  703. else
  704. {
  705. if((*pbEvent != UI_EVENT_KEYPAD_POWER)
  706. &&(g_stSetupData.KeyLock == 1))
  707. Keylock = 1;
  708. }
  709. if(Keylock == 1)
  710. {
  711. *pbEvent = UI_EVENT_NULL;
  712. #ifdef CONFIG_MEDIA_ENABLE
  713. if(dSystemAppIndex == SYS_APP_FILE_PLAYER)
  714. {
  715. SYSAPP_IF_SendGlobalEventWithIndex(dSystemAppIndex,
  716. (APP_GLOBAL_EVENT_KEYLOCK|PASS_TO_SYSAPP), 0);
  717. }
  718. else
  719. #endif
  720. {
  721. SYSAPP_IF_SendGlobalEventWithIndex(dSystemAppIndex,
  722. (APP_GLOBAL_EVENT_KEYLOCK), 0);
  723. }
  724. return 0;
  725. }
  726. switch(dSystemAppIndex)
  727. {
  728. case SYS_APP_ATV:
  729. _Keypad_ATV_Event_convert(dSystemAppIndex, pbEvent);
  730. break;
  731. #ifdef CONFIG_DTV_SUPPORT
  732. case SYS_APP_DVB:
  733. _Keypad_DVB_Event_convert(dSystemAppIndex, pbEvent);
  734. break;
  735. #endif
  736. #ifdef CONFIG_MEDIA_ENABLE
  737. case SYS_APP_FILE_PLAYER:
  738. _Keypad_FILE_Player_Event_convert(dSystemAppIndex, pbEvent);
  739. break;
  740. #endif
  741. #ifdef NET_SUPPORT
  742. case SYS_APP_NETWORK:
  743. _Keypad_Network_Event_convert(dSystemAppIndex, pbEvent);
  744. break;
  745. #endif
  746. default:
  747. break;
  748. }
  749. }
  750. return 0;
  751. }