main_app_initflow.c 83 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790
  1. /******************************************************************************
  2. ** main_app_initflow.c:
  3. **
  4. ** Copyright(c) 2008 Sunplus Technologies - All Rights Reserved
  5. **
  6. ** History Information Description
  7. ** Date Author Modification
  8. ** 2009/04/21 Create
  9. ** 2009/08/05 Modify
  10. ******************************************************************************/
  11. #define APPLICATION_MESSAGE_FILTER_TABLE_HERE
  12. #define SYSTEM_APPLICATION_TABLE_DEFINE_HERE
  13. /********************************************************************
  14. header file
  15. ********************************************************************/
  16. #include <sys/ioctl.h>
  17. #include <sys/ipc.h>
  18. #include <sys/msg.h>
  19. #include <sys/time.h>
  20. #include <sys/vfs.h>
  21. #include "app_event.h"
  22. #include "sysapp_if.h"
  23. #include "sysapp_table.h"
  24. #include "app_msg_filter_tbl.h"
  25. #include "main_app.h"
  26. #include "main_app_external.h"
  27. #include "sysapp_table.h"
  28. #include "sysapp_timer.h"
  29. #include "al_fw.h"
  30. #include "al_util.h"
  31. #ifdef CONFIG_SUPPORT_NET_OTA
  32. #include "net_ota.h"
  33. #endif
  34. #include "atv_app.h"
  35. #ifdef CONFIG_SUPPORT_NETAPP
  36. #include "network_app.h"
  37. #endif
  38. #ifdef CONFIG_MEDIA_ENABLE
  39. #include "media_app.h"
  40. #endif
  41. #include "ir_map.h"
  42. #include "umf_ir.h"
  43. #include "drv_dtv_external.h"
  44. #include "drv_tuner_external.h"
  45. #include "kmf_ioctl.h"
  46. #include "ap_extern.h"
  47. #include "mid_dtv_display.h"
  48. #include "mid_playback.h"
  49. #include "mid_tvfe.h"
  50. #include "middleware/debug/mid_mon.h"
  51. #ifdef CONFIG_SUPPORT_SW_AFC
  52. #include "mid_afc.h"
  53. #endif
  54. #include "cust_nvm_cfg.h"
  55. #include "app_data_setting.h"
  56. #include "TV_region_config.h"
  57. #include "app_regionmgr.h"
  58. #include "gl_queue.h"
  59. #include "gl_timer.h"
  60. #include "app_gui.h"
  61. #include "app_scart.h"
  62. #include "app_audio.h"
  63. #include "app_video.h"
  64. #include "app_factory.h"
  65. #include "app_database.h"
  66. #include "app_scan_save.h"
  67. #include "mid_partition_list.h"
  68. #ifdef SUPPORT_LED_FLASH
  69. #include "app_led_control.h"
  70. #endif
  71. #include <sismmio.h>
  72. #ifdef SUPPORT_CEC_TV
  73. #include "umf_cec.h"
  74. #include "app_guiobj_hdmilink.h"
  75. #endif
  76. #ifdef CONFIG_SUPPORT_WIFI
  77. #include "netsetting_if.h"
  78. #include "net_ip_setting.h"
  79. #endif
  80. #ifdef CONFIG_SUPPORT_MIRACAST
  81. #include "umf_miracast.h"
  82. //#include "wfd_if.h"
  83. #endif
  84. #include "app_systime.h"
  85. #ifdef CONFIG_SUPPORT_IR_TX
  86. #include "umf_autodvd.h"
  87. #include "app_dvd.h"
  88. #endif
  89. #include "umf_event.h"
  90. #include "app_console.h"
  91. //#include "app_area_info.h"
  92. #include "app_iso639.h"
  93. #include "pin_config.h"
  94. #include "ap_extern.h"
  95. #include "nvm_ioctl.h"
  96. #include "mid_siutil.h"
  97. #include "util_ioctl.h"
  98. #include "hdmi_ioctl.h"
  99. #include "app_factory_flash_access.h"
  100. #ifdef CONFIG_AUTO_USB_STORE_IRSEQ
  101. #include "umf_automation.h"
  102. #endif
  103. #ifdef CONFIG_MEDIA_ENABLE
  104. #include "AL_Multimedia_Player_Types.h"
  105. #endif
  106. #ifdef CONFIG_ATV_SUPPORT
  107. #include "app_guiobj_atv_playback.h"
  108. #endif
  109. #if defined (CONFIG_SUPPORT_USB_UPGRADE) || defined (CONFIG_SUPPORT_OTA_UPGRADE)
  110. #include "mid_upgrade.h"
  111. #endif
  112. #include "app_guiobj_sleeptimer.h"
  113. #include "app_guiobj_cul_fm_factorySetting_new.h"
  114. #include "app_power_control.h"
  115. //#include "app_scan_api.h"
  116. #include "util_ioctl.h"
  117. #include "al_aps_table_api.h"
  118. #include "tuner_demod_ioctl.h"
  119. #ifdef CONFIG_SUPPORT_NET_SETTING
  120. #include "app_guiobj_Network_Information.h"
  121. #endif
  122. #ifdef CONFIG_MEDIA_ENABLE
  123. #include "AL_Multimedia_FileSystem_IF.h"
  124. #endif
  125. #ifdef CONFIG_EXTIC_DIGITALAMP_TAS5711
  126. #include "TAS5711.h"
  127. #endif
  128. #ifdef CONFIG_EXTIC_DIGITALAMP_NTP8849
  129. #include "NTP8849.h"
  130. #endif
  131. #ifdef CONFIG_EXTIC_DIGITALAMP_WA6819B
  132. #include "WA6819B.h"
  133. #endif
  134. #ifdef CONFIG_BLUETOOTH_SUPPORT
  135. #include "al_bluetooth.h"
  136. #include "al_bluetooth_ctrl.h"
  137. #ifdef CONFIG_BLUETOOTH_UPGRADE_SUPPORT
  138. #include "al_bluetooth_upgrader.h"
  139. #endif
  140. #if defined(CONFIG_BT_RDA5856)||defined(CONFIG_BT_POL6556)
  141. #include "app_bt.h"
  142. #endif
  143. #endif
  144. #ifdef CONFIG_SUPPORT_NES_GAME
  145. #include "umf_js.h"
  146. #include "nes_game.h"
  147. #include "atv_guiobj_table.h"
  148. #endif
  149. #ifdef CONFIG_SMART_MODULE_SUPPORT
  150. #include "al_uart_smart.h"
  151. #include "al_uart_smart_ctrl.h"
  152. #include "app_smart.h"
  153. #endif
  154. #ifdef CONFIG_VEHICLE_MODULE_SUPPORT
  155. #include "al_uart_vehicle.h"
  156. #include "al_uart_vehicle_ctrl.h"
  157. #include "app_vehicle.h"
  158. #endif
  159. #include "app_sysset.h"
  160. #include "drv_pq_internal.h"
  161. #ifdef AC_ON_AUTO_GET_TIME
  162. extern Boolean g_fBackgroundGetTime;
  163. #endif
  164. #ifdef CONFIG_HDMI_NOSIGNAL_POWEROFF_HDMI_WAKE_UP
  165. #include "umf_ioctl.h"
  166. #endif
  167. /********************************************************************
  168. macro define
  169. ********************************************************************/
  170. #define MAIN_APP_DEBUG
  171. #ifdef MAIN_APP_DEBUG
  172. #undef mainapp_printf
  173. #define mainapp_printf(fmt, arg...) UMFDBG(0,"[Main App]:"fmt, ##arg)
  174. #else
  175. #define mainapp_printf(fmt, arg...) ((void) 0)
  176. #endif
  177. #define AC_FACTORY 0x80
  178. #define WAKE_FLAG_REG526 0xbe0f0526
  179. #ifdef CONFIG_SUPPORT_ALL_HDMI_PORTS_WAKE_UP
  180. #define WAKE_SOURCE_HDMI 0x7
  181. #define WAKE_SOURCE_VGA 0x40
  182. #endif
  183. #define DBGCONFIADDR 0xa0000010
  184. /********************************************************************
  185. Function declare
  186. ********************************************************************/
  187. /********************************************************************
  188. global variables
  189. ********************************************************************/
  190. #ifdef SUPPORT_USB_UPGRADE_LONG_PRESS_KEYPAD_POWER
  191. UINT8 IsKeypadPowerOnPressRepeat = FALSE;
  192. #endif
  193. #ifdef CONFIG_BT_RDA5856
  194. Boolean g_SystemPowerOnReadyNeedReconnectBT = FALSE;
  195. #endif
  196. #ifdef CONFIG_USB_RECOVER_SPOT_SUPPORT
  197. static bool g_bFirstInsetUSB = FALSE;
  198. #endif
  199. #ifdef CONFIG_SUPPORT_WIFI
  200. Boolean bWifiDongle = FALSE;
  201. static GL_Task_t Wifi_Daemon = NULL;
  202. Boolean bWifiDaemonInitOk = FALSE;
  203. void _MAINAPP_WifiRoutine(void *pParam);
  204. #endif
  205. #ifdef CONFIG_USB_RECOVER_SPOT_SUPPORT
  206. bool GetPowerOnFirstInsetUSB(void)
  207. {
  208. return g_bFirstInsetUSB;
  209. }
  210. void SetPowerOnFirstInsetUSB(bool flag)
  211. {
  212. g_bFirstInsetUSB = flag;
  213. }
  214. #endif
  215. #ifdef CONFIG_ISDB_SYSTEM
  216. static void _MAINAPP_ResetDefVal(AL_DB_EDBType_t eDBType, AL_DB_ERecordType_t eRecType, al_void const * pService, al_uint32 u32ChannelIdx)
  217. {
  218. /*
  219. * i assume the atv database layout is below:
  220. * +------------------+--------------------+
  221. * Low | air atv database | cable atv database | High
  222. * +------------------+--------------------+
  223. * and, SBTVD atv spec is tabelscan, so, when reset atv database,
  224. * i make all channel is active, but is no signal(available = 0)
  225. */
  226. SADBServInfo_t *pServInfo = al_null;
  227. app_scan_table_info_st air_table_info;
  228. app_scan_table_info_st cable_table_info;
  229. if (al_null == pService)
  230. {
  231. return;
  232. }
  233. pServInfo = (SADBServInfo_t *)pService;
  234. APP_Scan_API_GetTableInfo(RF_INPUT_PORT_AIR, &air_table_info);
  235. APP_Scan_API_GetTableInfo(RF_INPUT_PORT_CABLE, &cable_table_info);
  236. switch (eRecType)
  237. {
  238. case AL_RECTYPE_ATVSERVICE:
  239. if (u32ChannelIdx < air_table_info.u32ScanTableLen)
  240. {
  241. pServInfo->inuse = 0;
  242. #ifdef CONFIG_DVB_SYSTEM
  243. pServInfo->u32Freq = air_table_info.pu32ScanTable[u32ChannelIdx]*1000;
  244. pServInfo->soundSystem = APP_OSD_SOUND_SYSTEM_M;
  245. #elif defined(CONFIG_ISDB_SYSTEM)
  246. pServInfo->u32Freq = air_table_info.pu32ScanTable[u32ChannelIdx];
  247. pServInfo->soundSystem = ANA_SCAN_AUDIO_STD_BTSC;
  248. #endif
  249. pServInfo->colorSystem = APP_OSD_COLOR_SYSTEM_DEFAULT;
  250. pServInfo->multiAudio = TVFE_AUDIO_SIF_MODE_ERR;
  251. pServInfo->tvtype = 0;
  252. }
  253. else
  254. {
  255. pServInfo->inuse = 0;
  256. #ifdef CONFIG_DVB_SYSTEM
  257. pServInfo->u32Freq = cable_table_info.pu32ScanTable[u32ChannelIdx-air_table_info.u32ScanTableLen]*1000;
  258. pServInfo->soundSystem = APP_OSD_SOUND_SYSTEM_M;
  259. #elif defined(CONFIG_ISDB_SYSTEM)
  260. pServInfo->u32Freq = cable_table_info.pu32ScanTable[u32ChannelIdx-air_table_info.u32ScanTableLen];
  261. pServInfo->soundSystem = ANA_SCAN_AUDIO_STD_BTSC;
  262. #endif
  263. pServInfo->colorSystem = APP_OSD_COLOR_SYSTEM_DEFAULT;
  264. pServInfo->multiAudio = TVFE_AUDIO_SIF_MODE_ERR;
  265. pServInfo->tvtype = 1;
  266. }
  267. break;
  268. default:
  269. break;
  270. }
  271. }
  272. #else
  273. #ifndef CONFIG_SUPPORT_ATV_SCAN_NTSCM_PALM_N
  274. static void _MAINAPP_ResetDefVal(AL_DB_EDBType_t eDBType, AL_DB_ERecordType_t eRecType, al_void const * pService, al_uint32 u32ChannelIdx)
  275. {
  276. #if defined (CONFIG_ATV_SUPPORT)
  277. SADBServInfo_t *pServInfo = al_null;
  278. if (al_null == pService)
  279. {
  280. return;
  281. }
  282. pServInfo = (SADBServInfo_t *)pService;
  283. switch (eRecType)
  284. {
  285. case AL_RECTYPE_ATVSERVICE:
  286. pServInfo->u32Freq = ATV_SCAN_RANGE_MIN;
  287. u32ChannelIdx = u32ChannelIdx;
  288. pServInfo->skip = 1;
  289. pServInfo->colorSystem = APP_OSD_COLOR_SYSTEM_DEFAULT;
  290. pServInfo->soundSystem = ANA_SCAN_AUDIO_STD_A2BG;
  291. pServInfo->multiAudio = TVFE_AUDIO_SIF_MODE_ERR;
  292. break;
  293. default:
  294. break;
  295. }
  296. #endif
  297. }
  298. #else
  299. static void _MAINAPP_ResetDefVal(AL_DB_EDBType_t eDBType, AL_DB_ERecordType_t eRecType, al_void const * pService, al_uint32 u32ChannelIdx)
  300. {
  301. /*
  302. * i assume the atv database layout is below:
  303. * +------------------+--------------------+
  304. * Low | air atv database | catv atv database | High
  305. * +------------------+--------------------+
  306. * and, atv spec is tabelscan, so, when reset atv database,
  307. * i make all channel is active, but is no signal(available = 0)
  308. */
  309. #if (CONFIG_ATV_SERVICE_NUM < 203)
  310. #error "Please config ATV program num is 203"
  311. #endif
  312. SADBServInfo_t *pServInfo = al_null;
  313. app_scan_table_info_st air_table_info;
  314. app_scan_table_info_st cable_table_info;
  315. if (al_null == pService)
  316. {
  317. return;
  318. }
  319. pServInfo = (SADBServInfo_t *)pService;
  320. APP_Scan_API_GetTableInfo(ATV_TYPE_AIR, &air_table_info);
  321. APP_Scan_API_GetTableInfo(ATV_TYPE_CATV, &cable_table_info);
  322. switch (eRecType)
  323. {
  324. case AL_RECTYPE_ATVSERVICE:
  325. if (u32ChannelIdx < air_table_info.u32ScanTableLen)
  326. {
  327. pServInfo->u32Freq = air_table_info.pu32ScanTable[u32ChannelIdx];
  328. pServInfo->inuse = 0;
  329. pServInfo->soundSystem = ANA_SCAN_AUDIO_STD_BTSC;
  330. pServInfo->colorSystem = APP_OSD_COLOR_SYSTEM_NTSC358;
  331. pServInfo->multiAudio = TVFE_AUDIO_SIF_MODE_ERR;
  332. pServInfo->tvtype = 0;
  333. #ifdef SUPPORT_ATV_SCAN_NTSCM_PALM_N_AMANUALSEARCH
  334. pServInfo->soundSystem = ANA_SCAN_AUDIO_STD_BTSC;
  335. pServInfo->AFC = 1;
  336. #endif
  337. }
  338. else
  339. {
  340. pServInfo->u32Freq = cable_table_info.pu32ScanTable[u32ChannelIdx-air_table_info.u32ScanTableLen];
  341. pServInfo->inuse = 0;
  342. pServInfo->soundSystem = ANA_SCAN_AUDIO_STD_BTSC;
  343. pServInfo->colorSystem = APP_OSD_COLOR_SYSTEM_NTSC358;
  344. pServInfo->multiAudio = TVFE_AUDIO_SIF_MODE_ERR;
  345. pServInfo->tvtype = 1;
  346. #ifdef SUPPORT_ATV_SCAN_NTSCM_PALM_N_AMANUALSEARCH
  347. pServInfo->soundSystem = ANA_SCAN_AUDIO_STD_BTSC;
  348. pServInfo->AFC = 1;
  349. #endif
  350. }
  351. break;
  352. default:
  353. break;
  354. }
  355. }
  356. #endif
  357. #endif
  358. #ifdef CONFIG_BLUETOOTH_SUPPORT
  359. #if !defined(CONFIG_BT_RDA5856) && !defined(CONFIG_BT_POL6556)
  360. static int _MAINAPP_Bluetooth_Callback(BT_Message_t eMessage, UINT32 u32Param)
  361. {
  362. UINT32 u32Message = DMN_EVENT_MAX;
  363. switch (eMessage)
  364. {
  365. case BT_MESSAGE_MODE:
  366. /*HB_STATUS_MODE_STANDBY (0x100)
  367. * HB_STATUS_MODE_BT (0x200) */
  368. printf("==mode:0x%x==\n", u32Param);
  369. if (u32Param == HB_STATUS_MODE_STANDBY)
  370. u32Message = DMN_EVENT_BLUETOOTH_STANDBY;
  371. else if (u32Param == HB_STATUS_MODE_BT)
  372. u32Message = DMN_EVENT_BLUETOOTH_ENABLE;
  373. break;
  374. case BT_MESSAGE_CON_STATUS:
  375. /* HB_STATUS_BT_WAIT_CONN (0x01)
  376. * HB_STATUS_BT_RECONNECT (0x02)
  377. * HB_STATUS_BT_CONNECTED ( 0x03) */
  378. if (u32Param == HB_STATUS_BT_WAIT_CONN)
  379. u32Message = DMN_EVENT_BLUETOOTH_WAITCONNECT;
  380. else if (u32Param == HB_STATUS_BT_CONNECTED)
  381. u32Message = DMN_EVENT_BLUETOOTH_CONNECTED;
  382. else if (u32Param == HB_STATUS_BT_RECONNECT)
  383. u32Message = DMN_EVENT_BLUETOOTH_RECONNECTED;
  384. break;
  385. case BT_MESSAGE_PLAYER:
  386. /* HB_STATUS_BT_PLAYING (0x04)
  387. * HB_STATUS_BT_PAUSE = HB_STATUS_BT_CONNECTED */
  388. if (u32Param == HB_STATUS_BT_PLAYING)
  389. u32Message = DMN_EVENT_BLUETOOTH_PLAY;
  390. else if (u32Param == HB_STATUS_BT_PAUSE)
  391. u32Message = DMN_EVENT_BLUETOOTH_PAUSE;
  392. break;
  393. case BT_MESSAGE_PHONE:
  394. /* HB_STATUS_BT_PHONE_CALL (0x05)
  395. * HB_STATUS_BT_ONGOING_CALL = HB_STATUS_BT_PHONE_CALL
  396. * HB_STATUS_BT_INCOMING_CALL (0x06 )
  397. * HB_STATUS_BT_OUTGOING_CALL (0x07) */
  398. if (u32Param == HB_STATUS_BT_PHONE_CALL)
  399. u32Message = DMN_EVENT_BLUETOOTH_ONCALL;
  400. else if (u32Param == HB_STATUS_BT_INCOMING_CALL || u32Param == HB_STATUS_BT_OUTGOING_CALL)
  401. u32Message = DMN_EVENT_BLUETOOTH_INCOMING_CALL;
  402. else if (u32Param == HB_STATUS_BT_PHONE_OFF_CALL)
  403. u32Message = DMN_EVENT_BLUETOOTH_OFFCALL;
  404. break;
  405. case BT_MESSAGE_BT_NAME:
  406. u32Message = DMN_EVENT_MAX;
  407. //Al_Bluetooth_Get_Action(BT_CMD_GET_NAME, data[BT_NAME_LEN_MAX])
  408. break;
  409. case BT_MESSAGE_PAIRED_NAME:
  410. u32Message = DMN_EVENT_BLUETOOTH_GET_PAIREDNAME;
  411. break;
  412. case BT_MESSAGE_MAC:
  413. u32Message = DMN_EVENT_MAX;
  414. //Al_Bluetooth_Get_Action(BT_CMD_GET_MAC, data[BT_MAC_LEN_MAX])
  415. break;
  416. case BT_MESSAGE_VER:
  417. u32Message = DMN_EVENT_MAX;
  418. //Al_Bluetooth_Get_Action(BT_CMD_GET_VER, data[BT_VER_LEN_MAX])
  419. break;
  420. case BT_MESSAGE_PHONE_NUM:
  421. u32Message = DMN_EVENT_BLUETOOTH_GET_PHONENUM;
  422. break;
  423. default:
  424. u32Message = DMN_EVENT_MAX;
  425. break;
  426. }
  427. if ((u32Message >= DMN_EVENT_BLUETOOTH_STANDBY) && (u32Message <= DMN_EVENT_BLUETOOTH_MAX))
  428. {
  429. MSG_FILTER_DispatchMessage((UINT32) u32Message, (UINT32) u32Param);
  430. }
  431. return 1;
  432. }
  433. #endif
  434. #endif
  435. #ifdef SUPPORT_CEC_TV
  436. static int _MAINAPP_CEC_Callback(CECTV_Message_t eMessage, UINT32 u32Param )
  437. {
  438. UINT32 u32Message;
  439. #if defined (CONFIG_SUPPORT_USB_UPGRADE) || defined (CONFIG_SUPPORT_OTA_UPGRADE)
  440. if (Mid_CmnUpgradeIsUpgradeing()== TRUE)
  441. {
  442. mainapp_printf("[debug]%s %d\n",__FUNCTION__,__LINE__);
  443. mainapp_printf("System is upgradeing........\n\n\n");
  444. return 1;
  445. }
  446. #endif
  447. switch (eMessage)
  448. {
  449. case CECTV_MESSAGE_CHANGE_SOURCE:
  450. u32Message = DMN_EVENT_CECTV_CHANGE_SOURCE;
  451. break;
  452. case CECTV_MESSAGE_STANDBY:
  453. u32Message = DMN_EVENT_CECTV_STANDBY;
  454. break;
  455. case CECTV_MESSAGE_SET_MUTE_STATUS:
  456. u32Message = DMN_EVENT_CECTV_SET_MUTE_STATUS;
  457. break;
  458. case CECTV_MESSAGE_SET_SYSTEMAUDIO_STATUS:
  459. u32Message = DMN_EVENT_CECTV_SET_SYSTEMAUDIO_STATUS;
  460. break;
  461. case CECTV_MESSAGE_SET_DEVICE_OSDNAME:
  462. u32Message = DMN_EVENT_CECTV_SET_DEVICE_OSDNAME;
  463. break;
  464. default:
  465. u32Message = DMN_EVENT_MAX;
  466. break;
  467. }
  468. if ((u32Message > DMN_EVENT_MIN) && (u32Message < DMN_EVENT_MAX))
  469. {
  470. u32Message = u32Message | PASS_TO_SYSAPP;
  471. MSG_FILTER_DispatchMessage((UINT32)u32Message, (UINT32)u32Param);
  472. }
  473. return 1;
  474. }
  475. #endif
  476. #ifdef CONFIG_SUPPORT_PVR
  477. int _RecorderList_Callback(MID_PVRRecListParseMsg_t dPVRRecListCallbackType)
  478. {
  479. switch (dPVRRecListCallbackType)
  480. {
  481. case PVR_RECLIST_PRESE_DONE:
  482. MSG_FILTER_DispatchMessage(DMN_EVENT_DVB_PVRLIST_PARSE_OK, 0);
  483. break;
  484. default:
  485. break;
  486. }
  487. return SP_SUCCESS;
  488. }
  489. #endif
  490. #ifdef CONFIG_SUPPORT_MIRACAST
  491. //#define MiracastEventFlag 0xCCDEF000
  492. //INT32 _MAINAPP_MIRACAST_Callback(int event_id, void *arg)
  493. static int _MAINAPP_MIRACAST_Callback(MIRACAST_Message_t eMessage, void *Param)
  494. {
  495. int ret = 1;
  496. //UEvent nNewEvent;
  497. UINT32 u32Message = DMN_EVENT_MAX;
  498. switch(eMessage)
  499. {
  500. case MIRACAST_FINDING:
  501. printf("[Miracast Callback] MIRACAST_FINDING\n");
  502. u32Message = DMN_EVENT_MIRACAST_FINDING;
  503. //nNewEvent.id = MiracastEventFlag|MIRACAST_FINDING;
  504. //UEvent_Send(&nNewEvent);
  505. break;
  506. case MIRACAST_FIND_DEVICES:
  507. printf("[Miracast Callback] MIRACAST_FIND_DEVICES\n");
  508. //nNewEvent.id = MiracastEventFlag|MIRACAST_FIND_DEVICES;
  509. u32Message = DMN_EVENT_MIRACAST_FIND_DEVICES;
  510. //UEvent_Send(&nNewEvent);
  511. break;
  512. case MIRACAST_FIND_RETRY:
  513. printf("[Miracast Callback] MIRACAST_FIND_RETRY\n");
  514. //nNewEvent.id = MiracastEventFlag|MIRACAST_FIND_RETRY;
  515. u32Message = DMN_EVENT_MIRACAST_FIND_RETRY;
  516. //UEvent_Send(&nNewEvent);
  517. break;
  518. case MIRACAST_CONNECTING:
  519. printf("[Miracast Callback] MIRACAST_CONNECTING\n");
  520. //nNewEvent.id = MiracastEventFlag|MIRACAST_CONNECTING;
  521. u32Message = DMN_EVENT_MIRACAST_CONNECTING;
  522. //UEvent_Send(&nNewEvent);
  523. break;
  524. case MIRACAST_CONNECT_SUCCESS:
  525. printf("[Miracast Callback] MIRACAST_CONNECT_SUCCESS\n");
  526. //nNewEvent.id = MiracastEventFlag|MIRACAST_CONNECT_SUCCESS;
  527. u32Message = DMN_EVENT_MIRACAST_CONNECT_SUCCESS;
  528. //UEvent_Send(&nNewEvent);
  529. break;
  530. case MIRACAST_CONNECT_INACTIVE:
  531. printf("[Miracast Callback] MIRACAST_CONNECT_INACTIVE\n");
  532. //nNewEvent.id = MiracastEventFlag|MIRACAST_CONNECT_INACTIVE;
  533. u32Message = DMN_EVENT_MIRACAST_CONNECT_INACTIVE;
  534. //UEvent_Send(&nNewEvent);
  535. break;
  536. case MIRACAST_CONNECT_RETRY:
  537. printf("[Miracast Callback] MIRACAST_CONNECT_RETRY\n");
  538. //nNewEvent.id = MiracastEventFlag|MIRACAST_CONNECT_RETRY;
  539. u32Message = DMN_EVENT_MIRACAST_CONNECT_RETRY;
  540. //UEvent_Send(&nNewEvent);
  541. break;
  542. case MIRACAST_CONNECT_FAIL:
  543. printf("[Miracast Callback] MIRACAST_CONNECT_FAIL\n");
  544. //nNewEvent.id = MiracastEventFlag|MIRACAST_CONNECT_FAIL;
  545. u32Message = DMN_EVENT_MIRACAST_CONNECT_FAIL;
  546. //UEvent_Send(&nNewEvent);
  547. break;
  548. case MIRACAST_DISCONNECT_RECEIVED:
  549. printf("[Miracast Callback] MIRACAST_DISCONNECT_RECEIVED\n");
  550. //nNewEvent.id = MiracastEventFlag|MIRACAST_DISCONNECT_RECEIVED;
  551. u32Message = DMN_EVENT_MIRACAST_DISCONNECT_RECEIVED;
  552. //UEvent_Send(&nNewEvent);
  553. break;
  554. case MIRACAST_EXIT_SUCCESS:
  555. printf("[Miracast Callback] MIRACAST_EXIT_SUCCESS\n");
  556. //nNewEvent.id = MiracastEventFlag|MIRACAST_EXIT_SUCCESS;
  557. u32Message = DMN_EVENT_MIRACAST_EXIT_SUCCESS;
  558. //UEvent_Send(&nNewEvent);
  559. break;
  560. case MIRACAST_HDCP_FAIL:
  561. printf("[Miracast Callback] MIRACAST_HDCP_FAIL\n");
  562. //nNewEvent.id = MiracastEventFlag|MIRACAST_HDCP_FAIL;
  563. u32Message = DMN_EVENT_MIRACAST_HDCP_FAIL;
  564. //UEvent_Send(&nNewEvent);
  565. break;
  566. case MIRACAST_NO_DONGLE:
  567. printf("[Miracast Callback] MIRACAST_NO_DONGLE\n");
  568. //nNewEvent.id = MiracastEventFlag|MIRACAST_EXIT_SUCCESS;
  569. u32Message = DMN_EVENT_MIRACAST_NO_DONGLE;
  570. //UEvent_Send(&nNewEvent);
  571. break;
  572. default:
  573. printf("[Miracast Callback] warning: Unknown id = 0x%08X !!!\n", u32Message);
  574. u32Message = DMN_EVENT_MAX;
  575. break;
  576. }
  577. if ((u32Message >= DMN_EVENT_MIRACAST_FINDING) && (u32Message <= DMN_EVENT_MIRACAST_MAX))
  578. {
  579. MSG_FILTER_DispatchMessage((UINT32) u32Message, (UINT32) Param);
  580. }
  581. return ret;
  582. }
  583. #endif
  584. static EDBError_t _MAINAPP_DBNVMReadCallBack(ECDBIDBType_t enDBType, UINT32 uiStart, UINT32 uiBytes, void *pBuff)
  585. {
  586. INT8 bRetVal = FALSE;
  587. #ifdef CONFIG_DVB_SYSTEM_SBTVD_SUPPORT
  588. if (enDBType == CDBI_DBTYPE_DVB_SBTVD)
  589. {
  590. bRetVal = Cmd_NVMRead(ENVMPurposeIDDatabaseSBTVD, TRUE, uiBytes, (UINT8 *)pBuff);
  591. }
  592. else
  593. #endif
  594. #ifdef CONFIG_DVB_SYSTEM_DVBT_SUPPORT
  595. if (enDBType == CDBI_DBTYPE_DVB_T)
  596. {
  597. bRetVal = Cmd_NVMRead(ENVMPurposeIDDatabaseDVBT, TRUE, uiBytes, (UINT8 *)pBuff);
  598. }
  599. else
  600. #endif
  601. #ifdef CONFIG_DVB_SYSTEM_DVBC_SUPPORT
  602. if (enDBType == CDBI_DBTYPE_DVB_C)
  603. {
  604. bRetVal = Cmd_NVMRead(ENVMPurposeIDDatabaseDVBC, TRUE, uiBytes, (UINT8 *)pBuff);
  605. }
  606. else
  607. #endif
  608. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  609. if (enDBType == CDBI_DBTYPE_DVB_S)
  610. {
  611. bRetVal = Cmd_NVMRead(ENVMPurposeIDDatabaseDVBS, TRUE, uiBytes, (UINT8 *)pBuff);
  612. }
  613. else
  614. #endif
  615. #ifdef CONFIG_ATV_SUPPORT
  616. if (enDBType == CDBI_DBTYPE_DVB_ATV)
  617. {
  618. bRetVal = Cmd_NVMRead(ENVMPurposeIDDatabaseATV, TRUE, uiBytes, (UINT8 *)pBuff);
  619. }
  620. else
  621. #endif
  622. {
  623. mainapp_printf("Database Read, Some Error Occurs!!!!!!!!\n");
  624. }
  625. return bRetVal ? DB_FAILURE : DB_SUCCESS;
  626. }
  627. static EDBError_t _MAINAPP_DBNVMWriteCallBack(ECDBIDBType_t enDBType, UINT32 uiStart, UINT32 uiBytes, void const *pBuff)
  628. {
  629. INT8 bRetVal = FALSE;
  630. #ifdef CONFIG_DVB_SYSTEM_SBTVD_SUPPORT
  631. if (enDBType == CDBI_DBTYPE_DVB_SBTVD)
  632. {
  633. bRetVal = Cmd_NVMWrite(ENVMPurposeIDDatabaseSBTVD, TRUE, uiBytes, (UINT8 *)pBuff);
  634. }
  635. else
  636. #endif
  637. #ifdef CONFIG_DVB_SYSTEM_DVBT_SUPPORT
  638. if (enDBType == CDBI_DBTYPE_DVB_T)
  639. {
  640. bRetVal = Cmd_NVMWrite(ENVMPurposeIDDatabaseDVBT, TRUE, uiBytes, (UINT8 *)pBuff);
  641. }
  642. else
  643. #endif
  644. #ifdef CONFIG_DVB_SYSTEM_DVBC_SUPPORT
  645. if (enDBType == CDBI_DBTYPE_DVB_C)
  646. {
  647. bRetVal = Cmd_NVMWrite(ENVMPurposeIDDatabaseDVBC, TRUE, uiBytes, (UINT8 *)pBuff);
  648. }
  649. else
  650. #endif
  651. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  652. if (enDBType == CDBI_DBTYPE_DVB_S)
  653. {
  654. bRetVal = Cmd_NVMWrite(ENVMPurposeIDDatabaseDVBS, TRUE, uiBytes, (UINT8 *)pBuff);
  655. }
  656. else
  657. #endif
  658. #ifdef CONFIG_ATV_SUPPORT
  659. if (enDBType == CDBI_DBTYPE_DVB_ATV)
  660. {
  661. bRetVal = Cmd_NVMWrite(ENVMPurposeIDDatabaseATV, TRUE, uiBytes, (UINT8 *)pBuff);
  662. }
  663. else
  664. #endif
  665. {
  666. mainapp_printf("Database Write, Some Error Occurs!!!!!!!!\n");
  667. }
  668. return bRetVal ? DB_FAILURE : DB_SUCCESS;
  669. }
  670. Boolean MID_DTVCI_IsCAMFirmwareUpgrading(void);
  671. void _MAINAPP_Ir_Callback(UINT32 IrKey, UINT32 dParam, UINT8 dKeyValue)
  672. {
  673. UINT32 sysAppIdx = 0;
  674. #ifdef CONFIG_CI_SUPPORT
  675. if (MID_DTVCI_IsCAMFirmwareUpgrading()&& IrKey != UI_EVENT_POWER)
  676. {
  677. return;
  678. }
  679. #endif
  680. if (IrKey < UI_EVENT_NULL)
  681. {
  682. #ifdef CONFIG_SMART_MODULE_SUPPORT
  683. {
  684. APP_Source_Type_t eSourceType = APP_SOURCE_MAX;
  685. APP_GUIOBJ_Source_GetCurrSource(&eSourceType);
  686. if((APP_SOURCE_HDMI + CONFIG_HDMI_SMART_PORT) == eSourceType)
  687. APP_Smart_Set_Smart_IRKey(IrKey);
  688. }
  689. #endif
  690. if ((APP_WAKEUP_GetBootFlag() == TRUE) &&
  691. ((IrKey < UI_EVENT_NULL) && (IrKey != UI_EVENT_POWER) && (IrKey != UI_EVENT_KEYPAD_POWER)))
  692. {
  693. return;
  694. }
  695. if ((APP_GUIOBJ_Source_GetSourceTransState() == TRUE)
  696. && ((IrKey != UI_EVENT_POWER) && (IrKey != UI_EVENT_KEYPAD_POWER)))
  697. {
  698. mainapp_printf("source translation no handle key\n");
  699. return ;
  700. }
  701. else if (MAIN_APP_SUCCESS == MAINAPP_GetActiveSystemAppIndex(&sysAppIdx))
  702. {
  703. if(((IrKey == UI_EVENT_POWER) || (IrKey == UI_EVENT_KEYPAD_POWER))&&
  704. (g_stFactoryUserData.n_FactSet_BurningMode != 1))
  705. {
  706. APP_Video_OSD_PQSet(APP_VIDEO_OSD_ITEM_BACKLIGHT,AL_FLASH_GetBackLight());
  707. }
  708. if (
  709. #ifdef CONFIG_ATV_SUPPORT
  710. ((sysAppIdx == SYS_APP_ATV) && (APP_GUIOBJ_ATV_Playback_GetZappingState() == TRUE)) ||
  711. #endif
  712. 0)
  713. {
  714. mainapp_printf("zapping no handle key\n");
  715. return ;
  716. }
  717. }
  718. if (dParam&IR_EVENT_SINGLE_END
  719. #ifdef SUPPORT_PIPMENU_TO_NEXT_AND_FF
  720. && IrKey != UI_EVENT_PIP_MENU
  721. #endif
  722. )
  723. {
  724. return;
  725. }
  726. #if defined(CONFIG_KEYPAD_SINGLE_REUSE)
  727. if (dParam & (KEYPAD_EVENT_REPEAT_END))
  728. {
  729. dParam = dParam & (~KEYPAD_EVENT_REPEAT_END);
  730. dParam = dParam & (~KEYPAD_EVENT_REPEAT_TYPE);
  731. }
  732. #else
  733. if (dParam & (KEYPAD_EVENT_REPEAT_END|IR_EVENT_REPEAT_END))
  734. {
  735. return;
  736. }
  737. #endif
  738. extern const char *Ir_GetKeyString(UINT32 IrKey);
  739. if (strcmp(Ir_GetKeyString(IrKey), "Unknown"))
  740. {
  741. mainapp_printf("%s is pressed.\n",Ir_GetKeyString(IrKey));
  742. }
  743. else
  744. {
  745. mainapp_printf("IrKey ========== %d\n",IrKey);
  746. }
  747. #ifdef SUPPORT_POWERAGAIN_CONFIRM_POWEROFF
  748. if((IrKey == UI_EVENT_POWER)||(IrKey == UI_EVENT_KEYPAD_POWER))
  749. {
  750. dParam = AL_POWER_STATE_CONFIRM;
  751. }
  752. #endif
  753. IrKey = IrKey|APPLICATION_EXTERNAL_UI_MESSAGE_TYPE;
  754. MSG_FILTER_DispatchMessage((UINT32)IrKey, (UINT32)dParam);
  755. }
  756. }
  757. #ifdef CONFIG_SUPPORT_NES_GAME
  758. void _MAINAPP_Joystick_Callback(UINT32 Key, UINT32 joypadNum)
  759. {
  760. if (Key == APP_GLOBAL_EVENT_JS_ADJUST_OK || Key == APP_GLOBAL_EVENT_JS_ADJUST_NG || Key == APP_GLOBAL_EVENT_JS_REMOVE)
  761. {
  762. MSG_FILTER_DispatchMessage((UINT32) Key, (UINT32) joypadNum);
  763. }
  764. else if (joystick_Convert_UIEvent_Get() && SYSAPP_GOBJ_GUIObjectExist(SYS_APP_ATV, APP_GUIOBJ_NESGAME_RUNNING))
  765. {
  766. if (Key == ADD_EVENT_JOYPAD_L1)
  767. {
  768. //mainapp_printf("[%s:%d] ADD_EVENT_JOYPAD_L1 !!!!!!!!!!!!!!!!!!!, JS NUMBER: %d\n",__FUNCTION__,__LINE__,joypadNum);
  769. Key = UI_EVENT_EXIT|APPLICATION_EXTERNAL_UI_MESSAGE_TYPE;
  770. MSG_FILTER_DispatchMessage((UINT32) Key, (UINT32) joypadNum);
  771. }
  772. else
  773. {
  774. Nes_Excute_Key(Key, (JoyPadNum)joypadNum);
  775. }
  776. }
  777. else if (joystick_Convert_UIEvent_Get())
  778. {
  779. switch (Key)
  780. {
  781. case ADD_EVENT_JOYPAD_UP:
  782. Key = UI_EVENT_UP|APPLICATION_EXTERNAL_UI_MESSAGE_TYPE;
  783. MSG_FILTER_DispatchMessage((UINT32) Key, (UINT32) joypadNum);
  784. break;
  785. case ADD_EVENT_JOYPAD_DOWN:
  786. Key = UI_EVENT_DOWN|APPLICATION_EXTERNAL_UI_MESSAGE_TYPE;
  787. MSG_FILTER_DispatchMessage((UINT32) Key, (UINT32) joypadNum);
  788. break;
  789. case ADD_EVENT_JOYPAD_LEFT:
  790. Key = UI_EVENT_LEFT|APPLICATION_EXTERNAL_UI_MESSAGE_TYPE;
  791. MSG_FILTER_DispatchMessage((UINT32) Key, (UINT32) joypadNum);
  792. break;
  793. case ADD_EVENT_JOYPAD_RIGHT:
  794. Key = UI_EVENT_RIGHT|APPLICATION_EXTERNAL_UI_MESSAGE_TYPE;
  795. MSG_FILTER_DispatchMessage((UINT32) Key, (UINT32) joypadNum);
  796. break;
  797. case ADD_EVENT_JOYPAD_START:
  798. //mainapp_printf("[%s:%d] ADD_EVENT_JOYPAD_SELECT !!!!!!!!!!!!!!!!!!!, JS NUMBER: %d\n",__FUNCTION__,__LINE__,joypadNum);
  799. Key = UI_EVENT_ENTER|APPLICATION_EXTERNAL_UI_MESSAGE_TYPE;
  800. MSG_FILTER_DispatchMessage((UINT32) Key, (UINT32) joypadNum);
  801. break;
  802. case ADD_EVENT_JOYPAD_L1:
  803. Key = UI_EVENT_EXIT|APPLICATION_EXTERNAL_UI_MESSAGE_TYPE;
  804. MSG_FILTER_DispatchMessage((UINT32) Key, (UINT32) joypadNum);
  805. break;
  806. }
  807. }
  808. }
  809. #endif
  810. void DeviceMountStatus_Callback(MID_DeviceMount_Event_e Event, MID_DeviceMount_Event_Detail_t* Detail)
  811. {
  812. UINT32 Message;
  813. switch(Event)
  814. {
  815. case MID_DEVICEMOUNT_EVENT_MOUNT_SUCCESS:
  816. Message = DMN_EVENT_USB_HDD_ATTACHED;
  817. #ifdef CONFIG_MEDIA_ENABLE
  818. if (Detail != NULL)
  819. {
  820. USBLib_UpdateUsbVersion(TRUE, Detail->USBPath, Detail->USBPathlen, Detail->USBVersion);
  821. }
  822. {// the detach message for media source should action immediately
  823. UINT32 sysAppIdx = 0;
  824. GL_Queue_t QueueHandle = NULL;
  825. if (MAIN_APP_SUCCESS == MAINAPP_GetActiveSystemAppIndex(&sysAppIdx))
  826. {
  827. #ifdef CONFIG_USB_RECOVER_SPOT_SUPPORT
  828. extern void SysApp_MM_DestroyAppointedGUI(void);
  829. extern bool GetPowerOnFirstInsetUSB(void);
  830. bool gb_FirstInsetUSB = GetPowerOnFirstInsetUSB();
  831. printf("[%s,%d]:gb_FirstInsetUSB = %d!!!!!!!!!!!!!!!!!!!\n",__FUNCTION__,__LINE__,gb_FirstInsetUSB);
  832. if ( gb_FirstInsetUSB == TRUE)//mode is last memory
  833. {
  834. if (sysAppIdx == SYS_APP_FILE_PLAYER)
  835. {
  836. SysApp_MM_DestroyAppointedGUI();
  837. }
  838. }
  839. #endif
  840. #ifdef CONFIG_USB_DEMO_SUPPORT
  841. extern void SysApp_MM_DestroyAppointedGUI(void);
  842. SysApp_MM_DestroyAppointedGUI();
  843. #endif
  844. if (sysAppIdx == SYS_APP_FILE_PLAYER)
  845. {
  846. SYSAPP_IF_GetSystemAppQueueHandle(sysAppIdx , &QueueHandle);
  847. GL_QueueFlush(QueueHandle ) ;
  848. }
  849. #ifdef CONFIG_USB_RECOVER_SPOT_SUPPORT
  850. else
  851. {
  852. if (gb_FirstInsetUSB == TRUE)//mode is last memory
  853. {
  854. //APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_MEDIA);
  855. }
  856. }
  857. #endif
  858. #ifdef CONFIG_USB_DEMO_SUPPORT
  859. else
  860. {
  861. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_MEDIA);
  862. }
  863. #endif
  864. }
  865. }
  866. #endif
  867. break;
  868. case MID_DEVICEMOUNT_EVENT_DETACHED:
  869. Message = DMN_EVENT_USB_HDD_DETACHED;
  870. #ifdef CONFIG_MEDIA_ENABLE
  871. if (Detail != NULL)
  872. {
  873. USBLib_UpdateUsbVersion(FALSE, Detail->USBPath, Detail->USBPathlen, Detail->USBVersion);
  874. }
  875. #endif
  876. break;
  877. case MID_DEVICEMOUNT_EVENT_ATTACHED:
  878. case MID_DEVICEMOUNT_EVENT_MOUNT_FAIL:
  879. default:
  880. return;
  881. }
  882. MSG_FILTER_DispatchMessage(Message, 0);
  883. #ifdef STATFS_IN_SPEED_THREAD
  884. if (Event == MID_DEVICEMOUNT_EVENT_MOUNT_SUCCESS && Detail != NULL)
  885. {
  886. struct statfs sbuf;
  887. printf("\n[%s, %d]statfs start!!!\n",__FUNCTION__,__LINE__);
  888. statfs(Detail->USBPath, &sbuf);
  889. printf("\n[%s, %d]statfs end!!!\n",__FUNCTION__,__LINE__);
  890. }
  891. #endif
  892. }
  893. #ifdef CONFIG_KEYPAD_FIVE_KEY_REUSE
  894. void _MAINAPP_KeyPad_FiveKey_Callback(UINT32 *dMessage)
  895. {
  896. UINT32 dIndex = 0;
  897. INT32 dObjectID = 0;
  898. static BOOL bMainMenuFlg = FALSE;
  899. sys_app_errorcode_t ret = SYSTEM_APP_SUCCESS;
  900. if (MAIN_APP_SUCCESS != MAINAPP_GetActiveSystemAppIndex(&dIndex))
  901. {
  902. return;
  903. }
  904. if (dIndex == SYS_APP_ATV)
  905. {
  906. ret = SYSAPP_GOBJ_GetFocusedGUIObject(dIndex, &dObjectID);
  907. printf("!!!!!!!!!!!!!Function=%s,line=%d,ret=%d,*dMessage=%d\n",__FUNCTION__,__LINE__,ret,*dMessage);
  908. if (ret == SYSTEM_APP_NO_FOCUSED_GUIOBJ || (ATVApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL)))//未进入菜单里
  909. {
  910. //printf("[sea]:log\n");//sea log
  911. if((*dMessage == UI_EVENT_UP) || (*dMessage == UI_EVENT_DOWN) )
  912. {
  913. bMainMenuFlg = FALSE;
  914. }
  915. else
  916. {
  917. bMainMenuFlg = TRUE;
  918. }
  919. //sea add for 5key
  920. if(*dMessage == UI_EVENT_UP)
  921. *dMessage = UI_EVENT_VOL_UP;
  922. if(*dMessage == UI_EVENT_DOWN)
  923. *dMessage = UI_EVENT_VOL_DN;
  924. //sea end
  925. switch(*dMessage)
  926. {
  927. case UI_EVENT_KEYPAD_SOURCE:
  928. *dMessage = UI_EVENT_SOURCE;
  929. break;
  930. case UI_EVENT_KEYPAD_POWER:
  931. *dMessage = UI_EVENT_POWER;
  932. break;
  933. case UI_EVENT_KEYPAD_MENU:
  934. *dMessage = UI_EVENT_MENU;
  935. break;
  936. case UI_EVENT_KEYPAD_UP:
  937. *dMessage = UI_EVENT_VOL_UP;
  938. break;
  939. case UI_EVENT_KEYPAD_DOWN:
  940. *dMessage = UI_EVENT_VOL_DN;
  941. break;
  942. case UI_EVENT_KEYPAD_LEFT:
  943. *dMessage = UI_EVENT_CH_UP;
  944. break;
  945. case UI_EVENT_KEYPAD_RIGHT:
  946. *dMessage = UI_EVENT_CH_DN;
  947. break;
  948. }
  949. }
  950. else if (ret == SYSTEM_APP_SUCCESS)//已经进入菜单
  951. {
  952. //sea add for 5key
  953. if(!bMainMenuFlg)
  954. {
  955. if(*dMessage == UI_EVENT_UP)
  956. *dMessage = UI_EVENT_VOL_UP;
  957. if(*dMessage == UI_EVENT_DOWN)
  958. *dMessage = UI_EVENT_VOL_DN;
  959. }
  960. //sea end
  961. switch (*dMessage)
  962. {
  963. case UI_EVENT_KEYPAD_SOURCE:
  964. *dMessage = UI_EVENT_RETURN;
  965. break;
  966. case UI_EVENT_KEYPAD_MENU:
  967. *dMessage = UI_EVENT_ENTER;
  968. break;
  969. case UI_EVENT_KEYPAD_UP:
  970. *dMessage = UI_EVENT_VOL_UP;
  971. break;
  972. case UI_EVENT_KEYPAD_DOWN:
  973. *dMessage = UI_EVENT_VOL_DN;
  974. break;
  975. case UI_EVENT_KEYPAD_LEFT:
  976. *dMessage = UI_EVENT_CH_UP;
  977. break;
  978. case UI_EVENT_KEYPAD_RIGHT:
  979. *dMessage = UI_EVENT_CH_DN;
  980. break;
  981. }
  982. }
  983. }
  984. else if (dIndex == SYS_APP_FILE_PLAYER)
  985. {
  986. ret = SYSAPP_GOBJ_GetFocusedGUIObject(dIndex, &dObjectID);
  987. printf("!!!!!!!!!!!!!Function=%s,line=%d,ret=%d,*dMessage=%d\n",__FUNCTION__,__LINE__,ret,*dMessage);
  988. if (ret == SYSTEM_APP_NO_FOCUSED_GUIOBJ)
  989. {
  990. switch(*dMessage)
  991. {
  992. case UI_EVENT_KEYPAD_MENU:
  993. *dMessage = UI_EVENT_MENU;
  994. break;
  995. case UI_EVENT_KEYPAD_SOURCE:
  996. *dMessage = UI_EVENT_SOURCE;
  997. break;
  998. case UI_EVENT_KEYPAD_POWER:
  999. *dMessage = UI_EVENT_POWER;
  1000. break;
  1001. case UI_EVENT_KEYPAD_UP:
  1002. *dMessage = UI_EVENT_CH_UP;
  1003. break;
  1004. case UI_EVENT_KEYPAD_DOWN:
  1005. *dMessage = UI_EVENT_CH_DN;
  1006. break;
  1007. case UI_EVENT_KEYPAD_LEFT:
  1008. *dMessage = UI_EVENT_VOL_UP;
  1009. break;
  1010. case UI_EVENT_KEYPAD_RIGHT:
  1011. *dMessage = UI_EVENT_VOL_DN;
  1012. break;
  1013. }
  1014. }
  1015. else if (ret == SYSTEM_APP_SUCCESS)
  1016. {
  1017. switch(*dMessage)
  1018. {
  1019. case UI_EVENT_KEYPAD_MENU:
  1020. *dMessage = UI_EVENT_ENTER;
  1021. break;
  1022. case UI_EVENT_KEYPAD_EXIT:
  1023. *dMessage = UI_EVENT_EXIT;
  1024. break;
  1025. case UI_EVENT_KEYPAD_POWER:
  1026. *dMessage = UI_EVENT_POWER;
  1027. break;
  1028. case UI_EVENT_KEYPAD_UP:
  1029. *dMessage = UI_EVENT_CH_UP;
  1030. break;
  1031. case UI_EVENT_KEYPAD_DOWN:
  1032. *dMessage = UI_EVENT_CH_DN;
  1033. break;
  1034. case UI_EVENT_KEYPAD_LEFT:
  1035. *dMessage = UI_EVENT_VOL_UP;
  1036. break;
  1037. case UI_EVENT_KEYPAD_RIGHT:
  1038. *dMessage = UI_EVENT_VOL_DN;
  1039. break;
  1040. }
  1041. }
  1042. }
  1043. /*
  1044. if (*dMessage != UI_EVENT_KEYPAD_POWER_KEY_LONG_PRESS)
  1045. {
  1046. if(!(SYSAPP_GOBJ_GUIObjectExist(dIndex,APP_GUIOBJ_THREE_KEY_KEYPADMENU)))
  1047. {
  1048. if ((dIndex == SYS_APP_ATV) && (ATVApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL)))
  1049. {
  1050. ATVApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  1051. }
  1052. SYSAPP_IF_SendGlobalEventWithIndex(dIndex,
  1053. APP_GLOBAL_EVENT_THREE_KEY_KEYPADMENU_OPEN | PASS_TO_SYSAPP, *dMessage);
  1054. }
  1055. }
  1056. */
  1057. }
  1058. #endif
  1059. #ifdef CONFIG_SUPPORT_NET_OTA
  1060. void NET_OTA_Event_Callback(NET_OTA_Event_e event, int param)
  1061. {
  1062. UINT32 Message = 0;
  1063. UINT32 Param = 0;
  1064. switch(event)
  1065. {
  1066. case NET_OTA_EVENT_NEW_UPDATE_FOUND:
  1067. mainapp_printf("\nNET_OTA_EVENT_NEW_UPDATE_FOUND\n");
  1068. Message = APP_GLOBAL_EVENT_OTA_UPGRADE | PASS_TO_SYSAPP;
  1069. Param = param; // 1:EraseAll,0:not EraseAll
  1070. break;
  1071. default:
  1072. return;
  1073. }
  1074. MSG_FILTER_DispatchMessage(Message, Param);
  1075. }
  1076. #endif
  1077. static void _MAINAPP_Mute_Init(void)
  1078. {
  1079. UINT32 dCurIdx = 0;
  1080. #ifndef VIDEO_LOGO
  1081. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, APP_SOURCE_MAX);
  1082. #endif
  1083. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, APP_SOURCE_MAX);
  1084. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  1085. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  1086. dCurIdx = g_stUserInfoData.Mute;
  1087. if (dCurIdx == APP_SWITCH_ON)
  1088. {
  1089. #ifndef SUPPORT_STORE_MUTE_FLAG
  1090. g_stUserInfoData.Mute = APP_SWITCH_OFF;
  1091. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  1092. ITEM_OFFSET(APP_SETTING_UserInfo_t, Mute),
  1093. sizeof(g_stUserInfoData.Mute), &(g_stUserInfoData.Mute));
  1094. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  1095. ITEM_OFFSET(APP_SETTING_UserInfo_t, Mute),
  1096. sizeof(g_stUserInfoData.Mute));
  1097. #endif
  1098. }
  1099. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  1100. APP_WAKEUP_MuteAudio();
  1101. #endif
  1102. }
  1103. static void _MAINAPP_SW_Init(void)
  1104. {
  1105. #ifdef CONFIG_SUPPORT_WIFI
  1106. if (GL_TaskCreate("Wifi Dongle detect", (void *) _MAINAPP_WifiRoutine, NULL, 3, 4096, TRUE, &(Wifi_Daemon)) != GL_SUCCESS)
  1107. printf("pthread_create fail: MAINAPP_WifiRoutine thread\n");
  1108. #endif
  1109. /* init time offset to al_time */
  1110. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  1111. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  1112. AL_Time_SetTimeOffset(g_stChannelData.Timediff);
  1113. /* init time zone */
  1114. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  1115. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  1116. //APP_GUIOBJ_DateTime_SetTimeZone(APP_GUIOBJ_DateTime_GetTimeZoneStringID(g_stFeatureData.TimeZone));
  1117. #ifdef CONFIG_SUPPORT_ALL_HDMI_PORTS_WAKE_UP
  1118. UINT8 wakeSrc = 0, portNum = 0;
  1119. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  1120. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  1121. Cmd_mmio_ReadUINT8(WAKE_FLAG_REG526, &wakeSrc);
  1122. Cmd_mmio_WriteUINT8(WAKE_FLAG_REG526, (wakeSrc&AC_FACTORY));
  1123. if(wakeSrc!=0)
  1124. {
  1125. if(wakeSrc & WAKE_SOURCE_HDMI)
  1126. {
  1127. for(portNum=0; (portNum<3 && wakeSrc!=0); portNum++)
  1128. {
  1129. if(((wakeSrc>>portNum)&0x1) !=0)
  1130. {
  1131. #ifdef CONFIG_HDMI_PORT_MAP
  1132. g_stUserInfoData.SourceIndex = (APP_SOURCE_HDMI+(((CONFIG_HDMI_PORT_MAP>>(portNum*4))&0xf)-1));
  1133. #else
  1134. g_stUserInfoData.SourceIndex = APP_SOURCE_HDMI;
  1135. #endif
  1136. break;
  1137. }
  1138. }
  1139. }
  1140. else
  1141. {
  1142. if(wakeSrc & WAKE_SOURCE_VGA)
  1143. {
  1144. g_stUserInfoData.SourceIndex = APP_SOURCE_PC;
  1145. }
  1146. }
  1147. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  1148. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  1149. AL_Setting_Store(APP_Data_UserSetting_Handle(),SYS_SET_ID_USERINFO, 0,
  1150. sizeof(APP_SETTING_UserInfo_t));
  1151. }
  1152. #endif
  1153. MSG_FILTER_Initialize(MainAppQueueHandle, NULL);
  1154. MSG_FILTER_SetMessageTable(MainAppMessageDefaultTable, (sizeof(MainAppMessageDefaultTable) / sizeof(UINT32)));
  1155. #ifdef CONFIG_SUPPORT_IR_TX
  1156. Autodvd_ModualCfg_t AutodvdCfg =
  1157. {
  1158. .pfCallBack = APP_AUTODVD_Callback
  1159. };
  1160. Autodvd_Initialize(&AutodvdCfg);
  1161. #endif
  1162. #ifdef CONFIG_HDMI_SUPPORT
  1163. HDMI_Customize_st stHDI_Customize;
  1164. stHDI_Customize.dSupportMaxHz = SUPPORT_HDMI_VFREQ_MAX_HZ; //the supported max V frequency of input timing
  1165. #if (CONFIG_CHIPID!=0x330) //for ARC CTS using GPIO 5V to detect cable in/out
  1166. stHDI_Customize.eARC_5V_GPIO = GPIO_ARC_DET; //which GPIO is for ARC 5V
  1167. stHDI_Customize.eARC_Port = HDMI_ARC_PORT_INDEX; //which HDMI port is ARC port
  1168. #endif
  1169. Cmd_Hdmi_SetCustomization(stHDI_Customize);
  1170. #endif
  1171. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  1172. /*< test code. */
  1173. //APP_WAKEUP_MuteBlackLight();
  1174. #endif
  1175. _MAINAPP_Mute_Init();
  1176. #ifdef CONFIG_BLUETOOTH_SUPPORT
  1177. #if defined(CONFIG_BT_RDA5856) || defined(CONFIG_BT_POL6556)
  1178. BT_ModualCfg_t BT_ModualCfg = {
  1179. .pfCallBack = APP_BT_ModuleCallback
  1180. };
  1181. APP_BT_data_init(10);
  1182. #else
  1183. BT_ModualCfg_t BT_ModualCfg = {
  1184. .pfCallBack = _MAINAPP_Bluetooth_Callback
  1185. };
  1186. #endif
  1187. BlueTooth_Init(&BT_ModualCfg);
  1188. #ifdef CONFIG_BLUETOOTH_UPGRADE_SUPPORT
  1189. BT_UpgradeCfg_t BT_UpgradeCfg = {
  1190. .pfCallBack = APP_BT_UpgradeCallback
  1191. };
  1192. RegisterBTUpgradeCallback(&BT_UpgradeCfg);
  1193. #endif
  1194. #endif
  1195. #ifdef CONFIG_SMART_MODULE_SUPPORT
  1196. Smart_ModualCfg_t Smart_ModualCfg = {
  1197. .pfCallBack = APP_Smart_SmartModuleCallback
  1198. };
  1199. Smart_Init(&Smart_ModualCfg);
  1200. #endif
  1201. #ifdef CONFIG_VEHICLE_MODULE_SUPPORT
  1202. Vehicle_ModualCfg_t Vmart_ModualCfg = {
  1203. .pfCallBack = APP_Vehicle_VehicleModuleCallback
  1204. };
  1205. Vehicle_Init(&Vmart_ModualCfg);
  1206. #endif
  1207. /* initialize frontend */
  1208. FrontendCmd_t front;
  1209. front.cmd = FRONTEND_CMD_INIT;
  1210. front.param = NULL;
  1211. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  1212. front.cmd = FRONTEND_CMD_SET_TUNER;
  1213. front.param = NULL;
  1214. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  1215. //AL_CNIInit();
  1216. #ifdef GPIO_DVD_ON_OFF
  1217. //After power on TV platform, Need open DVD Power
  1218. Cmd_gpio_WriteOnLevel(GPIO_DVD_ON_OFF);
  1219. #endif
  1220. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  1221. MID_Playback_DVBSTuneInit();
  1222. #endif
  1223. #ifdef CONFIG_SUPPORT_SW_AFC
  1224. /* init afc task */
  1225. MID_AFC_Task_Init();
  1226. #endif
  1227. #ifdef CONFIG_SUPPORT_ALL_HDMI_PORTS_WAKE_UP
  1228. tv_SetBootRomHdmiSrc(CLEAR_HDMI_WAKE_SOURCE);
  1229. #endif
  1230. UINT8 UARTMode=0;
  1231. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER,
  1232. ITEM_OFFSET(APP_SETTING_FactoryUser_t, n_FactSet_UARTDebug),
  1233. sizeof(UINT8), &(UARTMode));
  1234. if (UARTMode == 0)
  1235. {
  1236. //mantis 21437 for disable all msg
  1237. Cmd_mmio_WriteUINT32(DBGCONFIADDR,0);
  1238. MID_TVFE_SetDebugModeOn(UARTMode);
  1239. }else
  1240. {
  1241. //mantis 21437 for disable all msg
  1242. Cmd_mmio_WriteUINT32(DBGCONFIADDR,0x41000400);
  1243. }
  1244. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER,0,
  1245. sizeof(APP_SETTING_FactoryUser_t), &g_stFactoryUserData);
  1246. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  1247. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  1248. if(g_stFactoryHotelData.HotelModeOnOff == 1)
  1249. {
  1250. g_stVariationalData.Volume = g_stFactoryHotelData.DefaultVolume;
  1251. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  1252. ITEM_OFFSET(APP_SETTING_Variational_t, Volume), sizeof(g_stVariationalData.Volume),
  1253. &(g_stVariationalData.Volume));
  1254. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  1255. ITEM_OFFSET(APP_SETTING_Variational_t, Volume), sizeof(g_stVariationalData.Volume));
  1256. }
  1257. #if (defined(SUPPORT_FACTORY_AUTO_TEST_MODE2))
  1258. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  1259. {
  1260. APP_AutoTest_SystemPowerOnReset();
  1261. g_stUserInfoData.AutoInstalled = FALSE;
  1262. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  1263. ITEM_OFFSET(APP_SETTING_UserInfo_t, AutoInstalled),
  1264. sizeof(g_stUserInfoData.AutoInstalled), &(g_stUserInfoData.AutoInstalled));
  1265. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  1266. ITEM_OFFSET(APP_SETTING_UserInfo_t, AutoInstalled), sizeof(g_stUserInfoData.AutoInstalled));
  1267. }
  1268. #elif defined(SUPPORT_FACTORY_AUTO_TEST)
  1269. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  1270. {
  1271. //enable debug message
  1272. if (UARTMode == 0)
  1273. {
  1274. extern void Enable_Debug_Message(UINT32 DBGStatus);
  1275. Enable_Debug_Message(0);
  1276. MID_TVFE_SetDebugModeOn(TRUE);
  1277. }
  1278. g_stVariationalData.Volume = 50;
  1279. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  1280. ITEM_OFFSET(APP_SETTING_Variational_t, Volume), sizeof(g_stVariationalData.Volume),
  1281. &(g_stVariationalData.Volume));
  1282. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  1283. ITEM_OFFSET(APP_SETTING_Variational_t, Volume), sizeof(g_stVariationalData.Volume));
  1284. g_stUserInfoData.AutoInstalled = FALSE;
  1285. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  1286. ITEM_OFFSET(APP_SETTING_UserInfo_t, AutoInstalled),
  1287. sizeof(g_stUserInfoData.AutoInstalled), &(g_stUserInfoData.AutoInstalled));
  1288. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  1289. ITEM_OFFSET(APP_SETTING_UserInfo_t, AutoInstalled), sizeof(g_stUserInfoData.AutoInstalled));
  1290. extern void Enable_Debug_Message(UINT32 DBGStatus);
  1291. Enable_Debug_Message(1<<MODULEID_UMF);
  1292. printf("\n\nstart test\n\n");
  1293. extern UINT8 APP_GetPoweronEnterVersion(void);
  1294. if(APP_GetPoweronEnterVersion() == 0)
  1295. {
  1296. Factory_Ver_Debug();
  1297. }
  1298. Enable_Debug_Message(0);
  1299. }
  1300. #endif
  1301. /*
  1302. #if (defined CONFIG_SUPPORT_PVR)
  1303. MID_RecorderInitFsData();
  1304. // init recorder demux unit
  1305. #ifdef SUPPORT_DUAL_NIM
  1306. MID_RecorderSetDemuxUnit(SECOND_LIVE_INPUT);
  1307. MID_PlaybackSyncSecondaryToPrimary(TRUE);
  1308. #else
  1309. MID_RecorderSetDemuxUnit(PRIMARY_LIVE_INPUT);
  1310. #endif
  1311. APP_GUIOBJ_DVB_PvrRec_RegUninitCallback();
  1312. MID_TSPLParser_RegisterPvrRecListCallback((PVRRecListCallbackFunc)_RecorderList_Callback);
  1313. extern void APP_GUIOBJ_DVB_PvrPlayInfo_Callback(MID_PVRPlayMsg_t dPVRPlayCallbackType);
  1314. MID_TSPLParser_RegisterCallback(APP_GUIOBJ_DVB_PvrPlayInfo_Callback);
  1315. #endif
  1316. *///garfield
  1317. MID_DISP_DTVDisplayInit();
  1318. int error = 0;
  1319. UINT32 u32PanelWidth = 0;
  1320. UINT32 u32PanelHeight = 0;
  1321. #ifdef CONFIG_OSD_RESIZE_FOR_PANEL
  1322. u32PanelWidth = OSD_ORIGINAL_REFERENCE_WIDTH;
  1323. u32PanelHeight = OSD_ORIGINAL_REFERENCE_HEIGHT;
  1324. #else
  1325. MID_DISP_DTVGetPanelResolution(&u32PanelWidth,&u32PanelHeight);
  1326. #endif
  1327. #if (defined TV_BITMAP_COMPRESSED && defined FilePlayer_BITMAP_COMPRESSED)
  1328. #if ((TV_BITMAP_COMPRESSED == 1 && FilePlayer_BITMAP_COMPRESSED == 0) \
  1329. || (TV_BITMAP_COMPRESSED == 0 && FilePlayer_BITMAP_COMPRESSED == 1))
  1330. #error "Please both TV and media icon compressed or uncompressed"
  1331. #endif
  1332. error = GEL_Open(u32PanelWidth, u32PanelHeight, TV_BITMAP_COMPRESSED);
  1333. #else
  1334. #if defined TV_BITMAP_COMPRESSED
  1335. error = GEL_Open(u32PanelWidth, u32PanelHeight, TV_BITMAP_COMPRESSED);
  1336. #else
  1337. error = GEL_Open(u32PanelWidth, u32PanelHeight, FALSE);
  1338. #endif
  1339. #endif
  1340. if (error != GUI_SUCCESS)
  1341. {
  1342. mainapp_printf("Gui_Engine_Init() - GEL_Open failed = 0x%x\n", error);
  1343. return;
  1344. }
  1345. #ifdef CONFIG_SUPPORT_FLIP_HORIZ
  1346. extern UINT8 APP_GUIOBJ_Language_IsFlipHoriz(void);
  1347. GEL_RegisterFlipHorizCallback(APP_GUIOBJ_Language_IsFlipHoriz);
  1348. #endif
  1349. GUI_FUNC_CALL(GEL_SetMarqueeFpsAndStep(MARQUEE_TIMER_INTERVAL, MARQUEE_MOVE_STEP));
  1350. GUI_FUNC_CALL(GEL_SetFontInfo(TV_ui_font_info,TV_FONT_STYLE_NUMBER,
  1351. TV_string_info,TV_STR_ID_NUM, BASEFONT_SIZE,TV_UI_LANG_NUM,BASEFONT_CHARSPACING));
  1352. GUI_FUNC_CALL(GEL_SetBmpInfo(TV_bitmap_res));
  1353. UINT16 width, height;
  1354. error = GEL_GetOsdPlaneSize(&width, &height);
  1355. #ifdef CONFIG_PROJECTOR_ASPECT
  1356. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  1357. ITEM_OFFSET(APP_SETTING_Picture_t, Projectionzoom),
  1358. sizeof(g_stPictureData.Projectionzoom),
  1359. &(g_stPictureData.Projectionzoom));
  1360. MID_SetZoomAspect(g_stPictureData.Projectionzoom,g_stPictureData.Projectionzoom);
  1361. #endif
  1362. MID_PartitionList_Init(DeviceMountStatus_Callback);
  1363. MID_Mon_Init();
  1364. #ifdef SUPPORT_LED_FLASH
  1365. //creat led flash timer
  1366. APP_LED_Create_Flash_Task();
  1367. #endif
  1368. #ifdef CONFIG_SUPPORT_ACTION_SHOW_BLUE_SCREEN_EXCEPT_MEDIA
  1369. MID_DISP_DTVSetTVFEMuteColorByAPP(TRUE);
  1370. #else
  1371. MID_DISP_DTVSetTVFEMuteColorByAPP(FALSE);
  1372. #endif
  1373. #ifdef CONFIG_SUPPORT_NET_OTA
  1374. NET_OTA_SetFTPHost("192.168.0.1", 21, "TESTER", "TEST", "/OTA_Upgrade");
  1375. NET_OTA_RegisterCallback(NET_OTA_Event_Callback);
  1376. NET_OTA_StartUpdateMonitor();
  1377. #endif
  1378. }
  1379. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  1380. static void _MAINAPP_InitTimerBootup(void)
  1381. {
  1382. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_TVINFO, 0,
  1383. sizeof(APP_SETTING_TVInfo_t), &(g_stTVInfoData));
  1384. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  1385. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  1386. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, 0,
  1387. sizeof(APP_SETTING_Variational_t), &(g_stVariationalData));
  1388. #if defined(CONFIG_SUPPORT_SET_CLOCK_ONOFFTIME)|| defined (TEAC_ONOFF_TIMER_SUPPORT)
  1389. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  1390. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  1391. if ((g_stTVInfoData.WakeUpType == WAKE_TIMER_ONOFF_TIMER)
  1392. #ifdef AC_ON_AUTO_GET_TIME
  1393. &&(g_fBackgroundGetTime == FALSE)
  1394. #endif
  1395. )
  1396. { //set power on source if wake by Ontimer
  1397. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  1398. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  1399. g_stTVInfoData.WakeUpType = WAKE_TIMER_MAX;
  1400. if (g_stFeatureData.OnTime.RepeatMOde == APP_TIMER_ONOFF_TYPE_ONCE)
  1401. {
  1402. g_stFeatureData.OnTime.RepeatMOde = APP_TIMER_ONOFF_TYPE_OFF;
  1403. }
  1404. g_stVariationalData.Volume = g_stFeatureData.OnTime.OnVolume;
  1405. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, 0,
  1406. sizeof(APP_SETTING_Variational_t), &(g_stVariationalData));
  1407. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, 0,
  1408. sizeof(g_stVariationalData));
  1409. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_TVINFO, 0,
  1410. sizeof(APP_SETTING_TVInfo_t), &(g_stTVInfoData));
  1411. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_TVINFO, 0,
  1412. sizeof(g_stTVInfoData));
  1413. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  1414. sizeof(g_stFeatureData), &(g_stFeatureData));
  1415. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  1416. sizeof(g_stFeatureData));
  1417. APP_WAKEUP_SetBootFlag(FALSE);
  1418. APP_GUIOBJ_Source_SetAppSource(g_stFeatureData.OnTime.OnSource);
  1419. }
  1420. else
  1421. #endif
  1422. {
  1423. #ifdef AC_ON_AUTO_GET_TIME
  1424. if (g_fBackgroundGetTime == TRUE)
  1425. {
  1426. APP_BackgroundGetTime_SetTimeout();
  1427. }
  1428. else
  1429. #endif
  1430. {
  1431. if (g_stTVInfoData.WakeUpType == WAKE_TIMER_REMINDER)
  1432. {
  1433. g_stTVInfoData.WakeUpType = WAKE_TIMER_MAX;
  1434. APP_WAKEUP_SetBootFlag(FALSE);
  1435. APP_WAKEUP_RealPowerUp();
  1436. }
  1437. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, 0,
  1438. sizeof(g_stVariationalData),
  1439. &( g_stVariationalData));
  1440. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, 0,
  1441. sizeof(g_stVariationalData));
  1442. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_TVINFO, 0,
  1443. sizeof(APP_SETTING_TVInfo_t), &(g_stTVInfoData));
  1444. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_TVINFO, 0,
  1445. sizeof(g_stTVInfoData));
  1446. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  1447. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  1448. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  1449. sizeof(g_stChannelData));
  1450. }
  1451. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_DTV);
  1452. }
  1453. }
  1454. #endif
  1455. #ifdef CONFIG_SUPPORT_WIFI
  1456. void _MAINAPP_WifiRoutine(void *pParam)
  1457. {
  1458. mainapp_printf("[debug]%s %d\n",__FUNCTION__,__LINE__);
  1459. #ifdef CONFIG_SUPPORT_MULTI_DONGLE
  1460. char cmd[100] = {0};
  1461. #endif
  1462. //rcs can not check wifidongle
  1463. #ifdef CONFIG_BOOTUP_WITH_EXTRA_ROOTFS
  1464. struct stat buf;
  1465. while(-1 != stat("/rootfs_ext.tar.gz", &buf))
  1466. {
  1467. printf("system not init ok ");
  1468. GL_TaskSleep(100);
  1469. }
  1470. #endif
  1471. #ifdef CONFIG_SUPPORT_MULTI_DONGLE
  1472. Dongle_e Dongle_Select = MID_NWSI_WLAN_CheckWifiDongle();
  1473. MID_NWSI_WLAN_RemoveWifiModule(Dongle_Select);
  1474. memset(cmd, 0, 100);
  1475. sprintf(cmd, "ln -fs /bin/%s/wpa_supplicant /bin/wpa_supplicant", g_DongleMap[Dongle_Select].pDongleOutputString);
  1476. system(cmd);
  1477. memset(cmd, 0, 100);
  1478. sprintf(cmd, "ln -fs /etc/%s/* /etc", g_DongleMap[Dongle_Select].pDongleOutputString);
  1479. system(cmd);
  1480. memset(cmd, 0, 100);
  1481. sprintf(cmd, "ln -fs /tmp/%s/* /tmp", g_DongleMap[Dongle_Select].pDongleOutputString);
  1482. system(cmd);
  1483. if(Dongle_Select != Dongle_None)
  1484. system("./tmp/wifi_start.sh");
  1485. else
  1486. printf("Didn't insert dongle \n");
  1487. #endif
  1488. #ifdef CONFIG_SUPPORT_NET_SETTING
  1489. APP_Network_Init();
  1490. #endif
  1491. #ifdef CONFIG_SUPPORT_MIRACAST
  1492. MIRACAST_ModualCfg_t MIRACAST_ModualCfg =
  1493. {
  1494. .pfCallBack = _MAINAPP_MIRACAST_Callback
  1495. };
  1496. miracast_Init(&MIRACAST_ModualCfg);
  1497. #endif
  1498. bWifiDaemonInitOk = TRUE;
  1499. GL_TaskSelfDelete();
  1500. }
  1501. #endif
  1502. static int _MAINAPP_InitSysApp(UINT32* dTotalApp)
  1503. {
  1504. SYSAPP_IF_Initialize(TOTAL_SYS_APP_SIZE, apstSysAppInst);
  1505. *dTotalApp = TOTAL_SYS_APP_SIZE;
  1506. APP_RegionMgr_Init();
  1507. APP_GuiMgr_Set_Menu() ;
  1508. APP_GuiMgr_SwitchShareMenu(TOTAL_SYS_APP_SIZE);
  1509. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  1510. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  1511. APP_Source_Type_t SourceIndex = g_stUserInfoData.SourceIndex;
  1512. APP_GUIOBJ_Source_RecordStandbySource(SourceIndex);
  1513. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0,
  1514. sizeof(APP_SETTING_Setup_t), &(g_stSetupData));
  1515. #if 0
  1516. APP_SCARTIN_SetAutoSCART(g_stSetupData.AutoSCART);
  1517. if (g_stSetupData.AutoSCART == FALSE) // clear SCART PlugInStatus
  1518. {
  1519. APP_SCARTIN_SetAutoPlugInStatus(AUTO_PLUGIN_SCART0);
  1520. APP_SCARTIN_SetPlugStatus(AUTO_PLUGIN_SCART0);
  1521. }
  1522. #endif
  1523. #ifdef SUPPORT_FACTORY_AUTO_TEST
  1524. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  1525. {
  1526. if (g_stSetupData.AutoSCART == TRUE)
  1527. {
  1528. if (APP_SCARTIN_IsScartIn())
  1529. {
  1530. SourceIndex = APP_SOURCE_SCART;
  1531. APP_SCARTIN_SetAutoPlugInStatus(AUTO_PLUGIN_SCART0);
  1532. }
  1533. }
  1534. }
  1535. else
  1536. #endif
  1537. {
  1538. #if 0
  1539. if ((!g_stUserInfoData.AutoInstalled) && (g_stSetupData.AutoSCART == TRUE))
  1540. {
  1541. if (APP_SCARTIN_IsScartIn())
  1542. {
  1543. SourceIndex = APP_SOURCE_SCART;
  1544. APP_SCARTIN_SetAutoPlugInStatus(AUTO_PLUGIN_SCART0);
  1545. }
  1546. }
  1547. #endif
  1548. }
  1549. SourceIndex = APP_Factory_GetHotelModePowerSource(SourceIndex);
  1550. #ifdef CONFIG_ATV_SUPPORT
  1551. #ifdef NUMBER_KEY_WAKEUP_CHANNEL
  1552. extern UINT8 bNumberKeyPowerOn;
  1553. if (bNumberKeyPowerOn == TRUE)
  1554. {
  1555. SourceIndex = APP_SOURCE_ATV;
  1556. }
  1557. #endif
  1558. #endif
  1559. /*Initialize system app 1 by 1.*/
  1560. #ifdef SUPPORT_BOOT_SPEEDUP
  1561. #ifdef CONFIG_MEDIA_ENABLE
  1562. if (SourceIndex == APP_SOURCE_MEDIA || SourceIndex == APP_SOURCE_MEDIA1)
  1563. {
  1564. SYSAPP_IF_InitializeSysApp(SYS_APP_FILE_PLAYER, MainAppQueueHandle);
  1565. }
  1566. else
  1567. #endif
  1568. #ifdef CONFIG_SUPPORT_NETAPP
  1569. if (i == SYS_APP_NETWORK)
  1570. {
  1571. SYSAPP_IF_InitializeSysApp(i, MainAppQueueHandle);
  1572. }
  1573. else
  1574. #endif
  1575. #ifdef CONFIG_ATV_SUPPORT
  1576. {
  1577. SYSAPP_IF_InitializeSysApp(SYS_APP_ATV, MainAppQueueHandle);
  1578. }
  1579. #endif
  1580. #else
  1581. UINT8 i;
  1582. for (i = 0; i < TOTAL_SYS_APP_SIZE; i++)
  1583. {
  1584. SYSAPP_IF_InitializeSysApp(i, MainAppQueueHandle);
  1585. }
  1586. #endif
  1587. #ifdef CONFIG_SUPPORT_OTA_UPGRADE
  1588. APP_GUIOBJ_DVB_OTAPrompt_SetShowFlag(OtaShowPromt_FromStandby);
  1589. #endif
  1590. #ifdef CONFIG_BLUETOOTH_SUPPORT
  1591. Al_Bluetooth_Enable();
  1592. #endif
  1593. #ifdef CONFIG_SMART_MODULE_SUPPORT
  1594. Al_Smart_Enable();
  1595. #endif
  1596. #ifdef CONFIG_VEHICLE_MODULE_SUPPORT
  1597. Al_Vehicle_Enable();
  1598. #endif
  1599. #ifdef SUPPORT_CEC_TV
  1600. CECTV_ModualCfg_t CEC_ModualCfg =
  1601. {
  1602. .pfCallBack = _MAINAPP_CEC_Callback
  1603. };
  1604. CECTV_Init(&CEC_ModualCfg);
  1605. APP_HDMILink_Init();
  1606. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  1607. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  1608. if(g_stFeatureData.Enable_HDMILink == APP_SWITCH_ON)
  1609. {
  1610. #ifdef CONFIG_WAKE_UP_DEVICE_BY_POWER_ON_TV
  1611. tv_source_t eSrcPort = SRC_OTHERS;
  1612. switch(SourceIndex)//check hdmi port
  1613. {
  1614. case APP_SOURCE_HDMI:
  1615. eSrcPort = SRC_HDMI_1;
  1616. break;
  1617. case APP_SOURCE_HDMI1:
  1618. eSrcPort = SRC_HDMI_2;
  1619. break;
  1620. case APP_SOURCE_HDMI2:
  1621. eSrcPort = SRC_HDMI_3;
  1622. break;
  1623. case SRC_OTHERS:
  1624. default:
  1625. break;
  1626. }
  1627. CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_CHGSRC_TO_HDMI, eSrcPort);
  1628. #endif
  1629. CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_SET_OSD_LANGUAGE, g_stFeatureData.OSDLang);
  1630. }
  1631. #endif
  1632. /* initialize IR */
  1633. ir_SetMappingTable(stIR_map, dIR_map_size);
  1634. ir_LoadEventCode(0);
  1635. KP_LoadCustomerConfig();
  1636. ir_init(_MAINAPP_Ir_Callback);
  1637. #ifdef CONFIG_AUTO_USB_STORE_IRSEQ
  1638. AUTO_IF_Initialize(_MAINAPP_Ir_Callback);
  1639. #endif
  1640. #if defined(CONFIG_KEYPAD_SINGLE_REUSE)
  1641. #ifdef CONFIG_SUPPORT_SHOW_KEYPADMENU
  1642. ir_RegisterKpCallback(APP_GetSingleKeyPadEvent);
  1643. #endif
  1644. #elif defined (CONFIG_KEYPAD_FIVE_KEY_REUSE)
  1645. ir_RegisterKpCallback(_MAINAPP_KeyPad_FiveKey_Callback);
  1646. #endif
  1647. #ifdef CONFIG_SUPPORT_NES_GAME
  1648. joystick_init(_MAINAPP_Joystick_Callback);
  1649. #endif
  1650. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  1651. if (APP_WAKEUP_GetBootFlag() == TRUE)
  1652. {
  1653. mainapp_printf("[debug]%s %d\n",__FUNCTION__,__LINE__);
  1654. mainapp_printf("change source to DTV\n");
  1655. _MAINAPP_InitTimerBootup();
  1656. #ifdef CONFIG_DVB_SYSTEM_DVBT_SUPPORT
  1657. mainapp_printf("g_stVariationalData.DVBT_TVHdl is 0x%x\n\n\n\n\n\n",g_stVariationalData.DVBT_TVHdl);
  1658. #endif
  1659. #ifdef CONFIG_SUPPORT_SSU_UPGRADE
  1660. if (g_stTVInfoData.WakeUpType == WAKE_TIMER_SSU)
  1661. { DVBApp_SetBootAutoUpGrade(TRUE);
  1662. DVBApp_SetAU_Sate(AU_GoToUpgrade);
  1663. DVBApp_SetAutoUpgrade(TRUE);
  1664. #ifdef SUPPORT_SSU_ENHANCE_UPGRADE
  1665. APP_GUIOBJ_DVB_OTAPrompt_RevTimer();
  1666. #endif
  1667. g_stTVInfoData.WakeUpType = WAKE_TIMER_MAX;
  1668. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_TVINFO, 0,
  1669. sizeof(APP_SETTING_TVInfo_t), &(g_stTVInfoData));
  1670. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_TVINFO, 0,
  1671. sizeof(g_stTVInfoData));
  1672. }
  1673. #endif
  1674. }
  1675. else
  1676. #endif
  1677. {
  1678. #ifdef CONFIG_SUPPORT_SSU_UPGRADE
  1679. DVBApp_SetAU_Sate(AU_GoToUpgrade);
  1680. DVBApp_SetAutoUpgrade(FALSE);
  1681. #ifdef SUPPORT_SSU_ENHANCE_UPGRADE
  1682. APP_GUIOBJ_DVB_OTAPrompt_RevTimer();
  1683. #endif
  1684. #endif
  1685. #ifdef SUPPORT_CEC_TV
  1686. tv_source_t eSrcPort = SRC_UNKNOWN;
  1687. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  1688. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  1689. eSrcPort = CECTV_GetAutoPwrOnSrc();
  1690. if(g_stFeatureData.Enable_HDMILink == APP_SWITCH_ON
  1691. &&g_stFeatureData.HDMI_AutoPowerOn == APP_SWITCH_ON)
  1692. {
  1693. mainapp_printf("[%s:%d]HDMI CEC Power On Source = %d \n",__FUNCTION__,__LINE__,eSrcPort);
  1694. switch(eSrcPort)//check hdmi port
  1695. {
  1696. case SRC_HDMI_1:
  1697. SourceIndex = APP_SOURCE_HDMI;
  1698. break;
  1699. case SRC_HDMI_2:
  1700. SourceIndex = APP_SOURCE_HDMI1;
  1701. break;
  1702. case SRC_HDMI_3:
  1703. SourceIndex = APP_SOURCE_HDMI2;
  1704. break;
  1705. case SRC_OTHERS:
  1706. default:
  1707. break;
  1708. }
  1709. }
  1710. #endif
  1711. #ifdef CONFIG_HDMI_SUPPORT_MHL
  1712. MHLAppInstanceData_t eMHLAppData;
  1713. Cmd_Hdmi_GetMHLAppInstanceData(&eMHLAppData);
  1714. if(eMHLAppData.cbusConnected == TRUE)
  1715. {
  1716. APP_Source_Type_t eMhlSrc;
  1717. UINT8 IsMHLSoure;
  1718. APP_GOBJ_Source_CheckAndGetMHLSource(&IsMHLSoure,&eMhlSrc);
  1719. if(eMhlSrc>=APP_SOURCE_HDMI && APP_SOURCE_HDMI2>=eMhlSrc)
  1720. {
  1721. SourceIndex = eMhlSrc;
  1722. }
  1723. }
  1724. #endif
  1725. #if 0//CONFIG_CHIPID==0x531 //richie temp add to force YPbPr source when power on
  1726. SourceIndex = APP_SOURCE_YPBPR;
  1727. #endif
  1728. #if 0//def CONFIG_SMART_MODULE_SUPPORT
  1729. SourceIndex = APP_SOURCE_HDMI;
  1730. #endif
  1731. APP_GUIOBJ_Source_SetAppSource(SourceIndex);
  1732. APP_GUIOBJ_Source_SetSourceTransState(FALSE);
  1733. }
  1734. MAINAPP_RegisterFunc(APP_CustomerFuncStart, APP_CustomerFuncEnd);
  1735. return 0;
  1736. }
  1737. static int _MAINAPP_FinalizeSysApp(UINT32 dParam)
  1738. {
  1739. UINT32 dIndex = TOTAL_SYS_APP_SIZE;
  1740. APP_GUIOBJ_SleepTimer_SetTimeoutPowerOffStatus(FALSE);
  1741. MAINAPP_SetPowerOffState(TRUE);
  1742. /* Clear mute and power on UI */
  1743. if (MAIN_APP_SUCCESS == MAINAPP_GetActiveSystemAppIndex(&dIndex))
  1744. {
  1745. if (dIndex != TOTAL_SYS_APP_SIZE)
  1746. {
  1747. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  1748. dIndex, APP_GUIOBJ_MUTE,
  1749. APP_INTRA_EVENT_HIDE_MUTE, 0);
  1750. }
  1751. }
  1752. /* Finalize all system app */
  1753. {
  1754. UINT8 i;
  1755. for (i = 0; i < TOTAL_SYS_APP_SIZE; i++)
  1756. {
  1757. MAINAPP_FinalizeSystemApp(i);
  1758. }
  1759. }
  1760. #if defined (CONFIG_DTV_SUPPORT) || defined (CONFIG_ATV_SUPPORT)
  1761. /* Store data to flash */
  1762. if(((dParam&0xffff0000) & MAINAPP_DATABASE_NOSYNC) == MAINAPP_DATABASE_NOSYNC)
  1763. {
  1764. AL_FW_TermStoreDevice(al_false);
  1765. }
  1766. else
  1767. {
  1768. AL_FW_TermStoreDevice(al_true);
  1769. }
  1770. #endif
  1771. return 0;
  1772. }
  1773. static void _MAINAPP_HW_Finalize(UINT32 dParam)
  1774. {
  1775. Cmd_Tuner_PowerSaving();
  1776. #ifdef GPIO_LNB_POWER_CONTROL_SLEEP
  1777. Cmd_gpio_WriteOffLevel(GPIO_LNB_POWER_CONTROL_SLEEP);
  1778. #endif
  1779. //power off DVD
  1780. Cmd_gpio_WriteOffLevel(GPIO_DVD_STB);
  1781. Cmd_gpio_WriteOffLevel(GPIO_DVD_ON_OFF);
  1782. //Cmd_gpio_WriteOffLevel(GPIO_LED_G_ON_PIN);
  1783. #if 0 //mantis 0022204
  1784. GL_MutexLock(APP_Get_LedControl_Mutex());
  1785. Cmd_gpio_WriteOnLevel(GPIO_LED_R_ON_PIN);
  1786. Cmd_gpio_WriteOffLevel(GPIO_LED_G_ON_PIN);
  1787. GL_MutexUnlock(APP_Get_LedControl_Mutex());
  1788. #endif
  1789. }
  1790. static int _MAINAPP_SW_Finalize(UINT32 dParam)
  1791. {
  1792. //mute audio
  1793. //GL_TaskSleep(500);
  1794. AUDIO_DEVICE_POWERCTRL AudioPowerCtrl;
  1795. AudioPowerCtrl.flag = AUDIOPOWER_POWER_DOWN;
  1796. AudioPowerCtrl.POWERStatus = TRUE;
  1797. TVFE_Audio_SetDevicePower(&AudioPowerCtrl);
  1798. /* Terminate system setting */
  1799. AL_Setting_Close(APP_Data_UserSetting_Handle());
  1800. #ifdef CONFIG_AUTO_USB_STORE_IRSEQ
  1801. AUTO_IF_Finalize();
  1802. #endif
  1803. Cmd_NVMUninital();
  1804. #ifdef CONFIG_SUPPORT_NET_OTA
  1805. NET_OTA_StopUpdateMonitor();
  1806. #endif
  1807. #ifdef CONFIG_SUPPORT_NETWORK
  1808. Al_Network_Ctrl_Destroy();
  1809. #endif
  1810. //AL_SETTING_Terminate();
  1811. return 0;
  1812. }
  1813. /*****************************************************************************
  1814. ** FUNCTION : _MAINAPP_FW_Callback
  1815. **
  1816. ** DESCRIPTION :
  1817. ** Process messages received from AFW Framework
  1818. **
  1819. ** PARAMETERS :
  1820. ** event - Event sent by FW component
  1821. ** param - User parameter
  1822. **
  1823. ** RETURN VALUES:
  1824. ** None
  1825. *****************************************************************************/
  1826. void MAINAPP_FW_Callback(AFW_event_t event, void *param)
  1827. {
  1828. UINT32 message = 0xffffffff;
  1829. UINT32 dParam = 0;
  1830. UINT32 u32CurrentSysappIndex = TOTAL_SYS_APP_SIZE;
  1831. #ifdef CONFIG_SUPPORT_WIFI
  1832. Dongle_e Dongle_Org = Dongle_None;
  1833. Dongle_e Dongle_Check = Dongle_None;
  1834. APP_Source_Type_t eSourType = APP_SOURCE_MAX;
  1835. APP_GUIOBJ_Source_GetCurrSource(&eSourType);
  1836. #endif
  1837. MAINAPP_GetActiveSystemAppIndex(&u32CurrentSysappIndex);
  1838. /* Main app dispose */
  1839. switch (event)
  1840. {
  1841. case FW_DB_LOAD_DEFAULT:
  1842. message = FW_DB_LOAD_DEFAULT;
  1843. dParam = *(UINT32 *)param;
  1844. break;
  1845. case FW_USB_PLUGIN:
  1846. {
  1847. #ifdef CONFIG_SUPPORT_MULTI_DONGLE
  1848. char cmd[100] = {0};
  1849. #endif
  1850. #ifdef CONFIG_USB_RECOVER_SPOT_SUPPORT
  1851. //g_bFirstInsetUSB = FALSE;
  1852. //printf("[%s,%d]:receive FW_USB_PLUGIN msg!,u32CurrentSysappIndex = %d\n",__FUNCTION__,__LINE__,u32CurrentSysappIndex);
  1853. //if (u32CurrentSysappIndex == TOTAL_SYS_APP_SIZE)
  1854. {
  1855. g_bFirstInsetUSB = TRUE;
  1856. printf("[%s,%d]:receive FW_USB_PLUGIN msg!!!!!!!!!\n",__FUNCTION__,__LINE__);
  1857. }
  1858. #endif
  1859. #ifdef CONFIG_SUPPORT_NES_GAME
  1860. joystick_add_dev();
  1861. #endif
  1862. #ifdef CONFIG_SUPPORT_WIFI
  1863. dParam = *(UINT32 *)param;
  1864. if(dParam== 0 && WIFI_DONGLE!=Dongle_RDA_5995)
  1865. {
  1866. if(MID_NWSI_GetIFFlag(E_MID_NWSI_CONNECT_TYPE_WIRELESS) & E_MID_NWSI_IF_UP)
  1867. *(UINT32 *)param=2;//not wifi dongle
  1868. else
  1869. {
  1870. Dongle_Check = MID_NWSI_WLAN_CheckWifiDongle();
  1871. if(Dongle_Check != Dongle_None)
  1872. {
  1873. #ifdef CONFIG_SUPPORT_MULTI_DONGLE
  1874. memset(cmd, 0, 100);
  1875. sprintf(cmd, "ln -fs /bin/%s/wpa_supplicant /bin/wpa_supplicant", g_DongleMap[Dongle_Check].pDongleOutputString);
  1876. system(cmd);
  1877. memset(cmd, 0, 100);
  1878. sprintf(cmd, "ln -fs /etc/%s/* /etc", g_DongleMap[Dongle_Check].pDongleOutputString);
  1879. system(cmd);
  1880. memset(cmd, 0, 100);
  1881. sprintf(cmd, "ln -fs /tmp/%s/* /tmp", g_DongleMap[Dongle_Check].pDongleOutputString);
  1882. system(cmd);
  1883. #endif
  1884. MID_NWSI_WLAN_InsertWifiModule(Dongle_Check);
  1885. }
  1886. else
  1887. printf("insert unsupported dongle \n");
  1888. }
  1889. }
  1890. #endif
  1891. }
  1892. break;
  1893. case FW_USB_PLUGOUT:
  1894. {
  1895. #ifdef CONFIG_SUPPORT_MULTI_DONGLE
  1896. char cmd[100] = {0};
  1897. #endif
  1898. #ifdef CONFIG_SUPPORT_NES_GAME
  1899. joystick_remove_dev();
  1900. #endif
  1901. #ifdef CONFIG_SUPPORT_WIFI
  1902. Dongle_Org = MID_NWSI_WLAN_GetWifiDongle();
  1903. Dongle_Check = MID_NWSI_WLAN_CheckWifiDongle();
  1904. bWifiDongle = FALSE;
  1905. if(Dongle_Check != Dongle_Org && Dongle_Check == Dongle_None && WIFI_DONGLE!=Dongle_RDA_5995)
  1906. {
  1907. bWifiDongle = TRUE;
  1908. MID_NWSI_WLAN_RemoveWifiModule(Dongle_Org);
  1909. #ifdef CONFIG_SUPPORT_MULTI_DONGLE
  1910. memset(cmd, 0, 100);
  1911. sprintf(cmd, "rm -rf /bin/wpa_supplicant");
  1912. system(cmd);
  1913. if(Dongle_Org == Dongle_AIC_8800)
  1914. {
  1915. memset(cmd, 0, 100);
  1916. sprintf(cmd, "rm -rf /tmp/aic_load_fw.ko");
  1917. system(cmd);
  1918. }
  1919. memset(cmd, 0, 100);
  1920. sprintf(cmd, "rm -rf /tmp/%s.ko", g_DongleMap[Dongle_Org].pKoName);
  1921. system(cmd);
  1922. #endif
  1923. }
  1924. #endif
  1925. }
  1926. break;
  1927. default:
  1928. break;
  1929. }
  1930. if (message != 0xffffffff)
  1931. {
  1932. MAINAPP_SendGlobalEvent(message, dParam);
  1933. return;
  1934. }
  1935. /* ATV sys app message dispose */
  1936. else if (SYS_APP_ATV == u32CurrentSysappIndex
  1937. && SP_SUCCESS == ATVApp_fw_callback(event, param))
  1938. {
  1939. return;
  1940. }
  1941. #ifdef CONFIG_MEDIA_ENABLE
  1942. /* FILE sys app message dispose */
  1943. else if (SYS_APP_FILE_PLAYER == u32CurrentSysappIndex
  1944. && SP_SUCCESS == FILEApp_fw_callback(event, param))
  1945. {
  1946. return;
  1947. }
  1948. #endif
  1949. #ifdef CONFIG_SUPPORT_NETAPP
  1950. /* NETWORK sys app message dispose */
  1951. else if (SYS_APP_NETWORK == u32CurrentSysappIndex
  1952. && SP_SUCCESS == NetworkApp_fw_callback(event, param))
  1953. {
  1954. return;
  1955. }
  1956. #endif
  1957. /* Other sys app message dispose */
  1958. return;
  1959. }
  1960. al_uint32 MAINAPP_FW_GetContext(AL_FW_Context_Type_t ContextType, al_uint32 opera, al_void * pContext, al_uint32 Param)
  1961. {
  1962. al_uint8 *Tempiso639language = al_null;
  1963. al_uint8 u8LacalRegionId = 0xff;
  1964. #if 0
  1965. al_uint8 u8TimeZone = AL_TIME_GMT_OFFSET_AUTO;
  1966. #endif
  1967. #ifdef CONFIG_SUPPORT_PVR
  1968. AL_Return_t ret_val = AL_SUCCESS;
  1969. al_uint32 offset = 0;
  1970. #endif
  1971. if (pContext == NULL)
  1972. {
  1973. return AL_FAILURE;
  1974. }
  1975. al_uint32 ContextTypeOP = ContextType|opera;
  1976. switch (ContextTypeOP)
  1977. {
  1978. case FW_CONTEXT_TYPE_ISO639LANGUAGE1 | FW_CONTEXT_OP_TYPE_READ:
  1979. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  1980. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  1981. Tempiso639language = APP_Language_GetISO639ByIndx(g_stFeatureData.DigitalTTLang, APP_DATA_LANG_TYPE_TELETEXT);
  1982. if (Tempiso639language != al_null)
  1983. {
  1984. memcpy((al_uint8 *)pContext,(al_uint8 *)Tempiso639language,3);
  1985. }
  1986. break;
  1987. case FW_CONTEXT_TYPE_ISO639LANGUAGE2 | FW_CONTEXT_OP_TYPE_READ:
  1988. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  1989. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  1990. Tempiso639language = APP_Language_GetISO639_2ByIndx(g_stFeatureData.DigitalTTLang, APP_DATA_LANG_TYPE_TELETEXT);
  1991. if (Tempiso639language != al_null)
  1992. {
  1993. memcpy((al_uint8 *)pContext,(al_uint8 *)Tempiso639language,3);
  1994. }
  1995. break;
  1996. #ifdef SUPPORT_FREEVIEW_NZ
  1997. case FW_CONTEXT_TYPE_CELLID | FW_CONTEXT_OP_TYPE_READ:
  1998. {
  1999. al_uint32 u32Cellid = 0;
  2000. FrontendCmd_t front;
  2001. front.cmd = FRONTEND_CMD_GET_CELL_ID;
  2002. front.param = &u32Cellid;
  2003. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  2004. *(al_uint32 *)pContext = u32Cellid;
  2005. }
  2006. break;
  2007. #endif
  2008. case FW_CONTEXT_TYPE_TIME_ZONE | FW_CONTEXT_OP_TYPE_READ:
  2009. #if 0
  2010. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  2011. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  2012. u8TimeZone = g_stFeatureData.TimeZone;
  2013. *((al_uint8 *)pContext) = u8TimeZone;
  2014. #else
  2015. //APP_GUIOBJ_DateTime_GetTimeZoneValue((al_uint8 *)pContext);
  2016. #endif
  2017. break;
  2018. case FW_CONTEXT_TYPE_TIME_OFFSET | FW_CONTEXT_OP_TYPE_READ:
  2019. {
  2020. al_int32 i32TimeVal = 0;
  2021. al_uint8 u8TimeZone = 0;
  2022. //APP_GUIOBJ_DateTime_GetTimeZoneValue(&u8TimeZone);
  2023. i32TimeVal = (((int)u8TimeZone - 24) * 60 * 30);
  2024. *((al_int32 *)pContext) = i32TimeVal;
  2025. }
  2026. break;
  2027. case FW_CONTEXT_TYPE_CHECK_FORCE_DST | FW_CONTEXT_OP_TYPE_READ:
  2028. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  2029. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  2030. #ifdef CONFIG_AUS_DVB_SYSTEM
  2031. if (APP_Area_Check_Area_Aus() == TRUE)
  2032. {
  2033. if((g_stFeatureData.DST)&&(APP_GUIOBJ_DateTime_CheckDSTOnOff()))
  2034. {
  2035. *((al_uint8 *)pContext) = TRUE;
  2036. }
  2037. else
  2038. {
  2039. *((al_uint8 *)pContext) = FALSE;
  2040. }
  2041. }
  2042. else
  2043. #endif
  2044. *((al_uint8 *)pContext) = g_stFeatureData.DST;
  2045. break;
  2046. #ifdef CONFIG_DTV_SUPPORT
  2047. case FW_CONTEXT_TYPE_CHECK_AUS_AREA | FW_CONTEXT_OP_TYPE_READ:
  2048. if (APP_Area_Check_Area_Aus() == TRUE)
  2049. {
  2050. *((al_uint8 *)pContext) = TRUE;
  2051. }
  2052. else
  2053. {
  2054. *((al_uint8 *)pContext) = FALSE;
  2055. }
  2056. break;
  2057. #endif
  2058. case FW_CONTEXT_TYPE_COUNTRY_ID | FW_CONTEXT_OP_TYPE_READ:
  2059. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  2060. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  2061. u8LacalRegionId = g_stChannelData.Country;
  2062. *((al_uint8 *)pContext) = u8LacalRegionId;
  2063. break;
  2064. case FW_CONTEXT_TYPE_COUNTRY_REGION | FW_CONTEXT_OP_TYPE_READ:
  2065. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO, 0,
  2066. sizeof(APP_SETTING_SystemInfo_t), &(g_stSysInfoData));
  2067. u8LacalRegionId = g_stSysInfoData.CountryRegion;
  2068. *((al_uint8 *)pContext) = u8LacalRegionId;
  2069. break;
  2070. case FW_CONTEXT_TYPE_CHECK_OSDLANGUAGEFRENCH | FW_CONTEXT_OP_TYPE_READ:
  2071. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  2072. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  2073. if (g_stFeatureData.OSDLang == APP_OSDLANG_FRENCH)
  2074. {
  2075. *((al_bool *)pContext) = TRUE;
  2076. }
  2077. else
  2078. {
  2079. *((al_bool *)pContext) = FALSE;
  2080. }
  2081. break;
  2082. #ifdef CONFIG_SUPPORT_PVR
  2083. case FW_CONTEXT_TYPE_PR | FW_CONTEXT_OP_TYPE_READ:
  2084. {
  2085. APP_SETTING_PVRInfo_t stpvr;
  2086. al_int8 Num = AL_PR_GetMaxNoOfReminders();
  2087. PR_details_t PVRData[Num];
  2088. memset(&stpvr, 0x00, sizeof stpvr);
  2089. ret_val = AL_Setting_Reload(APP_Data_UserSetting_Handle(), SYS_SET_ID_PVR);
  2090. if (ret_val != AL_SUCCESS)
  2091. {
  2092. mainapp_printf("[error]%s %d\n",__FUNCTION__,__LINE__);
  2093. return ret_val;
  2094. }
  2095. ret_val = AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PVR, 0,
  2096. sizeof(APP_SETTING_PVRInfo_t), &stpvr);
  2097. if (ret_val != AL_SUCCESS)
  2098. {
  2099. mainapp_printf("[error]%s %d\n",__FUNCTION__,__LINE__);
  2100. return ret_val;
  2101. }
  2102. for (offset=0; offset < (al_uint32)Num; offset++)
  2103. {
  2104. PVRData[offset].details.db_type =(AL_DB_EDBType_t)stpvr.pvrinfo[offset].DBtype;
  2105. PVRData[offset].details.rem_type = stpvr.pvrinfo[offset].Remtype;
  2106. PVRData[offset].details.enable = stpvr.pvrinfo[offset].enable;
  2107. PVRData[offset].details.occupied = stpvr.pvrinfo[offset].occupied;
  2108. PVRData[offset].details.rem_details.handle = stpvr.pvrinfo[offset].serhdl;
  2109. PVRData[offset].details.rem_details.event_end_time_insec = stpvr.pvrinfo[offset].end_time_in_sec;
  2110. PVRData[offset].details.start_local_time_secs = stpvr.pvrinfo[offset].start_time_in_secs;
  2111. PVRData[offset].details.snooze_time_secs = stpvr.pvrinfo[offset].snooze_time_in_sec;
  2112. PVRData[offset].details.gmt_offset= stpvr.pvrinfo[offset].gmt_offset;
  2113. #ifdef SUPPORT_EVENT_PROGRAM_TITLE
  2114. memcpy(PVRData[offset].details.prog_name,stpvr.pvrinfo[offset].prog_name,sizeof(stpvr.pvrinfo[offset].prog_name));
  2115. #endif
  2116. }
  2117. memcpy((PR_details_t*)pContext, PVRData, sizeof(PR_details_t)*Num);
  2118. return ret_val;
  2119. }
  2120. break;
  2121. case FW_CONTEXT_TYPE_PR | FW_CONTEXT_OP_TYPE_WRITE:
  2122. {
  2123. APP_SETTING_PVRInfo_t stpvr;
  2124. PR_details_t * PVRData;
  2125. AL_Return_t ret_val = AL_SUCCESS;
  2126. PVRData = (PR_details_t *)pContext;
  2127. memset(&stpvr, 0x00, sizeof stpvr);
  2128. if (PVRData != al_null && Param < AL_PR_GetMaxNoOfReminders())
  2129. {
  2130. stpvr.pvrinfo[Param].DBtype = PVRData->details.db_type;
  2131. stpvr.pvrinfo[Param].Remtype = PVRData->details.rem_type;
  2132. stpvr.pvrinfo[Param].enable = PVRData->details.enable;
  2133. stpvr.pvrinfo[Param].occupied = PVRData->details.occupied;
  2134. stpvr.pvrinfo[Param].serhdl = PVRData->details.rem_details.handle;
  2135. stpvr.pvrinfo[Param].end_time_in_sec = PVRData->details.rem_details.event_end_time_insec;
  2136. stpvr.pvrinfo[Param].start_time_in_secs = PVRData->details.start_local_time_secs;
  2137. stpvr.pvrinfo[Param].snooze_time_in_sec = PVRData->details.snooze_time_secs;
  2138. stpvr.pvrinfo[Param].gmt_offset= PVRData->details.gmt_offset;
  2139. #ifdef SUPPORT_EVENT_PROGRAM_TITLE
  2140. memcpy(stpvr.pvrinfo[Param].prog_name,PVRData->details.prog_name,sizeof(stpvr.pvrinfo[Param].prog_name));
  2141. #endif
  2142. }
  2143. ret_val = AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_PVR,
  2144. ITEM_OFFSET(APP_SETTING_PVRInfo_t, pvrinfo[Param]),
  2145. sizeof(stpvr.pvrinfo[Param]),
  2146. &stpvr.pvrinfo[Param]);
  2147. if (ret_val != AL_SUCCESS)
  2148. {
  2149. mainapp_printf("[error]%s %d\n",__FUNCTION__,__LINE__);
  2150. return ret_val;
  2151. }
  2152. ret_val = AL_Setting_Store(APP_Data_UserSetting_Handle(),SYS_SET_ID_PVR,
  2153. ITEM_OFFSET(APP_SETTING_PVRInfo_t, pvrinfo[Param]),
  2154. sizeof(stpvr.pvrinfo[Param]));
  2155. if (ret_val != AL_SUCCESS)
  2156. {
  2157. mainapp_printf("[error]%s %d\n",__FUNCTION__,__LINE__);
  2158. return ret_val;
  2159. }
  2160. return ret_val;
  2161. }
  2162. break;
  2163. #endif
  2164. case FW_CONTEXT_TYPE_TIME_DIFFER | FW_CONTEXT_OP_TYPE_WRITE:
  2165. g_stChannelData.Timediff = *((al_int32 *)pContext) ;
  2166. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  2167. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  2168. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0, sizeof(APP_SETTING_Channel_t));
  2169. break;
  2170. case FW_CONTEXT_TYPE_TIME_DIFFER | FW_CONTEXT_OP_TYPE_READ:
  2171. AL_Setting_Reload(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL);
  2172. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  2173. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  2174. *((al_int32 *)pContext) = g_stChannelData.Timediff;
  2175. break;
  2176. case FW_CONTEXT_TYPE_GET_IOP_TIME | FW_CONTEXT_OP_TYPE_READ:
  2177. {
  2178. //extern void APP_MAIN_GetIopSleepTime(UINT8 a[]);
  2179. //APP_MAIN_GetIopSleepTime(pContext);
  2180. }
  2181. break;
  2182. case FW_CONTEXT_TYPE_GET_CHANNEL_LOCK | FW_CONTEXT_OP_TYPE_READ:
  2183. {
  2184. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER,0,
  2185. sizeof(APP_SETTING_FactoryUser_t), &g_stFactoryUserData);
  2186. if(g_stFactoryUserData.Function.n_Funct_HotelMode)
  2187. {
  2188. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL,0,
  2189. sizeof(APP_SETTING_FactoryHotel_t), &g_stFactoryHotelData);
  2190. *((al_int32 *)pContext) = g_stFactoryHotelData.ChannelLock;
  2191. }
  2192. else
  2193. {
  2194. *((al_int32 *)pContext) = FALSE;
  2195. }
  2196. }
  2197. break;
  2198. case FW_CONTEXT_TYPE_GET_DBNVM_HANDER | FW_CONTEXT_OP_TYPE_READ:
  2199. {
  2200. mainapp_printf("_____________________________________[%s] line %d\n",__FUNCTION__,__LINE__);
  2201. AL_DB_Init_t InitParam = {_MAINAPP_DBNVMReadCallBack, _MAINAPP_DBNVMWriteCallBack};
  2202. memcpy(pContext, &InitParam, sizeof InitParam);
  2203. }
  2204. break;
  2205. case FW_CONTEXT_TYPE_GET_DBRESTORE_SETTER | FW_CONTEXT_OP_TYPE_READ:
  2206. mainapp_printf("_____________________________________[%s] line %d\n",__FUNCTION__,__LINE__);
  2207. *((al_int32 *)pContext) = (al_uint32)_MAINAPP_ResetDefVal;
  2208. break;
  2209. case FW_CONTEXT_TYPE_GET_SAVE_TIME| FW_CONTEXT_OP_TYPE_READ:
  2210. {
  2211. struct timeval temp;
  2212. gettimeofday(&temp, NULL);
  2213. *((al_int32 *)pContext) = (al_uint32)temp.tv_sec;
  2214. break;
  2215. }
  2216. #ifdef CONFIG_QSD
  2217. case FW_CONTEXT_TYPE_GET_Current_Source | FW_CONTEXT_OP_TYPE_READ:
  2218. {
  2219. APP_Source_Type_t eSourceType = APP_SOURCE_MAX;
  2220. InputSrc_t eSourcePort = INPUTSRC_END;
  2221. APP_GUIOBJ_Source_GetMidSource(&eSourceType, &eSourcePort);
  2222. *((al_uint32 *)pContext) = (al_uint32)eSourceType;
  2223. }
  2224. break;
  2225. #endif
  2226. #ifdef CONFIG_VCHIP_SUPPORT
  2227. case FW_CONTEXT_TYPE_RRT_USERSET | FW_CONTEXT_OP_TYPE_READ:
  2228. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0,
  2229. sizeof(APP_SETTING_Setup_t), &(g_stSetupData));
  2230. *((al_int32 *)pContext) = g_stSetupData.VchipValue;
  2231. break;
  2232. case FW_CONTEXT_TYPE_RRT_USERSET | FW_CONTEXT_OP_TYPE_WRITE:
  2233. g_stSetupData.VchipValue = *((al_int32 *)pContext) ;
  2234. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0,
  2235. sizeof(APP_SETTING_Setup_t), &(g_stSetupData));
  2236. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0, sizeof(APP_SETTING_Setup_t));
  2237. break;
  2238. #endif
  2239. default:
  2240. return AL_FAILURE;
  2241. }
  2242. return AL_SUCCESS;
  2243. }
  2244. void PQ_Init(void)
  2245. {
  2246. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0, sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  2247. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER,0, sizeof(APP_SETTING_FactoryUser_t), &g_stFactoryUserData);
  2248. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PQSETTING,0,sizeof(APP_SETTING_PqSetting_t),&(g_stPqSettingData));
  2249. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0, sizeof(APP_SETTING_Setup_t), &(g_stSetupData));
  2250. int value;
  2251. // Gamma table
  2252. int Mode = (INT32)AL_FLASH_GetWBMode();
  2253. value = AL_FLASH_GetWBGammaTable(Mode);
  2254. UINT8 nSwitchState = AL_FLASH_GetGammaType();
  2255. if(nSwitchState)
  2256. {
  2257. MID_TVFE_SetColorTmpGammaTableIndex(value);
  2258. }
  2259. // Noise reduction
  2260. value = AL_FLASH_GetPictureNR();
  2261. MID_TVFE_SetPictureNR( value );
  2262. MID_TVFE_SetPictureMPEGNR( value );
  2263. // Color Matrix
  2264. value = AL_FLASH_GetPictureColorMatrix();
  2265. MID_TVFE_SetPictureColorMatrix( value );
  2266. // Dithering level
  2267. value = AL_FLASH_GetPictureDithering();
  2268. MID_TVFE_SetPictureDithering( value );
  2269. if(value == PQ_DITHER_METHOD_1)
  2270. {
  2271. MID_TVFE_SetPictureDitheringLevel( AL_FLASH_GetPictureDitheringBit() );
  2272. }
  2273. else if(value == PQ_DITHER_METHOD_2)
  2274. {
  2275. MID_TVFE_SetPictureDitheringLevel( AL_FLASH_GetPictureDitheringBit_M2() );
  2276. }
  2277. if(value != PQ_DITHER_DISABLE)
  2278. {
  2279. MID_TVFE_SetPictureDitheringAlgorithm(AL_FLASH_GetPictureDitheringAlgorithm());
  2280. }
  2281. // Dynamic contrast
  2282. DynamicContrast_t stDynamic;
  2283. AL_FLASH_GetDynamicContrastALL(&stDynamic);
  2284. int nLevel = stDynamic.n_PicMode_DynCon_DynamicContrastlevel;
  2285. MID_TVFE_SetPictureDynamicContrastEnable( nLevel ? 1 : 0);
  2286. MID_TVFE_SetPictureContrastLevel( stDynamic.n_PicMode_DynCon_ContrastLevel[nLevel] );
  2287. MID_TVFE_SetPictureChromaLevel( stDynamic.n_PicMode_DynCon_ChromaLevel[nLevel] );
  2288. MID_TVFE_SetPictureAlphaMode1( stDynamic.n_PicMode_DynCon_Alphamode1[nLevel] );
  2289. MID_TVFE_SetPictureAlphaMode2( stDynamic.n_PicMode_DynCon_Alphamode2[nLevel] );
  2290. MID_TVFE_SetPictureAlphaMode3( stDynamic.n_PicMode_DynCon_Alphamode3[nLevel] );
  2291. MID_TVFE_SetPictureAlphaMode4( stDynamic.n_PicMode_DynCon_Alphamode4[nLevel] );
  2292. MID_TVFE_SetPictureFleshToneLevel( stDynamic.n_PicMode_DynCon_FleshToneLevel );
  2293. //Dynamic BL
  2294. Backlight_t BacklightSetting;
  2295. BacklightSetting.Backlight_total_Stage = 100; // set total backlight stage = 100
  2296. if(AL_FLASH_GetDynamicBackLight())
  2297. {
  2298. MID_TVFE_SetPictureDynamicBacklight(TRUE);
  2299. }
  2300. else
  2301. {
  2302. MID_TVFE_SetPictureDynamicBacklight(FALSE);
  2303. BacklightSetting.OSD_backlight_index = AL_FLASH_GetBackLight();
  2304. Cmd_SetLcdBackLight(BacklightSetting);
  2305. }
  2306. }
  2307. /*****************************************************************************
  2308. ** FUNCTION : MAINAPP_InitFlow
  2309. **
  2310. ** DESCRIPTION :
  2311. ** whole system initialize flow
  2312. **
  2313. ** PARAMETERS :
  2314. ** param : total sys app number
  2315. **
  2316. ** RETURN VALUES:
  2317. ** None
  2318. *****************************************************************************/
  2319. int MAINAPP_InitFlow(void *param)
  2320. {
  2321. UINT8 DitheringBit = 0;
  2322. UINT8 Algorithm = 0;
  2323. UINT8 bStatus;
  2324. /* if last power status is on or last memory */
  2325. if (AL_FLASH_GetACAutoPowerOn() > 0)
  2326. {
  2327. tv_SetBootRomAutoPowerOn(al_true);
  2328. }
  2329. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  2330. /*< when system is wake up by timer(don't press power key). set g_fBootFromIOPTimer is TRUE */
  2331. if (tv_GetBootType() != 0)
  2332. {
  2333. mainapp_printf("[debug]%s %d\n",__FUNCTION__,__LINE__);
  2334. mainapp_printf("The system is auto wake up\n\n");
  2335. APP_WAKEUP_SetBootFlag(TRUE);
  2336. AL_Power_SetWakeUpTimer(0,0);
  2337. }
  2338. #endif
  2339. AL_Time_BootOnUpdateTime();
  2340. _MAINAPP_SW_Init();
  2341. /* initialize message filter. */
  2342. _MAINAPP_InitSysApp((UINT32 *)param);
  2343. /* initialize PQ relative function */
  2344. PQ_Init();
  2345. /*create App Infra update timer.*/
  2346. SYSAPP_TIMER_CreateTimer();
  2347. #ifdef CONFIG_SUPPORT_NES_GAME
  2348. joystick_add_dev();
  2349. #endif
  2350. #if 0 // newfontmask
  2351. #ifdef CONFIG_MEDIA_ENABLE
  2352. /*set subtitle font info to sub lib.*/
  2353. AL_Multimedia_Player_SetSubtitleFontInfo(TV_ui_font_info, TV_FONT_BLOCK_NUM, TV_FONT_STYLE_NUMBER, TV_UI_LANG_NUM);
  2354. #endif
  2355. #endif
  2356. #ifdef SUPPORT_SFU_AUTO_TEST
  2357. Console_sfu_Cbk_t Console_SUF_Cfg =
  2358. {
  2359. .pfCallBack = APP_Console_SUF_Parser
  2360. };
  2361. al_console_sfu_init(&Console_SUF_Cfg);
  2362. extern void event_Console(UINT32 sig, void *info, void *unused);
  2363. event_Console(0, NULL, NULL);
  2364. #endif
  2365. #ifdef SUPPORT_ATS
  2366. Console_ats_Cbk_t Console_ATS_Cfg =
  2367. {
  2368. .pfCallBack = APP_Console_ATS_Parser
  2369. };
  2370. al_console_ats_init(&Console_ATS_Cfg);
  2371. #endif
  2372. #ifdef SUPPORT_CONSOLE_AUTO_TEST
  2373. Console_autotest_Cbk_t Console_AUTOTEST_Cfg =
  2374. {
  2375. .pfCallBack = APP_Console_AUTOTEST_Parser
  2376. };
  2377. al_console_autotest_init(&Console_AUTOTEST_Cfg);
  2378. if(g_stFactoryUserData.uFacPMode)
  2379. APP_Console_AutoTest_Action(TRUE);
  2380. #endif
  2381. #ifdef CONFIG_QSD // for S2 chip test using
  2382. extern void event_Console(UINT32 sig, void *info, void *unused);
  2383. event_Console(0, NULL, NULL);
  2384. tv_SetBootRomAutoPowerOn(al_true);
  2385. #endif
  2386. #ifndef CONFIG_SYSTEM_WATCHDOG_DISABLE
  2387. if(g_stFactoryUserData.Function.n_Funct_WatchDog == 0)//remove watchdog
  2388. {
  2389. extern void wdog_remove(void);
  2390. wdog_remove();
  2391. }
  2392. #endif
  2393. #ifdef CONFIG_EXTIC_DIGITALAMP_TAS5711
  2394. DIG_TAS5711_SW_Init();
  2395. #endif
  2396. #ifdef CONFIG_EXTIC_DIGITALAMP_NTP8849
  2397. DIG_NTP8849_SW_Init();
  2398. #endif
  2399. #ifdef CONFIG_EXTIC_DIGITALAMP_WA6819B
  2400. DIG_WA6819B_SW_Init();
  2401. #endif
  2402. #ifdef CONFIG_BT_RDA5856
  2403. g_SystemPowerOnReadyNeedReconnectBT = TRUE;
  2404. #endif
  2405. if (g_stFactoryUserData.n_FactSet_BurningMode == 1)
  2406. {
  2407. #if defined(CONFIG_SUPPORT_BURN_MUSIC)
  2408. g_stFactoryUserData.n_FactSet_BurningMode = 0;
  2409. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER,
  2410. ITEM_OFFSET(APP_SETTING_FactoryUser_t, n_FactSet_BurningMode),
  2411. sizeof(g_stFactoryUserData.n_FactSet_BurningMode),&(g_stFactoryUserData.n_FactSet_BurningMode));
  2412. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER,
  2413. ITEM_OFFSET(APP_SETTING_FactoryUser_t, n_FactSet_BurningMode),
  2414. sizeof(g_stFactoryUserData.n_FactSet_BurningMode));
  2415. #else
  2416. APP_Cul_Fm_CheckAndStartBurningMode();
  2417. APP_Video_OSD_PQSet(APP_VIDEO_OSD_ITEM_BACKLIGHT, 100);
  2418. APP_SleepTimer_SetDetectFlag(FALSE);
  2419. #endif
  2420. }
  2421. #ifdef CONFIG_AUTO_DETECT_VALID_SOURCE
  2422. APP_GUIOBJ_Source_AutoDetectSourceInit();
  2423. #endif
  2424. bStatus = AL_FLASH_GetPictureDithering();
  2425. // printf("\n\n\n\n MAINAPP_InitFlow bStatus = %d \n\n\n",bStatus);
  2426. MID_TVFE_SetPictureDithering(bStatus);
  2427. if(bStatus!= 0)
  2428. {
  2429. if (bStatus == PQ_DITHER_METHOD_1)
  2430. {
  2431. DitheringBit = AL_FLASH_GetPictureDitheringBit();
  2432. }
  2433. else
  2434. {
  2435. DitheringBit = AL_FLASH_GetPictureDitheringBit_M2();
  2436. }
  2437. MID_TVFE_SetPictureDitheringLevel(DitheringBit);
  2438. Algorithm = AL_FLASH_GetPictureDitheringAlgorithm();
  2439. MID_TVFE_SetPictureDitheringAlgorithm(Algorithm);
  2440. }
  2441. return SP_SUCCESS;
  2442. }
  2443. #ifdef CONFIG_GCOV_APPLICATION
  2444. extern int gcov_power_off_flag;
  2445. #endif
  2446. int MAINAPP_EnterStandby(EnterStandbyType_e type)
  2447. {
  2448. int fd_mmio, shutdown;
  2449. if (type == ENTERSTANDBY_UPGRADE)
  2450. {
  2451. shutdown = 1;
  2452. ioctl(kmfdev, KMF_IOC_SHUTDOWN, &shutdown);
  2453. //LED control
  2454. #ifdef SUPPORT_LED_FLASH
  2455. APP_LED_Flash_Timer_Set(LED_FLASH_TYPE_MAX, 0);
  2456. APP_LED_SetLEDBasicLight(0);
  2457. #endif
  2458. /* SW Mute audio and video output */
  2459. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, APP_SOURCE_MAX);
  2460. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, APP_SOURCE_MAX);
  2461. APP_Audio_SetMuteDACHeadohone(TRUE);
  2462. APP_Audio_SetMuteDACSpeak(TRUE);
  2463. Cmd_gpio_WriteOnLevel(GPIO_AMP_MUTE_PIN);
  2464. Cmd_gpio_WriteOffLevel(GPIO_AMP_EN_PIN);
  2465. Cmd_gpio_WriteOffLevel(GPIO_AMP_STB_PIN);
  2466. /* HW set when upgrade power off */
  2467. _MAINAPP_SW_Finalize(type);
  2468. _MAINAPP_HW_Finalize(type);
  2469. }
  2470. else
  2471. {
  2472. shutdown = 2;
  2473. ioctl(kmfdev, KMF_IOC_SHUTDOWN, &shutdown);
  2474. }
  2475. tv_SetSysTimetoRTC();
  2476. if((fd_mmio = open("/dev/sismmio", O_RDWR))== -1)
  2477. {
  2478. mainapp_printf("open /dev/sismmio fails!!\n");
  2479. return SP_ERR_FAILURE;
  2480. }
  2481. mainapp_printf("*** Power Off ***\n");
  2482. #ifdef CONFIG_GCOV_APPLICATION
  2483. gcov_power_off_flag = true;
  2484. while(1);
  2485. #else
  2486. ioctl(fd_mmio, SISMMIO_REBOOT, NULL);
  2487. #endif
  2488. close(fd_mmio);
  2489. return SP_SUCCESS;
  2490. }
  2491. /*****************************************************************************
  2492. ** FUNCTION : MAINAPP_FinalizeFlow
  2493. **
  2494. ** DESCRIPTION :
  2495. ** whole system finalize flow
  2496. **
  2497. ** PARAMETERS :
  2498. ** dParam - Finalize flow
  2499. **
  2500. ** RETURN VALUES:
  2501. ** None
  2502. *****************************************************************************/
  2503. int MAINAPP_FinalizeFlow(UINT32 dParam)
  2504. {
  2505. /* Mute audio and video output */
  2506. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, APP_SOURCE_MAX);
  2507. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, APP_SOURCE_MAX);
  2508. APP_Audio_SetMuteDACHeadohone(TRUE);
  2509. APP_Audio_SetMuteDACSpeak(TRUE);
  2510. Cmd_gpio_WriteOnLevel(GPIO_AMP_MUTE_PIN);
  2511. Cmd_gpio_WriteOffLevel(GPIO_AMP_EN_PIN);
  2512. Cmd_gpio_WriteOffLevel(GPIO_AMP_STB_PIN);
  2513. int shutdown;
  2514. shutdown = 1;
  2515. ioctl(kmfdev, KMF_IOC_SHUTDOWN, &shutdown);
  2516. //LED control
  2517. #ifdef SUPPORT_LED_FLASH
  2518. APP_LED_Flash_Timer_Set(LED_FLASH_TYPE_MAX, 0);
  2519. APP_LED_SetLEDBasicLight(0);
  2520. #endif
  2521. _MAINAPP_FinalizeSysApp(dParam);
  2522. MAINAPP_Finalize();
  2523. _MAINAPP_SW_Finalize(dParam);
  2524. _MAINAPP_HW_Finalize(dParam);
  2525. /* if last power status is off or last memory */
  2526. if (AL_FLASH_GetACAutoPowerOn() != AC_AUTO_POWERON_ON)
  2527. {
  2528. tv_SetBootRomAutoPowerOn(al_false);
  2529. }
  2530. MAINAPP_EnterStandby(ENTERSTANDBY_NOMAL);
  2531. return SP_SUCCESS;
  2532. }