dvb_app.c 590 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249182501825118252182531825418255182561825718258182591826018261182621826318264182651826618267182681826918270182711827218273182741827518276182771827818279182801828118282182831828418285182861828718288182891829018291182921829318294182951829618297182981829918300183011830218303183041830518306183071830818309183101831118312183131831418315183161831718318183191832018321183221832318324183251832618327183281832918330183311833218333183341833518336183371833818339
  1. /********************************************************************
  2. ** File Name: system_app_dvb.c
  3. **
  4. ** File Description: This file implements dvb system application
  5. **
  6. ** Copyright(c) 2009 Sunplus Technologies - All Rights Reserved
  7. **
  8. ** History Information Description
  9. ** Date Author Modification
  10. ** 2009/03/12 James Create
  11. ********************************************************************/
  12. /********************************************************************
  13. Including Files
  14. ********************************************************************/
  15. #include <stdio.h>
  16. #include <string.h>
  17. #include <ctype.h>
  18. #include <types.h>
  19. #include "umf_debug.h"
  20. #define DVB_GUI_OBJECT_TABLE_DEFINE_HERE
  21. #include "app_guiobj_mute.h"
  22. #include "sysapp_if.h"
  23. #include "main_app.h"
  24. #include "app_event.h"
  25. #include "app_dvb_event.h"
  26. #include "sysapp_table.h"
  27. #include "app_global.h"
  28. #include "app_gui.h"
  29. #include "app_audio.h"
  30. #include "app_factory.h"
  31. #include "app_database.h"
  32. #include "al_time.h"
  33. #include "app_area_info.h"
  34. #include "app_video.h"
  35. #include "al_fw.h"
  36. #include "gl_timer.h"
  37. #include "app_data_setting.h"
  38. #include "board_config.h"
  39. #include "app_dvb_epg.h"
  40. #include "app_prog_list.h"
  41. #include "dvb_app.h"
  42. #include "app_file_psi_listeners.h"
  43. #include "app_guiobj_mainmenu.h"
  44. #include "app_guiobj_feature.h"
  45. #include "app_guiobj_scan_process.h"
  46. #include "app_guiobj_fm_factory.h"
  47. #include "app_guiobj_cul_fm_HotelSetting.h"
  48. #include "app_guiobj_fm_MultiplePanel.h"
  49. #include "app_guiobj_fm_factory.h"
  50. #include "app_guiobj_source.h"
  51. #include "app_guiobj_sleeptimer.h"
  52. #include "app_guiobj_adjust.h"
  53. #include "app_guiobj_date_time.h"
  54. #include "dvb_guiobj_table.h"
  55. #include "mid_playback.h"
  56. #include "mid_display.h"
  57. #include "mid_dtv_display.h"
  58. #include "dvb_dr.h"
  59. #include "mid_dvbmon.h"
  60. #include "mid_ota.h"
  61. #include "mid_siutil.h"
  62. #include "mid_siutil_dvb.h"
  63. #include "mid_siutil_13818.h"
  64. #include "mid_common.h"
  65. #include "mid_psimon.h"
  66. #include "app_dvb_prefername.h"
  67. #include "app_guiobj_dtv_proginfo.h"
  68. #include "app_dvb_playback.h"
  69. #include "app_dvb_parental_lock.h"
  70. #include "app_scan_api.h"
  71. #include "app_scan_save.h"
  72. #include "app_guiobj_fm_Hotel_Mode_Adj.h"
  73. #include "app_systime.h"
  74. #include "app_guiobj_dtv_epg.h"
  75. #include "app_guiobj_language.h"
  76. #include "ap_extern.h"
  77. #include "mid_sub_dtv_interface.h"
  78. #ifdef SUPPORT_ETHERNET
  79. #include "app_dvb_network.h"
  80. #endif
  81. #ifdef CONFIG_SUPPORT_MHEG5
  82. #include "app_dvb_mheg5.h"
  83. #include "app_guiobj_dtv_mheg5.h"
  84. #endif
  85. #ifdef CONFIG_SUPPORT_TTX
  86. #include "al_teletext.h"
  87. #include "app_guiobj_teletext.h"
  88. #endif
  89. #ifdef CONFIG_SUPPORT_SUBTITLE
  90. #include "al_subtitle.h"
  91. #include "app_guiobj_subtitle.h"
  92. #endif
  93. #ifdef SCAN_FREQ_OFFSET_RANGE_ENLARGE
  94. #include "mid_dtv_scan.h"
  95. #endif
  96. #ifdef SUPPORT_SCART_TV
  97. #include "drv_scart.h"
  98. #endif
  99. #ifdef SUPPORT_CONAX_CAS
  100. #include "conaxca_interface.h"
  101. #include "dvb_ca_conax_utilities.h"
  102. #include "app_guiobj_dtv_ca_pin_confim.h"
  103. #endif
  104. #ifdef CONFIG_CI_SUPPORT
  105. #include "app_dvb_ci_mmi.h"
  106. #include "app_ciplus_op.h"
  107. #endif
  108. #include "app_guiobj_dtv_proginfo.h"
  109. #include "app_guiobj_dtv_multiaud.h"
  110. #include "app_guiobj_channel.h"
  111. #include "app_guiobj_dtv_lcn_conflict_menu.h"
  112. #include "app_guiobj_dtv_playback.h"
  113. #include "app_menumgr.h"
  114. #ifdef CONFIG_SUPPORT_OTA_UPGRADE
  115. #include "mid_otamon.h"
  116. #include "app_guiobj_dtv_ota_upgrade_prompt.h"
  117. #include "app_dvb_ota_listeners.h"
  118. #include "app_guiobj_dtv_ota_upgrade_progress.h"
  119. #endif
  120. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  121. #include "app_usb_upgrade.h"
  122. #endif
  123. #include "app_prog_list.h"
  124. #include "app_dvb_prog_manager.h"
  125. #include "app_scart.h"
  126. #ifdef CONFIG_SUPPORT_PVR
  127. #include "app_guiobj_dtv_partitionlist.h"
  128. #include "app_guiobj_dtv_pvr_recdurationtime.h"
  129. #include "app_guiobj_dtv_pvr_rec.h"
  130. #include "app_guiobj_dtv_pvr_playinfo.h"
  131. #include "app_guiobj_dtv_pvr_fileplay.h"
  132. #include "app_guiobj_dtv_pvrrec_info.h"
  133. #include "mid_recorder.h"
  134. #include "mid_tspl.h"
  135. #include "pvrparser.h"
  136. #include "mid_tspl_parser.h"
  137. #include "mid_partition_list.h"
  138. #ifdef CONFIG_MEDIA_ENABLE
  139. //#include "MM_music_playback_gui.h"
  140. #endif
  141. #endif
  142. #if defined (CONFIG_SUPPORT_USB_UPGRADE) || defined (CONFIG_SUPPORT_OTA_UPGRADE)
  143. #include "mid_upgrade.h"
  144. #endif
  145. #include "main_app_external.h"
  146. #include "al_prog_reminder.h"
  147. #include "app_guiobj_auto_search.h"
  148. #include "app_guiobj_dtv_pvr_playinfo.h"
  149. #include "app_guiobj_dtv_partitionlist.h"
  150. #include "app_power_control.h"
  151. #include "app_clone_data.h"
  152. //#include "system_utils.h"
  153. #ifdef SUPPORT_CEC_TV
  154. #include "umf_cec.h"
  155. #endif
  156. #include "app_guiobj_hdmilink.h"
  157. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  158. #include "app_guiobj_satsystem.h"
  159. #include "mid_sat_antenna.h"
  160. #endif
  161. #include "app_sysset.h"
  162. #include "app_guiobj_cul_fm_factorySetting_new.h"
  163. #ifdef SUPPORT_LED_FLASH
  164. #include "app_led_control.h"
  165. #endif
  166. #include "app_sysset.h"
  167. #ifdef CELLO_cello
  168. #include "app_guiobj_auto_installation_cello.h"
  169. #endif
  170. #ifdef N32_GAME_SUPPORT
  171. #include "app_clone_data.h"
  172. #endif
  173. #ifdef SUPPORT_HKC_FACTORY_REMOTE
  174. #ifdef CONFIG_ATV_SUPPORT
  175. #include "app_atv_playback.h"
  176. #endif
  177. #endif
  178. #include "app_guiobj_favnet.h"
  179. #include "audio_ioctl.h"
  180. #include "drv_dtv_external.h"
  181. #include "drv_dtv_common.h"
  182. #include "mid_dtv_display.h"
  183. #ifdef CONFIG_SUPPORT_MHEG5
  184. #include "mid_mheg5.h"
  185. #endif
  186. #ifdef CONFIG_CIPLUS_SUPPORT
  187. #include "mid_dtvci.h"
  188. #endif
  189. #include "app_console.h"
  190. #ifdef CONFIG_QSD
  191. #include "app_guiobj_cul_fm_factorySetting_new.h"
  192. #endif
  193. #include "unicode.h"
  194. #include "cust_nvm_cfg.h"
  195. #include "app_factory_flash_access.h"
  196. #ifdef CONFIG_SUPPORT_INDONESIA_EWS
  197. #include "app_guiobj_dtv_ews_awas.h"
  198. #include "app_guiobj_ews_areacodesetting.h"
  199. #include "al_psi_monitor.h"
  200. #endif
  201. #ifdef CONFIG_SUPPORT_MIRACAST
  202. #include "umf_miracast.h"
  203. #endif
  204. #include "app_guiobj_dtv_prognum.h"
  205. #if defined(CONFIG_BT_RDA5856)
  206. #include "app_bt.h"
  207. #include "app_guiobj_bt_setting.h"
  208. #endif
  209. #ifdef CONFIG_ENABLE_UMF_MODULES
  210. #include "umf_mod.h"
  211. #endif
  212. /********************************************************************
  213. Macros
  214. ********************************************************************/
  215. #define DVB_DEBUG
  216. #ifdef DVB_DEBUG
  217. #define dvb_printf(fmt, arg...) UMFDBG(0,"[DVB App][%s:%d]"fmt, __FUNCTION__, __LINE__, ##arg)
  218. #else
  219. #define dvb_printf(fmt, arg...) ((void) 0)
  220. #endif
  221. #define PVR_DEBUG
  222. #ifdef PVR_DEBUG
  223. #undef PVR_DEBF
  224. #define PVR_DEBF(fmt, arg...) UMFDBG(0,fmt, ##arg)
  225. #else
  226. #undef PVR_DEBF
  227. #define PVR_DEBF(fmt, arg...) ((void) 0)
  228. #endif
  229. //#define FW_DEBUG
  230. #ifdef FW_DEBUG
  231. #define FW_DEBF(fmt, arg...) UMFDBG(0,fmt, ##arg)
  232. #else
  233. #define FW_DEBF(fmt, arg...) ((void) 0)
  234. #endif
  235. #ifdef SUPPORT_SUBTITLE_ON_PG
  236. #define ON_DATA_APPLICATION_DECISION(b)\
  237. ((b&OSD2CTRLMDL_SUB)>0? (OSD2CTRLMDL_SUB|(b&OSD2CTRLMDL_MH5)):(b&OSD2CTRLMDL_TTX))
  238. #else
  239. #define ON_DATA_APPLICATION_DECISION(b)\
  240. ((b&OSD2CTRLMDL_SUB)>0? OSD2CTRLMDL_SUB:((b&OSD2CTRLMDL_MH5)>0? OSD2CTRLMDL_MH5:(b&OSD2CTRLMDL_TTX)))
  241. #endif
  242. #define AP_FMW_DFP_NAME_BUFF_SIZE (32<<10)
  243. #ifdef SUPPORT_DYNAMIC_MULTIPLEXES
  244. #define MAX_TMP_PROG_SIZE 100
  245. #endif
  246. #define DVB_10_MINUTES (5400)//5400*100 ms(9 min)
  247. #define NOT_USED(p) ((void)(p))
  248. /********************************************************************
  249. Type definitions
  250. ********************************************************************/
  251. enum
  252. {
  253. DATA_APP_UNSTABLE = 0, // si information doesn't find yet
  254. DATA_APP_LANUCHABLE = (1 << 1), // the module has data,
  255. DATA_APP_NOT_FOUND = (1 << 2), // no data found for this application
  256. DATA_APP_EXECUTABLE = (1 << 7), // there is data, and it can be shown
  257. } enDataAppModuleState;
  258. typedef struct DvbPrivateData_t_
  259. {
  260. //user define private data
  261. UINT32 dUserData;
  262. } DvbPrivateData_t;
  263. typedef void (*SysTimeFunc)(void);
  264. /********************************************************************
  265. Function Declare
  266. ********************************************************************/
  267. #ifdef CONFIG_CIPLUS_SUPPORT
  268. extern INT32 APP_DVB_CI_CiInit(void);
  269. static Boolean g_isMute = FALSE;
  270. #endif
  271. #ifdef AC_ON_AUTO_GET_TIME
  272. extern Boolean g_fBackgroundGetTime;
  273. #endif
  274. extern UINT8 AL_FLASH_GetColorLUTALL(ColorLUT_t* bColorLUTValue);
  275. extern int APP_GUIOBJ_3DMenu_SetModeNoOutPutStructure(UINT32 u32Mode);
  276. extern void _APP_GUIOBJ_3DMenu_GetForce2DAnother(UINT32 *u32Force2D);
  277. extern void _APP_GUIOBJ_3DMenu_SetForce2DAnother(UINT32 u32Force2D);
  278. static INT32 _DVBApp_OnCreate(void **ppPrivateData);
  279. static INT32 _DVBApp_OnDestroy(void **ppPrivateData);
  280. static INT32 _DVBApp_OnRun(void *pPrivateData, UINT32 dParam);
  281. static INT32 _DVBApp_OnTerminate(void *pPrivateData, UINT32 dParam);
  282. static INT32 _DVBApp_OnTimerUpdate(void *pPrivateData);
  283. static INT32 _DVBApp_OnEvent(void *pPrivateData, UINT32 dMessage, UINT32 dParam);
  284. extern void _APP_GUIOBJ_Sound_SetMuteStatus();
  285. extern UINT8 gIsFactoryResetting;
  286. static INT32 _DVBApp_Zapping(
  287. UINT8 bServiceType, AL_RecHandle_t hProgHdl,
  288. UINT8 bForce, UINT32 u32Paramter, Boolean bShowInfo);
  289. static INT32 _DVBApp_CloseAllMenu(void);
  290. #ifdef CONFIG_SUPPORT_HOTKEY_SOURCE_LOCK
  291. extern void SourceLock_Set_Hotkey_Flag(bool g_SourceLock_flag);
  292. #endif
  293. extern Boolean gUSBUpgradeBinIsSupperBin;
  294. #ifdef CONFIG_SUPPORT_HOTKEY_SOURCE_LOCK
  295. static bool g_fmSourceLock_flag = FALSE;
  296. #endif
  297. #ifdef CONFIG_SUPPORT_INDONESIA_EWS
  298. static UINT16 g_PreEWSLevel = STATUS_NONE;
  299. static Boolean g_bReciveEWS= FALSE;
  300. #endif
  301. /********************************************************************
  302. Global Variables
  303. ********************************************************************/
  304. SysAppInstDef stDvbInst =
  305. {
  306. SYS_APP_DVB,
  307. _DVBApp_OnCreate,
  308. _DVBApp_OnDestroy,
  309. _DVBApp_OnRun,
  310. _DVBApp_OnTerminate,
  311. _DVBApp_OnTimerUpdate,
  312. _DVBApp_OnEvent,
  313. SYSTEM_IDLE, //system state.
  314. Dvb_GUI_Obj_List, //GUI object table
  315. DVB_GUIOBJ_MAX, //GUI object table size
  316. NULL, //System Application Infrastructure (should not be modified)
  317. NULL //System Application private data (created in OnInitialize function)
  318. };
  319. #ifdef CONFIG_CI_SUPPORT
  320. UINT32 g_CI_IgnoreGuiObjID[] =
  321. {
  322. DVB_GUIOBJ_EPG,
  323. DVB_GUIOBJ_CHNLIST,
  324. DVB_GUIOBJ_FAVLIST,
  325. DVB_GUIOBJ_MULTIAUD,
  326. DVB_GUIOBJ_SCAN_PROCESS,
  327. #ifdef CONFIG_SUPPORT_TTX
  328. DVB_GUIOBJ_TTX,
  329. #endif
  330. #ifdef CONFIG_SUPPORT_SUBTITLE
  331. DVB_GUIOBJ_SUBTITLEMENU,
  332. #endif
  333. APP_GUIOBJ_SOURCE,
  334. };
  335. UINT32 g_CI_HideGuiObjID[] =
  336. {
  337. DVB_GUIOBJ_PROGINFO,
  338. DVB_GUIOBJ_PROGNUM,
  339. };
  340. #endif
  341. #ifdef CONFIG_SUPPORT_3D_EN
  342. extern UINT8 bSet3DMode;
  343. #endif
  344. /*Static Variables*/
  345. static PopmsgParam_t stPopupWaitingList[PLAYBACK_POPUP_MAX-PLAYBACK_POPUP_NONE];
  346. static UINT32 g_dCurPopup = PLAYBACK_POPUP_NONE;
  347. static UINT32 g_u32OldPopup = PLAYBACK_POPUP_NONE;
  348. static UINT32 g_u32NoSignalTimer = 0;
  349. static UINT32 g_u32NoSignalSleepTimer = 0;
  350. static UINT32 g_u32PopupWaitingList = 0;
  351. static UINT8 g_PauseState = FALSE;
  352. static UINT8 g_SetPQFlag = FALSE;
  353. static bool bSetUnMuteFlag = FALSE;
  354. static bool g_bMidHasUnmute = FALSE;
  355. static Prog_ScrambleStatus_t g_bScrambleFlag = PROG_STATUS_SCRAMBLE_UNKNOW;
  356. static bool g_bTempSerFlag = FALSE;
  357. #ifdef CONFIG_SUPPORT_OTA_UPGRADE
  358. static bool g_bOTAFlag = FALSE;
  359. #endif
  360. #ifdef SUPPORT_DTV_SHOW_BLUESCREEN
  361. static bool g_bIsBlueScreen = FALSE;
  362. #endif
  363. static bool g_bForceProcessEventCbk = FALSE;
  364. #ifdef CONFIG_SUPPORT_PVR
  365. AL_SCH_sched_id_t stoprec_id = AL_SCH_INVALID_ID;
  366. AL_SCH_sched_id_t chsrc_id = AL_SCH_INVALID_ID;
  367. static Boolean g_bIsCHUp = FALSE;
  368. static Boolean g_bIsNumKey = FALSE;
  369. static AL_RecHandle_t g_ProgHandle;
  370. static UINT8 g_u8BGTimeshiftStart = 0;
  371. static MID_REC_MODE g_eCheckRecMode = MID_REC_MODE_MAX; //for auto mode speed not enough popup
  372. AL_RecHandle_t g_ProgHandleB4Rec;
  373. static Boolean g_bTvRadioSwap = FALSE; //for timer rec to swap TV RADIO
  374. static Boolean g_bPVRSwitchSource = FALSE;
  375. AL_SCH_sched_id_t g_dReminderId;
  376. AL_PR_details_t g_stDetails;
  377. AL_PR_details_t g_stOldDetails;
  378. AL_DB_ERecordType_t g_eRecType;
  379. AL_PR_type_t g_remtype = AL_PR_INVALID_REM;
  380. static APP_Favorite_t FavType = APP_FAVORITE_NONE;
  381. static Boolean g_bIsPlaykey = FALSE;/*<set this flag when user press play/pause key*/
  382. #endif
  383. static Boolean g_bIsFav = FALSE;
  384. static UINT8 g_u8SourceTrastTimer = 0;
  385. static UINT8 g_u8PopScrambleMsgTimer = 0;
  386. static UINT8 g_u8ZappingTimer = 0;
  387. extern Boolean g_bAudHasUpdate;
  388. #ifdef TEAC_BLUE_KEY_FUNCTION
  389. static APP_Panel_PowerSequenceType_e g_eAppPanelOnOff = APP_PANEL_POWER_UP;
  390. #endif
  391. static Boolean g_bUnstable = FALSE;
  392. #if defined (CONFIG_SUPPORT_TTX ) && defined(CONFIG_SUPPORT_TTX_DISP_FOR_AUS)
  393. static UINT8 g_u8TTXTimer = 0;
  394. #endif
  395. static al_uint8 g_bNoSteamData = AL_DVB_MONITOR_VALUE_INVAILED; /**<stream data state record, al_false: has stream data, al_true: no stream data*/
  396. static al_uint8 g_AdioChnPolTime = 0;
  397. static al_uint8 g_UnsupportVideo = FALSE;
  398. #ifdef CONFIG_SUPPORT_EWS
  399. static AL_RecHandle_t g_PrevProgHandle = AL_DB_INVALIDHDL;
  400. static al_uint8 g_EWSMode = FALSE;
  401. static al_uint8 g_NonClearEWS = FALSE;
  402. static DBPIDInfo_t g_MonAudioPid;
  403. static DBPIDInfo_t g_PrevAudioPid;
  404. #endif
  405. #ifdef CONFIG_CI_SUPPORT
  406. static al_uint8 g_Audio_Scramble_Counter = 0;
  407. static Boolean g_VIP_FINISH_Flg = FALSE;
  408. #define AUDIO_SCRAMBLE_COUNT 50
  409. #endif
  410. static Boolean bFindNewTSID = FALSE;
  411. static INT32 g_u32Mutekeydelaytime = 10;
  412. static INT32 g_u32MuteIconHandle = 10;
  413. static INT32 MUTE_KEY_INTERVAL = 10;
  414. #ifdef CONFIG_SUPPORT_SSU_UPGRADE
  415. static bool autoupgrade = FALSE;// false:don't auto upgrade(show prompt), True: auto(show progress)
  416. static AU_Timer_state_e autoupgrade_sate = AU_MAX;// this param is used for control auto grade process.
  417. static bool bBootAutoUpGrade = 0;
  418. void DVBApp_SetBootAutoUpGrade(Boolean flag)
  419. {
  420. bBootAutoUpGrade = flag;
  421. }
  422. Boolean DVBApp_IsBootUpGrade(void)
  423. {
  424. return bBootAutoUpGrade;
  425. }
  426. #if defined (CONFIG_SUPPORT_TTX ) && defined(CONFIG_SUPPORT_TTX_DISP_FOR_AUS)
  427. void APP_SetTTXTimer(UINT8 time)
  428. {
  429. g_u8TTXTimer = time;
  430. }
  431. UINT8 APP_GetTTXTimer(void)
  432. {
  433. return g_u8TTXTimer;
  434. }
  435. #endif
  436. void DVBApp_SetAutoUpgrade(Boolean state)
  437. {
  438. autoupgrade = state;
  439. }
  440. Boolean DVBApp_IsAutoUpgrade(void)
  441. {
  442. return autoupgrade;
  443. }
  444. AU_Timer_state_e DVBApp_GetAU_Sate(void)
  445. {
  446. return autoupgrade_sate;
  447. }
  448. void DVBApp_SetAU_Sate(AU_Timer_state_e state)
  449. {
  450. autoupgrade_sate = state;
  451. }
  452. #endif
  453. #ifdef CONFIG_MOD_PACK_SUB
  454. static Boolean _DVBApp_DispSub(void)
  455. {
  456. /*Because free memory isn't enough, subtitle can't be displayed with them.*/
  457. if (APP_MenuMgr_Exist_Main_Menu() != 0
  458. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPGEXTEND)
  459. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG)
  460. #ifdef CONFIG_SUPPORT_PVR
  461. || MID_RecorderIsCurRecording() == DRV_SUCCESS
  462. #endif
  463. #ifdef CONFIG_MOD_PACK_TT
  464. || (umf_checkModuleLoaded(UMFMOD_TT) == 0)
  465. #endif
  466. || (umf_checkModuleLoaded(UMFMOD_SUB) == 0))
  467. {
  468. return FALSE;
  469. }
  470. else
  471. {
  472. return TRUE;
  473. }
  474. }
  475. #endif
  476. /********************************************************************
  477. Function Define
  478. ********************************************************************/
  479. UINT8 APP_GetPlaybackPauseState(void)
  480. {
  481. return g_PauseState;
  482. }
  483. void APP_SetPlaybackPauseState(UINT8 state)
  484. {
  485. g_PauseState = state;
  486. }
  487. UINT8 APP_GetPlaybackVideoState(void)
  488. {
  489. return g_UnsupportVideo;
  490. }
  491. #ifdef SUPPORT_DYNAMIC_MULTIPLEXES
  492. static void _DVBApp_NewServicesToDatabase(void)
  493. {
  494. AL_RecHandle_t hCurrProgHdl = AL_DB_INVALIDHDL;
  495. AL_RecHandle_t hCurrTPHdl = AL_DB_INVALIDHDL;
  496. AL_RecHandle_t hNWHdl = AL_DB_INVALIDHDL;
  497. AL_DB_EDBType_t eDBType = AL_DBTYPE_MAX;
  498. if ((MID_SUCCESS != MID_PlaybackGetCurProgHandle(al_null, &hCurrProgHdl))
  499. || (hCurrProgHdl == AL_DB_INVALIDHDL))
  500. {
  501. dvb_printf("Get current program handle error.\n");
  502. return;
  503. }
  504. if (AL_SUCCESS != AL_DB_GetRecordType(hCurrProgHdl, &eDBType, al_null))
  505. {
  506. dvb_printf("Get current active db type error.\n");
  507. return;
  508. }
  509. hCurrTPHdl = hCurrProgHdl;
  510. if (AL_SUCCESS != AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eDBType, AL_RECTYPE_DVBMULTIPLEX, &hCurrTPHdl))
  511. {
  512. dvb_printf("Get tp handle failed !!!\n");
  513. return;
  514. }
  515. hNWHdl = hCurrTPHdl;
  516. if (AL_SUCCESS != AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eDBType, AL_RECTYPE_DVBNETWORK, &hNWHdl))
  517. {
  518. dvb_printf("Get network handle failed !!!\n");
  519. return;
  520. }
  521. int i,j;
  522. UINT16 sindex,num;
  523. UINT16 cnt = 0;
  524. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0, sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  525. UINT32 u32CurrentArea = g_stChannelData.Country;
  526. const AL_DVBT_AreaTable_t * area = NULL;
  527. APP_Area_GetAreaTableItem(u32CurrentArea,&area);
  528. AL_TPSects_Info_st *pTemp = (AL_TPSects_Info_st *)area->pTPRegion_Area;
  529. // 1. get new service list from other tp.
  530. AL_PSIMon_SimpleSrv_t *srvbuf = (AL_PSIMon_SimpleSrv_t *) zero_malloc(sizeof(AL_PSIMon_SimpleSrv_t)*PSIMON_MAX_OTHERTP_SRV);
  531. UINT8 *srvnamebuf = (UINT8 *) zero_malloc(DB_DVB_MAX_CHNAME_LEN*PSIMON_MAX_OTHERTP_SRV);
  532. AL_PSI_Monitor_GetOtherTpServList(srvbuf, srvnamebuf, &num);
  533. for (sindex = 0; sindex < num; sindex++)
  534. {
  535. UINT8 IsFreqFoundInTable = 0;
  536. INT32 u32Freq = 0;
  537. if (srvbuf == NULL || srvnamebuf == NULL)
  538. {
  539. break;
  540. }
  541. // 2. looking for the Tp's parameters from area table
  542. for (i = (area->SectNum - 1); i >= 0; i--)
  543. {
  544. for (j = (pTemp[i].SectTPCount - 1); j >= 0; j--)
  545. {
  546. u32Freq = pTemp[i].StartFreq + pTemp[i].stBandWidth.eBandWidth.BaseBandWidth * j * 1000;
  547. if (srvbuf[sindex].uiFreq == u32Freq
  548. || srvbuf[sindex].uiFreq - 166 == u32Freq
  549. || srvbuf[sindex].uiFreq + 167 == u32Freq)
  550. {
  551. IsFreqFoundInTable = 1;
  552. break;
  553. }
  554. }
  555. if (IsFreqFoundInTable)
  556. {
  557. break;
  558. }
  559. }
  560. if (IsFreqFoundInTable == 0)
  561. {
  562. dvb_printf(" Inexpected error! freq. doesn't find \n");
  563. continue;
  564. }
  565. // 3. check if the TP presents already
  566. UINT32 totalNum = 0, gotNum = 0;
  567. AL_Serv_SearchKey_t stSearchKey;
  568. AL_RecHandle_t hTPHandle = AL_DB_INVALIDHDL;
  569. stSearchKey.eSearchField = AL_SRV_SEARCHFIELD_FREQ;
  570. stSearchKey.u32Frequency = u32Freq;
  571. stSearchKey.eDBType = eDBType;
  572. stSearchKey.eRecType = AL_RECTYPE_DVBMULTIPLEX;
  573. AL_DB_SearchRecords((AL_DB_RecordMatchFunc)AL_Serv_MatchRecBySearchKey,
  574. (al_void *)&stSearchKey, eDBType, AL_RECTYPE_DVBMULTIPLEX, 1, 0, &totalNum, &gotNum, &hTPHandle);
  575. if(totalNum == 0 || gotNum == 0 || hTPHandle == AL_DB_INVALIDHDL)
  576. {
  577. AL_MultiplexDetail_t stTSInfo;
  578. memset(&stTSInfo, 0, sizeof(AL_MultiplexDetail_t));
  579. if (AL_DBTYPE_DVB_T == eDBType)
  580. {
  581. stTSInfo.stDVBTMultiplex.uiFreqK = u32Freq;
  582. stTSInfo.stDVBTMultiplex.ucBandwidth = pTemp[i].stBandWidth.eBandWidth.BaseBandWidth;
  583. stTSInfo.stDVBTMultiplex.ucAreaIndex = u32CurrentArea;
  584. stTSInfo.stDVBTMultiplex.usTsId = srvbuf[sindex].usTsId;
  585. #ifdef SUPPORT_HIERARCHY_MODE
  586. stTSInfo.stDVBTMultiplex.ucHierarchyMode = pTemp[i].U8HierarchyMode;
  587. #endif
  588. }
  589. AL_DB_AddRecord(eDBType, AL_RECTYPE_DVBMULTIPLEX, &stTSInfo, hNWHdl, &hTPHandle);
  590. }
  591. // 4. add service to database
  592. AL_ServiceDetail_t stServInfo;
  593. AL_RecHandle_t hProg = AL_DB_INVALIDHDL;
  594. memset(&stServInfo, 0, sizeof(AL_ServiceDetail_t));
  595. #ifdef NEW_FONT
  596. al_uint32 u32CodePage = 0xff;
  597. al_uint8 *pExtText = al_null;
  598. al_int32 i32Len = 0;
  599. i32Len = DB_DVB_MAX_CHNAME_LEN;
  600. AL_Event_GetCodePage(&u32CodePage, srvbuf[sindex].pucname, &i32Len);
  601. if (u32CodePage == 0xff)
  602. {
  603. AL_Event_GetDefaultCodePage(&u32CodePage);
  604. }
  605. pExtText = UNI_StringToUtf8(u32CodePage, srvbuf[sindex].pucname, &i32Len, FALSE);
  606. memset(srvbuf[sindex].pucname, 0, DB_DVB_MAX_CHNAME_LEN);
  607. i32Len = i32Len < DB_DVB_MAX_CHNAME_LEN? i32Len : DB_DVB_MAX_CHNAME_LEN -1;
  608. memcpy(srvbuf[sindex].pucname, pExtText, i32Len);//service name
  609. free(pExtText);
  610. pExtText = al_null;
  611. #endif
  612. if (AL_DBTYPE_DVB_T == eDBType)
  613. {
  614. memcpy(stServInfo.stDVBTServ.szProgName, srvbuf[sindex].pucname, DB_DVB_MAX_CHNAME_LEN - 1);
  615. stServInfo.stDVBTServ.usOrigNetId = srvbuf[sindex].usOrgNetId;
  616. stServInfo.stDVBTServ.usNetId = srvbuf[sindex].usNetWorkId;
  617. stServInfo.stDVBTServ.usServiceId = srvbuf[sindex].usServiceId;
  618. stServInfo.stDVBTServ.usTsId = srvbuf[sindex].usTsId;
  619. stServInfo.stDVBTServ.usProgNo = srvbuf[sindex].usProgNum;
  620. #ifdef SUPPORT_LCN
  621. stServInfo.stDVBTServ.usOrgLcn = srvbuf[sindex].usProgNum;
  622. #endif
  623. stServInfo.stDVBTServ.eSDTSrvType = srvbuf[sindex].u8SDTSrvType;
  624. stServInfo.stDVBTServ.eTvRadioType = srvbuf[sindex].u8SDTSrvType;
  625. stServInfo.stDVBTServ.stProgAttrib.notvisible = srvbuf[sindex].stProgAttrib.notvisible;
  626. }
  627. if(AL_SUCCESS == AL_DB_AddRecord(eDBType, srvbuf[sindex].u8SDTSrvType, &stServInfo, hTPHandle, &hProg))
  628. {
  629. dvb_printf("Add service ONID 0x%x TSID 0x%x SID 0x%x\n", stServInfo.stDVBTServ.usOrigNetId, stServInfo.stDVBTServ.usTsId, stServInfo.stDVBTServ.usServiceId);
  630. ++cnt;
  631. }
  632. else
  633. {
  634. dvb_printf("Failed to add service 0x%x!\n", stServInfo.stDVBTServ.usServiceId);
  635. }
  636. }
  637. SAFE_FREE(srvbuf);
  638. SAFE_FREE(srvnamebuf);
  639. if (cnt)
  640. {
  641. //SORT_PARA stSortPara;
  642. UINT8 bLcnOnOff;
  643. bLcnOnOff = 0;
  644. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO, 0,
  645. sizeof(APP_SETTING_SystemInfo_t), &(g_stSysInfoData));
  646. bLcnOnOff = g_stSysInfoData.LcnOnOff;
  647. if (bLcnOnOff == LCN_ON)
  648. {
  649. AL_DB_SortRecords(eDBType, AL_RECTYPE_DVBTV, AL_DB_SORTBY_SERVTYPE, al_true);
  650. AL_DB_SortRecords(eDBType, AL_RECTYPE_DVBRADIO, AL_DB_SORTBY_SERVTYPE, al_true);
  651. }
  652. MID_PsiMonStop(FALSE);
  653. MID_PsiMonStart();
  654. SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, FW_MONITOR_UPDATE_SERVICE, 0);
  655. }
  656. }
  657. #endif
  658. static AL_RecHandle_t _DVBApp_GetNextAvailableServiceEx(AL_DB_EDBType_t eNetType,AL_DB_ERecordType_t eServiceType,AL_RecHandle_t Hprog)
  659. {
  660. AL_RecHandle_t hNextProgHdl = AL_DB_INVALIDHDL;
  661. AL_DB_ERecordType_t eRecType;
  662. AL_DB_EDBType_t eDBType;
  663. AL_RecHandle_t hCurTPHdl = Hprog;
  664. DBServAttrib_t stAttribute;
  665. AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hCurTPHdl);
  666. hNextProgHdl = AL_DB_INVALIDHDL;
  667. while (AL_SUCCESS == AL_DB_GetChildRecord(hCurTPHdl, &hNextProgHdl)
  668. && hNextProgHdl != AL_DB_INVALIDHDL)
  669. {
  670. AL_DB_GetRecordType(hNextProgHdl, &eDBType, &eRecType);
  671. memset(&stAttribute, 0, sizeof(DBServAttrib_t));
  672. AL_DB_QueryDetailFieldByName(hNextProgHdl, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute);
  673. if((eRecType==eServiceType)&&(stAttribute.unStable == al_false)&&(stAttribute.delete== al_false)
  674. && (stAttribute.notvisible == al_false))
  675. {
  676. return hNextProgHdl;
  677. }
  678. }
  679. if(hNextProgHdl!=AL_DB_INVALIDHDL)
  680. {
  681. dvb_printf("Get Next Service Successfully!\n");
  682. }
  683. else
  684. {
  685. dvb_printf("Get Next Service Failed!\n");
  686. }
  687. return hNextProgHdl;
  688. }
  689. AL_RecHandle_t DVBApp_GetNextAvailableService(AL_DB_EDBType_t eNetType,AL_DB_ERecordType_t eServiceType,AL_RecHandle_t hCurrProgHdl)
  690. {
  691. AL_RecHandle_t hNextProgHdl = AL_DB_INVALIDHDL;
  692. hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl);
  693. if(hNextProgHdl == AL_DB_INVALIDHDL)
  694. {
  695. if(eServiceType == AL_RECTYPE_DVBTV)
  696. {
  697. eServiceType = AL_RECTYPE_DVBRADIO;
  698. hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl);
  699. if(hNextProgHdl == AL_DB_INVALIDHDL)
  700. {
  701. eServiceType = AL_RECTYPE_DVBDATA;
  702. hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl);
  703. if(hNextProgHdl == AL_DB_INVALIDHDL)
  704. {
  705. dvb_printf("DATABASE Empty!!!\n\n");
  706. }
  707. }
  708. }
  709. else if(eServiceType == AL_RECTYPE_DVBRADIO)
  710. {
  711. eServiceType = AL_RECTYPE_DVBTV;
  712. hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl);
  713. if(hNextProgHdl == AL_DB_INVALIDHDL)
  714. {
  715. eServiceType = AL_RECTYPE_DVBDATA;
  716. hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl);
  717. if(hNextProgHdl == AL_DB_INVALIDHDL)
  718. {
  719. dvb_printf("DATABASE Empty!!!\n\n");
  720. }
  721. }
  722. }
  723. else
  724. {
  725. eServiceType = AL_RECTYPE_DVBTV;
  726. hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl);
  727. if(hNextProgHdl == AL_DB_INVALIDHDL)
  728. {
  729. eServiceType = AL_RECTYPE_DVBRADIO;
  730. hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl);
  731. if(hNextProgHdl == AL_DB_INVALIDHDL)
  732. {
  733. dvb_printf("DATABASE Empty!!!\n\n");
  734. }
  735. }
  736. }
  737. }
  738. if(hNextProgHdl == AL_DB_INVALIDHDL)
  739. {
  740. dvb_printf("\n!!!!!!!!!DVBApp_GetNextAvailableService Failed!!!\n\n");
  741. }
  742. else
  743. {
  744. dvb_printf("\n!!!!!!!!!DVBApp_GetNextAvailableService Successfully!!!\n\n");
  745. }
  746. return hNextProgHdl;
  747. }
  748. void DVBApp_RemoveUnstableService(void)
  749. {
  750. AL_RecHandle_t hCurrProgHdl = AL_DB_INVALIDHDL;
  751. AL_RecHandle_t hNextProgHdl = AL_DB_INVALIDHDL;
  752. AL_RecHandle_t hPrevProgHdl = AL_DB_INVALIDHDL;
  753. AL_RecHandle_t hServHdl = AL_DB_INVALIDHDL;
  754. AL_RecHandle_t hCurrTpHdl = AL_DB_INVALIDHDL;
  755. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  756. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  757. DBServAttrib_t stAttribute;
  758. al_uint16 usTsId = 0xffff;
  759. al_uint16 usOrigNetId = 0xffff;
  760. al_uint16 usServiceId = 0xffff;
  761. APP_DVB_Playback_GetCurrServiceType(eNetType);
  762. //add for Background scan fail will show DATABASE_EMPTY begin
  763. bool g_bScanSuccessFlag = FALSE;
  764. hCurrProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eNetType,eServiceType);
  765. hCurrTpHdl = hCurrProgHdl;
  766. AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hCurrTpHdl);
  767. hServHdl = AL_DB_INVALIDHDL;
  768. while (AL_SUCCESS == AL_DB_GetChildRecord(hCurrTpHdl, &hServHdl)
  769. && hServHdl != AL_DB_INVALIDHDL)
  770. {
  771. memset(&stAttribute, 0, sizeof(DBServAttrib_t));
  772. if(AL_SUCCESS != AL_DB_QueryDetailFieldByName(hServHdl, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute))
  773. {
  774. continue;
  775. }
  776. if(stAttribute.delete == al_true)
  777. {
  778. continue;
  779. }
  780. if(stAttribute.unStable == al_false)// Background scan SUCCESS
  781. {
  782. g_bScanSuccessFlag = al_true;
  783. break;
  784. }
  785. }
  786. if(g_bScanSuccessFlag == al_false)
  787. {
  788. printf("[%s:%d] background scan failed\n",__FUNCTION__,__LINE__);
  789. hServHdl = AL_DB_INVALIDHDL;
  790. while (AL_SUCCESS == AL_DB_GetChildRecord(hCurrTpHdl, &hServHdl)
  791. && hServHdl != AL_DB_INVALIDHDL)
  792. {
  793. memset(&stAttribute, 0, sizeof(DBServAttrib_t));
  794. if(AL_SUCCESS != AL_DB_QueryDetailFieldByName(hServHdl, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute))
  795. {
  796. continue;
  797. }
  798. if(stAttribute.unStable == al_true)
  799. {
  800. stAttribute.unStable = al_false;
  801. }
  802. AL_DB_UpdateDetailFieldByName(hServHdl, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute);
  803. }
  804. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  805. DVB_GUIOBJ_PLAYBACK,APP_DVB_INTRA_EVENT_START_PLAYBACK,0);
  806. return; // if Background scan fail,don't remove Prog
  807. }
  808. //add for Background scan fail will show DATABASE_EMPTY end
  809. hCurrProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eNetType,eServiceType);
  810. hCurrTpHdl = hCurrProgHdl;
  811. memset(&stAttribute, 0, sizeof(DBServAttrib_t));
  812. AL_DB_QueryDetailFieldByName(hCurrProgHdl, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute);
  813. if (stAttribute.unStable == al_true)
  814. {
  815. hNextProgHdl = DVBApp_GetNextAvailableService(eNetType,eServiceType,hCurrProgHdl);
  816. }
  817. AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hCurrTpHdl);
  818. #ifdef CONFIG_DVB_SYSTEM_DVBT2_SUPPORT
  819. extern Boolean bT2HideScanProgUnstableFlag;
  820. if (bT2HideScanProgUnstableFlag)//for DVB-T2
  821. {
  822. AL_RecHandle_t hTempTPHandle = AL_DB_INVALIDHDL;
  823. AL_RecHandle_t hProg = AL_DB_INVALIDHDL;
  824. AL_MultiplexDetail_t ts;
  825. AL_DB_QueryDetail(hCurrTpHdl, &ts);
  826. hPrevProgHdl = APP_DVB_Playback_GetPrevProg(eNetType);
  827. AL_MultiplexDetail_t stTSInfo;
  828. memset(&stTSInfo, 0, sizeof(AL_MultiplexDetail_t));
  829. hTempTPHandle = AL_DB_INVALIDHDL;
  830. if (AL_SUCCESS == AL_DB_GetRecord(AL_DB_REQ_GETFIRST, AL_DBTYPE_DVB_T, AL_RECTYPE_DVBMULTIPLEX, &hTempTPHandle))
  831. {
  832. do
  833. {
  834. if (AL_SUCCESS == AL_DB_QueryDetail(hTempTPHandle, &stTSInfo))
  835. {
  836. if (stTSInfo.stDVBTMultiplex.ucTp_dvb_type == EDVB_DELIVER_TYPE_T2)
  837. {
  838. if(ABSV(ts.stDVBTMultiplex.uiFreqK,stTSInfo.stDVBTMultiplex.uiFreqK)<(stTSInfo.stDVBTMultiplex.ucBandwidth*500))
  839. {
  840. hProg = AL_DB_INVALIDHDL;
  841. while (AL_DB_GetChildRecord(hTempTPHandle, &hProg) == AL_SUCCESS && hProg != AL_DB_INVALIDHDL)
  842. {
  843. memset(&stAttribute, 0, sizeof(DBServAttrib_t));
  844. if(AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute))
  845. {
  846. continue;
  847. }
  848. if ((AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"usTsId", (al_void *)&usTsId))
  849. || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"usOrigNetId", (al_void *)&usOrigNetId))
  850. || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"usServiceId", (al_void *)&usServiceId)))
  851. {
  852. printf("Get service info failed!!!\n");
  853. }
  854. if(stAttribute.unStable == al_true)
  855. {
  856. dvb_printf("====unStable remove! hProg=0x%x====\n", hProg);
  857. if (AL_DB_RemoveRecord(hProg) == AL_SUCCESS)
  858. {
  859. AL_Event_UnLockChannels(AL_DBTYPE_DVB_T, usOrigNetId, usTsId, usServiceId);
  860. hProg = AL_DB_INVALIDHDL;
  861. }
  862. else
  863. {
  864. printf("remove service failed!!!\n");
  865. }
  866. if(hPrevProgHdl != AL_DB_INVALIDHDL)
  867. {
  868. if(hProg == hPrevProgHdl)
  869. {
  870. APP_DVB_Playback_SetPrevProg(eNetType,AL_DB_INVALIDHDL);
  871. hPrevProgHdl = AL_DB_INVALIDHDL;
  872. }
  873. }
  874. hProg = AL_DB_INVALIDHDL;
  875. }
  876. }
  877. }
  878. }
  879. }
  880. } while(AL_DB_GetRecord(AL_DB_REQ_GETNEXT, AL_DBTYPE_DVB_T, AL_RECTYPE_DVBMULTIPLEX, &hTempTPHandle) == AL_SUCCESS);
  881. }
  882. bT2HideScanProgUnstableFlag = FALSE;
  883. }
  884. else
  885. #endif
  886. {
  887. hServHdl = AL_DB_INVALIDHDL;
  888. hPrevProgHdl = APP_DVB_Playback_GetPrevProg(eNetType);
  889. while (AL_SUCCESS == AL_DB_GetChildRecord(hCurrTpHdl, &hServHdl)
  890. && hServHdl != AL_DB_INVALIDHDL)
  891. {
  892. memset(&stAttribute, 0, sizeof(DBServAttrib_t));
  893. if(AL_SUCCESS != AL_DB_QueryDetailFieldByName(hServHdl, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute))
  894. {
  895. continue;
  896. }
  897. if ((AL_SUCCESS != AL_DB_QueryDetailFieldByName(hServHdl, (al_uint8 *)"usTsId", (al_void *)&usTsId))
  898. || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hServHdl, (al_uint8 *)"usOrigNetId", (al_void *)&usOrigNetId))
  899. || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hServHdl, (al_uint8 *)"usServiceId", (al_void *)&usServiceId)))
  900. {
  901. printf("Get service info failed!!!\n");
  902. }
  903. if(stAttribute.unStable == al_true)
  904. {
  905. if (AL_DB_RemoveRecord(hServHdl) == AL_SUCCESS)
  906. {
  907. AL_Event_UnLockChannels(AL_DBTYPE_DVB_T, usOrigNetId, usTsId, usServiceId);
  908. }
  909. else
  910. {
  911. printf("remove service failed!!!\n");
  912. }
  913. if(hPrevProgHdl != AL_DB_INVALIDHDL)
  914. {
  915. if(hServHdl == hPrevProgHdl)
  916. {
  917. APP_DVB_Playback_SetPrevProg(eNetType,AL_DB_INVALIDHDL);
  918. hPrevProgHdl = AL_DB_INVALIDHDL;
  919. }
  920. }
  921. hServHdl = AL_DB_INVALIDHDL;
  922. }
  923. }
  924. }
  925. #ifdef SUPPORT_LCN
  926. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO, 0,
  927. sizeof(APP_SETTING_SystemInfo_t), &(g_stSysInfoData));
  928. #ifdef SUPPORT_DVBS_LCN
  929. if (g_stSysInfoData.LcnOnOff == LCN_ON && (eNetType == AL_DBTYPE_DVB_T || eNetType == AL_DBTYPE_DVB_C|| eNetType == AL_DBTYPE_DVB_S))
  930. #else
  931. if (g_stSysInfoData.LcnOnOff == LCN_ON && (eNetType == AL_DBTYPE_DVB_T || eNetType == AL_DBTYPE_DVB_C))
  932. #endif
  933. {
  934. DBLCNConfInfo_t *pLcnConf = AL_LCN_GetLCNConfChannel();
  935. LCN_PreJudgeLCN();
  936. LCN_QueryLCNConflict(pLcnConf);
  937. if (pLcnConf->ConfCount > 0)
  938. {
  939. LCN_AutoAssignConflictLCN();
  940. }
  941. LCN_PostJudgeLCN();
  942. }
  943. #endif
  944. LCN_FreeLCNConflict();
  945. LCN_FreeTRNDDictionary();
  946. APP_DVB_ChannelOrderChecking();
  947. APP_DVB_DataSavingToDB(eNetType);
  948. #ifdef CONFIG_SUPPORT_PVR
  949. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  950. {
  951. if ((hNextProgHdl != AL_DB_INVALIDHDL) &&
  952. (hNextProgHdl != hCurrProgHdl))
  953. {
  954. AL_DB_GetRecordType(hNextProgHdl, &eNetType, &eServiceType);
  955. APP_DVB_Playback_SetCurrentProgHandle(eNetType, eServiceType, hNextProgHdl);
  956. APP_DVB_Playback_SetCurrServiceType(eNetType,eServiceType);
  957. }
  958. dvb_printf("===lxl test %s is called. now PVR is playing ===\n", __FUNCTION__);
  959. return;
  960. }
  961. #endif
  962. if ((hNextProgHdl != AL_DB_INVALIDHDL) &&
  963. (hNextProgHdl != hCurrProgHdl))
  964. {
  965. _DVBApp_Zapping(eServiceType, hNextProgHdl, TRUE, 0, TRUE);
  966. }
  967. else
  968. {
  969. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  970. DVB_GUIOBJ_PLAYBACK,APP_DVB_INTRA_EVENT_START_PLAYBACK,0);
  971. }
  972. }
  973. static void _DVBApp_SimulcaseDispose(UINT32 u32Param)
  974. {
  975. AL_RecHandle_t hProgHdl = AL_DB_INVALIDHDL;
  976. AL_RecHandle_t hCurrProgHdl = AL_DB_INVALIDHDL;
  977. AL_RecHandle_t hCurrTpHdl = AL_DB_INVALIDHDL;
  978. AL_RecHandle_t hServHdl = AL_DB_INVALIDHDL;
  979. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  980. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  981. al_bool bPlay = al_false;
  982. al_uint16 usTsId = 0xffff;
  983. al_uint16 usOrigNetId = 0xffff;
  984. al_uint16 usServiceId = 0xffff;
  985. hProgHdl = (AL_RecHandle_t)u32Param;
  986. APP_DVB_Playback_GetCurrServiceType(eNetType);
  987. hCurrProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eNetType,eServiceType);
  988. if (hCurrProgHdl == hProgHdl)
  989. {
  990. hCurrTpHdl = hCurrProgHdl;
  991. AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hCurrTpHdl);
  992. while (AL_SUCCESS == AL_DB_GetChildRecord(hCurrTpHdl, &hServHdl))
  993. {
  994. if ((hServHdl == AL_DB_INVALIDHDL) || (hServHdl == hProgHdl))
  995. {
  996. continue;
  997. }
  998. bPlay = al_true;
  999. _DVBApp_Zapping(eServiceType, hServHdl, TRUE, 0, TRUE);
  1000. }
  1001. if (!bPlay)
  1002. {
  1003. if ((AL_SUCCESS == AL_DB_GetRecord(AL_DB_REQ_GETFIRST, eNetType, eServiceType, &hServHdl))
  1004. && (hServHdl != AL_DB_INVALIDHDL))
  1005. {
  1006. if (hServHdl == hProgHdl)
  1007. {
  1008. if (AL_SUCCESS == AL_DB_GetRecord(AL_DB_REQ_GETNEXT, eNetType, eServiceType, &hServHdl))
  1009. {
  1010. _DVBApp_Zapping(eServiceType, hServHdl, TRUE, 0, TRUE);
  1011. }
  1012. else
  1013. {
  1014. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  1015. APP_DVB_INTRA_EVENT_STOP_PLAYBACK, PLAYBACK_STOP_ALL);
  1016. }
  1017. }
  1018. else
  1019. {
  1020. _DVBApp_Zapping(eServiceType, hServHdl, TRUE, 0, TRUE);
  1021. }
  1022. }
  1023. else
  1024. {
  1025. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  1026. APP_DVB_INTRA_EVENT_STOP_PLAYBACK, PLAYBACK_STOP_ALL);
  1027. }
  1028. }
  1029. }
  1030. if ((AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProgHdl, (al_uint8 *)"usTsId", (al_void *)&usTsId))
  1031. || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProgHdl, (al_uint8 *)"usOrigNetId", (al_void *)&usOrigNetId))
  1032. || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProgHdl, (al_uint8 *)"usServiceId", (al_void *)&usServiceId)))
  1033. {
  1034. printf("Get service info failed!!!\n");
  1035. }
  1036. if (AL_DB_RemoveRecord(hProgHdl) == AL_SUCCESS)
  1037. {
  1038. AL_Event_UnLockChannels(eNetType, usOrigNetId, usTsId, usServiceId);
  1039. }
  1040. else
  1041. {
  1042. printf("remove service failed!!!\n");
  1043. }
  1044. APP_DVB_DataSavingToDB(eNetType);
  1045. }
  1046. static void _DVBApp_ServiceMove(void)
  1047. {
  1048. UINT16 u16CurServiceId = 0;
  1049. AL_PsiMon_NewSrvPosition_t stNewLoction;
  1050. UINT16 i = 0;
  1051. UINT16 u16TpNumber = 0;
  1052. UINT16 u16TsId = 0;
  1053. AL_RecHandle_t itphdl = AL_DB_INVALIDHDL;
  1054. AL_RecHandle_t hProg = AL_DB_INVALIDHDL;
  1055. AL_MultiplexDetail_t stTSInfo;
  1056. AL_DB_EDBType_t eNetType = AL_DBTYPE_MAX;
  1057. AL_ServiceDetail_t stServInfo;
  1058. APP_Source_Type_t eSourType = APP_SOURCE_MAX;
  1059. AL_DB_ERecordType_t service_type = AL_RECTYPE_MAX;
  1060. APP_GUIOBJ_Source_GetCurrSource(&eSourType);
  1061. APP_Database_GetCurrentDBType(eSourType, &eNetType);
  1062. memset(&stServInfo, 0, sizeof(AL_ServiceDetail_t));
  1063. memset(&stTSInfo, 0, sizeof(AL_MultiplexDetail_t));
  1064. hProg = APP_DVB_Playback_GetCurrentProgHandle(eNetType, (AL_RECTYPE_DVBTV |AL_RECTYPE_DVBRADIO|AL_RECTYPE_DVBDATA));
  1065. AL_DB_QueryDetail(hProg, (al_void *)&stServInfo);
  1066. if (eNetType == AL_DBTYPE_DVB_C)
  1067. {
  1068. u16CurServiceId = stServInfo.stDVBCServ.usServiceId;
  1069. }
  1070. else if (eNetType == AL_DBTYPE_DVB_T)
  1071. {
  1072. u16CurServiceId = stServInfo.stDVBTServ.usServiceId;
  1073. }
  1074. else if (eNetType == AL_DBTYPE_DVB_S)
  1075. {
  1076. u16CurServiceId = stServInfo.stDVBSServ.usServiceId;
  1077. }
  1078. AL_PSI_Monitor_GetNewSrvPosition(&stNewLoction);
  1079. if (u16CurServiceId != stNewLoction.usOldServiceId)
  1080. {
  1081. //the program has changed, no need to do anything
  1082. return;
  1083. }
  1084. AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBMULTIPLEX, (al_uint32 *)&u16TpNumber);
  1085. for (i = 0; i < u16TpNumber; i++)
  1086. {
  1087. APP_Database_GetHandleByIndex(eNetType, AL_RECTYPE_DVBMULTIPLEX, i, &itphdl);
  1088. AL_DB_QueryDetail(itphdl, (al_void *)&stTSInfo);
  1089. if (eNetType == AL_DBTYPE_DVB_C)
  1090. {
  1091. u16TsId = stTSInfo.stDVBCMultiplex.usTsId;
  1092. }
  1093. else if (eNetType == AL_DBTYPE_DVB_S)
  1094. {
  1095. u16TsId = stTSInfo.stDVBSMultiplex.usTsId;
  1096. }
  1097. else
  1098. {
  1099. u16TsId = stTSInfo.stDVBTMultiplex.usTsId;
  1100. }
  1101. if(stNewLoction.usTsId == u16TsId)
  1102. {
  1103. break;
  1104. }
  1105. }
  1106. if (i == u16TpNumber)
  1107. {
  1108. return;
  1109. }
  1110. if (APP_DVB_ProgMgr_Query(&service_type, &hProg,
  1111. stNewLoction.usOrgNetId, stNewLoction.usTsId, stNewLoction.usServiceId) == AL_SUCCESS)
  1112. {
  1113. //the service will be remove after remove procedure
  1114. }
  1115. else
  1116. {
  1117. if (eNetType == AL_DBTYPE_DVB_C)
  1118. {
  1119. #ifdef CONFIG_DVB_SYSTEM_DVBC_SUPPORT
  1120. stServInfo.stDVBCServ.usOrigNetId = stNewLoction.usOrgNetId;
  1121. stServInfo.stDVBCServ.usTsId = stNewLoction.usTsId;
  1122. stServInfo.stDVBCServ.usServiceId = stNewLoction.usServiceId;
  1123. AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(SCDBServInfo_t, usOrigNetId),
  1124. FIELD_SIZEOF(SCDBServInfo_t, usOrigNetId), (al_void *)&(stNewLoction.usOrgNetId));
  1125. AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(SCDBServInfo_t, usTsId),
  1126. FIELD_SIZEOF(SCDBServInfo_t, usTsId), (al_void *)&(stNewLoction.usTsId));
  1127. AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(SCDBServInfo_t, usServiceId),
  1128. FIELD_SIZEOF(SCDBServInfo_t, usServiceId), (al_void *)&(stNewLoction.usServiceId));
  1129. service_type = g_stTVInfoData.DVBC_ServType;
  1130. #endif
  1131. }
  1132. else if (eNetType == AL_DBTYPE_DVB_T)
  1133. {
  1134. #ifdef CONFIG_DVB_SYSTEM_DVBT_SUPPORT
  1135. stServInfo.stDVBTServ.usOrigNetId = stNewLoction.usOrgNetId;
  1136. stServInfo.stDVBTServ.usTsId = stNewLoction.usTsId;
  1137. stServInfo.stDVBTServ.usServiceId = stNewLoction.usServiceId;
  1138. AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(STDBServInfo_t, usOrigNetId),
  1139. FIELD_SIZEOF(STDBServInfo_t, usOrigNetId), (al_void *)&(stNewLoction.usOrgNetId));
  1140. AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(STDBServInfo_t, usTsId),
  1141. FIELD_SIZEOF(STDBServInfo_t, usTsId), (al_void *)&(stNewLoction.usTsId));
  1142. AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(STDBServInfo_t, usServiceId),
  1143. FIELD_SIZEOF(STDBServInfo_t, usServiceId), (al_void *)&(stNewLoction.usServiceId));
  1144. service_type = g_stTVInfoData.DVBT_ServType;
  1145. #endif
  1146. }
  1147. else if (eNetType == AL_DBTYPE_DVB_S)
  1148. {
  1149. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  1150. stServInfo.stDVBSServ.usOrigNetId = stNewLoction.usOrgNetId;
  1151. stServInfo.stDVBSServ.usTsId = stNewLoction.usTsId;
  1152. stServInfo.stDVBSServ.usServiceId = stNewLoction.usServiceId;
  1153. AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(SDBServInfo_t, usOrigNetId),
  1154. FIELD_SIZEOF(SDBServInfo_t, usOrigNetId), (al_void *)&(stNewLoction.usOrgNetId));
  1155. AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(SDBServInfo_t, usTsId),
  1156. FIELD_SIZEOF(SDBServInfo_t, usTsId), (al_void *)&(stNewLoction.usTsId));
  1157. AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(SDBServInfo_t, usServiceId),
  1158. FIELD_SIZEOF(SDBServInfo_t, usServiceId), (al_void *)&(stNewLoction.usServiceId));
  1159. service_type = g_stTVInfoData.DVBS_ServType;
  1160. #endif
  1161. }
  1162. hProg = APP_DVB_Playback_GetCurrentProgHandle(eNetType, service_type);
  1163. }
  1164. APP_DVB_Playback_SetNextServiceType(service_type);
  1165. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_ZAPPING|PASS_TO_SYSAPP, hProg);
  1166. }
  1167. #ifdef MP4_SUB_PREFER_LANG
  1168. static void _DVBApp_SetMp4SubcodepagebyPreferLang(void)
  1169. {
  1170. int dret = 0;
  1171. LANGName_t eMp4SubCodePage = 0;
  1172. eMp4SubCodePage = Dvb_GetCurMP4FontCodePage(Dvb_GetCurMP4CodePageType(NULL), NULL);
  1173. dret = FMW_SetSUBTOSDCodePage((int)eMp4SubCodePage);
  1174. return ;
  1175. }
  1176. #endif
  1177. static INT32 _DVBApp_BackgroundMonitor_Init(void)
  1178. {
  1179. #if defined(CONFIG_SUPPORT_OTA_UPGRADE)
  1180. OtaMonComCallback_t callback;
  1181. callback._pfMonDSICallbk = APP_DVB_OTACallback;
  1182. callback._pfMonONIDCallb = APP_DVB_CheckIsONIDMatched;
  1183. callback._pfMonEXITCallb = APP_DVB_OTAMonExitCallback;
  1184. callback._pfMonStateCallbk = APP_DVB_NotifyOTAState;
  1185. Mid_CmnUpgradeRigestCallback((Callbackfunction)&APP_Data_Upgrade_ProtectData);
  1186. if (MID_OtaMonInit(callback) == MID_SUCCESS)
  1187. {
  1188. MID_OTA_GetOTAInitInfo_FromFlah();
  1189. dvb_printf("Ota Mutex Create success \n");
  1190. #ifdef CONFIG_SUPPORT_SSU_ENHANCE_UPGRADE
  1191. MID_OtaMonUntInit(APP_DVB_OTASECallback);
  1192. #endif
  1193. }
  1194. else
  1195. {
  1196. dvb_printf("Ota Mutex Create Failed \n");
  1197. }
  1198. #endif
  1199. #ifdef CONFIG_SUPPORT_MHEG5
  1200. MHEG5APP_Init();
  1201. MHEG5APP_RegistCallback(APP_DVB_Mheg5_Callback);
  1202. #ifdef CONFIG_SUPPORT_MHEG5_ICS
  1203. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  1204. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0, sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  1205. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO, 0, sizeof(APP_SETTING_SystemInfo_t), &(g_stSysInfoData));
  1206. MHEG5_ICS_SetPinStatus(g_stFeatureData.ChildLock);
  1207. if(g_stSysInfoData.progrmADSwitch == AUDIO_AD_ON)
  1208. {
  1209. MHEG5_SetAudioDescPref(TRUE);
  1210. }
  1211. else
  1212. {
  1213. MHEG5_SetAudioDescPref(FALSE);
  1214. }
  1215. if(g_stUserInfoData.Subtitle == APP_SWITCH_ON)
  1216. {
  1217. MHEG5_SetSubtitlePref(TRUE);
  1218. }
  1219. else
  1220. {
  1221. MHEG5_SetSubtitlePref(FALSE);
  1222. }
  1223. UINT8 *primaryAudio = APP_Language_GetISO639ByIndx(g_stFeatureData.PreferredAudio1st, APP_DATA_LANG_TYPE_MULTIAUDIO);
  1224. primaryAudio = primaryAudio ? primaryAudio : APP_Language_GetISO639_2ByIndx(g_stFeatureData.PreferredAudio1st, APP_DATA_LANG_TYPE_MULTIAUDIO);
  1225. UINT8 *secondaryAudio = NULL;
  1226. #ifdef SUPPORT_2ND_PREFER_AUDIO
  1227. secondaryAudio = APP_Language_GetISO639ByIndx(g_stFeatureData.PreferredAudio2nd, APP_DATA_LANG_TYPE_MULTIAUDIO);
  1228. secondaryAudio = secondaryAudio ? secondaryAudio : APP_Language_GetISO639_2ByIndx(g_stFeatureData.PreferredAudio2nd, APP_DATA_LANG_TYPE_MULTIAUDIO);
  1229. #endif
  1230. UINT8 *primarySubtitle = APP_Language_GetISO639ByIndx(g_stFeatureData.PreferredSubtitle1st, APP_DATA_LANG_TYPE_SUBTITLE);
  1231. primarySubtitle = primarySubtitle ? primarySubtitle : APP_Language_GetISO639_2ByIndx(g_stFeatureData.PreferredSubtitle1st, APP_DATA_LANG_TYPE_SUBTITLE);
  1232. UINT8 *secondarySubtitle = NULL;
  1233. #ifdef SUPPORT_2ND_PREFER_SUBTITLE
  1234. secondarySubtitle = APP_Language_GetISO639ByIndx(g_stFeatureData.PreferredSubtitle2nd, APP_DATA_LANG_TYPE_SUBTITLE);
  1235. secondarySubtitle = secondarySubtitle ? secondarySubtitle : APP_Language_GetISO639_2ByIndx(g_stFeatureData.PreferredSubtitle2nd, APP_DATA_LANG_TYPE_SUBTITLE);
  1236. #endif
  1237. MHEG5_ICS_SetPrefAudioLang((char*)primaryAudio, (char*)secondaryAudio);
  1238. MHEG5_ICS_SetPrefSubtLang((char*)primarySubtitle, (char*)secondarySubtitle);
  1239. #endif
  1240. #endif
  1241. #ifdef CONFIG_CI_SUPPORT
  1242. #ifndef CONFIG_CIPLUS_SUPPORT
  1243. //extern void MID_CI_DateTimeUpdate(void * pData);
  1244. //AddTDTMonitoringListener(MON_LISTENER_ID_CODE_FINAL, MID_CI_DateTimeUpdate);
  1245. #endif
  1246. #endif
  1247. return SP_SUCCESS;
  1248. }
  1249. static void _DVBApp_EpgInit(void)
  1250. {
  1251. UINT8 u8SysSet;
  1252. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  1253. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  1254. #ifndef CONFIG_EPG_LANG_DEFAULT_BY_OSDLANG
  1255. u8SysSet = g_stFeatureData.DigitalTTLang;
  1256. #else
  1257. u8SysSet = g_stFeatureData.OSDLang;
  1258. #endif
  1259. APP_DVB_EPG_SetEpgLanguage(u8SysSet);
  1260. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  1261. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  1262. u8SysSet = g_stChannelData.Country;
  1263. if (u8SysSet >= MAX_AREA)
  1264. {
  1265. u8SysSet = 0;
  1266. }
  1267. AL_Event_SetCountryCode(APP_Area_GetCountryCode(u8SysSet));
  1268. #ifdef CONFIG_DVB_SYSTEM
  1269. if (APP_Area_SupportDtg())
  1270. {
  1271. AL_Event_SetDTGSupport(al_true);
  1272. }
  1273. else
  1274. #endif
  1275. {
  1276. AL_Event_SetDTGSupport(al_false);
  1277. }
  1278. }
  1279. #if (defined(CONFIG_DVB_SYSTEM_DVBS_SUPPORT)||defined(CONFIG_DVB_SYSTEM_DVBT_SUPPORT)||defined(CONFIG_DVB_SYSTEM_DVBC_SUPPORT))
  1280. static al_bool _DVBApp_SerMatch(al_void const *pRec, al_void const *pRecToAdd)
  1281. {
  1282. al_bool matchFlag = FALSE;
  1283. al_uint8 area = 0;
  1284. AL_ServiceDetail_t *ServInfor = (AL_ServiceDetail_t *)pRec;
  1285. AL_ServiceDetail_t *AddServInfor = (AL_ServiceDetail_t *)pRecToAdd;
  1286. AL_DB_EDBType_t eDBType = AL_DBTYPE_MAX;
  1287. APP_Database_GetCurrentDBType(APP_SOURCE_DTV, &eDBType);
  1288. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  1289. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  1290. area = g_stChannelData.Country;
  1291. #ifdef CONFIG_CIPLUS_SUPPORT
  1292. #ifdef CONFIG_DVB_SYSTEM_DVBT_SUPPORT
  1293. if( AL_DBTYPE_DVB_T==eDBType && (ServInfor->stDVBTServ.stProgAttrib.isProfileServ || AddServInfor->stDVBTServ.stProgAttrib.isProfileServ) )
  1294. return al_false;
  1295. #endif
  1296. #ifdef CONFIG_DVB_SYSTEM_DVBC_SUPPORT
  1297. if( AL_DBTYPE_DVB_C==eDBType && (ServInfor->stDVBCServ.stProgAttrib.isProfileServ || AddServInfor->stDVBCServ.stProgAttrib.isProfileServ) )
  1298. return al_false;
  1299. #endif
  1300. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  1301. if( AL_DBTYPE_DVB_S==eDBType && (ServInfor->stDVBSServ.stProgAttrib.isProfileServ || AddServInfor->stDVBSServ.stProgAttrib.isProfileServ) )
  1302. return al_false;
  1303. #endif
  1304. #endif
  1305. #ifdef SUPPORT_DELETE_SAME_SERVICES
  1306. int u16DeleteSameServices = 0;//0: default(expect: Russia need save same services) 1: on(keep current method) 2: off(save same services)
  1307. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0,
  1308. sizeof(APP_SETTING_FactoryUser_t), &(g_stFactoryUserData));
  1309. u16DeleteSameServices = g_stFactoryUserData.Function.n_Funct_DeleteSameServices;
  1310. if (2 == u16DeleteSameServices)// 2: save same services
  1311. {
  1312. matchFlag = 0;
  1313. }
  1314. else
  1315. #endif
  1316. {
  1317. switch (area)
  1318. {
  1319. #ifdef CONFIG_DVB_SYSTEM
  1320. case AREA_ENGLAND:
  1321. /*
  1322. ** Refer to page 37 fo NorDig Unified ver 2.1:
  1323. ** A service is uniquely identified by its DVB triplet (original_network_id, transport_stream_id and
  1324. ** service_id) in all NorDig compliant terrestrial networks, except for the Norwegian terrestrial network,
  1325. ** where only original_network_id and service_id are used to identify a service.
  1326. */
  1327. case AREA_NORWAY:
  1328. if (AL_DBTYPE_DVB_T == eDBType)
  1329. {
  1330. matchFlag = ((ServInfor->stDVBTServ.usOrigNetId == AddServInfor->stDVBTServ.usOrigNetId)
  1331. && (ServInfor->stDVBTServ.usServiceId == AddServInfor->stDVBTServ.usServiceId)
  1332. && (ServInfor->stDVBTServ.eTvRadioType == AddServInfor->stDVBTServ.eTvRadioType));
  1333. }
  1334. else if (AL_DBTYPE_DVB_C == eDBType)
  1335. {
  1336. matchFlag = ((ServInfor->stDVBCServ.usOrigNetId == AddServInfor->stDVBCServ.usOrigNetId)
  1337. && (ServInfor->stDVBCServ.usServiceId == AddServInfor->stDVBCServ.usServiceId)
  1338. && (ServInfor->stDVBCServ.eTvRadioType == AddServInfor->stDVBCServ.eTvRadioType));
  1339. }
  1340. else if (AL_DBTYPE_DVB_S == eDBType)
  1341. {
  1342. matchFlag = ((ServInfor->stDVBSServ.usOrigNetId == AddServInfor->stDVBSServ.usOrigNetId)
  1343. && (ServInfor->stDVBSServ.usServiceId == AddServInfor->stDVBSServ.usServiceId)
  1344. && (ServInfor->stDVBSServ.eTvRadioType == AddServInfor->stDVBSServ.eTvRadioType));
  1345. }
  1346. break;
  1347. #ifdef SCAN_FREQ_OFFSET_RANGE_ENLARGE
  1348. case AREA_FRANCE:
  1349. if (AL_DBTYPE_DVB_T == eDBType)
  1350. {
  1351. matchFlag = ((ServInfor->stDVBTServ.usOrigNetId == AddServInfor->stDVBTServ.usOrigNetId)
  1352. && (ServInfor->stDVBTServ.usServiceId == AddServInfor->stDVBTServ.usServiceId)
  1353. && (ServInfor->stDVBTServ.eTvRadioType == AddServInfor->stDVBTServ.eTvRadioType));
  1354. }
  1355. else if (AL_DBTYPE_DVB_C == eDBType)
  1356. {
  1357. matchFlag = ((ServInfor->stDVBCServ.usOrigNetId == AddServInfor->stDVBCServ.usOrigNetId)
  1358. && (ServInfor->stDVBCServ.usServiceId == AddServInfor->stDVBCServ.usServiceId)
  1359. && (ServInfor->stDVBCServ.eTvRadioType == AddServInfor->stDVBCServ.eTvRadioType));
  1360. }
  1361. else if (AL_DBTYPE_DVB_S == eDBType)
  1362. {
  1363. matchFlag = ((ServInfor->stDVBSServ.usOrigNetId == AddServInfor->stDVBSServ.usOrigNetId)
  1364. && (ServInfor->stDVBSServ.usServiceId == AddServInfor->stDVBSServ.usServiceId)
  1365. && (ServInfor->stDVBSServ.eTvRadioType == AddServInfor->stDVBSServ.eTvRadioType));
  1366. }
  1367. break;
  1368. #endif
  1369. case AREA_ITALY:
  1370. case AREA_SPAIN:
  1371. case AREA_NETHERLANDS:
  1372. case AREA_FINLAND:
  1373. case AREA_SWEDEN:
  1374. case AREA_DENMARK:
  1375. #endif
  1376. #ifdef CONFIG_AUS_DVB_SYSTEM
  1377. case AREA_AUSTRALIA:
  1378. case AREA_NEW_ZEALAND:
  1379. case AREA_SINGAPORE:
  1380. case AREA_AUS_OTHER:
  1381. if (AL_DBTYPE_DVB_T == eDBType)
  1382. {
  1383. matchFlag = ((ServInfor->stDVBTServ.usOrigNetId == AddServInfor->stDVBTServ.usOrigNetId)
  1384. && (ServInfor->stDVBTServ.usServiceId == AddServInfor->stDVBTServ.usServiceId)
  1385. && (ServInfor->stDVBTServ.usTsId == AddServInfor->stDVBTServ.usTsId)
  1386. && (ServInfor->stDVBTServ.eTvRadioType == AddServInfor->stDVBTServ.eTvRadioType));
  1387. }
  1388. else if (AL_DBTYPE_DVB_C == eDBType)
  1389. {
  1390. matchFlag = ((ServInfor->stDVBCServ.usOrigNetId == AddServInfor->stDVBCServ.usOrigNetId)
  1391. && (ServInfor->stDVBCServ.usServiceId == AddServInfor->stDVBCServ.usServiceId)
  1392. && (ServInfor->stDVBCServ.usTsId == AddServInfor->stDVBCServ.usTsId)
  1393. && (ServInfor->stDVBCServ.eTvRadioType == AddServInfor->stDVBCServ.eTvRadioType));
  1394. }
  1395. else if (AL_DBTYPE_DVB_S == eDBType)
  1396. {
  1397. matchFlag = ((ServInfor->stDVBSServ.usOrigNetId == AddServInfor->stDVBSServ.usOrigNetId)
  1398. && (ServInfor->stDVBSServ.usServiceId == AddServInfor->stDVBSServ.usServiceId)
  1399. && (ServInfor->stDVBSServ.usTsId == AddServInfor->stDVBSServ.usTsId)
  1400. && (ServInfor->stDVBSServ.eTvRadioType == AddServInfor->stDVBSServ.eTvRadioType));
  1401. }
  1402. break;
  1403. #endif
  1404. #ifdef SUPPORT_DELETE_SAME_SERVICES
  1405. case AREA_RUSSIA:
  1406. if (0 == g_stFactoryUserData.Function.n_Funct_DeleteSameServices)
  1407. {
  1408. matchFlag = 0;
  1409. }
  1410. break;
  1411. #endif
  1412. default:
  1413. if (AL_DBTYPE_DVB_T == eDBType)
  1414. {
  1415. matchFlag = ((ServInfor->stDVBTServ.usOrigNetId == AddServInfor->stDVBTServ.usOrigNetId)
  1416. && (ServInfor->stDVBTServ.usServiceId == AddServInfor->stDVBTServ.usServiceId)
  1417. && (ServInfor->stDVBTServ.usTsId == AddServInfor->stDVBTServ.usTsId)
  1418. && (ServInfor->stDVBTServ.eTvRadioType == AddServInfor->stDVBTServ.eTvRadioType));
  1419. }
  1420. else if (AL_DBTYPE_DVB_C == eDBType)
  1421. {
  1422. matchFlag = ((ServInfor->stDVBCServ.usOrigNetId == AddServInfor->stDVBCServ.usOrigNetId)
  1423. && (ServInfor->stDVBCServ.usServiceId == AddServInfor->stDVBCServ.usServiceId)
  1424. && (ServInfor->stDVBCServ.usTsId == AddServInfor->stDVBCServ.usTsId)
  1425. && (ServInfor->stDVBCServ.eTvRadioType == AddServInfor->stDVBCServ.eTvRadioType));
  1426. }
  1427. else if (AL_DBTYPE_DVB_S == eDBType)
  1428. {
  1429. matchFlag = ((ServInfor->stDVBSServ.usOrigNetId == AddServInfor->stDVBSServ.usOrigNetId)
  1430. && (ServInfor->stDVBSServ.usServiceId == AddServInfor->stDVBSServ.usServiceId)
  1431. && (ServInfor->stDVBSServ.usTsId == AddServInfor->stDVBSServ.usTsId)
  1432. && (ServInfor->stDVBSServ.eTvRadioType == AddServInfor->stDVBSServ.eTvRadioType));
  1433. }
  1434. break;
  1435. }
  1436. }
  1437. if (matchFlag)
  1438. {
  1439. FW_DEBF("[%s:%d] matchFlag @@@@@@@@@@@@@@@@@@@@@@@@@\n",__FUNCTION__,__LINE__);
  1440. FW_DEBF("[%s:%d] usOrigNetId: %d, %d; usServiceId: %d, %d; usTsId: %d, %d; eTvRadioType: %d, %d\n",
  1441. __FUNCTION__,__LINE__,ServInfor->stDVBSServ.usOrigNetId, AddServInfor->stDVBSServ.usOrigNetId,
  1442. ServInfor->stDVBSServ.usServiceId, AddServInfor->stDVBSServ.usServiceId,
  1443. ServInfor->stDVBSServ.usTsId, AddServInfor->stDVBSServ.usTsId,
  1444. ServInfor->stDVBSServ.eTvRadioType, AddServInfor->stDVBSServ.eTvRadioType);
  1445. FW_DEBF("[%s:%d] usDataPID: %d, %d; usStrmID: %d, %d; usStrmID: %d, %d; usECMPID: %d, %d; usCompTag: %d, %d \n",
  1446. __FUNCTION__,__LINE__,ServInfor->stDVBSServ.stVideoPid.usDataPID, AddServInfor->stDVBSServ.stVideoPid.usDataPID,
  1447. ServInfor->stDVBSServ.stVideoPid.usStrmID, AddServInfor->stDVBSServ.stVideoPid.usStrmID,
  1448. ServInfor->stDVBSServ.stVideoPid.usCodec, AddServInfor->stDVBSServ.stVideoPid.usCodec,
  1449. ServInfor->stDVBSServ.stVideoPid.usECMPID, AddServInfor->stDVBSServ.stVideoPid.usECMPID,
  1450. ServInfor->stDVBSServ.stVideoPid.usCompTag, AddServInfor->stDVBSServ.stVideoPid.usCompTag);
  1451. FW_DEBF("[%s:%d] usPcrPid: %d, %d; stAudioPid[0].usDataPID: %d, %d; stAudioPid[1].usDataPID: %d, %d; stAudioPid[2].usDataPID: %d, %d\n",
  1452. __FUNCTION__,__LINE__,ServInfor->stDVBSServ.usPcrPid, AddServInfor->stDVBSServ.usPcrPid,
  1453. ServInfor->stDVBSServ.stAudioPid[0].usDataPID, AddServInfor->stDVBSServ.stAudioPid[0].usDataPID,
  1454. ServInfor->stDVBSServ.stAudioPid[1].usDataPID, AddServInfor->stDVBSServ.stAudioPid[1].usDataPID,
  1455. ServInfor->stDVBSServ.stAudioPid[2].usDataPID, AddServInfor->stDVBSServ.stAudioPid[2].usDataPID);
  1456. }
  1457. return matchFlag;
  1458. }
  1459. #endif
  1460. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  1461. static al_bool _DVBApp_TPMatch_S(al_void const *pRecToAdd, al_void *pRec)
  1462. {
  1463. AL_MultiplexDetail_t *TPInfor = (AL_MultiplexDetail_t *)pRec;
  1464. AL_MultiplexDetail_t *AddTPInfor = (AL_MultiplexDetail_t *)pRecToAdd;
  1465. return ((TPInfor->stDVBSMultiplex.usFreqM == AddTPInfor->stDVBSMultiplex.usFreqM)
  1466. && (TPInfor->stDVBSMultiplex.ucSkew == AddTPInfor->stDVBSMultiplex.ucSkew));
  1467. #ifdef SUPPORT_HIERARCHY_MODE
  1468. //&& (TPInfor->stDVBSMultiplex.ucHierarchyMode == AddTPInfor->stDVBTMultiplex.ucHierarchyMode)
  1469. #endif
  1470. }
  1471. #endif
  1472. #ifdef CONFIG_DVB_SYSTEM_DVBT_SUPPORT
  1473. static al_bool _DVBApp_TPMatch_T(al_void const *pRecToAdd, al_void *pRec)
  1474. {
  1475. AL_MultiplexDetail_t *TPInfor = (AL_MultiplexDetail_t *)pRec;
  1476. AL_MultiplexDetail_t *AddTPInfor = (AL_MultiplexDetail_t *)pRecToAdd;
  1477. return ((TPInfor->stDVBTMultiplex.usOrigNetId == AddTPInfor->stDVBTMultiplex.usOrigNetId)
  1478. && (TPInfor->stDVBTMultiplex.usTsId == AddTPInfor->stDVBTMultiplex.usTsId)
  1479. && (TPInfor->stDVBTMultiplex.uiFreqK == AddTPInfor->stDVBTMultiplex.uiFreqK)
  1480. #ifdef SUPPORT_HIERARCHY_MODE
  1481. && (TPInfor->stDVBTMultiplex.ucHierarchyMode == AddTPInfor->stDVBTMultiplex.ucHierarchyMode)
  1482. #endif
  1483. );
  1484. }
  1485. #endif
  1486. #ifdef CONFIG_DVB_SYSTEM_DVBC_SUPPORT
  1487. static al_bool _DVBApp_TPMatch_C(al_void const *pRecToAdd, al_void *pRec)
  1488. {
  1489. AL_MultiplexDetail_t *TPInfor = (AL_MultiplexDetail_t *)pRec;
  1490. AL_MultiplexDetail_t *AddTPInfor = (AL_MultiplexDetail_t *)pRecToAdd;
  1491. return ((TPInfor->stDVBCMultiplex.usOrigNetId == AddTPInfor->stDVBCMultiplex.usOrigNetId)
  1492. && (TPInfor->stDVBCMultiplex.usTsId == AddTPInfor->stDVBCMultiplex.usTsId)
  1493. && (TPInfor->stDVBCMultiplex.uiFreqK == AddTPInfor->stDVBCMultiplex.uiFreqK)
  1494. //&& (TPInfor->stDVBCMultiplex.ucAreaIndex == AddTPInfor->stDVBCMultiplex.ucAreaIndex)
  1495. #ifdef SUPPORT_HIERARCHY_MODE
  1496. //&& (TPInfor->stDVBCMultiplex.ucHierarchyMode == AddTPInfor->stDVBCMultiplex.ucHierarchyMode)
  1497. #endif
  1498. );
  1499. }
  1500. #endif
  1501. #if defined( CONFIG_DVB_SYSTEM_DVBS_SUPPORT)
  1502. static al_bool _DVBApp_NetworkMatch_S(al_void const *pRecToAdd, al_void *pRec)
  1503. {
  1504. AL_NetworkDetail_t *NetInfor = (AL_NetworkDetail_t *)pRec;
  1505. AL_NetworkDetail_t *AddNetInfor = (AL_NetworkDetail_t *)pRecToAdd;
  1506. return (((NetInfor->stDVBSNetwork.ucEastWest == AddNetInfor->stDVBSNetwork.ucEastWest
  1507. && NetInfor->stDVBSNetwork.iLongitude == AddNetInfor->stDVBSNetwork.iLongitude)
  1508. && NetInfor->stDVBSNetwork.uiLNBFreq == AddNetInfor->stDVBSNetwork.uiLNBFreq)
  1509. //|| !strcmp((char *)NetInfor->stDVBSNetwork.szNetName, (char *)AddNetInfor->stDVBSNetwork.szNetName)
  1510. );
  1511. }
  1512. #endif
  1513. #if defined (CONFIG_DVB_SYSTEM_DVBT_SUPPORT)
  1514. static al_bool _DVBApp_NetworkMatch_T(al_void const *pRecToAdd, al_void *pRec)
  1515. {
  1516. AL_NetworkDetail_t *NetInfor = (AL_NetworkDetail_t *)pRec;
  1517. AL_NetworkDetail_t *AddNetInfor = (AL_NetworkDetail_t *)pRecToAdd;
  1518. return (NetInfor->stDVBTNetwork.usNetId == AddNetInfor->stDVBTNetwork.usNetId);
  1519. }
  1520. #endif
  1521. #if defined (CONFIG_DVB_SYSTEM_DVBC_SUPPORT)
  1522. static al_bool _DVBApp_NetworkMatch_C(al_void const *pRecToAdd, al_void *pRec)
  1523. {
  1524. AL_NetworkDetail_t *NetInfor = (AL_NetworkDetail_t *)pRec;
  1525. AL_NetworkDetail_t *AddNetInfor = (AL_NetworkDetail_t *)pRecToAdd;
  1526. return (NetInfor->stDVBCNetwork.usNetId == AddNetInfor->stDVBCNetwork.usNetId);
  1527. }
  1528. #endif
  1529. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  1530. void DVBApp_LoadCustomerDB(AL_DB_EDBType_t eDBType)
  1531. {
  1532. #ifdef CONFIG_DVB_SYSTEM_DVBS_DEFAULT_DATABASE
  1533. al_void *pDefDBBakStart = NULL;
  1534. al_uint32 uiDefDBBakSize = 0;
  1535. al_uint32 dArea = 0;
  1536. AL_DB_ERecordType_t eServiceType = AL_RECTYPE_DVBTV;
  1537. AL_RecHandle_t hProg = AL_DB_INVALIDHDL;
  1538. dvb_printf("[%s:%d] Load DVB-S Default Database Data to Database\n", __FUNCTION__, __LINE__);
  1539. if (eDBType == AL_DBTYPE_DVB_S)
  1540. {
  1541. CDBIActiveDBModule(CDBI_DBTYPE_DVB_S, al_false);
  1542. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  1543. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  1544. dArea = g_stChannelData.Country;
  1545. if (dArea == AREA_AUSTRIA)
  1546. {
  1547. uiDefDBBakSize = Cmd_LookupFlashtableSize((al_uint8*)"S_AUT_DB");
  1548. pDefDBBakStart = malloc(uiDefDBBakSize);
  1549. if (pDefDBBakStart == al_null)
  1550. {
  1551. goto Leave;
  1552. }
  1553. if (Cmd_LookupFlashtableAddr((al_uint8*)"S_AUT_DB", (al_uint32)pDefDBBakStart, uiDefDBBakSize))
  1554. {
  1555. goto LeaveWithFree;
  1556. }
  1557. }
  1558. else if (dArea == AREA_GERMANY)
  1559. {
  1560. uiDefDBBakSize = Cmd_LookupFlashtableSize((al_uint8*)"S_DEU_DB");
  1561. pDefDBBakStart = malloc(uiDefDBBakSize);
  1562. if (pDefDBBakStart == al_null)
  1563. {
  1564. goto Leave;
  1565. }
  1566. if (Cmd_LookupFlashtableAddr((al_uint8*)"S_DEU_DB", (al_uint32)pDefDBBakStart, uiDefDBBakSize))
  1567. {
  1568. goto LeaveWithFree;
  1569. }
  1570. }
  1571. else
  1572. {
  1573. uiDefDBBakSize = Cmd_LookupFlashtableSize((al_uint8*)"S_OTH_DB");
  1574. pDefDBBakStart = malloc(uiDefDBBakSize);
  1575. if (pDefDBBakStart == al_null)
  1576. {
  1577. goto Leave;
  1578. }
  1579. if (Cmd_LookupFlashtableAddr((al_uint8*)"S_OTH_DB", (al_uint32)pDefDBBakStart, uiDefDBBakSize))
  1580. {
  1581. goto LeaveWithFree;
  1582. }
  1583. }
  1584. if (Cmd_NVMWrite(ENVMPurposeIDDatabaseDVBS, al_false, uiDefDBBakSize, (UINT8 *)pDefDBBakStart))
  1585. {
  1586. dvb_printf("[%s:%d] NVM Write Error~\n", __FUNCTION__, __LINE__);
  1587. }
  1588. LeaveWithFree:
  1589. free(pDefDBBakStart);
  1590. Leave:
  1591. CDBIActiveDBModule(CDBI_DBTYPE_DVB_S, al_true);
  1592. hProg = APP_DVB_PLAYBACK_GetFirstProgHdlofLowestService();
  1593. if (hProg != AL_DB_INVALIDHDL)
  1594. {
  1595. AL_DB_GetRecordType(hProg, NULL, &eServiceType);
  1596. APP_DVB_Playback_SetCurrentProgHandle(AL_DBTYPE_DVB_S, eServiceType, hProg);
  1597. }
  1598. }
  1599. #else
  1600. DVBApp_LoaddefaultDB(AL_DBTYPE_DVB_S);
  1601. #endif
  1602. }
  1603. void DVBApp_LoaddefaultDB(AL_DB_EDBType_t eDBType)
  1604. {
  1605. AL_NetworkDetail_t stNetInfo;
  1606. AL_MultiplexDetail_t stTPInfo;
  1607. if (eDBType == AL_DBTYPE_DVB_S)
  1608. {
  1609. const SDBNetworkInfo_t *pNewNetTableInfo;
  1610. const APP_DVBS_NetTP_table *pNewTPTableInfo;
  1611. AL_RecHandle_t hNet = AL_DB_INVALIDHDL;
  1612. AL_RecHandle_t hTp = AL_DB_INVALIDHDL;
  1613. al_uint32 i = 0;
  1614. al_uint32 j = 0;
  1615. APP_Area_GetNetTbl(&pNewNetTableInfo);
  1616. APP_Area_GetTpNetTbl(&pNewTPTableInfo);
  1617. for(; i < APP_Area_GetNetTblSize(); i++)
  1618. {
  1619. memcpy(&stNetInfo.stDVBSNetwork, pNewNetTableInfo + i, sizeof(SDBNetworkInfo_t));
  1620. AL_DB_AddRecord(AL_DBTYPE_DVB_S, AL_RECTYPE_DVBNETWORK, &stNetInfo, AL_DB_INVALIDHDL, &hNet);
  1621. for (j=0; j < APP_Area_GetTpNetTblSize(); j++)
  1622. {
  1623. if ((pNewTPTableInfo+j)->u32SateIndex == i)
  1624. {
  1625. memset(&stTPInfo.stDVBSMultiplex, 0, sizeof (SDBMultiplexInfo_t));
  1626. memcpy(&stTPInfo.stDVBSMultiplex, &(pNewTPTableInfo+j)->stTPinfo, sizeof (SDBMultiplexInfo_t));
  1627. AL_DB_AddRecord(AL_DBTYPE_DVB_S, AL_RECTYPE_DVBMULTIPLEX, &stTPInfo, hNet, &hTp);
  1628. }
  1629. }
  1630. }
  1631. }
  1632. }
  1633. #endif
  1634. #if defined (CONFIG_DVB_SYSTEM_DVBS_SUPPORT) || defined (CONFIG_SUPPORT_MALAYSIA_CERTIFICATION)
  1635. void DVBApp_RemoveAllService(AL_DB_EDBType_t eDBType)
  1636. {
  1637. AL_RecHandle_t hNet = AL_DB_INVALIDHDL;
  1638. AL_RecHandle_t hProg = AL_DB_INVALIDHDL;
  1639. AL_RecHandle_t hTPHandle = AL_DB_INVALIDHDL;
  1640. al_uint16 usTsId = 0xffff;
  1641. al_uint16 usOrigNetId = 0xffff;
  1642. al_uint16 usServiceId = 0xffff;
  1643. if (AL_SUCCESS == AL_DB_GetRecord(AL_DB_REQ_GETFIRST, eDBType, AL_RECTYPE_DVBNETWORK, &hNet))
  1644. {
  1645. do
  1646. {
  1647. while (AL_DB_GetChildRecord(hNet, &hTPHandle) == AL_SUCCESS)
  1648. {
  1649. while (AL_DB_GetChildRecord(hTPHandle, &hProg) == AL_SUCCESS)
  1650. {
  1651. if ((AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"usTsId", (al_void *)&usTsId))
  1652. || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"usOrigNetId", (al_void *)&usOrigNetId))
  1653. || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"usServiceId", (al_void *)&usServiceId)))
  1654. {
  1655. printf("Get service info failed!!!\n");
  1656. }
  1657. if (AL_DB_RemoveRecord(hProg) == AL_SUCCESS)
  1658. {
  1659. AL_Event_UnLockChannels(eDBType, usOrigNetId, usTsId, usServiceId);
  1660. }
  1661. else
  1662. {
  1663. printf("remove service failed!!!\n");
  1664. }
  1665. hProg = AL_DB_INVALIDHDL;
  1666. }
  1667. }
  1668. }while (AL_SUCCESS == AL_DB_GetRecord(AL_DB_REQ_GETNEXT, eDBType, AL_RECTYPE_DVBNETWORK, &hNet));
  1669. }
  1670. }
  1671. #endif
  1672. #ifdef SUPPORT_FACTORY_AUTO_TEST
  1673. static void _DVBApp_PrestoreProgram(AL_DB_EDBType_t eDBType)
  1674. {
  1675. AL_Return_t enRet = AL_SUCCESS;
  1676. NOT_USED(enRet);
  1677. static AL_RecHandle_t hNetHdl = AL_DB_INVALIDHDL;
  1678. AL_NetworkDetail_t stRootNet;
  1679. AL_RecHandle_t hProg = AL_DB_INVALIDHDL;
  1680. AL_RecHandle_t hProg1 = AL_DB_INVALIDHDL;
  1681. AL_RecHandle_t hProg2 = AL_DB_INVALIDHDL;
  1682. #ifdef CONFIG_DVB_SYSTEM_DVBT2_SUPPORT
  1683. AL_RecHandle_t hProg3 = AL_DB_INVALIDHDL;
  1684. #endif
  1685. AL_RecHandle_t hTp = AL_DB_INVALIDHDL;
  1686. AL_MultiplexDetail_t ts;
  1687. AL_ServiceDetail_t Program;
  1688. AL_FW_SwitchDBModule(AL_DBTYPE_DVB_C);
  1689. AL_DB_Reset(AL_DBTYPE_DVB_C, al_true);
  1690. AL_Event_UnLockChannels(AL_DBTYPE_DVB_C, RESERVED_ORIGINAL_NET_ID, RESERVED_TRANSPORT_ID, RESERVED_SERVICE_ID);
  1691. AL_PR_DeleteAllSch(AL_DBTYPE_DVB_C,AL_PR_EVT_REM | AL_PR_SRV_REM);
  1692. memset(&ts, 0, sizeof(AL_MultiplexDetail_t));
  1693. ts.stDVBCMultiplex.uiFreqK = 121000;
  1694. ts.stDVBCMultiplex.usSymRateK = 6875;
  1695. ts.stDVBCMultiplex.ucQamSize = AL_QAM_64;
  1696. ts.stDVBCMultiplex.usEMMPID = 0x1FFF;
  1697. ts.stDVBCMultiplex.usNetId = 0x1234;
  1698. ts.stDVBCMultiplex.usOrigNetId = 0x1234;
  1699. ts.stDVBCMultiplex.usTsId = 0x1234;
  1700. //AL_DB_AddRecord(AL_DBTYPE_DVB_C, AL_RECTYPE_DVBMULTIPLEX, &ts, AL_DB_INVALIDHDL, &hTp);
  1701. memset(&stRootNet, 0, sizeof(AL_NetworkDetail_t));
  1702. stRootNet.stDVBCNetwork.usNetId = 1;
  1703. memcpy(stRootNet.stDVBCNetwork.szNetName, "Dummy",6);
  1704. hNetHdl = AL_DB_INVALIDHDL;
  1705. AL_DB_AddRecord(AL_DBTYPE_DVB_C, AL_RECTYPE_DVBNETWORK, &stRootNet, AL_DB_INVALIDHDL, &hNetHdl);
  1706. AL_DB_AddRecord(AL_DBTYPE_DVB_C, AL_RECTYPE_DVBMULTIPLEX, &ts, hNetHdl, &hTp);
  1707. memset(&Program, 0, sizeof(AL_ServiceDetail_t));
  1708. Program.stDVBCServ.eSDTSrvType = AL_RECTYPE_DVBTV;
  1709. Program.stDVBCServ.eTvRadioType= AL_RECTYPE_DVBTV;
  1710. Program.stDVBCServ.szProgName[0] = 0;
  1711. Program.stDVBCServ.usOrigNetId = 0x1111;
  1712. Program.stDVBCServ.usServiceId = 0x1111;
  1713. Program.stDVBCServ.usTsId = 0x1111;
  1714. Program.stDVBCServ.usProgNo = 0x1;
  1715. Program.stDVBCServ.usPMTPid= 0x1F55;
  1716. Program.stDVBCServ.stVideoPid.usDataPID = 0x1F40;
  1717. Program.stDVBCServ.stAudioPid[0].usDataPID= 0x1F41;
  1718. enRet = AL_DB_AddRecord(AL_DBTYPE_DVB_C, AL_RECTYPE_DVBTV,
  1719. &Program, hTp, &hProg);
  1720. APP_DVB_Playback_SetCurrentProgHandle(AL_DBTYPE_DVB_C,AL_RECTYPE_DVBTV,hProg);
  1721. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  1722. AL_FW_SwitchDBModule(AL_DBTYPE_DVB_S);
  1723. AL_DB_Reset(AL_DBTYPE_DVB_S, al_true);
  1724. AL_Event_UnLockChannels(AL_DBTYPE_DVB_S, RESERVED_ORIGINAL_NET_ID, RESERVED_TRANSPORT_ID, RESERVED_SERVICE_ID);
  1725. AL_PR_DeleteAllSch(AL_DBTYPE_DVB_S,AL_PR_EVT_REM | AL_PR_SRV_REM);
  1726. DVBApp_LoadCustomerDB(AL_DBTYPE_DVB_S);
  1727. extern AL_RecHandle_t APP_GUIOBJ_DVB_SatSys_PrestoreTP4FactoryAuto(void);
  1728. hTp = APP_GUIOBJ_DVB_SatSys_PrestoreTP4FactoryAuto();
  1729. memset(&Program, 0, sizeof(AL_ServiceDetail_t));
  1730. Program.stDVBSServ.eSDTSrvType = AL_RECTYPE_DVBTV;
  1731. Program.stDVBSServ.eTvRadioType= AL_RECTYPE_DVBTV;
  1732. Program.stDVBSServ.szProgName[0] = 0;
  1733. Program.stDVBSServ.usOrigNetId = 0x4321;
  1734. Program.stDVBSServ.usServiceId = 0x4321;
  1735. Program.stDVBSServ.usTsId = 0x4321;
  1736. Program.stDVBSServ.usProgNo = 0x1;
  1737. Program.stDVBSServ.usPMTPid= 0x1F55;
  1738. Program.stDVBSServ.stVideoPid.usDataPID = 0x1F40;
  1739. Program.stDVBSServ.stAudioPid[0].usDataPID= 0x1F41;
  1740. enRet = AL_DB_AddRecord(AL_DBTYPE_DVB_S, AL_RECTYPE_DVBTV,
  1741. &Program, hTp, &hProg);
  1742. APP_DVB_Playback_SetCurrentProgHandle(AL_DBTYPE_DVB_S,AL_RECTYPE_DVBTV,hProg);
  1743. #endif
  1744. AL_FW_SwitchDBModule(AL_DBTYPE_DVB_T);
  1745. AL_DB_Reset(AL_DBTYPE_DVB_T, al_true);
  1746. AL_Event_UnLockChannels(AL_DBTYPE_DVB_T, RESERVED_ORIGINAL_NET_ID, RESERVED_TRANSPORT_ID, RESERVED_SERVICE_ID);
  1747. AL_PR_DeleteAllSch(AL_DBTYPE_DVB_T,AL_PR_EVT_REM | AL_PR_SRV_REM);
  1748. //dvb -t
  1749. hNetHdl = AL_DB_INVALIDHDL;
  1750. hTp = AL_DB_INVALIDHDL;
  1751. stRootNet.stDVBTNetwork.usNetId = 1;
  1752. memcpy(stRootNet.stDVBTNetwork.szNetName, "Dummy", 6);
  1753. enRet = AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBNETWORK, &stRootNet, AL_DB_INVALIDHDL, &hNetHdl);
  1754. memset(&ts, 0, sizeof(AL_MultiplexDetail_t));
  1755. ts.stDVBTMultiplex.uiFreqK = 474000;
  1756. ts.stDVBTMultiplex.ucBandwidth = 8;
  1757. ts.stDVBTMultiplex.ucHierarchyMode = FRONTEND_HIERARCHY_AUTO;
  1758. AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBMULTIPLEX, &ts, hNetHdl, &hTp);
  1759. //dtv channel info start ---set here
  1760. //channel 1
  1761. memset(&Program, 0, sizeof(AL_ServiceDetail_t));
  1762. Program.stDVBTServ.eSDTSrvType = AL_RECTYPE_DVBTV;
  1763. Program.stDVBTServ.eTvRadioType = AL_RECTYPE_DVBTV;
  1764. memcpy(Program.stDVBTServ.szProgName, "BBC CHOICE", 10);
  1765. Program.stDVBTServ.usOrigNetId = 0x233a;
  1766. Program.stDVBTServ.usServiceId = 0x10ff;
  1767. Program.stDVBTServ.usTsId = 0x1004;
  1768. Program.stDVBTServ.usTsId_pat = 0x1004;
  1769. Program.stDVBTServ.usProgNo = 0x8001;
  1770. Program.stDVBTServ.usPMTPid = 0x10ff;
  1771. Program.stDVBTServ.stProgAttrib.scramble = 0x0;
  1772. Program.stDVBTServ.stVideoPid.usDataPID = 0x26c;
  1773. Program.stDVBTServ.stVideoPid.usCodec = 0x2;
  1774. Program.stDVBTServ.stAudioPid[0].usDataPID = 0x26d;
  1775. enRet = AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBTV,&Program, hTp, &hProg1);
  1776. //channel 2...
  1777. //dtv channel info end----------------------
  1778. memset(&ts, 0, sizeof(AL_MultiplexDetail_t));
  1779. ts.stDVBTMultiplex.uiFreqK = 666000;
  1780. ts.stDVBTMultiplex.ucBandwidth = 8;
  1781. ts.stDVBTMultiplex.ucHierarchyMode = FRONTEND_HIERARCHY_AUTO;
  1782. AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBMULTIPLEX, &ts, hNetHdl, &hTp);
  1783. memset(&Program, 0, sizeof(AL_ServiceDetail_t));
  1784. Program.stDVBTServ.eSDTSrvType = AL_RECTYPE_DVBTV;
  1785. Program.stDVBTServ.eTvRadioType= AL_RECTYPE_DVBTV;
  1786. Program.stDVBTServ.szProgName[0] = 0;
  1787. Program.stDVBTServ.usOrigNetId = 0x0000;
  1788. Program.stDVBTServ.usServiceId = 0x0001;
  1789. Program.stDVBTServ.usTsId = 0x0001;
  1790. Program.stDVBTServ.usProgNo = 0x2;
  1791. Program.stDVBTServ.usPMTPid= 0x0080;
  1792. Program.stDVBTServ.stVideoPid.usDataPID = 0x0064;
  1793. Program.stDVBTServ.stAudioPid[0].usDataPID= 0x0065;
  1794. enRet = AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBTV,
  1795. &Program, hTp, &hProg2);
  1796. #ifdef CONFIG_DVB_SYSTEM_DVBT2_SUPPORT
  1797. memset(&ts, 0, sizeof(AL_MultiplexDetail_t));
  1798. ts.stDVBTMultiplex.uiFreqK = 770000;
  1799. ts.stDVBTMultiplex.ucBandwidth = 8;
  1800. ts.stDVBTMultiplex.ucHierarchyMode = FRONTEND_HIERARCHY_AUTO;
  1801. ts.stDVBTMultiplex.ucTp_dvb_type = EDVB_DELIVER_TYPE_T2;
  1802. AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBMULTIPLEX, &ts, hNetHdl, &hTp);
  1803. memset(&Program, 0, sizeof(AL_ServiceDetail_t));
  1804. Program.stDVBTServ.eSDTSrvType = AL_RECTYPE_DVBTV;
  1805. Program.stDVBTServ.eTvRadioType= AL_RECTYPE_DVBTV;
  1806. Program.stDVBTServ.szProgName[0] = 0;
  1807. Program.stDVBTServ.usOrigNetId = 0x3333;
  1808. Program.stDVBTServ.usServiceId = 0x3333;
  1809. Program.stDVBTServ.usTsId = 0x3333;
  1810. Program.stDVBTServ.usProgNo = 0x3;
  1811. Program.stDVBTServ.usPMTPid= 0x3333;
  1812. Program.stDVBTServ.usPlpId = 0;
  1813. Program.stDVBTServ.stVideoPid.usDataPID = 0x5354;
  1814. Program.stDVBTServ.stAudioPid[0].usDataPID= 0x1303;
  1815. enRet = AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBTV,
  1816. &Program, hTp, &hProg3);
  1817. #endif
  1818. AL_FW_SwitchDBModule(eDBType);
  1819. APP_DVB_Playback_SetCurrentRFTypeByNetType(eDBType);
  1820. APP_DVB_Playback_SetCurrServiceType(eDBType, AL_RECTYPE_DVBTV);
  1821. APP_DVB_Playback_SetCurrentProgHandle(AL_DBTYPE_DVB_T,AL_RECTYPE_DVBTV,hProg1);
  1822. dvb_printf("\nfunction:%s,enRet:%d\n",__FUNCTION__,enRet);
  1823. enRet = enRet;//fix [-Werror=unused-but-set-variable]
  1824. }
  1825. #endif
  1826. static void _DVBApp_SWInit(void)
  1827. {
  1828. AL_PR_Init_Param_t Init_param=
  1829. {
  1830. .MaxNumOfReminders = AL_PR_MAX_NO_REMINDERS,
  1831. .app_schd_time[0] = PR_NOTIFY_TIME_IN_SEC,
  1832. /*reserves*/
  1833. .app_schd_time[1] = 0,
  1834. .app_schd_time[2] = 0
  1835. };
  1836. AL_PR_SetInitParam(&Init_param);
  1837. AL_DB_EDBType_t eDBType = AL_DBTYPE_MAX;
  1838. #if (defined(CONFIG_DVB_SYSTEM_DVBS_SUPPORT)||defined(CONFIG_DVB_SYSTEM_DVBT_SUPPORT)\
  1839. ||defined(CONFIG_DVB_SYSTEM_DVBC_SUPPORT))
  1840. AL_DB_RecDupliChkFunc_t stMatchFuc;
  1841. stMatchFuc.pServMatch = (AL_DB_RecordMatchFunc)_DVBApp_SerMatch;
  1842. #endif
  1843. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  1844. Ant_UsalsSetting_UserLocation_st UserLocal;
  1845. #endif
  1846. #ifdef CONFIG_DVB_SYSTEM_DVBT_SUPPORT
  1847. stMatchFuc.pNetMatch = (AL_DB_RecordMatchFunc)_DVBApp_NetworkMatch_T;
  1848. stMatchFuc.pMulitplexMatch = (AL_DB_RecordMatchFunc)_DVBApp_TPMatch_T;
  1849. AL_DB_RegisterDupliChkFunc(AL_DBTYPE_DVB_T, &stMatchFuc);
  1850. #endif
  1851. #ifdef CONFIG_DVB_SYSTEM_DVBC_SUPPORT
  1852. stMatchFuc.pNetMatch = (AL_DB_RecordMatchFunc)_DVBApp_NetworkMatch_C;
  1853. stMatchFuc.pMulitplexMatch = (AL_DB_RecordMatchFunc)_DVBApp_TPMatch_C;
  1854. AL_DB_RegisterDupliChkFunc(AL_DBTYPE_DVB_C, &stMatchFuc);
  1855. #endif
  1856. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  1857. stMatchFuc.pNetMatch = (AL_DB_RecordMatchFunc)_DVBApp_NetworkMatch_S;
  1858. stMatchFuc.pMulitplexMatch = (AL_DB_RecordMatchFunc)_DVBApp_TPMatch_S;
  1859. AL_DB_RegisterDupliChkFunc(AL_DBTYPE_DVB_S, &stMatchFuc);
  1860. #endif
  1861. APP_Database_GetCurrentDBType(APP_SOURCE_DTV, &eDBType);
  1862. switch (eDBType)
  1863. {
  1864. case AL_DBTYPE_DVB_T:
  1865. AL_FW_Init(FW_DVB_T_INIT, NULL, NULL);
  1866. break;
  1867. case AL_DBTYPE_DVB_C:
  1868. AL_FW_Init(FW_DVB_C_INIT, NULL, NULL);
  1869. break;
  1870. case AL_DBTYPE_DVB_S:
  1871. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  1872. AL_FW_Init(FW_DVB_S_INIT, NULL, NULL);
  1873. #endif
  1874. break;
  1875. default:
  1876. break;
  1877. }
  1878. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  1879. MID_SatCtrl_Init(TUNER_ID_MAIN);
  1880. APP_GUIOBJ_DVB_SatSys_GetUserLocation(&UserLocal);
  1881. MID_SatCtrl_SetUsalsLocation(MOTORSEL_USER,&UserLocal,NULL);
  1882. #endif
  1883. #ifndef SUPPORT_LCN_ONOFF
  1884. do {
  1885. UINT8 bLcnSetting, u8AreaIdx;
  1886. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO, 0,
  1887. sizeof(APP_SETTING_SystemInfo_t), &(g_stSysInfoData));
  1888. bLcnSetting = g_stSysInfoData.LcnOnOff;
  1889. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  1890. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  1891. u8AreaIdx = g_stChannelData.Country;
  1892. u8AreaIdx = u8AreaIdx; // avoid warning error
  1893. if (! (bLcnSetting & LCN_ONOFF_CHANGED)) //mean use the default
  1894. {
  1895. // For the first time boot up, the flash data has not initiated yet
  1896. #ifdef SUPPORT_LCN
  1897. APP_Area_GetDefaultAreaInfoLCN(eDBType, u8AreaIdx, &bLcnSetting);
  1898. #endif
  1899. g_stSysInfoData.LcnOnOff = bLcnSetting;
  1900. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO,
  1901. ITEM_OFFSET(APP_SETTING_SystemInfo_t, LcnOnOff),
  1902. sizeof(g_stSysInfoData.LcnOnOff),&(g_stSysInfoData.LcnOnOff));
  1903. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO,
  1904. ITEM_OFFSET(APP_SETTING_SystemInfo_t, LcnOnOff), sizeof(g_stSysInfoData.LcnOnOff));
  1905. }
  1906. } while(0);
  1907. #endif
  1908. // EPG setup
  1909. _DVBApp_EpgInit();
  1910. UINT32 area = 0;
  1911. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  1912. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  1913. area = g_stChannelData.Country;
  1914. DVBApp_ResetDvbSpecRule(area);
  1915. #ifdef SUPPORT_FACTORY_AUTO_TEST
  1916. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  1917. {
  1918. _DVBApp_PrestoreProgram(eDBType);
  1919. }
  1920. else
  1921. #endif
  1922. {
  1923. APP_Factory_HotelModePowerOnChan();
  1924. }
  1925. #ifdef MP4_SUB_PREFER_LANG
  1926. _DVBApp_SetMp4SubcodepagebyPreferLang();
  1927. #endif
  1928. // Monitor init
  1929. if (_DVBApp_BackgroundMonitor_Init() == SP_SUCCESS)
  1930. {
  1931. dvb_printf("_DVBApp_BackgroundMonitor_Init() success\n");
  1932. }
  1933. else
  1934. {
  1935. dvb_printf("_DVBApp_BackgroundMonitor_Init() fail\n");
  1936. }
  1937. // APP_Database_InitListTypeName();
  1938. //AUDIF_Set_OutputMode(OUTPUT_DOWNMIX_MODE, dwmix_L0R0);
  1939. //AUDIF_Set_OutputMode(OUT_RFModeK3, RF_outmode);
  1940. //AUDIF_Set_OutputMode(OUT_CustomModeB_DigitalDialnormK1, 0x6464);
  1941. }
  1942. static void _DVBApp_DTV_main_program(void *data)
  1943. {
  1944. _DVBApp_SWInit();
  1945. }
  1946. static INT32 _DVBApp_ToggleVideoState(void)
  1947. {
  1948. AL_DB_EDBType_t eDBType = APP_DVB_Playback_GetCurrentNetType();
  1949. #ifndef PLAY_VIDEO_FOR_ALLSRV
  1950. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eDBType);
  1951. #endif
  1952. UINT8 u8ProgState = APP_DVB_Playback_GetProgStateByHandle(eDBType, AL_DB_INVALIDHDL);
  1953. if (MID_PlaybackIsPlaying() == TRUE)
  1954. {
  1955. /*AV is playing, need to stop*/
  1956. if (u8ProgState == MID_PLAYBK_PROG_STATE_LOCKED)
  1957. {
  1958. #ifndef PLAY_VIDEO_FOR_ALLSRV
  1959. if (eServiceType == AL_RECTYPE_DVBRADIO)
  1960. {
  1961. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  1962. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_STOP_PLAYBACK,
  1963. (PLAYBACK_STOP_MHEG5 | PLAYBACK_KEEP_FRAMEBUF));
  1964. }
  1965. else
  1966. #endif
  1967. {
  1968. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  1969. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_STOP_PLAYBACK,
  1970. (PLAYBACK_STOP_SUBTITLE | PLAYBACK_STOP_MHEG5));
  1971. }
  1972. }
  1973. }
  1974. else
  1975. {
  1976. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  1977. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_START_PLAYBACK, 0);
  1978. }
  1979. return SP_SUCCESS;
  1980. }
  1981. #ifdef CONFIG_SUPPORT_INDONESIA_EWS
  1982. void DVBApp_RecordPreEWSLevel(UINT16 EWSLevel)
  1983. {
  1984. dvb_printf("\n [EWS] g_OldPreEWSLevel = 0x%2x\n",g_PreEWSLevel);
  1985. g_PreEWSLevel = EWSLevel;
  1986. dvb_printf("\n [EWS] g_PreEWSLevel = 0x%2x\n",g_PreEWSLevel);
  1987. }
  1988. void DVBApp_ShowIndonesiaEWS(UINT16 NowEWSLevel)
  1989. {
  1990. dvb_printf("\n\n [EWS] Before xxxxxx g_PreEWSLevel = %d NowLevel = 0x%2x\n\n",g_PreEWSLevel,NowEWSLevel);
  1991. UINT8 retVol=0;
  1992. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  1993. ITEM_OFFSET(APP_SETTING_Variational_t, Volume),
  1994. sizeof(UINT8), &(retVol));
  1995. if(g_PreEWSLevel == STATUS_NONE)
  1996. {
  1997. _DVBApp_CloseAllMenu();
  1998. if(NowEWSLevel == STATUS_AWAS)
  1999. {
  2000. MID_PlaybackStartEWSFile();
  2001. if (APP_Audio_Get_HPStatus() == APP_Audio_Headphone_PlugOut)
  2002. {
  2003. APP_Audio_SetVolume(100);
  2004. }
  2005. else
  2006. {
  2007. APP_Audio_SetHPVolume(100);
  2008. }
  2009. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_EWS_AWAS, 0);
  2010. }
  2011. else if(NowEWSLevel == STATUS_SIAGA)
  2012. {
  2013. MID_PlaybackStartEWSFile();
  2014. if (APP_Audio_Get_HPStatus() == APP_Audio_Headphone_PlugOut)
  2015. {
  2016. APP_Audio_SetVolume(100);
  2017. }
  2018. else
  2019. {
  2020. APP_Audio_SetHPVolume(100);
  2021. }
  2022. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_EWS_AWAS, 0);
  2023. }
  2024. else if(NowEWSLevel == STATUS_WASPADA)
  2025. {
  2026. MID_PlaybackStopEWSFile();
  2027. if (APP_Audio_Get_HPStatus() == APP_Audio_Headphone_PlugOut)
  2028. {
  2029. APP_Audio_SetVolume(retVol);
  2030. }
  2031. else
  2032. {
  2033. APP_Audio_SetHPVolume(retVol);
  2034. }
  2035. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_EWS_WASPADA, 0);
  2036. }
  2037. g_PreEWSLevel = NowEWSLevel;
  2038. }
  2039. else
  2040. {
  2041. if(g_PreEWSLevel == STATUS_AWAS || g_PreEWSLevel == STATUS_SIAGA)
  2042. {
  2043. if(NowEWSLevel == STATUS_AWAS || NowEWSLevel == STATUS_SIAGA)
  2044. {
  2045. MID_PlaybackStartEWSFile();
  2046. if (APP_Audio_Get_HPStatus() == APP_Audio_Headphone_PlugOut)
  2047. {
  2048. APP_Audio_SetVolume(100);
  2049. }
  2050. else
  2051. {
  2052. APP_Audio_SetHPVolume(100);
  2053. }
  2054. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  2055. DVB_GUIOBJ_EWS_AWAS, APP_DVB_GLOBAL_EVENT_INDONESIA_EWS_UPDATE, 0);
  2056. }
  2057. else if(NowEWSLevel == STATUS_WASPADA)
  2058. {
  2059. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EWS_AWAS))
  2060. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_EWS_AWAS);
  2061. MID_PlaybackStopEWSFile();
  2062. if (APP_Audio_Get_HPStatus() == APP_Audio_Headphone_PlugOut)
  2063. {
  2064. APP_Audio_SetVolume(retVol);
  2065. }
  2066. else
  2067. {
  2068. APP_Audio_SetHPVolume(retVol);
  2069. }
  2070. _DVBApp_CloseAllMenu();
  2071. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_EWS_WASPADA, 0);
  2072. }
  2073. g_PreEWSLevel = NowEWSLevel;
  2074. }
  2075. else if(g_PreEWSLevel == STATUS_WASPADA)
  2076. {
  2077. if(NowEWSLevel == STATUS_AWAS || NowEWSLevel == STATUS_SIAGA)
  2078. {
  2079. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EWS_WASPADA))
  2080. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_EWS_WASPADA);
  2081. MID_PlaybackStartEWSFile();
  2082. if (APP_Audio_Get_HPStatus() == APP_Audio_Headphone_PlugOut)
  2083. {
  2084. APP_Audio_SetVolume(100);
  2085. }
  2086. else
  2087. {
  2088. APP_Audio_SetHPVolume(100);
  2089. }
  2090. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_EWS_AWAS, 0);
  2091. }
  2092. else if(NowEWSLevel == STATUS_WASPADA)
  2093. {
  2094. MID_PlaybackStopEWSFile();
  2095. if (APP_Audio_Get_HPStatus() == APP_Audio_Headphone_PlugOut)
  2096. {
  2097. APP_Audio_SetVolume(retVol);
  2098. }
  2099. else
  2100. {
  2101. APP_Audio_SetHPVolume(retVol);
  2102. }
  2103. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  2104. DVB_GUIOBJ_EWS_WASPADA, APP_DVB_GLOBAL_EVENT_INDONESIA_EWS_UPDATE, 0);
  2105. }
  2106. g_PreEWSLevel = NowEWSLevel;
  2107. }
  2108. }
  2109. dvb_printf("\n\n [EWS] After xxxxxx g_PreEWSLevel = %d NowLevel = 0x%2x\n\n",g_PreEWSLevel,NowEWSLevel);
  2110. }
  2111. Boolean DVBApp_GetReciveEWS(void)
  2112. {
  2113. dvb_printf("\e[33m\n[EWS] %s %d g_bReciveEWS = %d \e[0m\n",__FUNCTION__, __LINE__,g_bReciveEWS);
  2114. return g_bReciveEWS;
  2115. }
  2116. void DVBApp_SetReciveEWS(Boolean bstate)
  2117. {
  2118. dvb_printf("\e[33m\n[EWS] %s %d before g_bReciveEWS = %d \e[0m\n",__FUNCTION__, __LINE__,g_bReciveEWS);
  2119. g_bReciveEWS = bstate;
  2120. dvb_printf("\e[33m\n[EWS] %s %d after g_bReciveEWS = %d \e[0m\n",__FUNCTION__, __LINE__,g_bReciveEWS);
  2121. }
  2122. #endif
  2123. static void _DVBApp_ShowPopup(DVB_DVBAppPopMsgType_t ePopType)
  2124. {
  2125. UINT32 u32GuiObj = 0;
  2126. PopmsgParam_t stPopup;
  2127. AL_DB_EDBType_t eDBType = AL_DBTYPE_MAX;
  2128. APP_Source_Type_t eSourType = APP_SOURCE_MAX;
  2129. AL_ServiceDetail_t stService;
  2130. #ifdef CONFIG_QSD //Chip test mode doesn't need to show no signal OSD
  2131. if(ePopType == DVB_APP_POP_MSG_NO_SIGNAL)
  2132. {
  2133. return;
  2134. }
  2135. #endif
  2136. #if (defined (CONFIG_SUPPORT_PVR) || defined(CONFIG_CONFIRM_AUTO_UPGRADE))
  2137. UINT32 dMsgType = 0;
  2138. APP_GUIOBJ_PopMsg_GetMsgDialogType(&dMsgType);
  2139. #endif
  2140. #ifdef CONFIG_CONFIRM_AUTO_UPGRADE
  2141. if (dMsgType == POPMSG_CONFIRM_START_AUTO_UPGRADE)
  2142. {
  2143. switch (ePopType)
  2144. {
  2145. case DVB_APP_POP_MSG_RADIO_CHANNEL:
  2146. case DVB_APP_POP_MSG_VIDEO_NOT_SUPPORT:
  2147. case DVB_APP_POP_MSG_SERVICE_NOT_AVAILABLE:
  2148. case DVB_APP_POP_MSG_SCRAMBLE:
  2149. case DVB_APP_POP_MSG_PARENTAL_LOCK:
  2150. case DVB_APP_POP_MSG_NO_SIGNAL:
  2151. case DVB_APP_POP_MSG_TEMPSERVICE:
  2152. case DVB_APP_POP_MSG_CHECKPWD:
  2153. case DVB_APP_POP_MSG_DATABASE_EMPTY:
  2154. dvb_printf("\n\n%d. auto upgrade pop message exist, not display pop message: %d.\n\n", __LINE__, ePopType);
  2155. return;
  2156. default:
  2157. break;
  2158. }
  2159. }
  2160. #endif
  2161. #ifdef CONFIG_SUPPORT_PVR
  2162. if (dMsgType == POPMSG_CONFIRM_REC_REMIDER_TIME || dMsgType == POPMSG_CONFIRM_REC_REMIDER_TIME_CONFIRM)
  2163. {
  2164. switch (ePopType)
  2165. {
  2166. case DVB_APP_POP_MSG_TEMPSERVICE:
  2167. case DVB_APP_POP_MSG_SERVICE_NOT_AVAILABLE:
  2168. case DVB_APP_POP_MSG_NOT_AVAILABLE:
  2169. dvb_printf("\n\n%d.PVR reminder Pop message exist, not display pop message: %d.\n\n", __LINE__, ePopType);
  2170. return;
  2171. default:
  2172. break;
  2173. }
  2174. }
  2175. #endif
  2176. for (u32GuiObj = 0; u32GuiObj < DVB_GUIOBJ_MAX; u32GuiObj++)
  2177. {
  2178. if (u32GuiObj == DVB_GUIOBJ_PLAYBACK
  2179. #ifdef CONFIG_SUPPORT_SUBTITLE
  2180. || u32GuiObj == DVB_GUIOBJ_SUBTITLE
  2181. #endif
  2182. #ifdef CONFIG_SUPPORT_TTX
  2183. || u32GuiObj == DVB_GUIOBJ_TTX
  2184. #endif
  2185. #ifdef CONFIG_SUPPORT_MHEG5
  2186. || u32GuiObj == DVB_GUIOBJ_MHEG5
  2187. #endif
  2188. || u32GuiObj == DVB_GUIOBJ_PROGINFO
  2189. || u32GuiObj == DVB_GUIOBJ_POPMSG
  2190. || u32GuiObj == DVB_GUIOBJ_FREEZE
  2191. || u32GuiObj == APP_GUIOBJ_MUTE
  2192. || u32GuiObj == APP_GUIOBJ_BANNER
  2193. //|| u32GuiObj == APP_GUIOBJ_ADJUST
  2194. //|| u32GuiObj == APP_GUIOBJ_AMPLIFIERVOLUME
  2195. #ifdef CONFIG_SUPPORT_PVR
  2196. || u32GuiObj == DVB_GUIOBJ_PVR_REC
  2197. || u32GuiObj == DVB_GUIOBJ_PVR_PAUSE
  2198. || u32GuiObj == DVB_GUIOBJ_PVR_PLAYINFO
  2199. || u32GuiObj == DVB_GUIOBJ_PVRREC_INFO
  2200. || u32GuiObj == DVB_GUIOBJ_PVR_FILEPLAY
  2201. || u32GuiObj == DVB_GUIOBJ_PVR_FILEPLAYINFO
  2202. #endif
  2203. )
  2204. {
  2205. continue;
  2206. }
  2207. if(ePopType == DVB_APP_POP_MSG_OVERMAXVOLUME && u32GuiObj == APP_GUIOBJ_ADJUST)
  2208. {
  2209. continue;
  2210. }
  2211. if (ePopType != DVB_APP_POP_MSG_KEYLOCK)
  2212. {
  2213. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, u32GuiObj))
  2214. {
  2215. return;
  2216. }
  2217. }
  2218. }
  2219. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  2220. &&(g_dCurPopup == POPMSG_CONFIRM_FLIP))
  2221. {
  2222. return;
  2223. }
  2224. memset(&stPopup, 0x0, sizeof(PopmsgParam_t));
  2225. switch (ePopType)
  2226. {
  2227. case DVB_APP_POP_MSG_DATABASE_EMPTY:
  2228. stPopup.eType = POPMSG_TYPE_PROMPT;
  2229. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2230. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2231. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_DATABASE_EMPTY;
  2232. break;
  2233. case DVB_APP_POP_MSG_CHECK_ANTENNA_INPUT:
  2234. stPopup.eType = POPMSG_TYPE_PROMPT;
  2235. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2236. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2237. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_CHECK_ANTENNA_INPUT;
  2238. break;
  2239. case DVB_APP_POP_MSG_INVALID_INPUT:
  2240. stPopup.eType = POPMSG_TYPE_PROMPT;
  2241. stPopup.u16Exitkeys = POPMSG_EXIT_ANY_KEY;
  2242. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2243. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INVALID_INPUT;
  2244. stPopup.extend.stPrompt.iTimeout = 2;
  2245. break;
  2246. case DVB_APP_POP_MSG_NOT_AVAILABLE:
  2247. stPopup.eType = POPMSG_TYPE_PROMPT;
  2248. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2249. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2250. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NOT_AVAILABLE;
  2251. stPopup.extend.stPrompt.iTimeout = 2;
  2252. break;
  2253. #ifdef CONFIG_SUPPORT_SUBTITLE
  2254. case DVB_APP_POP_MSG_NO_SUBTITLE:
  2255. stPopup.eType = POPMSG_TYPE_PROMPT;
  2256. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2257. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2258. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_SUBTITLE;
  2259. stPopup.extend.stPrompt.iTimeout = 2;
  2260. break;
  2261. #endif
  2262. #ifdef CONFIG_SUPPORT_TTX
  2263. case DVB_APP_POP_MSG_NO_TTX:
  2264. stPopup.eType = POPMSG_TYPE_PROMPT;
  2265. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2266. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2267. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_TTX;
  2268. stPopup.extend.stPrompt.iTimeout = 2;
  2269. break;
  2270. #endif
  2271. case DVB_APP_POP_MSG_CHECKPWD:
  2272. stPopup.eType = POPMSG_TYPE_PWD;
  2273. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2274. stPopup.extend.stPwd.ePwdType = PLAYBACK_POPUP_PWD_LOCKED;
  2275. break;
  2276. case DVB_APP_POP_MSG_TEMPSERVICE:
  2277. #ifdef CONFIG_SUPPORT_MHEG5
  2278. if ((APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED)
  2279. && APP_Area_SupportDtg() /*&& (APP_DVB_Mheg5_GetMheg5DisplayStatus() == FALSE)*/)
  2280. {
  2281. if(APP_DVB_Mheg5_GetMheg5DisplayStatus() == FALSE)
  2282. {
  2283. stPopup.eType = POPMSG_TYPE_PROMPT;
  2284. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2285. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_TEMPSERVICE_LOAD_MHEG5;
  2286. break;
  2287. }else
  2288. return;
  2289. }
  2290. else if ((APP_DVB_Mheg5_GetBootCarouselStatus() != MHEG5_BOOT_CAROUSEL_EXISTED)
  2291. && APP_Area_SupportDtg())
  2292. {
  2293. return;
  2294. }
  2295. #endif
  2296. stPopup.eType = POPMSG_TYPE_PROMPT;
  2297. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2298. APP_Database_GetCurrentDBType(eSourType, &eDBType);
  2299. AL_DB_QueryDetail(APP_DVB_Playback_GetCurrentProgHandle(eDBType,
  2300. (AL_RECTYPE_DVBTV | AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA)), (al_void *)&stService);
  2301. if (((AL_DBTYPE_DVB_T == eDBType) && (1 == stService.stDVBTServ.stProgAttrib.svrnotrun))
  2302. || ((AL_DBTYPE_DVB_C == eDBType) && (1 == stService.stDVBCServ.stProgAttrib.svrnotrun))
  2303. || ((AL_DBTYPE_DVB_S == eDBType) && (1 == stService.stDVBSServ.stProgAttrib.svrnotrun)))
  2304. {
  2305. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_TEMPSERVICE_SERVICE_NOT_RUNNING;
  2306. }
  2307. else
  2308. {
  2309. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_TEMPSERVICE;
  2310. }
  2311. break;
  2312. case DVB_APP_POP_MSG_NO_SIGNAL:
  2313. #ifdef CONFIG_CIPLUS_SUPPORT
  2314. if( APP_CIPLUS_IsVirtualChannel(0) )
  2315. return;
  2316. #endif
  2317. stPopup.eType = POPMSG_TYPE_PROMPT;
  2318. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2319. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_NO_SIGNAL;
  2320. break;
  2321. case DVB_APP_POP_MSG_PARENTAL_LOCK:
  2322. stPopup.eType = POPMSG_TYPE_PWD;
  2323. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2324. stPopup.extend.stPwd.ePwdType = PLAYBACK_POPUP_PWD_LOCKED;
  2325. break;
  2326. case DVB_APP_POP_MSG_SCRAMBLE:
  2327. #ifdef CONFIG_CIPLUS_SUPPORT
  2328. #if 0 // TODO: MHEG5
  2329. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)||
  2330. APP_DVB_Mheg5_IsRunning())
  2331. {
  2332. return;
  2333. }
  2334. #endif
  2335. #ifdef CONFIG_SUPPORT_MHEG5
  2336. if( MID_DTVCI_GetAppMMIStatus() && SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5) )
  2337. return;
  2338. #endif
  2339. #endif
  2340. stPopup.eType = POPMSG_TYPE_PROMPT;
  2341. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2342. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_SCRAMBLED;
  2343. break;
  2344. case DVB_APP_POP_MSG_SERVICE_NOT_AVAILABLE:
  2345. stPopup.eType = POPMSG_TYPE_PROMPT;
  2346. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2347. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE;
  2348. break;
  2349. #ifdef CONFIG_CI_SUPPORT
  2350. case DVB_APP_POP_MSG_CI_CAM_INIT:
  2351. stPopup.eType = POPMSG_TYPE_PROMPT;
  2352. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2353. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_CI_CAM_INIT;
  2354. stPopup.extend.stPrompt.iTimeout = 60;
  2355. break;
  2356. case DVB_APP_POP_MSG_CI_CAM_INIT_OK:
  2357. stPopup.eType = POPMSG_TYPE_PROMPT;
  2358. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2359. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_CI_CAM_INIT_OK;
  2360. stPopup.extend.stPrompt.iTimeout = 3;
  2361. break;
  2362. #ifndef CONFIG_TV_NEW_UI
  2363. case DVB_APP_POP_MSG_CI_CAM_ERROR:
  2364. stPopup.eType = POPMSG_TYPE_PROMPT;
  2365. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2366. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_CI_CAM_ERROR;
  2367. stPopup.extend.stPrompt.iTimeout = 3;
  2368. break;
  2369. #endif
  2370. case DVB_APP_POP_MSG_CI_CAM_REMOVED:
  2371. stPopup.eType = POPMSG_TYPE_PROMPT;
  2372. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2373. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_CI_CAM_REMOVED;
  2374. stPopup.extend.stPrompt.iTimeout = 3;
  2375. break;
  2376. #ifdef CONFIG_CIPLUS_SUPPORT
  2377. case DVB_APP_POP_MSG_CIPLUSE_UPGRADE_SUCC:
  2378. stPopup.eType = POPMSG_TYPE_PROMPT;
  2379. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2380. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_CIPLUS_UPGRADE_SUCC;
  2381. stPopup.extend.stPrompt.iTimeout = 5;
  2382. break;
  2383. case DVB_APP_POP_MSG_CIPLUSE_UPGRADE_FAILE:
  2384. stPopup.eType = POPMSG_TYPE_PROMPT;
  2385. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2386. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_CIPLUS_UPGRADE_FAILED;
  2387. stPopup.extend.stPrompt.iTimeout = 8;
  2388. break;
  2389. #endif
  2390. case DVB_APP_POP_MSG_HDCP_UPGRADE_SUCC:
  2391. stPopup.eType = POPMSG_TYPE_PROMPT;
  2392. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2393. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_HDCP_UPGRADE_SUCC;
  2394. stPopup.extend.stPrompt.iTimeout = 8;
  2395. break;
  2396. case DVB_APP_POP_MSG_HDCP_UPGRADE_FAILE:
  2397. stPopup.eType = POPMSG_TYPE_PROMPT;
  2398. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2399. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_HDCP_UPGRADE_FAILED;
  2400. stPopup.extend.stPrompt.iTimeout = 8;
  2401. break;
  2402. case DVB_APP_POP_MSG_CI_PASS_HDCP_PASS:
  2403. stPopup.eType = POPMSG_TYPE_PROMPT;
  2404. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2405. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_CI_PASS_HDCP_PASS;
  2406. stPopup.extend.stPrompt.iTimeout = 8;
  2407. break;
  2408. case DVB_APP_POP_MSG_CI_PASS_HDCP_FAIL:
  2409. stPopup.eType = POPMSG_TYPE_PROMPT;
  2410. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2411. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_CI_PASS_HDCP_FAIL;
  2412. stPopup.extend.stPrompt.iTimeout = 8;
  2413. break;
  2414. case DVB_APP_POP_MSG_CI_FAIL_HDCP_PASS:
  2415. stPopup.eType = POPMSG_TYPE_PROMPT;
  2416. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2417. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_CI_FAIL_HDCP_PASS;
  2418. stPopup.extend.stPrompt.iTimeout = 8;
  2419. break;
  2420. case DVB_APP_POP_MSG_CI_FAIL_HDCP_FAIL:
  2421. stPopup.eType = POPMSG_TYPE_PROMPT;
  2422. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2423. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_CI_FAIL_HDCP_FAIL;
  2424. stPopup.extend.stPrompt.iTimeout = 8;
  2425. break;
  2426. #ifdef SUPPORT_CICAM_NEW_MESSAGE //this define need be enable to inform user remove CICAM card
  2427. case DVB_APP_POP_MSG_CI_INFORM_USER_REMOVE_CAM:
  2428. stPopup.eType = POPMSG_TYPE_PROMPT;
  2429. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2430. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_CI_INFORM_USER_REMOVE_CAM;
  2431. stPopup.extend.stPrompt.iTimeout = 3;
  2432. break;
  2433. #endif
  2434. #endif
  2435. case DVB_APP_POP_MSG_NEW_SERVICE:
  2436. stPopup.eType = POPMSG_TYPE_PROMPT;
  2437. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2438. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2439. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_ADD_SRV;
  2440. stPopup.extend.stPrompt.iTimeout = 3;
  2441. break;
  2442. case DVB_APP_POP_MSG_SERVICE_REMOVE:
  2443. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2444. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2445. stPopup.u16ReturnType= GUI_OBJECT_POST_EVENT|GUI_OBJECT_EVENT_BYPASS ;
  2446. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_CONFIRM_REMOVE_SRV;
  2447. break;
  2448. case DVB_APP_POP_MSG_OTH_TP_NEW_SERVICE:
  2449. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2450. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2451. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2452. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_OTH_TP_ADD_SRV;
  2453. break;
  2454. #ifdef SUPPORT_NETWORK_UPDATE_RESCAN
  2455. case DVB_APP_POP_MSG_NETWORK_UPDATE_STATIC:
  2456. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2457. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2458. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2459. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_CONFIRM_UPDATE_NWK_STATIC;
  2460. break;
  2461. #endif
  2462. case DVB_APP_POP_MSG_NETWORK_UPDATING:
  2463. stPopup.eType = POPMSG_TYPE_PROMPT;
  2464. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2465. stPopup.u16ReturnType = GUI_OBJECT_NO_POST_ACTION ;
  2466. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_NETWORK_UPDATING;
  2467. break;
  2468. case DVB_APP_POP_MSG_NETWORK_UPDATE_DONE:
  2469. stPopup.eType = POPMSG_TYPE_PROMPT;
  2470. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2471. stPopup.u16ReturnType = GUI_OBJECT_NO_POST_ACTION ;
  2472. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NETWORK_UPDATE_DONE;
  2473. stPopup.extend.stPrompt.iTimeout = 2;
  2474. break;
  2475. case DVB_APP_POP_MSG_VIDEO_NOT_SUPPORT:
  2476. #ifdef CONFIG_SUPPORT_MHEG5
  2477. if (APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED)
  2478. {
  2479. return;
  2480. }
  2481. #endif
  2482. stPopup.eType = POPMSG_TYPE_PROMPT;
  2483. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2484. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_VIDEO_NOT_SUPPORT;
  2485. break;
  2486. case DVB_APP_POP_MSG_DB_SAVE_IN_PROGRESS:
  2487. stPopup.eType = POPMSG_TYPE_PROMPT;
  2488. stPopup.u16Exitkeys = POPMSG_EXIT_CHN_UP_DOWN | POPMSG_EXIT_EPG | POPMSG_EXIT_MENU | POPMSG_EXIT_SOURCE;
  2489. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2490. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_SAVING_DATA;
  2491. stPopup.extend.stPrompt.iTimeout = 20;
  2492. break;
  2493. #ifdef CONFIG_SUPPORT_PVR
  2494. case DVB_APP_POP_MSG_REC_INIT:
  2495. stPopup.eType = POPMSG_TYPE_PROMPT;
  2496. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2497. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2498. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INITIAL_REC;
  2499. stPopup.extend.stPrompt.iTimeout = 1;
  2500. break;
  2501. case DVB_APP_POP_MSG_TIMESHIFT_INIT:
  2502. stPopup.eType = POPMSG_TYPE_PROMPT;
  2503. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2504. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2505. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INITIAL_TIMESHIFT;
  2506. stPopup.extend.stPrompt.iTimeout = 2;
  2507. break;
  2508. case DVB_APP_POP_MSG_AUTOTIMESHIFT_INIT:
  2509. stPopup.eType = POPMSG_TYPE_PROMPT;
  2510. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2511. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2512. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INITIAL_AUTOTIMESHIFT;
  2513. stPopup.extend.stPrompt.iTimeout = 2;
  2514. break;
  2515. case DVB_APP_POP_MSG_REC_ENTER_NOT_VALID:
  2516. stPopup.eType = POPMSG_TYPE_PROMPT;
  2517. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2518. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2519. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INVALID_REC;
  2520. stPopup.extend.stPrompt.iTimeout = 2;
  2521. break;
  2522. case DVB_APP_POP_MSG_REC_WRITE_ERROR:
  2523. stPopup.eType = POPMSG_TYPE_PROMPT;
  2524. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2525. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2526. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_REC_WRITE_ERR;
  2527. stPopup.extend.stPrompt.iTimeout = 2;
  2528. break;
  2529. case DVB_APP_POP_MSG_TIMESHIFT_ENTER_NOT_VALID:
  2530. stPopup.eType = POPMSG_TYPE_PROMPT;
  2531. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2532. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2533. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INVALID_TIMESHIFT;
  2534. stPopup.extend.stPrompt.iTimeout = 2;
  2535. break;
  2536. case DVB_APP_POP_MSG_REC_REQUIRE_FORMAT:
  2537. stPopup.eType = POPMSG_TYPE_PROMPT;
  2538. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2539. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2540. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PVR_REQUIRE_FORMAT_DISK;
  2541. stPopup.extend.stPrompt.iTimeout = 2;
  2542. break;
  2543. case DVB_APP_POP_MSG_REC_PARTITION_NOT_SET:
  2544. stPopup.eType = POPMSG_TYPE_PROMPT;
  2545. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2546. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2547. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PARTITION_NOT_SET;
  2548. stPopup.extend.stPrompt.iTimeout = 2;
  2549. break;
  2550. case DVB_APP_POP_MSG_PVR_DISK_CHECKING:
  2551. stPopup.eType = POPMSG_TYPE_PROMPT;
  2552. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2553. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2554. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_DISK_CHECKING;
  2555. stPopup.extend.stPrompt.iTimeout = 2;
  2556. break;
  2557. case DVB_APP_POP_MSG_PVR_DISK_FULL:
  2558. stPopup.eType = POPMSG_TYPE_PROMPT;
  2559. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2560. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2561. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_DISK_FULL;
  2562. stPopup.extend.stPrompt.iTimeout = 2;
  2563. break;
  2564. case DVB_APP_POP_MSG_PVR_NO_STORAGE:
  2565. stPopup.eType = POPMSG_TYPE_PROMPT;
  2566. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2567. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2568. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_USBCARD_DEVICE;
  2569. stPopup.extend.stPrompt.iTimeout = 2;
  2570. break;
  2571. case DVB_APP_POP_MSG_FOUNDDEVICE:
  2572. stPopup.eType = POPMSG_TYPE_PROMPT;
  2573. stPopup.u16Exitkeys = POPMSG_EXIT_ANY_KEY;
  2574. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2575. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_FOUNDDEVICE;
  2576. stPopup.extend.stPrompt.iTimeout = 2;
  2577. break;
  2578. case DVB_APP_POP_MSG_REC_NTFS_DIRTY:
  2579. stPopup.eType = POPMSG_TYPE_PROMPT;
  2580. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2581. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2582. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PARTITION_SET_NTFS_DIRTY;
  2583. stPopup.extend.stPrompt.iTimeout = 3;
  2584. break;
  2585. case DVB_APP_POP_MSG_REC_SCRAMBLE_CHANNEL:
  2586. stPopup.eType = POPMSG_TYPE_PROMPT;
  2587. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2588. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2589. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INVALID_REC_SCRAMBLE;
  2590. stPopup.extend.stPrompt.iTimeout = 2;
  2591. break;
  2592. case DVB_APP_POP_MSG_REC_START:
  2593. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2594. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2595. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2596. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2597. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_START_RECORD;
  2598. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2599. break;
  2600. case DVB_APP_POP_MSG_STOP_MHEG_FOR_REC:
  2601. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2602. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2603. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2604. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2605. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_MHEG_FOR_RECORD;
  2606. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2607. break;
  2608. case DVB_APP_POP_MSG_STOP_TSHIFT_TO_REC:
  2609. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2610. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2611. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2612. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_THIFT_TO_REC;
  2613. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2614. break;
  2615. case DVB_APP_POP_MSG_UPDATE_TSID:
  2616. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2617. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2618. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2619. stPopup.extend.stPrompt.ePromptType = POPMSG_CONFIRM_FIND_NEW_TSID;
  2620. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2621. break;
  2622. case DVB_APP_POP_MSG_TIMESHIFT_START:
  2623. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2624. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2625. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2626. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2627. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_START_TIMESHIFT;
  2628. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2629. break;
  2630. case DVB_APP_POP_MSG_STOP_MHEG_FOR_TIMESHIFT:
  2631. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2632. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2633. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2634. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2635. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_MHEG_FOR_TIMESHIFT;
  2636. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2637. break;
  2638. case DVB_APP_POP_MSG_REC_STOP:
  2639. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2640. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2641. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2642. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2643. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD;
  2644. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2645. break;
  2646. case DVB_APP_POP_MSG_STOP_REC_FOR_MHEG:
  2647. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2648. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2649. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2650. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2651. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD_FOR_MHEG;
  2652. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2653. break;
  2654. case DVB_APP_POP_MSG_TIMESHIFT_STOP:
  2655. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2656. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2657. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2658. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2659. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT;
  2660. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2661. break;
  2662. case DVB_APP_POP_MSG_STOP_TIMESHIFT_FOR_MHEG:
  2663. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2664. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2665. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2666. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2667. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_MHEG;
  2668. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2669. break;
  2670. case DVB_APP_POP_MSG_REC_STOP_CHANNEL_CHANGE:
  2671. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2672. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2673. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2674. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2675. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD_FOR_CH_CHANGE;
  2676. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2677. break;
  2678. case DVB_APP_POP_MSG_REC_STOP_FOR_RECALL:
  2679. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2680. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2681. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2682. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2683. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD_FOR_RECALL;
  2684. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2685. break;
  2686. case DVB_APP_POP_MSG_TIMESHIFT_STOP_CHANNEL_CHANGE:
  2687. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2688. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2689. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2690. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2691. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_CH_CHANGE;
  2692. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2693. break;
  2694. case DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_RECALL:
  2695. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2696. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2697. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2698. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2699. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_RECALL;
  2700. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2701. break;
  2702. case DVB_APP_POP_MSG_REC_STOP_SOURCE_CHANGE:
  2703. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2704. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2705. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2706. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2707. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD_FOR_SRC_CHANGE;
  2708. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2709. break;
  2710. case DVB_APP_POP_MSG_TIMESHIFT_STOP_SOURCE_CHANGE:
  2711. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2712. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2713. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2714. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2715. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_SRC_CHANGE;
  2716. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2717. break;
  2718. case DVB_APP_POP_MSG_REC_SPEED_NOT_ENOUGH:
  2719. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2720. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2721. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2722. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2723. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_RECORDER_SPEED_NOT_ENOUGH;
  2724. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2725. break;
  2726. case DVB_APP_POP_MSG_TIMESHIFT_SPEED_NOT_ENOUGH:
  2727. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2728. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2729. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2730. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2731. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_TIMESHIFT_SPEED_NOT_ENOUGH;
  2732. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2733. break;
  2734. case DVB_APP_POP_MSG_REC_STOP_FOR_USBKEY:
  2735. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2736. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2737. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2738. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2739. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD_FOR_USBKEY;
  2740. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2741. break;
  2742. case DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_USBKEY:
  2743. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2744. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2745. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2746. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2747. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_USBKEY;
  2748. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2749. break;
  2750. case DVB_APP_POP_MSG_REC_STOP_FOR_TVRADIOKEY:
  2751. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2752. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2753. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2754. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2755. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD_FOR_TVRADIOKEY;
  2756. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2757. break;
  2758. case DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_TVRADIOKEY:
  2759. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2760. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2761. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2762. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2763. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_TVRADIOKEY;
  2764. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2765. break;
  2766. case DVB_APP_POP_MSG_PVR_TIMESHIFT_STANDBY:
  2767. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2768. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2769. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT;
  2770. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_PVR_TIMESHIFT_STANDBY;
  2771. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2772. break;
  2773. case DVB_APP_POP_MSG_PVR_REMIDER:
  2774. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2775. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2776. stPopup.u16ReturnType = GUI_OBJECT_NO_POST_ACTION;
  2777. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_REC_REMIDER_TIME;
  2778. stPopup.extend.stConfirm.u8Default = POPMSG_YES;
  2779. stPopup.extend.stConfirm.iTimeout = DVBApp_GetReminderTime2Show()+1;
  2780. break;
  2781. case DVB_APP_POP_MSG_PVR_REMIDER_CONFIRM:
  2782. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2783. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2784. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  2785. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_REC_REMIDER_TIME_CONFIRM;
  2786. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2787. break;
  2788. case DVB_APP_POP_MSG_STOP_REC_FOR_REMINDER:
  2789. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2790. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2791. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  2792. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_REC_FOR_REMINDER;
  2793. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2794. break;
  2795. case DVB_APP_POP_MSG_STOP_TSHIFT_FOR_REMINDER:
  2796. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2797. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2798. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  2799. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TSHIFT_FOR_REMINDER;
  2800. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2801. break;
  2802. case DVB_APP_POP_MSG_STOP_REC_FOR_TIMER_REC:
  2803. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2804. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2805. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  2806. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_REC_FOR_TIMER_REC;
  2807. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2808. break;
  2809. case DVB_APP_POP_MSG_STOP_TSHIFT_FOR_TIMER_REC:
  2810. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2811. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2812. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  2813. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TSHIFT_FOR_TIMER_REC;
  2814. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2815. break;
  2816. case DVB_APP_POP_MSG_TIMER_OUT_OF_DATE:
  2817. stPopup.eType = POPMSG_TYPE_PROMPT;
  2818. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2819. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2820. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_TIMER_OUT_OF_DATE;
  2821. stPopup.extend.stPrompt.iTimeout = 2;
  2822. break;
  2823. case DVB_APP_POP_MSG_PVR_SYSTEM_TIME_CHANGED:
  2824. stPopup.eType = POPMSG_TYPE_PROMPT;
  2825. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2826. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT;
  2827. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PVR_SYSTEM_TIME_CHANGED;
  2828. stPopup.extend.stPrompt.iTimeout = 2;
  2829. break;
  2830. case DVB_APP_POP_MSG_PVR_PARTITION_SET_SUCCESSFUL:
  2831. stPopup.eType = POPMSG_TYPE_PROMPT;
  2832. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2833. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT;
  2834. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PARTITION_SET_SUCCESSFUL;
  2835. stPopup.extend.stPrompt.iTimeout = 2;
  2836. break;
  2837. case DVB_APP_POP_MSG_PVR_ENABLE:
  2838. stPopup.eType = POPMSG_TYPE_PROMPT;
  2839. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2840. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2841. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PVR_ENABLE;
  2842. stPopup.extend.stPrompt.iTimeout = 2;
  2843. break;
  2844. case DVB_APP_POP_MSG_PVR_DISABLE:
  2845. stPopup.eType = POPMSG_TYPE_PROMPT;
  2846. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2847. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2848. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PVR_DISABLE;
  2849. stPopup.extend.stPrompt.iTimeout = 2;
  2850. break;
  2851. case DVB_APP_POP_MSG_INSERT_USB:
  2852. stPopup.eType = POPMSG_TYPE_PROMPT;
  2853. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2854. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2855. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INSERT_USB;
  2856. stPopup.extend.stPrompt.iTimeout = 3;
  2857. break;
  2858. case DVB_APP_POP_MSG_INVALID_USB:
  2859. stPopup.eType = POPMSG_TYPE_PROMPT;
  2860. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2861. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2862. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INVALID_USB;
  2863. stPopup.extend.stPrompt.iTimeout = 3;
  2864. break;
  2865. case DVB_APP_POP_MSG_INSERT_USB_CONFIRM:
  2866. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2867. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT | POPMSG_EXIT_RETURN;
  2868. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2869. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2870. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_INSERT_USB;
  2871. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2872. break;
  2873. case DVB_APP_POP_MSG_INVALID_USB_CONFIRM:
  2874. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2875. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT | POPMSG_EXIT_RETURN;
  2876. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2877. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2878. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_INVALID_USB;
  2879. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2880. break;
  2881. #endif
  2882. case DVB_APP_POP_MSG_CHANNEL_DELETED:
  2883. stPopup.eType = POPMSG_TYPE_PROMPT;
  2884. stPopup.u16Exitkeys = POPMSG_EXIT_ANY_KEY;
  2885. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2886. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_CHANNEL_DELETED;
  2887. stPopup.extend.stPrompt.iTimeout = 2;
  2888. break;
  2889. case DVB_APP_POP_MSG_EPG_ENABLE:
  2890. stPopup.eType = POPMSG_TYPE_PROMPT;
  2891. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2892. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2893. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_EPG_ENABLE;
  2894. stPopup.extend.stPrompt.iTimeout = 2;
  2895. break;
  2896. case DVB_APP_POP_MSG_EPG_DISABLE:
  2897. stPopup.eType = POPMSG_TYPE_PROMPT;
  2898. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2899. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2900. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_EPG_DISABLE;
  2901. stPopup.extend.stPrompt.iTimeout = 2;
  2902. break;
  2903. #ifdef SUPPORT_CONAX_CAS
  2904. case DVB_APP_POP_MSG_NO_CARD_INSERTERD:
  2905. stPopup.eType = POPMSG_TYPE_PROMPT;
  2906. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2907. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2908. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_CARD_INSERTERD;
  2909. stPopup.extend.stPrompt.iTimeout = 2;
  2910. break;
  2911. case DVB_APP_POP_MSG_INCORRECT_CONAX_CARD:
  2912. stPopup.eType = POPMSG_TYPE_PROMPT;
  2913. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2914. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2915. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INCORRECT_CONAX_CARD;
  2916. stPopup.extend.stPrompt.iTimeout = 2;
  2917. break;
  2918. case DVB_APP_POP_MSG_INCORRECT_CARD:
  2919. stPopup.eType = POPMSG_TYPE_PROMPT;
  2920. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2921. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2922. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INCORRECT_CARD;
  2923. stPopup.extend.stPrompt.iTimeout = 2;
  2924. break;
  2925. case DVB_APP_POP_MSG_CARD_PROBIEM_CHEAKCAED:
  2926. stPopup.eType = POPMSG_TYPE_PROMPT;
  2927. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2928. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2929. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_CARD_PROBIEM_CHEAKCAED;
  2930. stPopup.extend.stPrompt.iTimeout = 2;
  2931. break;
  2932. case DVB_APP_POP_MSG_NO_ACCESS:
  2933. stPopup.eType = POPMSG_TYPE_PROMPT;
  2934. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2935. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2936. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_ACCESS;
  2937. stPopup.extend.stPrompt.iTimeout = 2;
  2938. break;
  2939. case DVB_APP_POP_MSG_NO_ACCESS_GEOGRAPHICAL_BLACKOUT:
  2940. stPopup.eType = POPMSG_TYPE_PROMPT;
  2941. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2942. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2943. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_ACCESS_GEOGRAPHICAL_BLACKOUT;
  2944. stPopup.extend.stPrompt.iTimeout = 2;
  2945. break;
  2946. case DVB_APP_POP_MSG_NO_ACCESS_NETWORK_BLOCK:
  2947. stPopup.eType = POPMSG_TYPE_PROMPT;
  2948. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2949. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2950. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_ACCESS_NETWORK_BLOCK;
  2951. stPopup.extend.stPrompt.iTimeout = 2;
  2952. break;
  2953. #endif
  2954. case DVB_APP_POP_MSG_RADIO_CHANNEL:
  2955. stPopup.eType = POPMSG_TYPE_PROMPT;
  2956. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2957. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2958. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_RADIO_CHANNEL;
  2959. break;
  2960. case DVB_APP_POP_MSG_NO_RADIO:
  2961. stPopup.eType = POPMSG_TYPE_PROMPT;
  2962. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2963. stPopup.u16ReturnType = GUI_OBJECT_NO_POST_ACTION ;
  2964. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_RADIO;
  2965. stPopup.extend.stPrompt.iTimeout = 2;
  2966. break;
  2967. case DVB_APP_POP_MSG_NO_DTVORDATA:
  2968. stPopup.eType = POPMSG_TYPE_PROMPT;
  2969. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2970. stPopup.u16ReturnType = GUI_OBJECT_NO_POST_ACTION ;
  2971. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_DTVORDATA;
  2972. stPopup.extend.stPrompt.iTimeout = 2;
  2973. break;
  2974. #ifdef CONFIG_SUPPORT_MHEG5
  2975. case DVB_APP_POP_MSG_STOP_SUBTITLE_TO_OPEN_MHEG5:
  2976. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2977. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2978. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2979. stPopup.u32GuiObjID = DVB_GUIOBJ_PLAYBACK;
  2980. stPopup.extend.stConfirm.eConfirmType =
  2981. PLAYBACK_POPUP_CONFIRM_STOP_SUBTITLE_TO_OPEN_MHEG5;
  2982. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2983. break;
  2984. #endif
  2985. case DVB_APP_POP_MSG_KEYLOCK:
  2986. stPopup.eType = POPMSG_TYPE_PROMPT;
  2987. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2988. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT;
  2989. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_KEYLOCK;
  2990. stPopup.extend.stPrompt.iTimeout = 2;
  2991. break;
  2992. case DVB_APP_POP_MSG_OVERMAXVOLUME:
  2993. stPopup.eType = POPMSG_TYPE_PROMPT;
  2994. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2995. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT;
  2996. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_OVER_MAXVOLUME;
  2997. stPopup.extend.stPrompt.iTimeout = 2;
  2998. break;
  2999. #ifdef CONFIG_SUPPORT_NES_FLASH
  3000. case DVB_APP_POP_MSG_IMPORTING_GAME:
  3001. stPopup.eType = POPMSG_TYPE_PROMPT;
  3002. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  3003. stPopup.u16ReturnType = GUI_OBJECT_NO_POST_ACTION ;
  3004. stPopup.extend.stPrompt.ePromptType = POPMSG_N32GAME_IMPORTING_GAME;
  3005. stPopup.extend.stPrompt.iTimeout = 2;
  3006. break;
  3007. case DVB_APP_POP_MSG_NO_SIZE_FOR_GAME:
  3008. stPopup.eType = POPMSG_TYPE_PROMPT;
  3009. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  3010. stPopup.u16ReturnType = GUI_OBJECT_NO_POST_ACTION ;
  3011. stPopup.extend.stPrompt.ePromptType = POPMSG_N32GAME_NO_SIZE_FOR_GAME;
  3012. stPopup.extend.stPrompt.iTimeout = 2;
  3013. break;
  3014. #endif
  3015. default:
  3016. return;
  3017. }
  3018. if (stDvbInst.bAppState == SYSTEM_IDLE)
  3019. {
  3020. return;
  3021. }
  3022. DVBApp_SchedulePopup(stPopup);
  3023. }
  3024. static INT32 _DVBApp_CheckPopupDisplay(void)
  3025. {
  3026. UINT32 dCheckFlag;
  3027. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  3028. {
  3029. for (dCheckFlag = PLAYBACK_POPUP_MAX - 1; dCheckFlag > PLAYBACK_POPUP_NONE; dCheckFlag--)
  3030. {
  3031. if (g_u32PopupWaitingList & (1 << (dCheckFlag - PLAYBACK_POPUP_NONE)))
  3032. {
  3033. DVBApp_SchedulePopup(stPopupWaitingList[dCheckFlag-PLAYBACK_POPUP_NONE]);
  3034. break;
  3035. }
  3036. }
  3037. }
  3038. return 0;
  3039. }
  3040. static INT32 _DVBApp_HidePopupDisplay(void)
  3041. {
  3042. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  3043. {
  3044. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO);
  3045. }
  3046. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM))
  3047. {
  3048. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM);
  3049. }
  3050. APP_MenuMgr_SetMsgPopup(FALSE);
  3051. g_u32OldPopup = PLAYBACK_POPUP_NONE;
  3052. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  3053. {
  3054. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  3055. }
  3056. g_dCurPopup = PLAYBACK_POPUP_NONE;
  3057. return SP_SUCCESS;
  3058. }
  3059. static al_void _DVBApp_SendServRefleshMsg(al_void)
  3060. {
  3061. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR))
  3062. {
  3063. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR,
  3064. APP_GLOBAL_EVENT_REFRESH_SERV_INFO, 0);
  3065. }
  3066. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR))
  3067. {
  3068. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR,
  3069. APP_GLOBAL_EVENT_REFRESH_SERV_INFO, 0);
  3070. }
  3071. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST))
  3072. {
  3073. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST,
  3074. APP_GLOBAL_EVENT_REFRESH_SERV_INFO, 0);
  3075. }
  3076. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST))
  3077. {
  3078. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST,
  3079. APP_GLOBAL_EVENT_REFRESH_SERV_INFO, 0);
  3080. }
  3081. }
  3082. static INT32 _DVBApp_Zapping(
  3083. UINT8 bServiceType, AL_RecHandle_t hProgHdl,
  3084. UINT8 bForce, UINT32 u32Paramter, Boolean bShowInfo)
  3085. {
  3086. AL_DB_EDBType_t eOldDBType = APP_GUIOBJ_DVB_Playback_GetPrevNetType();
  3087. AL_DB_ERecordType_t eOldServiceType = APP_DVB_Playback_GetCurrServiceType(eOldDBType);
  3088. AL_RecHandle_t hOldProgHdl;
  3089. AL_RecHandle_t hNextProgHdl = hProgHdl;
  3090. APP_Source_Type_t eSourType = APP_SOURCE_MAX;
  3091. APP_GUIOBJ_Source_GetCurrSource(&eSourType);
  3092. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM))
  3093. {
  3094. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM);
  3095. }
  3096. #ifdef CONFIG_CI_SUPPORT
  3097. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ))
  3098. {
  3099. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ);
  3100. }
  3101. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU))
  3102. {
  3103. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU);
  3104. }
  3105. g_Audio_Scramble_Counter = 0;
  3106. g_VIP_FINISH_Flg = FALSE;
  3107. #endif
  3108. hOldProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eOldDBType, eOldServiceType);
  3109. if (AL_DB_INVALIDHDL != hNextProgHdl)
  3110. {
  3111. AL_ServiceDetail_t ServInfor;
  3112. DBServAttrib_t stProgAttrib;
  3113. AL_DB_EDBType_t eDBType;
  3114. AL_DB_ERecordType_t eServiceType;
  3115. #ifdef CONFIG_CIPLUS_SUPPORT
  3116. if (g_isMute)
  3117. {
  3118. g_isMute = FALSE;
  3119. dvb_printf("%s, %d, valid program handle unmute all!\n", __FUNCTION__, __LINE__);
  3120. APP_Audio_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_DTV);
  3121. APP_Video_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_DTV);
  3122. }
  3123. #endif
  3124. AL_DB_QueryDetail(hNextProgHdl, &ServInfor);
  3125. AL_DB_GetRecordType(hNextProgHdl, &eDBType, &eServiceType);
  3126. if (AL_DBTYPE_DVB_T == eDBType)
  3127. {
  3128. stProgAttrib = ServInfor.stDVBTServ.stProgAttrib;
  3129. }
  3130. else if (AL_DBTYPE_DVB_C == eDBType)
  3131. {
  3132. stProgAttrib = ServInfor.stDVBCServ.stProgAttrib;
  3133. }
  3134. else if (AL_DBTYPE_DVB_S == eDBType)
  3135. {
  3136. stProgAttrib = ServInfor.stDVBSServ.stProgAttrib;
  3137. }
  3138. if (!(stProgAttrib.delete == al_true))
  3139. {
  3140. if ((hNextProgHdl != hOldProgHdl)
  3141. || (bServiceType != eOldServiceType) || (bForce == TRUE)
  3142. #ifdef CONFIG_CIPLUS_SUPPORT
  3143. || APP_DVB_CI_GetIsPlaybackPMT()
  3144. #endif
  3145. #ifdef CHECK_HIDDEN_SERVICE
  3146. || ((stProgAttrib.notvisible == al_true) != 0)
  3147. #endif
  3148. )
  3149. {
  3150. #ifdef CONFIG_SUPPORT_PVR
  3151. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  3152. {
  3153. PVR_DEBF("\n==========stop recorder to zapping!====\n");
  3154. if (MID_REC_MODE_MANUAL == MID_Recorder_GetRecMode())
  3155. {
  3156. DVBApp_StopRecord();
  3157. }
  3158. else
  3159. {
  3160. DVBApp_StopTimeshift(FALSE);
  3161. }
  3162. }
  3163. #endif
  3164. #if 0/*moved to _APP_GUIOBJ_DVB_Playback_Stop() by xm.zeng on 2013/3/26.*/
  3165. #ifdef CONFIG_SUPPORT_SUBTITLE
  3166. AL_Subtitle_Reset();
  3167. #endif
  3168. #ifdef CONFIG_SUPPORT_TTX
  3169. AL_TTX_Stop();
  3170. AL_TTX_Reset();
  3171. #endif
  3172. #endif/*end*/
  3173. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  3174. {
  3175. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  3176. }
  3177. if (APP_GetPlaybackPauseState() == TRUE)
  3178. {
  3179. APP_Audio_SetMute(TRUE, TRUE, APP_MUTE_MODE_CH_CHANGE, eSourType);
  3180. APP_Video_SetMute(TRUE, TRUE, APP_MUTE_MODE_CH_CHANGE, eSourType);
  3181. MID_PlaybackStreamResume(1);
  3182. APP_SetPlaybackPauseState(FALSE);
  3183. #ifdef CONFIG_SUPPORT_SUBTITLE
  3184. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  3185. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  3186. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  3187. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  3188. if (g_stUserInfoData.Subtitle == APP_SWITCH_ON)
  3189. {
  3190. #ifdef CONFIG_DTV_SUPPORT
  3191. AL_Subtitle_Type_t SubtitleType = AL_SUBTITLE_TYPE_MAX;
  3192. if (APP_GUIOBJ_SubTitle_GetType(&SubtitleType) == TRUE)
  3193. {
  3194. AL_Subtitle_SetFreeze(FALSE);
  3195. }
  3196. #endif
  3197. }
  3198. #endif
  3199. }
  3200. DVBApp_ClearStatus();
  3201. if (u32Paramter == FW_MONITOR_REPLACE_SERVICE)
  3202. {
  3203. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  3204. SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  3205. APP_DVB_INTRA_EVENT_ZAPPING_WITH_REPLACE, (UINT32)hNextProgHdl);
  3206. }
  3207. else
  3208. {
  3209. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  3210. SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  3211. APP_DVB_INTRA_EVENT_ZAPPING, (UINT32)hNextProgHdl);
  3212. }
  3213. }
  3214. }
  3215. /*Add for dispose TV/RADIO key in channel manager /channel list /epg*/
  3216. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR)
  3217. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR)
  3218. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST)
  3219. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST)
  3220. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG)
  3221. #ifdef SUPPORT_FACTORY_AUTO_TEST
  3222. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING)
  3223. #endif
  3224. )
  3225. {
  3226. return SP_SUCCESS;
  3227. }
  3228. /*End*/
  3229. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  3230. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  3231. if((!APP_Factory_CheckNeedReopenFm(SYS_APP_DVB))
  3232. #ifdef SUPPORT_HOTEL_MODE_INFOBANNER_SHOW_CONTROL
  3233. &&((!g_stFactoryHotelData.HotelModeOnOff)||(g_stFactoryHotelData.ShowInfoBar))
  3234. #endif
  3235. )
  3236. {
  3237. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  3238. {
  3239. if (bShowInfo == TRUE)
  3240. {
  3241. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  3242. SYS_APP_DVB, DVB_GUIOBJ_PROGINFO,
  3243. APP_DVB_GLOBAL_EVENT_INFO_UPDATE, 1);
  3244. }
  3245. else
  3246. {
  3247. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO);
  3248. }
  3249. }
  3250. else
  3251. {
  3252. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER))
  3253. {
  3254. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER);
  3255. }
  3256. if (!(APP_MenuMgr_Exist_Main_Menu()))
  3257. {
  3258. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  3259. {
  3260. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  3261. }
  3262. #ifdef SUPPORT_CEC_TV
  3263. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  3264. {
  3265. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  3266. }
  3267. #endif
  3268. _DVBApp_CloseAllMenu();
  3269. if (bShowInfo == TRUE)
  3270. {
  3271. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO, 0);
  3272. }
  3273. }
  3274. }
  3275. if (APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL)
  3276. == MID_PLAYBK_PROG_STATE_LOCKED)
  3277. {
  3278. if (bShowInfo == TRUE)
  3279. {
  3280. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  3281. }
  3282. }
  3283. }
  3284. }
  3285. else
  3286. {
  3287. #ifdef CONFIG_CIPLUS_SUPPORT
  3288. if (APP_CIPLUS_IsProfileSource())
  3289. {
  3290. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_DTV);
  3291. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_DTV);
  3292. g_isMute = TRUE;
  3293. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  3294. {
  3295. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO,
  3296. APP_DVB_GLOBAL_EVENT_INFO_UPDATE, 1);
  3297. }
  3298. else
  3299. {
  3300. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER))
  3301. {
  3302. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER);
  3303. }
  3304. if (!(APP_MenuMgr_Exist_Main_Menu()))
  3305. {
  3306. _DVBApp_CloseAllMenu();
  3307. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO, 0);
  3308. }
  3309. }
  3310. }
  3311. else
  3312. #endif
  3313. {
  3314. #ifdef SPECIAL_CHNORDER_FOR_SPAIN
  3315. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_DISPLAY, 0);
  3316. #else
  3317. _DVBApp_ShowPopup(DVB_APP_POP_MSG_INVALID_INPUT);
  3318. #endif
  3319. }
  3320. }
  3321. _DVBApp_CheckPopupDisplay();
  3322. return SP_SUCCESS;
  3323. }
  3324. static INT32 _DVBApp_DestroyPartialObjects(UINT8 *pMenuFlag)
  3325. {
  3326. UINT32 i;
  3327. UINT32 u32TotalObj;
  3328. UINT8 u8FilteredObj = 0;
  3329. UINT32 u32GuiObjID[DVB_GUIOBJ_MAX];
  3330. if (SYSAPP_GOBJ_GetTotalCreatedObjects(SYS_APP_DVB, &u32TotalObj) == -1)
  3331. {
  3332. return SP_ERR_FAILURE;
  3333. }
  3334. for (i = 0; i <= u32TotalObj - 1; i++)
  3335. {
  3336. if (SYSAPP_GOBJ_GetObjectIDByIndex(SYS_APP_DVB, i , &u32GuiObjID[u8FilteredObj]) == -1)
  3337. {
  3338. return SP_ERR_FAILURE;
  3339. }
  3340. if ((u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_PLAYBACK)
  3341. #ifdef CONFIG_SUPPORT_SUBTITLE
  3342. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_SUBTITLE)
  3343. #endif
  3344. #ifdef CONFIG_SUPPORT_MHEG5
  3345. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_MHEG5)
  3346. #endif
  3347. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_FREEZE)
  3348. || (u32GuiObjID[u8FilteredObj] == APP_GUIOBJ_MUTE)
  3349. #ifdef CONFIG_KEYPAD_SINGLE_REUSE
  3350. || (u32GuiObjID[u8FilteredObj] == APP_GUIOBJ_SINGLEKEYPAD)
  3351. #endif
  3352. )
  3353. {
  3354. continue;
  3355. }
  3356. else if ((u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_CHNMGR)
  3357. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_FAVMGR)
  3358. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_SCAN_PROCESS)
  3359. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_CHNRENAME)
  3360. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_EPG)
  3361. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_CHNLIST)
  3362. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_FAVLIST)
  3363. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_EPGEXTEND)
  3364. #ifdef CONFIG_CI_SUPPORT
  3365. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_CI_MENU)
  3366. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_CI_ENQ)
  3367. #endif
  3368. )
  3369. {
  3370. *pMenuFlag = TRUE;
  3371. }
  3372. u8FilteredObj++;
  3373. }
  3374. SYSAPP_GOBJ_DestroyPartialGUIObjects(SYS_APP_DVB, u32GuiObjID, u8FilteredObj);
  3375. return SP_SUCCESS;
  3376. }
  3377. static void _DVBApp_Exit_All_Menu(void)
  3378. {
  3379. UINT8 bMenuFlag = 0;
  3380. al_bool bHasValidServ = al_false;
  3381. al_uint8 bSignalState = al_false;
  3382. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  3383. #ifdef OSD_GAME_SUPPORT
  3384. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OSDGAME))
  3385. {
  3386. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_OSDGAME, APP_DVB_INTRA_EVENT_OSD_GAME_EXIT, (UINT32)NULL);
  3387. }
  3388. #endif
  3389. if (APP_MenuMgr_Exist_Main_Menu())
  3390. {
  3391. bMenuFlag = 1;
  3392. APP_MenuMgr_Exit_Main_Menu();
  3393. }
  3394. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  3395. if (bHasValidServ)
  3396. {
  3397. #ifdef CONFIG_CIPLUS_SUPPORT
  3398. if (APP_CIPLUS_IsProfileSource())
  3399. {
  3400. if (g_isMute)
  3401. {
  3402. return ;
  3403. }
  3404. }
  3405. #endif
  3406. _DVBApp_ToggleVideoState();
  3407. if (g_bMidHasUnmute)
  3408. {
  3409. DVBApp_CheckProgramType(TRUE);
  3410. }
  3411. }
  3412. if (APP_MenuMgr_Exist_Factory_Menu())
  3413. {
  3414. bMenuFlag = 1;
  3415. APP_MenuMgr_Exit_Factory_Menu();
  3416. }
  3417. #ifdef CONFIG_SUPPORT_OTA_UPGRADE
  3418. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OTA_UPGRADE_PROGRESS)
  3419. && (!APP_MenuMgr_Exist_Main_Menu()))
  3420. {
  3421. bMenuFlag = TRUE;
  3422. }
  3423. #endif
  3424. if (g_u32OldPopup == PLAYBACK_POPUP_NONE)
  3425. {
  3426. if (_DVBApp_DestroyPartialObjects(&bMenuFlag) == SP_ERR_FAILURE)
  3427. {
  3428. SYSAPP_GOBJ_DestroyAllGUIObject(SYS_APP_DVB);
  3429. }
  3430. }
  3431. if (bMenuFlag)
  3432. {
  3433. #if 0
  3434. if (TotalNum > 0)
  3435. {
  3436. al_uint8 bSignalState = al_false;
  3437. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  3438. if ((bSignalState != AL_DVB_MONITOR_VALUE_TRUE) && (MID_PlaybackIsPlaying() == TRUE))
  3439. {
  3440. //DVBApp_ResetPopup_Channel();
  3441. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_SIGNAL);
  3442. }
  3443. else
  3444. {
  3445. if (eServiceType == AL_RECTYPE_DVBRADIO)
  3446. {
  3447. //DVBApp_ResetPopup_Channel();
  3448. if (!APP_GUIOBJ_DVB_Playback_GetShowLogoState())
  3449. {
  3450. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  3451. }
  3452. if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL))
  3453. {
  3454. #ifdef CONFIG_SUPPORT_MHEG5
  3455. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  3456. #endif
  3457. {
  3458. _DVBApp_ShowPopup(DVB_APP_POP_MSG_RADIO_CHANNEL);
  3459. }
  3460. }
  3461. }
  3462. else
  3463. {
  3464. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  3465. }
  3466. if (APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL)
  3467. == MID_PLAYBK_PROG_STATE_SCRAMBLED)
  3468. {
  3469. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SCRAMBLE);
  3470. }
  3471. }
  3472. }
  3473. else
  3474. {
  3475. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  3476. //DVBApp_ResetPopup_Channel();
  3477. _DVBApp_ShowPopup(DVB_APP_POP_MSG_DATABASE_EMPTY);
  3478. }
  3479. #endif
  3480. }
  3481. else
  3482. {
  3483. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  3484. {
  3485. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO);
  3486. }
  3487. }
  3488. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  3489. if (bSignalState == AL_DVB_MONITOR_VALUE_TRUE)
  3490. {
  3491. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  3492. }
  3493. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  3494. {
  3495. if(DVBApp_IsPopupExist(PLAYBACK_POPUP_PWD_LOCKED)
  3496. && MID_PLAYBK_PROG_STATE_LOCKED != APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL))
  3497. {
  3498. DVBApp_ClosePopup(PLAYBACK_POPUP_PWD_LOCKED, UI_EVENT_NULL);
  3499. }
  3500. else
  3501. {
  3502. DVBApp_ResetPopup_Channel();
  3503. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  3504. }
  3505. }
  3506. _DVBApp_CheckPopupDisplay();
  3507. }
  3508. static void _DVBApp_ExitAll(void)
  3509. {
  3510. #ifdef CONFIG_SUPPORT_MHEG5
  3511. UINT32 u32TotalObj = 0;
  3512. if (SYSAPP_GOBJ_GetTotalCreatedObjects(SYS_APP_DVB, &u32TotalObj) == -1)
  3513. {
  3514. u32TotalObj = 0;
  3515. }
  3516. #endif
  3517. _DVBApp_Exit_All_Menu();
  3518. #ifdef CONFIG_SUPPORT_MHEG5
  3519. #ifdef SUPPORT_TIME_ON_OSD
  3520. if (u32TotalObj == 3)
  3521. #else
  3522. if (u32TotalObj == 2)
  3523. #endif
  3524. {
  3525. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  3526. {
  3527. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, UI_EVENT_RETURN, 0);
  3528. }
  3529. }
  3530. #ifdef SUPPORT_SUBTITLE_ON_PG
  3531. else if ((u32TotalObj == 4) && (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE)))
  3532. {
  3533. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  3534. {
  3535. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, UI_EVENT_RETURN, 0);
  3536. }
  3537. }
  3538. #endif
  3539. #endif
  3540. }
  3541. static INT32 _DVBApp_CloseAllMenu(void)
  3542. {
  3543. INT32 u32GuiObj = 0;
  3544. UINT32 u32GuiObjID;
  3545. UINT32 u32TotalObj;
  3546. _DVBApp_HidePopupDisplay();
  3547. #ifdef CONFIG_SUPPORT_INDONESIA_EWS
  3548. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EWS_AWAS)
  3549. ||SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EWS_WASPADA))
  3550. {
  3551. return SP_ERR_FAILURE;
  3552. }
  3553. #endif
  3554. if (SYSAPP_GOBJ_GetTotalCreatedObjects(SYS_APP_DVB, &u32TotalObj) != SYSTEM_APP_SUCCESS)
  3555. {
  3556. return SP_ERR_FAILURE;
  3557. }
  3558. for (u32GuiObj =(INT32)(u32TotalObj - 1); u32GuiObj >= 0; u32GuiObj--)
  3559. {
  3560. if (SYSAPP_GOBJ_GetObjectIDByIndex(SYS_APP_DVB, u32GuiObj , &u32GuiObjID) != SYSTEM_APP_SUCCESS)
  3561. {
  3562. return SP_ERR_FAILURE;
  3563. }
  3564. if ((u32GuiObjID == DVB_GUIOBJ_PLAYBACK)
  3565. #ifdef CONFIG_SUPPORT_SUBTITLE
  3566. ||(u32GuiObjID == DVB_GUIOBJ_SUBTITLE)
  3567. #endif
  3568. #ifdef CONFIG_SUPPORT_MHEG5
  3569. ||(u32GuiObjID == DVB_GUIOBJ_MHEG5)
  3570. #endif
  3571. ||(u32GuiObjID == DVB_GUIOBJ_FREEZE)
  3572. ||(u32GuiObjID == APP_GUIOBJ_MUTE)
  3573. #ifdef CONFIG_SUPPORT_PVR
  3574. || (u32GuiObjID == DVB_GUIOBJ_PVR_FILEPLAY)
  3575. || (u32GuiObjID == DVB_GUIOBJ_PVR_FILEPLAYINFO)
  3576. #endif
  3577. #ifdef CONFIG_KEYPAD_SINGLE_REUSE
  3578. || (u32GuiObjID == APP_GUIOBJ_SINGLEKEYPAD)
  3579. #endif
  3580. )
  3581. {
  3582. continue;
  3583. }
  3584. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, u32GuiObjID);
  3585. }
  3586. #ifdef CONFIG_SUPPORT_TTX
  3587. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  3588. {
  3589. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  3590. }
  3591. #endif
  3592. return SP_SUCCESS;
  3593. }
  3594. #ifdef CONFIG_SUPPORT_PVR
  3595. /* g_bMidHasUnmute , we need modify this flag before play record file when dtv play locked radio */
  3596. void DVBAPP_Pvr_fileplay_Setflag(Boolean flag)
  3597. {
  3598. g_bMidHasUnmute = flag;
  3599. }
  3600. AL_SCH_sched_id_t DVBAPP_Pvr_GetStopTimer_id(void)
  3601. {
  3602. return stoprec_id;
  3603. }
  3604. void DVBApp_Pvr_SetStopTimer_id(void)
  3605. {
  3606. stoprec_id = AL_SCH_INVALID_ID;
  3607. }
  3608. void DVBApp_SetBGTimeshift(UINT8 u8StartInterval)
  3609. {
  3610. if (u8StartInterval > 0)
  3611. {
  3612. g_u8BGTimeshiftStart = u8StartInterval;
  3613. }
  3614. else
  3615. {
  3616. g_u8BGTimeshiftStart = 0;
  3617. }
  3618. }
  3619. static int DVBApp_CheckDiskSpeedAgain(int defpartition)
  3620. {
  3621. int Speed_State;
  3622. dvb_printf(" %s \n\n",__FUNCTION__);
  3623. MID_RecorderSetDefaultPartition(defpartition, MID_REC_PARTITION_SET_FORCE);
  3624. Speed_State = MID_RecorderGetPartitionSpeed(defpartition);
  3625. return Speed_State;
  3626. }
  3627. static INT32 DVBApp_CheckForRecord(MID_REC_MODE eRecMode)
  3628. {
  3629. int Speed_State;
  3630. INT32 iRet = 0;
  3631. INT32 iPtListIdx = -1;
  3632. //al_bool SOURCE_HD = FALSE;
  3633. al_uint8 bSignalState = al_false;
  3634. al_bool bHasValidServ = al_false;
  3635. UINT8 u8ProgLockState = FALSE;
  3636. g_eCheckRecMode = eRecMode;
  3637. //move this action to here for mantis:22619 start
  3638. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  3639. //move this action to here for mantis:22619 end
  3640. u8ProgLockState = APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL);
  3641. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  3642. if (u8ProgLockState == MID_PLAYBK_PROG_STATE_LOCKED)
  3643. {
  3644. if(MID_REC_MODE_MANUAL == eRecMode)
  3645. {
  3646. #ifndef SUPPORT_SPEC_PVR_RECORD
  3647. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  3648. return SP_ERR_FAILURE;
  3649. #endif
  3650. }
  3651. else
  3652. {
  3653. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_ENTER_NOT_VALID);
  3654. return SP_ERR_FAILURE;
  3655. }
  3656. }
  3657. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  3658. if ((bSignalState != AL_DVB_MONITOR_VALUE_TRUE)
  3659. || (DVBApp_CheckServiceNotAvailable() == TRUE)
  3660. || !bHasValidServ)
  3661. {
  3662. if (MID_REC_MODE_AUTO == eRecMode)
  3663. {
  3664. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  3665. }
  3666. else
  3667. {
  3668. if (eRecMode == MID_REC_MODE_MANUAL)
  3669. {
  3670. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  3671. }
  3672. else if (eRecMode == MID_REC_MODE_TIMESHIFT_AFTER_REC)
  3673. {
  3674. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_ENTER_NOT_VALID);
  3675. }
  3676. }
  3677. return SP_ERR_FAILURE;
  3678. }
  3679. iRet = APP_GUIOBJ_DVB_PvrRec_IsReadyToRecord();
  3680. if (iRet != PVR_MSG_SUCCESS)
  3681. {
  3682. switch (iRet)
  3683. {
  3684. case PVR_MSG_FAIL_DISK_CHECKING:
  3685. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_DISK_CHECKING);
  3686. if (MID_REC_MODE_AUTO == eRecMode)
  3687. {
  3688. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  3689. }
  3690. break;
  3691. case PVR_MSG_FAIL_PARTITION_NOT_SET:
  3692. if (MID_REC_MODE_AUTO == eRecMode)
  3693. {
  3694. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  3695. }
  3696. else
  3697. {
  3698. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_PARTITION_NOT_SET);
  3699. }
  3700. break;
  3701. case PVR_MSG_FAIL_NO_STORAGE:
  3702. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_NO_STORAGE);
  3703. break;
  3704. case PVR_MSG_FAIL_NTFS_DIRTY:
  3705. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_NTFS_DIRTY);
  3706. break;
  3707. case PVR_MSG_FAIL_NO_FREE_SPACE:
  3708. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_DISK_FULL);
  3709. break;
  3710. case PVR_MSG_FAIL_H264_IN_PS_FORMAT:
  3711. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  3712. break;
  3713. case PVR_MSG_SCRAMBLE_CHANNEL:
  3714. if (MID_REC_MODE_AUTO == eRecMode)
  3715. {
  3716. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  3717. }
  3718. else if (MID_REC_MODE_MANUAL== eRecMode)
  3719. {
  3720. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  3721. }
  3722. else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC== eRecMode))
  3723. {
  3724. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_ENTER_NOT_VALID);
  3725. }
  3726. break;
  3727. default:
  3728. if (MID_REC_MODE_AUTO == eRecMode)
  3729. {
  3730. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  3731. }
  3732. else
  3733. {
  3734. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  3735. }
  3736. break;
  3737. }
  3738. return SP_ERR_FAILURE;
  3739. }
  3740. if (MID_REC_FS_OK != MID_RecorderGetDefaultPartition(&iPtListIdx))
  3741. {
  3742. return SP_ERR_FAILURE;
  3743. }
  3744. Speed_State = MID_RecorderGetPartitionSpeed(iPtListIdx);
  3745. #ifdef REMIND_SPEED_NOT_ENOUGH
  3746. al_uint8 SOURCE_HD = FALSE;
  3747. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_HDCONTENT, &SOURCE_HD);
  3748. if (SOURCE_HD)
  3749. {
  3750. if ((Speed_State < MID_REC_SPEED_HDRECORD) && (eRecMode == MID_REC_MODE_MANUAL))
  3751. {
  3752. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  3753. if (APP_WAKEUP_GetBootFlag() == FALSE)//panel off, record immediately
  3754. #endif
  3755. {
  3756. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_SPEED_NOT_ENOUGH); //POPUP REC SPEED NOT ENOUGH
  3757. return SP_ERR_FAILURE;
  3758. }
  3759. }
  3760. else if ((Speed_State < MID_REC_SPEED_HDTSHIFT) && (eRecMode != MID_REC_MODE_MANUAL))
  3761. {
  3762. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_SPEED_NOT_ENOUGH); //POPUP TIMESHIFT SPEED NOT ENOUGH
  3763. return SP_ERR_FAILURE;
  3764. }
  3765. }
  3766. else
  3767. {
  3768. if ((Speed_State < MID_REC_SPEED_SDRECORD) && (eRecMode == MID_REC_MODE_MANUAL))
  3769. {
  3770. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  3771. if (APP_WAKEUP_GetBootFlag() == FALSE)//panel off, record immediately
  3772. #endif
  3773. {
  3774. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_SPEED_NOT_ENOUGH); //POPUP REC SPEED NOT ENOUGH
  3775. return SP_ERR_FAILURE;
  3776. }
  3777. }
  3778. else if ((Speed_State < MID_REC_SPEED_SDTSHIFT) && (eRecMode != MID_REC_MODE_MANUAL))
  3779. {
  3780. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_SPEED_NOT_ENOUGH); //POPUP TIMESHIFT SPEED NOT ENOUGH
  3781. return SP_ERR_FAILURE;
  3782. }
  3783. }
  3784. #else
  3785. if (Speed_State == MID_REC_SPEED_TOOLOW)
  3786. {
  3787. if ((Speed_State = DVBApp_CheckDiskSpeedAgain(iPtListIdx)) == MID_REC_SPEED_TOOLOW)
  3788. {
  3789. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_REQUIRE_FORMAT); //POPUP REC SPEED NOT ENOUGH
  3790. return SP_ERR_FAILURE;
  3791. }
  3792. }
  3793. #endif
  3794. //move this action to here for mantis:22619 start
  3795. if (MID_REC_MODE_AUTO == eRecMode)
  3796. {
  3797. _DVBApp_CloseAllMenu();
  3798. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_INIT);
  3799. }
  3800. //move this action to here for mantis:22619 end
  3801. return SP_SUCCESS;
  3802. }
  3803. INT32 DVBApp_StartRecord(MID_REC_MODE eRecMode)
  3804. {
  3805. INT32 iRet;
  3806. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  3807. {
  3808. return SP_ERR_FAILURE;
  3809. }
  3810. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS))
  3811. {
  3812. return SP_ERR_FAILURE;
  3813. }
  3814. #ifdef CONFIG_SUPPORT_OTA_UPGRADE
  3815. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OTA_UPGRADE_PROGRESS))
  3816. {
  3817. return SP_ERR_FAILURE;
  3818. }
  3819. #endif
  3820. #ifdef CONFIG_SUPPORT_INDONESIA_EWS
  3821. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EWS_AWAS)
  3822. ||SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EWS_WASPADA))
  3823. {
  3824. return SP_ERR_FAILURE;
  3825. }
  3826. #endif
  3827. if (DVBApp_CheckForRecord(eRecMode) != SP_SUCCESS)
  3828. {
  3829. dvb_printf("[%s %d]invalid to enter rec/timeshift!!! [off]\n",__FUNCTION__,__LINE__);
  3830. return SP_ERR_FAILURE;
  3831. }
  3832. #ifdef SUPPORT_CLEAN_EX_DESCRIPTOR
  3833. AL_Event_CleanExDescriptor();
  3834. #elif defined SUPPORT_CLEAN_EPG
  3835. AL_Event_CleanEPG();
  3836. #endif
  3837. #ifdef CONFIG_SUPPORT_MHEG5
  3838. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_MH5);
  3839. #endif
  3840. #if (defined CONFIG_MOD_PACK_TT) || (defined CONFIG_MOD_PACK_SUB)
  3841. #ifdef CONFIG_MOD_PACK_SUB
  3842. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_SUB);
  3843. #endif
  3844. #ifdef CONFIG_MOD_PACK_TT
  3845. AL_TTX_Stop();
  3846. #endif
  3847. if (TTOrSubModUnload() == false)
  3848. {
  3849. dvb_printf("[%s %d]invalid to enter rec/timeshift!!! [off]\n",__FUNCTION__,__LINE__);
  3850. return SP_ERR_FAILURE;
  3851. }
  3852. #endif
  3853. /* disable timer record */
  3854. APP_GUIOBJ_DVB_PvrRec_SetDurationTime(0);//means not timer record //zhongbaoxing added for mantis 142788 @20110720
  3855. if (MID_REC_MODE_MANUAL == eRecMode)
  3856. {
  3857. MID_Recorder_SetRecMode(MID_REC_MODE_MANUAL);
  3858. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  3859. if(APP_WAKEUP_GetBootFlag() == TRUE)
  3860. {
  3861. printf("[debug ]%s %d\n",__FUNCTION__,__LINE__);
  3862. printf("REC Mode Chang to MID_REC_MODE_UNATTENDED\n\n\n");
  3863. MID_Recorder_SetRecMode(MID_REC_MODE_UNATTENDED);
  3864. }
  3865. #endif
  3866. iRet = APP_GUIOBJ_DVB_PvrRec_StartRecord();
  3867. if (iRet != PVR_MSG_SUCCESS)
  3868. {
  3869. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  3870. MID_Recorder_SetRecMode(MID_REC_MODE_MAX);
  3871. APP_GUIOBJ_DVB_PvrRec_RegUninitCallback();
  3872. #if (defined CONFIG_MOD_PACK_TT) || (defined CONFIG_MOD_PACK_SUB)
  3873. if (TTOrSubModLoad(TRUE) == TRUE)
  3874. {
  3875. #ifdef CONFIG_MOD_PACK_TT
  3876. al_uint8 *pref_iso639 = al_null;
  3877. /**< get digital TTX language index from EEPROM */
  3878. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  3879. ITEM_OFFSET(APP_SETTING_Feature_t, DigitalTTLang),
  3880. sizeof(g_stFeatureData.DigitalTTLang),&(g_stFeatureData.DigitalTTLang));
  3881. pref_iso639 = APP_Language_GetISO639ByIndx(g_stFeatureData.DigitalTTLang, APP_DATA_LANG_TYPE_TELETEXT);
  3882. if(pref_iso639 == al_null)
  3883. {
  3884. pref_iso639 = APP_Language_GetISO639_2ByIndx(g_stFeatureData.DigitalTTLang, APP_DATA_LANG_TYPE_TELETEXT);
  3885. }
  3886. AL_TTX_Start(AL_TTX_SOURCE_TYPE_DIGITAL, pref_iso639);
  3887. #endif
  3888. }
  3889. #endif
  3890. #ifdef CONFIG_SUPPORT_MHEG5
  3891. if (APP_Area_SupportDtg())
  3892. {
  3893. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB | OSD2CTRLMDL_MH5);
  3894. }
  3895. else
  3896. {
  3897. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  3898. }
  3899. #else
  3900. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  3901. #endif
  3902. return SP_ERR_FAILURE;
  3903. }
  3904. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  3905. {
  3906. #ifdef Subtitle_Freeze
  3907. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE))
  3908. {
  3909. AL_Subtitle_SetFreeze(FALSE);
  3910. }
  3911. #endif
  3912. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  3913. MID_PlaybackStreamResume(1);
  3914. g_PauseState = FALSE;
  3915. }
  3916. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_INIT);
  3917. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, 0);
  3918. #ifdef SUPPORT_FREE_RECORD_TIME
  3919. if (APP_GUIOBJ_DVB_PvrRec_GetTimerRecord() == FALSE)
  3920. {
  3921. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  3922. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  3923. AL_SCH_details_t sch_detail;
  3924. al_uint32 CurTimeInSec = 0;
  3925. AL_Time_GetCurTimeInSecs(&CurTimeInSec);
  3926. memset(&sch_detail, 0, sizeof(AL_SCH_details_t));
  3927. sch_detail.sch_event = AL_SCH_TYPE_SINGLE | AL_SCH_TYPE_PRG_EXPIRE_SCH;
  3928. sch_detail.sch_snooze = 0;
  3929. sch_detail.sch_time = CurTimeInSec + g_stFeatureData.FreeRecordTime*60; //for mantis 0156382
  3930. sch_detail.sch_user_para = 0;
  3931. PVR_DEBF("event_end_time_insec = %d\n", sch_detail.sch_time);
  3932. PVR_DEBF("current time = %d\n", CurTimeInSec);
  3933. AL_SCH_ScheduleEvent(&sch_detail, &stoprec_id, al_null);
  3934. APP_GUIOBJ_DVB_PvrRec_SetDurationTime(g_stFeatureData.FreeRecordTime*60);
  3935. }
  3936. #endif
  3937. }
  3938. else if (MID_REC_MODE_TIMESHIFT_AFTER_REC == eRecMode)
  3939. {
  3940. MID_Recorder_SetRecMode(MID_REC_MODE_TIMESHIFT_AFTER_REC);
  3941. iRet = APP_GUIOBJ_DVB_PvrRec_StartRecord();
  3942. if (iRet != PVR_MSG_SUCCESS)
  3943. {
  3944. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  3945. MID_Recorder_SetRecMode(MID_REC_MODE_MAX);
  3946. APP_GUIOBJ_DVB_PvrRec_RegUninitCallback();
  3947. #ifdef CONFIG_SUPPORT_MHEG5
  3948. if (APP_Area_SupportDtg())
  3949. {
  3950. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB | OSD2CTRLMDL_MH5);
  3951. }
  3952. else
  3953. {
  3954. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  3955. }
  3956. #else
  3957. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  3958. #endif
  3959. return SP_ERR_FAILURE;
  3960. }
  3961. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  3962. {
  3963. #ifdef Subtitle_Freeze
  3964. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE))
  3965. {
  3966. AL_Subtitle_SetFreeze(FALSE);
  3967. }
  3968. #endif
  3969. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  3970. MID_PlaybackStreamResume(1);
  3971. g_PauseState = FALSE;
  3972. }
  3973. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_INIT);
  3974. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  3975. {
  3976. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  3977. }
  3978. #ifdef SUPPORT_TEAC_TIMESHIFT_CTRL
  3979. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,
  3980. DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERPAUSE);
  3981. #else
  3982. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,
  3983. DVB_GUIOBJ_PVR_PLAYINFO, 0);
  3984. #endif
  3985. }
  3986. else if (MID_REC_MODE_AUTO == eRecMode)
  3987. {
  3988. MID_Recorder_SetRecMode(MID_REC_MODE_AUTO);
  3989. iRet = APP_GUIOBJ_DVB_PvrRec_StartRecord();
  3990. if (iRet != PVR_MSG_SUCCESS)
  3991. {
  3992. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  3993. MID_Recorder_SetRecMode(MID_REC_MODE_MAX);
  3994. APP_GUIOBJ_DVB_PvrRec_RegUninitCallback();
  3995. #ifdef CONFIG_SUPPORT_MHEG5
  3996. if (APP_Area_SupportDtg())
  3997. {
  3998. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB | OSD2CTRLMDL_MH5);
  3999. }
  4000. else
  4001. {
  4002. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  4003. }
  4004. #else
  4005. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  4006. #endif
  4007. return SP_ERR_FAILURE;
  4008. }
  4009. else
  4010. {
  4011. _DVBApp_ShowPopup(DVB_APP_POP_MSG_AUTOTIMESHIFT_INIT);
  4012. }
  4013. }
  4014. #ifdef SUPPORT_LED_FLASH
  4015. APP_LED_Flash_Timer_Set(LED_FLASH_TYPE_RECODER, LED_FLASH_TIMER_RECODER);
  4016. #endif
  4017. return SP_SUCCESS;
  4018. }
  4019. INT32 DVBApp_StopRecord(void)
  4020. {
  4021. AL_SCH_sched_id_t StopId= AL_SCH_INVALID_ID;
  4022. AL_SCH_sched_id_t DurId= AL_SCH_INVALID_ID;
  4023. StopId = DVBAPP_Pvr_GetStopTimer_id();
  4024. if (StopId != AL_SCH_INVALID_ID)
  4025. {
  4026. //UnSchedule stop timer
  4027. AL_SCH_UnScheduleEvent(&StopId);
  4028. DVBApp_Pvr_SetStopTimer_id();
  4029. }
  4030. DurId = APP_GUIOBJ_DVB_PvrRecDurationTime_GetDurationID();
  4031. if (DurId != AL_SCH_INVALID_ID)
  4032. {
  4033. //UnSchedule duration timer
  4034. AL_SCH_UnScheduleEvent(&DurId);
  4035. APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurationID();
  4036. }
  4037. /* //need modify kai.wang
  4038. extern INT32 APP_GUIOBJ_DVB_TimerList_GetRecordingPR(AL_PR_details_t* details, int* PROffset);
  4039. extern AL_Return_t APP_GUIOBJ_DVB_TimerList_DeleteRecordingPR(int Param);
  4040. int iOffset = 0;
  4041. if (APP_GUIOBJ_DVB_TimerList_GetRecordingPR(NULL, &iOffset) == AL_SUCCESS)
  4042. {
  4043. APP_GUIOBJ_DVB_TimerList_DeleteRecordingPR(iOffset);
  4044. #ifdef SUB_CUSTOMER_Tianle
  4045. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC))
  4046. {
  4047. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC,
  4048. APP_GLOBAL_EVENT_REFRESH_DATA, 0);
  4049. }
  4050. #else
  4051. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST))
  4052. {
  4053. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST,
  4054. APP_GLOBAL_EVENT_REFRESH_DATA, 0);
  4055. }
  4056. #endif
  4057. }
  4058. */
  4059. #ifdef SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD
  4060. if ((DVBAPP_Pvr_GetRECPlayFlag())
  4061. && (MID_REC_MODE_MANUAL == MID_Recorder_GetRecMode()))
  4062. {
  4063. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  4064. {
  4065. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  4066. }
  4067. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  4068. {
  4069. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  4070. }
  4071. APP_GUIOBJ_DVB_PvrPlayInfo_StopTimeshift();
  4072. }
  4073. #endif
  4074. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  4075. {
  4076. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  4077. }
  4078. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  4079. {
  4080. APP_GUIOBJ_DVB_PvrRec_StopRecord();
  4081. }
  4082. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  4083. {
  4084. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC);
  4085. }
  4086. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE))
  4087. {
  4088. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE);
  4089. }
  4090. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME))
  4091. {
  4092. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME);
  4093. }
  4094. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  4095. //check for standby recorder for the case stop rec unnormally
  4096. //sent to man app to call APP_WAKEUP_CompleteNotify();
  4097. MAINAPP_SendGlobalEvent(APP_GLOGAL_EVENT_PVR_TIEMRREC_CHECKSTANDBY, AL_POWER_STATE_OFF);
  4098. #endif
  4099. #ifdef SUPPORT_LED_FLASH
  4100. APP_LED_Flash_Timer_Set(LED_FLASH_TYPE_RECODER, 0);
  4101. #endif
  4102. APP_GUIOBJ_DVB_PvrRecInfo_SetDiskFull(FALSE);
  4103. int u8MidRecState;
  4104. al_uint8 u8AutoTimeShift;
  4105. u8MidRecState = MID_RecorderState();
  4106. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  4107. ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift),
  4108. sizeof(g_stFeatureData.AutoTimeShift), &(g_stFeatureData.AutoTimeShift));
  4109. u8AutoTimeShift = g_stFeatureData.AutoTimeShift;
  4110. if (APP_PVR_TIMESHIFT_AUTO == u8AutoTimeShift && u8MidRecState == MID_REC_STATUS_STOP)
  4111. {
  4112. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  4113. }
  4114. #if (defined CONFIG_MOD_PACK_TT) || (defined CONFIG_MOD_PACK_SUB)
  4115. if (TTOrSubModLoad(TRUE) == TRUE)
  4116. {
  4117. #ifdef CONFIG_MOD_PACK_TT
  4118. al_uint8 *pref_iso639 = al_null;
  4119. /**< get digital TTX language index from EEPROM */
  4120. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  4121. ITEM_OFFSET(APP_SETTING_Feature_t, DigitalTTLang),
  4122. sizeof(g_stFeatureData.DigitalTTLang),&(g_stFeatureData.DigitalTTLang));
  4123. pref_iso639 = APP_Language_GetISO639ByIndx(g_stFeatureData.DigitalTTLang, APP_DATA_LANG_TYPE_TELETEXT);
  4124. if(pref_iso639 == al_null)
  4125. {
  4126. pref_iso639 = APP_Language_GetISO639_2ByIndx(g_stFeatureData.DigitalTTLang, APP_DATA_LANG_TYPE_TELETEXT);
  4127. }
  4128. AL_TTX_Start(AL_TTX_SOURCE_TYPE_DIGITAL, pref_iso639);
  4129. #endif
  4130. }
  4131. #endif
  4132. #ifdef CONFIG_SUPPORT_MHEG5
  4133. if (APP_Area_SupportDtg())
  4134. {
  4135. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB | OSD2CTRLMDL_MH5);
  4136. }
  4137. else
  4138. {
  4139. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  4140. }
  4141. #else
  4142. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  4143. #endif
  4144. #ifdef SUPPORT_CLEAN_EX_DESCRIPTOR
  4145. AL_Event_ReceiveExDescriptor();
  4146. #elif defined SUPPORT_CLEAN_EPG
  4147. AL_Event_ReceiveEPG();
  4148. #endif
  4149. return SP_SUCCESS;
  4150. }
  4151. INT32 DVBApp_StopTimeshift(Boolean bIsStopRec)
  4152. {
  4153. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  4154. {
  4155. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  4156. }
  4157. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  4158. {
  4159. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  4160. }
  4161. APP_GUIOBJ_DVB_PvrPlayInfo_StopTimeshift();
  4162. if (bIsStopRec)
  4163. {
  4164. #ifdef SUPPORT_LED_FLASH
  4165. APP_LED_Flash_Timer_Set(LED_FLASH_TYPE_RECODER, 0);
  4166. #endif
  4167. char szPtName[20];
  4168. int sdDefPtIdx = 0;
  4169. if (MID_REC_FS_OK != MID_RecorderGetDefaultPartition(&sdDefPtIdx))
  4170. {
  4171. return SP_ERR_FAILURE;
  4172. }
  4173. MID_PartitionList_GetMountName(sdDefPtIdx, szPtName);
  4174. MID_RecorderStop();
  4175. MID_RecorderSetProgHandle(0);
  4176. MID_Recorder_SetRecMode(MID_REC_MODE_MAX);
  4177. MID_RecorderDeleteTSPLFiles(); //delete TSPL buffer when Timeshift without Timeshift to Record enabled
  4178. MID_Recorder_DeleteTShistIfExist(szPtName);
  4179. }
  4180. return SP_SUCCESS;
  4181. }
  4182. static UINT8 DVBApp_CheakFocusPopOnlyForRECicon(void)
  4183. {
  4184. //For the problem: REC icon can not show when there are only some pops focused under REC
  4185. UINT8 Flag = 0;
  4186. INT32 iFocusedIndex = 0;
  4187. if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  4188. {
  4189. return Flag;
  4190. }
  4191. if (DVB_GUIOBJ_POPMSG == iFocusedIndex)
  4192. {
  4193. if(DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL)
  4194. ||DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL)
  4195. ||DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_TEMPSERVICE)
  4196. ||DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_TEMPSERVICE_SERVICE_NOT_RUNNING)
  4197. ||DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SCRAMBLED)
  4198. ||DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE)
  4199. ||DVBApp_IsPopupExist(PLAYBACK_POPUP_PWD_LOCKED))
  4200. {
  4201. Flag = 1;
  4202. }
  4203. }
  4204. return Flag;
  4205. }
  4206. static INT32 _DVBApp_Recorder_PauseResume(void)
  4207. {
  4208. int iFocusedIndex;
  4209. if (MID_RecorderState() == MID_REC_STATUS_PAUSE)
  4210. {
  4211. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  4212. {
  4213. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC);
  4214. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  4215. }
  4216. else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  4217. {
  4218. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  4219. }
  4220. else if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex)
  4221. || DVBApp_CheakFocusPopOnlyForRECicon())
  4222. {
  4223. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  4224. }
  4225. }
  4226. if (MID_RecorderState() == MID_REC_STATUS_START)
  4227. {
  4228. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE))
  4229. {
  4230. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE);
  4231. if (MID_REC_MODE_MANUAL == MID_Recorder_GetRecMode())
  4232. {
  4233. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, 0);
  4234. #ifdef SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD
  4235. if(DVBAPP_Pvr_GetRECPlayFlag())
  4236. {
  4237. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERNORMAL);
  4238. }
  4239. #endif
  4240. }
  4241. }
  4242. }
  4243. return SP_SUCCESS;
  4244. }
  4245. void DVBApp_SetPVRSwitchSRC(Boolean Switch)
  4246. {
  4247. g_bPVRSwitchSource = Switch;
  4248. }
  4249. Boolean DVBApp_GetPVRSwitchSRC(void)
  4250. {
  4251. return g_bPVRSwitchSource;
  4252. }
  4253. void DVBApp_SetTVRadioSwap(Boolean IsSwap)
  4254. {
  4255. g_bTvRadioSwap = IsSwap;
  4256. }
  4257. Boolean DVBApp_GetTVRadioSwap(void)
  4258. {
  4259. return g_bTvRadioSwap;
  4260. }
  4261. AL_RecHandle_t DVBApp_GetSCHProgHandle(void)
  4262. {
  4263. return g_stDetails.rem_details.handle;
  4264. }
  4265. UINT32 DVBApp_GetTimerRECStartTime(void)
  4266. {
  4267. return g_stDetails.start_local_time_secs;
  4268. }
  4269. UINT32 DVBApp_GetReminderTime2Show(void)
  4270. {
  4271. al_uint32 CurTimeInSec = 0;
  4272. AL_Time_GetCurTimeInSecs(&CurTimeInSec);
  4273. if (g_stDetails.start_local_time_secs > CurTimeInSec)
  4274. {
  4275. return (g_stDetails.start_local_time_secs-CurTimeInSec);
  4276. }
  4277. else
  4278. {
  4279. return 1;//show 1 sec
  4280. }
  4281. }
  4282. UINT32 DVBApp_PVRRec_SetTimerCancle(void)
  4283. {
  4284. AL_PR_details_t stDetails;
  4285. if (g_stDetails.snooze_time_secs == 0)
  4286. {
  4287. AL_PR_Delete(g_dReminderId);
  4288. }
  4289. else
  4290. {
  4291. memset(&stDetails, 0x0, sizeof(AL_PR_details_t));
  4292. memcpy(&stDetails, &g_stDetails, sizeof(AL_PR_details_t));
  4293. stDetails.start_local_time_secs = stDetails.start_local_time_secs +
  4294. stDetails.snooze_time_secs;
  4295. stDetails.rem_details.event_end_time_insec = stDetails.rem_details.event_end_time_insec +
  4296. stDetails.snooze_time_secs;
  4297. if (AL_PR_Modify(&stDetails, g_dReminderId) != AL_SUCCESS)
  4298. {
  4299. dvb_printf("\n[%s]reschedule the reminder fail\n",__FUNCTION__);
  4300. return SP_ERR_FAILURE;
  4301. }
  4302. }
  4303. return SP_SUCCESS;
  4304. }
  4305. void DVBApp_SetRemType(AL_PR_type_t remtype)
  4306. {
  4307. g_remtype = remtype;
  4308. }
  4309. AL_PR_type_t DVBApp_GetRemType(void)
  4310. {
  4311. return g_remtype;
  4312. }
  4313. void _DVBApp_PVR_UpdateState(void)
  4314. {
  4315. UINT8 u8AutoTimeShift;
  4316. UINT8 u8MidRecState;
  4317. INT32 I32DefPartition;
  4318. u8MidRecState = MID_RecorderState();
  4319. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  4320. ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift),
  4321. sizeof(g_stFeatureData.AutoTimeShift), &(g_stFeatureData.AutoTimeShift));
  4322. u8AutoTimeShift = g_stFeatureData.AutoTimeShift;
  4323. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  4324. #if defined (CONFIG_SUPPORT_USB_UPGRADE) || defined (CONFIG_SUPPORT_OTA_UPGRADE)
  4325. if (Mid_CmnUpgradeIsUpgradeing()== TRUE)
  4326. {
  4327. if ( MID_RecorderIsCurRecording() == DRV_SUCCESS)
  4328. {
  4329. dvb_printf("[debug]%s %d\n",__FUNCTION__,__LINE__);
  4330. dvb_printf("System is upgradeing........\n\n\n");
  4331. DVBApp_StopTimeshift(TRUE);
  4332. }
  4333. if (u8AutoTimeShift == APP_PVR_TIMESHIFT_AUTO)
  4334. {
  4335. dvb_printf("[debug]%s %d\n",__FUNCTION__,__LINE__);
  4336. dvb_printf("System is upgradeing........\n\n\n");
  4337. u8AutoTimeShift = APP_PVR_TIMESHIFT_OFF;
  4338. }
  4339. }
  4340. if((g_dCurPopup== POPMSG_CONFIRM_ERASE_WHOLE_FLASH)
  4341. #ifdef CONFIG_SUPPORT_USB_AUTO_UPGRADE
  4342. || (g_dCurPopup == POPMSG_CONFIRM_START_AUTO_UPGRADE)
  4343. #endif
  4344. )
  4345. {
  4346. if (u8AutoTimeShift == APP_PVR_TIMESHIFT_AUTO)
  4347. {
  4348. dvb_printf("[debug]%s %d\n",__FUNCTION__,__LINE__);
  4349. dvb_printf("confirm if upgrade........\n\n\n");
  4350. u8AutoTimeShift = APP_PVR_TIMESHIFT_OFF;
  4351. }
  4352. }
  4353. #endif
  4354. if ((g_u8BGTimeshiftStart > 0)
  4355. && (APP_PVR_TIMESHIFT_AUTO == u8AutoTimeShift)
  4356. && (u8MidRecState == MID_REC_STATUS_STOP)
  4357. )
  4358. {
  4359. if (--g_u8BGTimeshiftStart == 0)
  4360. {
  4361. if ((MID_RecorderGetDefaultPartition(&I32DefPartition) != MID_REC_FS_OK)
  4362. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  4363. {
  4364. g_u8BGTimeshiftStart = PVR_BGTIMESHIFT_START_INTERVAL;
  4365. }
  4366. else
  4367. {
  4368. UINT8 u8ProgLockState = FALSE;
  4369. u8ProgLockState = APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL);
  4370. if ((u8ProgLockState == MID_PLAYBK_PROG_STATE_LOCKED)
  4371. ||(u8ProgLockState == MID_PLAYBK_PROG_STATE_AUDIO_VIDEO_SCRAMBLED)
  4372. ||(u8ProgLockState == MID_PLAYBK_PROG_STATE_ONLY_VIDEO_SCRAMBLED)
  4373. ||(u8ProgLockState == MID_PLAYBK_PROG_STATE_ONLY_AUDIO_SCRAMBLED)
  4374. ||(u8ProgLockState == MID_PLAYBK_PROG_STATE_TEMP_SERVICE)
  4375. ||(u8ProgLockState == MID_PLAYBK_PROG_STATE_NOT_RUNNING)
  4376. || (MID_TSPLParser_GetThreadState() == TRUE)
  4377. || (DVBApp_CheckServiceNotAvailable() == TRUE)
  4378. )
  4379. {
  4380. g_u8BGTimeshiftStart = PVR_BGTIMESHIFT_START_INTERVAL;
  4381. }
  4382. else
  4383. {
  4384. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  4385. {
  4386. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  4387. }
  4388. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  4389. {
  4390. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO);
  4391. }
  4392. PVR_DEBF("[%s: %d] ============start BG timeshift!!! \n", __FUNCTION__, __LINE__);
  4393. //DVBApp_ResetPopup_Channel();
  4394. if (DVBApp_StartRecord(MID_REC_MODE_AUTO) == SP_ERR_FAILURE)
  4395. {
  4396. g_u8BGTimeshiftStart = PVR_BGTIMESHIFT_START_INTERVAL;
  4397. }
  4398. }
  4399. }
  4400. }
  4401. }
  4402. if (u8MidRecState != MID_REC_STATUS_STOP)
  4403. {
  4404. int iFocusedIndex;
  4405. AL_RecHandle_t hRecProg;
  4406. AL_RecHandle_t hCurProg;
  4407. AL_DB_EDBType_t DBType = AL_DBTYPE_MAX;
  4408. UINT8 u8MIDRecMode;
  4409. APP_Database_GetCurrentDBType(APP_SOURCE_DTV, &DBType);
  4410. hCurProg = APP_DVB_Playback_GetCurrentProgHandle(DBType, AL_RECTYPE_DVBTV | AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA);
  4411. hRecProg = MID_RecorderGetProgHandle();
  4412. u8MIDRecMode = MID_Recorder_GetRecMode();
  4413. if ((hCurProg != hRecProg || (APP_IsScan_Running()== TRUE))&& ( MID_RecorderIsCurRecording() == DRV_SUCCESS))
  4414. {
  4415. PVR_DEBF("\n\n\n[%s: %d]============== program/TS change!!\n\n\n", __FUNCTION__, __LINE__);
  4416. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  4417. {
  4418. DVBApp_StopRecord();
  4419. }
  4420. else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode) ||
  4421. (MID_REC_MODE_AUTO == u8MIDRecMode))
  4422. {
  4423. DVBApp_StopTimeshift(FALSE);
  4424. if (APP_PVR_TIMESHIFT_AUTO == u8AutoTimeShift)
  4425. {
  4426. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  4427. }
  4428. }
  4429. return;
  4430. }
  4431. // deal with PAUSE/REC/TIMESHIFT menu flow
  4432. if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex)
  4433. || DVBApp_CheakFocusPopOnlyForRECicon()) //reshow PVR menu
  4434. {
  4435. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  4436. {
  4437. return;
  4438. }
  4439. if (MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode)
  4440. {
  4441. if ((u8MidRecState == MID_REC_STATUS_PAUSE) &&
  4442. (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)))
  4443. {
  4444. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  4445. }
  4446. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  4447. {
  4448. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  4449. {
  4450. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  4451. }
  4452. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, 0);
  4453. }
  4454. else if ((APP_GUIOBJ_DVB_PvrPlayInfo_ExitTimeMenu() == FALSE)
  4455. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO)))
  4456. {
  4457. APP_GUIOBJ_DVB_PvrPlayInfo_CreatTimemenu();
  4458. }
  4459. }
  4460. else if ((MID_REC_MODE_AUTO == u8MIDRecMode) &&
  4461. (PVR_STATE_STOP != APP_GUIOBJ_DVB_PvrPlayInfo_GetRecState()))
  4462. {
  4463. if ((u8MidRecState == MID_REC_STATUS_PAUSE) &&
  4464. (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)))
  4465. {
  4466. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  4467. }
  4468. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  4469. {
  4470. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  4471. {
  4472. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  4473. }
  4474. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, 0);
  4475. }
  4476. else if ((APP_GUIOBJ_DVB_PvrPlayInfo_ExitTimeMenu() == FALSE)
  4477. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO)))
  4478. {
  4479. APP_GUIOBJ_DVB_PvrPlayInfo_CreatTimemenu();
  4480. }
  4481. }
  4482. else if ((MID_REC_MODE_MANUAL == u8MIDRecMode) &&
  4483. (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) &&
  4484. (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)))
  4485. {
  4486. if (u8MidRecState == MID_REC_STATUS_START)
  4487. {
  4488. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, 0);
  4489. #ifdef SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD
  4490. if((DVBAPP_Pvr_GetRECPlayFlag())
  4491. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  4492. {
  4493. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERNORMAL);
  4494. }
  4495. #endif
  4496. }
  4497. else if (u8MidRecState == MID_REC_STATUS_PAUSE)
  4498. {
  4499. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  4500. #ifdef SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD
  4501. if((DVBAPP_Pvr_GetRECPlayFlag())
  4502. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  4503. {
  4504. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERNORMAL);
  4505. }
  4506. #endif
  4507. }
  4508. }
  4509. }
  4510. if ((MID_REC_STATUS_PAUSE == u8MidRecState)
  4511. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)))//show pause menu
  4512. {
  4513. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  4514. {
  4515. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC);
  4516. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  4517. }
  4518. else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  4519. {
  4520. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  4521. }
  4522. else if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex)
  4523. || DVBApp_CheakFocusPopOnlyForRECicon())
  4524. {
  4525. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  4526. }
  4527. }
  4528. else if (MID_REC_STATUS_START == u8MidRecState) //hide pause menu
  4529. {
  4530. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE))
  4531. {
  4532. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE);
  4533. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  4534. {
  4535. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, 0);
  4536. #ifdef SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD
  4537. if((DVBAPP_Pvr_GetRECPlayFlag())
  4538. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  4539. {
  4540. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERNORMAL);
  4541. }
  4542. #endif
  4543. }
  4544. }
  4545. }
  4546. }
  4547. else //rec stop, destroy all pvr menu
  4548. {
  4549. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  4550. {
  4551. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC);
  4552. }
  4553. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE))
  4554. {
  4555. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE);
  4556. }
  4557. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  4558. {
  4559. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  4560. }
  4561. }
  4562. }
  4563. #ifdef SUPPORT_PVR_REMINDER_CONFIRM_SPEC
  4564. static void _DVBApp_StopRECForTimerConfirmDone(UINT32 dParam)
  4565. {
  4566. AL_DB_EDBType_t DBType_ret = AL_DBTYPE_DVB_T;
  4567. AL_DB_EDBType_t DBType_Current = AL_DBTYPE_DVB_T;
  4568. AL_DB_ERecordType_t RecType = AL_RECTYPE_DVBTV;
  4569. AL_RecHandle_t CurrentProgHandle;
  4570. al_uint32 u32CurrentTime = 0;
  4571. UINT8 u8MIDRecMode = MID_Recorder_GetRecMode();
  4572. /* get timer program */
  4573. AL_DB_GetRecordType(g_stDetails.rem_details.handle, &DBType_ret, &RecType);
  4574. /* get current program handele */
  4575. AL_Setting_Reload(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL);
  4576. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  4577. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  4578. if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_C)
  4579. {
  4580. DBType_Current = AL_DBTYPE_DVB_C;
  4581. }
  4582. else if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_T)
  4583. {
  4584. DBType_Current = AL_DBTYPE_DVB_T;
  4585. }
  4586. else if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_S)
  4587. {
  4588. DBType_Current = AL_DBTYPE_DVB_S;
  4589. }
  4590. CurrentProgHandle = APP_DVB_Playback_GetCurrentProgHandle(DBType_Current, AL_RECTYPE_DVBTV | AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA);
  4591. if ((dParam == POPMSG_CONFIRM_STOP_REC_FOR_TIMER_REC)
  4592. ||(dParam == POPMSG_CONFIRM_STOP_TSHIFT_FOR_TIMER_REC))
  4593. {
  4594. AL_Time_GetCurTimeInSecs(&u32CurrentTime);
  4595. dvb_printf("================ current time %d\n",u32CurrentTime);
  4596. dvb_printf("================ rec end time %d\n", g_stDetails.rem_details.event_end_time_insec);
  4597. if (u32CurrentTime >
  4598. (g_stDetails.rem_details.event_end_time_insec-10))
  4599. {
  4600. /* if the left time is less than 10Sec. not to respond the confirm */
  4601. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMER_OUT_OF_DATE);
  4602. return;
  4603. }
  4604. }
  4605. /* zap prog */
  4606. if (g_stDetails.rem_details.handle != CurrentProgHandle)
  4607. {
  4608. PVR_DEBF("handle ==== %d\n", g_stDetails.rem_details.handle);
  4609. PVR_DEBF(" CurrentProgHandle ==== %d\n", CurrentProgHandle);
  4610. g_ProgHandleB4Rec = g_stDetails.rem_details.handle;
  4611. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  4612. {
  4613. if (u8MIDRecMode == MID_REC_MODE_MANUAL)
  4614. DVBApp_StopRecord();
  4615. else
  4616. DVBApp_StopTimeshift(TRUE);
  4617. }
  4618. _DVBApp_CloseAllMenu();
  4619. #if defined(CONFIG_DVB_SYSTEM) || defined(CONFIG_AUS_DVB_SYSTEM)
  4620. APP_RFType_en eRFType = APP_RF_TYPE_DVB_T;
  4621. if (DBType_Current != g_stDetails.db_type)
  4622. {
  4623. if (g_stDetails.db_type == AL_DBTYPE_DVB_T)
  4624. {
  4625. eRFType = APP_RF_TYPE_DVB_T;
  4626. }
  4627. else if (g_stDetails.db_type == AL_DBTYPE_DVB_C)
  4628. {
  4629. eRFType = APP_RF_TYPE_DVB_C;
  4630. }
  4631. else if (g_stDetails.db_type == AL_DBTYPE_DVB_S)
  4632. {
  4633. eRFType = APP_RF_TYPE_DVB_S;
  4634. }
  4635. APP_GUIOBJ_Channel_SetRFTypeWithHdl(eRFType,
  4636. g_stDetails.rem_details.handle);
  4637. }
  4638. else
  4639. #endif
  4640. {
  4641. _DVBApp_Zapping(RecType, g_stDetails.rem_details.handle, FALSE, 0, TRUE);
  4642. }
  4643. }
  4644. if (g_stDetails.rem_type == AL_PR_EVT_REM)
  4645. {
  4646. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  4647. {
  4648. if (u8MIDRecMode == MID_REC_MODE_MANUAL)
  4649. DVBApp_StopRecord();
  4650. else
  4651. DVBApp_StopTimeshift(TRUE);
  4652. }
  4653. DVBApp_ResetPopup_Channel();
  4654. _DVBApp_CloseAllMenu();
  4655. _APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurTime();
  4656. if (DVBApp_StartRecord(MID_REC_MODE_MANUAL) != SP_SUCCESS)
  4657. {
  4658. APP_GUIOBJ_DVB_PvrRec_SetTimerRecord(FALSE);
  4659. DVBApp_SetTVRadioSwap(FALSE);
  4660. g_ProgHandleB4Rec = 0;
  4661. return;
  4662. }
  4663. //APP_GUIOBJ_DVB_PvrRecDurationTime_SetDurTime(g_stDetails.rem_details.event_end_time_insec);
  4664. }
  4665. if ((dParam == POPMSG_CONFIRM_STOP_REC_FOR_REMINDER)
  4666. ||(dParam == POPMSG_CONFIRM_STOP_TSHIFT_FOR_REMINDER))
  4667. {
  4668. DVBApp_SetTVRadioSwap(FALSE);
  4669. g_ProgHandleB4Rec = 0;
  4670. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  4671. if(APP_WAKEUP_GetBootFlag() == TRUE)
  4672. {
  4673. APP_WAKEUP_RealPowerUp();
  4674. }
  4675. #endif
  4676. }
  4677. }
  4678. #endif
  4679. Boolean g_PVR_TimerRecStart = FALSE;
  4680. Boolean DVBApp_PVRDEMUX_GetTimerRECFLag(void)
  4681. {
  4682. return g_PVR_TimerRecStart;
  4683. }
  4684. void DVBApp_PVRDEMUX_SetTimerRECFLag(Boolean bFlag)
  4685. {
  4686. g_PVR_TimerRecStart = bFlag;
  4687. }
  4688. void DVBApp_PVRDEMUX_StartTimerREC(void)
  4689. {
  4690. if (DVBApp_StartRecord(MID_REC_MODE_MANUAL) != SP_SUCCESS)
  4691. {
  4692. APP_GUIOBJ_DVB_PvrRec_SetTimerRecord(FALSE);
  4693. DVBApp_SetTVRadioSwap(FALSE);
  4694. g_ProgHandleB4Rec = 0;
  4695. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  4696. //sent to man app to call APP_WAKEUP_CompleteNotify()
  4697. MAINAPP_SendGlobalEvent(APP_GLOGAL_EVENT_PVR_TIEMRREC_CHECKSTANDBY, AL_POWER_STATE_OFF);
  4698. #endif
  4699. //need modify kai.wang
  4700. /*extern INT32 APP_GUIOBJ_DVB_TimerList_GetRecordingPR(AL_PR_details_t* details, int* PROffset);
  4701. extern AL_Return_t APP_GUIOBJ_DVB_TimerList_DeleteRecordingPR(int Param);
  4702. int iOffset = 0;
  4703. if (APP_GUIOBJ_DVB_TimerList_GetRecordingPR(NULL, &iOffset) == AL_SUCCESS)
  4704. {
  4705. APP_GUIOBJ_DVB_TimerList_DeleteRecordingPR(iOffset);
  4706. }*/
  4707. }
  4708. return ;
  4709. }
  4710. #endif
  4711. #ifdef TEAC_BLUE_KEY_FUNCTION
  4712. APP_Panel_PowerSequenceType_e _DVB_GetPanelControlType(void)
  4713. {
  4714. return g_eAppPanelOnOff;
  4715. }
  4716. void _DVB_SetPanelControlType(APP_Panel_PowerSequenceType_e eType)
  4717. {
  4718. g_eAppPanelOnOff = eType;
  4719. }
  4720. #endif
  4721. static INT32 _DVBApp_OnCreate(void **ppPrivateData)
  4722. {
  4723. dvb_printf(" %s is called.\n", __FUNCTION__);
  4724. _DVBApp_DTV_main_program(NULL);
  4725. DvbPrivateData_t *pDvbPrivateData = (DvbPrivateData_t *) GL_MemAlloc(sizeof(DvbPrivateData_t));
  4726. if(pDvbPrivateData != NULL)
  4727. {
  4728. memset(pDvbPrivateData, 0x00, sizeof(DvbPrivateData_t));
  4729. pDvbPrivateData->dUserData = 0;
  4730. }
  4731. (*ppPrivateData) = (void *)pDvbPrivateData;
  4732. stDvbInst.bAppState = SYSTEM_IDLE;
  4733. return 0;
  4734. }
  4735. static INT32 _DVBApp_OnDestroy(void **ppPrivateData)
  4736. {
  4737. dvb_printf(" %s is called.\n", __FUNCTION__);
  4738. SYSAPP_GOBJ_FinalizeGUIObject(SYS_APP_DVB);
  4739. GL_MemFree((*ppPrivateData));
  4740. (*ppPrivateData) = NULL;
  4741. return 0;
  4742. }
  4743. static INT32 _DVBApp_OnRun(void *pPrivateData, UINT32 dParam)
  4744. {
  4745. dvb_printf(" %s is called.\n", __FUNCTION__);
  4746. #if 0 //set ttx codepage when open create ttx.
  4747. UINT32 u32DTVTTXZone = 0;
  4748. #endif
  4749. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO, 0,
  4750. sizeof(APP_SETTING_SystemInfo_t), &(g_stSysInfoData));
  4751. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  4752. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  4753. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_TVINFO, 0,
  4754. sizeof(APP_SETTING_TVInfo_t), &(g_stTVInfoData));
  4755. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, 0,
  4756. sizeof(APP_SETTING_Variational_t), &(g_stVariationalData));
  4757. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_MULTIMEDIA, 0,
  4758. sizeof(APP_SETTING_Multimedia_t), &(g_stMultiMediaData));
  4759. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0,
  4760. sizeof(APP_SETTING_Setup_t), &(g_stSetupData));
  4761. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  4762. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  4763. stDvbInst.bAppState = SYSTEM_RUNNING;
  4764. dvb_printf(" Dvbt state is %d.\n", stDvbInst.bAppState);
  4765. #ifdef CONFIG_ENABLE_UMF_MODULES
  4766. if (umf_checkModuleLoaded(UMFMOD_MEDIA))
  4767. {
  4768. MAINAPP_SendGlobalEvent(APP_GLOBAL_EVENT_FINALIZE_SYSAPP, SYS_APP_FILE_PLAYER);
  4769. }
  4770. #ifdef CONFIG_MOD_PACK_ATV
  4771. if (umf_checkModuleLoaded(UMFMOD_ATV))
  4772. {
  4773. MAINAPP_SendGlobalEvent(APP_GLOBAL_EVENT_FINALIZE_SYSAPP, SYS_APP_ATV);
  4774. }
  4775. #endif
  4776. #endif
  4777. if (dParam == 0)
  4778. {
  4779. #ifdef SHOW_LOGO_NOSIGNAL
  4780. // init show logo
  4781. #ifdef JPEG_LOGO
  4782. LOGO_Init();
  4783. extern char *pu32LMA;
  4784. extern unsigned int pu32LMASize;
  4785. LOGO_SetParam((const UINT8 *)pu32LMA, pu32LMASize);
  4786. //LOGO_SetShowPicLogoPlane(Logo_VPP_PLANE);
  4787. //LOGO_StartUp_Pic_Show_AlignOrigin(gpAL_PanelDisplayDesc->Size.wHorSize, gpAL_PanelDisplayDesc->Size.wVerSize);
  4788. #else
  4789. extern const unsigned char DVDTitle[];
  4790. extern const int DVDTitleSize;
  4791. LOGO_Init();
  4792. LOGO_SetParam(DVDTitle, DVDTitleSize);
  4793. #endif
  4794. #else
  4795. //mute screen to black or user define color
  4796. #endif
  4797. }
  4798. APP_GUIOBJ_PopMs_SetCloseFun(DVBApp_ClosePopup);
  4799. APP_GuiMgr_Set_Menu() ;
  4800. APP_GuiMgr_SwitchShareMenu(SYS_APP_DVB);
  4801. // AUDIF_Set_OutputMode(OUT_RFModeK3, 0);
  4802. // AUDIF_Set_OutputMode(OUT_CustomModeB_DigitalDialnormK1, 0x6464);
  4803. #ifdef SUPPORT_CONAX_CAS
  4804. //DVB_Conax_Init();
  4805. CONAX_MMI_CallbackInit();
  4806. #endif
  4807. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  4808. APP_DVB_GLOBAL_EVENT_DVB_ONRUN | PASS_TO_SYSAPP,TRUE);
  4809. #ifdef CONFIG_SUPPORT_DETECT_USBPLL
  4810. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0,
  4811. sizeof(APP_SETTING_FactoryUser_t), &(g_stFactoryUserData));
  4812. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MUTE))
  4813. {
  4814. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_MUTE, 0);
  4815. }
  4816. UINT8 u8USBPLL_Fail = 0;
  4817. Cmd_NVMRead(ENVMPurposeIDUSBPLLFailFlag, FALSE, sizeof(UINT8), &u8USBPLL_Fail);
  4818. if(u8USBPLL_Fail == TRUE)
  4819. {
  4820. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, APP_GUIOBJ_MUTE,
  4821. APP_INTRA_EVENT_SHOW_CLK_ERROR, 0);
  4822. }
  4823. #endif
  4824. dvb_printf(" %s is exit., time: %d\n", __FUNCTION__,GL_GetRtc32());
  4825. return 0;
  4826. }
  4827. static INT32 _DVBApp_OnTerminate(void *pPrivateData, UINT32 dParam)
  4828. {
  4829. dvb_printf(" %s is called., time: %d\n", __FUNCTION__,GL_GetRtc32());
  4830. #ifdef CONFIG_CI_SUPPORT
  4831. g_Audio_Scramble_Counter = 0;
  4832. g_VIP_FINISH_Flg = FALSE;
  4833. #endif
  4834. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_ALL);
  4835. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  4836. {
  4837. #ifdef Subtitle_Freeze
  4838. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE))
  4839. {
  4840. AL_Subtitle_SetFreeze(al_false);
  4841. }
  4842. #endif
  4843. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  4844. }
  4845. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MUTE))
  4846. {
  4847. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_MUTE);
  4848. }
  4849. SYSAPP_GOBJ_FinalizeGUIObject(SYS_APP_DVB);
  4850. g_u32OldPopup = PLAYBACK_POPUP_NONE;
  4851. #ifdef CONFIG_SUPPORT_PVR
  4852. MID_TSPLParser_UnInit();
  4853. #endif
  4854. APP_GuiMgr_UnInitDvbOSD2();
  4855. stDvbInst.bAppState = SYSTEM_IDLE;
  4856. #ifdef CONFIG_MOD_PACK_DTV
  4857. MAINAPP_SendGlobalEvent(APP_GLOBAL_EVENT_FINALIZE_SYSAPP, SYS_APP_DVB);
  4858. #endif
  4859. #ifdef CONFIG_MOD_PACK_DTV
  4860. MAINAPP_SendGlobalEvent(APP_GLOBAL_EVENT_FINALIZE_SYSAPP, SYS_APP_DVB);
  4861. #endif
  4862. dvb_printf(" %s is exit., time: %d\n", __FUNCTION__,GL_GetRtc32());
  4863. return 0;
  4864. }
  4865. static void _DVBApp_Process_Unmute(void)
  4866. {
  4867. UINT8 RegionIdx = 0;
  4868. ColorLUT_t stColorLUTValue;
  4869. APP_Source_Type_t eSourType = APP_SOURCE_MAX;
  4870. APP_StorageSource_Type_t eStorageSourType = APP_STORAGE_SOURCE_MAX;
  4871. if ((g_bMidHasUnmute == TRUE) && (bSetUnMuteFlag == TRUE))
  4872. {
  4873. if (g_SetPQFlag == FALSE)
  4874. {
  4875. g_SetPQFlag = TRUE;
  4876. /*set PQ param*/
  4877. AL_FLASH_GetColorLUTALL(&stColorLUTValue);
  4878. for(RegionIdx = 0; RegionIdx<APP_ColorLUT_NUM; RegionIdx++)
  4879. {
  4880. MID_TVFE_SetColorLUT7Range(RegionIdx,APP_Video_GetColorLUTSetting(LUT_FUN_MAKE,RegionIdx),
  4881. stColorLUTValue.n_PicMode_CoLUT_HueMin[RegionIdx],
  4882. stColorLUTValue.n_PicMode_CoLUT_HueMax[RegionIdx],
  4883. stColorLUTValue.n_PicMode_CoLUT_SatMin[RegionIdx],
  4884. stColorLUTValue.n_PicMode_CoLUT_SatMax[RegionIdx],
  4885. stColorLUTValue.n_PicMode_CoLUT_YMin[RegionIdx],
  4886. stColorLUTValue.n_PicMode_CoLUT_YMax[RegionIdx],
  4887. stColorLUTValue.n_PicMode_CoLUT_SmoothLevel[RegionIdx],
  4888. FALSE);
  4889. MID_TVFE_SetColorLUT7Axis(RegionIdx,
  4890. stColorLUTValue.n_PicMode_CoLUT_Enable[RegionIdx],
  4891. stColorLUTValue.n_PicMode_CoLUT_HueGain[RegionIdx],
  4892. stColorLUTValue.n_PicMode_CoLUT_SatGain[RegionIdx],
  4893. stColorLUTValue.n_PicMode_CoLUT_YGain[RegionIdx],
  4894. RegionIdx==(APP_ColorLUT_NUM - 1)? TRUE : FALSE);
  4895. }
  4896. // Dynamic contrast
  4897. DynamicContrast_t stDynamic;
  4898. AL_FLASH_GetDynamicContrastALL(&stDynamic);
  4899. int nLevel = stDynamic.n_PicMode_DynCon_DynamicContrastlevel;
  4900. MID_TVFE_SetPictureDynamicContrastEnable( nLevel ? 1 : 0);
  4901. MID_TVFE_SetPictureContrastLevel( stDynamic.n_PicMode_DynCon_ContrastLevel[nLevel] );
  4902. MID_TVFE_SetPictureChromaLevel( stDynamic.n_PicMode_DynCon_ChromaLevel[nLevel] );
  4903. MID_TVFE_SetPictureAlphaMode1( stDynamic.n_PicMode_DynCon_Alphamode1[nLevel] );
  4904. MID_TVFE_SetPictureAlphaMode2( stDynamic.n_PicMode_DynCon_Alphamode2[nLevel] );
  4905. MID_TVFE_SetPictureAlphaMode3( stDynamic.n_PicMode_DynCon_Alphamode3[nLevel] );
  4906. MID_TVFE_SetPictureAlphaMode4( stDynamic.n_PicMode_DynCon_Alphamode4[nLevel] );
  4907. MID_TVFE_SetPictureFleshToneLevel( stDynamic.n_PicMode_DynCon_FleshToneLevel );
  4908. APP_GUIOBJ_Source_GetCurrSource(&eSourType);
  4909. eStorageSourType = APP_Data_UserSetting_SourceTypeMappingToStorage(eSourType);
  4910. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0,
  4911. sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  4912. APP_Video_SetPictureMode(
  4913. g_stPictureData.stPictureModeSourceTab[eStorageSourType].PictureModeIndex);
  4914. //APP_Video_OSD_PQSet(APP_VIDEO_OSD_ITEM_BACKLIGHT, g_stPictureData.stPictureModeSourceTab[eStorageSourType].stUserTab.Backlight);
  4915. APP_Video_OSD_PQSet(APP_VIDEO_OSD_ITEM_COLORTEMP, g_stPictureData.stPictureModeSourceTab[eStorageSourType].ColorTempIndex);
  4916. APP_Video_OSD_PQSet(APP_VIDEO_OSD_ITEM_NR, g_stPictureData.NR);
  4917. }
  4918. DVBApp_CheckProgramType(TRUE);
  4919. bSetUnMuteFlag = FALSE;
  4920. }
  4921. }
  4922. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  4923. void DVBApp_DVBS_ConnectSignal(void)
  4924. {
  4925. dvb_printf("[%s %d]\n", __FUNCTION__, __LINE__);
  4926. Ant_TRANSPONDER_st TpInfo;
  4927. AL_MultiplexDetail_t stTPInfo;
  4928. AL_RecHandle_t hCurTpHdl = AL_DB_INVALIDHDL;
  4929. AL_RecHandle_t hCurServHdl = AL_DB_INVALIDHDL;
  4930. #ifdef CONFIG_DVB_SYSTEM_EXTEND_DVBS_AFC
  4931. FrontendCmd_t front;
  4932. INT32 tmpINT32=0;
  4933. front.cmd = FRONTEND_CMD_GET_LONG_CFO_SEARCH_MODE;
  4934. front.param = (void*)&tmpINT32;
  4935. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  4936. if(tmpINT32 == 1)
  4937. {
  4938. dvb_printf("[%s %d] return when long cfo search mode\n", __FUNCTION__, __LINE__);
  4939. return ;
  4940. }
  4941. #endif
  4942. hCurServHdl = APP_DVB_Playback_GetCurrentProgHandle(AL_DBTYPE_DVB_S, APP_DVB_Playback_GetCurrServiceType(AL_DBTYPE_DVB_S));
  4943. if (hCurServHdl != AL_DB_INVALIDHDL)
  4944. {
  4945. hCurTpHdl = hCurServHdl;
  4946. AL_DB_GetRecord(AL_DB_REQ_GETPARENT, AL_DBTYPE_DVB_S, AL_RECTYPE_DVBMULTIPLEX, &hCurTpHdl);
  4947. AL_DB_QueryDetail(hCurTpHdl, &stTPInfo);
  4948. memset(&TpInfo, 0, sizeof(TpInfo));
  4949. TpInfo.usFreq = MID_SatCtrl_GetIfFrequency(stTPInfo.stDVBSMultiplex.usFreqM&0xffff);
  4950. TpInfo.usSymRate = stTPInfo.stDVBSMultiplex.usSymRateK;
  4951. TpInfo.u8Polar = stTPInfo.stDVBSMultiplex.ucSkew;
  4952. TpInfo.u8TpType = stTPInfo.stDVBSMultiplex.ucTp_dvb_type;
  4953. APP_Dvbsx_ConnectFrontend(TpInfo);
  4954. }
  4955. }
  4956. #endif
  4957. static INT32 _DVBApp_OnTimerUpdate(void *pPrivateData)
  4958. {
  4959. UINT32 NoSignalTimer;
  4960. INT32 dFocusedIndex;
  4961. al_uint8 bMonitorState = al_false;
  4962. al_uint8 bSignalState = al_false;
  4963. APP_Source_Type_t eSourType = APP_SOURCE_MAX;
  4964. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  4965. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  4966. al_bool bHasValidServ = AL_DB_HasVisibleService(eNetType);
  4967. /*Delay the mute key sending to AMP*/
  4968. if((0 <= g_u32Mutekeydelaytime) && (g_u32Mutekeydelaytime < MUTE_KEY_INTERVAL))
  4969. {
  4970. g_u32Mutekeydelaytime++;
  4971. g_u32MuteIconHandle++;
  4972. }
  4973. /*Set timer to source translate state
  4974. avoid dvb app not received onrun message result in not clear the falg*/
  4975. if (APP_GUIOBJ_Source_GetSourceTransState())
  4976. {
  4977. g_u8SourceTrastTimer++;
  4978. if (g_u8SourceTrastTimer >= 3)//3*100ms
  4979. {
  4980. APP_GUIOBJ_Source_SetSourceTransState(FALSE);
  4981. g_u8SourceTrastTimer = 0;
  4982. }
  4983. }
  4984. /*Set timer to clear zapping state
  4985. avoid dvb app not received tuner locke or tuner unlock message result in not clear the flag*/
  4986. if (APP_GUIOBJ_DVB_Playback_GetZappingState())
  4987. {
  4988. g_u8ZappingTimer++;
  4989. if (g_u8ZappingTimer >= 2)//3*100ms
  4990. {
  4991. APP_GUIOBJ_DVB_Playback_SetZappingState(FALSE);
  4992. g_u8ZappingTimer = 0;
  4993. }
  4994. }
  4995. //Polling DSP to detect audio channel num change.
  4996. g_AdioChnPolTime++;
  4997. if (g_AdioChnPolTime >= 10)//10*100ms = 1s
  4998. {
  4999. APP_Audio_PollingAudioChnannelNum();
  5000. g_AdioChnPolTime = 0;
  5001. }
  5002. #ifdef CONFIG_TESTAUTOREBOOT
  5003. {
  5004. FW_mode_t FW_Module = FW_NORMAL_VIEW_MODE;
  5005. AL_FW_GetFWModule(&FW_Module);
  5006. /*don't enable autoreboot while searching channel and update*/
  5007. if (FW_Module == FW_CHAN_SRCH_MODE || FW_Module == FW_UPGRADE_MODE)
  5008. {
  5009. ir_autoreboot_disable();
  5010. }
  5011. }
  5012. #endif
  5013. #ifdef CONFIG_CI_SUPPORT
  5014. if (g_Audio_Scramble_Counter>0)
  5015. {
  5016. if (g_VIP_FINISH_Flg)//Mean video has been descramble.
  5017. {
  5018. g_VIP_FINISH_Flg = 0;
  5019. g_Audio_Scramble_Counter = 0;
  5020. }
  5021. else
  5022. {
  5023. g_Audio_Scramble_Counter--;
  5024. if (g_Audio_Scramble_Counter==0)
  5025. {
  5026. g_bNoSteamData = FALSE;
  5027. {
  5028. #ifdef CONFIG_SUPPORT_TTX
  5029. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  5030. {
  5031. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  5032. }
  5033. #endif
  5034. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_ALL);
  5035. }
  5036. #ifdef CONFIG_SUPPORT_PVR
  5037. UINT8 u8MidRecState;
  5038. u8MidRecState = MID_RecorderState();
  5039. if (u8MidRecState == MID_REC_STATUS_START)
  5040. {
  5041. MID_RecorderPauseResume();
  5042. }
  5043. _DVBApp_Recorder_PauseResume();
  5044. #endif
  5045. g_bScrambleFlag = PROG_STATUS_ONLY_VIDEO_SCRAMBLED;
  5046. DVBApp_CheckProgramType(TRUE);
  5047. }
  5048. }
  5049. }
  5050. else
  5051. {
  5052. if (g_VIP_FINISH_Flg==TRUE)
  5053. {
  5054. g_VIP_FINISH_Flg = 0;
  5055. }
  5056. }
  5057. #endif
  5058. #if defined(CELLO_cello) && defined(SUPPORT_HOMEMODE)
  5059. /*Cello spec: Home Mode Open*/
  5060. if(APP_GUIOBJ_AutoInstall_GetOpenHomeModeFlag())
  5061. {
  5062. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  5063. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  5064. if((g_stUserInfoData.AutoInstalledHomeMode)
  5065. &&(!g_stUserInfoData.AutoInstalled))
  5066. {
  5067. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  5068. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE))
  5069. #endif
  5070. {
  5071. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_GLOBAL_EVENT_OPEN_HOMEMODE|PASS_TO_SYSAPP, 0);
  5072. }
  5073. }
  5074. }
  5075. #endif
  5076. APP_GUIOBJ_Source_GetCurrSource(&eSourType);
  5077. if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &dFocusedIndex))
  5078. {
  5079. if (!APP_MenuMgr_Exist_Main_Menu())
  5080. {
  5081. _DVBApp_CheckPopupDisplay();
  5082. }
  5083. }
  5084. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_MONITOR, &bMonitorState);
  5085. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  5086. AL_RecHandle_t hTempHdl = AL_DB_INVALIDHDL;
  5087. MID_PlaybackGetCurProgHandle(al_null, &hTempHdl);
  5088. #ifdef PLAY_VIDEO_FOR_ALLSRV
  5089. DBPIDInfo_t stVideoPid;
  5090. memset(&stVideoPid,0xff,sizeof(DBPIDInfo_t));
  5091. AL_DB_QueryDetailFieldByName(hTempHdl, (al_uint8 *)"stVideoPid", (al_void *)&stVideoPid);
  5092. #endif
  5093. if (!bHasValidServ && (hTempHdl == AL_DB_INVALIDHDL))
  5094. {
  5095. g_bTempSerFlag = FALSE;
  5096. if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &dFocusedIndex))
  5097. {
  5098. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0,
  5099. sizeof(APP_SETTING_FactoryUser_t), &(g_stFactoryUserData));
  5100. if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_DATABASE_EMPTY) && !g_stFactoryUserData.n_FactSet_BurningMode)
  5101. {
  5102. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  5103. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  5104. DVBApp_ResetPopup_Channel();
  5105. _DVBApp_ShowPopup(DVB_APP_POP_MSG_DATABASE_EMPTY);
  5106. DVBApp_CheckProgramType(FALSE);
  5107. }
  5108. }
  5109. #ifdef CONFIG_TESTAUTOREBOOT
  5110. #ifdef CONFIG_AUTOREBOOT_NO_SIGNAL
  5111. ir_autoreboot_enable();
  5112. #endif
  5113. #endif
  5114. #ifdef CONFIG_SUPPORT_PVR
  5115. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  5116. #endif
  5117. {
  5118. return 0;
  5119. }
  5120. }
  5121. else if (bMonitorState == al_true)
  5122. {
  5123. if (bSignalState == AL_DVB_MONITOR_VALUE_FALSE)
  5124. {
  5125. g_bTempSerFlag = FALSE;
  5126. if(!(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO))||
  5127. !(APP_MenuMgr_Exist_Factory_Menu()))
  5128. {
  5129. g_u32NoSignalTimer ++;
  5130. g_u32NoSignalSleepTimer ++;
  5131. }
  5132. #ifdef CONFIG_SUPPORT_PVR
  5133. if(MID_TSPLParser_GetThreadState() == TRUE)
  5134. {
  5135. g_u32NoSignalSleepTimer = 0;
  5136. }
  5137. #endif
  5138. /*2.1.10 Input factory auto test mode close no signal standby function*/
  5139. #ifdef SUPPORT_FACTORY_AUTO_TEST
  5140. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  5141. {
  5142. g_u32NoSignalTimer = 0;
  5143. g_u32NoSignalSleepTimer = 0;
  5144. }
  5145. #endif
  5146. if (g_u32NoSignalSleepTimer == DVB_10_MINUTES)
  5147. {
  5148. g_u32NoSignalSleepTimer = 0;
  5149. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO) && (APP_GUIOBJ_SleepTimer_GetStandbyPopConflict() == FALSE))
  5150. {
  5151. APP_GUIOBJ_SleepTimer_SetStandbyPopConflict(TRUE);
  5152. }
  5153. #ifdef CONFIG_SUPPORT_NO_SIGNAL_STANDBY
  5154. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  5155. (APP_GLOBAL_EVENT_SLEEP_TIMER_INFO | PASS_TO_SYSAPP), APP_POWERDOWN_NO_SINGAL);
  5156. #endif
  5157. }
  5158. if (APP_RF_TYPE_DVB_S == g_stChannelData.TV_Connection)
  5159. {
  5160. NoSignalTimer = 45;
  5161. }
  5162. else
  5163. {
  5164. NoSignalTimer = 15;
  5165. }
  5166. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  5167. if ((eNetType == AL_DBTYPE_DVB_S) && AL_CS_IsStop())
  5168. {
  5169. static UINT8 noSignalCnt = 0;
  5170. noSignalCnt++;
  5171. if (noSignalCnt > 60)
  5172. {
  5173. DVBApp_DVBS_ConnectSignal();
  5174. noSignalCnt = 0;
  5175. }
  5176. }
  5177. #endif
  5178. if (g_u32NoSignalTimer >= NoSignalTimer)//15*100ms
  5179. {
  5180. if ((eSourType == APP_SOURCE_DTV)
  5181. || (eSourType == APP_SOURCE_RADIO))
  5182. {
  5183. #ifdef CONFIG_SUPPORT_PVR //if playing timeshift file not to mute video
  5184. UINT32 u32PEState = MID_TSPL_MODE_STOP;
  5185. if (MID_TSPLParser_GetPlayState(&u32PEState, NULL) == DRV_SUCCESS)
  5186. {
  5187. if (MID_TSPL_MODE_STOP == u32PEState)
  5188. {
  5189. if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL)
  5190. && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)
  5191. &&(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG)))
  5192. {
  5193. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  5194. APP_DVB_GLOBAL_EVENT_NO_SIGNAL, 0);
  5195. }
  5196. }
  5197. }
  5198. else
  5199. #endif
  5200. if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL))
  5201. {
  5202. #ifdef CONFIG_SUPPORT_PVR
  5203. if (MID_RecorderState() != MID_REC_STATUS_STOP)
  5204. {
  5205. PopmsgType_t eType = POPMSG_TYPE_NONE;
  5206. APP_GUIOBJ_PopMsg_GetMsgType(&eType);
  5207. if (eType != POPMSG_TYPE_CONFIRM)
  5208. {
  5209. //not to send no signal event to clear comfirm type popmsg
  5210. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  5211. APP_DVB_GLOBAL_EVENT_NO_SIGNAL, 0);
  5212. }
  5213. }
  5214. else
  5215. #endif
  5216. {
  5217. if(!(DVBApp_IsPopupExist(PLAYBACK_POPUP_PWD_LOCKED)))
  5218. {
  5219. #ifdef CONFIG_CIPLUS_SUPPORT
  5220. if( !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG) && !APP_CIPLUS_IsVirtualChannel(0) )
  5221. #else
  5222. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  5223. #endif
  5224. {
  5225. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  5226. APP_DVB_GLOBAL_EVENT_NO_SIGNAL, 0);
  5227. }
  5228. }
  5229. }
  5230. }
  5231. }
  5232. }
  5233. }
  5234. else
  5235. {
  5236. g_u32NoSignalTimer = 0;
  5237. MID_PlaybackProgState_t progstate = MID_PLAYBK_PROG_STATE_NORMAL;
  5238. progstate = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL);
  5239. #ifdef CONFIG_SUPPORT_PVR
  5240. if (g_bNoSteamData == TRUE
  5241. || progstate == MID_PLAYBK_PROG_STATE_TEMP_SERVICE
  5242. || progstate == MID_PLAYBK_PROG_STATE_NOT_RUNNING)
  5243. {
  5244. if ( MID_RecorderState()== MID_REC_STATUS_START )
  5245. {
  5246. if ((MID_TSPLParser_GetThreadState() != TRUE)
  5247. && (APP_GUIOBJ_DVB_PvrPlayInfo_GetTunerState() == FALSE))
  5248. {
  5249. //printf("pause\n\n\n");
  5250. MID_RecorderPauseResume();
  5251. _DVBApp_Recorder_PauseResume();
  5252. }
  5253. }
  5254. }
  5255. if (!(g_bNoSteamData == TRUE
  5256. || progstate == MID_PLAYBK_PROG_STATE_TEMP_SERVICE
  5257. || progstate == MID_PLAYBK_PROG_STATE_NOT_RUNNING
  5258. || progstate == MID_PLAYBK_PROG_STATE_LOCKED)
  5259. && g_bIsPlaykey == FALSE)
  5260. {
  5261. if ( MID_RecorderState()== MID_REC_STATUS_PAUSE)
  5262. {
  5263. //printf("start \n\n\n");
  5264. MID_RecorderPauseResume();
  5265. _DVBApp_Recorder_PauseResume();
  5266. }
  5267. }
  5268. #endif
  5269. if (DVBApp_CheckServiceNotAvailable() == TRUE)
  5270. {
  5271. //set video and audio mute for temp service
  5272. if (g_bTempSerFlag == FALSE)
  5273. {
  5274. DVBApp_CheckProgramType(FALSE);
  5275. g_bTempSerFlag = TRUE;
  5276. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB);
  5277. }
  5278. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL))
  5279. {
  5280. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  5281. }
  5282. if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &dFocusedIndex))
  5283. {
  5284. #ifdef SUPPORT_DISABLE_H264
  5285. if (progstate == MID_PLAYBK_PROG_STATE_VIDEO_MPEG4)
  5286. {
  5287. if (!DVBApp_IsPopupExist(DVB_APP_POP_MSG_VIDEO_NOT_SUPPORT))
  5288. {
  5289. _DVBApp_ShowPopup(DVB_APP_POP_MSG_VIDEO_NOT_SUPPORT);
  5290. }
  5291. }
  5292. else if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE))
  5293. {
  5294. if(APP_Get_DTVHiddenScanState() != TRUE)
  5295. {
  5296. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SERVICE_NOT_AVAILABLE);
  5297. }
  5298. }
  5299. #else
  5300. if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE))
  5301. {
  5302. if(APP_Get_DTVHiddenScanState() != TRUE)
  5303. {
  5304. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SERVICE_NOT_AVAILABLE);
  5305. }
  5306. }
  5307. #endif
  5308. }
  5309. }
  5310. else
  5311. {
  5312. if (g_bNoSteamData == TRUE
  5313. || progstate == MID_PLAYBK_PROG_STATE_TEMP_SERVICE
  5314. || progstate == MID_PLAYBK_PROG_STATE_NOT_RUNNING)
  5315. {
  5316. AL_DB_EDBType_t eDBType = APP_DVB_Playback_GetCurrentNetType();
  5317. AL_RecHandle_t hCurrPrgHdl = AL_DB_INVALIDHDL;
  5318. MID_PlaybackProgState_t eProgState = MID_PLAYBK_PROG_STATE_NORMAL;
  5319. hCurrPrgHdl = APP_DVB_Playback_GetCurrentProgHandle(eDBType, (AL_RECTYPE_DVBTV |AL_RECTYPE_DVBRADIO));
  5320. if ((hCurrPrgHdl == AL_DB_INVALIDHDL) && (bSignalState != AL_DVB_MONITOR_VALUE_INVAILED))
  5321. {
  5322. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB);
  5323. }
  5324. eProgState = APP_DVB_Playback_GetProgStateByHandle(eDBType, hCurrPrgHdl);
  5325. if ((eProgState != MID_PLAYBK_PROG_STATE_LOCKED) && (bSignalState != AL_DVB_MONITOR_VALUE_INVAILED))
  5326. {
  5327. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB);
  5328. }
  5329. }
  5330. g_bTempSerFlag = FALSE;
  5331. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE))
  5332. {
  5333. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE, UI_EVENT_NULL);
  5334. }
  5335. #ifdef PLAY_VIDEO_FOR_ALLSRV
  5336. if (DVBApp_CheckHasVideo() == FALSE)
  5337. #else
  5338. if (eServiceType == AL_RECTYPE_DVBRADIO)
  5339. #endif
  5340. {
  5341. if ((!APP_GUIOBJ_DVB_Playback_GetShowLogoState())
  5342. && (progstate == MID_PLAYBK_PROG_STATE_NORMAL)
  5343. #ifdef CONFIG_SUPPORT_PVR
  5344. && !(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  5345. #endif
  5346. )
  5347. {
  5348. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  5349. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  5350. }
  5351. }
  5352. if (SYSTEM_APP_NO_FOCUSED_GUIOBJ != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &dFocusedIndex))
  5353. {
  5354. if (g_u8PopScrambleMsgTimer!=0)
  5355. {
  5356. g_u8PopScrambleMsgTimer = 0;
  5357. }
  5358. }
  5359. if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &dFocusedIndex))
  5360. {
  5361. if (progstate == MID_PLAYBK_PROG_STATE_LOCKED)
  5362. {
  5363. if (!DVBApp_IsPopupExist(DVB_APP_POP_MSG_CHECKPWD)
  5364. #ifdef CONFIG_SUPPORT_PVR
  5365. && (APP_GUIOBJ_DVB_PvrRec_IsShowPopTime(g_stDetails.start_local_time_secs) == FALSE)
  5366. #endif
  5367. )
  5368. {
  5369. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  5370. }
  5371. }
  5372. else if (progstate == MID_PLAYBK_PROG_STATE_AUDIO_VIDEO_SCRAMBLED \
  5373. ||progstate == MID_PLAYBK_PROG_STATE_ONLY_VIDEO_SCRAMBLED \
  5374. || (progstate == MID_PLAYBK_PROG_STATE_ONLY_AUDIO_SCRAMBLED &&
  5375. #ifdef PLAY_VIDEO_FOR_ALLSRV
  5376. (((stVideoPid.usDataPID)&0x1fff) == 0x1fff)
  5377. #else
  5378. eServiceType == AL_RECTYPE_DVBRADIO
  5379. #endif
  5380. ))
  5381. {
  5382. g_u8PopScrambleMsgTimer ++;
  5383. if (!DVBApp_IsPopupExist(DVB_APP_POP_MSG_SCRAMBLE)&&g_u8PopScrambleMsgTimer>8)
  5384. {
  5385. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL))
  5386. {
  5387. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  5388. }
  5389. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL))
  5390. {
  5391. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  5392. }
  5393. printf("\n#####Pop Scramble MSG Menu,F=%s,L=%d g_u8PopScrambleMsgTimer=%d######\n",__FUNCTION__,__LINE__,g_u8PopScrambleMsgTimer);
  5394. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SCRAMBLE);
  5395. g_u8PopScrambleMsgTimer = 0;
  5396. }
  5397. }
  5398. else if ((eServiceType == AL_RECTYPE_DVBRADIO)
  5399. #ifdef PLAY_VIDEO_FOR_ALLSRV
  5400. && (((stVideoPid.usDataPID)&0x1fff) == 0x1fff)
  5401. #endif
  5402. )
  5403. {
  5404. #ifdef CONFIG_SUPPORT_MHEG5
  5405. Boolean testA;
  5406. Boolean testB;
  5407. Boolean testC;
  5408. Boolean testD;
  5409. testA = !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5);
  5410. testB = (APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED);
  5411. testC = (APP_DVB_Mheg5_GetMheg5DisplayStatus() == FALSE);
  5412. testD = APP_Area_SupportDtg();
  5413. //dvb_printf("a %d, b %d, c %d, d %d\n",testA, testB, testC, testD);
  5414. if (testA || (testB && testC && testD))
  5415. #endif
  5416. {
  5417. if(g_bScrambleFlag != PROG_STATUS_SCRAMBLE_UNKNOW && (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL)))
  5418. {
  5419. _DVBApp_ShowPopup(DVB_APP_POP_MSG_RADIO_CHANNEL);
  5420. }
  5421. else if (((MID_PlaybackGetActiveVidHandle() == INVALID_HANDLE) && (MID_PlaybackGetActiveAudHandle(al_false) == INVALID_HANDLE))
  5422. #ifdef DEMUX_CONTROL_TEST
  5423. && (MID_PlaybackGetState() == TRUE)
  5424. #endif
  5425. && (!DVBApp_IsPopupExist(DVB_APP_POP_MSG_TEMPSERVICE)))
  5426. {
  5427. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TEMPSERVICE);
  5428. }
  5429. }
  5430. }
  5431. }
  5432. #ifdef CONFIG_SUPPORT_PVR
  5433. else if(((dFocusedIndex == DVB_GUIOBJ_PVR_PLAYINFO) || (dFocusedIndex == DVB_GUIOBJ_PVRREC_INFO))
  5434. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  5435. && (eServiceType == AL_RECTYPE_DVBRADIO)
  5436. #ifdef PLAY_VIDEO_FOR_ALLSRV
  5437. && ((stVideoPid.usDataPID&0x1fff) == 0x1fff)
  5438. #endif
  5439. )
  5440. {
  5441. #ifdef CONFIG_SUPPORT_MHEG5
  5442. if ((!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  5443. || ((APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED)
  5444. && (APP_DVB_Mheg5_GetMheg5DisplayStatus() == FALSE)
  5445. && (APP_Area_SupportDtg())))
  5446. #endif
  5447. {
  5448. if(g_bScrambleFlag != PROG_STATUS_SCRAMBLE_UNKNOW && (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL)))
  5449. {
  5450. _DVBApp_ShowPopup(DVB_APP_POP_MSG_RADIO_CHANNEL);
  5451. }
  5452. else if (((MID_PlaybackGetActiveVidHandle() == INVALID_HANDLE) && (MID_PlaybackGetActiveAudHandle(al_false) == INVALID_HANDLE))
  5453. #ifdef DEMUX_CONTROL_TEST
  5454. && (MID_PlaybackGetState() == TRUE)
  5455. #endif
  5456. && (!DVBApp_IsPopupExist(DVB_APP_POP_MSG_TEMPSERVICE)))
  5457. {
  5458. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TEMPSERVICE);
  5459. }
  5460. }
  5461. }
  5462. else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)
  5463. && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG)
  5464. && (progstate == MID_PLAYBK_PROG_STATE_LOCKED)
  5465. && APP_GUIOBJ_DVB_PvrRec_IsShowPopTime(g_stDetails.start_local_time_secs)==FALSE
  5466. )
  5467. {
  5468. if (!DVBApp_IsPopupExist(DVB_APP_POP_MSG_CHECKPWD))
  5469. {
  5470. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  5471. }
  5472. }
  5473. #endif
  5474. #ifdef CONFIG_SUPPORT_MHEG5
  5475. Boolean testA = (APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED);
  5476. Boolean testB = (APP_DVB_Mheg5_GetMheg5DisplayStatus() == TRUE);
  5477. Boolean testC = (APP_Area_SupportDtg());
  5478. Boolean testD = (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL));
  5479. #ifdef CONFIG_SUPPORT_PVR
  5480. Boolean testE = (APP_GUIOBJ_DVB_PvrPlayInfo_GetRecState() == PVR_STATE_STOP);
  5481. Boolean testF = (MID_Recorder_GetRecMode() != MID_REC_MODE_MANUAL);
  5482. #endif
  5483. //dvb_printf("a %d, b %d, c %d, d %d, e %d, f %d\n",testA,testB,testC,testD,testE, testF);
  5484. if (testA
  5485. && testB
  5486. && testC
  5487. && testD
  5488. #ifdef CONFIG_SUPPORT_PVR
  5489. && testE
  5490. && testF
  5491. #endif
  5492. )
  5493. {
  5494. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  5495. }
  5496. #endif
  5497. #ifdef CONFIG_SUPPORT_MHEG5
  5498. if(progstate == MID_PLAYBK_PROG_STATE_TEMP_SERVICE)
  5499. {
  5500. if((APP_Area_SupportDtg())&&(APP_DVB_Mheg5_GetMheg5DisplayStatus() != TRUE))
  5501. {
  5502. if(!DVBApp_IsPopupExist(DVB_APP_POP_MSG_TEMPSERVICE))
  5503. {
  5504. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TEMPSERVICE);
  5505. }
  5506. }
  5507. }
  5508. #endif
  5509. }
  5510. }
  5511. }
  5512. /*Unmute dispose*/
  5513. if (bSetUnMuteFlag)
  5514. {
  5515. #if 1
  5516. if (g_bMidHasUnmute)
  5517. {
  5518. _DVBApp_Process_Unmute();
  5519. }
  5520. else
  5521. {
  5522. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  5523. AL_DB_ERecordType_t RecordType = AL_RECTYPE_DVBTV;
  5524. UINT32 total_prog = 0;
  5525. RecordType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  5526. AL_DB_GetRecordsTotalNum(eNetType, RecordType, &total_prog);
  5527. if (total_prog > 0)
  5528. {
  5529. INT16 i16ProgState = MID_PLAYBK_PROG_STATE_NORMAL;
  5530. i16ProgState = APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL);
  5531. if ((i16ProgState != MID_PLAYBK_PROG_STATE_NORMAL) &&
  5532. (i16ProgState != MID_PLAYBK_PROG_STATE_VIDEO_AVC))
  5533. {
  5534. DVBApp_CheckProgramType(FALSE);
  5535. bSetUnMuteFlag = FALSE;
  5536. }
  5537. }
  5538. }
  5539. #else //zhongbaoxing moved to _DVBApp_Process_Unmute for mantis 143820 @20110801
  5540. g_u8SetUnMuteTimer ++;
  5541. if (g_u8SetUnMuteTimer == unMute_Check_timer)
  5542. {
  5543. if (g_SetPQFlag == FALSE)
  5544. {
  5545. g_SetPQFlag = TRUE;
  5546. /*set PQ param*/
  5547. eStorageSourType = APP_Data_UserSetting_SourceTypeMappingToStorage(eSourType);
  5548. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0,
  5549. sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  5550. APP_Video_SetPictureMode(
  5551. g_stPictureData.stPictureModeSourceTab[eStorageSourType].PictureModeIndex);
  5552. APP_Video_OSD_PQSet(APP_VIDEO_OSD_ITEM_COLORTEMP, g_stPictureData.stPictureModeSourceTab[eStorageSourType].ColorTempIndex);
  5553. APP_Video_OSD_PQSet(APP_VIDEO_OSD_ITEM_NR, g_stPictureData.NR);
  5554. }
  5555. DVBApp_CheckProgramType(TRUE);
  5556. g_u8SetUnMuteTimer = 0;
  5557. bSetUnMuteFlag = FALSE;
  5558. if (APP_Area_SupportDtg())
  5559. {
  5560. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB | OSD2CTRLMDL_MH5);
  5561. }
  5562. else
  5563. {
  5564. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  5565. }
  5566. }
  5567. #endif
  5568. }
  5569. #ifdef CONFIG_SUPPORT_MHEG5
  5570. INT32 fStatus = 0;
  5571. Boolean fVideoState = FALSE;
  5572. MHEG5APP_GetMh5Status(&fStatus);
  5573. MHEG5APP_GetMh5VideoStatus(&fVideoState);
  5574. if ((fStatus & MHEG5APP_STATUS_MID_ON) == MHEG5APP_STATUS_MID_ON)
  5575. {
  5576. if (fVideoState == FALSE)
  5577. {
  5578. if (APP_GetPlaybackPauseState() == TRUE)
  5579. {
  5580. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  5581. {
  5582. #ifdef Subtitle_Freeze
  5583. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE))
  5584. {
  5585. AL_Subtitle_SetFreeze(FALSE);
  5586. }
  5587. #endif
  5588. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  5589. }
  5590. MID_PlaybackStreamResume(1);
  5591. APP_SetPlaybackPauseState(FALSE);
  5592. }
  5593. }
  5594. }
  5595. #endif
  5596. #ifdef CONFIG_SUPPORT_PVR
  5597. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  5598. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  5599. #if defined(SUPPORT_HOTEL_MODE_PVR_FUNCTION_CONTROL)
  5600. if((!g_stFactoryHotelData.HotelModeOnOff)||(g_stFactoryHotelData.PVRFunction))
  5601. #elif defined(SUPPORT_PVR_ONOFF)
  5602. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0,
  5603. sizeof(APP_SETTING_Setup_t), &(g_stSetupData));
  5604. if(g_stSetupData.PVROnOff)
  5605. #endif
  5606. {
  5607. _DVBApp_PVR_UpdateState();
  5608. }
  5609. #endif
  5610. #ifdef CONFIG_SUPPORT_SSU_UPGRADE
  5611. unsigned int SsuEchWakeTimer;
  5612. static al_uint32 timer;
  5613. //dvb_printf("autoupgrade_sate %d\n",autoupgrade_sate);
  5614. if (autoupgrade_sate== AU_GetTime)
  5615. {
  5616. al_uint32 CurTimeInSec = 0;
  5617. AL_Time_GetCurTimeInSecs(&CurTimeInSec);
  5618. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  5619. ITEM_OFFSET(APP_SETTING_UserInfo_t, OTAWakeupTime),
  5620. sizeof(g_stUserInfoData.OTAWakeupTime),&SsuEchWakeTimer);
  5621. SsuEchWakeTimer -= CurTimeInSec;
  5622. timer = SsuEchWakeTimer*10;
  5623. if (timer > 0)
  5624. {
  5625. autoupgrade_sate = AU_TimeCom;
  5626. }
  5627. else
  5628. {
  5629. autoupgrade_sate = AU_MAX;
  5630. }
  5631. }
  5632. if (autoupgrade_sate == AU_TimeCom)
  5633. {
  5634. timer--;
  5635. //dvb_printf("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%d\n",timer);
  5636. if (timer <= 0)
  5637. {
  5638. autoupgrade_sate = AU_GoToUpgrade;
  5639. }
  5640. }
  5641. if (autoupgrade_sate == AU_GoToUpgrade)
  5642. {
  5643. //dvb_printf(" go to auto grade\n");
  5644. autoupgrade_sate = AU_MAX;
  5645. UINT16 u16ONID_SSU = 0xffff;
  5646. UINT16 u16TSID_SSU = 0xffff;
  5647. MID_OTA_GetOtaMonThreadData(OTA_DATA_TS_ONID,(UINT8 *)&u16ONID_SSU);
  5648. MID_OTA_GetOtaMonThreadData(OTA_DATA_TS_TSID,(UINT8 *)&u16TSID_SSU);
  5649. if ((u16ONID_SSU == 0xffff && u16TSID_SSU == 0xffff)
  5650. ||(u16ONID_SSU == 0x0 && u16TSID_SSU == 0x0))
  5651. {
  5652. //dvb_printf("[don't find linkage descriptor, so try again]%s %d\n",__FUNCTION__,__LINE__);
  5653. autoupgrade_sate = AU_GoToUpgrade;
  5654. }
  5655. else
  5656. {
  5657. APP_GUIOBJ_DVB_OTAPrompt_StartOTAMon();
  5658. }
  5659. }
  5660. #endif
  5661. #if defined (CONFIG_SUPPORT_TTX ) && defined(CONFIG_SUPPORT_TTX_DISP_FOR_AUS)
  5662. {
  5663. UINT8 ttxtimer = APP_GetTTXTimer();
  5664. if(ttxtimer > 0)
  5665. {
  5666. ttxtimer--;
  5667. APP_SetTTXTimer(ttxtimer);
  5668. if(ttxtimer == 0)//time is 8s
  5669. {
  5670. AL_TTX_Reset();
  5671. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  5672. {
  5673. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  5674. }
  5675. }
  5676. }
  5677. }
  5678. #endif
  5679. return 0;
  5680. }
  5681. #if defined(CONFIG_CIPLUS_SUPPORT) && defined(CONFIG_SUPPORT_MHEG5)
  5682. void DVBApp_ApplyAppMMIDisplay(void)
  5683. {
  5684. APP_SETTING_UserInfo_t stUserInfoData;
  5685. E_APPMMI_SMG eSMG;
  5686. E_APPMMI_SSM eSSM;
  5687. /* Get subtitle setting */
  5688. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  5689. sizeof(APP_SETTING_UserInfo_t), &(stUserInfoData));
  5690. /* Get SSM and SMG */
  5691. eSSM = MID_DTVCI_GetAppMMISSM();
  5692. eSMG = MID_DTVMHEG_GetAppMMISMG();
  5693. if( MID_DTVCI_GetAppMMIStatus() && SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5) )
  5694. {
  5695. dvb_printf("%s AppMMI is 'on' Subtitle is '%s' SSM_%s SMG_%s\n",__FUNCTION__,
  5696. stUserInfoData.Subtitle ? "on":"off",
  5697. eSSM == APPMMI_SSM_NONE ? "NONE/2":
  5698. eSSM == APPMMI_SSM_0 ? "0":"1",
  5699. eSMG == APPMMI_SMG_NONE ? "NONE" :
  5700. eSMG == APPMMI_SMG_TRUE ? "TRUE" : "FALSE"
  5701. );
  5702. if( eSSM == APPMMI_SSM_0 )
  5703. {
  5704. dvb_printf("subtitle osd off\n");
  5705. mid_sub_dtv_show(0);
  5706. dvb_printf("mheg osd on\n");
  5707. MHEG5OSD_DisplayEnable(TRUE);
  5708. }
  5709. else if( eSSM == APPMMI_SSM_1 )
  5710. {
  5711. if( stUserInfoData.Subtitle )
  5712. {
  5713. dvb_printf("mheg off\n");
  5714. DVBApp_DataApplicationSwitch(
  5715. OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_MH5);
  5716. dvb_printf("subtitle on\n");
  5717. DVBApp_DataApplicationSwitch(
  5718. OSD2CTRLMDL_ENABLE|OSD2CTRLMDL_SUB);
  5719. }
  5720. }
  5721. else // eSSM is APPMMI_SSM_2 or APPMMI_SSM_NONE
  5722. {
  5723. if( eSMG == APPMMI_SMG_TRUE )
  5724. {
  5725. if( stUserInfoData.Subtitle )
  5726. {
  5727. dvb_printf("mheg osd off\n");
  5728. MHEG5OSD_DisplayEnable(FALSE);
  5729. dvb_printf("subtitle on\n");
  5730. DVBApp_DataApplicationSwitch(
  5731. OSD2CTRLMDL_ENABLE|OSD2CTRLMDL_SUB);
  5732. dvb_printf("subtitle osd on\n");
  5733. mid_sub_dtv_show(1);
  5734. }
  5735. else
  5736. {
  5737. dvb_printf("mheg osd on\n");
  5738. MHEG5OSD_DisplayEnable(TRUE);
  5739. }
  5740. }
  5741. else // eSMG == APPMMI_SMG_FALSE or APPMMI_SMG_NONE
  5742. {
  5743. if( stUserInfoData.Subtitle )
  5744. {
  5745. dvb_printf("mheg osd on\n");
  5746. MHEG5OSD_DisplayEnable(TRUE);
  5747. dvb_printf("subtitle osd off\n");
  5748. mid_sub_dtv_show(0);
  5749. }
  5750. else
  5751. {
  5752. dvb_printf("mheg osd on\n");
  5753. MHEG5OSD_DisplayEnable(TRUE);
  5754. }
  5755. }
  5756. }
  5757. }
  5758. else
  5759. {
  5760. dvb_printf("%s AppMMI is 'off'\n",__FUNCTION__);
  5761. }
  5762. }
  5763. #endif
  5764. #ifdef SUPPORT_ATS
  5765. static UINT8 uGetDemodinfoOn = 0;
  5766. GL_Task_t ATSTask;
  5767. static UINT8 ATSTaskExistFlag = 0;
  5768. void _APP_ATS_Get_Demodinfo_ThreadControl(void *pData)
  5769. {
  5770. ATSTaskExistFlag = 1;
  5771. bool bNeedPrint = TRUE;
  5772. while(uGetDemodinfoOn==1)
  5773. {
  5774. GL_TaskSleep(500);
  5775. UINT32 u16SNR=0;
  5776. FrontendCmd_t front;
  5777. front.cmd = FRONTEND_CMD_GET_SIGNAL_SNR;
  5778. front.param = &u16SNR;
  5779. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  5780. u16SNR = u16SNR/10;
  5781. UINT32 u16BER=0;
  5782. front.cmd = FRONTEND_CMD_GET_SIGNAL_BER;
  5783. front.param = &u16BER;
  5784. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  5785. if(u16BER != 0xFFFF)
  5786. u16BER = u16BER/10;
  5787. UINT32 u16PER=0;
  5788. front.cmd = FRONTEND_CMD_GET_SIGNAL_PER;
  5789. front.param = &u16PER;
  5790. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  5791. UINT32 u16UBC=0;
  5792. front.cmd = FRONTEND_CMD_GET_SIGNAL_UBC;
  5793. front.param = &u16UBC;
  5794. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  5795. UINT32 u16SSI=0;
  5796. front.cmd = FRONTEND_CMD_GET_SIGNAL_STRENGTH;
  5797. front.param = &u16SSI;
  5798. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  5799. UINT32 u16SQI=0;
  5800. front.cmd = FRONTEND_CMD_GET_SIGNAL_QUALITY;
  5801. front.param = &u16SQI;
  5802. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  5803. UINT32 IsDemodLock=0;
  5804. front.cmd = FRONTEND_CMD_GET_DEMOD_LOCK_STATUS;
  5805. front.param = (void *)&IsDemodLock;
  5806. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  5807. //ATS:lock xx SNR xxx BER xxxxx PER xxxxx UBC xxxxx SSI xxx SQI xxx
  5808. if(bNeedPrint == TRUE)
  5809. {
  5810. char cLen[80];
  5811. sprintf(cLen, "ATS:lock %2d SNR %3d BER %5d PER %5d UBC %5d SSI %3d SQI %3d\n", IsDemodLock,u16SNR,u16BER,u16PER,u16UBC,u16SSI,u16SQI);
  5812. con_echo_sfu(80, (UINT8 *)cLen);
  5813. }
  5814. if(IsDemodLock == 0)
  5815. bNeedPrint = FALSE;
  5816. else
  5817. bNeedPrint = TRUE;
  5818. }
  5819. if(uGetDemodinfoOn == 0)
  5820. {
  5821. ATSTaskExistFlag = 0;
  5822. GL_TaskSelfDelete();
  5823. }
  5824. }
  5825. UINT32 APP_ATS_Get_Demodinfo_On()
  5826. {
  5827. if(ATSTaskExistFlag == 0)
  5828. {
  5829. GL_Status_t ret = GL_FAILURE;
  5830. ret = GL_TaskCreate("ATSGetDemodinfo", _APP_ATS_Get_Demodinfo_ThreadControl, NULL, 4, 32, FALSE, &ATSTask);
  5831. if (ret != GL_SUCCESS)
  5832. {
  5833. return AL_FAILURE;
  5834. }
  5835. ret = GL_TaskActivate(ATSTask);
  5836. if (ret != GL_SUCCESS)
  5837. {
  5838. return AL_FAILURE;
  5839. }
  5840. }
  5841. return AL_SUCCESS;
  5842. }
  5843. #endif
  5844. #ifdef CONFIG_CIPLUS_SUPPORT
  5845. void DVBApp_ShowInstallProfilePopMenu(void)
  5846. {
  5847. PopmsgParam_t stPopup;
  5848. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  5849. {
  5850. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  5851. }
  5852. memset(&stPopup,0x0,sizeof(PopmsgParam_t));
  5853. stPopup.eType = POPMSG_TYPE_PROMPT;
  5854. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  5855. stPopup.u16ReturnType = GUI_OBJECT_NO_POST_ACTION;
  5856. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_CI_INSTALL_PROFILE;
  5857. DVBApp_SchedulePopup(stPopup);
  5858. return;
  5859. }
  5860. void DVBApp_ShowInstallProfilePop(BOOLEAN show)
  5861. {
  5862. if (show)
  5863. {
  5864. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_POPMSG_START_INSTALL_NIT | PASS_TO_SYSAPP, 0);
  5865. }
  5866. else
  5867. {
  5868. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_POPMSG_END_INSTALL_NIT | PASS_TO_SYSAPP, 0);
  5869. }
  5870. }
  5871. #endif
  5872. static INT32 _DVBApp_OnGlobalEvent(void *pPrivateData, UINT32 dMessage, UINT32 dParam)
  5873. {
  5874. al_bool bHasValidServ = al_false;
  5875. al_uint8 bSignalState = al_false;
  5876. PopmsgParam_t stPopup;
  5877. UINT32 dGuiObj = DVB_GUIOBJ_EPG;
  5878. UINT8 u8HotelMode;
  5879. UINT8 u8MainUIEn;
  5880. AL_DB_ERecordType_t NextServiceType = AL_RECTYPE_DVBTV;
  5881. UINT32 u32TotalNum = 0;
  5882. AL_RecHandle_t hProg;
  5883. AL_RecHandle_t hCurProg;
  5884. #ifdef CONFIG_SUPPORT_MHEG5
  5885. int sdRet;
  5886. #endif
  5887. UINT32 dAppIndex = 0;
  5888. MID_DISP_MUTE_ST eMuteSt = MID_DISP_MUTE;
  5889. #ifdef SUPPORT_SOURCE_DVBTCS
  5890. UINT32 RFtype = APP_RF_TYPE_DVB_MAX;
  5891. UINT32 StringId = 0;
  5892. #endif
  5893. #ifdef CONFIG_SUPPORT_3D_EN
  5894. APP_Video_Image3DAction_t ePicture3DState = APP_VIDEO_IMAGE_3D_DISABLED;
  5895. #endif
  5896. APP_Source_Type_t eSourType = APP_SOURCE_MAX;
  5897. APP_Source_Type_t eMidSourType = APP_SOURCE_MAX;
  5898. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  5899. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  5900. AL_RecHandle_t hCurrProgHandle = AL_DB_INVALIDHDL;
  5901. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0,
  5902. sizeof(APP_SETTING_FactoryUser_t), &(g_stFactoryUserData));
  5903. if (g_stFactoryUserData.n_FactSet_BurningMode == al_true)
  5904. {
  5905. #ifdef CONFIG_SUPPORT_DETECT_USBPLL
  5906. if(dMessage == APP_DVB_GLOBAL_EVENT_DVB_ONRUN)
  5907. {
  5908. UINT32 Index = TOTAL_SYS_APP_SIZE;
  5909. while (MAINAPP_GetActiveSystemAppIndex(&Index) != MAIN_APP_SUCCESS)
  5910. {
  5911. GL_TaskSleep(1);
  5912. }
  5913. if (SP_SUCCESS != APP_GUIOBJ_Source_SetMidSource(NULL) || (APP_IsScan_Running()))
  5914. {
  5915. APP_GUIOBJ_Source_SetSourceTransState(FALSE);
  5916. g_u8SourceTrastTimer = 0;
  5917. return SP_ERR_FAILURE;
  5918. }
  5919. APP_GUIOBJ_Source_SetSourceTransState(FALSE);
  5920. g_u8SourceTrastTimer = 0;
  5921. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MUTE))
  5922. {
  5923. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_MUTE, 0);
  5924. }
  5925. UINT8 u8USBPLL_Fail = 0;
  5926. Cmd_NVMRead(ENVMPurposeIDUSBPLLFailFlag, FALSE, sizeof(UINT8), &u8USBPLL_Fail);
  5927. if(u8USBPLL_Fail == TRUE)
  5928. {
  5929. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, APP_GUIOBJ_MUTE,
  5930. APP_INTRA_EVENT_SHOW_CLK_ERROR, 0);
  5931. }
  5932. }
  5933. if (dMessage == APP_GLOBAL_EVENT_USBPLL_RESULT)
  5934. {
  5935. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, APP_GUIOBJ_MUTE, APP_INTRA_EVENT_SHOW_MESSAGE, dParam);
  5936. }
  5937. #endif
  5938. return SP_SUCCESS;
  5939. }
  5940. #ifdef CONFIG_SUPPORT_MHEG5
  5941. sdRet = 0;
  5942. #endif
  5943. dMessage = (dMessage&~PASS_TO_SYSAPP);
  5944. dvb_printf("%d. dMessage = 0x%x(%d)event received.time: %d\n", __LINE__, dMessage,(dMessage&0xfff),GL_GetRtc32());
  5945. #ifdef CONFIG_SUPPORT_MHEG5
  5946. int iFocusedIndex;
  5947. #endif
  5948. #ifdef CONFIG_SUPPORT_TTX
  5949. al_uint8 *pref_iso639 = al_null;
  5950. #endif
  5951. eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  5952. hCurProg = hProg = APP_DVB_Playback_GetCurrentProgHandle(eNetType, eServiceType);
  5953. APP_GUIOBJ_Source_GetCurrSource(&eSourType);
  5954. APP_GUIOBJ_Source_GetMidSource(&eMidSourType, NULL);
  5955. UINT8 bAutoInstall = FALSE;
  5956. #ifdef IR_PLAYPAUE_COMBINE
  5957. if (dMessage == UI_EVENT_PLAY)
  5958. {
  5959. dMessage = UI_EVENT_PLAY_PAUSE;
  5960. }
  5961. if (dMessage == UI_EVENT_PLAY_PAUSE)
  5962. {
  5963. dMessage = UI_EVENT_PAUSE;
  5964. }
  5965. #endif
  5966. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  5967. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  5968. u8HotelMode = g_stFactoryHotelData.HotelModeOnOff;
  5969. u8MainUIEn = g_stFactoryHotelData.MainUIOperation;
  5970. if (u8HotelMode == 1)
  5971. {
  5972. if (u8MainUIEn == 1)
  5973. {
  5974. if (dMessage == UI_EVENT_MENU)
  5975. {
  5976. return 0;
  5977. }
  5978. }
  5979. }
  5980. if ((g_stFactoryHotelData.HotelModeOnOff == 1) && (g_stFactoryHotelData.AspectRatioLock == 1))
  5981. {
  5982. if (dMessage == UI_EVENT_ASPECT)
  5983. {
  5984. dMessage = UI_EVENT_NULL;
  5985. }
  5986. }
  5987. #ifdef CONFIG_SUPPORT_PVR
  5988. UINT8 u8AutoTimeShift;
  5989. UINT8 u8MidRecState;
  5990. UINT8 u8MIDRecMode;
  5991. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  5992. ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift),
  5993. sizeof(g_stFeatureData.AutoTimeShift), &(g_stFeatureData.AutoTimeShift));
  5994. u8AutoTimeShift = g_stFeatureData.AutoTimeShift;
  5995. u8MidRecState = MID_RecorderState();
  5996. u8MIDRecMode = MID_Recorder_GetRecMode();
  5997. #ifdef SUPPORT_PLAY_PAUSE_KEY_START_REC
  5998. if ((MID_REC_STATUS_STOP == u8MidRecState)
  5999. && (dMessage == UI_EVENT_PLAY_PAUSE)
  6000. && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_RECORDLIST)
  6001. && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  6002. {
  6003. dMessage = UI_EVENT_REC;
  6004. }
  6005. #endif
  6006. #endif
  6007. #if defined(SUPPORT_PVR_ONOFF) || defined(SUPPORT_EPG_ONOFF)
  6008. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0,
  6009. sizeof(APP_SETTING_Setup_t), &(g_stSetupData));
  6010. #endif
  6011. #ifdef SUPPORT_CEC_TV
  6012. if (CECTV_GetCECEnable()==CECTV_ENABLE)
  6013. {
  6014. //active source
  6015. if(dMessage==UI_EVENT_TVRADIO)
  6016. {
  6017. dvb_printf("========================UI_EVENT_TVRADIO========================");
  6018. CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_CHGSRC_OUT_HDMI, SRC_OTHERS);
  6019. }
  6020. if(dMessage==UI_EVENT_MUTE)
  6021. {
  6022. dvb_printf("\n\n=============CEC Send Audio Mute===============\n\n");
  6023. //CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_KEYPRESS, CECTV_KEY_MUTE<<8|0x05);//Mute Function
  6024. if (CECTV_GetHDMISystemAudioMode()&& APP_Check_CEC_DEVICE_Status())
  6025. {
  6026. if(g_u32Mutekeydelaytime >= MUTE_KEY_INTERVAL)
  6027. {
  6028. cec_RemoteControlPassThrough(CECTV_KEY_MUTE);
  6029. cec_RemoteControlPassThrough(CECTV_KEY_MUTE_RELEASE);
  6030. g_u32Mutekeydelaytime = 0;
  6031. }
  6032. }
  6033. }
  6034. if(dMessage==UI_EVENT_VOL_UP)
  6035. {
  6036. dvb_printf("========================UI_EVENT_VOL_UP========================");
  6037. //CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_KEYPRESS, CECTV_KEY_VOLUME_UP<<8|0x05);//UCP VOL_DN Function
  6038. if (CECTV_GetHDMISystemAudioMode() && APP_Check_CEC_DEVICE_Status())
  6039. {
  6040. if (dParam & IR_EVENT_REPEAT_TYPE)
  6041. {
  6042. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_UP);
  6043. }
  6044. else if (dParam & IR_EVENT_REPEAT_END)
  6045. {
  6046. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_UP_RELEASE);
  6047. }
  6048. else
  6049. {
  6050. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_UP);
  6051. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_UP_RELEASE);
  6052. }
  6053. }
  6054. }
  6055. if(dMessage==UI_EVENT_VOL_DN)
  6056. {
  6057. dvb_printf("========================UI_EVENT_VOL_DN========================");
  6058. //CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_KEYPRESS, CECTV_KEY_VOLUME_DOWN<<8|0x05);//UCP VOL_DN Function
  6059. if (CECTV_GetHDMISystemAudioMode() && APP_Check_CEC_DEVICE_Status())
  6060. {
  6061. if (dParam & IR_EVENT_REPEAT_TYPE)
  6062. {
  6063. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_DOWN);
  6064. }
  6065. else if (dParam & IR_EVENT_REPEAT_END)
  6066. {
  6067. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_DOWN_RELEASE);
  6068. }
  6069. else
  6070. {
  6071. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_DOWN);
  6072. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_DOWN_RELEASE);
  6073. }
  6074. }
  6075. }
  6076. }
  6077. #endif
  6078. #ifdef TEAC_BLUE_KEY_FUNCTION
  6079. if (_DVB_GetPanelControlType() == APP_PANEL_POWER_DOWN && (dMessage >= UI_EVENT_0 && dMessage < UI_EVENT_NULL) && (dMessage != UI_EVENT_POWER))
  6080. {
  6081. //APP_Panel_SetPowerSequence(APP_PANEL_POWER_UP);
  6082. //APP_Video_OSD_PQSet(APP_VIDEO_OSD_ITEM_BACKLIGHT,
  6083. // g_stSetupData.HomeMode.Backlight[g_stSetupData.HomeMode.Type]);
  6084. _DVB_SetPanelControlType(APP_PANEL_POWER_UP);
  6085. return GUI_OBJECT_NO_POST_ACTION;
  6086. }
  6087. #endif
  6088. switch (dMessage)
  6089. {
  6090. case APP_DVB_GLOBAL_EVENT_SCART_INPUTSTATUS_CHANGE:
  6091. {
  6092. #ifdef CONFIG_SUPPORT_PVR
  6093. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)
  6094. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  6095. {
  6096. break;
  6097. }
  6098. #endif
  6099. #ifdef CONFIG_SUPPORT_INDONESIA_EWS
  6100. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EWS_AWAS)
  6101. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EWS_WASPADA))
  6102. {
  6103. return GUI_OBJECT_NO_POST_ACTION;
  6104. }
  6105. #endif
  6106. APP_SCARTIN_Pin8Function(dParam);
  6107. }
  6108. break;
  6109. case APP_DVB_GLOBAL_EVENT_SCAN_DONE:
  6110. printf("\e[33m\n[Ranshiou] %s %d \e[0m\n",__FUNCTION__, __LINE__);
  6111. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS))
  6112. {
  6113. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  6114. SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS,
  6115. APP_DVB_GLOBAL_EVENT_SCAN_DONE, 0);
  6116. }
  6117. else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL))
  6118. {
  6119. SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_SCAN_DONE, 0);
  6120. }
  6121. else
  6122. {
  6123. APP_GUIOBJ_ScanProcess_ScanDone(NULL, 1);
  6124. }
  6125. if( DVBApp_IsPopupExist(PLAYBACK_POPUP_PROMPT_NETWORK_UPDATING) )
  6126. {
  6127. DVBApp_ClosePopup(PLAYBACK_POPUP_PROMPT_NETWORK_UPDATING, UI_EVENT_NULL);
  6128. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NETWORK_UPDATE_DONE);
  6129. }
  6130. break;
  6131. case APP_DVB_GLOBAL_EVENT_DVB_ONRUN:
  6132. dvb_printf(" APP_DVB_GLOBAL_EVENT_DVB_ONRUN event received\n");
  6133. g_u32NoSignalTimer = 0;
  6134. g_u32NoSignalSleepTimer = 0;
  6135. #ifdef CONFIG_SUPPORT_INDONESIA_EWS
  6136. if(!_APP_GUIOBJ_EWS_AreaCodeSetting_GetLeaveState())
  6137. {
  6138. _DVBApp_CloseAllMenu();
  6139. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_EWS_AREACODE, 0);
  6140. }
  6141. else
  6142. #endif
  6143. {
  6144. /*#ifdef CONFIG_SUPPORT_PVR
  6145. if (MID_REC_STATUS_STOP != u8MidRecState)
  6146. {
  6147. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  6148. {
  6149. DVBApp_StopRecord();
  6150. }
  6151. else
  6152. {
  6153. DVBApp_StopTimeshift(TRUE);
  6154. }
  6155. }
  6156. #endif*/
  6157. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL,
  6158. ITEM_OFFSET(APP_SETTING_Channel_t, Country),
  6159. sizeof(g_stChannelData.Country), &(g_stChannelData.Country));
  6160. DVBApp_ResetDvbSpecRule(g_stChannelData.Country);
  6161. #ifdef CONFIG_MEDIA_ENABLE
  6162. /*#ifdef CONFIG_SUPPORT_PVR
  6163. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  6164. if(APP_WAKEUP_GetBootFlag()==FALSE)
  6165. #endif
  6166. {
  6167. if (MM_Music_GetPanelControlType() == APP_PANEL_POWER_DOWN)
  6168. //APP_Panel_SetPowerSequence(APP_PANEL_POWER_UP);
  6169. }
  6170. #endif*/
  6171. #endif
  6172. #if 0//def CONFIG_SUPPORT_MIRACAST
  6173. //if( IsDonglePlugged() )
  6174. {
  6175. //DrawInfoWindow("Device plugged", DRAW_IT);
  6176. MiracastInit();
  6177. }
  6178. //else{
  6179. //DrawInfoWindow("NO Device!!", DRAW_IT);
  6180. //}
  6181. #endif
  6182. /*Change Source*/
  6183. UINT32 Indexmm = TOTAL_SYS_APP_SIZE;
  6184. while(MAINAPP_GetActiveSystemAppIndex(&Indexmm) !=MAIN_APP_SUCCESS)
  6185. {
  6186. GL_TaskSleep(1);
  6187. }
  6188. if ((SP_SUCCESS != APP_GUIOBJ_Source_SetMidSource(NULL)) || (APP_IsScan_Running()))
  6189. {
  6190. #ifdef CONFIG_SUPPORT_PVR
  6191. DVBApp_SetPVRSwitchSRC(FALSE);
  6192. #endif
  6193. return SP_ERR_FAILURE;
  6194. }
  6195. #ifdef CONFIG_SUPPORT_PVR
  6196. int iPtListIdx = -1;
  6197. extern int _RecorderList_Callback(MID_PVRRecListParseMsg_t dPVRRecListCallbackType);
  6198. MID_TSPLParser_RegisterPvrRecListCallback((PVRRecListCallbackFunc)_RecorderList_Callback);
  6199. #ifdef SUPPORT_PVR_USE_SAVED_INDEX_FAT_PARTITION
  6200. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  6201. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  6202. if(TRUE != APP_GUIOBJ_DVB_PartitionList_CheckValidByIndex(g_stFeatureData.DefaultPartition))
  6203. {
  6204. /* aps new don't support NTFS fs */
  6205. if (APP_GUIOBJ_DVB_PartitionList_GetFirstFat(&iPtListIdx) == TRUE)
  6206. {
  6207. MID_RecorderSetDefaultPartition(iPtListIdx, MID_REC_PARTITION_SET_FORCE); //set partition 0 for default partition
  6208. APP_GUIOBJ_DVB_PartitionList_SaveIndex(iPtListIdx);
  6209. }
  6210. }
  6211. #else
  6212. if (MID_RecorderGetDefaultPartition(&iPtListIdx) != MID_REC_FS_OK)
  6213. {
  6214. /* aps new don't support NTFS fs */
  6215. if (APP_GUIOBJ_DVB_PartitionList_GetFirstFat(&iPtListIdx) == TRUE)
  6216. {
  6217. MID_RecorderSetDefaultPartition(iPtListIdx, MID_REC_PARTITION_SET_FORCE); //set partition 0 for default partition
  6218. }
  6219. }
  6220. #endif
  6221. else //for mantis 0180617, refresh mid PVR file list when change from other source
  6222. {
  6223. #ifdef SUPPORT_PVR_USE_SAVED_INDEX_FAT_PARTITION
  6224. if(MID_REC_FS_OK == MID_RecorderGetDefaultPartition(&iPtListIdx)
  6225. &&iPtListIdx == g_stFeatureData.DefaultPartition)
  6226. {
  6227. ;//do nothing
  6228. }
  6229. else
  6230. {
  6231. //nedd set default DefaultPartition
  6232. iPtListIdx = g_stFeatureData.DefaultPartition;
  6233. MID_RecorderSetDefaultPartition(iPtListIdx, MID_REC_PARTITION_SET_FORCE); //set partition 0 for default partition
  6234. APP_GUIOBJ_DVB_PartitionList_SaveIndex(iPtListIdx);
  6235. }
  6236. #endif
  6237. static char szPtName[MID_DISK_NAME_MAX_LEN];
  6238. MID_PartitionList_GetMountName(iPtListIdx, szPtName);
  6239. extern Boolean MID_Recorder_DeleteTShistIfExist(char *szPtName);
  6240. if(MID_Recorder_DeleteTShistIfExist(szPtName)==TRUE)
  6241. {
  6242. PVR_DEBF("Delete TSHIFT FILE [OK]\n");
  6243. }
  6244. extern Boolean MID_Recorder_DeleteIllegalPVR(char *szPtName);
  6245. if(MID_Recorder_DeleteIllegalPVR(szPtName)==TRUE)
  6246. {
  6247. PVR_DEBF("Delete Illegal PVR [OK]\n");
  6248. }
  6249. MID_TSPLParser_Init(szPtName);
  6250. }
  6251. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  6252. #endif
  6253. eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  6254. if ((eServiceType != AL_RECTYPE_DVBTV) && (eServiceType != AL_RECTYPE_DVBRADIO) && (eServiceType != AL_RECTYPE_DVBDATA))
  6255. {
  6256. eServiceType = AL_RECTYPE_DVBTV;
  6257. }
  6258. /* Check Service Type */
  6259. {
  6260. UINT32 u32TotalChnCount = 0;
  6261. AL_DB_ERecordType_t eTempServiceType = eServiceType;
  6262. if(eServiceType != AL_RECTYPE_DVBTV)
  6263. {
  6264. AL_DB_GetRecordsTotalNum(eNetType, eServiceType, &u32TotalChnCount);
  6265. if(!u32TotalChnCount)
  6266. {
  6267. eTempServiceType = AL_RECTYPE_DVBTV;
  6268. AL_DB_GetRecordsTotalNum(eNetType, eTempServiceType, &u32TotalChnCount);
  6269. if(!u32TotalChnCount)
  6270. {
  6271. if(eServiceType == AL_RECTYPE_DVBRADIO)
  6272. {
  6273. AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBDATA, &u32TotalChnCount);
  6274. if(u32TotalChnCount)
  6275. {
  6276. eTempServiceType = AL_RECTYPE_DVBDATA;
  6277. }
  6278. }
  6279. else if(eServiceType == AL_RECTYPE_DVBDATA)
  6280. {
  6281. AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBRADIO, &u32TotalChnCount);
  6282. if(u32TotalChnCount)
  6283. {
  6284. eTempServiceType = AL_RECTYPE_DVBRADIO;
  6285. }
  6286. }
  6287. }
  6288. }
  6289. }
  6290. else
  6291. {
  6292. AL_DB_GetRecordsTotalNum(eNetType, eServiceType, &u32TotalChnCount);
  6293. if(!u32TotalChnCount)
  6294. {
  6295. AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBDATA, &u32TotalChnCount);
  6296. if(u32TotalChnCount)
  6297. {
  6298. eTempServiceType = AL_RECTYPE_DVBDATA;
  6299. }
  6300. else
  6301. {
  6302. AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBRADIO, &u32TotalChnCount);
  6303. if(u32TotalChnCount)
  6304. {
  6305. eTempServiceType = AL_RECTYPE_DVBRADIO;
  6306. }
  6307. }
  6308. }
  6309. }
  6310. eServiceType = eTempServiceType;
  6311. APP_DVB_Playback_SetCurrServiceType(eNetType, eServiceType);
  6312. }
  6313. /*create playback and mute guiobject*/
  6314. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK))
  6315. {
  6316. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, 0);
  6317. }
  6318. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MUTE))
  6319. {
  6320. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_MUTE, 0);
  6321. }
  6322. if (TRUE == APP_GUIOBJ_DVB_FavNet_GetSelect())
  6323. {
  6324. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVNET))
  6325. {
  6326. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FAVNET, 0);
  6327. break;
  6328. }
  6329. }
  6330. /* change source to net, it will destroy `mute' icon
  6331. * so, judge `mute' state, show icon
  6332. */
  6333. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  6334. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  6335. if (g_stUserInfoData.Mute == TRUE)
  6336. {
  6337. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  6338. SYS_APP_DVB, APP_GUIOBJ_MUTE,
  6339. APP_INTRA_EVENT_SHOW_MUTE, SHOW_MUTE_ON_TV);
  6340. }
  6341. bAutoInstall = g_stUserInfoData.AutoInstalled;
  6342. if (bAutoInstall && (FALSE ==gIsFactoryResetting))
  6343. {
  6344. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL))
  6345. {
  6346. //Close all menu before show Auto Installation menu
  6347. _DVBApp_CloseAllMenu();
  6348. #ifdef SUPPORT_FACTORY_AUTO_TEST
  6349. if(APP_Factory_GetAutoTestOnOff() == FALSE)
  6350. #endif
  6351. {
  6352. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL, 0);
  6353. }
  6354. }
  6355. }
  6356. #ifdef SUPPORT_FACTORY_AUTO_TEST
  6357. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  6358. {
  6359. extern void APP_SetPoweronEnterVersion(UINT8 value);
  6360. extern UINT8 APP_GetPoweronEnterVersion(void);
  6361. if(APP_GetPoweronEnterVersion() == 1)
  6362. {
  6363. APP_SetPoweronEnterVersion(0);
  6364. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING))
  6365. {
  6366. DVBApp_ResetPopup_Channel();
  6367. _DVBApp_CloseAllMenu();
  6368. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING, 1);
  6369. Factory_Ver_Debug();
  6370. }
  6371. }
  6372. }
  6373. #endif
  6374. hProg = APP_DVB_Playback_GetCurrentProgHandle(eNetType, eServiceType);
  6375. #ifdef CONFIG_SUPPORT_PVR
  6376. if (DVBApp_GetPVRSwitchSRC() == TRUE)
  6377. {
  6378. eServiceType = g_eRecType;
  6379. APP_DVB_Playback_SetNextServiceType(eServiceType);
  6380. hProg = DVBApp_GetSCHProgHandle();
  6381. }
  6382. #endif
  6383. if (APP_MenuMgr_Exist_Scan_Menu())
  6384. {
  6385. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_GLOBAL_EVENT_SET_SOURCE_COMPLETE, 0);
  6386. }
  6387. else
  6388. {
  6389. #if 0 /*modify by qinhe for mantis 0011833*/
  6390. AL_DB_GetRecordsTotalNum(eNetType, eServiceType, &TotalNum);
  6391. #else
  6392. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  6393. #endif
  6394. if (bHasValidServ)
  6395. {
  6396. if (hProg == AL_DB_INVALIDHDL)
  6397. {
  6398. AL_RecHandle_t hTpHdl = AL_DB_INVALIDHDL;
  6399. AL_DB_GetRecord(AL_DB_REQ_GETFIRST, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hTpHdl);
  6400. if (hTpHdl != AL_DB_INVALIDHDL)
  6401. {
  6402. hProg = APP_DVB_PLAYBACK_GetFirstProgHdlofLowestService();
  6403. AL_DB_GetRecordType(hProg, &eNetType, &eServiceType);
  6404. APP_DVB_Playback_SetCurrentProgHandle(eNetType, eServiceType, hProg);
  6405. APP_DVB_Playback_SetNextServiceType(eServiceType);
  6406. }
  6407. }
  6408. if (hProg == AL_DB_INVALIDHDL)
  6409. {
  6410. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS))
  6411. {
  6412. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  6413. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  6414. }
  6415. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL))
  6416. {
  6417. if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_DATABASE_EMPTY))
  6418. {
  6419. DVBApp_ResetPopup_Channel();
  6420. _DVBApp_ShowPopup(DVB_APP_POP_MSG_DATABASE_EMPTY);
  6421. }
  6422. }
  6423. }
  6424. else
  6425. {
  6426. DBServAttrib_t stAttribute;
  6427. memset(&stAttribute, 0, sizeof(stAttribute));
  6428. AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute);
  6429. if(stAttribute.unStable == al_true)
  6430. {
  6431. DVBApp_RemoveUnstableService();
  6432. }
  6433. else
  6434. {
  6435. _DVBApp_Zapping(eServiceType, hProg, TRUE, 0, TRUE);
  6436. }
  6437. /*Add for dispose TV/RADIO key in channel manager /channel list /epg*/
  6438. if (!dParam)
  6439. {
  6440. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR)
  6441. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR)
  6442. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST)
  6443. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST)
  6444. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG))
  6445. {
  6446. break;
  6447. }
  6448. }
  6449. /*End*/
  6450. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  6451. if (bSignalState != AL_DVB_MONITOR_VALUE_TRUE)
  6452. {
  6453. #ifdef PLAY_VIDEO_FOR_ALLSRV
  6454. if (DVBApp_CheckHasVideo() == FALSE)
  6455. #else
  6456. if (eServiceType == AL_RECTYPE_DVBRADIO)
  6457. #endif
  6458. {
  6459. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  6460. SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  6461. APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  6462. }
  6463. if(!APP_Factory_CheckNeedReopenFm(SYS_APP_DVB))
  6464. {
  6465. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_SIGNAL);
  6466. }
  6467. }
  6468. else
  6469. {
  6470. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  6471. #if 0 //zhongbaoxing removed for mantis 171528 @20120307
  6472. if (eServiceType == AL_RECTYPE_DVBRADIO)
  6473. {
  6474. if (!APP_GUIOBJ_DVB_Playback_GetShowLogoState())
  6475. {
  6476. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  6477. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  6478. }
  6479. #ifdef CONFIG_SUPPORT_MHEG5
  6480. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  6481. #endif
  6482. {
  6483. _DVBApp_ShowPopup(DVB_APP_POP_MSG_RADIO_CHANNEL);
  6484. }
  6485. }
  6486. else
  6487. #else
  6488. #ifdef PLAY_VIDEO_FOR_ALLSRV
  6489. if (DVBApp_CheckHasVideo() == TRUE)
  6490. #else
  6491. if (eServiceType != AL_RECTYPE_DVBRADIO)
  6492. #endif
  6493. {
  6494. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  6495. }
  6496. #endif
  6497. }
  6498. }
  6499. }
  6500. else
  6501. {
  6502. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  6503. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  6504. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL))
  6505. {
  6506. if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_DATABASE_EMPTY))
  6507. {
  6508. DVBApp_ResetPopup_Channel();
  6509. if(!APP_Factory_CheckNeedReopenFm(SYS_APP_DVB))
  6510. {
  6511. _DVBApp_ShowPopup(DVB_APP_POP_MSG_DATABASE_EMPTY);
  6512. DVBApp_CheckProgramType(FALSE);
  6513. }
  6514. }
  6515. }
  6516. }
  6517. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  6518. DRV_Frontend_Connect_Type_t tPreFrontendType = FRONTEND_CONNECT_TYPE_MAX;
  6519. if ((!bHasValidServ || (hProg == AL_DB_INVALIDHDL))&&(eNetType == AL_DBTYPE_DVB_S))
  6520. {
  6521. MID_SatCtrl_FrontendCtrl(FRONTEND_CMD_GET_CONNECT_TYPE, (void *)&tPreFrontendType);
  6522. if (tPreFrontendType != FRONTEND_CONNECT_TYPE_DVB_S && tPreFrontendType != FRONTEND_CONNECT_TYPE_DVB_S2)
  6523. {
  6524. MID_SatCtrl_FrontendCtrl(FRONTEND_CMD_SET_S, NULL);
  6525. }
  6526. }
  6527. #endif
  6528. #ifdef CONFIG_DVB_SYSTEM_DVBT2_SUPPORT
  6529. DRV_Frontend_Connect_Type_t tPreFrontendType_t = FRONTEND_CONNECT_TYPE_MAX;
  6530. FrontendCmd_t front;
  6531. if ((!bHasValidServ || (hProg == AL_DB_INVALIDHDL))&&(eNetType == AL_DBTYPE_DVB_T))
  6532. {
  6533. front.cmd = FRONTEND_CMD_GET_CONNECT_TYPE;
  6534. front.param = (void *)&tPreFrontendType_t;
  6535. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  6536. if (tPreFrontendType_t != FRONTEND_CONNECT_TYPE_DVB_T && tPreFrontendType_t != FRONTEND_CONNECT_TYPE_DVB_T2)
  6537. {
  6538. front.cmd = FRONTEND_CMD_SET_T;
  6539. front.param = NULL;
  6540. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  6541. }
  6542. }
  6543. #endif
  6544. #ifdef SUPPORT_DTV_SHOW_BLUESCREEN
  6545. al_uint8 bMonitorState = al_false;
  6546. al_uint8 bSignalState = al_false;
  6547. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_MONITOR, &bMonitorState);
  6548. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  6549. if ((g_stSetupData.BlueScreen == APP_SWITCH_ON)
  6550. &&((!bHasValidServ)
  6551. ||!((bMonitorState) && (bSignalState == AL_DVB_MONITOR_VALUE_TRUE))))
  6552. {
  6553. #ifdef CONFIG_DVB_SYSTEM
  6554. APP_SCARTOUT_SetVideoMute(APP_SOURCE_DTV, DTV_TRUE, TRUE);
  6555. #endif
  6556. MID_DISP_DTVSetVideoMute(0,0,255);
  6557. }
  6558. #endif
  6559. _DVBApp_CheckPopupDisplay();
  6560. }
  6561. #ifdef CONFIG_SUPPORT_PVR
  6562. if(DVBApp_GetPVRSwitchSRC())
  6563. {
  6564. DVBApp_SetPVRSwitchSRC(FALSE);
  6565. if(DVBApp_GetReminderTime2Show() > 1)//For confirm record ahead
  6566. {
  6567. AL_Return_t ret;
  6568. memset(&g_stDetails,0,sizeof(AL_PR_details_t));
  6569. ret = AL_PR_GetById(g_dReminderId, &g_stDetails);
  6570. if (ret == AL_SUCCESS)
  6571. {
  6572. DVBApp_PVRRec_SetTimerCancle();
  6573. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  6574. (APP_DVB_GLOBAL_EVENT_PVRSCH | PASS_TO_SYSAPP), (UINT32)&g_stDetails);
  6575. }
  6576. }
  6577. }
  6578. #endif
  6579. }
  6580. break;
  6581. case APP_DVB_GLOBAL_EVENT_OBJECT_OPEN:
  6582. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, dParam & 0XFFFF))
  6583. {
  6584. #ifdef CONFIG_CI_SUPPORT
  6585. if (((dParam & 0XFFFF) == DVB_GUIOBJ_CI_MENU) || ((dParam & 0XFFFF) == DVB_GUIOBJ_CI_ENQ))
  6586. {
  6587. UINT32 i;
  6588. UINT8 CouldOpen = TRUE;
  6589. for (i = 0; i < sizeof(g_CI_IgnoreGuiObjID) / sizeof(g_CI_IgnoreGuiObjID[0]); i++)
  6590. {
  6591. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, g_CI_IgnoreGuiObjID[i]))
  6592. {
  6593. CouldOpen = FALSE;
  6594. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU)
  6595. && ((dParam & 0XFFFF) == DVB_GUIOBJ_CI_ENQ))
  6596. {
  6597. CouldOpen = TRUE;
  6598. }
  6599. }
  6600. }
  6601. if (CouldOpen == FALSE)
  6602. {
  6603. break;
  6604. }
  6605. for (i = 0; i < sizeof(g_CI_HideGuiObjID) / sizeof(g_CI_HideGuiObjID[0]); i++)
  6606. {
  6607. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, g_CI_HideGuiObjID[i]))
  6608. {
  6609. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, g_CI_HideGuiObjID[i]);
  6610. }
  6611. }
  6612. g_u32OldPopup = PLAYBACK_POPUP_NONE;
  6613. _DVBApp_HidePopupDisplay();
  6614. if((dParam&0XFFFF) == DVB_GUIOBJ_CI_MENU)
  6615. {
  6616. _DVBApp_CloseAllMenu();
  6617. #ifdef CONFIG_SUPPORT_PVR
  6618. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  6619. {
  6620. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  6621. }
  6622. extern Boolean APP_GUIOBJ_DVB_PvrFilePlayInfo_IsExist(void);
  6623. if (APP_GUIOBJ_DVB_PvrFilePlayInfo_IsExist())
  6624. {
  6625. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAYINFO,
  6626. APP_DVB_INTRA_EVENT_PVR_FILEPLAYINFO_HIDE_MENU, 0);
  6627. }
  6628. #endif
  6629. }
  6630. }
  6631. #endif
  6632. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, dParam & 0XFFFF, dParam >> 16);
  6633. }
  6634. break;
  6635. case APP_DVB_GLOBAL_EVENT_OBJECT_CLOSE:
  6636. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, dParam))
  6637. {
  6638. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, dParam);
  6639. }
  6640. break;
  6641. case APP_DVB_GLOBAL_EVENT_CLOSE_POPUP:
  6642. DVBApp_ClosePopup(dParam, UI_EVENT_NULL);
  6643. break;
  6644. case APP_DVB_GLOBAL_EVENT_EXIT_ALL_MENU:
  6645. #ifdef CONFIG_CIPLUS_SUPPORT_PVR //CI MMI case, when PIN code is passed, do not close all UI.
  6646. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  6647. break;
  6648. #endif
  6649. _DVBApp_Exit_All_Menu();
  6650. break;
  6651. #ifdef CONFIG_CI_SUPPORT
  6652. case APP_DVB_GLOBAL_EVENT_POPMSG_CAM_ON_INIT:
  6653. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_CAM_INIT);
  6654. break;
  6655. case APP_DVB_GLOBAL_EVENT_POPMSG_CAM_INIT_OK:
  6656. _APP_GUIOBJ_Feature_UpdateList(APP_GUIOBJ_MainMenu_GetIndexByType(CIINFO_ITEM));
  6657. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_CAM_INIT_OK);
  6658. break;
  6659. #ifndef CONFIG_TV_NEW_UI
  6660. case APP_DVB_GLOBAL_EVENT_POPMSG_CAM_ERROR:
  6661. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_CAM_ERROR);
  6662. break;
  6663. #endif
  6664. case APP_DVB_GLOBAL_EVENT_POPMSG_CAM_REMOVED:
  6665. _APP_GUIOBJ_Feature_UpdateList(APP_GUIOBJ_MainMenu_GetIndexByType(CIINFO_ITEM));
  6666. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_CAM_REMOVED);
  6667. break;
  6668. #ifdef SUPPORT_CICAM_NEW_MESSAGE //this define need be enable to inform user remove CICAM card
  6669. case APP_DVB_GLOBAL_EVENT_POPMSG_INFORM_USER_REMOVE_CAM:
  6670. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_INFORM_USER_REMOVE_CAM);
  6671. break;
  6672. #endif
  6673. case APP_DVB_GLOBAL_EVENT_CI_REDRAW_ALL_CAM:
  6674. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  6675. DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_REDRAW_ALL_CAM, dParam);
  6676. break;
  6677. case APP_DVB_GLOBAL_EVENT_CI_CAM_ON_INIT:
  6678. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  6679. DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_CAM_ON_INIT, dParam);
  6680. break;
  6681. case APP_DVB_GLOBAL_EVENT_CI_CAM_NOT_INSERT:
  6682. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  6683. DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_CAM_NOT_INSERT, dParam);
  6684. break;
  6685. case APP_DVB_GLOBAL_EVENT_CI_CAM_INIT_OK:
  6686. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MAINMENU))
  6687. {
  6688. DVBApp_ResetPopup_Channel();
  6689. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  6690. }
  6691. _APP_GUIOBJ_Feature_UpdateList(APP_GUIOBJ_MainMenu_GetIndexByType(CIINFO_ITEM));
  6692. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  6693. DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_CAM_INIT_OK, dParam);
  6694. break;
  6695. case APP_DVB_GLOBAL_EVENT_CI_REDRAW_MENU:
  6696. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  6697. DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_REDRAW_MENU, dParam);
  6698. break;
  6699. #ifdef CONFIG_CIPLUS_SUPPORT
  6700. case APP_DVB_GLOBAL_EVENT_SCAN_UPDATE_FINISHED:
  6701. dvb_printf("\e[33m\n %s %d APP_DVB_GLOBAL_EVENT_SCAN_UPDATE_FINISHED recive.\e[0m\n",__FUNCTION__, __LINE__);
  6702. if (!AL_CS_IsStop())
  6703. {
  6704. APP_ScanProcess_Stop();
  6705. }
  6706. while( !AL_CS_IsStop() )
  6707. {
  6708. GL_TaskSleep(20);
  6709. }
  6710. break;
  6711. case APP_DVB_GLOBAL_EVENT_CI_AUTH_PROGRESS:
  6712. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  6713. DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_AUTH_PROGRESS, dParam);
  6714. break;
  6715. case APP_DVB_GLOBAL_EVENT_POPMSG_START_INSTALL_NIT:
  6716. DVBApp_ShowInstallProfilePopMenu();
  6717. break;
  6718. case APP_DVB_GLOBAL_EVENT_POPMSG_END_INSTALL_NIT:
  6719. {
  6720. UINT32 dMsgType = 0;
  6721. APP_GUIOBJ_PopMsg_GetMsgDialogType(&dMsgType);
  6722. if (dMsgType == PLAYBACK_POPUP_PROMPT_CI_INSTALL_PROFILE)
  6723. {
  6724. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  6725. }
  6726. }
  6727. break;
  6728. #endif
  6729. #endif
  6730. case APP_GLOBAL_EVENT_OPEN_HOMEMODE:
  6731. #if defined(CELLO_cello) && defined(SUPPORT_HOMEMODE)
  6732. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  6733. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  6734. if((g_stUserInfoData.AutoInstalledHomeMode)
  6735. &&(!g_stUserInfoData.AutoInstalled))
  6736. {
  6737. if ((!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL))
  6738. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  6739. &&(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE))
  6740. #endif
  6741. )
  6742. {
  6743. //Close all menu before show Auto Installation menu
  6744. _DVBApp_CloseAllMenu();
  6745. #ifdef SUPPORT_FACTORY_AUTO_TEST
  6746. if(APP_Factory_GetAutoTestOnOff() == FALSE)
  6747. #endif
  6748. {
  6749. APP_GUIOBJ_AutoInstall_SetOpenHomeModeFlag(FALSE);
  6750. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL, INSTALL_FROM_ONLYFORHOMEMODE);
  6751. }
  6752. }
  6753. }
  6754. #endif
  6755. break;
  6756. case APP_GLOBAL_EVENT_POPMSG_PWD:
  6757. {dvb_printf("APP_GLOBAL_EVENT_POPMSG_PWD is received,Unlock success!!\n\n");
  6758. g_SetPQFlag = TRUE;
  6759. APP_DVB_Playback_SetUnlock(al_true);
  6760. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  6761. if (bSignalState == AL_DVB_MONITOR_VALUE_INVAILED)//tuner locked
  6762. {
  6763. al_uint8 uDVBMonState = AL_DVB_MONITOR_VALUE_TRUE;
  6764. AL_DVB_Monitor_SetState(AL_DVB_MONITOR_STATE_SIGNAL, &uDVBMonState);
  6765. }
  6766. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  6767. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_START_PLAYBACK, 0);
  6768. if (APP_GetPlaybackPauseState() == TRUE)
  6769. {
  6770. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  6771. {
  6772. MID_PlaybackStreamPause(1);
  6773. }
  6774. }
  6775. DVBApp_CheckProgramType(TRUE);
  6776. #ifdef CONFIG_SUPPORT_MHEG5
  6777. dvb_printf("\n [set mheg5 flag] APP_GLOBAL_EVENT_POPMSG_PWD@@@@@@@@@@@@@dvb_app.c@@@@@@@@@@@@line=%d\n",__LINE__);
  6778. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_FORCE|OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5 | OSD2CTRLMDL_SUB);
  6779. #else
  6780. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  6781. #endif
  6782. #ifdef CONFIG_SUPPORT_PVR
  6783. AL_DB_EDBType_t DBType_Current = AL_DBTYPE_DVB_T;
  6784. AL_RecHandle_t CurrentProgHandle;
  6785. UINT32 CurrentTime;
  6786. AL_Setting_Reload(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL);
  6787. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  6788. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  6789. if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_C)
  6790. {
  6791. DBType_Current = AL_DBTYPE_DVB_C;
  6792. }
  6793. else if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_T)
  6794. {
  6795. DBType_Current = AL_DBTYPE_DVB_T;
  6796. }
  6797. else if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_S)
  6798. {
  6799. DBType_Current = AL_DBTYPE_DVB_S;
  6800. }
  6801. CurrentProgHandle = APP_DVB_Playback_GetCurrentProgHandle(DBType_Current, AL_RECTYPE_DVBTV | AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA);
  6802. AL_Time_GetCurTimeInSecs(&CurrentTime);
  6803. if (CurrentProgHandle == g_stDetails.rem_details.handle
  6804. && CurrentTime <g_stDetails.rem_details.event_end_time_insec
  6805. && CurrentTime > g_stDetails.start_local_time_secs)
  6806. {
  6807. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, (APP_DVB_GLOBAL_EVENT_PVRSCH|PASS_TO_SYSAPP), (UINT32)&g_stDetails);
  6808. }
  6809. #endif
  6810. }
  6811. break;
  6812. case APP_DVB_GLOBAL_EVENT_START_PLAYBACK:
  6813. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  6814. SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  6815. APP_DVB_INTRA_EVENT_START_PLAYBACK, 0);
  6816. break;
  6817. case APP_DVB_GLOBAL_EVENT_STOP_PLAYBACK:
  6818. {
  6819. MID_PlaybackProgState_t eProgState = MID_PLAYBK_PROG_STATE_NORMAL;
  6820. AL_DB_EDBType_t eDBType = AL_DBTYPE_MAX;
  6821. AL_RecHandle_t hCurrPrgHdl = AL_DB_INVALIDHDL;
  6822. if (AL_SUCCESS != APP_Database_GetCurrentDBType(APP_SOURCE_DTV, &eDBType))
  6823. {
  6824. dvb_printf("Get DBType error!!!\n");
  6825. break;
  6826. }
  6827. hCurrPrgHdl = APP_DVB_Playback_GetCurrentProgHandle(eDBType, (AL_RECTYPE_DVBTV |AL_RECTYPE_DVBRADIO|AL_RECTYPE_DVBDATA));
  6828. if (hCurrPrgHdl == AL_DB_INVALIDHDL)
  6829. {
  6830. dvb_printf("Get current program handle error!!!\n");
  6831. break;
  6832. }
  6833. eProgState = APP_DVB_Playback_GetProgStateByHandle(eDBType, hCurrPrgHdl);
  6834. if((APP_DVB_ParentalLock_GetPrtRatinglock())
  6835. &&(eProgState != MID_PLAYBK_PROG_STATE_LOCKED))
  6836. {
  6837. break;
  6838. }
  6839. }
  6840. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  6841. SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  6842. APP_DVB_INTRA_EVENT_STOP_PLAYBACK, dParam);
  6843. break;
  6844. #ifdef CONFIG_SUPPORT_PVR
  6845. case APP_GLOBAL_EVENT_PVRREC_CHANGESOURCE:
  6846. DVBApp_SetPVRSwitchSRC(FALSE);
  6847. DVBApp_SetTVRadioSwap(FALSE);
  6848. if (eServiceType != g_eRecType)
  6849. {
  6850. _DVBApp_Exit_All_Menu();
  6851. if (stoprec_id != AL_SCH_INVALID_ID)
  6852. {
  6853. AL_SCH_UnScheduleEvent(&stoprec_id);
  6854. APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurationID();
  6855. }
  6856. #if 0 //for mantis 199484/209573, don't return to the last program after timer record
  6857. DVBApp_SetTVRadioSwap(TRUE);
  6858. #endif
  6859. if (APP_DVB_Playback_SwapServiceType(eNetType, (AL_DB_ERecordType_t *)&NextServiceType, &u32TotalNum) != AL_SUCCESS)
  6860. {
  6861. dvb_printf("PVRREC Change sevice type fail!!!!!!!!!!\n");
  6862. }
  6863. }
  6864. break;
  6865. case APP_GLOBAL_EVENT_PVR_REMINDER:
  6866. {
  6867. PVR_DEBF("Reminder \n\n");
  6868. AL_Return_t ret;
  6869. AL_DB_EDBType_t DBType_ret = AL_DBTYPE_DVB_T;
  6870. AL_DB_ERecordType_t RecType = AL_RECTYPE_DVBTV;
  6871. al_uint32 CurTimeInSec = 0;
  6872. AL_Time_GetCurTimeInSecs(&CurTimeInSec);
  6873. g_dReminderId = dParam;
  6874. memset(&g_stDetails,0,sizeof(AL_PR_details_t));
  6875. ret = AL_PR_GetById(g_dReminderId, &g_stDetails);
  6876. if (ret != AL_SUCCESS)
  6877. {
  6878. memset(&g_stDetails,0,sizeof(AL_PR_details_t));
  6879. dvb_printf("AL_PR_GetById Error\n");
  6880. break;
  6881. }
  6882. /*Only storage the current REC type for start prompted pop*/
  6883. DVBApp_SetRemType(g_stDetails.rem_type);
  6884. DBType_ret = APP_DVB_Playback_GetCurrentNetType();
  6885. if (DBType_ret == g_stDetails.db_type)
  6886. {
  6887. /* if RF type diff, change RF type on APP_DVB_GLOBAL_EVENT_PVRSCH*/
  6888. //APP_WAKEUP_Recorder_SetTimeout();
  6889. AL_DB_GetRecordType(g_stDetails.rem_details.handle,
  6890. &DBType_ret, &RecType);
  6891. if (RecType == AL_RECTYPE_DVBTV)
  6892. {
  6893. g_eRecType = AL_RECTYPE_DVBTV;
  6894. }
  6895. else if (RecType == AL_RECTYPE_DVBRADIO)
  6896. {
  6897. g_eRecType = AL_RECTYPE_DVBRADIO;
  6898. }
  6899. }
  6900. _DVBApp_CloseAllMenu();
  6901. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_REMIDER);
  6902. }
  6903. break;
  6904. case APP_GLOBAL_EVENT_PVR_REMINDER_CONFIRM:
  6905. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_REMIDER_CONFIRM);
  6906. break;
  6907. case APP_DVB_GLOBAL_EVENT_PVR_EXPIRE:
  6908. {
  6909. //stop recording;
  6910. AL_SCH_sched_id_t Stop_id = AL_SCH_INVALID_ID;
  6911. AL_SCH_sched_id_t Schedule_id = dParam;
  6912. AL_SCH_details_t sch_details;
  6913. AL_SCH_GetScheduleDetails(&dParam, &sch_details);
  6914. PVR_DEBF("hProg ================= 0x%x\n", sch_details.sch_user_para);
  6915. PVR_DEBF("%s %d\n", __FUNCTION__, __LINE__);
  6916. PVR_DEBF("stop record is call\n");
  6917. Stop_id = stoprec_id;
  6918. if (stoprec_id == AL_SCH_INVALID_ID)
  6919. {
  6920. Stop_id = APP_GUIOBJ_DVB_PvrRecDurationTime_GetDurationID();
  6921. }
  6922. if (Schedule_id != Stop_id)
  6923. {
  6924. //if expire timer ID no match, ignor it.
  6925. break;
  6926. }
  6927. else
  6928. {
  6929. //if duration is less then 5s, we will consider this stop timer is wrong
  6930. INT32 g_RecTime;
  6931. MID_RecorderGetStreamTime(&g_RecTime);
  6932. if (g_RecTime < 5)
  6933. {
  6934. break;
  6935. }
  6936. }
  6937. if (u8MidRecState != MID_REC_STATUS_STOP)
  6938. {
  6939. PVR_DEBF("==========timer stop recorder!====\n");
  6940. DVBApp_StopRecord();
  6941. }
  6942. #if 0 //for mantis 199484, don't return to the last program after timer record
  6943. AL_Return_t ret;
  6944. AL_PR_details_t details;
  6945. AL_DB_EDBType_t DBType = APP_DVB_Playback_GetCurrentNetType();
  6946. AL_SCH_sched_id_t ref_id = AL_PR_MAX_NO_REMINDERS;
  6947. AL_SCH_sched_id_t ret_id_first = AL_PR_MAX_NO_REMINDERS;
  6948. ret = AL_PR_Get(DBType, AL_PR_REC_FIRST, AL_PR_EVT_REM | AL_PR_SRV_REM, ref_id, &ret_id_first);
  6949. if (ret == AL_SUCCESS)
  6950. {
  6951. AL_PR_GetById(ret_id_first, &details);
  6952. /*if the comming minute will start recording, no need to change back to last channel*/
  6953. /*CurTimeInSec sometimes has a delay, so minus 2 sec here*/
  6954. if ((CurTimeInSec > details.start_local_time_secs - 60) &&
  6955. (CurTimeInSec - 2 < details.start_local_time_secs))
  6956. {
  6957. break;
  6958. }
  6959. }
  6960. if (DVBApp_GetTVRadioSwap() == TRUE)
  6961. {
  6962. _DVBApp_CloseAllMenu();
  6963. DVBApp_SetTVRadioSwap(FALSE);
  6964. if (APP_DVB_Playback_SwapServiceType(eNetType, (AL_DB_ERecordType_t *)&NextServiceType, &u32TotalNum) != AL_SUCCESS)
  6965. {
  6966. dvb_printf("PVR EXPIRE Change sevice type fail!!!!!!!!!!\n");
  6967. }
  6968. break;
  6969. }
  6970. if (g_ProgHandleB4Rec != 0)
  6971. {
  6972. _DVBApp_CloseAllMenu();
  6973. AL_DB_EDBType_t DBType_ret = AL_DBTYPE_DVB_T;
  6974. AL_DB_ERecordType_t RecType = AL_RECTYPE_DVBTV;
  6975. AL_DB_GetRecordType(g_ProgHandleB4Rec, &DBType_ret, &RecType);
  6976. #if defined(CONFIG_DVB_SYSTEM) || defined(CONFIG_AUS_DVB_SYSTEM)
  6977. APP_RFType_en eRFType = APP_RF_TYPE_DVB_T;
  6978. AL_DB_EDBType_t DBType_Current =
  6979. APP_DVB_Playback_GetCurrentNetType();
  6980. if (DBType_Current != DBType_ret)
  6981. {
  6982. if (details.db_type == AL_DBTYPE_DVB_T)
  6983. {
  6984. eRFType = APP_RF_TYPE_DVB_T;
  6985. }
  6986. else if (details.db_type == AL_DBTYPE_DVB_C)
  6987. {
  6988. eRFType = APP_RF_TYPE_DVB_C;
  6989. }
  6990. else if (details.db_type == AL_DBTYPE_DVB_S)
  6991. {
  6992. eRFType = APP_RF_TYPE_DVB_S;
  6993. }
  6994. APP_GUIOBJ_Channel_SetRFTypeWithHdl(eRFType, g_ProgHandleB4Rec);
  6995. }
  6996. else
  6997. #endif
  6998. {
  6999. _DVBApp_Zapping(RecType, g_ProgHandleB4Rec, FALSE, 0, TRUE);
  7000. }
  7001. g_ProgHandleB4Rec = 0;
  7002. }
  7003. #endif
  7004. }
  7005. break;
  7006. case APP_DVB_GLOBAL_EVENT_PVRSCH:
  7007. {
  7008. if (DVBApp_GetPVRSwitchSRC() == TRUE)
  7009. {
  7010. //resend the timer PVR start message if source change is not finish
  7011. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, (APP_DVB_GLOBAL_EVENT_PVRSCH|PASS_TO_SYSAPP), dParam);
  7012. return 0;
  7013. }
  7014. AL_PR_details_t details;
  7015. memcpy((UINT8 *)&details, (UINT8 *)dParam, sizeof(AL_PR_details_t));
  7016. AL_DB_EDBType_t DBType_ret = AL_DBTYPE_DVB_T;
  7017. AL_DB_EDBType_t DBType_Current = AL_DBTYPE_DVB_T;
  7018. AL_DB_ERecordType_t RecType = AL_RECTYPE_DVBTV;
  7019. AL_RecHandle_t CurrentProgHandle;
  7020. /* get remider program */
  7021. AL_DB_GetRecordType(details.rem_details.handle, &DBType_ret, &RecType);
  7022. /* get current program handele */
  7023. AL_Setting_Reload(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL);
  7024. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  7025. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  7026. if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_C)
  7027. {
  7028. DBType_Current = AL_DBTYPE_DVB_C;
  7029. }
  7030. else if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_T)
  7031. {
  7032. DBType_Current = AL_DBTYPE_DVB_T;
  7033. }
  7034. else if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_S)
  7035. {
  7036. DBType_Current = AL_DBTYPE_DVB_S;
  7037. }
  7038. CurrentProgHandle = APP_DVB_Playback_GetCurrentProgHandle(DBType_Current, AL_RECTYPE_DVBTV | AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA);
  7039. g_ProgHandleB4Rec = 0;
  7040. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  7041. {
  7042. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY);
  7043. }
  7044. /* zap prog */
  7045. if (details.rem_details.handle != CurrentProgHandle)
  7046. {
  7047. PVR_DEBF("handle ==== 0x%x\n", details.rem_details.handle);
  7048. PVR_DEBF(" CurrentProgHandle ==== 0x%x\n", CurrentProgHandle);
  7049. g_ProgHandleB4Rec = CurrentProgHandle;
  7050. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  7051. {
  7052. #ifdef SUPPORT_PVR_REMINDER_CONFIRM_SPEC
  7053. DVBApp_ResetPopup_Channel(); //close all menu before timer rec
  7054. _DVBApp_CloseAllMenu();
  7055. g_ProgHandleB4Rec = 0;
  7056. if (details.rem_type == AL_PR_SRV_REM)
  7057. {
  7058. if (u8MIDRecMode == MID_REC_MODE_MANUAL)
  7059. {
  7060. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_REC_FOR_REMINDER);
  7061. }
  7062. else
  7063. {
  7064. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_TSHIFT_FOR_REMINDER);
  7065. }
  7066. break;
  7067. }
  7068. else
  7069. {
  7070. if (u8MIDRecMode == MID_REC_MODE_MANUAL)
  7071. {
  7072. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_REC_FOR_TIMER_REC);
  7073. }
  7074. else
  7075. {
  7076. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_TSHIFT_FOR_TIMER_REC);
  7077. }
  7078. break;
  7079. }
  7080. #endif
  7081. if (u8MIDRecMode == MID_REC_MODE_MANUAL)
  7082. DVBApp_StopRecord();
  7083. else
  7084. DVBApp_StopTimeshift(TRUE);
  7085. }
  7086. _DVBApp_CloseAllMenu();
  7087. #if defined(CONFIG_DVB_SYSTEM) || defined(CONFIG_AUS_DVB_SYSTEM)
  7088. APP_RFType_en eRFType = APP_RF_TYPE_DVB_T;
  7089. if (DBType_Current != details.db_type)
  7090. {
  7091. if (details.db_type == AL_DBTYPE_DVB_T)
  7092. {
  7093. eRFType = APP_RF_TYPE_DVB_T;
  7094. }
  7095. else if (details.db_type == AL_DBTYPE_DVB_C)
  7096. {
  7097. eRFType = APP_RF_TYPE_DVB_C;
  7098. }
  7099. else if (details.db_type == AL_DBTYPE_DVB_S)
  7100. {
  7101. eRFType = APP_RF_TYPE_DVB_S;
  7102. }
  7103. APP_GUIOBJ_Channel_SetRFTypeWithHdl(eRFType,
  7104. details.rem_details.handle);
  7105. }
  7106. else
  7107. #endif
  7108. {
  7109. _DVBApp_Zapping(RecType, details.rem_details.handle, FALSE, 0, FALSE);
  7110. }
  7111. if (details.rem_type == AL_PR_EVT_REM)
  7112. {
  7113. DVBApp_PVRDEMUX_SetTimerRECFLag(TRUE);
  7114. }
  7115. }
  7116. /* recorder */
  7117. if (details.rem_type == AL_PR_EVT_REM)
  7118. {
  7119. DVBApp_ResetPopup_Channel(); //close all menu before timer rec
  7120. _DVBApp_CloseAllMenu();
  7121. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)//for spec, stop current recording and start timer rec
  7122. {
  7123. if (u8MIDRecMode == MID_REC_MODE_MANUAL)
  7124. DVBApp_StopRecord();
  7125. else
  7126. DVBApp_StopTimeshift(TRUE);
  7127. }
  7128. AL_DB_GetRecordsTotalNum(DBType_ret, RecType, &u32TotalNum);
  7129. if (u32TotalNum == 0)
  7130. {
  7131. break;
  7132. }
  7133. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM))
  7134. {
  7135. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM);
  7136. }
  7137. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  7138. {
  7139. PVR_DEBF("%s is call.LINE : %d\n", __FUNCTION__, __LINE__);
  7140. }
  7141. else
  7142. {
  7143. AL_RecHandle_t hProg = AL_DB_INVALIDHDL;
  7144. if (MID_PlaybackGetCurProgHandle(NULL, &hProg) != MID_SUCCESS)
  7145. {
  7146. PVR_DEBF("%s is call.LINE : %d\n", __FUNCTION__, __LINE__);
  7147. PVR_DEBF("Error, get current program handle failed...\n");
  7148. hProg = AL_DB_INVALIDHDL;
  7149. }
  7150. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  7151. {
  7152. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO);
  7153. }
  7154. APP_GUIOBJ_DVB_PvrRec_SetTimerRecord(TRUE);
  7155. _APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurTime();
  7156. #ifdef DEMUX_CONTROL_TEST
  7157. /*if DVBApp_PVRDEMUX_GetTimerRECFLag == FALSE
  7158. * rec current program,
  7159. * else
  7160. * demux maybe don't start. so please wait...
  7161. * see DVBApp_PVRDEMUX_GetTimerRECFLag == TRUE
  7162. *
  7163. */
  7164. if (DVBApp_PVRDEMUX_GetTimerRECFLag() == FALSE)
  7165. {
  7166. PVR_DEBF("\n\n\n[debug rec current program] %s %d\n\n\n",__FUNCTION__,__LINE__);
  7167. DVBApp_PVRDEMUX_StartTimerREC();
  7168. }
  7169. #else
  7170. DVBApp_PVRDEMUX_StartTimerREC();
  7171. #endif
  7172. //when event change, we must save it as soon as possible .for 0165167. by kai.wang
  7173. AL_PR_Update(0, 0);
  7174. //end
  7175. AL_SCH_details_t sch_detail;
  7176. al_uint32 CurTimeInSec = 0; //test
  7177. AL_Time_GetCurTimeInSecs(&CurTimeInSec);
  7178. memset(&sch_detail, 0, sizeof(AL_SCH_details_t));
  7179. sch_detail.sch_event = AL_SCH_TYPE_SINGLE | AL_SCH_TYPE_PRG_EXPIRE_SCH;
  7180. sch_detail.sch_snooze = 0;
  7181. /*when A event end time is B event start time, need take 5s to stop and start flow.*/
  7182. if (AL_PR_CheckEvtEndTime(details.rem_details.event_end_time_insec) == TRUE)
  7183. {
  7184. sch_detail.sch_time = details.rem_details.event_end_time_insec - 5; //for mantis 0156382
  7185. }
  7186. else
  7187. {
  7188. sch_detail.sch_time = details.rem_details.event_end_time_insec;
  7189. }
  7190. sch_detail.sch_user_para = (al_uint32)hProg;
  7191. printf("event_end_time_insec = %d\n", sch_detail.sch_time);
  7192. printf("current time = %d\n", CurTimeInSec);
  7193. AL_SCH_ScheduleEvent(&sch_detail, &stoprec_id, al_null);
  7194. APP_GUIOBJ_DVB_PvrRec_SetDurationTime(details.rem_details.event_end_time_insec - CurTimeInSec); //zhongbaoxing added for mantis 142788 @20110720
  7195. PVR_DEBF("%s %d\n", __FUNCTION__, __LINE__);
  7196. }
  7197. }
  7198. else
  7199. {
  7200. DVBApp_SetTVRadioSwap(FALSE);
  7201. g_ProgHandleB4Rec = 0;
  7202. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  7203. if(APP_WAKEUP_GetBootFlag() == TRUE)
  7204. {
  7205. APP_WAKEUP_RealPowerUp();
  7206. }
  7207. #endif
  7208. }
  7209. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  7210. ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift),
  7211. sizeof(g_stFeatureData.AutoTimeShift), &(g_stFeatureData.AutoTimeShift));
  7212. if (APP_PVR_TIMESHIFT_AUTO == g_stFeatureData.AutoTimeShift)
  7213. {
  7214. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  7215. }
  7216. }
  7217. break;
  7218. case APP_DVB_GLOBAL_EVENT_REMINDER_EXPIRE:
  7219. #ifdef SUB_CUSTOMER_Tianle
  7220. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC))
  7221. {
  7222. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC, APP_DVB_GLOBAL_EVENT_REMINDER_EXPIRE, 0);
  7223. }
  7224. #else
  7225. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST))
  7226. {
  7227. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST, APP_DVB_GLOBAL_EVENT_REMINDER_EXPIRE, 0);
  7228. }
  7229. #endif
  7230. break;
  7231. case APP_DVB_GLOBAL_EVENT_REMINDER_TIME_CHANGE:
  7232. AL_SCH_Handle_Time_Change(dParam);
  7233. UINT32 u32PopMsgDialogType = POPMSG_PROMPT_NO_PROG;
  7234. APP_GUIOBJ_PopMsg_GetMsgDialogType(&u32PopMsgDialogType);
  7235. if ((POPMSG_CONFIRM_REC_REMIDER_TIME == u32PopMsgDialogType)
  7236. ||(POPMSG_CONFIRM_REC_REMIDER_TIME_CONFIRM == u32PopMsgDialogType))
  7237. {
  7238. al_uint32 CurTimeInSec = 0;
  7239. if (AL_Time_GetCurTimeInSecs(&CurTimeInSec) == AL_SUCCESS)
  7240. {
  7241. if ((DVBApp_GetTimerRECStartTime() > CurTimeInSec+PR_NOTIFY_TIME_IN_SEC)
  7242. ||(CurTimeInSec > DVBApp_GetTimerRECStartTime()+PR_NOTIFY_TIME_IN_SEC))
  7243. {
  7244. //system time changed, cancle the REMINDER cut down pop
  7245. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_SYSTEM_TIME_CHANGED);
  7246. }
  7247. }
  7248. }
  7249. break;
  7250. case APP_GLOGAL_EVENT_PVR_ASKFORSTANDBY:
  7251. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRPOWER))
  7252. {
  7253. DVBApp_ResetPopup_Channel();
  7254. _DVBApp_CloseAllMenu();
  7255. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVRPOWER, 0);
  7256. }
  7257. break;
  7258. case APP_GLOGAL_EVENT_PVR_TIMESHIFT_STANDBY:
  7259. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_TIMESHIFT_STANDBY);
  7260. break;
  7261. case APP_GLOBAL_EVENT_PVR_INSERT_USB_POP:
  7262. _DVBApp_ShowPopup(DVB_APP_POP_MSG_INSERT_USB);
  7263. break;
  7264. case APP_GLOBAL_EVENT_PVR_INVALID_USB_POP:
  7265. _DVBApp_ShowPopup(DVB_APP_POP_MSG_INVALID_USB);
  7266. break;
  7267. case APP_GLOBAL_EVENT_PVR_INSERT_USB_CONFIRM:
  7268. _DVBApp_CloseAllMenu();
  7269. _DVBApp_ShowPopup(DVB_APP_POP_MSG_INSERT_USB_CONFIRM);
  7270. break;
  7271. case APP_GLOBAL_EVENT_PVR_INVALID_USB_CONFIRM:
  7272. _DVBApp_CloseAllMenu();
  7273. _DVBApp_ShowPopup(DVB_APP_POP_MSG_INVALID_USB_CONFIRM);
  7274. break;
  7275. #endif
  7276. #ifdef CONFIG_SUPPORT_AUDIO_CODEC_OVERLAY
  7277. case FW_AUDIO_LOADCODEC_OK:
  7278. printf("\n[%s:%d] Load audio codec ok \n\n",__FUNCTION__,__LINE__);
  7279. MID_PlaybackResetPrevAudioCodec();
  7280. break;
  7281. case FW_AUDIO_LOADCODEC_ERROR:
  7282. printf("\n[%s:%d] Load audio codec error \n\n",__FUNCTION__,__LINE__);
  7283. break;
  7284. #endif
  7285. case FW_MONITOR_TUNER_LOCKED:
  7286. dvb_printf(" FW_MONITOR_TUNER_LOCKED event received\n");
  7287. #ifdef DEMUX_CONTROL_TEST
  7288. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  7289. DVB_GUIOBJ_PLAYBACK, FW_MONITOR_TUNER_LOCKED, 0);
  7290. #else
  7291. APP_GUIOBJ_DVB_Playback_SetZappingState(FALSE);
  7292. APP_Video_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);//waitting for 3D function completed,then open video.
  7293. #endif
  7294. #ifdef CONFIG_SUPPORT_3D_EN
  7295. UINT32 value = TV_IDS_String_On;
  7296. _APP_GUIOBJ_3DMenu_GetForce2DAnother(&value);
  7297. DISP_3D_ModeChange_Status_t e3DModeChangeSt = DISP_3D_STATUS_RESET;
  7298. UINT32 u32Mode = 0;
  7299. AL_DB_ERecordType_t eRecordType;
  7300. #if 1
  7301. Boolean bShowLogo = DTV_FALSE;
  7302. bShowLogo = APP_GUIOBJ_DVB_Playback_GetShowLogoState();
  7303. #endif
  7304. MID_PlaybackGetCurProgHandle(&eRecordType, al_null);
  7305. if ((eRecordType == AL_RECTYPE_DVBRADIO) || (bShowLogo == TRUE))
  7306. {
  7307. APP_GUIOBJ_3DMenu_SetMode(TV_IDS_String_3DMODE_OFF);
  7308. }
  7309. else
  7310. {
  7311. MID_DISP_DTVGet3DModeChangeSt(&e3DModeChangeSt);
  7312. if (DISP_3D_STATUS_RESET == e3DModeChangeSt)
  7313. {
  7314. APP_GUIOBJ_3DMenu_SetMode(TV_IDS_String_3DMODE_OFF);
  7315. }
  7316. else if (DISP_3D_STATUS_ALWAYS_ON == e3DModeChangeSt)
  7317. {
  7318. APP_GUIOBJ_3DMenu_GetMode(&u32Mode);
  7319. if(value == TV_IDS_String_On)
  7320. {
  7321. //set 3D mode to Off
  7322. APP_GUIOBJ_3DMenu_SetModeNoOutPutStructure(u32Mode);
  7323. _APP_GUIOBJ_3DMenu_SetForce2DAnother(TV_IDS_String_On);
  7324. }
  7325. else
  7326. {
  7327. APP_GUIOBJ_3DMenu_SetMode(u32Mode);
  7328. }
  7329. }
  7330. else if(DISP_3D_STATUS_ONLY_2D3D_ALWAYS_ON == e3DModeChangeSt)
  7331. {
  7332. APP_GUIOBJ_3DMenu_GetMode(&u32Mode);
  7333. if(value == TV_IDS_String_On)
  7334. {
  7335. if(u32Mode == TV_IDS_String_3DMODE_2D23D)
  7336. {
  7337. APP_GUIOBJ_3DMenu_SetModeNoOutPutStructure(u32Mode);
  7338. _APP_GUIOBJ_3DMenu_SetForce2DAnother(TV_IDS_String_On);
  7339. }
  7340. else
  7341. {
  7342. if(bSet3DMode == DTV_TRUE)
  7343. {
  7344. bSet3DMode = DTV_FALSE;
  7345. }
  7346. else
  7347. {
  7348. APP_GUIOBJ_3DMenu_SetMode(TV_IDS_String_3DMODE_OFF);
  7349. }
  7350. }
  7351. //_APP_GUIOBJ_3DMenu_SetForce2DAnother(TV_IDS_String_On);
  7352. }
  7353. else if(u32Mode == TV_IDS_String_3DMODE_2D23D)//Force 2D is off
  7354. {
  7355. APP_GUIOBJ_3DMenu_SetMode(TV_IDS_String_3DMODE_2D23D);
  7356. }
  7357. else //if(u32Mode == TV_IDS_String_3DMODE_2D23D)
  7358. {
  7359. if(bSet3DMode == DTV_TRUE)
  7360. {
  7361. bSet3DMode = DTV_FALSE;
  7362. }
  7363. else
  7364. {
  7365. APP_GUIOBJ_3DMenu_SetMode(TV_IDS_String_3DMODE_OFF);
  7366. }
  7367. }
  7368. }
  7369. }
  7370. #endif
  7371. /* modify by qinhe for mantis 0011315 */
  7372. //APP_Video_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  7373. //MID_DISP_DTVInformDisplayPipe();
  7374. #ifdef CONFIG_SUPPORT_PVR
  7375. /*< modify by kai.wang*/
  7376. //MID_RecorderSetSignalEx(PRIMARY_REC_UNIT, MID_REC_SIGNAL_GOOD);
  7377. if (u8MidRecState == MID_REC_STATUS_PAUSE && g_bIsPlaykey == FALSE)
  7378. {
  7379. MID_RecorderPauseResume();
  7380. }
  7381. _DVBApp_Recorder_PauseResume();
  7382. #endif
  7383. //DVBApp_CheckProgramType(TRUE);
  7384. /*close Standby menu*/
  7385. //AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  7386. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO))
  7387. {
  7388. if(APP_GUIOBJ_SleepTimer_GetOpenStandby() == al_true)
  7389. {
  7390. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO);
  7391. if(APP_GUIOBJ_SleepTimer_GetSleepPopConflict() == TRUE)
  7392. {
  7393. APP_GUIOBJ_SleepTimer_SetSleepPopConflict(FALSE);
  7394. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_ATV,
  7395. (APP_GLOBAL_EVENT_SLEEP_TIMER_INFO|PASS_TO_SYSAPP), APP_POWERDOWN_SLEEP);
  7396. }
  7397. }
  7398. }
  7399. #if defined (CONFIG_SUPPORT_TTX ) && defined(CONFIG_SUPPORT_TTX_DISP_FOR_AUS)
  7400. APP_SetTTXTimer(0);
  7401. #endif
  7402. #ifdef CONFIG_SUPPORT_MHEG5
  7403. if (APP_Area_SupportDtg())
  7404. {
  7405. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB | OSD2CTRLMDL_MH5);
  7406. }
  7407. #endif
  7408. break;
  7409. case APP_GLOBAL_EVENT_CREATE_FATNET:
  7410. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVNET))
  7411. {
  7412. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FAVNET, 0);
  7413. }
  7414. break;
  7415. #ifdef CONFIG_SUPPORT_MHEG5
  7416. case APP_DVB_GLOBAL_EVENT_MHEG5_EXIST:
  7417. case APP_DVB_GLOBAL_EVENT_MHEG5_NOT_EXIST:
  7418. DVBApp_CheckProgramType(TRUE);
  7419. break;
  7420. case APP_DVB_GLOBAL_EVENT_MHEG5_BOOT_CAROUSEL_CHANGE:
  7421. {
  7422. al_bool bPsiMonState = al_false;
  7423. AL_RecHandle_t hCurrProgHdl = MID_PsiMonQueryCurrentProgHdl();
  7424. AL_PSI_Monitor_GetState(&bPsiMonState);
  7425. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  7426. {
  7427. APP_DVB_Mheg5_Stop(MHEG5_STOP_ALL);
  7428. APP_DVB_Mheg5_Start(0);
  7429. }
  7430. if (bPsiMonState)
  7431. {
  7432. AL_PSI_Monitor_Stop(al_false, al_false);
  7433. if (hCurrProgHdl != AL_DB_INVALIDHDL)
  7434. {
  7435. AL_PSI_Monitor_Start(hCurrProgHdl, al_false);
  7436. }
  7437. }
  7438. }
  7439. break;
  7440. #ifdef CONFIG_SUPPORT_MHEG5_ICS
  7441. case APP_DVB_GLOBAL_EVENT_MHEG5_ICS_PFG_SHOW:
  7442. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  7443. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  7444. if(g_stFeatureData.ChildLock == APP_SYSTEMLOCK_ON)
  7445. {
  7446. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  7447. }
  7448. else
  7449. {
  7450. MHEG5_ICS_NotifyGuidanceResponse(TRUE);
  7451. }
  7452. break;
  7453. case APP_DVB_GLOBAL_EVENT_MHEG5_ICS_PFG_HIDE:
  7454. break;
  7455. case APP_DVB_GLOBAL_EVENT_MHEG5_SET_SUBTITLE_MODE:
  7456. if(MHEG5_ICS_IsRunning() == FALSE)
  7457. {
  7458. if(dParam)
  7459. {
  7460. dvb_printf("APP_DVB_GLOBAL_EVENT_MHEG5_SET_SUBTITLE_MODE: show\n");
  7461. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  7462. }
  7463. else
  7464. {
  7465. dvb_printf("APP_DVB_GLOBAL_EVENT_MHEG5_SET_SUBTITLE_MODE: hide\n");
  7466. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB);
  7467. }
  7468. }
  7469. break;
  7470. #endif
  7471. #endif
  7472. case FW_MONITOR_TUNER_UNLOCKED:
  7473. //MID_PlaybackStartAVChannel(eServiceType, hProg);
  7474. #ifdef CONFIG_QSD
  7475. // To echo message with DTV has no signal for chip test using.
  7476. con_dbg_echo('G', 'O');
  7477. con_dbg_echo('O', 'D');
  7478. #endif
  7479. dvb_printf(" FW_MONITOR_TUNER_UNLOCKED event received\n");
  7480. if (APP_GUIOBJ_DVB_Playback_GetZappingState())
  7481. {
  7482. APP_GUIOBJ_DVB_Playback_SetZappingState(FALSE);
  7483. }
  7484. #ifdef CONFIG_CIPLUS_SUPPORT
  7485. if( APP_CIPLUS_IsVirtualChannel(0) )
  7486. return 0;
  7487. #endif
  7488. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_ALL);
  7489. /* reset set unmute flag */
  7490. bSetUnMuteFlag = FALSE;
  7491. g_bMidHasUnmute = FALSE;
  7492. g_SetPQFlag = FALSE;
  7493. //g_bNoSteamData = AL_DVB_MONITOR_VALUE_INVAILED;
  7494. #ifdef SUPPORT_DTV_SHOW_BLUESCREEN
  7495. g_bIsBlueScreen = FALSE;
  7496. #endif
  7497. {
  7498. AL_DB_ERecordType_t eRecordType;
  7499. if (MID_SUCCESS == MID_PlaybackGetCurProgHandle(&eRecordType, al_null))
  7500. {
  7501. if (eRecordType == AL_RECTYPE_DVBTV)
  7502. {
  7503. if ((MID_PlaybackIsPauseState() == 0)
  7504. #ifdef CONFIG_SUPPORT_PVR
  7505. && (DRV_SUCCESS != MID_RecorderIsCurRecording())
  7506. && (!MID_TSPLParser_GetThreadState())
  7507. #endif
  7508. )
  7509. {
  7510. //zhongbaoxing added for mantis 0166730 @20120224
  7511. APP_Video_SetMute(TRUE, TRUE, APP_MUTE_MODE_NO_SIGNALE, eSourType);
  7512. //MID_PlaybackClearScreenNow(); //note: this function is no use anymore because of the bandwidth issue.
  7513. }
  7514. #ifdef CONFIG_SUPPORT_3D_EN
  7515. APP_StorageSource_Type_t eStorageSourTypeT = APP_STORAGE_SOURCE_MAX;
  7516. eStorageSourTypeT = APP_Data_UserSetting_SourceTypeMappingToStorage(eSourType);
  7517. UINT32 value = TV_IDS_String_On;
  7518. _APP_GUIOBJ_3DMenu_GetForce2DAnother(&value);
  7519. DISP_3D_ModeChange_Status_t e3DModeChangeSt = DISP_3D_STATUS_RESET;
  7520. UINT32 u32Mode = 0;
  7521. MID_DISP_DTVGet3DModeChangeSt(&e3DModeChangeSt);
  7522. if (DISP_3D_STATUS_RESET == e3DModeChangeSt)
  7523. {
  7524. APP_GUIOBJ_3DMenu_GetMode(&u32Mode);
  7525. if(bSet3DMode == DTV_TRUE)
  7526. {
  7527. bSet3DMode = DTV_FALSE;
  7528. }
  7529. else
  7530. {
  7531. switch(u32Mode)
  7532. {
  7533. case TV_IDS_String_3DMODE_OFF:
  7534. case TV_IDS_String_3DMODE_AUTO:
  7535. case TV_IDS_String_3DMODE_2D23D:
  7536. case TV_IDS_String_3DMODE_SBS3D:
  7537. case TV_IDS_String_3DMODE_SBSH3D:
  7538. case TV_IDS_String_3DMODE_TAB3D:
  7539. case TV_IDS_String_3DMODE_FP3D:
  7540. u32Mode = SPAL_PQ_3DMODE_OFF;
  7541. break;
  7542. default:
  7543. u32Mode = SPAL_PQ_3DMODE_OFF;
  7544. break;
  7545. }
  7546. //APP_GUIOBJ_3DMenu_SetMode(u32Mode);
  7547. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0,
  7548. sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  7549. g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D = u32Mode;
  7550. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  7551. ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D),
  7552. sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D),
  7553. &(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D));
  7554. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  7555. ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D),
  7556. sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D));
  7557. }
  7558. }
  7559. else if (DISP_3D_STATUS_ALWAYS_ON == e3DModeChangeSt)
  7560. {
  7561. APP_GUIOBJ_3DMenu_GetMode(&u32Mode);
  7562. if(value == TV_IDS_String_On)
  7563. {
  7564. //set 3D mode to Off
  7565. // _APP_GUIOBJ_3DMenu_SetForce2DAnother(TV_IDS_String_On);
  7566. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0,
  7567. sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  7568. g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D= SPAL_PQ_3DForce2D_ON;
  7569. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  7570. ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D),
  7571. sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D),
  7572. &(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D));
  7573. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  7574. ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D),
  7575. sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D));
  7576. }
  7577. else
  7578. {
  7579. //dvb_printf("\n\n\n\n@@@@@@DTV No signal Always On\n\n\n");
  7580. switch(u32Mode)
  7581. {
  7582. case TV_IDS_String_3DMODE_OFF:
  7583. u32Mode = SPAL_PQ_3DMODE_OFF;
  7584. break;
  7585. case TV_IDS_String_3DMODE_AUTO:
  7586. u32Mode = SPAL_PQ_3DMODE_ATUO;
  7587. break;
  7588. case TV_IDS_String_3DMODE_2D23D:
  7589. u32Mode = SPAL_PQ_3DMODE_2D3D;
  7590. break;
  7591. case TV_IDS_String_3DMODE_SBS3D:
  7592. u32Mode = SPAL_PQ_3DMODE_SBS3D;
  7593. break;
  7594. case TV_IDS_String_3DMODE_TAB3D:
  7595. u32Mode = SPAL_PQ_3DMODE_TAB3D;
  7596. break;
  7597. case TV_IDS_String_3DMODE_FP3D:
  7598. u32Mode = SPAL_PQ_3DMODE_FP3D;
  7599. break;
  7600. default:
  7601. u32Mode = SPAL_PQ_3DMODE_ATUO;
  7602. break;
  7603. }
  7604. //APP_GUIOBJ_3DMenu_SetMode(u32Mode);
  7605. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0,
  7606. sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  7607. g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D = u32Mode;
  7608. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  7609. ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D),
  7610. sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D),
  7611. &(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D));
  7612. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  7613. ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D),
  7614. sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D));
  7615. }
  7616. }
  7617. else if(DISP_3D_STATUS_ONLY_2D3D_ALWAYS_ON == e3DModeChangeSt)
  7618. {
  7619. APP_GUIOBJ_3DMenu_GetMode(&u32Mode);
  7620. if(value == TV_IDS_String_On)
  7621. {
  7622. //set 3D mode to Off
  7623. //_APP_GUIOBJ_3DMenu_SetForce2DAnother(TV_IDS_String_On);
  7624. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0,
  7625. sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  7626. g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D= SPAL_PQ_3DForce2D_ON;
  7627. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  7628. ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D),
  7629. sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D),
  7630. &(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D));
  7631. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  7632. ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D),
  7633. sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D));
  7634. }
  7635. else if(u32Mode != TV_IDS_String_3DMODE_2D23D)
  7636. {
  7637. //APP_GUIOBJ_3DMenu_SetMode(TV_IDS_String_3DMODE_OFF);
  7638. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0,
  7639. sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  7640. g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D = SPAL_PQ_3DMODE_OFF;
  7641. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  7642. ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D),
  7643. sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D),
  7644. &(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D));
  7645. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  7646. ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D),
  7647. sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D));
  7648. }
  7649. else
  7650. {
  7651. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0,
  7652. sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  7653. g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D = SPAL_PQ_3DMODE_2D3D;
  7654. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  7655. ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D),
  7656. sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D),
  7657. &(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D));
  7658. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  7659. ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D),
  7660. sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D));
  7661. }
  7662. }
  7663. #endif
  7664. }
  7665. }
  7666. }
  7667. #ifdef CONFIG_SUPPORT_PVR
  7668. /*< modify by kai.wang*/
  7669. //MID_RecorderSetSignalEx(PRIMARY_REC_UNIT, MID_REC_SIGNAL_BAD);
  7670. if (u8MidRecState == MID_REC_STATUS_START)
  7671. {
  7672. MID_RecorderPauseResume();
  7673. }
  7674. _DVBApp_Recorder_PauseResume();
  7675. #endif
  7676. //if (APP_Area_SupportDtg())
  7677. if(APP_Get_DTVHiddenScanState()!=TRUE)
  7678. {
  7679. AL_DB_EDBType_t eDBType = APP_DVB_Playback_GetCurrentNetType();
  7680. AL_RecHandle_t hCurrProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eDBType, (AL_RECTYPE_DVBTV|AL_RECTYPE_DVBRADIO|AL_RECTYPE_DVBDATA));
  7681. AL_PSI_Monitor_Stop(FALSE, FALSE);
  7682. if (hCurrProgHdl != AL_DB_INVALIDHDL)
  7683. {
  7684. AL_PSI_Monitor_Start(hCurrProgHdl, FALSE);
  7685. }
  7686. }
  7687. if (APP_GetPlaybackPauseState() == TRUE)
  7688. {
  7689. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  7690. {
  7691. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  7692. }
  7693. MID_PlaybackStreamResume(1);
  7694. APP_SetPlaybackPauseState(FALSE);
  7695. #ifdef CONFIG_SUPPORT_SUBTITLE
  7696. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  7697. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  7698. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  7699. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  7700. if (g_stUserInfoData.Subtitle == APP_SWITCH_ON)
  7701. {
  7702. #ifdef CONFIG_DTV_SUPPORT
  7703. AL_Subtitle_Type_t SubtitleType = AL_SUBTITLE_TYPE_MAX;
  7704. if (APP_GUIOBJ_SubTitle_GetType(&SubtitleType) == TRUE)
  7705. {
  7706. AL_Subtitle_SetFreeze(FALSE);
  7707. }
  7708. #endif
  7709. }
  7710. #endif
  7711. }
  7712. #ifdef CONFIG_SUPPORT_TTX
  7713. #ifndef CONFIG_SUPPORT_TTX_DISP_FOR_AUS
  7714. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  7715. {
  7716. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  7717. }
  7718. AL_TTX_Reset();
  7719. #else
  7720. APP_SetTTXTimer(80);//8s
  7721. #endif
  7722. #endif
  7723. if (stDvbInst.bAppState != SYSTEM_RUNNING)
  7724. {
  7725. break;
  7726. }
  7727. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD))
  7728. {
  7729. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD);
  7730. }
  7731. #ifdef CONFIG_SUPPORT_SUBTITLE
  7732. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU))
  7733. {
  7734. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU);
  7735. }
  7736. #endif
  7737. #ifdef CONFIG_SUPPORT_PVR
  7738. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME))
  7739. {
  7740. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME);
  7741. }
  7742. #endif
  7743. if (APP_RF_TYPE_DVB_S == g_stChannelData.TV_Connection)
  7744. {
  7745. DVBApp_CheckProgramType(FALSE);
  7746. }
  7747. else
  7748. {
  7749. DVBApp_CheckProgramType(TRUE);
  7750. }
  7751. #ifdef AC_ON_AUTO_GET_TIME
  7752. if (g_fBackgroundGetTime == TRUE)
  7753. {
  7754. APP_WAKEUP_SetBootFlag(FALSE);
  7755. dvb_printf("\n ----- tuner unlock, back ground get time fail!!!\n");
  7756. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF);
  7757. }
  7758. #endif
  7759. break;
  7760. case FW_EPG_NOWNEXT_UPDATE_EVENT:
  7761. g_bForceProcessEventCbk = FALSE;
  7762. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  7763. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  7764. if(g_stFeatureData.ChildLock)
  7765. {
  7766. #if 0
  7767. //add for 0196870
  7768. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG))
  7769. {
  7770. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  7771. {
  7772. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  7773. }
  7774. }
  7775. #endif
  7776. AL_Event_t event_hd = (AL_Event_t)dParam;
  7777. al_uint8 bSignalState = al_false;
  7778. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  7779. if (bSignalState == AL_DVB_MONITOR_VALUE_TRUE && event_hd)
  7780. {
  7781. UINT8 rating = 0;
  7782. AL_RecHandle_t hCurrProgHdl = AL_DB_INVALIDHDL;
  7783. al_uint16 usServiceId = 0xffff;
  7784. al_uint16 usOrigNetId = 0xffff;
  7785. al_uint16 usTsId = 0xffff;
  7786. AL_Event_Details_t event_cur;
  7787. memset(&event_cur, 0, sizeof(AL_Event_Details_t));
  7788. MID_PlaybackGetCurProgHandle(al_null, &hCurrProgHdl);
  7789. AL_DB_QueryDetailFieldByName(hCurrProgHdl, (al_uint8 *)"usServiceId", (al_void *)&usServiceId);
  7790. AL_DB_QueryDetailFieldByName(hCurrProgHdl, (al_uint8 *)"usOrigNetId", (al_void *)&usOrigNetId);
  7791. AL_DB_QueryDetailFieldByName(hCurrProgHdl, (al_uint8 *)"usTsId", (al_void *)&usTsId);
  7792. AL_Event_GetCurrNextEventsForCurrRating(eNetType, usOrigNetId, usTsId, usServiceId, &event_cur, NULL);
  7793. rating = event_cur.event_rating;
  7794. APP_DVB_ParentalLock_GetValidParentalRating(&rating);
  7795. if(APP_DVB_ParentalLock_CheckPrtRating(&rating) && !APP_DVB_Playback_IsUnlock())
  7796. {
  7797. APP_DVB_Playback_SetUnlock(al_false);
  7798. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  7799. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  7800. #ifndef PLAY_VIDEO_FOR_ALLSRV
  7801. if (eServiceType == AL_RECTYPE_DVBRADIO)
  7802. {
  7803. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  7804. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_STOP_PLAYBACK,
  7805. ( PLAYBACK_STOP_MHEG5 | PLAYBACK_KEEP_FRAMEBUF));
  7806. }
  7807. else
  7808. #endif
  7809. {
  7810. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  7811. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_STOP_PLAYBACK,
  7812. (PLAYBACK_STOP_SUBTITLE|PLAYBACK_STOP_MHEG5));
  7813. }
  7814. /*#ifdef SUPPORT_PVR
  7815. if (MID_REC_STATUS_STOP != u8MidRecState)
  7816. {
  7817. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  7818. {
  7819. #ifdef SUPPORT_SPEC_PVR_RECORD// TEAC allow record while the program locked, however the others did not
  7820. if (DVBAPP_Pvr_GetRECPlayFlag() == TRUE)
  7821. {
  7822. DVBApp_StopTimeshift(FALSE);
  7823. }
  7824. #else
  7825. DVBApp_StopRecord();
  7826. #endif
  7827. }
  7828. else
  7829. {
  7830. #ifdef SUPPORT_SPEC_PVR_RECORD// TEAC allow record while the program locked, however the others did not
  7831. DVBApp_StopTimeshift(FALSE);
  7832. #else
  7833. DVBApp_StopTimeshift(TRUE);
  7834. #endif
  7835. }
  7836. }
  7837. #endif*/
  7838. if (!APP_MenuMgr_Exist_Main_Menu())
  7839. {
  7840. UINT32 u32PopMsgDialogType = POPMSG_PROMPT_NO_PROG;
  7841. APP_GUIOBJ_PopMsg_GetMsgDialogType(&u32PopMsgDialogType);
  7842. if((DVBApp_IsPopupExist(PLAYBACK_POPUP_PWD_LOCKED) == FALSE)
  7843. /*#ifdef SUPPORT_PVR
  7844. && (u32PopMsgDialogType != POPMSG_PROMPT_INITIAL_AUTOTIMESHIFT)
  7845. && (u32PopMsgDialogType != POPMSG_PROMPT_INITIAL_REC)
  7846. && (u32PopMsgDialogType != POPMSG_PROMPT_INITIAL_TIMESHIFT)
  7847. #endif*/
  7848. )
  7849. {
  7850. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  7851. }
  7852. }
  7853. }
  7854. }
  7855. }
  7856. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPGEXTEND))
  7857. {
  7858. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  7859. SYS_APP_DVB, DVB_GUIOBJ_EPGEXTEND,
  7860. FW_EPG_NOWNEXT_UPDATE_EVENT, 0);
  7861. }
  7862. else if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG))
  7863. {
  7864. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  7865. SYS_APP_DVB, DVB_GUIOBJ_EPG,
  7866. FW_EPG_NOWNEXT_UPDATE_EVENT, 0);
  7867. }
  7868. else if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  7869. {
  7870. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  7871. SYS_APP_DVB, DVB_GUIOBJ_PROGINFO,
  7872. FW_EPG_NOWNEXT_UPDATE_EVENT, 0);
  7873. }
  7874. break;
  7875. case FW_MONITOR_STREAM_NO_DATA:
  7876. dvb_printf(" FW_MONITOR_STREAM_NO_DATA event received\n");
  7877. g_UnsupportVideo = FALSE;
  7878. /* reset set unmute flag */
  7879. g_bNoSteamData = TRUE;
  7880. bSetUnMuteFlag = FALSE;
  7881. g_bMidHasUnmute = FALSE;
  7882. g_SetPQFlag = FALSE;
  7883. #ifdef SUPPORT_DTV_SHOW_BLUESCREEN
  7884. g_bIsBlueScreen = FALSE;
  7885. #endif
  7886. #ifdef DEMUX_CONTROL_TEST
  7887. #ifdef CONFIG_CIPLUS_SUPPORT
  7888. APP_DVB_CI_ClearTuneInfo();
  7889. #endif
  7890. #endif
  7891. #ifdef CONFIG_SUPPORT_PVR
  7892. APP_GUIOBJ_DVB_PvrPlayInfo_SetTunerState(FALSE);
  7893. #endif
  7894. /* add by qin.he on 2014/07/22 for mantis 23864 */
  7895. if(APP_Get_DTVHiddenScanState()!=TRUE)
  7896. {
  7897. AL_DB_EDBType_t eDBType = APP_DVB_Playback_GetCurrentNetType();
  7898. AL_RecHandle_t hCurrProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eDBType, (AL_RECTYPE_DVBTV|AL_RECTYPE_DVBRADIO|AL_RECTYPE_DVBDATA));
  7899. AL_PSI_Monitor_Stop(FALSE, FALSE);
  7900. if (hCurrProgHdl != AL_DB_INVALIDHDL)
  7901. {
  7902. AL_PSI_Monitor_Start(hCurrProgHdl, FALSE);
  7903. }
  7904. }
  7905. if(DVBApp_IsPopupExist(PLAYBACK_POPUP_PWD_LOCKED) == TRUE)
  7906. {
  7907. break;
  7908. }
  7909. #ifdef CONFIG_SUPPORT_MHEG5
  7910. if ((APP_Area_SupportDtg())
  7911. && (APP_DVB_Mheg5_GetBootCarouselStatus() != MHEG5_BOOT_CAROUSEL_NOT_EXISTED))
  7912. {
  7913. break;
  7914. }
  7915. else
  7916. #endif
  7917. #ifdef CONFIG_CIPLUS_SUPPORT
  7918. if (MID_DTVCI_GetAppMMIStatus())
  7919. {
  7920. break;
  7921. }
  7922. else
  7923. #endif
  7924. {
  7925. #ifdef CONFIG_SUPPORT_PVR
  7926. if (u8MidRecState == MID_REC_STATUS_START)
  7927. {
  7928. MID_RecorderPauseResume();
  7929. }
  7930. _DVBApp_Recorder_PauseResume();
  7931. #endif
  7932. if (APP_GetPlaybackPauseState() == TRUE)
  7933. {
  7934. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  7935. {
  7936. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  7937. }
  7938. MID_PlaybackStreamResume(1);
  7939. APP_SetPlaybackPauseState(FALSE);
  7940. #ifdef CONFIG_SUPPORT_SUBTITLE
  7941. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  7942. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  7943. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  7944. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  7945. if (g_stUserInfoData.Subtitle == APP_SWITCH_ON)
  7946. {
  7947. #ifdef CONFIG_DTV_SUPPORT
  7948. AL_Subtitle_Type_t SubtitleType = AL_SUBTITLE_TYPE_MAX;
  7949. if (APP_GUIOBJ_SubTitle_GetType(&SubtitleType) == TRUE)
  7950. {
  7951. AL_Subtitle_SetFreeze(FALSE);
  7952. }
  7953. #endif
  7954. }
  7955. #endif
  7956. }
  7957. DVBApp_CheckProgramType(TRUE);
  7958. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_ALL);
  7959. }
  7960. break;
  7961. case FW_MONITOR_STREAM_UNSUPPORT_DATA:
  7962. g_UnsupportVideo = TRUE;
  7963. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  7964. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  7965. if (g_stUserInfoData.Mute == FALSE)
  7966. {
  7967. APP_Audio_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  7968. }
  7969. #ifdef CONFIG_SUPPORT_PVR
  7970. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  7971. {
  7972. dvb_printf("===lxl test %s ,%d is called. now PVR is playing ===\n", __FUNCTION__,__LINE__);
  7973. break;
  7974. }
  7975. APP_GUIOBJ_DVB_PvrPlayInfo_SetTunerState(FALSE);
  7976. #endif
  7977. g_bNoSteamData = FALSE;
  7978. #ifdef CONFIG_SUPPORT_PVR
  7979. if (u8MidRecState == MID_REC_STATUS_START)
  7980. {
  7981. MID_RecorderPauseResume();
  7982. }
  7983. _DVBApp_Recorder_PauseResume();
  7984. #endif
  7985. DVBApp_CheckProgramType(TRUE);
  7986. #ifndef PLAY_VIDEO_FOR_ALLSRV
  7987. if (eServiceType == AL_RECTYPE_DVBRADIO)
  7988. {
  7989. //DVBApp_CheckProgramType(TRUE);
  7990. }
  7991. else
  7992. #endif
  7993. {
  7994. MID_PlaybackProgState_t eProgState = MID_PLAYBK_PROG_STATE_NORMAL;
  7995. hCurrProgHandle = APP_DVB_Playback_GetCurrentProgHandle(eNetType,
  7996. (AL_RECTYPE_DVBTV |AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA));
  7997. eProgState = APP_DVB_Playback_GetProgStateByHandle(eNetType, hCurrProgHandle);
  7998. if (eProgState != MID_PLAYBK_PROG_STATE_LOCKED)
  7999. {
  8000. APP_Video_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  8001. }
  8002. }
  8003. if (DVBApp_GetScrambleStatus() == PROG_STATUS_SCRAMBLE_CLEAR)
  8004. {
  8005. #ifdef CONFIG_SUPPORT_MHEG5
  8006. if (APP_Area_SupportDtg())
  8007. {
  8008. printf("\n [set mheg5 flag] FW_MONITOR_STREAM_HAS_DATA@@@@@@@@@@@@@dvb_app.c@@@@@@@@@@@@line=%d\n",__LINE__);
  8009. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_FORCE|OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5|OSD2CTRLMDL_SUB);
  8010. }
  8011. else
  8012. {
  8013. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  8014. }
  8015. #else
  8016. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  8017. #endif
  8018. }
  8019. #ifdef CONFIG_SUPPORT_INDONESIA_EWS
  8020. if(DVBApp_GetReciveEWS())
  8021. {
  8022. DVBApp_SetReciveEWS(FALSE);
  8023. SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, FW_INDONESIA_EWS_UPDATE|PASS_TO_SYSAPP, 0);
  8024. }
  8025. #endif
  8026. break;
  8027. case FW_MONITOR_STREAM_INVALID_DATA:
  8028. g_UnsupportVideo = FALSE;
  8029. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  8030. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  8031. #ifdef CONFIG_SUPPORT_PVR
  8032. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  8033. if (APP_WAKEUP_GetBootFlag() == TRUE)
  8034. {
  8035. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, APP_SOURCE_MAX);
  8036. }
  8037. else
  8038. #endif
  8039. #endif
  8040. {
  8041. if (g_stUserInfoData.Mute == FALSE)
  8042. {
  8043. APP_Audio_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  8044. }
  8045. }
  8046. case FW_MONITOR_STREAM_HAS_DATA:
  8047. g_UnsupportVideo = FALSE;
  8048. dvb_printf(" FW_MONITOR_STREAM_HAS_DATA event received\n");
  8049. #ifdef CONFIG_SUPPORT_PVR
  8050. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  8051. {
  8052. dvb_printf("===lxl test %s ,%d is called. now PVR is playing ===\n", __FUNCTION__,__LINE__);
  8053. break;
  8054. }
  8055. if (dMessage == FW_MONITOR_STREAM_INVALID_DATA)
  8056. {
  8057. APP_GUIOBJ_DVB_PvrPlayInfo_SetTunerState(FALSE);
  8058. }
  8059. else if (dMessage == FW_MONITOR_STREAM_HAS_DATA)
  8060. {
  8061. APP_GUIOBJ_DVB_PvrPlayInfo_SetTunerState(TRUE);
  8062. }
  8063. #ifdef CONFIG_CHIP_512L
  8064. {
  8065. UINT32 dMsgType = 0;
  8066. APP_GUIOBJ_PopMsg_GetMsgDialogType(&dMsgType);
  8067. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG) && (dMsgType == POPMSG_PROMPT_PLEASEWAIT))
  8068. {
  8069. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  8070. }
  8071. }
  8072. #endif
  8073. #endif
  8074. g_bNoSteamData = FALSE;
  8075. #ifdef CONFIG_SUPPORT_PVR
  8076. if (u8MidRecState == MID_REC_STATUS_PAUSE && g_bIsPlaykey == FALSE)
  8077. {
  8078. MID_RecorderPauseResume();
  8079. }
  8080. _DVBApp_Recorder_PauseResume();
  8081. #endif
  8082. DVBApp_CheckProgramType(TRUE);
  8083. #ifndef PLAY_VIDEO_FOR_ALLSRV
  8084. if (eServiceType == AL_RECTYPE_DVBRADIO)
  8085. {
  8086. //DVBApp_CheckProgramType(TRUE);
  8087. }
  8088. else
  8089. #endif
  8090. {
  8091. MID_PlaybackProgState_t eProgState = MID_PLAYBK_PROG_STATE_NORMAL;
  8092. hCurrProgHandle = APP_DVB_Playback_GetCurrentProgHandle(eNetType,
  8093. (AL_RECTYPE_DVBTV |AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA));
  8094. eProgState = APP_DVB_Playback_GetProgStateByHandle(eNetType, hCurrProgHandle);
  8095. if (eProgState != MID_PLAYBK_PROG_STATE_LOCKED)
  8096. {
  8097. APP_Video_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  8098. }
  8099. }
  8100. if (DVBApp_GetScrambleStatus() == PROG_STATUS_SCRAMBLE_CLEAR)
  8101. {
  8102. #ifdef CONFIG_SUPPORT_MHEG5
  8103. if (APP_Area_SupportDtg())
  8104. {
  8105. printf("\n [set mheg5 flag] FW_MONITOR_STREAM_HAS_DATA@@@@@@@@@@@@@dvb_app.c@@@@@@@@@@@@line=%d\n",__LINE__);
  8106. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_FORCE|OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5|OSD2CTRLMDL_SUB);
  8107. }
  8108. else
  8109. {
  8110. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  8111. }
  8112. #else
  8113. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  8114. #endif
  8115. }
  8116. #ifdef CONFIG_SUPPORT_INDONESIA_EWS
  8117. if(DVBApp_GetReciveEWS())
  8118. {
  8119. DVBApp_SetReciveEWS(FALSE);
  8120. SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, FW_INDONESIA_EWS_UPDATE|PASS_TO_SYSAPP, 0);
  8121. }
  8122. #endif
  8123. break;
  8124. case FW_MONITOR_PARENTAL_LOCKED:
  8125. dvb_printf("FW_MONITOR_PARENTAL_LOCKED received!!\n");
  8126. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  8127. #ifdef SUPPORT_DTV_SHOW_BLUESCREEN
  8128. g_bIsBlueScreen = FALSE;
  8129. #endif
  8130. g_bMidHasUnmute = FALSE;
  8131. if (APP_GUIOBJ_DVB_Playback_GetPlayState() == TRUE)
  8132. {
  8133. #ifdef CONFIG_SUPPORT_TTX
  8134. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  8135. {
  8136. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  8137. }
  8138. #endif
  8139. APP_DVB_ParentalLock_SetPrtRatinglock(TRUE);
  8140. #ifndef PLAY_VIDEO_FOR_ALLSRV
  8141. if (eServiceType == AL_RECTYPE_DVBRADIO )
  8142. {
  8143. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  8144. (APP_DVB_GLOBAL_EVENT_STOP_PLAYBACK|PASS_TO_SYSAPP),
  8145. ( PLAYBACK_STOP_MHEG5 | PLAYBACK_KEEP_FRAMEBUF ));
  8146. }
  8147. else
  8148. #endif
  8149. {
  8150. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  8151. (APP_DVB_GLOBAL_EVENT_STOP_PLAYBACK|PASS_TO_SYSAPP),
  8152. ( PLAYBACK_STOP_SUBTITLE |PLAYBACK_STOP_MHEG5 ));
  8153. }
  8154. #ifdef CONFIG_SUPPORT_PVR
  8155. if (MID_REC_STATUS_STOP != u8MidRecState)
  8156. {
  8157. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  8158. {
  8159. #ifdef SUPPORT_SPEC_PVR_RECORD// TEAC allow record while the program locked, however the others did not
  8160. if (DVBAPP_Pvr_GetRECPlayFlag() == TRUE)
  8161. {
  8162. DVBApp_StopTimeshift(FALSE);
  8163. }
  8164. #else
  8165. DVBApp_StopRecord();
  8166. #endif
  8167. }
  8168. else
  8169. {
  8170. #ifdef SUPPORT_SPEC_PVR_RECORD//TEAC allow record while the program locked, however the others did not
  8171. DVBApp_StopTimeshift(FALSE);
  8172. #else
  8173. DVBApp_StopTimeshift(TRUE);
  8174. #endif
  8175. }
  8176. }
  8177. #ifdef CONFIG_SUPPORT_PVR
  8178. if (u8MidRecState == MID_REC_STATUS_START)
  8179. {
  8180. MID_RecorderPauseResume();
  8181. }
  8182. _DVBApp_Recorder_PauseResume();
  8183. #endif
  8184. #endif
  8185. if (APP_GetPlaybackPauseState() == TRUE)
  8186. {
  8187. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  8188. {
  8189. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  8190. }
  8191. MID_PlaybackStreamResume(1);
  8192. APP_SetPlaybackPauseState(FALSE);
  8193. #ifdef CONFIG_SUPPORT_SUBTITLE
  8194. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  8195. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  8196. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  8197. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  8198. if (g_stUserInfoData.Subtitle == APP_SWITCH_ON)
  8199. {
  8200. #ifdef CONFIG_DTV_SUPPORT
  8201. AL_Subtitle_Type_t SubtitleType = AL_SUBTITLE_TYPE_MAX;
  8202. if (APP_GUIOBJ_SubTitle_GetType(&SubtitleType) == TRUE)
  8203. {
  8204. AL_Subtitle_SetFreeze(FALSE);
  8205. }
  8206. #endif
  8207. }
  8208. #endif
  8209. }
  8210. DVBApp_CheckProgramType(TRUE);
  8211. }
  8212. break;
  8213. case FW_MONITOR_PARENTAL_UNLOCKED:
  8214. dvb_printf("FW_MONITOR_PARENTAL_UNLOCKED is received!!\n");
  8215. g_SetPQFlag = TRUE;
  8216. APP_DVB_ParentalLock_SetPrtRatinglock(FALSE);
  8217. if (APP_GUIOBJ_DVB_Playback_GetPlayState() == FALSE)
  8218. {
  8219. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  8220. SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  8221. APP_DVB_INTRA_EVENT_START_PLAYBACK, 0);
  8222. }
  8223. DVBApp_CheckProgramType(TRUE);
  8224. #ifdef CONFIG_SUPPORT_MHEG5
  8225. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_FORCE|OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5 | OSD2CTRLMDL_SUB);
  8226. #else
  8227. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  8228. #endif
  8229. #ifdef CONFIG_SUPPORT_PVR
  8230. if (u8MidRecState == MID_REC_STATUS_PAUSE && g_bIsPlaykey == FALSE)
  8231. {
  8232. MID_RecorderPauseResume();
  8233. }
  8234. _DVBApp_Recorder_PauseResume();
  8235. #endif
  8236. break;
  8237. case FW_MONITOR_SERVICE_ONLY_AUDIO_SCRAMBLE:
  8238. dvb_printf("FW_MONITOR_SERVICE_ONLY_AUDIO_SCRAMBLE is received!!\n");
  8239. g_bScrambleFlag = PROG_STATUS_ONLY_AUDIO_SCRAMBLED;
  8240. g_bNoSteamData = FALSE;
  8241. DVBApp_CheckProgramType(TRUE);
  8242. break;
  8243. case FW_MONITOR_SERVICE_ONLY_VIDEO_SCRAMBLE:
  8244. g_UnsupportVideo = FALSE;
  8245. #ifdef CONFIG_CI_SUPPORT
  8246. if (IsCAMExist()==FALSE)
  8247. {
  8248. printf("\n\n\nFW_MONITOR_SERVICE_ONLY_VIDEO_SCRAMBLE is received!!,No CAM Inserted!\n\n");
  8249. g_bNoSteamData = FALSE;
  8250. {
  8251. #ifdef CONFIG_SUPPORT_TTX
  8252. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  8253. {
  8254. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  8255. }
  8256. #endif
  8257. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_ALL);
  8258. }
  8259. #ifdef CONFIG_SUPPORT_PVR
  8260. if (u8MidRecState == MID_REC_STATUS_START)
  8261. {
  8262. MID_RecorderPauseResume();
  8263. }
  8264. _DVBApp_Recorder_PauseResume();
  8265. #endif
  8266. g_bScrambleFlag = PROG_STATUS_ONLY_VIDEO_SCRAMBLED;
  8267. DVBApp_CheckProgramType(TRUE);
  8268. }
  8269. else
  8270. {
  8271. printf("\n\n\n\nYibin.wang F=%s,L=%d==============================\n\n\n\n",__FUNCTION__,__LINE__);
  8272. printf("\n\n\nFW_MONITOR_SERVICE_ONLY_VIDEO_SCRAMBLE is received!!,CAM Inserted,Waiting 1sec!\n\n");
  8273. g_Audio_Scramble_Counter = AUDIO_SCRAMBLE_COUNT;
  8274. }
  8275. #endif //CONFIG_CI_SUPPORT
  8276. break;
  8277. case FW_MONITOR_SERVICE_VIDEO_AUDIO_SCRAMBLE:
  8278. printf("\n\n\nFW_MONITOR_SERVICE_VIDEO_AUDIO_SCRAMBLE is received!!\n\n");
  8279. g_bNoSteamData = FALSE;
  8280. g_UnsupportVideo = FALSE;
  8281. {
  8282. #ifdef CONFIG_SUPPORT_TTX
  8283. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  8284. {
  8285. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  8286. }
  8287. #endif
  8288. #ifdef CONFIG_CIPLUS_SUPPORT
  8289. if( (APP_DVB_CI_GetTuneInfo() & CIPLUS_TUNEINFO_NON_DESTRUCTIVE)!=0 || MID_DTVCI_GetAppMMIStatus() )
  8290. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_SUB|OSD2CTRLMDL_TTX);
  8291. else
  8292. #endif
  8293. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_ALL);
  8294. }
  8295. #ifdef CONFIG_SUPPORT_PVR
  8296. if (u8MidRecState == MID_REC_STATUS_START)
  8297. {
  8298. MID_RecorderPauseResume();
  8299. }
  8300. _DVBApp_Recorder_PauseResume();
  8301. #endif
  8302. g_bScrambleFlag = PROG_STATUS_AUDIO_VIDEO_SCRAMBLED;
  8303. DVBApp_CheckProgramType(TRUE);
  8304. break;
  8305. case FW_MONITOR_SERVICE_NO_SCRAMBLE:
  8306. printf("\n\n\nFW_MONITOR_SERVICE_NO_SCRAMBLE is received!!\n\n");
  8307. #ifdef CONFIG_CIPLUS_SUPPORT
  8308. if (APP_CIPLUS_IsProfileSource())
  8309. {
  8310. if (g_isMute)
  8311. {
  8312. break;
  8313. }
  8314. }
  8315. #endif
  8316. #ifdef CONFIG_CI_SUPPORT
  8317. if (g_Audio_Scramble_Counter!=0)
  8318. {
  8319. g_VIP_FINISH_Flg = TRUE;
  8320. g_Audio_Scramble_Counter = 0;
  8321. }
  8322. #if 1
  8323. else
  8324. {
  8325. if (g_VIP_FINISH_Flg==TRUE)
  8326. {
  8327. g_VIP_FINISH_Flg = FALSE;
  8328. }
  8329. }
  8330. #endif
  8331. #endif
  8332. g_bNoSteamData = FALSE;
  8333. g_bScrambleFlag = PROG_STATUS_SCRAMBLE_CLEAR;
  8334. DVBApp_CheckProgramType(TRUE);
  8335. #ifdef CONFIG_SUPPORT_PVR
  8336. if (u8MidRecState == MID_REC_STATUS_PAUSE && g_bIsPlaykey == FALSE)
  8337. {
  8338. MID_RecorderPauseResume();
  8339. }
  8340. _DVBApp_Recorder_PauseResume();
  8341. #endif
  8342. /*add by xm.zeng on 2013/9/23.
  8343. sometimes the video is freezed, subtitle is updated.*/
  8344. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  8345. {
  8346. #ifdef CONFIG_SUPPORT_MHEG5
  8347. printf("\n [set mheg5 flag] FW_MONITOR_SERVICE_NO_SCRAMBLE@@@@@@@@@@@@@dvb_app.c@@@@@@@@@@@@line=%d\n",__LINE__);
  8348. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_FORCE|OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5|OSD2CTRLMDL_SUB);
  8349. #else
  8350. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  8351. #endif
  8352. }
  8353. break;
  8354. case FW_MONITOR_AUDIO_UPDATE:
  8355. dvb_printf("FW_MONITOR_AUDIO_UPDATE is received!!\n");
  8356. APP_GUIOBJ_DVB_MultiAud_DisableListUpdate();
  8357. APP_GUIOBJ_DVB_MultiAud_Update(MULTIAUDIO_UPDATE);
  8358. #ifdef CONFIG_SUPPORT_PVR
  8359. if (APP_GUIOBJ_DVB_PvrRec_PidRemap() != PVR_MSG_SUCCESS)
  8360. {
  8361. dvb_printf("\n MultiAud_Update to remap pid fail!!!\n");
  8362. }
  8363. #endif
  8364. DVBApp_CheckProgramType(TRUE);
  8365. break;
  8366. case FW_MONITOR_TELETEXT_UPDATE:
  8367. dvb_printf("FW_MONITOR_TELETEXT_UPDATE is received !!\n\n");
  8368. #if (defined CONFIG_MOD_PACK_SUB) || (defined CONFIG_MOD_PACK_TT)
  8369. if (umf_checkModuleLoaded(UMFMOD_TT) == 0)
  8370. {
  8371. printf("\n[%s, %d] TT module unload\n",__FUNCTION__,__LINE__);
  8372. break;
  8373. }
  8374. #endif
  8375. #ifdef CONFIG_SUPPORT_TTX
  8376. eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  8377. #ifndef PLAY_VIDEO_FOR_ALLSRV
  8378. if(eSourType != APP_SOURCE_DTV || eServiceType == AL_RECTYPE_DVBRADIO)
  8379. {
  8380. break;
  8381. }
  8382. else
  8383. #endif
  8384. {
  8385. /**< get digital TTX language index from EEPROM */
  8386. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  8387. ITEM_OFFSET(APP_SETTING_Feature_t, DigitalTTLang),
  8388. sizeof(g_stFeatureData.DigitalTTLang),&(g_stFeatureData.DigitalTTLang));
  8389. pref_iso639 = APP_Language_GetISO639ByIndx(g_stFeatureData.DigitalTTLang, APP_DATA_LANG_TYPE_TELETEXT);
  8390. if(pref_iso639 == al_null)
  8391. {
  8392. pref_iso639 = APP_Language_GetISO639_2ByIndx(g_stFeatureData.DigitalTTLang, APP_DATA_LANG_TYPE_TELETEXT);
  8393. }
  8394. if((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)))
  8395. {
  8396. break;
  8397. }
  8398. if(AL_TTX_Stop() == AL_SUCCESS)
  8399. {
  8400. AL_TTX_Start(AL_TTX_SOURCE_TYPE_DIGITAL, pref_iso639);
  8401. }
  8402. #ifdef CONFIG_SUPPORT_SUBTITLE
  8403. /**< get current subtitle on/off status from EEPROM */
  8404. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  8405. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  8406. if(g_stUserInfoData.Subtitle == 1)
  8407. {
  8408. MID_PlaybackProgState_t progstate = MID_PLAYBK_PROG_STATE_REPLACE;
  8409. progstate = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL);
  8410. /*add by xm.zeng on 2013/8/22 for mantis id:0011461*/
  8411. if((progstate != MID_PLAYBK_PROG_STATE_NORMAL)
  8412. && (progstate != MID_PLAYBK_PROG_STATE_VIDEO_AVC)
  8413. && (progstate != MID_PLAYBK_PROG_STATE_VIDEO_MPEG4))
  8414. {
  8415. break;
  8416. }
  8417. if(!(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)))
  8418. {
  8419. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE|OSD2CTRLMDL_SUB);
  8420. }
  8421. }
  8422. #endif
  8423. }
  8424. #endif
  8425. break;
  8426. case FW_MONITOR_SUBTITLE_UPDATE:
  8427. dvb_printf(" FW_MONITOR_SUBTITLE_UPDATE is received !!\n\n");
  8428. #ifdef CONFIG_SUPPORT_SUBTITLE
  8429. #ifdef CONFIG_MOD_PACK_SUB
  8430. if (umf_checkModuleLoaded(UMFMOD_SUB) == 0)
  8431. {
  8432. printf("\n[%s, %d] subtitle module unload\n",__FUNCTION__,__LINE__);
  8433. break;
  8434. }
  8435. #endif
  8436. eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  8437. #ifndef PLAY_VIDEO_FOR_ALLSRV
  8438. if(eSourType != APP_SOURCE_DTV || eServiceType == AL_RECTYPE_DVBRADIO)
  8439. {
  8440. break;
  8441. }
  8442. else
  8443. #endif
  8444. {
  8445. /**< get current subtitle on/off status from EEPROM */
  8446. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  8447. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  8448. if(g_stUserInfoData.Subtitle == 1)
  8449. {
  8450. MID_PlaybackProgState_t progstate = MID_PLAYBK_PROG_STATE_REPLACE;
  8451. progstate = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL);
  8452. /*add by xm.zeng on 2013/8/22 for mantis id:0011461*/
  8453. if((progstate != MID_PLAYBK_PROG_STATE_NORMAL)
  8454. && (progstate != MID_PLAYBK_PROG_STATE_VIDEO_AVC)
  8455. && (progstate != MID_PLAYBK_PROG_STATE_VIDEO_MPEG4))
  8456. {
  8457. break;
  8458. }
  8459. #ifdef CONFIG_SUPPORT_TTX
  8460. if(!(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)))
  8461. #endif
  8462. {
  8463. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE|OSD2CTRLMDL_SUB);
  8464. }
  8465. }
  8466. }
  8467. #endif
  8468. break;
  8469. case APP_DVB_GLOBAL_EVENT_OSD2_UPDATE:
  8470. dvb_printf("APP_DVB_GLOBAL_EVENT_OSD2_UPDATE is received!!\n\n");
  8471. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  8472. if (bSignalState != AL_DVB_MONITOR_VALUE_TRUE)//force to tuner locked
  8473. {
  8474. al_uint8 u8DVBMonState = AL_DVB_MONITOR_VALUE_TRUE;
  8475. AL_DVB_Monitor_SetState(AL_DVB_MONITOR_STATE_SIGNAL, &u8DVBMonState);
  8476. }
  8477. #ifdef CONFIG_SUPPORT_PVR
  8478. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  8479. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  8480. {
  8481. break;
  8482. }
  8483. #endif
  8484. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_FORCE | OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5 | OSD2CTRLMDL_SUB);
  8485. break;
  8486. //zhongbaoxing added for mantis 0164871 @20120105 +++
  8487. #ifdef CONFIG_SUPPORT_MHEG5
  8488. case APP_DVB_GLOBAL_EVENT_CLEAR_POPUP:
  8489. if (TRUE == APP_DVB_Mheg5_GetMheg5DisplayStatus())
  8490. {
  8491. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  8492. if (bSignalState != AL_DVB_MONITOR_VALUE_TRUE)//force to tuner locked
  8493. {
  8494. al_uint8 DVBMonState = AL_DVB_MONITOR_VALUE_TRUE;
  8495. AL_DVB_Monitor_SetState(AL_DVB_MONITOR_STATE_SIGNAL, &DVBMonState);
  8496. }
  8497. }
  8498. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE, UI_EVENT_NULL);
  8499. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE_SERVICE_NOT_RUNNING, UI_EVENT_NULL);
  8500. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE_LOAD_MHEG5, UI_EVENT_NULL);
  8501. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE, UI_EVENT_NULL);
  8502. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  8503. break;
  8504. #endif
  8505. #if defined(CONFIG_CIPLUS_SUPPORT) && defined(CONFIG_SUPPORT_MHEG5)
  8506. case APP_DVB_GLOBAL_EVENT_CI_START_MHEG5:
  8507. {
  8508. dvb_printf("APP_DVB_GLOBAL_EVENT_CI_START_MHEG5\n");
  8509. APP_DVB_Mheg5_SetMheg5DisplayStatus(TRUE);
  8510. }
  8511. break;
  8512. case APP_DVB_GLOBAL_EVENT_CI_STOP_MHEG5:
  8513. {
  8514. dvb_printf("APP_DVB_GLOBAL_EVENT_CI_STOP_MHEG5\n");
  8515. APP_SETTING_UserInfo_t stUserInfoData;
  8516. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  8517. sizeof(APP_SETTING_UserInfo_t), &(stUserInfoData));
  8518. /* Stop MHEG Engine if it's enabled */
  8519. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  8520. {
  8521. #ifdef DEMUX_CONTROL_TEST
  8522. #ifdef CONFIG_CIPLUS_SUPPORT
  8523. APP_DVB_CI_ClearTuneInfo();
  8524. #endif
  8525. #endif
  8526. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_MH5);
  8527. }
  8528. /* Enable Subtitle if it was open */
  8529. if (stUserInfoData.Subtitle)
  8530. {
  8531. dvb_printf("Turn on subtitle\n");
  8532. DVBApp_DataApplicationSwitch(
  8533. OSD2CTRLMDL_ENABLE|OSD2CTRLMDL_SUB);
  8534. }
  8535. /* Enable Subtitle OSD if is was disable */
  8536. mid_sub_dtv_show(1);
  8537. /* Reset variable */
  8538. APP_DVB_Mheg5_SetMheg5DisplayStatus(FALSE);
  8539. }
  8540. break;
  8541. case APP_DVB_GLOBAL_EVENT_SUPPRESS_MHEG_GRAPHICS:
  8542. {
  8543. dvb_printf("APP_DVB_GLOBAL_EVENT_SUPPRESS_MHEG_GRAPHICS\n");
  8544. DVBApp_ApplyAppMMIDisplay();
  8545. }
  8546. break;
  8547. case APP_DVB_GLOBAL_EVENT_SET_SUBTITLE_MODE:
  8548. {
  8549. dvb_printf("APP_DVB_GLOBAL_EVENT_SET_SUBTITLE_MODE\n");
  8550. DVBApp_ApplyAppMMIDisplay();
  8551. }
  8552. break;
  8553. #endif
  8554. #ifdef CONFIG_SUPPORT_MHEG5
  8555. case FM_DTV_AUDIO_STARTED:
  8556. case FM_DTV_AUDIO_SAMPLE_STOPPED:
  8557. case FM_DTV_AUDIO_STOPPED:
  8558. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  8559. {
  8560. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, 0);
  8561. }
  8562. break;
  8563. #endif
  8564. case FW_MONITOR_SERTYPE_CHANGED:
  8565. MID_PlaybackGetCurProgHandle(al_null, &hCurrProgHandle);
  8566. if (hCurrProgHandle != AL_DB_INVALIDHDL)
  8567. {
  8568. AL_DB_ERecordType_t eSrvType = (AL_DB_ERecordType_t)dParam;
  8569. APP_DVB_Playback_SetCurrServiceType(eNetType, eSrvType);
  8570. APP_DVB_Playback_SetCurrentProgHandle(eNetType,eSrvType,hCurrProgHandle);
  8571. }
  8572. _DVBApp_SendServRefleshMsg();
  8573. SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, FW_MONITOR_UPDATE_SERVICE,0);
  8574. break;
  8575. case FW_MONITOR_REMOVE_SERVICE:
  8576. #ifdef SUPPORT_TURKY_NEW_CHNLIST
  8577. if (AL_DBTYPE_DVB_S == eNetType)
  8578. {
  8579. break;
  8580. }
  8581. #endif
  8582. //_DVBApp_ShowPopup(DVB_APP_POP_MSG_SERVICE_REMOVE);
  8583. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR)
  8584. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR)
  8585. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST)
  8586. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST)
  8587. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG)
  8588. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNRENAME)
  8589. #ifdef CONFIG_SUPPORT_PVR
  8590. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMEREDIT)
  8591. #endif
  8592. )
  8593. {
  8594. if(DVBApp_GetUnstableState() == FALSE)
  8595. {
  8596. DVBApp_SetUnstableState(TRUE);
  8597. }
  8598. dvb_printf("Post Process The Unstable Services\n\n");
  8599. break;
  8600. }
  8601. DVBApp_RemoveUnstableService();
  8602. // here not break
  8603. case FW_MONITOR_ADD_SERVICE:
  8604. case FW_MONITOR_UPDATE_SERLCN:
  8605. //_DVBApp_ShowPopup(DVB_APP_POP_MSG_NEW_SERVICE);
  8606. #ifdef SUPPORT_LCN
  8607. /* force process LCN if added service by PSI Monitor */
  8608. #ifdef SUPPORT_DVBS_LCN
  8609. if (eNetType == AL_DBTYPE_DVB_T || eNetType == AL_DBTYPE_DVB_C|| eNetType == AL_DBTYPE_DVB_S)
  8610. #else
  8611. if (eNetType == AL_DBTYPE_DVB_T || eNetType == AL_DBTYPE_DVB_C)
  8612. #endif
  8613. {
  8614. DBLCNConfInfo_t *pLcnConf = AL_LCN_GetLCNConfChannel();
  8615. LCN_PreJudgeLCN();
  8616. LCN_QueryLCNConflict(pLcnConf);
  8617. if (pLcnConf->ConfCount > 0)
  8618. {
  8619. LCN_AutoAssignConflictLCN();
  8620. }
  8621. LCN_PostJudgeLCN();
  8622. }
  8623. #endif
  8624. APP_DVB_ChannelOrderChecking();
  8625. APP_DVB_DataSavingToDB(eNetType);
  8626. _DVBApp_SendServRefleshMsg();
  8627. break;
  8628. #ifdef SUPPORT_DYNAMIC_MULTIPLEXES
  8629. case FW_MONITOR_OTHERTP_SERVICE_FOUND:
  8630. {
  8631. //UINT16 u16Num;
  8632. //AL_PSI_Monitor_GetOtherTpServList(NULL,NULL,&u16Num);
  8633. //_DVBApp_ShowPopup(DVB_APP_POP_MSG_OTH_TP_NEW_SERVICE);
  8634. _DVBApp_NewServicesToDatabase();
  8635. }
  8636. break;
  8637. #endif
  8638. case FW_MONITOR_SERVICE_MOVE:
  8639. _DVBApp_ServiceMove();
  8640. break;
  8641. case FW_MONITOR_REPLACE_SERVICE:
  8642. {
  8643. dvb_printf("[%s:%d] FW_MONITOR_REPLACE_SERVICE !!!!!!!!!!!!!\n",__FUNCTION__,__LINE__);
  8644. AL_RecHandle_t hReplaceProg = AL_DB_INVALIDHDL;
  8645. hReplaceProg = (AL_RecHandle_t)dParam;
  8646. _DVBApp_Zapping(eServiceType, hReplaceProg, TRUE, FW_MONITOR_REPLACE_SERVICE, TRUE);
  8647. }
  8648. break;
  8649. case FW_MONITOR_REPLACE_SIMULCASE_SERVICE:
  8650. dvb_printf("[%s:%d] FW_MONITOR_REPLACE_SIMULCASE_SERVICE !!!!!!!!!!!!!\n",__FUNCTION__,__LINE__);
  8651. _DVBApp_SimulcaseDispose(dParam);
  8652. break;
  8653. #ifdef SUPPORT_CHANGE_TS_DYNAMICALLY
  8654. case FW_MONITOR_TS_CHANGED:
  8655. dvb_printf("[%s:%d] FW_MONITOR_TS_CHANGED !!!!!!!!!!!!!!!!\n\n",__FUNCTION__,__LINE__);
  8656. #ifdef CONFIG_CIPLUS_SUPPORT
  8657. if (APP_CIPLUS_IsProfileSource())
  8658. {
  8659. dvb_printf("[%s:%d] Can't update channel in in Profile Source.\n\n",__FUNCTION__,__LINE__);
  8660. break;
  8661. }
  8662. #endif
  8663. #ifdef SUPPORT_TURKY_NEW_CHNLIST // SUPPORT_DYNAMIC_SRVUPDATE_S
  8664. if (eNetType == AL_DBTYPE_DVB_S)
  8665. {
  8666. break;
  8667. }
  8668. #endif
  8669. #ifdef CONFIG_SUPPORT_PVR
  8670. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  8671. {
  8672. DVBApp_StopRecord();
  8673. }
  8674. else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode) ||
  8675. (MID_REC_MODE_AUTO == u8MIDRecMode))
  8676. {
  8677. DVBApp_StopTimeshift(TRUE);
  8678. if (APP_PVR_TIMESHIFT_AUTO == u8AutoTimeShift)
  8679. {
  8680. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  8681. }
  8682. }
  8683. #endif
  8684. #ifdef CONFIG_SUPPORT_SUBTITLE
  8685. APP_GUIOBJ_SubTitle_SetType(AL_SUBTITLE_TYPE_MAX);
  8686. #endif
  8687. if(APP_Get_DTVHiddenScanState()!=TRUE)
  8688. {
  8689. if (APP_MenuMgr_Exist_Factory_Menu())
  8690. {
  8691. APP_MenuMgr_Exit_Factory_Menu();
  8692. }
  8693. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  8694. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  8695. #ifdef CONFIG_DVB_SYSTEM
  8696. if((g_stChannelData.Country == AREA_NORWAY) && ((dParam & 0xFFFF) != 0x2242))
  8697. {
  8698. dvb_printf("[%s:%d]no scan for ts change , county = %d, OriNetId = 0x%x \n",__FUNCTION__,__LINE__,g_stChannelData.Country,dParam);
  8699. break;
  8700. }
  8701. #endif
  8702. if(APP_Get_DTVTSChangeNeedScanState(dParam)!=TRUE)
  8703. {
  8704. dvb_printf("[%s:%d]no scan for ts change ,\n",__FUNCTION__,__LINE__);
  8705. break;
  8706. }
  8707. APP_DTV_ScanProcess_TSChange();
  8708. }
  8709. break;
  8710. #endif
  8711. case FW_MONITOR_NEW_TSID:
  8712. //case UI_EVENT_RED:
  8713. /* pop up msg for user to start channel search */
  8714. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  8715. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  8716. #ifdef CONFIG_DVB_SYSTEM
  8717. if (AREA_NORWAY == g_stChannelData.Country
  8718. #ifdef SUPPORT_THAILAND_EVORA
  8719. || AREA_THAILAND == g_stChannelData.Country
  8720. #endif
  8721. )
  8722. {
  8723. _DVBApp_Exit_All_Menu();
  8724. _DVBApp_ShowPopup(DVB_APP_POP_MSG_UPDATE_TSID);
  8725. }
  8726. #endif
  8727. //SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, FW_MONITOR_NEW_TSID, 0);
  8728. break;
  8729. case FW_MONITOR_TIME_UPDATE:
  8730. {
  8731. al_uint32 TimeInSec = 0;
  8732. AL_Time_t time;
  8733. memset(&time, 0, sizeof(time));
  8734. AL_Time_MjdToYmd(AL_Time_GetRawMjd(),&time.Year, &time.Month, &time.Day);
  8735. AL_Time_GetRawTime(&time.Hour, &time.Min, &time.Sec);
  8736. AL_Time_DateToSecs(&time, &TimeInSec);
  8737. tv_SetBaseTimetoSystem(TimeInSec);
  8738. }
  8739. #ifdef CONFIG_SUPPORT_PVR
  8740. #ifdef SUB_CUSTOMER_Tianle
  8741. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC))
  8742. {
  8743. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC,
  8744. APP_GLOBAL_EVENT_REFRESH_DATA, 0);
  8745. }
  8746. #else
  8747. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST))
  8748. {
  8749. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST,
  8750. APP_GLOBAL_EVENT_REFRESH_DATA, 0);
  8751. }
  8752. #endif
  8753. #endif
  8754. break;
  8755. case FW_MONITOR_FIND_NEW_TPLIST:
  8756. {
  8757. /* got the freq list which need tune */
  8758. dvb_printf("Receive Freq change msg from afw! dvb_app received message which notice PSI Monitor has found some new freqs which need tune!!!!!!\n");
  8759. _DVBApp_Exit_All_Menu();
  8760. APP_DTV_ScanSetFreqList(dParam);
  8761. APP_GUIOBJ_ScanProcess_SetCurrentSearchMode(SEARCH_D_FULL_FREQ_LIST_MODE);
  8762. APP_DTV_ScanProcess_Start(SEARCH_D_FULL_FREQ_LIST_MODE);
  8763. }
  8764. break;
  8765. #ifdef SUPPORT_NETWORK_UPDATE_RESCAN
  8766. case FW_MONITOR_UPDATE_NWK_STATIC:
  8767. {
  8768. _DVBApp_Exit_All_Menu();
  8769. APP_DTV_ScanSetFreqList( dParam );
  8770. #ifdef SUPPORT_NETWORK_UPDATE_RESCAN_NO_POPUP
  8771. dvb_printf("Receive Freq change msg from afw! dvb_app received message which notice PSI Monitor has found some new freqs which need tune!!!!!!\n");
  8772. AI_PSI_Monitor_UpdateCurrTpTSIDList();
  8773. _DVBApp_ShowPopup( DVB_APP_POP_MSG_NETWORK_UPDATING );
  8774. APP_GUIOBJ_ScanProcess_SetCurrentSearchMode(SEARCH_D_FULL_FREQ_LIST_MODE);
  8775. #ifdef SUPPORT_CHANGE_TS_DYNAMICALLY
  8776. if( APP_Get_DTVHiddenScanState() )
  8777. {
  8778. APP_ScanProcess_Stop();
  8779. APP_SetSrcChgFlag( TRUE );
  8780. while( !AL_CS_IsStop() )
  8781. {
  8782. if( APP_Get_DTVHiddenScanState() )
  8783. break;
  8784. else
  8785. GL_TaskSleep(50);
  8786. }
  8787. APP_SetSrcChgFlag( FALSE );
  8788. }
  8789. #endif
  8790. APP_DTV_ScanProcess_Start(SEARCH_D_FULL_FREQ_LIST_MODE);
  8791. #else
  8792. _DVBApp_ShowPopup( DVB_APP_POP_MSG_NETWORK_UPDATE_STATIC );
  8793. #endif
  8794. break;
  8795. }
  8796. #endif
  8797. case APP_DVB_GLOBAL_EVENT_NO_SIGNAL:
  8798. #ifdef CONFIG_QSD
  8799. // TV doesn't need to show no signal osd for qsd chip test.
  8800. return 0;
  8801. #endif
  8802. #ifdef CONFIG_CIPLUS_SUPPORT
  8803. if( APP_CIPLUS_IsVirtualChannel(0) )
  8804. return 0;
  8805. #endif
  8806. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_ALL);
  8807. if (MID_PlaybackIsPauseState() == 0) // move to here for mantis 0158116
  8808. {
  8809. #ifndef SUPPORT_DTV_SHOW_BLUESCREEN
  8810. //MID_PlaybackClearScreenNow();
  8811. #endif
  8812. }
  8813. #ifdef CONFIG_SUPPORT_PVR
  8814. if (u8MidRecState == MID_REC_STATUS_START)
  8815. {
  8816. MID_RecorderPauseResume();
  8817. }
  8818. _DVBApp_Recorder_PauseResume();
  8819. #endif
  8820. #if 0
  8821. if(APP_Get_DTVHiddenScanState()!=TRUE)
  8822. {
  8823. MID_PsiMonStop(FALSE);
  8824. MID_PsiMonStart();
  8825. }
  8826. #else
  8827. if(APP_Get_DTVHiddenScanState()!=TRUE)
  8828. {
  8829. AL_DB_EDBType_t eDBType = APP_DVB_Playback_GetCurrentNetType();
  8830. AL_RecHandle_t hCurrProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eDBType, (AL_RECTYPE_DVBTV|AL_RECTYPE_DVBRADIO|AL_RECTYPE_DVBDATA));
  8831. AL_PSI_Monitor_Stop(al_false, al_false);
  8832. if (hCurrProgHdl != AL_DB_INVALIDHDL)
  8833. {
  8834. AL_PSI_Monitor_Start(hCurrProgHdl, al_false);
  8835. }
  8836. }
  8837. #endif
  8838. /* if TT Menu exist, first close it */
  8839. #ifdef CONFIG_SUPPORT_TTX
  8840. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  8841. {
  8842. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  8843. }
  8844. #endif
  8845. if (stDvbInst.bAppState != SYSTEM_RUNNING)
  8846. {
  8847. break;
  8848. }
  8849. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  8850. {
  8851. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  8852. }
  8853. #ifdef CONFIG_SUPPORT_SUBTITLE
  8854. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU))
  8855. {
  8856. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU);
  8857. }
  8858. #endif
  8859. if (APP_GetPlaybackPauseState() == TRUE)
  8860. {
  8861. MID_PlaybackStreamResume(1);
  8862. APP_SetPlaybackPauseState(FALSE);
  8863. }
  8864. #ifdef SUPPORT_DTV_SHOW_BLUESCREEN
  8865. if (g_stSetupData.BlueScreen == APP_SWITCH_ON)
  8866. {
  8867. g_bIsBlueScreen = TRUE;
  8868. }
  8869. #endif
  8870. DVBApp_CheckProgramType(TRUE);
  8871. break;
  8872. case APP_GLOBAL_EVENT_SET_UNMUTE:
  8873. {
  8874. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  8875. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  8876. if (eServiceType == AL_RECTYPE_DVBRADIO || eServiceType == AL_RECTYPE_DVBDATA)
  8877. {
  8878. APP_Audio_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  8879. }
  8880. else
  8881. {
  8882. APP_Video_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  8883. }
  8884. break;
  8885. }
  8886. case FW_VIP_STATUS:
  8887. {
  8888. UINT8 RegionIdx = 0;
  8889. ColorLUT_t stColorLUTValue;
  8890. APP_Source_Type_t eSourType = APP_SOURCE_MAX;
  8891. APP_StorageSource_Type_t eStorageSourType = APP_STORAGE_SOURCE_MAX;
  8892. if (g_SetPQFlag == FALSE)
  8893. {
  8894. g_SetPQFlag = TRUE;
  8895. /*set PQ param*/
  8896. AL_FLASH_GetColorLUTALL(&stColorLUTValue);
  8897. for(RegionIdx = 0; RegionIdx<APP_ColorLUT_NUM; RegionIdx++)
  8898. {
  8899. MID_TVFE_SetColorLUT7Range(RegionIdx,APP_Video_GetColorLUTSetting(LUT_FUN_MAKE,RegionIdx),
  8900. stColorLUTValue.n_PicMode_CoLUT_HueMin[RegionIdx],
  8901. stColorLUTValue.n_PicMode_CoLUT_HueMax[RegionIdx],
  8902. stColorLUTValue.n_PicMode_CoLUT_SatMin[RegionIdx],
  8903. stColorLUTValue.n_PicMode_CoLUT_SatMax[RegionIdx],
  8904. stColorLUTValue.n_PicMode_CoLUT_YMin[RegionIdx],
  8905. stColorLUTValue.n_PicMode_CoLUT_YMax[RegionIdx],
  8906. stColorLUTValue.n_PicMode_CoLUT_SmoothLevel[RegionIdx],
  8907. FALSE);
  8908. MID_TVFE_SetColorLUT7Axis(RegionIdx,
  8909. stColorLUTValue.n_PicMode_CoLUT_Enable[RegionIdx],
  8910. stColorLUTValue.n_PicMode_CoLUT_HueGain[RegionIdx],
  8911. stColorLUTValue.n_PicMode_CoLUT_SatGain[RegionIdx],
  8912. stColorLUTValue.n_PicMode_CoLUT_YGain[RegionIdx],
  8913. RegionIdx==(APP_ColorLUT_NUM - 1)? TRUE : FALSE);
  8914. }
  8915. // Dynamic contrast
  8916. DynamicContrast_t stDynamic;
  8917. AL_FLASH_GetDynamicContrastALL(&stDynamic);
  8918. int nLevel = stDynamic.n_PicMode_DynCon_DynamicContrastlevel;
  8919. MID_TVFE_SetPictureDynamicContrastEnable( nLevel ? 1 : 0);
  8920. MID_TVFE_SetPictureContrastLevel( stDynamic.n_PicMode_DynCon_ContrastLevel[nLevel] );
  8921. MID_TVFE_SetPictureChromaLevel( stDynamic.n_PicMode_DynCon_ChromaLevel[nLevel] );
  8922. MID_TVFE_SetPictureAlphaMode1( stDynamic.n_PicMode_DynCon_Alphamode1[nLevel] );
  8923. MID_TVFE_SetPictureAlphaMode2( stDynamic.n_PicMode_DynCon_Alphamode2[nLevel] );
  8924. MID_TVFE_SetPictureAlphaMode3( stDynamic.n_PicMode_DynCon_Alphamode3[nLevel] );
  8925. MID_TVFE_SetPictureAlphaMode4( stDynamic.n_PicMode_DynCon_Alphamode4[nLevel] );
  8926. MID_TVFE_SetPictureFleshToneLevel( stDynamic.n_PicMode_DynCon_FleshToneLevel );
  8927. APP_GUIOBJ_Source_GetCurrSource(&eSourType);
  8928. eStorageSourType = APP_Data_UserSetting_SourceTypeMappingToStorage(eSourType);
  8929. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0,
  8930. sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  8931. APP_Video_SetPictureMode(
  8932. g_stPictureData.stPictureModeSourceTab[eStorageSourType].PictureModeIndex);
  8933. //APP_Video_OSD_PQSet(APP_VIDEO_OSD_ITEM_BACKLIGHT, g_stPictureData.stPictureModeSourceTab[eStorageSourType].stUserTab.Backlight);
  8934. APP_Video_OSD_PQSet(APP_VIDEO_OSD_ITEM_COLORTEMP, g_stPictureData.stPictureModeSourceTab[eStorageSourType].ColorTempIndex);
  8935. APP_Video_OSD_PQSet(APP_VIDEO_OSD_ITEM_NR, g_stPictureData.NR);
  8936. }
  8937. }
  8938. break;
  8939. case APP_DVB_GLOBAL_EVENT_SET_UNMUTE:
  8940. dvb_printf(" APP_DVB_GLOBAL_EVENT_SET_UNMUTE event received\n");
  8941. /* dtv, search all, when switch to scan analog, tvfe will send show snow525,
  8942. * but current source is dtv, so FormatChangeCallback() will send this message,
  8943. * judge here, when scan, do nothing, has side effect?
  8944. */
  8945. if (!AL_CS_IsStop())
  8946. {
  8947. break;
  8948. }
  8949. #if 0//shiting.liao mark for 0020236:stop mheg5 ts,first show "no signal",then program stop at last picture
  8950. /* add by qinhe for signal present message received too late */
  8951. {
  8952. MID_PlaybackProgState_t progstate = MID_PLAYBK_PROG_STATE_NORMAL;
  8953. progstate = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL);
  8954. if ((g_bNoSteamData == FALSE) && (progstate != MID_PLAYBK_PROG_STATE_TEMP_SERVICE)
  8955. && (progstate != MID_PLAYBK_PROG_STATE_NOT_RUNNING))
  8956. {
  8957. al_uint8 uDVBMonState = AL_DVB_MONITOR_VALUE_TRUE;
  8958. AL_DVB_Monitor_SetState(AL_DVB_MONITOR_STATE_SIGNAL, &uDVBMonState);
  8959. }
  8960. }
  8961. #endif
  8962. if ((APP_SOURCE_DTV == eMidSourType) || (APP_SOURCE_RADIO == eMidSourType))
  8963. {
  8964. g_bMidHasUnmute = TRUE;
  8965. bSetUnMuteFlag = TRUE;
  8966. if (APP_GetPlaybackPauseState() == TRUE)
  8967. {
  8968. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  8969. {
  8970. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  8971. }
  8972. //MID_PlaybackStreamResume(1);
  8973. APP_SetPlaybackPauseState(FALSE);
  8974. #ifdef CONFIG_SUPPORT_SUBTITLE
  8975. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  8976. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  8977. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  8978. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  8979. if (g_stUserInfoData.Subtitle == APP_SWITCH_ON)
  8980. {
  8981. #ifdef CONFIG_DTV_SUPPORT
  8982. AL_Subtitle_Type_t SubtitleType = AL_SUBTITLE_TYPE_MAX;
  8983. if (APP_GUIOBJ_SubTitle_GetType(&SubtitleType) == TRUE)
  8984. {
  8985. AL_Subtitle_SetFreeze(FALSE);
  8986. }
  8987. #endif
  8988. }
  8989. #endif
  8990. }
  8991. DVBApp_CheckProgramType(TRUE);
  8992. if(APP_SOURCE_DTV == eMidSourType)
  8993. {
  8994. #if defined(CONFIG_CIPLUS_SUPPORT) && defined(CONFIG_SUPPORT_MHEG5)
  8995. DVBApp_ApplyAppMMIDisplay();
  8996. #endif
  8997. }
  8998. }
  8999. break;
  9000. case APP_DVB_GLOBAL_EVENT_SERVICE_NOT_AVAILABLE_CLEAR:
  9001. #ifdef CONFIG_SUPPORT_PVR
  9002. if (u8MidRecState == MID_REC_STATUS_PAUSE && g_bIsPlaykey == FALSE)
  9003. {
  9004. MID_RecorderPauseResume();
  9005. }
  9006. _DVBApp_Recorder_PauseResume();
  9007. #endif
  9008. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE))
  9009. {
  9010. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE, UI_EVENT_NULL);
  9011. }
  9012. #ifdef CONFIG_SUPPORT_MHEG5
  9013. if (APP_Area_SupportDtg())
  9014. {
  9015. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB | OSD2CTRLMDL_MH5);
  9016. }
  9017. else
  9018. {
  9019. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  9020. }
  9021. #else
  9022. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  9023. #endif
  9024. DVBApp_CheckProgramType(TRUE);
  9025. break;
  9026. case APP_DVB_GLOBAL_EVENT_SERVICE_VIDEO_NOT_SUPPORT:
  9027. case APP_DVB_GLOBAL_EVENT_SERVICE_VIDEO_NOT_SUPPORT_CLEAR:
  9028. case APP_DVB_GLOBAL_EVENT_PARENTAL_LOCK:
  9029. case APP_DVB_GLOBAL_EVENT_PARENTAL_LOCK_CLEAR:
  9030. case APP_DVB_GLOBAL_EVENT_TEMP_SERVICE:
  9031. case APP_DVB_GLOBAL_EVENT_TEMP_SERVICE_CLEAR:
  9032. #ifdef CONFIG_SUPPORT_PVR
  9033. if (u8MidRecState == MID_REC_STATUS_START)
  9034. {
  9035. MID_RecorderPauseResume();
  9036. }
  9037. _DVBApp_Recorder_PauseResume();
  9038. #endif
  9039. if (g_bMidHasUnmute) //zhongbaoxing added for mantis 0150118 @20110905
  9040. {
  9041. DVBApp_CheckProgramType(TRUE);
  9042. }
  9043. break;
  9044. #if 0 //Have been the new approach to replace.
  9045. case APP_DVB_GLOBAL_EVENT_SCRAMBLE:
  9046. g_bScrambleFlag = PROG_STATUS_SCRAMBLED;
  9047. #ifdef CONFIG_SUPPORT_PVR
  9048. if (u8MidRecState == MID_REC_STATUS_START)
  9049. {
  9050. MID_RecorderPauseResume();
  9051. }
  9052. _DVBApp_Recorder_PauseResume();
  9053. #endif
  9054. DVBApp_CheckProgramType(TRUE);
  9055. break;
  9056. case APP_DVB_GLOBAL_EVENT_SCRAMBLE_CLEAR:
  9057. g_bScrambleFlag = PROG_STATUS_SCRAMBLE_UNKNOW;
  9058. #ifdef CONFIG_SUPPORT_PVR
  9059. if (u8MidRecState == MID_REC_STATUS_PAUSE)
  9060. {
  9061. MID_RecorderPauseResume();
  9062. }
  9063. _DVBApp_Recorder_PauseResume();
  9064. #endif
  9065. if (g_bMidHasUnmute)
  9066. {
  9067. DVBApp_CheckProgramType(TRUE);
  9068. }
  9069. break;
  9070. #endif
  9071. case FW_MONITOR_UPDATE_SERVICE:
  9072. #ifdef CONFIG_SUPPORT_PVR
  9073. if (u8MidRecState != MID_REC_STATUS_STOP)
  9074. {
  9075. AL_RecHandle_t hProg = 0;
  9076. AL_DB_EDBType_t DBType = AL_DBTYPE_MAX;
  9077. AL_ServiceDetail_t stServInfo;
  9078. APP_Database_GetCurrentDBType(APP_SOURCE_DTV, &DBType);
  9079. hProg = APP_DVB_Playback_GetCurrentProgHandle(DBType,
  9080. AL_RECTYPE_DVBTV |AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA);
  9081. if (AL_SUCCESS == AL_DB_QueryDetail(hProg, (al_void *)&stServInfo))
  9082. {
  9083. if (DBType == AL_DBTYPE_DVB_T)
  9084. {
  9085. if (stServInfo.stDVBTServ.stProgAttrib.scramble == al_true)
  9086. {
  9087. if (MID_RecorderState() == MID_REC_STATUS_START)
  9088. {
  9089. MID_RecorderPauseResume();
  9090. _DVBApp_Recorder_PauseResume();
  9091. }
  9092. }
  9093. else
  9094. {
  9095. if (MID_RecorderState() == MID_REC_STATUS_PAUSE && g_bIsPlaykey == FALSE)
  9096. {
  9097. MID_RecorderPauseResume();
  9098. _DVBApp_Recorder_PauseResume();
  9099. }
  9100. }
  9101. }
  9102. else if (DBType == AL_DBTYPE_DVB_C)
  9103. {
  9104. if (stServInfo.stDVBCServ.stProgAttrib.scramble == al_true)
  9105. {
  9106. if (MID_RecorderState() == MID_REC_STATUS_START)
  9107. {
  9108. MID_RecorderPauseResume();
  9109. _DVBApp_Recorder_PauseResume();
  9110. }
  9111. }
  9112. else
  9113. {
  9114. if (MID_RecorderState() == MID_REC_STATUS_PAUSE && g_bIsPlaykey == FALSE)
  9115. {
  9116. MID_RecorderPauseResume();
  9117. _DVBApp_Recorder_PauseResume();
  9118. }
  9119. }
  9120. }
  9121. else if (DBType == AL_DBTYPE_DVB_S)
  9122. {
  9123. if (stServInfo.stDVBSServ.stProgAttrib.scramble == al_true)
  9124. {
  9125. if (MID_RecorderState() == MID_REC_STATUS_START)
  9126. {
  9127. MID_RecorderPauseResume();
  9128. _DVBApp_Recorder_PauseResume();
  9129. }
  9130. }
  9131. else
  9132. {
  9133. if (MID_RecorderState() == MID_REC_STATUS_PAUSE && g_bIsPlaykey == FALSE)
  9134. {
  9135. MID_RecorderPauseResume();
  9136. _DVBApp_Recorder_PauseResume();
  9137. }
  9138. }
  9139. }
  9140. }
  9141. }
  9142. #endif
  9143. break;
  9144. #ifdef SUPPORT_CONAX_CAS
  9145. case APP_DVB_GLOBAL_EVENT_CONAX_CA_NO_ACCESS:
  9146. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_ACCESS);
  9147. break;
  9148. case APP_DVB_GLOBAL_EVENT_CONAX_CA_NO_ACCESS_GEOGRAPHICAL_BLOCKOUT:
  9149. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_ACCESS_GEOGRAPHICAL_BLACKOUT);
  9150. break;
  9151. case APP_DVB_GLOBAL_EVENT_CONAX_CA_NO_ACCESS_NETWORKBLOCK:
  9152. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_ACCESS_NETWORK_BLOCK);
  9153. break;
  9154. case APP_DVB_GLOBAL_EVENT_CONAX_CA_ORDER:
  9155. case APP_DVB_GLOBAL_EVENT_CONAX_CA_ACCEPT_VIEW:
  9156. case APP_DVB_GLOBAL_EVENT_CONAX_CA_TOKEN_ACCESS:
  9157. case APP_DVB_GLOBAL_EVENT_CONAX_CA_MATURITY_LOCK:
  9158. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CA_MESSAGE))
  9159. {
  9160. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_ADJUST))
  9161. {
  9162. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_ADJUST);
  9163. }
  9164. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM))
  9165. {
  9166. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM);
  9167. }
  9168. #ifdef CONFIG_CI_SUPPORT
  9169. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ))
  9170. {
  9171. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ);
  9172. }
  9173. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU))
  9174. {
  9175. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU);
  9176. }
  9177. #endif
  9178. _DVBApp_HidePopupDisplay();
  9179. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_CA_PIN_CONFIM, dMessage);
  9180. }
  9181. break;
  9182. case APP_DVB_GLOBAL_EVENT_CONAX_CA_HAVE_MESSAGE:
  9183. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CA_MESSAGE))
  9184. {
  9185. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_ADJUST))
  9186. {
  9187. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_ADJUST);
  9188. }
  9189. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM))
  9190. {
  9191. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM);
  9192. }
  9193. #ifdef CONFIG_CI_SUPPORT
  9194. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ))
  9195. {
  9196. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ);
  9197. }
  9198. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU))
  9199. {
  9200. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU);
  9201. }
  9202. #endif
  9203. DVBApp_HidePopupDisplay();
  9204. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_CA_MESSAGE_POP, dMessage);
  9205. }
  9206. break;
  9207. #endif
  9208. #ifdef SUPPORT_CEC_TV
  9209. case APP_DVB_GLOBAL_EVENT_HDMIPORT_STATUS:
  9210. CECTV_HDMIPortStatus(dParam);
  9211. break;
  9212. #endif
  9213. #if defined(CONFIG_HEADPHONE_DETECT_BY_ISR) || defined(CONFIG_HPDET_BY_SWTIMER)
  9214. case APP_GLOBAL_EVENT_HEADPHONE_PLUG_IN:
  9215. APP_Audio_Set_HPStatus(APP_Audio_Headphone_PlugIn);
  9216. APP_Audio_SetMuteSpeakerWithoutAMP(TRUE);
  9217. APP_Audio_SetMuteAMP(TRUE);
  9218. APP_Audio_SetMuteDACSpeak(TRUE);
  9219. APP_Audio_SetMuteDACHeadohone(FALSE);
  9220. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  9221. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  9222. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  9223. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  9224. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  9225. if ((g_stUserInfoData.Mute == FALSE) && bHasValidServ && (g_stFeatureData.SpeakerPreference == APP_HDMILINK_TVSPEAKER
  9226. || (( APP_SWITCH_ON == g_stFeatureData.Enable_HDMILink)
  9227. &&(APP_HDMILINK_AMPLIFIER == g_stFeatureData.SpeakerPreference)
  9228. &&((!CECTV_GetHDMISystemAudioMode())||(!APP_Check_CEC_DEVICE_Status())|| APP_GUIOBJ_Source_GetAmplifierPort()== 0)
  9229. )))
  9230. APP_Audio_SetMuteSpeakerWithoutAMP(FALSE);
  9231. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, 0,
  9232. sizeof(APP_SETTING_Variational_t), &(g_stVariationalData));
  9233. APP_Audio_SetVolume(g_stVariationalData.Volume);
  9234. break;
  9235. case APP_GLOBAL_EVENT_HEADPHONE_PLUG_OUT:
  9236. APP_Audio_Set_HPStatus(APP_Audio_Headphone_PlugOut);
  9237. APP_Audio_SetMuteDACHeadohone(TRUE);
  9238. APP_Audio_SetMuteSpeakerWithoutAMP(TRUE);
  9239. APP_Audio_SetMuteDACSpeak(FALSE);
  9240. APP_Audio_SetMuteAMP(FALSE);
  9241. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  9242. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  9243. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  9244. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  9245. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  9246. if ((g_stUserInfoData.Mute == FALSE) && (g_stFeatureData.SpeakerPreference == APP_HDMILINK_TVSPEAKER
  9247. || (( APP_SWITCH_ON == g_stFeatureData.Enable_HDMILink)
  9248. &&(APP_HDMILINK_AMPLIFIER == g_stFeatureData.SpeakerPreference)
  9249. &&((!CECTV_GetHDMISystemAudioMode())||(!APP_Check_CEC_DEVICE_Status())|| APP_GUIOBJ_Source_GetAmplifierPort()== 0)
  9250. )))
  9251. {
  9252. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  9253. if (APP_WAKEUP_GetBootFlag() == FALSE)
  9254. #endif
  9255. {
  9256. APP_Audio_SetMuteSpeakerWithoutAMP(FALSE);
  9257. }
  9258. }
  9259. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, 0,
  9260. sizeof(APP_SETTING_Variational_t), &(g_stVariationalData));
  9261. APP_Audio_SetVolume(g_stVariationalData.Volume);
  9262. break;
  9263. #endif
  9264. #ifdef CONFIG_QSD
  9265. case APP_GLOBAL_EVENT_QSD_MEDIA_PLAY:
  9266. {
  9267. void MM_MediaQsd_SetTestFlag(BOOLEAN bFlag, UINT32 dParam);
  9268. MM_MediaQsd_SetTestFlag(TRUE, dParam);
  9269. _DVBApp_CloseAllMenu();
  9270. DVBApp_ResetPopup_Channel();
  9271. #ifdef CONFIG_MULTIMEDIA1_SUPPORT
  9272. {
  9273. MediaSourceNumber_e MediaType = 0;
  9274. UINT8 u8Port;
  9275. int i32Cnt = MID_PartitionList_GetMountedCount();
  9276. if (i32Cnt > 0)
  9277. {
  9278. u8Port = MID_PartitionList_GetMountPort(0);
  9279. extern MediaSourceNumber_e MM_HomePage_GetMediaSourceNumberbyPort(UINT8 u8Port);
  9280. MediaType = MM_HomePage_GetMediaSourceNumberbyPort(u8Port);
  9281. if (MediaType == MEDIA_ONE)
  9282. {
  9283. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_MEDIA);
  9284. }
  9285. else if (MediaType == MEDIA_TWO)
  9286. {
  9287. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_MEDIA1);
  9288. }
  9289. }
  9290. }
  9291. #else
  9292. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_MEDIA);
  9293. #endif
  9294. }
  9295. break;
  9296. case APP_GLOBAL_EVENT_QSD_SET_SOURCE:
  9297. _DVBApp_CloseAllMenu();
  9298. DVBApp_ResetPopup_Channel();
  9299. APP_GUIOBJ_Source_SetAppSource(dParam);
  9300. break;
  9301. #endif
  9302. case UI_EVENT_PIP_MENU:
  9303. case UI_EVENT_MENU:
  9304. AutoUpgrade = FALSE;
  9305. if (APP_MenuMgr_Exist_Main_Menu()
  9306. || APP_MenuMgr_Exist_Factory_Menu()
  9307. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG)
  9308. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPGEXTEND)
  9309. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD))
  9310. {
  9311. if (APP_GetPlaybackPauseState() == TRUE)
  9312. {
  9313. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FREEZE, 0);
  9314. }
  9315. _DVBApp_Exit_All_Menu();
  9316. }
  9317. else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR)
  9318. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR)
  9319. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNRENAME)
  9320. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST)
  9321. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST))
  9322. {
  9323. if (MID_PlaybackIsPauseState())
  9324. {
  9325. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FREEZE, 0);
  9326. }
  9327. _DVBApp_Exit_All_Menu();
  9328. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  9329. if (bHasValidServ)
  9330. {
  9331. if ((!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  9332. #ifdef SUPPORT_HOTEL_MODE_INFOBANNER_SHOW_CONTROL
  9333. &&((!g_stFactoryHotelData.HotelModeOnOff)||(g_stFactoryHotelData.ShowInfoBar))
  9334. #endif
  9335. )
  9336. {
  9337. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  9338. {
  9339. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  9340. }
  9341. #ifdef SUPPORT_CEC_TV
  9342. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  9343. {
  9344. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  9345. }
  9346. #endif
  9347. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO, 0);
  9348. }
  9349. }
  9350. }
  9351. else
  9352. {
  9353. DVBApp_ResetPopup_Channel();
  9354. _DVBApp_CloseAllMenu();
  9355. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  9356. {
  9357. #ifdef Subtitle_Freeze
  9358. AL_Subtitle_SetFreeze(FALSE);
  9359. #else
  9360. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  9361. #endif
  9362. #ifdef CONFIG_SUPPORT_MHEG5 //Gahu:D0304
  9363. if( eSourType == APP_SOURCE_DTV )
  9364. {
  9365. #ifdef CONFIG_SUPPORT_SUBTITLE
  9366. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  9367. if( g_stUserInfoData.Subtitle == DVB_SWITCH_OFF )
  9368. #endif
  9369. {
  9370. DVBApp_DataApplicationSwitch( OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5 );
  9371. }
  9372. }
  9373. #endif
  9374. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  9375. }
  9376. if (APP_GetPlaybackPauseState() == TRUE)
  9377. {
  9378. MID_PlaybackStreamResume(1);
  9379. APP_SetPlaybackPauseState(FALSE);
  9380. }
  9381. #ifdef CONFIG_BT_RDA5856
  9382. if(UI_EVENT_PIP_MENU == dMessage)
  9383. {
  9384. SYSAPP_GOBJ_CreateGUIObject_WithPara(
  9385. SYS_APP_DVB, APP_GUIOBJ_BT_SETTING, BT_FROM_OPTION);
  9386. }
  9387. else
  9388. #endif
  9389. {
  9390. /*Because free memory isn't enough, TT and subtitle need unload.*/
  9391. #if (defined CONFIG_MOD_PACK_TT) || (defined CONFIG_MOD_PACK_SUB)
  9392. #ifdef CONFIG_MOD_PACK_SUB
  9393. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_SUB);
  9394. #endif
  9395. #ifdef CONFIG_SUPPORT_PVR
  9396. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  9397. #endif
  9398. {
  9399. #ifdef CONFIG_MOD_PACK_TT
  9400. AL_TTX_Stop();
  9401. #endif
  9402. if (TTOrSubModUnload() == false)
  9403. {
  9404. dvb_printf("[%s %d]TT/Subtitle Unload fail~~~~\n",__FUNCTION__,__LINE__);
  9405. break;
  9406. }
  9407. }
  9408. #endif
  9409. #ifdef CONFIG_BANDWIDTH_LIMIT_WHEN_MENU_OPEN
  9410. Cmd_VipAdjust(VIP_MENU_IS_OPEN,1);
  9411. #endif
  9412. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,
  9413. APP_GUIOBJ_MAINMENU, FIRST_ENTER_MAINMENU);
  9414. }
  9415. }
  9416. break;
  9417. case UI_EVENT_SOURCE:
  9418. #ifdef CONFIG_SUPPORT_PVR
  9419. if (u8MidRecState != MID_REC_STATUS_STOP)
  9420. {
  9421. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  9422. {
  9423. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_SOURCE_CHANGE);
  9424. break;
  9425. }
  9426. else
  9427. {
  9428. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_SOURCE_CHANGE);
  9429. break;
  9430. }
  9431. }
  9432. else
  9433. #endif
  9434. {
  9435. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE))
  9436. {
  9437. #ifdef CONFIG_SUPPORT_PVR
  9438. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  9439. {
  9440. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_SOURCE);
  9441. }
  9442. else
  9443. #endif
  9444. {
  9445. _DVBApp_Exit_All_Menu();
  9446. }
  9447. }
  9448. else
  9449. {
  9450. DVBApp_ResetPopup_Channel();
  9451. _DVBApp_CloseAllMenu();
  9452. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOURCE, 0);
  9453. }
  9454. }
  9455. break;
  9456. #ifdef CONFIG_MEDIA_ENABLE
  9457. case UI_EVENT_SRC_USB:
  9458. {
  9459. #ifdef CONFIG_SUPPORT_PVR
  9460. if (MID_REC_STATUS_STOP != u8MidRecState)// && (MID_REC_MODE_AUTO != u8MIDRecMode))
  9461. {
  9462. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  9463. {
  9464. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_FOR_USBKEY);
  9465. }
  9466. else
  9467. {
  9468. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_USBKEY);
  9469. }
  9470. break;
  9471. }
  9472. #endif
  9473. _DVBApp_CloseAllMenu();
  9474. #ifdef SUPPORT_CEC_TV
  9475. if (CECTV_GetCECEnable()==CECTV_ENABLE)
  9476. {
  9477. CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_CHGSRC_OUT_HDMI, SRC_OTHERS);
  9478. }
  9479. #endif
  9480. DVBApp_ResetPopup_Channel();
  9481. if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_MEDIA))
  9482. {
  9483. dvb_printf("APP_GUIOBJ_Source_SetAppSource Fail!!!!!!!!!\n");
  9484. }
  9485. }
  9486. break;
  9487. #endif
  9488. case UI_EVENT_TV_DVD:
  9489. #ifdef CONFIG_ATV_SUPPORT
  9490. DVBApp_ResetPopup_Channel();
  9491. _DVBApp_CloseAllMenu();
  9492. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_DVD);
  9493. #else
  9494. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  9495. #endif
  9496. break;
  9497. #ifdef CONFIG_SUPPORT_PVR
  9498. #ifdef SUPPORT_PVR_ONOFF
  9499. case UI_EVENT_PVR_ONOFF:
  9500. if ((MID_REC_STATUS_STOP != u8MidRecState)
  9501. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  9502. {
  9503. break;
  9504. }
  9505. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MAINMENU))
  9506. {
  9507. DVBApp_ResetPopup_Channel();
  9508. _DVBApp_CloseAllMenu();
  9509. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0,
  9510. sizeof(APP_SETTING_Setup_t), &(g_stSetupData));
  9511. if (g_stSetupData.PVROnOff)
  9512. {
  9513. g_stSetupData.PVROnOff = 0;
  9514. AL_PR_DeleteAllSch(eNetType, AL_PR_EVT_REM | AL_PR_SRV_REM);
  9515. g_stFeatureData.AutoTimeShift = APP_PVR_TIMESHIFT_OFF;
  9516. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  9517. ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift),
  9518. sizeof(g_stFeatureData.AutoTimeShift),&(g_stFeatureData.AutoTimeShift));
  9519. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  9520. ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift), sizeof(g_stFeatureData.AutoTimeShift));
  9521. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_DISABLE);
  9522. }
  9523. else
  9524. {
  9525. g_stSetupData.PVROnOff = 1;
  9526. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_ENABLE);
  9527. }
  9528. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP,
  9529. ITEM_OFFSET(APP_SETTING_Setup_t, PVROnOff),
  9530. sizeof(g_stSetupData.PVROnOff), &(g_stSetupData.PVROnOff));
  9531. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP,
  9532. ITEM_OFFSET(APP_SETTING_Setup_t, PVROnOff), sizeof(g_stSetupData.PVROnOff));
  9533. }
  9534. break;
  9535. #endif
  9536. #endif
  9537. #ifdef SUPPORT_EPG_ONOFF
  9538. case UI_EVENT_EPG_ONOFF:
  9539. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MAINMENU))
  9540. {
  9541. DVBApp_ResetPopup_Channel();
  9542. _DVBApp_CloseAllMenu();
  9543. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0,
  9544. sizeof(APP_SETTING_Setup_t), &(g_stSetupData));
  9545. if (g_stSetupData.EPGOnOff)
  9546. {
  9547. g_stSetupData.EPGOnOff = 0;
  9548. _DVBApp_ShowPopup(DVB_APP_POP_MSG_EPG_DISABLE);
  9549. }
  9550. else
  9551. {
  9552. g_stSetupData.EPGOnOff = 1;
  9553. _DVBApp_ShowPopup(DVB_APP_POP_MSG_EPG_ENABLE);
  9554. }
  9555. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP,
  9556. ITEM_OFFSET(APP_SETTING_Setup_t, EPGOnOff),
  9557. sizeof(g_stSetupData.EPGOnOff), &(g_stSetupData.EPGOnOff));
  9558. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP,
  9559. ITEM_OFFSET(APP_SETTING_Setup_t, EPGOnOff), sizeof(g_stSetupData.EPGOnOff));
  9560. }
  9561. break;
  9562. #endif
  9563. #if 1//ll.jing mark for new fm
  9564. case UI_EVENT_FAC_HOTEL:
  9565. if (APP_MenuMgr_Exist_Factory_Menu())
  9566. {
  9567. _DVBApp_Exit_All_Menu();
  9568. }
  9569. else
  9570. {
  9571. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MAINMENU))
  9572. {
  9573. DVBApp_ResetPopup_Channel();
  9574. _DVBApp_CloseAllMenu();
  9575. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_FM_HOTELSETTING, ENTER_HOTELSET_NOTFROM_FACTORYMENU);
  9576. }
  9577. }
  9578. break;
  9579. #endif
  9580. #ifdef CONFIG_SUPPORT_HOTKEY_SOURCE_LOCK
  9581. case UI_EVENT_FAC_SOURCE_LOCK:
  9582. g_fmSourceLock_flag = TRUE;
  9583. SourceLock_Set_Hotkey_Flag(g_fmSourceLock_flag);
  9584. if (APP_MenuMgr_Exist_Factory_Menu())
  9585. {
  9586. _DVBApp_Exit_All_Menu();
  9587. }
  9588. else
  9589. {
  9590. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MAINMENU))
  9591. {
  9592. _DVBApp_CloseAllMenu();
  9593. DVBApp_ResetPopup_Channel();
  9594. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_FM_SOURCELOCK, ENTER_HOTELSET_NOTFROM_FACTORYMENU);
  9595. }
  9596. }
  9597. break;
  9598. #endif
  9599. case UI_EVENT_FACTORY:
  9600. if (APP_MenuMgr_Exist_Factory_Menu())
  9601. {
  9602. _DVBApp_Exit_All_Menu();
  9603. }
  9604. else
  9605. {
  9606. #if 0
  9607. #ifdef SUPPORT_HKC_FACTORY_REMOTE
  9608. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE))||((dParam == UI_EVENT_HKC_FACTORYMENU)&&(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)))
  9609. #else
  9610. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE))
  9611. #endif
  9612. #else
  9613. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MAINMENU))
  9614. #endif
  9615. {
  9616. DVBApp_ResetPopup_Channel();
  9617. _DVBApp_CloseAllMenu();
  9618. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING, 0);
  9619. }
  9620. }
  9621. break;
  9622. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  9623. case UI_EVENT_CHECK_UPGRADE:
  9624. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE))
  9625. {
  9626. dvb_printf("upgrade is running!");
  9627. break;
  9628. }
  9629. else
  9630. {
  9631. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE))
  9632. {
  9633. DVBApp_ResetPopup_Channel();
  9634. _DVBApp_CloseAllMenu();
  9635. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, SOFTWARE_UPGRADE_FROM_PASSWORD);
  9636. }
  9637. }
  9638. break;
  9639. #endif
  9640. #ifdef SUPPORT_CLOSE_NOTTVSOURCE_BY_PINCODE
  9641. case UI_EVENT_ALLSOURCE_ON:
  9642. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE))
  9643. {
  9644. //set all source support
  9645. APP_GOBJ_Source_Set_ResetDefaultSourceSupport();
  9646. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_SOURCE);
  9647. }
  9648. break;
  9649. case UI_EVENT_TVSOURCE_ON:
  9650. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE))
  9651. {
  9652. //set only tv source support
  9653. APP_GOBJ_Source_Set_OnlyTVSourceSupport();
  9654. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_SOURCE);
  9655. }
  9656. break;
  9657. #endif
  9658. case UI_EVENT_POWER:
  9659. #ifdef CONFIG_SUPPORT_PVR
  9660. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  9661. {
  9662. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  9663. {
  9664. if (!APP_GUIOBJ_DVB_PvrRec_GetDurationTime())
  9665. {
  9666. DVBApp_StopRecord();
  9667. }
  9668. }
  9669. else
  9670. {
  9671. DVBApp_StopTimeshift(TRUE);
  9672. }
  9673. }
  9674. #endif
  9675. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF);
  9676. break;
  9677. case UI_EVENT_EPG:
  9678. #ifdef CONFIG_EPG_USE_RESERVE_MM
  9679. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  9680. {
  9681. break;
  9682. }
  9683. #endif
  9684. #ifdef CONFIG_SUPPORT_MHEG5
  9685. #ifdef SUPPORT_SUBTITLE_ON_PG
  9686. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  9687. #endif
  9688. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  9689. {
  9690. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  9691. {
  9692. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  9693. if (sdRet == SP_SUCCESS)
  9694. {
  9695. break;
  9696. }
  9697. }
  9698. }
  9699. #endif
  9700. #ifdef SUPPORT_EPG_ONOFF
  9701. if (!g_stSetupData.EPGOnOff)
  9702. {
  9703. break;
  9704. }
  9705. #endif
  9706. dGuiObj = DVB_GUIOBJ_EPG;
  9707. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG)
  9708. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPGEXTEND)))
  9709. {
  9710. //_DVBApp_Exit_All_Menu();
  9711. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_EPGEXTEND);
  9712. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_EPG);
  9713. }
  9714. else
  9715. {
  9716. _DVBApp_Exit_All_Menu();
  9717. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  9718. if (bHasValidServ)
  9719. {
  9720. /*Because free memory isn't enough, TT and subtitle need unload.*/
  9721. #if (defined CONFIG_MOD_PACK_TT) || (defined CONFIG_MOD_PACK_SUB)
  9722. #ifdef CONFIG_MOD_PACK_SUB
  9723. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_SUB);
  9724. #endif
  9725. #ifdef CONFIG_MOD_PACK_TT
  9726. AL_TTX_Stop();
  9727. #endif
  9728. if (TTOrSubModUnload() == false)
  9729. {
  9730. dvb_printf("[%s %d]TT/Subtitle Unload fail~~~~\n",__FUNCTION__,__LINE__);
  9731. break;
  9732. }
  9733. #endif
  9734. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, dGuiObj, 0);
  9735. }
  9736. else
  9737. {
  9738. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  9739. }
  9740. }
  9741. break;
  9742. case UI_EVENT_AUDIO:
  9743. #ifdef CONFIG_SUPPORT_PVR
  9744. if (MID_TSPLParser_GetThreadState())
  9745. {
  9746. UINT32 u32PlayState = MID_TSPL_MODE_STOP;
  9747. MID_TSPLParser_GetPlayState(&u32PlayState, NULL);
  9748. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD))
  9749. {
  9750. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD);
  9751. }
  9752. else if (u32PlayState == MID_TSPL_MODE_PLAY)
  9753. {
  9754. _DVBApp_HidePopupDisplay();
  9755. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  9756. {
  9757. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  9758. }
  9759. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  9760. {
  9761. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC);
  9762. }
  9763. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER))
  9764. {
  9765. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER);
  9766. }
  9767. #ifdef CONFIG_SUPPORT_SUBTITLE
  9768. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU))
  9769. {
  9770. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU);
  9771. }
  9772. #endif
  9773. dvb_printf("...Create PVR multi audio menu.\n");
  9774. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD, 0);
  9775. }
  9776. break;
  9777. }
  9778. else
  9779. #endif
  9780. {
  9781. UINT8 u8ProgLockState = FALSE;
  9782. u8ProgLockState = APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL);
  9783. if (u8ProgLockState == MID_PLAYBK_PROG_STATE_LOCKED)
  9784. {
  9785. break;
  9786. }
  9787. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  9788. if (bHasValidServ)
  9789. {
  9790. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD))
  9791. {
  9792. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD);
  9793. _DVBApp_CheckPopupDisplay();
  9794. }
  9795. else
  9796. {
  9797. _DVBApp_CloseAllMenu();
  9798. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD, 0);
  9799. }
  9800. }
  9801. else
  9802. {
  9803. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  9804. }
  9805. }
  9806. break;
  9807. case UI_EVENT_MUTE:
  9808. #ifdef SUPPORT_CEC_TV
  9809. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  9810. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  9811. if (( APP_SWITCH_ON == g_stFeatureData.Enable_HDMILink)
  9812. #ifdef SUPPORT_AMPLIFIER_CONTROL
  9813. &&(APP_SWITCH_ON == g_stFeatureData.AmplifierControl)
  9814. #endif
  9815. &&(APP_HDMILINK_AMPLIFIER == g_stFeatureData.SpeakerPreference) && APP_GUIOBJ_Source_GetAmplifierPort()&& APP_Check_CEC_DEVICE_Status())
  9816. {
  9817. if (CECTV_GetCECEnable() == CECTV_ENABLE && CECTV_GetHDMISystemAudioMode() && g_u32MuteIconHandle >= MUTE_KEY_INTERVAL)
  9818. {
  9819. APP_Set_CECTV_Mute_Status(EVENT_CECTV_SET_MUTE_STATUS_MUTE);
  9820. g_u32MuteIconHandle = 0;
  9821. break;
  9822. }
  9823. else if(g_u32MuteIconHandle < MUTE_KEY_INTERVAL)//Don't handle mute icon
  9824. {
  9825. break;
  9826. }
  9827. }
  9828. APP_Set_HDMICEC_TV_Mute_Status(!APP_Get_HDMICEC_TV_Mute_Status());
  9829. #endif
  9830. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO))
  9831. {
  9832. APP_GUIOBJ_SleepTimer_Reset();
  9833. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO);
  9834. }
  9835. APP_GUIOBJ_Mute_MuteKeyHandler();
  9836. break;
  9837. #ifdef SUPPORT_CEC_TV
  9838. case DMN_EVENT_CECTV_SET_MUTE_STATUS:
  9839. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  9840. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  9841. if (( APP_SWITCH_ON == g_stFeatureData.Enable_HDMILink)
  9842. #ifdef SUPPORT_AMPLIFIER_CONTROL
  9843. &&(APP_SWITCH_ON == g_stFeatureData.AmplifierControl)
  9844. #endif
  9845. &&(APP_HDMILINK_AMPLIFIER == g_stFeatureData.SpeakerPreference) && APP_GUIOBJ_Source_GetAmplifierPort())
  9846. {
  9847. if (CECTV_GetCECEnable()==CECTV_ENABLE)
  9848. {
  9849. if( (dParam & 0x80) != 0) //reopen TV, the amp vol status must sinc.So if amp is mute state, tv need to set mute state.
  9850. {
  9851. APP_Set_CECTV_Mute_Status(EVENT_CECTV_SET_MUTE_STATUS_MUTE);
  9852. }
  9853. APP_Process_CECTV_Mute_Status(dParam);
  9854. }
  9855. }
  9856. break;
  9857. case DMN_EVENT_CECTV_SET_SYSTEMAUDIO_STATUS:
  9858. APP_Process_CECTV_Control_Status_From_Amp(dParam);
  9859. break;
  9860. case DMN_EVENT_CECTV_SET_DEVICE_OSDNAME:
  9861. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO)
  9862. ||SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE)
  9863. #ifdef SUPPORT_CEC_TV
  9864. ||SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_HDMI_LINK)
  9865. #endif
  9866. #ifdef CONFIG_BT_RDA5856
  9867. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BT_SETTING))
  9868. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BT_DEVICELIST))
  9869. #endif
  9870. ||SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MAINMENU)
  9871. ||SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE_CEC))
  9872. {
  9873. break;
  9874. }
  9875. DVBApp_ResetPopup_Channel();
  9876. _DVBApp_CloseAllMenu();
  9877. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  9878. {
  9879. #ifdef Subtitle_Freeze
  9880. AL_Subtitle_SetFreeze(FALSE);
  9881. #else
  9882. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  9883. #endif
  9884. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  9885. }
  9886. if (APP_GetPlaybackPauseState() == TRUE)
  9887. {
  9888. MID_PlaybackStreamResume(1);
  9889. APP_SetPlaybackPauseState(FALSE);
  9890. }
  9891. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,
  9892. APP_GUIOBJ_CEC_DEVICE_INSERT, 0);
  9893. break;
  9894. #endif
  9895. case UI_EVENT_EXIT:
  9896. #ifdef CONFIG_SUPPORT_PVR
  9897. #ifdef SUPPORT_PVR_ICON_HIDE
  9898. if (u8MidRecState == MID_REC_STATUS_START && !(APP_MenuMgr_Exist_Main_Menu()))
  9899. {
  9900. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  9901. {
  9902. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  9903. {
  9904. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, UI_EVENT_EXIT, 0);
  9905. }
  9906. break;
  9907. }
  9908. else
  9909. {
  9910. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  9911. {
  9912. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, UI_EVENT_EXIT, 0);
  9913. }
  9914. break;
  9915. }
  9916. }
  9917. #endif
  9918. #endif
  9919. case UI_EVENT_RETURN:
  9920. #ifdef CONFIG_SUPPORT_MHEG5
  9921. #ifdef SUPPORT_SUBTITLE_ON_PG
  9922. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  9923. #endif
  9924. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  9925. {
  9926. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5) && dMessage != UI_EVENT_EXIT)
  9927. {
  9928. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  9929. if (sdRet == SP_SUCCESS)
  9930. {
  9931. break;
  9932. }
  9933. }
  9934. }
  9935. #endif
  9936. #ifdef CONFIG_SUPPORT_PVR
  9937. #ifdef SUPPORT_TEAC_PVR_ICON_CTRL
  9938. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)
  9939. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE))
  9940. {
  9941. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,
  9942. DVB_GUIOBJ_PVRREC_INFO, 0);
  9943. break;
  9944. }
  9945. #endif
  9946. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) ||
  9947. (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  9948. {
  9949. if (APP_MenuMgr_Exist_Main_Menu())
  9950. {
  9951. APP_MenuMgr_Exit_Main_Menu();
  9952. }
  9953. break;
  9954. }
  9955. #endif
  9956. AutoUpgrade = FALSE;
  9957. _DVBApp_ExitAll();
  9958. /*Because free memory isn't enough, TT and Subtitle need unload with epg/mainmenu ui.*/
  9959. #if (defined CONFIG_MOD_PACK_TT) || (defined CONFIG_MOD_PACK_SUB)
  9960. #ifdef CONFIG_SUPPORT_PVR
  9961. /*while pvr reverse memory is being used, don't load TT/SUB.*/
  9962. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  9963. {
  9964. break;
  9965. }
  9966. #endif
  9967. if (TTOrSubModLoad(TRUE) == TRUE)
  9968. {
  9969. #ifdef CONFIG_MOD_PACK_TT
  9970. al_uint8 *pref_iso639 = al_null;
  9971. /**< get digital TTX language index from EEPROM */
  9972. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  9973. ITEM_OFFSET(APP_SETTING_Feature_t, DigitalTTLang),
  9974. sizeof(g_stFeatureData.DigitalTTLang),&(g_stFeatureData.DigitalTTLang));
  9975. pref_iso639 = APP_Language_GetISO639ByIndx(g_stFeatureData.DigitalTTLang, APP_DATA_LANG_TYPE_TELETEXT);
  9976. if(pref_iso639 == al_null)
  9977. {
  9978. pref_iso639 = APP_Language_GetISO639_2ByIndx(g_stFeatureData.DigitalTTLang, APP_DATA_LANG_TYPE_TELETEXT);
  9979. }
  9980. AL_TTX_Start(AL_TTX_SOURCE_TYPE_DIGITAL, pref_iso639);
  9981. #endif
  9982. }
  9983. #endif
  9984. #ifdef CONFIG_SUPPORT_SUBTITLE
  9985. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE))
  9986. {
  9987. UINT8 onoff = 0;
  9988. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  9989. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  9990. onoff = g_stUserInfoData.Subtitle;
  9991. if (onoff == TRUE)
  9992. {
  9993. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  9994. }
  9995. }
  9996. #endif
  9997. break;
  9998. case UI_EVENT_CH_UP:
  9999. case UI_EVENT_CH_DN:
  10000. g_bIsFav = FALSE;
  10001. #ifdef CONFIG_SUPPORT_PVR
  10002. if (u8MidRecState != MID_REC_STATUS_STOP)
  10003. {
  10004. g_bIsNumKey = FALSE;
  10005. if (dMessage == UI_EVENT_CH_UP)
  10006. {
  10007. g_bIsCHUp = TRUE;
  10008. }
  10009. else
  10010. {
  10011. g_bIsCHUp = FALSE;
  10012. }
  10013. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  10014. {
  10015. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_CHANNEL_CHANGE);
  10016. break;
  10017. }
  10018. else
  10019. {
  10020. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_CHANNEL_CHANGE);
  10021. break;
  10022. }
  10023. }
  10024. else
  10025. #endif
  10026. {
  10027. /* judge is database empty or not */
  10028. al_uint32 TotalNum = 0;
  10029. ServiceGroupType_t group_type;
  10030. APP_EProgListType_t eCurProglist = ProgListType_Normal;
  10031. AL_RecHandle_t hNetHdl = AL_DB_INVALIDHDL;
  10032. al_int8 s8Navigate = 0;
  10033. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_TVINFO, 0,
  10034. sizeof(APP_SETTING_TVInfo_t), &(g_stTVInfoData));
  10035. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, 0,
  10036. sizeof(APP_SETTING_Variational_t), &(g_stVariationalData));
  10037. group_type = g_stTVInfoData.ChnListType;
  10038. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  10039. if (APP_RF_TYPE_DVB_S == g_stChannelData.TV_Connection)
  10040. {
  10041. if (SERVICEGROUP_FREE == group_type)
  10042. {
  10043. eCurProglist = ProgListType_Free;
  10044. }
  10045. else if (SERVICEGROUP_SCRAMB == group_type)
  10046. {
  10047. eCurProglist = ProgListType_Scramb;
  10048. }
  10049. else if (SERVICEGROUP_SATELLITE == group_type)
  10050. {
  10051. eCurProglist = ProgListType_Satellite;
  10052. APP_DVB_Playback_GetCurrentSat(&hNetHdl, NULL);
  10053. }
  10054. }
  10055. #endif
  10056. if (SERVICEGROUP_USER == group_type)
  10057. {
  10058. eCurProglist = ProgListType_User;
  10059. }
  10060. #ifdef CONFIG_CIPLUS_SUPPORT
  10061. if (APP_CIPLUS_IsProfileSource())
  10062. {
  10063. group_type = SERVICEGROUP_DIGITAL;
  10064. }
  10065. #endif
  10066. APP_Database_InitChnList(APP_Database_ConvertGroup2ChnListType(group_type), hNetHdl, eCurProglist);
  10067. TotalNum = APP_Database_GetChnListSize();
  10068. APP_Database_UninitChnList();
  10069. if (TotalNum == 0)
  10070. {
  10071. /* show not available */
  10072. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  10073. break;
  10074. }
  10075. if (dMessage == UI_EVENT_CH_UP)
  10076. {
  10077. s8Navigate = 1;
  10078. }
  10079. else if (dMessage == UI_EVENT_CH_DN)
  10080. {
  10081. s8Navigate = -1;
  10082. }
  10083. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, s8Navigate, APP_FAVORITE_NONE);
  10084. #ifdef CONFIG_CIPLUS_SUPPORT
  10085. if (APP_CIPLUS_IsProfileSource())
  10086. {
  10087. if (hProg != AL_DB_INVALIDHDL)
  10088. {
  10089. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  10090. {
  10091. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  10092. }
  10093. #ifdef SUPPORT_CEC_TV
  10094. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  10095. {
  10096. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  10097. }
  10098. #endif
  10099. _DVBApp_Zapping(eServiceType, hProg, FALSE, 0, TRUE);
  10100. break;
  10101. }
  10102. }
  10103. #endif
  10104. if (hProg != AL_DB_INVALIDHDL)
  10105. {
  10106. AL_DB_EDBType_t db_type;
  10107. AL_DB_ERecordType_t record_type;
  10108. AL_DB_GetRecordType(hProg, &db_type, &record_type);
  10109. if (db_type == AL_DBTYPE_DVB_ATV)
  10110. {
  10111. _DVBApp_CloseAllMenu();
  10112. break;
  10113. }
  10114. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  10115. {
  10116. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  10117. }
  10118. #ifdef SUPPORT_CEC_TV
  10119. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  10120. {
  10121. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  10122. }
  10123. #endif
  10124. /*#ifdef CONFIG_SUPPORT_PVR
  10125. if ((MID_REC_MODE_AUTO == u8MIDRecMode) && (u8MidRecState != MID_REC_STATUS_STOP))
  10126. {
  10127. DVBApp_StopTimeshift(FALSE);
  10128. }
  10129. #endif*/
  10130. #ifdef SUPPORT_CHANGE_TS_DYNAMICALLY
  10131. AL_RecHandle_t hCurTPHdl = hCurProg;
  10132. AL_RecHandle_t hNextTPHdl = hProg;
  10133. AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hCurTPHdl);
  10134. AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hNextTPHdl);
  10135. if(APP_Get_DTVHiddenScanState()&&(hCurTPHdl!=hNextTPHdl))
  10136. {
  10137. APP_ScanProcess_Stop();
  10138. APP_SetSrcChgFlag(TRUE);
  10139. while(APP_Get_DTVHiddenScanState()||(!AL_CS_IsStop()))
  10140. {
  10141. GL_TaskSleep(50);
  10142. }
  10143. APP_SetSrcChgFlag(FALSE);
  10144. }
  10145. #endif
  10146. _DVBApp_Zapping(record_type, hProg, FALSE, 0, TRUE);
  10147. /*#ifdef CONFIG_SUPPORT_PVR
  10148. if ((MID_REC_MODE_AUTO == u8MIDRecMode) && (u8MidRecState != MID_REC_STATUS_STOP))
  10149. {
  10150. DVBApp_StopTimeshift(TRUE);
  10151. }
  10152. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  10153. #endif*/
  10154. }
  10155. else
  10156. {
  10157. DVBApp_CheckProgramType(TRUE);
  10158. }
  10159. break;
  10160. }
  10161. case UI_EVENT_RECALL:
  10162. {
  10163. //_DVBApp_CloseAllMenu();
  10164. UINT32 u32TotalChnCount = 0;
  10165. DBServAttrib_t stAttribute;
  10166. eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  10167. if ((eServiceType != AL_RECTYPE_DVBTV) && (eServiceType != AL_RECTYPE_DVBRADIO) && (eServiceType != AL_RECTYPE_DVBDATA))
  10168. {
  10169. eServiceType = AL_RECTYPE_DVBTV;
  10170. }
  10171. AL_DB_GetRecordsTotalNum(eNetType, eServiceType, &u32TotalChnCount);
  10172. if(!u32TotalChnCount)
  10173. {
  10174. AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBDATA, &u32TotalChnCount);
  10175. if(!u32TotalChnCount)
  10176. {
  10177. AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBRADIO, &u32TotalChnCount);
  10178. }
  10179. }
  10180. hProg = APP_DVB_Playback_GetPrevProg(eNetType);
  10181. if (hProg != AL_DB_INVALIDHDL)
  10182. {
  10183. memset(&stAttribute, 0, sizeof(DBServAttrib_t));
  10184. AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute);
  10185. }
  10186. if ((hCurProg!=hProg)&&(hProg != AL_DB_INVALIDHDL)&& u32TotalChnCount && (stAttribute.delete == FALSE))
  10187. {
  10188. #ifdef CONFIG_SUPPORT_PVR
  10189. if (u8MidRecState != MID_REC_STATUS_STOP)
  10190. {
  10191. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  10192. {
  10193. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_FOR_RECALL);
  10194. break;
  10195. }
  10196. else
  10197. {
  10198. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_RECALL);
  10199. break;
  10200. }
  10201. }
  10202. #endif
  10203. AL_DB_GetRecordType(hProg, NULL, &NextServiceType);
  10204. #ifdef CONFIG_CIPLUS_SUPPORT
  10205. if( APP_CIPLUS_GetProfileType()==1 &&
  10206. ((APP_CIPLUS_IsProfileSource() && (!APP_CIPLUS_IsProfileService(hProg) || !APP_CIPLUS_IsProfileService(AL_DB_INVALIDHDL))) ||
  10207. (!APP_CIPLUS_IsProfileSource() && (APP_CIPLUS_IsProfileService(hProg) || APP_CIPLUS_IsProfileService(AL_DB_INVALIDHDL)))) )
  10208. {
  10209. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  10210. break;
  10211. }
  10212. if( eServiceType==NextServiceType || APP_CIPLUS_IsVirtualChannel(hProg) || APP_CIPLUS_IsVirtualChannel(AL_DB_INVALIDHDL) )
  10213. #else
  10214. if (eServiceType == NextServiceType)
  10215. #endif
  10216. {
  10217. #ifdef SUPPORT_CHANGE_TS_DYNAMICALLY
  10218. AL_RecHandle_t hCurTPHdl = hCurProg;
  10219. AL_RecHandle_t hNextTPHdl = hProg;
  10220. AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hCurTPHdl);
  10221. AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hNextTPHdl);
  10222. if(APP_Get_DTVHiddenScanState()&&(hCurTPHdl!=hNextTPHdl))
  10223. {
  10224. APP_ScanProcess_Stop();
  10225. APP_SetSrcChgFlag(TRUE);
  10226. while(APP_Get_DTVHiddenScanState()||(!AL_CS_IsStop()))
  10227. {
  10228. GL_TaskSleep(50);
  10229. }
  10230. APP_SetSrcChgFlag(FALSE);
  10231. }
  10232. #endif
  10233. _DVBApp_Zapping(NextServiceType, hProg, FALSE, 0, TRUE);
  10234. }
  10235. #ifdef CHANGE_SOURCE_BY_RECALL_KEY
  10236. else if (APP_DVB_Playback_SwapServiceType(eNetType, &NextServiceType, &u32TotalNum) == AL_SUCCESS)
  10237. {
  10238. ;
  10239. }
  10240. #endif
  10241. else
  10242. {
  10243. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  10244. }
  10245. }
  10246. else
  10247. {
  10248. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  10249. }
  10250. }
  10251. break;
  10252. case APP_DVB_GLOBAL_EVENT_ZAPPING:
  10253. #ifdef CONFIG_SUPPORT_PVR
  10254. if (u8MidRecState != MID_REC_STATUS_STOP)
  10255. {
  10256. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM))
  10257. {
  10258. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM);
  10259. if (hCurProg == dParam)
  10260. {
  10261. break;
  10262. }
  10263. else if(AL_DB_INVALIDHDL == dParam)
  10264. {
  10265. #ifdef SPECIAL_CHNORDER_FOR_SPAIN
  10266. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_DISPLAY, 0);
  10267. #else
  10268. _DVBApp_ShowPopup(DVB_APP_POP_MSG_INVALID_INPUT);
  10269. #endif
  10270. break;
  10271. }
  10272. else
  10273. {
  10274. g_ProgHandle = dParam;
  10275. g_bIsNumKey = TRUE;
  10276. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  10277. {
  10278. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_CHANNEL_CHANGE);
  10279. break;
  10280. }
  10281. else
  10282. {
  10283. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_CHANNEL_CHANGE);
  10284. break;
  10285. }
  10286. }
  10287. }
  10288. }
  10289. #endif
  10290. #if 0
  10291. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  10292. {
  10293. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  10294. }
  10295. #endif
  10296. _DVBApp_Zapping(eServiceType, dParam, FALSE, 0, TRUE);
  10297. break;
  10298. #ifdef SUPPORT_CHANGE_TS_DYNAMICALLY
  10299. case APP_DVB_GLOBAL_EVENT_TSCHANGE_REMOVE_SERVICE:
  10300. dvb_printf("[%s:%d] APP_DVB_GLOBAL_EVENT_TSCHANGE_REMOVE_SERVICE !!!!!!!!!!\n\n",__FUNCTION__,__LINE__);
  10301. if (!AL_CS_IsStop())
  10302. {
  10303. dvb_printf("[%s:%d] not stop channel search !!!!!!!!!!\n\n",__FUNCTION__,__LINE__);
  10304. break;
  10305. }
  10306. #ifdef SUPPORT_TURKY_NEW_CHNLIST
  10307. if (AL_DBTYPE_DVB_S == eNetType)
  10308. {
  10309. break;
  10310. }
  10311. #endif
  10312. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST)
  10313. //||(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR)
  10314. //|| SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR)
  10315. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST)
  10316. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG)
  10317. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNRENAME)
  10318. #ifdef CONFIG_SUPPORT_PVR
  10319. //|| SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMEREDIT)
  10320. #endif
  10321. )
  10322. {
  10323. if(DVBApp_GetUnstableState() == FALSE)
  10324. {
  10325. DVBApp_SetUnstableState(TRUE);
  10326. }
  10327. dvb_printf(" Post Process The Unstable Services\n\n");
  10328. break;
  10329. }
  10330. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR))
  10331. {
  10332. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR);
  10333. }
  10334. else if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR))
  10335. {
  10336. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR);
  10337. }
  10338. #ifdef CONFIG_SUPPORT_PVR
  10339. else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMEREDIT))
  10340. {
  10341. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMEREDIT);
  10342. }
  10343. #endif
  10344. DVBApp_RemoveUnstableService();
  10345. break;
  10346. #endif
  10347. #ifdef CONFIG_SUPPORT_MHEG5
  10348. case APP_DVB_GLOBAL_EVENT_MHEG_ZAPPING:
  10349. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  10350. {
  10351. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  10352. }
  10353. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_MHEG_ZAPPING, dParam);
  10354. break;
  10355. #endif
  10356. #ifdef CONFIG_CIPLUS_SUPPORT
  10357. case APP_DVB_GLOBAL_EVENT_CIPLUS_ZAPPING:
  10358. if( SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG) )
  10359. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_CIPLUS_ZAPPING, dParam);
  10360. break;
  10361. case APP_DVB_GLOBAL_EVENT_CIPLUS_TUNING:
  10362. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_CIPLUS_TUNING, dParam);
  10363. break;
  10364. #endif
  10365. case UI_EVENT_ENTER:
  10366. #ifdef CONFIG_SUPPORT_PVR
  10367. #ifdef SUPPORT_PVR_ICON_HIDE
  10368. if (u8MidRecState == MID_REC_STATUS_START)
  10369. {
  10370. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  10371. {
  10372. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  10373. {
  10374. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, UI_EVENT_ENTER, 0);
  10375. }
  10376. break;
  10377. }
  10378. else
  10379. {
  10380. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  10381. {
  10382. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, UI_EVENT_ENTER, 0);
  10383. }
  10384. break;
  10385. }
  10386. }
  10387. #endif
  10388. #endif
  10389. #ifdef CELLO_REMOTE_KEY
  10390. #ifdef CONFIG_SUPPORT_MHEG5
  10391. #ifdef SUPPORT_SUBTITLE_ON_PG
  10392. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  10393. #endif
  10394. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  10395. {
  10396. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  10397. {
  10398. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  10399. if (sdRet == SP_SUCCESS)
  10400. {
  10401. break;
  10402. }
  10403. }
  10404. }
  10405. #endif
  10406. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  10407. UI_EVENT_CHLIST, 0);
  10408. #else
  10409. {
  10410. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  10411. if (!bHasValidServ)
  10412. {
  10413. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  10414. break;
  10415. }
  10416. }
  10417. #ifdef CONFIG_SUPPORT_MHEG5
  10418. #ifdef SUPPORT_SUBTITLE_ON_PG
  10419. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  10420. #endif
  10421. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  10422. {
  10423. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  10424. {
  10425. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  10426. if (sdRet == SP_SUCCESS)
  10427. {
  10428. break;
  10429. }
  10430. }
  10431. }
  10432. #endif
  10433. #if 0
  10434. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD))
  10435. {
  10436. _DVBApp_CloseAllMenu();
  10437. }
  10438. else
  10439. {
  10440. _DVBApp_CloseAllMenu();
  10441. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST, 0);
  10442. }
  10443. #endif
  10444. #endif
  10445. break;
  10446. #ifdef CELLO_REMOTE_KEY
  10447. case UI_EVENT_INITIAL:
  10448. DVBApp_ResetPopup_Channel();
  10449. _DVBApp_CloseAllMenu();
  10450. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL, 0);
  10451. break;
  10452. case UI_EVENT_DTV:
  10453. DVBApp_ResetPopup_Channel();
  10454. _DVBApp_CloseAllMenu();
  10455. APP_GUIOBJ_Channel_SetRFType(FRONTEND_CONNECT_TYPE_DVB_T, AL_DB_INVALIDHDL);
  10456. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_DTV);
  10457. break;
  10458. case UI_EVENT_SATELLITE:
  10459. DVBApp_ResetPopup_Channel();
  10460. _DVBApp_CloseAllMenu();
  10461. APP_GUIOBJ_Channel_SetRFType(FRONTEND_CONNECT_TYPE_DVB_S, AL_DB_INVALIDHDL);
  10462. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_DTV);
  10463. break;
  10464. case UI_EVENT_CABLE:
  10465. DVBApp_ResetPopup_Channel();
  10466. _DVBApp_CloseAllMenu();
  10467. APP_GUIOBJ_Channel_SetRFType(FRONTEND_CONNECT_TYPE_DVB_C, AL_DB_INVALIDHDL);
  10468. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_DTV);
  10469. break;
  10470. case UI_EVENT_DVD:
  10471. if(eSourType != APP_SOURCE_DVD)
  10472. {
  10473. #ifdef CONFIG_SUPPORT_PVR
  10474. if (MID_REC_STATUS_STOP != u8MidRecState)// && (MID_REC_MODE_AUTO != u8MIDRecMode))
  10475. {
  10476. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  10477. {
  10478. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_FOR_TVRADIOKEY);
  10479. }
  10480. else
  10481. {
  10482. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_TVRADIOKEY);
  10483. }
  10484. break;
  10485. }
  10486. #endif
  10487. DVBApp_ResetPopup_Channel();
  10488. _DVBApp_CloseAllMenu();
  10489. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_DVD);
  10490. }
  10491. break;
  10492. case UI_EVENT_HDMI:
  10493. if(eSourType != APP_SOURCE_HDMI && eSourType != APP_SOURCE_HDMI1 &&
  10494. eSourType != APP_SOURCE_HDMI2)
  10495. {
  10496. #ifdef CONFIG_SUPPORT_PVR
  10497. if (MID_REC_STATUS_STOP != u8MidRecState)// && (MID_REC_MODE_AUTO != u8MIDRecMode))
  10498. {
  10499. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  10500. {
  10501. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_FOR_TVRADIOKEY);
  10502. }
  10503. else
  10504. {
  10505. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_TVRADIOKEY);
  10506. }
  10507. break;
  10508. }
  10509. #endif
  10510. DVBApp_ResetPopup_Channel();
  10511. _DVBApp_CloseAllMenu();
  10512. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_HDMI);
  10513. }
  10514. break;
  10515. #endif
  10516. case UI_EVENT_CHLIST:
  10517. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD))
  10518. {
  10519. _DVBApp_CloseAllMenu();
  10520. }
  10521. else
  10522. {
  10523. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST))
  10524. {
  10525. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST);
  10526. _DVBApp_CheckPopupDisplay();
  10527. }
  10528. else
  10529. {
  10530. _DVBApp_CloseAllMenu();
  10531. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST, 0);
  10532. }
  10533. }
  10534. break;
  10535. case UI_EVENT_FAV:
  10536. #ifdef CONFIG_DVB_SYSTEM
  10537. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  10538. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  10539. if (AREA_NORWAY == g_stChannelData.Country)
  10540. {
  10541. break;
  10542. }
  10543. #endif
  10544. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD))
  10545. {
  10546. _DVBApp_CloseAllMenu();
  10547. }
  10548. else
  10549. {
  10550. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST))
  10551. {
  10552. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST);
  10553. _DVBApp_CheckPopupDisplay();
  10554. }
  10555. else
  10556. {
  10557. _DVBApp_CloseAllMenu();
  10558. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST, 0);
  10559. }
  10560. }
  10561. break;
  10562. case UI_EVENT_FAV_UP:
  10563. case UI_EVENT_FAV_DN:
  10564. {
  10565. UINT32 TotalNum = 0;
  10566. AL_DB_EDBType_t DBType;
  10567. AL_DB_ERecordType_t CurSerType = AL_RECTYPE_DVBTV;
  10568. APP_Favorite_t FavType = APP_FAVORITE_1;
  10569. g_bIsFav = TRUE;
  10570. DBType = APP_DVB_Playback_GetCurrentNetType();
  10571. CurSerType = APP_DVB_Playback_GetCurrServiceType(DBType);
  10572. FavType = APP_GUIOBJ_DVB_Playback_GetFavType();
  10573. if ((FavType <= APP_FAVORITE_NONE) || (FavType >= APP_FAVORITE_MAX))
  10574. {
  10575. FavType = APP_FAVORITE_1;
  10576. APP_GUIOBJ_DVB_Playback_SetFavType(FavType);
  10577. APP_GUIOBJ_DVB_Playback_StoreFavType();
  10578. }
  10579. do
  10580. {
  10581. /* search next fav list type */
  10582. APP_Database_InitChnList(APP_DB_CHNLISTTYPE_DIGITAL, AL_DB_INVALIDHDL, APP_Database_ConvertFavType2List(FavType));
  10583. TotalNum = APP_Database_GetChnListSize();
  10584. APP_Database_UninitChnList();
  10585. if (((FavType == APP_GUIOBJ_DVB_Playback_GetFavType()) && (TotalNum > 0)) ||
  10586. (TotalNum > 1))
  10587. {
  10588. break;
  10589. }
  10590. FavType++;
  10591. if (FavType == APP_FAVORITE_MAX)
  10592. {
  10593. FavType = APP_FAVORITE_1;
  10594. }
  10595. }while(FavType != APP_GUIOBJ_DVB_Playback_GetFavType());
  10596. if (FavType == APP_FAVORITE_MAX)
  10597. {
  10598. APP_GUIOBJ_DVB_Playback_SetFavType(APP_FAVORITE_1);
  10599. APP_GUIOBJ_DVB_Playback_StoreFavType();
  10600. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  10601. break;
  10602. }
  10603. APP_GUIOBJ_DVB_Playback_SetFavType(FavType);
  10604. APP_GUIOBJ_DVB_Playback_StoreFavType();
  10605. if (TotalNum < 2)
  10606. {
  10607. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  10608. break;
  10609. }
  10610. #ifdef CONFIG_SUPPORT_PVR
  10611. if ((u8MidRecState != MID_REC_STATUS_STOP) && (APP_PVR_TIMESHIFT_AUTO != u8AutoTimeShift))
  10612. {
  10613. g_bIsNumKey = FALSE;
  10614. if (MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode)
  10615. {
  10616. if (dMessage == UI_EVENT_FAV_UP)
  10617. {
  10618. g_bIsCHUp = TRUE;
  10619. }
  10620. else
  10621. {
  10622. g_bIsCHUp = FALSE;
  10623. }
  10624. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_CHANNEL_CHANGE);
  10625. break;
  10626. }
  10627. else if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  10628. {
  10629. if (dMessage == UI_EVENT_FAV_UP)
  10630. {
  10631. g_bIsCHUp = TRUE;
  10632. }
  10633. else
  10634. {
  10635. g_bIsCHUp = FALSE;
  10636. }
  10637. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_CHANNEL_CHANGE);
  10638. break;
  10639. }
  10640. }
  10641. else
  10642. #endif
  10643. {
  10644. if (dMessage == UI_EVENT_FAV_UP)
  10645. {
  10646. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(DBType, 1, FavType);
  10647. }
  10648. else
  10649. {
  10650. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(DBType, -1, FavType);
  10651. }
  10652. if (hProg != AL_DB_INVALIDHDL)
  10653. {
  10654. AL_DB_EDBType_t db_type;
  10655. AL_DB_ERecordType_t record_type;
  10656. AL_DB_GetRecordType(hProg, &db_type, &record_type);
  10657. if (db_type == AL_DBTYPE_DVB_ATV)
  10658. {
  10659. _DVBApp_CloseAllMenu();
  10660. break;
  10661. }
  10662. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  10663. {
  10664. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  10665. }
  10666. #ifdef SUPPORT_CEC_TV
  10667. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  10668. {
  10669. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  10670. }
  10671. #endif
  10672. /*#ifdef CONFIG_SUPPORT_PVR
  10673. if ((APP_PVR_TIMESHIFT_AUTO == u8AutoTimeShift) && (u8MidRecState != MID_REC_STATUS_STOP))
  10674. {
  10675. DVBApp_StopTimeshift(TRUE);
  10676. }
  10677. #endif*/
  10678. _DVBApp_Zapping(CurSerType, hProg, FALSE, 0, TRUE);
  10679. /*#ifdef CONFIG_SUPPORT_PVR
  10680. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  10681. #endif*/
  10682. }
  10683. else
  10684. {
  10685. DVBApp_CheckProgramType(TRUE);
  10686. }
  10687. break;
  10688. }
  10689. }
  10690. break;
  10691. case UI_EVENT_DISPLAY:
  10692. {
  10693. #ifdef CONFIG_SUPPORT_MHEG5
  10694. #ifdef SUPPORT_SUBTITLE_ON_PG
  10695. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  10696. #endif
  10697. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  10698. {
  10699. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  10700. {
  10701. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  10702. if (sdRet == SP_SUCCESS)
  10703. {
  10704. break;
  10705. }
  10706. }
  10707. }
  10708. #endif
  10709. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  10710. #ifdef CONFIG_SUPPORT_PVR
  10711. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  10712. {
  10713. dvb_printf(" rec info is exist \n");
  10714. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  10715. }
  10716. else
  10717. #endif
  10718. {
  10719. #ifdef PLAY_VIDEO_FOR_ALLSRV
  10720. AL_RecHandle_t hTempHdl;
  10721. MID_PlaybackGetCurProgHandle(al_null, &hTempHdl);
  10722. DBPIDInfo_t stVideoPid;
  10723. memset(&stVideoPid,0xff,sizeof(DBPIDInfo_t));
  10724. AL_DB_QueryDetailFieldByName(hTempHdl, (al_uint8 *)"stVideoPid", (al_void *)&stVideoPid);
  10725. #endif
  10726. if (bHasValidServ)
  10727. {
  10728. #ifdef SUPPORT_HOTEL_MODE_INFOBANNER_SHOW_CONTROL
  10729. if((g_stFactoryHotelData.HotelModeOnOff)&&(!g_stFactoryHotelData.ShowInfoBar))
  10730. break;
  10731. #endif
  10732. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  10733. {
  10734. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO);
  10735. #ifdef PLAY_VIDEO_FOR_ALLSRV
  10736. if (DVBApp_CheckHasVideo() == FALSE)
  10737. #else
  10738. if (eServiceType == AL_RECTYPE_DVBRADIO)
  10739. #endif
  10740. {
  10741. if (!APP_GUIOBJ_DVB_Playback_GetShowLogoState())
  10742. {
  10743. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  10744. }
  10745. }
  10746. if (APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL)
  10747. == MID_PLAYBK_PROG_STATE_LOCKED)
  10748. {
  10749. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  10750. {
  10751. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  10752. }
  10753. #ifdef SUPPORT_CEC_TV
  10754. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  10755. {
  10756. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  10757. }
  10758. #endif
  10759. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  10760. }
  10761. else if (APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL)
  10762. == MID_PLAYBK_PROG_STATE_AUDIO_VIDEO_SCRAMBLED \
  10763. ||APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL)
  10764. == MID_PLAYBK_PROG_STATE_ONLY_VIDEO_SCRAMBLED \
  10765. ||(APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL)
  10766. == MID_PLAYBK_PROG_STATE_ONLY_AUDIO_SCRAMBLED && eServiceType == AL_RECTYPE_DVBRADIO
  10767. #ifdef PLAY_VIDEO_FOR_ALLSRV
  10768. &&((stVideoPid.usDataPID&0x1fff) == 0x1fff)
  10769. #else
  10770. && eServiceType == AL_RECTYPE_DVBRADIO
  10771. #endif
  10772. ))
  10773. {
  10774. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL))
  10775. {
  10776. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  10777. }
  10778. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL))
  10779. {
  10780. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  10781. }
  10782. dvb_printf("#####Pop Scramble MSG Menu,[%s:%d] ######\n",__FUNCTION__,__LINE__);
  10783. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SCRAMBLE);
  10784. }
  10785. else if ((eServiceType == AL_RECTYPE_DVBRADIO)
  10786. &&(!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL))
  10787. #ifdef PLAY_VIDEO_FOR_ALLSRV
  10788. &&((stVideoPid.usDataPID&0x1fff) == 0x1fff)
  10789. #endif
  10790. )
  10791. {
  10792. #ifdef CONFIG_SUPPORT_MHEG5
  10793. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  10794. #endif
  10795. {
  10796. if(g_bScrambleFlag != PROG_STATUS_SCRAMBLE_UNKNOW)
  10797. {
  10798. _DVBApp_ShowPopup(DVB_APP_POP_MSG_RADIO_CHANNEL);
  10799. }
  10800. }
  10801. }
  10802. }
  10803. else
  10804. {
  10805. dvb_printf("[%s %d]\n", __FUNCTION__, __LINE__);
  10806. _DVBApp_CloseAllMenu();
  10807. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  10808. {
  10809. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  10810. }
  10811. #ifdef SUPPORT_CEC_TV
  10812. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  10813. {
  10814. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  10815. }
  10816. #endif
  10817. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO, 0);
  10818. #if 0
  10819. if (APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL)
  10820. == MID_PLAYBK_PROG_STATE_LOCKED)
  10821. {
  10822. //_DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  10823. }
  10824. #endif
  10825. }
  10826. }
  10827. else
  10828. {
  10829. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  10830. }
  10831. }
  10832. }
  10833. //test OSD Capture function.
  10834. //MAINAPP_SendGlobalEvent(APP_GLOBAL_EVENT_OSD_CAPTURE, 0);
  10835. break;
  10836. case UI_EVENT_TEXT:
  10837. {
  10838. #ifdef CONFIG_SUPPORT_MHEG5
  10839. #ifdef SUPPORT_SUBTITLE_ON_PG
  10840. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  10841. #endif
  10842. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  10843. {
  10844. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  10845. {
  10846. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  10847. if (sdRet == SP_SUCCESS)
  10848. {
  10849. // do this action at ui_event_freeze
  10850. #if 0
  10851. if( SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE) ) //Gahu:D0326
  10852. {
  10853. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  10854. }
  10855. if (APP_GetPlaybackPauseState() == TRUE)
  10856. {
  10857. MID_PlaybackStreamResume(1);
  10858. g_PauseState = FALSE;
  10859. }
  10860. #endif
  10861. // do this action at ui_event_freeze
  10862. break;
  10863. }
  10864. }
  10865. }
  10866. #endif
  10867. #ifdef CONFIG_SUPPORT_TTX
  10868. #ifdef CONFIG_SUPPORT_PVR
  10869. if (MID_TSPLParser_GetThreadState())
  10870. {
  10871. al_bool bTtSignalStatus = al_false;
  10872. AL_TTX_GetSignalStatus(&bTtSignalStatus);
  10873. if (bTtSignalStatus == al_true)
  10874. {
  10875. dvb_printf("call create dtv ttx menu!\n");
  10876. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  10877. {
  10878. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  10879. #ifdef CONFIG_SUPPORT_SUBTITLE
  10880. UINT8 onoff = 0;
  10881. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  10882. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  10883. onoff = g_stUserInfoData.Subtitle;
  10884. if (onoff == TRUE)
  10885. {
  10886. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  10887. }
  10888. #endif
  10889. }
  10890. else
  10891. {
  10892. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  10893. {
  10894. _DVBApp_CloseAllMenu();
  10895. }
  10896. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  10897. {
  10898. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  10899. MID_PlaybackStreamResume(1);
  10900. APP_SetPlaybackPauseState(FALSE);
  10901. g_PauseState = FALSE;
  10902. #ifdef Subtitle_Freeze
  10903. AL_Subtitle_SetFreeze(al_false);
  10904. #endif
  10905. }
  10906. #ifdef CONFIG_SUPPORT_SUBTITLE
  10907. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB);
  10908. #endif
  10909. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_TTX, 0);
  10910. }
  10911. }
  10912. else
  10913. {
  10914. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  10915. {
  10916. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  10917. }
  10918. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_TTX);
  10919. }
  10920. break;
  10921. }
  10922. #endif
  10923. #endif
  10924. UINT8 u8ProgLockState = FALSE;
  10925. AL_ServiceDetail_t SerInfor;
  10926. AL_DB_QueryDetail(APP_DVB_Playback_GetCurrentProgHandle(
  10927. eNetType, (AL_RECTYPE_DVBTV | AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA)),
  10928. &SerInfor);
  10929. if (AL_DBTYPE_DVB_T == eNetType)
  10930. {
  10931. if (SerInfor.stDVBTServ.stProgAttrib.parental_lock == al_true)
  10932. {
  10933. u8ProgLockState = TRUE;
  10934. }
  10935. }
  10936. else if (AL_DBTYPE_DVB_C == eNetType)
  10937. {
  10938. if (SerInfor.stDVBCServ.stProgAttrib.parental_lock == al_true)
  10939. {
  10940. u8ProgLockState = TRUE;
  10941. }
  10942. }
  10943. else if (AL_DBTYPE_DVB_S == eNetType)
  10944. {
  10945. if (SerInfor.stDVBSServ.stProgAttrib.parental_lock == al_true)
  10946. {
  10947. u8ProgLockState = TRUE;
  10948. }
  10949. }
  10950. if ((u8ProgLockState == TRUE && APP_DVB_Playback_IsUnlock() == FALSE)
  10951. && (g_u32OldPopup == PLAYBACK_POPUP_PWD_LOCKED
  10952. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO)))
  10953. {
  10954. break;
  10955. }
  10956. MID_PlaybackProgState_t GetProgState;
  10957. GetProgState = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL);
  10958. /*if digital programs are locked, pressing TT key is not Available*/
  10959. if((GetProgState != MID_PLAYBK_PROG_STATE_NORMAL)
  10960. && (GetProgState != MID_PLAYBK_PROG_STATE_VIDEO_AVC)
  10961. && (GetProgState != MID_PLAYBK_PROG_STATE_VIDEO_MPEG4))
  10962. {
  10963. break;
  10964. }
  10965. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_DATABASE_EMPTY) || DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE))
  10966. {
  10967. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  10968. break;
  10969. }
  10970. #ifdef CONFIG_MOD_PACK_TT
  10971. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  10972. {
  10973. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  10974. break;
  10975. }
  10976. #endif
  10977. #ifdef CONFIG_SUPPORT_TTX
  10978. al_bool bTtSignalStatus = al_false;
  10979. AL_TTX_GetSignalStatus(&bTtSignalStatus);
  10980. #endif
  10981. #ifndef CONFIG_SUPPORT_MHEG5
  10982. Boolean bIgnoreCheckTTX = TRUE;
  10983. #endif
  10984. if (APP_Area_SupportDtg()
  10985. #ifdef CONFIG_SUPPORT_MHEG5
  10986. && (APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED)
  10987. #else
  10988. && (!bIgnoreCheckTTX) //Also deal with Teletext flow if MHEG5 isn't supported.
  10989. #endif
  10990. )
  10991. {
  10992. #ifdef CONFIG_SUPPORT_MHEG5
  10993. dvb_printf("There is MHEG5 service existed.\n");
  10994. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  10995. {
  10996. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  10997. {
  10998. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  10999. {
  11000. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  11001. }
  11002. if (APP_GetPlaybackPauseState() == TRUE)
  11003. {
  11004. MID_PlaybackStreamResume(1);
  11005. g_PauseState = FALSE;
  11006. }
  11007. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  11008. if (sdRet == SP_SUCCESS)
  11009. {
  11010. break;
  11011. }
  11012. }
  11013. }
  11014. else
  11015. {
  11016. #ifdef CONFIG_SUPPORT_PVR
  11017. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  11018. {
  11019. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_REC_FOR_MHEG);
  11020. break;
  11021. }
  11022. else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode)
  11023. || (MID_REC_MODE_AUTO == u8MIDRecMode))
  11024. {
  11025. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_TIMESHIFT_FOR_MHEG);
  11026. break;
  11027. }
  11028. #endif
  11029. #ifdef CONFIG_SUPPORT_SUBTITLE
  11030. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  11031. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  11032. if (g_stUserInfoData.Subtitle != 0) //Subtitle has been opened.
  11033. {
  11034. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_SUBTITLE_TO_OPEN_MHEG5);
  11035. }
  11036. #endif
  11037. }
  11038. #endif
  11039. }
  11040. #ifdef CONFIG_SUPPORT_TTX
  11041. else if (bTtSignalStatus == al_true)
  11042. {
  11043. eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  11044. if(eSourType != APP_SOURCE_DTV || eServiceType == AL_RECTYPE_DVBRADIO)
  11045. {
  11046. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  11047. break;
  11048. }
  11049. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  11050. {
  11051. dvb_printf("@@@@@@ TTX is Signal Guiobj exsit,destroy ttx menu!\n");
  11052. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  11053. #ifdef CONFIG_SUPPORT_SUBTITLE
  11054. UINT8 onoff = 0;
  11055. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  11056. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  11057. onoff = g_stUserInfoData.Subtitle;
  11058. if (onoff == TRUE)
  11059. {
  11060. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  11061. }
  11062. #endif
  11063. }
  11064. else
  11065. {
  11066. _DVBApp_CloseAllMenu();
  11067. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  11068. {
  11069. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  11070. MID_PlaybackStreamResume(1);
  11071. APP_SetPlaybackPauseState(FALSE);
  11072. g_PauseState = FALSE;
  11073. #ifdef Subtitle_Freeze
  11074. AL_Subtitle_SetFreeze(FALSE);
  11075. #endif
  11076. }
  11077. #ifdef CONFIG_SUPPORT_SUBTITLE
  11078. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB);
  11079. #endif
  11080. dvb_printf("@@@@@@ TTX is Signal,Cestroy ttx menu!\n");
  11081. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_TTX, 0);
  11082. }
  11083. }
  11084. #endif
  11085. else
  11086. {
  11087. #ifdef CONFIG_SUPPORT_TTX
  11088. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  11089. {
  11090. dvb_printf("@@@@@@ TTX is Signal Guiobj exsit,destroy ttx menu!\n");
  11091. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  11092. }
  11093. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_TTX);
  11094. #else
  11095. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  11096. #endif
  11097. }
  11098. }
  11099. break;
  11100. #ifdef SUPPORT_CLOCKINFO_SHOW
  11101. case UI_EVENT_DEVLIST: //UI_EVENT_DEVLIST clock key
  11102. {
  11103. /*if digital programs are locked, pressing clock key is not Available*/
  11104. MID_PlaybackProgState_t GetProgState;
  11105. GetProgState = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL);
  11106. if ((GetProgState == MID_PLAYBK_PROG_STATE_LOCKED) \
  11107. || (GetProgState == MID_PLAYBK_PROG_STATE_ONLY_VIDEO_SCRAMBLED) \
  11108. ||(GetProgState == MID_PLAYBK_PROG_STATE_AUDIO_VIDEO_SCRAMBLED) \
  11109. || (GetProgState == MID_PLAYBK_PROG_STATE_ONLY_AUDIO_SCRAMBLED))
  11110. {
  11111. break;
  11112. }
  11113. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_DATABASE_EMPTY))
  11114. {
  11115. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  11116. break;
  11117. }
  11118. if (eSourType == APP_SOURCE_DTV)
  11119. {
  11120. #if 0
  11121. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTXCLOCK))
  11122. {
  11123. //dvb_printf("close clock menu!\n");
  11124. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTXCLOCK);
  11125. }
  11126. else
  11127. {
  11128. al_bool bTtSignalStatus = 0;
  11129. AL_TTX_GetSignalStatus(&bTtSignalStatus);
  11130. if ((bTtSignalStatus == TRUE) && (_DTVAPP_Check_TTClock_HasValidData() == SP_SUCCESS))
  11131. {
  11132. //dvb_printf("open clock menu!\n");
  11133. _DVBApp_CloseAllMenu();
  11134. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_TTXCLOCK, 0);
  11135. }
  11136. else
  11137. {
  11138. //dvb_printf("no clock!\n");
  11139. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  11140. }
  11141. }
  11142. #endif
  11143. }
  11144. else
  11145. {
  11146. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  11147. }
  11148. }
  11149. break;
  11150. #endif
  11151. case UI_EVENT_SUBTITLE:
  11152. #ifdef CONFIG_SUPPORT_PVR
  11153. if (MID_TSPLParser_GetThreadState())
  11154. {
  11155. UINT32 u32PEState = MID_TSPL_MODE_STOP;
  11156. MID_TSPLParser_GetPlayState(&u32PEState, NULL);
  11157. if (u32PEState != MID_TSPL_MODE_PLAY)
  11158. {
  11159. break;
  11160. }
  11161. #ifdef CONFIG_SUPPORT_SUBTITLE
  11162. UINT32 SubTotalNum = 0;
  11163. #ifdef CONFIG_SUPPORT_TTX
  11164. al_uint32 TTXSubtitleTotalNum = 0;
  11165. #endif
  11166. if(AL_Subtitle_GetTotalNum(&SubTotalNum) == AL_SUCCESS
  11167. #ifdef CONFIG_SUPPORT_TTX
  11168. || (AL_TTX_GetTotalNum(AL_TTX_SUB_DESC_TYPE, &TTXSubtitleTotalNum) == AL_SUCCESS)
  11169. #endif
  11170. )
  11171. {
  11172. if(SubTotalNum > 0)
  11173. {
  11174. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU))
  11175. {
  11176. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU);
  11177. _DVBApp_CheckPopupDisplay();
  11178. }
  11179. else
  11180. {
  11181. _DVBApp_HidePopupDisplay();
  11182. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  11183. {
  11184. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  11185. }
  11186. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  11187. {
  11188. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC);
  11189. }
  11190. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER))
  11191. {
  11192. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER);
  11193. }
  11194. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD))
  11195. {
  11196. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD);
  11197. }
  11198. APP_GUIOBJ_SubTitle_SetTSFMode(TRUE);
  11199. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU, 0);
  11200. }
  11201. break;
  11202. }
  11203. #ifdef CONFIG_SUPPORT_TTX
  11204. else if (TTXSubtitleTotalNum > 0)
  11205. {
  11206. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU))
  11207. {
  11208. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU);
  11209. _DVBApp_CheckPopupDisplay();
  11210. }
  11211. else
  11212. {
  11213. _DVBApp_HidePopupDisplay();
  11214. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  11215. {
  11216. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  11217. }
  11218. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  11219. {
  11220. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC);
  11221. }
  11222. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER))
  11223. {
  11224. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER);
  11225. }
  11226. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD))
  11227. {
  11228. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD);
  11229. }
  11230. APP_GUIOBJ_SubTitle_SetTSFMode(TRUE);
  11231. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU, 0);
  11232. }
  11233. break;
  11234. }
  11235. #endif
  11236. }
  11237. #endif
  11238. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  11239. break;
  11240. }
  11241. #endif
  11242. {
  11243. UINT8 u8ProgLockState = MID_PLAYBK_PROG_STATE_REPLACE;
  11244. u8ProgLockState = APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL);
  11245. if((u8ProgLockState != MID_PLAYBK_PROG_STATE_NORMAL)
  11246. && (u8ProgLockState != MID_PLAYBK_PROG_STATE_VIDEO_AVC)
  11247. && (u8ProgLockState != MID_PLAYBK_PROG_STATE_VIDEO_MPEG4))
  11248. {
  11249. break;
  11250. }
  11251. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  11252. if (MID_PlaybackIsPauseState() || (bSignalState != AL_DVB_MONITOR_VALUE_TRUE) || (DVBApp_CheckServiceNotAvailable() == TRUE)
  11253. || (u8ProgLockState == MID_PLAYBK_PROG_STATE_AUDIO_VIDEO_SCRAMBLED)\
  11254. ||(u8ProgLockState == MID_PLAYBK_PROG_STATE_ONLY_AUDIO_SCRAMBLED)\
  11255. ||(u8ProgLockState == MID_PLAYBK_PROG_STATE_ONLY_VIDEO_SCRAMBLED))
  11256. {
  11257. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  11258. break;
  11259. }
  11260. #ifdef CONFIG_SUPPORT_SUBTITLE
  11261. UINT32 SubTotalNum = 0;
  11262. #ifdef CONFIG_SUPPORT_TTX
  11263. al_uint32 TTXSubtitleTotalNum = 0;
  11264. #endif
  11265. #if (defined CONFIG_MOD_PACK_TT) || (defined CONFIG_MOD_PACK_SUB)
  11266. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  11267. {
  11268. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  11269. break;
  11270. }
  11271. #endif
  11272. if ((AL_Subtitle_GetTotalNum(&SubTotalNum) == AL_SUCCESS)
  11273. #ifdef CONFIG_SUPPORT_TTX
  11274. || (AL_TTX_GetTotalNum(AL_TTX_SUB_DESC_TYPE, &TTXSubtitleTotalNum) == AL_SUCCESS)
  11275. #endif
  11276. )
  11277. {
  11278. if (SubTotalNum > 0)
  11279. {
  11280. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU))
  11281. {
  11282. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU);
  11283. _DVBApp_CheckPopupDisplay();
  11284. }
  11285. else
  11286. {
  11287. _DVBApp_HidePopupDisplay();
  11288. _DVBApp_CloseAllMenu();
  11289. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER))
  11290. {
  11291. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER);
  11292. }
  11293. APP_GUIOBJ_SubTitle_SetTSFMode(FALSE);
  11294. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU, 0);
  11295. }
  11296. }
  11297. #ifdef CONFIG_SUPPORT_TTX
  11298. else if (TTXSubtitleTotalNum > 0)
  11299. {
  11300. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU))
  11301. {
  11302. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU);
  11303. _DVBApp_CheckPopupDisplay();
  11304. }
  11305. else
  11306. {
  11307. _DVBApp_HidePopupDisplay();
  11308. _DVBApp_CloseAllMenu();
  11309. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER))
  11310. {
  11311. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER);
  11312. }
  11313. APP_GUIOBJ_SubTitle_SetTSFMode(FALSE);
  11314. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU, 0);
  11315. }
  11316. }
  11317. #endif
  11318. else
  11319. {
  11320. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_SUBTITLE);
  11321. }
  11322. }
  11323. else
  11324. {
  11325. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_SUBTITLE);
  11326. }
  11327. #else
  11328. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  11329. #endif
  11330. }
  11331. break;
  11332. case UI_EVENT_VOL_DN:
  11333. case UI_EVENT_VOL_UP:
  11334. #ifdef SUPPORT_CEC_TV
  11335. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  11336. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  11337. if (( APP_SWITCH_ON == g_stFeatureData.Enable_HDMILink)
  11338. #ifdef SUPPORT_AMPLIFIER_CONTROL
  11339. &&(APP_SWITCH_ON == g_stFeatureData.AmplifierControl)
  11340. #endif
  11341. && (APP_HDMILINK_AMPLIFIER == g_stFeatureData.SpeakerPreference)
  11342. && (APP_GUIOBJ_Source_GetAmplifierPort() != 0) && APP_Check_CEC_DEVICE_Status())
  11343. {
  11344. if (CECTV_GetCECEnable()==CECTV_ENABLE)
  11345. {
  11346. if(dMessage == UI_EVENT_VOL_UP)
  11347. {
  11348. APP_Set_CECTV_Mute_Status(EVENT_CECTV_SET_MUTE_STATUS_VOLUME_UP);
  11349. }
  11350. else if(dMessage == UI_EVENT_VOL_DN)
  11351. {
  11352. APP_Set_CECTV_Mute_Status(EVENT_CECTV_SET_MUTE_STATUS_VOLUME_DOWN);
  11353. }
  11354. DVBApp_VolumeKeyHandler(dMessage,TRUE);
  11355. break;
  11356. }
  11357. }
  11358. #endif
  11359. DVBApp_VolumeKeyHandler(dMessage,FALSE);
  11360. break;
  11361. case UI_EVENT_ASPECT:
  11362. #ifdef CONFIG_SUPPORT_PVR
  11363. /*if (MID_TSPLParser_GetThreadState() == TRUE)
  11364. {
  11365. UINT32 u32PEState = MID_TSPL_MODE_PLAY;
  11366. MID_TSPLParser_GetPlayState(&u32PEState, NULL);
  11367. if (u32PEState == MID_TSPL_MODE_PAUSE)
  11368. {
  11369. break;
  11370. }
  11371. }*/
  11372. if (APP_GUIOBJ_DVB_PvrPlayInfo_GetRecState() == PVR_STATE_PAUSE)
  11373. {
  11374. break;
  11375. }
  11376. #endif
  11377. if ((APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_LOCKED)
  11378. #ifdef CONFIG_SUPPORT_PVR //if playing pvr file, allow to set pic mode
  11379. && (!MID_TSPLParser_GetThreadState())
  11380. #endif
  11381. )
  11382. {
  11383. break;
  11384. }
  11385. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  11386. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  11387. if (g_stFactoryHotelData.HotelModeOnOff == 1&&g_stFactoryHotelData.PictureLock == 1)
  11388. {
  11389. dvb_printf("[%s] Picture Option has been Lock On!!\n",__FUNCTION__);
  11390. break;
  11391. }
  11392. MID_DISP_DTVGetVideoMute(&eMuteSt);
  11393. if ((eMuteSt == MID_DISP_MUTE) || (eMuteSt == MID_DISP_MUTE_BY_APP) || (eMuteSt == MID_DISP_MUTE_BY_TVFE) ||(eMuteSt == MID_DISP_MUTE_BY_VIP))
  11394. {
  11395. #ifdef CONFIG_SUPPORT_MHEG5
  11396. al_uint8 bSignalState = al_false;
  11397. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  11398. if((bSignalState != AL_DVB_MONITOR_VALUE_TRUE)
  11399. ||(!((APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED)
  11400. && APP_Area_SupportDtg())))
  11401. {
  11402. break;
  11403. }
  11404. #else
  11405. break;
  11406. #endif
  11407. }
  11408. {
  11409. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  11410. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  11411. if ((bHasValidServ && (bSignalState == AL_DVB_MONITOR_VALUE_TRUE)
  11412. #ifndef PLAY_VIDEO_FOR_ALLSRV
  11413. && (eServiceType != AL_RECTYPE_DVBRADIO)
  11414. #endif
  11415. )
  11416. #ifdef CONFIG_SUPPORT_PVR //if playing pvr file, allow to set pic mode
  11417. || (MID_TSPLParser_GetThreadState())
  11418. #endif
  11419. )
  11420. {
  11421. #ifdef CONFIG_SUPPORT_PVR
  11422. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  11423. #endif
  11424. {
  11425. _DVBApp_CloseAllMenu();
  11426. }
  11427. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_BANNER, dMessage);
  11428. }
  11429. else
  11430. {
  11431. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  11432. break;
  11433. }
  11434. }
  11435. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  11436. {
  11437. if (eSourType == APP_SOURCE_DTV)
  11438. {
  11439. #ifdef CONFIG_SUPPORT_SUBTITLE
  11440. UINT8 tmpIdx = 0;
  11441. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  11442. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  11443. tmpIdx = g_stUserInfoData.Subtitle;
  11444. if (tmpIdx == DVB_SWITCH_ON)
  11445. {
  11446. #ifdef Subtitle_Freeze
  11447. AL_Subtitle_SetFreeze(FALSE);
  11448. #else
  11449. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  11450. #endif
  11451. }
  11452. #endif
  11453. #ifdef CONFIG_SUPPORT_MHEG5
  11454. #ifdef CONFIG_SUPPORT_SUBTITLE
  11455. if (tmpIdx == DVB_SWITCH_OFF)
  11456. #endif
  11457. {
  11458. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5);
  11459. }
  11460. #endif
  11461. }
  11462. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  11463. }
  11464. if (APP_GetPlaybackPauseState() == TRUE)
  11465. {
  11466. MID_PlaybackStreamResume(1);
  11467. g_PauseState = FALSE;
  11468. }
  11469. break;
  11470. #ifdef SUPPORT_FACTORY_AUTO_TEST
  11471. case UI_EVENT_KEYPAD_DOWN:
  11472. case UI_EVENT_KEYPAD_UP:
  11473. case UI_EVENT_KEYPAD_SOURCE:
  11474. case UI_EVENT_KEYPAD_LEFT:
  11475. case UI_EVENT_KEYPAD_RIGHT:
  11476. case UI_EVENT_KEYPAD_POWER:
  11477. case UI_EVENT_KEYPAD_MENU:
  11478. {
  11479. extern int APP_Factory_GetAutoTestOnOff(void);
  11480. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  11481. {
  11482. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB,APP_GUIOBJ_BANNER))
  11483. {
  11484. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_BANNER, dMessage);
  11485. }
  11486. }
  11487. }
  11488. break;
  11489. #endif
  11490. #ifdef CELLO_REMOTE_KEY
  11491. case UI_EVENT_PIC_ASPECT:
  11492. #endif
  11493. case UI_EVENT_PIC_MOD:
  11494. if ((APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_LOCKED)
  11495. #ifdef CONFIG_SUPPORT_PVR
  11496. &&(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  11497. #endif
  11498. )
  11499. {
  11500. break;
  11501. }
  11502. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  11503. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  11504. if (g_stFactoryHotelData.HotelModeOnOff == 1&&g_stFactoryHotelData.PictureLock == 1)
  11505. {
  11506. dvb_printf("[%s] Picture Option has been Lock On!!\n",__FUNCTION__);
  11507. break;
  11508. }
  11509. #if 0
  11510. TVFE_GetAPPMuteFlag(&bAPPMuteEn);
  11511. TVFE_GetTvfeMuteFlag(&bTvfeMuteEn);
  11512. if ((bAPPMuteEn == DTV_TRUE) || (bTvfeMuteEn == DTV_TRUE))
  11513. {
  11514. #ifdef CONFIG_SUPPORT_MHEG5
  11515. al_uint8 bSignalState = al_false;
  11516. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  11517. if((bSignalState != AL_DVB_MONITOR_VALUE_TRUE)
  11518. ||(!((APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED)
  11519. && APP_Area_SupportDtg())))
  11520. {
  11521. break;
  11522. }
  11523. #else
  11524. break;
  11525. #endif
  11526. }
  11527. if ((eServiceType == AL_RECTYPE_DVBRADIO)
  11528. #ifdef CONFIG_SUPPORT_PVR //if playing pvr file, allow to set pic mode
  11529. && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)
  11530. #endif
  11531. )
  11532. {
  11533. break; //zhongbaoxing added for mantis bug 0136063 @20110525
  11534. }
  11535. TotalNum = DVBApp_Get_TotalNumber();
  11536. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  11537. if (((TotalNum > 0) && (bSignalState == AL_DVB_MONITOR_VALUE_TRUE))
  11538. #ifdef CONFIG_SUPPORT_PVR //if playing pvr file, allow to set pic mode
  11539. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)
  11540. #endif
  11541. )
  11542. #endif
  11543. {
  11544. #ifdef CONFIG_SUPPORT_PVR
  11545. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  11546. #endif
  11547. {
  11548. _DVBApp_CloseAllMenu();
  11549. }
  11550. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_BANNER, dMessage);
  11551. }
  11552. break;
  11553. case UI_EVENT_SLEEP:
  11554. if ((APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_LOCKED)
  11555. #ifdef CONFIG_SUPPORT_PVR
  11556. &&(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  11557. #endif
  11558. )
  11559. {
  11560. break;
  11561. }
  11562. #if 0
  11563. TVFE_GetAPPMuteFlag(&bAPPMuteEn);
  11564. TVFE_GetTvfeMuteFlag(&bTvfeMuteEn);
  11565. if ((bAPPMuteEn == DTV_TRUE) || (bTvfeMuteEn == DTV_TRUE))
  11566. {
  11567. #ifdef CONFIG_SUPPORT_MHEG5
  11568. al_uint8 bSignalState = al_false;
  11569. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  11570. if((bSignalState != AL_DVB_MONITOR_VALUE_TRUE)
  11571. ||(!((APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED)
  11572. && APP_Area_SupportDtg())))
  11573. {
  11574. break;
  11575. }
  11576. #else
  11577. break;
  11578. #endif
  11579. }
  11580. #endif
  11581. {
  11582. #ifdef CONFIG_SUPPORT_PVR
  11583. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  11584. #endif
  11585. {
  11586. _DVBApp_CloseAllMenu();
  11587. }
  11588. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_BANNER, dMessage);
  11589. }
  11590. break;
  11591. case UI_EVENT_SND_MOD:
  11592. #ifdef CELLO_REMOTE_KEY
  11593. case UI_EVENT_SOUND_MTS:
  11594. #endif
  11595. #ifdef SUPPORT_SMODE_UNMUTE
  11596. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  11597. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  11598. if(g_stUserInfoData.Mute)
  11599. {
  11600. if (CECTV_GetHDMISystemAudioMode()&& APP_Check_CEC_DEVICE_Status())
  11601. {
  11602. cec_RemoteControlPassThrough(CECTV_KEY_MUTE);
  11603. cec_RemoteControlPassThrough(CECTV_KEY_MUTE_RELEASE);
  11604. }
  11605. }
  11606. _APP_GUIOBJ_Sound_SetMuteStatus();
  11607. #endif
  11608. if ((APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_LOCKED)
  11609. #ifdef CONFIG_SUPPORT_PVR
  11610. &&(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  11611. #endif
  11612. )
  11613. {
  11614. break;
  11615. }
  11616. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  11617. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  11618. if (g_stFactoryHotelData.HotelModeOnOff == 1&&g_stFactoryHotelData.SoundLock== 1)
  11619. {
  11620. dvb_printf("[%s] Sound Option has been Lock On!!\n",__FUNCTION__);
  11621. break;
  11622. }
  11623. #if 0
  11624. TVFE_GetAPPMuteFlag(&bAPPMuteEn);
  11625. TVFE_GetTvfeMuteFlag(&bTvfeMuteEn);
  11626. if ((bAPPMuteEn == DTV_TRUE) || (bTvfeMuteEn == DTV_TRUE))
  11627. {
  11628. #ifdef CONFIG_SUPPORT_MHEG5
  11629. al_uint8 bSignalState = al_false;
  11630. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  11631. if((bSignalState != AL_DVB_MONITOR_VALUE_TRUE)
  11632. ||(!((APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED)
  11633. && APP_Area_SupportDtg())))
  11634. {
  11635. break;
  11636. }
  11637. #else
  11638. break;
  11639. #endif
  11640. }
  11641. TotalNum = DVBApp_Get_TotalNumber();
  11642. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  11643. if (((TotalNum > 0) && (bSignalState == AL_DVB_MONITOR_VALUE_TRUE))
  11644. #ifdef CONFIG_SUPPORT_PVR //if playing pvr file, allow to set pic mode
  11645. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)
  11646. #endif
  11647. )
  11648. #endif
  11649. {
  11650. #ifdef CONFIG_SUPPORT_PVR
  11651. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  11652. #endif
  11653. {
  11654. _DVBApp_CloseAllMenu();
  11655. }
  11656. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_BANNER, dMessage);
  11657. }
  11658. break;
  11659. case UI_EVENT_8:
  11660. case UI_EVENT_0:
  11661. case UI_EVENT_1:
  11662. case UI_EVENT_2:
  11663. case UI_EVENT_3:
  11664. case UI_EVENT_4:
  11665. case UI_EVENT_5:
  11666. case UI_EVENT_6:
  11667. case UI_EVENT_7:
  11668. case UI_EVENT_9:
  11669. case UI_EVENT_10:
  11670. #ifdef SUPPORT_FACTORY_AUTO_TEST
  11671. if(dMessage == UI_EVENT_10)
  11672. {
  11673. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  11674. {
  11675. APP_Factory_SetAutoTestSourceChange(dMessage);
  11676. break;
  11677. }
  11678. }
  11679. #endif
  11680. #if 0 //def CONFIG_SUPPORT_PVR
  11681. if ((u8MidRecState != MID_REC_STATUS_STOP) && (MID_REC_MODE_AUTO != u8MIDRecMode))
  11682. {
  11683. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER))
  11684. {
  11685. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER);
  11686. }
  11687. if (MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode)
  11688. {
  11689. g_u32NumEvent = dMessage;
  11690. g_bIsNumKey = TRUE;
  11691. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_CHANNEL_CHANGE);
  11692. break;
  11693. }
  11694. else if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  11695. {
  11696. g_u32NumEvent = dMessage;
  11697. g_bIsNumKey = TRUE;
  11698. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_CHANNEL_CHANGE);
  11699. break;
  11700. }
  11701. }
  11702. #endif
  11703. #ifdef CONFIG_SUPPORT_MHEG5
  11704. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  11705. {
  11706. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  11707. {
  11708. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  11709. if (sdRet == SP_SUCCESS)
  11710. {
  11711. break;
  11712. }
  11713. }
  11714. }
  11715. #endif
  11716. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM))
  11717. {
  11718. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM);
  11719. }
  11720. else
  11721. {
  11722. _DVBApp_HidePopupDisplay();
  11723. _DVBApp_CloseAllMenu();
  11724. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM, (dMessage - UI_EVENT_0));
  11725. }
  11726. break;
  11727. #ifdef CONFIG_SUPPORT_PVR
  11728. case UI_EVENT_REC:
  11729. #ifdef REMINDER_OLNY_NO_RECORD
  11730. break;
  11731. #endif
  11732. dvb_printf("UI_EVENT_REC");
  11733. #if defined(SUPPORT_HOTEL_MODE_PVR_FUNCTION_CONTROL)
  11734. if((g_stFactoryHotelData.HotelModeOnOff)&&(!g_stFactoryHotelData.PVRFunction))
  11735. {
  11736. break;
  11737. }
  11738. #elif defined(SUPPORT_PVR_ONOFF)
  11739. if(!g_stSetupData.PVROnOff)
  11740. {
  11741. break;
  11742. }
  11743. #endif
  11744. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  11745. {
  11746. dvb_printf("double rec ,goto duration");
  11747. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  11748. {
  11749. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  11750. }
  11751. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME, 0);
  11752. }
  11753. else
  11754. {
  11755. if (u8MidRecState == MID_REC_STATUS_STOP)
  11756. {
  11757. if (DVBApp_CheckForRecord(MID_REC_MODE_MANUAL) != SP_SUCCESS)
  11758. {
  11759. break;
  11760. }
  11761. #ifdef CONFIG_SUPPORT_MHEG5
  11762. if (APP_Area_SupportDtg() && SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  11763. {
  11764. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_MHEG_FOR_REC);
  11765. }
  11766. else
  11767. #endif
  11768. {
  11769. #ifndef SUPPORT_PVR_SPEC_START_NO_POP
  11770. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_START);
  11771. #else
  11772. dvb_printf("start record is call\n");
  11773. _APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurTime();
  11774. _DVBApp_CloseAllMenu();
  11775. DVBApp_StartRecord(MID_REC_MODE_MANUAL);
  11776. #endif
  11777. }
  11778. break;
  11779. }
  11780. #ifdef SUPPORT_SPEC_PVR_RECORD
  11781. else if ((MID_REC_MODE_MANUAL != u8MIDRecMode)
  11782. && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  11783. { //if timeshifting, then pop to ask stop timeshift and start record
  11784. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_TSHIFT_TO_REC);
  11785. }
  11786. #endif
  11787. }
  11788. break;
  11789. case UI_EVENT_STOP:
  11790. #ifdef CONFIG_SUPPORT_MHEG5
  11791. #ifdef SUPPORT_SUBTITLE_ON_PG
  11792. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  11793. #endif
  11794. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  11795. {
  11796. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  11797. {
  11798. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  11799. if (sdRet == SP_SUCCESS)
  11800. {
  11801. break;
  11802. }
  11803. }
  11804. }
  11805. #endif
  11806. if ((MID_REC_MODE_AUTO == u8MIDRecMode) && ((MID_REC_STATUS_START == u8MidRecState) || (!APP_GUIOBJ_DVB_PvrPlayInfo_GetStopPopFlag())))
  11807. {
  11808. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER)
  11809. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD)
  11810. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  11811. {
  11812. break;
  11813. }
  11814. if (PVR_STATE_STOP != APP_GUIOBJ_DVB_PvrPlayInfo_GetRecState())
  11815. {
  11816. APP_GUIOBJ_DVB_PvrPlayInfo_StopTimeshift();
  11817. }
  11818. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  11819. {
  11820. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  11821. }
  11822. }
  11823. else
  11824. {
  11825. if (((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) ||
  11826. (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)))&&(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  11827. {
  11828. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP);
  11829. }
  11830. else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  11831. {
  11832. if (MID_REC_MODE_AUTO == u8MIDRecMode)
  11833. {
  11834. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  11835. }
  11836. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP);
  11837. }
  11838. else
  11839. {
  11840. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  11841. {
  11842. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, dMessage, 0);
  11843. }
  11844. }
  11845. }
  11846. break;
  11847. case APP_DVB_GLOBAL_EVENT_DTV_MEDIA_INIT_FAIL:
  11848. case APP_DVB_GLOBAL_EVENT_DTV_MEDIA_INIT_SUCCESSFUL:
  11849. case APP_DVB_GLOBAL_EVENT_PVR_RATING_UPDATE:
  11850. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  11851. {
  11852. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY, dMessage, dParam);
  11853. break;
  11854. }
  11855. break;
  11856. #ifdef CONFIG_CIPLUS_SUPPORT_PVR
  11857. case APP_DVB_GLOBAL_EVENT_PVR_CIENQ_UNBLANK:
  11858. if ( SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ))
  11859. {
  11860. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ);
  11861. }
  11862. break;
  11863. case APP_DVB_GLOBAL_EVENT_PVR_TRICK_MODE_CONTROL:
  11864. if( SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, dParam) )
  11865. {
  11866. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, dParam, dMessage, 0);
  11867. }
  11868. break;
  11869. #endif
  11870. case APP_DVB_GLOBAL_EVENT_DTV_MEDIA_INIT_PLAYSTATE:
  11871. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  11872. {
  11873. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY, dMessage, 0);
  11874. break;
  11875. }
  11876. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  11877. {
  11878. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, dMessage, 0);
  11879. break;
  11880. }
  11881. {
  11882. UINT8 u8Mute = 0;
  11883. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  11884. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  11885. u8Mute = g_stUserInfoData.Mute;
  11886. if (u8Mute == FALSE)
  11887. {
  11888. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_DTV);
  11889. }
  11890. MID_TSPLParser_Resume();
  11891. #ifdef CONFIG_SUPPORT_SUBTITLE
  11892. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  11893. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  11894. if (g_stUserInfoData.Subtitle == 1)
  11895. {
  11896. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE))
  11897. {
  11898. APP_GUIOBJ_SubTitle_Start();
  11899. }
  11900. }
  11901. #endif
  11902. }
  11903. break;
  11904. case APP_DVB_GLOBAL_EVENT_PVR_UPDATE_TIME:
  11905. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  11906. {
  11907. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, dMessage, 0);
  11908. break;
  11909. }
  11910. break;
  11911. case APP_DVB_GLOBAL_EVENT_DTV_MEDIA_PLAYDONE:
  11912. case APP_DVB_GLOBAL_EVENT_DTV_MEDIA_PLAYREADERROR:
  11913. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  11914. {
  11915. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY, dMessage, 0);
  11916. break;
  11917. }
  11918. if ((MID_REC_MODE_AUTO == u8MIDRecMode)
  11919. || (MID_REC_MODE_MANUAL == u8MIDRecMode))
  11920. {
  11921. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  11922. {
  11923. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  11924. }
  11925. APP_GUIOBJ_DVB_PvrPlayInfo_StopTimeshift();
  11926. }
  11927. else if (MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode)
  11928. {
  11929. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  11930. {
  11931. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, dMessage, 0);
  11932. break;
  11933. }
  11934. APP_GUIOBJ_DVB_PvrPlayInfo_StopTimeshift();
  11935. }
  11936. break;
  11937. case APP_DVB_GLOBAL_EVENT_SWITCH_FILEPLAY:
  11938. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  11939. {
  11940. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY);
  11941. }
  11942. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE)
  11943. && !APP_MenuMgr_Exist_Main_Menu())
  11944. {
  11945. #ifdef CONFIG_CHIP_512L
  11946. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  11947. {
  11948. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  11949. }
  11950. #endif
  11951. SYSAPP_GOBJ_CreateGUIObject_WithPara(
  11952. SYS_APP_DVB, DVB_GUIOBJ_RECORDLIST, dParam);
  11953. }
  11954. #ifdef CONFIG_CHIP_512L
  11955. {
  11956. extern void APP_GUIOBJ_DVB_PvrFilePlay_OpenMessage(PopmsgPrompt_t popmsg, int timeout);
  11957. APP_GUIOBJ_DVB_PvrFilePlay_OpenMessage(POPMSG_PROMPT_PLEASEWAIT, 8);
  11958. }
  11959. #endif
  11960. break;
  11961. case APP_DVB_GLOBAL_EVENT_CLOSE_FILEPLAY:
  11962. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  11963. {
  11964. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY);
  11965. }
  11966. break;
  11967. case APP_DVB_GLOBAL_EVENT_REC_NOTIFY_DISK_FULL:
  11968. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  11969. {
  11970. DVBApp_StopRecord();
  11971. }
  11972. else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode) ||
  11973. (MID_REC_MODE_AUTO == u8MIDRecMode))
  11974. {
  11975. DVBApp_StopTimeshift(TRUE);
  11976. }
  11977. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_DISK_FULL);
  11978. break;
  11979. case APP_DVB_GLOBAL_EVENT_REC_NOTIFY_WRITE_ERR:
  11980. case APP_DVB_GLOBAL_EVENT_REC_NOTIFY_GFS_FAILURE:
  11981. if (MID_REC_MODE_MANUAL == u8MIDRecMode|| MID_REC_MODE_UNATTENDED == u8MIDRecMode)
  11982. {
  11983. DVBApp_StopRecord();
  11984. if(dMessage == APP_DVB_GLOBAL_EVENT_REC_NOTIFY_GFS_FAILURE)
  11985. {
  11986. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  11987. }
  11988. else
  11989. {
  11990. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_WRITE_ERROR);
  11991. }
  11992. }
  11993. else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode) ||
  11994. (MID_REC_MODE_AUTO == u8MIDRecMode))
  11995. {
  11996. DVBApp_StopTimeshift(TRUE);
  11997. if(dMessage == APP_DVB_GLOBAL_EVENT_REC_NOTIFY_GFS_FAILURE)
  11998. {
  11999. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_ENTER_NOT_VALID);
  12000. }
  12001. else
  12002. {
  12003. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_WRITE_ERROR);
  12004. }
  12005. }
  12006. if (APP_PVR_TIMESHIFT_AUTO == u8AutoTimeShift)
  12007. {
  12008. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  12009. }
  12010. break;
  12011. case UI_EVENT_GOTO:
  12012. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) ||
  12013. (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)))
  12014. {
  12015. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_GOTO))
  12016. {
  12017. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_GOTO, 0);
  12018. }
  12019. }
  12020. break;
  12021. case UI_EVENT_FF:
  12022. #ifdef CONFIG_SUPPORT_MHEG5
  12023. #ifdef SUPPORT_SUBTITLE_ON_PG
  12024. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  12025. #endif
  12026. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  12027. {
  12028. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  12029. {
  12030. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  12031. if (sdRet == SP_SUCCESS)
  12032. {
  12033. break;
  12034. }
  12035. }
  12036. }
  12037. #endif
  12038. break;
  12039. case UI_EVENT_FR:
  12040. #ifdef CONFIG_SUPPORT_MHEG5
  12041. #ifdef SUPPORT_SUBTITLE_ON_PG
  12042. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  12043. #endif
  12044. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  12045. {
  12046. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  12047. {
  12048. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  12049. if (sdRet == SP_SUCCESS)
  12050. {
  12051. break;
  12052. }
  12053. }
  12054. }
  12055. #endif
  12056. if ((MID_REC_MODE_AUTO == u8MIDRecMode) && (u8MidRecState != MID_REC_STATUS_STOP))
  12057. {
  12058. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER)
  12059. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD)
  12060. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  12061. {
  12062. break;
  12063. }
  12064. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  12065. {
  12066. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  12067. }
  12068. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERFR);
  12069. }
  12070. break;
  12071. case UI_EVENT_PREV:
  12072. #ifdef CONFIG_SUPPORT_MHEG5
  12073. #ifdef SUPPORT_SUBTITLE_ON_PG
  12074. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  12075. #endif
  12076. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  12077. {
  12078. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  12079. {
  12080. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  12081. if (sdRet == SP_SUCCESS)
  12082. {
  12083. break;
  12084. }
  12085. }
  12086. }
  12087. #endif
  12088. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  12089. {
  12090. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, dMessage, 0);
  12091. }
  12092. break;
  12093. case UI_EVENT_NEXT:
  12094. #ifdef CONFIG_SUPPORT_MHEG5
  12095. #ifdef SUPPORT_SUBTITLE_ON_PG
  12096. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  12097. #endif
  12098. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  12099. {
  12100. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  12101. {
  12102. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  12103. if (sdRet == SP_SUCCESS)
  12104. {
  12105. break;
  12106. }
  12107. }
  12108. }
  12109. #endif
  12110. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  12111. {
  12112. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, dMessage, 0);
  12113. }
  12114. break;
  12115. case APP_DVB_GLOBAL_EVENT_REC_START_FROM_EPG:
  12116. {
  12117. AL_RecHandle_t hRecProg = AL_DB_INVALIDHDL;
  12118. al_uint32 CurTimeInSec = 0;
  12119. al_uint32 EndTimeInsec = 0;
  12120. EndTimeInsec = APP_GUIOBJ_DVB_Epg_GetEndTime();
  12121. AL_Time_GetCurTimeInSecs(&CurTimeInSec);
  12122. if ((CurTimeInSec+10) >= EndTimeInsec)
  12123. {
  12124. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  12125. }
  12126. hRecProg = APP_GUIOBJ_DVB_Epg_GetRecHdl();
  12127. _DVBApp_CloseAllMenu();
  12128. if ((hRecProg != AL_DB_INVALIDHDL)
  12129. && (hCurProg != hRecProg))
  12130. {
  12131. AL_DB_EDBType_t db_type;
  12132. AL_DB_ERecordType_t eServiceType;
  12133. AL_DB_GetRecordType(hRecProg, &db_type, &eServiceType);
  12134. _DVBApp_Zapping(eServiceType, hRecProg, FALSE, 0, FALSE);
  12135. }
  12136. _DVBApp_CloseAllMenu();
  12137. _APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurTime();
  12138. DVBApp_StartRecord(MID_REC_MODE_MANUAL);
  12139. APP_GUIOBJ_DVB_PvrRecDurationTime_SetDurTime(EndTimeInsec);
  12140. }
  12141. break;
  12142. #endif
  12143. case UI_EVENT_FREEZE:
  12144. {
  12145. MID_DISP_DTVGetVideoMute(&eMuteSt);
  12146. if ((eMuteSt == MID_DISP_MUTE)
  12147. || (eMuteSt == MID_DISP_MUTE_BY_APP)
  12148. ||(eMuteSt == MID_DISP_MUTE_BY_TVFE)
  12149. ||(eMuteSt == MID_DISP_MUTE_BY_VIP))
  12150. {
  12151. break;
  12152. }
  12153. }
  12154. /* here, judge database empty or not */
  12155. {
  12156. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  12157. if (!bHasValidServ)
  12158. {
  12159. /* database empty, do nothing */
  12160. break;
  12161. }
  12162. }
  12163. #ifdef CONFIG_SUPPORT_PVR
  12164. if ((MID_REC_STATUS_STOP != u8MidRecState) && (MID_REC_MODE_MANUAL != u8MIDRecMode))
  12165. {
  12166. break; //when timeshift invalid freeze function
  12167. }
  12168. #endif
  12169. #ifdef CONFIG_SUPPORT_MHEG5
  12170. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  12171. {
  12172. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  12173. {
  12174. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, UI_EVENT_FREEZE, (UINT32)&sdRet);
  12175. if (sdRet == SP_ERR_FAILURE)
  12176. {
  12177. break;
  12178. }
  12179. }
  12180. }
  12181. #endif
  12182. #ifdef PLAY_VIDEO_FOR_ALLSRV
  12183. AL_RecHandle_t hTempHdl;
  12184. MID_PlaybackGetCurProgHandle(al_null, &hTempHdl);
  12185. DBPIDInfo_t stVideoPid;
  12186. memset(&stVideoPid,0xff,sizeof(DBPIDInfo_t));
  12187. AL_DB_QueryDetailFieldByName(hTempHdl, (al_uint8 *)"stVideoPid", (al_void *)&stVideoPid);
  12188. if ((stVideoPid.usDataPID&0x1fff) == 0x1fff)
  12189. #else
  12190. if (eServiceType == AL_RECTYPE_DVBRADIO)
  12191. #endif
  12192. {
  12193. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  12194. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  12195. break;
  12196. }
  12197. #ifdef CONFIG_SUPPORT_SUBTITLE
  12198. UINT8 tmpIdx = 0;
  12199. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  12200. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  12201. tmpIdx = g_stUserInfoData.Subtitle;
  12202. #endif
  12203. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  12204. {
  12205. #ifdef CONFIG_SUPPORT_SUBTITLE
  12206. if (tmpIdx == DVB_SWITCH_ON)
  12207. {
  12208. #ifdef Subtitle_Freeze
  12209. AL_Subtitle_SetFreeze(al_false);
  12210. #else
  12211. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  12212. #endif
  12213. }
  12214. #endif
  12215. //zhongbaoxing added for mantis 0164987 @20120117 +++
  12216. #ifdef CONFIG_SUPPORT_MHEG5
  12217. {
  12218. #ifdef CONFIG_SUPPORT_SUBTITLE
  12219. if (tmpIdx == DVB_SWITCH_OFF)
  12220. #endif
  12221. {
  12222. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5);
  12223. }
  12224. }
  12225. #endif
  12226. //zhongbaoxing added for mantis 0164987 @20120117 ---
  12227. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  12228. MID_PlaybackStreamResume(1);
  12229. g_PauseState = FALSE;
  12230. }
  12231. else
  12232. {
  12233. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  12234. if (bSignalState == AL_DVB_MONITOR_VALUE_TRUE)
  12235. {
  12236. if (DVBApp_CheckServiceNotAvailable() == TRUE)
  12237. {
  12238. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  12239. break;
  12240. }
  12241. g_PauseState = TRUE;
  12242. //zhongbaoxing added for mantis 0164987 @20120117 +++
  12243. #ifdef CONFIG_SUPPORT_MHEG5
  12244. //int mh5Status = 0;
  12245. //MHEG5APP_GetMh5Status(&mh5Status);
  12246. //if ((mh5Status&MHEG5APP_STATUS_OSD_UPDATED))
  12247. /*if( APP_DVB_Mheg5_GetBootCarouselStatus()==MHEG5_BOOT_CAROUSEL_EXISTED && APP_DVB_Mheg5_GetMheg5DisplayStatus() ) //Gahu:D0326
  12248. {
  12249. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  12250. g_PauseState = FALSE;
  12251. break;
  12252. }
  12253. else
  12254. {
  12255. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_MH5);
  12256. }*/ //for mantis: 21255
  12257. #endif
  12258. //zhongbaoxing added for mantis 0164987 @20120117 ---
  12259. #ifdef CONFIG_SUPPORT_SUBTITLE
  12260. if (tmpIdx == DVB_SWITCH_ON)
  12261. {
  12262. #ifdef Subtitle_Freeze
  12263. AL_Subtitle_SetFreeze(al_true);
  12264. #else
  12265. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB);
  12266. #endif
  12267. }
  12268. #endif
  12269. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FREEZE, 0);
  12270. MID_PlaybackStreamPause(1);
  12271. g_PauseState = TRUE;
  12272. }
  12273. }
  12274. break;
  12275. case UI_EVENT_TVRADIO:
  12276. #ifdef CONFIG_SUPPORT_PVR
  12277. if (MID_REC_STATUS_STOP != u8MidRecState)// && (MID_REC_MODE_AUTO != u8MIDRecMode))
  12278. {
  12279. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  12280. {
  12281. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_FOR_TVRADIOKEY);
  12282. }
  12283. else
  12284. {
  12285. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_TVRADIOKEY);
  12286. }
  12287. break;
  12288. }
  12289. #if 0
  12290. else if ((MID_REC_STATUS_STOP != u8MidRecState) && (MID_REC_MODE_AUTO == u8MIDRecMode))
  12291. {
  12292. DVBApp_StopTimeshift(TRUE);
  12293. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  12294. }
  12295. #endif
  12296. #endif
  12297. if (APP_DVB_Playback_SwapServiceType(eNetType, (AL_DB_ERecordType_t *)&NextServiceType, &u32TotalNum) != AL_SUCCESS)
  12298. {
  12299. if(NextServiceType == AL_RECTYPE_DVBRADIO)
  12300. {
  12301. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_RADIO);
  12302. }
  12303. else
  12304. {
  12305. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_DTVORDATA);
  12306. }
  12307. }
  12308. break;
  12309. #ifdef CELLO_REMOTE_KEY
  12310. case UI_EVENT_ATV:
  12311. #endif
  12312. case UI_EVENT_ATVDTV:
  12313. #ifdef CONFIG_SUPPORT_PVR
  12314. if (MID_REC_STATUS_STOP != u8MidRecState)// && (MID_REC_MODE_AUTO != u8MIDRecMode))
  12315. {
  12316. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  12317. {
  12318. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_FOR_TVRADIOKEY);
  12319. }
  12320. else
  12321. {
  12322. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_TVRADIOKEY);
  12323. }
  12324. break;
  12325. }
  12326. #endif
  12327. if ((eSourType == APP_SOURCE_DTV) || (eSourType == APP_SOURCE_RADIO))
  12328. {
  12329. DVBApp_ResetPopup_Channel();
  12330. _DVBApp_CloseAllMenu();
  12331. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_ATV);
  12332. }
  12333. break;
  12334. break;
  12335. #ifdef SUPPORT_SOURCE_DVBTCS
  12336. case UI_EVENT_DVBC:// For DVB-C shortcut key
  12337. case UI_EVENT_RED:
  12338. #ifdef CONFIG_DVB_SYSTEM_DVBC_SUPPORT
  12339. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  12340. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  12341. RFtype = g_stChannelData.TV_Connection;
  12342. if(RFtype != APP_RF_TYPE_DVB_C)
  12343. {
  12344. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  12345. {
  12346. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  12347. }
  12348. StringId = APP_GUIOBJ_Channel_GetStringIDByRFType(APP_RF_TYPE_DVB_C);
  12349. APP_GUIOBJ_Channel_SetRFTypeByStringID(StringId);
  12350. }
  12351. else
  12352. {
  12353. #ifdef CONFIG_DVB_SYSTEM_DVBT_SUPPORT
  12354. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  12355. {
  12356. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  12357. }
  12358. StringId = APP_GUIOBJ_Channel_GetStringIDByRFType(APP_RF_TYPE_DVB_T);
  12359. APP_GUIOBJ_Channel_SetRFTypeByStringID(StringId);
  12360. #endif
  12361. }
  12362. #endif
  12363. break;
  12364. case UI_EVENT_DVBS:// For DVB-S shortcut key
  12365. case UI_EVENT_GREEN:
  12366. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  12367. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  12368. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  12369. RFtype = g_stChannelData.TV_Connection;
  12370. if(RFtype != APP_RF_TYPE_DVB_S)
  12371. {
  12372. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  12373. {
  12374. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  12375. }
  12376. StringId = APP_GUIOBJ_Channel_GetStringIDByRFType(APP_RF_TYPE_DVB_S);
  12377. APP_GUIOBJ_Channel_SetRFTypeByStringID(StringId);
  12378. }
  12379. else
  12380. {
  12381. #ifdef CONFIG_DVB_SYSTEM_DVBT_SUPPORT
  12382. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  12383. {
  12384. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  12385. }
  12386. StringId = APP_GUIOBJ_Channel_GetStringIDByRFType(APP_RF_TYPE_DVB_T);
  12387. APP_GUIOBJ_Channel_SetRFTypeByStringID(StringId);
  12388. #endif
  12389. }
  12390. #endif
  12391. break;
  12392. #endif
  12393. #if 0//#ifdef CONFIG_SUPPORT_MHEG5
  12394. case UI_EVENT_RED:
  12395. case UI_EVENT_GREEN:
  12396. case UI_EVENT_BLUE:
  12397. case UI_EVENT_YELLOW:
  12398. if (APP_Area_SupportDtg())
  12399. {
  12400. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  12401. {
  12402. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  12403. SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  12404. if (sdRet == SP_SUCCESS)
  12405. {
  12406. break;
  12407. }
  12408. }
  12409. }
  12410. break;
  12411. #endif
  12412. #ifdef TEAC_BLUE_KEY_FUNCTION
  12413. case UI_EVENT_BLUE:
  12414. {
  12415. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  12416. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  12417. if (eServiceType == AL_RECTYPE_DVBRADIO)
  12418. {
  12419. if (_DVB_GetPanelControlType()== APP_PANEL_POWER_UP)
  12420. {
  12421. #ifdef CONFIG_SUPPORT_MHEG5
  12422. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  12423. #endif
  12424. {
  12425. //APP_Panel_SetPowerSequence(APP_PANEL_POWER_DOWN);
  12426. _DVB_SetPanelControlType(APP_PANEL_POWER_DOWN);
  12427. }
  12428. }
  12429. else if (_DVB_GetPanelControlType()== APP_PANEL_POWER_DOWN)
  12430. {
  12431. //APP_Panel_SetPowerSequence(APP_PANEL_POWER_UP);
  12432. _DVB_SetPanelControlType(APP_PANEL_POWER_UP);
  12433. }
  12434. }
  12435. break;
  12436. }
  12437. #endif
  12438. #ifdef SUPPORT_AD_DESCRIPTION
  12439. case UI_EVENT_AB:
  12440. {
  12441. UINT8 u8Mute = 0;
  12442. u8Mute = g_stUserInfoData.Mute;
  12443. if (u8Mute == TRUE)
  12444. {
  12445. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  12446. if (bSignalState == AL_DVB_MONITOR_VALUE_TRUE)
  12447. {
  12448. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  12449. }
  12450. else
  12451. {
  12452. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_NO_SIGNALE, eSourType);
  12453. }
  12454. g_stUserInfoData.Mute = FALSE;
  12455. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  12456. ITEM_OFFSET(APP_SETTING_UserInfo_t, Mute),
  12457. sizeof(g_stUserInfoData.Mute), &(g_stUserInfoData.Mute));
  12458. #ifdef SUPPORT_STORE_MUTE_FLAG
  12459. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  12460. ITEM_OFFSET(APP_SETTING_UserInfo_t, Mute),
  12461. sizeof(g_stUserInfoData.Mute));
  12462. #endif
  12463. }
  12464. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  12465. SYS_APP_DVB, APP_GUIOBJ_MUTE,
  12466. APP_INTRA_EVENT_HIDE_MUTE, 0);
  12467. break;
  12468. }
  12469. break;
  12470. #endif
  12471. #ifdef CONFIG_SUPPORT_HELP_MENU
  12472. case UI_EVENT_HELP:
  12473. DVBApp_ResetPopup_Channel();
  12474. _DVBApp_CloseAllMenu();
  12475. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_HELP_MENU, 0);
  12476. break;
  12477. #endif
  12478. #ifdef SUPPORT_HKC_FACTORY_REMOTE
  12479. case UI_EVENT_HKC_ENTER_BURNINGMODE:
  12480. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  12481. {
  12482. _DVBApp_Exit_All_Menu();
  12483. g_stFactoryUserData.n_FactSet_BurningMode = 1;
  12484. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0,
  12485. sizeof(APP_SETTING_FactoryUser_t), &(g_stFactoryUserData));
  12486. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0,
  12487. sizeof(g_stFactoryUserData));
  12488. MID_TVFE_SetBurnIn(1, 0, 1);
  12489. //APP_Cul_Fm_CheckAndStartBurningMode();
  12490. }
  12491. break;
  12492. #ifdef CONFIG_DVB_SYSTEM_DVBC_SUPPORT
  12493. case UI_EVENT_HKC_DVBC:
  12494. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  12495. {
  12496. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_RETURN, 0);
  12497. APP_GUIOBJ_Channel_SetRFType(FRONTEND_CONNECT_TYPE_DVB_C, AL_DB_INVALIDHDL);
  12498. }
  12499. break;
  12500. #endif
  12501. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  12502. case UI_EVENT_HKC_DVBS:
  12503. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  12504. {
  12505. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_RETURN, 0);
  12506. APP_GUIOBJ_Channel_SetRFType(FRONTEND_CONNECT_TYPE_DVB_S, AL_DB_INVALIDHDL);
  12507. }
  12508. break;
  12509. #endif
  12510. #ifdef CONFIG_CI_SUPPORT
  12511. case UI_EVENT_HKC_CIINFO:
  12512. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  12513. {
  12514. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_OBJECT_OPEN|PASS_TO_SYSAPP, (DVB_GUIOBJ_CI_MENU|(1<<16)));
  12515. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  12516. DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_CAM_ON_INIT, dParam);
  12517. }
  12518. break;
  12519. #endif
  12520. case UI_EVENT_HKC_DVD:
  12521. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  12522. {
  12523. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_DVD);
  12524. }
  12525. break;
  12526. case UI_EVENT_HKC_FACTORYMENU:
  12527. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  12528. {
  12529. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_FACTORY, UI_EVENT_HKC_FACTORYMENU);
  12530. }
  12531. break;
  12532. case UI_EVENT_HKC_VERSION:
  12533. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  12534. {
  12535. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING))
  12536. {
  12537. DVBApp_ResetPopup_Channel();
  12538. _DVBApp_CloseAllMenu();
  12539. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING, 1);
  12540. Factory_Ver_Debug();
  12541. }
  12542. }
  12543. break;
  12544. case UI_EVENT_HKC_VOLUME80:
  12545. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  12546. {
  12547. APP_Audio_SetVolume(80);
  12548. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  12549. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  12550. g_stVariationalData.Volume = 80;
  12551. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  12552. ITEM_OFFSET(APP_SETTING_Variational_t, Volume),
  12553. sizeof(g_stVariationalData.Volume),&(g_stVariationalData.Volume));
  12554. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  12555. ITEM_OFFSET(APP_SETTING_Variational_t, Volume), sizeof(g_stVariationalData.Volume));
  12556. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_ADJUST, ADJUST_VOLUME);
  12557. }
  12558. break;
  12559. case UI_EVENT_HKC_VOLUMEUP10:
  12560. case UI_EVENT_HKC_VOLUMEDOWN10:
  12561. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  12562. {
  12563. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  12564. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  12565. UINT8 u8VolumeIdx = g_stVariationalData.Volume;
  12566. if (dMessage == UI_EVENT_HKC_VOLUMEUP10)
  12567. {
  12568. u8VolumeIdx += 10;
  12569. g_stVariationalData.Volume = u8VolumeIdx >= ADJUST_MAX_VALUE ? ADJUST_MAX_VALUE : u8VolumeIdx;
  12570. }
  12571. else if (dMessage == UI_EVENT_HKC_VOLUMEDOWN10)
  12572. {
  12573. g_stVariationalData.Volume = u8VolumeIdx <= 10 ? ADJUST_MIN_VALUE : u8VolumeIdx - 10;
  12574. }
  12575. APP_Audio_SetVolume((UINT32)g_stVariationalData.Volume);
  12576. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  12577. ITEM_OFFSET(APP_SETTING_Variational_t, Volume),
  12578. sizeof(g_stVariationalData.Volume), &(g_stVariationalData.Volume));
  12579. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  12580. ITEM_OFFSET(APP_SETTING_Variational_t, Volume), sizeof(g_stVariationalData.Volume));
  12581. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_ADJUST, ADJUST_VOLUME);
  12582. }
  12583. break;
  12584. case UI_EVENT_HKC_RESET:
  12585. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  12586. {
  12587. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  12588. APP_DVB_INTRA_EVENT_STOP_PLAYBACK, PLAYBACK_STOP_ALL);
  12589. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, eSourType);
  12590. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, eSourType);
  12591. #ifdef CONFIG_ATV_SUPPORT
  12592. AL_DB_Reset(AL_DBTYPE_DVB_ATV, al_true);
  12593. #endif
  12594. #if(defined CONFIG_DVB_SYSTEM_DVBT_SUPPORT)
  12595. AL_FW_SwitchDBModule(AL_DBTYPE_DVB_T);
  12596. AL_DB_Reset(AL_DBTYPE_DVB_T, al_true);
  12597. AL_Event_UnLockChannels(AL_DBTYPE_DVB_T, RESERVED_ORIGINAL_NET_ID, RESERVED_TRANSPORT_ID, RESERVED_SERVICE_ID);
  12598. AL_PR_DeleteAllSch(AL_DBTYPE_DVB_T,AL_PR_EVT_REM | AL_PR_SRV_REM);
  12599. #endif
  12600. #if(defined CONFIG_DVB_SYSTEM_DVBC_SUPPORT)
  12601. AL_FW_SwitchDBModule(AL_DBTYPE_DVB_C);
  12602. AL_DB_Reset(AL_DBTYPE_DVB_C, al_true);
  12603. AL_Event_UnLockChannels(AL_DBTYPE_DVB_C, RESERVED_ORIGINAL_NET_ID, RESERVED_TRANSPORT_ID, RESERVED_SERVICE_ID);
  12604. AL_PR_DeleteAllSch(AL_DBTYPE_DVB_C,AL_PR_EVT_REM | AL_PR_SRV_REM);
  12605. #endif
  12606. #if(defined CONFIG_DVB_SYSTEM_DVBS_SUPPORT)
  12607. AL_FW_SwitchDBModule(AL_DBTYPE_DVB_S);
  12608. AL_DB_Reset(AL_DBTYPE_DVB_S, al_true);
  12609. AL_Event_UnLockChannels(AL_DBTYPE_DVB_S, RESERVED_ORIGINAL_NET_ID, RESERVED_TRANSPORT_ID, RESERVED_SERVICE_ID);
  12610. AL_PR_DeleteAllSch(AL_DBTYPE_DVB_S,AL_PR_EVT_REM | AL_PR_SRV_REM);
  12611. DVBApp_LoadCustomerDB(AL_DBTYPE_DVB_S);
  12612. AL_DB_Sync(AL_DBTYPE_DVB_S, al_true);
  12613. #endif
  12614. App_Data_UserSetting_Restore();
  12615. App_Data_UserSetting_FM_Hotel_Restore();
  12616. App_Data_UserSetting_ResetLangContry_ByFMDefaultValue();
  12617. APP_Video_ResetTVSetting();
  12618. GL_TaskSleep(2000);
  12619. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF);
  12620. }
  12621. break;
  12622. case UI_EVENT_HKC_RESET_DEFAULT_FAC:
  12623. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  12624. {
  12625. extern void _APP_GUIOBJ_FM_FactorySetting_Shipping(void);
  12626. _APP_GUIOBJ_FM_FactorySetting_Shipping();
  12627. }
  12628. break;
  12629. case UI_EVENT_HKC_TV:
  12630. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  12631. {
  12632. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_ATV);
  12633. }
  12634. break;
  12635. case UI_EVENT_HKC_AV:
  12636. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  12637. {
  12638. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_AV);
  12639. }
  12640. break;
  12641. case UI_EVENT_HKC_AV2:
  12642. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  12643. {
  12644. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_AV1);
  12645. }
  12646. break;
  12647. case UI_EVENT_HKC_PC:
  12648. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  12649. {
  12650. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_PC);
  12651. }
  12652. break;
  12653. case UI_EVENT_HKC_YPBPR:
  12654. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  12655. {
  12656. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_YPBPR);
  12657. }
  12658. break;
  12659. case UI_EVENT_HKC_YPBPR2:
  12660. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  12661. {
  12662. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_YPBPR1);
  12663. }
  12664. break;
  12665. case UI_EVENT_HKC_HDMI:
  12666. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  12667. {
  12668. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_HDMI);
  12669. }
  12670. break;
  12671. case UI_EVENT_HKC_HDMI2:
  12672. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  12673. {
  12674. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_HDMI1);
  12675. }
  12676. break;
  12677. case UI_EVENT_HKC_HDMI3:
  12678. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  12679. {
  12680. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_HDMI2);
  12681. }
  12682. break;
  12683. case UI_EVENT_HKC_SCART:
  12684. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  12685. {
  12686. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_SCART);
  12687. }
  12688. break;
  12689. case UI_EVENT_HKC_USB:
  12690. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  12691. {
  12692. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_MEDIA);
  12693. }
  12694. break;
  12695. #endif
  12696. case UI_EVENT_PAUSE:
  12697. case UI_EVENT_PLAY_PAUSE:
  12698. #ifdef CONFIG_SUPPORT_MHEG5
  12699. #ifdef SUPPORT_SUBTITLE_ON_PG
  12700. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  12701. #endif
  12702. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  12703. {
  12704. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  12705. {
  12706. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  12707. if (sdRet == SP_SUCCESS)
  12708. {
  12709. break;
  12710. }
  12711. }
  12712. }
  12713. #endif
  12714. #ifdef CONFIG_SUPPORT_PVR
  12715. if ((MID_REC_MODE_AUTO == u8MIDRecMode) && (u8MidRecState != MID_REC_STATUS_STOP))
  12716. {
  12717. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER)
  12718. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD)
  12719. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  12720. {
  12721. break;
  12722. }
  12723. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  12724. {
  12725. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  12726. }
  12727. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERPAUSE);
  12728. }
  12729. #if 0//def SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD
  12730. else if((MID_REC_MODE_MANUAL == u8MIDRecMode) && (u8MidRecState != MID_REC_STATUS_STOP))
  12731. {
  12732. if (APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL)
  12733. == MID_PLAYBK_PROG_STATE_LOCKED)
  12734. {
  12735. break;
  12736. }
  12737. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER)
  12738. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  12739. {
  12740. break;
  12741. }
  12742. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD))
  12743. {
  12744. break;
  12745. }
  12746. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  12747. {
  12748. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  12749. }
  12750. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  12751. {
  12752. if (DVBAPP_Pvr_GetRECPlayFlag())
  12753. {
  12754. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERNORMAL);
  12755. }
  12756. else
  12757. {
  12758. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERPAUSE);
  12759. }
  12760. }
  12761. }
  12762. #else
  12763. else
  12764. {
  12765. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) &&
  12766. (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  12767. {
  12768. MID_RecorderPauseResume();
  12769. _DVBApp_Recorder_PauseResume();
  12770. g_bIsPlaykey = TRUE;
  12771. }
  12772. else if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)) &&
  12773. (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  12774. {
  12775. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  12776. if (bSignalState != AL_DVB_MONITOR_VALUE_TRUE)
  12777. {
  12778. break;
  12779. }
  12780. switch (APP_DVB_Playback_GetProgStateByHandle(eNetType, hProg))
  12781. {
  12782. case MID_PLAYBK_PROG_STATE_ONLY_VIDEO_SCRAMBLED:
  12783. dvb_printf("Error: %s program state scrambled!\n", __FUNCTION__);
  12784. case MID_PLAYBK_PROG_STATE_AUDIO_VIDEO_SCRAMBLED:
  12785. dvb_printf("Error: %s program state scrambled!\n", __FUNCTION__);
  12786. case MID_PLAYBK_PROG_STATE_ONLY_AUDIO_SCRAMBLED:
  12787. dvb_printf("Error: %s program state scrambled!\n", __FUNCTION__);
  12788. case MID_PLAYBK_PROG_STATE_TEMP_SERVICE:
  12789. dvb_printf("Error: %s program state data service!\n", __FUNCTION__);
  12790. case MID_PLAYBK_PROG_STATE_NOT_RUNNING:
  12791. dvb_printf("Error: %s program state not running!\n", __FUNCTION__);
  12792. case MID_PLAYBK_PROG_STATE_LOCKED:
  12793. dvb_printf("Error: %s program state locked!\n", __FUNCTION__);
  12794. return 0;
  12795. default:
  12796. break;
  12797. }
  12798. MID_RecorderPauseResume();
  12799. _DVBApp_Recorder_PauseResume();
  12800. g_bIsPlaykey = FALSE;
  12801. }
  12802. }
  12803. #endif
  12804. break;
  12805. #else
  12806. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  12807. break;
  12808. #endif
  12809. case UI_EVENT_TIMESHIFT:
  12810. #if (defined REMINDER_OLNY_NO_RECORD) || (defined CONFIG_PVR_DISABLE_TIMESHIFT)
  12811. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  12812. break;
  12813. #endif
  12814. #ifdef CONFIG_SUPPORT_PVR
  12815. #if defined(SUPPORT_HOTEL_MODE_PVR_FUNCTION_CONTROL)
  12816. if((g_stFactoryHotelData.HotelModeOnOff)&&(!g_stFactoryHotelData.PVRFunction))
  12817. {
  12818. break;
  12819. }
  12820. #elif defined(SUPPORT_PVR_ONOFF)
  12821. if(!g_stSetupData.PVROnOff)
  12822. {
  12823. break;
  12824. }
  12825. #endif
  12826. if (u8MidRecState == MID_REC_STATUS_STOP)
  12827. {
  12828. if (DVBApp_CheckForRecord(MID_REC_MODE_TIMESHIFT_AFTER_REC) != SP_SUCCESS)
  12829. {
  12830. break;
  12831. }
  12832. #ifdef CONFIG_SUPPORT_MHEG5
  12833. if (APP_Area_SupportDtg() && SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)&& APP_DVB_Mheg5_GetMheg5DisplayStatus() == TRUE)
  12834. {
  12835. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_MHEG_FOR_TIMESHIFT);
  12836. }
  12837. else
  12838. #endif
  12839. // #ifdef SUPPORT_TEAC_TIMESHIFT_CTRL
  12840. #if defined(SUPPORT_TEAC_TIMESHIFT_CTRL) || defined(SUPPORT_PVR_SPEC_START_NO_POP)
  12841. //for mantis 191631, TEAC spec. start timeshift immediately with no pop msg
  12842. {
  12843. PVR_DEBF(" ==timeshift start is called!!!== \n");
  12844. _DVBApp_CloseAllMenu();
  12845. DVBApp_StartRecord(MID_REC_MODE_TIMESHIFT_AFTER_REC);
  12846. }
  12847. #else
  12848. {
  12849. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_START);
  12850. }
  12851. #endif
  12852. break;
  12853. }
  12854. else if ((MID_REC_STATUS_STOP != u8MidRecState)
  12855. && (MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode))
  12856. {
  12857. PVR_DEBF(" dvb app stop timeshift -UI_EVENT_TIMESHIFT- \n");
  12858. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP);
  12859. }
  12860. break;
  12861. #else
  12862. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  12863. break;
  12864. #endif
  12865. #ifdef CONFIG_SUPPORT_PVR
  12866. case UI_EVENT_REC_LIST:
  12867. #if (defined CONFIG_IR501)
  12868. //case UI_EVENT_DEVLIST:
  12869. #endif
  12870. #if defined(SUPPORT_HOTEL_MODE_PVR_FUNCTION_CONTROL)
  12871. if((g_stFactoryHotelData.HotelModeOnOff)&&(!g_stFactoryHotelData.PVRFunction))
  12872. {
  12873. break;
  12874. }
  12875. #elif defined(SUPPORT_PVR_ONOFF)
  12876. if(!g_stSetupData.PVROnOff)
  12877. {
  12878. break;
  12879. }
  12880. #endif
  12881. if (MID_RecorderIsCurRecording() != DRV_SUCCESS) //not allow to open timerlist when recording
  12882. {
  12883. DVBApp_ResetPopup_Channel();
  12884. _DVBApp_CloseAllMenu();
  12885. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  12886. {
  12887. #ifdef Subtitle_Freeze
  12888. AL_Subtitle_SetFreeze(al_false);
  12889. #else
  12890. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  12891. #endif
  12892. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  12893. }
  12894. if (APP_GetPlaybackPauseState() == TRUE)
  12895. {
  12896. MID_PlaybackStreamResume(1);
  12897. APP_SetPlaybackPauseState(FALSE);
  12898. }
  12899. #ifdef SUB_CUSTOMER_Tianle
  12900. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC, 0);
  12901. #else
  12902. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST, 0);
  12903. #endif
  12904. }
  12905. break;
  12906. case UI_EVENT_REC_FILE:
  12907. #ifdef REMINDER_OLNY_NO_RECORD
  12908. break;
  12909. #endif
  12910. #if defined(SUPPORT_HOTEL_MODE_PVR_FUNCTION_CONTROL)
  12911. if((g_stFactoryHotelData.HotelModeOnOff)&&(!g_stFactoryHotelData.PVRFunction))
  12912. {
  12913. break;
  12914. }
  12915. #elif defined(SUPPORT_PVR_ONOFF)
  12916. if(!g_stSetupData.PVROnOff)
  12917. {
  12918. break;
  12919. }
  12920. #endif
  12921. if (!(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_RECORDLIST)))
  12922. {
  12923. #ifndef SUPPORT_TEAC_TIMESHIFT_CTRL
  12924. if (u8MidRecState == MID_REC_STATUS_STOP)
  12925. #endif
  12926. {
  12927. DVBApp_ResetPopup_Channel();
  12928. _DVBApp_CloseAllMenu();
  12929. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  12930. {
  12931. #ifdef Subtitle_Freeze
  12932. AL_Subtitle_SetFreeze(al_false);
  12933. #else
  12934. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  12935. #endif
  12936. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  12937. }
  12938. if (APP_GetPlaybackPauseState() == TRUE)
  12939. {
  12940. MID_PlaybackStreamResume(1);
  12941. APP_SetPlaybackPauseState(FALSE);
  12942. }
  12943. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_RECORDLIST, 0);
  12944. }
  12945. #ifndef SUPPORT_TEAC_TIMESHIFT_CTRL
  12946. else
  12947. {
  12948. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  12949. }
  12950. #endif
  12951. }
  12952. else
  12953. {
  12954. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_RECORDLIST);
  12955. if (APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_LOCKED)
  12956. {
  12957. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  12958. }
  12959. }
  12960. break;
  12961. #endif
  12962. /*#ifdef CONFIG_SUPPORT_PVR
  12963. case APP_DVB_GLOBAL_EVENT_REC_DURATION_EXIT:
  12964. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME))
  12965. {
  12966. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME);
  12967. }
  12968. break;
  12969. case APP_DVB_GLOBAL_EVENT_REC_GOTO_EXIT:
  12970. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_GOTO);
  12971. break;
  12972. #endif*/
  12973. case APP_GLOBAL_EVENT_POPMSG_YES:
  12974. #ifdef CONFIG_CIPLUS_SUPPORT
  12975. if (POPMSG_CONFIRM_ASK_PROFILE_ACTION == dParam)
  12976. {
  12977. APP_CIPLUS_ProfileAction(FALSE);
  12978. }
  12979. #endif
  12980. #ifdef SUPPORT_NETWORK_UPDATE_RESCAN
  12981. if( dParam == PLAYBACK_POPUP_CONFIRM_UPDATE_NWK_STATIC )
  12982. {
  12983. dvb_printf("Receive Freq change msg from afw! dvb_app received message which notice PSI Monitor has found some new freqs which need tune!!!!!!\n");
  12984. AI_PSI_Monitor_UpdateCurrTpTSIDList();
  12985. _DVBApp_Exit_All_Menu();
  12986. _DVBApp_ShowPopup( DVB_APP_POP_MSG_NETWORK_UPDATING );
  12987. APP_GUIOBJ_ScanProcess_SetCurrentSearchMode(SEARCH_D_FULL_FREQ_LIST_MODE);
  12988. #ifdef SUPPORT_CHANGE_TS_DYNAMICALLY
  12989. if( APP_Get_DTVHiddenScanState() )
  12990. {
  12991. APP_ScanProcess_Stop();
  12992. APP_SetSrcChgFlag( TRUE );
  12993. while( !AL_CS_IsStop() )
  12994. {
  12995. if( APP_Get_DTVHiddenScanState() )
  12996. break;
  12997. else
  12998. GL_TaskSleep(50);
  12999. }
  13000. APP_SetSrcChgFlag( FALSE );
  13001. }
  13002. #endif
  13003. APP_DTV_ScanProcess_Start(SEARCH_D_FULL_FREQ_LIST_MODE);
  13004. break;
  13005. }
  13006. #endif
  13007. #ifdef SUPPORT_DYNAMIC_MULTIPLEXES
  13008. if (dParam == PLAYBACK_POPUP_PROMPT_OTH_TP_ADD_SRV)
  13009. {
  13010. _DVBApp_NewServicesToDatabase();
  13011. }
  13012. else
  13013. if (dParam == PLAYBACK_POPUP_CONFIRM_REMOVE_SRV)
  13014. {
  13015. DVBApp_RemoveUnstableService();//zhongbaoxing added to remove not running services @20120210
  13016. }
  13017. else
  13018. #endif
  13019. #ifdef CONFIG_SUPPORT_PVR
  13020. if (dParam == POPMSG_CONFIRM_REC_REMIDER_TIME)
  13021. {
  13022. if(DVBApp_GetReminderTime2Show() > 1)//For confirm record ahead
  13023. {
  13024. memset(&g_stDetails,0,sizeof(AL_PR_details_t));
  13025. memset(&g_stOldDetails,0,sizeof(AL_PR_details_t));
  13026. AL_PR_GetById(g_dReminderId, &g_stDetails);
  13027. AL_PR_GetById(g_dReminderId, &g_stOldDetails);
  13028. DVBApp_PVRRec_SetTimerCancle();
  13029. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  13030. (APP_DVB_GLOBAL_EVENT_PVRSCH | PASS_TO_SYSAPP), (UINT32)&g_stOldDetails);
  13031. }
  13032. }
  13033. else if (dParam == POPMSG_CONFIRM_FIND_NEW_TSID)
  13034. {
  13035. dvb_printf("======POPMSG_CONFIRM_FIND_NEW_TSID YES\n");
  13036. #ifdef CONFIG_DTV_SUPPORT
  13037. if (APP_GetPlaybackPauseState() == TRUE)
  13038. {
  13039. MID_PlaybackStreamResume(1);
  13040. APP_SetPlaybackPauseState(FALSE);
  13041. }
  13042. bFindNewTSID = TRUE;
  13043. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS, SEARCH_D_FULL_FREQ_MODE);
  13044. #endif
  13045. //APP_GUIOBJ_DVB_PartitionList_PartitionFormat();
  13046. }
  13047. else if ((dParam == POPMSG_CONFIRM_START_RECORD)
  13048. || (dParam == POPMSG_CONFIRM_STOP_MHEG_FOR_RECORD))
  13049. {
  13050. dvb_printf("start record is call\n");
  13051. _DVBApp_CloseAllMenu();
  13052. _APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurTime();
  13053. DVBApp_StartRecord(MID_REC_MODE_MANUAL);
  13054. }
  13055. else if (dParam == POPMSG_CONFIRM_STOP_THIFT_TO_REC)
  13056. {
  13057. DVBApp_StopTimeshift(TRUE);
  13058. _DVBApp_CloseAllMenu();
  13059. _APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurTime();
  13060. DVBApp_StartRecord(MID_REC_MODE_MANUAL);
  13061. }
  13062. #ifdef SUPPORT_PVR_REMINDER_CONFIRM_SPEC
  13063. else if ((dParam == POPMSG_CONFIRM_STOP_REC_FOR_REMINDER)
  13064. ||(dParam == POPMSG_CONFIRM_STOP_TSHIFT_FOR_REMINDER)
  13065. ||(dParam == POPMSG_CONFIRM_STOP_REC_FOR_TIMER_REC)
  13066. ||(dParam == POPMSG_CONFIRM_STOP_TSHIFT_FOR_TIMER_REC))
  13067. {
  13068. _DVBApp_StopRECForTimerConfirmDone(dParam);
  13069. }
  13070. #endif
  13071. else if (dParam == POPMSG_CONFIRM_RECORDER_SPEED_NOT_ENOUGH)
  13072. {
  13073. INT32 iRet;
  13074. dvb_printf("====== force to enter record !\n");
  13075. _DVBApp_CloseAllMenu();
  13076. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_INIT);
  13077. MID_Recorder_SetRecMode(MID_REC_MODE_MANUAL);
  13078. iRet = APP_GUIOBJ_DVB_PvrRec_StartRecord();
  13079. if (iRet != PVR_MSG_SUCCESS)
  13080. {
  13081. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  13082. MID_Recorder_SetRecMode(MID_REC_MODE_MAX);
  13083. APP_GUIOBJ_DVB_PvrRec_RegUninitCallback();
  13084. return SP_ERR_FAILURE;
  13085. }
  13086. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, 0);
  13087. }
  13088. else if ((dParam == POPMSG_CONFIRM_START_TIMESHIFT)
  13089. || (dParam == POPMSG_CONFIRM_STOP_MHEG_FOR_TIMESHIFT))
  13090. {
  13091. _DVBApp_CloseAllMenu();
  13092. DVBApp_StartRecord(MID_REC_MODE_TIMESHIFT_AFTER_REC);
  13093. }
  13094. else if (dParam == POPMSG_CONFIRM_TIMESHIFT_SPEED_NOT_ENOUGH)
  13095. {
  13096. INT32 iRet;
  13097. PVR_DEBF("====== force to enter timeshift !\n");
  13098. _DVBApp_CloseAllMenu();
  13099. if (MID_REC_MODE_AUTO == g_eCheckRecMode)
  13100. {
  13101. MID_Recorder_SetRecMode(MID_REC_MODE_AUTO);
  13102. }
  13103. else
  13104. {
  13105. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_INIT);
  13106. MID_Recorder_SetRecMode(MID_REC_MODE_TIMESHIFT_AFTER_REC);
  13107. }
  13108. iRet = APP_GUIOBJ_DVB_PvrRec_StartRecord();
  13109. if (iRet != PVR_MSG_SUCCESS)
  13110. {
  13111. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  13112. MID_Recorder_SetRecMode(MID_REC_MODE_MAX);
  13113. APP_GUIOBJ_DVB_PvrRec_RegUninitCallback();
  13114. g_eCheckRecMode = MID_REC_MODE_MAX;
  13115. return SP_ERR_FAILURE;
  13116. }
  13117. if (MID_REC_MODE_AUTO != MID_Recorder_GetRecMode())
  13118. {
  13119. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  13120. {
  13121. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  13122. }
  13123. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, 0);
  13124. }
  13125. }
  13126. else if (dParam == POPMSG_CONFIRM_STOP_RECORD)
  13127. {
  13128. dvb_printf("stop record is call\n");
  13129. DVBApp_SetTVRadioSwap(FALSE);
  13130. g_ProgHandleB4Rec = 0;
  13131. DVBApp_StopRecord();
  13132. memset(&g_stDetails,0,sizeof(AL_PR_details_t));
  13133. if(g_stUserInfoData.Subtitle == 0)
  13134. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5);
  13135. }
  13136. else if (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT)
  13137. {
  13138. dvb_printf("stop timeshift is call\n");
  13139. DVBApp_StopTimeshift(TRUE);
  13140. if(g_stUserInfoData.Subtitle == 0)
  13141. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5);
  13142. }
  13143. else if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_RECALL)
  13144. {
  13145. DVBApp_SetTVRadioSwap(FALSE);
  13146. g_ProgHandleB4Rec = 0;
  13147. DVBApp_StopRecord();
  13148. memset(&g_stDetails,0,sizeof(AL_PR_details_t));
  13149. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_RECALL, 0);
  13150. }
  13151. else if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_CH_CHANGE)
  13152. {
  13153. dvb_printf("stop record for channel change!\n");
  13154. DVBApp_StopRecord();
  13155. memset(&g_stDetails,0,sizeof(AL_PR_details_t));
  13156. {
  13157. if (g_bIsNumKey)
  13158. {
  13159. _DVBApp_Zapping(eServiceType, g_ProgHandle, FALSE, 0, TRUE);
  13160. return 0;
  13161. }
  13162. if (g_bIsFav == FALSE)
  13163. {
  13164. // normal
  13165. if (TRUE == g_bIsCHUp)
  13166. {
  13167. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, 1, APP_FAVORITE_NONE);
  13168. }
  13169. else if (FALSE == g_bIsCHUp)
  13170. {
  13171. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, -1, APP_FAVORITE_NONE);
  13172. }
  13173. }
  13174. else
  13175. {
  13176. // fav
  13177. if (TRUE == g_bIsCHUp)
  13178. {
  13179. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, 1, FavType);
  13180. }
  13181. else if (FALSE == g_bIsCHUp)
  13182. {
  13183. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, -1, FavType);
  13184. }
  13185. }
  13186. if (hProg != AL_DB_INVALIDHDL)
  13187. {
  13188. AL_DB_EDBType_t db_type;
  13189. AL_DB_ERecordType_t record_type;
  13190. AL_DB_GetRecordType(hProg, &db_type, &record_type);
  13191. if (db_type == AL_DBTYPE_DVB_ATV)
  13192. {
  13193. _DVBApp_CloseAllMenu();
  13194. break;
  13195. }
  13196. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  13197. {
  13198. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  13199. }
  13200. #ifdef SUPPORT_CEC_TV
  13201. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  13202. {
  13203. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  13204. }
  13205. #endif
  13206. _DVBApp_Zapping(eServiceType, hProg, FALSE, 0, TRUE);
  13207. }
  13208. else
  13209. {
  13210. DVBApp_CheckProgramType(TRUE);
  13211. }
  13212. break;
  13213. }
  13214. }
  13215. else if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_SRC_CHANGE)
  13216. {
  13217. dvb_printf("stop record for source change!\n");
  13218. DVBApp_StopRecord();
  13219. memset(&g_stDetails,0,sizeof(AL_PR_details_t));
  13220. {
  13221. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE))
  13222. {
  13223. _DVBApp_Exit_All_Menu();
  13224. }
  13225. else
  13226. {
  13227. DVBApp_ResetPopup_Channel();
  13228. _DVBApp_CloseAllMenu();
  13229. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOURCE, 0);
  13230. }
  13231. break;
  13232. }
  13233. }
  13234. else if (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_RECALL)
  13235. {
  13236. DVBApp_StopTimeshift(TRUE);
  13237. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_RECALL, 0);
  13238. }
  13239. else if (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_CH_CHANGE)
  13240. {
  13241. dvb_printf("stop timeshift for channel change!\n");
  13242. DVBApp_StopTimeshift(TRUE);
  13243. {
  13244. if (g_bIsNumKey)
  13245. {
  13246. _DVBApp_Zapping(eServiceType, g_ProgHandle, FALSE, 0, TRUE);
  13247. return 0;
  13248. }
  13249. if (g_bIsFav == FALSE)
  13250. {
  13251. //normal
  13252. if (TRUE == g_bIsCHUp)
  13253. {
  13254. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, 1, APP_FAVORITE_NONE);
  13255. }
  13256. else if (FALSE == g_bIsCHUp)
  13257. {
  13258. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, -1, APP_FAVORITE_NONE);
  13259. }
  13260. }
  13261. else
  13262. {
  13263. // fav
  13264. if (TRUE == g_bIsCHUp)
  13265. {
  13266. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, 1, FavType);
  13267. }
  13268. else if (FALSE == g_bIsCHUp)
  13269. {
  13270. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, -1, FavType);
  13271. }
  13272. }
  13273. if (hProg != AL_DB_INVALIDHDL)
  13274. {
  13275. AL_DB_EDBType_t db_type;
  13276. AL_DB_ERecordType_t record_type;
  13277. AL_DB_GetRecordType(hProg, &db_type, &record_type);
  13278. if (db_type == AL_DBTYPE_DVB_ATV)
  13279. {
  13280. _DVBApp_CloseAllMenu();
  13281. break;
  13282. }
  13283. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  13284. {
  13285. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  13286. }
  13287. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  13288. {
  13289. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  13290. }
  13291. //APP_DVB_Playback_SetUnlock(FALSE);
  13292. //DVBApp_ChannelChange(eServiceType, sdProgIndex);
  13293. _DVBApp_Zapping(eServiceType, hProg, FALSE, 0, TRUE);
  13294. }
  13295. else
  13296. {
  13297. DVBApp_CheckProgramType(TRUE);
  13298. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  13299. }
  13300. break;
  13301. }
  13302. }
  13303. else if (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_SRC_CHANGE)
  13304. {
  13305. dvb_printf("stop timeshift for source change!\n");
  13306. DVBApp_StopTimeshift(TRUE);
  13307. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  13308. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  13309. if (APP_PVR_TIMESHIFT_AUTO == g_stFeatureData.AutoTimeShift)
  13310. {
  13311. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  13312. }
  13313. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE))
  13314. {
  13315. _DVBApp_Exit_All_Menu();
  13316. }
  13317. else
  13318. {
  13319. DVBApp_ResetPopup_Channel();
  13320. _DVBApp_CloseAllMenu();
  13321. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOURCE, 0);
  13322. }
  13323. break;
  13324. }
  13325. else if ((dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_EPG)
  13326. || (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_EPG))
  13327. {
  13328. if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_EPG)
  13329. {
  13330. DVBApp_StopRecord();
  13331. }
  13332. else
  13333. {
  13334. DVBApp_StopTimeshift(TRUE);
  13335. }
  13336. _DVBApp_CloseAllMenu();
  13337. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  13338. if (bHasValidServ)
  13339. {
  13340. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, dGuiObj, 0);
  13341. }
  13342. else
  13343. {
  13344. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  13345. }
  13346. break;
  13347. }
  13348. else if ((dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_CHNLIST)
  13349. || (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_CHNLIST))
  13350. {
  13351. if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_CHNLIST)
  13352. {
  13353. DVBApp_StopRecord();
  13354. }
  13355. else
  13356. {
  13357. DVBApp_StopTimeshift(TRUE);
  13358. }
  13359. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD))
  13360. {
  13361. _DVBApp_CloseAllMenu();
  13362. }
  13363. else
  13364. {
  13365. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST))
  13366. {
  13367. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST);
  13368. _DVBApp_CheckPopupDisplay();
  13369. }
  13370. else
  13371. {
  13372. _DVBApp_CloseAllMenu();
  13373. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST, 0);
  13374. }
  13375. }
  13376. break;
  13377. }
  13378. else if ((dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_FAVLIST)
  13379. || (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_FAVLIST))
  13380. {
  13381. if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_FAVLIST)
  13382. {
  13383. DVBApp_StopRecord();
  13384. }
  13385. else
  13386. {
  13387. DVBApp_StopTimeshift(TRUE);
  13388. }
  13389. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD))
  13390. {
  13391. _DVBApp_CloseAllMenu();
  13392. }
  13393. else
  13394. {
  13395. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST))
  13396. {
  13397. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST);
  13398. _DVBApp_CheckPopupDisplay();
  13399. }
  13400. else
  13401. {
  13402. _DVBApp_CloseAllMenu();
  13403. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST, 0);
  13404. }
  13405. }
  13406. break;
  13407. }
  13408. else if ((dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_USBKEY)
  13409. || (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_USBKEY))
  13410. {
  13411. if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_USBKEY)
  13412. {
  13413. DVBApp_StopRecord();
  13414. }
  13415. else
  13416. {
  13417. DVBApp_StopTimeshift(TRUE);
  13418. }
  13419. _DVBApp_CloseAllMenu();
  13420. DVBApp_ResetPopup_Channel();
  13421. if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_MEDIA))
  13422. {
  13423. dvb_printf("APP_GUIOBJ_Source_SetAppSource Fail!!!!!!!!!\n");
  13424. }
  13425. break;
  13426. }
  13427. else if ((dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_TVRADIOKEY)
  13428. || (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_TVRADIOKEY))
  13429. {
  13430. if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_TVRADIOKEY)
  13431. {
  13432. DVBApp_StopRecord();
  13433. memset(&g_stDetails,0,sizeof(AL_PR_details_t));
  13434. }
  13435. else
  13436. {
  13437. DVBApp_StopTimeshift(TRUE);
  13438. }
  13439. if (APP_DVB_Playback_SwapServiceType(eNetType, (AL_DB_ERecordType_t *)&NextServiceType, &u32TotalNum) != AL_SUCCESS)
  13440. {
  13441. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  13442. }
  13443. break;
  13444. }
  13445. else if (POPMSG_CONFIRM_REC_REMIDER_TIME_CONFIRM == dParam)
  13446. {
  13447. APP_WAKEUP_Recorder_ResetTimeout();
  13448. DVBApp_PVRRec_SetTimerCancle();
  13449. }
  13450. else if (POPMSG_CONFIRM_PVR_TIMESHIFT_STANDBY == dParam)
  13451. {
  13452. if (u8MidRecState != MID_REC_STATUS_STOP)
  13453. {
  13454. if (MID_TSPLParser_GetThreadState() == FALSE)
  13455. DVBApp_StopRecord();
  13456. else
  13457. DVBApp_StopTimeshift(TRUE);
  13458. }
  13459. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF);
  13460. }
  13461. else if ((dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_MHEG)
  13462. || (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_MHEG))
  13463. {
  13464. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB);
  13465. g_stUserInfoData.Subtitle = 0; //OFF
  13466. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  13467. ITEM_OFFSET(APP_SETTING_UserInfo_t, Subtitle),
  13468. sizeof(g_stUserInfoData.Subtitle), &(g_stUserInfoData.Subtitle));
  13469. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  13470. ITEM_OFFSET(APP_SETTING_UserInfo_t, Subtitle), sizeof(g_stUserInfoData.Subtitle));
  13471. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  13472. {
  13473. DVBApp_StopRecord();
  13474. }
  13475. else if (MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode)
  13476. {
  13477. DVBApp_StopTimeshift(TRUE);
  13478. }
  13479. else if (MID_REC_MODE_AUTO == u8MIDRecMode)
  13480. {
  13481. g_stFeatureData.AutoTimeShift = APP_PVR_TIMESHIFT_OFF;
  13482. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  13483. ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift),
  13484. sizeof(g_stFeatureData.AutoTimeShift), &(g_stFeatureData.AutoTimeShift));
  13485. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  13486. ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift), sizeof(g_stFeatureData.AutoTimeShift));
  13487. DVBApp_StopTimeshift(TRUE);
  13488. }
  13489. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5);
  13490. }
  13491. else if (POPMSG_CONFIRM_INVALID_USB == dParam)
  13492. {
  13493. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF);
  13494. }
  13495. else
  13496. #endif
  13497. //zhongbaoxing added for mantis 0135994 @20110608 +++
  13498. #ifdef CONFIG_SUPPORT_MHEG5
  13499. if (dParam == PLAYBACK_POPUP_CONFIRM_STOP_SUBTITLE_TO_OPEN_MHEG5)
  13500. {
  13501. DVBApp_ClosePopup(PLAYBACK_POPUP_CONFIRM_STOP_SUBTITLE_TO_OPEN_MHEG5, UI_EVENT_NULL);
  13502. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_SUB);
  13503. if(g_stUserInfoData.Subtitle != 0)
  13504. {
  13505. g_stUserInfoData.Subtitle = 0; //OFF
  13506. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  13507. ITEM_OFFSET(APP_SETTING_UserInfo_t, Subtitle),
  13508. sizeof(g_stUserInfoData.Subtitle), &(g_stUserInfoData.Subtitle));
  13509. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  13510. ITEM_OFFSET(APP_SETTING_UserInfo_t, Subtitle), sizeof(g_stUserInfoData.Subtitle));
  13511. }
  13512. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5);
  13513. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE)) //Gahu:D0305
  13514. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  13515. }
  13516. else
  13517. #endif
  13518. //zhongbaoxing added for mantis 0135994 @20110608 ---
  13519. #ifdef CONFIG_CONFIRM_AUTO_UPGRADE
  13520. if (dParam == POPMSG_CONFIRM_START_AUTO_UPGRADE)
  13521. {
  13522. DVBApp_ResetPopup_Channel();//add for 0159405 @20111114
  13523. if (!APP_MenuMgr_Exist_Main_Menu()
  13524. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING)))
  13525. {
  13526. _DVBApp_Exit_All_Menu();
  13527. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, SOFTWARE_UPGRADE_FROM_AUTO_UPGRADE);
  13528. }
  13529. else if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE))
  13530. {
  13531. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, 0);
  13532. }
  13533. }
  13534. else
  13535. #endif
  13536. #ifdef N32_GAME_SUPPORT
  13537. if (dParam == POPMSG_CONFIRM_START_GAME_UPGRADE)
  13538. {
  13539. dvb_printf("\n!!!start ugrade game\n");
  13540. _DVBApp_ShowPopup(DVB_APP_POP_MSG_IMPORTING_GAME);
  13541. APP_Clone_Revert_BinFile_to_System(UPGRADE_GAME_BIN_ID);
  13542. }
  13543. else
  13544. #endif
  13545. if (POPMSG_CONFIRM_FLIP == dParam)
  13546. {
  13547. g_stFactoryUserData.Function.PanelSetting.n_FlipIndex = Factory_GetFlipIndex();
  13548. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER,
  13549. ITEM_OFFSET(APP_SETTING_FactoryUser_t, Function.PanelSetting.n_FlipIndex), sizeof(g_stFactoryUserData.Function.PanelSetting.n_FlipIndex),
  13550. &(g_stFactoryUserData.Function.PanelSetting.n_FlipIndex));
  13551. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER,
  13552. ITEM_OFFSET(APP_SETTING_FactoryUser_t, Function.PanelSetting.n_FlipIndex), sizeof(g_stFactoryUserData.Function.PanelSetting.n_FlipIndex));
  13553. MID_TVFE_SetPanelInverse((BOOL)(g_stFactoryUserData.Function.PanelSetting.n_FlipIndex));
  13554. //MID_DISP_DTVSetFlip((MID_DISP_FlipType_t)(g_stFactoryUserData.Function.PanelSetting.n_FlipIndex) ); // added for VIP test
  13555. GL_TaskSleep(2000);
  13556. APP_Sysset_Reset_System();
  13557. // APP_Panel_SetBacklightEnOnOff(FALSE);//makr for S2tek
  13558. // MID_GPIO_SetGPIOOffLevel(GPIO_PANEL_ON_PIN);//makr for S2tek
  13559. // system_reset();//makr for S2tek
  13560. }
  13561. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  13562. if (POPMSG_CONFIRM_ERASE_WHOLE_FLASH == dParam)
  13563. {
  13564. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE))
  13565. {
  13566. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, SOFTWARE_UPGRADE_FROM_FM);
  13567. }
  13568. }
  13569. #endif
  13570. break;
  13571. case APP_GLOBAL_EVENT_POPMSG_NO:
  13572. #ifdef CONFIG_SUPPORT_MHEG5
  13573. if (dParam == PLAYBACK_POPUP_CONFIRM_STOP_SUBTITLE_TO_OPEN_MHEG5)
  13574. {
  13575. DVBApp_ClosePopup(PLAYBACK_POPUP_CONFIRM_STOP_SUBTITLE_TO_OPEN_MHEG5, UI_EVENT_NULL);
  13576. }
  13577. else
  13578. #endif
  13579. #ifdef CONFIG_SUPPORT_PVR
  13580. if (dParam == POPMSG_CONFIRM_REC_REMIDER_TIME)
  13581. {
  13582. APP_WAKEUP_Recorder_ResetTimeout();
  13583. DVBApp_PVRRec_SetTimerCancle();
  13584. //SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  13585. //(APP_GLOBAL_EVENT_PVR_REMINDER_CONFIRM | PASS_TO_SYSAPP), 0);
  13586. }
  13587. else if (dParam == POPMSG_CONFIRM_REC_REMIDER_TIME_CONFIRM)
  13588. {
  13589. al_uint32 CurTimeInSec = 0;
  13590. UINT32 RECStartTime = 0;
  13591. AL_Time_GetCurTimeInSecs(&CurTimeInSec);
  13592. RECStartTime = DVBApp_GetTimerRECStartTime();
  13593. if (RECStartTime > CurTimeInSec)
  13594. {
  13595. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_REMIDER);
  13596. }
  13597. }
  13598. else if (dParam == POPMSG_CONFIRM_STOP_RECORD)
  13599. {
  13600. /*added by xm.zeng on 2014/7/3 for mantis id:0023174*/
  13601. if((g_bNoSteamData == TRUE)
  13602. && (bSetUnMuteFlag == FALSE)
  13603. && (g_bMidHasUnmute == FALSE))
  13604. {
  13605. DVBApp_CheckProgramType(TRUE);
  13606. }
  13607. }
  13608. if (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_SRC_CHANGE)
  13609. {
  13610. DVBApp_CheckProgramType(FALSE);
  13611. }
  13612. if (POPMSG_CONFIRM_INSERT_USB == dParam)
  13613. {
  13614. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF);
  13615. }
  13616. #endif
  13617. if (dParam == POPMSG_CONFIRM_FLIP)
  13618. {
  13619. DVBApp_ClosePopup(POPMSG_CONFIRM_FLIP, UI_EVENT_NULL);
  13620. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  13621. (UI_EVENT_FACTORY|PASS_TO_SYSAPP), 1);
  13622. }
  13623. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  13624. if (POPMSG_CONFIRM_ERASE_WHOLE_FLASH == dParam)
  13625. {
  13626. //if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE))
  13627. //{
  13628. //SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, SOFTWARE_UPGRADE_FROM_FM);
  13629. //}
  13630. }
  13631. #endif
  13632. #ifdef CONFIG_CONFIRM_AUTO_UPGRADE
  13633. if (dParam == POPMSG_CONFIRM_START_AUTO_UPGRADE)
  13634. {
  13635. #ifdef CONFIG_SUPPORT_INDONESIA_EWS
  13636. dvb_printf("\e[33m\n[EWS] %s %d APP_GLOBAL_EVENT_POPMSG_NO no channel update ReciveEWS = %d\e[0m\n",__FUNCTION__, __LINE__,DVBApp_GetReciveEWS());
  13637. if(DVBApp_GetReciveEWS())
  13638. {
  13639. DVBApp_SetReciveEWS(FALSE);
  13640. SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, FW_INDONESIA_EWS_UPDATE|PASS_TO_SYSAPP, 0);
  13641. }
  13642. #endif
  13643. AutoUpgrade = FALSE;
  13644. _DVBApp_Exit_All_Menu();
  13645. }
  13646. #endif
  13647. break;
  13648. case APP_GLOBAL_EVENT_POPMSG_TIMEOUT:
  13649. switch (dParam)
  13650. {
  13651. #ifdef CONFIG_CIPLUS_SUPPORT
  13652. case POPMSG_PROMP_CIPLUS_UPGRADE_SUCC:
  13653. #ifdef SUPPORT_LED_FLASH
  13654. APP_LED_Flash_Timer_Set(LED_FLASH_TYPE_GREEN, 0);
  13655. #endif
  13656. break;
  13657. case POPMSG_PROMP_CIPLUS_UPGRADE_FAILED:
  13658. #ifdef SUPPORT_LED_FLASH
  13659. APP_LED_Flash_Timer_Set(LED_FLASH_TYPE_GREEN, 0);
  13660. #endif
  13661. break;
  13662. #endif
  13663. default:
  13664. break;
  13665. }
  13666. break;
  13667. case APP_GLOBAL_EVENT_POPMSG_EXIT_KEY_MATCH:
  13668. #ifdef CONFIG_SUPPORT_PVR
  13669. if (dParam == POPMSG_CONFIRM_REC_REMIDER_TIME)
  13670. {
  13671. APP_WAKEUP_Recorder_ResetTimeout();
  13672. DVBApp_PVRRec_SetTimerCancle();
  13673. //SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  13674. //(APP_GLOBAL_EVENT_PVR_REMINDER_CONFIRM | PASS_TO_SYSAPP), 0);
  13675. }
  13676. #endif
  13677. #ifdef CONFIG_CONFIRM_AUTO_UPGRADE
  13678. if (dParam == POPMSG_CONFIRM_START_AUTO_UPGRADE)
  13679. {
  13680. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  13681. AutoUpgrade = FALSE;
  13682. if (bHasValidServ)
  13683. {
  13684. DVBApp_CheckProgramType(TRUE);
  13685. }
  13686. }
  13687. #endif
  13688. break;
  13689. #ifdef CONFIG_SUPPORT_OTA_UPGRADE
  13690. case DMN_EVENT_OTA_EVENT_PROMPT:
  13691. if (APP_GUIOBJ_DVB_OTAPrompt_GetShowFlag() == OtaShowPromt_MAX || APP_GUIOBJ_DVB_OTAPrompt_GetShowFlag() == OtaShowPromt_FromScan)
  13692. {
  13693. dvb_printf("only one choice\n");
  13694. }
  13695. else
  13696. {
  13697. APP_GUIOBJ_DVB_OTAPrompt_SetShowFlag(OtaShowPromt_MAX);
  13698. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OTA_UPGRADE_PROMPT))
  13699. {
  13700. if (FALSE == DVBApp_GetOTAStatus())
  13701. {
  13702. DVBApp_SetOTAStatus(TRUE);
  13703. }
  13704. _DVBApp_ExitAll();
  13705. SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_OBJECT_OPEN | PASS_TO_SYSAPP, DVB_GUIOBJ_OTA_UPGRADE_PROMPT);
  13706. MID_OtaMonStop(TRUE);
  13707. autoupgrade_sate = AU_MAX;
  13708. }
  13709. }
  13710. break;
  13711. case DMN_EVENT_OTA_EVENT_PROGRESS:
  13712. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OTA_UPGRADE_PROGRESS))
  13713. {
  13714. if(FALSE == DVBApp_GetOTAStatus())
  13715. {
  13716. DVBApp_SetOTAStatus(TRUE);
  13717. }
  13718. _DVBApp_ExitAll();
  13719. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  13720. APP_DVB_INTRA_EVENT_STOP_PLAYBACK, PLAYBACK_STOP_ALL|PLAYBACK_KEEP_DMX_FIFO);
  13721. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  13722. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  13723. APP_GUIOBJ_DVB_OTAUpgrade_RegisterUICallbk();
  13724. #ifdef CONFIG_SUPPORT_SSU_ENHANCE_UPGRADE
  13725. APP_GUIOBJ_DVB_OTAPrompt_RevTimer(); /*revert wake up time in this situation*/
  13726. DVBApp_SetAU_Sate(AU_MAX);
  13727. DVBApp_SetAutoUpgrade(FALSE);
  13728. #endif
  13729. SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_OBJECT_OPEN | PASS_TO_SYSAPP, DVB_GUIOBJ_OTA_UPGRADE_PROGRESS);
  13730. }
  13731. break;
  13732. #endif
  13733. case DMN_EVENT_AUTODVD_CHANGE_SOURCE:
  13734. #if 1
  13735. /* Check Valid state +++*/
  13736. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0,
  13737. sizeof(APP_SETTING_FactoryUser_t), &(g_stFactoryUserData));
  13738. if (g_stFactoryUserData.n_FactSet_BurningMode == al_true)
  13739. {
  13740. break;
  13741. }
  13742. if ((MAIN_APP_SUCCESS != MAINAPP_GetActiveSystemAppIndex(&dAppIndex))||
  13743. (APP_MenuMgr_Exist_Scan_Menu()) ||
  13744. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  13745. (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE)) ||
  13746. #endif
  13747. (AL_CS_IsStop() != al_true))
  13748. {
  13749. break;
  13750. }
  13751. #endif
  13752. #ifdef CONFIG_SUPPORT_INDONESIA_EWS
  13753. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EWS_AWAS)
  13754. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EWS_WASPADA))
  13755. {
  13756. return GUI_OBJECT_NO_POST_ACTION;
  13757. }
  13758. #endif
  13759. DVBApp_ResetPopup_Channel();
  13760. _DVBApp_CloseAllMenu();
  13761. if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(dParam))
  13762. {
  13763. dvb_printf("[DvbApp OnGlobalEvent] APP_GUIOBJ_Source_SetAppSource faild.\n");
  13764. }
  13765. break;
  13766. case DMN_EVENT_AUTOSCART_CHANGE_SOURCE:
  13767. /* Check Valid state +++*/
  13768. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0,
  13769. sizeof(APP_SETTING_FactoryUser_t), &(g_stFactoryUserData));
  13770. if (g_stFactoryUserData.n_FactSet_BurningMode == al_true)
  13771. {
  13772. break;
  13773. }
  13774. /* recording */
  13775. /*#ifdef CONFIG_SUPPORT_PVR
  13776. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  13777. {
  13778. UINT32 u32PopMsgDialogType = POPMSG_PROMPT_NO_PROG;
  13779. APP_GUIOBJ_PopMsg_GetMsgDialogType(&u32PopMsgDialogType);
  13780. if (u32PopMsgDialogType == POPMSG_CONFIRM_REC_REMIDER_TIME
  13781. || u32PopMsgDialogType == POPMSG_CONFIRM_REC_REMIDER_TIME_CONFIRM)
  13782. {
  13783. #ifdef CONFIG_DVB_SYSTEM
  13784. //APP_SCARTIN_ResetAutoPlugInStatus(AUTO_PLUGIN_SCART0);
  13785. //clear SCART PlugInStatus for mantis 0204109
  13786. APP_SCARTIN_SetAutoPlugInStatus(AUTO_PLUGIN_SCART0);
  13787. APP_SCARTIN_SetPlugStatus(AUTO_PLUGIN_SCART0);
  13788. #endif
  13789. break;
  13790. }
  13791. }
  13792. if (u8MidRecState != MID_REC_STATUS_STOP)
  13793. {
  13794. #ifdef CONFIG_DVB_SYSTEM
  13795. //APP_SCARTIN_ResetAutoPlugInStatus(AUTO_PLUGIN_SCART0);
  13796. //clear SCART PlugInStatus for mantis 0204109
  13797. APP_SCARTIN_SetAutoPlugInStatus(AUTO_PLUGIN_SCART0);
  13798. APP_SCARTIN_SetPlugStatus(AUTO_PLUGIN_SCART0);
  13799. #endif
  13800. break;
  13801. }
  13802. #endif*/
  13803. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT //for mantis 0202693
  13804. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SATSYSTEM)||
  13805. SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_LNBTYPE)||
  13806. SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SATEDIT)||
  13807. SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SATADD)||
  13808. SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TPEDIT)||
  13809. SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TPADD)||
  13810. SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SETLOCATION)||
  13811. SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_LNBTYPE)||
  13812. SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SETPOSTION))
  13813. {
  13814. // dvb_printf("\n ======%s %s %d\n",__FUNCTION__,__FUNCTION__,__LINE__);
  13815. //clear SCART PlugInStatus
  13816. APP_SCARTIN_SetAutoPlugInStatus(AUTO_PLUGIN_SCART0);
  13817. APP_SCARTIN_SetPlugStatus(AUTO_PLUGIN_SCART0);
  13818. break;
  13819. }
  13820. #endif
  13821. if ((MAIN_APP_SUCCESS != MAINAPP_GetActiveSystemAppIndex(&dAppIndex))||
  13822. (APP_MenuMgr_Exist_Scan_Menu()) ||
  13823. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  13824. (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE)) ||
  13825. #endif
  13826. (AL_CS_IsStop() != al_true))
  13827. {
  13828. #ifdef CONFIG_DVB_SYSTEM
  13829. APP_SCARTIN_ResetAutoPlugInStatus(AUTO_PLUGIN_SCART0);
  13830. #endif
  13831. break;
  13832. }
  13833. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  13834. {
  13835. UINT32 u32PopMsgDialogType = POPMSG_PROMPT_NO_PROG;
  13836. APP_GUIOBJ_PopMsg_GetMsgDialogType(&u32PopMsgDialogType);
  13837. if (u32PopMsgDialogType == POPMSG_CONFIRM_REC_REMIDER_TIME)
  13838. {
  13839. break;
  13840. }
  13841. }
  13842. #ifdef CONFIG_SUPPORT_PVR
  13843. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  13844. {
  13845. break;
  13846. }
  13847. #endif
  13848. #ifdef CONFIG_SUPPORT_INDONESIA_EWS
  13849. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EWS_AWAS)
  13850. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EWS_WASPADA))
  13851. {
  13852. return GUI_OBJECT_NO_POST_ACTION;
  13853. }
  13854. #endif
  13855. /* Check Valid state ---*/
  13856. DVBApp_ResetPopup_Channel();
  13857. _DVBApp_CloseAllMenu();
  13858. #ifdef CONFIG_SUPPORT_PVR
  13859. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  13860. {
  13861. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY);
  13862. }
  13863. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAYINFO))
  13864. {
  13865. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAYINFO);
  13866. }
  13867. #endif
  13868. if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(dParam))
  13869. {
  13870. dvb_printf("[DvbApp OnGlobalEvent] APP_GUIOBJ_Source_SetAppSource faild.\n");
  13871. }
  13872. else
  13873. {
  13874. #ifdef CONFIG_DVB_SYSTEM
  13875. if (dParam == APP_SOURCE_SCART)
  13876. {
  13877. APP_SCARTIN_SetAutoPlugInStatus(AUTO_PLUGIN_SCART0);
  13878. APP_SCARTIN_SetPlugStatus(AUTO_PLUGIN_SCART0);
  13879. }
  13880. #endif
  13881. }
  13882. break;
  13883. case APP_GLOBAL_EVENT_SLEEP_TIMER_INFO:
  13884. if ((APP_MenuMgr_Exist_Scan_Menu())
  13885. #ifdef CONFIG_SUPPORT_USB_UPGRADE //zhongbaoxing added for mantis bug 139209 @20110623
  13886. || (APP_Data_Get_USB_Upgrade_State() == TRUE)
  13887. #endif
  13888. )
  13889. {
  13890. APP_GUIOBJ_SleepTimer_Reset();
  13891. }
  13892. else
  13893. {
  13894. _DVBApp_CloseAllMenu();
  13895. DVBApp_ResetPopup_Channel();
  13896. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO))
  13897. {
  13898. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO, dParam);
  13899. }
  13900. }
  13901. break;
  13902. #ifdef CONFIG_CIPLUS_SUPPORT
  13903. case APP_GLOBAL_EVENT_ASK_PROFILE_ACTION:
  13904. APP_DVB_CI_AskProfileAction();
  13905. break;
  13906. #endif
  13907. case APP_GLOBAL_EVENT_CIHDCPKEY_RESULT:
  13908. if (dParam == 0xffffffff)
  13909. break;
  13910. UINT32 u32CIupgrade = dParam & 0xf;
  13911. UINT32 u32HDCPupgrade = (dParam & 0xf0)>>4;
  13912. {
  13913. UINT32 u32PQupgrade = (dParam & 0xf00)>>8;
  13914. if(u32PQupgrade != APP_DATA_KEYUPGRADE_NOT_UPGRADE)
  13915. {
  13916. _DVBApp_ShowPopup(DVB_APP_POP_MSG_IMPORT_PQ_PASS);
  13917. printf("PQ Bin import successfull !");
  13918. }
  13919. }
  13920. if (u32CIupgrade && u32HDCPupgrade)
  13921. {
  13922. // upgrade CI & HDCP
  13923. if (u32CIupgrade == APP_DATA_KEYUPGRADE_SUCCESS)
  13924. {
  13925. if (u32HDCPupgrade == APP_DATA_KEYUPGRADE_SUCCESS)
  13926. {
  13927. // CI OK, HDCP OK
  13928. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_PASS_HDCP_PASS);
  13929. }
  13930. else
  13931. {
  13932. // CI OK, HDCP fail
  13933. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_PASS_HDCP_FAIL);
  13934. }
  13935. }
  13936. else
  13937. {
  13938. if (u32HDCPupgrade == APP_DATA_KEYUPGRADE_SUCCESS)
  13939. {
  13940. // CI fail, HDCP OK
  13941. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_FAIL_HDCP_PASS);
  13942. }
  13943. else
  13944. {
  13945. // CI fail, HDCP fail
  13946. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_FAIL_HDCP_FAIL);
  13947. }
  13948. }
  13949. }
  13950. else if (u32CIupgrade != APP_DATA_KEYUPGRADE_NOT_UPGRADE)
  13951. {
  13952. _DVBApp_CloseAllMenu();
  13953. // upgrade CI
  13954. if (u32CIupgrade == APP_DATA_KEYUPGRADE_SUCCESS)
  13955. {
  13956. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CIPLUSE_UPGRADE_SUCC);
  13957. }
  13958. else
  13959. {
  13960. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CIPLUSE_UPGRADE_FAILE);
  13961. }
  13962. }
  13963. else if (u32HDCPupgrade != APP_DATA_KEYUPGRADE_NOT_UPGRADE)
  13964. {
  13965. // upgrade HDCP
  13966. if (u32HDCPupgrade == APP_DATA_KEYUPGRADE_SUCCESS)
  13967. {
  13968. _DVBApp_ShowPopup(DVB_APP_POP_MSG_HDCP_UPGRADE_SUCC);
  13969. }
  13970. else
  13971. {
  13972. _DVBApp_ShowPopup(DVB_APP_POP_MSG_HDCP_UPGRADE_FAILE);
  13973. }
  13974. }
  13975. break;
  13976. #ifdef CONFIG_SUPPORT_3D_EN
  13977. case UI_EVENT_3D:
  13978. dvb_printf("\n\n===UI_EVENT_3D [%s]====\n\n",__FUNCTION__);
  13979. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  13980. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  13981. if (g_stFactoryHotelData.HotelModeOnOff == 1&&g_stFactoryHotelData.PictureLock == 1)
  13982. {
  13983. dvb_printf("[%s] Picture Option has been Lock On!!\n",__FUNCTION__);
  13984. break;
  13985. }
  13986. APP_Video_Check3DState(&ePicture3DState);
  13987. if(ePicture3DState == APP_VIDEO_IMAGE_3D_DISABLED)
  13988. {
  13989. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_3D_INFO))
  13990. {
  13991. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_3D_INFO);
  13992. }
  13993. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  13994. break;
  13995. }
  13996. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_3D_INFO))
  13997. {
  13998. Boolean bShowLogo = DTV_FALSE;
  13999. bShowLogo = APP_GUIOBJ_DVB_Playback_GetShowLogoState();
  14000. AL_DB_ERecordType_t eRecordType;
  14001. MID_PlaybackGetCurProgHandle(&eRecordType, al_null);
  14002. if((eRecordType == AL_RECTYPE_DVBRADIO) || (bShowLogo == DTV_TRUE))
  14003. {
  14004. break;
  14005. }
  14006. _DVBApp_CloseAllMenu();
  14007. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  14008. {
  14009. if (eSourType == APP_SOURCE_DTV)
  14010. {
  14011. #ifdef CONFIG_SUPPORT_SUBTITLE
  14012. UINT8 tmpIdx = 0;
  14013. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  14014. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  14015. tmpIdx = g_stUserInfoData.Subtitle;
  14016. if (tmpIdx == DVB_SWITCH_ON)
  14017. {
  14018. #ifdef Subtitle_Freeze
  14019. AL_Subtitle_SetFreeze(FALSE);
  14020. #else
  14021. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  14022. #endif
  14023. }
  14024. #endif
  14025. #ifdef CONFIG_SUPPORT_MHEG5
  14026. #ifdef CONFIG_SUPPORT_SUBTITLE
  14027. if (tmpIdx == DVB_SWITCH_OFF)
  14028. #endif
  14029. {
  14030. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5);
  14031. }
  14032. #endif
  14033. }
  14034. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  14035. }
  14036. if (APP_GetPlaybackPauseState() == TRUE)
  14037. {
  14038. MID_PlaybackStreamResume(1);
  14039. g_PauseState = FALSE;
  14040. }
  14041. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_3D_INFO, dMessage);
  14042. dvb_printf("\n\n%s %d\n\n", __FUNCTION__, dMessage);
  14043. }
  14044. else
  14045. {
  14046. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_3D_INFO);
  14047. }
  14048. break;
  14049. case APP_GLOBAL_EVENT_3D_TIMER_INFO:
  14050. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0,
  14051. sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  14052. APP_StorageSource_Type_t eStorageSourType = APP_STORAGE_SOURCE_MAX;
  14053. eStorageSourType = APP_Data_UserSetting_SourceTypeMappingToStorage(eSourType);
  14054. if((!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_3D_INFO)) && (g_stPictureData.stPictureModeSourceTab[eStorageSourType].st3DMenu.Mode3D != SPAL_PQ_3DMODE_OFF))
  14055. {
  14056. Boolean bShowLogo = DTV_FALSE;
  14057. bShowLogo = APP_GUIOBJ_DVB_Playback_GetShowLogoState();
  14058. AL_DB_ERecordType_t eRecordType;
  14059. MID_PlaybackGetCurProgHandle(&eRecordType, al_null);
  14060. if((eRecordType == AL_RECTYPE_DVBRADIO) || (bShowLogo == DTV_TRUE))
  14061. {
  14062. break;
  14063. }
  14064. _DVBApp_CloseAllMenu();
  14065. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,APP_GUIOBJ_3D_INFO, dParam);
  14066. }
  14067. break;
  14068. #endif
  14069. #ifdef NET_SUPPORT
  14070. case UI_EVENT_SRC_NET:
  14071. if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_NET))
  14072. {
  14073. dvb_printf("UI_EVENT_SRC_NET change Net Fail!!!!!!!!!\n");
  14074. }
  14075. break;
  14076. #endif
  14077. #ifdef CONFIG_HDMI_SUPPORT_MHL
  14078. case DMN_EVENT_MHL_CHANGE_SOURCE:
  14079. /* Check Valid state +++*/
  14080. /* Auto install not finish */
  14081. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL))
  14082. {
  14083. break;
  14084. }
  14085. /* Scan State */
  14086. if (AL_CS_IsStop() != 1)
  14087. {
  14088. break;
  14089. }
  14090. /*
  14091. ** Channel Tuning,
  14092. ** Channel - Digital Manual Search,
  14093. */
  14094. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_AUTO_SEARCH))
  14095. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS))
  14096. #if (defined CONFIG_DVB_SYSTEM_DVBT_SUPPORT)
  14097. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_DVB_T_MANUAL_SEARCH))
  14098. #endif
  14099. #if (defined CONFIG_DVB_SYSTEM_DVBC_SUPPORT)
  14100. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_DVB_C_MANUAL_SEARCH))
  14101. #endif
  14102. )
  14103. {
  14104. break;
  14105. }
  14106. #ifdef CONFIG_SUPPORT_PVR
  14107. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  14108. {
  14109. break;
  14110. }
  14111. #endif
  14112. #ifdef CONFIG_SUPPORT_INDONESIA_EWS
  14113. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EWS_AWAS)
  14114. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EWS_WASPADA))
  14115. {
  14116. return GUI_OBJECT_NO_POST_ACTION;
  14117. }
  14118. #endif
  14119. DVBApp_ResetPopup_Channel();
  14120. _DVBApp_CloseAllMenu();
  14121. /* Check Valid state ---*/
  14122. APP_Source_Type_t eMhlSrc;
  14123. UINT8 IsMHLSoure;
  14124. APP_GOBJ_Source_CheckAndGetMHLSource(&IsMHLSoure,&eMhlSrc);
  14125. if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(eMhlSrc))
  14126. {
  14127. dvb_printf("[DvbApp OnGlobalEvent] APP_GUIOBJ_Source_SetAppSource faild.\n");
  14128. }
  14129. break;
  14130. #endif
  14131. #ifdef SUPPORT_CEC_TV
  14132. case DMN_EVENT_CECTV_CHANGE_SOURCE:
  14133. /* Check Valid state +++*/
  14134. /* Auto install not finish */
  14135. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL))
  14136. {
  14137. break;
  14138. }
  14139. /* Scan State */
  14140. if (AL_CS_IsStop() != 1)
  14141. {
  14142. break;
  14143. }
  14144. /*
  14145. ** Channel Tuning,
  14146. ** Channel - Digital Manual Search,
  14147. */
  14148. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_AUTO_SEARCH))
  14149. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS))
  14150. #if (defined CONFIG_DVB_SYSTEM_DVBT_SUPPORT)
  14151. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_DVB_T_MANUAL_SEARCH))
  14152. #endif
  14153. #if (defined CONFIG_DVB_SYSTEM_DVBC_SUPPORT)
  14154. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_DVB_C_MANUAL_SEARCH))
  14155. #endif
  14156. #ifdef CONFIG_SUPPORT_INDONESIA_EWS
  14157. ||(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EWS_AWAS))
  14158. ||(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EWS_WASPADA))
  14159. #endif
  14160. )
  14161. {
  14162. break;
  14163. }
  14164. #ifdef CONFIG_SUPPORT_PVR
  14165. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  14166. {
  14167. break;
  14168. }
  14169. #endif
  14170. #ifdef CONFIG_SUPPORT_INDONESIA_EWS
  14171. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EWS_AWAS)
  14172. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EWS_WASPADA))
  14173. {
  14174. return GUI_OBJECT_NO_POST_ACTION;
  14175. }
  14176. #endif
  14177. /* Check Valid state ---*/
  14178. DVBApp_ResetPopup_Channel();
  14179. _DVBApp_CloseAllMenu();
  14180. APP_Source_Type_t eSrc;
  14181. APP_Video_GetCECPortMapping((tv_source_t)dParam, &eSrc);
  14182. if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(eSrc))
  14183. {
  14184. dvb_printf("[DvbApp OnGlobalEvent] APP_GUIOBJ_Source_SetAppSource faild.\n");
  14185. }
  14186. break;
  14187. #endif
  14188. #ifdef CONFIG_SUPPORT_INDONESIA_EWS
  14189. case FW_INDONESIA_EWS_UPDATE:
  14190. {
  14191. dvb_printf("\n\nFW_INDONESIA_EWS_UPDATE\n\n");
  14192. UINT8 retVol=0;
  14193. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  14194. ITEM_OFFSET(APP_SETTING_Variational_t, Volume),
  14195. sizeof(UINT8), &(retVol));
  14196. AL_PsiMon_EwsDetail_t ewsDetail = {0};
  14197. INT32 AreaCode = _APP_GUIOBJ_EWS_AreaCodeSetting_GetAreaCode();
  14198. if(AL_PSI_Monitor_GetEwsDetail(AreaCode, &ewsDetail) == AL_SUCCESS)
  14199. {
  14200. dvb_printf("EWS: location {%s}, disaster {%s} \n", ewsDetail.location_name, ewsDetail.disaster_name);
  14201. dvb_printf("EWS: pos {%s}, date {%s}, char {%s} \n", ewsDetail.disaster_position, ewsDetail.disaster_date, ewsDetail.disaster_characteristic);
  14202. dvb_printf("EWS: msg {%s}\n", ewsDetail.message);
  14203. SAFE_FREE(ewsDetail.message); // need to be freed explicitly by caller
  14204. }
  14205. else
  14206. {
  14207. dvb_printf("\n\nNo matching EWS is found!\n\n");
  14208. MID_PlaybackStopEWSFile();
  14209. if (APP_Audio_Get_HPStatus() == APP_Audio_Headphone_PlugOut)
  14210. {
  14211. APP_Audio_SetVolume(retVol);
  14212. }
  14213. else
  14214. {
  14215. APP_Audio_SetHPVolume(retVol);
  14216. }
  14217. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EWS_AWAS))
  14218. {
  14219. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_EWS_AWAS);
  14220. }
  14221. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EWS_WASPADA))
  14222. {
  14223. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_EWS_WASPADA);
  14224. }
  14225. DVBApp_RecordPreEWSLevel(STATUS_NONE);
  14226. break;
  14227. }
  14228. dvb_printf("\e[33m\n[EWS] %s %d g_bReciveEWS = %d \e[0m\n",__FUNCTION__, __LINE__,g_bReciveEWS);
  14229. #if 0//CVT_EN_POP_MSG_AUTO_CHANNEL_UPDATE
  14230. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_CONFIRM_AUTO_CHANNEL_UPDATE))
  14231. {
  14232. DVBApp_SetReciveEWS(TRUE);
  14233. }
  14234. #endif
  14235. dvb_printf("\e[33m\n[EWS] %s %d g_bReciveEWS = %d \e[0m\n",__FUNCTION__, __LINE__,g_bReciveEWS);
  14236. if(!DVBApp_GetReciveEWS())
  14237. {
  14238. if(AL_PSI_Monitor_GetEwsDetail(AreaCode, &ewsDetail) == AL_SUCCESS)
  14239. {
  14240. DVBApp_ShowIndonesiaEWS(ewsDetail.usLocationType);
  14241. SAFE_FREE(ewsDetail.message); // need to be freed explicitly by caller
  14242. }
  14243. }
  14244. break;
  14245. }
  14246. case FW_INDONESIA_EWS_STOP:
  14247. {
  14248. dvb_printf("\n\nFW_INDONESIA_EWS_STOP\n\n");
  14249. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EWS_AWAS))
  14250. {
  14251. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_EWS_AWAS);
  14252. /*MID_PlaybackStopEWSFile();
  14253. if(g_PreEWSLevel == STATUS_AWAS)
  14254. {
  14255. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  14256. if (bSignalState == AL_DVB_MONITOR_VALUE_TRUE)
  14257. {
  14258. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_DTV);
  14259. APP_Video_SetMute(FALSE, FALSE, APP_MUTE_MODE_STATEMAX, APP_SOURCE_DTV);
  14260. }
  14261. }*/
  14262. }
  14263. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EWS_WASPADA))
  14264. {
  14265. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_EWS_WASPADA);
  14266. }
  14267. DVBApp_RecordPreEWSLevel(STATUS_NONE);
  14268. dvb_printf("\e[33m\n[EWS] %s %d FW_INDONESIA_EWS_STOP ReciveEWS = %d\e[0m\n",__FUNCTION__, __LINE__,DVBApp_GetReciveEWS());
  14269. if(DVBApp_GetReciveEWS())
  14270. {
  14271. DVBApp_SetReciveEWS(FALSE);
  14272. dvb_printf("\e[33m\n[EWS] %s %d ccccc FW_INDONESIA_EWS_STOP ReciveEWS = %d\e[0m\n",__FUNCTION__, __LINE__,DVBApp_GetReciveEWS());
  14273. }
  14274. break;
  14275. }
  14276. #endif
  14277. #ifdef CONFIG_SUPPORT_PVR
  14278. case DMN_EVENT_USB_HDD_ATTACHED:
  14279. {
  14280. int iPtListIdx = -1;
  14281. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  14282. dvb_printf("dvb has received DMN_EVENT_USB_HDD_ATTACHED\n\n\n\n");
  14283. #ifdef SUPPORT_PVR_USE_SAVED_INDEX_FAT_PARTITION
  14284. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  14285. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  14286. GL_TaskSleep(1000);
  14287. if(MID_REC_FS_OK == MID_RecorderGetDefaultPartition(&iPtListIdx)
  14288. &&iPtListIdx == g_stFeatureData.DefaultPartition)
  14289. {
  14290. break;
  14291. }
  14292. if(TRUE != APP_GUIOBJ_DVB_PartitionList_CheckValidByIndex(g_stFeatureData.DefaultPartition))
  14293. {
  14294. /* aps new don't support NTFS fs */
  14295. if (APP_GUIOBJ_DVB_PartitionList_GetFirstFat(&iPtListIdx) == TRUE)
  14296. {
  14297. MID_RecorderSetDefaultPartition(iPtListIdx, MID_REC_PARTITION_SET_FORCE); //set partition 0 for default partition
  14298. APP_GUIOBJ_DVB_PartitionList_SaveIndex(iPtListIdx);
  14299. }
  14300. }
  14301. else
  14302. {
  14303. MID_RecorderSetDefaultPartition(g_stFeatureData.DefaultPartition, MID_REC_PARTITION_SET_FORCE); //set partition 0 for default partition
  14304. }
  14305. #else
  14306. if (MID_RecorderGetDefaultPartition(&iPtListIdx) != MID_REC_FS_OK)
  14307. {
  14308. if (APP_GUIOBJ_DVB_PartitionList_GetFirstFat(&iPtListIdx) == TRUE)
  14309. {
  14310. printf("set default partition\n\n");
  14311. MID_RecorderSetDefaultPartition(iPtListIdx, MID_REC_PARTITION_SET_FORCE);
  14312. }
  14313. }
  14314. #endif
  14315. break;
  14316. }
  14317. case DMN_EVENT_USB_HDD_DETACHED:
  14318. {
  14319. int i;
  14320. int j;
  14321. int MountCount;
  14322. char DefPartitionName[5] = "";
  14323. char AttchPartitionName[5] = "";
  14324. char DefPartition[15] = "";
  14325. Boolean HaveDefPartition = FALSE;
  14326. int devicelen = 4;
  14327. UINT32 u32showpop = 0;
  14328. MountCount = MID_PartitionList_GetMountedCount();
  14329. APP_GUIOBJ_DVB_PartitionList_ClearPartitionInfo();
  14330. if (MountCount == 0 && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  14331. {
  14332. u32showpop = 1;
  14333. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_NO_STORAGE);
  14334. }
  14335. MID_TSPLParser_GetPartitionName(DefPartition, 15);
  14336. strncpy(DefPartitionName, (char *)(DefPartition),devicelen);
  14337. for (j = 0; j < devicelen; j++ )
  14338. {
  14339. if (DefPartitionName[j] == '/')
  14340. {
  14341. DefPartitionName[j] = '\0';
  14342. }
  14343. }
  14344. for (i=0; i < MountCount; i++)
  14345. {
  14346. strncpy(AttchPartitionName, (char *)(MID_PartitionList_GetDevName(i)+5), devicelen );
  14347. for (j = 0; j < devicelen; j++ )
  14348. {
  14349. if (AttchPartitionName[j] == '/')
  14350. {
  14351. AttchPartitionName[j] = '\0';
  14352. }
  14353. }
  14354. //printf("AttchPartitionName is %s, DefPartitionName is %s\n",AttchPartitionName,DefPartitionName);
  14355. if (strncmp(DefPartitionName, AttchPartitionName, devicelen) == 0)
  14356. {
  14357. //printf("---------------------------------------------- %d\n",__LINE__);
  14358. HaveDefPartition = TRUE;
  14359. break;
  14360. }
  14361. }
  14362. if (HaveDefPartition == FALSE)
  14363. {
  14364. //printf("---------------------------------------------- %d\n",__LINE__);
  14365. if (MID_REC_MODE_MANUAL == u8MIDRecMode || MID_REC_MODE_UNATTENDED == u8MIDRecMode)
  14366. {
  14367. DVBApp_StopRecord();
  14368. if (u32showpop == 0)
  14369. {
  14370. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_WRITE_ERROR);
  14371. }
  14372. }
  14373. else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode) ||
  14374. (MID_REC_MODE_AUTO == u8MIDRecMode))
  14375. {
  14376. DVBApp_StopTimeshift(TRUE);
  14377. if (u32showpop == 0)
  14378. {
  14379. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_WRITE_ERROR);
  14380. }
  14381. }
  14382. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  14383. {
  14384. #ifdef CONFIG_SUPPORT_SUBTITLE
  14385. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU))
  14386. {
  14387. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU);
  14388. }
  14389. #endif
  14390. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD))
  14391. {
  14392. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD);
  14393. }
  14394. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY);
  14395. }
  14396. DVBApp_SetBGTimeshift(0);
  14397. MID_TSPLParser_Init("NULL"); //for mantis 0150969, set the wrong szPtName to reset the g_sdPltCnt
  14398. MID_RecorderRefreshDefaultPartition();
  14399. }
  14400. break;
  14401. }
  14402. case DMN_EVENT_DVB_RECORDER_GFS_OK:
  14403. {
  14404. INT32 dFocusedIndex;
  14405. if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &dFocusedIndex))
  14406. {
  14407. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_PARTITION_SET_SUCCESSFUL);
  14408. }
  14409. }
  14410. break;
  14411. #endif
  14412. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  14413. case APP_GLOBAL_EVENT_USB_UPGRADE:
  14414. {
  14415. UINT32 dActiveSysApp = TOTAL_SYS_APP_SIZE;
  14416. unsigned int dIndex;
  14417. MAINAPP_GetActiveSystemAppIndex(&dIndex);
  14418. if (MAINAPP_GetActiveSystemAppIndex(&dActiveSysApp) != MAIN_APP_SUCCESS)
  14419. {
  14420. break;
  14421. }
  14422. if (dActiveSysApp != SYS_APP_DVB)
  14423. {
  14424. break;
  14425. }
  14426. #ifdef SUPPORT_FACTORY_AUTO_TEST
  14427. if(APP_Factory_GetUpgradeandAutoTestFlag() == TRUE)
  14428. {
  14429. AutoUpgrade = TRUE;
  14430. _DVBApp_Exit_All_Menu();
  14431. DVBApp_ResetPopup_Channel();//add for 0159405 @20111114
  14432. if(dParam==1)
  14433. {
  14434. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_GLOBAL_EVENT_ERASE_WHOLE_FLASH|PASS_TO_SYSAPP, 0);
  14435. }
  14436. else
  14437. {
  14438. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, SOFTWARE_UPGRADE_FROM_AUTO_UPGRADE);
  14439. }
  14440. break;
  14441. }
  14442. #endif
  14443. if(dParam==1)//from fm
  14444. {
  14445. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_GLOBAL_EVENT_ERASE_WHOLE_FLASH|PASS_TO_SYSAPP, 0);
  14446. break;
  14447. }
  14448. if (AL_CS_IsStop() == FALSE)
  14449. {
  14450. break;
  14451. }
  14452. }
  14453. if (!APP_MenuMgr_Exist_Main_Menu()
  14454. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING)))
  14455. {
  14456. _DVBApp_Exit_All_Menu();
  14457. DVBApp_ResetPopup_Channel();//add for 0159405 @20111114
  14458. #ifdef CONFIG_SUPPORT_SUBTITLE
  14459. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE))
  14460. {
  14461. UINT8 onoff = 0;
  14462. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  14463. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  14464. onoff = g_stUserInfoData.Subtitle;
  14465. if (onoff == TRUE)
  14466. {
  14467. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  14468. }
  14469. }
  14470. #endif
  14471. AutoUpgrade = TRUE;
  14472. #if defined(CONFIG_CONFIRM_AUTO_UPGRADE)
  14473. if(FALSE == gUSBUpgradeBinIsSupperBin)
  14474. {
  14475. memset(&stPopup, 0x0, sizeof(PopmsgParam_t));
  14476. stPopup.eType = POPMSG_TYPE_CONFIRM;
  14477. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT | POPMSG_EXIT_RECALL;
  14478. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  14479. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_START_AUTO_UPGRADE;
  14480. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  14481. DVBApp_SchedulePopup(stPopup);
  14482. }
  14483. else
  14484. #endif
  14485. {
  14486. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, SOFTWARE_UPGRADE_FROM_AUTO_UPGRADE);
  14487. }
  14488. }
  14489. break;
  14490. #endif
  14491. #ifdef N32_GAME_SUPPORT
  14492. case APP_GLOBAL_EVENT_GAME_UPGRADE:
  14493. if (!APP_MenuMgr_Exist_Main_Menu()
  14494. && !(APP_MenuMgr_Exist_Factory_Menu()))
  14495. {
  14496. _DVBApp_Exit_All_Menu();
  14497. if(dParam == 0)
  14498. {
  14499. dvb_printf("\n!!!open confirm for game upgrade\n");
  14500. memset(&stPopup, 0x0, sizeof(PopmsgParam_t));
  14501. stPopup.eType = POPMSG_TYPE_CONFIRM;
  14502. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT | POPMSG_EXIT_RECALL;
  14503. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  14504. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_START_GAME_UPGRADE;
  14505. stPopup.extend.stConfirm.u8Default = POPMSG_YES;
  14506. DVBApp_SchedulePopup(stPopup);
  14507. }
  14508. else
  14509. {
  14510. dvb_printf("\n!!!show popmsg not enough size to upgrade game\n");
  14511. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_SIZE_FOR_GAME);
  14512. }
  14513. }
  14514. break;
  14515. #endif
  14516. case APP_GLOBAL_EVENT_FLIP:
  14517. if (APP_MenuMgr_Exist_Factory_Menu())
  14518. {
  14519. APP_MenuMgr_Exit_Factory_Menu();
  14520. }
  14521. memset(&stPopup, 0x0, sizeof(PopmsgParam_t));
  14522. stPopup.eType = POPMSG_TYPE_CONFIRM;
  14523. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT | POPMSG_EXIT_RECALL;
  14524. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  14525. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_FLIP;
  14526. stPopup.extend.stConfirm.u8Default = POPMSG_YES;
  14527. DVBApp_SchedulePopup(stPopup);
  14528. break;
  14529. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  14530. case APP_GLOBAL_EVENT_ERASE_WHOLE_FLASH:
  14531. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING))
  14532. {
  14533. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING);
  14534. }
  14535. memset(&stPopup, 0x0, sizeof(PopmsgParam_t));
  14536. stPopup.eType = POPMSG_TYPE_CONFIRM;
  14537. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT | POPMSG_EXIT_RECALL;
  14538. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  14539. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_ERASE_WHOLE_FLASH;
  14540. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  14541. DVBApp_SchedulePopup(stPopup);
  14542. break;
  14543. #endif
  14544. case APP_GLOBAL_EVENT_KEYLOCK:
  14545. _DVBApp_ShowPopup(DVB_APP_POP_MSG_KEYLOCK);
  14546. break;
  14547. #ifdef CONFIG_KEYPAD_SINGLE_REUSE
  14548. case APP_GLOBAL_EVENT_SINGLEKEYPAD_OPEN:
  14549. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SINGLEKEYPAD, 0);
  14550. break;
  14551. case APP_GLOBAL_EVENT_SINGLEKEYPAD_CLOSE:
  14552. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_SINGLEKEYPAD);
  14553. break;
  14554. #endif
  14555. case APP_GLOBAL_EVENT_OVER_MAXVOLUME:
  14556. _DVBApp_ShowPopup(DVB_APP_POP_MSG_OVERMAXVOLUME);
  14557. break;
  14558. #ifdef SUPPORT_SFU_AUTO_TEST
  14559. case APP_DVB_GLOBAL_EVENT_SET_RF_TYPE:
  14560. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_RETURN, 0);
  14561. APP_GUIOBJ_Channel_SetRFType(dParam, AL_DB_INVALIDHDL);
  14562. APP_Console_TO_SUF_Respond(CON_TO_SUF_ACK);
  14563. #if 0
  14564. extern void Enable_Debug_Message(UINT32 DBGStatus);
  14565. Enable_Debug_Message(1<<MODULEID_UMF);
  14566. dvb_printf("ACK\n");
  14567. Enable_Debug_Message(0);
  14568. #endif
  14569. break;
  14570. #endif
  14571. #ifdef SUPPORT_ATS
  14572. case APP_DVB_GLOBAL_EVENT_ATS_SET_RF_TYPE:
  14573. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_RETURN, 0);
  14574. APP_GUIOBJ_Channel_SetRFType(dParam, AL_DB_INVALIDHDL);
  14575. break;
  14576. case APP_DVB_GLOBAL_EVENT_ATS_GET_DEMODINFO_ON:
  14577. uGetDemodinfoOn = 1;
  14578. APP_ATS_Get_Demodinfo_On();
  14579. break;
  14580. case APP_DVB_GLOBAL_EVENT_ATS_GET_DEMODINFO_OFF:
  14581. uGetDemodinfoOn = 0;
  14582. break;
  14583. #endif
  14584. case UI_EVENT_MultiPanelIndex:
  14585. #ifdef SUPPORT_FACTORY_AUTO_TEST
  14586. if (APP_Factory_GetAutoTestOnOff() == TRUE)
  14587. {
  14588. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING))
  14589. {
  14590. DVBApp_ResetPopup_Channel();
  14591. _DVBApp_CloseAllMenu();
  14592. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING, 1);
  14593. Factory_Ver_Debug();
  14594. }
  14595. else
  14596. {
  14597. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING);
  14598. }
  14599. }
  14600. else
  14601. #endif
  14602. {
  14603. UINT8 u8PanelIdx = tv_GetPanelIndex();
  14604. u8PanelIdx = (u8PanelIdx + 1) % CONFIG_PANEL_NUM;
  14605. tv_SetPanelIndex(u8PanelIdx);
  14606. g_stFactoryUserData.Function.PanelSetting.n_MultiplePanelIndex = u8PanelIdx;
  14607. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER,
  14608. ITEM_OFFSET(APP_SETTING_FactoryUser_t, Function.PanelSetting.n_MultiplePanelIndex), sizeof(g_stFactoryUserData.Function.PanelSetting.n_MultiplePanelIndex),
  14609. &(g_stFactoryUserData.Function.PanelSetting.n_MultiplePanelIndex));
  14610. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER,
  14611. ITEM_OFFSET(APP_SETTING_FactoryUser_t, Function.PanelSetting.n_MultiplePanelIndex), sizeof(g_stFactoryUserData.Function.PanelSetting.n_MultiplePanelIndex));
  14612. printf("[%s], %d: Panel Index is %d\n", __FUNCTION__, __LINE__, u8PanelIdx);
  14613. break;
  14614. }
  14615. break;
  14616. #if (defined(SUPPORT_FACTORY_AUTO_TEST)||defined(SUPPORT_FACTORY_AUTO_TEST_MODE2))
  14617. #ifdef CONFIG_CI_SUPPORT
  14618. case UI_EVENT_AUTO_OUTPUTCI:
  14619. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  14620. {
  14621. APP_DVB_CI_GetCiStatus();
  14622. }
  14623. break;
  14624. #endif
  14625. #ifdef CONFIG_CI_SUPPORT
  14626. case UI_EVENT_AUTO_READCI:
  14627. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  14628. {
  14629. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_OBJECT_OPEN|PASS_TO_SYSAPP, (DVB_GUIOBJ_CI_MENU|(1<<16)));
  14630. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  14631. DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_CAM_ON_INIT, dParam);
  14632. }
  14633. break;
  14634. #endif
  14635. case UI_EVENT_AUTO_ATV:
  14636. case UI_EVENT_AUTO_DTV:
  14637. case UI_EVENT_AUTO_AV1:
  14638. case UI_EVENT_AUTO_AV2:
  14639. case UI_EVENT_AUTO_AV3:
  14640. case UI_EVENT_AUTO_SVIDEO1:
  14641. case UI_EVENT_AUTO_SVIDEO2:
  14642. case UI_EVENT_AUTO_SCART1:
  14643. case UI_EVENT_AUTO_SCART2:
  14644. case UI_EVENT_AUTO_YPBPR1:
  14645. case UI_EVENT_AUTO_YPBPR2:
  14646. case UI_EVENT_AUTO_YPBPR3:
  14647. case UI_EVENT_AUTO_HDMI1:
  14648. case UI_EVENT_AUTO_HDMI2:
  14649. case UI_EVENT_AUTO_HDMI3:
  14650. case UI_EVENT_AUTO_HDMI4:
  14651. case UI_EVENT_AUTO_PC:
  14652. case UI_EVENT_AUTO_MEDIA:
  14653. case UI_EVENT_AUTO_DVD:
  14654. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  14655. {
  14656. APP_Factory_SetAutoTestSourceChange(dMessage);
  14657. }
  14658. break;
  14659. case UI_EVENT_FAC_F1:
  14660. case UI_EVENT_FAC_RESET:
  14661. //if(APP_Factory_GetAutoTestOnOff() == TRUE)
  14662. {
  14663. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, eSourType);
  14664. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, eSourType);
  14665. DVBApp_ClearStatus();
  14666. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  14667. APP_DVB_INTRA_EVENT_STOP_PLAYBACK, PLAYBACK_STOP_ALL);
  14668. Factory_FactSet_ResetAllEx();
  14669. //APP_Sysset_Reset(APP_SYSSET_RESET_ALL);
  14670. }
  14671. break;
  14672. case UI_EVENT_VOL_MAX:
  14673. g_stVariationalData.Volume = 100;
  14674. APP_Audio_SetVolume(g_stVariationalData.Volume);
  14675. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  14676. ITEM_OFFSET(APP_SETTING_Variational_t, Volume),
  14677. sizeof(g_stVariationalData.Volume),&(g_stVariationalData.Volume));
  14678. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  14679. ITEM_OFFSET(APP_SETTING_Variational_t, Volume), sizeof(g_stVariationalData.Volume));
  14680. break;
  14681. #endif
  14682. #if 0
  14683. case FW_DB_LOAD_DEFAULT:
  14684. dvb_printf("[%s]FW_DB_LOAD_DEFAULT received.\n", __FUNCTION__);
  14685. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  14686. if (AL_DBTYPE_DVB_S == APP_DVB_Playback_GetCurrentNetType())
  14687. {
  14688. /* wait for DVB-S becomes acticve */
  14689. while(AL_FW_CheckActiveDBModule(AL_DBTYPE_DVB_S) != al_true);
  14690. DVBApp_LoadCustomerDB(AL_DBTYPE_DVB_S);
  14691. }
  14692. #endif
  14693. break;
  14694. #endif
  14695. #ifdef CONFIG_SUPPORT_EWS
  14696. case FW_EWS_FIND_AUD:
  14697. if (dParam != 0)
  14698. {
  14699. memset(&g_PrevAudioPid, 0, sizeof(DBPIDInfo_t));
  14700. g_PrevAudioPid.usDataPID = DB_DVB_INVALID_PID;
  14701. memset(&g_MonAudioPid, 0, sizeof(DBPIDInfo_t));
  14702. g_MonAudioPid.usDataPID = DB_DVB_INVALID_PID;
  14703. memcpy(&g_MonAudioPid, (DBPIDInfo_t *)dParam, sizeof(DBPIDInfo_t));
  14704. DMIOC_SET_EWS_PARAM stEwsParam;
  14705. memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM));
  14706. stEwsParam.bActive = FALSE;
  14707. ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam);
  14708. memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM));
  14709. stEwsParam.bActive = TRUE;
  14710. stEwsParam.clear_ews_flag = TRUE;
  14711. stEwsParam.PID = g_MonAudioPid.usDataPID;
  14712. dvb_printf("\n\n[%s]FW_EWS_FIND_AUD!!!!!!!, curr time: 0x%x\n\n", __FUNCTION__,GL_GetRtc32());
  14713. ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam);
  14714. g_EWSMode = TRUE;
  14715. GL_MemFree((DBPIDInfo_t *)(dParam));
  14716. dParam = 0;
  14717. }
  14718. break;
  14719. case FW_EWS_ACTIVE:
  14720. dvb_printf("\n\n[%s]FW_EWS_ACTIVE!!!!!!!, curr time: 0x%x\n\n", __FUNCTION__,GL_GetRtc32());
  14721. {
  14722. dvbpsi_anouncement_t stAnoumceData;
  14723. AL_Serv_SearchKey_t stSearchKey;
  14724. AL_RecHandle_t hProgHdl;
  14725. AL_RecHandle_t hTpHdl;
  14726. AL_RecHandle_t hCurrTpHdl;
  14727. UINT32 u32Param = 0;
  14728. DMIOC_SET_EWS_PARAM stEwsParam;
  14729. memset(&stAnoumceData, 0, sizeof(dvbpsi_anouncement_t));
  14730. memset(&stSearchKey, 0, sizeof(stSearchKey));
  14731. AL_EWS_Monitor_GetData(&stAnoumceData);
  14732. stSearchKey.u16OrigNetId = stAnoumceData.original_network_id;
  14733. stSearchKey.u16TsId = stAnoumceData.transport_stream_id;
  14734. stSearchKey.u16ServId = stAnoumceData.service_id;
  14735. stSearchKey.eDBType = eNetType;
  14736. stSearchKey.eRecType = AL_RECTYPE_DVBSERVICE;
  14737. stSearchKey.eSearchField = AL_SRV_SEARCHFIELD_ORIGNETID
  14738. | AL_SRV_SEARCHFIELD_TSID
  14739. | AL_SRV_SEARCHFIELD_SRVID;
  14740. if (AL_SUCCESS == AL_DB_GetMatchedRecord((AL_DB_RecordMatchFunc)AL_Serv_MatchRecBySearchKey,
  14741. (al_void *)&stSearchKey, eNetType, AL_RECTYPE_DVBSERVICE, AL_DB_REQ_GETFIRST, &hProgHdl))
  14742. {
  14743. MID_PlaybackGetCurProgHandle(al_null, &hCurrProgHandle);
  14744. if ((hCurrProgHandle != hProgHdl) && (hProgHdl != AL_DB_INVALIDHDL))
  14745. {
  14746. g_NonClearEWS = TRUE;
  14747. if ((g_MonAudioPid.usDataPID != DB_DVB_INVALID_PID) && (g_PrevAudioPid.usDataPID == DB_DVB_INVALID_PID))
  14748. {
  14749. g_PrevAudioPid.usDataPID = MID_PlaybackGetActiveAudHandle(TRUE);
  14750. g_PrevAudioPid.usCodec = MID_PlaybackGetActiveAudCodec();
  14751. }
  14752. memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM));
  14753. stEwsParam.bActive = FALSE;
  14754. ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam);
  14755. _DVBApp_Zapping(eServiceType, hProgHdl, TRUE, 0, TRUE);
  14756. g_PrevProgHandle = hCurrProgHandle;
  14757. hCurrTpHdl = hCurrProgHandle;
  14758. hTpHdl = hProgHdl;
  14759. if ((AL_SUCCESS == AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hCurrTpHdl))
  14760. && (AL_SUCCESS == AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hTpHdl))
  14761. && (hCurrTpHdl != AL_DB_INVALIDHDL) && (hTpHdl != AL_DB_INVALIDHDL) && (hCurrTpHdl != hTpHdl))
  14762. {
  14763. dvb_printf("[%s:%d] different tp, not need change audio pid !!!!!!!!!!!!!!!!!!!!!\n",__FUNCTION__,__LINE__);
  14764. memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM));
  14765. stEwsParam.bActive = TRUE;
  14766. stEwsParam.PID = g_MonAudioPid.usDataPID;
  14767. ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam);
  14768. }
  14769. else if (g_MonAudioPid.usDataPID != DB_DVB_INVALID_PID)
  14770. {
  14771. u32Param = g_MonAudioPid.usCodec<<16|g_MonAudioPid.usDataPID;
  14772. MID_PlaybackChangePid(MID_PLAYBK_CHANGE_AUDPID, u32Param);
  14773. memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM));
  14774. stEwsParam.bActive = TRUE;
  14775. stEwsParam.PID = g_MonAudioPid.usDataPID;
  14776. ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam);
  14777. }
  14778. g_NonClearEWS = FALSE;
  14779. }
  14780. else if ((hCurrProgHandle == hProgHdl) && (hProgHdl != AL_DB_INVALIDHDL))
  14781. {
  14782. if ((g_MonAudioPid.usDataPID != DB_DVB_INVALID_PID) && (g_PrevAudioPid.usDataPID == DB_DVB_INVALID_PID))
  14783. {
  14784. g_PrevAudioPid.usDataPID = MID_PlaybackGetActiveAudHandle(TRUE);
  14785. g_PrevAudioPid.usCodec = MID_PlaybackGetActiveAudCodec();
  14786. u32Param = g_MonAudioPid.usCodec<<16|g_MonAudioPid.usDataPID;
  14787. MID_PlaybackChangePid(MID_PLAYBK_CHANGE_AUDPID, u32Param);
  14788. }
  14789. }
  14790. }
  14791. }
  14792. break;
  14793. case FW_EWS_INACTIVE:
  14794. dvb_printf("\n\n[%s]FW_EWS_INACTIVE!!!!!!!, g_PrevProgHandle: 0x%x, curr time: 0x%x\n\n", __FUNCTION__,g_PrevProgHandle, GL_GetRtc32());
  14795. {
  14796. DMIOC_SET_EWS_PARAM stEwsParam;
  14797. UINT32 u32Param = 0;
  14798. memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM));
  14799. stEwsParam.bActive = FALSE;
  14800. ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam);
  14801. g_EWSMode = FALSE;
  14802. g_NonClearEWS = TRUE;
  14803. if (g_PrevProgHandle != AL_DB_INVALIDHDL)
  14804. {
  14805. _DVBApp_Zapping(eServiceType, g_PrevProgHandle, TRUE, 0, TRUE);
  14806. g_PrevProgHandle = AL_DB_INVALIDHDL;
  14807. }
  14808. if (g_PrevAudioPid.usDataPID != DB_DVB_INVALID_PID)
  14809. {
  14810. u32Param = g_PrevAudioPid.usCodec<<16|g_PrevAudioPid.usDataPID;
  14811. MID_PlaybackChangePid(MID_PLAYBK_CHANGE_AUDPID, u32Param);
  14812. memset(&g_PrevAudioPid, 0, sizeof(DBPIDInfo_t));
  14813. g_PrevAudioPid.usDataPID = DB_DVB_INVALID_PID;
  14814. }
  14815. g_NonClearEWS = FALSE;
  14816. memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM));
  14817. stEwsParam.clear_ews_flag = true;
  14818. stEwsParam.bActive = TRUE;
  14819. stEwsParam.PID = g_MonAudioPid.usDataPID;
  14820. ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam);
  14821. }
  14822. break;
  14823. case FW_EWS_NON_ANCM:
  14824. dvb_printf("\n\n[%s]FW_EWS_NON_ANCM!!!!!!!, curr time: 0x%x\n\n", __FUNCTION__, GL_GetRtc32());
  14825. {
  14826. DMIOC_SET_EWS_PARAM stEwsParam;
  14827. memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM));
  14828. stEwsParam.bActive = FALSE;
  14829. ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam);
  14830. DVBApp_ResetEWS();
  14831. }
  14832. break;
  14833. #endif
  14834. case APP_GLOBAL_EVENT_RESCAN:
  14835. {
  14836. _DVBApp_Exit_All_Menu();
  14837. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NETWORK_UPDATING);
  14838. APP_GUIOBJ_ScanProcess_SetCurrentSearchMode( SEARCH_D_NETWORK_UPDATE_MODE );
  14839. #ifdef SUPPORT_CHANGE_TS_DYNAMICALLY
  14840. if( APP_Get_DTVHiddenScanState() )
  14841. {
  14842. APP_ScanProcess_Stop();
  14843. APP_SetSrcChgFlag( TRUE );
  14844. while( !AL_CS_IsStop() )
  14845. {
  14846. if( APP_Get_DTVHiddenScanState() )
  14847. break;
  14848. else
  14849. GL_TaskSleep(50);
  14850. }
  14851. APP_SetSrcChgFlag( FALSE );
  14852. }
  14853. #endif
  14854. APP_DTV_ScanProcess_Start( SEARCH_D_NETWORK_UPDATE_MODE );
  14855. break;
  14856. }
  14857. #if 0//def CONFIG_SUPPORT_MIRACAST
  14858. case DMN_EVENT_MIRACAST_CONNECTING:
  14859. dvb_printf("DMN_EVENT_MIRACAST_CONNECTING.\n");
  14860. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL))
  14861. {
  14862. break;
  14863. }
  14864. /* Scan State */
  14865. if (AL_CS_IsStop() != 1)
  14866. {
  14867. break;
  14868. }
  14869. /*
  14870. ** Channel Tuning,
  14871. ** Channel - Digital Manual Search,
  14872. */
  14873. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_AUTO_SEARCH))
  14874. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS))
  14875. #if (defined CONFIG_DVB_SYSTEM_DVBT_SUPPORT)
  14876. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_DVB_T_MANUAL_SEARCH))
  14877. #endif
  14878. #if (defined CONFIG_DVB_SYSTEM_DVBC_SUPPORT)
  14879. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_DVB_C_MANUAL_SEARCH))
  14880. #endif
  14881. )
  14882. {
  14883. break;
  14884. }
  14885. #ifdef CONFIG_SUPPORT_PVR
  14886. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  14887. {
  14888. break;
  14889. }
  14890. #endif
  14891. DVBApp_ResetPopup_Channel();
  14892. _DVBApp_CloseAllMenu();
  14893. /* Check Valid state ---*/
  14894. if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_NET))
  14895. {
  14896. dvb_printf("[DvbApp OnGlobalEvent] APP_GUIOBJ_Source_SetAppSource faild.\n");
  14897. }
  14898. break;
  14899. case DMN_EVENT_MIRACAST_EXIT_SUCCESS:
  14900. dvb_printf("DMN_EVENT_MIRACAST_EXIT_SUCCESS.\n");
  14901. //if(IsDonglePlugged())
  14902. {
  14903. //DrawInfoWindow("Device Plugged", DRAW_IT);
  14904. GL_TaskSleep(3000);
  14905. MiracastInit();
  14906. }
  14907. //else{
  14908. //DrawInfoWindow("NO Device", DRAW_IT);
  14909. //}
  14910. break;
  14911. #endif
  14912. #ifdef SUPPORT_IR_HOTKEY
  14913. case UI_EVENT_DTV:
  14914. _DVBApp_CloseAllMenu();
  14915. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_ATV);
  14916. break;
  14917. case UI_EVENT_AV:
  14918. _DVBApp_CloseAllMenu();
  14919. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_AV);
  14920. break;
  14921. case UI_EVENT_HDMI:
  14922. _DVBApp_CloseAllMenu();
  14923. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_PC);
  14924. break;
  14925. #endif
  14926. default:
  14927. dvb_printf("[%s] Unknown message 0x%x received.\n", __FUNCTION__, dMessage);
  14928. break;
  14929. }
  14930. return 0;
  14931. }
  14932. static INT32 _DVBApp_OnGUIFeedbackEvent(void *pPrivateData, UINT32 dMessage, UINT32 dParam)
  14933. {
  14934. al_uint8 bSignalState = al_false;
  14935. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  14936. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  14937. #ifdef CONFIG_SUPPORT_PVR
  14938. UINT8 u8MidRecState;
  14939. UINT8 u8MIDRecMode;
  14940. u8MidRecState = MID_RecorderState();
  14941. u8MIDRecMode = MID_Recorder_GetRecMode();
  14942. #endif
  14943. switch (dMessage)
  14944. {
  14945. case GUI_RESPOND_ZAPPING:
  14946. {
  14947. AL_RecHandle_t NextHdl = dParam;
  14948. _DVBApp_CloseAllMenu();
  14949. if ((NextHdl != AL_DB_INVALIDHDL)
  14950. #ifdef CONFIG_CIPLUS_SUPPORT
  14951. || (APP_CIPLUS_IsProfileSource())
  14952. #endif
  14953. )
  14954. {
  14955. _DVBApp_Zapping(eServiceType, NextHdl, FALSE, 0, TRUE);
  14956. }
  14957. }
  14958. break;
  14959. #ifdef CONFIG_CIPLUS_SUPPORT
  14960. case GUI_RESPOND_FORCE_ZAPPING:
  14961. {
  14962. AL_RecHandle_t NextHdl = dParam;
  14963. _DVBApp_CloseAllMenu();
  14964. if( NextHdl != AL_DB_INVALIDHDL )
  14965. {
  14966. _DVBApp_Zapping(eServiceType, NextHdl, TRUE, 0, TRUE);
  14967. }
  14968. break;
  14969. }
  14970. #endif
  14971. case GUI_RESPOND_EXIT_ALL_MENU:
  14972. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO))
  14973. {
  14974. if(APP_GUIOBJ_SleepTimer_GetOpenStandby() == al_true)
  14975. {
  14976. _DVBApp_Exit_All_Menu();
  14977. if(APP_GUIOBJ_SleepTimer_GetSleepPopConflict() == TRUE)
  14978. {
  14979. APP_GUIOBJ_SleepTimer_SetSleepPopConflict(FALSE);
  14980. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  14981. (APP_GLOBAL_EVENT_SLEEP_TIMER_INFO|PASS_TO_SYSAPP), APP_POWERDOWN_SLEEP);
  14982. }
  14983. }
  14984. else
  14985. {
  14986. _DVBApp_Exit_All_Menu();
  14987. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  14988. if((bSignalState != AL_DVB_MONITOR_VALUE_TRUE)&&(APP_GUIOBJ_SleepTimer_GetStandbyPopConflict() == TRUE))
  14989. {
  14990. APP_GUIOBJ_SleepTimer_SetStandbyPopConflict(FALSE);
  14991. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  14992. (APP_GLOBAL_EVENT_SLEEP_TIMER_INFO | PASS_TO_SYSAPP), APP_POWERDOWN_NO_SINGAL);
  14993. }
  14994. }
  14995. }
  14996. else
  14997. {
  14998. _DVBApp_Exit_All_Menu();
  14999. }
  15000. break;
  15001. #ifdef CONFIG_SUPPORT_PVR
  15002. case GUI_RESPOND_REC_DURATIONTIME_EXIT:
  15003. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME))
  15004. {
  15005. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME);
  15006. }
  15007. break;
  15008. case GUI_RESPOND_PVRPLAY_TO_GOTO:
  15009. PVR_DEBF("goto is enter!!1\n");
  15010. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_GOTO);
  15011. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, dMessage, 0);
  15012. break;
  15013. case GUI_RESPOND_PVRFILEPLAY_ERROR:
  15014. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  15015. {
  15016. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY);
  15017. }
  15018. break;
  15019. case GUI_RESPOND_CLOSE_PVRINFO:
  15020. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  15021. {
  15022. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  15023. }
  15024. break;
  15025. case GUI_RESPOND_CLOSE_PLAYINFO:
  15026. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  15027. {
  15028. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  15029. }
  15030. break;
  15031. case GUI_RESPOND_PVRINFO_FROMEXTENDINFO:
  15032. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  15033. {
  15034. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO);
  15035. }
  15036. if (u8MidRecState != MID_REC_STATUS_STOP)
  15037. {
  15038. if (u8MIDRecMode == MID_REC_MODE_TIMESHIFT_AFTER_REC)
  15039. {
  15040. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,
  15041. DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERNOTIMEMENU);
  15042. }
  15043. else if ((u8MIDRecMode == MID_REC_MODE_AUTO)
  15044. && (MID_TSPLParser_GetThreadState() == TRUE))
  15045. {
  15046. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,
  15047. DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERNOTIMEMENU);
  15048. }
  15049. else if ((u8MIDRecMode == MID_REC_MODE_MANUAL)
  15050. && (u8MidRecState == MID_REC_STATUS_START))
  15051. {
  15052. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, 0);
  15053. #ifdef SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD
  15054. if((DVBAPP_Pvr_GetRECPlayFlag())
  15055. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  15056. {
  15057. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO,
  15058. PVR_PLAYINFO_ENTERNOTIMEMENU);
  15059. }
  15060. #endif
  15061. }
  15062. else if (u8MidRecState == MID_REC_STATUS_PAUSE)
  15063. {
  15064. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  15065. #ifdef SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD
  15066. if((DVBAPP_Pvr_GetRECPlayFlag())
  15067. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  15068. {
  15069. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO,
  15070. PVR_PLAYINFO_ENTERNOTIMEMENU);
  15071. }
  15072. #endif
  15073. }
  15074. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,
  15075. DVB_GUIOBJ_PVRREC_INFO, 0);
  15076. }
  15077. break;
  15078. #endif
  15079. default:
  15080. dvb_printf("[%s] Unknown message received.\n", __FUNCTION__);
  15081. break;
  15082. }
  15083. return 0;
  15084. }
  15085. static INT32 _DVBApp_OnEvent(void *pPrivateData, UINT32 dMessage, UINT32 dParam)
  15086. {
  15087. switch (dMessage & GUIOBJ_MESSAGE_TYPE_MASK)
  15088. {
  15089. case SYSAPP_GLOBAL_EVENT_TYPE:
  15090. _DVBApp_OnGlobalEvent(pPrivateData, (dMessage & GUIOBJ_MESSAGE_MASK), dParam);
  15091. break;
  15092. case GUIOBJ_FEEDBACK_EVENT_TYPE:
  15093. _DVBApp_OnGUIFeedbackEvent(pPrivateData, (dMessage & GUIOBJ_MESSAGE_MASK), dParam);
  15094. break;
  15095. default:
  15096. dvb_printf("[%s] Unknown message 0x%x received.\n", __FUNCTION__, dMessage);
  15097. break;
  15098. }
  15099. return 0;
  15100. }
  15101. INT32 _DVBApp_DataApplicationStatus(UINT32 u32module)
  15102. {
  15103. int iret = DATA_APP_UNSTABLE;
  15104. UINT8 u8ProgState = MID_PLAYBK_PROG_STATE_NORMAL;
  15105. #ifdef CONFIG_SUPPORT_MHEG5
  15106. // BOOLEAN eRecordState = FALSE;
  15107. #endif
  15108. #ifdef CONFIG_SUPPORT_SUBTITLE
  15109. UINT8 onoff = 0;
  15110. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  15111. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  15112. onoff = g_stUserInfoData.Subtitle;
  15113. #endif
  15114. switch (u32module & OSD2CTRLMDL_ALL)
  15115. {
  15116. #ifdef CONFIG_SUPPORT_SUBTITLE
  15117. case OSD2CTRLMDL_SUB:
  15118. if (APP_GUIOBJ_SubTitle_IsThereAnyData())
  15119. {
  15120. iret |= DATA_APP_LANUCHABLE;
  15121. }
  15122. else
  15123. {
  15124. iret |= DATA_APP_NOT_FOUND;
  15125. }
  15126. if (iret & DATA_APP_LANUCHABLE)
  15127. {
  15128. if (onoff == TRUE
  15129. #ifdef CONFIG_MOD_PACK_SUB
  15130. && (_DVBApp_DispSub() == TRUE)
  15131. #endif
  15132. )
  15133. {
  15134. iret |= DATA_APP_EXECUTABLE;
  15135. }
  15136. }
  15137. break;
  15138. #endif
  15139. #ifdef CONFIG_SUPPORT_MHEG5
  15140. case OSD2CTRLMDL_MH5:
  15141. if (APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED)
  15142. {
  15143. iret |= DATA_APP_LANUCHABLE | DATA_APP_EXECUTABLE;
  15144. }
  15145. else
  15146. {
  15147. iret |= DATA_APP_NOT_FOUND;
  15148. }
  15149. //if (eRecordState == TRUE)
  15150. // {
  15151. // iret &= ~DATA_APP_EXECUTABLE;
  15152. //}
  15153. break;
  15154. #endif
  15155. default:
  15156. dvb_printf("%s(): unknow module index\n", __FUNCTION__);
  15157. break;
  15158. }
  15159. #ifdef CONFIG_SUPPORT_PVR
  15160. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  15161. #endif
  15162. {
  15163. u8ProgState = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL);
  15164. if (u8ProgState == MID_PLAYBK_PROG_STATE_LOCKED)
  15165. {
  15166. iret &= ~DATA_APP_EXECUTABLE;
  15167. }
  15168. }
  15169. return iret;
  15170. }
  15171. static INT32 _DVBApp_DataApplicationGuiObjectRefresh(UINT32 gui_object_selection)
  15172. {
  15173. int ret = 0;
  15174. #ifdef CONFIG_SUPPORT_MHEG5
  15175. if (gui_object_selection & OSD2CTRLMDL_MH5)
  15176. {
  15177. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)
  15178. && gui_object_selection & OSD2CTRLMDL_ENABLE
  15179. #ifdef CONFIG_SUPPORT_TTX
  15180. && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)
  15181. #endif
  15182. #ifdef CONFIG_SUPPORT_SUBTITLE
  15183. && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE)
  15184. #endif
  15185. )
  15186. {
  15187. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, 0);
  15188. }
  15189. else if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)
  15190. && (gui_object_selection & OSD2CTRLMDL_DISABLE))
  15191. {
  15192. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5);
  15193. }
  15194. }
  15195. #endif
  15196. #ifdef CONFIG_SUPPORT_SUBTITLE
  15197. if (gui_object_selection & OSD2CTRLMDL_SUB)
  15198. {
  15199. if (gui_object_selection & OSD2CTRLMDL_ENABLE)
  15200. {
  15201. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE))
  15202. {
  15203. #ifdef CONFIG_SUPPORT_TTX
  15204. if(!(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)))
  15205. #endif
  15206. {
  15207. #if (defined CONFIG_MOD_PACK_SUB) || (defined CONFIG_MOD_PACK_TT)
  15208. if (MID_RecorderIsCurRecording() != DRV_SUCCESS)
  15209. #endif
  15210. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE, 0);
  15211. }
  15212. }
  15213. else
  15214. {
  15215. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  15216. DVB_GUIOBJ_SUBTITLE, APP_DVB_INTRA_EVENT_OSD2_RESTART, 0);
  15217. }
  15218. }
  15219. else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE)
  15220. && (gui_object_selection & OSD2CTRLMDL_DISABLE))
  15221. {
  15222. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE);
  15223. }
  15224. }
  15225. #endif
  15226. return ret;
  15227. }
  15228. /*****************************************************************************
  15229. ** FUNCTION : DVBApp_GetScrambleState
  15230. **
  15231. ** DESCRIPTION :
  15232. ** get current program scramnle attrib
  15233. **
  15234. ** PARAMETERS :
  15235. ** none
  15236. **
  15237. ** RETURN VALUES:
  15238. ** TRUE - SCRAMBLE ATTRIB
  15239. ** FALSE - UN SCRAMBLE ATTRIB
  15240. *****************************************************************************/
  15241. Boolean DVBApp_GetScrambleAttrib(void)
  15242. {
  15243. DBServAttrib_t stProgAttrib;
  15244. AL_DB_EDBType_t DBType = AL_DBTYPE_DVB_T;
  15245. AL_RecHandle_t hProg = AL_DB_INVALIDHDL;
  15246. DBType = APP_DVB_Playback_GetCurrentNetType();
  15247. hProg = APP_DVB_Playback_GetCurrentProgHandle(DBType, AL_RECTYPE_DVBTV | AL_RECTYPE_DVBRADIO);
  15248. memset(&stProgAttrib, 0, sizeof(DBServAttrib_t));
  15249. AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"stProgAttrib", (al_void *)&stProgAttrib);
  15250. if (stProgAttrib.scramble == al_true)
  15251. {
  15252. return TRUE;
  15253. }
  15254. else
  15255. {
  15256. return FALSE;
  15257. }
  15258. }
  15259. /*****************************************************************************
  15260. ** FUNCTION : DVBApp_CheckServiceNotAvailable
  15261. **
  15262. ** DESCRIPTION :
  15263. ** Check current program state is not available or not
  15264. **
  15265. ** PARAMETERS :
  15266. ** none
  15267. **
  15268. ** RETURN VALUES:
  15269. ** TRUE - service not available
  15270. ** FALSE - not service not available
  15271. *****************************************************************************/
  15272. Boolean DVBApp_CheckServiceNotAvailable(void)
  15273. {
  15274. MID_PlaybackProgState_t eProgState = MID_PLAYBK_PROG_STATE_NORMAL;
  15275. AL_RecHandle_t hCurrPrgHdl = AL_DB_INVALIDHDL;
  15276. AL_DB_EDBType_t eDBType = APP_DVB_Playback_GetCurrentNetType();
  15277. al_uint8 bSignalState = AL_DVB_MONITOR_VALUE_INVAILED;
  15278. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL,&bSignalState);
  15279. if (g_bNoSteamData == TRUE)
  15280. {
  15281. #ifdef CONFIG_SUPPORT_MHEG5
  15282. if ((APP_Area_SupportDtg())
  15283. && (APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED))
  15284. {
  15285. return FALSE;
  15286. }
  15287. else
  15288. #endif
  15289. #ifdef CONFIG_CIPLUS_SUPPORT
  15290. if (MID_DTVCI_GetAppMMIStatus())
  15291. {
  15292. return FALSE;
  15293. }
  15294. else
  15295. #endif
  15296. {
  15297. hCurrPrgHdl = APP_DVB_Playback_GetCurrentProgHandle(eDBType, (AL_RECTYPE_DVBTV |AL_RECTYPE_DVBRADIO));
  15298. if ((hCurrPrgHdl == AL_DB_INVALIDHDL) && (bSignalState != AL_DVB_MONITOR_VALUE_INVAILED))
  15299. {
  15300. dvb_printf("Get current program handle error!!!\n");
  15301. return TRUE;
  15302. }
  15303. eProgState = APP_DVB_Playback_GetProgStateByHandle(eDBType, hCurrPrgHdl);
  15304. if ((eProgState == MID_PLAYBK_PROG_STATE_NOT_RUNNING) && (bSignalState != AL_DVB_MONITOR_VALUE_INVAILED))
  15305. {
  15306. return TRUE;
  15307. }
  15308. if ((eProgState != MID_PLAYBK_PROG_STATE_LOCKED) && (bSignalState != AL_DVB_MONITOR_VALUE_INVAILED))
  15309. {
  15310. return TRUE;
  15311. }
  15312. else
  15313. {
  15314. return FALSE;
  15315. }
  15316. }
  15317. }
  15318. return FALSE;
  15319. }
  15320. /*****************************************************************************
  15321. ** FUNCTION : DVBApp_CheckProgramType
  15322. **
  15323. ** DESCRIPTION :
  15324. ** Check program lock or temp sevice or vedio mpeg4 and so on
  15325. **
  15326. ** PARAMETERS :
  15327. ** bInit - program state dispose
  15328. **
  15329. ** RETURN VALUES:
  15330. ** SP_ERR_FAILURE - can not playback
  15331. ** SP_SUCCESS - playback
  15332. *****************************************************************************/
  15333. INT32 DVBApp_CheckProgramType(Boolean bFlag)
  15334. {
  15335. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  15336. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  15337. INT16 i16ProgState = MID_PLAYBK_PROG_STATE_NORMAL;
  15338. al_uint8 bMonitorState = al_false;
  15339. al_uint8 bSignalState = al_false;
  15340. UINT8 u8Mute = 0;
  15341. INT32 i32Ret = SP_ERR_FAILURE;
  15342. APP_Source_Type_t eSourType = APP_SOURCE_MAX;
  15343. //al_bool bHasValidServ = al_false;
  15344. #ifdef CONFIG_CIPLUS_SUPPORT
  15345. if (APP_CIPLUS_IsProfileSource())
  15346. {
  15347. if (g_isMute)
  15348. {
  15349. return SP_SUCCESS;
  15350. }
  15351. }
  15352. #endif
  15353. //bHasValidServ = AL_DB_HasVisibleService(eNetType);
  15354. AL_RecHandle_t hTempHdl = AL_DB_INVALIDHDL;
  15355. MID_PlaybackGetCurProgHandle(al_null, &hTempHdl);
  15356. APP_GUIOBJ_Source_GetCurrSource(&eSourType);
  15357. i16ProgState = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL);
  15358. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_MONITOR, &bMonitorState);
  15359. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  15360. printf("\n @@@@@@@@@@@@@dvb_app.c i16ProgState=%d bMonitorState=%d bSignalState=%d line=%d \n",i16ProgState,bMonitorState,bSignalState,__LINE__);
  15361. //if ((bMonitorState) && (bSignalState == AL_DVB_MONITOR_VALUE_TRUE) && bHasValidServ)
  15362. if ((bMonitorState) && (bSignalState == AL_DVB_MONITOR_VALUE_TRUE) && (hTempHdl != AL_DB_INVALIDHDL))
  15363. {
  15364. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL))
  15365. {
  15366. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  15367. }
  15368. #ifdef CONFIG_SUPPORT_PVR //if playing timeshift file not to show pop
  15369. UINT32 u32PEState = MID_TSPL_MODE_STOP;
  15370. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  15371. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  15372. u8Mute = g_stUserInfoData.Mute;//for manits 151777
  15373. if (MID_TSPLParser_GetPlayState(&u32PEState, NULL) == DRV_SUCCESS)
  15374. {
  15375. if (MID_TSPL_MODE_STOP != u32PEState)
  15376. {
  15377. if ((u8Mute == FALSE) && (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)))
  15378. {
  15379. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  15380. }
  15381. return SP_ERR_FAILURE;
  15382. }
  15383. }
  15384. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  15385. {
  15386. if(u8Mute == FALSE)
  15387. {
  15388. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  15389. }
  15390. return SP_ERR_FAILURE;
  15391. }
  15392. #endif
  15393. #ifdef PLAY_VIDEO_FOR_ALLSRV
  15394. MID_PlaybackGetCurProgHandle(al_null, &hTempHdl);
  15395. DBPIDInfo_t stVideoPid;
  15396. memset(&stVideoPid,0xff,sizeof(DBPIDInfo_t));
  15397. AL_DB_QueryDetailFieldByName(hTempHdl, (al_uint8 *)"stVideoPid", (al_void *)&stVideoPid);
  15398. #endif
  15399. switch (i16ProgState)
  15400. {
  15401. case MID_PLAYBK_PROG_STATE_AUDIO_VIDEO_SCRAMBLED:
  15402. #ifdef PLAY_VIDEO_FOR_ALLSRV
  15403. if (DVBApp_CheckHasVideo() == TRUE)
  15404. #else
  15405. if (eServiceType != AL_RECTYPE_DVBRADIO) //zhongbaoxing added for mantis 0153467 @20110926
  15406. #endif
  15407. {
  15408. APP_GUIOBJ_DVB_Playback_ClearShowLogo();
  15409. }
  15410. #if 0
  15411. #if 1 //richiechang 20120430, for samsung & SONY TVSet Behavior
  15412. MID_PlaybackStreamInfo_t stAudStrmInfo;
  15413. memset(&stAudStrmInfo, 0, sizeof(MID_PlaybackStreamInfo_t));
  15414. MID_PlaybackGetAudioStreamInfo(&stAudStrmInfo, GL_NO_WAIT);
  15415. if (stAudStrmInfo.bIsScrambled)
  15416. {
  15417. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType); // mute audio if audio is scrambled
  15418. }
  15419. else
  15420. {
  15421. APP_Audio_SetMute(g_stUserInfoData.Mute, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType); // mute audio based on user setting if audio is not scrambled
  15422. }
  15423. #else //richiechang 20120430, for SPV9200_Orion Behavior
  15424. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType); // mute audio if video is scrambled
  15425. #endif
  15426. #endif
  15427. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType); // mute audio if audio is scrambled
  15428. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  15429. #if 0
  15430. if (bFlag == TRUE)
  15431. {
  15432. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SCRAMBLED) == FALSE)
  15433. {
  15434. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SCRAMBLE);
  15435. }
  15436. }
  15437. #endif
  15438. i32Ret = SP_ERR_FAILURE;
  15439. break;
  15440. case MID_PLAYBK_PROG_STATE_ONLY_VIDEO_SCRAMBLED:
  15441. #ifdef PLAY_VIDEO_FOR_ALLSRV
  15442. if (DVBApp_CheckHasVideo() == TRUE)
  15443. #else
  15444. if (eServiceType != AL_RECTYPE_DVBRADIO) //zhongbaoxing added for mantis 0153467 @20110926
  15445. #endif
  15446. {
  15447. APP_GUIOBJ_DVB_Playback_ClearShowLogo();
  15448. }
  15449. APP_Audio_SetMute(g_stUserInfoData.Mute, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType); // mute audio based on user setting if audio is not scrambled
  15450. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  15451. #if 1 //for samsung & SONY TVSet Behavior
  15452. if (bFlag == TRUE)
  15453. {
  15454. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SCRAMBLED) == FALSE)
  15455. {
  15456. printf("\n#####Pop Scramble MSG Menu,F=%s,L=%d######\n",__FUNCTION__,__LINE__);
  15457. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SCRAMBLE);
  15458. }
  15459. }
  15460. #endif
  15461. i32Ret = SP_ERR_FAILURE;
  15462. break;
  15463. case MID_PLAYBK_PROG_STATE_LOCKED:
  15464. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  15465. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  15466. #ifdef PLAY_VIDEO_FOR_ALLSRV
  15467. if (DVBApp_CheckHasVideo() == TRUE)
  15468. #else
  15469. if (eServiceType != AL_RECTYPE_DVBRADIO) //zhongbaoxing added for mantis 0153467 @20110926
  15470. #endif
  15471. {
  15472. APP_GUIOBJ_DVB_Playback_ClearShowLogo();
  15473. }
  15474. APP_GUIOBJ_DVB_Playback_SetPlayState(FALSE);
  15475. if (bFlag == TRUE)
  15476. {
  15477. UINT32 u32PopMsgDialogType = POPMSG_PROMPT_NO_PROG;
  15478. APP_GUIOBJ_PopMsg_GetMsgDialogType(&u32PopMsgDialogType);
  15479. if ((DVBApp_IsPopupExist(PLAYBACK_POPUP_PWD_LOCKED) == FALSE)
  15480. #ifdef CONFIG_SUPPORT_PVR
  15481. && (u32PopMsgDialogType != POPMSG_PROMPT_INITIAL_AUTOTIMESHIFT)
  15482. && (u32PopMsgDialogType != POPMSG_PROMPT_INITIAL_REC)
  15483. && (u32PopMsgDialogType != POPMSG_PROMPT_INITIAL_TIMESHIFT)
  15484. && (u32PopMsgDialogType != POPMSG_PROMPT_INVALID_REC)
  15485. #endif
  15486. )
  15487. {
  15488. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  15489. }
  15490. }
  15491. i32Ret = SP_ERR_FAILURE;
  15492. break;
  15493. case MID_PLAYBK_PROG_STATE_TEMP_SERVICE:
  15494. if ((bFlag == TRUE) && (DVBApp_CheckServiceNotAvailable() == TRUE))
  15495. {
  15496. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TEMPSERVICE);
  15497. }
  15498. if (DVBApp_CheckServiceNotAvailable() == FALSE)
  15499. {
  15500. MID_DISP_DTVSetVideoUnmute();
  15501. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  15502. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  15503. if (g_stUserInfoData.Mute == FALSE)
  15504. {
  15505. APP_Audio_SetMute(g_stUserInfoData.Mute, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  15506. }
  15507. }
  15508. i32Ret = SP_ERR_FAILURE;
  15509. break;
  15510. case MID_PLAYBK_PROG_STATE_VIDEO_MPEG4:
  15511. if (bFlag == TRUE)
  15512. {
  15513. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_VIDEO_NOT_SUPPORT) == FALSE)
  15514. {
  15515. _DVBApp_ShowPopup(DVB_APP_POP_MSG_VIDEO_NOT_SUPPORT);
  15516. }
  15517. }
  15518. i32Ret = SP_ERR_FAILURE;
  15519. break;
  15520. case MID_PLAYBK_PROG_STATE_REPLACE:
  15521. if (DVBApp_CheckServiceNotAvailable() == FALSE)
  15522. {
  15523. #ifdef PLAY_VIDEO_FOR_ALLSRV
  15524. if (DVBApp_CheckHasVideo() == FALSE)
  15525. #else
  15526. if (eServiceType == AL_RECTYPE_DVBRADIO)
  15527. #endif
  15528. {
  15529. if (APP_GUIOBJ_DVB_Playback_GetShowLogoState() == FALSE)
  15530. {
  15531. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  15532. }
  15533. }
  15534. }
  15535. i32Ret = SP_ERR_FAILURE;
  15536. break;
  15537. case MID_PLAYBK_PROG_STATE_ONLY_AUDIO_SCRAMBLED:
  15538. #ifdef PLAY_VIDEO_FOR_ALLSRV
  15539. if ((stVideoPid.usDataPID&0x1fff) == 0x1fff)
  15540. #else
  15541. if(eServiceType == AL_RECTYPE_DVBRADIO)
  15542. #endif
  15543. {
  15544. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  15545. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  15546. if (bFlag == TRUE)
  15547. {
  15548. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL))
  15549. {
  15550. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  15551. }
  15552. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL))
  15553. {
  15554. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  15555. }
  15556. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SCRAMBLED) == FALSE)
  15557. {
  15558. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SCRAMBLE);
  15559. }
  15560. }
  15561. i32Ret = SP_ERR_FAILURE;
  15562. break;
  15563. }
  15564. case MID_PLAYBK_PROG_STATE_VIDEO_AVC:
  15565. case MID_PLAYBK_PROG_STATE_NOT_RUNNING:
  15566. default:
  15567. if (bFlag == TRUE)
  15568. {
  15569. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_PWD_LOCKED) == TRUE)
  15570. {
  15571. DVBApp_ClosePopup(PLAYBACK_POPUP_PWD_LOCKED, UI_EVENT_NULL);
  15572. }
  15573. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SCRAMBLED) == TRUE)
  15574. {
  15575. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_SCRAMBLED, UI_EVENT_NULL);
  15576. }
  15577. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_TEMPSERVICE) == TRUE)
  15578. {
  15579. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE, UI_EVENT_NULL);
  15580. }
  15581. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_TEMPSERVICE_SERVICE_NOT_RUNNING) == TRUE)
  15582. {
  15583. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE_SERVICE_NOT_RUNNING, UI_EVENT_NULL);
  15584. }
  15585. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_TEMPSERVICE_LOAD_MHEG5) == TRUE)
  15586. {
  15587. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE_LOAD_MHEG5, UI_EVENT_NULL);
  15588. }
  15589. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_VIDEO_NOT_SUPPORT) == TRUE && g_UnsupportVideo == FALSE)
  15590. {
  15591. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_VIDEO_NOT_SUPPORT, UI_EVENT_NULL);
  15592. }
  15593. }
  15594. if (DVBApp_CheckServiceNotAvailable() == TRUE)
  15595. {
  15596. #ifdef PLAY_VIDEO_FOR_ALLSRV
  15597. if (DVBApp_CheckHasVideo() == TRUE)
  15598. #else
  15599. if (eServiceType != AL_RECTYPE_DVBRADIO) //zhongbaoxing added for mantis 0153467 @20110926
  15600. #endif
  15601. {
  15602. APP_GUIOBJ_DVB_Playback_ClearShowLogo();
  15603. }
  15604. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  15605. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  15606. if (bFlag == TRUE)
  15607. {
  15608. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE) == FALSE)
  15609. {
  15610. if(APP_Get_DTVHiddenScanState() != TRUE)
  15611. {
  15612. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SERVICE_NOT_AVAILABLE);
  15613. }
  15614. }
  15615. }
  15616. i32Ret = SP_ERR_FAILURE;
  15617. }
  15618. else
  15619. {
  15620. if (bFlag == TRUE && g_UnsupportVideo == TRUE)
  15621. {
  15622. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_VIDEO_NOT_SUPPORT) == FALSE)
  15623. {
  15624. if(APP_Get_DTVHiddenScanState() != TRUE)
  15625. {
  15626. _DVBApp_ShowPopup(DVB_APP_POP_MSG_VIDEO_NOT_SUPPORT);
  15627. }
  15628. }
  15629. }
  15630. #ifdef SHOW_LOGO_RADIO
  15631. #ifdef PLAY_VIDEO_FOR_ALLSRV
  15632. if (DVBApp_CheckHasVideo() == TRUE)
  15633. #else
  15634. if (eServiceType != AL_RECTYPE_DVBRADIO) //zhongbaoxing added for mantis 0153467 @20110926
  15635. #endif
  15636. #endif
  15637. {
  15638. APP_GUIOBJ_DVB_Playback_ClearShowLogo();
  15639. }
  15640. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  15641. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  15642. u8Mute = g_stUserInfoData.Mute;
  15643. #ifndef PLAY_VIDEO_FOR_ALLSRV
  15644. if (eServiceType == AL_RECTYPE_DVBRADIO)
  15645. {
  15646. //if ((bSetUnMuteFlag == FALSE))
  15647. {
  15648. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  15649. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  15650. u8Mute = g_stUserInfoData.Mute;
  15651. #ifndef SHOW_LOGO_RADIO
  15652. #ifdef CONFIG_SUPPORT_MHEG5
  15653. /* do not mute video while MHEG5 is being displayed, because it could be playing I-frame */
  15654. if ((eServiceType == AL_RECTYPE_DVBTV)
  15655. && ((APP_DVB_Mheg5_GetBootCarouselStatus() != MHEG5_BOOT_CAROUSEL_EXISTED)
  15656. || APP_Area_SupportDtg() == FALSE || APP_DVB_Mheg5_GetMheg5DisplayStatus() == FALSE))
  15657. #endif
  15658. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  15659. #else
  15660. APP_Video_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  15661. #endif
  15662. #ifdef CONFIG_SUPPORT_PVR
  15663. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  15664. if (APP_WAKEUP_GetBootFlag() == TRUE)
  15665. {
  15666. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, APP_SOURCE_MAX);
  15667. }
  15668. else
  15669. #endif
  15670. #endif
  15671. {
  15672. APP_Audio_SetMute(u8Mute, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  15673. }
  15674. }
  15675. }
  15676. else if ((eServiceType == AL_RECTYPE_DVBTV)||(eServiceType == AL_RECTYPE_DVBDATA))
  15677. #endif
  15678. {
  15679. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL) == TRUE)
  15680. {
  15681. #ifdef PLAY_VIDEO_FOR_ALLSRV
  15682. if ((eServiceType == AL_RECTYPE_DVBTV)||(eServiceType == AL_RECTYPE_DVBDATA)
  15683. || (eServiceType == AL_RECTYPE_DVBRADIO && ((stVideoPid.usDataPID&0x1fff) != 0x1fff)))
  15684. #endif
  15685. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  15686. }
  15687. #ifdef PLAY_VIDEO_FOR_ALLSRV
  15688. if (DVBApp_CheckHasVideo() == FALSE)
  15689. {
  15690. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  15691. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  15692. u8Mute = g_stUserInfoData.Mute;
  15693. #ifndef SHOW_LOGO_RADIO
  15694. #ifdef CONFIG_SUPPORT_MHEG5
  15695. /* do not mute video while MHEG5 is being displayed, because it could be playing I-frame */
  15696. if ((eServiceType == AL_RECTYPE_DVBTV)
  15697. && ((APP_DVB_Mheg5_GetBootCarouselStatus() != MHEG5_BOOT_CAROUSEL_EXISTED)
  15698. || APP_Area_SupportDtg() == FALSE || APP_DVB_Mheg5_GetMheg5DisplayStatus() == FALSE))
  15699. #endif
  15700. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  15701. #else
  15702. APP_Video_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  15703. #endif
  15704. #ifdef CONFIG_SUPPORT_PVR
  15705. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  15706. if (APP_WAKEUP_GetBootFlag() == TRUE)
  15707. {
  15708. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, APP_SOURCE_MAX);
  15709. }
  15710. else
  15711. #endif
  15712. #endif
  15713. {
  15714. APP_Audio_SetMute(u8Mute, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  15715. }
  15716. }
  15717. else
  15718. #endif
  15719. {
  15720. /*modify by qinhe for mantis 0011456*/
  15721. if ((g_SetPQFlag == TRUE) && (g_bMidHasUnmute == TRUE))
  15722. {
  15723. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  15724. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  15725. u8Mute = g_stUserInfoData.Mute;
  15726. #ifdef CONFIG_SUPPORT_PVR
  15727. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  15728. if (APP_WAKEUP_GetBootFlag() == TRUE)
  15729. {
  15730. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, APP_SOURCE_MAX);
  15731. }
  15732. else
  15733. #endif
  15734. #endif
  15735. {
  15736. APP_Audio_SetMute(u8Mute, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  15737. }
  15738. }
  15739. APP_Video_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  15740. }
  15741. }
  15742. i32Ret = SP_SUCCESS;
  15743. }
  15744. break;
  15745. }
  15746. }
  15747. else
  15748. {
  15749. #ifdef CONFIG_SUPPORT_PVR //if playing timeshift file not to mute video
  15750. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  15751. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  15752. u8Mute = g_stUserInfoData.Mute;//for manits 151777
  15753. if (MID_TSPLParser_GetThreadState() == TRUE)
  15754. {
  15755. if ((u8Mute == FALSE) && (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  15756. && (APP_GUIOBJ_DVB_PvrFilePlay_GetLockState() == FALSE))
  15757. {
  15758. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  15759. }
  15760. return SP_ERR_FAILURE;
  15761. }
  15762. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  15763. {
  15764. if((u8Mute == FALSE) && (APP_GUIOBJ_DVB_PvrFilePlay_GetLockState() == FALSE))
  15765. {
  15766. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  15767. }
  15768. return SP_ERR_FAILURE;
  15769. }
  15770. #endif
  15771. APP_Audio_SetMute(TRUE, TRUE, APP_MUTE_MODE_NO_SIGNALE, eSourType);
  15772. #ifdef SUPPORT_DTV_SHOW_BLUESCREEN
  15773. if (g_stSetupData.BlueScreen == APP_SWITCH_ON)
  15774. {
  15775. #ifdef CONFIG_DVB_SYSTEM
  15776. APP_SCARTOUT_SetVideoMute(APP_SOURCE_DTV, DTV_TRUE, TRUE);
  15777. #endif
  15778. if (!g_bIsBlueScreen)
  15779. {
  15780. MID_DISP_DTVSetVideoMute(0,0,255);
  15781. }
  15782. }
  15783. else
  15784. #endif
  15785. {
  15786. APP_Video_SetMute(TRUE, TRUE, APP_MUTE_MODE_NO_SIGNALE, eSourType);
  15787. }
  15788. APP_GUIOBJ_DVB_Playback_ClearShowLogo();
  15789. if (bFlag == TRUE)
  15790. {
  15791. APP_GUIOBJ_DVB_Playback_ClearShowLogo();
  15792. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL))
  15793. {
  15794. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  15795. }
  15796. if (APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL)
  15797. == MID_PLAYBK_PROG_STATE_LOCKED)
  15798. {
  15799. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  15800. }
  15801. else if ((DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL) == FALSE)
  15802. #ifdef CONFIG_SUPPORT_PVR
  15803. && (APP_GUIOBJ_DVB_PvrPlayInfo_GetTunerState() == FALSE)
  15804. #endif
  15805. && (bSignalState == AL_DVB_MONITOR_VALUE_FALSE)
  15806. )
  15807. {
  15808. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_SIGNAL);
  15809. }
  15810. }
  15811. i32Ret = SP_ERR_FAILURE;
  15812. }
  15813. return i32Ret;
  15814. }
  15815. /*****************************************************************************
  15816. ** FUNCTION : DVBApp_SchedulePopup
  15817. **
  15818. ** DESCRIPTION :
  15819. ** Schedule dvb popmsg
  15820. **
  15821. ** PARAMETERS :
  15822. ** Popup - popmsg type
  15823. **
  15824. ** RETURN VALUES:
  15825. ** None
  15826. *****************************************************************************/
  15827. INT32 DVBApp_SchedulePopup(PopmsgParam_t Popup)
  15828. {
  15829. UINT32 u32CurPopup = PLAYBACK_POPUP_NONE;
  15830. UINT8 bTimeoutFlag = 0;
  15831. switch (Popup.eType)
  15832. {
  15833. case POPMSG_TYPE_CONFIRM:
  15834. u32CurPopup = Popup.extend.stConfirm.eConfirmType;
  15835. break;
  15836. case POPMSG_TYPE_PWD:
  15837. u32CurPopup = Popup.extend.stPwd.ePwdType;
  15838. break;
  15839. case POPMSG_TYPE_PROMPT:
  15840. u32CurPopup = Popup.extend.stPrompt.ePromptType;
  15841. if (Popup.extend.stPrompt.iTimeout > 0)
  15842. {
  15843. if (g_dCurPopup == u32CurPopup)
  15844. {
  15845. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  15846. APP_GLOBAL_EVENT_POPMSG_RESET_TIMEOUT,
  15847. Popup.extend.stPrompt.iTimeout);
  15848. return 0;
  15849. }
  15850. bTimeoutFlag = 1;
  15851. }
  15852. break;
  15853. default:
  15854. return 0;
  15855. }
  15856. if (u32CurPopup > PLAYBACK_POPUP_NONE)
  15857. {
  15858. if (bTimeoutFlag == 0)
  15859. {
  15860. g_u32PopupWaitingList |= 1 << (u32CurPopup - PLAYBACK_POPUP_NONE);
  15861. stPopupWaitingList[u32CurPopup-PLAYBACK_POPUP_NONE] = Popup;
  15862. }
  15863. if (u32CurPopup > g_u32OldPopup)
  15864. {
  15865. g_u32OldPopup = u32CurPopup;
  15866. if (APP_MenuMgr_Exist_Main_Menu()
  15867. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE)
  15868. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE_CEC)
  15869. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG)
  15870. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST)
  15871. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST)
  15872. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD)
  15873. #ifdef CONFIG_SUPPORT_SUBTITLE
  15874. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU)
  15875. #endif
  15876. #ifdef CONFIG_SUPPORT_TTX
  15877. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)
  15878. #endif
  15879. #ifdef CONFIG_CI_SUPPORT
  15880. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU)
  15881. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ)
  15882. #endif
  15883. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL)
  15884. #ifdef SUPPORT_LCN_CONFLICT_MENU
  15885. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_LCN_CONFLICT_MENU)
  15886. #endif
  15887. || (APP_GUIOBJ_DVB_ProgInfo_IsExtendMode() == 1)
  15888. #ifdef OSD_GAME_SUPPORT
  15889. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OSDGAME)
  15890. #endif
  15891. #ifdef SUPPORT_CONAX_CAS
  15892. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CA_PIN_CONFIM)
  15893. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CA_MESSAGE_POP)
  15894. #endif
  15895. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR)
  15896. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR)
  15897. #ifdef CONFIG_SUPPORT_3D_EN
  15898. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_3D_INFO)
  15899. #endif
  15900. )
  15901. {
  15902. g_u32OldPopup = PLAYBACK_POPUP_NONE;
  15903. g_dCurPopup = u32CurPopup;
  15904. return 0;
  15905. }
  15906. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  15907. {
  15908. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  15909. }
  15910. APP_MenuMgr_SetMsgPopup(TRUE);
  15911. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_POPMSG, (UINT32)&Popup);
  15912. g_dCurPopup = u32CurPopup;
  15913. }
  15914. }
  15915. else
  15916. {
  15917. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  15918. && (APP_GUIOBJ_DVB_ProgInfo_IsExtendMode() == 1))
  15919. {
  15920. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO);
  15921. }
  15922. #ifdef OSD_GAME_SUPPORT
  15923. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OSDGAME))
  15924. {
  15925. return 0;
  15926. }
  15927. #endif
  15928. #ifdef CONFIG_SUPPORT_INDONESIA_EWS
  15929. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EWS_AWAS)
  15930. ||SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EWS_WASPADA))
  15931. {
  15932. return 0;
  15933. }
  15934. #endif
  15935. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  15936. {
  15937. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  15938. }
  15939. APP_MenuMgr_SetMsgPopup(TRUE);
  15940. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_POPMSG, (UINT32)&Popup);
  15941. g_dCurPopup = u32CurPopup;
  15942. }
  15943. return 1;
  15944. }
  15945. /*****************************************************************************
  15946. ** FUNCTION : DVBApp_ClosePopup
  15947. **
  15948. ** DESCRIPTION :
  15949. ** Close dvb popmsg
  15950. **
  15951. ** PARAMETERS :
  15952. ** u32ClosePopup - popmsg type
  15953. ** dMessage - send message type when close popmsg
  15954. **
  15955. ** RETURN VALUES:
  15956. ** None
  15957. *****************************************************************************/
  15958. INT32 DVBApp_ClosePopup(UINT32 u32ClosePopup, UINT32 dMessage)
  15959. {
  15960. UINT32 dCheckFlag;
  15961. APP_MenuMgr_SetMsgPopup(FALSE);
  15962. if (u32ClosePopup > PLAYBACK_POPUP_NONE)
  15963. {
  15964. if (u32ClosePopup == g_u32OldPopup)
  15965. {
  15966. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  15967. {
  15968. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  15969. }
  15970. }
  15971. if (dMessage != UI_EVENT_NULL)
  15972. {
  15973. SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, dMessage, g_dCurPopup);
  15974. }
  15975. g_u32PopupWaitingList &= ~(1 << (u32ClosePopup - PLAYBACK_POPUP_NONE));
  15976. if (u32ClosePopup == g_u32OldPopup)
  15977. {
  15978. g_u32OldPopup = PLAYBACK_POPUP_NONE;
  15979. g_dCurPopup = PLAYBACK_POPUP_NONE;
  15980. for (dCheckFlag = PLAYBACK_POPUP_MAX - 1; dCheckFlag > PLAYBACK_POPUP_NONE; dCheckFlag--)
  15981. {
  15982. if (g_u32PopupWaitingList & (1 << (dCheckFlag - PLAYBACK_POPUP_NONE)))
  15983. {
  15984. DVBApp_SchedulePopup(stPopupWaitingList[dCheckFlag-PLAYBACK_POPUP_NONE]);
  15985. break;
  15986. }
  15987. }
  15988. }
  15989. }
  15990. else
  15991. {
  15992. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  15993. {
  15994. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  15995. }
  15996. if (dMessage != UI_EVENT_NULL)
  15997. {
  15998. SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, dMessage, g_dCurPopup);
  15999. }
  16000. if (g_u32OldPopup != PLAYBACK_POPUP_NONE)
  16001. {
  16002. g_u32OldPopup = PLAYBACK_POPUP_NONE;
  16003. }
  16004. g_dCurPopup = PLAYBACK_POPUP_NONE;
  16005. if(u32ClosePopup == POPMSG_PROMPT_PWD_ERROR) //use g_stPopMsgParam.stParam.dParam1 to indicate that no need to pop scheculed pop.
  16006. {
  16007. return 1;
  16008. }
  16009. for (dCheckFlag = PLAYBACK_POPUP_MAX - 1; dCheckFlag > PLAYBACK_POPUP_NONE; dCheckFlag--)
  16010. {
  16011. if (g_u32PopupWaitingList & (1 << (dCheckFlag - PLAYBACK_POPUP_NONE)))
  16012. {
  16013. DVBApp_SchedulePopup(stPopupWaitingList[dCheckFlag-PLAYBACK_POPUP_NONE]);
  16014. break;
  16015. }
  16016. }
  16017. }
  16018. return 1;
  16019. }
  16020. /*****************************************************************************
  16021. ** FUNCTION : DVBApp_ResetPopup_Channel
  16022. **
  16023. ** DESCRIPTION :
  16024. ** Reset all popup state
  16025. **
  16026. ** PARAMETERS :
  16027. ** None
  16028. **
  16029. ** RETURN VALUES:
  16030. ** None
  16031. *****************************************************************************/
  16032. INT32 DVBApp_ResetPopup_Channel(void)
  16033. {
  16034. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_CHECK_ANTENNA_INPUT, UI_EVENT_NULL);
  16035. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  16036. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE, UI_EVENT_NULL);
  16037. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE_LOAD_MHEG5, UI_EVENT_NULL);
  16038. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE_SERVICE_NOT_RUNNING, UI_EVENT_NULL);
  16039. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  16040. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_SCRAMBLED, UI_EVENT_NULL);
  16041. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE, UI_EVENT_NULL);
  16042. DVBApp_ClosePopup(PLAYBACK_POPUP_CONFIRM_REMOVE_SRV, UI_EVENT_NULL);
  16043. DVBApp_ClosePopup(PLAYBACK_POPUP_PROMPT_REMOVE_SRV, UI_EVENT_NULL);
  16044. DVBApp_ClosePopup(PLAYBACK_POPUP_PWD_LOCKED, UI_EVENT_NULL);
  16045. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_DATABASE_EMPTY, UI_EVENT_NULL);
  16046. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_VIDEO_NOT_SUPPORT, UI_EVENT_NULL);
  16047. #ifdef CONFIG_SUPPORT_MHEG5
  16048. DVBApp_ClosePopup(PLAYBACK_POPUP_CONFIRM_STOP_SUBTITLE_TO_OPEN_MHEG5, UI_EVENT_NULL);
  16049. #endif
  16050. #ifdef CONFIG_SUPPORT_SUBTITLE
  16051. //DVBApp_ClosePopup(POPMSG_PROMPT_NO_SUBTITLE, UI_EVENT_NULL);
  16052. #endif
  16053. return SP_SUCCESS;
  16054. }
  16055. /*****************************************************************************
  16056. ** FUNCTION : DVBApp_HideMsgPopupDisplay
  16057. **
  16058. ** DESCRIPTION :
  16059. ** Hide popup display
  16060. **
  16061. ** PARAMETERS :
  16062. ** None
  16063. **
  16064. ** RETURN VALUES:
  16065. ** None
  16066. *****************************************************************************/
  16067. INT32 DVBApp_HideMsgPopupDisplay(void)
  16068. {
  16069. g_u32OldPopup = PLAYBACK_POPUP_NONE;
  16070. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  16071. {
  16072. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  16073. }
  16074. return 0;
  16075. }
  16076. /*****************************************************************************
  16077. ** FUNCTION : DVBApp_IsPopupExist
  16078. **
  16079. ** DESCRIPTION :
  16080. ** Judge one pop up exist
  16081. **
  16082. ** PARAMETERS :
  16083. ** u32TargetPopup - pop up type
  16084. **
  16085. ** RETURN VALUES:
  16086. ** None
  16087. *****************************************************************************/
  16088. UINT8 DVBApp_IsPopupExist(UINT32 u32TargetPopup)
  16089. {
  16090. if (u32TargetPopup == g_u32OldPopup)
  16091. {
  16092. return TRUE;
  16093. }
  16094. else
  16095. {
  16096. if((u32TargetPopup > PLAYBACK_POPUP_NONE)
  16097. && (g_u32PopupWaitingList & (1 << (u32TargetPopup - PLAYBACK_POPUP_NONE))))
  16098. {
  16099. return TRUE;
  16100. }
  16101. else
  16102. {
  16103. return FALSE;
  16104. }
  16105. }
  16106. }
  16107. /*****************************************************************************
  16108. ** FUNCTION : DVBApp_RestoreOnStandby
  16109. **
  16110. ** DESCRIPTION :
  16111. ** dvb restore when standby
  16112. **
  16113. ** PARAMETERS :
  16114. ** None
  16115. **
  16116. ** RETURN VALUES:
  16117. ** None
  16118. *****************************************************************************/
  16119. void DVBApp_RestoreOnStandby(void)
  16120. {
  16121. extern Boolean g_bScanRunning;
  16122. #ifdef SUPPORT_LCN
  16123. DBLCNConfInfo_t *pLcnConf = AL_LCN_GetLCNConfChannel();
  16124. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  16125. #endif
  16126. if (g_bScanRunning)
  16127. {
  16128. MID_ScanStop();
  16129. #ifdef SUPPORT_LCN
  16130. /* force process LCN if added service by PSI Monitor */
  16131. #ifdef SUPPORT_DVBS_LCN
  16132. if (eNetType == AL_DBTYPE_DVB_T || eNetType == AL_DBTYPE_DVB_C|| eNetType == AL_DBTYPE_DVB_S)
  16133. #else
  16134. if (eNetType == AL_DBTYPE_DVB_T || eNetType == AL_DBTYPE_DVB_C)
  16135. #endif
  16136. {
  16137. LCN_PreJudgeLCN();
  16138. LCN_QueryLCNConflict(pLcnConf);
  16139. dvb_printf(" $$$$$$$$$$$$$$$$$$$ %s %d pLcnConf->ConfCount = %d \n",
  16140. __FUNCTION__, __LINE__, pLcnConf->ConfCount);
  16141. if (pLcnConf->ConfCount > 0)
  16142. {
  16143. LCN_AutoAssignConflictLCN();
  16144. LCN_FreeLCNConflict();
  16145. LCN_FreeTRNDDictionary();
  16146. }
  16147. }
  16148. #endif
  16149. AL_DB_Sync(APP_DVB_Playback_GetCurrentNetType(), al_false);
  16150. }
  16151. }
  16152. /*****************************************************************************
  16153. ** FUNCTION : DVBApp_DataApplicationSwitch
  16154. **
  16155. ** DESCRIPTION :
  16156. ** OSD layer 2 switch
  16157. **
  16158. ** PARAMETERS :
  16159. ** u32flag - switch flag
  16160. **
  16161. ** RETURN VALUES:
  16162. ** None
  16163. *****************************************************************************/
  16164. INT32 DVBApp_DataApplicationSwitch(UINT32 u32flag)
  16165. {
  16166. UINT32 u32CurrentState = 0;
  16167. if (_DVBApp_DataApplicationStatus(OSD2CTRLMDL_SUB)&DATA_APP_EXECUTABLE)
  16168. {
  16169. u32CurrentState |= OSD2CTRLMDL_SUB;
  16170. }
  16171. if (APP_Area_SupportDtg())//zhongbaoxing added for mantis 0168195 @20120224
  16172. {
  16173. if (_DVBApp_DataApplicationStatus(OSD2CTRLMDL_MH5)&DATA_APP_EXECUTABLE)
  16174. {
  16175. #ifdef CONFIG_SUPPORT_PVR
  16176. if (MID_RecorderState() == MID_REC_STATUS_STOP)
  16177. #endif
  16178. u32CurrentState |= OSD2CTRLMDL_MH5;
  16179. }
  16180. }
  16181. if (u32flag & OSD2CTRLMDL_DISABLE)
  16182. {
  16183. u32CurrentState = u32flag;
  16184. }
  16185. else
  16186. {
  16187. if (u32flag & OSD2CTRLMDL_FORCE)
  16188. {
  16189. u32CurrentState = (u32CurrentState & u32flag) > 0 ? (u32CurrentState & u32flag) : u32CurrentState;
  16190. }
  16191. else
  16192. {
  16193. u32CurrentState = (u32CurrentState & u32flag);
  16194. }
  16195. }
  16196. #if defined(CONFIG_SUPPORT_MHEG5_HD) && defined(CONFIG_SUPPORT_MHEG5_ICS)
  16197. // The receiver must support the simultaneous presentation of MHEG-5 applications and DVB subtitles (D-Book 16.5.1.1)
  16198. #else
  16199. if ((u32flag & OSD2CTRLMDL_SUB) && (u32CurrentState & OSD2CTRLMDL_MH5) && (u32flag & OSD2CTRLMDL_ENABLE))
  16200. {
  16201. u32CurrentState = ON_DATA_APPLICATION_DECISION(u32CurrentState);
  16202. }
  16203. #endif
  16204. u32CurrentState |= (u32flag & (OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_DISABLE));
  16205. return _DVBApp_DataApplicationGuiObjectRefresh(u32CurrentState);
  16206. }
  16207. /*****************************************************************************
  16208. ** FUNCTION : DVBApp_GetScrambleStatus
  16209. **
  16210. ** DESCRIPTION :
  16211. ** clear flag status when change source
  16212. **
  16213. ** PARAMETERS :
  16214. ** None
  16215. **
  16216. ** RETURN VALUES:
  16217. ** None
  16218. *****************************************************************************/
  16219. Boolean DVBApp_GetScrambleStatus(void)
  16220. {
  16221. return g_bScrambleFlag;
  16222. }
  16223. #ifdef CONFIG_SUPPORT_OTA_UPGRADE
  16224. /*****************************************************************************
  16225. ** FUNCTION : DVBApp_GetOTAStatus
  16226. **
  16227. ** DESCRIPTION :
  16228. ** clear flag status when cancel or finish OTA upgrade
  16229. **
  16230. ** PARAMETERS :
  16231. ** None
  16232. **
  16233. ** RETURN VALUES:
  16234. ** None
  16235. *****************************************************************************/
  16236. Boolean DVBApp_GetOTAStatus(void)
  16237. {
  16238. return g_bOTAFlag;
  16239. }
  16240. /*****************************************************************************
  16241. ** FUNCTION : DVBApp_SetOTAStatus
  16242. **
  16243. ** DESCRIPTION :
  16244. ** set flag status
  16245. **
  16246. ** PARAMETERS :
  16247. ** None
  16248. **
  16249. ** RETURN VALUES:
  16250. ** None
  16251. *****************************************************************************/
  16252. void DVBApp_SetOTAStatus(Boolean b_flag)
  16253. {
  16254. g_bOTAFlag = b_flag;
  16255. }
  16256. #endif
  16257. /*****************************************************************************
  16258. ** FUNCTION : DVBApp_ClearStatus
  16259. **
  16260. ** DESCRIPTION :
  16261. ** clear flag status when change source
  16262. **
  16263. ** PARAMETERS :
  16264. ** None
  16265. **
  16266. ** RETURN VALUES:
  16267. ** None
  16268. *****************************************************************************/
  16269. void DVBApp_ClearStatus(void)
  16270. {
  16271. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  16272. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  16273. bSetUnMuteFlag = FALSE;
  16274. if (eServiceType == AL_RECTYPE_DVBTV)
  16275. {
  16276. g_bMidHasUnmute = FALSE;
  16277. }
  16278. else if (eServiceType == AL_RECTYPE_DVBRADIO)
  16279. {
  16280. g_bMidHasUnmute = TRUE;
  16281. }
  16282. #ifdef SUPPORT_DTV_SHOW_BLUESCREEN
  16283. g_bIsBlueScreen = FALSE;
  16284. #endif
  16285. g_SetPQFlag = FALSE;
  16286. g_bScrambleFlag = PROG_STATUS_SCRAMBLE_UNKNOW;
  16287. g_bAudHasUpdate = FALSE;
  16288. g_bForceProcessEventCbk = TRUE;
  16289. g_bNoSteamData = FALSE;
  16290. g_UnsupportVideo = FALSE;
  16291. g_bTempSerFlag = FALSE;
  16292. #ifdef CONFIG_SUPPORT_OTA_UPGRADE
  16293. DVBApp_SetOTAStatus(FALSE);
  16294. #endif
  16295. #ifdef CONFIG_SUPPORT_EWS
  16296. if (g_NonClearEWS == FALSE)
  16297. {
  16298. DVBApp_ResetEWS();
  16299. }
  16300. #endif
  16301. }
  16302. /*****************************************************************************
  16303. ** FUNCTION : DVBApp_NoSignal_TimerReset
  16304. **
  16305. ** DESCRIPTION :
  16306. **
  16307. **
  16308. ** PARAMETERS :
  16309. **
  16310. ** RETURN VALUES:
  16311. **
  16312. *****************************************************************************/
  16313. void DVBApp_NoSignal_TimerReset(void)
  16314. {
  16315. g_u32NoSignalTimer = 0;
  16316. }
  16317. void DVBApp_NoSignal_StandbyTimerReset(void)
  16318. {
  16319. g_u32NoSignalSleepTimer = 0;
  16320. }
  16321. void DVBApp_CheckSrvType(al_uint8 SdtSrvType, al_uint8 SrvType, al_uint8 VideoCount, al_uint8 AudioCount, AL_DB_ERecordType_t *RetSrvType)
  16322. {
  16323. if (RetSrvType == al_null)
  16324. {
  16325. return;
  16326. }
  16327. #if defined (CONFIG_SUPPORT_MHEG5)
  16328. al_int8 CurArea = 0;
  16329. #endif
  16330. #ifdef NIT_SCAN_SUPPORT
  16331. if (MID_ScanGetNitScanFlag() == TRUE)
  16332. {
  16333. VideoCount = 0xff;
  16334. AudioCount = 0xff;
  16335. }
  16336. #endif
  16337. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  16338. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  16339. #if defined (CONFIG_SUPPORT_MHEG5)
  16340. CurArea = g_stChannelData.Country;
  16341. #endif
  16342. *RetSrvType = AL_RECTYPE_DVBTV;
  16343. if (SrvType != 0xff)
  16344. {
  16345. if (SdtSrvType == SERVICE_DIGITAL_RADIO
  16346. ||SdtSrvType == SERVICE_ADVANCED_DIGITAL_RADIO)
  16347. {
  16348. *RetSrvType = AL_RECTYPE_DVBRADIO;
  16349. }
  16350. else if ((SdtSrvType != SERVICE_DIGITAL_TELEVISION
  16351. && SdtSrvType != SERVICE_MPEG2_HD_DIGITAL_TELEVISION
  16352. && SdtSrvType != SERVICE_ADVANCED_SD_DIGITAL_TV
  16353. && SdtSrvType != SERVICE_ADVANCED_HD_DIGITAL_TV)
  16354. && ((SrvType == SERVICE_DIGITAL_RADIO)
  16355. || (SrvType == SERVICE_ADVANCED_DIGITAL_RADIO)))
  16356. {
  16357. *RetSrvType = AL_RECTYPE_DVBRADIO;
  16358. }
  16359. #ifdef CONFIG_DVB_SYSTEM
  16360. #if defined (CONFIG_SUPPORT_MHEG5)
  16361. if ((CurArea == AREA_ENGLAND)||(CurArea == AREA_IRELAND))
  16362. {
  16363. if (SdtSrvType == SERVICE_DATABROADCAST)
  16364. {
  16365. *RetSrvType = AL_RECTYPE_DVBDATA;
  16366. }
  16367. }
  16368. #endif
  16369. if (APP_Area_SupportNorDig())
  16370. {
  16371. if ((SdtSrvType == SERVICE_DATABROADCAST)
  16372. || (SdtSrvType == SERVICE_TELETEXT)
  16373. || (SdtSrvType == SERVICE_DVB_MHP))
  16374. {
  16375. *RetSrvType = AL_RECTYPE_DVBDATA;
  16376. }
  16377. }
  16378. #endif
  16379. }
  16380. else
  16381. {
  16382. if (SdtSrvType == SERVICE_DIGITAL_RADIO
  16383. ||SdtSrvType == SERVICE_ADVANCED_DIGITAL_RADIO)
  16384. {
  16385. *RetSrvType = AL_RECTYPE_DVBRADIO;
  16386. }
  16387. #ifdef CONFIG_DVB_SYSTEM
  16388. #if defined (CONFIG_SUPPORT_MHEG5)
  16389. if ((CurArea == AREA_ENGLAND)||(CurArea == AREA_IRELAND))
  16390. {
  16391. if (SdtSrvType == SERVICE_DATABROADCAST)
  16392. {
  16393. *RetSrvType = AL_RECTYPE_DVBDATA;
  16394. }
  16395. }
  16396. #endif
  16397. if (APP_Area_SupportNorDig())
  16398. {
  16399. if ((SdtSrvType == SERVICE_DATABROADCAST)
  16400. || (SdtSrvType == SERVICE_TELETEXT)
  16401. || (SdtSrvType == SERVICE_DVB_MHP))
  16402. {
  16403. *RetSrvType = AL_RECTYPE_DVBDATA;
  16404. }
  16405. }
  16406. #endif
  16407. }
  16408. if ((VideoCount != 0xff) && (AudioCount != 0xff)
  16409. && !APP_Area_SupportAntennaReadyHD() && !APP_Area_SupportRiks())
  16410. {
  16411. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  16412. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  16413. if ((VideoCount == 0) && (AudioCount > 0)
  16414. && *RetSrvType == AL_RECTYPE_DVBTV)
  16415. {
  16416. *RetSrvType = AL_RECTYPE_DVBRADIO;
  16417. }
  16418. //mantis 186965 by changhong, for mh5 service
  16419. if((VideoCount > 0) && (*RetSrvType == AL_RECTYPE_DVBDATA)
  16420. && (g_stChannelData.Country != AREA_NORWAY))
  16421. {
  16422. *RetSrvType = AL_RECTYPE_DVBTV;
  16423. }
  16424. }
  16425. }
  16426. void DVBApp_CheckNotVisibleBySrvType(al_uint8 SdtSrvType, al_uint8 bTempSrv, al_uint8 *bNotVisible, al_uint8 *bNotNeedSave)
  16427. {
  16428. AL_DB_EDBType_t eNetType = AL_DBTYPE_DVB_T;
  16429. if (bNotVisible == al_null || bNotNeedSave ==al_null)
  16430. {
  16431. return;
  16432. }
  16433. eNetType = APP_DVB_Playback_GetCurrentNetType();
  16434. if (eNetType == AL_DBTYPE_DVB_S)
  16435. {
  16436. *bNotVisible = FALSE;
  16437. *bNotNeedSave = FALSE;
  16438. return;
  16439. }
  16440. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  16441. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  16442. #if defined(CONFIG_DVB_SYSTEM) || defined(CONFIG_AUS_DVB_SYSTEM)
  16443. #if 0
  16444. if ((al_false == AL_Event_GetEDTGSupport())
  16445. && (al_false == APP_Area_SupportNorDig())
  16446. && (pstServiceInfo->usPcrPid == 0x1FFF))
  16447. {
  16448. pstServiceInfo->ucServiceFlag |= SERVICE_NON_VISIBLE;
  16449. }
  16450. #endif
  16451. if (SdtSrvType != SERVICE_NO_SDT)
  16452. {
  16453. if(SdtSrvType != SERVICE_DIGITAL_TELEVISION
  16454. && SdtSrvType != SERVICE_DIGITAL_RADIO
  16455. && SdtSrvType != SERVICE_ADVANCED_DIGITAL_RADIO
  16456. && SdtSrvType != SERVICE_ADVANCED_SD_DIGITAL_TV
  16457. && SdtSrvType != SERVICE_ADVANCED_HD_DIGITAL_TV
  16458. && SdtSrvType != SERVICE_PAL_CODED_SIGNAL
  16459. && SdtSrvType != SERVICE_MPEG2_HD_DIGITAL_TELEVISION
  16460. && SdtSrvType != SERVICE_HEVC)
  16461. {
  16462. #ifdef CONFIG_DVB_SYSTEM
  16463. if((g_stChannelData.Country == AREA_ENGLAND)
  16464. ||(g_stChannelData.Country == AREA_IRELAND))
  16465. {
  16466. if (SdtSrvType != SERVICE_DATABROADCAST)
  16467. {
  16468. *bNotNeedSave = al_true;
  16469. }
  16470. }
  16471. else if(g_stChannelData.Country == AREA_ITALY)
  16472. {
  16473. if (SdtSrvType != SERVICE_TELETEXT
  16474. && SdtSrvType != SERVICE_NOT_IN_SDT)
  16475. {
  16476. *bNotVisible = TRUE;
  16477. }
  16478. }
  16479. else if (APP_Area_SupportNorDig())
  16480. {
  16481. if ((g_stChannelData.Country == AREA_NORWAY)
  16482. ||((SdtSrvType != SERVICE_DATABROADCAST)
  16483. && (SdtSrvType != SERVICE_TELETEXT)
  16484. && (SdtSrvType != SERVICE_DVB_MHP)))
  16485. {
  16486. *bNotVisible = TRUE;
  16487. }
  16488. }
  16489. else
  16490. #endif
  16491. {
  16492. if ((SdtSrvType != SERVICE_NOT_IN_SDT)
  16493. && bTempSrv)
  16494. {
  16495. *bNotVisible = TRUE;
  16496. }
  16497. else if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_C
  16498. && g_stChannelData.Country == AREA_NETHERLANDS
  16499. #ifdef CONFIG_DVB_SYSTEM_DVBC_SUPPORT
  16500. && g_stChannelData.Operator==AL_DVBC_OPERATOR_ZIGGO
  16501. #endif
  16502. )
  16503. {
  16504. *bNotNeedSave = al_true;
  16505. }
  16506. }
  16507. }
  16508. }
  16509. #endif
  16510. /* mantis 0141374 */
  16511. if ((SdtSrvType == SERVICE_NO_SDT)
  16512. && bTempSrv)
  16513. {
  16514. *bNotVisible = TRUE;
  16515. }
  16516. }
  16517. void DVBApp_ResetDvbSpecRule(UINT8 u8Area)
  16518. {
  16519. #ifdef SUPPORT_LCN
  16520. UINT16 LcnRule = 0;
  16521. #endif
  16522. #if defined(SUPPORT_LCN)||defined(SUPPOTR_NOT_ADD_SERVICE)
  16523. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  16524. #endif
  16525. #ifdef SUPPORT_LCN
  16526. APP_Area_GetAreaInfoLcnRule(eNetType, u8Area, &LcnRule);
  16527. #endif
  16528. Dvb_SetFreqEnlargeEnable(0);
  16529. #ifdef SUPPORT_LCN
  16530. LCN_SetLCNRule(LcnRule);
  16531. if (eNetType == AL_DBTYPE_DVB_S)
  16532. LCN_SetExtLCNRule(DB_DVB_ASSIGN_NONELCN_FOLLOW_MAX, DB_DVB_ASSIGN_NONELCN_SEPARATE);
  16533. else
  16534. LCN_SetExtLCNRule(DB_DVB_ASSIGN_NONELCN_FOLLOW_SPEC, DB_DVB_ASSIGN_NONELCN_SEPARATE);
  16535. #endif
  16536. AL_Event_SetDTGSupport(al_false);
  16537. #ifdef TIMEZONE_BY_COUNTRY
  16538. AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_EBOOK, AL_PSIMONITOR_USER_TOTOFFSET, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType);
  16539. #else
  16540. AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_EBOOK, 0, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType);
  16541. #endif
  16542. AL_CS_DtvSetSpecialSpec(AL_DB_DVB_PRISPEC_EBOOK);
  16543. MID_ScanSetCountryCode(APP_Area_GetCountryCode(u8Area));
  16544. switch (u8Area)
  16545. {
  16546. #ifdef CONFIG_DVB_SYSTEM
  16547. case AREA_ENGLAND:
  16548. #ifdef TIMEZONE_BY_COUNTRY
  16549. AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_DTG, AL_PSIMONITOR_USER_TOTOFFSET, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType);
  16550. #else
  16551. AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_DTG, 0, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType);
  16552. #endif
  16553. AL_CS_DtvSetSpecialSpec(AL_DB_DVB_PRISPEC_DBOOK);
  16554. AL_Event_SetDTGSupport(al_true);
  16555. break;
  16556. case AREA_ITALY:
  16557. AL_CS_DtvSetSpecialSpec(AL_DB_DVB_PRISPEC_ZBOOK);
  16558. #ifdef TIMEZONE_BY_COUNTRY
  16559. AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_ZBOOK, AL_PSIMONITOR_USER_TOTOFFSET, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType);
  16560. #else
  16561. AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_ZBOOK, 0, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType);
  16562. #endif
  16563. break;
  16564. #ifdef SCAN_FREQ_OFFSET_RANGE_ENLARGE
  16565. case AREA_FRANCE:
  16566. Dvb_SetFreqEnlargeEnable(1);
  16567. break;
  16568. #endif
  16569. case AREA_SPAIN:
  16570. #ifdef SPECIAL_CHNORDER_FOR_SPAIN
  16571. AL_CS_DtvSetSpecialSpec(AL_DB_DVB_PRISPEC_OCA);//Engel OCA need to save all Dupli service
  16572. #endif
  16573. break;
  16574. case AREA_HUNGARY:
  16575. break;
  16576. case AREA_NETHERLANDS:
  16577. break;
  16578. case AREA_FINLAND:
  16579. case AREA_SWEDEN:
  16580. case AREA_DENMARK:
  16581. case AREA_NORWAY:
  16582. //case AREA_GERMANY:
  16583. case AREA_IRELAND:
  16584. #ifdef TIMEZONE_BY_COUNTRY
  16585. AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_NORDIG, AL_PSIMONITOR_USER_TOTOFFSET, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType);
  16586. #else
  16587. AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_NORDIG, 0, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType);
  16588. #endif
  16589. AL_CS_DtvSetSpecialSpec(AL_DB_DVB_PRISPEC_NORDIG);
  16590. if(u8Area == AREA_IRELAND)
  16591. {
  16592. AL_Event_SetDTGSupport(al_true);
  16593. }
  16594. break;
  16595. case AREA_MALAYSIA:
  16596. LCN_SetExtLCNRule( DB_DVB_ASSIGN_NONELCN_FROM_800, DB_DVB_ASSIGN_NONELCN_COMBINE );
  16597. AL_PSI_Monitor_SetupConf( AL_PSIMON_SPECIAL_SPEC_NORDIG, AL_PSIMONITOR_USER_TOTOFFSET, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType );
  16598. AL_CS_DtvSetSpecialSpec( AL_DB_DVB_PRISPEC_NORDIG);
  16599. break;
  16600. #ifdef SUPPORT_GHANA_LCN
  16601. case AREA_GHANA:
  16602. #ifdef SUPPORT_LCN
  16603. LCN_SetExtLCNRule( DB_DVB_ASSIGN_NONELCN_FOLLOW_SPEC, DB_DVB_ASSIGN_NONELCN_COMBINE );
  16604. #endif
  16605. AL_PSI_Monitor_SetupConf( AL_PSIMON_SPECIAL_SPEC_NORDIG, AL_PSIMONITOR_USER_TOTOFFSET, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType );
  16606. AL_CS_DtvSetSpecialSpec( AL_DB_DVB_PRISPEC_NORDIG );
  16607. break;
  16608. #endif
  16609. #ifdef SUPPORT_THAILAND_EVORA
  16610. case AREA_THAILAND:
  16611. LCN_SetExtLCNRule( DB_DVB_ASSIGN_NONELCN_FROM_800, DB_DVB_ASSIGN_NONELCN_SEPARATE );
  16612. AL_PSI_Monitor_SetupConf( AL_PSIMON_SPECIAL_SPEC_NORDIG, AL_PSIMONITOR_USER_TOTOFFSET, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType );
  16613. AL_CS_DtvSetSpecialSpec( AL_DB_DVB_PRISPEC_NORDIG );
  16614. break;
  16615. #endif
  16616. case AREA_VIETNAM:
  16617. LCN_SetExtLCNRule(DB_DVB_ASSIGN_NONELCN_FOLLOW_SPEC, DB_DVB_ASSIGN_NONELCN_COMBINE);
  16618. AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_DEMO_DEFAULT, AL_PSIMONITOR_USER_TOTOFFSET, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType);
  16619. break;
  16620. #endif
  16621. #ifdef CONFIG_AUS_DVB_SYSTEM
  16622. case AREA_SINGAPORE:
  16623. LCN_SetExtLCNRule(DB_DVB_ASSIGN_NONELCN_FROM_800, DB_DVB_ASSIGN_NONELCN_COMBINE);
  16624. AL_PSI_Monitor_SetupConf( AL_PSIMON_SPECIAL_SPEC_NORDIG, AL_PSIMONITOR_USER_TOTOFFSET, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType );
  16625. AL_CS_DtvSetSpecialSpec( AL_DB_DVB_PRISPEC_NORDIG );
  16626. break;
  16627. case AREA_AUSTRALIA:
  16628. case AREA_NEW_ZEALAND:
  16629. case AREA_AUS_OTHER:
  16630. #ifdef TIMEZONE_BY_COUNTRY
  16631. AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_DEMO_DEFAULT, AL_PSIMONITOR_USER_TOTOFFSET, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType);
  16632. #else
  16633. AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_DEMO_DEFAULT, 0, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType);
  16634. #endif
  16635. break;
  16636. #endif
  16637. default:
  16638. #ifdef TIMEZONE_BY_COUNTRY
  16639. AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_DEMO_DEFAULT, AL_PSIMONITOR_USER_TOTOFFSET, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType);
  16640. #else
  16641. AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_DEMO_DEFAULT, 0, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType);
  16642. #endif
  16643. break;
  16644. }
  16645. #ifdef CONFIG_DVB_SYSTEM_DVBC_SUPPORT
  16646. if(eNetType == AL_DBTYPE_DVB_C)
  16647. {
  16648. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0, sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  16649. if (g_stChannelData.Operator == AL_DVBC_OPERATOR_UNITY_MEDIA
  16650. || g_stChannelData.Operator == AL_DVBC_OPERATOR_KBW
  16651. || g_stChannelData.Operator == AL_DVBC_OPERATOR_YOU_SEE)
  16652. {
  16653. #ifdef TIMEZONE_BY_COUNTRY
  16654. AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_NORDIG, AL_PSIMONITOR_USER_TOTOFFSET, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType);
  16655. #else
  16656. AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_NORDIG, 0, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType);
  16657. #endif
  16658. AL_CS_DtvSetSpecialSpec(AL_DB_DVB_PRISPEC_NORDIG);
  16659. }
  16660. }
  16661. #endif
  16662. #ifdef SUPPOTR_NOT_ADD_SERVICE
  16663. if(eNetType == AL_DBTYPE_DVB_S)
  16664. {
  16665. AL_PSI_Monitor_NotAddService();
  16666. }
  16667. #endif
  16668. if (u8Area >= MAX_AREA)
  16669. {
  16670. u8Area = 0;
  16671. }
  16672. if (APP_Area_SupportDtg())
  16673. {
  16674. AL_Event_SetDTGSupport(al_true);
  16675. }
  16676. AL_Event_SetCountryCode(APP_Area_GetCountryCode(u8Area));
  16677. APP_GuiMgr_Set_Default_Codepage(u8Area);
  16678. }
  16679. Boolean DVBApp_GetForceProcessEventState(void)
  16680. {
  16681. return g_bForceProcessEventCbk;
  16682. }
  16683. /*****************************************************************************
  16684. ** FUNCTION : DVBApp_fw_callback
  16685. **
  16686. ** DESCRIPTION :
  16687. **
  16688. **
  16689. ** PARAMETERS :
  16690. ** None
  16691. **
  16692. ** RETURN VALUES:
  16693. ** None
  16694. *****************************************************************************/
  16695. INT32 DVBApp_fw_callback(AFW_event_t event, void *param)
  16696. {
  16697. UINT32 message = 0xffffffff;
  16698. UINT32 dParam = 0;
  16699. UINT32 Index = TOTAL_SYS_APP_SIZE;
  16700. if (MAIN_APP_SUCCESS != MAINAPP_GetActiveSystemAppIndex(&Index))
  16701. {
  16702. dvb_printf("[%s: %d][Error] get active system app fail\n", __FUNCTION__, __LINE__);
  16703. return SP_ERR_FAILURE;
  16704. }
  16705. dvb_printf(" Received event: %d from AFW module callback.\n\n",event);
  16706. if (Index == SYS_APP_DVB)
  16707. {
  16708. switch (event)
  16709. {
  16710. #ifdef CONFIG_SUPPORT_INDONESIA_EWS
  16711. case FW_INDONESIA_EWS_UPDATE:
  16712. case FW_INDONESIA_EWS_STOP:
  16713. message = event|PASS_TO_SYSAPP;
  16714. break;
  16715. #endif
  16716. case FW_EPG_NOWNEXT_UPDATE_EVENT:
  16717. if(g_bForceProcessEventCbk)
  16718. {
  16719. dParam = *(UINT32 *)param;
  16720. message = event|PASS_TO_SYSAPP;
  16721. }
  16722. else
  16723. {
  16724. #if 0
  16725. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG) &&
  16726. !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPGEXTEND) &&
  16727. !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO) )
  16728. {
  16729. return SP_ERR_FAILURE;
  16730. }
  16731. #endif
  16732. message = event;
  16733. }
  16734. break;
  16735. case FW_EPG_SCHEDULE_UPDATE_EVENT:
  16736. #if 0
  16737. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG) &&
  16738. !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPGEXTEND) &&
  16739. !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO) )
  16740. {
  16741. return SP_ERR_FAILURE;
  16742. }
  16743. #endif
  16744. message = event;
  16745. break;
  16746. case FW_EPG_PREF_SERVICE_NAME_UPDATE_EVENT:
  16747. message = FW_MONITOR_UPDATE_SERVICE;
  16748. break;
  16749. case FW_DATASAVING_DVBDB_STORE_START_EVENT:
  16750. case FW_DATASAVING_ATVDB_STORE_START_EVENT:
  16751. case FW_DATASAVING_DVBDB_STORE_END_EVENT:
  16752. case FW_DATASAVING_ATVDB_STORE_END_EVENT:
  16753. message = event;
  16754. break;
  16755. #ifdef CONFIG_SUPPORT_TTX
  16756. case FW_TT_NO_DATA:
  16757. message = event|PASS_TO_SYSAPP;
  16758. break;
  16759. #endif
  16760. #ifdef CONFIG_SUPPORT_PVR
  16761. case FW_SCHEDULER_EVENT:
  16762. {
  16763. dvb_printf("event is coming,");
  16764. message = APP_DVB_GLOBAL_EVENT_PVRSCH |PASS_TO_SYSAPP;
  16765. dvb_printf("handle = 0x%x\n", ((AL_PR_details_t *)param)->rem_details.handle);
  16766. memcpy(&g_stDetails, param, sizeof(AL_PR_details_t));
  16767. dParam = (UINT32)&g_stDetails;
  16768. free(param);
  16769. param = NULL;
  16770. }
  16771. break;
  16772. case FW_SCHEDULER_MSG:
  16773. dvb_printf("first warning: event will come in 10 sec\n");
  16774. dParam = *(UINT32 *)param;
  16775. message = APP_GLOBAL_EVENT_PVR_REMINDER|PASS_TO_SYSAPP;
  16776. break;
  16777. case FW_SCHEDULER_EXPIRE:
  16778. dvb_printf("warning: event duration is over #############\n");
  16779. message = APP_DVB_GLOBAL_EVENT_PVR_EXPIRE|PASS_TO_SYSAPP;
  16780. dParam =*(UINT32 *)param;
  16781. break;
  16782. #endif
  16783. case FW_MONITOR_TUNER_LOCKED:
  16784. case FW_MONITOR_TUNER_UNLOCKED:
  16785. #ifdef CONFIG_TESTAUTOREBOOT
  16786. {
  16787. FW_mode_t FW_Module = FW_NORMAL_VIEW_MODE;
  16788. AL_FW_GetFWModule(&FW_Module);
  16789. /*don't enable autoreboot while searching channel and update*/
  16790. if (FW_Module != FW_CHAN_SRCH_MODE && FW_Module != FW_UPGRADE_MODE)
  16791. {
  16792. if (event == FW_MONITOR_TUNER_UNLOCKED)
  16793. {
  16794. #ifdef CONFIG_AUTOREBOOT_NO_SIGNAL
  16795. ir_autoreboot_enable();
  16796. #else
  16797. ir_autoreboot_disable();
  16798. #endif
  16799. }
  16800. if (event == FW_MONITOR_TUNER_LOCKED)
  16801. {
  16802. #ifdef CONFIG_AUTOREBOOT_NO_SIGNAL
  16803. ir_autoreboot_disable();
  16804. #else
  16805. ir_autoreboot_enable();
  16806. #endif
  16807. }
  16808. }
  16809. }
  16810. #endif
  16811. case FW_MONITOR_STREAM_NO_DATA:
  16812. case FW_MONITOR_STREAM_INVALID_DATA:
  16813. case FW_MONITOR_STREAM_UNSUPPORT_DATA:
  16814. case FW_MONITOR_STREAM_HAS_DATA:
  16815. case FW_MONITOR_SERVICE_VIDEO_AUDIO_SCRAMBLE:
  16816. case FW_MONITOR_SERVICE_ONLY_VIDEO_SCRAMBLE:
  16817. case FW_MONITOR_SERVICE_ONLY_AUDIO_SCRAMBLE:
  16818. case FW_MONITOR_SERVICE_NO_SCRAMBLE:
  16819. case FW_MONITOR_PARENTAL_LOCKED:
  16820. case FW_MONITOR_PARENTAL_UNLOCKED:
  16821. case FW_MONITOR_SERVICE_MOVE:
  16822. case FW_MONITOR_AUDIO_UPDATE:
  16823. case FW_MONITOR_SUBTITLE_UPDATE:
  16824. case FW_MONITOR_TELETEXT_UPDATE:
  16825. case FW_MONITOR_ADD_SERVICE:
  16826. case FW_MONITOR_UPDATE_SERLCN:
  16827. case FW_MONITOR_REMOVE_SERVICE:
  16828. case FW_MONITOR_OTHERTP_SERVICE_FOUND:
  16829. case FW_MONITOR_REPLACE_SERVICE:
  16830. case FW_MONITOR_REPLACE_SIMULCASE_SERVICE:
  16831. case FW_MONITOR_TS_CHANGED:
  16832. case FW_MONITOR_NEW_TSID:
  16833. case FW_MONITOR_TIME_UPDATE:
  16834. case FW_MONITOR_FIND_NEW_TPLIST:
  16835. #ifdef SUPPORT_NETWORK_UPDATE_RESCAN
  16836. case FW_MONITOR_UPDATE_NWK_STATIC:
  16837. #endif
  16838. case FM_DTV_AUDIO_STARTED:
  16839. case FM_DTV_AUDIO_SAMPLE_STOPPED:
  16840. case FM_DTV_AUDIO_STOPPED:
  16841. #ifdef AC_ON_AUTO_GET_TIME
  16842. if ((g_fBackgroundGetTime == TRUE)
  16843. && (event == FW_MONITOR_TIME_UPDATE))
  16844. {
  16845. APP_WAKEUP_SetBootFlag(FALSE);
  16846. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF);
  16847. }
  16848. #endif
  16849. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  16850. if (event == FW_MONITOR_TIME_UPDATE)
  16851. {
  16852. APP_TimeUpdateSetFlag(TRUE);
  16853. }
  16854. #endif
  16855. message = event|PASS_TO_SYSAPP;
  16856. dParam = *(al_uint32 *)param;
  16857. break;
  16858. case FW_MONITOR_UPDATE_SERVICE:
  16859. message = event;
  16860. break;
  16861. /* remove by qinhe on 2014/02/12 for mantis 18485, unmute need vip notify app */
  16862. /*case FW_MONITOR_PMT_UPDATE:
  16863. message= APP_DVB_GLOBAL_EVENT_SET_UNMUTE|PASS_TO_SYSAPP;
  16864. dParam = *(al_uint32 *)param;
  16865. break;*/
  16866. case FW_MONITOR_SERTYPE_CHANGED:
  16867. message = event|PASS_TO_SYSAPP;
  16868. dParam = *(al_uint32 *)param;
  16869. break;
  16870. #ifdef CONFIG_SUPPORT_PVR
  16871. case FW_MONITOR_REMINDER_EXPIRE:
  16872. {
  16873. al_uint32 TimeInSec = 0;
  16874. AL_Time_t time;
  16875. memset(&time, 0, sizeof(time));
  16876. AL_Time_MjdToYmd(AL_Time_GetRawMjd(),&time.Year, &time.Month, &time.Day);
  16877. AL_Time_GetRawTime(&time.Hour, &time.Min, &time.Sec);
  16878. AL_Time_DateToSecs(&time, &TimeInSec);
  16879. tv_SetBaseTimetoSystem(TimeInSec);
  16880. }
  16881. #ifdef AC_ON_AUTO_GET_TIME
  16882. if (g_fBackgroundGetTime == TRUE)
  16883. {
  16884. APP_WAKEUP_SetBootFlag(FALSE);
  16885. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF);
  16886. }
  16887. #endif
  16888. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  16889. APP_TimeUpdateSetFlag(TRUE);
  16890. #endif
  16891. message = APP_DVB_GLOBAL_EVENT_REMINDER_EXPIRE;
  16892. break;
  16893. case FW_MONITOR_REMINDER_TIME_CHANGE:
  16894. {
  16895. al_uint32 TimeInSec = 0;
  16896. AL_Time_t time;
  16897. memset(&time, 0, sizeof(time));
  16898. AL_Time_MjdToYmd(AL_Time_GetRawMjd(),&time.Year, &time.Month, &time.Day);
  16899. AL_Time_GetRawTime(&time.Hour, &time.Min, &time.Sec);
  16900. AL_Time_DateToSecs(&time, &TimeInSec);
  16901. tv_SetBaseTimetoSystem(TimeInSec);
  16902. }
  16903. #ifdef AC_ON_AUTO_GET_TIME
  16904. if (g_fBackgroundGetTime == TRUE)
  16905. {
  16906. APP_WAKEUP_SetBootFlag(FALSE);
  16907. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF);
  16908. }
  16909. #endif
  16910. if (param == NULL)
  16911. {
  16912. UMFDBG(0,"[error],%s %d\n",__FUNCTION__,__LINE__);
  16913. }
  16914. else
  16915. {
  16916. dParam =*(al_uint32 *) param;
  16917. }
  16918. message = APP_DVB_GLOBAL_EVENT_REMINDER_TIME_CHANGE | PASS_TO_SYSAPP;
  16919. break;
  16920. #endif
  16921. case FW_VIP_STATUS:
  16922. message = FW_VIP_STATUS | PASS_TO_SYSAPP;
  16923. break;
  16924. case FW_SIGNAL_PRESENT:
  16925. case FW_VIP_FINISH:
  16926. #ifdef CONFIG_CI_SUPPORT
  16927. if (g_Audio_Scramble_Counter!=0)
  16928. {
  16929. g_VIP_FINISH_Flg = TRUE;
  16930. g_Audio_Scramble_Counter = 0;
  16931. }
  16932. else
  16933. {
  16934. if (g_VIP_FINISH_Flg==TRUE)
  16935. {
  16936. g_VIP_FINISH_Flg = FALSE;
  16937. }
  16938. }
  16939. #endif
  16940. #ifdef SUPPORT_FACTORY_AUTO_TEST
  16941. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  16942. {
  16943. APP_Source_Type_t eSourType;
  16944. APP_GUIOBJ_Source_GetCurrSource(&eSourType);
  16945. APP_GOBJ_Source_Set_SourceCheck(eSourType);
  16946. }
  16947. #endif
  16948. if (APP_GUIOBJ_DVB_Playback_GetZappingState() == FALSE)
  16949. {
  16950. #ifdef CONFIG_SUPPORT_PVR
  16951. al_uint8 bSignalState = al_false;
  16952. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  16953. if((MID_TSPLParser_GetThreadState() == TRUE)&&(!bSignalState))
  16954. {
  16955. //timeshift, no signal
  16956. }
  16957. else
  16958. #endif
  16959. {
  16960. message = APP_DVB_GLOBAL_EVENT_SET_UNMUTE|PASS_TO_SYSAPP;
  16961. }
  16962. }
  16963. #ifdef CONFIG_QSD
  16964. // To echo message with DTV has signal for chip test using.
  16965. con_dbg_echo('G', 'O');
  16966. con_dbg_echo('O', 'D');
  16967. #endif
  16968. break;
  16969. #ifdef CONFIG_SCART_SUPPORT
  16970. case FW_SCART_INPUTSTATUS_CHANGE:
  16971. message = APP_DVB_GLOBAL_EVENT_SCART_INPUTSTATUS_CHANGE|PASS_TO_SYSAPP;
  16972. dParam = *(al_uint32 *)param;
  16973. break;
  16974. #endif
  16975. #ifdef SUPPORT_CEC_TV
  16976. case FW_HDMI_PORTSTATUS:
  16977. dParam = *(UINT32 *)param;
  16978. message = APP_DVB_GLOBAL_EVENT_HDMIPORT_STATUS|PASS_TO_SYSAPP;
  16979. break;
  16980. #endif
  16981. #if 0
  16982. case FW_DB_LOAD_DEFAULT:
  16983. message = event|PASS_TO_SYSAPP;
  16984. dParam = *(al_uint32 *)param;
  16985. break;
  16986. #endif
  16987. case FW_AUDIO_HEADPHONE_PLUG_IN:
  16988. message = APP_GLOBAL_EVENT_HEADPHONE_PLUG_IN|PASS_TO_SYSAPP;
  16989. break;
  16990. case FW_AUDIO_HEADPHONE_PLUG_OUT:
  16991. message = APP_GLOBAL_EVENT_HEADPHONE_PLUG_OUT|PASS_TO_SYSAPP;
  16992. break;
  16993. #ifdef CONFIG_QSD
  16994. case FW_QSD_Media_Play:
  16995. dParam = *(UINT32 *)param;
  16996. message = APP_GLOBAL_EVENT_QSD_MEDIA_PLAY|PASS_TO_SYSAPP;
  16997. break;
  16998. case FW_QSD_Source_Set:
  16999. dParam = *(UINT32 *)param;
  17000. message = APP_GLOBAL_EVENT_QSD_SET_SOURCE|PASS_TO_SYSAPP;
  17001. break;
  17002. case FW_QSD_DTV_SetCH:
  17003. dParam = (UINT32)APP_Database_GetHdlByIdx(*(UINT32 *)param);
  17004. message = APP_DVB_GLOBAL_EVENT_ZAPPING|PASS_TO_SYSAPP;
  17005. break;
  17006. #endif
  17007. #ifdef CONFIG_SUPPORT_EWS
  17008. case FW_EWS_REC_ANCM:
  17009. case FW_EWS_FIND_AUD:
  17010. dParam =*(al_uint32 *) param;
  17011. message = FW_EWS_FIND_AUD|PASS_TO_SYSAPP;
  17012. break;
  17013. case FW_EWS_ACTIVE:
  17014. case FW_EWS_INACTIVE:
  17015. case FW_EWS_NON_ANCM:
  17016. message = event|PASS_TO_SYSAPP;
  17017. break;
  17018. #endif
  17019. case FW_USB_PLUGIN:
  17020. break;
  17021. case FW_USB_PLUGOUT:
  17022. break;
  17023. #ifdef CONFIG_HDMI_SUPPORT_MHL
  17024. case FW_HDMI_MHL_CONNECTED:
  17025. dParam = *(UINT32 *)param;
  17026. if(dParam == 1)
  17027. {
  17028. message = DMN_EVENT_MHL_CHANGE_SOURCE|PASS_TO_SYSAPP;
  17029. }
  17030. break;
  17031. #endif
  17032. #ifdef CONFIG_SUPPORT_AUDIO_CODEC_OVERLAY
  17033. case FW_AUDIO_LOADCODEC_OK:
  17034. case FW_AUDIO_LOADCODEC_ERROR:
  17035. message = event|PASS_TO_SYSAPP;
  17036. dParam = *(UINT32 *)param;
  17037. break;
  17038. case FW_AUDIO_LOADCODEC_TYPE:
  17039. {
  17040. UINT16 new_condec = *(UINT32 *)param;
  17041. TVFE_Audio_LOAD_CODEC_t stConfig;
  17042. memset(&stConfig, 0, sizeof(TVFE_Audio_LOAD_CODEC_t));
  17043. stConfig.flag = TVFE_AUDIO_CODEC_FLAG_SET;
  17044. stConfig.new_type = new_condec;
  17045. TVFE_Audio_Load_Codec(&stConfig);
  17046. printf("\n\n[%s:%d] new_condec =========== %d\n\n\n",__FUNCTION__,__LINE__,new_condec);
  17047. }
  17048. break;
  17049. #endif
  17050. default:
  17051. message = 0xffffffff;
  17052. break;
  17053. }
  17054. }
  17055. else
  17056. {
  17057. switch (event)
  17058. {
  17059. default:
  17060. message = 0xffffffff;
  17061. break;
  17062. }
  17063. }
  17064. if (message != 0xffffffff)
  17065. {
  17066. SYSAPP_IF_SendCriticalGlobalEventWithIndex(Index, message, dParam);
  17067. return SP_SUCCESS;
  17068. }
  17069. else
  17070. {
  17071. return SP_ERR_FAILURE;
  17072. }
  17073. }
  17074. void DVBApp_VolumeKeyHandler(UINT32 dMessage, UINT8 IsCECKey)
  17075. {
  17076. UINT8 u8Mute=0;
  17077. al_uint8 bSignalState = al_false;
  17078. if(IsCECKey == TRUE)
  17079. {
  17080. #ifdef SUPPORT_CEC_TV
  17081. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  17082. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  17083. if (( APP_SWITCH_ON == g_stFeatureData.Enable_HDMILink)
  17084. #ifdef SUPPORT_AMPLIFIER_CONTROL
  17085. &&(APP_SWITCH_ON == g_stFeatureData.AmplifierControl)
  17086. #endif
  17087. &&(APP_HDMILINK_AMPLIFIER == g_stFeatureData.SpeakerPreference) && APP_GUIOBJ_Source_GetAmplifierPort())
  17088. {
  17089. if (CECTV_GetCECEnable()==CECTV_ENABLE && CECTV_GetHDMISystemAudioMode() && APP_Check_CEC_DEVICE_Status())
  17090. {
  17091. if(APP_Get_HDMICEC_AMP_Mute_Status() == TRUE)
  17092. {
  17093. //APP_Set_HDMICEC_AMP_Mute_Status(FALSE);
  17094. //APP_GUIOBJ_Mute_MuteKeyHandler();
  17095. //CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_KEYPRESS, CECTV_KEY_MUTE<<8|0x05);//Mute Function
  17096. //SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, APP_GUIOBJ_MUTE,APP_INTRA_EVENT_HIDE_MUTE, 0);
  17097. }
  17098. }
  17099. }
  17100. #endif
  17101. }
  17102. else
  17103. {
  17104. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  17105. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  17106. u8Mute = g_stUserInfoData.Mute;
  17107. if (u8Mute == TRUE)
  17108. {
  17109. if(dMessage == UI_EVENT_VOL_UP || IsCECKey == TRUE)
  17110. {
  17111. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  17112. if ((bSignalState == AL_DVB_MONITOR_VALUE_TRUE)
  17113. #ifdef CONFIG_SUPPORT_PVR
  17114. || (MID_TSPLParser_GetThreadState())
  17115. #endif
  17116. )
  17117. {
  17118. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_DTV);
  17119. }
  17120. else
  17121. {
  17122. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_NO_SIGNALE, APP_SOURCE_DTV);
  17123. }
  17124. g_stUserInfoData.Mute = FALSE;
  17125. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  17126. ITEM_OFFSET(APP_SETTING_UserInfo_t, Mute),
  17127. sizeof(g_stUserInfoData.Mute), &(g_stUserInfoData.Mute));
  17128. #ifdef SUPPORT_STORE_MUTE_FLAG
  17129. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  17130. ITEM_OFFSET(APP_SETTING_UserInfo_t, Mute),
  17131. sizeof(g_stUserInfoData.Mute));
  17132. #endif
  17133. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, APP_GUIOBJ_MUTE,APP_INTRA_EVENT_HIDE_MUTE, 0);
  17134. }
  17135. }
  17136. }
  17137. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL))
  17138. {
  17139. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  17140. }
  17141. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL))
  17142. {
  17143. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  17144. }
  17145. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER))
  17146. {
  17147. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER);
  17148. }
  17149. #ifdef CONFIG_SUPPORT_PVR
  17150. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  17151. {
  17152. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  17153. }
  17154. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  17155. {
  17156. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC);
  17157. }
  17158. #endif
  17159. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  17160. {
  17161. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO);
  17162. }
  17163. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  17164. {
  17165. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  17166. }
  17167. if(IsCECKey == TRUE
  17168. #ifdef SUPPORT_CEC_TV
  17169. && CECTV_GetHDMISystemAudioMode() && APP_Check_CEC_DEVICE_Status()
  17170. #endif
  17171. )
  17172. {
  17173. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  17174. {
  17175. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  17176. }
  17177. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  17178. {
  17179. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  17180. }
  17181. else
  17182. {
  17183. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME, 0);
  17184. }
  17185. }
  17186. else
  17187. {
  17188. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  17189. {
  17190. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  17191. }
  17192. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  17193. {
  17194. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  17195. }
  17196. else
  17197. {
  17198. //Below is CV's spec,pressing Volume key should realize function instead of showing adjust bar only.
  17199. UINT8 u8VolumeIdx = g_stVariationalData.Volume;
  17200. if (dMessage == UI_EVENT_VOL_UP)
  17201. {
  17202. g_stVariationalData.Volume = u8VolumeIdx >= ADJUST_MAX_VALUE ? ADJUST_MAX_VALUE : ++u8VolumeIdx;
  17203. }
  17204. else if (dMessage == UI_EVENT_VOL_DN)
  17205. {
  17206. g_stVariationalData.Volume = u8VolumeIdx <= ADJUST_MIN_VALUE ? ADJUST_MIN_VALUE : --u8VolumeIdx;
  17207. }
  17208. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  17209. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  17210. if ((g_stFactoryHotelData.MaxVolume < g_stVariationalData.Volume)
  17211. &&(g_stFactoryHotelData.HotelModeOnOff == 1))
  17212. {
  17213. g_stVariationalData.Volume = g_stFactoryHotelData.MaxVolume;
  17214. }
  17215. APP_Audio_SetVolume((UINT32)g_stVariationalData.Volume);
  17216. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  17217. ITEM_OFFSET(APP_SETTING_Variational_t, Volume),
  17218. sizeof(g_stVariationalData.Volume), &(g_stVariationalData.Volume));
  17219. //AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  17220. //ITEM_OFFSET(APP_SETTING_UserInfo_t, Volume), sizeof(g_stUserInfoData.Volume));
  17221. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_ADJUST, ADJUST_VOLUME);
  17222. }
  17223. }
  17224. }
  17225. Boolean DVBApp_GetUnstableState(void)
  17226. {
  17227. return g_bUnstable;
  17228. }
  17229. void DVBApp_SetUnstableState(Boolean bstate)
  17230. {
  17231. g_bUnstable = bstate;
  17232. }
  17233. Boolean DVBApp_GetFindNewTSIDFlag(void)
  17234. {
  17235. return bFindNewTSID;
  17236. }
  17237. Boolean DVBApp_ClearFindNewTSIDFlag(void)
  17238. {
  17239. bFindNewTSID = FALSE;
  17240. return 0;
  17241. }
  17242. #ifdef CONFIG_SUPPORT_EWS
  17243. al_uint8 DVBApp_GetEWSMode(void)
  17244. {
  17245. return g_EWSMode;
  17246. }
  17247. void DVBApp_ResetEWS(void)
  17248. {
  17249. dvb_printf("\n[%s] is called!!!!!!!\n\n", __FUNCTION__);
  17250. DMIOC_SET_EWS_PARAM stEwsParam;
  17251. memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM));
  17252. if (g_EWSMode == TRUE)
  17253. {
  17254. stEwsParam.bActive = FALSE;
  17255. ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam);
  17256. }
  17257. g_PrevProgHandle = AL_DB_INVALIDHDL;
  17258. g_EWSMode = FALSE;
  17259. memset(&g_PrevAudioPid, 0, sizeof(DBPIDInfo_t));
  17260. g_PrevAudioPid.usDataPID = DB_DVB_INVALID_PID;
  17261. memset(&g_MonAudioPid, 0, sizeof(DBPIDInfo_t));
  17262. g_MonAudioPid.usDataPID = DB_DVB_INVALID_PID;
  17263. AL_EWS_Monitor_ResetData();
  17264. }
  17265. #endif
  17266. #ifdef CONFIG_CIPLUS_SUPPORT
  17267. void DVBApp_NotExistSrv(void)
  17268. {
  17269. PopmsgParam_t stPopup;
  17270. memset(&stPopup,0x0,sizeof(PopmsgParam_t));
  17271. stPopup.eType = POPMSG_TYPE_PROMPT;
  17272. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  17273. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  17274. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_NOT_EXIST_SRV;
  17275. stPopup.extend.stPrompt.iTimeout = 2;
  17276. DVBApp_SchedulePopup(stPopup);
  17277. return;
  17278. }
  17279. void DVBApp_ResetDupliChkFunc(BOOLEAN bNoCheckServ)
  17280. {
  17281. #if (defined(CONFIG_DVB_SYSTEM_DVBS_SUPPORT)||defined(CONFIG_DVB_SYSTEM_DVBT_SUPPORT)\
  17282. ||defined(CONFIG_DVB_SYSTEM_DVBC_SUPPORT))
  17283. AL_DB_RecDupliChkFunc_t stMatchFuc;
  17284. if( bNoCheckServ )
  17285. stMatchFuc.pServMatch = NULL;
  17286. else
  17287. stMatchFuc.pServMatch = (AL_DB_RecordMatchFunc)_DVBApp_SerMatch;
  17288. #endif
  17289. #ifdef CONFIG_DVB_SYSTEM_DVBT_SUPPORT
  17290. stMatchFuc.pNetMatch = (AL_DB_RecordMatchFunc)_DVBApp_NetworkMatch_T;
  17291. stMatchFuc.pMulitplexMatch = (AL_DB_RecordMatchFunc)_DVBApp_TPMatch_T;
  17292. AL_DB_RegisterDupliChkFunc(AL_DBTYPE_DVB_T, &stMatchFuc);
  17293. #endif
  17294. #ifdef CONFIG_DVB_SYSTEM_DVBC_SUPPORT
  17295. stMatchFuc.pNetMatch = (AL_DB_RecordMatchFunc)_DVBApp_NetworkMatch_C;
  17296. stMatchFuc.pMulitplexMatch = (AL_DB_RecordMatchFunc)_DVBApp_TPMatch_C;
  17297. AL_DB_RegisterDupliChkFunc(AL_DBTYPE_DVB_C, &stMatchFuc);
  17298. #endif
  17299. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  17300. stMatchFuc.pNetMatch = (AL_DB_RecordMatchFunc)_DVBApp_NetworkMatch_S;
  17301. stMatchFuc.pMulitplexMatch = (AL_DB_RecordMatchFunc)_DVBApp_TPMatch_S;
  17302. AL_DB_RegisterDupliChkFunc(AL_DBTYPE_DVB_S, &stMatchFuc);
  17303. #endif
  17304. }
  17305. #endif
  17306. Boolean DVBApp_CheckHasVideo(void)
  17307. {
  17308. AL_RecHandle_t hTempHdl = AL_DB_INVALIDHDL;
  17309. MID_PlaybackGetCurProgHandle(al_null, &hTempHdl);
  17310. DBPIDInfo_t stVideoPid;
  17311. memset(&stVideoPid,0xff,sizeof(DBPIDInfo_t));
  17312. AL_DB_QueryDetailFieldByName(hTempHdl, (al_uint8 *)"stVideoPid", (al_void *)&stVideoPid);
  17313. if ((stVideoPid.usDataPID&0x1fff) == 0x1fff)
  17314. {
  17315. return FALSE;
  17316. }
  17317. else
  17318. {
  17319. return TRUE;
  17320. }
  17321. }