network_app.c 69 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4. #include <types.h>
  5. #include "app_infra/sysapp_if.h"
  6. //#include "app_infra/cbk_event.h"
  7. #include "sysapp_table.h"
  8. #include "app_event.h"
  9. #include "app_guiobj_source.h"
  10. #include "app_guiobj_popmsg.h"
  11. #include "app_guiobj_sleeptimer.h"
  12. #include "app_guiobj_mainmenu.h"
  13. #include "app_gui.h"
  14. #include "app_guiobj_mute.h"
  15. #include "app_data_setting.h"
  16. #include "util_ioctl.h"
  17. #include "app_audio.h"
  18. #include "main_app.h"
  19. #include "app_factory.h"
  20. #include "network_app.h"
  21. #include "network_gui_object_table.h"
  22. #ifdef SUPPORT_CEC_TV
  23. #include "umf_cec.h"
  24. #endif
  25. #include "app_guiobj_hdmilink.h"
  26. //#include "airplay_app_gui_data.h"
  27. #include "app_dvb_event.h"
  28. #ifdef CONFIG_SUPPORT_MIRACAST
  29. #include "wfd_if.h"
  30. #include "wfd_core.h"
  31. #include "app_guiobj_mute.h"
  32. #include "umf_miracast.h"
  33. #endif
  34. #if defined (CONFIG_SUPPORT_DLNA)
  35. #include "net_video_flow_ctrl.h"
  36. #endif
  37. #if defined (CONFIG_SUPPORT_NET_PLAY_RTSP) || defined(CONFIG_SUPPORT_NET_PLAY_HTTP)
  38. #include "netctrl_video_flow_ctrl.h"
  39. #endif
  40. #include "app_video.h"
  41. #ifdef CONFIG_SUPPORT_DLNA
  42. #include "dlna_mw_if.h"
  43. #endif
  44. #ifdef CONFIG_SUPPORT_WIFI
  45. #include "netsetting_if.h"
  46. #endif
  47. #include "app_guiobj_adjust.h"
  48. #include "app_guiobj_Network_Information.h"
  49. #include "app_menumgr.h"
  50. #include "app_guiobj_fm_factory.h"
  51. #include "NET_homepage_gui.h"
  52. #include "app_sysset.h"
  53. #include "app_guiobj_cul_fm_factorySetting_new.h"
  54. #ifdef CONFIG_SUPPORT_NET_OTA
  55. #include "net_ota.h"
  56. #include "app_usb_upgrade.h"
  57. #endif
  58. #ifdef CONFIG_SUPPORT_NEW_AIRPLAY
  59. #include "airplay.h"
  60. #endif
  61. //#define NETWORK_GUI_OBJECT_TABLE_DEFINE_HERE
  62. #define NET_DEBUG
  63. #ifdef NET_DEBUG
  64. #define net_printf(fmt, arg...) printf("[NETWORK]"fmt,##arg)
  65. #else
  66. #define net_printf(a,...) do{}while(0)
  67. #endif
  68. //pthread_t nMiracastThread;
  69. static int Network_App_OnCreate(void** ppPrivateData);
  70. static int Network_App_OnDestroy(void** ppPrivateData);
  71. static int Network_App_OnRun(void* pPrivateData, UINT32 dParam);
  72. static int Network_App_OnTerminate(void* pPrivateData, UINT32 dParam);
  73. static int Network_App_OnTimerUpdate(void* pPrivateData);
  74. static int Network_App_OnEvent(void* pPrivateData, UINT32 dMessage, UINT32 dParam);
  75. extern void _APP_GUIOBJ_Sound_SetMuteStatus();
  76. static UINT8 g_u8SourceTrastTimer = 0;
  77. #ifdef CONFIG_SUPPORT_NET_SETTING
  78. static pthread_t gNetworkConnect_task;
  79. #endif
  80. #if (defined CONFIG_SUPPORT_WIFI) && (defined CONFIG_SUPPORT_NET_SETTING)
  81. static UINT8 g_WifiConnecting = 0;
  82. #endif
  83. #ifdef CONFIG_SUPPORT_DLNA
  84. static GL_Semaphore_t gDlnaSema = NULL;
  85. static pthread_t gDlnaInitThread;
  86. static bool gDlnaInitThreadValid = false;
  87. static bool gDlnaInitThreadRunning = false;
  88. static bool gDlnaInited = false;
  89. #endif
  90. #ifdef CONFIG_SUPPORT_MIRACAST
  91. extern Boolean bWifiDongle;
  92. #endif
  93. #define URL_LEN 128
  94. #ifdef SUPPORT_CEC_TV
  95. static INT32 g_u32Mutekeydelaytime = 10;
  96. static INT32 g_u32MuteIconHandle = 10;
  97. static INT32 MUTE_KEY_INTERVAL = 10;
  98. #endif
  99. #ifdef CONFIG_SUPPORT_NET_PLAY_RTSP
  100. static void _Play_RTSP_Stream()
  101. {
  102. char szRtpUrl[URL_LEN] = "\0";
  103. UINT8 u8Mute = 0;
  104. memset(szRtpUrl, '\0', URL_LEN * sizeof(char));
  105. snprintf(szRtpUrl, URL_LEN * sizeof(char), "%s", "rtsp://192.168.0.100:8092/28MX.flv");
  106. NetCtrl_SetMediaInfo(szRtpUrl);
  107. /* mute/unmute audio */
  108. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  109. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  110. u8Mute = g_stUserInfoData.Mute;
  111. APP_Audio_SetMute(u8Mute, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_NET);
  112. APP_Video_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_NET);
  113. }
  114. #elif defined(CONFIG_SUPPORT_NET_PLAY_HTTP)
  115. static void _Play_HTTP_Stream()
  116. {
  117. char szRtpUrl[URL_LEN] = "\0";
  118. UINT8 u8Mute = 0;
  119. memset(szRtpUrl, '\0', URL_LEN * sizeof(char));
  120. snprintf(szRtpUrl, URL_LEN * sizeof(char), "%s", "http://192.168.0.100:8088/28.ts");
  121. NetCtrl_SetMediaInfo(szRtpUrl);
  122. /* mute/unmute audio */
  123. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  124. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  125. u8Mute = g_stUserInfoData.Mute;
  126. APP_Audio_SetMute(u8Mute, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_NET);
  127. APP_Video_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_NET);
  128. }
  129. #endif
  130. #ifdef CONFIG_SUPPORT_NET_SETTING
  131. static void _APP_GUIOBJ_NetworkInformation_Connect(void *param)
  132. {
  133. #ifdef CONFIG_SUPPORT_WIFI
  134. Al_APPW_t *pAPPW = NULL;
  135. int retry_count = 0;
  136. MID_NWSI_MAC_Addr_t mac;
  137. #endif
  138. pthread_detach(pthread_self());
  139. #if (defined CONFIG_SUPPORT_WIFI) && (defined CONFIG_SUPPORT_NET_SETTING)
  140. g_WifiConnecting = TRUE;
  141. #endif
  142. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0,
  143. sizeof(APP_SETTING_Setup_t), &(g_stSetupData));
  144. switch (g_stSetupData.NetworkConnectMode)
  145. {
  146. #ifdef CONFIG_SUPPORT_ETHERNET
  147. case e_AL_Network_Mode_Ethernet:
  148. Al_Network_Ctrl_Set_ConnectMode(e_AL_Network_Mode_Ethernet);
  149. Al_Network_Ctrl_SetDhcpStatic(e_AL_Network_Mode_Ethernet, g_stSetupData.EthernetConnectMode, &g_stSetupData.IPSetting);
  150. break;
  151. #endif
  152. #ifdef CONFIG_SUPPORT_WIFI
  153. case e_AL_Network_Mode_Wireless:
  154. {
  155. printf("e_AL_Network_Mode_Wireless =%d\n",g_stSetupData.WiFiSetting.bConnectedWifi);
  156. while(((MID_NWSI_GetMAC(E_MID_NWSI_CONNECT_TYPE_WIRELESS, &mac) != 0)
  157. || ((MID_NWSI_GetIFFlag(E_MID_NWSI_CONNECT_TYPE_WIRELESS) & E_MID_NWSI_IF_UP) != E_MID_NWSI_IF_UP))
  158. && retry_count < 40)
  159. {
  160. usleep(200000);
  161. retry_count ++;
  162. printf("wait dongle firmware ready\n");
  163. }
  164. Al_Network_Ctrl_Set_ConnectMode(e_AL_Network_Mode_Wireless);
  165. if(g_stSetupData.WiFiSetting.bConnectedWifi)
  166. {
  167. pAPPW = &g_stSetupData.WiFiSetting.WiFiPassword.APPW[0];
  168. Al_Network_Ctrl_SetIPMode(e_AL_IPMode_Auto);
  169. printf("@@@@@@@@@@@@@@@@ %s %d %d%d%d%d%d%d%d%d%d %d\n",g_stSetupData.WiFiSetting.ConnectAPData.name, pAPPW->PWlen, pAPPW->PassWord[0],pAPPW->PassWord[1],pAPPW->PassWord[2],pAPPW->PassWord[3],
  170. pAPPW->PassWord[4],pAPPW->PassWord[5],pAPPW->PassWord[6],pAPPW->PassWord[7],pAPPW->PassWord[8],pAPPW->PassWord[9]);
  171. if(Al_Network_Ctrl_ConnectAP(g_stSetupData.WiFiSetting.ConnectAPData, pAPPW->PWlen, pAPPW->PassWord) == AL_SUCCESS)
  172. {
  173. Al_Network_Ctrl_SetDhcpStatic(e_AL_Network_Mode_Wireless, g_stSetupData.EthernetConnectMode, &g_stSetupData.IPSetting);
  174. }
  175. }
  176. }
  177. break;
  178. #endif
  179. default:
  180. break;
  181. }
  182. gNetworkConnect_task = 0;
  183. #if (defined CONFIG_SUPPORT_WIFI) && (defined CONFIG_SUPPORT_NET_SETTING)
  184. g_WifiConnecting = FALSE;
  185. #endif
  186. pthread_exit(NULL);
  187. }
  188. #endif
  189. /******************************************************************************/
  190. /**
  191. * @brief
  192. * @param
  193. * @return
  194. *
  195. ******************************************************************************/
  196. #if ((defined CONFIG_SUPPORT_WIFI) || (defined CONFIG_SUPPORT_ETHERNET)) && (defined CONFIG_SUPPORT_NET_SETTING)
  197. void Network_App_Reconnect(void)
  198. {
  199. pthread_attr_t AVAttr;
  200. int pthread_kill_err=ESRCH;
  201. pthread_attr_init(&AVAttr);
  202. pthread_attr_setstacksize(&AVAttr, 1*1024*1024);
  203. if(gNetworkConnect_task!=0)
  204. pthread_kill_err=pthread_kill(gNetworkConnect_task, 0);
  205. if(pthread_kill_err == ESRCH)
  206. {
  207. if(pthread_create(&gNetworkConnect_task, &AVAttr, (void *)_APP_GUIOBJ_NetworkInformation_Connect, NULL) !=0)
  208. {
  209. printf("Network_Connect pthread_create fail\n");
  210. }
  211. }
  212. pthread_attr_destroy(&AVAttr);
  213. }
  214. #endif
  215. #if (defined CONFIG_SUPPORT_WIFI) && (defined CONFIG_SUPPORT_NET_SETTING)
  216. void Network_App_DisconnectWifi(void)
  217. {
  218. int retry_count = 0;
  219. while(g_WifiConnecting && retry_count < 60)
  220. {
  221. usleep(200000);
  222. retry_count ++;
  223. printf("wait wifi connect finish \n");
  224. }
  225. Al_Network_Ctrl_Set_ConnectMode(e_AL_Network_Mode_None);
  226. Al_Network_Ctrl_DisconnectAP();
  227. }
  228. UINT8 Network_App_GetWifiConnectStatus()
  229. {
  230. return g_WifiConnecting;
  231. }
  232. #endif
  233. /******************************************************************************/
  234. /**
  235. * @brief
  236. * @param
  237. * @return
  238. *
  239. ******************************************************************************/
  240. static int NET_DestroyPartialObjects(bool bIsCleanAll)
  241. {
  242. int i = 0;
  243. UINT32 u32TotalObj;
  244. UINT8 u8FilteredObj = 0;
  245. UINT32 u32GuiObjID[NET_GUIOBJ_MAX];
  246. UINT32 u32CloseGuiObjID[NET_GUIOBJ_MAX] = {0};
  247. /*
  248. when we call this api to destroty all gui object, the the current gui object will not
  249. implement lose foucus function,this means that some ui resource will not free,so
  250. create a null gui object to let the current gui object lost focus--gadenia
  251. */
  252. if(bIsCleanAll)
  253. {
  254. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_NETWORK, NET_GUIOBJ_NULL, 0);
  255. }
  256. if (SYSAPP_GOBJ_GetTotalCreatedObjects(SYS_APP_NETWORK, &u32TotalObj) \
  257. == SYSTEM_APP_INDEX_ERROR)
  258. {
  259. net_printf("%s() %d\n", __FUNCTION__, __LINE__);
  260. return SP_ERR_FAILURE;
  261. }
  262. for (i = u32TotalObj - 1; i >= 0; i--)
  263. {
  264. if (SYSAPP_GOBJ_GetObjectIDByIndex(SYS_APP_NETWORK, i , &u32GuiObjID[u8FilteredObj]) \
  265. == SYSTEM_APP_INDEX_ERROR)
  266. {
  267. net_printf("%s() %d\n", __FUNCTION__, __LINE__);
  268. return SP_ERR_FAILURE;
  269. }
  270. if (
  271. (u32GuiObjID[u8FilteredObj] == NET_GUIOBJ_HOMEPAGE
  272. || u32GuiObjID[u8FilteredObj] == APP_GUIOBJ_MUTE
  273. || u32GuiObjID[u8FilteredObj] == NET_GUIOBJ_POPMSG
  274. )
  275. && (!bIsCleanAll)
  276. )
  277. {
  278. continue;
  279. }
  280. u8FilteredObj++;
  281. }
  282. for (i = u8FilteredObj - 1; i >= 0; i--)
  283. {
  284. u32CloseGuiObjID[u8FilteredObj - i - 1] = u32GuiObjID[i];
  285. if(u32GuiObjID[i] == APP_GUIOBJ_MUTE)
  286. {
  287. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_NETWORK,
  288. APP_GUIOBJ_MUTE, APP_INTRA_EVENT_HIDE_MUTE, 0);
  289. }
  290. }
  291. SYSAPP_GOBJ_DestroyPartialGUIObjects(SYS_APP_NETWORK, u32CloseGuiObjID, u8FilteredObj);
  292. return SP_SUCCESS;
  293. }
  294. SysAppInstDef stNetwork_Inst =
  295. {
  296. SYS_APP_NETWORK,
  297. Network_App_OnCreate,
  298. Network_App_OnDestroy,
  299. Network_App_OnRun,
  300. Network_App_OnTerminate,
  301. Network_App_OnTimerUpdate,
  302. Network_App_OnEvent,
  303. SYSTEM_IDLE, //system state.
  304. NETWORK_GUI_Obj_List, //GUI object table
  305. NET_GUIOBJ_MAX, //GUI object table size
  306. NULL, //System Application Infrastructure (should not be modified)
  307. NULL //System Application private data (created in OnInitialize function)
  308. };
  309. static bool g_bOpenHomeMenuAfterCloseNetMenu = FALSE;
  310. static PopmsgParam_t stPopupWaitingList[Network_APP_POP_MSG_MAX-Network_APP_POP_MSG_NONE];
  311. static UINT32 g_u32OldPopup = Network_APP_POP_MSG_NONE;
  312. static UINT32 g_dCurPopup = Network_APP_POP_MSG_NONE;
  313. static UINT32 g_u32PopupWaitingList = 0;
  314. INT32 Network_App_SchedulePopup(PopmsgParam_t Popup)
  315. {
  316. UINT32 u32CurPopup = Network_APP_POP_MSG_NONE;
  317. UINT8 bTimeoutFlag = 0;
  318. switch (Popup.eType)
  319. {
  320. case POPMSG_TYPE_CONFIRM:
  321. u32CurPopup = Popup.extend.stConfirm.eConfirmType;
  322. break;
  323. case POPMSG_TYPE_PWD:
  324. u32CurPopup = Popup.extend.stPwd.ePwdType;
  325. break;
  326. case POPMSG_TYPE_PROMPT:
  327. u32CurPopup = Popup.extend.stPrompt.ePromptType;
  328. if (Popup.extend.stPrompt.iTimeout > 0)
  329. {
  330. if (g_dCurPopup == u32CurPopup)
  331. {
  332. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_NETWORK,
  333. APP_GLOBAL_EVENT_POPMSG_RESET_TIMEOUT,
  334. Popup.extend.stPrompt.iTimeout);
  335. return 0;
  336. }
  337. bTimeoutFlag = 1;
  338. }
  339. break;
  340. default:
  341. return 0;
  342. }
  343. if (u32CurPopup > Network_APP_POP_MSG_NONE)
  344. {
  345. if (bTimeoutFlag == 0)
  346. {
  347. g_u32PopupWaitingList |= 1 << (u32CurPopup - Network_APP_POP_MSG_NONE);
  348. stPopupWaitingList[u32CurPopup-Network_APP_POP_MSG_NONE] = Popup;
  349. }
  350. if (u32CurPopup > g_u32OldPopup)
  351. {
  352. g_u32OldPopup = u32CurPopup;
  353. if (APP_MenuMgr_Exist_Main_Menu()
  354. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_SOURCE)
  355. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_SOURCE_CEC)
  356. )
  357. {
  358. g_u32OldPopup = Network_APP_POP_MSG_NONE;
  359. g_dCurPopup = u32CurPopup;
  360. return 0;
  361. }
  362. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_POPMSG))
  363. {
  364. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, NET_GUIOBJ_POPMSG);
  365. }
  366. APP_MenuMgr_SetMsgPopup(TRUE);
  367. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_NETWORK, NET_GUIOBJ_POPMSG, (UINT32)&Popup);
  368. }
  369. }
  370. else
  371. {
  372. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_POPMSG))
  373. {
  374. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, NET_GUIOBJ_POPMSG);
  375. }
  376. APP_MenuMgr_SetMsgPopup(TRUE);
  377. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_NETWORK, NET_GUIOBJ_POPMSG, (UINT32)&Popup);
  378. }
  379. g_dCurPopup = u32CurPopup;
  380. return 1;
  381. }
  382. INT32 Network_App_ClosePopup(UINT32 u32ClosePopup, UINT32 dMessage)
  383. {
  384. UINT32 dCheckFlag;
  385. APP_MenuMgr_SetMsgPopup(FALSE);
  386. if (u32ClosePopup > Network_APP_POP_MSG_NONE)
  387. {
  388. if (u32ClosePopup == g_u32OldPopup)
  389. {
  390. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_POPMSG))
  391. {
  392. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, NET_GUIOBJ_POPMSG);
  393. }
  394. }
  395. if (dMessage != UI_EVENT_NULL)
  396. {
  397. SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_NETWORK, dMessage, g_dCurPopup);
  398. }
  399. g_u32PopupWaitingList &= ~(1 << (u32ClosePopup - Network_APP_POP_MSG_NONE));
  400. if (u32ClosePopup == g_u32OldPopup)
  401. {
  402. g_u32OldPopup = Network_APP_POP_MSG_NONE;
  403. g_dCurPopup = Network_APP_POP_MSG_NONE;
  404. for (dCheckFlag = Network_APP_POP_MSG_MAX - 1;
  405. dCheckFlag > Network_APP_POP_MSG_NONE; dCheckFlag--)
  406. {
  407. if (g_u32PopupWaitingList & (1 << (dCheckFlag - Network_APP_POP_MSG_NONE)))
  408. {
  409. Network_App_SchedulePopup(stPopupWaitingList[
  410. dCheckFlag-Network_APP_POP_MSG_NONE]);
  411. break;
  412. }
  413. }
  414. }
  415. }
  416. else
  417. {
  418. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_POPMSG))
  419. {
  420. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, NET_GUIOBJ_POPMSG);
  421. }
  422. if (dMessage != UI_EVENT_NULL)
  423. {
  424. SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_NETWORK, dMessage, g_dCurPopup);
  425. }
  426. if (g_u32OldPopup != Network_APP_POP_MSG_NONE)
  427. {
  428. g_u32OldPopup = Network_APP_POP_MSG_NONE;
  429. }
  430. g_dCurPopup = Network_APP_POP_MSG_NONE;
  431. if (dMessage == UI_EVENT_EXIT) //use g_stPopMsgParam.stParam.dParam1 to indicate that no need to pop scheculed pop.
  432. {
  433. return 1;
  434. }
  435. for (dCheckFlag = Network_APP_POP_MSG_MAX - 1; dCheckFlag > Network_APP_POP_MSG_NONE; dCheckFlag--)
  436. {
  437. if (g_u32PopupWaitingList & (1 << (dCheckFlag - Network_APP_POP_MSG_NONE)))
  438. {
  439. Network_App_SchedulePopup(stPopupWaitingList[
  440. dCheckFlag-Network_APP_POP_MSG_NONE]);
  441. break;
  442. }
  443. }
  444. }
  445. return 1;
  446. }
  447. /*****************************************************************************
  448. ** FUNCTION : Network_App_IsPopupExist
  449. **
  450. ** DESCRIPTION :
  451. ** Judge popmsg is exist
  452. **
  453. ** PARAMETERS :
  454. ** u32TargetPopup - popmsg type
  455. **
  456. ** RETURN VALUES:
  457. ** TRUE - exist
  458. ** FALSE - not exist
  459. *****************************************************************************/
  460. UINT8 Network_App_IsPopupExist(UINT32 u32TargetPopup)
  461. {
  462. if (u32TargetPopup == g_u32OldPopup)
  463. {
  464. return TRUE;
  465. }
  466. else
  467. {
  468. if((u32TargetPopup > Network_APP_POP_MSG_NONE)
  469. && (g_u32PopupWaitingList & (1 << (u32TargetPopup - Network_APP_POP_MSG_NONE))))
  470. {
  471. return TRUE;
  472. }
  473. else
  474. {
  475. return FALSE;
  476. }
  477. }
  478. }
  479. static void Network_App_ShowPopup(Network_AppPopMsgType_t ePopType)
  480. {
  481. PopmsgParam_t stPopup;
  482. memset(&stPopup, 0x0, sizeof(PopmsgParam_t));
  483. switch (ePopType)
  484. {
  485. case Network_APP_POP_MSG_FLIP:
  486. stPopup.eType = POPMSG_TYPE_CONFIRM;
  487. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT | POPMSG_EXIT_RECALL;
  488. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  489. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_FLIP;
  490. stPopup.extend.stConfirm.u8Default = POPMSG_YES;
  491. break;
  492. #ifdef CONFIG_SUPPORT_MIRACAST
  493. case Network_APP_POP_MSG_CONNECTING:
  494. stPopup.eType = POPMSG_TYPE_PROMPT;
  495. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  496. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  497. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_WFD_CONNECTING;
  498. stPopup.extend.stPrompt.iTimeout = 3;
  499. break;
  500. case Network_APP_POP_MSG_EXIT:
  501. stPopup.eType = POPMSG_TYPE_CONFIRM;
  502. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  503. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  504. stPopup.extend.stConfirm.eConfirmType = POPMSG_PROMPT_WFD_EXIT;
  505. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  506. break;
  507. case Network_APP_POP_MSG_NETWORK_ERROR:
  508. stPopup.eType = POPMSG_TYPE_PROMPT;
  509. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  510. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  511. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_WFD_NETWORK_ERROR;
  512. stPopup.extend.stPrompt.iTimeout = 3;
  513. break;
  514. #endif
  515. #ifdef CONFIG_SUPPORT_DLNA
  516. case Network_APP_POP_MSG_DLNA_MSG:
  517. stPopup.eType = POPMSG_TYPE_PROMPT;
  518. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  519. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  520. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_DLNA_MESSAGE;
  521. break;
  522. #endif
  523. #ifdef CONFIG_SUPPORT_NET_OTA
  524. case Network_APP_POP_ERASE_WHOLE_FLASH_OTA:
  525. stPopup.eType = POPMSG_TYPE_CONFIRM;
  526. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT | POPMSG_EXIT_RECALL;
  527. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  528. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_OTA;
  529. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  530. break;
  531. case Network_APP_POP_FTP_FILE_DOWNLOAD_WAITING:
  532. stPopup.eType = POPMSG_TYPE_PROMPT;
  533. stPopup.u16ReturnType = GUI_OBJECT_NO_POST_ACTION ;
  534. stPopup.extend.stPrompt.iTimeout = 0;
  535. stPopup.extend.stPrompt.ePromptType = POPMSG_FTP_FILE_DOWNLOAD_WAITING;
  536. break;
  537. #endif
  538. case Network_APP_POP_MSG_NOT_SUPPORT:
  539. stPopup.eType = POPMSG_TYPE_PROMPT;
  540. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  541. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  542. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_UNSUPPORT_FILE;
  543. stPopup.extend.stPrompt.iTimeout = 2;
  544. break;
  545. default:
  546. return;
  547. }
  548. if (stNetwork_Inst.bAppState == SYSTEM_IDLE)
  549. {
  550. return;
  551. }
  552. Network_App_SchedulePopup(stPopup);
  553. }
  554. #ifdef CONFIG_SUPPORT_MIRACAST
  555. //extern INT32 _MainApp_IsWFDSysAppRunning(void);
  556. INT32 WFD_App_CallbackFunc(WFD_CallbackType_e eCallbackType, UINT32 dParam)
  557. {
  558. UINT32 dMsgType = CBK_EVENT_MAX;
  559. net_printf("~~~~~~~~eCallbackType is [%d] ~~~~~dParam is [%d]\n", eCallbackType, dParam);
  560. switch (eCallbackType)
  561. {
  562. case WFD_CBK_SOURCE_KNOCK:
  563. {
  564. #if 0
  565. int sdRet = SYSTEM_APP_SUCCESFUL;
  566. sdRet = _MainApp_IsWFDSysAppRunning();
  567. printf("_MainApp_IsWFDSysAppRunning sdRet[%d]",sdRet);
  568. if(sdRet == 0)
  569. {
  570. return SYSTEM_APP_ONRUN_FAILED;
  571. }
  572. else if(sdRet == 1)
  573. {
  574. MAINAPP_SendGlobalEvent(CBK_EVENT_WFD_SOURCE_KNOCK,dParam);
  575. return SYSTEM_APP_SUCCESFUL;
  576. }
  577. else if(sdRet == 2)
  578. {
  579. dMsgType = CBK_EVENT_WFD_SOURCE_KNOCK;
  580. }
  581. #endif
  582. dMsgType = CBK_EVENT_WFD_SOURCE_KNOCK;
  583. }
  584. break;
  585. case WFD_CBK_LINK_SUCCESS:
  586. dMsgType = CBK_EVENT_WFD_LINK_SUCCESS;
  587. break;
  588. case WFD_CBK_LINK_SUCCESS_NO_VIDEO:
  589. dMsgType = CBK_EVENT_WFD_LINK_SUCCESS_NO_VIDEO;
  590. break;
  591. case WFD_CBK_LINK_DISCONNECTED:
  592. dMsgType = CBK_EVENT_WFD_LINK_DISCONNECTED;
  593. break;
  594. case WFD_CBK_SOURCE_SOURCE_TEARDOWN:
  595. dMsgType = CBK_EVENT_WFD_SOURCE_TEARDOWN;
  596. break;
  597. default:
  598. break;
  599. }
  600. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_NETWORK, dMsgType, dParam);
  601. //SYSAPP_IF_SendGlobalEvent(&stWFDAppInst, dMsgType, dParam);
  602. return SYSTEM_APP_SUCCESFUL;
  603. }
  604. #endif
  605. #if defined (CONFIG_SUPPORT_DLNA) ||defined (CONFIG_SUPPORT_NET_PLAY_RTSP) || defined(CONFIG_SUPPORT_NET_PLAY_HTTP)
  606. BOOL SysApp_Network_AL_CallBackFuc(AL_NET_PLAYER_Event_t Event)
  607. {
  608. net_printf("\n\n\n\n------only test ----callback message from al middleware\n");
  609. net_printf("[%s] 0x%x\n\n\n", __FUNCTION__, Event);
  610. switch (Event)
  611. {
  612. case NET_PLAYER_AV_EVENT_INITOK:
  613. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_NETWORK, (NET_GLOBAL_EVENT_MEDIA_INITOK|PASS_TO_SYSAPP), 0);
  614. break;
  615. case NET_PLAYER_AV_EVENT_INIT_FAILED:
  616. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_NETWORK, (NET_GLOBAL_EVENT_MEDIA_INIT_FAIL|PASS_TO_SYSAPP), 0);
  617. break;
  618. case NET_PLAYER_AV_EVENT_DECODE_START:
  619. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_NETWORK, (NET_GLOBAL_EVENT_MEDIA_DECODE_START|PASS_TO_SYSAPP), 0);
  620. break;
  621. case NET_PLAYER_AV_EVENT_PLAY_DONE:
  622. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_NETWORK, (NET_GLOBAL_EVENT_MEDIA_PLAY_DONE|PASS_TO_SYSAPP), 0);
  623. break;
  624. case NET_PLAYER_PIC_EVENT_DECODE_START:
  625. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_NETWORK, (NET_GLOBAL_EVENT_MEDIA_PIC_DECODE_START|PASS_TO_SYSAPP), 0);
  626. break;
  627. case NET_PLAYER_PIC_EVENT_DECODE_FINISH:
  628. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_NETWORK, (NET_GLOBAL_EVENT_MEDIA_PIC_DECODE_FINISH|PASS_TO_SYSAPP), 0);
  629. break;
  630. case NET_PLAYER_PIC_EVENT_DECODE_ERROR:
  631. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_NETWORK, (NET_GLOBAL_EVENT_MEDIA_PIC_DECODE_ERROR|PASS_TO_SYSAPP), 0);
  632. break;
  633. default:
  634. net_printf("[%s] Unknown message type received.\n", __FUNCTION__);
  635. break;
  636. }
  637. return TRUE;
  638. }
  639. #endif
  640. #ifdef CONFIG_SUPPORT_DLNA
  641. INT32 Dlna_App_CallbackFunc(DLNA_MW_CallbackType_e eCallbackType, UINT32 dParam)
  642. {
  643. UINT32 dMsgType = CBK_EVENT_DLNA_MW_EVENT_MAX;
  644. printf("~~~~~~~~eCallbackType is [%d] ~~~~~dParam is [%d]\n", eCallbackType, dParam);
  645. switch (eCallbackType)
  646. {
  647. case DLNA_MW_CBK_DMS_CONTENT_LIST_ERROR:
  648. dMsgType = CBK_EVENT_DLNA_CONTENT_LIST_ERROR;
  649. break;
  650. case DLNA_MW_CBK_DMS_CONTENT_LIST_DONE:
  651. dMsgType = CBK_EVENT_DLNA_CONTENT_LIST_DONE;
  652. break;
  653. case DLNA_MW_CBK_DMS_ADD:
  654. dMsgType = CBK_EVENT_DLNA_ADD_DMS_DONE;
  655. break;
  656. case DLNA_MW_CBK_DMS_DELETE:
  657. dMsgType = CBK_EVENT_DLNA_DELETE_DMS_DONE;
  658. break;
  659. case DLNA_MW_CBK_DRAW_LARGE_PIC_DONE:
  660. dMsgType = CBK_EVENT_DLNA_LARGE_PIC_DONE;
  661. break;
  662. case DLNA_MW_CBK_DRAW_LARGE_PIC_ERROR:
  663. dMsgType = CBK_EVENT_DLNA_LARGE_PIC_ERROR;
  664. break;
  665. case DLNA_MW_CBK_DRAW_THUMBNAIL_DONE:
  666. dMsgType = CBK_EVENT_DLNA_THUMBNAIL_DONE;
  667. break;
  668. case DLNA_MW_CBK_DRAW_THUMBNAIL_ERROR:
  669. dMsgType = CBK_EVENT_DLNA_THUMBNAIL_ERROR;
  670. break;
  671. case DLNA_WM_CBK_DATA_DONE:
  672. dMsgType = CBK_EVENT_DLNA_SMALL_PIC_DONE;
  673. break;
  674. case DLNA_WM_CBK_DATA_FAIL:
  675. dMsgType = CBK_EVENT_DLNA_SMALL_PIC_FAIL;
  676. break;
  677. case DLNA_MW_CBK_PLAY_FINISH:
  678. dMsgType = CBK_EVENT_VOD_CALLBACK_PLAYBACK_FINISH;
  679. break;
  680. case DLNA_MW_CBK_CACHE_START:
  681. dMsgType = CBK_EVENT_DLNA_CACHE_START;
  682. break;
  683. case DLNA_MW_CBK_STARTUP_FAIL:
  684. dMsgType = CBK_EVENT_VOD_CALLBACK_ADD_TASK_FAIL;
  685. break;
  686. case DLNA_MW_CBK_CACHE_STOP:
  687. dMsgType = CBK_EVENT_DLNA_CACHE_STOP;
  688. break;
  689. case DLNA_MW_CBK_SHOW_PLAY:
  690. {
  691. dMsgType = CBK_EVENT_SHOW_PLAY_DMR;
  692. printf("CBK_EVENT_SHOW_PLAY_DMR=%x\n",CBK_EVENT_SHOW_PLAY_DMR);
  693. }
  694. break;
  695. case DLNA_MW_CBK_SHOW_STOP:
  696. dMsgType = CBK_EVENT_SHOW_STOP_DMR;
  697. break;
  698. case DLNA_MW_CBK_SHOW_STOP_FAIL:
  699. dMsgType = CBK_EVENT_VOD_CALLBACK_PLAYBACK_STOP_FAIL;
  700. break;
  701. case DLNA_MW_CBK_FAIL:
  702. dMsgType = CBK_EVENT_VOD_CALLBACK_PLAYBACK_NEXT_FAIL;
  703. break;
  704. case DLNA_MW_CBK_SHOW_PAUSE:
  705. dMsgType = CBK_EVENT_SHOW_PAUSE_DMR;
  706. break;
  707. case DLNA_MW_CBK_SHOW_FF:
  708. dMsgType = CBK_EVENT_VOD_CALLBACK_PLAYBACK_FF_DONE;
  709. break;
  710. case DLNA_MW_CBK_SHOW_FR:
  711. dMsgType = CBK_EVENT_VOD_CALLBACK_PLAYBACK_FB_DONE;
  712. break;
  713. case DLNA_MW_CBK_SHOW_FR_FILE_BEGIN:
  714. dMsgType = CBK_EVENT_FASTBACK_TO_END;
  715. break;
  716. case DLNA_MW_CBK_SHOW_NEXT:
  717. dMsgType = CBK_EVENT_SHOW_NEXT_DMR;
  718. break;
  719. case DLNA_MW_CBK_SHOW_PREV:
  720. dMsgType = CBK_EVENT_SHOW_PREV_DMR;
  721. break;
  722. case DLNA_MW_CBK_SET_MUTE:
  723. dMsgType = CBK_EVENT_SET_MUTE;
  724. break;
  725. case DLNA_MW_CBK_GET_MUTE:
  726. {
  727. UINT32 *pdMute = (UINT32*)dParam;
  728. //dMsgType = CBK_EVENT_GET_MUTE;
  729. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  730. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  731. *pdMute = g_stUserInfoData.Mute;
  732. return SYSTEM_APP_SUCCESFUL;
  733. }
  734. case DLNA_MW_CBK_SET_VOLUME:
  735. dMsgType = CBK_EVENT_SET_VOLUME;
  736. break;
  737. case DLNA_MW_CBK_GET_VOLUME:
  738. //dMsgType = CBK_EVENT_GET_VOLUME;
  739. break;
  740. case DLNA_MW_CBK_PLAY_DONE:
  741. dMsgType = CBK_EVENT_VIDEO_PLAY_DONE;
  742. break;
  743. case DLNA_MW_CBK_STARTUP_DONE:
  744. dMsgType = CBK_EVENT_STARTUP_DONE;
  745. break;
  746. case DLNA_MW_CBK_PLAY_START:
  747. dMsgType = CBK_EVENT_BPIC_STATR_PLAY;//add for mantis 0160705
  748. break;
  749. case DLNA_MW_CBK_SHOW_FF_FAIL:
  750. dMsgType = CBK_EVENT_VOD_CALLBACK_PLAYBACK_FF_FAIL;
  751. break;
  752. case DLNA_MW_CBK_SHOW_FR_FAIL:
  753. dMsgType = CBK_EVENT_VOD_CALLBACK_PLAYBACK_FB_FAIL;
  754. break;
  755. case DLNA_MW_CBK_CHANGE2_NORMAL_PLAY_DONE:
  756. dMsgType = CBK_EVENT_VOD_CALLBACK_PLAYBACK_CHANGE2_NORMAL_PLAY_DONE;
  757. break;
  758. case DLNA_MW_CBK_PE_NO_VIDEO_TRACK:
  759. dMsgType = CBK_EVENT_PE_NO_VIDEO_TRACK;
  760. break;
  761. case DLNA_MW_CBK_PE_NOT_SUPPORT_AUDIO:
  762. dMsgType = CBK_EVENT_PE_NOT_SUPPORT_AUDIO;
  763. break;
  764. default:
  765. break;
  766. }
  767. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_NETWORK, dMsgType|PASS_TO_SYSAPP, dParam);
  768. return SYSTEM_APP_SUCCESFUL;
  769. }
  770. void* DLNAInitTask(void *arg)
  771. {
  772. Al_IP_t ip = {0};
  773. net_printf("Enter DLNAInitTask\n");
  774. while(gDlnaInitThreadRunning)
  775. {
  776. if( Al_Network_Ctrl_GetIP(&ip) == AL_SUCCESS)
  777. break;
  778. sleep(1);
  779. }
  780. if(!gDlnaInitThreadRunning) // thread is canceled
  781. {
  782. net_printf("Exit DLNAInitTask - canceled\n");
  783. pthread_exit(NULL);
  784. }
  785. if (gDlnaSema == NULL)
  786. {
  787. GL_Status_t dRetVal;
  788. dRetVal = GL_SemaphoreCreate("DLNA Quit Semaphore", 1, 1, &gDlnaSema);
  789. if (dRetVal != GL_SUCCESS)
  790. {
  791. net_printf("DLNA Quit Semaphore create fail!!");
  792. }
  793. }
  794. DLNA_MWInitPara stInitData;
  795. memset(&stInitData, 0, sizeof(DLNA_MWInitPara));
  796. stInitData.semaQuit = gDlnaSema;
  797. stInitData.eMode = DLNA_DMR;
  798. if (DLNA_MW_IF_Initialize(&stInitData, Dlna_App_CallbackFunc) != DLNA_MW_IF_SUCCESSFUL)
  799. {
  800. net_printf("Init middleware fail\n");
  801. pthread_exit(NULL);
  802. }
  803. if (DLNA_MW_IF_NetPlayerInitialize() != DLNA_MW_IF_SUCCESSFUL)
  804. {
  805. net_printf("Init play fail\n");
  806. DLNA_MW_IF_Finalize();
  807. if(gDlnaSema != NULL)
  808. {
  809. GL_SemaphoreDelete(gDlnaSema);
  810. gDlnaSema = NULL;
  811. }
  812. pthread_exit(NULL);
  813. }
  814. gDlnaInited = true;
  815. net_printf("Exit DLNAInitTask\n");
  816. pthread_exit(NULL);
  817. }
  818. INT32 DLNAInit(void)
  819. {
  820. net_printf("Enter DLNAInit\n");
  821. if(!gDlnaInitThreadValid)
  822. {
  823. gDlnaInitThreadRunning = true;
  824. gDlnaInitThreadValid = (pthread_create(&gDlnaInitThread, NULL, DLNAInitTask, NULL) == 0);
  825. gDlnaInitThreadRunning = gDlnaInitThreadValid;
  826. }
  827. else
  828. {
  829. net_printf("DLNA is being initialized.");
  830. }
  831. net_printf("Exit DLNAInit\n");
  832. return 0;
  833. }
  834. void DLNA_EXIT(void)
  835. {
  836. net_printf("Enter DLNA_EXIT - 1\n");
  837. if(gDlnaInitThreadValid)
  838. {
  839. gDlnaInitThreadRunning = false;
  840. pthread_join(gDlnaInitThread, NULL);
  841. gDlnaInitThreadValid = false;
  842. }
  843. net_printf("Enter DLNA_EXIT - 2\n");
  844. if(gDlnaInited)
  845. {
  846. DLNA_MW_IF_NetPlayerFinalize();
  847. DLNA_MW_IF_Finalize();
  848. if(gDlnaSema != NULL)
  849. {
  850. GL_SemaphoreDelete(gDlnaSema);
  851. gDlnaSema = NULL;
  852. }
  853. }
  854. gDlnaInited = false;
  855. net_printf("Exit DLNA_EXIT\n");
  856. }
  857. void MonitorIPChange(void)
  858. {
  859. static Al_IP_t old_ip = {0};
  860. Al_IP_t ip = {0};
  861. if( Al_Network_Ctrl_GetIP(&ip) == AL_SUCCESS
  862. && memcmp(&ip, &old_ip, sizeof(Al_IP_t)) != 0)
  863. {
  864. net_printf("Detect IP changed from [%u.%u.%u.%u] to [%u.%u.%u.%u]\n", old_ip.IPA, old_ip.IPB, old_ip.IPC, old_ip.IPD, ip.IPA, ip.IPB, ip.IPC, ip.IPD);
  865. memcpy(&old_ip, &ip, sizeof(Al_IP_t));
  866. if(gDlnaInited)
  867. {
  868. net_printf("restart DMR now\n");
  869. DLNA_MW_IF_ReStartDMR();
  870. }
  871. }
  872. else if(Al_Network_Ctrl_GetIP(&ip) != AL_SUCCESS)
  873. {
  874. #ifdef CONFIG_SUPPORT_WIFI
  875. if(MID_NWSI_WLAN_GetAPState() == E_MID_NWSI_WLAN_CONNECT_STATE_ON)
  876. {
  877. Al_APPW_t *pAPPW = NULL;
  878. pAPPW = &g_stSetupData.WiFiSetting.WiFiPassword.APPW[0];
  879. if(Al_Network_Ctrl_ConnectAP(g_stSetupData.WiFiSetting.ConnectAPData, pAPPW->PWlen, pAPPW->PassWord) == AL_SUCCESS)
  880. {
  881. Al_Network_Ctrl_SetDhcpStatic(e_AL_Network_Mode_Wireless, g_stSetupData.EthernetConnectMode, &g_stSetupData.IPSetting);
  882. }
  883. MID_NWSI_WLAN_WiFiEnable(TRUE);
  884. }
  885. #endif
  886. }
  887. }
  888. #endif
  889. #ifdef CONFIG_SUPPORT_NEW_AIRPLAY
  890. bool SysApp_Airplay_CallBackFuc(Airplay_Event_t Event, int param)
  891. {
  892. net_printf("\n\n\n\n------only test ----callback message from airplay middleware\n");
  893. net_printf("[%s] 0x%x\n\n\n", __FUNCTION__, Event);
  894. switch (Event)
  895. {
  896. case AIRPLAY_AV_EVENT_INITOK:
  897. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_NETWORK, (NET_GLOBAL_EVENT_MEDIA_INITOK|PASS_TO_SYSAPP), 0);
  898. break;
  899. case AIRPLAY_AV_EVENT_PLAY_DONE:
  900. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_NETWORK, (NET_GLOBAL_EVENT_MEDIA_PLAY_DONE|PASS_TO_SYSAPP), 0);
  901. break;
  902. case AIRPLAY_AV_EVENT_NOT_HTTP:
  903. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_AIRPLAY_NEW))
  904. {
  905. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_NETWORK, NET_GUIOBJ_AIRPLAY_NEW, CBK_EVENT_AIRPLAY_MW_NOT_HTTP, 0);
  906. }
  907. break;
  908. case AIRPLAY_AV_EVENT_SET_METADATA:
  909. {
  910. Airplay_Audio_MetaData_t metadata;
  911. if(Airplay_GetAudioMetadata(&metadata) == AIRPLAY_SUCCESS)
  912. {
  913. net_printf("\n\n------- Audio metadata -------\n");
  914. net_printf("Album = [%.*s]\n", metadata.songAlbum.size, metadata.songAlbum.data);
  915. net_printf("Year = [%u]\n", metadata.songYear);
  916. net_printf("AlbumArtist = [%.*s]\n", metadata.songArtist.size, metadata.songArtist.data);
  917. net_printf("Artist = [%.*s]\n", metadata.songArtist.size, metadata.songArtist.data);
  918. net_printf("Name = [%.*s]\n", metadata.songName.size, metadata.songName.data);
  919. net_printf("Composer = [%.*s]\n", metadata.songComposer.size, metadata.songComposer.data);
  920. net_printf("Genre = [%.*s]\n", metadata.songGenre.size, metadata.songGenre.data);
  921. net_printf("TrackCount = [%u]\n", metadata.songTrackCount);
  922. net_printf("TotalTime = [%u]\n", metadata.totalTime);
  923. net_printf("\n-------------------------------\n");
  924. }
  925. break;
  926. }
  927. case AIRPLAY_AV_EVENT_SET_COVERART:
  928. {
  929. Airplay_Audio_CoverArt_t cover;
  930. if(Airplay_GetAudioCoverArt(&cover) == AIRPLAY_SUCCESS)
  931. {
  932. net_printf("Get cover art, size = %u, data = %p\n", cover.size, cover.data);
  933. // TODO: decode cover art here
  934. Airplay_FreeAudioCoverArt(&cover);
  935. }
  936. break;
  937. }
  938. case AIRPLAY_AV_EVENT_SET_VOLUME:
  939. g_stVariationalData.Volume = param >= ADJUST_MAX_VALUE ? ADJUST_MAX_VALUE : param;
  940. APP_Audio_SetVolume((UINT32)g_stVariationalData.Volume);
  941. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  942. ITEM_OFFSET(APP_SETTING_Variational_t, Volume),
  943. sizeof(g_stVariationalData.Volume), &(g_stVariationalData.Volume));
  944. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_ADJUST))
  945. {
  946. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, APP_GUIOBJ_ADJUST);
  947. }
  948. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_NETWORK, APP_GUIOBJ_ADJUST, ADJUST_VOLUME);
  949. break;
  950. default:
  951. net_printf("[%s] Unknown message type received.\n", __FUNCTION__);
  952. break;
  953. }
  954. return TRUE;
  955. }
  956. #endif
  957. void SysApp_NET_DestroyAppointedGUI(void)
  958. {
  959. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_POPMSG))
  960. {
  961. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, NET_GUIOBJ_POPMSG);
  962. }
  963. #ifdef SUPPORT_FACTORY_AUTO_TEST_MODE2
  964. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_FAC_AUTOTEST))
  965. {
  966. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, APP_GUIOBJ_FAC_AUTOTEST);
  967. }
  968. #endif
  969. if (APP_MenuMgr_Exist_Main_Menu())
  970. {
  971. APP_MenuMgr_Exit_Main_Menu();
  972. }
  973. if (APP_MenuMgr_Exist_Factory_Menu())
  974. {
  975. APP_MenuMgr_Exit_Factory_Menu();
  976. }
  977. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_SOURCE))
  978. {
  979. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, APP_GUIOBJ_SOURCE);
  980. }
  981. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_SOURCE_CEC))
  982. {
  983. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, APP_GUIOBJ_SOURCE_CEC);
  984. }
  985. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_BANNER))
  986. {
  987. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, APP_GUIOBJ_BANNER);
  988. }
  989. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_ADJUST))
  990. {
  991. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, APP_GUIOBJ_ADJUST);
  992. }
  993. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_AMPLIFIERVOLUME))
  994. {
  995. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, APP_GUIOBJ_AMPLIFIERVOLUME);
  996. }
  997. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_SLEEP_INFO))
  998. {
  999. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, APP_GUIOBJ_SLEEP_INFO);
  1000. }
  1001. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_NULL))
  1002. {
  1003. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, NET_GUIOBJ_NULL);
  1004. }
  1005. }
  1006. static int Network_App_OnCreate(void** ppPrivateData)
  1007. {
  1008. net_printf("OnInitialize function is called.\n");
  1009. stNetwork_Inst.bAppState = SYSTEM_IDLE;
  1010. #ifdef CONFIG_SUPPORT_MIRACAST
  1011. WFD_Init_AP_CBKFunc((WFD_CBK_Func) WFD_App_CallbackFunc);
  1012. #endif
  1013. #if defined (CONFIG_SUPPORT_DLNA) ||defined (CONFIG_SUPPORT_NET_PLAY_RTSP) || defined(CONFIG_SUPPORT_NET_PLAY_HTTP)
  1014. DLNA_MediaCtrl_NET_Player_RegisterMsgRouteway(SysApp_Network_AL_CallBackFuc);
  1015. #endif
  1016. #ifdef CONFIG_SUPPORT_NEW_AIRPLAY
  1017. Airplay_RegisterCBKFunc(SysApp_Airplay_CallBackFuc);
  1018. #endif
  1019. return NET_APP_SUCCESS;
  1020. }
  1021. static int Network_App_OnDestroy(void** ppPrivateData)
  1022. {
  1023. net_printf("OnDestroy() is called.\n");
  1024. return NET_APP_SUCCESS;
  1025. }
  1026. static int Network_App_OnRun(void* pPrivateData, UINT32 dParam)
  1027. {
  1028. net_printf("Network_App_OnRun() is called.\n");
  1029. int dRet=NET_APP_SUCCESS;
  1030. APP_GUIOBJ_PopMs_SetCloseFun(Network_App_ClosePopup);
  1031. APP_GuiMgr_Set_Menu() ;
  1032. APP_GuiMgr_SwitchShareMenu(SYS_APP_NETWORK);
  1033. if (SP_SUCCESS != APP_GUIOBJ_Source_SetMidSource(NULL))
  1034. {
  1035. printf("[%s] %d, Mid display setting source fail\n", __FUNCTION__, __LINE__);
  1036. APP_GUIOBJ_Source_SetSourceTransState(FALSE);
  1037. g_u8SourceTrastTimer = 0;
  1038. return SP_ERR_FAILURE;
  1039. }
  1040. NET_Homepage_SetSource(ITEM_HOMEPAGE_MAX);
  1041. APP_GUIOBJ_Source_SetSourceTransState(FALSE);
  1042. g_bOpenHomeMenuAfterCloseNetMenu = TRUE;
  1043. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_NETWORK,
  1044. NET_GLOBAL_EVENT_ON_RUN | PASS_TO_SYSAPP, TRUE);
  1045. net_printf("Network_App_OnRun() is called.\n");
  1046. return dRet;
  1047. }
  1048. static int Network_App_OnTerminate(void* pPrivateData, UINT32 dParam)
  1049. {
  1050. net_printf("App_OnTerminate() is called.\n");
  1051. int dRet = NET_APP_SUCCESS;
  1052. #if defined (CONFIG_SUPPORT_NET_PLAY_RTSP) || defined(CONFIG_SUPPORT_NET_PLAY_HTTP)
  1053. NetCtrl_Finalize();
  1054. #endif
  1055. #ifdef CONFIG_SUPPORT_MIRACAST
  1056. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_WFD_AUDIO_PLAYBACK))
  1057. {
  1058. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, NET_GUIOBJ_WFD_AUDIO_PLAYBACK);
  1059. }
  1060. #endif
  1061. NET_DestroyPartialObjects(TRUE);
  1062. SYSAPP_GOBJ_FinalizeGUIObject(SYS_APP_NETWORK);
  1063. stNetwork_Inst.bAppState = SYSTEM_IDLE;
  1064. return dRet;
  1065. }
  1066. static int Network_App_OnTimerUpdate(void* pPrivateData)
  1067. {
  1068. int dRet = NET_APP_SUCCESS;
  1069. #ifdef SUPPORT_CEC_TV
  1070. /*Delay the mute key sending to AMP*/
  1071. if((0 <= g_u32Mutekeydelaytime) && (g_u32Mutekeydelaytime < MUTE_KEY_INTERVAL))
  1072. {
  1073. g_u32Mutekeydelaytime++;
  1074. g_u32MuteIconHandle++;
  1075. }
  1076. #endif
  1077. #ifdef CONFIG_SUPPORT_MIRACAST_DLNA_INONE
  1078. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_MIRACAST_DLNA_PAGE))
  1079. MonitorIPChange();
  1080. #else
  1081. #ifdef CONFIG_SUPPORT_DLNA
  1082. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_DLNA_PAGE))
  1083. MonitorIPChange();
  1084. #endif
  1085. #endif
  1086. return dRet;
  1087. }
  1088. int Network_App_OnGlobalEvent(void* pPrivateData, UINT32 dMessage, UINT32 dParam)
  1089. {
  1090. net_printf("Network_App_OnGlobalEvent() is called.\n");
  1091. int sdRet = NET_APP_SUCCESS;
  1092. dMessage = (dMessage & ~PASS_TO_SYSAPP);
  1093. #ifdef SUPPORT_CEC_TV
  1094. if (CECTV_GetCECEnable() == CECTV_ENABLE)
  1095. {
  1096. //active source
  1097. if(dMessage == UI_EVENT_TVRADIO)
  1098. {
  1099. CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_CHGSRC_OUT_HDMI, SRC_OTHERS);
  1100. }
  1101. if(dMessage == UI_EVENT_MUTE)
  1102. {
  1103. if (CECTV_GetHDMISystemAudioMode()&& APP_Check_CEC_DEVICE_Status())
  1104. {
  1105. if(g_u32Mutekeydelaytime >= MUTE_KEY_INTERVAL)
  1106. {
  1107. cec_RemoteControlPassThrough(CECTV_KEY_MUTE);
  1108. cec_RemoteControlPassThrough(CECTV_KEY_MUTE_RELEASE);
  1109. g_u32Mutekeydelaytime = 0;
  1110. }
  1111. }
  1112. }
  1113. if(dMessage == UI_EVENT_VOL_UP)
  1114. {
  1115. if (CECTV_GetHDMISystemAudioMode() && APP_Check_CEC_DEVICE_Status())
  1116. {
  1117. if (dParam & IR_EVENT_REPEAT_TYPE)
  1118. {
  1119. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_UP);
  1120. }
  1121. else if (dParam & IR_EVENT_REPEAT_END)
  1122. {
  1123. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_UP_RELEASE);
  1124. }
  1125. else
  1126. {
  1127. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_UP);
  1128. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_UP_RELEASE);
  1129. }
  1130. }
  1131. }
  1132. if(dMessage == UI_EVENT_VOL_DN)
  1133. {
  1134. if (CECTV_GetHDMISystemAudioMode() && APP_Check_CEC_DEVICE_Status())
  1135. {
  1136. if (dParam & IR_EVENT_REPEAT_TYPE)
  1137. {
  1138. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_DOWN);
  1139. }
  1140. else if (dParam & IR_EVENT_REPEAT_END)
  1141. {
  1142. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_DOWN_RELEASE);
  1143. }
  1144. else
  1145. {
  1146. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_DOWN);
  1147. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_DOWN_RELEASE);
  1148. }
  1149. }
  1150. }
  1151. }
  1152. #endif
  1153. switch (dMessage)
  1154. {
  1155. case NET_GLOBAL_EVENT_ON_RUN:
  1156. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_HOMEPAGE))
  1157. {
  1158. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_NETWORK, NET_GUIOBJ_HOMEPAGE, 0);
  1159. }
  1160. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_MUTE))
  1161. {
  1162. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_NETWORK, APP_GUIOBJ_MUTE, 0);
  1163. }
  1164. #ifdef CONFIG_SUPPORT_NET_PLAY_RTSP
  1165. {
  1166. NetCtrl_Initialize();
  1167. _Play_RTSP_Stream();
  1168. }
  1169. #elif defined(CONFIG_SUPPORT_NET_PLAY_HTTP)
  1170. {
  1171. NetCtrl_Initialize();
  1172. _Play_HTTP_Stream();
  1173. }
  1174. #endif
  1175. break;
  1176. case NET_GLOBAL_EVENT_OBJECT_CLOSE:
  1177. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_NULL))
  1178. {
  1179. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, NET_GUIOBJ_NULL);
  1180. }
  1181. break;
  1182. case UI_EVENT_EXIT:
  1183. case UI_EVENT_RETURN:
  1184. printf("%s %d\n",__FUNCTION__,__LINE__);
  1185. SysApp_NET_DestroyAppointedGUI();
  1186. break;
  1187. case UI_EVENT_RECALL:
  1188. break;
  1189. case UI_EVENT_FAC_BURNINGMODE:
  1190. {
  1191. SysApp_NET_DestroyAppointedGUI();
  1192. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_NETWORK, NET_GUIOBJ_NULL, 0);
  1193. MID_TVFE_SetAutoPowerOn(AC_AUTO_POWERON_ON);
  1194. APP_Factory_SetBurnIn_LEDTwinkle(TRUE);
  1195. }
  1196. break;
  1197. case UI_EVENT_MENU:
  1198. #if defined (CONFIG_SUPPORT_MIRACAST_DLNA_INONE)
  1199. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_MIRACAST_DLNA_PAGE))
  1200. {
  1201. break;
  1202. }
  1203. #else
  1204. #if defined (CONFIG_SUPPORT_MIRACAST)
  1205. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_MIRACAST_PAGE))
  1206. {
  1207. break;
  1208. }
  1209. #endif
  1210. #if defined (CONFIG_SUPPORT_DLNA)
  1211. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_DLNA_PAGE))
  1212. {
  1213. break;
  1214. }
  1215. #endif
  1216. #endif
  1217. if (APP_MenuMgr_Exist_Main_Menu())
  1218. {
  1219. APP_MenuMgr_Exit_Main_Menu();
  1220. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, NET_GUIOBJ_NULL);
  1221. }
  1222. else if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_SOURCE))
  1223. {
  1224. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, APP_GUIOBJ_SOURCE);
  1225. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_NETWORK, NET_GUIOBJ_NULL, 0);
  1226. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_NETWORK, APP_GUIOBJ_MAINMENU, 0);
  1227. }
  1228. else
  1229. {
  1230. SysApp_NET_DestroyAppointedGUI();
  1231. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_NETWORK, NET_GUIOBJ_NULL, 0);
  1232. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_NETWORK, APP_GUIOBJ_MAINMENU, 0);
  1233. }
  1234. break;
  1235. case UI_EVENT_FACTORY:
  1236. if(APP_MenuMgr_Exist_Factory_Menu())
  1237. {
  1238. APP_MenuMgr_Exit_Factory_Menu();
  1239. }
  1240. else
  1241. {
  1242. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_MAINMENU))
  1243. {
  1244. APP_MenuMgr_Exit_Main_Menu();
  1245. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_NETWORK, NET_GUIOBJ_NULL, 0);
  1246. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_NETWORK, APP_GUIOBJ_FM_FACTORYSETTING, FIRST_ENTER_FACTORY);
  1247. }
  1248. }
  1249. break;
  1250. case UI_EVENT_SOURCE:
  1251. #if defined (CONFIG_SUPPORT_MIRACAST_DLNA_INONE)
  1252. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_MIRACAST_DLNA_PAGE))
  1253. {
  1254. break;
  1255. }
  1256. #else
  1257. #if defined (CONFIG_SUPPORT_MIRACAST)
  1258. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_MIRACAST_PAGE))
  1259. {
  1260. break;
  1261. }
  1262. #endif
  1263. #if defined (CONFIG_SUPPORT_DLNA)
  1264. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_DLNA_PAGE))
  1265. {
  1266. break;
  1267. }
  1268. #endif
  1269. #endif
  1270. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_SOURCE))
  1271. {
  1272. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, APP_GUIOBJ_SOURCE);
  1273. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, NET_GUIOBJ_NULL);
  1274. }
  1275. else
  1276. {
  1277. SysApp_NET_DestroyAppointedGUI();
  1278. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_NETWORK, NET_GUIOBJ_NULL, 0);
  1279. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_NETWORK, APP_GUIOBJ_SOURCE, 0);
  1280. }
  1281. break;
  1282. #ifdef CONFIG_MEDIA_ENABLE
  1283. case UI_EVENT_SRC_USB:
  1284. #ifdef SUPPORT_CEC_TV
  1285. if (CECTV_GetCECEnable()==CECTV_ENABLE)
  1286. {
  1287. CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_CHGSRC_OUT_HDMI, SRC_OTHERS);
  1288. }
  1289. #endif
  1290. {
  1291. if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_MEDIA))
  1292. {
  1293. net_printf("APP_GUIOBJ_Source_SetAppSource Fail!!!!!!!!!\n");
  1294. }
  1295. }
  1296. break;
  1297. #endif
  1298. case UI_EVENT_SND_MOD:
  1299. #ifdef SUPPORT_CEC_TV
  1300. #ifdef SUPPORT_SMODE_UNMUTE
  1301. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  1302. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  1303. if(g_stUserInfoData.Mute)
  1304. {
  1305. if (CECTV_GetHDMISystemAudioMode()&& APP_Check_CEC_DEVICE_Status())
  1306. {
  1307. cec_RemoteControlPassThrough(CECTV_KEY_MUTE);
  1308. cec_RemoteControlPassThrough(CECTV_KEY_MUTE_RELEASE);
  1309. }
  1310. }
  1311. _APP_GUIOBJ_Sound_SetMuteStatus();
  1312. #endif
  1313. #endif
  1314. case UI_EVENT_SLEEP:
  1315. case UI_EVENT_PIC_MOD:
  1316. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_BANNER))
  1317. {
  1318. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, APP_GUIOBJ_BANNER);
  1319. }
  1320. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_ADJUST))
  1321. {
  1322. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, APP_GUIOBJ_ADJUST);
  1323. }
  1324. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_AMPLIFIERVOLUME))
  1325. {
  1326. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, APP_GUIOBJ_AMPLIFIERVOLUME);
  1327. }
  1328. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_NETWORK,APP_GUIOBJ_BANNER, dMessage);
  1329. break;
  1330. case APP_GLOBAL_EVENT_FLIP:
  1331. if (APP_MenuMgr_Exist_Factory_Menu())
  1332. {
  1333. APP_MenuMgr_Exit_Factory_Menu();
  1334. }
  1335. Network_App_ShowPopup(Network_APP_POP_MSG_FLIP);
  1336. break;
  1337. case APP_GLOBAL_EVENT_POPMSG_YES:
  1338. if (POPMSG_CONFIRM_FLIP == dParam)
  1339. {
  1340. g_stFactoryUserData.Function.PanelSetting.n_FlipIndex = Factory_GetFlipIndex();
  1341. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER,
  1342. ITEM_OFFSET(APP_SETTING_FactoryUser_t, Function.PanelSetting.n_FlipIndex), sizeof(g_stFactoryUserData.Function.PanelSetting.n_FlipIndex),
  1343. &(g_stFactoryUserData.Function.PanelSetting.n_FlipIndex));
  1344. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER,
  1345. ITEM_OFFSET(APP_SETTING_FactoryUser_t, Function.PanelSetting.n_FlipIndex), sizeof(g_stFactoryUserData.Function.PanelSetting.n_FlipIndex));
  1346. MID_TVFE_SetPanelInverse((BOOL)(g_stFactoryUserData.Function.PanelSetting.n_FlipIndex));
  1347. GL_TaskSleep(2000);
  1348. APP_Sysset_Reset_System();
  1349. }
  1350. #ifdef CONFIG_SUPPORT_NET_OTA
  1351. if (POPMSG_CONFIRM_OTA == dParam)
  1352. {
  1353. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_SOFTWARE_UPGRADE))
  1354. {
  1355. Network_App_ShowPopup(Network_APP_POP_FTP_FILE_DOWNLOAD_WAITING);
  1356. if(NET_OTA_DownloadUpdate() == NET_OTA_OK)
  1357. {
  1358. Network_App_ClosePopup(POPMSG_FTP_FILE_DOWNLOAD_WAITING,UI_EVENT_NULL);
  1359. #if defined(CONFIG_SUPPORT_NET_OTA_FROM_USB)
  1360. APP_SetUpdateSource(UPGRADE_NETWORK_FROM_USB);
  1361. #elif defined(CONFIG_SUPPORT_NET_OTA_FROM_MEM)
  1362. APP_SetUpdateSource(UPGRADE_NETWORK_FROM_MEM);
  1363. #else
  1364. #error No storage for NET OTA is selected.
  1365. #endif
  1366. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_NETWORK, APP_GUIOBJ_SOFTWARE_UPGRADE, SOFTWARE_UPGRADE_FROM_NET_OTA);
  1367. return GUI_OBJECT_POST_EVENT;
  1368. }
  1369. Network_App_ClosePopup(POPMSG_FTP_FILE_DOWNLOAD_WAITING,UI_EVENT_NULL);
  1370. }
  1371. }
  1372. #endif
  1373. break;
  1374. case APP_GLOBAL_EVENT_POPMSG_NO:
  1375. if (dParam == POPMSG_CONFIRM_FLIP)
  1376. {
  1377. Network_App_ClosePopup(POPMSG_CONFIRM_FLIP, UI_EVENT_NULL);
  1378. SysApp_NET_DestroyAppointedGUI();
  1379. }
  1380. #ifdef CONFIG_SUPPORT_MIRACAST
  1381. else if (Network_App_IsPopupExist(Network_APP_POP_MSG_EXIT))
  1382. {
  1383. Network_App_ClosePopup(Network_APP_POP_MSG_EXIT, UI_EVENT_NULL);
  1384. }
  1385. #endif
  1386. #ifdef CONFIG_SUPPORT_NET_OTA
  1387. if (POPMSG_CONFIRM_OTA == dParam)
  1388. {
  1389. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_NULL))
  1390. {
  1391. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, NET_GUIOBJ_NULL);
  1392. }
  1393. }
  1394. #endif
  1395. break;
  1396. #ifdef CONFIG_SUPPORT_MIRACAST
  1397. /*case APP_GLOBAL_EVENT_POPMSG_YES:
  1398. //MAINAPP_SendGlobalEvent(UI_EVENT_SETUP,0);
  1399. break;
  1400. case APP_GLOBAL_EVENT_POPMSG_NO:
  1401. if (Network_App_IsPopupExist(Network_APP_POP_MSG_EXIT))
  1402. {
  1403. Network_App_ClosePopup(Network_APP_POP_MSG_EXIT, UI_EVENT_NULL);
  1404. }
  1405. break;*/
  1406. case CBK_EVENT_WFD_LINK_SUCCESS:
  1407. if (Network_App_IsPopupExist(Network_APP_POP_MSG_CONNECTING))
  1408. {
  1409. Network_App_ClosePopup(Network_APP_POP_MSG_CONNECTING, UI_EVENT_NULL);
  1410. }
  1411. if (Network_App_IsPopupExist(Network_APP_POP_MSG_EXIT))
  1412. {
  1413. Network_App_ClosePopup(Network_APP_POP_MSG_EXIT, UI_EVENT_NULL);
  1414. }
  1415. if (Network_App_IsPopupExist(Network_APP_POP_MSG_NETWORK_ERROR))
  1416. {
  1417. Network_App_ClosePopup(Network_APP_POP_MSG_NETWORK_ERROR, UI_EVENT_NULL);
  1418. }
  1419. break;
  1420. case CBK_EVENT_WFD_LINK_SUCCESS_NO_VIDEO:
  1421. if (Network_App_IsPopupExist(Network_APP_POP_MSG_CONNECTING))
  1422. {
  1423. Network_App_ClosePopup(Network_APP_POP_MSG_CONNECTING, UI_EVENT_NULL);
  1424. }
  1425. if (Network_App_IsPopupExist(Network_APP_POP_MSG_EXIT))
  1426. {
  1427. Network_App_ClosePopup(Network_APP_POP_MSG_EXIT, UI_EVENT_NULL);
  1428. }
  1429. if (Network_App_IsPopupExist(Network_APP_POP_MSG_NETWORK_ERROR))
  1430. {
  1431. Network_App_ClosePopup(Network_APP_POP_MSG_NETWORK_ERROR, UI_EVENT_NULL);
  1432. }
  1433. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_NETWORK, NET_GUIOBJ_WFD_AUDIO_PLAYBACK/*here may be audio/video/photo*/, 0))
  1434. {
  1435. net_printf("%s Create audio playback guiobj error!\n", __FUNCTION__);
  1436. }
  1437. break;
  1438. case CBK_EVENT_WFD_LINK_DISCONNECTED:
  1439. if (!Network_App_IsPopupExist(Network_APP_POP_MSG_NETWORK_ERROR))
  1440. {
  1441. Network_App_ShowPopup(Network_APP_POP_MSG_NETWORK_ERROR);
  1442. }
  1443. break;
  1444. case CBK_EVENT_WFD_SOURCE_TEARDOWN:
  1445. //MAINAPP_SendGlobalEvent(UI_EVENT_SETUP,0);
  1446. break;
  1447. #endif
  1448. #if defined(CONFIG_SUPPORT_MIRACAST) || defined(CONFIG_SUPPORT_DLNA) || defined(CONFIG_SUPPORT_NET_PLAY_RTSP) || defined(CONFIG_SUPPORT_NET_PLAY_HTTP)
  1449. case UI_EVENT_MUTE:
  1450. #ifdef SUPPORT_CEC_TV
  1451. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  1452. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  1453. if ((APP_SWITCH_ON == g_stFeatureData.Enable_HDMILink)
  1454. #ifdef SUPPORT_AMPLIFIER_CONTROL
  1455. && (APP_SWITCH_ON == g_stFeatureData.AmplifierControl)
  1456. #endif
  1457. && (APP_HDMILINK_AMPLIFIER == g_stFeatureData.SpeakerPreference) && APP_GUIOBJ_Source_GetAmplifierPort()&& APP_Check_CEC_DEVICE_Status())
  1458. {
  1459. if (CECTV_GetCECEnable() == CECTV_ENABLE && CECTV_GetHDMISystemAudioMode() && g_u32MuteIconHandle >= MUTE_KEY_INTERVAL)
  1460. {
  1461. APP_Set_CECTV_Mute_Status(EVENT_CECTV_SET_MUTE_STATUS_MUTE);
  1462. g_u32MuteIconHandle = 0;
  1463. break;
  1464. }
  1465. else if(g_u32MuteIconHandle < MUTE_KEY_INTERVAL)//Don't handle mute icon
  1466. {
  1467. break;
  1468. }
  1469. }
  1470. APP_Set_HDMICEC_TV_Mute_Status(!APP_Get_HDMICEC_TV_Mute_Status());
  1471. #endif
  1472. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_SLEEP_INFO))
  1473. {
  1474. APP_GUIOBJ_SleepTimer_Reset();
  1475. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, APP_GUIOBJ_SLEEP_INFO);
  1476. }
  1477. APP_GUIOBJ_Mute_MuteKeyHandler();
  1478. break;
  1479. #endif
  1480. case APP_GLOBAL_EVENT_SLEEP_TIMER_INFO:
  1481. SysApp_NET_DestroyAppointedGUI();
  1482. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_NETWORK, NET_GUIOBJ_NULL, 0);
  1483. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_NETWORK, APP_GUIOBJ_SLEEP_INFO, dParam);
  1484. break;
  1485. #if defined(CONFIG_HEADPHONE_DETECT_BY_ISR) || defined(CONFIG_HPDET_BY_SWTIMER)
  1486. case APP_GLOBAL_EVENT_HEADPHONE_PLUG_IN:
  1487. APP_Audio_Set_HPStatus(APP_Audio_Headphone_PlugIn);
  1488. APP_Audio_SetMuteSpeakerWithoutAMP(TRUE);
  1489. APP_Audio_SetMuteAMP(TRUE);
  1490. APP_Audio_SetMuteDACSpeak(TRUE);
  1491. APP_Audio_SetMuteDACHeadohone(FALSE);
  1492. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  1493. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  1494. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  1495. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  1496. if ((g_stUserInfoData.Mute == FALSE) && g_stFeatureData.SpeakerPreference == APP_HDMILINK_TVSPEAKER)
  1497. {
  1498. APP_Audio_SetMuteSpeakerWithoutAMP(FALSE);
  1499. }
  1500. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, 0,
  1501. sizeof(APP_SETTING_Variational_t), &(g_stVariationalData));
  1502. APP_Audio_SetVolume(g_stVariationalData.Volume);
  1503. break;
  1504. case APP_GLOBAL_EVENT_HEADPHONE_PLUG_OUT:
  1505. APP_Audio_Set_HPStatus(APP_Audio_Headphone_PlugOut);
  1506. APP_Audio_SetMuteDACHeadohone(TRUE);
  1507. APP_Audio_SetMuteSpeakerWithoutAMP(TRUE);
  1508. APP_Audio_SetMuteDACSpeak(FALSE);
  1509. APP_Audio_SetMuteAMP(FALSE);
  1510. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  1511. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  1512. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  1513. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  1514. if ((g_stUserInfoData.Mute == FALSE) && g_stFeatureData.SpeakerPreference == APP_HDMILINK_TVSPEAKER)
  1515. {
  1516. APP_Audio_SetMuteSpeakerWithoutAMP(FALSE);
  1517. }
  1518. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, 0,
  1519. sizeof(APP_SETTING_Variational_t), &(g_stVariationalData));
  1520. APP_Audio_SetVolume(g_stVariationalData.Volume);
  1521. break;
  1522. #endif
  1523. case NET_GLOBAL_EVENT_MEDIA_INITOK:
  1524. {
  1525. #ifdef CONFIG_SUPPORT_DLNA
  1526. DLNA_DMSItemInfo * DMSItemInfo = NULL;
  1527. DLNA_MW_IF_Get_DMSContList(&DMSItemInfo, 0, DLNA_MEDIA_UNKNOWN);
  1528. #endif
  1529. #ifdef CONFIG_SUPPORT_MIRACAST_DLNA_INONE
  1530. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_MIRACAST_DLNA_PAGE))
  1531. {
  1532. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_NETWORK,
  1533. NET_GUIOBJ_MIRACAST_DLNA_PAGE, NET_GLOBAL_EVENT_MEDIA_HIDE_MSG, 0);
  1534. }
  1535. #else
  1536. #ifdef CONFIG_SUPPORT_MIRACAST
  1537. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_MIRACAST_PAGE))
  1538. {
  1539. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_NETWORK,
  1540. NET_GUIOBJ_MIRACAST_PAGE, NET_GLOBAL_EVENT_MEDIA_HIDE_MSG, 0);
  1541. }
  1542. #endif
  1543. #ifdef CONFIG_SUPPORT_DLNA
  1544. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_DLNA_PAGE))
  1545. {
  1546. if(DMSItemInfo && DMSItemInfo->MediaType != DLNA_MEDIA_VIDEO)
  1547. {
  1548. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_NETWORK,
  1549. NET_GUIOBJ_DLNA_PAGE, NET_GLOBAL_EVENT_MEDIA_HIDE_LOADING, 0);
  1550. }
  1551. }
  1552. #endif
  1553. #endif
  1554. #ifdef CONFIG_SUPPORT_NEW_AIRPLAY
  1555. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_AIRPLAY_NEW))
  1556. {
  1557. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_NETWORK,
  1558. NET_GUIOBJ_AIRPLAY_NEW, NET_GLOBAL_EVENT_MEDIA_HIDE_MSG, 0);
  1559. }
  1560. #endif
  1561. UINT8 u8AspectRatioIndex = 0;
  1562. UINT8 u8Mute = 0;
  1563. APP_Video_AspectRatioType_e u8AspectRatioType = APP_VIDEO_ASPECT_RATIO_MAX;
  1564. APP_Video_AspectSystemSetRead(&u8AspectRatioIndex);
  1565. u8AspectRatioType = APP_Video_AspectRatioIndexMappingToType(u8AspectRatioIndex);
  1566. #ifdef CONFIG_SUPPORT_NEW_AIRPLAY
  1567. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_AIRPLAY_NEW))
  1568. {
  1569. APP_Video_Set_AspectRatio(APP_VIDEO_ASPECT_RATIO_JUSTSCAN);
  1570. }
  1571. else
  1572. #endif
  1573. {
  1574. APP_Video_Set_AspectRatio(u8AspectRatioType);
  1575. }
  1576. /* mute/unmute audio */
  1577. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  1578. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  1579. u8Mute = g_stUserInfoData.Mute;
  1580. APP_Audio_SetMute(u8Mute, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_NET);
  1581. #ifdef CONFIG_SUPPORT_DLNA
  1582. if((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_DLNA_PAGE))
  1583. && DMSItemInfo && (DMSItemInfo->MediaType == DLNA_MEDIA_AUDIO))
  1584. {
  1585. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_NET);
  1586. }
  1587. else
  1588. {
  1589. APP_Video_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_NET);
  1590. }
  1591. #else
  1592. APP_Video_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_NET);
  1593. #endif
  1594. #if defined (CONFIG_SUPPORT_NET_PLAY_RTSP) || defined(CONFIG_SUPPORT_NET_PLAY_HTTP)
  1595. if(NetCtrl_NET_Get_Play_State() == AL_NET_PLAYER_ERR_FAILURE)
  1596. {
  1597. NetCtrl_Finalize();
  1598. usleep(100);
  1599. #ifdef CONFIG_SUPPORT_NET_PLAY_RTSP
  1600. {
  1601. NetCtrl_Initialize();
  1602. _Play_RTSP_Stream();
  1603. }
  1604. #elif defined(CONFIG_SUPPORT_NET_PLAY_HTTP)
  1605. {
  1606. NetCtrl_Initialize();
  1607. _Play_HTTP_Stream();
  1608. }
  1609. #endif
  1610. }
  1611. #endif
  1612. }
  1613. break;
  1614. case NET_GLOBAL_EVENT_MEDIA_INIT_FAIL:
  1615. #ifdef CONFIG_SUPPORT_MIRACAST_DLNA_INONE
  1616. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_MIRACAST_DLNA_PAGE))
  1617. {
  1618. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_NETWORK,
  1619. NET_GUIOBJ_MIRACAST_DLNA_PAGE, NET_GLOBAL_EVENT_MEDIA_SHOW_MSG, 0);
  1620. }
  1621. #else
  1622. #ifdef CONFIG_SUPPORT_DLNA
  1623. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_DLNA_PAGE))
  1624. {
  1625. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_NETWORK,
  1626. NET_GUIOBJ_DLNA_PAGE, NET_GLOBAL_EVENT_MEDIA_SHOW_MSG, 0);
  1627. }
  1628. #endif
  1629. #endif
  1630. break;
  1631. case NET_GLOBAL_EVENT_MEDIA_DECODE_START:
  1632. case NET_GLOBAL_EVENT_MEDIA_PIC_DECODE_START:
  1633. #ifdef CONFIG_SUPPORT_DLNA
  1634. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_DLNA_PAGE))
  1635. {
  1636. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_NETWORK,
  1637. NET_GUIOBJ_DLNA_PAGE, NET_GLOBAL_EVENT_MEDIA_HIDE_MSG, 0);
  1638. }
  1639. #endif
  1640. break;
  1641. case NET_GLOBAL_EVENT_MEDIA_PLAY_DONE:
  1642. #ifdef CONFIG_SUPPORT_MIRACAST_DLNA_INONE
  1643. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_MIRACAST_DLNA_PAGE))
  1644. {
  1645. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_NETWORK,
  1646. NET_GUIOBJ_MIRACAST_DLNA_PAGE, NET_GLOBAL_EVENT_MEDIA_SHOW_MSG, 0);
  1647. }
  1648. #else
  1649. #ifdef CONFIG_SUPPORT_DLNA
  1650. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_DLNA_PAGE))
  1651. {
  1652. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_NETWORK,
  1653. NET_GUIOBJ_DLNA_PAGE, NET_GLOBAL_EVENT_MEDIA_SHOW_MSG, 0);
  1654. }
  1655. #endif
  1656. #endif
  1657. #ifdef CONFIG_SUPPORT_NEW_AIRPLAY
  1658. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_AIRPLAY_NEW))
  1659. {
  1660. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_NETWORK,
  1661. NET_GUIOBJ_AIRPLAY_NEW, NET_GLOBAL_EVENT_MEDIA_SHOW_MSG, 0);
  1662. }
  1663. #endif
  1664. #if defined (CONFIG_SUPPORT_NET_PLAY_RTSP) || defined(CONFIG_SUPPORT_NET_PLAY_HTTP)
  1665. {
  1666. NetCtrl_Finalize();
  1667. usleep(100);
  1668. #ifdef CONFIG_SUPPORT_NET_PLAY_RTSP
  1669. {
  1670. NetCtrl_Initialize();
  1671. _Play_RTSP_Stream();
  1672. }
  1673. #elif defined(CONFIG_SUPPORT_NET_PLAY_HTTP)
  1674. {
  1675. NetCtrl_Initialize();
  1676. _Play_HTTP_Stream();
  1677. }
  1678. #endif
  1679. }
  1680. #endif
  1681. break;
  1682. case NET_GLOBAL_EVENT_MEDIA_PIC_DECODE_FINISH:
  1683. #ifdef CONFIG_SUPPORT_DLNA
  1684. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_DLNA_PAGE))
  1685. {
  1686. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_NETWORK,
  1687. NET_GUIOBJ_DLNA_PAGE, NET_GLOBAL_EVENT_MEDIA_HIDE_LOADING, 0);
  1688. APP_Video_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_NET);
  1689. }
  1690. #endif
  1691. break;
  1692. case NET_GLOBAL_EVENT_MEDIA_PIC_DECODE_ERROR:
  1693. #ifdef CONFIG_SUPPORT_DLNA
  1694. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_DLNA_PAGE))
  1695. {
  1696. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_NETWORK,
  1697. NET_GUIOBJ_DLNA_PAGE, NET_GLOBAL_EVENT_MEDIA_SHOW_MSG, 0);
  1698. }
  1699. Network_App_ShowPopup(Network_APP_POP_MSG_NOT_SUPPORT);
  1700. #endif
  1701. break;
  1702. #ifdef CONFIG_SUPPORT_MIRACAST_DLNA_INONE
  1703. case CBK_EVENT_DLNA_CONTENT_LIST_DONE ... CBK_EVENT_DLNA_MW_EVENT_MAX:
  1704. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_MIRACAST_DLNA_PAGE))
  1705. {
  1706. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_NETWORK,
  1707. NET_GUIOBJ_MIRACAST_DLNA_PAGE, dMessage, dParam);
  1708. }
  1709. break;
  1710. #else
  1711. #ifdef CONFIG_SUPPORT_DLNA
  1712. case CBK_EVENT_DLNA_CONTENT_LIST_DONE ... CBK_EVENT_DLNA_MW_EVENT_MAX:
  1713. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_DLNA_PAGE))
  1714. {
  1715. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_NETWORK,
  1716. NET_GUIOBJ_DLNA_PAGE, dMessage, dParam);
  1717. }
  1718. break;
  1719. #endif
  1720. #endif
  1721. #ifdef SUPPORT_CEC_TV
  1722. case DMN_EVENT_CECTV_CHANGE_SOURCE:
  1723. net_printf("MM_HomePage_OnEvent DMN_EVENT_CECTV_CHANGE_SOURCE.\n");
  1724. // Check invalid state +++
  1725. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0,
  1726. sizeof(APP_SETTING_FactoryUser_t), &(g_stFactoryUserData));
  1727. if (g_stFactoryUserData.n_FactSet_BurningMode == al_true)
  1728. {
  1729. break;
  1730. }
  1731. APP_Source_Type_t eSrc;
  1732. APP_Video_GetCECPortMapping(dParam, &eSrc);
  1733. // Check invalid state ---
  1734. if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(eSrc))
  1735. {
  1736. net_printf("[FileApp OnGlobalEvent] APP_GUIOBJ_Source_SetAppSource faild.\n");
  1737. }
  1738. break;
  1739. case DMN_EVENT_CECTV_STANDBY:
  1740. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, 0);
  1741. net_printf("CEC UI_EVENT_POWER.\n");
  1742. break;
  1743. case DMN_EVENT_CECTV_SET_MUTE_STATUS:
  1744. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  1745. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  1746. if ((APP_SWITCH_ON == g_stFeatureData.Enable_HDMILink)
  1747. #ifdef SUPPORT_AMPLIFIER_CONTROL
  1748. && (APP_SWITCH_ON == g_stFeatureData.AmplifierControl)
  1749. #endif
  1750. && (APP_HDMILINK_AMPLIFIER == g_stFeatureData.SpeakerPreference) && APP_GUIOBJ_Source_GetAmplifierPort()&& APP_Check_CEC_DEVICE_Status())
  1751. {
  1752. if (CECTV_GetCECEnable() == CECTV_ENABLE)
  1753. {
  1754. if( (dParam & 0x80) != 0) //reopen TV, the amp vol status must sinc.So if amp is mute state, tv need to set mute state.
  1755. {
  1756. APP_Set_CECTV_Mute_Status(EVENT_CECTV_SET_MUTE_STATUS_MUTE);
  1757. }
  1758. APP_Process_CECTV_Mute_Status(dParam);
  1759. }
  1760. }
  1761. break;
  1762. case DMN_EVENT_CECTV_SET_SYSTEMAUDIO_STATUS:
  1763. APP_Process_CECTV_Control_Status_From_Amp(dParam);
  1764. break;
  1765. case DMN_EVENT_CECTV_SET_DEVICE_OSDNAME:
  1766. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_SOURCE)
  1767. ||SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_SOURCE_CEC)
  1768. ||SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_HDMI_LINK)
  1769. #ifdef CONFIG_BT_RDA5856
  1770. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_BT_SETTING))
  1771. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_BT_DEVICELIST))
  1772. #endif
  1773. ||SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_MAINMENU))
  1774. {
  1775. break;
  1776. }
  1777. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_NETWORK, APP_GUIOBJ_CEC_DEVICE_INSERT, dParam);
  1778. break;
  1779. #endif
  1780. #ifdef CONFIG_SUPPORT_NET_OTA
  1781. case APP_GLOBAL_EVENT_OTA_UPGRADE:
  1782. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_SOFTWARE_UPGRADE))
  1783. {
  1784. net_printf("upgrade is running!");
  1785. break;
  1786. }
  1787. else
  1788. {
  1789. SysApp_NET_DestroyAppointedGUI();
  1790. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_NETWORK, NET_GUIOBJ_NULL, 0);
  1791. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_NETWORK, APP_GLOBAL_EVENT_ERASE_WHOLE_FLASH_OTA|PASS_TO_SYSAPP, 0);
  1792. }
  1793. break;
  1794. #endif
  1795. #ifdef CONFIG_SUPPORT_NET_OTA
  1796. case APP_GLOBAL_EVENT_ERASE_WHOLE_FLASH_OTA:
  1797. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_FM_FACTORYSETTING))
  1798. {
  1799. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, APP_GUIOBJ_FM_FACTORYSETTING);
  1800. }
  1801. Network_App_ShowPopup(Network_APP_POP_ERASE_WHOLE_FLASH_OTA);
  1802. break;
  1803. case NET_GLOBAL_EVENT_EXIT_UPGRADE:
  1804. SysApp_NET_DestroyAppointedGUI();
  1805. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, NET_GUIOBJ_NULL))
  1806. {
  1807. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, NET_GUIOBJ_NULL);
  1808. }
  1809. break;
  1810. #endif
  1811. default:
  1812. net_printf("Unknown global message received.\n");
  1813. break;
  1814. }
  1815. return sdRet;
  1816. }
  1817. int Network_App_OnGUIFeedbackEvent(void* pPrivateData, UINT32 dMessage, UINT32 dParam)
  1818. {
  1819. net_printf("Network_App_OnGUIFeedbackEvent() is called \n");
  1820. int sdRet = NET_APP_SUCCESS;
  1821. switch(dMessage)
  1822. {
  1823. case GUI_RESPOND_EXIT_ALL_MENU:
  1824. SysApp_NET_DestroyAppointedGUI();
  1825. break;
  1826. default:
  1827. net_printf("[Network] Unknown GUI feedback message received.\n");
  1828. break;
  1829. }
  1830. return sdRet;
  1831. }
  1832. static int Network_App_OnEvent(void* pPrivateData, UINT32 dMessage, UINT32 dParam)
  1833. {
  1834. int dRet = NET_APP_SUCCESS;
  1835. net_printf("Network_App_OnEvent() is called,dParam:0x%x \n",dParam);
  1836. switch (dMessage & GUIOBJ_MESSAGE_TYPE_MASK)
  1837. {
  1838. case SYSAPP_GLOBAL_EVENT_TYPE:
  1839. dRet = Network_App_OnGlobalEvent(pPrivateData, (dMessage & GUIOBJ_MESSAGE_MASK), dParam);
  1840. break;
  1841. case GUIOBJ_FEEDBACK_EVENT_TYPE:
  1842. dRet = Network_App_OnGUIFeedbackEvent(pPrivateData, (dMessage & GUIOBJ_MESSAGE_MASK), dParam);
  1843. break;
  1844. default:
  1845. net_printf("Unknown message type received.\n");
  1846. break;
  1847. }
  1848. return dRet;
  1849. }
  1850. #ifdef CONFIG_SUPPORT_NET_SETTING
  1851. int APP_Network_Init(void)
  1852. {
  1853. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0,
  1854. sizeof(APP_SETTING_Setup_t), &(g_stSetupData));
  1855. if(g_stSetupData.NetworkSwitch == APP_SWITCH_ON)
  1856. {
  1857. Al_Network_Ctrl_Init();
  1858. if(!gNetworkConnect_task)
  1859. {
  1860. pthread_attr_t AVAttr;
  1861. pthread_attr_init(&AVAttr);
  1862. pthread_attr_setstacksize(&AVAttr, 1*1024*1024);
  1863. if(pthread_create(&gNetworkConnect_task, &AVAttr, (void *)_APP_GUIOBJ_NetworkInformation_Connect, NULL) != 0)
  1864. {
  1865. printf("Network_Connect pthread_create fail\n");
  1866. }
  1867. pthread_attr_destroy(&AVAttr);
  1868. }
  1869. printf("APP_Network_Init\n");
  1870. }
  1871. return 0;
  1872. }
  1873. #endif
  1874. /*****************************************************************************
  1875. ** FUNCTION : Network_App_fw_callback
  1876. **
  1877. ** DESCRIPTION :
  1878. **
  1879. **
  1880. ** PARAMETERS :
  1881. ** None
  1882. **
  1883. ** RETURN VALUES:
  1884. ** None
  1885. *****************************************************************************/
  1886. INT32 NetworkApp_fw_callback(AFW_event_t event, void *param)
  1887. {
  1888. UINT32 message = 0xffffffff;
  1889. UINT32 dParam = 0;
  1890. UINT32 Index = SYS_APP_NETWORK;
  1891. if(MAIN_APP_SUCCESS != MAINAPP_GetActiveSystemAppIndex(&Index))
  1892. {
  1893. net_printf("[%s: %d] get active system app fail\n",__FUNCTION__, __LINE__);
  1894. }
  1895. if (Index == SYS_APP_NETWORK)
  1896. {
  1897. switch (event)
  1898. {
  1899. case FW_AUDIO_HEADPHONE_PLUG_IN:
  1900. message = APP_GLOBAL_EVENT_HEADPHONE_PLUG_IN|PASS_TO_SYSAPP;
  1901. break;
  1902. case FW_AUDIO_HEADPHONE_PLUG_OUT:
  1903. message = APP_GLOBAL_EVENT_HEADPHONE_PLUG_OUT|PASS_TO_SYSAPP;
  1904. break;
  1905. #ifdef CONFIG_SUPPORT_MIRACAST
  1906. case FW_USB_PLUGIN:
  1907. dParam = *(UINT32 *)param;
  1908. if(dParam== 0)
  1909. {
  1910. if(miracast_check_dongle() == WIFI_DONGLE)
  1911. {
  1912. message = DMN_EVENT_WIFI_DONGLE_ATTACHED;
  1913. }
  1914. }
  1915. break;
  1916. case FW_USB_PLUGOUT:
  1917. if(bWifiDongle)
  1918. {
  1919. message = DMN_EVENT_WIFI_DONGLE_DETACHED;
  1920. }
  1921. break;
  1922. #endif
  1923. case FW_VIP_STATUS:
  1924. message = NET_GLOBAL_EVENT_VIP_STATUS;
  1925. break;
  1926. case FW_VIP_FINISH:
  1927. message = NET_GLOBAL_EVENT_VIP_FINISH;
  1928. break;
  1929. default:
  1930. message = 0xffffffff;
  1931. break;
  1932. }
  1933. }
  1934. else
  1935. {
  1936. switch (event)
  1937. {
  1938. default:
  1939. message = 0xffffffff;
  1940. break;
  1941. }
  1942. }
  1943. if (message != 0xffffffff)
  1944. {
  1945. SYSAPP_IF_SendGlobalEventWithIndex(Index, message, dParam);
  1946. return SP_SUCCESS;
  1947. }
  1948. else
  1949. {
  1950. return SP_ERR_FAILURE;
  1951. }
  1952. }
  1953. void SysApp_NET_VolumeKeyHandler(UINT32 dMessage, UINT8 IsCECKey)
  1954. {
  1955. if(IsCECKey == TRUE)
  1956. {
  1957. #ifdef SUPPORT_CEC_TV
  1958. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  1959. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  1960. if (( APP_SWITCH_ON == g_stFeatureData.Enable_HDMILink)
  1961. #ifdef SUPPORT_AMPLIFIER_CONTROL
  1962. &&(APP_SWITCH_ON == g_stFeatureData.AmplifierControl)
  1963. #endif
  1964. &&(APP_HDMILINK_AMPLIFIER == g_stFeatureData.SpeakerPreference) && APP_GUIOBJ_Source_GetAmplifierPort())
  1965. {
  1966. if (CECTV_GetCECEnable()==CECTV_ENABLE && CECTV_GetHDMISystemAudioMode() && APP_Check_CEC_DEVICE_Status())
  1967. {
  1968. if(APP_Get_HDMICEC_AMP_Mute_Status() == TRUE)
  1969. {
  1970. //APP_Set_HDMICEC_AMP_Mute_Status(FALSE);
  1971. //CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_KEYPRESS, CECTV_KEY_MUTE<<8|0x05);//Mute Function
  1972. //SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_NETWORK, APP_GUIOBJ_MUTE,
  1973. // APP_INTRA_EVENT_HIDE_MUTE, 0);
  1974. }
  1975. }
  1976. }
  1977. #endif
  1978. }
  1979. else
  1980. {
  1981. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  1982. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  1983. if (g_stUserInfoData.Mute)
  1984. {
  1985. if(dMessage == UI_EVENT_VOL_UP || IsCECKey == TRUE)
  1986. {
  1987. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_NETWORK, APP_GUIOBJ_MUTE,
  1988. APP_INTRA_EVENT_HIDE_MUTE, 0);
  1989. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_NET);
  1990. g_stUserInfoData.Mute = FALSE;
  1991. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  1992. ITEM_OFFSET(APP_SETTING_UserInfo_t, Mute),
  1993. sizeof(g_stUserInfoData.Mute),&(g_stUserInfoData.Mute));
  1994. #ifdef SUPPORT_STORE_MUTE_FLAG
  1995. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  1996. ITEM_OFFSET(APP_SETTING_UserInfo_t, Mute),
  1997. sizeof(g_stUserInfoData.Mute));
  1998. #endif
  1999. }
  2000. }
  2001. }
  2002. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_BANNER))
  2003. {
  2004. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, APP_GUIOBJ_BANNER);
  2005. }
  2006. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_AMPLIFIERVOLUME))
  2007. {
  2008. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, APP_GUIOBJ_AMPLIFIERVOLUME);
  2009. }
  2010. if(IsCECKey == TRUE
  2011. #ifdef SUPPORT_CEC_TV
  2012. && CECTV_GetHDMISystemAudioMode() && APP_Check_CEC_DEVICE_Status()
  2013. #endif
  2014. )
  2015. {
  2016. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_ADJUST))
  2017. {
  2018. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, APP_GUIOBJ_ADJUST);
  2019. }
  2020. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_AMPLIFIERVOLUME))
  2021. {
  2022. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, APP_GUIOBJ_AMPLIFIERVOLUME);
  2023. }
  2024. else
  2025. {
  2026. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_NETWORK,APP_GUIOBJ_AMPLIFIERVOLUME, 0);
  2027. }
  2028. }
  2029. else
  2030. {
  2031. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_AMPLIFIERVOLUME))
  2032. {
  2033. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, APP_GUIOBJ_AMPLIFIERVOLUME);
  2034. }
  2035. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_NETWORK, APP_GUIOBJ_ADJUST))
  2036. {
  2037. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_NETWORK, APP_GUIOBJ_ADJUST);
  2038. }
  2039. else
  2040. {
  2041. UINT8 u8VolumeIdx = g_stVariationalData.Volume;
  2042. if (dMessage == UI_EVENT_VOL_UP)
  2043. {
  2044. g_stVariationalData.Volume = u8VolumeIdx >= ADJUST_MAX_VALUE ? ADJUST_MAX_VALUE : ++u8VolumeIdx;
  2045. }
  2046. else if (dMessage == UI_EVENT_VOL_DN)
  2047. {
  2048. g_stVariationalData.Volume = u8VolumeIdx <= ADJUST_MIN_VALUE ? ADJUST_MIN_VALUE : --u8VolumeIdx;
  2049. }
  2050. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  2051. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  2052. if ((g_stFactoryHotelData.MaxVolume < g_stVariationalData.Volume)
  2053. &&(g_stFactoryHotelData.HotelModeOnOff == 1))
  2054. {
  2055. g_stVariationalData.Volume = g_stFactoryHotelData.MaxVolume;
  2056. }
  2057. APP_Audio_SetVolume((UINT32)g_stVariationalData.Volume);
  2058. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  2059. ITEM_OFFSET(APP_SETTING_Variational_t, Volume),
  2060. sizeof(g_stVariationalData.Volume), &(g_stVariationalData.Volume));
  2061. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_NETWORK, APP_GUIOBJ_ADJUST, ADJUST_VOLUME);
  2062. }
  2063. }
  2064. }