dvb_app.c 544 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027
  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_pvrrec_info.h"
  132. #include "mid_recorder.h"
  133. #include "mid_tspl.h"
  134. #include "pvrparser.h"
  135. #include "mid_tspl_parser.h"
  136. #include "mid_partition_list.h"
  137. #if defined (CONFIG_SUPPORT_USB_UPGRADE) || defined (CONFIG_SUPPORT_OTA_UPGRADE)
  138. #include "mid_upgrade.h"
  139. #endif
  140. #ifdef CONFIG_MEDIA_ENABLE
  141. //#include "MM_music_playback_gui.h"
  142. #endif
  143. #endif
  144. #include "main_app_external.h"
  145. #include "al_prog_reminder.h"
  146. #include "app_guiobj_auto_search.h"
  147. #include "app_guiobj_dtv_pvr_playinfo.h"
  148. #include "app_guiobj_dtv_partitionlist.h"
  149. #include "app_power_control.h"
  150. #include "app_clone_data.h"
  151. //#include "system_utils.h"
  152. #ifdef SUPPORT_CEC_TV
  153. #include "umf_cec.h"
  154. #endif
  155. #include "app_guiobj_hdmilink.h"
  156. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  157. #include "app_guiobj_satsystem.h"
  158. #include "mid_sat_antenna.h"
  159. #endif
  160. #include "app_sysset.h"
  161. #include "app_guiobj_cul_fm_factorySetting_new.h"
  162. #ifdef SUPPORT_LED_FLASH
  163. #include "app_led_control.h"
  164. #endif
  165. #include "app_sysset.h"
  166. #ifdef CELLO_cello
  167. #include "app_guiobj_auto_installation_cello.h"
  168. #endif
  169. #ifdef N32_GAME_SUPPORT
  170. #include "app_clone_data.h"
  171. #endif
  172. #ifdef SUPPORT_HKC_FACTORY_REMOTE
  173. #ifdef CONFIG_ATV_SUPPORT
  174. #include "app_atv_playback.h"
  175. #endif
  176. #endif
  177. #include "app_guiobj_favnet.h"
  178. #include "audio_ioctl.h"
  179. #include "drv_dtv_external.h"
  180. #include "drv_dtv_common.h"
  181. #include "mid_dtv_display.h"
  182. #ifdef CONFIG_SUPPORT_MHEG5
  183. #include "mid_mheg5.h"
  184. #endif
  185. #ifdef CONFIG_CIPLUS_SUPPORT
  186. #include "mid_dtvci.h"
  187. #endif
  188. #include "app_console.h"
  189. #ifdef CONFIG_QSD
  190. #include "app_guiobj_cul_fm_factorySetting_new.h"
  191. #endif
  192. #include "unicode.h"
  193. #include "cust_nvm_cfg.h"
  194. #include "app_factory_flash_access.h"
  195. #include "app_guiobj_dtv_prognum.h"
  196. /********************************************************************
  197. Macros
  198. ********************************************************************/
  199. #define DVB_DEBUG
  200. #ifdef DVB_DEBUG
  201. #define dvb_printf(fmt, arg...) UMFDBG(0,"[DVB App]"fmt, ##arg)
  202. #else
  203. #define dvb_printf(fmt, arg...) ((void) 0)
  204. #endif
  205. #define PVR_DEBUG
  206. #ifdef PVR_DEBUG
  207. #undef PVR_DEBF
  208. #define PVR_DEBF(fmt, arg...) UMFDBG(0,fmt, ##arg)
  209. #else
  210. #undef PVR_DEBF
  211. #define PVR_DEBF(fmt, arg...) ((void) 0)
  212. #endif
  213. //#define FW_DEBUG
  214. #ifdef FW_DEBUG
  215. #define FW_DEBF(fmt, arg...) UMFDBG(0,fmt, ##arg)
  216. #else
  217. #define FW_DEBF(fmt, arg...) ((void) 0)
  218. #endif
  219. #ifdef SUPPORT_SUBTITLE_ON_PG
  220. #define ON_DATA_APPLICATION_DECISION(b)\
  221. ((b&OSD2CTRLMDL_SUB)>0? (OSD2CTRLMDL_SUB|(b&OSD2CTRLMDL_MH5)):(b&OSD2CTRLMDL_TTX))
  222. #else
  223. #define ON_DATA_APPLICATION_DECISION(b)\
  224. ((b&OSD2CTRLMDL_SUB)>0? OSD2CTRLMDL_SUB:((b&OSD2CTRLMDL_MH5)>0? OSD2CTRLMDL_MH5:(b&OSD2CTRLMDL_TTX)))
  225. #endif
  226. #define AP_FMW_DFP_NAME_BUFF_SIZE (32<<10)
  227. #ifdef SUPPORT_DYNAMIC_MULTIPLEXES
  228. #define MAX_TMP_PROG_SIZE 100
  229. #endif
  230. #define DTV_TRUE 1
  231. #define DTV_FALSE 0
  232. #define DVB_10_MINUTES (5400)//5400*100 ms(9 min)
  233. #define NOT_USED(p) ((void)(p))
  234. /********************************************************************
  235. Type definitions
  236. ********************************************************************/
  237. enum
  238. {
  239. DATA_APP_UNSTABLE = 0, // si information doesn't find yet
  240. DATA_APP_LANUCHABLE = (1 << 1), // the module has data,
  241. DATA_APP_NOT_FOUND = (1 << 2), // no data found for this application
  242. DATA_APP_EXECUTABLE = (1 << 7), // there is data, and it can be shown
  243. } enDataAppModuleState;
  244. typedef struct DvbPrivateData_t_
  245. {
  246. //user define private data
  247. UINT32 dUserData;
  248. } DvbPrivateData_t;
  249. typedef void (*SysTimeFunc)(void);
  250. /********************************************************************
  251. Function Declare
  252. ********************************************************************/
  253. #ifdef CONFIG_CIPLUS_SUPPORT
  254. extern INT32 APP_DVB_CI_CiInit(void);
  255. static Boolean g_isMute = FALSE;
  256. #endif
  257. #ifdef AC_ON_AUTO_GET_TIME
  258. extern Boolean g_fBackgroundGetTime;
  259. #endif
  260. extern UINT8 AL_FLASH_GetColorLUTALL(ColorLUT_t* bColorLUTValue);
  261. extern int APP_GUIOBJ_3DMenu_SetModeNoOutPutStructure(UINT32 u32Mode);
  262. extern void _APP_GUIOBJ_3DMenu_GetForce2DAnother(UINT32 *u32Force2D);
  263. extern void _APP_GUIOBJ_3DMenu_SetForce2DAnother(UINT32 u32Force2D);
  264. static INT32 _DVBApp_OnCreate(void **ppPrivateData);
  265. static INT32 _DVBApp_OnDestroy(void **ppPrivateData);
  266. static INT32 _DVBApp_OnRun(void *pPrivateData, UINT32 dParam);
  267. static INT32 _DVBApp_OnTerminate(void *pPrivateData, UINT32 dParam);
  268. static INT32 _DVBApp_OnTimerUpdate(void *pPrivateData);
  269. static INT32 _DVBApp_OnEvent(void *pPrivateData, UINT32 dMessage, UINT32 dParam);
  270. extern void _APP_GUIOBJ_Sound_SetMuteStatus();
  271. extern UINT8 gIsFactoryResetting;
  272. static INT32 _DVBApp_Zapping(
  273. UINT8 bServiceType, AL_RecHandle_t hProgHdl,
  274. UINT8 bForce, UINT32 u32Paramter, Boolean bShowInfo);
  275. static INT32 _DVBApp_CloseAllMenu(void);
  276. #ifdef CONFIG_SUPPORT_HOTKEY_SOURCE_LOCK
  277. extern void SourceLock_Set_Hotkey_Flag(bool g_SourceLock_flag);
  278. #endif
  279. extern Boolean gUSBUpgradeBinIsSupperBin;
  280. #ifdef CONFIG_SUPPORT_HOTKEY_SOURCE_LOCK
  281. static bool g_fmSourceLock_flag = FALSE;
  282. #endif
  283. /********************************************************************
  284. Global Variables
  285. ********************************************************************/
  286. SysAppInstDef stDvbInst =
  287. {
  288. SYS_APP_DVB,
  289. _DVBApp_OnCreate,
  290. _DVBApp_OnDestroy,
  291. _DVBApp_OnRun,
  292. _DVBApp_OnTerminate,
  293. _DVBApp_OnTimerUpdate,
  294. _DVBApp_OnEvent,
  295. SYSTEM_IDLE, //system state.
  296. Dvb_GUI_Obj_List, //GUI object table
  297. DVB_GUIOBJ_MAX, //GUI object table size
  298. NULL, //System Application Infrastructure (should not be modified)
  299. NULL //System Application private data (created in OnInitialize function)
  300. };
  301. #ifdef CONFIG_CI_SUPPORT
  302. UINT32 g_CI_IgnoreGuiObjID[] =
  303. {
  304. DVB_GUIOBJ_EPG,
  305. DVB_GUIOBJ_CHNLIST,
  306. DVB_GUIOBJ_FAVLIST,
  307. DVB_GUIOBJ_MULTIAUD,
  308. DVB_GUIOBJ_SCAN_PROCESS,
  309. #ifdef CONFIG_SUPPORT_TTX
  310. DVB_GUIOBJ_TTX,
  311. #endif
  312. #ifdef CONFIG_SUPPORT_SUBTITLE
  313. DVB_GUIOBJ_SUBTITLEMENU,
  314. #endif
  315. APP_GUIOBJ_SOURCE,
  316. };
  317. UINT32 g_CI_HideGuiObjID[] =
  318. {
  319. DVB_GUIOBJ_PROGINFO,
  320. DVB_GUIOBJ_PROGNUM,
  321. };
  322. #endif
  323. #ifdef CONFIG_SUPPORT_3D_EN
  324. extern UINT8 bSet3DMode;
  325. #endif
  326. /*Static Variables*/
  327. static PopmsgParam_t stPopupWaitingList[PLAYBACK_POPUP_MAX-PLAYBACK_POPUP_NONE];
  328. static UINT32 g_dCurPopup = PLAYBACK_POPUP_NONE;
  329. static UINT32 g_u32OldPopup = PLAYBACK_POPUP_NONE;
  330. static UINT32 g_u32NoSignalTimer = 0;
  331. static UINT32 g_u32NoSignalSleepTimer = 0;
  332. static UINT32 g_u32PopupWaitingList = 0;
  333. static UINT8 g_PauseState = FALSE;
  334. static UINT8 g_SetPQFlag = FALSE;
  335. static bool bSetUnMuteFlag = FALSE;
  336. static bool g_bMidHasUnmute = FALSE;
  337. static Prog_ScrambleStatus_t g_bScrambleFlag = PROG_STATUS_SCRAMBLE_UNKNOW;
  338. static bool g_bTempSerFlag = FALSE;
  339. #ifdef CONFIG_SUPPORT_OTA_UPGRADE
  340. static bool g_bOTAFlag = FALSE;
  341. #endif
  342. #ifdef SUPPORT_DTV_SHOW_BLUESCREEN
  343. static bool g_bIsBlueScreen = FALSE;
  344. #endif
  345. static bool g_bForceProcessEventCbk = FALSE;
  346. #ifdef CONFIG_SUPPORT_PVR
  347. AL_SCH_sched_id_t stoprec_id = AL_SCH_INVALID_ID;
  348. AL_SCH_sched_id_t chsrc_id = AL_SCH_INVALID_ID;
  349. static Boolean g_bIsCHUp = FALSE;
  350. static Boolean g_bIsNumKey = FALSE;
  351. static AL_RecHandle_t g_ProgHandle;
  352. static UINT8 g_u8BGTimeshiftStart = 0;
  353. static MID_REC_MODE g_eCheckRecMode = MID_REC_MODE_MAX; //for auto mode speed not enough popup
  354. AL_RecHandle_t g_ProgHandleB4Rec;
  355. static Boolean g_bTvRadioSwap = FALSE; //for timer rec to swap TV RADIO
  356. static Boolean g_bPVRSwitchSource = FALSE;
  357. AL_SCH_sched_id_t g_dReminderId;
  358. AL_PR_details_t g_stDetails;
  359. AL_PR_details_t g_stOldDetails;
  360. AL_DB_ERecordType_t g_eRecType;
  361. AL_PR_type_t g_remtype = AL_PR_INVALID_REM;
  362. static APP_Favorite_t FavType = APP_FAVORITE_NONE;
  363. static Boolean g_bIsPlaykey = TRUE;/*<set this flag when user press play/pause key*/
  364. #endif
  365. static Boolean g_bIsFav = FALSE;
  366. static UINT8 g_u8SourceTrastTimer = 0;
  367. static UINT8 g_u8PopScrambleMsgTimer = 0;
  368. static UINT8 g_u8ZappingTimer = 0;
  369. extern Boolean g_bAudHasUpdate;
  370. #ifdef TEAC_BLUE_KEY_FUNCTION
  371. static APP_Panel_PowerSequenceType_e g_eAppPanelOnOff = APP_PANEL_POWER_UP;
  372. #endif
  373. static Boolean g_bUnstable = FALSE;
  374. #if defined (CONFIG_SUPPORT_TTX ) && defined(CONFIG_SUPPORT_TTX_DISP_FOR_AUS)
  375. static UINT8 g_u8TTXTimer = 0;
  376. #endif
  377. static al_uint8 g_bNoSteamData = AL_DVB_MONITOR_VALUE_INVAILED; /**<stream data state record, al_false: has stream data, al_true: no stream data*/
  378. static al_uint8 g_AdioChnPolTime = 0;
  379. #ifdef CONFIG_SUPPORT_EWS
  380. static AL_RecHandle_t g_PrevProgHandle = AL_DB_INVALIDHDL;
  381. static al_uint8 g_EWSMode = FALSE;
  382. static al_uint8 g_NonClearEWS = FALSE;
  383. static DBPIDInfo_t g_MonAudioPid;
  384. static DBPIDInfo_t g_PrevAudioPid;
  385. #endif
  386. #ifdef CONFIG_CI_SUPPORT
  387. static al_uint8 g_Audio_Scramble_Counter = 0;
  388. static Boolean g_VIP_FINISH_Flg = FALSE;
  389. #define AUDIO_SCRAMBLE_COUNT 50
  390. #endif
  391. static al_uint8 g_UnsupportVideo = FALSE;
  392. static Boolean bFindNewTSID = FALSE;
  393. static INT32 g_u32Mutekeydelaytime = 10;
  394. static INT32 g_u32MuteIconHandle = 10;
  395. static INT32 MUTE_KEY_INTERVAL = 10;
  396. #ifdef CONFIG_SUPPORT_SSU_UPGRADE
  397. static bool autoupgrade = FALSE;// false:don't auto upgrade(show prompt), True: auto(show progress)
  398. static AU_Timer_state_e autoupgrade_sate = AU_MAX;// this param is used for control auto grade process.
  399. static bool bBootAutoUpGrade = 0;
  400. void DVBApp_SetBootAutoUpGrade(Boolean flag)
  401. {
  402. bBootAutoUpGrade = flag;
  403. }
  404. Boolean DVBApp_IsBootUpGrade(void)
  405. {
  406. return bBootAutoUpGrade;
  407. }
  408. #if defined (CONFIG_SUPPORT_TTX ) && defined(CONFIG_SUPPORT_TTX_DISP_FOR_AUS)
  409. void APP_SetTTXTimer(UINT8 time)
  410. {
  411. g_u8TTXTimer = time;
  412. }
  413. UINT8 APP_GetTTXTimer(void)
  414. {
  415. return g_u8TTXTimer;
  416. }
  417. #endif
  418. void DVBApp_SetAutoUpgrade(Boolean state)
  419. {
  420. autoupgrade = state;
  421. }
  422. Boolean DVBApp_IsAutoUpgrade(void)
  423. {
  424. return autoupgrade;
  425. }
  426. AU_Timer_state_e DVBApp_GetAU_Sate(void)
  427. {
  428. return autoupgrade_sate;
  429. }
  430. void DVBApp_SetAU_Sate(AU_Timer_state_e state)
  431. {
  432. autoupgrade_sate = state;
  433. }
  434. #endif
  435. #ifdef CONFIG_CONFIRM_AUTO_UPGRADE
  436. static int dLastFocusedIndex = 0;
  437. #endif
  438. /********************************************************************
  439. Function Define
  440. ********************************************************************/
  441. UINT8 APP_GetPlaybackPauseState(void)
  442. {
  443. return g_PauseState;
  444. }
  445. void APP_SetPlaybackPauseState(UINT8 state)
  446. {
  447. g_PauseState = state;
  448. }
  449. UINT8 APP_GetPlaybackVideoState(void)
  450. {
  451. return g_UnsupportVideo;
  452. }
  453. #ifdef SUPPORT_DYNAMIC_MULTIPLEXES
  454. static void _DVBApp_NewServicesToDatabase(void)
  455. {
  456. dvb_printf("%s() \n",__FUNCTION__);
  457. int i,j;
  458. UINT16 sindex,num;
  459. UINT32 u32CurrentArea;
  460. AL_PSIMon_SimpleSrv_t *srvbuf= (AL_PSIMon_SimpleSrv_t *) zero_malloc(sizeof(AL_PSIMon_SimpleSrv_t)*PSIMON_MAX_OTHERTP_SRV);
  461. UINT8 *srvnamebuf= (UINT8 *) zero_malloc(DB_DVB_MAX_CHNAME_LEN*PSIMON_MAX_OTHERTP_SRV);
  462. AL_DB_EDBType_t eDBType = APP_DVB_Playback_GetCurrentNetType();
  463. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  464. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  465. u32CurrentArea = g_stChannelData.Country;
  466. const AL_DVBT_AreaTable_t * area = NULL;
  467. APP_Area_GetAreaTableItem(u32CurrentArea,&area);
  468. AL_TPSects_Info_st *pTemp =
  469. (AL_TPSects_Info_st *)area->pTPRegion_Area;
  470. // 1. get new service list from other tp.
  471. AL_PSI_Monitor_GetOtherTpServList(srvbuf, srvnamebuf, &num);
  472. for (sindex = 0; sindex < num; sindex++)
  473. {
  474. UINT8 IsFreqFoundInTable = 0;
  475. AL_MultiplexDetail_t stTSInfo;
  476. AL_ServiceDetail_t stServInfo;
  477. AL_RecHandle_t hTp = 0;
  478. AL_RecHandle_t hProg = 0;
  479. static AL_RecHandle_t hParentHdl = AL_DB_INVALIDHDL;
  480. INT32 u32Freq = 0;
  481. if (srvbuf == NULL || srvnamebuf == NULL)
  482. {
  483. break;
  484. }
  485. // 2. looking for the Tp's parameters from area table
  486. for (i = (area->SectNum - 1); i >= 0; i--)
  487. {
  488. for (j = (pTemp[i].SectTPCount - 1); j >= 0; j--)
  489. {
  490. u32Freq = pTemp[i].StartFreq + pTemp[i].stBandWidth.eBandWidth.BaseBandWidth * j * 1000;
  491. if (srvbuf[sindex].uiFreq == u32Freq
  492. || srvbuf[sindex].uiFreq - 166 == u32Freq
  493. || srvbuf[sindex].uiFreq + 167 == u32Freq)
  494. {
  495. IsFreqFoundInTable = 1;
  496. break;
  497. }
  498. }
  499. if (IsFreqFoundInTable)
  500. {
  501. break;
  502. }
  503. }
  504. if (IsFreqFoundInTable == 0)
  505. {
  506. dvb_printf(" Inexpected error! freq. doesn't find \n");
  507. break;
  508. }
  509. // 3. check if the TP presents already
  510. memset(&stTSInfo, 0, sizeof(AL_MultiplexDetail_t));
  511. if (AL_DBTYPE_DVB_T == eDBType)
  512. {
  513. stTSInfo.stDVBTMultiplex.uiFreqK = u32Freq;
  514. stTSInfo.stDVBTMultiplex.ucBandwidth = pTemp[i].stBandWidth.eBandWidth.BaseBandWidth;
  515. stTSInfo.stDVBTMultiplex.ucAreaIndex = u32CurrentArea;
  516. stTSInfo.stDVBTMultiplex.usTsId = srvbuf[sindex].usTsId;
  517. #ifdef SUPPORT_HIERARCHY_MODE
  518. stTSInfo.stDVBTMultiplex.ucHierarchyMode = pTemp[i].U8HierarchyMode;
  519. #endif
  520. }
  521. else if (AL_DBTYPE_DVB_C == eDBType)
  522. {
  523. stTSInfo.stDVBCMultiplex.uiFreqK = u32Freq;
  524. //stTSInfo.stDVBCMultiplex.ucBandwidth = pTemp[i].BandWidth;
  525. //stTSInfo.stDVBCMultiplex.ucAreaIndex = u32CurrentArea;
  526. stTSInfo.stDVBCMultiplex.usTsId = srvbuf[sindex].usTsId;
  527. #ifdef SUPPORT_HIERARCHY_MODE
  528. //stTSInfo.stDVBCMultiplex.ucHierarchyMode = pTemp[i].U8HierarchyMode;
  529. #endif
  530. }
  531. else if (AL_DBTYPE_DVB_S == eDBType)
  532. {
  533. stTSInfo.stDVBSMultiplex.usFreqM = u32Freq;
  534. //stTSInfo.stDVBSMultiplex.ucBandwidth = pTemp[i].BandWidth;
  535. //stTSInfo.stDVBCMultiplex.ucAreaIndex = u32CurrentArea;
  536. stTSInfo.stDVBSMultiplex.usTsId = srvbuf[sindex].usTsId;
  537. #ifdef SUPPORT_HIERARCHY_MODE
  538. //stTSInfo.stDVBCMultiplex.ucHierarchyMode = pTemp[i].U8HierarchyMode;
  539. #endif
  540. }
  541. if (AL_DBTYPE_DVB_T == eDBType)
  542. {
  543. if (AL_DB_INVALIDHDL == hParentHdl)
  544. {
  545. AL_NetworkDetail_t stRootNet;
  546. stRootNet.stDVBTNetwork.usNetId = 1;
  547. memcpy(stRootNet.stDVBTNetwork.szNetName, "Dummy", 6);
  548. AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBNETWORK, &stRootNet, AL_DB_INVALIDHDL, &hParentHdl);
  549. }
  550. }
  551. else
  552. {
  553. hParentHdl = AL_DB_INVALIDHDL;
  554. }
  555. dvb_printf("[%s]Get parent network handle: 0x%02x\n", __FUNCTION__, hParentHdl);
  556. AL_DB_AddRecord(eDBType, AL_RECTYPE_DVBMULTIPLEX, &stTSInfo, hParentHdl, &hTp);
  557. // 4. add service to database
  558. memset(&stServInfo, 0, sizeof(AL_ServiceDetail_t));
  559. #ifdef NEW_FONT
  560. al_uint32 u32CodePage = 0xff;
  561. al_uint8 *pExtText = al_null;
  562. al_int32 i32Len = 0;
  563. i32Len = DB_DVB_MAX_CHNAME_LEN;
  564. AL_Event_GetCodePage(&u32CodePage, srvbuf[sindex].pucname, &i32Len);
  565. if (u32CodePage == 0xff)
  566. {
  567. AL_Event_GetDefaultCodePage(&u32CodePage);
  568. }
  569. pExtText = UNI_StringToUtf8(u32CodePage, srvbuf[sindex].pucname, &i32Len, FALSE);
  570. memset(srvbuf[sindex].pucname, 0, DB_DVB_MAX_CHNAME_LEN);
  571. i32Len = i32Len < DB_DVB_MAX_CHNAME_LEN? i32Len : DB_DVB_MAX_CHNAME_LEN -1;
  572. memcpy(srvbuf[sindex].pucname, pExtText, i32Len);//service name
  573. //printf("[%s:%d] u32CodePage : %d, u32Len: %d\n",__FUNCTION__,__LINE__, u32CodePage, i32Len);
  574. free(pExtText);
  575. pExtText = al_null;
  576. #endif
  577. if (AL_DBTYPE_DVB_T == eDBType)
  578. {
  579. memcpy(stServInfo.stDVBTServ.szProgName, srvbuf[sindex].pucname, DB_DVB_MAX_CHNAME_LEN - 1);
  580. stServInfo.stDVBTServ.usOrigNetId = srvbuf[sindex].usOrgNetId;
  581. stServInfo.stDVBTServ.usServiceId = srvbuf[sindex].usServiceId;
  582. stServInfo.stDVBTServ.usTsId = srvbuf[sindex].usTsId;
  583. stServInfo.stDVBTServ.usProgNo = srvbuf[sindex].usProgNum;
  584. #ifdef SUPPORT_LCN
  585. stServInfo.stDVBTServ.usOrgLcn = srvbuf[sindex].usProgNum;
  586. #endif
  587. }
  588. else if (AL_DBTYPE_DVB_C == eDBType)
  589. {
  590. memcpy(stServInfo.stDVBCServ.szProgName, srvbuf[sindex].pucname, DB_DVB_MAX_CHNAME_LEN - 1);
  591. stServInfo.stDVBCServ.usOrigNetId = srvbuf[sindex].usOrgNetId;
  592. stServInfo.stDVBCServ.usServiceId = srvbuf[sindex].usServiceId;
  593. stServInfo.stDVBCServ.usTsId = srvbuf[sindex].usTsId;
  594. stServInfo.stDVBCServ.usProgNo = srvbuf[sindex].usProgNum;
  595. #ifdef SUPPORT_LCN
  596. stServInfo.stDVBCServ.usOrgLcn = srvbuf[sindex].usProgNum;
  597. #endif
  598. }
  599. else if (AL_DBTYPE_DVB_S == eDBType)
  600. {
  601. memcpy(stServInfo.stDVBSServ.szProgName, srvbuf[sindex].pucname, DB_DVB_MAX_CHNAME_LEN - 1);
  602. stServInfo.stDVBSServ.usOrigNetId = srvbuf[sindex].usOrgNetId;
  603. stServInfo.stDVBSServ.usServiceId = srvbuf[sindex].usServiceId;
  604. stServInfo.stDVBSServ.usTsId = srvbuf[sindex].usTsId;
  605. stServInfo.stDVBSServ.usProgNo = srvbuf[sindex].usProgNum;
  606. #ifdef SUPPORT_LCN
  607. stServInfo.stDVBSServ.usOrgLcn = srvbuf[sindex].usProgNum;
  608. #endif
  609. }
  610. AL_Serv_SearchKey_t stSearchKey;
  611. memset(&stSearchKey, 0, sizeof(AL_Serv_SearchKey_t));
  612. stSearchKey.eDBType = eDBType;
  613. stSearchKey.eRecType = AL_RECTYPE_DVBMULTIPLEX;
  614. stSearchKey.u32Frequency = srvbuf[sindex].uiFreq;
  615. stSearchKey.eSearchField = AL_SRV_SEARCHFIELD_FREQ;
  616. AL_DB_SearchRecords((AL_DB_RecordMatchFunc)AL_Serv_MatchRecBySearchKey,
  617. (al_void *)&stSearchKey, eDBType, AL_RECTYPE_DVBMULTIPLEX, 1, 0, al_null, al_null, &hParentHdl);
  618. dvb_printf("[%s]Get parent multiplex handle: 0x%02x\n", __FUNCTION__, hParentHdl);
  619. AL_DB_AddRecord(eDBType, srvbuf[sindex].ucServiceType, &stServInfo, hParentHdl, &hProg);
  620. }
  621. SAFE_FREE(srvbuf);
  622. SAFE_FREE(srvnamebuf);
  623. if (num)
  624. {
  625. //SORT_PARA stSortPara;
  626. UINT8 bLcnOnOff;
  627. bLcnOnOff = 0;
  628. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO, 0,
  629. sizeof(APP_SETTING_SystemInfo_t), &(g_stSysInfoData));
  630. bLcnOnOff = g_stSysInfoData.LcnOnOff;
  631. if (bLcnOnOff == LCN_ON)
  632. {
  633. AL_DB_SortRecords(eDBType, AL_RECTYPE_DVBTV, AL_DB_SORTBY_SERVTYPE, al_true);
  634. AL_DB_SortRecords(eDBType, AL_RECTYPE_DVBRADIO, AL_DB_SORTBY_SERVTYPE, al_true);
  635. }
  636. }
  637. }
  638. #endif
  639. static AL_RecHandle_t _DVBApp_GetNextAvailableServiceEx(AL_DB_EDBType_t eNetType,AL_DB_ERecordType_t eServiceType,AL_RecHandle_t Hprog)
  640. {
  641. AL_RecHandle_t hNextProgHdl = AL_DB_INVALIDHDL;
  642. AL_DB_ERecordType_t eRecType;
  643. AL_DB_EDBType_t eDBType;
  644. AL_RecHandle_t hCurTPHdl = Hprog;
  645. DBServAttrib_t stAttribute;
  646. AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hCurTPHdl);
  647. hNextProgHdl = AL_DB_INVALIDHDL;
  648. while (AL_SUCCESS == AL_DB_GetChildRecord(hCurTPHdl, &hNextProgHdl)
  649. && hNextProgHdl != AL_DB_INVALIDHDL)
  650. {
  651. AL_DB_GetRecordType(hNextProgHdl, &eDBType, &eRecType);
  652. memset(&stAttribute, 0, sizeof(DBServAttrib_t));
  653. AL_DB_QueryDetailFieldByName(hNextProgHdl, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute);
  654. if((eRecType==eServiceType)&&(stAttribute.unStable == al_false)&&(stAttribute.delete== al_false)
  655. && (stAttribute.notvisible == al_false))
  656. {
  657. return hNextProgHdl;
  658. }
  659. }
  660. if(hNextProgHdl!=AL_DB_INVALIDHDL)
  661. {
  662. dvb_printf("Get Next Service Successfully!\n");
  663. }
  664. else
  665. {
  666. dvb_printf("Get Next Service Failed!\n");
  667. }
  668. return hNextProgHdl;
  669. }
  670. AL_RecHandle_t DVBApp_GetNextAvailableService(AL_DB_EDBType_t eNetType,AL_DB_ERecordType_t eServiceType,AL_RecHandle_t hCurrProgHdl)
  671. {
  672. AL_RecHandle_t hNextProgHdl = AL_DB_INVALIDHDL;
  673. hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl);
  674. if(hNextProgHdl == AL_DB_INVALIDHDL)
  675. {
  676. if(eServiceType == AL_RECTYPE_DVBTV)
  677. {
  678. eServiceType = AL_RECTYPE_DVBRADIO;
  679. hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl);
  680. if(hNextProgHdl == AL_DB_INVALIDHDL)
  681. {
  682. eServiceType = AL_RECTYPE_DVBDATA;
  683. hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl);
  684. if(hNextProgHdl == AL_DB_INVALIDHDL)
  685. {
  686. dvb_printf("DATABASE Empty!!!\n\n");
  687. }
  688. }
  689. }
  690. else if(eServiceType == AL_RECTYPE_DVBRADIO)
  691. {
  692. eServiceType = AL_RECTYPE_DVBTV;
  693. hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl);
  694. if(hNextProgHdl == AL_DB_INVALIDHDL)
  695. {
  696. eServiceType = AL_RECTYPE_DVBDATA;
  697. hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl);
  698. if(hNextProgHdl == AL_DB_INVALIDHDL)
  699. {
  700. dvb_printf("DATABASE Empty!!!\n\n");
  701. }
  702. }
  703. }
  704. else
  705. {
  706. eServiceType = AL_RECTYPE_DVBTV;
  707. hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl);
  708. if(hNextProgHdl == AL_DB_INVALIDHDL)
  709. {
  710. eServiceType = AL_RECTYPE_DVBRADIO;
  711. hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl);
  712. if(hNextProgHdl == AL_DB_INVALIDHDL)
  713. {
  714. dvb_printf("DATABASE Empty!!!\n\n");
  715. }
  716. }
  717. }
  718. }
  719. if(hNextProgHdl == AL_DB_INVALIDHDL)
  720. {
  721. dvb_printf("\n!!!!!!!!!DVBApp_GetNextAvailableService Failed!!!\n\n");
  722. }
  723. else
  724. {
  725. dvb_printf("\n!!!!!!!!!DVBApp_GetNextAvailableService Successfully!!!\n\n");
  726. }
  727. return hNextProgHdl;
  728. }
  729. void DVBApp_RemoveUnstableService(void)
  730. {
  731. AL_RecHandle_t hCurrProgHdl = AL_DB_INVALIDHDL;
  732. AL_RecHandle_t hNextProgHdl = AL_DB_INVALIDHDL;
  733. AL_RecHandle_t hPrevProgHdl = AL_DB_INVALIDHDL;
  734. AL_RecHandle_t hServHdl = AL_DB_INVALIDHDL;
  735. AL_RecHandle_t hCurrTpHdl = AL_DB_INVALIDHDL;
  736. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  737. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  738. DBServAttrib_t stAttribute;
  739. al_uint16 usTsId = 0xffff;
  740. al_uint16 usOrigNetId = 0xffff;
  741. al_uint16 usServiceId = 0xffff;
  742. APP_DVB_Playback_GetCurrServiceType(eNetType);
  743. //add for Background scan fail will show DATABASE_EMPTY begin
  744. bool g_bScanSuccessFlag = FALSE;
  745. hCurrProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eNetType,eServiceType);
  746. hCurrTpHdl = hCurrProgHdl;
  747. AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hCurrTpHdl);
  748. hServHdl = AL_DB_INVALIDHDL;
  749. while (AL_SUCCESS == AL_DB_GetChildRecord(hCurrTpHdl, &hServHdl)
  750. && hServHdl != AL_DB_INVALIDHDL)
  751. {
  752. memset(&stAttribute, 0, sizeof(DBServAttrib_t));
  753. if(AL_SUCCESS != AL_DB_QueryDetailFieldByName(hServHdl, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute))
  754. {
  755. continue;
  756. }
  757. if(stAttribute.delete == al_true)
  758. {
  759. continue;
  760. }
  761. if(stAttribute.unStable == al_false)// Background scan SUCCESS
  762. {
  763. g_bScanSuccessFlag = al_true;
  764. break;
  765. }
  766. }
  767. if(g_bScanSuccessFlag == al_false)
  768. {
  769. printf("[%s:%d] background scan failed\n",__FUNCTION__,__LINE__);
  770. hServHdl = AL_DB_INVALIDHDL;
  771. while (AL_SUCCESS == AL_DB_GetChildRecord(hCurrTpHdl, &hServHdl)
  772. && hServHdl != AL_DB_INVALIDHDL)
  773. {
  774. memset(&stAttribute, 0, sizeof(DBServAttrib_t));
  775. if(AL_SUCCESS != AL_DB_QueryDetailFieldByName(hServHdl, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute))
  776. {
  777. continue;
  778. }
  779. if(stAttribute.unStable == al_true)
  780. {
  781. stAttribute.unStable = al_false;
  782. }
  783. AL_DB_UpdateDetailFieldByName(hServHdl, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute);
  784. }
  785. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  786. DVB_GUIOBJ_PLAYBACK,APP_DVB_INTRA_EVENT_START_PLAYBACK,0);
  787. return; // if Background scan fail,don't remove Prog
  788. }
  789. //add for Background scan fail will show DATABASE_EMPTY end
  790. hCurrProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eNetType,eServiceType);
  791. hCurrTpHdl = hCurrProgHdl;
  792. memset(&stAttribute, 0, sizeof(DBServAttrib_t));
  793. AL_DB_QueryDetailFieldByName(hCurrProgHdl, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute);
  794. if (stAttribute.unStable == al_true)
  795. {
  796. hNextProgHdl = DVBApp_GetNextAvailableService(eNetType,eServiceType,hCurrProgHdl);
  797. }
  798. AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hCurrTpHdl);
  799. #ifdef CONFIG_DVB_SYSTEM_DVBT2_SUPPORT
  800. extern Boolean bT2HideScanProgUnstableFlag;
  801. if (bT2HideScanProgUnstableFlag)//for DVB-T2
  802. {
  803. AL_RecHandle_t hTempTPHandle = AL_DB_INVALIDHDL;
  804. AL_RecHandle_t hProg = AL_DB_INVALIDHDL;
  805. AL_MultiplexDetail_t ts;
  806. AL_DB_QueryDetail(hCurrTpHdl, &ts);
  807. hPrevProgHdl = APP_DVB_Playback_GetPrevProg(eNetType);
  808. AL_MultiplexDetail_t stTSInfo;
  809. memset(&stTSInfo, 0, sizeof(AL_MultiplexDetail_t));
  810. hTempTPHandle = AL_DB_INVALIDHDL;
  811. if (AL_SUCCESS == AL_DB_GetRecord(AL_DB_REQ_GETFIRST, AL_DBTYPE_DVB_T, AL_RECTYPE_DVBMULTIPLEX, &hTempTPHandle))
  812. {
  813. do
  814. {
  815. if (AL_SUCCESS == AL_DB_QueryDetail(hTempTPHandle, &stTSInfo))
  816. {
  817. if (stTSInfo.stDVBTMultiplex.ucTp_dvb_type == EDVB_DELIVER_TYPE_T2)
  818. {
  819. if(ABSV(ts.stDVBTMultiplex.uiFreqK,stTSInfo.stDVBTMultiplex.uiFreqK)<(stTSInfo.stDVBTMultiplex.ucBandwidth*500))
  820. {
  821. hProg = AL_DB_INVALIDHDL;
  822. while (AL_DB_GetChildRecord(hTempTPHandle, &hProg) == AL_SUCCESS && hProg != AL_DB_INVALIDHDL)
  823. {
  824. memset(&stAttribute, 0, sizeof(DBServAttrib_t));
  825. if(AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute))
  826. {
  827. continue;
  828. }
  829. if ((AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"usTsId", (al_void *)&usTsId))
  830. || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"usOrigNetId", (al_void *)&usOrigNetId))
  831. || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"usServiceId", (al_void *)&usServiceId)))
  832. {
  833. printf("Get service info failed!!!\n");
  834. }
  835. if(stAttribute.unStable == al_true)
  836. {
  837. dvb_printf("====unStable remove! hProg=0x%x====\n", hProg);
  838. if (AL_DB_RemoveRecord(hProg) == AL_SUCCESS)
  839. {
  840. AL_Event_UnLockChannels(AL_DBTYPE_DVB_T, usOrigNetId, usTsId, usServiceId);
  841. hProg = AL_DB_INVALIDHDL;
  842. }
  843. else
  844. {
  845. printf("remove service failed!!!\n");
  846. }
  847. if(hPrevProgHdl != AL_DB_INVALIDHDL)
  848. {
  849. if(hProg == hPrevProgHdl)
  850. {
  851. APP_DVB_Playback_SetPrevProg(eNetType,AL_DB_INVALIDHDL);
  852. hPrevProgHdl = AL_DB_INVALIDHDL;
  853. }
  854. }
  855. hProg = AL_DB_INVALIDHDL;
  856. }
  857. }
  858. }
  859. }
  860. }
  861. } while(AL_DB_GetRecord(AL_DB_REQ_GETNEXT, AL_DBTYPE_DVB_T, AL_RECTYPE_DVBMULTIPLEX, &hTempTPHandle) == AL_SUCCESS);
  862. }
  863. bT2HideScanProgUnstableFlag = FALSE;
  864. }
  865. else
  866. #endif
  867. {
  868. hServHdl = AL_DB_INVALIDHDL;
  869. hPrevProgHdl = APP_DVB_Playback_GetPrevProg(eNetType);
  870. while (AL_SUCCESS == AL_DB_GetChildRecord(hCurrTpHdl, &hServHdl)
  871. && hServHdl != AL_DB_INVALIDHDL)
  872. {
  873. memset(&stAttribute, 0, sizeof(DBServAttrib_t));
  874. if(AL_SUCCESS != AL_DB_QueryDetailFieldByName(hServHdl, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute))
  875. {
  876. continue;
  877. }
  878. if ((AL_SUCCESS != AL_DB_QueryDetailFieldByName(hServHdl, (al_uint8 *)"usTsId", (al_void *)&usTsId))
  879. || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hServHdl, (al_uint8 *)"usOrigNetId", (al_void *)&usOrigNetId))
  880. || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hServHdl, (al_uint8 *)"usServiceId", (al_void *)&usServiceId)))
  881. {
  882. printf("Get service info failed!!!\n");
  883. }
  884. if(stAttribute.unStable == al_true)
  885. {
  886. if (AL_DB_RemoveRecord(hServHdl) == AL_SUCCESS)
  887. {
  888. AL_Event_UnLockChannels(AL_DBTYPE_DVB_T, usOrigNetId, usTsId, usServiceId);
  889. }
  890. else
  891. {
  892. printf("remove service failed!!!\n");
  893. }
  894. if(hPrevProgHdl != AL_DB_INVALIDHDL)
  895. {
  896. if(hServHdl == hPrevProgHdl)
  897. {
  898. APP_DVB_Playback_SetPrevProg(eNetType,AL_DB_INVALIDHDL);
  899. hPrevProgHdl = AL_DB_INVALIDHDL;
  900. }
  901. }
  902. hServHdl = AL_DB_INVALIDHDL;
  903. }
  904. }
  905. }
  906. #ifdef SUPPORT_LCN
  907. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO, 0,
  908. sizeof(APP_SETTING_SystemInfo_t), &(g_stSysInfoData));
  909. #ifdef SUPPORT_DVBS_LCN
  910. if (g_stSysInfoData.LcnOnOff == LCN_ON && (eNetType == AL_DBTYPE_DVB_T || eNetType == AL_DBTYPE_DVB_C|| eNetType == AL_DBTYPE_DVB_S))
  911. #else
  912. if (g_stSysInfoData.LcnOnOff == LCN_ON && (eNetType == AL_DBTYPE_DVB_T || eNetType == AL_DBTYPE_DVB_C))
  913. #endif
  914. {
  915. DBLCNConfInfo_t *pLcnConf = AL_LCN_GetLCNConfChannel();
  916. LCN_PreJudgeLCN();
  917. LCN_QueryLCNConflict(pLcnConf);
  918. if (pLcnConf->ConfCount > 0)
  919. {
  920. LCN_AutoAssignConflictLCN();
  921. }
  922. LCN_PostJudgeLCN();
  923. }
  924. #endif
  925. LCN_FreeLCNConflict();
  926. LCN_FreeTRNDDictionary();
  927. APP_DVB_ChannelOrderChecking();
  928. APP_DVB_DataSavingToDB(eNetType);
  929. #ifdef CONFIG_SUPPORT_PVR
  930. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  931. {
  932. if ((hNextProgHdl != AL_DB_INVALIDHDL) &&
  933. (hNextProgHdl != hCurrProgHdl))
  934. {
  935. AL_DB_GetRecordType(hNextProgHdl, &eNetType, &eServiceType);
  936. APP_DVB_Playback_SetCurrentProgHandle(eNetType, eServiceType, hNextProgHdl);
  937. APP_DVB_Playback_SetCurrServiceType(eNetType,eServiceType);
  938. }
  939. dvb_printf("===lxl test %s is called. now PVR is playing ===\n", __FUNCTION__);
  940. return;
  941. }
  942. #endif
  943. if ((hNextProgHdl != AL_DB_INVALIDHDL) &&
  944. (hNextProgHdl != hCurrProgHdl))
  945. {
  946. _DVBApp_Zapping(eServiceType, hNextProgHdl, TRUE, 0, TRUE);
  947. }
  948. else
  949. {
  950. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  951. DVB_GUIOBJ_PLAYBACK,APP_DVB_INTRA_EVENT_START_PLAYBACK,0);
  952. }
  953. }
  954. static void _DVBApp_SimulcaseDispose(UINT32 u32Param)
  955. {
  956. AL_RecHandle_t hProgHdl = AL_DB_INVALIDHDL;
  957. AL_RecHandle_t hCurrProgHdl = AL_DB_INVALIDHDL;
  958. AL_RecHandle_t hCurrTpHdl = AL_DB_INVALIDHDL;
  959. AL_RecHandle_t hServHdl = AL_DB_INVALIDHDL;
  960. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  961. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  962. al_bool bPlay = al_false;
  963. al_uint16 usTsId = 0xffff;
  964. al_uint16 usOrigNetId = 0xffff;
  965. al_uint16 usServiceId = 0xffff;
  966. hProgHdl = (AL_RecHandle_t)u32Param;
  967. APP_DVB_Playback_GetCurrServiceType(eNetType);
  968. hCurrProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eNetType,eServiceType);
  969. if (hCurrProgHdl == hProgHdl)
  970. {
  971. hCurrTpHdl = hCurrProgHdl;
  972. AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hCurrTpHdl);
  973. while (AL_SUCCESS == AL_DB_GetChildRecord(hCurrTpHdl, &hServHdl))
  974. {
  975. if ((hServHdl == AL_DB_INVALIDHDL) || (hServHdl == hProgHdl))
  976. {
  977. continue;
  978. }
  979. bPlay = al_true;
  980. _DVBApp_Zapping(eServiceType, hServHdl, TRUE, 0, TRUE);
  981. }
  982. if (!bPlay)
  983. {
  984. if ((AL_SUCCESS == AL_DB_GetRecord(AL_DB_REQ_GETFIRST, eNetType, eServiceType, &hServHdl))
  985. && (hServHdl != AL_DB_INVALIDHDL))
  986. {
  987. if (hServHdl == hProgHdl)
  988. {
  989. if (AL_SUCCESS == AL_DB_GetRecord(AL_DB_REQ_GETNEXT, eNetType, eServiceType, &hServHdl))
  990. {
  991. _DVBApp_Zapping(eServiceType, hServHdl, TRUE, 0, TRUE);
  992. }
  993. else
  994. {
  995. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  996. APP_DVB_INTRA_EVENT_STOP_PLAYBACK, PLAYBACK_STOP_ALL);
  997. }
  998. }
  999. else
  1000. {
  1001. _DVBApp_Zapping(eServiceType, hServHdl, TRUE, 0, TRUE);
  1002. }
  1003. }
  1004. else
  1005. {
  1006. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  1007. APP_DVB_INTRA_EVENT_STOP_PLAYBACK, PLAYBACK_STOP_ALL);
  1008. }
  1009. }
  1010. }
  1011. if ((AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProgHdl, (al_uint8 *)"usTsId", (al_void *)&usTsId))
  1012. || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProgHdl, (al_uint8 *)"usOrigNetId", (al_void *)&usOrigNetId))
  1013. || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProgHdl, (al_uint8 *)"usServiceId", (al_void *)&usServiceId)))
  1014. {
  1015. printf("Get service info failed!!!\n");
  1016. }
  1017. if (AL_DB_RemoveRecord(hProgHdl) == AL_SUCCESS)
  1018. {
  1019. AL_Event_UnLockChannels(eNetType, usOrigNetId, usTsId, usServiceId);
  1020. }
  1021. else
  1022. {
  1023. printf("remove service failed!!!\n");
  1024. }
  1025. APP_DVB_DataSavingToDB(eNetType);
  1026. }
  1027. static void _DVBApp_ServiceMove(void)
  1028. {
  1029. UINT16 u16CurServiceId = 0;
  1030. AL_PsiMon_NewSrvPosition_t stNewLoction;
  1031. UINT16 i = 0;
  1032. UINT16 u16TpNumber = 0;
  1033. UINT16 u16TsId = 0;
  1034. AL_RecHandle_t itphdl = AL_DB_INVALIDHDL;
  1035. AL_RecHandle_t hProg = AL_DB_INVALIDHDL;
  1036. AL_MultiplexDetail_t stTSInfo;
  1037. AL_DB_EDBType_t eNetType = AL_DBTYPE_MAX;
  1038. AL_ServiceDetail_t stServInfo;
  1039. APP_Source_Type_t eSourType = APP_SOURCE_MAX;
  1040. AL_DB_ERecordType_t service_type = AL_RECTYPE_MAX;
  1041. APP_GUIOBJ_Source_GetCurrSource(&eSourType);
  1042. APP_Database_GetCurrentDBType(eSourType, &eNetType);
  1043. memset(&stServInfo, 0, sizeof(AL_ServiceDetail_t));
  1044. memset(&stTSInfo, 0, sizeof(AL_MultiplexDetail_t));
  1045. hProg = APP_DVB_Playback_GetCurrentProgHandle(eNetType, (AL_RECTYPE_DVBTV |AL_RECTYPE_DVBRADIO|AL_RECTYPE_DVBDATA));
  1046. AL_DB_QueryDetail(hProg, (al_void *)&stServInfo);
  1047. if (eNetType == AL_DBTYPE_DVB_C)
  1048. {
  1049. u16CurServiceId = stServInfo.stDVBCServ.usServiceId;
  1050. }
  1051. else if (eNetType == AL_DBTYPE_DVB_T)
  1052. {
  1053. u16CurServiceId = stServInfo.stDVBTServ.usServiceId;
  1054. }
  1055. else if (eNetType == AL_DBTYPE_DVB_S)
  1056. {
  1057. u16CurServiceId = stServInfo.stDVBSServ.usServiceId;
  1058. }
  1059. AL_PSI_Monitor_GetNewSrvPosition(&stNewLoction);
  1060. if (u16CurServiceId != stNewLoction.usOldServiceId)
  1061. {
  1062. //the program has changed, no need to do anything
  1063. return;
  1064. }
  1065. AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBMULTIPLEX, (al_uint32 *)&u16TpNumber);
  1066. for (i = 0; i < u16TpNumber; i++)
  1067. {
  1068. APP_Database_GetHandleByIndex(eNetType, AL_RECTYPE_DVBMULTIPLEX, i, &itphdl);
  1069. AL_DB_QueryDetail(itphdl, (al_void *)&stTSInfo);
  1070. if (eNetType == AL_DBTYPE_DVB_C)
  1071. {
  1072. u16TsId = stTSInfo.stDVBCMultiplex.usTsId;
  1073. }
  1074. else if (eNetType == AL_DBTYPE_DVB_S)
  1075. {
  1076. u16TsId = stTSInfo.stDVBSMultiplex.usTsId;
  1077. }
  1078. else
  1079. {
  1080. u16TsId = stTSInfo.stDVBTMultiplex.usTsId;
  1081. }
  1082. if(stNewLoction.usTsId == u16TsId)
  1083. {
  1084. break;
  1085. }
  1086. }
  1087. if (i == u16TpNumber)
  1088. {
  1089. return;
  1090. }
  1091. if (APP_DVB_ProgMgr_Query(&service_type, &hProg,
  1092. stNewLoction.usOrgNetId, stNewLoction.usTsId, stNewLoction.usServiceId) == AL_SUCCESS)
  1093. {
  1094. //the service will be remove after remove procedure
  1095. }
  1096. else
  1097. {
  1098. if (eNetType == AL_DBTYPE_DVB_C)
  1099. {
  1100. #ifdef CONFIG_DVB_SYSTEM_DVBC_SUPPORT
  1101. stServInfo.stDVBCServ.usOrigNetId = stNewLoction.usOrgNetId;
  1102. stServInfo.stDVBCServ.usTsId = stNewLoction.usTsId;
  1103. stServInfo.stDVBCServ.usServiceId = stNewLoction.usServiceId;
  1104. AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(SCDBServInfo_t, usOrigNetId),
  1105. FIELD_SIZEOF(SCDBServInfo_t, usOrigNetId), (al_void *)&(stNewLoction.usOrgNetId));
  1106. AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(SCDBServInfo_t, usTsId),
  1107. FIELD_SIZEOF(SCDBServInfo_t, usTsId), (al_void *)&(stNewLoction.usTsId));
  1108. AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(SCDBServInfo_t, usServiceId),
  1109. FIELD_SIZEOF(SCDBServInfo_t, usServiceId), (al_void *)&(stNewLoction.usServiceId));
  1110. service_type = g_stTVInfoData.DVBC_ServType;
  1111. #endif
  1112. }
  1113. else if (eNetType == AL_DBTYPE_DVB_T)
  1114. {
  1115. #ifdef CONFIG_DVB_SYSTEM_DVBT_SUPPORT
  1116. stServInfo.stDVBTServ.usOrigNetId = stNewLoction.usOrgNetId;
  1117. stServInfo.stDVBTServ.usTsId = stNewLoction.usTsId;
  1118. stServInfo.stDVBTServ.usServiceId = stNewLoction.usServiceId;
  1119. AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(STDBServInfo_t, usOrigNetId),
  1120. FIELD_SIZEOF(STDBServInfo_t, usOrigNetId), (al_void *)&(stNewLoction.usOrgNetId));
  1121. AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(STDBServInfo_t, usTsId),
  1122. FIELD_SIZEOF(STDBServInfo_t, usTsId), (al_void *)&(stNewLoction.usTsId));
  1123. AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(STDBServInfo_t, usServiceId),
  1124. FIELD_SIZEOF(STDBServInfo_t, usServiceId), (al_void *)&(stNewLoction.usServiceId));
  1125. service_type = g_stTVInfoData.DVBT_ServType;
  1126. #endif
  1127. }
  1128. else if (eNetType == AL_DBTYPE_DVB_S)
  1129. {
  1130. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  1131. stServInfo.stDVBSServ.usOrigNetId = stNewLoction.usOrgNetId;
  1132. stServInfo.stDVBSServ.usTsId = stNewLoction.usTsId;
  1133. stServInfo.stDVBSServ.usServiceId = stNewLoction.usServiceId;
  1134. AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(SDBServInfo_t, usOrigNetId),
  1135. FIELD_SIZEOF(SDBServInfo_t, usOrigNetId), (al_void *)&(stNewLoction.usOrgNetId));
  1136. AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(SDBServInfo_t, usTsId),
  1137. FIELD_SIZEOF(SDBServInfo_t, usTsId), (al_void *)&(stNewLoction.usTsId));
  1138. AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(SDBServInfo_t, usServiceId),
  1139. FIELD_SIZEOF(SDBServInfo_t, usServiceId), (al_void *)&(stNewLoction.usServiceId));
  1140. service_type = g_stTVInfoData.DVBS_ServType;
  1141. #endif
  1142. }
  1143. hProg = APP_DVB_Playback_GetCurrentProgHandle(eNetType, service_type);
  1144. }
  1145. APP_DVB_Playback_SetNextServiceType(service_type);
  1146. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_ZAPPING|PASS_TO_SYSAPP, hProg);
  1147. }
  1148. #ifdef MP4_SUB_PREFER_LANG
  1149. static void _DVBApp_SetMp4SubcodepagebyPreferLang(void)
  1150. {
  1151. int dret = 0;
  1152. LANGName_t eMp4SubCodePage = 0;
  1153. eMp4SubCodePage = Dvb_GetCurMP4FontCodePage(Dvb_GetCurMP4CodePageType(NULL), NULL);
  1154. dret = FMW_SetSUBTOSDCodePage((int)eMp4SubCodePage);
  1155. return ;
  1156. }
  1157. #endif
  1158. static INT32 _DVBApp_BackgroundMonitor_Init(void)
  1159. {
  1160. MID_Status_t ret = MID_ERR_FAILURE;
  1161. #if defined(CONFIG_SUPPORT_OTA_UPGRADE)
  1162. OtaMonComCallback_t callback;
  1163. callback._pfMonDSICallbk = APP_DVB_OTACallback;
  1164. callback._pfMonONIDCallb = APP_DVB_CheckIsONIDMatched;
  1165. callback._pfMonEXITCallb = APP_DVB_OTAMonExitCallback;
  1166. callback._pfMonStateCallbk = APP_DVB_NotifyOTAState;
  1167. ret = MID_OtaMonInit(callback);
  1168. if (MID_OTA_OtaMonThreadDataMutexCreate() == GL_SUCCESS)
  1169. {
  1170. MID_OTA_GetOTAInitInfo_FromFlah();
  1171. dvb_printf("Ota Mutex Create success \n");
  1172. #ifdef CONFIG_SUPPORT_SSU_ENHANCE_UPGRADE
  1173. MID_OtaMonUntInit(APP_DVB_OTASECallback);
  1174. #endif
  1175. }
  1176. else
  1177. {
  1178. dvb_printf("Ota Mutex Create Failed \n");
  1179. }
  1180. if (MID_SUCCESS != ret)
  1181. {
  1182. return SP_ERR_FAILURE;
  1183. }
  1184. #endif
  1185. #ifdef CONFIG_SUPPORT_MHEG5
  1186. MHEG5APP_Init();
  1187. MHEG5APP_RegistCallback(APP_DVB_Mheg5_Callback);
  1188. #ifdef CONFIG_SUPPORT_MHEG5_ICS
  1189. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  1190. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0, sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  1191. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO, 0, sizeof(APP_SETTING_SystemInfo_t), &(g_stSysInfoData));
  1192. MHEG5_ICS_SetPinStatus(g_stFeatureData.ChildLock);
  1193. if(g_stSysInfoData.progrmADSwitch == AUDIO_AD_ON)
  1194. {
  1195. MHEG5_SetAudioDescPref(TRUE);
  1196. }
  1197. else
  1198. {
  1199. MHEG5_SetAudioDescPref(FALSE);
  1200. }
  1201. if(g_stUserInfoData.Subtitle == APP_SWITCH_ON)
  1202. {
  1203. MHEG5_SetSubtitlePref(TRUE);
  1204. }
  1205. else
  1206. {
  1207. MHEG5_SetSubtitlePref(FALSE);
  1208. }
  1209. U8BIT *primaryAudio = APP_Language_GetISO639ByIndx(g_stFeatureData.PreferredAudio1st, APP_DATA_LANG_TYPE_MULTIAUDIO);
  1210. primaryAudio = primaryAudio ? primaryAudio : APP_Language_GetISO639_2ByIndx(g_stFeatureData.PreferredAudio1st, APP_DATA_LANG_TYPE_MULTIAUDIO);
  1211. U8BIT *secondaryAudio = NULL;
  1212. #ifdef SUPPORT_2ND_PREFER_AUDIO
  1213. secondaryAudio = APP_Language_GetISO639ByIndx(g_stFeatureData.PreferredAudio2nd, APP_DATA_LANG_TYPE_MULTIAUDIO);
  1214. secondaryAudio = secondaryAudio ? secondaryAudio : APP_Language_GetISO639_2ByIndx(g_stFeatureData.PreferredAudio2nd, APP_DATA_LANG_TYPE_MULTIAUDIO);
  1215. #endif
  1216. U8BIT *primarySubtitle = APP_Language_GetISO639ByIndx(g_stFeatureData.PreferredSubtitle1st, APP_DATA_LANG_TYPE_SUBTITLE);
  1217. primarySubtitle = primarySubtitle ? primarySubtitle : APP_Language_GetISO639_2ByIndx(g_stFeatureData.PreferredSubtitle1st, APP_DATA_LANG_TYPE_SUBTITLE);
  1218. U8BIT *secondarySubtitle = NULL;
  1219. #ifdef SUPPORT_2ND_PREFER_SUBTITLE
  1220. secondarySubtitle = APP_Language_GetISO639ByIndx(g_stFeatureData.PreferredSubtitle2nd, APP_DATA_LANG_TYPE_SUBTITLE);
  1221. secondarySubtitle = secondarySubtitle ? secondarySubtitle : APP_Language_GetISO639_2ByIndx(g_stFeatureData.PreferredSubtitle2nd, APP_DATA_LANG_TYPE_SUBTITLE);
  1222. #endif
  1223. MHEG5_ICS_SetPrefAudioLang((char*)primaryAudio, (char*)secondaryAudio);
  1224. MHEG5_ICS_SetPrefSubtLang((char*)primarySubtitle, (char*)secondarySubtitle);
  1225. #endif
  1226. #endif
  1227. #ifdef CONFIG_CI_SUPPORT
  1228. #ifndef CONFIG_CIPLUS_SUPPORT
  1229. //extern void MID_CI_DateTimeUpdate(void * pData);
  1230. //AddTDTMonitoringListener(MON_LISTENER_ID_CODE_FINAL, MID_CI_DateTimeUpdate);
  1231. #endif
  1232. #endif
  1233. if (MID_SUCCESS != ret)
  1234. {
  1235. return SP_ERR_FAILURE;
  1236. }
  1237. return SP_SUCCESS;
  1238. }
  1239. static void _DVBApp_EpgInit(void)
  1240. {
  1241. UINT8 u8SysSet;
  1242. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  1243. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  1244. #ifndef CONFIG_EPG_LANG_DEFAULT_BY_OSDLANG
  1245. u8SysSet = g_stFeatureData.DigitalTTLang;
  1246. #else
  1247. u8SysSet = g_stFeatureData.OSDLang;
  1248. #endif
  1249. APP_DVB_EPG_SetEpgLanguage(u8SysSet);
  1250. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  1251. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  1252. u8SysSet = g_stChannelData.Country;
  1253. if (u8SysSet >= MAX_AREA)
  1254. {
  1255. u8SysSet = 0;
  1256. }
  1257. AL_Event_SetCountryCode(APP_Area_GetCountryCode(u8SysSet));
  1258. #ifdef CONFIG_DVB_SYSTEM
  1259. if (APP_Area_SupportDtg())
  1260. {
  1261. AL_Event_SetDTGSupport(al_true);
  1262. }
  1263. else
  1264. #endif
  1265. {
  1266. AL_Event_SetDTGSupport(al_false);
  1267. }
  1268. }
  1269. #if (defined(CONFIG_DVB_SYSTEM_DVBS_SUPPORT)||defined(CONFIG_DVB_SYSTEM_DVBT_SUPPORT)||defined(CONFIG_DVB_SYSTEM_DVBC_SUPPORT))
  1270. static al_bool _DVBApp_SerMatch(al_void const *pRec, al_void const *pRecToAdd)
  1271. {
  1272. bool matchFlag = FALSE;
  1273. al_uint8 area = 0;
  1274. AL_ServiceDetail_t *ServInfor = (AL_ServiceDetail_t *)pRec;
  1275. AL_ServiceDetail_t *AddServInfor = (AL_ServiceDetail_t *)pRecToAdd;
  1276. AL_DB_EDBType_t eDBType = AL_DBTYPE_MAX;
  1277. APP_Database_GetCurrentDBType(APP_SOURCE_DTV, &eDBType);
  1278. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  1279. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  1280. area = g_stChannelData.Country;
  1281. #ifdef SUPPORT_DELETE_SAME_SERVICES
  1282. int u16DeleteSameServices = 0;//0: default(expect: Russia need save same services) 1: on(keep current method) 2: off(save same services)
  1283. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0,
  1284. sizeof(APP_SETTING_FactoryUser_t), &(g_stFactoryUserData));
  1285. u16DeleteSameServices = g_stFactoryUserData.Function.n_Funct_DeleteSameServices;
  1286. if (2 == u16DeleteSameServices)// 2: save same services
  1287. {
  1288. matchFlag = 0;
  1289. }
  1290. else
  1291. #endif
  1292. {
  1293. switch (area)
  1294. {
  1295. #ifdef CONFIG_DVB_SYSTEM
  1296. case AREA_ENGLAND:
  1297. /*
  1298. ** Refer to page 37 fo NorDig Unified ver 2.1:
  1299. ** A service is uniquely identified by its DVB triplet (original_network_id, transport_stream_id and
  1300. ** service_id) in all NorDig compliant terrestrial networks, except for the Norwegian terrestrial network,
  1301. ** where only original_network_id and service_id are used to identify a service.
  1302. */
  1303. case AREA_NORWAY:
  1304. if (AL_DBTYPE_DVB_T == eDBType)
  1305. {
  1306. matchFlag = ((ServInfor->stDVBTServ.usOrigNetId == AddServInfor->stDVBTServ.usOrigNetId)
  1307. && (ServInfor->stDVBTServ.usServiceId == AddServInfor->stDVBTServ.usServiceId)
  1308. && (ServInfor->stDVBTServ.eTvRadioType == AddServInfor->stDVBTServ.eTvRadioType));
  1309. }
  1310. else if (AL_DBTYPE_DVB_C == eDBType)
  1311. {
  1312. matchFlag = ((ServInfor->stDVBCServ.usOrigNetId == AddServInfor->stDVBCServ.usOrigNetId)
  1313. && (ServInfor->stDVBCServ.usServiceId == AddServInfor->stDVBCServ.usServiceId)
  1314. && (ServInfor->stDVBCServ.eTvRadioType == AddServInfor->stDVBCServ.eTvRadioType));
  1315. }
  1316. else if (AL_DBTYPE_DVB_S == eDBType)
  1317. {
  1318. matchFlag = ((ServInfor->stDVBSServ.usOrigNetId == AddServInfor->stDVBSServ.usOrigNetId)
  1319. && (ServInfor->stDVBSServ.usServiceId == AddServInfor->stDVBSServ.usServiceId)
  1320. && (ServInfor->stDVBSServ.eTvRadioType == AddServInfor->stDVBSServ.eTvRadioType));
  1321. }
  1322. break;
  1323. #ifdef SCAN_FREQ_OFFSET_RANGE_ENLARGE
  1324. case AREA_FRANCE:
  1325. if (AL_DBTYPE_DVB_T == eDBType)
  1326. {
  1327. matchFlag = ((ServInfor->stDVBTServ.usOrigNetId == AddServInfor->stDVBTServ.usOrigNetId)
  1328. && (ServInfor->stDVBTServ.usServiceId == AddServInfor->stDVBTServ.usServiceId)
  1329. && (ServInfor->stDVBTServ.eTvRadioType == AddServInfor->stDVBTServ.eTvRadioType));
  1330. }
  1331. else if (AL_DBTYPE_DVB_C == eDBType)
  1332. {
  1333. matchFlag = ((ServInfor->stDVBCServ.usOrigNetId == AddServInfor->stDVBCServ.usOrigNetId)
  1334. && (ServInfor->stDVBCServ.usServiceId == AddServInfor->stDVBCServ.usServiceId)
  1335. && (ServInfor->stDVBCServ.eTvRadioType == AddServInfor->stDVBCServ.eTvRadioType));
  1336. }
  1337. else if (AL_DBTYPE_DVB_S == eDBType)
  1338. {
  1339. matchFlag = ((ServInfor->stDVBSServ.usOrigNetId == AddServInfor->stDVBSServ.usOrigNetId)
  1340. && (ServInfor->stDVBSServ.usServiceId == AddServInfor->stDVBSServ.usServiceId)
  1341. && (ServInfor->stDVBSServ.eTvRadioType == AddServInfor->stDVBSServ.eTvRadioType));
  1342. }
  1343. break;
  1344. #endif
  1345. case AREA_ITALY:
  1346. case AREA_SPAIN:
  1347. case AREA_NETHERLANDS:
  1348. case AREA_FINLAND:
  1349. case AREA_SWEDEN:
  1350. case AREA_DENMARK:
  1351. #endif
  1352. #ifdef CONFIG_AUS_DVB_SYSTEM
  1353. case AREA_AUSTRALIA:
  1354. case AREA_NEW_ZEALAND:
  1355. case AREA_SINGAPORE:
  1356. case AREA_AUS_OTHER:
  1357. if (AL_DBTYPE_DVB_T == eDBType)
  1358. {
  1359. matchFlag = ((ServInfor->stDVBTServ.usOrigNetId == AddServInfor->stDVBTServ.usOrigNetId)
  1360. && (ServInfor->stDVBTServ.usServiceId == AddServInfor->stDVBTServ.usServiceId)
  1361. && (ServInfor->stDVBTServ.usTsId == AddServInfor->stDVBTServ.usTsId)
  1362. && (ServInfor->stDVBTServ.eTvRadioType == AddServInfor->stDVBTServ.eTvRadioType));
  1363. }
  1364. else if (AL_DBTYPE_DVB_C == eDBType)
  1365. {
  1366. matchFlag = ((ServInfor->stDVBCServ.usOrigNetId == AddServInfor->stDVBCServ.usOrigNetId)
  1367. && (ServInfor->stDVBCServ.usServiceId == AddServInfor->stDVBCServ.usServiceId)
  1368. && (ServInfor->stDVBCServ.usTsId == AddServInfor->stDVBCServ.usTsId)
  1369. && (ServInfor->stDVBCServ.eTvRadioType == AddServInfor->stDVBCServ.eTvRadioType));
  1370. }
  1371. else if (AL_DBTYPE_DVB_S == eDBType)
  1372. {
  1373. matchFlag = ((ServInfor->stDVBSServ.usOrigNetId == AddServInfor->stDVBSServ.usOrigNetId)
  1374. && (ServInfor->stDVBSServ.usServiceId == AddServInfor->stDVBSServ.usServiceId)
  1375. && (ServInfor->stDVBSServ.usTsId == AddServInfor->stDVBSServ.usTsId)
  1376. && (ServInfor->stDVBSServ.eTvRadioType == AddServInfor->stDVBSServ.eTvRadioType));
  1377. }
  1378. break;
  1379. #endif
  1380. #ifdef SUPPORT_DELETE_SAME_SERVICES
  1381. #if defined (CONFIG_DVB_SYSTEM)
  1382. case AREA_RUSSIA:
  1383. if (0 == g_stFactoryUserData.Function.n_Funct_DeleteSameServices)
  1384. {
  1385. matchFlag = 0;
  1386. }
  1387. #endif
  1388. #endif
  1389. default:
  1390. if (AL_DBTYPE_DVB_T == eDBType)
  1391. {
  1392. matchFlag = ((ServInfor->stDVBTServ.usOrigNetId == AddServInfor->stDVBTServ.usOrigNetId)
  1393. && (ServInfor->stDVBTServ.usServiceId == AddServInfor->stDVBTServ.usServiceId)
  1394. && (ServInfor->stDVBTServ.usTsId == AddServInfor->stDVBTServ.usTsId)
  1395. && (ServInfor->stDVBTServ.eTvRadioType == AddServInfor->stDVBTServ.eTvRadioType));
  1396. }
  1397. else if (AL_DBTYPE_DVB_C == eDBType)
  1398. {
  1399. matchFlag = ((ServInfor->stDVBCServ.usOrigNetId == AddServInfor->stDVBCServ.usOrigNetId)
  1400. && (ServInfor->stDVBCServ.usServiceId == AddServInfor->stDVBCServ.usServiceId)
  1401. && (ServInfor->stDVBCServ.usTsId == AddServInfor->stDVBCServ.usTsId)
  1402. && (ServInfor->stDVBCServ.eTvRadioType == AddServInfor->stDVBCServ.eTvRadioType));
  1403. }
  1404. else if (AL_DBTYPE_DVB_S == eDBType)
  1405. {
  1406. matchFlag = ((ServInfor->stDVBSServ.usOrigNetId == AddServInfor->stDVBSServ.usOrigNetId)
  1407. && (ServInfor->stDVBSServ.usServiceId == AddServInfor->stDVBSServ.usServiceId)
  1408. && (ServInfor->stDVBSServ.usTsId == AddServInfor->stDVBSServ.usTsId)
  1409. && (ServInfor->stDVBSServ.eTvRadioType == AddServInfor->stDVBSServ.eTvRadioType));
  1410. }
  1411. break;
  1412. }
  1413. }
  1414. if (matchFlag)
  1415. {
  1416. FW_DEBF("[%s:%d] matchFlag @@@@@@@@@@@@@@@@@@@@@@@@@\n",__FUNCTION__,__LINE__);
  1417. FW_DEBF("[%s:%d] usOrigNetId: %d, %d; usServiceId: %d, %d; usTsId: %d, %d; eTvRadioType: %d, %d\n",
  1418. __FUNCTION__,__LINE__,ServInfor->stDVBSServ.usOrigNetId, AddServInfor->stDVBSServ.usOrigNetId,
  1419. ServInfor->stDVBSServ.usServiceId, AddServInfor->stDVBSServ.usServiceId,
  1420. ServInfor->stDVBSServ.usTsId, AddServInfor->stDVBSServ.usTsId,
  1421. ServInfor->stDVBSServ.eTvRadioType, AddServInfor->stDVBSServ.eTvRadioType);
  1422. FW_DEBF("[%s:%d] usDataPID: %d, %d; usStrmID: %d, %d; usStrmID: %d, %d; usECMPID: %d, %d; usCompTag: %d, %d \n",
  1423. __FUNCTION__,__LINE__,ServInfor->stDVBSServ.stVideoPid.usDataPID, AddServInfor->stDVBSServ.stVideoPid.usDataPID,
  1424. ServInfor->stDVBSServ.stVideoPid.usStrmID, AddServInfor->stDVBSServ.stVideoPid.usStrmID,
  1425. ServInfor->stDVBSServ.stVideoPid.usCodec, AddServInfor->stDVBSServ.stVideoPid.usCodec,
  1426. ServInfor->stDVBSServ.stVideoPid.usECMPID, AddServInfor->stDVBSServ.stVideoPid.usECMPID,
  1427. ServInfor->stDVBSServ.stVideoPid.usCompTag, AddServInfor->stDVBSServ.stVideoPid.usCompTag);
  1428. FW_DEBF("[%s:%d] usPcrPid: %d, %d; stAudioPid[0].usDataPID: %d, %d; stAudioPid[1].usDataPID: %d, %d; stAudioPid[2].usDataPID: %d, %d\n",
  1429. __FUNCTION__,__LINE__,ServInfor->stDVBSServ.usPcrPid, AddServInfor->stDVBSServ.usPcrPid,
  1430. ServInfor->stDVBSServ.stAudioPid[0].usDataPID, AddServInfor->stDVBSServ.stAudioPid[0].usDataPID,
  1431. ServInfor->stDVBSServ.stAudioPid[1].usDataPID, AddServInfor->stDVBSServ.stAudioPid[1].usDataPID,
  1432. ServInfor->stDVBSServ.stAudioPid[2].usDataPID, AddServInfor->stDVBSServ.stAudioPid[2].usDataPID);
  1433. }
  1434. return matchFlag;
  1435. }
  1436. #endif
  1437. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  1438. static al_bool _DVBApp_TPMatch_S(al_void const *pRecToAdd, al_void *pRec)
  1439. {
  1440. AL_MultiplexDetail_t *TPInfor = (AL_MultiplexDetail_t *)pRec;
  1441. AL_MultiplexDetail_t *AddTPInfor = (AL_MultiplexDetail_t *)pRecToAdd;
  1442. return ((TPInfor->stDVBSMultiplex.usFreqM == AddTPInfor->stDVBSMultiplex.usFreqM)
  1443. && (TPInfor->stDVBSMultiplex.ucSkew == AddTPInfor->stDVBSMultiplex.ucSkew));
  1444. #ifdef SUPPORT_HIERARCHY_MODE
  1445. //&& (TPInfor->stDVBSMultiplex.ucHierarchyMode == AddTPInfor->stDVBTMultiplex.ucHierarchyMode)
  1446. #endif
  1447. }
  1448. #endif
  1449. #ifdef CONFIG_DVB_SYSTEM_DVBT_SUPPORT
  1450. static al_bool _DVBApp_TPMatch_T(al_void const *pRecToAdd, al_void *pRec)
  1451. {
  1452. AL_MultiplexDetail_t *TPInfor = (AL_MultiplexDetail_t *)pRec;
  1453. AL_MultiplexDetail_t *AddTPInfor = (AL_MultiplexDetail_t *)pRecToAdd;
  1454. return ((TPInfor->stDVBTMultiplex.usOrigNetId == AddTPInfor->stDVBTMultiplex.usOrigNetId)
  1455. && (TPInfor->stDVBTMultiplex.usTsId == AddTPInfor->stDVBTMultiplex.usTsId)
  1456. && (TPInfor->stDVBTMultiplex.uiFreqK == AddTPInfor->stDVBTMultiplex.uiFreqK)
  1457. #ifdef SUPPORT_HIERARCHY_MODE
  1458. && (TPInfor->stDVBTMultiplex.ucHierarchyMode == AddTPInfor->stDVBTMultiplex.ucHierarchyMode)
  1459. #endif
  1460. );
  1461. }
  1462. #endif
  1463. #ifdef CONFIG_DVB_SYSTEM_DVBC_SUPPORT
  1464. static al_bool _DVBApp_TPMatch_C(al_void const *pRecToAdd, al_void *pRec)
  1465. {
  1466. AL_MultiplexDetail_t *TPInfor = (AL_MultiplexDetail_t *)pRec;
  1467. AL_MultiplexDetail_t *AddTPInfor = (AL_MultiplexDetail_t *)pRecToAdd;
  1468. return ((TPInfor->stDVBCMultiplex.usOrigNetId == AddTPInfor->stDVBCMultiplex.usOrigNetId)
  1469. && (TPInfor->stDVBCMultiplex.usTsId == AddTPInfor->stDVBCMultiplex.usTsId)
  1470. && (TPInfor->stDVBCMultiplex.uiFreqK == AddTPInfor->stDVBCMultiplex.uiFreqK)
  1471. //&& (TPInfor->stDVBCMultiplex.ucAreaIndex == AddTPInfor->stDVBCMultiplex.ucAreaIndex)
  1472. #ifdef SUPPORT_HIERARCHY_MODE
  1473. //&& (TPInfor->stDVBCMultiplex.ucHierarchyMode == AddTPInfor->stDVBCMultiplex.ucHierarchyMode)
  1474. #endif
  1475. );
  1476. }
  1477. #endif
  1478. #if defined( CONFIG_DVB_SYSTEM_DVBS_SUPPORT)
  1479. static al_bool _DVBApp_NetworkMatch_S(al_void const *pRecToAdd, al_void *pRec)
  1480. {
  1481. AL_NetworkDetail_t *NetInfor = (AL_NetworkDetail_t *)pRec;
  1482. AL_NetworkDetail_t *AddNetInfor = (AL_NetworkDetail_t *)pRecToAdd;
  1483. return (((NetInfor->stDVBSNetwork.ucEastWest == AddNetInfor->stDVBSNetwork.ucEastWest
  1484. && NetInfor->stDVBSNetwork.iLongitude == AddNetInfor->stDVBSNetwork.iLongitude)
  1485. && NetInfor->stDVBSNetwork.uiLNBFreq == AddNetInfor->stDVBSNetwork.uiLNBFreq)
  1486. //|| !strcmp((char *)NetInfor->stDVBSNetwork.szNetName, (char *)AddNetInfor->stDVBSNetwork.szNetName)
  1487. );
  1488. }
  1489. #endif
  1490. #if defined (CONFIG_DVB_SYSTEM_DVBT_SUPPORT)
  1491. static al_bool _DVBApp_NetworkMatch_T(al_void const *pRecToAdd, al_void *pRec)
  1492. {
  1493. AL_NetworkDetail_t *NetInfor = (AL_NetworkDetail_t *)pRec;
  1494. AL_NetworkDetail_t *AddNetInfor = (AL_NetworkDetail_t *)pRecToAdd;
  1495. return (NetInfor->stDVBTNetwork.usNetId == AddNetInfor->stDVBTNetwork.usNetId);
  1496. }
  1497. #endif
  1498. #if defined (CONFIG_DVB_SYSTEM_DVBC_SUPPORT)
  1499. static al_bool _DVBApp_NetworkMatch_C(al_void const *pRecToAdd, al_void *pRec)
  1500. {
  1501. AL_NetworkDetail_t *NetInfor = (AL_NetworkDetail_t *)pRec;
  1502. AL_NetworkDetail_t *AddNetInfor = (AL_NetworkDetail_t *)pRecToAdd;
  1503. return (NetInfor->stDVBCNetwork.usNetId == AddNetInfor->stDVBCNetwork.usNetId);
  1504. }
  1505. #endif
  1506. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  1507. void DVBApp_LoadCustomerDB(AL_DB_EDBType_t eDBType)
  1508. {
  1509. #ifdef CONFIG_DVB_SYSTEM_DVBS_DEFAULT_DATABASE
  1510. al_void *pDefDBBakStart = NULL;
  1511. al_uint32 uiDefDBBakSize = 0;
  1512. al_uint32 dArea = 0;
  1513. dvb_printf("[%s:%d] Load DVB-S Default Database Data to Database\n", __FUNCTION__, __LINE__);
  1514. if (eDBType == AL_DBTYPE_DVB_S)
  1515. {
  1516. CDBIActiveDBModule(CDBI_DBTYPE_DVB_S, al_false);
  1517. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  1518. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  1519. dArea = g_stChannelData.Country;
  1520. if (dArea == AREA_AUSTRIA)
  1521. {
  1522. uiDefDBBakSize = Cmd_LookupFlashtableSize((al_uint8*)"S_AUT_DB");
  1523. pDefDBBakStart = malloc(uiDefDBBakSize);
  1524. if (pDefDBBakStart == al_null)
  1525. {
  1526. goto Leave;
  1527. }
  1528. if (Cmd_LookupFlashtableAddr((al_uint8*)"S_AUT_DB", (al_uint32)pDefDBBakStart, uiDefDBBakSize))
  1529. {
  1530. goto LeaveWithFree;
  1531. }
  1532. }
  1533. else if (dArea == AREA_GERMANY)
  1534. {
  1535. uiDefDBBakSize = Cmd_LookupFlashtableSize((al_uint8*)"S_DEU_DB");
  1536. pDefDBBakStart = malloc(uiDefDBBakSize);
  1537. if (pDefDBBakStart == al_null)
  1538. {
  1539. goto Leave;
  1540. }
  1541. if (Cmd_LookupFlashtableAddr((al_uint8*)"S_DEU_DB", (al_uint32)pDefDBBakStart, uiDefDBBakSize))
  1542. {
  1543. goto LeaveWithFree;
  1544. }
  1545. }
  1546. else
  1547. {
  1548. uiDefDBBakSize = Cmd_LookupFlashtableSize((al_uint8*)"S_OTH_DB");
  1549. pDefDBBakStart = malloc(uiDefDBBakSize);
  1550. if (pDefDBBakStart == al_null)
  1551. {
  1552. goto Leave;
  1553. }
  1554. if (Cmd_LookupFlashtableAddr((al_uint8*)"S_OTH_DB", (al_uint32)pDefDBBakStart, uiDefDBBakSize))
  1555. {
  1556. goto LeaveWithFree;
  1557. }
  1558. }
  1559. if (Cmd_NVMWrite(ENVMPurposeIDDatabaseDVBS, al_false, uiDefDBBakSize, (UINT8 *)pDefDBBakStart))
  1560. {
  1561. dvb_printf("[%s:%d] NVM Write Error~\n", __FUNCTION__, __LINE__);
  1562. }
  1563. LeaveWithFree:
  1564. free(pDefDBBakStart);
  1565. Leave:
  1566. CDBIActiveDBModule(CDBI_DBTYPE_DVB_S, al_true);
  1567. }
  1568. #else
  1569. DVBApp_LoaddefaultDB(AL_DBTYPE_DVB_S);
  1570. #endif
  1571. }
  1572. void DVBApp_LoaddefaultDB(AL_DB_EDBType_t eDBType)
  1573. {
  1574. AL_NetworkDetail_t stNetInfo;
  1575. AL_MultiplexDetail_t stTPInfo;
  1576. if (eDBType == AL_DBTYPE_DVB_S)
  1577. {
  1578. const SDBNetworkInfo_t *pNewNetTableInfo;
  1579. const APP_DVBS_NetTP_table *pNewTPTableInfo;
  1580. AL_RecHandle_t hNet = AL_DB_INVALIDHDL;
  1581. AL_RecHandle_t hTp = AL_DB_INVALIDHDL;
  1582. al_uint32 i = 0;
  1583. al_uint32 j = 0;
  1584. APP_Area_GetNetTbl(&pNewNetTableInfo);
  1585. APP_Area_GetTpNetTbl(&pNewTPTableInfo);
  1586. for(; i < APP_Area_GetNetTblSize(); i++)
  1587. {
  1588. memcpy(&stNetInfo.stDVBSNetwork, pNewNetTableInfo + i, sizeof(SDBNetworkInfo_t));
  1589. AL_DB_AddRecord(AL_DBTYPE_DVB_S, AL_RECTYPE_DVBNETWORK, &stNetInfo, AL_DB_INVALIDHDL, &hNet);
  1590. for (j=0; j < APP_Area_GetTpNetTblSize(); j++)
  1591. {
  1592. if ((pNewTPTableInfo+j)->u32SateIndex == i)
  1593. {
  1594. memset(&stTPInfo.stDVBSMultiplex, 0, sizeof (SDBMultiplexInfo_t));
  1595. memcpy(&stTPInfo.stDVBSMultiplex, &(pNewTPTableInfo+j)->stTPinfo, sizeof (SDBMultiplexInfo_t));
  1596. AL_DB_AddRecord(AL_DBTYPE_DVB_S, AL_RECTYPE_DVBMULTIPLEX, &stTPInfo, hNet, &hTp);
  1597. }
  1598. }
  1599. }
  1600. }
  1601. }
  1602. void DVBApp_RemoveAllService(AL_DB_EDBType_t eDBType)
  1603. {
  1604. AL_RecHandle_t hNet = AL_DB_INVALIDHDL;
  1605. AL_RecHandle_t hProg = AL_DB_INVALIDHDL;
  1606. AL_RecHandle_t hTPHandle = AL_DB_INVALIDHDL;
  1607. al_uint16 usTsId = 0xffff;
  1608. al_uint16 usOrigNetId = 0xffff;
  1609. al_uint16 usServiceId = 0xffff;
  1610. if (AL_SUCCESS == AL_DB_GetRecord(AL_DB_REQ_GETFIRST, eDBType, AL_RECTYPE_DVBNETWORK, &hNet))
  1611. {
  1612. do
  1613. {
  1614. while (AL_DB_GetChildRecord(hNet, &hTPHandle) == AL_SUCCESS)
  1615. {
  1616. while (AL_DB_GetChildRecord(hTPHandle, &hProg) == AL_SUCCESS)
  1617. {
  1618. if ((AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"usTsId", (al_void *)&usTsId))
  1619. || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"usOrigNetId", (al_void *)&usOrigNetId))
  1620. || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"usServiceId", (al_void *)&usServiceId)))
  1621. {
  1622. printf("Get service info failed!!!\n");
  1623. }
  1624. if (AL_DB_RemoveRecord(hProg) == AL_SUCCESS)
  1625. {
  1626. AL_Event_UnLockChannels(eDBType, usOrigNetId, usTsId, usServiceId);
  1627. }
  1628. else
  1629. {
  1630. printf("remove service failed!!!\n");
  1631. }
  1632. hProg = AL_DB_INVALIDHDL;
  1633. }
  1634. }
  1635. }while (AL_SUCCESS == AL_DB_GetRecord(AL_DB_REQ_GETNEXT, eDBType, AL_RECTYPE_DVBNETWORK, &hNet));
  1636. }
  1637. }
  1638. #endif
  1639. #ifdef SUPPORT_FACTORY_AUTO_TEST
  1640. static void _DVBApp_PrestoreProgram(AL_DB_EDBType_t eDBType)
  1641. {
  1642. AL_Return_t enRet = AL_SUCCESS;
  1643. NOT_USED(enRet);
  1644. static AL_RecHandle_t hNetHdl = AL_DB_INVALIDHDL;
  1645. AL_NetworkDetail_t stRootNet;
  1646. AL_RecHandle_t hProg = AL_DB_INVALIDHDL;
  1647. AL_RecHandle_t hProg1 = AL_DB_INVALIDHDL;
  1648. AL_RecHandle_t hProg2 = AL_DB_INVALIDHDL;
  1649. #ifdef CONFIG_DVB_SYSTEM_DVBT2_SUPPORT
  1650. AL_RecHandle_t hProg3 = AL_DB_INVALIDHDL;
  1651. #endif
  1652. AL_RecHandle_t hTp = AL_DB_INVALIDHDL;
  1653. AL_MultiplexDetail_t ts;
  1654. AL_ServiceDetail_t Program;
  1655. AL_FW_SwitchDBModule(AL_DBTYPE_DVB_C);
  1656. AL_DB_Reset(AL_DBTYPE_DVB_C, al_true);
  1657. AL_Event_UnLockChannels(AL_DBTYPE_DVB_C, RESERVED_ORIGINAL_NET_ID, RESERVED_TRANSPORT_ID, RESERVED_SERVICE_ID);
  1658. AL_PR_DeleteAllSch(AL_DBTYPE_DVB_C,AL_PR_EVT_REM | AL_PR_SRV_REM);
  1659. memset(&ts, 0, sizeof(AL_MultiplexDetail_t));
  1660. ts.stDVBCMultiplex.uiFreqK = 121000;
  1661. ts.stDVBCMultiplex.usSymRateK = 6875;
  1662. ts.stDVBCMultiplex.ucQamSize = AL_QAM_64;
  1663. ts.stDVBCMultiplex.usEMMPID = 0x1FFF;
  1664. ts.stDVBCMultiplex.usNetId = 0x1234;
  1665. ts.stDVBCMultiplex.usOrigNetId = 0x1234;
  1666. ts.stDVBCMultiplex.usTsId = 0x1234;
  1667. //AL_DB_AddRecord(AL_DBTYPE_DVB_C, AL_RECTYPE_DVBMULTIPLEX, &ts, AL_DB_INVALIDHDL, &hTp);
  1668. memset(&stRootNet, 0, sizeof(AL_NetworkDetail_t));
  1669. stRootNet.stDVBCNetwork.usNetId = 1;
  1670. memcpy(stRootNet.stDVBCNetwork.szNetName, "Dummy",6);
  1671. hNetHdl = AL_DB_INVALIDHDL;
  1672. AL_DB_AddRecord(AL_DBTYPE_DVB_C, AL_RECTYPE_DVBNETWORK, &stRootNet, AL_DB_INVALIDHDL, &hNetHdl);
  1673. AL_DB_AddRecord(AL_DBTYPE_DVB_C, AL_RECTYPE_DVBMULTIPLEX, &ts, hNetHdl, &hTp);
  1674. memset(&Program, 0, sizeof(AL_ServiceDetail_t));
  1675. Program.stDVBCServ.eSDTSrvType = AL_RECTYPE_DVBTV;
  1676. Program.stDVBCServ.eTvRadioType= AL_RECTYPE_DVBTV;
  1677. Program.stDVBCServ.szProgName[0] = 0;
  1678. Program.stDVBCServ.usOrigNetId = 0x1111;
  1679. Program.stDVBCServ.usServiceId = 0x1111;
  1680. Program.stDVBCServ.usTsId = 0x1111;
  1681. Program.stDVBCServ.usProgNo = 0x1;
  1682. Program.stDVBCServ.usPMTPid= 0x1F55;
  1683. Program.stDVBCServ.stVideoPid.usDataPID = 0x1F40;
  1684. Program.stDVBCServ.stAudioPid[0].usDataPID= 0x1F41;
  1685. enRet = AL_DB_AddRecord(AL_DBTYPE_DVB_C, AL_RECTYPE_DVBTV,
  1686. &Program, hTp, &hProg);
  1687. APP_DVB_Playback_SetCurrentProgHandle(AL_DBTYPE_DVB_C,AL_RECTYPE_DVBTV,hProg);
  1688. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  1689. AL_FW_SwitchDBModule(AL_DBTYPE_DVB_S);
  1690. AL_DB_Reset(AL_DBTYPE_DVB_S, al_true);
  1691. AL_Event_UnLockChannels(AL_DBTYPE_DVB_S, RESERVED_ORIGINAL_NET_ID, RESERVED_TRANSPORT_ID, RESERVED_SERVICE_ID);
  1692. AL_PR_DeleteAllSch(AL_DBTYPE_DVB_S,AL_PR_EVT_REM | AL_PR_SRV_REM);
  1693. DVBApp_LoadCustomerDB(AL_DBTYPE_DVB_S);
  1694. extern AL_RecHandle_t APP_GUIOBJ_DVB_SatSys_PrestoreTP4FactoryAuto(void);
  1695. hTp = APP_GUIOBJ_DVB_SatSys_PrestoreTP4FactoryAuto();
  1696. memset(&Program, 0, sizeof(AL_ServiceDetail_t));
  1697. Program.stDVBSServ.eSDTSrvType = AL_RECTYPE_DVBTV;
  1698. Program.stDVBSServ.eTvRadioType= AL_RECTYPE_DVBTV;
  1699. Program.stDVBSServ.szProgName[0] = 0;
  1700. Program.stDVBSServ.usOrigNetId = 0x4321;
  1701. Program.stDVBSServ.usServiceId = 0x4321;
  1702. Program.stDVBSServ.usTsId = 0x4321;
  1703. Program.stDVBSServ.usProgNo = 0x1;
  1704. Program.stDVBSServ.usPMTPid= 0x1F55;
  1705. Program.stDVBSServ.stVideoPid.usDataPID = 0x1F40;
  1706. Program.stDVBSServ.stAudioPid[0].usDataPID= 0x1F41;
  1707. enRet = AL_DB_AddRecord(AL_DBTYPE_DVB_S, AL_RECTYPE_DVBTV,
  1708. &Program, hTp, &hProg);
  1709. APP_DVB_Playback_SetCurrentProgHandle(AL_DBTYPE_DVB_S,AL_RECTYPE_DVBTV,hProg);
  1710. #endif
  1711. AL_FW_SwitchDBModule(AL_DBTYPE_DVB_T);
  1712. AL_DB_Reset(AL_DBTYPE_DVB_T, al_true);
  1713. AL_Event_UnLockChannels(AL_DBTYPE_DVB_T, RESERVED_ORIGINAL_NET_ID, RESERVED_TRANSPORT_ID, RESERVED_SERVICE_ID);
  1714. AL_PR_DeleteAllSch(AL_DBTYPE_DVB_T,AL_PR_EVT_REM | AL_PR_SRV_REM);
  1715. //dvb -t
  1716. hNetHdl = AL_DB_INVALIDHDL;
  1717. hTp = AL_DB_INVALIDHDL;
  1718. stRootNet.stDVBTNetwork.usNetId = 1;
  1719. memcpy(stRootNet.stDVBTNetwork.szNetName, "Dummy", 6);
  1720. enRet = AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBNETWORK, &stRootNet, AL_DB_INVALIDHDL, &hNetHdl);
  1721. memset(&ts, 0, sizeof(AL_MultiplexDetail_t));
  1722. ts.stDVBTMultiplex.uiFreqK = 474000;
  1723. ts.stDVBTMultiplex.ucBandwidth = 8;
  1724. ts.stDVBTMultiplex.ucHierarchyMode = FRONTEND_HIERARCHY_AUTO;
  1725. AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBMULTIPLEX, &ts, hNetHdl, &hTp);
  1726. memset(&Program, 0, sizeof(AL_ServiceDetail_t));
  1727. Program.stDVBTServ.eSDTSrvType = AL_RECTYPE_DVBTV;
  1728. Program.stDVBTServ.eTvRadioType= AL_RECTYPE_DVBTV;
  1729. Program.stDVBTServ.szProgName[0] = 0;
  1730. Program.stDVBTServ.usOrigNetId = 0x2222;
  1731. Program.stDVBTServ.usServiceId = 0x2222;
  1732. Program.stDVBTServ.usTsId = 0x2222;
  1733. Program.stDVBTServ.usProgNo = 0x1;
  1734. Program.stDVBTServ.usPMTPid= 0x1F55;
  1735. Program.stDVBTServ.stVideoPid.usDataPID = 0x1F40;
  1736. Program.stDVBTServ.stAudioPid[0].usDataPID= 0x1F41;
  1737. enRet = AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBTV,
  1738. &Program, hTp, &hProg1);
  1739. memset(&ts, 0, sizeof(AL_MultiplexDetail_t));
  1740. ts.stDVBTMultiplex.uiFreqK = 666000;
  1741. ts.stDVBTMultiplex.ucBandwidth = 8;
  1742. ts.stDVBTMultiplex.ucHierarchyMode = FRONTEND_HIERARCHY_AUTO;
  1743. AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBMULTIPLEX, &ts, hNetHdl, &hTp);
  1744. memset(&Program, 0, sizeof(AL_ServiceDetail_t));
  1745. Program.stDVBTServ.eSDTSrvType = AL_RECTYPE_DVBTV;
  1746. Program.stDVBTServ.eTvRadioType= AL_RECTYPE_DVBTV;
  1747. Program.stDVBTServ.szProgName[0] = 0;
  1748. Program.stDVBTServ.usOrigNetId = 0x0000;
  1749. Program.stDVBTServ.usServiceId = 0x0001;
  1750. Program.stDVBTServ.usTsId = 0x0001;
  1751. Program.stDVBTServ.usProgNo = 0x2;
  1752. Program.stDVBTServ.usPMTPid= 0x0080;
  1753. Program.stDVBTServ.stVideoPid.usDataPID = 0x0064;
  1754. Program.stDVBTServ.stAudioPid[0].usDataPID= 0x0065;
  1755. enRet = AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBTV,
  1756. &Program, hTp, &hProg2);
  1757. #ifdef CONFIG_DVB_SYSTEM_DVBT2_SUPPORT
  1758. memset(&ts, 0, sizeof(AL_MultiplexDetail_t));
  1759. ts.stDVBTMultiplex.uiFreqK = 770000;
  1760. ts.stDVBTMultiplex.ucBandwidth = 8;
  1761. ts.stDVBTMultiplex.ucHierarchyMode = FRONTEND_HIERARCHY_AUTO;
  1762. ts.stDVBTMultiplex.ucTp_dvb_type = EDVB_DELIVER_TYPE_T2;
  1763. AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBMULTIPLEX, &ts, hNetHdl, &hTp);
  1764. memset(&Program, 0, sizeof(AL_ServiceDetail_t));
  1765. Program.stDVBTServ.eSDTSrvType = AL_RECTYPE_DVBTV;
  1766. Program.stDVBTServ.eTvRadioType= AL_RECTYPE_DVBTV;
  1767. Program.stDVBTServ.szProgName[0] = 0;
  1768. Program.stDVBTServ.usOrigNetId = 0x3333;
  1769. Program.stDVBTServ.usServiceId = 0x3333;
  1770. Program.stDVBTServ.usTsId = 0x3333;
  1771. Program.stDVBTServ.usProgNo = 0x3;
  1772. Program.stDVBTServ.usPMTPid= 0x3333;
  1773. Program.stDVBTServ.usPlpId = 0;
  1774. Program.stDVBTServ.stVideoPid.usDataPID = 0x5354;
  1775. Program.stDVBTServ.stAudioPid[0].usDataPID= 0x1303;
  1776. enRet = AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBTV,
  1777. &Program, hTp, &hProg3);
  1778. #endif
  1779. AL_FW_SwitchDBModule(eDBType);
  1780. APP_DVB_Playback_SetCurrentRFTypeByNetType(eDBType);
  1781. APP_DVB_Playback_SetCurrServiceType(eDBType, AL_RECTYPE_DVBTV);
  1782. APP_DVB_Playback_SetCurrentProgHandle(AL_DBTYPE_DVB_T,AL_RECTYPE_DVBTV,hProg1);
  1783. dvb_printf("\nfunction:%s,enRet:%d\n",__FUNCTION__,enRet);
  1784. enRet = enRet;//fix [-Werror=unused-but-set-variable]
  1785. }
  1786. #endif
  1787. static void _DVBApp_SWInit(void)
  1788. {
  1789. AL_PR_Init_Param_t Init_param=
  1790. {
  1791. .MaxNumOfReminders = AL_PR_MAX_NO_REMINDERS,
  1792. .app_schd_time[0] = PR_NOTIFY_TIME_IN_SEC,
  1793. /*reserves*/
  1794. .app_schd_time[1] = 0,
  1795. .app_schd_time[2] = 0
  1796. };
  1797. AL_PR_SetInitParam(&Init_param);
  1798. AL_DB_EDBType_t eDBType = AL_DBTYPE_MAX;
  1799. #if (defined(CONFIG_DVB_SYSTEM_DVBS_SUPPORT)||defined(CONFIG_DVB_SYSTEM_DVBT_SUPPORT)\
  1800. ||defined(CONFIG_DVB_SYSTEM_DVBC_SUPPORT))
  1801. AL_DB_RecDupliChkFunc_t stMatchFuc;
  1802. stMatchFuc.pServMatch = (AL_DB_RecordMatchFunc)_DVBApp_SerMatch;
  1803. #endif
  1804. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  1805. Ant_UsalsSetting_UserLocation_st UserLocal;
  1806. #endif
  1807. #ifdef CONFIG_DVB_SYSTEM_DVBT_SUPPORT
  1808. stMatchFuc.pNetMatch = (AL_DB_RecordMatchFunc)_DVBApp_NetworkMatch_T;
  1809. stMatchFuc.pMulitplexMatch = (AL_DB_RecordMatchFunc)_DVBApp_TPMatch_T;
  1810. AL_DB_RegisterDupliChkFunc(AL_DBTYPE_DVB_T, &stMatchFuc);
  1811. #endif
  1812. #ifdef CONFIG_DVB_SYSTEM_DVBC_SUPPORT
  1813. stMatchFuc.pNetMatch = (AL_DB_RecordMatchFunc)_DVBApp_NetworkMatch_C;
  1814. stMatchFuc.pMulitplexMatch = (AL_DB_RecordMatchFunc)_DVBApp_TPMatch_C;
  1815. AL_DB_RegisterDupliChkFunc(AL_DBTYPE_DVB_C, &stMatchFuc);
  1816. #endif
  1817. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  1818. stMatchFuc.pNetMatch = (AL_DB_RecordMatchFunc)_DVBApp_NetworkMatch_S;
  1819. stMatchFuc.pMulitplexMatch = (AL_DB_RecordMatchFunc)_DVBApp_TPMatch_S;
  1820. AL_DB_RegisterDupliChkFunc(AL_DBTYPE_DVB_S, &stMatchFuc);
  1821. #endif
  1822. APP_Database_GetCurrentDBType(APP_SOURCE_DTV, &eDBType);
  1823. switch (eDBType)
  1824. {
  1825. case AL_DBTYPE_DVB_T:
  1826. AL_FW_Init(FW_DVB_T_INIT, NULL, NULL);
  1827. break;
  1828. case AL_DBTYPE_DVB_C:
  1829. AL_FW_Init(FW_DVB_C_INIT, NULL, NULL);
  1830. break;
  1831. case AL_DBTYPE_DVB_S:
  1832. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  1833. AL_FW_Init(FW_DVB_S_INIT, NULL, NULL);
  1834. #endif
  1835. break;
  1836. default:
  1837. break;
  1838. }
  1839. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  1840. MID_SatCtrl_Init(TUNER_ID_MAIN);
  1841. APP_GUIOBJ_DVB_SatSys_GetUserLocation(&UserLocal);
  1842. MID_SatCtrl_SetUsalsLocation(MOTORSEL_USER,&UserLocal,NULL);
  1843. #endif
  1844. #ifndef SUPPORT_LCN_ONOFF
  1845. do {
  1846. UINT8 bLcnSetting, u8AreaIdx;
  1847. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO, 0,
  1848. sizeof(APP_SETTING_SystemInfo_t), &(g_stSysInfoData));
  1849. bLcnSetting = g_stSysInfoData.LcnOnOff;
  1850. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  1851. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  1852. u8AreaIdx = g_stChannelData.Country;
  1853. u8AreaIdx = u8AreaIdx; // avoid warning error
  1854. if (! (bLcnSetting & LCN_ONOFF_CHANGED)) //mean use the default
  1855. {
  1856. // For the first time boot up, the flash data has not initiated yet
  1857. #ifdef SUPPORT_LCN
  1858. APP_Area_GetDefaultAreaInfoLCN(eDBType, u8AreaIdx, &bLcnSetting);
  1859. #endif
  1860. g_stSysInfoData.LcnOnOff = bLcnSetting;
  1861. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO,
  1862. ITEM_OFFSET(APP_SETTING_SystemInfo_t, LcnOnOff),
  1863. sizeof(g_stSysInfoData.LcnOnOff),&(g_stSysInfoData.LcnOnOff));
  1864. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO,
  1865. ITEM_OFFSET(APP_SETTING_SystemInfo_t, LcnOnOff), sizeof(g_stSysInfoData.LcnOnOff));
  1866. }
  1867. } while(0);
  1868. #endif
  1869. // EPG setup
  1870. _DVBApp_EpgInit();
  1871. UINT32 area = 0;
  1872. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  1873. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  1874. area = g_stChannelData.Country;
  1875. DVBApp_ResetDvbSpecRule(area);
  1876. #ifdef SUPPORT_FACTORY_AUTO_TEST
  1877. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  1878. {
  1879. _DVBApp_PrestoreProgram(eDBType);
  1880. }
  1881. else
  1882. #endif
  1883. {
  1884. APP_Factory_HotelModePowerOnChan();
  1885. }
  1886. #ifdef MP4_SUB_PREFER_LANG
  1887. _DVBApp_SetMp4SubcodepagebyPreferLang();
  1888. #endif
  1889. // Monitor init
  1890. if (_DVBApp_BackgroundMonitor_Init() == SP_SUCCESS)
  1891. {
  1892. dvb_printf("_DVBApp_BackgroundMonitor_Init() success\n");
  1893. }
  1894. else
  1895. {
  1896. dvb_printf("_DVBApp_BackgroundMonitor_Init() fail\n");
  1897. }
  1898. // APP_Database_InitListTypeName();
  1899. //AUDIF_Set_OutputMode(OUTPUT_DOWNMIX_MODE, dwmix_L0R0);
  1900. //AUDIF_Set_OutputMode(OUT_RFModeK3, RF_outmode);
  1901. //AUDIF_Set_OutputMode(OUT_CustomModeB_DigitalDialnormK1, 0x6464);
  1902. #if (defined(CONFIG_DRAMSIZE) && (CONFIG_DRAMSIZE == 64)) || (defined (CONFIG_SUPPORT_64M_DTV))
  1903. APP_Source_Type_t eCurrSrc = APP_SOURCE_MAX;
  1904. APP_GUIOBJ_Source_GetCurrSource(&eCurrSrc);
  1905. if (eCurrSrc == APP_SOURCE_MAX || eCurrSrc == APP_SOURCE_MEDIA || eCurrSrc == APP_SOURCE_MEDIA1)
  1906. {
  1907. AL_FW_DeActiveDBModule(eDBType);
  1908. }
  1909. #endif
  1910. }
  1911. static void _DVBApp_DTV_main_program(void *data)
  1912. {
  1913. _DVBApp_SWInit();
  1914. }
  1915. static INT32 _DVBApp_ToggleVideoState(void)
  1916. {
  1917. AL_DB_EDBType_t eDBType = APP_DVB_Playback_GetCurrentNetType();
  1918. UINT8 u8ProgState = APP_DVB_Playback_GetProgStateByHandle(eDBType, AL_DB_INVALIDHDL);
  1919. if (MID_PlaybackIsPlaying() == TRUE)
  1920. {
  1921. /*AV is playing, need to stop*/
  1922. if (u8ProgState == MID_PLAYBK_PROG_STATE_LOCKED)
  1923. {
  1924. #ifndef PLAY_VIDEO_FOR_ALLSRV
  1925. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eDBType);
  1926. if (eServiceType == AL_RECTYPE_DVBRADIO)
  1927. {
  1928. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  1929. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_STOP_PLAYBACK,
  1930. (PLAYBACK_STOP_MHEG5 | PLAYBACK_KEEP_FRAMEBUF));
  1931. }
  1932. else
  1933. #endif
  1934. {
  1935. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  1936. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_STOP_PLAYBACK,
  1937. (PLAYBACK_STOP_SUBTITLE | PLAYBACK_STOP_MHEG5));
  1938. }
  1939. }
  1940. }
  1941. else
  1942. {
  1943. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  1944. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_START_PLAYBACK, 0);
  1945. }
  1946. return SP_SUCCESS;
  1947. }
  1948. static void _DVBApp_ShowPopup(DVB_DVBAppPopMsgType_t ePopType)
  1949. {
  1950. UINT32 u32GuiObj = 0;
  1951. PopmsgParam_t stPopup;
  1952. AL_DB_EDBType_t eDBType = AL_DBTYPE_MAX;
  1953. APP_Source_Type_t eSourType = APP_SOURCE_MAX;
  1954. AL_ServiceDetail_t stService;
  1955. #ifdef CONFIG_QSD //Chip test mode doesn't need to show no signal OSD
  1956. if(ePopType == DVB_APP_POP_MSG_NO_SIGNAL)
  1957. {
  1958. return;
  1959. }
  1960. #endif
  1961. #if (defined (CONFIG_SUPPORT_PVR) || defined(CONFIG_CONFIRM_AUTO_UPGRADE))
  1962. UINT32 dMsgType = 0;
  1963. APP_GUIOBJ_PopMsg_GetMsgDialogType(&dMsgType);
  1964. #endif
  1965. #ifdef CONFIG_CONFIRM_AUTO_UPGRADE
  1966. if (dMsgType == POPMSG_CONFIRM_START_AUTO_UPGRADE)
  1967. {
  1968. switch (ePopType)
  1969. {
  1970. case DVB_APP_POP_MSG_RADIO_CHANNEL:
  1971. case DVB_APP_POP_MSG_VIDEO_NOT_SUPPORT:
  1972. case DVB_APP_POP_MSG_SERVICE_NOT_AVAILABLE:
  1973. case DVB_APP_POP_MSG_SCRAMBLE:
  1974. case DVB_APP_POP_MSG_PARENTAL_LOCK:
  1975. case DVB_APP_POP_MSG_NO_SIGNAL:
  1976. case DVB_APP_POP_MSG_TEMPSERVICE:
  1977. case DVB_APP_POP_MSG_CHECKPWD:
  1978. case DVB_APP_POP_MSG_DATABASE_EMPTY:
  1979. dvb_printf("\n\n%d. auto upgrade pop message exist, not display pop message: %d.\n\n", __LINE__, ePopType);
  1980. return;
  1981. default:
  1982. break;
  1983. }
  1984. }
  1985. #endif
  1986. #ifdef CONFIG_SUPPORT_PVR
  1987. if (dMsgType == POPMSG_CONFIRM_REC_REMIDER_TIME || dMsgType == POPMSG_CONFIRM_REC_REMIDER_TIME_CONFIRM)
  1988. {
  1989. switch (ePopType)
  1990. {
  1991. case DVB_APP_POP_MSG_TEMPSERVICE:
  1992. case DVB_APP_POP_MSG_SERVICE_NOT_AVAILABLE:
  1993. case DVB_APP_POP_MSG_NOT_AVAILABLE:
  1994. dvb_printf("\n\n%d.PVR reminder Pop message exist, not display pop message: %d.\n\n", __LINE__, ePopType);
  1995. return;
  1996. default:
  1997. break;
  1998. }
  1999. }
  2000. #endif
  2001. for (u32GuiObj = 0; u32GuiObj < DVB_GUIOBJ_MAX; u32GuiObj++)
  2002. {
  2003. if (u32GuiObj == DVB_GUIOBJ_PLAYBACK
  2004. #ifdef CONFIG_SUPPORT_SUBTITLE
  2005. || u32GuiObj == DVB_GUIOBJ_SUBTITLE
  2006. #endif
  2007. #ifdef CONFIG_SUPPORT_TTX
  2008. || u32GuiObj == DVB_GUIOBJ_TTX
  2009. #endif
  2010. #ifdef CONFIG_SUPPORT_MHEG5
  2011. || u32GuiObj == DVB_GUIOBJ_MHEG5
  2012. #endif
  2013. || u32GuiObj == DVB_GUIOBJ_PROGINFO
  2014. || u32GuiObj == DVB_GUIOBJ_POPMSG
  2015. || u32GuiObj == DVB_GUIOBJ_FREEZE
  2016. || u32GuiObj == APP_GUIOBJ_MUTE
  2017. || u32GuiObj == APP_GUIOBJ_BANNER
  2018. //|| u32GuiObj == APP_GUIOBJ_ADJUST
  2019. //|| u32GuiObj == APP_GUIOBJ_AMPLIFIERVOLUME
  2020. #ifdef CONFIG_SUPPORT_PVR
  2021. || u32GuiObj == DVB_GUIOBJ_PVR_REC
  2022. || u32GuiObj == DVB_GUIOBJ_PVR_PAUSE
  2023. || u32GuiObj == DVB_GUIOBJ_PVR_PLAYINFO
  2024. || u32GuiObj == DVB_GUIOBJ_PVRREC_INFO
  2025. || u32GuiObj == DVB_GUIOBJ_PVR_FILEPLAY
  2026. || u32GuiObj == DVB_GUIOBJ_PVR_FILEPLAYINFO
  2027. #endif
  2028. )
  2029. {
  2030. continue;
  2031. }
  2032. if(ePopType == DVB_APP_POP_MSG_OVERMAXVOLUME && u32GuiObj == APP_GUIOBJ_ADJUST)
  2033. {
  2034. continue;
  2035. }
  2036. if (ePopType != DVB_APP_POP_MSG_KEYLOCK)
  2037. {
  2038. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, u32GuiObj))
  2039. {
  2040. return;
  2041. }
  2042. }
  2043. }
  2044. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  2045. &&(g_dCurPopup == POPMSG_CONFIRM_FLIP))
  2046. {
  2047. return;
  2048. }
  2049. memset(&stPopup, 0x0, sizeof(PopmsgParam_t));
  2050. switch (ePopType)
  2051. {
  2052. case DVB_APP_POP_MSG_DATABASE_EMPTY:
  2053. stPopup.eType = POPMSG_TYPE_PROMPT;
  2054. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2055. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2056. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_DATABASE_EMPTY;
  2057. break;
  2058. case DVB_APP_POP_MSG_CHECK_ANTENNA_INPUT:
  2059. stPopup.eType = POPMSG_TYPE_PROMPT;
  2060. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2061. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2062. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_CHECK_ANTENNA_INPUT;
  2063. break;
  2064. case DVB_APP_POP_MSG_INVALID_INPUT:
  2065. stPopup.eType = POPMSG_TYPE_PROMPT;
  2066. stPopup.u16Exitkeys = POPMSG_EXIT_ANY_KEY;
  2067. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2068. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INVALID_INPUT;
  2069. stPopup.extend.stPrompt.iTimeout = 2;
  2070. break;
  2071. case DVB_APP_POP_MSG_NOT_AVAILABLE:
  2072. stPopup.eType = POPMSG_TYPE_PROMPT;
  2073. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2074. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2075. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NOT_AVAILABLE;
  2076. stPopup.extend.stPrompt.iTimeout = 2;
  2077. break;
  2078. #ifdef CONFIG_SUPPORT_SUBTITLE
  2079. case DVB_APP_POP_MSG_NO_SUBTITLE:
  2080. stPopup.eType = POPMSG_TYPE_PROMPT;
  2081. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2082. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2083. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_SUBTITLE;
  2084. stPopup.extend.stPrompt.iTimeout = 2;
  2085. break;
  2086. #endif
  2087. #ifdef CONFIG_SUPPORT_TTX
  2088. case DVB_APP_POP_MSG_NO_TTX:
  2089. stPopup.eType = POPMSG_TYPE_PROMPT;
  2090. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2091. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2092. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_TTX;
  2093. stPopup.extend.stPrompt.iTimeout = 2;
  2094. break;
  2095. #endif
  2096. case DVB_APP_POP_MSG_CHECKPWD:
  2097. stPopup.eType = POPMSG_TYPE_PWD;
  2098. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2099. stPopup.extend.stPwd.ePwdType = PLAYBACK_POPUP_PWD_LOCKED;
  2100. break;
  2101. case DVB_APP_POP_MSG_TEMPSERVICE:
  2102. #ifdef CONFIG_SUPPORT_MHEG5
  2103. if ((APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED)
  2104. && APP_Area_SupportDtg() /*&& (APP_DVB_Mheg5_GetMheg5DisplayStatus() == FALSE)*/)
  2105. {
  2106. if(APP_DVB_Mheg5_GetMheg5DisplayStatus() == FALSE)
  2107. {
  2108. stPopup.eType = POPMSG_TYPE_PROMPT;
  2109. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2110. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_TEMPSERVICE_LOAD_MHEG5;
  2111. break;
  2112. }else
  2113. return;
  2114. }
  2115. else if ((APP_DVB_Mheg5_GetBootCarouselStatus() != MHEG5_BOOT_CAROUSEL_EXISTED)
  2116. && APP_Area_SupportDtg())
  2117. {
  2118. return;
  2119. }
  2120. #endif
  2121. stPopup.eType = POPMSG_TYPE_PROMPT;
  2122. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2123. APP_Database_GetCurrentDBType(eSourType, &eDBType);
  2124. AL_DB_QueryDetail(APP_DVB_Playback_GetCurrentProgHandle(eDBType,
  2125. (AL_RECTYPE_DVBTV | AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA)), (al_void *)&stService);
  2126. if (((AL_DBTYPE_DVB_T == eDBType) && (1 == stService.stDVBTServ.stProgAttrib.svrnotrun))
  2127. || ((AL_DBTYPE_DVB_C == eDBType) && (1 == stService.stDVBCServ.stProgAttrib.svrnotrun))
  2128. || ((AL_DBTYPE_DVB_S == eDBType) && (1 == stService.stDVBSServ.stProgAttrib.svrnotrun)))
  2129. {
  2130. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_TEMPSERVICE_SERVICE_NOT_RUNNING;
  2131. }
  2132. else
  2133. {
  2134. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_TEMPSERVICE;
  2135. }
  2136. break;
  2137. case DVB_APP_POP_MSG_NO_SIGNAL:
  2138. stPopup.eType = POPMSG_TYPE_PROMPT;
  2139. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2140. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_NO_SIGNAL;
  2141. break;
  2142. case DVB_APP_POP_MSG_PARENTAL_LOCK:
  2143. stPopup.eType = POPMSG_TYPE_PWD;
  2144. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2145. stPopup.extend.stPwd.ePwdType = PLAYBACK_POPUP_PWD_LOCKED;
  2146. break;
  2147. case DVB_APP_POP_MSG_SCRAMBLE:
  2148. #ifdef CONFIG_CIPLUS_SUPPORT
  2149. #if 0 // TODO: MHEG5
  2150. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)||
  2151. APP_DVB_Mheg5_IsRunning())
  2152. {
  2153. return;
  2154. }
  2155. #endif
  2156. #endif
  2157. stPopup.eType = POPMSG_TYPE_PROMPT;
  2158. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2159. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_SCRAMBLED;
  2160. break;
  2161. case DVB_APP_POP_MSG_SERVICE_NOT_AVAILABLE:
  2162. stPopup.eType = POPMSG_TYPE_PROMPT;
  2163. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2164. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE;
  2165. break;
  2166. #ifdef CONFIG_CI_SUPPORT
  2167. case DVB_APP_POP_MSG_CI_CAM_INIT:
  2168. stPopup.eType = POPMSG_TYPE_PROMPT;
  2169. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2170. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_CI_CAM_INIT;
  2171. stPopup.extend.stPrompt.iTimeout = 60;
  2172. break;
  2173. case DVB_APP_POP_MSG_CI_CAM_INIT_OK:
  2174. stPopup.eType = POPMSG_TYPE_PROMPT;
  2175. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2176. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_CI_CAM_INIT_OK;
  2177. stPopup.extend.stPrompt.iTimeout = 3;
  2178. break;
  2179. #ifndef CONFIG_TV_NEW_UI
  2180. case DVB_APP_POP_MSG_CI_CAM_ERROR:
  2181. stPopup.eType = POPMSG_TYPE_PROMPT;
  2182. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2183. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_CI_CAM_ERROR;
  2184. stPopup.extend.stPrompt.iTimeout = 3;
  2185. break;
  2186. #endif
  2187. case DVB_APP_POP_MSG_CI_CAM_REMOVED:
  2188. stPopup.eType = POPMSG_TYPE_PROMPT;
  2189. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2190. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_CI_CAM_REMOVED;
  2191. stPopup.extend.stPrompt.iTimeout = 3;
  2192. break;
  2193. #ifdef CONFIG_CIPLUS_SUPPORT
  2194. case DVB_APP_POP_MSG_CIPLUSE_UPGRADE_SUCC:
  2195. stPopup.eType = POPMSG_TYPE_PROMPT;
  2196. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2197. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_CIPLUS_UPGRADE_SUCC;
  2198. stPopup.extend.stPrompt.iTimeout = 5;
  2199. break;
  2200. case DVB_APP_POP_MSG_CIPLUSE_UPGRADE_FAILE:
  2201. stPopup.eType = POPMSG_TYPE_PROMPT;
  2202. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2203. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_CIPLUS_UPGRADE_FAILED;
  2204. stPopup.extend.stPrompt.iTimeout = 8;
  2205. break;
  2206. #endif
  2207. case DVB_APP_POP_MSG_HDCP_UPGRADE_SUCC:
  2208. stPopup.eType = POPMSG_TYPE_PROMPT;
  2209. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2210. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_HDCP_UPGRADE_SUCC;
  2211. stPopup.extend.stPrompt.iTimeout = 8;
  2212. break;
  2213. case DVB_APP_POP_MSG_HDCP_UPGRADE_FAILE:
  2214. stPopup.eType = POPMSG_TYPE_PROMPT;
  2215. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2216. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_HDCP_UPGRADE_FAILED;
  2217. stPopup.extend.stPrompt.iTimeout = 8;
  2218. break;
  2219. case DVB_APP_POP_MSG_CI_PASS_HDCP_PASS:
  2220. stPopup.eType = POPMSG_TYPE_PROMPT;
  2221. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2222. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_CI_PASS_HDCP_PASS;
  2223. stPopup.extend.stPrompt.iTimeout = 8;
  2224. break;
  2225. case DVB_APP_POP_MSG_CI_PASS_HDCP_FAIL:
  2226. stPopup.eType = POPMSG_TYPE_PROMPT;
  2227. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2228. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_CI_PASS_HDCP_FAIL;
  2229. stPopup.extend.stPrompt.iTimeout = 8;
  2230. break;
  2231. case DVB_APP_POP_MSG_CI_FAIL_HDCP_PASS:
  2232. stPopup.eType = POPMSG_TYPE_PROMPT;
  2233. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2234. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_CI_FAIL_HDCP_PASS;
  2235. stPopup.extend.stPrompt.iTimeout = 8;
  2236. break;
  2237. case DVB_APP_POP_MSG_CI_FAIL_HDCP_FAIL:
  2238. stPopup.eType = POPMSG_TYPE_PROMPT;
  2239. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2240. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_CI_FAIL_HDCP_FAIL;
  2241. stPopup.extend.stPrompt.iTimeout = 8;
  2242. break;
  2243. #ifdef SUPPORT_CICAM_NEW_MESSAGE //this define need be enable to inform user remove CICAM card
  2244. case DVB_APP_POP_MSG_CI_INFORM_USER_REMOVE_CAM:
  2245. stPopup.eType = POPMSG_TYPE_PROMPT;
  2246. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2247. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_CI_INFORM_USER_REMOVE_CAM;
  2248. stPopup.extend.stPrompt.iTimeout = 3;
  2249. break;
  2250. #endif
  2251. #endif
  2252. case DVB_APP_POP_MSG_NEW_SERVICE:
  2253. stPopup.eType = POPMSG_TYPE_PROMPT;
  2254. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2255. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2256. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_ADD_SRV;
  2257. stPopup.extend.stPrompt.iTimeout = 3;
  2258. break;
  2259. case DVB_APP_POP_MSG_SERVICE_REMOVE:
  2260. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2261. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2262. stPopup.u16ReturnType= GUI_OBJECT_POST_EVENT|GUI_OBJECT_EVENT_BYPASS ;
  2263. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_CONFIRM_REMOVE_SRV;
  2264. break;
  2265. case DVB_APP_POP_MSG_OTH_TP_NEW_SERVICE:
  2266. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2267. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2268. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2269. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_OTH_TP_ADD_SRV;
  2270. break;
  2271. case DVB_APP_POP_MSG_VIDEO_NOT_SUPPORT:
  2272. #ifdef CONFIG_SUPPORT_MHEG5
  2273. if (APP_DVB_Mheg5_GetBootCarouselStatus() != MHEG5_BOOT_CAROUSEL_NOT_EXISTED)
  2274. {
  2275. return;
  2276. }
  2277. #endif
  2278. stPopup.eType = POPMSG_TYPE_PROMPT;
  2279. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2280. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_VIDEO_NOT_SUPPORT;
  2281. break;
  2282. case DVB_APP_POP_MSG_DB_SAVE_IN_PROGRESS:
  2283. stPopup.eType = POPMSG_TYPE_PROMPT;
  2284. stPopup.u16Exitkeys = POPMSG_EXIT_CHN_UP_DOWN | POPMSG_EXIT_EPG | POPMSG_EXIT_MENU | POPMSG_EXIT_SOURCE;
  2285. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2286. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_SAVING_DATA;
  2287. stPopup.extend.stPrompt.iTimeout = 20;
  2288. break;
  2289. #ifdef CONFIG_SUPPORT_PVR
  2290. case DVB_APP_POP_MSG_REC_INIT:
  2291. stPopup.eType = POPMSG_TYPE_PROMPT;
  2292. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2293. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2294. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INITIAL_REC;
  2295. stPopup.extend.stPrompt.iTimeout = 1;
  2296. break;
  2297. case DVB_APP_POP_MSG_TIMESHIFT_INIT:
  2298. stPopup.eType = POPMSG_TYPE_PROMPT;
  2299. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2300. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2301. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INITIAL_TIMESHIFT;
  2302. stPopup.extend.stPrompt.iTimeout = 2;
  2303. break;
  2304. case DVB_APP_POP_MSG_AUTOTIMESHIFT_INIT:
  2305. stPopup.eType = POPMSG_TYPE_PROMPT;
  2306. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2307. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2308. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INITIAL_AUTOTIMESHIFT;
  2309. stPopup.extend.stPrompt.iTimeout = 2;
  2310. break;
  2311. case DVB_APP_POP_MSG_REC_ENTER_NOT_VALID:
  2312. stPopup.eType = POPMSG_TYPE_PROMPT;
  2313. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2314. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2315. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INVALID_REC;
  2316. stPopup.extend.stPrompt.iTimeout = 2;
  2317. break;
  2318. case DVB_APP_POP_MSG_REC_WRITE_ERROR:
  2319. stPopup.eType = POPMSG_TYPE_PROMPT;
  2320. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2321. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2322. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_REC_WRITE_ERR;
  2323. stPopup.extend.stPrompt.iTimeout = 2;
  2324. break;
  2325. case DVB_APP_POP_MSG_TIMESHIFT_ENTER_NOT_VALID:
  2326. stPopup.eType = POPMSG_TYPE_PROMPT;
  2327. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2328. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2329. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INVALID_TIMESHIFT;
  2330. stPopup.extend.stPrompt.iTimeout = 2;
  2331. break;
  2332. case DVB_APP_POP_MSG_REC_REQUIRE_FORMAT:
  2333. stPopup.eType = POPMSG_TYPE_PROMPT;
  2334. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2335. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2336. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PVR_REQUIRE_FORMAT_DISK;
  2337. stPopup.extend.stPrompt.iTimeout = 2;
  2338. break;
  2339. case DVB_APP_POP_MSG_REC_PARTITION_NOT_SET:
  2340. stPopup.eType = POPMSG_TYPE_PROMPT;
  2341. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2342. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2343. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PARTITION_NOT_SET;
  2344. stPopup.extend.stPrompt.iTimeout = 2;
  2345. break;
  2346. case DVB_APP_POP_MSG_PVR_DISK_CHECKING:
  2347. stPopup.eType = POPMSG_TYPE_PROMPT;
  2348. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2349. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2350. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_DISK_CHECKING;
  2351. stPopup.extend.stPrompt.iTimeout = 2;
  2352. break;
  2353. case DVB_APP_POP_MSG_PVR_DISK_FULL:
  2354. stPopup.eType = POPMSG_TYPE_PROMPT;
  2355. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2356. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2357. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_DISK_FULL;
  2358. stPopup.extend.stPrompt.iTimeout = 2;
  2359. break;
  2360. case DVB_APP_POP_MSG_PVR_NO_STORAGE:
  2361. stPopup.eType = POPMSG_TYPE_PROMPT;
  2362. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2363. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2364. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_USBCARD_DEVICE;
  2365. stPopup.extend.stPrompt.iTimeout = 2;
  2366. break;
  2367. case DVB_APP_POP_MSG_FOUNDDEVICE:
  2368. stPopup.eType = POPMSG_TYPE_PROMPT;
  2369. stPopup.u16Exitkeys = POPMSG_EXIT_ANY_KEY;
  2370. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2371. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_FOUNDDEVICE;
  2372. stPopup.extend.stPrompt.iTimeout = 2;
  2373. break;
  2374. case DVB_APP_POP_MSG_REC_NTFS_DIRTY:
  2375. stPopup.eType = POPMSG_TYPE_PROMPT;
  2376. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2377. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2378. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PARTITION_SET_NTFS_DIRTY;
  2379. stPopup.extend.stPrompt.iTimeout = 3;
  2380. break;
  2381. case DVB_APP_POP_MSG_REC_SCRAMBLE_CHANNEL:
  2382. stPopup.eType = POPMSG_TYPE_PROMPT;
  2383. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2384. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2385. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INVALID_REC_SCRAMBLE;
  2386. stPopup.extend.stPrompt.iTimeout = 2;
  2387. break;
  2388. case DVB_APP_POP_MSG_REC_START:
  2389. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2390. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2391. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2392. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2393. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_START_RECORD;
  2394. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2395. break;
  2396. case DVB_APP_POP_MSG_STOP_MHEG_FOR_REC:
  2397. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2398. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2399. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2400. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2401. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_MHEG_FOR_RECORD;
  2402. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2403. break;
  2404. case DVB_APP_POP_MSG_STOP_TSHIFT_TO_REC:
  2405. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2406. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2407. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2408. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_THIFT_TO_REC;
  2409. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2410. break;
  2411. case DVB_APP_POP_MSG_UPDATE_TSID:
  2412. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2413. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2414. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2415. stPopup.extend.stPrompt.ePromptType = POPMSG_CONFIRM_FIND_NEW_TSID;
  2416. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2417. break;
  2418. case DVB_APP_POP_MSG_TIMESHIFT_START:
  2419. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2420. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2421. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2422. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2423. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_START_TIMESHIFT;
  2424. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2425. break;
  2426. case DVB_APP_POP_MSG_STOP_MHEG_FOR_TIMESHIFT:
  2427. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2428. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2429. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2430. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2431. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_MHEG_FOR_TIMESHIFT;
  2432. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2433. break;
  2434. case DVB_APP_POP_MSG_REC_STOP:
  2435. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2436. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2437. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2438. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2439. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD;
  2440. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2441. break;
  2442. case DVB_APP_POP_MSG_STOP_REC_FOR_MHEG:
  2443. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2444. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2445. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2446. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2447. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD_FOR_MHEG;
  2448. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2449. break;
  2450. case DVB_APP_POP_MSG_TIMESHIFT_STOP:
  2451. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2452. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2453. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2454. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2455. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT;
  2456. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2457. break;
  2458. case DVB_APP_POP_MSG_STOP_TIMESHIFT_FOR_MHEG:
  2459. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2460. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2461. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2462. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2463. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_MHEG;
  2464. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2465. break;
  2466. case DVB_APP_POP_MSG_REC_STOP_CHANNEL_CHANGE:
  2467. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2468. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2469. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2470. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2471. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD_FOR_CH_CHANGE;
  2472. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2473. break;
  2474. case DVB_APP_POP_MSG_REC_STOP_FOR_RECALL:
  2475. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2476. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2477. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2478. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2479. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD_FOR_RECALL;
  2480. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2481. break;
  2482. case DVB_APP_POP_MSG_TIMESHIFT_STOP_CHANNEL_CHANGE:
  2483. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2484. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2485. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2486. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2487. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_CH_CHANGE;
  2488. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2489. break;
  2490. case DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_RECALL:
  2491. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2492. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2493. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2494. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2495. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_RECALL;
  2496. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2497. break;
  2498. case DVB_APP_POP_MSG_REC_STOP_SOURCE_CHANGE:
  2499. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2500. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2501. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2502. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2503. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD_FOR_SRC_CHANGE;
  2504. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2505. break;
  2506. case DVB_APP_POP_MSG_TIMESHIFT_STOP_SOURCE_CHANGE:
  2507. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2508. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2509. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2510. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2511. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_SRC_CHANGE;
  2512. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2513. break;
  2514. case DVB_APP_POP_MSG_REC_SPEED_NOT_ENOUGH:
  2515. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2516. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2517. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2518. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2519. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_RECORDER_SPEED_NOT_ENOUGH;
  2520. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2521. break;
  2522. case DVB_APP_POP_MSG_TIMESHIFT_SPEED_NOT_ENOUGH:
  2523. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2524. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2525. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2526. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2527. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_TIMESHIFT_SPEED_NOT_ENOUGH;
  2528. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2529. break;
  2530. case DVB_APP_POP_MSG_REC_STOP_FOR_USBKEY:
  2531. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2532. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2533. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2534. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2535. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD_FOR_USBKEY;
  2536. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2537. break;
  2538. case DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_USBKEY:
  2539. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2540. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2541. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2542. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2543. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_USBKEY;
  2544. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2545. break;
  2546. case DVB_APP_POP_MSG_REC_STOP_FOR_TVRADIOKEY:
  2547. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2548. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2549. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2550. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2551. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD_FOR_TVRADIOKEY;
  2552. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2553. break;
  2554. case DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_TVRADIOKEY:
  2555. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2556. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2557. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2558. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2559. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_TVRADIOKEY;
  2560. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2561. break;
  2562. case DVB_APP_POP_MSG_PVR_TIMESHIFT_STANDBY:
  2563. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2564. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2565. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT;
  2566. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_PVR_TIMESHIFT_STANDBY;
  2567. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2568. break;
  2569. case DVB_APP_POP_MSG_PVR_REMIDER:
  2570. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2571. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2572. stPopup.u16ReturnType = GUI_OBJECT_NO_POST_ACTION;
  2573. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_REC_REMIDER_TIME;
  2574. stPopup.extend.stConfirm.u8Default = POPMSG_YES;
  2575. stPopup.extend.stConfirm.iTimeout = DVBApp_GetReminderTime2Show()+1;
  2576. break;
  2577. case DVB_APP_POP_MSG_PVR_REMIDER_CONFIRM:
  2578. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2579. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2580. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  2581. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_REC_REMIDER_TIME_CONFIRM;
  2582. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2583. break;
  2584. case DVB_APP_POP_MSG_STOP_REC_FOR_REMINDER:
  2585. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2586. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2587. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  2588. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_REC_FOR_REMINDER;
  2589. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2590. break;
  2591. case DVB_APP_POP_MSG_STOP_TSHIFT_FOR_REMINDER:
  2592. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2593. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2594. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  2595. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TSHIFT_FOR_REMINDER;
  2596. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2597. break;
  2598. case DVB_APP_POP_MSG_STOP_REC_FOR_TIMER_REC:
  2599. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2600. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2601. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  2602. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_REC_FOR_TIMER_REC;
  2603. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2604. break;
  2605. case DVB_APP_POP_MSG_STOP_TSHIFT_FOR_TIMER_REC:
  2606. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2607. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2608. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  2609. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TSHIFT_FOR_TIMER_REC;
  2610. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2611. break;
  2612. case DVB_APP_POP_MSG_TIMER_OUT_OF_DATE:
  2613. stPopup.eType = POPMSG_TYPE_PROMPT;
  2614. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2615. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2616. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_TIMER_OUT_OF_DATE;
  2617. stPopup.extend.stPrompt.iTimeout = 2;
  2618. break;
  2619. case DVB_APP_POP_MSG_PVR_SYSTEM_TIME_CHANGED:
  2620. stPopup.eType = POPMSG_TYPE_PROMPT;
  2621. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2622. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT;
  2623. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PVR_SYSTEM_TIME_CHANGED;
  2624. stPopup.extend.stPrompt.iTimeout = 2;
  2625. break;
  2626. case DVB_APP_POP_MSG_PVR_PARTITION_SET_SUCCESSFUL:
  2627. stPopup.eType = POPMSG_TYPE_PROMPT;
  2628. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2629. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT;
  2630. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PARTITION_SET_SUCCESSFUL;
  2631. stPopup.extend.stPrompt.iTimeout = 2;
  2632. break;
  2633. case DVB_APP_POP_MSG_PVR_ENABLE:
  2634. stPopup.eType = POPMSG_TYPE_PROMPT;
  2635. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2636. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2637. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PVR_ENABLE;
  2638. stPopup.extend.stPrompt.iTimeout = 2;
  2639. break;
  2640. case DVB_APP_POP_MSG_PVR_DISABLE:
  2641. stPopup.eType = POPMSG_TYPE_PROMPT;
  2642. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2643. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2644. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PVR_DISABLE;
  2645. stPopup.extend.stPrompt.iTimeout = 2;
  2646. break;
  2647. case DVB_APP_POP_MSG_INSERT_USB:
  2648. stPopup.eType = POPMSG_TYPE_PROMPT;
  2649. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2650. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2651. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INSERT_USB;
  2652. stPopup.extend.stPrompt.iTimeout = 3;
  2653. break;
  2654. case DVB_APP_POP_MSG_INVALID_USB:
  2655. stPopup.eType = POPMSG_TYPE_PROMPT;
  2656. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2657. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2658. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INVALID_USB;
  2659. stPopup.extend.stPrompt.iTimeout = 3;
  2660. break;
  2661. case DVB_APP_POP_MSG_INSERT_USB_CONFIRM:
  2662. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2663. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT | POPMSG_EXIT_RETURN;
  2664. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2665. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2666. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_INSERT_USB;
  2667. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2668. break;
  2669. case DVB_APP_POP_MSG_INVALID_USB_CONFIRM:
  2670. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2671. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT | POPMSG_EXIT_RETURN;
  2672. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2673. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2674. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_INVALID_USB;
  2675. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2676. break;
  2677. #endif
  2678. case DVB_APP_POP_MSG_CHANNEL_DELETED:
  2679. stPopup.eType = POPMSG_TYPE_PROMPT;
  2680. stPopup.u16Exitkeys = POPMSG_EXIT_ANY_KEY;
  2681. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2682. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_CHANNEL_DELETED;
  2683. stPopup.extend.stPrompt.iTimeout = 2;
  2684. break;
  2685. case DVB_APP_POP_MSG_EPG_ENABLE:
  2686. stPopup.eType = POPMSG_TYPE_PROMPT;
  2687. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2688. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2689. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_EPG_ENABLE;
  2690. stPopup.extend.stPrompt.iTimeout = 2;
  2691. break;
  2692. case DVB_APP_POP_MSG_EPG_DISABLE:
  2693. stPopup.eType = POPMSG_TYPE_PROMPT;
  2694. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2695. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2696. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_EPG_DISABLE;
  2697. stPopup.extend.stPrompt.iTimeout = 2;
  2698. break;
  2699. #ifdef SUPPORT_CONAX_CAS
  2700. case DVB_APP_POP_MSG_NO_CARD_INSERTERD:
  2701. stPopup.eType = POPMSG_TYPE_PROMPT;
  2702. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2703. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2704. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_CARD_INSERTERD;
  2705. stPopup.extend.stPrompt.iTimeout = 2;
  2706. break;
  2707. case DVB_APP_POP_MSG_INCORRECT_CONAX_CARD:
  2708. stPopup.eType = POPMSG_TYPE_PROMPT;
  2709. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2710. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2711. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INCORRECT_CONAX_CARD;
  2712. stPopup.extend.stPrompt.iTimeout = 2;
  2713. break;
  2714. case DVB_APP_POP_MSG_INCORRECT_CARD:
  2715. stPopup.eType = POPMSG_TYPE_PROMPT;
  2716. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2717. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2718. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INCORRECT_CARD;
  2719. stPopup.extend.stPrompt.iTimeout = 2;
  2720. break;
  2721. case DVB_APP_POP_MSG_CARD_PROBIEM_CHEAKCAED:
  2722. stPopup.eType = POPMSG_TYPE_PROMPT;
  2723. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2724. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2725. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_CARD_PROBIEM_CHEAKCAED;
  2726. stPopup.extend.stPrompt.iTimeout = 2;
  2727. break;
  2728. case DVB_APP_POP_MSG_NO_ACCESS:
  2729. stPopup.eType = POPMSG_TYPE_PROMPT;
  2730. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2731. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2732. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_ACCESS;
  2733. stPopup.extend.stPrompt.iTimeout = 2;
  2734. break;
  2735. case DVB_APP_POP_MSG_NO_ACCESS_GEOGRAPHICAL_BLACKOUT:
  2736. stPopup.eType = POPMSG_TYPE_PROMPT;
  2737. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2738. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2739. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_ACCESS_GEOGRAPHICAL_BLACKOUT;
  2740. stPopup.extend.stPrompt.iTimeout = 2;
  2741. break;
  2742. case DVB_APP_POP_MSG_NO_ACCESS_NETWORK_BLOCK:
  2743. stPopup.eType = POPMSG_TYPE_PROMPT;
  2744. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2745. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2746. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_ACCESS_NETWORK_BLOCK;
  2747. stPopup.extend.stPrompt.iTimeout = 2;
  2748. break;
  2749. #endif
  2750. case DVB_APP_POP_MSG_RADIO_CHANNEL:
  2751. stPopup.eType = POPMSG_TYPE_PROMPT;
  2752. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2753. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2754. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_RADIO_CHANNEL;
  2755. break;
  2756. case DVB_APP_POP_MSG_NO_RADIO:
  2757. stPopup.eType = POPMSG_TYPE_PROMPT;
  2758. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2759. stPopup.u16ReturnType = GUI_OBJECT_NO_POST_ACTION ;
  2760. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_RADIO;
  2761. stPopup.extend.stPrompt.iTimeout = 2;
  2762. break;
  2763. case DVB_APP_POP_MSG_NO_DTVORDATA:
  2764. stPopup.eType = POPMSG_TYPE_PROMPT;
  2765. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2766. stPopup.u16ReturnType = GUI_OBJECT_NO_POST_ACTION ;
  2767. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_DTVORDATA;
  2768. stPopup.extend.stPrompt.iTimeout = 2;
  2769. break;
  2770. #ifdef CONFIG_SUPPORT_MHEG5
  2771. case DVB_APP_POP_MSG_STOP_SUBTITLE_TO_OPEN_MHEG5:
  2772. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2773. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2774. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2775. stPopup.u32GuiObjID = DVB_GUIOBJ_PLAYBACK;
  2776. stPopup.extend.stConfirm.eConfirmType =
  2777. PLAYBACK_POPUP_CONFIRM_STOP_SUBTITLE_TO_OPEN_MHEG5;
  2778. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2779. break;
  2780. #endif
  2781. case DVB_APP_POP_MSG_KEYLOCK:
  2782. stPopup.eType = POPMSG_TYPE_PROMPT;
  2783. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2784. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT;
  2785. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_KEYLOCK;
  2786. stPopup.extend.stPrompt.iTimeout = 2;
  2787. break;
  2788. case DVB_APP_POP_MSG_OVERMAXVOLUME:
  2789. stPopup.eType = POPMSG_TYPE_PROMPT;
  2790. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2791. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT;
  2792. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_OVER_MAXVOLUME;
  2793. stPopup.extend.stPrompt.iTimeout = 2;
  2794. break;
  2795. #ifdef N32_GAME_SUPPORT
  2796. case DVB_APP_POP_MSG_IMPORTING_GAME:
  2797. stPopup.eType = POPMSG_TYPE_PROMPT;
  2798. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2799. stPopup.u16ReturnType = GUI_OBJECT_NO_POST_ACTION ;
  2800. stPopup.extend.stPrompt.ePromptType = POPMSG_N32GAME_IMPORTING_GAME;
  2801. stPopup.extend.stPrompt.iTimeout = 2;
  2802. break;
  2803. case DVB_APP_POP_MSG_NO_SIZE_FOR_GAME:
  2804. stPopup.eType = POPMSG_TYPE_PROMPT;
  2805. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2806. stPopup.u16ReturnType = GUI_OBJECT_NO_POST_ACTION ;
  2807. stPopup.extend.stPrompt.ePromptType = POPMSG_N32GAME_NO_SIZE_FOR_GAME;
  2808. stPopup.extend.stPrompt.iTimeout = 2;
  2809. break;
  2810. #endif
  2811. default:
  2812. return;
  2813. }
  2814. if (stDvbInst.bAppState == SYSTEM_IDLE)
  2815. {
  2816. return;
  2817. }
  2818. DVBApp_SchedulePopup(stPopup);
  2819. }
  2820. static INT32 _DVBApp_CheckPopupDisplay(void)
  2821. {
  2822. UINT32 dCheckFlag;
  2823. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  2824. {
  2825. for (dCheckFlag = PLAYBACK_POPUP_MAX - 1; dCheckFlag > PLAYBACK_POPUP_NONE; dCheckFlag--)
  2826. {
  2827. if (g_u32PopupWaitingList & (1 << (dCheckFlag - PLAYBACK_POPUP_NONE)))
  2828. {
  2829. DVBApp_SchedulePopup(stPopupWaitingList[dCheckFlag-PLAYBACK_POPUP_NONE]);
  2830. break;
  2831. }
  2832. }
  2833. }
  2834. return 0;
  2835. }
  2836. static INT32 _DVBApp_HidePopupDisplay(void)
  2837. {
  2838. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  2839. {
  2840. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO);
  2841. }
  2842. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM))
  2843. {
  2844. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM);
  2845. }
  2846. APP_MenuMgr_SetMsgPopup(FALSE);
  2847. g_u32OldPopup = PLAYBACK_POPUP_NONE;
  2848. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  2849. {
  2850. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  2851. }
  2852. g_dCurPopup = PLAYBACK_POPUP_NONE;
  2853. return SP_SUCCESS;
  2854. }
  2855. static al_void _DVBApp_SendServRefleshMsg(al_void)
  2856. {
  2857. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR))
  2858. {
  2859. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR,
  2860. APP_GLOBAL_EVENT_REFRESH_SERV_INFO, 0);
  2861. }
  2862. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR))
  2863. {
  2864. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR,
  2865. APP_GLOBAL_EVENT_REFRESH_SERV_INFO, 0);
  2866. }
  2867. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST))
  2868. {
  2869. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST,
  2870. APP_GLOBAL_EVENT_REFRESH_SERV_INFO, 0);
  2871. }
  2872. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST))
  2873. {
  2874. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST,
  2875. APP_GLOBAL_EVENT_REFRESH_SERV_INFO, 0);
  2876. }
  2877. }
  2878. static INT32 _DVBApp_Zapping(
  2879. UINT8 bServiceType, AL_RecHandle_t hProgHdl,
  2880. UINT8 bForce, UINT32 u32Paramter, Boolean bShowInfo)
  2881. {
  2882. AL_DB_EDBType_t eOldDBType = APP_GUIOBJ_DVB_Playback_GetPrevNetType();
  2883. AL_DB_ERecordType_t eOldServiceType = APP_DVB_Playback_GetCurrServiceType(eOldDBType);
  2884. AL_RecHandle_t hOldProgHdl;
  2885. AL_RecHandle_t hNextProgHdl = hProgHdl;
  2886. APP_Source_Type_t eSourType = APP_SOURCE_MAX;
  2887. APP_GUIOBJ_Source_GetCurrSource(&eSourType);
  2888. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM))
  2889. {
  2890. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM);
  2891. }
  2892. #ifdef CONFIG_CI_SUPPORT
  2893. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ))
  2894. {
  2895. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ);
  2896. }
  2897. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU))
  2898. {
  2899. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU);
  2900. }
  2901. g_Audio_Scramble_Counter = 0;
  2902. g_VIP_FINISH_Flg = FALSE;
  2903. #endif
  2904. hOldProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eOldDBType, eOldServiceType);
  2905. if (AL_DB_INVALIDHDL != hNextProgHdl)
  2906. {
  2907. AL_ServiceDetail_t ServInfor;
  2908. DBServAttrib_t stProgAttrib;
  2909. AL_DB_EDBType_t eDBType;
  2910. AL_DB_ERecordType_t eServiceType;
  2911. #ifdef CONFIG_CIPLUS_SUPPORT
  2912. if (g_isMute)
  2913. {
  2914. g_isMute = FALSE;
  2915. dvb_printf("%s, %d, valid program handle unmute all!\n", __FUNCTION__, __LINE__);
  2916. APP_Audio_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_DTV);
  2917. APP_Video_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_DTV);
  2918. }
  2919. #endif
  2920. AL_DB_QueryDetail(hNextProgHdl, &ServInfor);
  2921. AL_DB_GetRecordType(hNextProgHdl, &eDBType, &eServiceType);
  2922. if (AL_DBTYPE_DVB_T == eDBType)
  2923. {
  2924. stProgAttrib = ServInfor.stDVBTServ.stProgAttrib;
  2925. }
  2926. else if (AL_DBTYPE_DVB_C == eDBType)
  2927. {
  2928. stProgAttrib = ServInfor.stDVBCServ.stProgAttrib;
  2929. }
  2930. else if (AL_DBTYPE_DVB_S == eDBType)
  2931. {
  2932. stProgAttrib = ServInfor.stDVBSServ.stProgAttrib;
  2933. }
  2934. if (!(stProgAttrib.delete == al_true))
  2935. {
  2936. if ((hNextProgHdl != hOldProgHdl)
  2937. || (bServiceType != eOldServiceType) || (bForce == TRUE)
  2938. #ifdef CONFIG_CIPLUS_SUPPORT
  2939. || APP_DVB_CI_GetIsPlaybackPMT()
  2940. #endif
  2941. #ifdef CHECK_HIDDEN_SERVICE
  2942. || ((stProgAttrib.notvisible == al_true) != 0)
  2943. #endif
  2944. )
  2945. {
  2946. #ifdef CONFIG_SUPPORT_PVR
  2947. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  2948. {
  2949. PVR_DEBF("\n==========stop recorder to zapping!====\n");
  2950. if (MID_REC_MODE_MANUAL == MID_Recorder_GetRecMode())
  2951. {
  2952. DVBApp_StopRecord();
  2953. }
  2954. else
  2955. {
  2956. DVBApp_StopTimeshift(FALSE);
  2957. }
  2958. }
  2959. #endif
  2960. #if 0/*moved to _APP_GUIOBJ_DVB_Playback_Stop() by xm.zeng on 2013/3/26.*/
  2961. #ifdef CONFIG_SUPPORT_SUBTITLE
  2962. AL_Subtitle_Reset();
  2963. #endif
  2964. #ifdef CONFIG_SUPPORT_TTX
  2965. AL_TTX_Stop();
  2966. AL_TTX_Reset();
  2967. #endif
  2968. #endif/*end*/
  2969. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  2970. {
  2971. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  2972. }
  2973. if (APP_GetPlaybackPauseState() == TRUE)
  2974. {
  2975. APP_Audio_SetMute(TRUE, TRUE, APP_MUTE_MODE_CH_CHANGE, eSourType);
  2976. APP_Video_SetMute(TRUE, TRUE, APP_MUTE_MODE_CH_CHANGE, eSourType);
  2977. MID_PlaybackStreamResume(1);
  2978. APP_SetPlaybackPauseState(FALSE);
  2979. #ifdef CONFIG_SUPPORT_SUBTITLE
  2980. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  2981. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  2982. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  2983. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  2984. if (g_stUserInfoData.Subtitle == APP_SWITCH_ON)
  2985. {
  2986. #ifdef CONFIG_DTV_SUPPORT
  2987. AL_Subtitle_Type_t SubtitleType = AL_SUBTITLE_TYPE_MAX;
  2988. if (APP_GUIOBJ_SubTitle_GetType(&SubtitleType) == TRUE)
  2989. {
  2990. AL_Subtitle_SetFreeze(FALSE);
  2991. }
  2992. #endif
  2993. }
  2994. #endif
  2995. }
  2996. DVBApp_ClearStatus();
  2997. if (u32Paramter == FW_MONITOR_REPLACE_SERVICE)
  2998. {
  2999. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  3000. SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  3001. APP_DVB_INTRA_EVENT_ZAPPING_WITH_REPLACE, (UINT32)hNextProgHdl);
  3002. }
  3003. else
  3004. {
  3005. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  3006. SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  3007. APP_DVB_INTRA_EVENT_ZAPPING, (UINT32)hNextProgHdl);
  3008. }
  3009. }
  3010. }
  3011. /*Add for dispose TV/RADIO key in channel manager /channel list /epg*/
  3012. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR)
  3013. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR)
  3014. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST)
  3015. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST)
  3016. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG)
  3017. #ifdef SUPPORT_FACTORY_AUTO_TEST
  3018. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING)
  3019. #endif
  3020. )
  3021. {
  3022. return SP_SUCCESS;
  3023. }
  3024. /*End*/
  3025. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  3026. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  3027. if((!APP_Factory_CheckNeedReopenFm(SYS_APP_DVB))
  3028. #ifdef SUPPORT_HOTEL_MODE_INFOBANNER_SHOW_CONTROL
  3029. &&((!g_stFactoryHotelData.HotelModeOnOff)||(g_stFactoryHotelData.ShowInfoBar))
  3030. #endif
  3031. )
  3032. {
  3033. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  3034. {
  3035. if (bShowInfo == TRUE)
  3036. {
  3037. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  3038. SYS_APP_DVB, DVB_GUIOBJ_PROGINFO,
  3039. APP_DVB_GLOBAL_EVENT_INFO_UPDATE, 1);
  3040. }
  3041. else
  3042. {
  3043. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO);
  3044. }
  3045. }
  3046. else
  3047. {
  3048. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER))
  3049. {
  3050. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER);
  3051. }
  3052. if (!(APP_MenuMgr_Exist_Main_Menu()))
  3053. {
  3054. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  3055. {
  3056. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  3057. }
  3058. #ifdef SUPPORT_CEC_TV
  3059. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  3060. {
  3061. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  3062. }
  3063. #endif
  3064. _DVBApp_CloseAllMenu();
  3065. if (bShowInfo == TRUE)
  3066. {
  3067. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO, 0);
  3068. }
  3069. }
  3070. }
  3071. if (APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL)
  3072. == MID_PLAYBK_PROG_STATE_LOCKED)
  3073. {
  3074. if (bShowInfo == TRUE)
  3075. {
  3076. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  3077. }
  3078. }
  3079. }
  3080. }
  3081. else
  3082. {
  3083. #ifdef CONFIG_CIPLUS_SUPPORT
  3084. if (APP_CIPLUS_IsProfileSource())
  3085. {
  3086. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_DTV);
  3087. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_DTV);
  3088. g_isMute = TRUE;
  3089. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  3090. {
  3091. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO,
  3092. APP_DVB_GLOBAL_EVENT_INFO_UPDATE, 1);
  3093. }
  3094. else
  3095. {
  3096. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER))
  3097. {
  3098. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER);
  3099. }
  3100. if (!(APP_MenuMgr_Exist_Main_Menu()))
  3101. {
  3102. _DVBApp_CloseAllMenu();
  3103. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO, 0);
  3104. }
  3105. }
  3106. }
  3107. else
  3108. #endif
  3109. {
  3110. #ifdef SPECIAL_CHNORDER_FOR_SPAIN
  3111. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_DISPLAY, 0);
  3112. #else
  3113. _DVBApp_ShowPopup(DVB_APP_POP_MSG_INVALID_INPUT);
  3114. #endif
  3115. }
  3116. }
  3117. _DVBApp_CheckPopupDisplay();
  3118. return SP_SUCCESS;
  3119. }
  3120. static INT32 _DVBApp_DestroyPartialObjects(UINT8 *pMenuFlag)
  3121. {
  3122. UINT32 i;
  3123. UINT32 u32TotalObj;
  3124. UINT8 u8FilteredObj = 0;
  3125. UINT32 u32GuiObjID[DVB_GUIOBJ_MAX];
  3126. if (SYSAPP_GOBJ_GetTotalCreatedObjects(SYS_APP_DVB, &u32TotalObj) == -1)
  3127. {
  3128. return SP_ERR_FAILURE;
  3129. }
  3130. for (i = 0; i <= u32TotalObj - 1; i++)
  3131. {
  3132. if (SYSAPP_GOBJ_GetObjectIDByIndex(SYS_APP_DVB, i , &u32GuiObjID[u8FilteredObj]) == -1)
  3133. {
  3134. return SP_ERR_FAILURE;
  3135. }
  3136. if ((u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_PLAYBACK)
  3137. #ifdef CONFIG_SUPPORT_SUBTITLE
  3138. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_SUBTITLE)
  3139. #endif
  3140. #ifdef CONFIG_SUPPORT_MHEG5
  3141. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_MHEG5)
  3142. #endif
  3143. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_FREEZE)
  3144. || (u32GuiObjID[u8FilteredObj] == APP_GUIOBJ_MUTE)
  3145. #ifdef CONFIG_KEYPAD_SINGLE_REUSE
  3146. || (u32GuiObjID[u8FilteredObj] == APP_GUIOBJ_SINGLEKEYPAD)
  3147. #endif
  3148. )
  3149. {
  3150. continue;
  3151. }
  3152. else if ((u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_CHNMGR)
  3153. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_FAVMGR)
  3154. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_SCAN_PROCESS)
  3155. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_CHNRENAME)
  3156. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_EPG)
  3157. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_CHNLIST)
  3158. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_FAVLIST)
  3159. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_EPGEXTEND)
  3160. #ifdef CONFIG_CI_SUPPORT
  3161. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_CI_MENU)
  3162. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_CI_ENQ)
  3163. #endif
  3164. )
  3165. {
  3166. *pMenuFlag = TRUE;
  3167. }
  3168. u8FilteredObj++;
  3169. }
  3170. SYSAPP_GOBJ_DestroyPartialGUIObjects(SYS_APP_DVB, u32GuiObjID, u8FilteredObj);
  3171. return SP_SUCCESS;
  3172. }
  3173. static void _DVBApp_Exit_All_Menu(void)
  3174. {
  3175. UINT8 bMenuFlag = 0;
  3176. al_bool bHasValidServ = al_false;
  3177. al_uint8 bSignalState = al_false;
  3178. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  3179. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  3180. {
  3181. DVBApp_ResetPopup_Channel();
  3182. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  3183. }
  3184. #ifdef OSD_GAME_SUPPORT
  3185. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OSDGAME))
  3186. {
  3187. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_OSDGAME, APP_DVB_INTRA_EVENT_OSD_GAME_EXIT, (UINT32)NULL);
  3188. }
  3189. #endif
  3190. if (APP_MenuMgr_Exist_Main_Menu())
  3191. {
  3192. bMenuFlag = 1;
  3193. APP_MenuMgr_Exit_Main_Menu();
  3194. }
  3195. if (APP_MenuMgr_Exist_Factory_Menu())
  3196. {
  3197. bMenuFlag = 1;
  3198. APP_MenuMgr_Exit_Factory_Menu();
  3199. }
  3200. #ifdef CONFIG_SUPPORT_OTA_UPGRADE
  3201. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OTA_UPGRADE_PROGRESS)
  3202. && (!APP_MenuMgr_Exist_Main_Menu()))
  3203. {
  3204. bMenuFlag = TRUE;
  3205. }
  3206. #endif
  3207. if (g_u32OldPopup == PLAYBACK_POPUP_NONE)
  3208. {
  3209. if (_DVBApp_DestroyPartialObjects(&bMenuFlag) == SP_ERR_FAILURE)
  3210. {
  3211. SYSAPP_GOBJ_DestroyAllGUIObject(SYS_APP_DVB);
  3212. }
  3213. }
  3214. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  3215. if (bMenuFlag)
  3216. {
  3217. #if 0
  3218. if (TotalNum > 0)
  3219. {
  3220. al_uint8 bSignalState = al_false;
  3221. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  3222. if ((bSignalState != AL_DVB_MONITOR_VALUE_TRUE) && (MID_PlaybackIsPlaying() == TRUE))
  3223. {
  3224. //DVBApp_ResetPopup_Channel();
  3225. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_SIGNAL);
  3226. }
  3227. else
  3228. {
  3229. if (eServiceType == AL_RECTYPE_DVBRADIO)
  3230. {
  3231. //DVBApp_ResetPopup_Channel();
  3232. if (!APP_GUIOBJ_DVB_Playback_GetShowLogoState())
  3233. {
  3234. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  3235. }
  3236. if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL))
  3237. {
  3238. #ifdef CONFIG_SUPPORT_MHEG5
  3239. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  3240. #endif
  3241. {
  3242. _DVBApp_ShowPopup(DVB_APP_POP_MSG_RADIO_CHANNEL);
  3243. }
  3244. }
  3245. }
  3246. else
  3247. {
  3248. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  3249. }
  3250. if (APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL)
  3251. == MID_PLAYBK_PROG_STATE_SCRAMBLED)
  3252. {
  3253. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SCRAMBLE);
  3254. }
  3255. }
  3256. }
  3257. else
  3258. {
  3259. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  3260. //DVBApp_ResetPopup_Channel();
  3261. _DVBApp_ShowPopup(DVB_APP_POP_MSG_DATABASE_EMPTY);
  3262. }
  3263. #endif
  3264. }
  3265. else
  3266. {
  3267. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  3268. {
  3269. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO);
  3270. }
  3271. }
  3272. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  3273. if (bSignalState == AL_DVB_MONITOR_VALUE_TRUE)
  3274. {
  3275. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  3276. }
  3277. DVBApp_ClosePopup(PLAYBACK_POPUP_PWD_LOCKED, UI_EVENT_NULL);
  3278. if (bHasValidServ)
  3279. {
  3280. #ifdef CONFIG_CIPLUS_SUPPORT
  3281. if (APP_CIPLUS_IsProfileSource())
  3282. {
  3283. if (g_isMute)
  3284. {
  3285. return ;
  3286. }
  3287. }
  3288. #endif
  3289. _DVBApp_ToggleVideoState();
  3290. if (g_bMidHasUnmute)
  3291. {
  3292. DVBApp_CheckProgramType(TRUE);
  3293. }
  3294. }
  3295. _DVBApp_CheckPopupDisplay();
  3296. }
  3297. static void _DVBApp_ExitAll(void)
  3298. {
  3299. #ifdef CONFIG_SUPPORT_MHEG5
  3300. UINT32 u32TotalObj = 0;
  3301. if (SYSAPP_GOBJ_GetTotalCreatedObjects(SYS_APP_DVB, &u32TotalObj) == -1)
  3302. {
  3303. u32TotalObj = 0;
  3304. }
  3305. #endif
  3306. _DVBApp_Exit_All_Menu();
  3307. #ifdef CONFIG_SUPPORT_MHEG5
  3308. #ifdef SUPPORT_TIME_ON_OSD
  3309. if (u32TotalObj == 3)
  3310. #else
  3311. if (u32TotalObj == 2)
  3312. #endif
  3313. {
  3314. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  3315. {
  3316. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, UI_EVENT_RETURN, 0);
  3317. }
  3318. }
  3319. #ifdef SUPPORT_SUBTITLE_ON_PG
  3320. else if ((u32TotalObj == 4) && (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE)))
  3321. {
  3322. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  3323. {
  3324. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, UI_EVENT_RETURN, 0);
  3325. }
  3326. }
  3327. #endif
  3328. #endif
  3329. }
  3330. static INT32 _DVBApp_CloseAllMenu(void)
  3331. {
  3332. INT32 u32GuiObj = 0;
  3333. UINT32 u32GuiObjID;
  3334. UINT32 u32TotalObj;
  3335. _DVBApp_HidePopupDisplay();
  3336. if (SYSAPP_GOBJ_GetTotalCreatedObjects(SYS_APP_DVB, &u32TotalObj) != SYSTEM_APP_SUCCESS)
  3337. {
  3338. return SP_ERR_FAILURE;
  3339. }
  3340. for (u32GuiObj =(INT32)(u32TotalObj - 1); u32GuiObj >= 0; u32GuiObj--)
  3341. {
  3342. if (SYSAPP_GOBJ_GetObjectIDByIndex(SYS_APP_DVB, u32GuiObj , &u32GuiObjID) != SYSTEM_APP_SUCCESS)
  3343. {
  3344. return SP_ERR_FAILURE;
  3345. }
  3346. if ((u32GuiObjID == DVB_GUIOBJ_PLAYBACK)
  3347. #ifdef CONFIG_SUPPORT_SUBTITLE
  3348. ||(u32GuiObjID == DVB_GUIOBJ_SUBTITLE)
  3349. #endif
  3350. #ifdef CONFIG_SUPPORT_MHEG5
  3351. ||(u32GuiObjID == DVB_GUIOBJ_MHEG5)
  3352. #endif
  3353. ||(u32GuiObjID == DVB_GUIOBJ_FREEZE)
  3354. ||(u32GuiObjID == APP_GUIOBJ_MUTE)
  3355. #ifdef CONFIG_SUPPORT_PVR
  3356. || (u32GuiObjID == DVB_GUIOBJ_PVR_FILEPLAY)
  3357. || (u32GuiObjID == DVB_GUIOBJ_PVR_FILEPLAYINFO)
  3358. #endif
  3359. #ifdef CONFIG_KEYPAD_SINGLE_REUSE
  3360. || (u32GuiObjID == APP_GUIOBJ_SINGLEKEYPAD)
  3361. #endif
  3362. )
  3363. {
  3364. continue;
  3365. }
  3366. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, u32GuiObjID);
  3367. }
  3368. #ifdef CONFIG_SUPPORT_TTX
  3369. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  3370. {
  3371. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  3372. }
  3373. #endif
  3374. return SP_SUCCESS;
  3375. }
  3376. #ifdef CONFIG_SUPPORT_PVR
  3377. /* g_bMidHasUnmute , we need modify this flag before play record file when dtv play locked radio */
  3378. void DVBAPP_Pvr_fileplay_Setflag(Boolean flag)
  3379. {
  3380. g_bMidHasUnmute = flag;
  3381. }
  3382. AL_SCH_sched_id_t DVBAPP_Pvr_GetStopTimer_id(void)
  3383. {
  3384. return stoprec_id;
  3385. }
  3386. void DVBApp_Pvr_SetStopTimer_id(void)
  3387. {
  3388. stoprec_id = AL_SCH_INVALID_ID;
  3389. }
  3390. void DVBApp_SetBGTimeshift(UINT8 u8StartInterval)
  3391. {
  3392. if (u8StartInterval > 0)
  3393. {
  3394. g_u8BGTimeshiftStart = u8StartInterval;
  3395. }
  3396. else
  3397. {
  3398. g_u8BGTimeshiftStart = 0;
  3399. }
  3400. }
  3401. static int DVBApp_CheckDiskSpeedAgain(int defpartition)
  3402. {
  3403. int Speed_State;
  3404. dvb_printf(" %s \n\n",__FUNCTION__);
  3405. MID_RecorderSetDefaultPartition(defpartition, MID_REC_PARTITION_SET_FORCE);
  3406. Speed_State = MID_RecorderGetPartitionSpeed(defpartition);
  3407. return Speed_State;
  3408. }
  3409. static INT32 DVBApp_CheckForRecord(MID_REC_MODE eRecMode)
  3410. {
  3411. int Speed_State;
  3412. INT32 iRet = 0;
  3413. INT32 iPtListIdx = -1;
  3414. //al_bool SOURCE_HD = FALSE;
  3415. al_uint8 bSignalState = al_false;
  3416. al_bool bHasValidServ = al_false;
  3417. UINT8 u8ProgLockState = FALSE;
  3418. g_eCheckRecMode = eRecMode;
  3419. //move this action to here for mantis:22619 start
  3420. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  3421. //move this action to here for mantis:22619 end
  3422. u8ProgLockState = APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL);
  3423. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  3424. if (u8ProgLockState == MID_PLAYBK_PROG_STATE_LOCKED)
  3425. {
  3426. if(MID_REC_MODE_MANUAL == eRecMode)
  3427. {
  3428. #ifndef SUPPORT_SPEC_PVR_RECORD
  3429. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  3430. return SP_ERR_FAILURE;
  3431. #endif
  3432. }
  3433. else
  3434. {
  3435. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_ENTER_NOT_VALID);
  3436. return SP_ERR_FAILURE;
  3437. }
  3438. }
  3439. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  3440. if ((bSignalState != AL_DVB_MONITOR_VALUE_TRUE)
  3441. || (DVBApp_CheckServiceNotAvailable() == TRUE)
  3442. || !bHasValidServ)
  3443. {
  3444. if (MID_REC_MODE_AUTO == eRecMode)
  3445. {
  3446. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  3447. }
  3448. else
  3449. {
  3450. if (eRecMode == MID_REC_MODE_MANUAL)
  3451. {
  3452. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  3453. }
  3454. else if (eRecMode == MID_REC_MODE_TIMESHIFT_AFTER_REC)
  3455. {
  3456. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_ENTER_NOT_VALID);
  3457. }
  3458. }
  3459. return SP_ERR_FAILURE;
  3460. }
  3461. iRet = APP_GUIOBJ_DVB_PvrRec_IsReadyToRecord();
  3462. if (iRet != PVR_MSG_SUCCESS)
  3463. {
  3464. switch (iRet)
  3465. {
  3466. case PVR_MSG_FAIL_DISK_CHECKING:
  3467. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_DISK_CHECKING);
  3468. if (MID_REC_MODE_AUTO == eRecMode)
  3469. {
  3470. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  3471. }
  3472. break;
  3473. case PVR_MSG_FAIL_PARTITION_NOT_SET:
  3474. if (MID_REC_MODE_AUTO == eRecMode)
  3475. {
  3476. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  3477. }
  3478. else
  3479. {
  3480. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_PARTITION_NOT_SET);
  3481. }
  3482. break;
  3483. case PVR_MSG_FAIL_NO_STORAGE:
  3484. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_NO_STORAGE);
  3485. break;
  3486. case PVR_MSG_FAIL_NTFS_DIRTY:
  3487. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_NTFS_DIRTY);
  3488. break;
  3489. case PVR_MSG_FAIL_NO_FREE_SPACE:
  3490. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_DISK_FULL);
  3491. break;
  3492. case PVR_MSG_FAIL_H264_IN_PS_FORMAT:
  3493. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  3494. break;
  3495. case PVR_MSG_SCRAMBLE_CHANNEL:
  3496. if (MID_REC_MODE_AUTO == eRecMode)
  3497. {
  3498. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  3499. }
  3500. else if (MID_REC_MODE_MANUAL== eRecMode)
  3501. {
  3502. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  3503. }
  3504. else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC== eRecMode))
  3505. {
  3506. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_ENTER_NOT_VALID);
  3507. }
  3508. break;
  3509. default:
  3510. if (MID_REC_MODE_AUTO == eRecMode)
  3511. {
  3512. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  3513. }
  3514. else
  3515. {
  3516. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  3517. }
  3518. break;
  3519. }
  3520. return SP_ERR_FAILURE;
  3521. }
  3522. MID_RecorderGetDefaultPartition(&iPtListIdx);
  3523. Speed_State = MID_RecorderGetPartitionSpeed(iPtListIdx);
  3524. #ifdef REMIND_SPEED_NOT_ENOUGH
  3525. al_uint8 SOURCE_HD = FALSE;
  3526. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_HDCONTENT, &SOURCE_HD);
  3527. if (SOURCE_HD)
  3528. {
  3529. if ((Speed_State < MID_REC_SPEED_HDRECORD) && (eRecMode == MID_REC_MODE_MANUAL))
  3530. {
  3531. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  3532. if (APP_WAKEUP_GetBootFlag() == FALSE)//panel off, record immediately
  3533. #endif
  3534. {
  3535. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_SPEED_NOT_ENOUGH); //POPUP REC SPEED NOT ENOUGH
  3536. return SP_ERR_FAILURE;
  3537. }
  3538. }
  3539. else if ((Speed_State < MID_REC_SPEED_HDTSHIFT) && (eRecMode != MID_REC_MODE_MANUAL))
  3540. {
  3541. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_SPEED_NOT_ENOUGH); //POPUP TIMESHIFT SPEED NOT ENOUGH
  3542. return SP_ERR_FAILURE;
  3543. }
  3544. }
  3545. else
  3546. {
  3547. if ((Speed_State < MID_REC_SPEED_SDRECORD) && (eRecMode == MID_REC_MODE_MANUAL))
  3548. {
  3549. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  3550. if (APP_WAKEUP_GetBootFlag() == FALSE)//panel off, record immediately
  3551. #endif
  3552. {
  3553. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_SPEED_NOT_ENOUGH); //POPUP REC SPEED NOT ENOUGH
  3554. return SP_ERR_FAILURE;
  3555. }
  3556. }
  3557. else if ((Speed_State < MID_REC_SPEED_SDTSHIFT) && (eRecMode != MID_REC_MODE_MANUAL))
  3558. {
  3559. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_SPEED_NOT_ENOUGH); //POPUP TIMESHIFT SPEED NOT ENOUGH
  3560. return SP_ERR_FAILURE;
  3561. }
  3562. }
  3563. #else
  3564. if (Speed_State == MID_REC_SPEED_TOOLOW)
  3565. {
  3566. if ((Speed_State = DVBApp_CheckDiskSpeedAgain(iPtListIdx)) == MID_REC_SPEED_TOOLOW)
  3567. {
  3568. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_REQUIRE_FORMAT); //POPUP REC SPEED NOT ENOUGH
  3569. return SP_ERR_FAILURE;
  3570. }
  3571. }
  3572. #endif
  3573. //move this action to here for mantis:22619 start
  3574. if (MID_REC_MODE_AUTO == eRecMode)
  3575. {
  3576. _DVBApp_CloseAllMenu();
  3577. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_INIT);
  3578. }
  3579. //move this action to here for mantis:22619 end
  3580. return SP_SUCCESS;
  3581. }
  3582. INT32 DVBApp_StartRecord(MID_REC_MODE eRecMode)
  3583. {
  3584. INT32 iRet;
  3585. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  3586. {
  3587. return SP_ERR_FAILURE;
  3588. }
  3589. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS))
  3590. {
  3591. return SP_ERR_FAILURE;
  3592. }
  3593. #ifdef CONFIG_SUPPORT_OTA_UPGRADE
  3594. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OTA_UPGRADE_PROGRESS))
  3595. {
  3596. return SP_ERR_FAILURE;
  3597. }
  3598. #endif
  3599. if (DVBApp_CheckForRecord(eRecMode) != SP_SUCCESS)
  3600. {
  3601. dvb_printf("[%s %d]invalid to enter rec/timeshift!!! [off]\n",__FUNCTION__,__LINE__);
  3602. return SP_ERR_FAILURE;
  3603. }
  3604. #ifdef CONFIG_SUPPORT_MHEG5
  3605. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_MH5);
  3606. #endif
  3607. /* disable timer record */
  3608. APP_GUIOBJ_DVB_PvrRec_SetDurationTime(0);//means not timer record //zhongbaoxing added for mantis 142788 @20110720
  3609. if (MID_REC_MODE_MANUAL == eRecMode)
  3610. {
  3611. MID_Recorder_SetRecMode(MID_REC_MODE_MANUAL);
  3612. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  3613. if(APP_WAKEUP_GetBootFlag() == TRUE)
  3614. {
  3615. printf("[debug ]%s %d\n",__FUNCTION__,__LINE__);
  3616. printf("REC Mode Chang to MID_REC_MODE_UNATTENDED\n\n\n");
  3617. MID_Recorder_SetRecMode(MID_REC_MODE_UNATTENDED);
  3618. }
  3619. #endif
  3620. iRet = APP_GUIOBJ_DVB_PvrRec_StartRecord();
  3621. if (iRet != PVR_MSG_SUCCESS)
  3622. {
  3623. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  3624. MID_Recorder_SetRecMode(MID_REC_MODE_MAX);
  3625. APP_GUIOBJ_DVB_PvrRec_RegUninitCallback();
  3626. #ifdef CONFIG_SUPPORT_MHEG5
  3627. if (APP_Area_SupportDtg())
  3628. {
  3629. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB | OSD2CTRLMDL_MH5);
  3630. }
  3631. else
  3632. {
  3633. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  3634. }
  3635. #else
  3636. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  3637. #endif
  3638. return SP_ERR_FAILURE;
  3639. }
  3640. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  3641. {
  3642. #ifdef Subtitle_Freeze
  3643. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE))
  3644. {
  3645. AL_Subtitle_SetFreeze(FALSE);
  3646. }
  3647. #endif
  3648. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  3649. MID_PlaybackStreamResume(1);
  3650. g_PauseState = FALSE;
  3651. }
  3652. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_INIT);
  3653. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, 0);
  3654. #ifdef SUPPORT_FREE_RECORD_TIME
  3655. if (APP_GUIOBJ_DVB_PvrRec_GetTimerRecord() == FALSE)
  3656. {
  3657. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  3658. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  3659. AL_SCH_details_t sch_detail;
  3660. al_uint32 CurTimeInSec = 0;
  3661. AL_Time_GetCurTimeInSecs(&CurTimeInSec);
  3662. memset(&sch_detail, 0, sizeof(AL_SCH_details_t));
  3663. sch_detail.sch_event = AL_SCH_TYPE_SINGLE | AL_SCH_TYPE_PRG_EXPIRE_SCH;
  3664. sch_detail.sch_snooze = 0;
  3665. sch_detail.sch_time = CurTimeInSec + g_stFeatureData.FreeRecordTime*60; //for mantis 0156382
  3666. sch_detail.sch_user_para = 0;
  3667. PVR_DEBF("event_end_time_insec = %d\n", sch_detail.sch_time);
  3668. PVR_DEBF("current time = %d\n", CurTimeInSec);
  3669. AL_SCH_ScheduleEvent(&sch_detail, &stoprec_id, al_null);
  3670. APP_GUIOBJ_DVB_PvrRec_SetDurationTime(g_stFeatureData.FreeRecordTime*60);
  3671. }
  3672. #endif
  3673. }
  3674. else if (MID_REC_MODE_TIMESHIFT_AFTER_REC == eRecMode)
  3675. {
  3676. MID_Recorder_SetRecMode(MID_REC_MODE_TIMESHIFT_AFTER_REC);
  3677. iRet = APP_GUIOBJ_DVB_PvrRec_StartRecord();
  3678. if (iRet != PVR_MSG_SUCCESS)
  3679. {
  3680. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  3681. MID_Recorder_SetRecMode(MID_REC_MODE_MAX);
  3682. APP_GUIOBJ_DVB_PvrRec_RegUninitCallback();
  3683. #ifdef CONFIG_SUPPORT_MHEG5
  3684. if (APP_Area_SupportDtg())
  3685. {
  3686. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB | OSD2CTRLMDL_MH5);
  3687. }
  3688. else
  3689. {
  3690. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  3691. }
  3692. #else
  3693. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  3694. #endif
  3695. return SP_ERR_FAILURE;
  3696. }
  3697. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  3698. {
  3699. #ifdef Subtitle_Freeze
  3700. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE))
  3701. {
  3702. AL_Subtitle_SetFreeze(FALSE);
  3703. }
  3704. #endif
  3705. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  3706. MID_PlaybackStreamResume(1);
  3707. g_PauseState = FALSE;
  3708. }
  3709. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_INIT);
  3710. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  3711. {
  3712. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  3713. }
  3714. #ifdef SUPPORT_TEAC_TIMESHIFT_CTRL
  3715. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,
  3716. DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERPAUSE);
  3717. #else
  3718. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,
  3719. DVB_GUIOBJ_PVR_PLAYINFO, 0);
  3720. #endif
  3721. }
  3722. else if (MID_REC_MODE_AUTO == eRecMode)
  3723. {
  3724. MID_Recorder_SetRecMode(MID_REC_MODE_AUTO);
  3725. iRet = APP_GUIOBJ_DVB_PvrRec_StartRecord();
  3726. if (iRet != PVR_MSG_SUCCESS)
  3727. {
  3728. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  3729. MID_Recorder_SetRecMode(MID_REC_MODE_MAX);
  3730. APP_GUIOBJ_DVB_PvrRec_RegUninitCallback();
  3731. #ifdef CONFIG_SUPPORT_MHEG5
  3732. if (APP_Area_SupportDtg())
  3733. {
  3734. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB | OSD2CTRLMDL_MH5);
  3735. }
  3736. else
  3737. {
  3738. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  3739. }
  3740. #else
  3741. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  3742. #endif
  3743. return SP_ERR_FAILURE;
  3744. }
  3745. else
  3746. {
  3747. _DVBApp_ShowPopup(DVB_APP_POP_MSG_AUTOTIMESHIFT_INIT);
  3748. }
  3749. }
  3750. #ifdef SUPPORT_LED_FLASH
  3751. APP_LED_Flash_Timer_Set(LED_FLASH_TYPE_RECODER, LED_FLASH_TIMER_RECODER);
  3752. #endif
  3753. return SP_SUCCESS;
  3754. }
  3755. INT32 DVBApp_StopRecord(void)
  3756. {
  3757. AL_SCH_sched_id_t StopId= AL_SCH_INVALID_ID;
  3758. AL_SCH_sched_id_t DurId= AL_SCH_INVALID_ID;
  3759. StopId = DVBAPP_Pvr_GetStopTimer_id();
  3760. if (StopId != AL_SCH_INVALID_ID)
  3761. {
  3762. //UnSchedule stop timer
  3763. AL_SCH_UnScheduleEvent(&StopId);
  3764. DVBApp_Pvr_SetStopTimer_id();
  3765. }
  3766. DurId = APP_GUIOBJ_DVB_PvrRecDurationTime_GetDurationID();
  3767. if (DurId != AL_SCH_INVALID_ID)
  3768. {
  3769. //UnSchedule duration timer
  3770. AL_SCH_UnScheduleEvent(&DurId);
  3771. APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurationID();
  3772. }
  3773. /* //need modify kai.wang
  3774. extern INT32 APP_GUIOBJ_DVB_TimerList_GetRecordingPR(AL_PR_details_t* details, int* PROffset);
  3775. extern AL_Return_t APP_GUIOBJ_DVB_TimerList_DeleteRecordingPR(int Param);
  3776. int iOffset = 0;
  3777. if (APP_GUIOBJ_DVB_TimerList_GetRecordingPR(NULL, &iOffset) == AL_SUCCESS)
  3778. {
  3779. APP_GUIOBJ_DVB_TimerList_DeleteRecordingPR(iOffset);
  3780. #ifdef SUB_CUSTOMER_Tianle
  3781. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC))
  3782. {
  3783. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC,
  3784. APP_GLOBAL_EVENT_REFRESH_DATA, 0);
  3785. }
  3786. #else
  3787. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST))
  3788. {
  3789. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST,
  3790. APP_GLOBAL_EVENT_REFRESH_DATA, 0);
  3791. }
  3792. #endif
  3793. }
  3794. */
  3795. #ifdef SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD
  3796. if ((DVBAPP_Pvr_GetRECPlayFlag())
  3797. && (MID_REC_MODE_MANUAL == MID_Recorder_GetRecMode()))
  3798. {
  3799. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  3800. {
  3801. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  3802. }
  3803. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  3804. {
  3805. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  3806. }
  3807. APP_GUIOBJ_DVB_PvrPlayInfo_StopTimeshift();
  3808. }
  3809. #endif
  3810. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  3811. {
  3812. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  3813. }
  3814. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  3815. {
  3816. APP_GUIOBJ_DVB_PvrRec_StopRecord();
  3817. }
  3818. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  3819. {
  3820. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC);
  3821. }
  3822. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE))
  3823. {
  3824. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE);
  3825. }
  3826. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME))
  3827. {
  3828. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME);
  3829. }
  3830. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  3831. //check for standby recorder for the case stop rec unnormally
  3832. //sent to man app to call APP_WAKEUP_CompleteNotify();
  3833. MAINAPP_SendGlobalEvent(APP_GLOGAL_EVENT_PVR_TIEMRREC_CHECKSTANDBY, AL_POWER_STATE_OFF);
  3834. #endif
  3835. #ifdef SUPPORT_LED_FLASH
  3836. APP_LED_Flash_Timer_Set(LED_FLASH_TYPE_RECODER, 0);
  3837. #endif
  3838. APP_GUIOBJ_DVB_PvrRecInfo_SetDiskFull(FALSE);
  3839. #ifdef CONFIG_SUPPORT_MHEG5
  3840. if (APP_Area_SupportDtg())
  3841. {
  3842. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB | OSD2CTRLMDL_MH5);
  3843. }
  3844. else
  3845. {
  3846. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  3847. }
  3848. #else
  3849. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  3850. #endif
  3851. int u8MidRecState;
  3852. al_uint8 u8AutoTimeShift;
  3853. u8MidRecState = MID_RecorderState();
  3854. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  3855. ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift),
  3856. sizeof(g_stFeatureData.AutoTimeShift), &(g_stFeatureData.AutoTimeShift));
  3857. u8AutoTimeShift = g_stFeatureData.AutoTimeShift;
  3858. if (APP_PVR_TIMESHIFT_AUTO == u8AutoTimeShift && u8MidRecState == MID_REC_STATUS_STOP)
  3859. {
  3860. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  3861. }
  3862. return SP_SUCCESS;
  3863. }
  3864. INT32 DVBApp_StopTimeshift(Boolean bIsStopRec)
  3865. {
  3866. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  3867. {
  3868. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  3869. }
  3870. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  3871. {
  3872. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  3873. }
  3874. APP_GUIOBJ_DVB_PvrPlayInfo_StopTimeshift();
  3875. if (bIsStopRec)
  3876. {
  3877. #ifdef SUPPORT_LED_FLASH
  3878. APP_LED_Flash_Timer_Set(LED_FLASH_TYPE_RECODER, 0);
  3879. #endif
  3880. char szPtName[20];
  3881. int sdDefPtIdx = 0;
  3882. MID_RecorderGetDefaultPartition(&sdDefPtIdx);
  3883. MID_PartitionList_GetMountName(sdDefPtIdx, szPtName);
  3884. MID_RecorderStop();
  3885. MID_RecorderSetProgHandle(0);
  3886. MID_Recorder_SetRecMode(MID_REC_MODE_MAX);
  3887. MID_RecorderDeleteTSPLFiles(); //delete TSPL buffer when Timeshift without Timeshift to Record enabled
  3888. MID_Recorder_DeleteTShistIfExist(szPtName);
  3889. }
  3890. return SP_SUCCESS;
  3891. }
  3892. static UINT8 DVBApp_CheakFocusPopOnlyForRECicon(void)
  3893. {
  3894. //For the problem: REC icon can not show when there are only some pops focused under REC
  3895. UINT8 Flag = 0;
  3896. INT32 iFocusedIndex = 0;
  3897. if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  3898. {
  3899. return Flag;
  3900. }
  3901. if (DVB_GUIOBJ_POPMSG == iFocusedIndex)
  3902. {
  3903. if(DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL)
  3904. ||DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL)
  3905. ||DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_TEMPSERVICE)
  3906. ||DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_TEMPSERVICE_SERVICE_NOT_RUNNING)
  3907. ||DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SCRAMBLED)
  3908. ||DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE)
  3909. ||DVBApp_IsPopupExist(PLAYBACK_POPUP_PWD_LOCKED))
  3910. {
  3911. Flag = 1;
  3912. }
  3913. }
  3914. return Flag;
  3915. }
  3916. static INT32 _DVBApp_Recorder_PauseResume(void)
  3917. {
  3918. int iFocusedIndex;
  3919. if (MID_RecorderState() == MID_REC_STATUS_PAUSE)
  3920. {
  3921. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  3922. {
  3923. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC);
  3924. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  3925. }
  3926. else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  3927. {
  3928. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  3929. }
  3930. else if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex)
  3931. || DVBApp_CheakFocusPopOnlyForRECicon())
  3932. {
  3933. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  3934. }
  3935. }
  3936. if (MID_RecorderState() == MID_REC_STATUS_START)
  3937. {
  3938. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE))
  3939. {
  3940. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE);
  3941. if (MID_REC_MODE_MANUAL == MID_Recorder_GetRecMode())
  3942. {
  3943. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, 0);
  3944. #ifdef SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD
  3945. if(DVBAPP_Pvr_GetRECPlayFlag())
  3946. {
  3947. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERNORMAL);
  3948. }
  3949. #endif
  3950. }
  3951. }
  3952. }
  3953. return SP_SUCCESS;
  3954. }
  3955. void DVBApp_SetPVRSwitchSRC(Boolean Switch)
  3956. {
  3957. g_bPVRSwitchSource = Switch;
  3958. }
  3959. Boolean DVBApp_GetPVRSwitchSRC(void)
  3960. {
  3961. return g_bPVRSwitchSource;
  3962. }
  3963. void DVBApp_SetTVRadioSwap(Boolean IsSwap)
  3964. {
  3965. g_bTvRadioSwap = IsSwap;
  3966. }
  3967. Boolean DVBApp_GetTVRadioSwap(void)
  3968. {
  3969. return g_bTvRadioSwap;
  3970. }
  3971. AL_RecHandle_t DVBApp_GetSCHProgHandle(void)
  3972. {
  3973. return g_stDetails.rem_details.handle;
  3974. }
  3975. UINT32 DVBApp_GetTimerRECStartTime(void)
  3976. {
  3977. return g_stDetails.start_local_time_secs;
  3978. }
  3979. UINT32 DVBApp_GetReminderTime2Show(void)
  3980. {
  3981. al_uint32 CurTimeInSec = 0;
  3982. AL_Time_GetCurTimeInSecs(&CurTimeInSec);
  3983. if (g_stDetails.start_local_time_secs > CurTimeInSec)
  3984. {
  3985. return (g_stDetails.start_local_time_secs-CurTimeInSec);
  3986. }
  3987. else
  3988. {
  3989. return 1;//show 1 sec
  3990. }
  3991. }
  3992. UINT32 DVBApp_PVRRec_SetTimerCancle(void)
  3993. {
  3994. AL_PR_details_t stDetails;
  3995. if (g_stDetails.snooze_time_secs == 0)
  3996. {
  3997. AL_PR_Delete(g_dReminderId);
  3998. }
  3999. else
  4000. {
  4001. memset(&stDetails, 0x0, sizeof(AL_PR_details_t));
  4002. memcpy(&stDetails, &g_stDetails, sizeof(AL_PR_details_t));
  4003. stDetails.start_local_time_secs = stDetails.start_local_time_secs +
  4004. stDetails.snooze_time_secs;
  4005. stDetails.rem_details.event_end_time_insec = stDetails.rem_details.event_end_time_insec +
  4006. stDetails.snooze_time_secs;
  4007. if (AL_PR_Modify(&stDetails, g_dReminderId) != AL_SUCCESS)
  4008. {
  4009. dvb_printf("\n[%s]reschedule the reminder fail\n",__FUNCTION__);
  4010. return SP_ERR_FAILURE;
  4011. }
  4012. }
  4013. return SP_SUCCESS;
  4014. }
  4015. void DVBApp_SetRemType(AL_PR_type_t remtype)
  4016. {
  4017. g_remtype = remtype;
  4018. }
  4019. AL_PR_type_t DVBApp_GetRemType(void)
  4020. {
  4021. return g_remtype;
  4022. }
  4023. void _DVBApp_PVR_UpdateState(void)
  4024. {
  4025. UINT8 u8AutoTimeShift;
  4026. UINT8 u8MidRecState;
  4027. INT32 I32DefPartition;
  4028. u8MidRecState = MID_RecorderState();
  4029. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  4030. ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift),
  4031. sizeof(g_stFeatureData.AutoTimeShift), &(g_stFeatureData.AutoTimeShift));
  4032. u8AutoTimeShift = g_stFeatureData.AutoTimeShift;
  4033. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  4034. #if defined (CONFIG_SUPPORT_USB_UPGRADE) || defined (CONFIG_SUPPORT_OTA_UPGRADE)
  4035. if (Mid_CmnUpgradeIsUpgradeing()== TRUE)
  4036. {
  4037. if ( MID_RecorderIsCurRecording() == DRV_SUCCESS)
  4038. {
  4039. dvb_printf("[debug]%s %d\n",__FUNCTION__,__LINE__);
  4040. dvb_printf("System is upgradeing........\n\n\n");
  4041. DVBApp_StopTimeshift(TRUE);
  4042. }
  4043. if (u8AutoTimeShift == APP_PVR_TIMESHIFT_AUTO)
  4044. {
  4045. dvb_printf("[debug]%s %d\n",__FUNCTION__,__LINE__);
  4046. dvb_printf("System is upgradeing........\n\n\n");
  4047. u8AutoTimeShift = APP_PVR_TIMESHIFT_OFF;
  4048. }
  4049. }
  4050. if((g_dCurPopup== POPMSG_CONFIRM_ERASE_WHOLE_FLASH)
  4051. #ifdef CONFIG_SUPPORT_USB_AUTO_UPGRADE
  4052. || (g_dCurPopup == POPMSG_CONFIRM_START_AUTO_UPGRADE)
  4053. #endif
  4054. )
  4055. {
  4056. if (u8AutoTimeShift == APP_PVR_TIMESHIFT_AUTO)
  4057. {
  4058. dvb_printf("[debug]%s %d\n",__FUNCTION__,__LINE__);
  4059. dvb_printf("confirm if upgrade........\n\n\n");
  4060. u8AutoTimeShift = APP_PVR_TIMESHIFT_OFF;
  4061. }
  4062. }
  4063. #endif
  4064. if ((g_u8BGTimeshiftStart > 0)
  4065. && (APP_PVR_TIMESHIFT_AUTO == u8AutoTimeShift)
  4066. && (u8MidRecState == MID_REC_STATUS_STOP)
  4067. )
  4068. {
  4069. if (--g_u8BGTimeshiftStart == 0)
  4070. {
  4071. if ((MID_RecorderGetDefaultPartition(&I32DefPartition) != MID_REC_FS_OK)
  4072. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  4073. {
  4074. g_u8BGTimeshiftStart = PVR_BGTIMESHIFT_START_INTERVAL;
  4075. }
  4076. else
  4077. {
  4078. UINT8 u8ProgLockState = FALSE;
  4079. u8ProgLockState = APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL);
  4080. if ((u8ProgLockState == MID_PLAYBK_PROG_STATE_LOCKED)
  4081. || (MID_TSPLParser_GetThreadState() == TRUE)
  4082. || (DVBApp_CheckServiceNotAvailable() == TRUE)
  4083. )
  4084. {
  4085. g_u8BGTimeshiftStart = PVR_BGTIMESHIFT_START_INTERVAL;
  4086. }
  4087. else
  4088. {
  4089. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  4090. {
  4091. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  4092. }
  4093. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  4094. {
  4095. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO);
  4096. }
  4097. PVR_DEBF("[%s: %d] ============start BG timeshift!!! \n", __FUNCTION__, __LINE__);
  4098. //DVBApp_ResetPopup_Channel();
  4099. if (DVBApp_StartRecord(MID_REC_MODE_AUTO) == SP_ERR_FAILURE)
  4100. {
  4101. g_u8BGTimeshiftStart = PVR_BGTIMESHIFT_START_INTERVAL;
  4102. }
  4103. }
  4104. }
  4105. }
  4106. }
  4107. if (u8MidRecState != MID_REC_STATUS_STOP)
  4108. {
  4109. int iFocusedIndex;
  4110. AL_RecHandle_t hRecProg;
  4111. AL_RecHandle_t hCurProg;
  4112. AL_DB_EDBType_t DBType = AL_DBTYPE_MAX;
  4113. UINT8 u8MIDRecMode;
  4114. APP_Database_GetCurrentDBType(APP_SOURCE_DTV, &DBType);
  4115. hCurProg = APP_DVB_Playback_GetCurrentProgHandle(DBType, AL_RECTYPE_DVBTV | AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA);
  4116. hRecProg = MID_RecorderGetProgHandle();
  4117. u8MIDRecMode = MID_Recorder_GetRecMode();
  4118. if ((hCurProg != hRecProg || (APP_IsScan_Running()== TRUE))&& ( MID_RecorderIsCurRecording() == DRV_SUCCESS))
  4119. {
  4120. PVR_DEBF("\n\n\n[%s: %d]============== program/TS change!!\n\n\n", __FUNCTION__, __LINE__);
  4121. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  4122. {
  4123. DVBApp_StopRecord();
  4124. }
  4125. else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode) ||
  4126. (MID_REC_MODE_AUTO == u8MIDRecMode))
  4127. {
  4128. DVBApp_StopTimeshift(FALSE);
  4129. if (APP_PVR_TIMESHIFT_AUTO == u8AutoTimeShift)
  4130. {
  4131. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  4132. }
  4133. }
  4134. return;
  4135. }
  4136. // deal with PAUSE/REC/TIMESHIFT menu flow
  4137. if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex)
  4138. || DVBApp_CheakFocusPopOnlyForRECicon()) //reshow PVR menu
  4139. {
  4140. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  4141. {
  4142. return;
  4143. }
  4144. if (MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode)
  4145. {
  4146. if ((u8MidRecState == MID_REC_STATUS_PAUSE) &&
  4147. (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)))
  4148. {
  4149. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  4150. }
  4151. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  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. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, 0);
  4158. }
  4159. else if ((APP_GUIOBJ_DVB_PvrPlayInfo_ExitTimeMenu() == FALSE)
  4160. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO)))
  4161. {
  4162. APP_GUIOBJ_DVB_PvrPlayInfo_CreatTimemenu();
  4163. }
  4164. }
  4165. else if ((MID_REC_MODE_AUTO == u8MIDRecMode) &&
  4166. (PVR_STATE_STOP != APP_GUIOBJ_DVB_PvrPlayInfo_GetRecState()))
  4167. {
  4168. if ((u8MidRecState == MID_REC_STATUS_PAUSE) &&
  4169. (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)))
  4170. {
  4171. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  4172. }
  4173. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  4174. {
  4175. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  4176. {
  4177. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  4178. }
  4179. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, 0);
  4180. }
  4181. else if ((APP_GUIOBJ_DVB_PvrPlayInfo_ExitTimeMenu() == FALSE)
  4182. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO)))
  4183. {
  4184. APP_GUIOBJ_DVB_PvrPlayInfo_CreatTimemenu();
  4185. }
  4186. }
  4187. else if ((MID_REC_MODE_MANUAL == u8MIDRecMode) &&
  4188. (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) &&
  4189. (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)))
  4190. {
  4191. if (u8MidRecState == MID_REC_STATUS_START)
  4192. {
  4193. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, 0);
  4194. #ifdef SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD
  4195. if((DVBAPP_Pvr_GetRECPlayFlag())
  4196. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  4197. {
  4198. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERNORMAL);
  4199. }
  4200. #endif
  4201. }
  4202. else if (u8MidRecState == MID_REC_STATUS_PAUSE)
  4203. {
  4204. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  4205. #ifdef SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD
  4206. if((DVBAPP_Pvr_GetRECPlayFlag())
  4207. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  4208. {
  4209. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERNORMAL);
  4210. }
  4211. #endif
  4212. }
  4213. }
  4214. }
  4215. if ((MID_REC_STATUS_PAUSE == u8MidRecState)
  4216. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)))//show pause menu
  4217. {
  4218. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  4219. {
  4220. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC);
  4221. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  4222. }
  4223. else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  4224. {
  4225. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  4226. }
  4227. else if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex)
  4228. || DVBApp_CheakFocusPopOnlyForRECicon())
  4229. {
  4230. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  4231. }
  4232. }
  4233. else if (MID_REC_STATUS_START == u8MidRecState) //hide pause menu
  4234. {
  4235. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE))
  4236. {
  4237. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE);
  4238. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  4239. {
  4240. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, 0);
  4241. #ifdef SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD
  4242. if((DVBAPP_Pvr_GetRECPlayFlag())
  4243. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  4244. {
  4245. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERNORMAL);
  4246. }
  4247. #endif
  4248. }
  4249. }
  4250. }
  4251. }
  4252. else //rec stop, destroy all pvr menu
  4253. {
  4254. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  4255. {
  4256. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC);
  4257. }
  4258. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE))
  4259. {
  4260. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE);
  4261. }
  4262. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  4263. {
  4264. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  4265. }
  4266. }
  4267. }
  4268. #ifdef SUPPORT_PVR_REMINDER_CONFIRM_SPEC
  4269. static void _DVBApp_StopRECForTimerConfirmDone(UINT32 dParam)
  4270. {
  4271. AL_DB_EDBType_t DBType_ret = AL_DBTYPE_DVB_T;
  4272. AL_DB_EDBType_t DBType_Current = AL_DBTYPE_DVB_T;
  4273. AL_DB_ERecordType_t RecType = AL_RECTYPE_DVBTV;
  4274. AL_RecHandle_t CurrentProgHandle;
  4275. al_uint32 u32CurrentTime = 0;
  4276. UINT8 u8MIDRecMode = MID_Recorder_GetRecMode();
  4277. /* get timer program */
  4278. AL_DB_GetRecordType(g_stDetails.rem_details.handle, &DBType_ret, &RecType);
  4279. /* get current program handele */
  4280. AL_Setting_Reload(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL);
  4281. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  4282. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  4283. if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_C)
  4284. {
  4285. DBType_Current = AL_DBTYPE_DVB_C;
  4286. }
  4287. else if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_T)
  4288. {
  4289. DBType_Current = AL_DBTYPE_DVB_T;
  4290. }
  4291. else if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_S)
  4292. {
  4293. DBType_Current = AL_DBTYPE_DVB_S;
  4294. }
  4295. CurrentProgHandle = APP_DVB_Playback_GetCurrentProgHandle(DBType_Current, AL_RECTYPE_DVBTV | AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA);
  4296. if ((dParam == POPMSG_CONFIRM_STOP_REC_FOR_TIMER_REC)
  4297. ||(dParam == POPMSG_CONFIRM_STOP_TSHIFT_FOR_TIMER_REC))
  4298. {
  4299. AL_Time_GetCurTimeInSecs(&u32CurrentTime);
  4300. dvb_printf("================ current time %d\n",u32CurrentTime);
  4301. dvb_printf("================ rec end time %d\n", g_stDetails.rem_details.event_end_time_insec);
  4302. if (u32CurrentTime >
  4303. (g_stDetails.rem_details.event_end_time_insec-10))
  4304. {
  4305. /* if the left time is less than 10Sec. not to respond the confirm */
  4306. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMER_OUT_OF_DATE);
  4307. return;
  4308. }
  4309. }
  4310. /* zap prog */
  4311. if (g_stDetails.rem_details.handle != CurrentProgHandle)
  4312. {
  4313. PVR_DEBF("handle ==== %d\n", g_stDetails.rem_details.handle);
  4314. PVR_DEBF(" CurrentProgHandle ==== %d\n", CurrentProgHandle);
  4315. g_ProgHandleB4Rec = g_stDetails.rem_details.handle;
  4316. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  4317. {
  4318. if (u8MIDRecMode == MID_REC_MODE_MANUAL)
  4319. DVBApp_StopRecord();
  4320. else
  4321. DVBApp_StopTimeshift(TRUE);
  4322. }
  4323. _DVBApp_CloseAllMenu();
  4324. #if defined(CONFIG_DVB_SYSTEM) || defined(CONFIG_AUS_DVB_SYSTEM)
  4325. APP_RFType_en eRFType = APP_RF_TYPE_DVB_T;
  4326. if (DBType_Current != g_stDetails.db_type)
  4327. {
  4328. if (g_stDetails.db_type == AL_DBTYPE_DVB_T)
  4329. {
  4330. eRFType = APP_RF_TYPE_DVB_T;
  4331. }
  4332. else if (g_stDetails.db_type == AL_DBTYPE_DVB_C)
  4333. {
  4334. eRFType = APP_RF_TYPE_DVB_C;
  4335. }
  4336. else if (g_stDetails.db_type == AL_DBTYPE_DVB_S)
  4337. {
  4338. eRFType = APP_RF_TYPE_DVB_S;
  4339. }
  4340. APP_GUIOBJ_Channel_SetRFTypeWithHdl(eRFType,
  4341. g_stDetails.rem_details.handle);
  4342. }
  4343. else
  4344. #endif
  4345. {
  4346. _DVBApp_Zapping(RecType, g_stDetails.rem_details.handle, FALSE, 0, TRUE);
  4347. }
  4348. }
  4349. if (g_stDetails.rem_type == AL_PR_EVT_REM)
  4350. {
  4351. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  4352. {
  4353. if (u8MIDRecMode == MID_REC_MODE_MANUAL)
  4354. DVBApp_StopRecord();
  4355. else
  4356. DVBApp_StopTimeshift(TRUE);
  4357. }
  4358. DVBApp_ResetPopup_Channel();
  4359. _DVBApp_CloseAllMenu();
  4360. _APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurTime();
  4361. if (DVBApp_StartRecord(MID_REC_MODE_MANUAL) != SP_SUCCESS)
  4362. {
  4363. APP_GUIOBJ_DVB_PvrRec_SetTimerRecord(FALSE);
  4364. DVBApp_SetTVRadioSwap(FALSE);
  4365. g_ProgHandleB4Rec = 0;
  4366. return;
  4367. }
  4368. //APP_GUIOBJ_DVB_PvrRecDurationTime_SetDurTime(g_stDetails.rem_details.event_end_time_insec);
  4369. }
  4370. if ((dParam == POPMSG_CONFIRM_STOP_REC_FOR_REMINDER)
  4371. ||(dParam == POPMSG_CONFIRM_STOP_TSHIFT_FOR_REMINDER))
  4372. {
  4373. DVBApp_SetTVRadioSwap(FALSE);
  4374. g_ProgHandleB4Rec = 0;
  4375. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  4376. if(APP_WAKEUP_GetBootFlag() == TRUE)
  4377. {
  4378. APP_WAKEUP_RealPowerUp();
  4379. }
  4380. #endif
  4381. }
  4382. }
  4383. #endif
  4384. Boolean g_PVR_TimerRecStart = FALSE;
  4385. Boolean DVBApp_PVRDEMUX_GetTimerRECFLag(void)
  4386. {
  4387. return g_PVR_TimerRecStart;
  4388. }
  4389. void DVBApp_PVRDEMUX_SetTimerRECFLag(Boolean bFlag)
  4390. {
  4391. g_PVR_TimerRecStart = bFlag;
  4392. }
  4393. void DVBApp_PVRDEMUX_StartTimerREC(void)
  4394. {
  4395. if (DVBApp_StartRecord(MID_REC_MODE_MANUAL) != SP_SUCCESS)
  4396. {
  4397. APP_GUIOBJ_DVB_PvrRec_SetTimerRecord(FALSE);
  4398. DVBApp_SetTVRadioSwap(FALSE);
  4399. g_ProgHandleB4Rec = 0;
  4400. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  4401. //sent to man app to call APP_WAKEUP_CompleteNotify()
  4402. MAINAPP_SendGlobalEvent(APP_GLOGAL_EVENT_PVR_TIEMRREC_CHECKSTANDBY, AL_POWER_STATE_OFF);
  4403. #endif
  4404. //need modify kai.wang
  4405. /*extern INT32 APP_GUIOBJ_DVB_TimerList_GetRecordingPR(AL_PR_details_t* details, int* PROffset);
  4406. extern AL_Return_t APP_GUIOBJ_DVB_TimerList_DeleteRecordingPR(int Param);
  4407. int iOffset = 0;
  4408. if (APP_GUIOBJ_DVB_TimerList_GetRecordingPR(NULL, &iOffset) == AL_SUCCESS)
  4409. {
  4410. APP_GUIOBJ_DVB_TimerList_DeleteRecordingPR(iOffset);
  4411. }*/
  4412. }
  4413. return ;
  4414. }
  4415. #endif
  4416. #ifdef TEAC_BLUE_KEY_FUNCTION
  4417. APP_Panel_PowerSequenceType_e _DVB_GetPanelControlType(void)
  4418. {
  4419. return g_eAppPanelOnOff;
  4420. }
  4421. void _DVB_SetPanelControlType(APP_Panel_PowerSequenceType_e eType)
  4422. {
  4423. g_eAppPanelOnOff = eType;
  4424. }
  4425. #endif
  4426. static INT32 _DVBApp_OnCreate(void **ppPrivateData)
  4427. {
  4428. dvb_printf(" %s is called.\n", __FUNCTION__);
  4429. _DVBApp_DTV_main_program(NULL);
  4430. DvbPrivateData_t *pDvbPrivateData = (DvbPrivateData_t *) GL_MemAlloc(sizeof(DvbPrivateData_t));
  4431. memset(pDvbPrivateData, 0x00, sizeof(DvbPrivateData_t));
  4432. pDvbPrivateData->dUserData = 0;
  4433. (*ppPrivateData) = (void *)pDvbPrivateData;
  4434. stDvbInst.bAppState = SYSTEM_IDLE;
  4435. return 0;
  4436. }
  4437. static INT32 _DVBApp_OnDestroy(void **ppPrivateData)
  4438. {
  4439. dvb_printf(" %s is called.\n", __FUNCTION__);
  4440. SYSAPP_GOBJ_FinalizeGUIObject(SYS_APP_DVB);
  4441. GL_MemFree((*ppPrivateData));
  4442. (*ppPrivateData) = NULL;
  4443. return 0;
  4444. }
  4445. static INT32 _DVBApp_OnRun(void *pPrivateData, UINT32 dParam)
  4446. {
  4447. dvb_printf(" %s is called.\n", __FUNCTION__);
  4448. #if 0 //set ttx codepage when open create ttx.
  4449. UINT32 u32DTVTTXZone = 0;
  4450. #endif
  4451. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO, 0,
  4452. sizeof(APP_SETTING_SystemInfo_t), &(g_stSysInfoData));
  4453. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  4454. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  4455. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_TVINFO, 0,
  4456. sizeof(APP_SETTING_TVInfo_t), &(g_stTVInfoData));
  4457. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, 0,
  4458. sizeof(APP_SETTING_Variational_t), &(g_stVariationalData));
  4459. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_MULTIMEDIA, 0,
  4460. sizeof(APP_SETTING_Multimedia_t), &(g_stMultiMediaData));
  4461. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0,
  4462. sizeof(APP_SETTING_Setup_t), &(g_stSetupData));
  4463. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  4464. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  4465. stDvbInst.bAppState = SYSTEM_RUNNING;
  4466. dvb_printf(" Dvbt state is %d.\n", stDvbInst.bAppState);
  4467. if (dParam == 0)
  4468. {
  4469. #ifdef SHOW_LOGO_NOSIGNAL
  4470. // init show logo
  4471. #ifdef JPEG_LOGO
  4472. LOGO_Init();
  4473. extern char *pu32LMA;
  4474. extern unsigned int pu32LMASize;
  4475. LOGO_SetParam((const UINT8 *)pu32LMA, pu32LMASize);
  4476. //LOGO_SetShowPicLogoPlane(Logo_VPP_PLANE);
  4477. //LOGO_StartUp_Pic_Show_AlignOrigin(gpAL_PanelDisplayDesc->Size.wHorSize, gpAL_PanelDisplayDesc->Size.wVerSize);
  4478. #else
  4479. extern const unsigned char DVDTitle[];
  4480. extern const int DVDTitleSize;
  4481. LOGO_Init();
  4482. LOGO_SetParam(DVDTitle, DVDTitleSize);
  4483. #endif
  4484. #else
  4485. //mute screen to black or user define color
  4486. #endif
  4487. }
  4488. APP_GUIOBJ_PopMs_SetCloseFun(DVBApp_ClosePopup);
  4489. APP_GuiMgr_Set_Menu() ;
  4490. APP_GuiMgr_SwitchShareMenu(SYS_APP_DVB);
  4491. // AUDIF_Set_OutputMode(OUT_RFModeK3, 0);
  4492. // AUDIF_Set_OutputMode(OUT_CustomModeB_DigitalDialnormK1, 0x6464);
  4493. #ifdef SUPPORT_CONAX_CAS
  4494. //DVB_Conax_Init();
  4495. CONAX_MMI_CallbackInit();
  4496. #endif
  4497. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  4498. APP_DVB_GLOBAL_EVENT_DVB_ONRUN | PASS_TO_SYSAPP,TRUE);
  4499. dvb_printf(" %s is exit., time: %d\n", __FUNCTION__,GL_GetRtc32());
  4500. return 0;
  4501. }
  4502. static INT32 _DVBApp_OnTerminate(void *pPrivateData, UINT32 dParam)
  4503. {
  4504. dvb_printf(" %s is called., time: %d\n", __FUNCTION__,GL_GetRtc32());
  4505. #ifdef CONFIG_CI_SUPPORT
  4506. g_Audio_Scramble_Counter = 0;
  4507. g_VIP_FINISH_Flg = FALSE;
  4508. #endif
  4509. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_ALL);
  4510. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  4511. {
  4512. #ifdef Subtitle_Freeze
  4513. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE))
  4514. {
  4515. AL_Subtitle_SetFreeze(FALSE);
  4516. }
  4517. #endif
  4518. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  4519. }
  4520. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MUTE))
  4521. {
  4522. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_MUTE);
  4523. }
  4524. /* Release program list of dvb service */
  4525. APP_Sysset_Reset_list(APP_DVB_Playback_GetCurrentNetType());
  4526. SYSAPP_GOBJ_FinalizeGUIObject(SYS_APP_DVB);
  4527. g_u32OldPopup = PLAYBACK_POPUP_NONE;
  4528. APP_GuiMgr_UnInitDvbOSD2();
  4529. stDvbInst.bAppState = SYSTEM_IDLE;
  4530. #ifdef CONFIG_SUPPORT_PVR
  4531. MID_TSPLParser_UnInit();
  4532. #endif
  4533. dvb_printf(" %s is exit., time: %d\n", __FUNCTION__,GL_GetRtc32());
  4534. return 0;
  4535. }
  4536. static void _DVBApp_Process_Unmute(void)
  4537. {
  4538. UINT8 RegionIdx = 0;
  4539. ColorLUT_t stColorLUTValue;
  4540. APP_Source_Type_t eSourType = APP_SOURCE_MAX;
  4541. APP_StorageSource_Type_t eStorageSourType = APP_STORAGE_SOURCE_MAX;
  4542. if ((g_bMidHasUnmute == TRUE) && (bSetUnMuteFlag == TRUE))
  4543. {
  4544. if (g_SetPQFlag == FALSE)
  4545. {
  4546. g_SetPQFlag = TRUE;
  4547. /*set PQ param*/
  4548. AL_FLASH_GetColorLUTALL(&stColorLUTValue);
  4549. for(RegionIdx = 0; RegionIdx<APP_ColorLUT_NUM; RegionIdx++)
  4550. {
  4551. MID_TVFE_SetColorLUT7Range(RegionIdx,APP_Video_GetColorLUTSetting(LUT_FUN_MAKE,RegionIdx),
  4552. stColorLUTValue.n_PicMode_CoLUT_HueMin[RegionIdx],
  4553. stColorLUTValue.n_PicMode_CoLUT_HueMax[RegionIdx],
  4554. stColorLUTValue.n_PicMode_CoLUT_SatMin[RegionIdx],
  4555. stColorLUTValue.n_PicMode_CoLUT_SatMax[RegionIdx],
  4556. stColorLUTValue.n_PicMode_CoLUT_YMin[RegionIdx],
  4557. stColorLUTValue.n_PicMode_CoLUT_YMax[RegionIdx],
  4558. stColorLUTValue.n_PicMode_CoLUT_SmoothLevel[RegionIdx],
  4559. FALSE);
  4560. MID_TVFE_SetColorLUT7Axis(RegionIdx,
  4561. stColorLUTValue.n_PicMode_CoLUT_Enable[RegionIdx],
  4562. stColorLUTValue.n_PicMode_CoLUT_HueGain[RegionIdx],
  4563. stColorLUTValue.n_PicMode_CoLUT_SatGain[RegionIdx],
  4564. stColorLUTValue.n_PicMode_CoLUT_YGain[RegionIdx],
  4565. RegionIdx==(APP_ColorLUT_NUM - 1)? TRUE : FALSE);
  4566. }
  4567. // Dynamic contrast
  4568. DynamicContrast_t stDynamic;
  4569. AL_FLASH_GetDynamicContrastALL(&stDynamic);
  4570. int nLevel = stDynamic.n_PicMode_DynCon_DynamicContrastlevel;
  4571. MID_TVFE_SetPictureDynamicContrastEnable( nLevel ? 1 : 0);
  4572. MID_TVFE_SetPictureContrastLevel( stDynamic.n_PicMode_DynCon_ContrastLevel[nLevel] );
  4573. MID_TVFE_SetPictureChromaLevel( stDynamic.n_PicMode_DynCon_ChromaLevel[nLevel] );
  4574. MID_TVFE_SetPictureAlphaMode1( stDynamic.n_PicMode_DynCon_Alphamode1[nLevel] );
  4575. MID_TVFE_SetPictureAlphaMode2( stDynamic.n_PicMode_DynCon_Alphamode2[nLevel] );
  4576. MID_TVFE_SetPictureAlphaMode3( stDynamic.n_PicMode_DynCon_Alphamode3[nLevel] );
  4577. MID_TVFE_SetPictureAlphaMode4( stDynamic.n_PicMode_DynCon_Alphamode4[nLevel] );
  4578. MID_TVFE_SetPictureFleshToneLevel( stDynamic.n_PicMode_DynCon_FleshToneLevel );
  4579. APP_GUIOBJ_Source_GetCurrSource(&eSourType);
  4580. eStorageSourType = APP_Data_UserSetting_SourceTypeMappingToStorage(eSourType);
  4581. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0,
  4582. sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  4583. APP_Video_SetPictureMode(
  4584. g_stPictureData.stPictureModeSourceTab[eStorageSourType].PictureModeIndex);
  4585. //APP_Video_OSD_PQSet(APP_VIDEO_OSD_ITEM_BACKLIGHT, g_stPictureData.stPictureModeSourceTab[eStorageSourType].stUserTab.Backlight);
  4586. APP_Video_OSD_PQSet(APP_VIDEO_OSD_ITEM_COLORTEMP, g_stPictureData.stPictureModeSourceTab[eStorageSourType].ColorTempIndex);
  4587. APP_Video_OSD_PQSet(APP_VIDEO_OSD_ITEM_NR, g_stPictureData.NR);
  4588. }
  4589. DVBApp_CheckProgramType(TRUE);
  4590. bSetUnMuteFlag = FALSE;
  4591. }
  4592. }
  4593. static INT32 _DVBApp_OnTimerUpdate(void *pPrivateData)
  4594. {
  4595. UINT32 NoSignalTimer;
  4596. INT32 dFocusedIndex;
  4597. al_uint8 bMonitorState = al_false;
  4598. al_uint8 bSignalState = al_false;
  4599. APP_Source_Type_t eSourType = APP_SOURCE_MAX;
  4600. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  4601. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  4602. al_bool bHasValidServ = AL_DB_HasVisibleService(eNetType);
  4603. /*Delay the mute key sending to AMP*/
  4604. if((0 <= g_u32Mutekeydelaytime) && (g_u32Mutekeydelaytime < MUTE_KEY_INTERVAL))
  4605. {
  4606. g_u32Mutekeydelaytime++;
  4607. g_u32MuteIconHandle++;
  4608. }
  4609. /*Set timer to source translate state
  4610. avoid dvb app not received onrun message result in not clear the falg*/
  4611. if (APP_GUIOBJ_Source_GetSourceTransState())
  4612. {
  4613. g_u8SourceTrastTimer++;
  4614. if (g_u8SourceTrastTimer >= 3)//3*100ms
  4615. {
  4616. APP_GUIOBJ_Source_SetSourceTransState(FALSE);
  4617. g_u8SourceTrastTimer = 0;
  4618. }
  4619. }
  4620. /*Set timer to clear zapping state
  4621. avoid dvb app not received tuner locke or tuner unlock message result in not clear the flag*/
  4622. if (APP_GUIOBJ_DVB_Playback_GetZappingState())
  4623. {
  4624. g_u8ZappingTimer++;
  4625. if (g_u8ZappingTimer >= 2)//3*100ms
  4626. {
  4627. APP_GUIOBJ_DVB_Playback_SetZappingState(FALSE);
  4628. g_u8ZappingTimer = 0;
  4629. }
  4630. }
  4631. //Polling DSP to detect audio channel num change.
  4632. g_AdioChnPolTime++;
  4633. if (g_AdioChnPolTime >= 10)//10*100ms = 1s
  4634. {
  4635. APP_Audio_PollingAudioChnannelNum();
  4636. g_AdioChnPolTime = 0;
  4637. }
  4638. #ifdef CONFIG_TESTAUTOREBOOT
  4639. {
  4640. FW_mode_t FW_Module = FW_NORMAL_VIEW_MODE;
  4641. AL_FW_GetFWModule(&FW_Module);
  4642. /*don't enable autoreboot while searching channel and update*/
  4643. if (FW_Module == FW_CHAN_SRCH_MODE || FW_Module == FW_UPGRADE_MODE)
  4644. {
  4645. ir_autoreboot_disable();
  4646. }
  4647. }
  4648. #endif
  4649. #ifdef CONFIG_CI_SUPPORT
  4650. if (g_Audio_Scramble_Counter>0)
  4651. {
  4652. if (g_VIP_FINISH_Flg)//Mean video has been descramble.
  4653. {
  4654. g_VIP_FINISH_Flg = 0;
  4655. g_Audio_Scramble_Counter = 0;
  4656. }
  4657. else
  4658. {
  4659. g_Audio_Scramble_Counter--;
  4660. if (g_Audio_Scramble_Counter==0)
  4661. {
  4662. g_bNoSteamData = FALSE;
  4663. {
  4664. #ifdef CONFIG_SUPPORT_TTX
  4665. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  4666. {
  4667. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  4668. }
  4669. #endif
  4670. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_ALL);
  4671. }
  4672. #ifdef CONFIG_SUPPORT_PVR
  4673. UINT8 u8MidRecState;
  4674. u8MidRecState = MID_RecorderState();
  4675. if (u8MidRecState == MID_REC_STATUS_START)
  4676. {
  4677. MID_RecorderPauseResume();
  4678. }
  4679. _DVBApp_Recorder_PauseResume();
  4680. #endif
  4681. g_bScrambleFlag = PROG_STATUS_ONLY_VIDEO_SCRAMBLED;
  4682. DVBApp_CheckProgramType(TRUE);
  4683. }
  4684. }
  4685. }
  4686. else
  4687. {
  4688. if (g_VIP_FINISH_Flg==TRUE)
  4689. {
  4690. g_VIP_FINISH_Flg = 0;
  4691. }
  4692. }
  4693. #endif
  4694. #if defined(CELLO_cello) && defined(SUPPORT_HOMEMODE)
  4695. /*Cello spec: Home Mode Open*/
  4696. if(APP_GUIOBJ_AutoInstall_GetOpenHomeModeFlag())
  4697. {
  4698. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  4699. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  4700. if((g_stUserInfoData.AutoInstalledHomeMode)
  4701. &&(!g_stUserInfoData.AutoInstalled))
  4702. {
  4703. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  4704. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE))
  4705. #endif
  4706. {
  4707. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_GLOBAL_EVENT_OPEN_HOMEMODE|PASS_TO_SYSAPP, 0);
  4708. }
  4709. }
  4710. }
  4711. #endif
  4712. APP_GUIOBJ_Source_GetCurrSource(&eSourType);
  4713. if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &dFocusedIndex))
  4714. {
  4715. _DVBApp_CheckPopupDisplay();
  4716. }
  4717. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_MONITOR, &bMonitorState);
  4718. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  4719. AL_RecHandle_t hTempHdl = AL_DB_INVALIDHDL;
  4720. MID_PlaybackGetCurProgHandle(al_null, &hTempHdl);
  4721. #ifdef PLAY_VIDEO_FOR_ALLSRV
  4722. DBPIDInfo_t stVideoPid;
  4723. memset(&stVideoPid,0xff,sizeof(DBPIDInfo_t));
  4724. AL_DB_QueryDetailFieldByName(hTempHdl, (al_uint8 *)"stVideoPid", (al_void *)&stVideoPid);
  4725. #endif
  4726. if (!bHasValidServ && (hTempHdl == AL_DB_INVALIDHDL))
  4727. {
  4728. g_bTempSerFlag = FALSE;
  4729. if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &dFocusedIndex))
  4730. {
  4731. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0,
  4732. sizeof(APP_SETTING_FactoryUser_t), &(g_stFactoryUserData));
  4733. if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_DATABASE_EMPTY) && !g_stFactoryUserData.n_FactSet_BurningMode)
  4734. {
  4735. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  4736. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  4737. DVBApp_ResetPopup_Channel();
  4738. _DVBApp_ShowPopup(DVB_APP_POP_MSG_DATABASE_EMPTY);
  4739. DVBApp_CheckProgramType(FALSE);
  4740. }
  4741. }
  4742. #ifdef CONFIG_TESTAUTOREBOOT
  4743. #ifdef CONFIG_AUTOREBOOT_NO_SIGNAL
  4744. ir_autoreboot_enable();
  4745. #endif
  4746. #endif
  4747. #ifdef CONFIG_SUPPORT_PVR
  4748. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  4749. #endif
  4750. {
  4751. return 0;
  4752. }
  4753. }
  4754. else if (bMonitorState == al_true)
  4755. {
  4756. if (bSignalState == AL_DVB_MONITOR_VALUE_FALSE)
  4757. {
  4758. g_bTempSerFlag = FALSE;
  4759. if(!(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO))||
  4760. !(APP_MenuMgr_Exist_Factory_Menu()))
  4761. {
  4762. g_u32NoSignalTimer ++;
  4763. #ifndef SUPPORT_NO_SIGNAL_NOTSTANDBY
  4764. g_u32NoSignalSleepTimer ++;
  4765. #endif
  4766. }
  4767. #ifdef CONFIG_SUPPORT_PVR
  4768. if(MID_TSPLParser_GetThreadState() == TRUE)
  4769. {
  4770. g_u32NoSignalSleepTimer = 0;
  4771. }
  4772. #endif
  4773. /*2.1.10 Input factory auto test mode close no signal standby function*/
  4774. #ifdef SUPPORT_FACTORY_AUTO_TEST
  4775. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  4776. {
  4777. g_u32NoSignalTimer = 0;
  4778. g_u32NoSignalSleepTimer = 0;
  4779. }
  4780. #endif
  4781. if (g_u32NoSignalSleepTimer == DVB_10_MINUTES)
  4782. {
  4783. g_u32NoSignalSleepTimer = 0;
  4784. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO) && (APP_GUIOBJ_SleepTimer_GetStandbyPopConflict() == FALSE))
  4785. {
  4786. APP_GUIOBJ_SleepTimer_SetStandbyPopConflict(TRUE);
  4787. }
  4788. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  4789. (APP_GLOBAL_EVENT_SLEEP_TIMER_INFO | PASS_TO_SYSAPP), APP_POWERDOWN_NO_SINGAL);
  4790. }
  4791. if (APP_RF_TYPE_DVB_S == g_stChannelData.TV_Connection)
  4792. {
  4793. NoSignalTimer = 45;
  4794. }
  4795. else
  4796. {
  4797. NoSignalTimer = 15;
  4798. }
  4799. if (g_u32NoSignalTimer >= NoSignalTimer)//15*100ms
  4800. {
  4801. if ((eSourType == APP_SOURCE_DTV)
  4802. || (eSourType == APP_SOURCE_RADIO))
  4803. {
  4804. #ifdef CONFIG_SUPPORT_PVR //if playing timeshift file not to mute video
  4805. UINT32 u32PEState = MID_TSPL_MODE_STOP;
  4806. if (MID_TSPLParser_GetPlayState(&u32PEState, NULL) == DRV_SUCCESS)
  4807. {
  4808. if (MID_TSPL_MODE_STOP == u32PEState)
  4809. {
  4810. if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL) && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE))
  4811. {
  4812. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  4813. APP_DVB_GLOBAL_EVENT_NO_SIGNAL, 0);
  4814. }
  4815. }
  4816. }
  4817. else
  4818. #endif
  4819. if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL))
  4820. {
  4821. #ifdef CONFIG_SUPPORT_PVR
  4822. if (MID_RecorderState() != MID_REC_STATUS_STOP)
  4823. {
  4824. PopmsgType_t eType = POPMSG_TYPE_NONE;
  4825. APP_GUIOBJ_PopMsg_GetMsgType(&eType);
  4826. if (eType != POPMSG_TYPE_CONFIRM)
  4827. {//not to send no signal event to clear comfirm type popmsg
  4828. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  4829. APP_DVB_GLOBAL_EVENT_NO_SIGNAL, 0);
  4830. }
  4831. }
  4832. else
  4833. #endif
  4834. {
  4835. if(!(DVBApp_IsPopupExist(PLAYBACK_POPUP_PWD_LOCKED)))
  4836. {
  4837. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  4838. {
  4839. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  4840. APP_DVB_GLOBAL_EVENT_NO_SIGNAL, 0);
  4841. }
  4842. }
  4843. }
  4844. }
  4845. }
  4846. }
  4847. }
  4848. else
  4849. {
  4850. g_u32NoSignalTimer = 0;
  4851. MID_PlaybackProgState_t progstate = MID_PLAYBK_PROG_STATE_NORMAL;
  4852. progstate = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL);
  4853. #ifdef CONFIG_SUPPORT_PVR
  4854. if (g_bNoSteamData == TRUE
  4855. || progstate == MID_PLAYBK_PROG_STATE_TEMP_SERVICE
  4856. || progstate == MID_PLAYBK_PROG_STATE_NOT_RUNNING)
  4857. {
  4858. if ( MID_RecorderState()== MID_REC_STATUS_START )
  4859. {
  4860. if ((MID_TSPLParser_GetThreadState() != TRUE)
  4861. && (APP_GUIOBJ_DVB_PvrPlayInfo_GetTunerState() == FALSE))
  4862. {
  4863. //printf("pause\n\n\n");
  4864. MID_RecorderPauseResume();
  4865. _DVBApp_Recorder_PauseResume();
  4866. }
  4867. }
  4868. }
  4869. if (!(g_bNoSteamData == TRUE
  4870. || progstate == MID_PLAYBK_PROG_STATE_TEMP_SERVICE
  4871. || progstate == MID_PLAYBK_PROG_STATE_NOT_RUNNING) && g_bIsPlaykey == TRUE)
  4872. {
  4873. if ( MID_RecorderState()== MID_REC_STATUS_PAUSE)
  4874. {
  4875. //printf("start \n\n\n");
  4876. MID_RecorderPauseResume();
  4877. _DVBApp_Recorder_PauseResume();
  4878. }
  4879. }
  4880. #endif
  4881. if (DVBApp_CheckServiceNotAvailable() == TRUE)
  4882. {
  4883. //set video and audio mute for temp service
  4884. if (g_bTempSerFlag == FALSE)
  4885. {
  4886. DVBApp_CheckProgramType(FALSE);
  4887. g_bTempSerFlag = TRUE;
  4888. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB);
  4889. }
  4890. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL))
  4891. {
  4892. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  4893. }
  4894. if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &dFocusedIndex))
  4895. {
  4896. #ifdef SUPPORT_DISABLE_H264
  4897. if (progstate == MID_PLAYBK_PROG_STATE_VIDEO_MPEG4)
  4898. {
  4899. if (!DVBApp_IsPopupExist(DVB_APP_POP_MSG_VIDEO_NOT_SUPPORT))
  4900. {
  4901. _DVBApp_ShowPopup(DVB_APP_POP_MSG_VIDEO_NOT_SUPPORT);
  4902. }
  4903. }
  4904. else if (!DVBApp_IsPopupExist(DVB_APP_POP_MSG_SCRAMBLE))//mantis43634:not available & scramble service show scramble
  4905. {
  4906. if(APP_Get_DTVHiddenScanState() != TRUE)
  4907. {
  4908. if(APP_DVB_Playback_GetCAModeByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL) == al_true)
  4909. {
  4910. if (!DVBApp_IsPopupExist(DVB_APP_POP_MSG_SCRAMBLE))
  4911. {
  4912. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SCRAMBLE);
  4913. }
  4914. }
  4915. }
  4916. else if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE))
  4917. {
  4918. if(APP_Get_DTVHiddenScanState() != TRUE)
  4919. {
  4920. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SERVICE_NOT_AVAILABLE);
  4921. }
  4922. }
  4923. }
  4924. #else
  4925. if (!DVBApp_IsPopupExist(DVB_APP_POP_MSG_SCRAMBLE))//mantis43634:not available & scramble service show scramble
  4926. {
  4927. if(APP_Get_DTVHiddenScanState() != TRUE)
  4928. {
  4929. if(APP_DVB_Playback_GetCAModeByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL) == al_true)
  4930. {
  4931. if (!DVBApp_IsPopupExist(DVB_APP_POP_MSG_SCRAMBLE))
  4932. {
  4933. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SCRAMBLE);
  4934. }
  4935. }
  4936. }
  4937. else if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE))
  4938. {
  4939. if(APP_Get_DTVHiddenScanState() != TRUE)
  4940. {
  4941. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SERVICE_NOT_AVAILABLE);
  4942. }
  4943. }
  4944. }
  4945. #endif
  4946. }
  4947. }
  4948. else
  4949. {
  4950. if (g_bNoSteamData == TRUE
  4951. || progstate == MID_PLAYBK_PROG_STATE_TEMP_SERVICE
  4952. || progstate == MID_PLAYBK_PROG_STATE_NOT_RUNNING)
  4953. {
  4954. AL_DB_EDBType_t eDBType = APP_DVB_Playback_GetCurrentNetType();
  4955. AL_RecHandle_t hCurrPrgHdl = AL_DB_INVALIDHDL;
  4956. MID_PlaybackProgState_t eProgState = MID_PLAYBK_PROG_STATE_NORMAL;
  4957. hCurrPrgHdl = APP_DVB_Playback_GetCurrentProgHandle(eDBType, (AL_RECTYPE_DVBTV |AL_RECTYPE_DVBRADIO));
  4958. if ((hCurrPrgHdl == AL_DB_INVALIDHDL) && (bSignalState != AL_DVB_MONITOR_VALUE_INVAILED))
  4959. {
  4960. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB);
  4961. }
  4962. eProgState = APP_DVB_Playback_GetProgStateByHandle(eDBType, hCurrPrgHdl);
  4963. if ((eProgState != MID_PLAYBK_PROG_STATE_LOCKED) && (bSignalState != AL_DVB_MONITOR_VALUE_INVAILED))
  4964. {
  4965. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB);
  4966. }
  4967. }
  4968. g_bTempSerFlag = FALSE;
  4969. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE))
  4970. {
  4971. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE, UI_EVENT_NULL);
  4972. }
  4973. #ifdef PLAY_VIDEO_FOR_ALLSRV
  4974. if ((stVideoPid.usDataPID&0x1fff) == 0x1fff)
  4975. #else
  4976. if (eServiceType == AL_RECTYPE_DVBRADIO)
  4977. #endif
  4978. {
  4979. if ((!APP_GUIOBJ_DVB_Playback_GetShowLogoState())
  4980. && (progstate == MID_PLAYBK_PROG_STATE_NORMAL)
  4981. #ifdef CONFIG_SUPPORT_PVR
  4982. && !(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  4983. #endif
  4984. )
  4985. {
  4986. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  4987. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  4988. }
  4989. }
  4990. if (SYSTEM_APP_NO_FOCUSED_GUIOBJ != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &dFocusedIndex))
  4991. {
  4992. if (g_u8PopScrambleMsgTimer!=0)
  4993. {
  4994. g_u8PopScrambleMsgTimer = 0;
  4995. }
  4996. }
  4997. if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &dFocusedIndex))
  4998. {
  4999. if (progstate == MID_PLAYBK_PROG_STATE_LOCKED)
  5000. {
  5001. if (!DVBApp_IsPopupExist(DVB_APP_POP_MSG_CHECKPWD)
  5002. #ifdef CONFIG_SUPPORT_PVR
  5003. && (APP_GUIOBJ_DVB_PvrRec_IsShowPopTime(g_stDetails.start_local_time_secs) == FALSE)
  5004. #endif
  5005. )
  5006. {
  5007. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  5008. }
  5009. }
  5010. else if (progstate == MID_PLAYBK_PROG_STATE_AUDIO_VIDEO_SCRAMBLED \
  5011. ||progstate == MID_PLAYBK_PROG_STATE_ONLY_VIDEO_SCRAMBLED \
  5012. || (progstate == MID_PLAYBK_PROG_STATE_ONLY_AUDIO_SCRAMBLED &&
  5013. #ifdef PLAY_VIDEO_FOR_ALLSRV
  5014. ((stVideoPid.usDataPID&0x1fff) == 0x1fff)
  5015. #else
  5016. eServiceType == AL_RECTYPE_DVBRADIO
  5017. #endif
  5018. ))
  5019. {
  5020. g_u8PopScrambleMsgTimer ++;
  5021. if (!DVBApp_IsPopupExist(DVB_APP_POP_MSG_SCRAMBLE)&&g_u8PopScrambleMsgTimer>8)
  5022. {
  5023. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL))
  5024. {
  5025. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  5026. }
  5027. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL))
  5028. {
  5029. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  5030. }
  5031. printf("\n#####Pop Scramble MSG Menu,F=%s,L=%d g_u8PopScrambleMsgTimer=%d######\n",__FUNCTION__,__LINE__,g_u8PopScrambleMsgTimer);
  5032. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SCRAMBLE);
  5033. g_u8PopScrambleMsgTimer = 0;
  5034. }
  5035. }
  5036. else if ((eServiceType == AL_RECTYPE_DVBRADIO)
  5037. #ifdef PLAY_VIDEO_FOR_ALLSRV
  5038. && ((stVideoPid.usDataPID&0x1fff) == 0x1fff)
  5039. #endif
  5040. &&(!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL)))
  5041. {
  5042. #ifdef CONFIG_SUPPORT_MHEG5
  5043. Boolean testA;
  5044. Boolean testB;
  5045. Boolean testC;
  5046. Boolean testD;
  5047. testA = !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5);
  5048. testB = (APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED);
  5049. testC = (APP_DVB_Mheg5_GetMheg5DisplayStatus() == FALSE);
  5050. testD = APP_Area_SupportDtg();
  5051. //dvb_printf("a %d, b %d, c %d, d %d\n",testA, testB, testC, testD);
  5052. if (testA || (testB && testC && testD))
  5053. #endif
  5054. {
  5055. if(g_bScrambleFlag != PROG_STATUS_SCRAMBLE_UNKNOW)
  5056. {
  5057. _DVBApp_ShowPopup(DVB_APP_POP_MSG_RADIO_CHANNEL);
  5058. }
  5059. }
  5060. }
  5061. }
  5062. #ifdef CONFIG_SUPPORT_PVR
  5063. else if(((dFocusedIndex == DVB_GUIOBJ_PVR_PLAYINFO) || (dFocusedIndex == DVB_GUIOBJ_PVRREC_INFO))
  5064. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  5065. && (eServiceType == AL_RECTYPE_DVBRADIO)
  5066. #ifdef PLAY_VIDEO_FOR_ALLSRV
  5067. && ((stVideoPid.usDataPID&0x1fff) == 0x1fff)
  5068. #endif
  5069. )
  5070. {
  5071. #ifdef CONFIG_SUPPORT_MHEG5
  5072. if ((!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  5073. || ((APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED)
  5074. && (APP_DVB_Mheg5_GetMheg5DisplayStatus() == FALSE)
  5075. && (APP_Area_SupportDtg())))
  5076. #endif
  5077. {
  5078. if(g_bScrambleFlag != PROG_STATUS_SCRAMBLE_UNKNOW)
  5079. {
  5080. _DVBApp_ShowPopup(DVB_APP_POP_MSG_RADIO_CHANNEL);
  5081. }
  5082. }
  5083. }
  5084. else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)
  5085. && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG)
  5086. && (progstate == MID_PLAYBK_PROG_STATE_LOCKED)
  5087. && APP_GUIOBJ_DVB_PvrRec_IsShowPopTime(g_stDetails.start_local_time_secs)==FALSE
  5088. )
  5089. {
  5090. if (!DVBApp_IsPopupExist(DVB_APP_POP_MSG_CHECKPWD))
  5091. {
  5092. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  5093. }
  5094. }
  5095. #endif
  5096. #ifdef CONFIG_SUPPORT_MHEG5
  5097. Boolean testA = (APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED);
  5098. Boolean testB = (APP_DVB_Mheg5_GetMheg5DisplayStatus() == TRUE);
  5099. Boolean testC = (APP_Area_SupportDtg());
  5100. Boolean testD = (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL));
  5101. #ifdef CONFIG_SUPPORT_PVR
  5102. Boolean testE = (APP_GUIOBJ_DVB_PvrPlayInfo_GetRecState() == PVR_STATE_STOP);
  5103. Boolean testF = (MID_Recorder_GetRecMode() != MID_REC_MODE_MANUAL);
  5104. #endif
  5105. //dvb_printf("a %d, b %d, c %d, d %d, e %d, f %d\n",testA,testB,testC,testD,testE, testF);
  5106. if (testA
  5107. && testB
  5108. && testC
  5109. && testD
  5110. #ifdef CONFIG_SUPPORT_PVR
  5111. && testE
  5112. && testF
  5113. #endif
  5114. )
  5115. {
  5116. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  5117. }
  5118. #endif
  5119. #ifdef CONFIG_SUPPORT_MHEG5
  5120. if(progstate == MID_PLAYBK_PROG_STATE_TEMP_SERVICE)
  5121. {
  5122. if((APP_Area_SupportDtg())&&(APP_DVB_Mheg5_GetMheg5DisplayStatus() != TRUE))
  5123. {
  5124. if(!DVBApp_IsPopupExist(DVB_APP_POP_MSG_TEMPSERVICE))
  5125. {
  5126. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TEMPSERVICE);
  5127. }
  5128. }
  5129. }
  5130. #endif
  5131. }
  5132. }
  5133. }
  5134. /*Unmute dispose*/
  5135. if (bSetUnMuteFlag)
  5136. {
  5137. #if 1
  5138. if (g_bMidHasUnmute)
  5139. {
  5140. _DVBApp_Process_Unmute();
  5141. }
  5142. else
  5143. {
  5144. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  5145. AL_DB_ERecordType_t RecordType = AL_RECTYPE_DVBTV;
  5146. UINT32 total_prog = 0;
  5147. RecordType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  5148. AL_DB_GetRecordsTotalNum(eNetType, RecordType, &total_prog);
  5149. if (total_prog > 0)
  5150. {
  5151. INT16 i16ProgState = MID_PLAYBK_PROG_STATE_NORMAL;
  5152. i16ProgState = APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL);
  5153. if ((i16ProgState != MID_PLAYBK_PROG_STATE_NORMAL) &&
  5154. (i16ProgState != MID_PLAYBK_PROG_STATE_VIDEO_AVC))
  5155. {
  5156. DVBApp_CheckProgramType(FALSE);
  5157. bSetUnMuteFlag = FALSE;
  5158. }
  5159. }
  5160. }
  5161. #else //zhongbaoxing moved to _DVBApp_Process_Unmute for mantis 143820 @20110801
  5162. g_u8SetUnMuteTimer ++;
  5163. if (g_u8SetUnMuteTimer == unMute_Check_timer)
  5164. {
  5165. if (g_SetPQFlag == FALSE)
  5166. {
  5167. g_SetPQFlag = TRUE;
  5168. /*set PQ param*/
  5169. eStorageSourType = APP_Data_UserSetting_SourceTypeMappingToStorage(eSourType);
  5170. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0,
  5171. sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  5172. APP_Video_SetPictureMode(
  5173. g_stPictureData.stPictureModeSourceTab[eStorageSourType].PictureModeIndex);
  5174. APP_Video_OSD_PQSet(APP_VIDEO_OSD_ITEM_COLORTEMP, g_stPictureData.stPictureModeSourceTab[eStorageSourType].ColorTempIndex);
  5175. APP_Video_OSD_PQSet(APP_VIDEO_OSD_ITEM_NR, g_stPictureData.NR);
  5176. }
  5177. DVBApp_CheckProgramType(TRUE);
  5178. g_u8SetUnMuteTimer = 0;
  5179. bSetUnMuteFlag = FALSE;
  5180. if (APP_Area_SupportDtg())
  5181. {
  5182. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB | OSD2CTRLMDL_MH5);
  5183. }
  5184. else
  5185. {
  5186. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  5187. }
  5188. }
  5189. #endif
  5190. }
  5191. #ifdef CONFIG_SUPPORT_MHEG5
  5192. INT32 fStatus = 0;
  5193. Boolean fVideoState = FALSE;
  5194. MHEG5APP_GetMh5Status(&fStatus);
  5195. MHEG5APP_GetMh5VideoStatus(&fVideoState);
  5196. if ((fStatus & MHEG5APP_STATUS_MID_ON) == MHEG5APP_STATUS_MID_ON)
  5197. {
  5198. if (fVideoState == FALSE)
  5199. {
  5200. if (APP_GetPlaybackPauseState() == TRUE)
  5201. {
  5202. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  5203. {
  5204. #ifdef Subtitle_Freeze
  5205. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE))
  5206. {
  5207. AL_Subtitle_SetFreeze(FALSE);
  5208. }
  5209. #endif
  5210. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  5211. }
  5212. MID_PlaybackStreamResume(1);
  5213. APP_SetPlaybackPauseState(FALSE);
  5214. }
  5215. }
  5216. }
  5217. #endif
  5218. #ifdef CONFIG_SUPPORT_PVR
  5219. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  5220. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  5221. #if defined(SUPPORT_HOTEL_MODE_PVR_FUNCTION_CONTROL)
  5222. if((!g_stFactoryHotelData.HotelModeOnOff)||(g_stFactoryHotelData.PVRFunction))
  5223. #elif defined(SUPPORT_PVR_ONOFF)
  5224. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0,
  5225. sizeof(APP_SETTING_Setup_t), &(g_stSetupData));
  5226. if(g_stSetupData.PVROnOff)
  5227. #endif
  5228. {
  5229. _DVBApp_PVR_UpdateState();
  5230. }
  5231. #endif
  5232. #ifdef CONFIG_SUPPORT_SSU_UPGRADE
  5233. unsigned int SsuEchWakeTimer;
  5234. static al_uint32 timer;
  5235. //dvb_printf("autoupgrade_sate %d\n",autoupgrade_sate);
  5236. if (autoupgrade_sate== AU_GetTime)
  5237. {
  5238. al_uint32 CurTimeInSec;
  5239. AL_Time_GetCurTimeInSecs(&CurTimeInSec);
  5240. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  5241. ITEM_OFFSET(APP_SETTING_UserInfo_t, OTAWakeupTime),
  5242. sizeof(g_stUserInfoData.OTAWakeupTime),&SsuEchWakeTimer);
  5243. SsuEchWakeTimer -= CurTimeInSec;
  5244. timer = SsuEchWakeTimer*10;
  5245. if (timer > 0)
  5246. {
  5247. autoupgrade_sate = AU_TimeCom;
  5248. }
  5249. else
  5250. {
  5251. autoupgrade_sate = AU_MAX;
  5252. }
  5253. }
  5254. if (autoupgrade_sate == AU_TimeCom)
  5255. {
  5256. timer--;
  5257. //dvb_printf("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%d\n",timer);
  5258. if (timer <= 0)
  5259. {
  5260. autoupgrade_sate = AU_GoToUpgrade;
  5261. }
  5262. }
  5263. if (autoupgrade_sate == AU_GoToUpgrade)
  5264. {
  5265. //dvb_printf(" go to auto grade\n");
  5266. autoupgrade_sate = AU_MAX;
  5267. UINT16 u16ONID_SSU = 0xffff;
  5268. UINT16 u16TSID_SSU = 0xffff;
  5269. MID_OTA_GetOtaMonThreadData(OTA_DATA_TS_ONID,(UINT8 *)&u16ONID_SSU);
  5270. MID_OTA_GetOtaMonThreadData(OTA_DATA_TS_TSID,(UINT8 *)&u16TSID_SSU);
  5271. if ((u16ONID_SSU == 0xffff && u16TSID_SSU == 0xffff)
  5272. ||(u16ONID_SSU == 0x0 && u16TSID_SSU == 0x0))
  5273. {
  5274. //dvb_printf("[don't find linkage descriptor, so try again]%s %d\n",__FUNCTION__,__LINE__);
  5275. autoupgrade_sate = AU_GoToUpgrade;
  5276. }
  5277. else
  5278. {
  5279. APP_GUIOBJ_DVB_OTAPrompt_StartOTAMon();
  5280. }
  5281. }
  5282. #endif
  5283. #if defined (CONFIG_SUPPORT_TTX ) && defined(CONFIG_SUPPORT_TTX_DISP_FOR_AUS)
  5284. {
  5285. UINT8 ttxtimer = APP_GetTTXTimer();
  5286. if(ttxtimer > 0)
  5287. {
  5288. ttxtimer--;
  5289. APP_SetTTXTimer(ttxtimer);
  5290. if(ttxtimer == 0)//time is 8s
  5291. {
  5292. AL_TTX_Reset();
  5293. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  5294. {
  5295. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  5296. }
  5297. }
  5298. }
  5299. }
  5300. #endif
  5301. return 0;
  5302. }
  5303. #if defined(CONFIG_CIPLUS_SUPPORT) && defined(CONFIG_SUPPORT_MHEG5)
  5304. void DVBApp_ApplyAppMMIDisplay(void)
  5305. {
  5306. APP_SETTING_UserInfo_t stUserInfoData;
  5307. E_APPMMI_SMG eSMG;
  5308. E_APPMMI_SSM eSSM;
  5309. /* Get subtitle setting */
  5310. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  5311. sizeof(APP_SETTING_UserInfo_t), &(stUserInfoData));
  5312. /* Get SSM and SMG */
  5313. eSSM = MID_DTVCI_GetAppMMISSM();
  5314. eSMG = MID_DTVMHEG_GetAppMMISMG();
  5315. if( MID_DTVCI_GetAppMMIStatus() && SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5) )
  5316. {
  5317. dvb_printf("%s AppMMI is 'on' Subtitle is '%s' SSM_%s SMG_%s\n",__FUNCTION__,
  5318. stUserInfoData.Subtitle ? "on":"off",
  5319. eSSM == APPMMI_SSM_NONE ? "NONE/2":
  5320. eSSM == APPMMI_SSM_0 ? "0":"1",
  5321. eSMG == APPMMI_SMG_NONE ? "NONE" :
  5322. eSMG == APPMMI_SMG_TRUE ? "TRUE" : "FALSE"
  5323. );
  5324. if( eSSM == APPMMI_SSM_0 )
  5325. {
  5326. dvb_printf("subtitle osd off\n");
  5327. mid_sub_dtv_show(0);
  5328. dvb_printf("mheg osd on\n");
  5329. MHEG5OSD_DisplayEnable(TRUE);
  5330. }
  5331. else if( eSSM == APPMMI_SSM_1 )
  5332. {
  5333. if( stUserInfoData.Subtitle )
  5334. {
  5335. dvb_printf("mheg off\n");
  5336. DVBApp_DataApplicationSwitch(
  5337. OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_MH5);
  5338. dvb_printf("subtitle on\n");
  5339. DVBApp_DataApplicationSwitch(
  5340. OSD2CTRLMDL_ENABLE|OSD2CTRLMDL_SUB);
  5341. }
  5342. }
  5343. else // eSSM is APPMMI_SSM_2 or APPMMI_SSM_NONE
  5344. {
  5345. if( eSMG == APPMMI_SMG_TRUE )
  5346. {
  5347. if( stUserInfoData.Subtitle )
  5348. {
  5349. dvb_printf("mheg osd off\n");
  5350. MHEG5OSD_DisplayEnable(FALSE);
  5351. dvb_printf("subtitle on\n");
  5352. DVBApp_DataApplicationSwitch(
  5353. OSD2CTRLMDL_ENABLE|OSD2CTRLMDL_SUB);
  5354. dvb_printf("subtitle osd on\n");
  5355. mid_sub_dtv_show(1);
  5356. }
  5357. else
  5358. {
  5359. dvb_printf("mheg osd on\n");
  5360. MHEG5OSD_DisplayEnable(TRUE);
  5361. }
  5362. }
  5363. else // eSMG == APPMMI_SMG_FALSE or APPMMI_SMG_NONE
  5364. {
  5365. if( stUserInfoData.Subtitle )
  5366. {
  5367. dvb_printf("mheg osd on\n");
  5368. MHEG5OSD_DisplayEnable(TRUE);
  5369. dvb_printf("subtitle osd off\n");
  5370. mid_sub_dtv_show(0);
  5371. }
  5372. else
  5373. {
  5374. dvb_printf("mheg osd on\n");
  5375. MHEG5OSD_DisplayEnable(TRUE);
  5376. }
  5377. }
  5378. }
  5379. }
  5380. else
  5381. {
  5382. dvb_printf("%s AppMMI is 'off'\n",__FUNCTION__);
  5383. }
  5384. }
  5385. #endif
  5386. #ifdef SUPPORT_ATS
  5387. static UINT8 uGetDemodinfoOn = 0;
  5388. GL_Task_t ATSTask;
  5389. static UINT8 ATSTaskExistFlag = 0;
  5390. void _APP_ATS_Get_Demodinfo_ThreadControl(void *pData)
  5391. {
  5392. ATSTaskExistFlag = 1;
  5393. bool bNeedPrint = TRUE;
  5394. while(uGetDemodinfoOn==1)
  5395. {
  5396. GL_TaskSleep(500);
  5397. UINT32 u16SNR=0;
  5398. FrontendCmd_t front;
  5399. front.cmd = FRONTEND_CMD_GET_SIGNAL_SNR;
  5400. front.param = &u16SNR;
  5401. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  5402. u16SNR = u16SNR/10;
  5403. UINT32 u16BER=0;
  5404. front.cmd = FRONTEND_CMD_GET_SIGNAL_BER;
  5405. front.param = &u16BER;
  5406. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  5407. if(u16BER != 0xFFFF)
  5408. u16BER = u16BER/10;
  5409. UINT32 u16PER=0;
  5410. front.cmd = FRONTEND_CMD_GET_SIGNAL_PER;
  5411. front.param = &u16PER;
  5412. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  5413. UINT32 u16UBC=0;
  5414. front.cmd = FRONTEND_CMD_GET_SIGNAL_UBC;
  5415. front.param = &u16UBC;
  5416. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  5417. UINT32 u16SSI=0;
  5418. front.cmd = FRONTEND_CMD_GET_SIGNAL_STRENGTH;
  5419. front.param = &u16SSI;
  5420. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  5421. UINT32 u16SQI=0;
  5422. front.cmd = FRONTEND_CMD_GET_SIGNAL_QUALITY;
  5423. front.param = &u16SQI;
  5424. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  5425. UINT32 IsDemodLock=0;
  5426. front.cmd = FRONTEND_CMD_GET_DEMOD_LOCK_STATUS;
  5427. front.param = (void *)&IsDemodLock;
  5428. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  5429. //ATS:lock xx SNR xxx BER xxxxx PER xxxxx UBC xxxxx SSI xxx SQI xxx
  5430. if(bNeedPrint == TRUE)
  5431. {
  5432. char cLen[80];
  5433. 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);
  5434. con_echo_sfu(80, (UINT8 *)cLen);
  5435. }
  5436. if(IsDemodLock == 0)
  5437. bNeedPrint = FALSE;
  5438. else
  5439. bNeedPrint = TRUE;
  5440. }
  5441. if(uGetDemodinfoOn == 0)
  5442. {
  5443. ATSTaskExistFlag = 0;
  5444. GL_TaskSelfDelete();
  5445. }
  5446. }
  5447. UINT32 APP_ATS_Get_Demodinfo_On()
  5448. {
  5449. if(ATSTaskExistFlag == 0)
  5450. {
  5451. GL_Status_t ret = GL_FAILURE;
  5452. ret = GL_TaskCreate("ATSGetDemodinfo", _APP_ATS_Get_Demodinfo_ThreadControl, NULL, 4, 32, FALSE, &ATSTask);
  5453. if (ret != GL_SUCCESS)
  5454. {
  5455. return AL_FAILURE;
  5456. }
  5457. ret = GL_TaskActivate(ATSTask);
  5458. if (ret != GL_SUCCESS)
  5459. {
  5460. return AL_FAILURE;
  5461. }
  5462. }
  5463. return AL_SUCCESS;
  5464. }
  5465. #endif
  5466. static INT32 _DVBApp_OnGlobalEvent(void *pPrivateData, UINT32 dMessage, UINT32 dParam)
  5467. {
  5468. al_bool bHasValidServ = al_false;
  5469. al_uint8 bSignalState = al_false;
  5470. PopmsgParam_t stPopup;
  5471. UINT32 dGuiObj = DVB_GUIOBJ_EPG;
  5472. UINT8 u8HotelMode;
  5473. UINT8 u8MainUIEn;
  5474. AL_DB_ERecordType_t NextServiceType = 0;
  5475. UINT32 u32TotalNum = 0;
  5476. AL_RecHandle_t hProg;
  5477. AL_RecHandle_t hCurProg;
  5478. #ifdef CONFIG_SUPPORT_MHEG5
  5479. int sdRet;
  5480. #endif
  5481. UINT32 dAppIndex = 0;
  5482. MID_DISP_MUTE_ST eMuteSt = 0;
  5483. #ifdef SUPPORT_SOURCE_DVBTCS
  5484. UINT32 RFtype = APP_RF_TYPE_DVB_MAX;
  5485. UINT32 StringId = 0;
  5486. #endif
  5487. #ifdef CONFIG_SUPPORT_3D_EN
  5488. APP_Video_Image3DAction_t ePicture3DState = APP_VIDEO_IMAGE_3D_DISABLED;
  5489. #endif
  5490. APP_Source_Type_t eSourType = APP_SOURCE_MAX;
  5491. APP_Source_Type_t eMidSourType = APP_SOURCE_MAX;
  5492. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  5493. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  5494. AL_RecHandle_t hCurrProgHandle = AL_DB_INVALIDHDL;
  5495. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0,
  5496. sizeof(APP_SETTING_FactoryUser_t), &(g_stFactoryUserData));
  5497. if (g_stFactoryUserData.n_FactSet_BurningMode == al_true)
  5498. {
  5499. return SP_SUCCESS;
  5500. }
  5501. #ifdef CONFIG_SUPPORT_MHEG5
  5502. sdRet = 0;
  5503. #endif
  5504. dMessage = (dMessage&~PASS_TO_SYSAPP);
  5505. dvb_printf("%d. dMessage = 0x%x(%d)event received.\n", __LINE__, dMessage,(dMessage&0xfff));
  5506. #ifdef CONFIG_SUPPORT_MHEG5
  5507. int iFocusedIndex;
  5508. #endif
  5509. #ifdef CONFIG_SUPPORT_TTX
  5510. al_uint8 *pref_iso639 = al_null;
  5511. #endif
  5512. eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  5513. hCurProg = hProg = APP_DVB_Playback_GetCurrentProgHandle(eNetType, eServiceType);
  5514. APP_GUIOBJ_Source_GetCurrSource(&eSourType);
  5515. APP_GUIOBJ_Source_GetMidSource(&eMidSourType, NULL);
  5516. UINT8 bAutoInstall = FALSE;
  5517. #ifdef IR_PLAYPAUE_COMBINE
  5518. if (dMessage == UI_EVENT_PLAY)
  5519. {
  5520. dMessage = UI_EVENT_PLAY_PAUSE;
  5521. }
  5522. if (dMessage == UI_EVENT_PLAY_PAUSE)
  5523. {
  5524. dMessage = UI_EVENT_PAUSE;
  5525. }
  5526. #endif
  5527. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  5528. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  5529. u8HotelMode = g_stFactoryHotelData.HotelModeOnOff;
  5530. u8MainUIEn = g_stFactoryHotelData.MainUIOperation;
  5531. if (u8HotelMode == 1)
  5532. {
  5533. if (u8MainUIEn == 1)
  5534. {
  5535. if (dMessage == UI_EVENT_MENU)
  5536. {
  5537. return 0;
  5538. }
  5539. }
  5540. }
  5541. if ((g_stFactoryHotelData.HotelModeOnOff == 1) && (g_stFactoryHotelData.AspectRatioLock == 1))
  5542. {
  5543. if (dMessage == UI_EVENT_ASPECT)
  5544. {
  5545. dMessage = UI_EVENT_NULL;
  5546. }
  5547. }
  5548. #ifdef CONFIG_SUPPORT_PVR
  5549. UINT8 u8AutoTimeShift;
  5550. UINT8 u8MidRecState;
  5551. UINT8 u8MIDRecMode;
  5552. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  5553. ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift),
  5554. sizeof(g_stFeatureData.AutoTimeShift), &(g_stFeatureData.AutoTimeShift));
  5555. u8AutoTimeShift = g_stFeatureData.AutoTimeShift;
  5556. u8MidRecState = MID_RecorderState();
  5557. u8MIDRecMode = MID_Recorder_GetRecMode();
  5558. #ifdef SUPPORT_PLAY_PAUSE_KEY_START_REC
  5559. if ((MID_REC_STATUS_STOP == u8MidRecState)
  5560. && (dMessage == UI_EVENT_PLAY_PAUSE)
  5561. && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_RECORDLIST)
  5562. && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  5563. {
  5564. dMessage = UI_EVENT_REC;
  5565. }
  5566. #endif
  5567. #endif
  5568. #if defined(SUPPORT_PVR_ONOFF) || defined(SUPPORT_EPG_ONOFF)
  5569. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0,
  5570. sizeof(APP_SETTING_Setup_t), &(g_stSetupData));
  5571. #endif
  5572. #ifdef SUPPORT_CEC_TV
  5573. if (CECTV_GetCECEnable()==CECTV_ENABLE)
  5574. {
  5575. //active source
  5576. if(dMessage==UI_EVENT_TVRADIO)
  5577. {
  5578. dvb_printf("========================UI_EVENT_TVRADIO========================");
  5579. // no need to notice cec change src
  5580. //CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_CHGSRC_OUT_HDMI, SRC_OTHERS);
  5581. }
  5582. if(dMessage==UI_EVENT_MUTE)
  5583. {
  5584. dvb_printf("\n\n=============CEC Send Audio Mute===============\n\n");
  5585. //CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_KEYPRESS, CECTV_KEY_MUTE<<8|0x05);//Mute Function
  5586. if (CECTV_GetHDMISystemAudioMode() && APP_Check_CEC_DEVICE_Status())
  5587. {
  5588. if(g_u32Mutekeydelaytime >= MUTE_KEY_INTERVAL)
  5589. {
  5590. cec_RemoteControlPassThrough(CECTV_KEY_MUTE);
  5591. cec_RemoteControlPassThrough(CECTV_KEY_MUTE_RELEASE);
  5592. g_u32Mutekeydelaytime = 0;
  5593. }
  5594. }
  5595. }
  5596. if(dMessage==UI_EVENT_VOL_UP)
  5597. {
  5598. dvb_printf("========================UI_EVENT_VOL_UP========================");
  5599. //CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_KEYPRESS, CECTV_KEY_VOLUME_UP<<8|0x05);//UCP VOL_DN Function
  5600. if (CECTV_GetHDMISystemAudioMode() && APP_Check_CEC_DEVICE_Status())
  5601. {
  5602. if (dParam & IR_EVENT_REPEAT_TYPE)
  5603. {
  5604. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_UP);
  5605. }
  5606. else if (dParam & IR_EVENT_REPEAT_END)
  5607. {
  5608. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_UP_RELEASE);
  5609. }
  5610. else
  5611. {
  5612. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_UP);
  5613. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_UP_RELEASE);
  5614. }
  5615. }
  5616. }
  5617. if(dMessage==UI_EVENT_VOL_DN)
  5618. {
  5619. dvb_printf("========================UI_EVENT_VOL_DN========================");
  5620. //CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_KEYPRESS, CECTV_KEY_VOLUME_DOWN<<8|0x05);//UCP VOL_DN Function
  5621. if (CECTV_GetHDMISystemAudioMode() && APP_Check_CEC_DEVICE_Status())
  5622. {
  5623. if (dParam & IR_EVENT_REPEAT_TYPE)
  5624. {
  5625. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_DOWN);
  5626. }
  5627. else if (dParam & IR_EVENT_REPEAT_END)
  5628. {
  5629. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_DOWN_RELEASE);
  5630. }
  5631. else
  5632. {
  5633. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_DOWN);
  5634. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_DOWN_RELEASE);
  5635. }
  5636. }
  5637. }
  5638. }
  5639. #endif
  5640. #ifdef TEAC_BLUE_KEY_FUNCTION
  5641. if (_DVB_GetPanelControlType() == APP_PANEL_POWER_DOWN && (dMessage >= UI_EVENT_0 && dMessage < UI_EVENT_NULL) && (dMessage != UI_EVENT_POWER))
  5642. {
  5643. //APP_Panel_SetPowerSequence(APP_PANEL_POWER_UP);
  5644. //APP_Video_OSD_PQSet(APP_VIDEO_OSD_ITEM_BACKLIGHT,
  5645. // g_stSetupData.HomeMode.Backlight[g_stSetupData.HomeMode.Type]);
  5646. _DVB_SetPanelControlType(APP_PANEL_POWER_UP);
  5647. return GUI_OBJECT_NO_POST_ACTION;
  5648. }
  5649. #endif
  5650. switch (dMessage)
  5651. {
  5652. case APP_DVB_GLOBAL_EVENT_SCAN_DONE:
  5653. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS))
  5654. {
  5655. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  5656. SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS,
  5657. APP_DVB_GLOBAL_EVENT_SCAN_DONE, 0);
  5658. }
  5659. else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL))
  5660. {
  5661. SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_SCAN_DONE, 0);
  5662. }
  5663. else
  5664. {
  5665. APP_GUIOBJ_ScanProcess_ScanDone(NULL, 1);
  5666. }
  5667. break;
  5668. case APP_DVB_GLOBAL_EVENT_DVB_ONRUN:
  5669. dvb_printf(" APP_DVB_GLOBAL_EVENT_DVB_ONRUN event received\n");
  5670. g_u32NoSignalTimer = 0;
  5671. g_u32NoSignalSleepTimer = 0;
  5672. /*#ifdef CONFIG_SUPPORT_PVR
  5673. if (MID_REC_STATUS_STOP != u8MidRecState)
  5674. {
  5675. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  5676. {
  5677. DVBApp_StopRecord();
  5678. }
  5679. else
  5680. {
  5681. DVBApp_StopTimeshift(TRUE);
  5682. }
  5683. }
  5684. #endif*/
  5685. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL,
  5686. ITEM_OFFSET(APP_SETTING_Channel_t, Country),
  5687. sizeof(g_stChannelData.Country), &(g_stChannelData.Country));
  5688. DVBApp_ResetDvbSpecRule(g_stChannelData.Country);
  5689. #ifdef CONFIG_MEDIA_ENABLE
  5690. /*#ifdef CONFIG_SUPPORT_PVR
  5691. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  5692. if(APP_WAKEUP_GetBootFlag()==FALSE)
  5693. #endif
  5694. {
  5695. if (MM_Music_GetPanelControlType() == APP_PANEL_POWER_DOWN)
  5696. //APP_Panel_SetPowerSequence(APP_PANEL_POWER_UP);
  5697. }
  5698. #endif*/
  5699. #endif
  5700. /*Change Source*/
  5701. UINT32 Indexmm = TOTAL_SYS_APP_SIZE;
  5702. while(MAINAPP_GetActiveSystemAppIndex(&Indexmm) !=MAIN_APP_SUCCESS)
  5703. {
  5704. GL_TaskSleep(1);
  5705. }
  5706. if ((SP_SUCCESS != APP_GUIOBJ_Source_SetMidSource(NULL)) || (APP_IsScan_Running()))
  5707. {
  5708. #ifdef CONFIG_SUPPORT_PVR
  5709. DVBApp_SetPVRSwitchSRC(FALSE);
  5710. #endif
  5711. return SP_ERR_FAILURE;
  5712. }
  5713. #ifdef CONFIG_SUPPORT_PVR
  5714. int iPtListIdx = -1;
  5715. extern int _RecorderList_Callback(MID_PVRRecListParseMsg_t dPVRRecListCallbackType);
  5716. MID_TSPLParser_RegisterPvrRecListCallback((PVRRecListCallbackFunc)_RecorderList_Callback);
  5717. if (MID_RecorderGetDefaultPartition(&iPtListIdx) != MID_REC_FS_OK)
  5718. {
  5719. /* aps new don't support NTFS fs */
  5720. if (APP_GUIOBJ_DVB_PartitionList_GetFirstFat(&iPtListIdx) == TRUE)
  5721. {
  5722. MID_RecorderSetDefaultPartition(iPtListIdx, MID_REC_PARTITION_SET_FORCE); //set partition 0 for default partition
  5723. }
  5724. }
  5725. else //for mantis 0180617, refresh mid PVR file list when change from other source
  5726. {
  5727. static char szPtName[MID_PTLIST_MAX_PARTITIONNAME];
  5728. MID_PartitionList_GetMountName(iPtListIdx, szPtName);
  5729. extern Boolean MID_Recorder_DeleteTShistIfExist(char *szPtName);
  5730. if(MID_Recorder_DeleteTShistIfExist(szPtName)==TRUE)
  5731. {
  5732. PVR_DEBF("Delete TSHIFT FILE [OK]\n");
  5733. }
  5734. extern Boolean MID_Recorder_DeleteIllegalPVR(char *szPtName);
  5735. if(MID_Recorder_DeleteIllegalPVR(szPtName)==TRUE)
  5736. {
  5737. PVR_DEBF("Delete Illegal PVR [OK]\n");
  5738. }
  5739. MID_TSPLParser_Init(szPtName);
  5740. }
  5741. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  5742. #endif
  5743. eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  5744. if ((eServiceType != AL_RECTYPE_DVBTV) && (eServiceType != AL_RECTYPE_DVBRADIO) && (eServiceType != AL_RECTYPE_DVBDATA))
  5745. {
  5746. eServiceType = AL_RECTYPE_DVBTV;
  5747. }
  5748. /* Check Service Type */
  5749. {
  5750. UINT32 u32TotalChnCount = 0;
  5751. AL_DB_ERecordType_t eTempServiceType = eServiceType;
  5752. if(eServiceType != AL_RECTYPE_DVBTV)
  5753. {
  5754. AL_DB_GetRecordsTotalNum(eNetType, eServiceType, &u32TotalChnCount);
  5755. if(!u32TotalChnCount)
  5756. {
  5757. eTempServiceType = AL_RECTYPE_DVBTV;
  5758. AL_DB_GetRecordsTotalNum(eNetType, eTempServiceType, &u32TotalChnCount);
  5759. if(!u32TotalChnCount)
  5760. {
  5761. if(eServiceType == AL_RECTYPE_DVBRADIO)
  5762. {
  5763. AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBDATA, &u32TotalChnCount);
  5764. if(u32TotalChnCount)
  5765. {
  5766. eTempServiceType = AL_RECTYPE_DVBDATA;
  5767. }
  5768. }
  5769. else if(eServiceType == AL_RECTYPE_DVBDATA)
  5770. {
  5771. AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBRADIO, &u32TotalChnCount);
  5772. if(u32TotalChnCount)
  5773. {
  5774. eTempServiceType = AL_RECTYPE_DVBRADIO;
  5775. }
  5776. }
  5777. }
  5778. }
  5779. }
  5780. else
  5781. {
  5782. AL_DB_GetRecordsTotalNum(eNetType, eServiceType, &u32TotalChnCount);
  5783. if(!u32TotalChnCount)
  5784. {
  5785. AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBDATA, &u32TotalChnCount);
  5786. if(u32TotalChnCount)
  5787. {
  5788. eTempServiceType = AL_RECTYPE_DVBDATA;
  5789. }
  5790. else
  5791. {
  5792. AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBRADIO, &u32TotalChnCount);
  5793. if(u32TotalChnCount)
  5794. {
  5795. eTempServiceType = AL_RECTYPE_DVBRADIO;
  5796. }
  5797. }
  5798. }
  5799. }
  5800. eServiceType = eTempServiceType;
  5801. APP_DVB_Playback_SetCurrServiceType(eNetType, eServiceType);
  5802. }
  5803. /*create playback and mute guiobject*/
  5804. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK))
  5805. {
  5806. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, 0);
  5807. }
  5808. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MUTE))
  5809. {
  5810. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_MUTE, 0);
  5811. }
  5812. if (TRUE == APP_GUIOBJ_DVB_FavNet_GetSelect())
  5813. {
  5814. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVNET))
  5815. {
  5816. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FAVNET, 0);
  5817. break;
  5818. }
  5819. }
  5820. /* change source to net, it will destroy `mute' icon
  5821. * so, judge `mute' state, show icon
  5822. */
  5823. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  5824. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  5825. if (g_stUserInfoData.Mute == TRUE)
  5826. {
  5827. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  5828. SYS_APP_DVB, APP_GUIOBJ_MUTE,
  5829. APP_INTRA_EVENT_SHOW_MUTE, SHOW_MUTE_ON_TV);
  5830. }
  5831. bAutoInstall = g_stUserInfoData.AutoInstalled;
  5832. if (bAutoInstall && (FALSE ==gIsFactoryResetting))
  5833. {
  5834. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL))
  5835. {
  5836. //Close all menu before show Auto Installation menu
  5837. _DVBApp_CloseAllMenu();
  5838. #ifdef SUPPORT_FACTORY_AUTO_TEST
  5839. if(APP_Factory_GetAutoTestOnOff() == FALSE)
  5840. #endif
  5841. {
  5842. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL, 0);
  5843. }
  5844. }
  5845. }
  5846. #ifdef SUPPORT_FACTORY_AUTO_TEST
  5847. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  5848. {
  5849. extern void APP_SetPoweronEnterVersion(UINT8 value);
  5850. extern UINT8 APP_GetPoweronEnterVersion(void);
  5851. if(APP_GetPoweronEnterVersion() == 1)
  5852. {
  5853. APP_SetPoweronEnterVersion(0);
  5854. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING))
  5855. {
  5856. DVBApp_ResetPopup_Channel();
  5857. _DVBApp_CloseAllMenu();
  5858. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING, 1);
  5859. Factory_Ver_Debug();
  5860. }
  5861. }
  5862. }
  5863. #endif
  5864. hProg = APP_DVB_Playback_GetCurrentProgHandle(eNetType, eServiceType);
  5865. #ifdef CONFIG_SUPPORT_PVR
  5866. if (DVBApp_GetPVRSwitchSRC() == TRUE)
  5867. {
  5868. eServiceType = g_eRecType;
  5869. APP_DVB_Playback_SetNextServiceType(eServiceType);
  5870. hProg = DVBApp_GetSCHProgHandle();
  5871. }
  5872. #endif
  5873. if (APP_MenuMgr_Exist_Scan_Menu())
  5874. {
  5875. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_GLOBAL_EVENT_SET_SOURCE_COMPLETE, 0);
  5876. }
  5877. else
  5878. {
  5879. #if 0 /*modify by qinhe for mantis 0011833*/
  5880. AL_DB_GetRecordsTotalNum(eNetType, eServiceType, &TotalNum);
  5881. #else
  5882. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  5883. #endif
  5884. if (bHasValidServ)
  5885. {
  5886. #ifdef SUPPORT_CONSOLE_AUTO_TEST
  5887. UINT32 uChnNo = 0;
  5888. if(TRUE == APP_Factory_CheckNeedSetChannelByNum(&uChnNo))
  5889. {
  5890. App_SetDTVProg_ByChannelNum(uChnNo);
  5891. }
  5892. else
  5893. #endif
  5894. {
  5895. if (hProg == AL_DB_INVALIDHDL)
  5896. {
  5897. AL_RecHandle_t hTpHdl = AL_DB_INVALIDHDL;
  5898. AL_DB_GetRecord(AL_DB_REQ_GETFIRST, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hTpHdl);
  5899. if (hTpHdl != AL_DB_INVALIDHDL)
  5900. {
  5901. hProg = APP_DVB_PLAYBACK_GetFirstProgHdlofLowestService();
  5902. AL_DB_GetRecordType(hProg, &eNetType, &eServiceType);
  5903. APP_DVB_Playback_SetCurrentProgHandle(eNetType, eServiceType, hProg);
  5904. APP_DVB_Playback_SetNextServiceType(eServiceType);
  5905. }
  5906. }
  5907. if (hProg == AL_DB_INVALIDHDL)
  5908. {
  5909. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS))
  5910. {
  5911. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  5912. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  5913. }
  5914. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL))
  5915. {
  5916. if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_DATABASE_EMPTY)
  5917. #ifdef SUPPORT_CONSOLE_AUTO_TEST
  5918. && !g_stFactoryUserData.uFacPMode
  5919. #endif
  5920. )
  5921. {
  5922. DVBApp_ResetPopup_Channel();
  5923. _DVBApp_ShowPopup(DVB_APP_POP_MSG_DATABASE_EMPTY);
  5924. }
  5925. }
  5926. }
  5927. else
  5928. {
  5929. DBServAttrib_t stAttribute;
  5930. memset(&stAttribute, 0, sizeof(stAttribute));
  5931. AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute);
  5932. if(stAttribute.unStable == al_true)
  5933. {
  5934. DVBApp_RemoveUnstableService();
  5935. }
  5936. else
  5937. {
  5938. _DVBApp_Zapping(eServiceType, hProg, TRUE, 0, TRUE);
  5939. }
  5940. /*Add for dispose TV/RADIO key in channel manager /channel list /epg*/
  5941. if (!dParam)
  5942. {
  5943. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR)
  5944. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR)
  5945. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST)
  5946. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST)
  5947. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG))
  5948. {
  5949. break;
  5950. }
  5951. }
  5952. /*End*/
  5953. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  5954. if (bSignalState != AL_DVB_MONITOR_VALUE_TRUE)
  5955. {
  5956. #ifdef PLAY_VIDEO_FOR_ALLSRV
  5957. if (DVBApp_CheckHasVideo() == FALSE)
  5958. #else
  5959. if (eServiceType == AL_RECTYPE_DVBRADIO)
  5960. #endif
  5961. {
  5962. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  5963. SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  5964. APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  5965. }
  5966. if(!APP_Factory_CheckNeedReopenFm(SYS_APP_DVB))
  5967. {
  5968. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_SIGNAL);
  5969. }
  5970. }
  5971. else
  5972. {
  5973. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  5974. #if 0 //zhongbaoxing removed for mantis 171528 @20120307
  5975. if (eServiceType == AL_RECTYPE_DVBRADIO)
  5976. {
  5977. if (!APP_GUIOBJ_DVB_Playback_GetShowLogoState())
  5978. {
  5979. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  5980. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  5981. }
  5982. #ifdef CONFIG_SUPPORT_MHEG5
  5983. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  5984. #endif
  5985. {
  5986. _DVBApp_ShowPopup(DVB_APP_POP_MSG_RADIO_CHANNEL);
  5987. }
  5988. }
  5989. else
  5990. #else
  5991. if (eServiceType != AL_RECTYPE_DVBRADIO)
  5992. {
  5993. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  5994. }
  5995. #endif
  5996. }
  5997. }
  5998. }
  5999. }
  6000. else
  6001. {
  6002. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  6003. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  6004. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL))
  6005. {
  6006. if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_DATABASE_EMPTY))
  6007. {
  6008. DVBApp_ResetPopup_Channel();
  6009. if(!APP_Factory_CheckNeedReopenFm(SYS_APP_DVB))
  6010. {
  6011. _DVBApp_ShowPopup(DVB_APP_POP_MSG_DATABASE_EMPTY);
  6012. DVBApp_CheckProgramType(FALSE);
  6013. }
  6014. }
  6015. }
  6016. }
  6017. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  6018. DRV_Frontend_Connect_Type_t tPreFrontendType = FRONTEND_CONNECT_TYPE_MAX;
  6019. if ((!bHasValidServ || (hProg == AL_DB_INVALIDHDL))&&(eNetType == AL_DBTYPE_DVB_S))
  6020. {
  6021. MID_SatCtrl_FrontendCtrl(FRONTEND_CMD_GET_CONNECT_TYPE, (void *)&tPreFrontendType);
  6022. if (tPreFrontendType != FRONTEND_CONNECT_TYPE_DVB_S && tPreFrontendType != FRONTEND_CONNECT_TYPE_DVB_S2)
  6023. {
  6024. MID_SatCtrl_FrontendCtrl(FRONTEND_CMD_SET_S, NULL);
  6025. }
  6026. }
  6027. #endif
  6028. #ifdef CONFIG_DVB_SYSTEM_DVBT2_SUPPORT
  6029. DRV_Frontend_Connect_Type_t tPreFrontendType_t = FRONTEND_CONNECT_TYPE_MAX;
  6030. FrontendCmd_t front;
  6031. if ((!bHasValidServ || (hProg == AL_DB_INVALIDHDL))&&(eNetType == AL_DBTYPE_DVB_T))
  6032. {
  6033. front.cmd = FRONTEND_CMD_GET_CONNECT_TYPE;
  6034. front.param = (void *)&tPreFrontendType_t;
  6035. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  6036. if (tPreFrontendType_t != FRONTEND_CONNECT_TYPE_DVB_T && tPreFrontendType_t != FRONTEND_CONNECT_TYPE_DVB_T2)
  6037. {
  6038. front.cmd = FRONTEND_CMD_SET_T;
  6039. front.param = NULL;
  6040. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  6041. }
  6042. }
  6043. #endif
  6044. #ifdef SUPPORT_DTV_SHOW_BLUESCREEN
  6045. al_uint8 bMonitorState = al_false;
  6046. al_uint8 bSignalState = al_false;
  6047. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_MONITOR, &bMonitorState);
  6048. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  6049. if ((g_stSetupData.BlueScreen == APP_SWITCH_ON)
  6050. &&((!bHasValidServ)
  6051. ||!((bMonitorState) && (bSignalState == AL_DVB_MONITOR_VALUE_TRUE))))
  6052. {
  6053. #ifdef CONFIG_DVB_SYSTEM
  6054. APP_SCARTOUT_SetVideoMute(APP_SOURCE_DTV, DTV_TRUE, TRUE);
  6055. #endif
  6056. MID_DISP_DTVSetVideoMute(0,0,255);
  6057. }
  6058. #endif
  6059. _DVBApp_CheckPopupDisplay();
  6060. }
  6061. #ifdef CONFIG_SUPPORT_PVR
  6062. if(DVBApp_GetPVRSwitchSRC())
  6063. {
  6064. DVBApp_SetPVRSwitchSRC(FALSE);
  6065. if(DVBApp_GetReminderTime2Show() > 1)//For confirm record ahead
  6066. {
  6067. AL_Return_t ret;
  6068. memset(&g_stDetails,0,sizeof(AL_PR_details_t));
  6069. ret = AL_PR_GetById(g_dReminderId, &g_stDetails);
  6070. if (ret == AL_SUCCESS)
  6071. {
  6072. DVBApp_PVRRec_SetTimerCancle();
  6073. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  6074. (APP_DVB_GLOBAL_EVENT_PVRSCH | PASS_TO_SYSAPP), (UINT32)&g_stDetails);
  6075. }
  6076. }
  6077. }
  6078. #endif
  6079. break;
  6080. case APP_DVB_GLOBAL_EVENT_OBJECT_OPEN:
  6081. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, dParam & 0XFFFF))
  6082. {
  6083. #ifdef CONFIG_CI_SUPPORT
  6084. if (((dParam & 0XFFFF) == DVB_GUIOBJ_CI_MENU) || ((dParam & 0XFFFF) == DVB_GUIOBJ_CI_ENQ))
  6085. {
  6086. UINT32 i;
  6087. UINT8 CouldOpen = TRUE;
  6088. for (i = 0; i < sizeof(g_CI_IgnoreGuiObjID) / sizeof(g_CI_IgnoreGuiObjID[0]); i++)
  6089. {
  6090. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, g_CI_IgnoreGuiObjID[i]))
  6091. {
  6092. CouldOpen = FALSE;
  6093. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU)
  6094. && ((dParam & 0XFFFF) == DVB_GUIOBJ_CI_ENQ))
  6095. {
  6096. CouldOpen = TRUE;
  6097. }
  6098. }
  6099. }
  6100. if (CouldOpen == FALSE)
  6101. {
  6102. break;
  6103. }
  6104. for (i = 0; i < sizeof(g_CI_HideGuiObjID) / sizeof(g_CI_HideGuiObjID[0]); i++)
  6105. {
  6106. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, g_CI_HideGuiObjID[i]))
  6107. {
  6108. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, g_CI_HideGuiObjID[i]);
  6109. }
  6110. }
  6111. g_u32OldPopup = PLAYBACK_POPUP_NONE;
  6112. _DVBApp_HidePopupDisplay();
  6113. if((dParam&0XFFFF) == DVB_GUIOBJ_CI_MENU)
  6114. {
  6115. _DVBApp_CloseAllMenu();
  6116. #ifdef CONFIG_SUPPORT_PVR
  6117. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  6118. {
  6119. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  6120. }
  6121. extern Boolean APP_GUIOBJ_DVB_PvrFilePlayInfo_IsExist(void);
  6122. if (APP_GUIOBJ_DVB_PvrFilePlayInfo_IsExist())
  6123. {
  6124. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAYINFO,
  6125. APP_DVB_INTRA_EVENT_PVR_FILEPLAYINFO_HIDE_MENU, 0);
  6126. }
  6127. #endif
  6128. }
  6129. }
  6130. #endif
  6131. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, dParam & 0XFFFF, dParam >> 16);
  6132. }
  6133. break;
  6134. case APP_DVB_GLOBAL_EVENT_OBJECT_CLOSE:
  6135. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, dParam))
  6136. {
  6137. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, dParam);
  6138. }
  6139. break;
  6140. case APP_DVB_GLOBAL_EVENT_CLOSE_POPUP:
  6141. DVBApp_ClosePopup(dParam, UI_EVENT_NULL);
  6142. break;
  6143. case APP_DVB_GLOBAL_EVENT_EXIT_ALL_MENU:
  6144. #ifdef CONFIG_CIPLUS_SUPPORT_PVR //CI MMI case, when PIN code is passed, do not close all UI.
  6145. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  6146. break;
  6147. #endif
  6148. _DVBApp_Exit_All_Menu();
  6149. break;
  6150. #ifdef CONFIG_CI_SUPPORT
  6151. case APP_DVB_GLOBAL_EVENT_POPMSG_CAM_ON_INIT:
  6152. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_CAM_INIT);
  6153. break;
  6154. case APP_DVB_GLOBAL_EVENT_POPMSG_CAM_INIT_OK:
  6155. _APP_GUIOBJ_Feature_UpdateList(APP_GUIOBJ_MainMenu_GetIndexByType(CIINFO_ITEM));
  6156. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_CAM_INIT_OK);
  6157. break;
  6158. #ifndef CONFIG_TV_NEW_UI
  6159. case APP_DVB_GLOBAL_EVENT_POPMSG_CAM_ERROR:
  6160. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_CAM_ERROR);
  6161. break;
  6162. #endif
  6163. case APP_DVB_GLOBAL_EVENT_POPMSG_CAM_REMOVED:
  6164. _APP_GUIOBJ_Feature_UpdateList(APP_GUIOBJ_MainMenu_GetIndexByType(CIINFO_ITEM));
  6165. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_CAM_REMOVED);
  6166. break;
  6167. #ifdef SUPPORT_CICAM_NEW_MESSAGE //this define need be enable to inform user remove CICAM card
  6168. case APP_DVB_GLOBAL_EVENT_POPMSG_INFORM_USER_REMOVE_CAM:
  6169. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_INFORM_USER_REMOVE_CAM);
  6170. break;
  6171. #endif
  6172. case APP_DVB_GLOBAL_EVENT_CI_REDRAW_ALL_CAM:
  6173. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  6174. DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_REDRAW_ALL_CAM, dParam);
  6175. break;
  6176. case APP_DVB_GLOBAL_EVENT_CI_CAM_ON_INIT:
  6177. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  6178. DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_CAM_ON_INIT, dParam);
  6179. break;
  6180. case APP_DVB_GLOBAL_EVENT_CI_CAM_NOT_INSERT:
  6181. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  6182. DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_CAM_NOT_INSERT, dParam);
  6183. break;
  6184. case APP_DVB_GLOBAL_EVENT_CI_CAM_INIT_OK:
  6185. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MAINMENU))
  6186. {
  6187. DVBApp_ResetPopup_Channel();
  6188. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  6189. }
  6190. _APP_GUIOBJ_Feature_UpdateList(APP_GUIOBJ_MainMenu_GetIndexByType(CIINFO_ITEM));
  6191. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  6192. DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_CAM_INIT_OK, dParam);
  6193. break;
  6194. case APP_DVB_GLOBAL_EVENT_CI_REDRAW_MENU:
  6195. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  6196. DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_REDRAW_MENU, dParam);
  6197. break;
  6198. #ifdef CONFIG_CIPLUS_SUPPORT
  6199. case APP_DVB_GLOBAL_EVENT_CI_AUTH_PROGRESS:
  6200. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  6201. DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_AUTH_PROGRESS, dParam);
  6202. break;
  6203. #endif
  6204. #endif
  6205. case APP_GLOBAL_EVENT_OPEN_HOMEMODE:
  6206. #if defined(CELLO_cello) && defined(SUPPORT_HOMEMODE)
  6207. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  6208. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  6209. if((g_stUserInfoData.AutoInstalledHomeMode)
  6210. &&(!g_stUserInfoData.AutoInstalled))
  6211. {
  6212. if ((!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL))
  6213. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  6214. &&(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE))
  6215. #endif
  6216. )
  6217. {
  6218. //Close all menu before show Auto Installation menu
  6219. _DVBApp_CloseAllMenu();
  6220. #ifdef SUPPORT_FACTORY_AUTO_TEST
  6221. if(APP_Factory_GetAutoTestOnOff() == FALSE)
  6222. #endif
  6223. {
  6224. APP_GUIOBJ_AutoInstall_SetOpenHomeModeFlag(FALSE);
  6225. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL, INSTALL_FROM_ONLYFORHOMEMODE);
  6226. }
  6227. }
  6228. }
  6229. #endif
  6230. break;
  6231. case APP_GLOBAL_EVENT_POPMSG_PWD:
  6232. {dvb_printf("APP_GLOBAL_EVENT_POPMSG_PWD is received,Unlock success!!\n\n");
  6233. g_SetPQFlag = TRUE;
  6234. APP_DVB_Playback_SetUnlock(TRUE);
  6235. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  6236. if (bSignalState == AL_DVB_MONITOR_VALUE_INVAILED)//tuner locked
  6237. {
  6238. al_uint8 uDVBMonState = AL_DVB_MONITOR_VALUE_TRUE;
  6239. AL_DVB_Monitor_SetState(AL_DVB_MONITOR_STATE_SIGNAL, &uDVBMonState);
  6240. }
  6241. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  6242. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_START_PLAYBACK, 0);
  6243. if (APP_GetPlaybackPauseState() == TRUE)
  6244. {
  6245. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  6246. {
  6247. MID_PlaybackStreamPause(1);
  6248. }
  6249. }
  6250. DVBApp_CheckProgramType(TRUE);
  6251. #ifdef CONFIG_SUPPORT_MHEG5
  6252. dvb_printf("\n [set mheg5 flag] APP_GLOBAL_EVENT_POPMSG_PWD@@@@@@@@@@@@@dvb_app.c@@@@@@@@@@@@line=%d\n",__LINE__);
  6253. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_FORCE|OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5 | OSD2CTRLMDL_SUB);
  6254. #else
  6255. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  6256. #endif
  6257. #ifdef CONFIG_SUPPORT_PVR
  6258. AL_DB_EDBType_t DBType_Current = AL_DBTYPE_DVB_T;
  6259. AL_RecHandle_t CurrentProgHandle;
  6260. UINT32 CurrentTime;
  6261. AL_Setting_Reload(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL);
  6262. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  6263. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  6264. if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_C)
  6265. {
  6266. DBType_Current = AL_DBTYPE_DVB_C;
  6267. }
  6268. else if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_T)
  6269. {
  6270. DBType_Current = AL_DBTYPE_DVB_T;
  6271. }
  6272. else if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_S)
  6273. {
  6274. DBType_Current = AL_DBTYPE_DVB_S;
  6275. }
  6276. CurrentProgHandle = APP_DVB_Playback_GetCurrentProgHandle(DBType_Current, AL_RECTYPE_DVBTV | AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA);
  6277. AL_Time_GetCurTimeInSecs(&CurrentTime);
  6278. if (CurrentProgHandle == g_stDetails.rem_details.handle
  6279. && CurrentTime <g_stDetails.rem_details.event_end_time_insec
  6280. && CurrentTime > g_stDetails.start_local_time_secs)
  6281. {
  6282. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, (APP_DVB_GLOBAL_EVENT_PVRSCH|PASS_TO_SYSAPP), (UINT32)&g_stDetails);
  6283. }
  6284. #endif
  6285. }
  6286. break;
  6287. case APP_DVB_GLOBAL_EVENT_START_PLAYBACK:
  6288. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  6289. SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  6290. APP_DVB_INTRA_EVENT_START_PLAYBACK, 0);
  6291. break;
  6292. case APP_DVB_GLOBAL_EVENT_STOP_PLAYBACK:
  6293. {
  6294. MID_PlaybackProgState_t eProgState = MID_PLAYBK_PROG_STATE_NORMAL;
  6295. AL_DB_EDBType_t eDBType = AL_DBTYPE_MAX;
  6296. AL_RecHandle_t hCurrPrgHdl = AL_DB_INVALIDHDL;
  6297. if (AL_SUCCESS != APP_Database_GetCurrentDBType(APP_SOURCE_DTV, &eDBType))
  6298. {
  6299. dvb_printf("Get DBType error!!!\n");
  6300. break;
  6301. }
  6302. hCurrPrgHdl = APP_DVB_Playback_GetCurrentProgHandle(eDBType, (AL_RECTYPE_DVBTV |AL_RECTYPE_DVBRADIO|AL_RECTYPE_DVBDATA));
  6303. if (hCurrPrgHdl == AL_DB_INVALIDHDL)
  6304. {
  6305. dvb_printf("Get current program handle error!!!\n");
  6306. break;
  6307. }
  6308. eProgState = APP_DVB_Playback_GetProgStateByHandle(eDBType, hCurrPrgHdl);
  6309. if((APP_DVB_ParentalLock_GetPrtRatinglock())
  6310. &&(eProgState != MID_PLAYBK_PROG_STATE_LOCKED))
  6311. {
  6312. break;
  6313. }
  6314. }
  6315. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  6316. SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  6317. APP_DVB_INTRA_EVENT_STOP_PLAYBACK, dParam);
  6318. break;
  6319. #ifdef CONFIG_SUPPORT_PVR
  6320. case APP_GLOBAL_EVENT_PVRREC_CHANGESOURCE:
  6321. DVBApp_SetPVRSwitchSRC(FALSE);
  6322. DVBApp_SetTVRadioSwap(FALSE);
  6323. if (eServiceType != g_eRecType)
  6324. {
  6325. _DVBApp_Exit_All_Menu();
  6326. if (stoprec_id != AL_SCH_INVALID_ID)
  6327. {
  6328. AL_SCH_UnScheduleEvent(&stoprec_id);
  6329. APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurationID();
  6330. }
  6331. #if 0 //for mantis 199484/209573, don't return to the last program after timer record
  6332. DVBApp_SetTVRadioSwap(TRUE);
  6333. #endif
  6334. if (APP_DVB_Playback_SwapServiceType(eNetType, (AL_DB_ERecordType_t *)&NextServiceType, &u32TotalNum) != AL_SUCCESS)
  6335. {
  6336. dvb_printf("PVRREC Change sevice type fail!!!!!!!!!!\n");
  6337. }
  6338. }
  6339. break;
  6340. case APP_GLOBAL_EVENT_PVR_REMINDER:
  6341. {
  6342. PVR_DEBF("Reminder \n\n");
  6343. AL_Return_t ret;
  6344. AL_DB_EDBType_t DBType_ret = AL_DBTYPE_DVB_T;
  6345. AL_DB_ERecordType_t RecType = AL_RECTYPE_DVBTV;
  6346. al_uint32 CurTimeInSec = 0;
  6347. AL_Time_GetCurTimeInSecs(&CurTimeInSec);
  6348. g_dReminderId = dParam;
  6349. memset(&g_stDetails,0,sizeof(AL_PR_details_t));
  6350. ret = AL_PR_GetById(g_dReminderId, &g_stDetails);
  6351. if (ret != AL_SUCCESS)
  6352. {
  6353. memset(&g_stDetails,0,sizeof(AL_PR_details_t));
  6354. dvb_printf("AL_PR_GetById Error\n");
  6355. break;
  6356. }
  6357. /*Only storage the current REC type for start prompted pop*/
  6358. DVBApp_SetRemType(g_stDetails.rem_type);
  6359. DBType_ret = APP_DVB_Playback_GetCurrentNetType();
  6360. if (DBType_ret == g_stDetails.db_type)
  6361. {
  6362. /* if RF type diff, change RF type on APP_DVB_GLOBAL_EVENT_PVRSCH*/
  6363. //APP_WAKEUP_Recorder_SetTimeout();
  6364. AL_DB_GetRecordType(g_stDetails.rem_details.handle,
  6365. &DBType_ret, &RecType);
  6366. if (RecType == AL_RECTYPE_DVBTV)
  6367. {
  6368. g_eRecType = AL_RECTYPE_DVBTV;
  6369. }
  6370. else if (RecType == AL_RECTYPE_DVBRADIO)
  6371. {
  6372. g_eRecType = AL_RECTYPE_DVBRADIO;
  6373. }
  6374. }
  6375. _DVBApp_CloseAllMenu();
  6376. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_REMIDER);
  6377. }
  6378. break;
  6379. case APP_GLOBAL_EVENT_PVR_REMINDER_CONFIRM:
  6380. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_REMIDER_CONFIRM);
  6381. break;
  6382. case APP_DVB_GLOBAL_EVENT_PVR_EXPIRE:
  6383. {
  6384. //stop recording;
  6385. AL_SCH_sched_id_t Stop_id = AL_SCH_INVALID_ID;
  6386. AL_SCH_sched_id_t Schedule_id = dParam;
  6387. AL_SCH_details_t sch_details;
  6388. AL_SCH_GetScheduleDetails(&dParam, &sch_details);
  6389. PVR_DEBF("hProg ================= 0x%x\n", sch_details.sch_user_para);
  6390. PVR_DEBF("%s %d\n", __FUNCTION__, __LINE__);
  6391. PVR_DEBF("stop record is call\n");
  6392. Stop_id = stoprec_id;
  6393. if (stoprec_id == AL_SCH_INVALID_ID)
  6394. {
  6395. Stop_id = APP_GUIOBJ_DVB_PvrRecDurationTime_GetDurationID();
  6396. }
  6397. if (Schedule_id != Stop_id)
  6398. {
  6399. //if expire timer ID no match, ignor it.
  6400. break;
  6401. }
  6402. else
  6403. {
  6404. //if duration is less then 5s, we will consider this stop timer is wrong
  6405. INT32 g_RecTime;
  6406. MID_RecorderGetStreamTime(&g_RecTime);
  6407. if (g_RecTime < 5)
  6408. {
  6409. break;
  6410. }
  6411. }
  6412. if (u8MidRecState != MID_REC_STATUS_STOP)
  6413. {
  6414. PVR_DEBF("==========timer stop recorder!====\n");
  6415. DVBApp_StopRecord();
  6416. }
  6417. #if 0 //for mantis 199484, don't return to the last program after timer record
  6418. AL_Return_t ret;
  6419. AL_PR_details_t details;
  6420. AL_DB_EDBType_t DBType = APP_DVB_Playback_GetCurrentNetType();
  6421. AL_SCH_sched_id_t ref_id = AL_PR_MAX_NO_REMINDERS;
  6422. AL_SCH_sched_id_t ret_id_first = AL_PR_MAX_NO_REMINDERS;
  6423. ret = AL_PR_Get(DBType, AL_PR_REC_FIRST, AL_PR_EVT_REM | AL_PR_SRV_REM, ref_id, &ret_id_first);
  6424. if (ret == AL_SUCCESS)
  6425. {
  6426. AL_PR_GetById(ret_id_first, &details);
  6427. /*if the comming minute will start recording, no need to change back to last channel*/
  6428. /*CurTimeInSec sometimes has a delay, so minus 2 sec here*/
  6429. if ((CurTimeInSec > details.start_local_time_secs - 60) &&
  6430. (CurTimeInSec - 2 < details.start_local_time_secs))
  6431. {
  6432. break;
  6433. }
  6434. }
  6435. if (DVBApp_GetTVRadioSwap() == TRUE)
  6436. {
  6437. _DVBApp_CloseAllMenu();
  6438. DVBApp_SetTVRadioSwap(FALSE);
  6439. if (APP_DVB_Playback_SwapServiceType(eNetType, (AL_DB_ERecordType_t *)&NextServiceType, &u32TotalNum) != AL_SUCCESS)
  6440. {
  6441. dvb_printf("PVR EXPIRE Change sevice type fail!!!!!!!!!!\n");
  6442. }
  6443. break;
  6444. }
  6445. if (g_ProgHandleB4Rec != 0)
  6446. {
  6447. _DVBApp_CloseAllMenu();
  6448. AL_DB_EDBType_t DBType_ret = AL_DBTYPE_DVB_T;
  6449. AL_DB_ERecordType_t RecType = AL_RECTYPE_DVBTV;
  6450. AL_DB_GetRecordType(g_ProgHandleB4Rec, &DBType_ret, &RecType);
  6451. #if defined(CONFIG_DVB_SYSTEM) || defined(CONFIG_AUS_DVB_SYSTEM)
  6452. APP_RFType_en eRFType = APP_RF_TYPE_DVB_T;
  6453. AL_DB_EDBType_t DBType_Current =
  6454. APP_DVB_Playback_GetCurrentNetType();
  6455. if (DBType_Current != DBType_ret)
  6456. {
  6457. if (details.db_type == AL_DBTYPE_DVB_T)
  6458. {
  6459. eRFType = APP_RF_TYPE_DVB_T;
  6460. }
  6461. else if (details.db_type == AL_DBTYPE_DVB_C)
  6462. {
  6463. eRFType = APP_RF_TYPE_DVB_C;
  6464. }
  6465. else if (details.db_type == AL_DBTYPE_DVB_S)
  6466. {
  6467. eRFType = APP_RF_TYPE_DVB_S;
  6468. }
  6469. APP_GUIOBJ_Channel_SetRFTypeWithHdl(eRFType, g_ProgHandleB4Rec);
  6470. }
  6471. else
  6472. #endif
  6473. {
  6474. _DVBApp_Zapping(RecType, g_ProgHandleB4Rec, FALSE, 0, TRUE);
  6475. }
  6476. g_ProgHandleB4Rec = 0;
  6477. }
  6478. #endif
  6479. }
  6480. break;
  6481. case APP_DVB_GLOBAL_EVENT_PVRSCH:
  6482. {
  6483. if (DVBApp_GetPVRSwitchSRC() == TRUE)
  6484. {
  6485. //resend the timer PVR start message if source change is not finish
  6486. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, (APP_DVB_GLOBAL_EVENT_PVRSCH|PASS_TO_SYSAPP), dParam);
  6487. return 0;
  6488. }
  6489. AL_PR_details_t details;
  6490. memcpy((UINT8 *)&details, (UINT8 *)dParam, sizeof(AL_PR_details_t));
  6491. AL_DB_EDBType_t DBType_ret = AL_DBTYPE_DVB_T;
  6492. AL_DB_EDBType_t DBType_Current = AL_DBTYPE_DVB_T;
  6493. AL_DB_ERecordType_t RecType = AL_RECTYPE_DVBTV;
  6494. AL_RecHandle_t CurrentProgHandle;
  6495. /* get remider program */
  6496. AL_DB_GetRecordType(details.rem_details.handle, &DBType_ret, &RecType);
  6497. /* get current program handele */
  6498. AL_Setting_Reload(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL);
  6499. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  6500. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  6501. if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_C)
  6502. {
  6503. DBType_Current = AL_DBTYPE_DVB_C;
  6504. }
  6505. else if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_T)
  6506. {
  6507. DBType_Current = AL_DBTYPE_DVB_T;
  6508. }
  6509. else if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_S)
  6510. {
  6511. DBType_Current = AL_DBTYPE_DVB_S;
  6512. }
  6513. CurrentProgHandle = APP_DVB_Playback_GetCurrentProgHandle(DBType_Current, AL_RECTYPE_DVBTV | AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA);
  6514. g_ProgHandleB4Rec = 0;
  6515. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  6516. {
  6517. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY);
  6518. }
  6519. /* zap prog */
  6520. if (details.rem_details.handle != CurrentProgHandle)
  6521. {
  6522. PVR_DEBF("handle ==== 0x%x\n", details.rem_details.handle);
  6523. PVR_DEBF(" CurrentProgHandle ==== 0x%x\n", CurrentProgHandle);
  6524. g_ProgHandleB4Rec = CurrentProgHandle;
  6525. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  6526. {
  6527. #ifdef SUPPORT_PVR_REMINDER_CONFIRM_SPEC
  6528. DVBApp_ResetPopup_Channel(); //close all menu before timer rec
  6529. _DVBApp_CloseAllMenu();
  6530. g_ProgHandleB4Rec = 0;
  6531. if (details.rem_type == AL_PR_SRV_REM)
  6532. {
  6533. if (u8MIDRecMode == MID_REC_MODE_MANUAL)
  6534. {
  6535. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_REC_FOR_REMINDER);
  6536. }
  6537. else
  6538. {
  6539. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_TSHIFT_FOR_REMINDER);
  6540. }
  6541. break;
  6542. }
  6543. else
  6544. {
  6545. if (u8MIDRecMode == MID_REC_MODE_MANUAL)
  6546. {
  6547. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_REC_FOR_TIMER_REC);
  6548. }
  6549. else
  6550. {
  6551. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_TSHIFT_FOR_TIMER_REC);
  6552. }
  6553. break;
  6554. }
  6555. #endif
  6556. if (u8MIDRecMode == MID_REC_MODE_MANUAL)
  6557. DVBApp_StopRecord();
  6558. else
  6559. DVBApp_StopTimeshift(TRUE);
  6560. }
  6561. _DVBApp_CloseAllMenu();
  6562. #if defined(CONFIG_DVB_SYSTEM) || defined(CONFIG_AUS_DVB_SYSTEM)
  6563. APP_RFType_en eRFType = APP_RF_TYPE_DVB_T;
  6564. if (DBType_Current != details.db_type)
  6565. {
  6566. if (details.db_type == AL_DBTYPE_DVB_T)
  6567. {
  6568. eRFType = APP_RF_TYPE_DVB_T;
  6569. }
  6570. else if (details.db_type == AL_DBTYPE_DVB_C)
  6571. {
  6572. eRFType = APP_RF_TYPE_DVB_C;
  6573. }
  6574. else if (details.db_type == AL_DBTYPE_DVB_S)
  6575. {
  6576. eRFType = APP_RF_TYPE_DVB_S;
  6577. }
  6578. APP_GUIOBJ_Channel_SetRFTypeWithHdl(eRFType,
  6579. details.rem_details.handle);
  6580. }
  6581. else
  6582. #endif
  6583. {
  6584. _DVBApp_Zapping(RecType, details.rem_details.handle, FALSE, 0, FALSE);
  6585. }
  6586. if (details.rem_type == AL_PR_EVT_REM)
  6587. {
  6588. DVBApp_PVRDEMUX_SetTimerRECFLag(TRUE);
  6589. }
  6590. }
  6591. /* recorder */
  6592. if (details.rem_type == AL_PR_EVT_REM)
  6593. {
  6594. DVBApp_ResetPopup_Channel(); //close all menu before timer rec
  6595. _DVBApp_CloseAllMenu();
  6596. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)//for spec, stop current recording and start timer rec
  6597. {
  6598. if (u8MIDRecMode == MID_REC_MODE_MANUAL)
  6599. DVBApp_StopRecord();
  6600. else
  6601. DVBApp_StopTimeshift(TRUE);
  6602. }
  6603. AL_DB_GetRecordsTotalNum(DBType_ret, RecType, &u32TotalNum);
  6604. if (u32TotalNum == 0)
  6605. {
  6606. break;
  6607. }
  6608. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM))
  6609. {
  6610. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM);
  6611. }
  6612. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  6613. {
  6614. PVR_DEBF("%s is call.LINE : %d\n", __FUNCTION__, __LINE__);
  6615. }
  6616. else
  6617. {
  6618. AL_RecHandle_t hProg = AL_DB_INVALIDHDL;
  6619. if (MID_PlaybackGetCurProgHandle(NULL, &hProg) != MID_SUCCESS)
  6620. {
  6621. PVR_DEBF("%s is call.LINE : %d\n", __FUNCTION__, __LINE__);
  6622. PVR_DEBF("Error, get current program handle failed...\n");
  6623. hProg = AL_DB_INVALIDHDL;
  6624. }
  6625. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  6626. {
  6627. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO);
  6628. }
  6629. APP_GUIOBJ_DVB_PvrRec_SetTimerRecord(TRUE);
  6630. _APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurTime();
  6631. #ifdef DEMUX_CONTROL_TEST
  6632. /*if DVBApp_PVRDEMUX_GetTimerRECFLag == FALSE
  6633. * rec current program,
  6634. * else
  6635. * demux maybe don't start. so please wait...
  6636. * see DVBApp_PVRDEMUX_GetTimerRECFLag == TRUE
  6637. *
  6638. */
  6639. if (DVBApp_PVRDEMUX_GetTimerRECFLag() == FALSE)
  6640. {
  6641. PVR_DEBF("\n\n\n[debug rec current program] %s %d\n\n\n",__FUNCTION__,__LINE__);
  6642. DVBApp_PVRDEMUX_StartTimerREC();
  6643. }
  6644. #else
  6645. DVBApp_PVRDEMUX_StartTimerREC();
  6646. #endif
  6647. //when event change, we must save it as soon as possible .for 0165167. by kai.wang
  6648. AL_PR_Update(0, 0);
  6649. //end
  6650. AL_SCH_details_t sch_detail;
  6651. al_uint32 CurTimeInSec = 0; //test
  6652. AL_Time_GetCurTimeInSecs(&CurTimeInSec);
  6653. memset(&sch_detail, 0, sizeof(AL_SCH_details_t));
  6654. sch_detail.sch_event = AL_SCH_TYPE_SINGLE | AL_SCH_TYPE_PRG_EXPIRE_SCH;
  6655. sch_detail.sch_snooze = 0;
  6656. /*when A event end time is B event start time, need take 5s to stop and start flow.*/
  6657. if (AL_PR_CheckEvtEndTime(details.rem_details.event_end_time_insec) == TRUE)
  6658. {
  6659. sch_detail.sch_time = details.rem_details.event_end_time_insec - 5; //for mantis 0156382
  6660. }
  6661. else
  6662. {
  6663. sch_detail.sch_time = details.rem_details.event_end_time_insec;
  6664. }
  6665. sch_detail.sch_user_para = (al_uint32)hProg;
  6666. printf("event_end_time_insec = %d\n", sch_detail.sch_time);
  6667. printf("current time = %d\n", CurTimeInSec);
  6668. AL_SCH_ScheduleEvent(&sch_detail, &stoprec_id, al_null);
  6669. APP_GUIOBJ_DVB_PvrRec_SetDurationTime(details.rem_details.event_end_time_insec - CurTimeInSec); //zhongbaoxing added for mantis 142788 @20110720
  6670. PVR_DEBF("%s %d\n", __FUNCTION__, __LINE__);
  6671. }
  6672. }
  6673. else
  6674. {
  6675. DVBApp_SetTVRadioSwap(FALSE);
  6676. g_ProgHandleB4Rec = 0;
  6677. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  6678. if(APP_WAKEUP_GetBootFlag() == TRUE)
  6679. {
  6680. APP_WAKEUP_RealPowerUp();
  6681. }
  6682. #endif
  6683. }
  6684. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  6685. ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift),
  6686. sizeof(g_stFeatureData.AutoTimeShift), &(g_stFeatureData.AutoTimeShift));
  6687. if (APP_PVR_TIMESHIFT_AUTO == g_stFeatureData.AutoTimeShift)
  6688. {
  6689. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  6690. }
  6691. }
  6692. break;
  6693. case APP_DVB_GLOBAL_EVENT_REMINDER_EXPIRE:
  6694. #ifdef SUB_CUSTOMER_Tianle
  6695. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC))
  6696. {
  6697. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC, APP_DVB_GLOBAL_EVENT_REMINDER_EXPIRE, 0);
  6698. }
  6699. #else
  6700. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST))
  6701. {
  6702. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST, APP_DVB_GLOBAL_EVENT_REMINDER_EXPIRE, 0);
  6703. }
  6704. #endif
  6705. break;
  6706. case APP_DVB_GLOBAL_EVENT_REMINDER_TIME_CHANGE:
  6707. AL_SCH_Handle_Time_Change(dParam);
  6708. UINT32 u32PopMsgDialogType = POPMSG_PROMPT_NO_PROG;
  6709. APP_GUIOBJ_PopMsg_GetMsgDialogType(&u32PopMsgDialogType);
  6710. if ((POPMSG_CONFIRM_REC_REMIDER_TIME == u32PopMsgDialogType)
  6711. ||(POPMSG_CONFIRM_REC_REMIDER_TIME_CONFIRM == u32PopMsgDialogType))
  6712. {
  6713. al_uint32 CurTimeInSec = 0;
  6714. if (AL_Time_GetCurTimeInSecs(&CurTimeInSec) == AL_SUCCESS)
  6715. {
  6716. if ((DVBApp_GetTimerRECStartTime() > CurTimeInSec+PR_NOTIFY_TIME_IN_SEC)
  6717. ||(CurTimeInSec > DVBApp_GetTimerRECStartTime()+PR_NOTIFY_TIME_IN_SEC))
  6718. {
  6719. //system time changed, cancle the REMINDER cut down pop
  6720. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_SYSTEM_TIME_CHANGED);
  6721. }
  6722. }
  6723. }
  6724. break;
  6725. case APP_GLOGAL_EVENT_PVR_ASKFORSTANDBY:
  6726. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRPOWER))
  6727. {
  6728. DVBApp_ResetPopup_Channel();
  6729. _DVBApp_CloseAllMenu();
  6730. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVRPOWER, 0);
  6731. }
  6732. break;
  6733. case APP_GLOGAL_EVENT_PVR_TIMESHIFT_STANDBY:
  6734. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_TIMESHIFT_STANDBY);
  6735. break;
  6736. case APP_GLOBAL_EVENT_PVR_INSERT_USB_POP:
  6737. _DVBApp_ShowPopup(DVB_APP_POP_MSG_INSERT_USB);
  6738. break;
  6739. case APP_GLOBAL_EVENT_PVR_INVALID_USB_POP:
  6740. _DVBApp_ShowPopup(DVB_APP_POP_MSG_INVALID_USB);
  6741. break;
  6742. case APP_GLOBAL_EVENT_PVR_INSERT_USB_CONFIRM:
  6743. _DVBApp_CloseAllMenu();
  6744. _DVBApp_ShowPopup(DVB_APP_POP_MSG_INSERT_USB_CONFIRM);
  6745. break;
  6746. case APP_GLOBAL_EVENT_PVR_INVALID_USB_CONFIRM:
  6747. _DVBApp_CloseAllMenu();
  6748. _DVBApp_ShowPopup(DVB_APP_POP_MSG_INVALID_USB_CONFIRM);
  6749. break;
  6750. #endif
  6751. case FW_MONITOR_TUNER_LOCKED:
  6752. dvb_printf(" FW_MONITOR_TUNER_LOCKED event received\n");
  6753. #ifdef DEMUX_CONTROL_TEST
  6754. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  6755. DVB_GUIOBJ_PLAYBACK, FW_MONITOR_TUNER_LOCKED, 0);
  6756. #else
  6757. APP_GUIOBJ_DVB_Playback_SetZappingState(FALSE);
  6758. APP_Video_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);//waitting for 3D function completed,then open video.
  6759. #endif
  6760. #ifdef CONFIG_SUPPORT_3D_EN
  6761. UINT32 value = TV_IDS_String_On;
  6762. _APP_GUIOBJ_3DMenu_GetForce2DAnother(&value);
  6763. DISP_3D_ModeChange_Status_t e3DModeChangeSt = DISP_3D_STATUS_RESET;
  6764. UINT32 u32Mode = 0;
  6765. AL_DB_ERecordType_t eRecordType;
  6766. #if 1
  6767. Boolean bShowLogo = DTV_FALSE;
  6768. bShowLogo = APP_GUIOBJ_DVB_Playback_GetShowLogoState();
  6769. #endif
  6770. MID_PlaybackGetCurProgHandle(&eRecordType, al_null);
  6771. if ((eRecordType == AL_RECTYPE_DVBRADIO) || (bShowLogo == TRUE))
  6772. {
  6773. APP_GUIOBJ_3DMenu_SetMode(TV_IDS_String_3DMODE_OFF);
  6774. }
  6775. else
  6776. {
  6777. MID_DISP_DTVGet3DModeChangeSt(&e3DModeChangeSt);
  6778. if (DISP_3D_STATUS_RESET == e3DModeChangeSt)
  6779. {
  6780. APP_GUIOBJ_3DMenu_SetMode(TV_IDS_String_3DMODE_OFF);
  6781. }
  6782. else if (DISP_3D_STATUS_ALWAYS_ON == e3DModeChangeSt)
  6783. {
  6784. APP_GUIOBJ_3DMenu_GetMode(&u32Mode);
  6785. if(value == TV_IDS_String_On)
  6786. {
  6787. //set 3D mode to Off
  6788. APP_GUIOBJ_3DMenu_SetModeNoOutPutStructure(u32Mode);
  6789. _APP_GUIOBJ_3DMenu_SetForce2DAnother(TV_IDS_String_On);
  6790. }
  6791. else
  6792. {
  6793. APP_GUIOBJ_3DMenu_SetMode(u32Mode);
  6794. }
  6795. }
  6796. else if(DISP_3D_STATUS_ONLY_2D3D_ALWAYS_ON == e3DModeChangeSt)
  6797. {
  6798. APP_GUIOBJ_3DMenu_GetMode(&u32Mode);
  6799. if(value == TV_IDS_String_On)
  6800. {
  6801. if(u32Mode == TV_IDS_String_3DMODE_2D23D)
  6802. {
  6803. APP_GUIOBJ_3DMenu_SetModeNoOutPutStructure(u32Mode);
  6804. _APP_GUIOBJ_3DMenu_SetForce2DAnother(TV_IDS_String_On);
  6805. }
  6806. else
  6807. {
  6808. if(bSet3DMode == DTV_TRUE)
  6809. {
  6810. bSet3DMode = DTV_FALSE;
  6811. }
  6812. else
  6813. {
  6814. APP_GUIOBJ_3DMenu_SetMode(TV_IDS_String_3DMODE_OFF);
  6815. }
  6816. }
  6817. //_APP_GUIOBJ_3DMenu_SetForce2DAnother(TV_IDS_String_On);
  6818. }
  6819. else if(u32Mode == TV_IDS_String_3DMODE_2D23D)//Force 2D is off
  6820. {
  6821. APP_GUIOBJ_3DMenu_SetMode(TV_IDS_String_3DMODE_2D23D);
  6822. }
  6823. else //if(u32Mode == TV_IDS_String_3DMODE_2D23D)
  6824. {
  6825. if(bSet3DMode == DTV_TRUE)
  6826. {
  6827. bSet3DMode = DTV_FALSE;
  6828. }
  6829. else
  6830. {
  6831. APP_GUIOBJ_3DMenu_SetMode(TV_IDS_String_3DMODE_OFF);
  6832. }
  6833. }
  6834. }
  6835. }
  6836. #endif
  6837. /* modify by qinhe for mantis 0011315 */
  6838. //APP_Video_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  6839. //MID_DISP_DTVInformDisplayPipe();
  6840. #ifdef CONFIG_SUPPORT_PVR
  6841. /*< modify by kai.wang*/
  6842. //MID_RecorderSetSignalEx(PRIMARY_REC_UNIT, MID_REC_SIGNAL_GOOD);
  6843. if (u8MidRecState == MID_REC_STATUS_PAUSE)
  6844. {
  6845. MID_RecorderPauseResume();
  6846. }
  6847. _DVBApp_Recorder_PauseResume();
  6848. #endif
  6849. //DVBApp_CheckProgramType(TRUE);
  6850. /*close Standby menu*/
  6851. //AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  6852. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO))
  6853. {
  6854. if(APP_GUIOBJ_SleepTimer_GetOpenStandby() == al_true)
  6855. {
  6856. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO);
  6857. if(APP_GUIOBJ_SleepTimer_GetSleepPopConflict() == TRUE)
  6858. {
  6859. APP_GUIOBJ_SleepTimer_SetSleepPopConflict(FALSE);
  6860. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_ATV,
  6861. (APP_GLOBAL_EVENT_SLEEP_TIMER_INFO|PASS_TO_SYSAPP), APP_POWERDOWN_SLEEP);
  6862. }
  6863. }
  6864. }
  6865. #if defined (CONFIG_SUPPORT_TTX ) && defined(CONFIG_SUPPORT_TTX_DISP_FOR_AUS)
  6866. APP_SetTTXTimer(0);
  6867. #endif
  6868. #ifdef CONFIG_SUPPORT_MHEG5
  6869. if (APP_Area_SupportDtg())
  6870. {
  6871. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB | OSD2CTRLMDL_MH5);
  6872. }
  6873. #endif
  6874. break;
  6875. case APP_GLOBAL_EVENT_CREATE_FATNET:
  6876. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVNET))
  6877. {
  6878. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FAVNET, 0);
  6879. }
  6880. break;
  6881. #ifdef CONFIG_SUPPORT_MHEG5
  6882. case APP_DVB_GLOBAL_EVENT_MHEG5_EXIST:
  6883. case APP_DVB_GLOBAL_EVENT_MHEG5_NOT_EXIST:
  6884. DVBApp_CheckProgramType(TRUE);
  6885. break;
  6886. case APP_DVB_GLOBAL_EVENT_MHEG5_BOOT_CAROUSEL_CHANGE:
  6887. {
  6888. al_bool bPsiMonState = FALSE;
  6889. AL_RecHandle_t hCurrProgHdl = MID_PsiMonQueryCurrentProgHdl();
  6890. AL_PSI_Monitor_GetState(&bPsiMonState);
  6891. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  6892. {
  6893. APP_DVB_Mheg5_Stop(MHEG5_STOP_ALL);
  6894. APP_DVB_Mheg5_Start(0);
  6895. }
  6896. if (bPsiMonState)
  6897. {
  6898. AL_PSI_Monitor_Stop(FALSE, FALSE);
  6899. if (hCurrProgHdl != AL_DB_INVALIDHDL)
  6900. {
  6901. AL_PSI_Monitor_Start(hCurrProgHdl, FALSE);
  6902. }
  6903. }
  6904. }
  6905. break;
  6906. #ifdef CONFIG_SUPPORT_MHEG5_ICS
  6907. case APP_DVB_GLOBAL_EVENT_MHEG5_ICS_PFG_SHOW:
  6908. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  6909. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  6910. if(g_stFeatureData.ChildLock == APP_SYSTEMLOCK_ON)
  6911. {
  6912. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  6913. }
  6914. else
  6915. {
  6916. MHEG5_ICS_NotifyGuidanceResponse(TRUE);
  6917. }
  6918. break;
  6919. case APP_DVB_GLOBAL_EVENT_MHEG5_ICS_PFG_HIDE:
  6920. break;
  6921. case APP_DVB_GLOBAL_EVENT_MHEG5_SET_SUBTITLE_MODE:
  6922. if(MHEG5_ICS_IsRunning() == FALSE)
  6923. {
  6924. if(dParam)
  6925. {
  6926. dvb_printf("APP_DVB_GLOBAL_EVENT_MHEG5_SET_SUBTITLE_MODE: show\n");
  6927. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  6928. }
  6929. else
  6930. {
  6931. dvb_printf("APP_DVB_GLOBAL_EVENT_MHEG5_SET_SUBTITLE_MODE: hide\n");
  6932. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB);
  6933. }
  6934. }
  6935. break;
  6936. #endif
  6937. #endif
  6938. case FW_MONITOR_TUNER_UNLOCKED:
  6939. //MID_PlaybackStartAVChannel(eServiceType, hProg);
  6940. #ifdef CONFIG_QSD
  6941. // To echo message with DTV has no signal for chip test using.
  6942. con_dbg_echo('G', 'O');
  6943. con_dbg_echo('O', 'D');
  6944. #endif
  6945. dvb_printf(" FW_MONITOR_TUNER_UNLOCKED event received\n");
  6946. if (APP_GUIOBJ_DVB_Playback_GetZappingState())
  6947. {
  6948. APP_GUIOBJ_DVB_Playback_SetZappingState(FALSE);
  6949. }
  6950. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_ALL);
  6951. /* reset set unmute flag */
  6952. bSetUnMuteFlag = FALSE;
  6953. g_bMidHasUnmute = FALSE;
  6954. g_SetPQFlag = FALSE;
  6955. //g_bNoSteamData = AL_DVB_MONITOR_VALUE_INVAILED;
  6956. #ifdef SUPPORT_DTV_SHOW_BLUESCREEN
  6957. g_bIsBlueScreen = FALSE;
  6958. #endif
  6959. {
  6960. AL_DB_ERecordType_t eRecordType;
  6961. if (MID_SUCCESS == MID_PlaybackGetCurProgHandle(&eRecordType, al_null))
  6962. {
  6963. if (eRecordType == AL_RECTYPE_DVBTV)
  6964. {
  6965. if ((MID_PlaybackIsPauseState() == 0)
  6966. #ifdef CONFIG_SUPPORT_PVR
  6967. && (DRV_SUCCESS != MID_RecorderIsCurRecording())
  6968. && (!MID_TSPLParser_GetThreadState())
  6969. #endif
  6970. )
  6971. {
  6972. //zhongbaoxing added for mantis 0166730 @20120224
  6973. APP_Video_SetMute(TRUE, TRUE, APP_MUTE_MODE_NO_SIGNALE, eSourType);
  6974. //MID_PlaybackClearScreenNow(); //note: this function is no use anymore because of the bandwidth issue.
  6975. }
  6976. #ifdef CONFIG_SUPPORT_3D_EN
  6977. APP_StorageSource_Type_t eStorageSourTypeT = APP_STORAGE_SOURCE_MAX;
  6978. eStorageSourTypeT = APP_Data_UserSetting_SourceTypeMappingToStorage(eSourType);
  6979. UINT32 value = TV_IDS_String_On;
  6980. _APP_GUIOBJ_3DMenu_GetForce2DAnother(&value);
  6981. DISP_3D_ModeChange_Status_t e3DModeChangeSt = DISP_3D_STATUS_RESET;
  6982. UINT32 u32Mode = 0;
  6983. MID_DISP_DTVGet3DModeChangeSt(&e3DModeChangeSt);
  6984. if (DISP_3D_STATUS_RESET == e3DModeChangeSt)
  6985. {
  6986. APP_GUIOBJ_3DMenu_GetMode(&u32Mode);
  6987. if(bSet3DMode == DTV_TRUE)
  6988. {
  6989. bSet3DMode = DTV_FALSE;
  6990. }
  6991. else
  6992. {
  6993. switch(u32Mode)
  6994. {
  6995. case TV_IDS_String_3DMODE_OFF:
  6996. case TV_IDS_String_3DMODE_AUTO:
  6997. case TV_IDS_String_3DMODE_2D23D:
  6998. case TV_IDS_String_3DMODE_SBS3D:
  6999. case TV_IDS_String_3DMODE_SBSH3D:
  7000. case TV_IDS_String_3DMODE_TAB3D:
  7001. case TV_IDS_String_3DMODE_FP3D:
  7002. u32Mode = SPAL_PQ_3DMODE_OFF;
  7003. break;
  7004. default:
  7005. u32Mode = SPAL_PQ_3DMODE_OFF;
  7006. break;
  7007. }
  7008. //APP_GUIOBJ_3DMenu_SetMode(u32Mode);
  7009. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0,
  7010. sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  7011. g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D = u32Mode;
  7012. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  7013. ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D),
  7014. sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D),
  7015. &(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D));
  7016. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  7017. ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D),
  7018. sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D));
  7019. }
  7020. }
  7021. else if (DISP_3D_STATUS_ALWAYS_ON == e3DModeChangeSt)
  7022. {
  7023. APP_GUIOBJ_3DMenu_GetMode(&u32Mode);
  7024. if(value == TV_IDS_String_On)
  7025. {
  7026. //set 3D mode to Off
  7027. // _APP_GUIOBJ_3DMenu_SetForce2DAnother(TV_IDS_String_On);
  7028. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0,
  7029. sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  7030. g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D= SPAL_PQ_3DForce2D_ON;
  7031. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  7032. ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D),
  7033. sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D),
  7034. &(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D));
  7035. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  7036. ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D),
  7037. sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D));
  7038. }
  7039. else
  7040. {
  7041. //dvb_printf("\n\n\n\n@@@@@@DTV No signal Always On\n\n\n");
  7042. switch(u32Mode)
  7043. {
  7044. case TV_IDS_String_3DMODE_OFF:
  7045. u32Mode = SPAL_PQ_3DMODE_OFF;
  7046. break;
  7047. case TV_IDS_String_3DMODE_AUTO:
  7048. u32Mode = SPAL_PQ_3DMODE_ATUO;
  7049. break;
  7050. case TV_IDS_String_3DMODE_2D23D:
  7051. u32Mode = SPAL_PQ_3DMODE_2D3D;
  7052. break;
  7053. case TV_IDS_String_3DMODE_SBS3D:
  7054. u32Mode = SPAL_PQ_3DMODE_SBS3D;
  7055. break;
  7056. case TV_IDS_String_3DMODE_TAB3D:
  7057. u32Mode = SPAL_PQ_3DMODE_TAB3D;
  7058. break;
  7059. case TV_IDS_String_3DMODE_FP3D:
  7060. u32Mode = SPAL_PQ_3DMODE_FP3D;
  7061. break;
  7062. default:
  7063. u32Mode = SPAL_PQ_3DMODE_ATUO;
  7064. break;
  7065. }
  7066. //APP_GUIOBJ_3DMenu_SetMode(u32Mode);
  7067. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0,
  7068. sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  7069. g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D = u32Mode;
  7070. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  7071. ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D),
  7072. sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D),
  7073. &(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D));
  7074. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  7075. ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D),
  7076. sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D));
  7077. }
  7078. }
  7079. else if(DISP_3D_STATUS_ONLY_2D3D_ALWAYS_ON == e3DModeChangeSt)
  7080. {
  7081. APP_GUIOBJ_3DMenu_GetMode(&u32Mode);
  7082. if(value == TV_IDS_String_On)
  7083. {
  7084. //set 3D mode to Off
  7085. //_APP_GUIOBJ_3DMenu_SetForce2DAnother(TV_IDS_String_On);
  7086. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0,
  7087. sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  7088. g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D= SPAL_PQ_3DForce2D_ON;
  7089. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  7090. ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D),
  7091. sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D),
  7092. &(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D));
  7093. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  7094. ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D),
  7095. sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Force2D));
  7096. }
  7097. else if(u32Mode != TV_IDS_String_3DMODE_2D23D)
  7098. {
  7099. //APP_GUIOBJ_3DMenu_SetMode(TV_IDS_String_3DMODE_OFF);
  7100. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0,
  7101. sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  7102. g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D = SPAL_PQ_3DMODE_OFF;
  7103. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  7104. ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D),
  7105. sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D),
  7106. &(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D));
  7107. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  7108. ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D),
  7109. sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D));
  7110. }
  7111. else
  7112. {
  7113. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0,
  7114. sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  7115. g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D = SPAL_PQ_3DMODE_2D3D;
  7116. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  7117. ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D),
  7118. sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D),
  7119. &(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D));
  7120. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  7121. ITEM_OFFSET(APP_SETTING_Picture_t, stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D),
  7122. sizeof(g_stPictureData.stPictureModeSourceTab[eStorageSourTypeT].st3DMenu.Mode3D));
  7123. }
  7124. }
  7125. #endif
  7126. }
  7127. }
  7128. }
  7129. #ifdef CONFIG_SUPPORT_PVR
  7130. /*< modify by kai.wang*/
  7131. //MID_RecorderSetSignalEx(PRIMARY_REC_UNIT, MID_REC_SIGNAL_BAD);
  7132. if (u8MidRecState == MID_REC_STATUS_START)
  7133. {
  7134. MID_RecorderPauseResume();
  7135. }
  7136. _DVBApp_Recorder_PauseResume();
  7137. #endif
  7138. //if (APP_Area_SupportDtg())
  7139. if(APP_Get_DTVHiddenScanState()!=TRUE)
  7140. {
  7141. AL_DB_EDBType_t eDBType = APP_DVB_Playback_GetCurrentNetType();
  7142. AL_RecHandle_t hCurrProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eDBType, (AL_RECTYPE_DVBTV|AL_RECTYPE_DVBRADIO|AL_RECTYPE_DVBDATA));
  7143. AL_PSI_Monitor_Stop(FALSE, FALSE);
  7144. if (hCurrProgHdl != AL_DB_INVALIDHDL)
  7145. {
  7146. AL_PSI_Monitor_Start(hCurrProgHdl, FALSE);
  7147. }
  7148. }
  7149. if (APP_GetPlaybackPauseState() == TRUE)
  7150. {
  7151. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  7152. {
  7153. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  7154. }
  7155. MID_PlaybackStreamResume(1);
  7156. APP_SetPlaybackPauseState(FALSE);
  7157. #ifdef CONFIG_SUPPORT_SUBTITLE
  7158. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  7159. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  7160. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  7161. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  7162. if (g_stUserInfoData.Subtitle == APP_SWITCH_ON)
  7163. {
  7164. #ifdef CONFIG_DTV_SUPPORT
  7165. AL_Subtitle_Type_t SubtitleType = AL_SUBTITLE_TYPE_MAX;
  7166. if (APP_GUIOBJ_SubTitle_GetType(&SubtitleType) == TRUE)
  7167. {
  7168. AL_Subtitle_SetFreeze(FALSE);
  7169. }
  7170. #endif
  7171. }
  7172. #endif
  7173. }
  7174. #ifdef CONFIG_SUPPORT_TTX
  7175. #ifndef CONFIG_SUPPORT_TTX_DISP_FOR_AUS
  7176. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  7177. {
  7178. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  7179. }
  7180. AL_TTX_Reset();
  7181. #else
  7182. APP_SetTTXTimer(80);//8s
  7183. #endif
  7184. #endif
  7185. if (stDvbInst.bAppState != SYSTEM_RUNNING)
  7186. {
  7187. break;
  7188. }
  7189. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD))
  7190. {
  7191. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD);
  7192. }
  7193. #ifdef CONFIG_SUPPORT_SUBTITLE
  7194. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU))
  7195. {
  7196. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU);
  7197. }
  7198. #endif
  7199. #ifdef CONFIG_SUPPORT_PVR
  7200. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME))
  7201. {
  7202. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME);
  7203. }
  7204. #endif
  7205. if (APP_RF_TYPE_DVB_S == g_stChannelData.TV_Connection)
  7206. {
  7207. DVBApp_CheckProgramType(FALSE);
  7208. }
  7209. else
  7210. {
  7211. DVBApp_CheckProgramType(TRUE);
  7212. }
  7213. #ifdef AC_ON_AUTO_GET_TIME
  7214. if (g_fBackgroundGetTime == TRUE)
  7215. {
  7216. APP_WAKEUP_SetBootFlag(FALSE);
  7217. dvb_printf("\n ----- tuner unlock, back ground get time fail!!!\n");
  7218. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF);
  7219. }
  7220. #endif
  7221. break;
  7222. case FW_EPG_NOWNEXT_UPDATE_EVENT:
  7223. g_bForceProcessEventCbk = FALSE;
  7224. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  7225. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  7226. if(g_stFeatureData.ChildLock)
  7227. {
  7228. #if 0
  7229. //add for 0196870
  7230. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG))
  7231. {
  7232. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  7233. {
  7234. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  7235. }
  7236. }
  7237. #endif
  7238. al_uint8 bSignalState = al_false;
  7239. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  7240. if (bSignalState == AL_DVB_MONITOR_VALUE_TRUE)
  7241. {
  7242. UINT8 rating = 0;
  7243. AL_RecHandle_t hCurrProgHdl = AL_DB_INVALIDHDL;
  7244. al_uint16 usServiceId = 0xffff;
  7245. al_uint16 usOrigNetId = 0xffff;
  7246. al_uint16 usTsId = 0xffff;
  7247. AL_Event_Details_t event_cur;
  7248. memset(&event_cur, 0, sizeof(AL_Event_Details_t));
  7249. MID_PlaybackGetCurProgHandle(al_null, &hCurrProgHdl);
  7250. AL_DB_QueryDetailFieldByName(hCurrProgHdl, (al_uint8 *)"usServiceId", (al_void *)&usServiceId);
  7251. AL_DB_QueryDetailFieldByName(hCurrProgHdl, (al_uint8 *)"usOrigNetId", (al_void *)&usOrigNetId);
  7252. AL_DB_QueryDetailFieldByName(hCurrProgHdl, (al_uint8 *)"usTsId", (al_void *)&usTsId);
  7253. AL_Event_GetCurrNextEventsForCurrRating(eNetType, usOrigNetId, usTsId, usServiceId, &event_cur, NULL);
  7254. rating = event_cur.event_rating;
  7255. APP_DVB_ParentalLock_GetValidParentalRating(&rating);
  7256. if(APP_DVB_ParentalLock_CheckPrtRating(&rating))
  7257. {
  7258. APP_DVB_Playback_SetUnlock(FALSE);
  7259. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  7260. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  7261. #ifndef PLAY_VIDEO_FOR_ALLSRV
  7262. if (eServiceType == AL_RECTYPE_DVBRADIO)
  7263. {
  7264. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  7265. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_STOP_PLAYBACK,
  7266. ( PLAYBACK_STOP_MHEG5 | PLAYBACK_KEEP_FRAMEBUF));
  7267. }
  7268. else
  7269. #endif
  7270. {
  7271. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  7272. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_STOP_PLAYBACK,
  7273. (PLAYBACK_STOP_SUBTITLE|PLAYBACK_STOP_MHEG5));
  7274. }
  7275. /*#ifdef SUPPORT_PVR
  7276. if (MID_REC_STATUS_STOP != u8MidRecState)
  7277. {
  7278. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  7279. {
  7280. #ifdef SUPPORT_SPEC_PVR_RECORD// TEAC allow record while the program locked, however the others did not
  7281. if (DVBAPP_Pvr_GetRECPlayFlag() == TRUE)
  7282. {
  7283. DVBApp_StopTimeshift(FALSE);
  7284. }
  7285. #else
  7286. DVBApp_StopRecord();
  7287. #endif
  7288. }
  7289. else
  7290. {
  7291. #ifdef SUPPORT_SPEC_PVR_RECORD// TEAC allow record while the program locked, however the others did not
  7292. DVBApp_StopTimeshift(FALSE);
  7293. #else
  7294. DVBApp_StopTimeshift(TRUE);
  7295. #endif
  7296. }
  7297. }
  7298. #endif*/
  7299. if (!APP_MenuMgr_Exist_Main_Menu())
  7300. {
  7301. UINT32 u32PopMsgDialogType = POPMSG_PROMPT_NO_PROG;
  7302. APP_GUIOBJ_PopMsg_GetMsgDialogType(&u32PopMsgDialogType);
  7303. if((DVBApp_IsPopupExist(PLAYBACK_POPUP_PWD_LOCKED) == FALSE)
  7304. /*#ifdef SUPPORT_PVR
  7305. && (u32PopMsgDialogType != POPMSG_PROMPT_INITIAL_AUTOTIMESHIFT)
  7306. && (u32PopMsgDialogType != POPMSG_PROMPT_INITIAL_REC)
  7307. && (u32PopMsgDialogType != POPMSG_PROMPT_INITIAL_TIMESHIFT)
  7308. #endif*/
  7309. )
  7310. {
  7311. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  7312. }
  7313. }
  7314. }
  7315. }
  7316. }
  7317. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPGEXTEND))
  7318. {
  7319. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  7320. SYS_APP_DVB, DVB_GUIOBJ_EPGEXTEND,
  7321. FW_EPG_NOWNEXT_UPDATE_EVENT, 0);
  7322. }
  7323. else if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG))
  7324. {
  7325. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  7326. SYS_APP_DVB, DVB_GUIOBJ_EPG,
  7327. FW_EPG_NOWNEXT_UPDATE_EVENT, 0);
  7328. }
  7329. else if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  7330. {
  7331. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  7332. SYS_APP_DVB, DVB_GUIOBJ_PROGINFO,
  7333. FW_EPG_NOWNEXT_UPDATE_EVENT, 0);
  7334. }
  7335. break;
  7336. case FW_MONITOR_STREAM_NO_DATA:
  7337. dvb_printf(" FW_MONITOR_STREAM_NO_DATA event received\n");
  7338. /* reset set unmute flag */
  7339. g_UnsupportVideo = FALSE;
  7340. g_bNoSteamData = TRUE;
  7341. bSetUnMuteFlag = FALSE;
  7342. g_bMidHasUnmute = FALSE;
  7343. g_SetPQFlag = FALSE;
  7344. #ifdef SUPPORT_DTV_SHOW_BLUESCREEN
  7345. g_bIsBlueScreen = FALSE;
  7346. #endif
  7347. /* add by qin.he on 2014/07/22 for mantis 23864 */
  7348. #ifndef CONFIG_DTMB_SYSTEM
  7349. if(APP_Get_DTVHiddenScanState()!=TRUE)
  7350. {
  7351. AL_DB_EDBType_t eDBType = APP_DVB_Playback_GetCurrentNetType();
  7352. AL_RecHandle_t hCurrProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eDBType, (AL_RECTYPE_DVBTV|AL_RECTYPE_DVBRADIO|AL_RECTYPE_DVBDATA));
  7353. AL_PSI_Monitor_Stop(FALSE, FALSE);
  7354. if (hCurrProgHdl != AL_DB_INVALIDHDL)
  7355. {
  7356. AL_PSI_Monitor_Start(hCurrProgHdl, FALSE);
  7357. }
  7358. }
  7359. #endif
  7360. if(DVBApp_IsPopupExist(PLAYBACK_POPUP_PWD_LOCKED) == TRUE)
  7361. {
  7362. break;
  7363. }
  7364. #ifdef CONFIG_SUPPORT_MHEG5
  7365. if ((APP_Area_SupportDtg())
  7366. && (APP_DVB_Mheg5_GetBootCarouselStatus() != MHEG5_BOOT_CAROUSEL_NOT_EXISTED))
  7367. {
  7368. break;
  7369. }
  7370. else
  7371. #endif
  7372. #ifdef CONFIG_CIPLUS_SUPPORT
  7373. if (MID_DTVCI_GetAppMMIStatus())
  7374. {
  7375. break;
  7376. }
  7377. else
  7378. #endif
  7379. {
  7380. #ifdef CONFIG_SUPPORT_PVR
  7381. if (u8MidRecState == MID_REC_STATUS_START)
  7382. {
  7383. MID_RecorderPauseResume();
  7384. }
  7385. _DVBApp_Recorder_PauseResume();
  7386. #endif
  7387. if (APP_GetPlaybackPauseState() == TRUE)
  7388. {
  7389. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  7390. {
  7391. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  7392. }
  7393. MID_PlaybackStreamResume(1);
  7394. APP_SetPlaybackPauseState(FALSE);
  7395. #ifdef CONFIG_SUPPORT_SUBTITLE
  7396. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  7397. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  7398. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  7399. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  7400. if (g_stUserInfoData.Subtitle == APP_SWITCH_ON)
  7401. {
  7402. #ifdef CONFIG_DTV_SUPPORT
  7403. AL_Subtitle_Type_t SubtitleType = AL_SUBTITLE_TYPE_MAX;
  7404. if (APP_GUIOBJ_SubTitle_GetType(&SubtitleType) == TRUE)
  7405. {
  7406. AL_Subtitle_SetFreeze(FALSE);
  7407. }
  7408. #endif
  7409. }
  7410. #endif
  7411. }
  7412. DVBApp_CheckProgramType(TRUE);
  7413. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_ALL);
  7414. }
  7415. break;
  7416. case FW_MONITOR_STREAM_UNSUPPORT_DATA:
  7417. g_UnsupportVideo = TRUE;
  7418. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  7419. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  7420. if (g_stUserInfoData.Mute == FALSE)
  7421. {
  7422. APP_Audio_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  7423. }
  7424. #ifdef CONFIG_SUPPORT_PVR
  7425. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  7426. {
  7427. dvb_printf("===lxl test %s ,%d is called. now PVR is playing ===\n", __FUNCTION__,__LINE__);
  7428. break;
  7429. }
  7430. APP_GUIOBJ_DVB_PvrPlayInfo_SetTunerState(FALSE);
  7431. #endif
  7432. g_bNoSteamData = FALSE;
  7433. #ifdef CONFIG_SUPPORT_PVR
  7434. if (u8MidRecState == MID_REC_STATUS_PAUSE)
  7435. {
  7436. MID_RecorderPauseResume();
  7437. }
  7438. _DVBApp_Recorder_PauseResume();
  7439. #endif
  7440. DVBApp_CheckProgramType(TRUE);
  7441. #ifndef PLAY_VIDEO_FOR_ALLSRV
  7442. if (eServiceType == AL_RECTYPE_DVBRADIO)
  7443. {
  7444. //DVBApp_CheckProgramType(TRUE);
  7445. }
  7446. else
  7447. #endif
  7448. {
  7449. APP_Video_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  7450. }
  7451. if (DVBApp_GetScrambleStatus() == PROG_STATUS_SCRAMBLE_CLEAR)
  7452. {
  7453. #ifdef CONFIG_SUPPORT_MHEG5
  7454. if (APP_Area_SupportDtg())
  7455. {
  7456. printf("\n [set mheg5 flag] FW_MONITOR_STREAM_HAS_DATA@@@@@@@@@@@@@dvb_app.c@@@@@@@@@@@@line=%d\n",__LINE__);
  7457. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_FORCE|OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5|OSD2CTRLMDL_SUB);
  7458. }
  7459. else
  7460. {
  7461. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  7462. }
  7463. #else
  7464. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  7465. #endif
  7466. }
  7467. #ifdef CONFIG_SUPPORT_INDONESIA_EWS
  7468. if(DVBApp_GetReciveEWS())
  7469. {
  7470. DVBApp_SetReciveEWS(FALSE);
  7471. SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, FW_INDONESIA_EWS_UPDATE|PASS_TO_SYSAPP, 0);
  7472. }
  7473. #endif
  7474. break;
  7475. case FW_MONITOR_STREAM_INVALID_DATA:
  7476. g_UnsupportVideo = FALSE;
  7477. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  7478. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  7479. #ifdef CONFIG_SUPPORT_PVR
  7480. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  7481. if (APP_WAKEUP_GetBootFlag() == TRUE)
  7482. {
  7483. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, APP_SOURCE_MAX);
  7484. }
  7485. else
  7486. #endif
  7487. #endif
  7488. {
  7489. if (g_stUserInfoData.Mute == FALSE)
  7490. {
  7491. APP_Audio_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  7492. }
  7493. }
  7494. case FW_MONITOR_STREAM_HAS_DATA:
  7495. g_UnsupportVideo = FALSE;
  7496. dvb_printf(" FW_MONITOR_STREAM_HAS_DATA event received\n");
  7497. #ifdef CONFIG_SUPPORT_PVR
  7498. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  7499. {
  7500. dvb_printf("===lxl test %s ,%d is called. now PVR is playing ===\n", __FUNCTION__,__LINE__);
  7501. break;
  7502. }
  7503. APP_GUIOBJ_DVB_PvrPlayInfo_SetTunerState(FALSE);
  7504. #endif
  7505. g_bNoSteamData = FALSE;
  7506. #ifdef CONFIG_SUPPORT_PVR
  7507. if (u8MidRecState == MID_REC_STATUS_PAUSE)
  7508. {
  7509. MID_RecorderPauseResume();
  7510. }
  7511. _DVBApp_Recorder_PauseResume();
  7512. #endif
  7513. DVBApp_CheckProgramType(TRUE);
  7514. #ifndef PLAY_VIDEO_FOR_ALLSRV
  7515. if (eServiceType == AL_RECTYPE_DVBRADIO)
  7516. {
  7517. //DVBApp_CheckProgramType(TRUE);
  7518. }
  7519. else
  7520. #endif
  7521. {
  7522. APP_Video_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  7523. }
  7524. if (DVBApp_GetScrambleStatus() == PROG_STATUS_SCRAMBLE_CLEAR)
  7525. {
  7526. #ifdef CONFIG_SUPPORT_MHEG5
  7527. if (APP_Area_SupportDtg())
  7528. {
  7529. printf("\n [set mheg5 flag] FW_MONITOR_STREAM_HAS_DATA@@@@@@@@@@@@@dvb_app.c@@@@@@@@@@@@line=%d\n",__LINE__);
  7530. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_FORCE|OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5|OSD2CTRLMDL_SUB);
  7531. }
  7532. else
  7533. {
  7534. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  7535. }
  7536. #else
  7537. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  7538. #endif
  7539. }
  7540. break;
  7541. case FW_MONITOR_PARENTAL_LOCKED:
  7542. dvb_printf("FW_MONITOR_PARENTAL_LOCKED received!!\n");
  7543. #ifdef SUPPORT_DTV_SHOW_BLUESCREEN
  7544. g_bIsBlueScreen = FALSE;
  7545. #endif
  7546. g_bMidHasUnmute = FALSE;
  7547. if (APP_GUIOBJ_DVB_Playback_GetPlayState() == TRUE)
  7548. {
  7549. APP_DVB_ParentalLock_SetPrtRatinglock(TRUE);
  7550. #ifndef PLAY_VIDEO_FOR_ALLSRV
  7551. if (eServiceType == AL_RECTYPE_DVBRADIO )
  7552. {
  7553. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  7554. (APP_DVB_GLOBAL_EVENT_STOP_PLAYBACK|PASS_TO_SYSAPP),
  7555. ( PLAYBACK_STOP_MHEG5 | PLAYBACK_KEEP_FRAMEBUF ));
  7556. }
  7557. else
  7558. #endif
  7559. {
  7560. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  7561. (APP_DVB_GLOBAL_EVENT_STOP_PLAYBACK|PASS_TO_SYSAPP),
  7562. ( PLAYBACK_STOP_SUBTITLE |PLAYBACK_STOP_MHEG5 ));
  7563. }
  7564. #ifdef CONFIG_SUPPORT_PVR
  7565. if (MID_REC_STATUS_STOP != u8MidRecState)
  7566. {
  7567. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  7568. {
  7569. #ifdef SUPPORT_SPEC_PVR_RECORD// TEAC allow record while the program locked, however the others did not
  7570. if (DVBAPP_Pvr_GetRECPlayFlag() == TRUE)
  7571. {
  7572. DVBApp_StopTimeshift(FALSE);
  7573. }
  7574. #else
  7575. DVBApp_StopRecord();
  7576. #endif
  7577. }
  7578. else
  7579. {
  7580. #ifdef SUPPORT_SPEC_PVR_RECORD//TEAC allow record while the program locked, however the others did not
  7581. DVBApp_StopTimeshift(FALSE);
  7582. #else
  7583. DVBApp_StopTimeshift(TRUE);
  7584. #endif
  7585. }
  7586. }
  7587. #ifdef CONFIG_SUPPORT_PVR
  7588. if (u8MidRecState == MID_REC_STATUS_START)
  7589. {
  7590. MID_RecorderPauseResume();
  7591. }
  7592. _DVBApp_Recorder_PauseResume();
  7593. #endif
  7594. #endif
  7595. if (APP_GetPlaybackPauseState() == TRUE)
  7596. {
  7597. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  7598. {
  7599. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  7600. }
  7601. MID_PlaybackStreamResume(1);
  7602. APP_SetPlaybackPauseState(FALSE);
  7603. #ifdef CONFIG_SUPPORT_SUBTITLE
  7604. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  7605. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  7606. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  7607. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  7608. if (g_stUserInfoData.Subtitle == APP_SWITCH_ON)
  7609. {
  7610. #ifdef CONFIG_DTV_SUPPORT
  7611. AL_Subtitle_Type_t SubtitleType = AL_SUBTITLE_TYPE_MAX;
  7612. if (APP_GUIOBJ_SubTitle_GetType(&SubtitleType) == TRUE)
  7613. {
  7614. AL_Subtitle_SetFreeze(FALSE);
  7615. }
  7616. #endif
  7617. }
  7618. #endif
  7619. }
  7620. DVBApp_CheckProgramType(TRUE);
  7621. }
  7622. break;
  7623. case FW_MONITOR_PARENTAL_UNLOCKED:
  7624. dvb_printf("FW_MONITOR_PARENTAL_UNLOCKED is received!!\n");
  7625. g_SetPQFlag = TRUE;
  7626. APP_DVB_ParentalLock_SetPrtRatinglock(FALSE);
  7627. if (APP_GUIOBJ_DVB_Playback_GetPlayState() == FALSE)
  7628. {
  7629. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  7630. SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  7631. APP_DVB_INTRA_EVENT_START_PLAYBACK, 0);
  7632. }
  7633. DVBApp_CheckProgramType(TRUE);
  7634. #ifdef CONFIG_SUPPORT_MHEG5
  7635. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_FORCE|OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5 | OSD2CTRLMDL_SUB);
  7636. #else
  7637. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  7638. #endif
  7639. #ifdef CONFIG_SUPPORT_PVR
  7640. if (u8MidRecState == MID_REC_STATUS_PAUSE)
  7641. {
  7642. MID_RecorderPauseResume();
  7643. }
  7644. _DVBApp_Recorder_PauseResume();
  7645. #endif
  7646. break;
  7647. case FW_MONITOR_SERVICE_ONLY_AUDIO_SCRAMBLE:
  7648. dvb_printf("FW_MONITOR_SERVICE_ONLY_AUDIO_SCRAMBLE is received!!\n");
  7649. g_bScrambleFlag = PROG_STATUS_ONLY_AUDIO_SCRAMBLED;
  7650. g_bNoSteamData = FALSE;
  7651. DVBApp_CheckProgramType(TRUE);
  7652. break;
  7653. case FW_MONITOR_SERVICE_ONLY_VIDEO_SCRAMBLE:
  7654. g_UnsupportVideo = FALSE;
  7655. #ifdef CONFIG_CI_SUPPORT
  7656. if (IsCAMExist()==FALSE)
  7657. {
  7658. printf("\n\n\nFW_MONITOR_SERVICE_ONLY_VIDEO_SCRAMBLE is received!!,No CAM Inserted!\n\n");
  7659. g_bNoSteamData = FALSE;
  7660. {
  7661. #ifdef CONFIG_SUPPORT_TTX
  7662. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  7663. {
  7664. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  7665. }
  7666. #endif
  7667. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_ALL);
  7668. }
  7669. #ifdef CONFIG_SUPPORT_PVR
  7670. if (u8MidRecState == MID_REC_STATUS_START)
  7671. {
  7672. MID_RecorderPauseResume();
  7673. }
  7674. _DVBApp_Recorder_PauseResume();
  7675. #endif
  7676. g_bScrambleFlag = PROG_STATUS_ONLY_VIDEO_SCRAMBLED;
  7677. DVBApp_CheckProgramType(TRUE);
  7678. }
  7679. else
  7680. {
  7681. printf("\n\n\n\nYibin.wang F=%s,L=%d==============================\n\n\n\n",__FUNCTION__,__LINE__);
  7682. printf("\n\n\nFW_MONITOR_SERVICE_ONLY_VIDEO_SCRAMBLE is received!!,CAM Inserted,Waiting 1sec!\n\n");
  7683. g_Audio_Scramble_Counter = AUDIO_SCRAMBLE_COUNT;
  7684. }
  7685. #else //CONFIG_CI_SUPPORT
  7686. {
  7687. printf("\n\n\nFW_MONITOR_SERVICE_ONLY_VIDEO_SCRAMBLE is received!!,No CAM Inserted!\n\n");
  7688. g_bNoSteamData = FALSE;
  7689. {
  7690. #ifdef CONFIG_SUPPORT_TTX
  7691. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  7692. {
  7693. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  7694. }
  7695. #endif
  7696. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_ALL);
  7697. }
  7698. #ifdef CONFIG_SUPPORT_PVR
  7699. if (u8MidRecState == MID_REC_STATUS_START)
  7700. {
  7701. MID_RecorderPauseResume();
  7702. }
  7703. _DVBApp_Recorder_PauseResume();
  7704. #endif
  7705. g_bScrambleFlag = PROG_STATUS_ONLY_VIDEO_SCRAMBLED;
  7706. DVBApp_CheckProgramType(TRUE);
  7707. }
  7708. #endif
  7709. break;
  7710. case FW_MONITOR_SERVICE_VIDEO_AUDIO_SCRAMBLE:
  7711. printf("\n\n\nFW_MONITOR_SERVICE_VIDEO_AUDIO_SCRAMBLE is received!!\n\n");
  7712. g_bNoSteamData = FALSE;
  7713. g_UnsupportVideo = FALSE;
  7714. {
  7715. #ifdef CONFIG_SUPPORT_TTX
  7716. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  7717. {
  7718. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  7719. }
  7720. #endif
  7721. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_ALL);
  7722. }
  7723. #ifdef CONFIG_SUPPORT_PVR
  7724. if (u8MidRecState == MID_REC_STATUS_START)
  7725. {
  7726. MID_RecorderPauseResume();
  7727. }
  7728. _DVBApp_Recorder_PauseResume();
  7729. #endif
  7730. g_bScrambleFlag = PROG_STATUS_AUDIO_VIDEO_SCRAMBLED;
  7731. DVBApp_CheckProgramType(TRUE);
  7732. break;
  7733. case FW_MONITOR_SERVICE_NO_SCRAMBLE:
  7734. printf("\n\n\nFW_MONITOR_SERVICE_NO_SCRAMBLE is received!!\n\n");
  7735. #ifdef CONFIG_CIPLUS_SUPPORT
  7736. if (APP_CIPLUS_IsProfileSource())
  7737. {
  7738. if (g_isMute)
  7739. {
  7740. break;
  7741. }
  7742. }
  7743. #endif
  7744. #ifdef CONFIG_CI_SUPPORT
  7745. if (g_Audio_Scramble_Counter!=0)
  7746. {
  7747. g_VIP_FINISH_Flg = TRUE;
  7748. g_Audio_Scramble_Counter = 0;
  7749. }
  7750. #if 1
  7751. else
  7752. {
  7753. if (g_VIP_FINISH_Flg==TRUE)
  7754. {
  7755. g_VIP_FINISH_Flg = FALSE;
  7756. }
  7757. }
  7758. #endif
  7759. #endif
  7760. g_bNoSteamData = FALSE;
  7761. g_bScrambleFlag = PROG_STATUS_SCRAMBLE_CLEAR;
  7762. DVBApp_CheckProgramType(TRUE);
  7763. #ifdef CONFIG_SUPPORT_PVR
  7764. if (u8MidRecState == MID_REC_STATUS_PAUSE)
  7765. {
  7766. MID_RecorderPauseResume();
  7767. }
  7768. _DVBApp_Recorder_PauseResume();
  7769. #endif
  7770. /*add by xm.zeng on 2013/9/23.
  7771. sometimes the video is freezed, subtitle is updated.*/
  7772. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  7773. {
  7774. #ifdef CONFIG_SUPPORT_MHEG5
  7775. printf("\n [set mheg5 flag] FW_MONITOR_SERVICE_NO_SCRAMBLE@@@@@@@@@@@@@dvb_app.c@@@@@@@@@@@@line=%d\n",__LINE__);
  7776. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_FORCE|OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5|OSD2CTRLMDL_SUB);
  7777. #else
  7778. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  7779. #endif
  7780. }
  7781. break;
  7782. case FW_MONITOR_AUDIO_UPDATE:
  7783. dvb_printf("FW_MONITOR_AUDIO_UPDATE is received!!\n");
  7784. APP_GUIOBJ_DVB_MultiAud_Update(MULTIAUDIO_UPDATE);
  7785. #ifdef CONFIG_SUPPORT_PVR
  7786. if (APP_GUIOBJ_DVB_PvrRec_PidRemap() != PVR_MSG_SUCCESS)
  7787. {
  7788. dvb_printf("\n MultiAud_Update to remap pid fail!!!\n");
  7789. }
  7790. #endif
  7791. DVBApp_CheckProgramType(TRUE);
  7792. break;
  7793. case FW_MONITOR_TELETEXT_UPDATE:
  7794. dvb_printf("FW_MONITOR_TELETEXT_UPDATE is received !!\n\n");
  7795. #ifdef CONFIG_SUPPORT_TTX
  7796. eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  7797. #ifndef PLAY_VIDEO_FOR_ALLSRV
  7798. if(eSourType != APP_SOURCE_DTV || eServiceType == AL_RECTYPE_DVBRADIO)
  7799. {
  7800. break;
  7801. }
  7802. else
  7803. #endif
  7804. {
  7805. /**< get digital TTX language index from EEPROM */
  7806. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  7807. ITEM_OFFSET(APP_SETTING_Feature_t, DigitalTTLang),
  7808. sizeof(g_stFeatureData.DigitalTTLang),&(g_stFeatureData.DigitalTTLang));
  7809. pref_iso639 = APP_Language_GetISO639ByIndx(g_stFeatureData.DigitalTTLang, APP_DATA_LANG_TYPE_TELETEXT);
  7810. if(pref_iso639 == al_null)
  7811. {
  7812. pref_iso639 = APP_Language_GetISO639_2ByIndx(g_stFeatureData.DigitalTTLang, APP_DATA_LANG_TYPE_TELETEXT);
  7813. }
  7814. if((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)))
  7815. {
  7816. break;
  7817. }
  7818. if(AL_TTX_Stop() == AL_SUCCESS)
  7819. {
  7820. AL_TTX_Start(AL_TTX_SOURCE_TYPE_DIGITAL, pref_iso639);
  7821. }
  7822. #ifdef CONFIG_SUPPORT_SUBTITLE
  7823. /**< get current subtitle on/off status from EEPROM */
  7824. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  7825. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  7826. if(g_stUserInfoData.Subtitle == 1)
  7827. {
  7828. MID_PlaybackProgState_t progstate = MID_PLAYBK_PROG_STATE_REPLACE;
  7829. progstate = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL);
  7830. /*add by xm.zeng on 2013/8/22 for mantis id:0011461*/
  7831. if((progstate != MID_PLAYBK_PROG_STATE_NORMAL)
  7832. && (progstate != MID_PLAYBK_PROG_STATE_VIDEO_AVC)
  7833. && (progstate != MID_PLAYBK_PROG_STATE_VIDEO_MPEG4))
  7834. {
  7835. break;
  7836. }
  7837. if(!(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)))
  7838. {
  7839. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE|OSD2CTRLMDL_SUB);
  7840. }
  7841. }
  7842. #endif
  7843. }
  7844. #endif
  7845. break;
  7846. case FW_MONITOR_SUBTITLE_UPDATE:
  7847. dvb_printf(" FW_MONITOR_SUBTITLE_UPDATE is received !!\n\n");
  7848. #ifdef CONFIG_SUPPORT_SUBTITLE
  7849. eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  7850. #ifndef PLAY_VIDEO_FOR_ALLSRV
  7851. if(eSourType != APP_SOURCE_DTV || eServiceType == AL_RECTYPE_DVBRADIO)
  7852. {
  7853. break;
  7854. }
  7855. else
  7856. #endif
  7857. {
  7858. /**< get current subtitle on/off status from EEPROM */
  7859. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  7860. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  7861. if(g_stUserInfoData.Subtitle == 1)
  7862. {
  7863. MID_PlaybackProgState_t progstate = MID_PLAYBK_PROG_STATE_REPLACE;
  7864. progstate = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL);
  7865. /*add by xm.zeng on 2013/8/22 for mantis id:0011461*/
  7866. if((progstate != MID_PLAYBK_PROG_STATE_NORMAL)
  7867. && (progstate != MID_PLAYBK_PROG_STATE_VIDEO_AVC)
  7868. && (progstate != MID_PLAYBK_PROG_STATE_VIDEO_MPEG4))
  7869. {
  7870. break;
  7871. }
  7872. #ifdef CONFIG_SUPPORT_TTX
  7873. if(!(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)))
  7874. #endif
  7875. {
  7876. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE|OSD2CTRLMDL_SUB);
  7877. }
  7878. }
  7879. }
  7880. #endif
  7881. break;
  7882. case APP_DVB_GLOBAL_EVENT_OSD2_UPDATE:
  7883. dvb_printf("APP_DVB_GLOBAL_EVENT_OSD2_UPDATE is received!!\n\n");
  7884. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  7885. if (bSignalState != AL_DVB_MONITOR_VALUE_TRUE)//force to tuner locked
  7886. {
  7887. al_uint8 u8DVBMonState = AL_DVB_MONITOR_VALUE_TRUE;
  7888. AL_DVB_Monitor_SetState(AL_DVB_MONITOR_STATE_SIGNAL, &u8DVBMonState);
  7889. }
  7890. #ifdef CONFIG_SUPPORT_PVR
  7891. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  7892. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  7893. {
  7894. break;
  7895. }
  7896. #endif
  7897. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_FORCE | OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5 | OSD2CTRLMDL_SUB);
  7898. break;
  7899. //zhongbaoxing added for mantis 0164871 @20120105 +++
  7900. #ifdef CONFIG_SUPPORT_MHEG5
  7901. case APP_DVB_GLOBAL_EVENT_CLEAR_POPUP:
  7902. if (TRUE == APP_DVB_Mheg5_GetMheg5DisplayStatus())
  7903. {
  7904. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  7905. if (bSignalState != AL_DVB_MONITOR_VALUE_TRUE)//force to tuner locked
  7906. {
  7907. al_uint8 DVBMonState = AL_DVB_MONITOR_VALUE_TRUE;
  7908. AL_DVB_Monitor_SetState(AL_DVB_MONITOR_STATE_SIGNAL, &DVBMonState);
  7909. }
  7910. }
  7911. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE, UI_EVENT_NULL);
  7912. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE_SERVICE_NOT_RUNNING, UI_EVENT_NULL);
  7913. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE_LOAD_MHEG5, UI_EVENT_NULL);
  7914. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE, UI_EVENT_NULL);
  7915. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  7916. break;
  7917. #endif
  7918. #if defined(CONFIG_CIPLUS_SUPPORT) && defined(CONFIG_SUPPORT_MHEG5)
  7919. case APP_DVB_GLOBAL_EVENT_CI_START_MHEG5:
  7920. {
  7921. dvb_printf("APP_DVB_GLOBAL_EVENT_CI_START_MHEG5\n");
  7922. APP_DVB_Mheg5_SetMheg5DisplayStatus(TRUE);
  7923. }
  7924. break;
  7925. case APP_DVB_GLOBAL_EVENT_CI_STOP_MHEG5:
  7926. {
  7927. dvb_printf("APP_DVB_GLOBAL_EVENT_CI_STOP_MHEG5\n");
  7928. APP_SETTING_UserInfo_t stUserInfoData;
  7929. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  7930. sizeof(APP_SETTING_UserInfo_t), &(stUserInfoData));
  7931. /* Stop MHEG Engine if it's enabled */
  7932. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  7933. {
  7934. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_MH5);
  7935. }
  7936. /* Enable Subtitle if it was open */
  7937. if (stUserInfoData.Subtitle)
  7938. {
  7939. dvb_printf("Turn on subtitle\n");
  7940. DVBApp_DataApplicationSwitch(
  7941. OSD2CTRLMDL_ENABLE|OSD2CTRLMDL_SUB);
  7942. }
  7943. /* Enable Subtitle OSD if is was disable */
  7944. mid_sub_dtv_show(1);
  7945. /* Reset variable */
  7946. APP_DVB_Mheg5_SetMheg5DisplayStatus(FALSE);
  7947. }
  7948. break;
  7949. case APP_DVB_GLOBAL_EVENT_SUPPRESS_MHEG_GRAPHICS:
  7950. {
  7951. dvb_printf("APP_DVB_GLOBAL_EVENT_SUPPRESS_MHEG_GRAPHICS\n");
  7952. DVBApp_ApplyAppMMIDisplay();
  7953. }
  7954. break;
  7955. case APP_DVB_GLOBAL_EVENT_SET_SUBTITLE_MODE:
  7956. {
  7957. dvb_printf("APP_DVB_GLOBAL_EVENT_SET_SUBTITLE_MODE\n");
  7958. DVBApp_ApplyAppMMIDisplay();
  7959. }
  7960. break;
  7961. #endif
  7962. #ifdef CONFIG_SUPPORT_MHEG5
  7963. case FM_DTV_AUDIO_STARTED:
  7964. case FM_DTV_AUDIO_SAMPLE_STOPPED:
  7965. case FM_DTV_AUDIO_STOPPED:
  7966. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  7967. {
  7968. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, 0);
  7969. }
  7970. break;
  7971. #endif
  7972. case FW_MONITOR_SERTYPE_CHANGED:
  7973. MID_PlaybackGetCurProgHandle(al_null, &hCurrProgHandle);
  7974. if (hCurrProgHandle != AL_DB_INVALIDHDL)
  7975. {
  7976. AL_DB_ERecordType_t eSrvType = (AL_DB_ERecordType_t)dParam;
  7977. APP_DVB_Playback_SetCurrServiceType(eNetType, eSrvType);
  7978. APP_DVB_Playback_SetCurrentProgHandle(eNetType,eSrvType,hCurrProgHandle);
  7979. }
  7980. _DVBApp_SendServRefleshMsg();
  7981. SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, FW_MONITOR_UPDATE_SERVICE,0);
  7982. break;
  7983. case FW_MONITOR_REMOVE_SERVICE:
  7984. //_DVBApp_ShowPopup(DVB_APP_POP_MSG_SERVICE_REMOVE);
  7985. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR)
  7986. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR)
  7987. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST)
  7988. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST)
  7989. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG)
  7990. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNRENAME)
  7991. #ifdef CONFIG_SUPPORT_PVR
  7992. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMEREDIT)
  7993. #endif
  7994. )
  7995. {
  7996. if(DVBApp_GetUnstableState() == FALSE)
  7997. {
  7998. DVBApp_SetUnstableState(TRUE);
  7999. }
  8000. dvb_printf("Post Process The Unstable Services\n\n");
  8001. break;
  8002. }
  8003. DVBApp_RemoveUnstableService();
  8004. // here not break
  8005. case FW_MONITOR_ADD_SERVICE:
  8006. case FW_MONITOR_UPDATE_SERLCN:
  8007. //_DVBApp_ShowPopup(DVB_APP_POP_MSG_NEW_SERVICE);
  8008. #ifdef SUPPORT_LCN
  8009. /* force process LCN if added service by PSI Monitor */
  8010. #ifdef SUPPORT_DVBS_LCN
  8011. if (eNetType == AL_DBTYPE_DVB_T || eNetType == AL_DBTYPE_DVB_C|| eNetType == AL_DBTYPE_DVB_S)
  8012. #else
  8013. if (eNetType == AL_DBTYPE_DVB_T || eNetType == AL_DBTYPE_DVB_C)
  8014. #endif
  8015. {
  8016. DBLCNConfInfo_t *pLcnConf = AL_LCN_GetLCNConfChannel();
  8017. LCN_PreJudgeLCN();
  8018. LCN_QueryLCNConflict(pLcnConf);
  8019. if (pLcnConf->ConfCount > 0)
  8020. {
  8021. LCN_AutoAssignConflictLCN();
  8022. }
  8023. LCN_PostJudgeLCN();
  8024. }
  8025. #endif
  8026. APP_DVB_ChannelOrderChecking();
  8027. APP_DVB_DataSavingToDB(eNetType);
  8028. _DVBApp_SendServRefleshMsg();
  8029. break;
  8030. #ifdef SUPPORT_DYNAMIC_MULTIPLEXES
  8031. case FW_MONITOR_OTHERTP_SERVICE_FOUND:
  8032. {
  8033. UINT16 u16Num;
  8034. AL_PSI_Monitor_GetOtherTpServList(NULL,NULL,&u16Num);
  8035. _DVBApp_ShowPopup(DVB_APP_POP_MSG_OTH_TP_NEW_SERVICE);
  8036. }
  8037. break;
  8038. #endif
  8039. case FW_MONITOR_SERVICE_MOVE:
  8040. _DVBApp_ServiceMove();
  8041. break;
  8042. case FW_MONITOR_REPLACE_SERVICE:
  8043. {
  8044. dvb_printf("[%s:%d] FW_MONITOR_REPLACE_SERVICE !!!!!!!!!!!!!\n",__FUNCTION__,__LINE__);
  8045. AL_RecHandle_t hReplaceProg = AL_DB_INVALIDHDL;
  8046. hReplaceProg = (AL_RecHandle_t)dParam;
  8047. _DVBApp_Zapping(eServiceType, hReplaceProg, TRUE, FW_MONITOR_REPLACE_SERVICE, TRUE);
  8048. }
  8049. break;
  8050. case FW_MONITOR_REPLACE_SIMULCASE_SERVICE:
  8051. dvb_printf("[%s:%d] FW_MONITOR_REPLACE_SIMULCASE_SERVICE !!!!!!!!!!!!!\n",__FUNCTION__,__LINE__);
  8052. _DVBApp_SimulcaseDispose(dParam);
  8053. break;
  8054. #ifdef SUPPORT_CHANGE_TS_DYNAMICALLY
  8055. case FW_MONITOR_TS_CHANGED:
  8056. dvb_printf("[%s:%d] FW_MONITOR_TS_CHANGED !!!!!!!!!!!!!!!!\n\n",__FUNCTION__,__LINE__);
  8057. #ifdef CONFIG_SUPPORT_PVR
  8058. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  8059. {
  8060. DVBApp_StopRecord();
  8061. }
  8062. else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode) ||
  8063. (MID_REC_MODE_AUTO == u8MIDRecMode))
  8064. {
  8065. DVBApp_StopTimeshift(TRUE);
  8066. if (APP_PVR_TIMESHIFT_AUTO == u8AutoTimeShift)
  8067. {
  8068. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  8069. }
  8070. }
  8071. #endif
  8072. if(APP_Get_DTVHiddenScanState()!=TRUE)
  8073. {
  8074. if (APP_MenuMgr_Exist_Factory_Menu())
  8075. {
  8076. APP_MenuMgr_Exit_Factory_Menu();
  8077. }
  8078. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  8079. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  8080. #ifdef CONFIG_DVB_SYSTEM
  8081. if((g_stChannelData.Country == AREA_NORWAY) && ((dParam & 0xFFFF) != 0x2242))
  8082. {
  8083. dvb_printf("[%s:%d]no scan for ts change , county = %d, OriNetId = 0x%x \n",__FUNCTION__,__LINE__,g_stChannelData.Country,dParam);
  8084. break;
  8085. }
  8086. #endif
  8087. if(APP_Get_DTVTSChangeNeedScanState(dParam)!=TRUE)
  8088. {
  8089. dvb_printf("[%s:%d]no scan for ts change ,\n",__FUNCTION__,__LINE__);
  8090. break;
  8091. }
  8092. APP_DTV_ScanProcess_TSChange();
  8093. }
  8094. break;
  8095. #endif
  8096. case FW_MONITOR_NEW_TSID:
  8097. //case UI_EVENT_RED:
  8098. /* pop up msg for user to start channel search */
  8099. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  8100. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  8101. #ifdef CONFIG_DVB_SYSTEM
  8102. if (AREA_NORWAY == g_stChannelData.Country)
  8103. {
  8104. _DVBApp_Exit_All_Menu();
  8105. _DVBApp_ShowPopup(DVB_APP_POP_MSG_UPDATE_TSID);
  8106. }
  8107. #endif
  8108. //SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, FW_MONITOR_NEW_TSID, 0);
  8109. break;
  8110. case FW_MONITOR_TIME_UPDATE:
  8111. {
  8112. al_uint32 TimeInSec = 0;
  8113. AL_Time_t time;
  8114. memset(&time, 0, sizeof(time));
  8115. AL_Time_MjdToYmd(AL_Time_GetRawMjd(),&time.Year, &time.Month, &time.Day);
  8116. AL_Time_GetRawTime(&time.Hour, &time.Min, &time.Sec);
  8117. AL_Time_DateToSecs(&time, &TimeInSec);
  8118. tv_SetBaseTimetoSystem(TimeInSec);
  8119. }
  8120. #ifdef CONFIG_SUPPORT_PVR
  8121. #ifdef SUB_CUSTOMER_Tianle
  8122. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC))
  8123. {
  8124. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC,
  8125. APP_GLOBAL_EVENT_REFRESH_DATA, 0);
  8126. }
  8127. #else
  8128. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST))
  8129. {
  8130. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST,
  8131. APP_GLOBAL_EVENT_REFRESH_DATA, 0);
  8132. }
  8133. #endif
  8134. #endif
  8135. break;
  8136. case FW_MONITOR_FIND_NEW_TPLIST:
  8137. {
  8138. /* got the freq list which need tune */
  8139. 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");
  8140. _DVBApp_Exit_All_Menu();
  8141. APP_DTV_ScanSetFreqList(dParam);
  8142. APP_GUIOBJ_ScanProcess_SetCurrentSearchMode(SEARCH_D_FULL_FREQ_LIST_MODE);
  8143. APP_DTV_ScanProcess_Start(SEARCH_D_FULL_FREQ_LIST_MODE);
  8144. }
  8145. break;
  8146. case APP_DVB_GLOBAL_EVENT_NO_SIGNAL:
  8147. #ifdef CONFIG_QSD
  8148. // TV doesn't need to show no signal osd for qsd chip test.
  8149. return 0;
  8150. #endif
  8151. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_ALL);
  8152. if (MID_PlaybackIsPauseState() == 0) // move to here for mantis 0158116
  8153. {
  8154. #ifndef SUPPORT_DTV_SHOW_BLUESCREEN
  8155. //MID_PlaybackClearScreenNow();
  8156. #endif
  8157. }
  8158. #ifdef CONFIG_SUPPORT_PVR
  8159. if (u8MidRecState == MID_REC_STATUS_START)
  8160. {
  8161. MID_RecorderPauseResume();
  8162. }
  8163. _DVBApp_Recorder_PauseResume();
  8164. #endif
  8165. #if 0
  8166. if(APP_Get_DTVHiddenScanState()!=TRUE)
  8167. {
  8168. MID_PsiMonStop(FALSE);
  8169. MID_PsiMonStart();
  8170. }
  8171. #else
  8172. if(APP_Get_DTVHiddenScanState()!=TRUE)
  8173. {
  8174. AL_DB_EDBType_t eDBType = APP_DVB_Playback_GetCurrentNetType();
  8175. AL_RecHandle_t hCurrProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eDBType, (AL_RECTYPE_DVBTV|AL_RECTYPE_DVBRADIO|AL_RECTYPE_DVBDATA));
  8176. AL_PSI_Monitor_Stop(FALSE, FALSE);
  8177. if (hCurrProgHdl != AL_DB_INVALIDHDL)
  8178. {
  8179. AL_PSI_Monitor_Start(hCurrProgHdl, FALSE);
  8180. }
  8181. }
  8182. #endif
  8183. /* if TT Menu exist, first close it */
  8184. #ifdef CONFIG_SUPPORT_TTX
  8185. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  8186. {
  8187. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  8188. }
  8189. #endif
  8190. if (stDvbInst.bAppState != SYSTEM_RUNNING)
  8191. {
  8192. break;
  8193. }
  8194. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  8195. {
  8196. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  8197. }
  8198. #ifdef CONFIG_SUPPORT_SUBTITLE
  8199. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU))
  8200. {
  8201. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU);
  8202. }
  8203. #endif
  8204. if (APP_GetPlaybackPauseState() == TRUE)
  8205. {
  8206. MID_PlaybackStreamResume(1);
  8207. APP_SetPlaybackPauseState(FALSE);
  8208. }
  8209. #ifdef SUPPORT_DTV_SHOW_BLUESCREEN
  8210. if (g_stSetupData.BlueScreen == APP_SWITCH_ON)
  8211. {
  8212. g_bIsBlueScreen = TRUE;
  8213. }
  8214. #endif
  8215. DVBApp_CheckProgramType(TRUE);
  8216. break;
  8217. case APP_GLOBAL_EVENT_SET_UNMUTE:
  8218. {
  8219. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  8220. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  8221. if (eServiceType == AL_RECTYPE_DVBRADIO || eServiceType == AL_RECTYPE_DVBDATA)
  8222. {
  8223. APP_Audio_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  8224. }
  8225. else
  8226. {
  8227. APP_Video_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  8228. }
  8229. break;
  8230. }
  8231. case APP_DVB_GLOBAL_EVENT_SET_UNMUTE:
  8232. dvb_printf(" APP_DVB_GLOBAL_EVENT_SET_UNMUTE event received\n");
  8233. /* dtv, search all, when switch to scan analog, tvfe will send show snow525,
  8234. * but current source is dtv, so FormatChangeCallback() will send this message,
  8235. * judge here, when scan, do nothing, has side effect?
  8236. */
  8237. if (!AL_CS_IsStop())
  8238. {
  8239. break;
  8240. }
  8241. #if 0//shiting.liao mark for 0020236:stop mheg5 ts,first show "no signal",then program stop at last picture
  8242. /* add by qinhe for signal present message received too late */
  8243. {
  8244. MID_PlaybackProgState_t progstate = MID_PLAYBK_PROG_STATE_NORMAL;
  8245. progstate = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL);
  8246. if ((g_bNoSteamData == FALSE) && (progstate != MID_PLAYBK_PROG_STATE_TEMP_SERVICE)
  8247. && (progstate != MID_PLAYBK_PROG_STATE_NOT_RUNNING))
  8248. {
  8249. al_uint8 uDVBMonState = AL_DVB_MONITOR_VALUE_TRUE;
  8250. AL_DVB_Monitor_SetState(AL_DVB_MONITOR_STATE_SIGNAL, &uDVBMonState);
  8251. }
  8252. }
  8253. #endif
  8254. if ((APP_SOURCE_DTV == eMidSourType) || (APP_SOURCE_RADIO == eMidSourType))
  8255. {
  8256. g_bMidHasUnmute = TRUE;
  8257. bSetUnMuteFlag = TRUE;
  8258. DVBApp_CheckProgramType(TRUE);
  8259. if(APP_SOURCE_DTV == eMidSourType)
  8260. {
  8261. #if defined(CONFIG_CIPLUS_SUPPORT) && defined(CONFIG_SUPPORT_MHEG5)
  8262. DVBApp_ApplyAppMMIDisplay();
  8263. #endif
  8264. }
  8265. }
  8266. break;
  8267. case APP_DVB_GLOBAL_EVENT_SERVICE_NOT_AVAILABLE_CLEAR:
  8268. #ifdef CONFIG_SUPPORT_PVR
  8269. if (u8MidRecState == MID_REC_STATUS_PAUSE)
  8270. {
  8271. MID_RecorderPauseResume();
  8272. }
  8273. _DVBApp_Recorder_PauseResume();
  8274. #endif
  8275. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE))
  8276. {
  8277. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE, UI_EVENT_NULL);
  8278. }
  8279. #ifdef CONFIG_SUPPORT_MHEG5
  8280. if (APP_Area_SupportDtg())
  8281. {
  8282. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB | OSD2CTRLMDL_MH5);
  8283. }
  8284. else
  8285. {
  8286. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  8287. }
  8288. #else
  8289. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  8290. #endif
  8291. DVBApp_CheckProgramType(TRUE);
  8292. break;
  8293. case APP_DVB_GLOBAL_EVENT_SERVICE_VIDEO_NOT_SUPPORT:
  8294. case APP_DVB_GLOBAL_EVENT_SERVICE_VIDEO_NOT_SUPPORT_CLEAR:
  8295. case APP_DVB_GLOBAL_EVENT_PARENTAL_LOCK:
  8296. case APP_DVB_GLOBAL_EVENT_PARENTAL_LOCK_CLEAR:
  8297. case APP_DVB_GLOBAL_EVENT_TEMP_SERVICE:
  8298. case APP_DVB_GLOBAL_EVENT_TEMP_SERVICE_CLEAR:
  8299. #ifdef CONFIG_SUPPORT_PVR
  8300. if (u8MidRecState == MID_REC_STATUS_START)
  8301. {
  8302. MID_RecorderPauseResume();
  8303. }
  8304. _DVBApp_Recorder_PauseResume();
  8305. #endif
  8306. if (g_bMidHasUnmute) //zhongbaoxing added for mantis 0150118 @20110905
  8307. {
  8308. DVBApp_CheckProgramType(TRUE);
  8309. }
  8310. break;
  8311. #if 0 //Have been the new approach to replace.
  8312. case APP_DVB_GLOBAL_EVENT_SCRAMBLE:
  8313. g_bScrambleFlag = PROG_STATUS_SCRAMBLED;
  8314. #ifdef CONFIG_SUPPORT_PVR
  8315. if (u8MidRecState == MID_REC_STATUS_START)
  8316. {
  8317. MID_RecorderPauseResume();
  8318. }
  8319. _DVBApp_Recorder_PauseResume();
  8320. #endif
  8321. DVBApp_CheckProgramType(TRUE);
  8322. break;
  8323. case APP_DVB_GLOBAL_EVENT_SCRAMBLE_CLEAR:
  8324. g_bScrambleFlag = PROG_STATUS_SCRAMBLE_UNKNOW;
  8325. #ifdef CONFIG_SUPPORT_PVR
  8326. if (u8MidRecState == MID_REC_STATUS_PAUSE)
  8327. {
  8328. MID_RecorderPauseResume();
  8329. }
  8330. _DVBApp_Recorder_PauseResume();
  8331. #endif
  8332. if (g_bMidHasUnmute)
  8333. {
  8334. DVBApp_CheckProgramType(TRUE);
  8335. }
  8336. break;
  8337. #endif
  8338. case FW_MONITOR_UPDATE_SERVICE:
  8339. #ifdef CONFIG_SUPPORT_PVR
  8340. if (u8MidRecState != MID_REC_STATUS_STOP)
  8341. {
  8342. AL_RecHandle_t hProg = 0;
  8343. AL_DB_EDBType_t DBType = AL_DBTYPE_MAX;
  8344. AL_ServiceDetail_t stServInfo;
  8345. APP_Database_GetCurrentDBType(APP_SOURCE_DTV, &DBType);
  8346. hProg = APP_DVB_Playback_GetCurrentProgHandle(DBType,
  8347. AL_RECTYPE_DVBTV |AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA);
  8348. if (AL_SUCCESS == AL_DB_QueryDetail(hProg, (al_void *)&stServInfo))
  8349. {
  8350. if (DBType == AL_DBTYPE_DVB_T)
  8351. {
  8352. if (stServInfo.stDVBTServ.stProgAttrib.scramble == al_true)
  8353. {
  8354. if (MID_RecorderState() == MID_REC_STATUS_START)
  8355. {
  8356. MID_RecorderPauseResume();
  8357. _DVBApp_Recorder_PauseResume();
  8358. }
  8359. }
  8360. else
  8361. {
  8362. if (MID_RecorderState() == MID_REC_STATUS_PAUSE)
  8363. {
  8364. MID_RecorderPauseResume();
  8365. _DVBApp_Recorder_PauseResume();
  8366. }
  8367. }
  8368. }
  8369. else if (DBType == AL_DBTYPE_DVB_C)
  8370. {
  8371. if (stServInfo.stDVBCServ.stProgAttrib.scramble == al_true)
  8372. {
  8373. if (MID_RecorderState() == MID_REC_STATUS_START)
  8374. {
  8375. MID_RecorderPauseResume();
  8376. _DVBApp_Recorder_PauseResume();
  8377. }
  8378. }
  8379. else
  8380. {
  8381. if (MID_RecorderState() == MID_REC_STATUS_PAUSE)
  8382. {
  8383. MID_RecorderPauseResume();
  8384. _DVBApp_Recorder_PauseResume();
  8385. }
  8386. }
  8387. }
  8388. else if (DBType == AL_DBTYPE_DVB_S)
  8389. {
  8390. if (stServInfo.stDVBSServ.stProgAttrib.scramble == al_true)
  8391. {
  8392. if (MID_RecorderState() == MID_REC_STATUS_START)
  8393. {
  8394. MID_RecorderPauseResume();
  8395. _DVBApp_Recorder_PauseResume();
  8396. }
  8397. }
  8398. else
  8399. {
  8400. if (MID_RecorderState() == MID_REC_STATUS_PAUSE)
  8401. {
  8402. MID_RecorderPauseResume();
  8403. _DVBApp_Recorder_PauseResume();
  8404. }
  8405. }
  8406. }
  8407. }
  8408. }
  8409. #endif
  8410. break;
  8411. #ifdef SUPPORT_CONAX_CAS
  8412. case APP_DVB_GLOBAL_EVENT_CONAX_CA_NO_ACCESS:
  8413. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_ACCESS);
  8414. break;
  8415. case APP_DVB_GLOBAL_EVENT_CONAX_CA_NO_ACCESS_GEOGRAPHICAL_BLOCKOUT:
  8416. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_ACCESS_GEOGRAPHICAL_BLACKOUT);
  8417. break;
  8418. case APP_DVB_GLOBAL_EVENT_CONAX_CA_NO_ACCESS_NETWORKBLOCK:
  8419. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_ACCESS_NETWORK_BLOCK);
  8420. break;
  8421. case APP_DVB_GLOBAL_EVENT_CONAX_CA_ORDER:
  8422. case APP_DVB_GLOBAL_EVENT_CONAX_CA_ACCEPT_VIEW:
  8423. case APP_DVB_GLOBAL_EVENT_CONAX_CA_TOKEN_ACCESS:
  8424. case APP_DVB_GLOBAL_EVENT_CONAX_CA_MATURITY_LOCK:
  8425. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CA_MESSAGE))
  8426. {
  8427. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_ADJUST))
  8428. {
  8429. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_ADJUST);
  8430. }
  8431. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM))
  8432. {
  8433. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM);
  8434. }
  8435. #ifdef CONFIG_CI_SUPPORT
  8436. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ))
  8437. {
  8438. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ);
  8439. }
  8440. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU))
  8441. {
  8442. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU);
  8443. }
  8444. #endif
  8445. _DVBApp_HidePopupDisplay();
  8446. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_CA_PIN_CONFIM, dMessage);
  8447. }
  8448. break;
  8449. case APP_DVB_GLOBAL_EVENT_CONAX_CA_HAVE_MESSAGE:
  8450. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CA_MESSAGE))
  8451. {
  8452. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_ADJUST))
  8453. {
  8454. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_ADJUST);
  8455. }
  8456. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM))
  8457. {
  8458. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM);
  8459. }
  8460. #ifdef CONFIG_CI_SUPPORT
  8461. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ))
  8462. {
  8463. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ);
  8464. }
  8465. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU))
  8466. {
  8467. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU);
  8468. }
  8469. #endif
  8470. DVBApp_HidePopupDisplay();
  8471. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_CA_MESSAGE_POP, dMessage);
  8472. }
  8473. break;
  8474. #endif
  8475. #ifdef SUPPORT_CEC_TV
  8476. case APP_DVB_GLOBAL_EVENT_HDMIPORT_STATUS:
  8477. CECTV_HDMIPortStatus(dParam);
  8478. break;
  8479. #endif
  8480. #if defined(CONFIG_HEADPHONE_DETECT_BY_ISR) || defined(CONFIG_HPDET_BY_SWTIMER)
  8481. case APP_GLOBAL_EVENT_HEADPHONE_PLUG_IN:
  8482. APP_Audio_Set_HPStatus(APP_Audio_Headphone_PlugIn);
  8483. APP_Audio_SetMuteSpeakerWithoutAMP(TRUE);
  8484. APP_Audio_SetMuteAMP(TRUE);
  8485. #ifdef SUPPORT_GPIO_HPDET
  8486. APP_Audio_SetMuteDACSpeak(FALSE);
  8487. APP_Audio_Set_HPMuteGpio(TRUE);
  8488. #else
  8489. APP_Audio_SetMuteDACSpeak(TRUE);
  8490. #endif
  8491. APP_Audio_SetMuteDACHeadohone(FALSE);
  8492. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  8493. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  8494. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  8495. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  8496. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  8497. if ((g_stUserInfoData.Mute == FALSE) && bHasValidServ && g_stFeatureData.SpeakerPreference == APP_HDMILINK_TVSPEAKER)
  8498. {
  8499. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  8500. if (APP_WAKEUP_GetBootFlag() == FALSE)
  8501. #endif
  8502. {
  8503. APP_Audio_SetMuteSpeakerWithoutAMP(FALSE);
  8504. }
  8505. }
  8506. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, 0,
  8507. sizeof(APP_SETTING_Variational_t), &(g_stVariationalData));
  8508. APP_Audio_SetVolume(g_stVariationalData.Volume);
  8509. break;
  8510. case APP_GLOBAL_EVENT_HEADPHONE_PLUG_OUT:
  8511. APP_Audio_Set_HPStatus(APP_Audio_Headphone_PlugOut);
  8512. #ifdef SUPPORT_GPIO_HPDET
  8513. APP_Audio_Set_HPMuteGpio(FALSE);
  8514. #endif
  8515. APP_Audio_SetMuteDACHeadohone(TRUE);
  8516. APP_Audio_SetMuteSpeakerWithoutAMP(TRUE);
  8517. APP_Audio_SetMuteDACSpeak(FALSE);
  8518. APP_Audio_SetMuteAMP(FALSE);
  8519. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  8520. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  8521. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  8522. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  8523. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  8524. if ((g_stUserInfoData.Mute == FALSE) && bHasValidServ && g_stFeatureData.SpeakerPreference == APP_HDMILINK_TVSPEAKER)
  8525. {
  8526. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  8527. if (APP_WAKEUP_GetBootFlag() == FALSE)
  8528. #endif
  8529. {
  8530. APP_Audio_SetMuteSpeakerWithoutAMP(FALSE);
  8531. }
  8532. }
  8533. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, 0,
  8534. sizeof(APP_SETTING_Variational_t), &(g_stVariationalData));
  8535. APP_Audio_SetVolume(g_stVariationalData.Volume);
  8536. break;
  8537. #endif
  8538. #ifdef CONFIG_QSD
  8539. case APP_GLOBAL_EVENT_QSD_MEDIA_PLAY:
  8540. {
  8541. _DVBApp_CloseAllMenu();
  8542. DVBApp_ResetPopup_Channel();
  8543. void MM_MediaQsd_SetTestFlag(BOOLEAN bFlag, UINT32 dParam);
  8544. MM_MediaQsd_SetTestFlag(TRUE, dParam);
  8545. #ifdef CONFIG_MULTIMEDIA1_SUPPORT
  8546. {
  8547. MediaSourceNumber_e MediaType = 0;
  8548. UINT8 u8Port;
  8549. int i32Cnt = MID_PartitionList_GetMountedCount();
  8550. if (i32Cnt > 0)
  8551. {
  8552. u8Port = MID_PartitionList_GetMountPort(0);
  8553. extern MediaSourceNumber_e MM_HomePage_GetMediaSourceNumberbyPort(UINT8 u8Port);
  8554. MediaType = MM_HomePage_GetMediaSourceNumberbyPort(u8Port);
  8555. if (MediaType == MEDIA_ONE)
  8556. {
  8557. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_MEDIA);
  8558. }
  8559. else if (MediaType == MEDIA_TWO)
  8560. {
  8561. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_MEDIA1);
  8562. }
  8563. }
  8564. }
  8565. #else
  8566. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_MEDIA);
  8567. #endif
  8568. }
  8569. break;
  8570. case APP_GLOBAL_EVENT_QSD_SET_SOURCE:
  8571. _DVBApp_CloseAllMenu();
  8572. DVBApp_ResetPopup_Channel();
  8573. APP_GUIOBJ_Source_SetAppSource(dParam);
  8574. break;
  8575. #endif
  8576. case UI_EVENT_MENU:
  8577. AutoUpgrade = FALSE;
  8578. if (APP_MenuMgr_Exist_Main_Menu()
  8579. || APP_MenuMgr_Exist_Factory_Menu()
  8580. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG)
  8581. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPGEXTEND)
  8582. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD))
  8583. {
  8584. if (APP_GetPlaybackPauseState() == TRUE)
  8585. {
  8586. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FREEZE, 0);
  8587. }
  8588. _DVBApp_Exit_All_Menu();
  8589. }
  8590. else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR)
  8591. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR)
  8592. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNRENAME)
  8593. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST)
  8594. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST))
  8595. {
  8596. if (MID_PlaybackIsPauseState())
  8597. {
  8598. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FREEZE, 0);
  8599. }
  8600. _DVBApp_Exit_All_Menu();
  8601. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  8602. if (bHasValidServ)
  8603. {
  8604. if ((!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  8605. #ifdef SUPPORT_HOTEL_MODE_INFOBANNER_SHOW_CONTROL
  8606. &&((!g_stFactoryHotelData.HotelModeOnOff)||(g_stFactoryHotelData.ShowInfoBar))
  8607. #endif
  8608. )
  8609. {
  8610. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  8611. {
  8612. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  8613. }
  8614. #ifdef SUPPORT_CEC_TV
  8615. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  8616. {
  8617. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  8618. }
  8619. #endif
  8620. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO, 0);
  8621. }
  8622. }
  8623. }
  8624. else
  8625. {
  8626. DVBApp_ResetPopup_Channel();
  8627. _DVBApp_CloseAllMenu();
  8628. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  8629. {
  8630. #ifdef Subtitle_Freeze
  8631. AL_Subtitle_SetFreeze(FALSE);
  8632. #else
  8633. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  8634. #endif
  8635. #ifdef CONFIG_SUPPORT_MHEG5 //Gahu:D0304
  8636. if( eSourType == APP_SOURCE_DTV )
  8637. {
  8638. #ifdef CONFIG_SUPPORT_SUBTITLE
  8639. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  8640. if( g_stUserInfoData.Subtitle == DVB_SWITCH_OFF )
  8641. #endif
  8642. {
  8643. DVBApp_DataApplicationSwitch( OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5 );
  8644. }
  8645. }
  8646. #endif
  8647. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  8648. }
  8649. if (APP_GetPlaybackPauseState() == TRUE)
  8650. {
  8651. MID_PlaybackStreamResume(1);
  8652. APP_SetPlaybackPauseState(FALSE);
  8653. }
  8654. #ifdef CONFIG_BANDWIDTH_LIMIT_WHEN_MENU_OPEN
  8655. Cmd_VipAdjust(VIP_MENU_IS_OPEN,1);
  8656. #endif
  8657. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,
  8658. APP_GUIOBJ_MAINMENU, FIRST_ENTER_MAINMENU);
  8659. }
  8660. break;
  8661. case UI_EVENT_SOURCE:
  8662. #ifdef CONFIG_SUPPORT_PVR
  8663. if (u8MidRecState != MID_REC_STATUS_STOP)
  8664. {
  8665. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  8666. {
  8667. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_SOURCE_CHANGE);
  8668. break;
  8669. }
  8670. else
  8671. {
  8672. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_SOURCE_CHANGE);
  8673. break;
  8674. }
  8675. }
  8676. else
  8677. #endif
  8678. {
  8679. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE))
  8680. {
  8681. #ifdef CONFIG_SUPPORT_PVR
  8682. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  8683. {
  8684. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_SOURCE);
  8685. }
  8686. else
  8687. #endif
  8688. {
  8689. _DVBApp_Exit_All_Menu();
  8690. }
  8691. }
  8692. else
  8693. {
  8694. DVBApp_ResetPopup_Channel();
  8695. _DVBApp_CloseAllMenu();
  8696. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOURCE, 0);
  8697. }
  8698. }
  8699. break;
  8700. #ifdef CONFIG_MEDIA_ENABLE
  8701. case UI_EVENT_SRC_USB:
  8702. {
  8703. #ifdef CONFIG_SUPPORT_PVR
  8704. if (MID_REC_STATUS_STOP != u8MidRecState)// && (MID_REC_MODE_AUTO != u8MIDRecMode))
  8705. {
  8706. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  8707. {
  8708. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_FOR_USBKEY);
  8709. }
  8710. else
  8711. {
  8712. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_USBKEY);
  8713. }
  8714. break;
  8715. }
  8716. #endif
  8717. _DVBApp_CloseAllMenu();
  8718. #ifdef SUPPORT_CEC_TV
  8719. if (CECTV_GetCECEnable()==CECTV_ENABLE)
  8720. {
  8721. CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_CHGSRC_OUT_HDMI, SRC_OTHERS);
  8722. }
  8723. #endif
  8724. DVBApp_ResetPopup_Channel();
  8725. if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_MEDIA))
  8726. {
  8727. dvb_printf("APP_GUIOBJ_Source_SetAppSource Fail!!!!!!!!!\n");
  8728. }
  8729. }
  8730. break;
  8731. #endif
  8732. case UI_EVENT_TV_DVD:
  8733. #ifdef CONFIG_ATV_SUPPORT
  8734. DVBApp_ResetPopup_Channel();
  8735. _DVBApp_CloseAllMenu();
  8736. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_DVD);
  8737. #else
  8738. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  8739. #endif
  8740. break;
  8741. #ifdef CONFIG_SUPPORT_PVR
  8742. #ifdef SUPPORT_PVR_ONOFF
  8743. case UI_EVENT_PVR_ONOFF:
  8744. if ((MID_REC_STATUS_STOP != u8MidRecState)
  8745. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  8746. {
  8747. break;
  8748. }
  8749. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MAINMENU))
  8750. {
  8751. DVBApp_ResetPopup_Channel();
  8752. _DVBApp_CloseAllMenu();
  8753. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0,
  8754. sizeof(APP_SETTING_Setup_t), &(g_stSetupData));
  8755. if (g_stSetupData.PVROnOff)
  8756. {
  8757. g_stSetupData.PVROnOff = 0;
  8758. AL_PR_DeleteAllSch(eNetType, AL_PR_EVT_REM | AL_PR_SRV_REM);
  8759. g_stFeatureData.AutoTimeShift = APP_PVR_TIMESHIFT_OFF;
  8760. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  8761. ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift),
  8762. sizeof(g_stFeatureData.AutoTimeShift),&(g_stFeatureData.AutoTimeShift));
  8763. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  8764. ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift), sizeof(g_stFeatureData.AutoTimeShift));
  8765. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_DISABLE);
  8766. }
  8767. else
  8768. {
  8769. g_stSetupData.PVROnOff = 1;
  8770. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_ENABLE);
  8771. }
  8772. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP,
  8773. ITEM_OFFSET(APP_SETTING_Setup_t, PVROnOff),
  8774. sizeof(g_stSetupData.PVROnOff), &(g_stSetupData.PVROnOff));
  8775. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP,
  8776. ITEM_OFFSET(APP_SETTING_Setup_t, PVROnOff), sizeof(g_stSetupData.PVROnOff));
  8777. }
  8778. break;
  8779. #endif
  8780. #endif
  8781. #ifdef SUPPORT_EPG_ONOFF
  8782. case UI_EVENT_EPG_ONOFF:
  8783. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MAINMENU))
  8784. {
  8785. DVBApp_ResetPopup_Channel();
  8786. _DVBApp_CloseAllMenu();
  8787. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0,
  8788. sizeof(APP_SETTING_Setup_t), &(g_stSetupData));
  8789. if (g_stSetupData.EPGOnOff)
  8790. {
  8791. g_stSetupData.EPGOnOff = 0;
  8792. _DVBApp_ShowPopup(DVB_APP_POP_MSG_EPG_DISABLE);
  8793. }
  8794. else
  8795. {
  8796. g_stSetupData.EPGOnOff = 1;
  8797. _DVBApp_ShowPopup(DVB_APP_POP_MSG_EPG_ENABLE);
  8798. }
  8799. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP,
  8800. ITEM_OFFSET(APP_SETTING_Setup_t, EPGOnOff),
  8801. sizeof(g_stSetupData.EPGOnOff), &(g_stSetupData.EPGOnOff));
  8802. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP,
  8803. ITEM_OFFSET(APP_SETTING_Setup_t, EPGOnOff), sizeof(g_stSetupData.EPGOnOff));
  8804. }
  8805. break;
  8806. #endif
  8807. #if 1//ll.jing mark for new fm
  8808. case UI_EVENT_FAC_HOTEL:
  8809. if (APP_MenuMgr_Exist_Factory_Menu())
  8810. {
  8811. _DVBApp_Exit_All_Menu();
  8812. }
  8813. else
  8814. {
  8815. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MAINMENU))
  8816. {
  8817. DVBApp_ResetPopup_Channel();
  8818. _DVBApp_CloseAllMenu();
  8819. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_FM_HOTELSETTING, ENTER_HOTELSET_NOTFROM_FACTORYMENU);
  8820. }
  8821. }
  8822. break;
  8823. #endif
  8824. #ifdef CONFIG_SUPPORT_HOTKEY_SOURCE_LOCK
  8825. case UI_EVENT_FAC_SOURCE_LOCK:
  8826. g_fmSourceLock_flag = TRUE;
  8827. SourceLock_Set_Hotkey_Flag(g_fmSourceLock_flag);
  8828. if (APP_MenuMgr_Exist_Factory_Menu())
  8829. {
  8830. _DVBApp_Exit_All_Menu();
  8831. }
  8832. else
  8833. {
  8834. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MAINMENU))
  8835. {
  8836. _DVBApp_CloseAllMenu();
  8837. DVBApp_ResetPopup_Channel();
  8838. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_FM_SOURCELOCK, ENTER_HOTELSET_NOTFROM_FACTORYMENU);
  8839. }
  8840. }
  8841. break;
  8842. #endif
  8843. case UI_EVENT_OPEN_FACTORY:
  8844. if (APP_MenuMgr_Exist_Factory_Menu())
  8845. {
  8846. _DVBApp_Exit_All_Menu();
  8847. }
  8848. else
  8849. {
  8850. DVBApp_ResetPopup_Channel();
  8851. _DVBApp_CloseAllMenu();
  8852. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING, 0);
  8853. }
  8854. break;
  8855. case UI_EVENT_FACTORY:
  8856. if (APP_MenuMgr_Exist_Factory_Menu())
  8857. {
  8858. _DVBApp_Exit_All_Menu();
  8859. }
  8860. else
  8861. {
  8862. #ifdef SUPPORT_HKC_FACTORY_REMOTE
  8863. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE))||((dParam == UI_EVENT_HKC_FACTORYMENU)&&(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)))
  8864. #else
  8865. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MAINMENU))
  8866. #endif
  8867. {
  8868. DVBApp_ResetPopup_Channel();
  8869. _DVBApp_CloseAllMenu();
  8870. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING, 0);
  8871. }
  8872. }
  8873. break;
  8874. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  8875. case UI_EVENT_CHECK_UPGRADE:
  8876. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE))
  8877. {
  8878. dvb_printf("upgrade is running!");
  8879. break;
  8880. }
  8881. else
  8882. {
  8883. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE))
  8884. {
  8885. DVBApp_ResetPopup_Channel();
  8886. _DVBApp_CloseAllMenu();
  8887. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, SOFTWARE_UPGRADE_FROM_PASSWORD);
  8888. }
  8889. }
  8890. break;
  8891. #endif
  8892. case UI_EVENT_POWER:
  8893. #ifdef CONFIG_SUPPORT_PVR
  8894. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  8895. {
  8896. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  8897. {
  8898. if (!APP_GUIOBJ_DVB_PvrRec_GetDurationTime())
  8899. {
  8900. DVBApp_StopRecord();
  8901. }
  8902. }
  8903. else
  8904. {
  8905. DVBApp_StopTimeshift(TRUE);
  8906. }
  8907. }
  8908. #endif
  8909. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF);
  8910. break;
  8911. case UI_EVENT_EPG:
  8912. #ifdef CONFIG_SUPPORT_MHEG5
  8913. #ifdef SUPPORT_SUBTITLE_ON_PG
  8914. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  8915. #endif
  8916. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  8917. {
  8918. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  8919. {
  8920. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  8921. if (sdRet == SP_SUCCESS)
  8922. {
  8923. break;
  8924. }
  8925. }
  8926. }
  8927. #endif
  8928. #ifdef SUPPORT_EPG_ONOFF
  8929. if (!g_stSetupData.EPGOnOff)
  8930. {
  8931. break;
  8932. }
  8933. #endif
  8934. dGuiObj = DVB_GUIOBJ_EPG;
  8935. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG)
  8936. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPGEXTEND)))
  8937. {
  8938. _DVBApp_Exit_All_Menu();
  8939. }
  8940. else
  8941. {
  8942. _DVBApp_Exit_All_Menu();
  8943. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  8944. if (bHasValidServ)
  8945. {
  8946. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, dGuiObj, 0);
  8947. }
  8948. else
  8949. {
  8950. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  8951. }
  8952. }
  8953. break;
  8954. case UI_EVENT_AUDIO:
  8955. #ifdef CONFIG_SUPPORT_PVR
  8956. if (MID_TSPLParser_GetThreadState())
  8957. {
  8958. UINT32 u32PlayState = MID_TSPL_MODE_STOP;
  8959. MID_TSPLParser_GetPlayState(&u32PlayState, NULL);
  8960. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD))
  8961. {
  8962. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD);
  8963. }
  8964. else if (u32PlayState == MID_TSPL_MODE_PLAY)
  8965. {
  8966. _DVBApp_HidePopupDisplay();
  8967. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  8968. {
  8969. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  8970. }
  8971. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  8972. {
  8973. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC);
  8974. }
  8975. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER))
  8976. {
  8977. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER);
  8978. }
  8979. #ifdef CONFIG_SUPPORT_SUBTITLE
  8980. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU))
  8981. {
  8982. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU);
  8983. }
  8984. #endif
  8985. dvb_printf("...Create PVR multi audio menu.\n");
  8986. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD, 0);
  8987. }
  8988. break;
  8989. }
  8990. else
  8991. #endif
  8992. {
  8993. UINT8 u8ProgLockState = FALSE;
  8994. u8ProgLockState = APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL);
  8995. if (u8ProgLockState == MID_PLAYBK_PROG_STATE_LOCKED)
  8996. {
  8997. break;
  8998. }
  8999. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  9000. if (bHasValidServ)
  9001. {
  9002. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD))
  9003. {
  9004. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD);
  9005. _DVBApp_CheckPopupDisplay();
  9006. }
  9007. else
  9008. {
  9009. _DVBApp_CloseAllMenu();
  9010. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD, 0);
  9011. }
  9012. }
  9013. else
  9014. {
  9015. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  9016. }
  9017. }
  9018. break;
  9019. case UI_EVENT_MUTE:
  9020. #ifdef SUPPORT_CEC_TV
  9021. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  9022. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  9023. if (( APP_SWITCH_ON == g_stFeatureData.Enable_HDMILink)
  9024. #ifdef SUPPORT_AMPLIFIER_CONTROL
  9025. &&(APP_SWITCH_ON == g_stFeatureData.AmplifierControl)
  9026. #endif
  9027. &&(APP_HDMILINK_AMPLIFIER == g_stFeatureData.SpeakerPreference) && APP_GUIOBJ_Source_GetAmplifierPort()&& APP_Check_CEC_DEVICE_Status())
  9028. {
  9029. if (CECTV_GetCECEnable() == CECTV_ENABLE && CECTV_GetHDMISystemAudioMode() && g_u32MuteIconHandle >= MUTE_KEY_INTERVAL)
  9030. {
  9031. /*
  9032. if (APP_Get_HDMICEC_AMP_Mute_Status() == FALSE)
  9033. APP_Set_HDMICEC_AMP_Mute_Status(TRUE);
  9034. else
  9035. APP_Set_HDMICEC_AMP_Mute_Status(FALSE);
  9036. APP_GUIOBJ_Mute_MuteKeyHandler();
  9037. */
  9038. g_u32MuteIconHandle = 0;
  9039. break;
  9040. }
  9041. else if(g_u32MuteIconHandle < MUTE_KEY_INTERVAL)//Don't handle mute icon
  9042. {
  9043. break;
  9044. }
  9045. }
  9046. #endif
  9047. APP_Set_HDMICEC_TV_Mute_Status(!APP_Get_HDMICEC_TV_Mute_Status());
  9048. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO))
  9049. {
  9050. APP_GUIOBJ_SleepTimer_Reset();
  9051. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO);
  9052. }
  9053. APP_GUIOBJ_Mute_MuteKeyHandler();
  9054. break;
  9055. #ifdef SUPPORT_CEC_TV
  9056. case DMN_EVENT_CECTV_SET_MUTE_STATUS:
  9057. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  9058. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  9059. if (( APP_SWITCH_ON == g_stFeatureData.Enable_HDMILink)
  9060. #ifdef SUPPORT_AMPLIFIER_CONTROL
  9061. &&(APP_SWITCH_ON == g_stFeatureData.AmplifierControl)
  9062. #endif
  9063. &&(APP_HDMILINK_AMPLIFIER == g_stFeatureData.SpeakerPreference) && APP_GUIOBJ_Source_GetAmplifierPort())
  9064. {
  9065. if (CECTV_GetCECEnable()==CECTV_ENABLE)
  9066. {
  9067. if( (dParam & 0x80) != 0) //reopen TV, the amp vol status must sinc.So if amp is mute state, tv need to set mute state.
  9068. {
  9069. APP_Set_CECTV_Mute_Status(EVENT_CECTV_SET_MUTE_STATUS_MUTE);
  9070. }
  9071. APP_Process_CECTV_Mute_Status(dParam);
  9072. }
  9073. }
  9074. break;
  9075. case DMN_EVENT_CECTV_SET_SYSTEMAUDIO_STATUS:
  9076. APP_Process_CECTV_Control_Status_From_Amp(dParam);
  9077. break;
  9078. case DMN_EVENT_CECTV_SET_DEVICE_OSDNAME:
  9079. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO)
  9080. ||SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE)
  9081. #ifdef SUPPORT_CEC_TV
  9082. ||SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_HDMI_LINK)
  9083. #endif
  9084. ||SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MAINMENU)
  9085. ||SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE_CEC))
  9086. {
  9087. break;
  9088. }
  9089. DVBApp_ResetPopup_Channel();
  9090. _DVBApp_CloseAllMenu();
  9091. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  9092. {
  9093. #ifdef Subtitle_Freeze
  9094. AL_Subtitle_SetFreeze(FALSE);
  9095. #else
  9096. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  9097. #endif
  9098. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  9099. }
  9100. if (APP_GetPlaybackPauseState() == TRUE)
  9101. {
  9102. MID_PlaybackStreamResume(1);
  9103. APP_SetPlaybackPauseState(FALSE);
  9104. }
  9105. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,
  9106. APP_GUIOBJ_CEC_DEVICE_INSERT, 0);
  9107. break;
  9108. #endif
  9109. case UI_EVENT_EXIT:
  9110. #ifdef CONFIG_SUPPORT_PVR
  9111. #ifdef SUPPORT_PVR_ICON_HIDE
  9112. if (u8MidRecState == MID_REC_STATUS_START && !(APP_MenuMgr_Exist_Main_Menu()))
  9113. {
  9114. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  9115. {
  9116. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  9117. {
  9118. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, UI_EVENT_EXIT, 0);
  9119. }
  9120. break;
  9121. }
  9122. else
  9123. {
  9124. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  9125. {
  9126. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, UI_EVENT_EXIT, 0);
  9127. }
  9128. break;
  9129. }
  9130. }
  9131. #endif
  9132. #endif
  9133. case UI_EVENT_RETURN:
  9134. #ifdef CONFIG_SUPPORT_MHEG5
  9135. #ifdef SUPPORT_SUBTITLE_ON_PG
  9136. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  9137. #endif
  9138. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  9139. {
  9140. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5) && dMessage != UI_EVENT_EXIT)
  9141. {
  9142. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  9143. if (sdRet == SP_SUCCESS)
  9144. {
  9145. break;
  9146. }
  9147. }
  9148. }
  9149. #endif
  9150. #ifdef CONFIG_SUPPORT_PVR
  9151. #ifdef SUPPORT_TEAC_PVR_ICON_CTRL
  9152. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)
  9153. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE))
  9154. {
  9155. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,
  9156. DVB_GUIOBJ_PVRREC_INFO, 0);
  9157. break;
  9158. }
  9159. #endif
  9160. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) ||
  9161. (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  9162. {
  9163. if (APP_MenuMgr_Exist_Main_Menu())
  9164. {
  9165. APP_MenuMgr_Exit_Main_Menu();
  9166. }
  9167. break;
  9168. }
  9169. #endif
  9170. AutoUpgrade = FALSE;
  9171. _DVBApp_ExitAll();
  9172. break;
  9173. case UI_EVENT_CH_UP:
  9174. case UI_EVENT_CH_DN:
  9175. g_bIsFav = FALSE;
  9176. #ifdef CONFIG_SUPPORT_PVR
  9177. if (u8MidRecState != MID_REC_STATUS_STOP)
  9178. {
  9179. g_bIsNumKey = FALSE;
  9180. if (dMessage == UI_EVENT_CH_UP)
  9181. {
  9182. g_bIsCHUp = TRUE;
  9183. }
  9184. else
  9185. {
  9186. g_bIsCHUp = FALSE;
  9187. }
  9188. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  9189. {
  9190. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_CHANNEL_CHANGE);
  9191. break;
  9192. }
  9193. else
  9194. {
  9195. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_CHANNEL_CHANGE);
  9196. break;
  9197. }
  9198. }
  9199. else
  9200. #endif
  9201. {
  9202. /* judge is database empty or not */
  9203. al_uint32 TotalNum = 0;
  9204. ServiceGroupType_t group_type;
  9205. APP_EProgListType_t eCurProglist = ProgListType_Normal;
  9206. AL_RecHandle_t hNetHdl = AL_DB_INVALIDHDL;
  9207. al_int8 s8Navigate = 0;
  9208. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_TVINFO, 0,
  9209. sizeof(APP_SETTING_TVInfo_t), &(g_stTVInfoData));
  9210. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, 0,
  9211. sizeof(APP_SETTING_Variational_t), &(g_stVariationalData));
  9212. group_type = g_stTVInfoData.ChnListType;
  9213. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  9214. if (APP_RF_TYPE_DVB_S == g_stChannelData.TV_Connection)
  9215. {
  9216. if (SERVICEGROUP_FREE == group_type)
  9217. {
  9218. eCurProglist = ProgListType_Free;
  9219. }
  9220. else if (SERVICEGROUP_SCRAMB == group_type)
  9221. {
  9222. eCurProglist = ProgListType_Scramb;
  9223. }
  9224. else if (SERVICEGROUP_SATELLITE == group_type)
  9225. {
  9226. eCurProglist = ProgListType_Satellite;
  9227. APP_DVB_Playback_GetCurrentSat(&hNetHdl, NULL);
  9228. }
  9229. }
  9230. #endif
  9231. if (SERVICEGROUP_USER == group_type)
  9232. {
  9233. eCurProglist = ProgListType_User;
  9234. }
  9235. #ifdef CONFIG_CIPLUS_SUPPORT
  9236. if (APP_CIPLUS_IsProfileSource())
  9237. {
  9238. eCurProglist = ProgListType_CIPlus;
  9239. group_type = SERVICEGROUP_CIPLUS;
  9240. }
  9241. #endif
  9242. APP_Database_InitChnList(APP_Database_ConvertGroup2ChnListType(group_type), hNetHdl, eCurProglist);
  9243. TotalNum = APP_Database_GetChnListSize();
  9244. APP_Database_UninitChnList();
  9245. if (TotalNum == 0)
  9246. {
  9247. /* show not available */
  9248. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  9249. break;
  9250. }
  9251. if (dMessage == UI_EVENT_CH_UP)
  9252. {
  9253. s8Navigate = 1;
  9254. }
  9255. else if (dMessage == UI_EVENT_CH_DN)
  9256. {
  9257. s8Navigate = -1;
  9258. }
  9259. #ifdef CONFIG_CIPLUS_SUPPORT
  9260. if (APP_CIPLUS_IsProfileSource())
  9261. {
  9262. hProg = APP_DVB_PLAYBACK_CI_GetNextProgHdl(s8Navigate);
  9263. if (AL_DB_INVALIDHDL == hProg)
  9264. {
  9265. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  9266. {
  9267. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  9268. }
  9269. #ifdef SUPPORT_CEC_TV
  9270. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  9271. {
  9272. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  9273. }
  9274. #endif
  9275. _DVBApp_Zapping(eServiceType, hProg, FALSE, 0, TRUE);
  9276. break;
  9277. }
  9278. }
  9279. else
  9280. #endif
  9281. {
  9282. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, s8Navigate, APP_FAVORITE_NONE);
  9283. }
  9284. if (hProg != AL_DB_INVALIDHDL)
  9285. {
  9286. AL_DB_EDBType_t db_type;
  9287. AL_DB_ERecordType_t record_type;
  9288. AL_DB_GetRecordType(hProg, &db_type, &record_type);
  9289. if (db_type == AL_DBTYPE_DVB_ATV)
  9290. {
  9291. _DVBApp_CloseAllMenu();
  9292. break;
  9293. }
  9294. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  9295. {
  9296. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  9297. }
  9298. #ifdef SUPPORT_CEC_TV
  9299. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  9300. {
  9301. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  9302. }
  9303. #endif
  9304. /*#ifdef CONFIG_SUPPORT_PVR
  9305. if ((MID_REC_MODE_AUTO == u8MIDRecMode) && (u8MidRecState != MID_REC_STATUS_STOP))
  9306. {
  9307. DVBApp_StopTimeshift(FALSE);
  9308. }
  9309. #endif*/
  9310. #ifdef SUPPORT_CHANGE_TS_DYNAMICALLY
  9311. AL_RecHandle_t hCurTPHdl = hCurProg;
  9312. AL_RecHandle_t hNextTPHdl = hProg;
  9313. AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hCurTPHdl);
  9314. AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hNextTPHdl);
  9315. if(APP_Get_DTVHiddenScanState()&&(hCurTPHdl!=hNextTPHdl))
  9316. {
  9317. APP_ScanProcess_Stop();
  9318. APP_SetSrcChgFlag(TRUE);
  9319. while(APP_Get_DTVHiddenScanState()||(!AL_CS_IsStop()))
  9320. {
  9321. GL_TaskSleep(50);
  9322. }
  9323. APP_SetSrcChgFlag(FALSE);
  9324. }
  9325. #endif
  9326. _DVBApp_Zapping(record_type, hProg, FALSE, 0, TRUE);
  9327. /*#ifdef CONFIG_SUPPORT_PVR
  9328. if ((MID_REC_MODE_AUTO == u8MIDRecMode) && (u8MidRecState != MID_REC_STATUS_STOP))
  9329. {
  9330. DVBApp_StopTimeshift(TRUE);
  9331. }
  9332. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  9333. #endif*/
  9334. }
  9335. else
  9336. {
  9337. DVBApp_CheckProgramType(TRUE);
  9338. }
  9339. break;
  9340. }
  9341. case UI_EVENT_RECALL:
  9342. {
  9343. //_DVBApp_CloseAllMenu();
  9344. #ifdef CONFIG_CIPLUS_SUPPORT
  9345. if (APP_CIPLUS_IsProfileSource())
  9346. {
  9347. break;
  9348. }
  9349. #endif
  9350. UINT32 u32TotalChnCount = 0;
  9351. DBServAttrib_t stAttribute;
  9352. eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  9353. if ((eServiceType != AL_RECTYPE_DVBTV) && (eServiceType != AL_RECTYPE_DVBRADIO) && (eServiceType != AL_RECTYPE_DVBDATA))
  9354. {
  9355. eServiceType = AL_RECTYPE_DVBTV;
  9356. }
  9357. AL_DB_GetRecordsTotalNum(eNetType, eServiceType, &u32TotalChnCount);
  9358. if(!u32TotalChnCount)
  9359. {
  9360. AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBDATA, &u32TotalChnCount);
  9361. if(!u32TotalChnCount)
  9362. {
  9363. AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBRADIO, &u32TotalChnCount);
  9364. }
  9365. }
  9366. hProg = APP_DVB_Playback_GetPrevProg(eNetType);
  9367. if (hProg != AL_DB_INVALIDHDL)
  9368. {
  9369. memset(&stAttribute, 0, sizeof(DBServAttrib_t));
  9370. AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute);
  9371. }
  9372. if ((hCurProg!=hProg)&&(hProg != AL_DB_INVALIDHDL)&& u32TotalChnCount && (stAttribute.delete == FALSE))
  9373. {
  9374. #ifdef CONFIG_SUPPORT_PVR
  9375. if (u8MidRecState != MID_REC_STATUS_STOP)
  9376. {
  9377. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  9378. {
  9379. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_FOR_RECALL);
  9380. break;
  9381. }
  9382. else
  9383. {
  9384. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_RECALL);
  9385. break;
  9386. }
  9387. }
  9388. #endif
  9389. AL_DB_GetRecordType(hProg, NULL, &NextServiceType);
  9390. if (eServiceType == NextServiceType)
  9391. {
  9392. #ifdef SUPPORT_CHANGE_TS_DYNAMICALLY
  9393. AL_RecHandle_t hCurTPHdl = hCurProg;
  9394. AL_RecHandle_t hNextTPHdl = hProg;
  9395. AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hCurTPHdl);
  9396. AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hNextTPHdl);
  9397. if(APP_Get_DTVHiddenScanState()&&(hCurTPHdl!=hNextTPHdl))
  9398. {
  9399. APP_ScanProcess_Stop();
  9400. APP_SetSrcChgFlag(TRUE);
  9401. while(APP_Get_DTVHiddenScanState()||(!AL_CS_IsStop()))
  9402. {
  9403. GL_TaskSleep(50);
  9404. }
  9405. APP_SetSrcChgFlag(FALSE);
  9406. }
  9407. #endif
  9408. _DVBApp_Zapping(NextServiceType, hProg, FALSE, 0, TRUE);
  9409. }
  9410. #ifdef CHANGE_SOURCE_BY_RECALL_KEY
  9411. else if (APP_DVB_Playback_SwapServiceType(eNetType, &NextServiceType, &u32TotalNum) == AL_SUCCESS)
  9412. {
  9413. ;
  9414. }
  9415. #endif
  9416. else
  9417. {
  9418. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  9419. }
  9420. }
  9421. else
  9422. {
  9423. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  9424. }
  9425. }
  9426. break;
  9427. case APP_DVB_GLOBAL_EVENT_ZAPPING:
  9428. #ifdef CONFIG_SUPPORT_PVR
  9429. if (u8MidRecState != MID_REC_STATUS_STOP)
  9430. {
  9431. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM))
  9432. {
  9433. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM);
  9434. if (hCurProg == dParam)
  9435. {
  9436. break;
  9437. }
  9438. else if(AL_DB_INVALIDHDL == dParam)
  9439. {
  9440. #ifdef SPECIAL_CHNORDER_FOR_SPAIN
  9441. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_DISPLAY, 0);
  9442. #else
  9443. _DVBApp_ShowPopup(DVB_APP_POP_MSG_INVALID_INPUT);
  9444. #endif
  9445. break;
  9446. }
  9447. else
  9448. {
  9449. g_ProgHandle = dParam;
  9450. g_bIsNumKey = TRUE;
  9451. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  9452. {
  9453. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_CHANNEL_CHANGE);
  9454. break;
  9455. }
  9456. else
  9457. {
  9458. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_CHANNEL_CHANGE);
  9459. break;
  9460. }
  9461. }
  9462. }
  9463. }
  9464. #endif
  9465. #if 0
  9466. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  9467. {
  9468. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  9469. }
  9470. #endif
  9471. _DVBApp_Zapping(eServiceType, dParam, FALSE, 0, TRUE);
  9472. break;
  9473. #ifdef SUPPORT_CHANGE_TS_DYNAMICALLY
  9474. case APP_DVB_GLOBAL_EVENT_TSCHANGE_REMOVE_SERVICE:
  9475. dvb_printf("[%s:%d] APP_DVB_GLOBAL_EVENT_TSCHANGE_REMOVE_SERVICE !!!!!!!!!!\n\n",__FUNCTION__,__LINE__);
  9476. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST)
  9477. //||(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR)
  9478. //|| SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR)
  9479. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST)
  9480. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG)
  9481. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNRENAME)
  9482. #ifdef CONFIG_SUPPORT_PVR
  9483. //|| SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMEREDIT)
  9484. #endif
  9485. )
  9486. {
  9487. if(DVBApp_GetUnstableState() == FALSE)
  9488. {
  9489. DVBApp_SetUnstableState(TRUE);
  9490. }
  9491. dvb_printf(" Post Process The Unstable Services\n\n");
  9492. break;
  9493. }
  9494. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR))
  9495. {
  9496. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR);
  9497. }
  9498. else if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR))
  9499. {
  9500. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR);
  9501. }
  9502. #ifdef CONFIG_SUPPORT_PVR
  9503. else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMEREDIT))
  9504. {
  9505. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMEREDIT);
  9506. }
  9507. #endif
  9508. DVBApp_RemoveUnstableService();
  9509. break;
  9510. #endif
  9511. #ifdef CONFIG_SUPPORT_MHEG5
  9512. case APP_DVB_GLOBAL_EVENT_MHEG_ZAPPING:
  9513. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  9514. {
  9515. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  9516. }
  9517. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_MHEG_ZAPPING, dParam);
  9518. break;
  9519. #endif
  9520. case UI_EVENT_ENTER:
  9521. #ifdef CONFIG_SUPPORT_PVR
  9522. #ifdef SUPPORT_PVR_ICON_HIDE
  9523. if (u8MidRecState == MID_REC_STATUS_START)
  9524. {
  9525. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  9526. {
  9527. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  9528. {
  9529. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, UI_EVENT_ENTER, 0);
  9530. }
  9531. break;
  9532. }
  9533. else
  9534. {
  9535. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  9536. {
  9537. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, UI_EVENT_ENTER, 0);
  9538. }
  9539. break;
  9540. }
  9541. }
  9542. #endif
  9543. #endif
  9544. #ifdef CELLO_REMOTE_KEY
  9545. #ifdef CONFIG_SUPPORT_MHEG5
  9546. #ifdef SUPPORT_SUBTITLE_ON_PG
  9547. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  9548. #endif
  9549. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  9550. {
  9551. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  9552. {
  9553. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  9554. if (sdRet == SP_SUCCESS)
  9555. {
  9556. break;
  9557. }
  9558. }
  9559. }
  9560. #endif
  9561. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  9562. UI_EVENT_CHLIST, 0);
  9563. #else
  9564. {
  9565. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  9566. if (!bHasValidServ)
  9567. {
  9568. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  9569. break;
  9570. }
  9571. }
  9572. #ifdef CONFIG_SUPPORT_MHEG5
  9573. #ifdef SUPPORT_SUBTITLE_ON_PG
  9574. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  9575. #endif
  9576. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  9577. {
  9578. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  9579. {
  9580. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  9581. if (sdRet == SP_SUCCESS)
  9582. {
  9583. break;
  9584. }
  9585. }
  9586. }
  9587. #endif
  9588. #if 0
  9589. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD))
  9590. {
  9591. _DVBApp_CloseAllMenu();
  9592. }
  9593. else
  9594. {
  9595. _DVBApp_CloseAllMenu();
  9596. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST, 0);
  9597. }
  9598. #endif
  9599. #endif
  9600. break;
  9601. #ifdef CELLO_REMOTE_KEY
  9602. case UI_EVENT_INITIAL:
  9603. DVBApp_ResetPopup_Channel();
  9604. _DVBApp_CloseAllMenu();
  9605. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL, 0);
  9606. break;
  9607. case UI_EVENT_DTV:
  9608. DVBApp_ResetPopup_Channel();
  9609. _DVBApp_CloseAllMenu();
  9610. APP_GUIOBJ_Channel_SetRFType(FRONTEND_CONNECT_TYPE_DVB_T, AL_DB_INVALIDHDL);
  9611. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_DTV);
  9612. break;
  9613. case UI_EVENT_SATELLITE:
  9614. DVBApp_ResetPopup_Channel();
  9615. _DVBApp_CloseAllMenu();
  9616. APP_GUIOBJ_Channel_SetRFType(FRONTEND_CONNECT_TYPE_DVB_S, AL_DB_INVALIDHDL);
  9617. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_DTV);
  9618. break;
  9619. case UI_EVENT_CABLE:
  9620. DVBApp_ResetPopup_Channel();
  9621. _DVBApp_CloseAllMenu();
  9622. APP_GUIOBJ_Channel_SetRFType(FRONTEND_CONNECT_TYPE_DVB_C, AL_DB_INVALIDHDL);
  9623. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_DTV);
  9624. break;
  9625. case UI_EVENT_DVD:
  9626. if(eSourType != APP_SOURCE_DVD)
  9627. {
  9628. #ifdef CONFIG_SUPPORT_PVR
  9629. if (MID_REC_STATUS_STOP != u8MidRecState)// && (MID_REC_MODE_AUTO != u8MIDRecMode))
  9630. {
  9631. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  9632. {
  9633. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_FOR_TVRADIOKEY);
  9634. }
  9635. else
  9636. {
  9637. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_TVRADIOKEY);
  9638. }
  9639. break;
  9640. }
  9641. #endif
  9642. DVBApp_ResetPopup_Channel();
  9643. _DVBApp_CloseAllMenu();
  9644. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_DVD);
  9645. }
  9646. break;
  9647. case UI_EVENT_HDMI:
  9648. if(eSourType != APP_SOURCE_HDMI && eSourType != APP_SOURCE_HDMI1 &&
  9649. eSourType != APP_SOURCE_HDMI2)
  9650. {
  9651. #ifdef CONFIG_SUPPORT_PVR
  9652. if (MID_REC_STATUS_STOP != u8MidRecState)// && (MID_REC_MODE_AUTO != u8MIDRecMode))
  9653. {
  9654. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  9655. {
  9656. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_FOR_TVRADIOKEY);
  9657. }
  9658. else
  9659. {
  9660. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_TVRADIOKEY);
  9661. }
  9662. break;
  9663. }
  9664. #endif
  9665. DVBApp_ResetPopup_Channel();
  9666. _DVBApp_CloseAllMenu();
  9667. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_HDMI);
  9668. }
  9669. break;
  9670. #endif
  9671. case UI_EVENT_CHLIST:
  9672. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD))
  9673. {
  9674. _DVBApp_CloseAllMenu();
  9675. }
  9676. else
  9677. {
  9678. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST))
  9679. {
  9680. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST);
  9681. _DVBApp_CheckPopupDisplay();
  9682. }
  9683. else
  9684. {
  9685. _DVBApp_CloseAllMenu();
  9686. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST, 0);
  9687. }
  9688. }
  9689. break;
  9690. case UI_EVENT_FAV:
  9691. #ifdef CONFIG_DVB_SYSTEM
  9692. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  9693. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  9694. if (AREA_NORWAY == g_stChannelData.Country)
  9695. {
  9696. break;
  9697. }
  9698. #endif
  9699. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD))
  9700. {
  9701. _DVBApp_CloseAllMenu();
  9702. }
  9703. else
  9704. {
  9705. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST))
  9706. {
  9707. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST);
  9708. _DVBApp_CheckPopupDisplay();
  9709. }
  9710. else
  9711. {
  9712. _DVBApp_CloseAllMenu();
  9713. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST, 0);
  9714. }
  9715. }
  9716. break;
  9717. case UI_EVENT_FAV_UP:
  9718. case UI_EVENT_FAV_DN:
  9719. {
  9720. UINT32 TotalNum = 0;
  9721. AL_DB_EDBType_t DBType;
  9722. AL_DB_ERecordType_t CurSerType = AL_RECTYPE_DVBTV;
  9723. APP_Favorite_t FavType = APP_FAVORITE_1;
  9724. g_bIsFav = TRUE;
  9725. DBType = APP_DVB_Playback_GetCurrentNetType();
  9726. CurSerType = APP_DVB_Playback_GetCurrServiceType(DBType);
  9727. FavType = APP_GUIOBJ_DVB_Playback_GetFavType();
  9728. if ((FavType <= APP_FAVORITE_NONE) || (FavType >= APP_FAVORITE_MAX))
  9729. {
  9730. FavType = APP_FAVORITE_1;
  9731. APP_GUIOBJ_DVB_Playback_SetFavType(FavType);
  9732. APP_GUIOBJ_DVB_Playback_StoreFavType();
  9733. }
  9734. do
  9735. {
  9736. /* search next fav list type */
  9737. APP_Database_InitChnList(APP_DB_CHNLISTTYPE_DIGITAL, AL_DB_INVALIDHDL, APP_Database_ConvertFavType2List(FavType));
  9738. TotalNum = APP_Database_GetChnListSize();
  9739. APP_Database_UninitChnList();
  9740. if (((FavType == APP_GUIOBJ_DVB_Playback_GetFavType()) && (TotalNum > 0)) ||
  9741. (TotalNum > 1))
  9742. {
  9743. break;
  9744. }
  9745. FavType++;
  9746. if (FavType == APP_FAVORITE_MAX)
  9747. {
  9748. FavType = APP_FAVORITE_1;
  9749. }
  9750. }while(FavType != APP_GUIOBJ_DVB_Playback_GetFavType());
  9751. if (FavType == APP_FAVORITE_MAX)
  9752. {
  9753. APP_GUIOBJ_DVB_Playback_SetFavType(APP_FAVORITE_1);
  9754. APP_GUIOBJ_DVB_Playback_StoreFavType();
  9755. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  9756. break;
  9757. }
  9758. APP_GUIOBJ_DVB_Playback_SetFavType(FavType);
  9759. APP_GUIOBJ_DVB_Playback_StoreFavType();
  9760. if (TotalNum < 2)
  9761. {
  9762. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  9763. break;
  9764. }
  9765. #ifdef CONFIG_SUPPORT_PVR
  9766. if ((u8MidRecState != MID_REC_STATUS_STOP) && (APP_PVR_TIMESHIFT_AUTO != u8AutoTimeShift))
  9767. {
  9768. g_bIsNumKey = FALSE;
  9769. if (MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode)
  9770. {
  9771. if (dMessage == UI_EVENT_FAV_UP)
  9772. {
  9773. g_bIsCHUp = TRUE;
  9774. }
  9775. else
  9776. {
  9777. g_bIsCHUp = FALSE;
  9778. }
  9779. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_CHANNEL_CHANGE);
  9780. break;
  9781. }
  9782. else if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  9783. {
  9784. if (dMessage == UI_EVENT_FAV_UP)
  9785. {
  9786. g_bIsCHUp = TRUE;
  9787. }
  9788. else
  9789. {
  9790. g_bIsCHUp = FALSE;
  9791. }
  9792. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_CHANNEL_CHANGE);
  9793. break;
  9794. }
  9795. }
  9796. else
  9797. #endif
  9798. {
  9799. if (dMessage == UI_EVENT_FAV_UP)
  9800. {
  9801. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(DBType, 1, FavType);
  9802. }
  9803. else
  9804. {
  9805. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(DBType, -1, FavType);
  9806. }
  9807. if (hProg != AL_DB_INVALIDHDL)
  9808. {
  9809. AL_DB_EDBType_t db_type;
  9810. AL_DB_ERecordType_t record_type;
  9811. AL_DB_GetRecordType(hProg, &db_type, &record_type);
  9812. if (db_type == AL_DBTYPE_DVB_ATV)
  9813. {
  9814. _DVBApp_CloseAllMenu();
  9815. break;
  9816. }
  9817. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  9818. {
  9819. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  9820. }
  9821. #ifdef SUPPORT_CEC_TV
  9822. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  9823. {
  9824. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  9825. }
  9826. #endif
  9827. /*#ifdef CONFIG_SUPPORT_PVR
  9828. if ((APP_PVR_TIMESHIFT_AUTO == u8AutoTimeShift) && (u8MidRecState != MID_REC_STATUS_STOP))
  9829. {
  9830. DVBApp_StopTimeshift(TRUE);
  9831. }
  9832. #endif*/
  9833. _DVBApp_Zapping(CurSerType, hProg, FALSE, 0, TRUE);
  9834. /*#ifdef CONFIG_SUPPORT_PVR
  9835. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  9836. #endif*/
  9837. }
  9838. else
  9839. {
  9840. DVBApp_CheckProgramType(TRUE);
  9841. }
  9842. break;
  9843. }
  9844. }
  9845. break;
  9846. case UI_EVENT_DISPLAY:
  9847. {
  9848. #ifdef CONFIG_SUPPORT_MHEG5
  9849. #ifdef SUPPORT_SUBTITLE_ON_PG
  9850. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  9851. #endif
  9852. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  9853. {
  9854. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  9855. {
  9856. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  9857. if (sdRet == SP_SUCCESS)
  9858. {
  9859. break;
  9860. }
  9861. }
  9862. }
  9863. #endif
  9864. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  9865. #ifdef CONFIG_SUPPORT_PVR
  9866. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  9867. {
  9868. dvb_printf(" rec info is exist \n");
  9869. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  9870. }
  9871. else
  9872. #endif
  9873. {
  9874. if (bHasValidServ)
  9875. {
  9876. #ifdef SUPPORT_HOTEL_MODE_INFOBANNER_SHOW_CONTROL
  9877. if((g_stFactoryHotelData.HotelModeOnOff)&&(!g_stFactoryHotelData.ShowInfoBar))
  9878. break;
  9879. #endif
  9880. #ifdef PLAY_VIDEO_FOR_ALLSRV
  9881. AL_RecHandle_t hTempHdl;
  9882. MID_PlaybackGetCurProgHandle(al_null, &hTempHdl);
  9883. DBPIDInfo_t stVideoPid;
  9884. memset(&stVideoPid,0xff,sizeof(DBPIDInfo_t));
  9885. AL_DB_QueryDetailFieldByName(hTempHdl, (al_uint8 *)"stVideoPid", (al_void *)&stVideoPid);
  9886. #endif
  9887. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  9888. {
  9889. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO);
  9890. #ifdef PLAY_VIDEO_FOR_ALLSRV
  9891. if (DVBApp_CheckHasVideo() == FALSE)
  9892. #else
  9893. if (eServiceType == AL_RECTYPE_DVBRADIO)
  9894. #endif
  9895. {
  9896. if (!APP_GUIOBJ_DVB_Playback_GetShowLogoState())
  9897. {
  9898. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  9899. }
  9900. }
  9901. if (APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL)
  9902. == MID_PLAYBK_PROG_STATE_LOCKED)
  9903. {
  9904. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  9905. {
  9906. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  9907. }
  9908. #ifdef SUPPORT_CEC_TV
  9909. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  9910. {
  9911. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  9912. }
  9913. #endif
  9914. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO, 0);
  9915. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  9916. }
  9917. else if (APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL)
  9918. == MID_PLAYBK_PROG_STATE_AUDIO_VIDEO_SCRAMBLED \
  9919. ||APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL)
  9920. == MID_PLAYBK_PROG_STATE_ONLY_VIDEO_SCRAMBLED \
  9921. ||(APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL)
  9922. == MID_PLAYBK_PROG_STATE_ONLY_AUDIO_SCRAMBLED
  9923. #ifdef PLAY_VIDEO_FOR_ALLSRV
  9924. &&((stVideoPid.usDataPID&0x1fff) == 0x1fff)
  9925. #else
  9926. && eServiceType == AL_RECTYPE_DVBRADIO
  9927. #endif
  9928. ))
  9929. {
  9930. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL))
  9931. {
  9932. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  9933. }
  9934. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL))
  9935. {
  9936. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  9937. }
  9938. printf("\n#####Pop Scramble MSG Menu,F=%s,L=%d ######\n",__FUNCTION__,__LINE__);
  9939. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SCRAMBLE);
  9940. }
  9941. else if ((eServiceType == AL_RECTYPE_DVBRADIO)
  9942. &&(!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL))
  9943. #ifdef PLAY_VIDEO_FOR_ALLSRV
  9944. &&((stVideoPid.usDataPID&0x1fff) == 0x1fff)
  9945. #endif
  9946. )
  9947. {
  9948. #ifdef CONFIG_SUPPORT_MHEG5
  9949. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  9950. #endif
  9951. {
  9952. if(g_bScrambleFlag != PROG_STATUS_SCRAMBLE_UNKNOW)
  9953. {
  9954. _DVBApp_ShowPopup(DVB_APP_POP_MSG_RADIO_CHANNEL);
  9955. }
  9956. }
  9957. }
  9958. }
  9959. else
  9960. {
  9961. dvb_printf("[%s %d]\n", __FUNCTION__, __LINE__);
  9962. _DVBApp_CloseAllMenu();
  9963. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  9964. {
  9965. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  9966. }
  9967. #ifdef SUPPORT_CEC_TV
  9968. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  9969. {
  9970. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  9971. }
  9972. #endif
  9973. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO, 0);
  9974. if (APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL)
  9975. == MID_PLAYBK_PROG_STATE_LOCKED)
  9976. {
  9977. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  9978. }
  9979. }
  9980. }
  9981. else
  9982. {
  9983. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  9984. }
  9985. }
  9986. }
  9987. break;
  9988. case UI_EVENT_TEXT:
  9989. {
  9990. #ifdef CONFIG_SUPPORT_MHEG5
  9991. #ifdef SUPPORT_SUBTITLE_ON_PG
  9992. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  9993. #endif
  9994. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  9995. {
  9996. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  9997. {
  9998. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  9999. if (sdRet == SP_SUCCESS)
  10000. {
  10001. // do this action at ui_event_freeze
  10002. #if 0
  10003. if( SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE) ) //Gahu:D0326
  10004. {
  10005. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  10006. }
  10007. if (APP_GetPlaybackPauseState() == TRUE)
  10008. {
  10009. MID_PlaybackStreamResume(1);
  10010. g_PauseState = FALSE;
  10011. }
  10012. #endif
  10013. // do this action at ui_event_freeze
  10014. break;
  10015. }
  10016. }
  10017. }
  10018. #endif
  10019. #ifdef CONFIG_SUPPORT_TTX
  10020. #ifdef CONFIG_SUPPORT_PVR
  10021. if (MID_TSPLParser_GetThreadState())
  10022. {
  10023. al_bool bTtSignalStatus = al_false;
  10024. AL_TTX_GetSignalStatus(&bTtSignalStatus);
  10025. if (bTtSignalStatus == al_true)
  10026. {
  10027. dvb_printf("call create dtv ttx menu!\n");
  10028. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  10029. {
  10030. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  10031. #ifdef CONFIG_SUPPORT_SUBTITLE
  10032. UINT8 onoff = 0;
  10033. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  10034. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  10035. onoff = g_stUserInfoData.Subtitle;
  10036. if (onoff == TRUE)
  10037. {
  10038. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  10039. }
  10040. #endif
  10041. }
  10042. else
  10043. {
  10044. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  10045. {
  10046. _DVBApp_CloseAllMenu();
  10047. }
  10048. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  10049. {
  10050. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  10051. MID_PlaybackStreamResume(1);
  10052. APP_SetPlaybackPauseState(FALSE);
  10053. g_PauseState = FALSE;
  10054. #ifdef Subtitle_Freeze
  10055. AL_Subtitle_SetFreeze(FALSE);
  10056. #endif
  10057. }
  10058. #ifdef CONFIG_SUPPORT_SUBTITLE
  10059. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB);
  10060. #endif
  10061. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_TTX, 0);
  10062. }
  10063. }
  10064. else
  10065. {
  10066. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  10067. {
  10068. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  10069. }
  10070. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_TTX);
  10071. }
  10072. break;
  10073. }
  10074. #endif
  10075. #endif
  10076. UINT8 u8ProgLockState = FALSE;
  10077. AL_ServiceDetail_t SerInfor;
  10078. AL_DB_QueryDetail(APP_DVB_Playback_GetCurrentProgHandle(
  10079. eNetType, (AL_RECTYPE_DVBTV | AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA)),
  10080. &SerInfor);
  10081. if (AL_DBTYPE_DVB_T == eNetType)
  10082. {
  10083. if (SerInfor.stDVBTServ.stProgAttrib.parental_lock == al_true)
  10084. {
  10085. u8ProgLockState = TRUE;
  10086. }
  10087. }
  10088. else if (AL_DBTYPE_DVB_C == eNetType)
  10089. {
  10090. if (SerInfor.stDVBCServ.stProgAttrib.parental_lock == al_true)
  10091. {
  10092. u8ProgLockState = TRUE;
  10093. }
  10094. }
  10095. else if (AL_DBTYPE_DVB_S == eNetType)
  10096. {
  10097. if (SerInfor.stDVBSServ.stProgAttrib.parental_lock == al_true)
  10098. {
  10099. u8ProgLockState = TRUE;
  10100. }
  10101. }
  10102. if ((u8ProgLockState == TRUE && APP_DVB_Playback_IsUnlock() == FALSE)
  10103. && (g_u32OldPopup == PLAYBACK_POPUP_PWD_LOCKED
  10104. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO)))
  10105. {
  10106. break;
  10107. }
  10108. MID_PlaybackProgState_t GetProgState;
  10109. GetProgState = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL);
  10110. /*if digital programs are locked, pressing TT key is not Available*/
  10111. if((GetProgState != MID_PLAYBK_PROG_STATE_NORMAL)
  10112. && (GetProgState != MID_PLAYBK_PROG_STATE_VIDEO_AVC)
  10113. && (GetProgState != MID_PLAYBK_PROG_STATE_VIDEO_MPEG4))
  10114. {
  10115. break;
  10116. }
  10117. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_DATABASE_EMPTY) || DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE))
  10118. {
  10119. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  10120. break;
  10121. }
  10122. #ifdef CONFIG_SUPPORT_TTX
  10123. al_bool bTtSignalStatus = al_false;
  10124. AL_TTX_GetSignalStatus(&bTtSignalStatus);
  10125. #endif
  10126. #ifndef CONFIG_SUPPORT_MHEG5
  10127. Boolean bIgnoreCheckTTX = TRUE;
  10128. #endif
  10129. if (APP_Area_SupportDtg()
  10130. #ifdef CONFIG_SUPPORT_MHEG5
  10131. && (APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED)
  10132. #else
  10133. && (!bIgnoreCheckTTX) //Also deal with Teletext flow if MHEG5 isn't supported.
  10134. #endif
  10135. )
  10136. {
  10137. #ifdef CONFIG_SUPPORT_MHEG5
  10138. dvb_printf("There is MHEG5 service existed.\n");
  10139. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  10140. {
  10141. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  10142. {
  10143. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  10144. {
  10145. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  10146. }
  10147. if (APP_GetPlaybackPauseState() == TRUE)
  10148. {
  10149. MID_PlaybackStreamResume(1);
  10150. g_PauseState = FALSE;
  10151. }
  10152. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  10153. if (sdRet == SP_SUCCESS)
  10154. {
  10155. break;
  10156. }
  10157. }
  10158. }
  10159. else
  10160. {
  10161. #ifdef CONFIG_SUPPORT_PVR
  10162. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  10163. {
  10164. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_REC_FOR_MHEG);
  10165. break;
  10166. }
  10167. else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode)
  10168. || (MID_REC_MODE_AUTO == u8MIDRecMode))
  10169. {
  10170. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_TIMESHIFT_FOR_MHEG);
  10171. break;
  10172. }
  10173. #endif
  10174. #ifdef CONFIG_SUPPORT_SUBTITLE
  10175. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  10176. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  10177. if (g_stUserInfoData.Subtitle != 0) //Subtitle has been opened.
  10178. {
  10179. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_SUBTITLE_TO_OPEN_MHEG5);
  10180. }
  10181. #endif
  10182. }
  10183. #endif
  10184. }
  10185. #ifdef CONFIG_SUPPORT_TTX
  10186. else if (bTtSignalStatus == al_true)
  10187. {
  10188. eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  10189. if(eSourType != APP_SOURCE_DTV || eServiceType == AL_RECTYPE_DVBRADIO)
  10190. {
  10191. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  10192. break;
  10193. }
  10194. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  10195. {
  10196. dvb_printf("@@@@@@ TTX is Signal Guiobj exsit,destroy ttx menu!\n");
  10197. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  10198. #ifdef CONFIG_SUPPORT_SUBTITLE
  10199. UINT8 onoff = 0;
  10200. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  10201. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  10202. onoff = g_stUserInfoData.Subtitle;
  10203. if (onoff == TRUE)
  10204. {
  10205. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  10206. }
  10207. #endif
  10208. }
  10209. else
  10210. {
  10211. _DVBApp_CloseAllMenu();
  10212. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  10213. {
  10214. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  10215. MID_PlaybackStreamResume(1);
  10216. APP_SetPlaybackPauseState(FALSE);
  10217. g_PauseState = FALSE;
  10218. #ifdef Subtitle_Freeze
  10219. AL_Subtitle_SetFreeze(FALSE);
  10220. #endif
  10221. }
  10222. #ifdef CONFIG_SUPPORT_SUBTITLE
  10223. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB);
  10224. #endif
  10225. dvb_printf("@@@@@@ TTX is Signal,Cestroy ttx menu!\n");
  10226. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_TTX, 0);
  10227. }
  10228. }
  10229. #endif
  10230. else
  10231. {
  10232. #ifdef CONFIG_SUPPORT_TTX
  10233. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  10234. {
  10235. dvb_printf("@@@@@@ TTX is Signal Guiobj exsit,destroy ttx menu!\n");
  10236. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  10237. }
  10238. else
  10239. #endif
  10240. {
  10241. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  10242. }
  10243. }
  10244. }
  10245. break;
  10246. #ifdef SUPPORT_CLOCKINFO_SHOW
  10247. case UI_EVENT_DEVLIST: //UI_EVENT_DEVLIST clock key
  10248. {
  10249. /*if digital programs are locked, pressing clock key is not Available*/
  10250. MID_PlaybackProgState_t GetProgState;
  10251. GetProgState = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL);
  10252. if ((GetProgState == MID_PLAYBK_PROG_STATE_LOCKED) \
  10253. || (GetProgState == MID_PLAYBK_PROG_STATE_ONLY_VIDEO_SCRAMBLED) \
  10254. ||(GetProgState == MID_PLAYBK_PROG_STATE_AUDIO_VIDEO_SCRAMBLED) \
  10255. || (GetProgState == MID_PLAYBK_PROG_STATE_ONLY_AUDIO_SCRAMBLED))
  10256. {
  10257. break;
  10258. }
  10259. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_DATABASE_EMPTY))
  10260. {
  10261. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  10262. break;
  10263. }
  10264. if (eSourType == APP_SOURCE_DTV)
  10265. {
  10266. #if 0
  10267. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTXCLOCK))
  10268. {
  10269. //dvb_printf("close clock menu!\n");
  10270. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTXCLOCK);
  10271. }
  10272. else
  10273. {
  10274. al_bool bTtSignalStatus = 0;
  10275. AL_TTX_GetSignalStatus(&bTtSignalStatus);
  10276. if ((bTtSignalStatus == TRUE) && (_DTVAPP_Check_TTClock_HasValidData() == SP_SUCCESS))
  10277. {
  10278. //dvb_printf("open clock menu!\n");
  10279. _DVBApp_CloseAllMenu();
  10280. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_TTXCLOCK, 0);
  10281. }
  10282. else
  10283. {
  10284. //dvb_printf("no clock!\n");
  10285. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  10286. }
  10287. }
  10288. #endif
  10289. }
  10290. else
  10291. {
  10292. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  10293. }
  10294. }
  10295. break;
  10296. #endif
  10297. case UI_EVENT_SUBTITLE:
  10298. #ifdef CONFIG_SUPPORT_PVR
  10299. if (MID_TSPLParser_GetThreadState())
  10300. {
  10301. UINT32 u32PEState = MID_TSPL_MODE_STOP;
  10302. MID_TSPLParser_GetPlayState(&u32PEState, NULL);
  10303. if (u32PEState != MID_TSPL_MODE_PLAY)
  10304. {
  10305. break;
  10306. }
  10307. #ifdef CONFIG_SUPPORT_SUBTITLE
  10308. UINT32 SubTotalNum = 0;
  10309. #ifdef CONFIG_SUPPORT_TTX
  10310. al_uint32 TTXSubtitleTotalNum = 0;
  10311. #endif
  10312. if(AL_Subtitle_GetTotalNum(&SubTotalNum) == AL_SUCCESS
  10313. #ifdef CONFIG_SUPPORT_TTX
  10314. || (AL_TTX_GetTotalNum(AL_TTX_SUB_DESC_TYPE, &TTXSubtitleTotalNum) == AL_SUCCESS)
  10315. #endif
  10316. )
  10317. {
  10318. if(SubTotalNum > 0)
  10319. {
  10320. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU))
  10321. {
  10322. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU);
  10323. _DVBApp_CheckPopupDisplay();
  10324. }
  10325. else
  10326. {
  10327. _DVBApp_HidePopupDisplay();
  10328. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  10329. {
  10330. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  10331. }
  10332. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  10333. {
  10334. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC);
  10335. }
  10336. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER))
  10337. {
  10338. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER);
  10339. }
  10340. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD))
  10341. {
  10342. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD);
  10343. }
  10344. APP_GUIOBJ_SubTitle_SetTSFMode(TRUE);
  10345. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU, 0);
  10346. }
  10347. break;
  10348. }
  10349. #ifdef CONFIG_SUPPORT_TTX
  10350. else if (TTXSubtitleTotalNum > 0)
  10351. {
  10352. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU))
  10353. {
  10354. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU);
  10355. _DVBApp_CheckPopupDisplay();
  10356. }
  10357. else
  10358. {
  10359. _DVBApp_HidePopupDisplay();
  10360. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  10361. {
  10362. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  10363. }
  10364. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  10365. {
  10366. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC);
  10367. }
  10368. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER))
  10369. {
  10370. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER);
  10371. }
  10372. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD))
  10373. {
  10374. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD);
  10375. }
  10376. APP_GUIOBJ_SubTitle_SetTSFMode(TRUE);
  10377. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU, 0);
  10378. }
  10379. break;
  10380. }
  10381. #endif
  10382. }
  10383. #endif
  10384. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  10385. break;
  10386. }
  10387. #endif
  10388. {
  10389. UINT8 u8ProgLockState = MID_PLAYBK_PROG_STATE_REPLACE;
  10390. u8ProgLockState = APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL);
  10391. if((u8ProgLockState != MID_PLAYBK_PROG_STATE_NORMAL)
  10392. && (u8ProgLockState != MID_PLAYBK_PROG_STATE_VIDEO_AVC)
  10393. && (u8ProgLockState != MID_PLAYBK_PROG_STATE_VIDEO_MPEG4))
  10394. {
  10395. break;
  10396. }
  10397. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  10398. if (MID_PlaybackIsPauseState() || (bSignalState != AL_DVB_MONITOR_VALUE_TRUE) || (DVBApp_CheckServiceNotAvailable() == TRUE)
  10399. || (u8ProgLockState == MID_PLAYBK_PROG_STATE_AUDIO_VIDEO_SCRAMBLED)\
  10400. ||(u8ProgLockState == MID_PLAYBK_PROG_STATE_ONLY_AUDIO_SCRAMBLED)\
  10401. ||(u8ProgLockState == MID_PLAYBK_PROG_STATE_ONLY_VIDEO_SCRAMBLED))
  10402. {
  10403. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  10404. break;
  10405. }
  10406. #ifdef CONFIG_SUPPORT_SUBTITLE
  10407. UINT32 SubTotalNum = 0;
  10408. #ifdef CONFIG_SUPPORT_TTX
  10409. al_uint32 TTXSubtitleTotalNum = 0;
  10410. #endif
  10411. if ((AL_Subtitle_GetTotalNum(&SubTotalNum) == AL_SUCCESS)
  10412. #ifdef CONFIG_SUPPORT_TTX
  10413. || (AL_TTX_GetTotalNum(AL_TTX_SUB_DESC_TYPE, &TTXSubtitleTotalNum) == AL_SUCCESS)
  10414. #endif
  10415. )
  10416. {
  10417. if (SubTotalNum > 0)
  10418. {
  10419. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU))
  10420. {
  10421. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU);
  10422. _DVBApp_CheckPopupDisplay();
  10423. }
  10424. else
  10425. {
  10426. _DVBApp_HidePopupDisplay();
  10427. _DVBApp_CloseAllMenu();
  10428. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER))
  10429. {
  10430. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER);
  10431. }
  10432. APP_GUIOBJ_SubTitle_SetTSFMode(FALSE);
  10433. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU, 0);
  10434. }
  10435. }
  10436. #ifdef CONFIG_SUPPORT_TTX
  10437. else if (TTXSubtitleTotalNum > 0)
  10438. {
  10439. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU))
  10440. {
  10441. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU);
  10442. _DVBApp_CheckPopupDisplay();
  10443. }
  10444. else
  10445. {
  10446. _DVBApp_HidePopupDisplay();
  10447. _DVBApp_CloseAllMenu();
  10448. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER))
  10449. {
  10450. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER);
  10451. }
  10452. APP_GUIOBJ_SubTitle_SetTSFMode(FALSE);
  10453. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU, 0);
  10454. }
  10455. }
  10456. #endif
  10457. else
  10458. {
  10459. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_SUBTITLE);
  10460. }
  10461. }
  10462. else
  10463. {
  10464. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_SUBTITLE);
  10465. }
  10466. #else
  10467. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  10468. #endif
  10469. }
  10470. break;
  10471. case UI_EVENT_VOL_DN:
  10472. case UI_EVENT_VOL_UP:
  10473. #ifdef SUPPORT_CEC_TV
  10474. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  10475. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  10476. if (( APP_SWITCH_ON == g_stFeatureData.Enable_HDMILink)
  10477. #ifdef SUPPORT_AMPLIFIER_CONTROL
  10478. &&(APP_SWITCH_ON == g_stFeatureData.AmplifierControl)
  10479. #endif
  10480. && (APP_HDMILINK_AMPLIFIER == g_stFeatureData.SpeakerPreference)
  10481. && (APP_GUIOBJ_Source_GetAmplifierPort() != 0) && APP_Check_CEC_DEVICE_Status())
  10482. {
  10483. if (CECTV_GetCECEnable()==CECTV_ENABLE)
  10484. {
  10485. if(dMessage == UI_EVENT_VOL_UP)
  10486. {
  10487. APP_Set_CECTV_Mute_Status(EVENT_CECTV_SET_MUTE_STATUS_VOLUME_UP);
  10488. }
  10489. else if(dMessage == UI_EVENT_VOL_DN)
  10490. {
  10491. APP_Set_CECTV_Mute_Status(EVENT_CECTV_SET_MUTE_STATUS_VOLUME_DOWN);
  10492. }
  10493. DVBApp_VolumeKeyHandler(dMessage,TRUE);
  10494. break;
  10495. }
  10496. }
  10497. #endif
  10498. DVBApp_VolumeKeyHandler(dMessage,FALSE);
  10499. break;
  10500. case UI_EVENT_ASPECT:
  10501. #ifdef CONFIG_SUPPORT_PVR
  10502. /*if (MID_TSPLParser_GetThreadState() == TRUE)
  10503. {
  10504. UINT32 u32PEState = MID_TSPL_MODE_PLAY;
  10505. MID_TSPLParser_GetPlayState(&u32PEState, NULL);
  10506. if (u32PEState == MID_TSPL_MODE_PAUSE)
  10507. {
  10508. break;
  10509. }
  10510. }*/
  10511. if (APP_GUIOBJ_DVB_PvrPlayInfo_GetRecState() == PVR_STATE_PAUSE)
  10512. {
  10513. break;
  10514. }
  10515. #endif
  10516. if ((APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_LOCKED)
  10517. #ifdef CONFIG_SUPPORT_PVR //if playing pvr file, allow to set pic mode
  10518. && (!MID_TSPLParser_GetThreadState())
  10519. #endif
  10520. )
  10521. {
  10522. break;
  10523. }
  10524. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  10525. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  10526. if (g_stFactoryHotelData.HotelModeOnOff == 1&&g_stFactoryHotelData.PictureLock == 1)
  10527. {
  10528. dvb_printf("[%s] Picture Option has been Lock On!!\n",__FUNCTION__);
  10529. break;
  10530. }
  10531. MID_DISP_DTVGetVideoMute(&eMuteSt);
  10532. if ((eMuteSt == MID_DISP_MUTE) || (eMuteSt == MID_DISP_MUTE_BY_APP) || (eMuteSt == MID_DISP_MUTE_BY_TVFE) ||(eMuteSt == MID_DISP_MUTE_BY_VIP))
  10533. {
  10534. #ifdef CONFIG_SUPPORT_MHEG5
  10535. al_uint8 bSignalState = al_false;
  10536. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  10537. if((bSignalState != AL_DVB_MONITOR_VALUE_TRUE)
  10538. ||(!((APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED)
  10539. && APP_Area_SupportDtg())))
  10540. {
  10541. break;
  10542. }
  10543. #else
  10544. break;
  10545. #endif
  10546. }
  10547. {
  10548. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  10549. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  10550. if ((bHasValidServ && (bSignalState == AL_DVB_MONITOR_VALUE_TRUE)
  10551. #ifndef PLAY_VIDEO_FOR_ALLSRV
  10552. && (eServiceType != AL_RECTYPE_DVBRADIO)
  10553. #endif
  10554. )
  10555. #ifdef CONFIG_SUPPORT_PVR //if playing pvr file, allow to set pic mode
  10556. || (MID_TSPLParser_GetThreadState())
  10557. #endif
  10558. )
  10559. {
  10560. #ifdef CONFIG_SUPPORT_PVR
  10561. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  10562. #endif
  10563. {
  10564. _DVBApp_CloseAllMenu();
  10565. }
  10566. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_BANNER, dMessage);
  10567. }
  10568. else
  10569. {
  10570. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  10571. break;
  10572. }
  10573. }
  10574. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  10575. {
  10576. if (eSourType == APP_SOURCE_DTV)
  10577. {
  10578. #ifdef CONFIG_SUPPORT_SUBTITLE
  10579. UINT8 tmpIdx = 0;
  10580. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  10581. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  10582. tmpIdx = g_stUserInfoData.Subtitle;
  10583. if (tmpIdx == DVB_SWITCH_ON)
  10584. {
  10585. #ifdef Subtitle_Freeze
  10586. AL_Subtitle_SetFreeze(FALSE);
  10587. #else
  10588. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  10589. #endif
  10590. }
  10591. #endif
  10592. #ifdef CONFIG_SUPPORT_MHEG5
  10593. #ifdef CONFIG_SUPPORT_SUBTITLE
  10594. if (tmpIdx == DVB_SWITCH_OFF)
  10595. #endif
  10596. {
  10597. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5);
  10598. }
  10599. #endif
  10600. }
  10601. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  10602. }
  10603. if (APP_GetPlaybackPauseState() == TRUE)
  10604. {
  10605. MID_PlaybackStreamResume(1);
  10606. g_PauseState = FALSE;
  10607. }
  10608. break;
  10609. #ifdef SUPPORT_FACTORY_AUTO_TEST
  10610. case UI_EVENT_KEYPAD_DOWN:
  10611. case UI_EVENT_KEYPAD_UP:
  10612. case UI_EVENT_KEYPAD_SOURCE:
  10613. case UI_EVENT_KEYPAD_LEFT:
  10614. case UI_EVENT_KEYPAD_RIGHT:
  10615. case UI_EVENT_KEYPAD_POWER:
  10616. case UI_EVENT_KEYPAD_MENU:
  10617. {
  10618. extern int APP_Factory_GetAutoTestOnOff(void);
  10619. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  10620. {
  10621. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB,APP_GUIOBJ_BANNER))
  10622. {
  10623. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_BANNER, dMessage);
  10624. }
  10625. }
  10626. }
  10627. break;
  10628. #endif
  10629. #ifdef CELLO_REMOTE_KEY
  10630. case UI_EVENT_PIC_ASPECT:
  10631. #endif
  10632. case UI_EVENT_PIC_MOD:
  10633. if ((APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_LOCKED)
  10634. #ifdef CONFIG_SUPPORT_PVR
  10635. &&(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  10636. #endif
  10637. )
  10638. {
  10639. break;
  10640. }
  10641. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  10642. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  10643. if (g_stFactoryHotelData.HotelModeOnOff == 1&&g_stFactoryHotelData.PictureLock == 1)
  10644. {
  10645. dvb_printf("[%s] Picture Option has been Lock On!!\n",__FUNCTION__);
  10646. break;
  10647. }
  10648. #if 0
  10649. TVFE_GetAPPMuteFlag(&bAPPMuteEn);
  10650. TVFE_GetTvfeMuteFlag(&bTvfeMuteEn);
  10651. if ((bAPPMuteEn == DTV_TRUE) || (bTvfeMuteEn == DTV_TRUE))
  10652. {
  10653. #ifdef CONFIG_SUPPORT_MHEG5
  10654. al_uint8 bSignalState = al_false;
  10655. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  10656. if((bSignalState != AL_DVB_MONITOR_VALUE_TRUE)
  10657. ||(!((APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED)
  10658. && APP_Area_SupportDtg())))
  10659. {
  10660. break;
  10661. }
  10662. #else
  10663. break;
  10664. #endif
  10665. }
  10666. if ((eServiceType == AL_RECTYPE_DVBRADIO)
  10667. #ifdef CONFIG_SUPPORT_PVR //if playing pvr file, allow to set pic mode
  10668. && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)
  10669. #endif
  10670. )
  10671. {
  10672. break; //zhongbaoxing added for mantis bug 0136063 @20110525
  10673. }
  10674. TotalNum = DVBApp_Get_TotalNumber();
  10675. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  10676. if (((TotalNum > 0) && (bSignalState == AL_DVB_MONITOR_VALUE_TRUE))
  10677. #ifdef CONFIG_SUPPORT_PVR //if playing pvr file, allow to set pic mode
  10678. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)
  10679. #endif
  10680. )
  10681. #endif
  10682. {
  10683. #ifdef CONFIG_SUPPORT_PVR
  10684. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  10685. #endif
  10686. {
  10687. _DVBApp_CloseAllMenu();
  10688. }
  10689. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_BANNER, dMessage);
  10690. }
  10691. break;
  10692. case UI_EVENT_SLEEP:
  10693. if ((APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_LOCKED)
  10694. #ifdef CONFIG_SUPPORT_PVR
  10695. &&(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  10696. #endif
  10697. )
  10698. {
  10699. break;
  10700. }
  10701. #if 0
  10702. TVFE_GetAPPMuteFlag(&bAPPMuteEn);
  10703. TVFE_GetTvfeMuteFlag(&bTvfeMuteEn);
  10704. if ((bAPPMuteEn == DTV_TRUE) || (bTvfeMuteEn == DTV_TRUE))
  10705. {
  10706. #ifdef CONFIG_SUPPORT_MHEG5
  10707. al_uint8 bSignalState = al_false;
  10708. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  10709. if((bSignalState != AL_DVB_MONITOR_VALUE_TRUE)
  10710. ||(!((APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED)
  10711. && APP_Area_SupportDtg())))
  10712. {
  10713. break;
  10714. }
  10715. #else
  10716. break;
  10717. #endif
  10718. }
  10719. #endif
  10720. {
  10721. #ifdef CONFIG_SUPPORT_PVR
  10722. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  10723. #endif
  10724. {
  10725. _DVBApp_CloseAllMenu();
  10726. }
  10727. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_BANNER, dMessage);
  10728. }
  10729. break;
  10730. case UI_EVENT_SND_MOD:
  10731. #ifdef CELLO_REMOTE_KEY
  10732. case UI_EVENT_SOUND_MTS:
  10733. #endif
  10734. #ifdef SUPPORT_SMODE_UNMUTE
  10735. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  10736. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  10737. if(g_stUserInfoData.Mute)
  10738. {
  10739. if (CECTV_GetHDMISystemAudioMode()&& APP_Check_CEC_DEVICE_Status())
  10740. {
  10741. cec_RemoteControlPassThrough(CECTV_KEY_MUTE);
  10742. cec_RemoteControlPassThrough(CECTV_KEY_MUTE_RELEASE);
  10743. }
  10744. }
  10745. _APP_GUIOBJ_Sound_SetMuteStatus();
  10746. #endif
  10747. if ((APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_LOCKED)
  10748. #ifdef CONFIG_SUPPORT_PVR
  10749. &&(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  10750. #endif
  10751. )
  10752. {
  10753. break;
  10754. }
  10755. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  10756. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  10757. if (g_stFactoryHotelData.HotelModeOnOff == 1&&g_stFactoryHotelData.SoundLock== 1)
  10758. {
  10759. dvb_printf("[%s] Sound Option has been Lock On!!\n",__FUNCTION__);
  10760. break;
  10761. }
  10762. #if 0
  10763. TVFE_GetAPPMuteFlag(&bAPPMuteEn);
  10764. TVFE_GetTvfeMuteFlag(&bTvfeMuteEn);
  10765. if ((bAPPMuteEn == DTV_TRUE) || (bTvfeMuteEn == DTV_TRUE))
  10766. {
  10767. #ifdef CONFIG_SUPPORT_MHEG5
  10768. al_uint8 bSignalState = al_false;
  10769. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  10770. if((bSignalState != AL_DVB_MONITOR_VALUE_TRUE)
  10771. ||(!((APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED)
  10772. && APP_Area_SupportDtg())))
  10773. {
  10774. break;
  10775. }
  10776. #else
  10777. break;
  10778. #endif
  10779. }
  10780. TotalNum = DVBApp_Get_TotalNumber();
  10781. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  10782. if (((TotalNum > 0) && (bSignalState == AL_DVB_MONITOR_VALUE_TRUE))
  10783. #ifdef CONFIG_SUPPORT_PVR //if playing pvr file, allow to set pic mode
  10784. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)
  10785. #endif
  10786. )
  10787. #endif
  10788. {
  10789. #ifdef CONFIG_SUPPORT_PVR
  10790. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  10791. #endif
  10792. {
  10793. _DVBApp_CloseAllMenu();
  10794. }
  10795. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_BANNER, dMessage);
  10796. }
  10797. break;
  10798. case UI_EVENT_8:
  10799. case UI_EVENT_0:
  10800. case UI_EVENT_1:
  10801. case UI_EVENT_2:
  10802. case UI_EVENT_3:
  10803. case UI_EVENT_4:
  10804. case UI_EVENT_5:
  10805. case UI_EVENT_6:
  10806. case UI_EVENT_7:
  10807. case UI_EVENT_9:
  10808. case UI_EVENT_10:
  10809. #ifdef SUPPORT_FACTORY_AUTO_TEST
  10810. if(dMessage == UI_EVENT_10)
  10811. {
  10812. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  10813. {
  10814. APP_Factory_SetAutoTestSourceChange(dMessage);
  10815. break;
  10816. }
  10817. }
  10818. #endif
  10819. #if 0 //def CONFIG_SUPPORT_PVR
  10820. if ((u8MidRecState != MID_REC_STATUS_STOP) && (MID_REC_MODE_AUTO != u8MIDRecMode))
  10821. {
  10822. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER))
  10823. {
  10824. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER);
  10825. }
  10826. if (MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode)
  10827. {
  10828. g_u32NumEvent = dMessage;
  10829. g_bIsNumKey = TRUE;
  10830. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_CHANNEL_CHANGE);
  10831. break;
  10832. }
  10833. else if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  10834. {
  10835. g_u32NumEvent = dMessage;
  10836. g_bIsNumKey = TRUE;
  10837. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_CHANNEL_CHANGE);
  10838. break;
  10839. }
  10840. }
  10841. #endif
  10842. #ifdef CONFIG_SUPPORT_MHEG5
  10843. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  10844. {
  10845. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  10846. {
  10847. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  10848. if (sdRet == SP_SUCCESS)
  10849. {
  10850. break;
  10851. }
  10852. }
  10853. }
  10854. #endif
  10855. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM))
  10856. {
  10857. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM);
  10858. }
  10859. else
  10860. {
  10861. _DVBApp_HidePopupDisplay();
  10862. _DVBApp_CloseAllMenu();
  10863. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM, (dMessage - UI_EVENT_0));
  10864. }
  10865. break;
  10866. #ifdef CONFIG_SUPPORT_PVR
  10867. case UI_EVENT_REC:
  10868. #ifdef REMINDER_OLNY_NO_RECORD
  10869. break;
  10870. #endif
  10871. dvb_printf("UI_EVENT_REC");
  10872. #if defined(SUPPORT_HOTEL_MODE_PVR_FUNCTION_CONTROL)
  10873. if((g_stFactoryHotelData.HotelModeOnOff)&&(!g_stFactoryHotelData.PVRFunction))
  10874. {
  10875. break;
  10876. }
  10877. #elif defined(SUPPORT_PVR_ONOFF)
  10878. if(!g_stSetupData.PVROnOff)
  10879. {
  10880. break;
  10881. }
  10882. #endif
  10883. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  10884. {
  10885. dvb_printf("double rec ,goto duration");
  10886. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  10887. {
  10888. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  10889. }
  10890. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME, 0);
  10891. }
  10892. else
  10893. {
  10894. if (u8MidRecState == MID_REC_STATUS_STOP)
  10895. {
  10896. if (DVBApp_CheckForRecord(MID_REC_MODE_MANUAL) != SP_SUCCESS)
  10897. {
  10898. break;
  10899. }
  10900. #ifdef CONFIG_SUPPORT_MHEG5
  10901. if (APP_Area_SupportDtg() && SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  10902. {
  10903. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_MHEG_FOR_REC);
  10904. }
  10905. else
  10906. #endif
  10907. {
  10908. #ifndef SUPPORT_PVR_SPEC_START_NO_POP
  10909. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_START);
  10910. #else
  10911. dvb_printf("start record is call\n");
  10912. _APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurTime();
  10913. _DVBApp_CloseAllMenu();
  10914. DVBApp_StartRecord(MID_REC_MODE_MANUAL);
  10915. #endif
  10916. }
  10917. break;
  10918. }
  10919. #ifdef SUPPORT_SPEC_PVR_RECORD
  10920. else if ((MID_REC_MODE_MANUAL != u8MIDRecMode)
  10921. && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  10922. { //if timeshifting, then pop to ask stop timeshift and start record
  10923. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_TSHIFT_TO_REC);
  10924. }
  10925. #endif
  10926. }
  10927. break;
  10928. case UI_EVENT_STOP:
  10929. #ifdef CONFIG_SUPPORT_MHEG5
  10930. #ifdef SUPPORT_SUBTITLE_ON_PG
  10931. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  10932. #endif
  10933. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  10934. {
  10935. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  10936. {
  10937. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  10938. if (sdRet == SP_SUCCESS)
  10939. {
  10940. break;
  10941. }
  10942. }
  10943. }
  10944. #endif
  10945. if ((MID_REC_MODE_AUTO == u8MIDRecMode) && ((MID_REC_STATUS_START == u8MidRecState) || (!APP_GUIOBJ_DVB_PvrPlayInfo_GetStopPopFlag())))
  10946. {
  10947. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER)
  10948. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD)
  10949. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  10950. {
  10951. break;
  10952. }
  10953. if (PVR_STATE_STOP != APP_GUIOBJ_DVB_PvrPlayInfo_GetRecState())
  10954. {
  10955. APP_GUIOBJ_DVB_PvrPlayInfo_StopTimeshift();
  10956. }
  10957. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  10958. {
  10959. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  10960. }
  10961. }
  10962. else
  10963. {
  10964. if (((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) ||
  10965. (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)))&&(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  10966. {
  10967. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP);
  10968. }
  10969. else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  10970. {
  10971. if (MID_REC_MODE_AUTO == u8MIDRecMode)
  10972. {
  10973. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  10974. }
  10975. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP);
  10976. }
  10977. else
  10978. {
  10979. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  10980. {
  10981. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, dMessage, 0);
  10982. }
  10983. }
  10984. }
  10985. break;
  10986. case APP_DVB_GLOBAL_EVENT_DTV_MEDIA_INIT_FAIL:
  10987. case APP_DVB_GLOBAL_EVENT_DTV_MEDIA_INIT_SUCCESSFUL:
  10988. case APP_DVB_GLOBAL_EVENT_PVR_RATING_UPDATE:
  10989. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  10990. {
  10991. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY, dMessage, dParam);
  10992. break;
  10993. }
  10994. break;
  10995. case APP_DVB_GLOBAL_EVENT_DTV_MEDIA_INIT_PLAYSTATE:
  10996. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  10997. {
  10998. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY, dMessage, 0);
  10999. break;
  11000. }
  11001. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  11002. {
  11003. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, dMessage, 0);
  11004. break;
  11005. }
  11006. {
  11007. UINT8 u8Mute = 0;
  11008. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  11009. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  11010. u8Mute = g_stUserInfoData.Mute;
  11011. if (u8Mute == FALSE)
  11012. {
  11013. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_DTV);
  11014. }
  11015. MID_TSPLParser_Resume();
  11016. #ifdef CONFIG_SUPPORT_SUBTITLE
  11017. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  11018. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  11019. if (g_stUserInfoData.Subtitle == 1)
  11020. {
  11021. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE))
  11022. {
  11023. APP_GUIOBJ_SubTitle_Start();
  11024. }
  11025. }
  11026. #endif
  11027. }
  11028. break;
  11029. case APP_DVB_GLOBAL_EVENT_PVR_UPDATE_TIME:
  11030. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  11031. {
  11032. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, dMessage, 0);
  11033. break;
  11034. }
  11035. break;
  11036. case APP_DVB_GLOBAL_EVENT_DTV_MEDIA_PLAYDONE:
  11037. case APP_DVB_GLOBAL_EVENT_DTV_MEDIA_PLAYREADERROR:
  11038. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  11039. {
  11040. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY, dMessage, 0);
  11041. break;
  11042. }
  11043. if ((MID_REC_MODE_AUTO == u8MIDRecMode)
  11044. || (MID_REC_MODE_MANUAL == u8MIDRecMode))
  11045. {
  11046. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  11047. {
  11048. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  11049. }
  11050. APP_GUIOBJ_DVB_PvrPlayInfo_StopTimeshift();
  11051. }
  11052. else if (MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode)
  11053. {
  11054. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  11055. {
  11056. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, dMessage, 0);
  11057. break;
  11058. }
  11059. APP_GUIOBJ_DVB_PvrPlayInfo_StopTimeshift();
  11060. }
  11061. break;
  11062. case APP_DVB_GLOBAL_EVENT_SWITCH_FILEPLAY:
  11063. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  11064. {
  11065. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY);
  11066. }
  11067. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE)
  11068. && !APP_MenuMgr_Exist_Main_Menu())
  11069. {
  11070. SYSAPP_GOBJ_CreateGUIObject_WithPara(
  11071. SYS_APP_DVB, DVB_GUIOBJ_RECORDLIST, dParam);
  11072. }
  11073. break;
  11074. case APP_DVB_GLOBAL_EVENT_CLOSE_FILEPLAY:
  11075. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  11076. {
  11077. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY);
  11078. }
  11079. break;
  11080. case APP_DVB_GLOBAL_EVENT_REC_NOTIFY_DISK_FULL:
  11081. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  11082. {
  11083. DVBApp_StopRecord();
  11084. }
  11085. else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode) ||
  11086. (MID_REC_MODE_AUTO == u8MIDRecMode))
  11087. {
  11088. DVBApp_StopTimeshift(TRUE);
  11089. }
  11090. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_DISK_FULL);
  11091. break;
  11092. case APP_DVB_GLOBAL_EVENT_REC_NOTIFY_WRITE_ERR:
  11093. case APP_DVB_GLOBAL_EVENT_REC_NOTIFY_GFS_FAILURE:
  11094. if (MID_PartitionList_GetMountedCount() == 0)
  11095. {
  11096. break;
  11097. }
  11098. if (MID_RecorderIsCurRecording() != DRV_SUCCESS)
  11099. {
  11100. break;
  11101. }
  11102. if (MID_REC_MODE_MANUAL == u8MIDRecMode|| MID_REC_MODE_UNATTENDED == u8MIDRecMode)
  11103. {
  11104. DVBApp_StopRecord();
  11105. if(dMessage == APP_DVB_GLOBAL_EVENT_REC_NOTIFY_GFS_FAILURE)
  11106. {
  11107. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  11108. }
  11109. else
  11110. {
  11111. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_WRITE_ERROR);
  11112. }
  11113. }
  11114. else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode) ||
  11115. (MID_REC_MODE_AUTO == u8MIDRecMode))
  11116. {
  11117. DVBApp_StopTimeshift(TRUE);
  11118. if(dMessage == APP_DVB_GLOBAL_EVENT_REC_NOTIFY_GFS_FAILURE)
  11119. {
  11120. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_ENTER_NOT_VALID);
  11121. }
  11122. else
  11123. {
  11124. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_WRITE_ERROR);
  11125. }
  11126. }
  11127. if (APP_PVR_TIMESHIFT_AUTO == u8AutoTimeShift)
  11128. {
  11129. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  11130. }
  11131. break;
  11132. case UI_EVENT_GOTO:
  11133. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) ||
  11134. (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)))
  11135. {
  11136. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_GOTO))
  11137. {
  11138. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_GOTO, 0);
  11139. }
  11140. }
  11141. break;
  11142. case UI_EVENT_FF:
  11143. #ifdef CONFIG_SUPPORT_MHEG5
  11144. #ifdef SUPPORT_SUBTITLE_ON_PG
  11145. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  11146. #endif
  11147. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  11148. {
  11149. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  11150. {
  11151. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  11152. if (sdRet == SP_SUCCESS)
  11153. {
  11154. break;
  11155. }
  11156. }
  11157. }
  11158. #endif
  11159. break;
  11160. case UI_EVENT_FR:
  11161. #ifdef CONFIG_SUPPORT_MHEG5
  11162. #ifdef SUPPORT_SUBTITLE_ON_PG
  11163. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  11164. #endif
  11165. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  11166. {
  11167. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  11168. {
  11169. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  11170. if (sdRet == SP_SUCCESS)
  11171. {
  11172. break;
  11173. }
  11174. }
  11175. }
  11176. #endif
  11177. if ((MID_REC_MODE_AUTO == u8MIDRecMode) && (u8MidRecState != MID_REC_STATUS_STOP))
  11178. {
  11179. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER)
  11180. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD)
  11181. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  11182. {
  11183. break;
  11184. }
  11185. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  11186. {
  11187. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  11188. }
  11189. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERFR);
  11190. }
  11191. break;
  11192. case UI_EVENT_PREV:
  11193. #ifdef CONFIG_SUPPORT_MHEG5
  11194. #ifdef SUPPORT_SUBTITLE_ON_PG
  11195. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  11196. #endif
  11197. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  11198. {
  11199. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  11200. {
  11201. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  11202. if (sdRet == SP_SUCCESS)
  11203. {
  11204. break;
  11205. }
  11206. }
  11207. }
  11208. #endif
  11209. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  11210. {
  11211. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, dMessage, 0);
  11212. }
  11213. break;
  11214. case UI_EVENT_NEXT:
  11215. #ifdef CONFIG_SUPPORT_MHEG5
  11216. #ifdef SUPPORT_SUBTITLE_ON_PG
  11217. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  11218. #endif
  11219. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  11220. {
  11221. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  11222. {
  11223. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  11224. if (sdRet == SP_SUCCESS)
  11225. {
  11226. break;
  11227. }
  11228. }
  11229. }
  11230. #endif
  11231. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  11232. {
  11233. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, dMessage, 0);
  11234. }
  11235. break;
  11236. case APP_DVB_GLOBAL_EVENT_REC_START_FROM_EPG:
  11237. {
  11238. AL_RecHandle_t hRecProg = AL_DB_INVALIDHDL;
  11239. al_uint32 CurTimeInSec = 0;
  11240. al_uint32 EndTimeInsec = 0;
  11241. EndTimeInsec = APP_GUIOBJ_DVB_Epg_GetEndTime();
  11242. AL_Time_GetCurTimeInSecs(&CurTimeInSec);
  11243. if ((CurTimeInSec+10) >= EndTimeInsec)
  11244. {
  11245. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  11246. }
  11247. hRecProg = APP_GUIOBJ_DVB_Epg_GetRecHdl();
  11248. _DVBApp_CloseAllMenu();
  11249. if ((hRecProg != AL_DB_INVALIDHDL)
  11250. && (hCurProg != hRecProg))
  11251. {
  11252. AL_DB_EDBType_t db_type;
  11253. AL_DB_ERecordType_t eServiceType;
  11254. AL_DB_GetRecordType(hRecProg, &db_type, &eServiceType);
  11255. _DVBApp_Zapping(eServiceType, hRecProg, FALSE, 0, FALSE);
  11256. }
  11257. _DVBApp_CloseAllMenu();
  11258. _APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurTime();
  11259. DVBApp_StartRecord(MID_REC_MODE_MANUAL);
  11260. APP_GUIOBJ_DVB_PvrRecDurationTime_SetDurTime(EndTimeInsec);
  11261. }
  11262. break;
  11263. #endif
  11264. case UI_EVENT_FREEZE:
  11265. {
  11266. MID_DISP_DTVGetVideoMute(&eMuteSt);
  11267. if ((eMuteSt == MID_DISP_MUTE)
  11268. || (eMuteSt == MID_DISP_MUTE_BY_APP)
  11269. ||(eMuteSt == MID_DISP_MUTE_BY_TVFE)
  11270. ||(eMuteSt == MID_DISP_MUTE_BY_VIP))
  11271. {
  11272. break;
  11273. }
  11274. }
  11275. /* here, judge database empty or not */
  11276. {
  11277. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  11278. if (!bHasValidServ)
  11279. {
  11280. /* database empty, do nothing */
  11281. break;
  11282. }
  11283. }
  11284. #ifdef CONFIG_SUPPORT_PVR
  11285. if ((MID_REC_STATUS_STOP != u8MidRecState) && (MID_REC_MODE_MANUAL != u8MIDRecMode))
  11286. {
  11287. break; //when timeshift invalid freeze function
  11288. }
  11289. #endif
  11290. #ifdef CONFIG_SUPPORT_MHEG5
  11291. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  11292. {
  11293. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  11294. {
  11295. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, UI_EVENT_FREEZE, (UINT32)&sdRet);
  11296. if (sdRet == SP_ERR_FAILURE)
  11297. {
  11298. break;
  11299. }
  11300. }
  11301. }
  11302. #endif
  11303. {
  11304. #ifdef PLAY_VIDEO_FOR_ALLSRV
  11305. AL_RecHandle_t hTempHdl;
  11306. MID_PlaybackGetCurProgHandle(al_null, &hTempHdl);
  11307. DBPIDInfo_t stVideoPid;
  11308. memset(&stVideoPid,0xff,sizeof(DBPIDInfo_t));
  11309. AL_DB_QueryDetailFieldByName(hTempHdl, (al_uint8 *)"stVideoPid", (al_void *)&stVideoPid);
  11310. if ((stVideoPid.usDataPID&0x1fff) == 0x1fff)
  11311. #else
  11312. if (eServiceType == AL_RECTYPE_DVBRADIO)
  11313. #endif
  11314. {
  11315. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  11316. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  11317. break;
  11318. }
  11319. }
  11320. #ifdef CONFIG_SUPPORT_SUBTITLE
  11321. UINT8 tmpIdx = 0;
  11322. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  11323. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  11324. tmpIdx = g_stUserInfoData.Subtitle;
  11325. #endif
  11326. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  11327. {
  11328. #ifdef CONFIG_SUPPORT_SUBTITLE
  11329. if (tmpIdx == DVB_SWITCH_ON)
  11330. {
  11331. #ifdef Subtitle_Freeze
  11332. AL_Subtitle_SetFreeze(FALSE);
  11333. #else
  11334. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  11335. #endif
  11336. }
  11337. #endif
  11338. //zhongbaoxing added for mantis 0164987 @20120117 +++
  11339. #ifdef CONFIG_SUPPORT_MHEG5
  11340. {
  11341. #ifdef CONFIG_SUPPORT_SUBTITLE
  11342. if (tmpIdx == DVB_SWITCH_OFF)
  11343. #endif
  11344. {
  11345. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5);
  11346. }
  11347. }
  11348. #endif
  11349. //zhongbaoxing added for mantis 0164987 @20120117 ---
  11350. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  11351. MID_PlaybackStreamResume(1);
  11352. g_PauseState = FALSE;
  11353. }
  11354. else
  11355. {
  11356. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  11357. if (bSignalState == AL_DVB_MONITOR_VALUE_TRUE)
  11358. {
  11359. if (DVBApp_CheckServiceNotAvailable() == TRUE)
  11360. {
  11361. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  11362. break;
  11363. }
  11364. g_PauseState = TRUE;
  11365. //zhongbaoxing added for mantis 0164987 @20120117 +++
  11366. #ifdef CONFIG_SUPPORT_MHEG5
  11367. //int mh5Status = 0;
  11368. //MHEG5APP_GetMh5Status(&mh5Status);
  11369. //if ((mh5Status&MHEG5APP_STATUS_OSD_UPDATED))
  11370. /*if( APP_DVB_Mheg5_GetBootCarouselStatus()==MHEG5_BOOT_CAROUSEL_EXISTED && APP_DVB_Mheg5_GetMheg5DisplayStatus() ) //Gahu:D0326
  11371. {
  11372. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  11373. g_PauseState = FALSE;
  11374. break;
  11375. }
  11376. else
  11377. {
  11378. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_MH5);
  11379. }*/ //for mantis: 21255
  11380. #endif
  11381. //zhongbaoxing added for mantis 0164987 @20120117 ---
  11382. #ifdef CONFIG_SUPPORT_SUBTITLE
  11383. if (tmpIdx == DVB_SWITCH_ON)
  11384. {
  11385. #ifdef Subtitle_Freeze
  11386. AL_Subtitle_SetFreeze(TRUE);
  11387. #else
  11388. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB);
  11389. #endif
  11390. }
  11391. #endif
  11392. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FREEZE, 0);
  11393. MID_PlaybackStreamPause(1);
  11394. g_PauseState = TRUE;
  11395. }
  11396. }
  11397. break;
  11398. case UI_EVENT_TVRADIO:
  11399. #ifdef CONFIG_SUPPORT_PVR
  11400. if (MID_REC_STATUS_STOP != u8MidRecState)// && (MID_REC_MODE_AUTO != u8MIDRecMode))
  11401. {
  11402. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  11403. {
  11404. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_FOR_TVRADIOKEY);
  11405. }
  11406. else
  11407. {
  11408. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_TVRADIOKEY);
  11409. }
  11410. break;
  11411. }
  11412. #if 0
  11413. else if ((MID_REC_STATUS_STOP != u8MidRecState) && (MID_REC_MODE_AUTO == u8MIDRecMode))
  11414. {
  11415. DVBApp_StopTimeshift(TRUE);
  11416. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  11417. }
  11418. #endif
  11419. #endif
  11420. if (APP_DVB_Playback_SwapServiceType(eNetType, (AL_DB_ERecordType_t *)&NextServiceType, &u32TotalNum) != AL_SUCCESS)
  11421. {
  11422. if(NextServiceType == AL_RECTYPE_DVBRADIO)
  11423. {
  11424. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_RADIO);
  11425. }
  11426. else
  11427. {
  11428. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_DTVORDATA);
  11429. }
  11430. }
  11431. break;
  11432. #ifdef CELLO_REMOTE_KEY
  11433. case UI_EVENT_ATV:
  11434. #endif
  11435. case UI_EVENT_ATVDTV:
  11436. #ifdef CONFIG_SUPPORT_PVR
  11437. if (MID_REC_STATUS_STOP != u8MidRecState)// && (MID_REC_MODE_AUTO != u8MIDRecMode))
  11438. {
  11439. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  11440. {
  11441. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_FOR_TVRADIOKEY);
  11442. }
  11443. else
  11444. {
  11445. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_TVRADIOKEY);
  11446. }
  11447. break;
  11448. }
  11449. #endif
  11450. if ((eSourType == APP_SOURCE_DTV) || (eSourType == APP_SOURCE_RADIO))
  11451. {
  11452. DVBApp_ResetPopup_Channel();
  11453. _DVBApp_CloseAllMenu();
  11454. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_ATV);
  11455. }
  11456. break;
  11457. break;
  11458. #ifdef SUPPORT_SOURCE_DVBTCS
  11459. case UI_EVENT_DVBC:// For DVB-C shortcut key
  11460. case UI_EVENT_RED:
  11461. #ifdef CONFIG_DVB_SYSTEM_DVBC_SUPPORT
  11462. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  11463. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  11464. RFtype = g_stChannelData.TV_Connection;
  11465. if(RFtype != APP_RF_TYPE_DVB_C)
  11466. {
  11467. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  11468. {
  11469. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  11470. }
  11471. StringId = APP_GUIOBJ_Channel_GetStringIDByRFType(APP_RF_TYPE_DVB_C);
  11472. APP_GUIOBJ_Channel_SetRFTypeByStringID(StringId);
  11473. }
  11474. else
  11475. {
  11476. #ifdef CONFIG_DVB_SYSTEM_DVBT_SUPPORT
  11477. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  11478. {
  11479. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  11480. }
  11481. StringId = APP_GUIOBJ_Channel_GetStringIDByRFType(APP_RF_TYPE_DVB_T);
  11482. APP_GUIOBJ_Channel_SetRFTypeByStringID(StringId);
  11483. #endif
  11484. }
  11485. #endif
  11486. break;
  11487. case UI_EVENT_DVBS:// For DVB-S shortcut key
  11488. case UI_EVENT_GREEN:
  11489. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  11490. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  11491. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  11492. RFtype = g_stChannelData.TV_Connection;
  11493. if(RFtype != APP_RF_TYPE_DVB_S)
  11494. {
  11495. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  11496. {
  11497. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  11498. }
  11499. StringId = APP_GUIOBJ_Channel_GetStringIDByRFType(APP_RF_TYPE_DVB_S);
  11500. APP_GUIOBJ_Channel_SetRFTypeByStringID(StringId);
  11501. }
  11502. else
  11503. {
  11504. #ifdef CONFIG_DVB_SYSTEM_DVBT_SUPPORT
  11505. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  11506. {
  11507. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  11508. }
  11509. StringId = APP_GUIOBJ_Channel_GetStringIDByRFType(APP_RF_TYPE_DVB_T);
  11510. APP_GUIOBJ_Channel_SetRFTypeByStringID(StringId);
  11511. #endif
  11512. }
  11513. #endif
  11514. break;
  11515. #endif
  11516. #if 0//#ifdef CONFIG_SUPPORT_MHEG5
  11517. case UI_EVENT_RED:
  11518. case UI_EVENT_GREEN:
  11519. case UI_EVENT_BLUE:
  11520. case UI_EVENT_YELLOW:
  11521. if (APP_Area_SupportDtg())
  11522. {
  11523. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  11524. {
  11525. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  11526. SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  11527. if (sdRet == SP_SUCCESS)
  11528. {
  11529. break;
  11530. }
  11531. }
  11532. }
  11533. break;
  11534. #endif
  11535. #ifdef TEAC_BLUE_KEY_FUNCTION
  11536. case UI_EVENT_BLUE:
  11537. {
  11538. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  11539. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  11540. if (eServiceType == AL_RECTYPE_DVBRADIO)
  11541. {
  11542. if (_DVB_GetPanelControlType()== APP_PANEL_POWER_UP)
  11543. {
  11544. #ifdef CONFIG_SUPPORT_MHEG5
  11545. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  11546. #endif
  11547. {
  11548. //APP_Panel_SetPowerSequence(APP_PANEL_POWER_DOWN);
  11549. _DVB_SetPanelControlType(APP_PANEL_POWER_DOWN);
  11550. }
  11551. }
  11552. else if (_DVB_GetPanelControlType()== APP_PANEL_POWER_DOWN)
  11553. {
  11554. //APP_Panel_SetPowerSequence(APP_PANEL_POWER_UP);
  11555. _DVB_SetPanelControlType(APP_PANEL_POWER_UP);
  11556. }
  11557. }
  11558. break;
  11559. }
  11560. #endif
  11561. #ifdef SUPPORT_AD_DESCRIPTION
  11562. case UI_EVENT_AB:
  11563. {
  11564. UINT8 u8Mute = 0;
  11565. u8Mute = g_stUserInfoData.Mute;
  11566. if (u8Mute == TRUE)
  11567. {
  11568. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  11569. if (bSignalState == AL_DVB_MONITOR_VALUE_TRUE)
  11570. {
  11571. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  11572. }
  11573. else
  11574. {
  11575. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_NO_SIGNALE, eSourType);
  11576. }
  11577. g_stUserInfoData.Mute = FALSE;
  11578. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  11579. ITEM_OFFSET(APP_SETTING_UserInfo_t, Mute),
  11580. sizeof(g_stUserInfoData.Mute), &(g_stUserInfoData.Mute));
  11581. #ifdef SUPPORT_STORE_MUTE_FLAG
  11582. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  11583. ITEM_OFFSET(APP_SETTING_UserInfo_t, Mute),
  11584. sizeof(g_stUserInfoData.Mute));
  11585. #endif
  11586. }
  11587. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  11588. SYS_APP_DVB, APP_GUIOBJ_MUTE,
  11589. APP_INTRA_EVENT_HIDE_MUTE, 0);
  11590. break;
  11591. }
  11592. break;
  11593. #endif
  11594. #ifdef CONFIG_SUPPORT_HELP_MENU
  11595. case UI_EVENT_HELP:
  11596. DVBApp_ResetPopup_Channel();
  11597. _DVBApp_CloseAllMenu();
  11598. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_HELP_MENU, 0);
  11599. break;
  11600. #endif
  11601. #ifdef SUPPORT_HKC_FACTORY_REMOTE
  11602. case UI_EVENT_HKC_ENTER_BURNINGMODE:
  11603. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11604. {
  11605. _DVBApp_Exit_All_Menu();
  11606. g_stFactoryUserData.n_FactSet_BurningMode = 1;
  11607. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0,
  11608. sizeof(APP_SETTING_FactoryUser_t), &(g_stFactoryUserData));
  11609. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0,
  11610. sizeof(g_stFactoryUserData));
  11611. MID_TVFE_SetBurnIn(1, 0, 1);
  11612. //APP_Cul_Fm_CheckAndStartBurningMode();
  11613. }
  11614. break;
  11615. #ifdef CONFIG_DVB_SYSTEM_DVBC_SUPPORT
  11616. case UI_EVENT_HKC_DVBC:
  11617. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11618. {
  11619. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_RETURN, 0);
  11620. APP_GUIOBJ_Channel_SetRFType(FRONTEND_CONNECT_TYPE_DVB_C, AL_DB_INVALIDHDL);
  11621. }
  11622. break;
  11623. #endif
  11624. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  11625. case UI_EVENT_HKC_DVBS:
  11626. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11627. {
  11628. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_RETURN, 0);
  11629. APP_GUIOBJ_Channel_SetRFType(FRONTEND_CONNECT_TYPE_DVB_S, AL_DB_INVALIDHDL);
  11630. }
  11631. break;
  11632. #endif
  11633. #ifdef CONFIG_CI_SUPPORT
  11634. case UI_EVENT_HKC_CIINFO:
  11635. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11636. {
  11637. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_OBJECT_OPEN|PASS_TO_SYSAPP, (DVB_GUIOBJ_CI_MENU|(1<<16)));
  11638. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  11639. DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_CAM_ON_INIT, dParam);
  11640. }
  11641. break;
  11642. #endif
  11643. case UI_EVENT_HKC_DVD:
  11644. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11645. {
  11646. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_DVD);
  11647. }
  11648. break;
  11649. case UI_EVENT_HKC_FACTORYMENU:
  11650. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11651. {
  11652. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_FACTORY, UI_EVENT_HKC_FACTORYMENU);
  11653. }
  11654. break;
  11655. case UI_EVENT_HKC_VERSION:
  11656. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11657. {
  11658. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING))
  11659. {
  11660. DVBApp_ResetPopup_Channel();
  11661. _DVBApp_CloseAllMenu();
  11662. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING, 1);
  11663. Factory_Ver_Debug();
  11664. }
  11665. }
  11666. break;
  11667. case UI_EVENT_HKC_VOLUME80:
  11668. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11669. {
  11670. APP_Audio_SetVolume(80);
  11671. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  11672. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  11673. g_stVariationalData.Volume = 80;
  11674. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  11675. ITEM_OFFSET(APP_SETTING_Variational_t, Volume),
  11676. sizeof(g_stVariationalData.Volume),&(g_stVariationalData.Volume));
  11677. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  11678. ITEM_OFFSET(APP_SETTING_Variational_t, Volume), sizeof(g_stVariationalData.Volume));
  11679. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_ADJUST, ADJUST_VOLUME);
  11680. }
  11681. break;
  11682. case UI_EVENT_HKC_VOLUMEUP10:
  11683. case UI_EVENT_HKC_VOLUMEDOWN10:
  11684. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11685. {
  11686. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  11687. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  11688. UINT8 u8VolumeIdx = g_stVariationalData.Volume;
  11689. if (dMessage == UI_EVENT_HKC_VOLUMEUP10)
  11690. {
  11691. u8VolumeIdx += 10;
  11692. g_stVariationalData.Volume = u8VolumeIdx >= ADJUST_MAX_VALUE ? ADJUST_MAX_VALUE : u8VolumeIdx;
  11693. }
  11694. else if (dMessage == UI_EVENT_HKC_VOLUMEDOWN10)
  11695. {
  11696. g_stVariationalData.Volume = u8VolumeIdx <= 10 ? ADJUST_MIN_VALUE : u8VolumeIdx - 10;
  11697. }
  11698. APP_Audio_SetVolume((UINT32)g_stVariationalData.Volume);
  11699. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  11700. ITEM_OFFSET(APP_SETTING_Variational_t, Volume),
  11701. sizeof(g_stVariationalData.Volume), &(g_stVariationalData.Volume));
  11702. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  11703. ITEM_OFFSET(APP_SETTING_Variational_t, Volume), sizeof(g_stVariationalData.Volume));
  11704. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_ADJUST, ADJUST_VOLUME);
  11705. }
  11706. break;
  11707. case UI_EVENT_HKC_RESET:
  11708. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11709. {
  11710. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  11711. APP_DVB_INTRA_EVENT_STOP_PLAYBACK, PLAYBACK_STOP_ALL);
  11712. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, eSourType);
  11713. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, eSourType);
  11714. #ifdef CONFIG_ATV_SUPPORT
  11715. #if (defined(CONFIG_DRAMSIZE) && (CONFIG_DRAMSIZE == 64)) || (defined (CONFIG_SUPPORT_64M_DTV))
  11716. AL_FW_ActiveDBModule(AL_DBTYPE_DVB_ATV);
  11717. #endif
  11718. AL_DB_Reset(AL_DBTYPE_DVB_ATV, al_true);
  11719. #endif
  11720. #if(defined CONFIG_DVB_SYSTEM_DVBT_SUPPORT)
  11721. AL_FW_SwitchDBModule(AL_DBTYPE_DVB_T);
  11722. AL_DB_Reset(AL_DBTYPE_DVB_T, al_true);
  11723. AL_Event_UnLockChannels(AL_DBTYPE_DVB_T, RESERVED_ORIGINAL_NET_ID, RESERVED_TRANSPORT_ID, RESERVED_SERVICE_ID);
  11724. AL_PR_DeleteAllSch(AL_DBTYPE_DVB_T,AL_PR_EVT_REM | AL_PR_SRV_REM);
  11725. #endif
  11726. #if(defined CONFIG_DVB_SYSTEM_DVBC_SUPPORT)
  11727. AL_FW_SwitchDBModule(AL_DBTYPE_DVB_C);
  11728. AL_DB_Reset(AL_DBTYPE_DVB_C, al_true);
  11729. AL_Event_UnLockChannels(AL_DBTYPE_DVB_C, RESERVED_ORIGINAL_NET_ID, RESERVED_TRANSPORT_ID, RESERVED_SERVICE_ID);
  11730. AL_PR_DeleteAllSch(AL_DBTYPE_DVB_C,AL_PR_EVT_REM | AL_PR_SRV_REM);
  11731. #endif
  11732. #if(defined CONFIG_DVB_SYSTEM_DVBS_SUPPORT)
  11733. AL_FW_SwitchDBModule(AL_DBTYPE_DVB_S);
  11734. AL_DB_Reset(AL_DBTYPE_DVB_S, al_true);
  11735. AL_Event_UnLockChannels(AL_DBTYPE_DVB_S, RESERVED_ORIGINAL_NET_ID, RESERVED_TRANSPORT_ID, RESERVED_SERVICE_ID);
  11736. AL_PR_DeleteAllSch(AL_DBTYPE_DVB_S,AL_PR_EVT_REM | AL_PR_SRV_REM);
  11737. DVBApp_LoadCustomerDB(AL_DBTYPE_DVB_S);
  11738. AL_DB_Sync(AL_DBTYPE_DVB_S, al_true);
  11739. #endif
  11740. App_Data_UserSetting_Restore();
  11741. App_Data_UserSetting_FM_Hotel_Restore();
  11742. App_Data_UserSetting_ResetLangContry_ByFMDefaultValue();
  11743. APP_Video_ResetTVSetting();
  11744. GL_TaskSleep(2000);
  11745. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF);
  11746. }
  11747. break;
  11748. case UI_EVENT_HKC_RESET_DEFAULT_FAC:
  11749. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11750. {
  11751. extern void _APP_GUIOBJ_FM_FactorySetting_Shipping(void);
  11752. _APP_GUIOBJ_FM_FactorySetting_Shipping();
  11753. }
  11754. break;
  11755. case UI_EVENT_HKC_TV:
  11756. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11757. {
  11758. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_ATV);
  11759. }
  11760. break;
  11761. case UI_EVENT_HKC_AV:
  11762. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11763. {
  11764. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_AV);
  11765. }
  11766. break;
  11767. case UI_EVENT_HKC_AV2:
  11768. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11769. {
  11770. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_AV1);
  11771. }
  11772. break;
  11773. case UI_EVENT_HKC_PC:
  11774. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11775. {
  11776. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_PC);
  11777. }
  11778. break;
  11779. case UI_EVENT_HKC_YPBPR:
  11780. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11781. {
  11782. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_YPBPR);
  11783. }
  11784. break;
  11785. case UI_EVENT_HKC_YPBPR2:
  11786. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11787. {
  11788. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_YPBPR1);
  11789. }
  11790. break;
  11791. case UI_EVENT_HKC_HDMI:
  11792. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11793. {
  11794. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_HDMI);
  11795. }
  11796. break;
  11797. case UI_EVENT_HKC_HDMI2:
  11798. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11799. {
  11800. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_HDMI1);
  11801. }
  11802. break;
  11803. case UI_EVENT_HKC_HDMI3:
  11804. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11805. {
  11806. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_HDMI2);
  11807. }
  11808. break;
  11809. case UI_EVENT_HKC_SCART:
  11810. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11811. {
  11812. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_SCART);
  11813. }
  11814. break;
  11815. case UI_EVENT_HKC_USB:
  11816. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11817. {
  11818. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_MEDIA);
  11819. }
  11820. break;
  11821. #endif
  11822. case UI_EVENT_PAUSE:
  11823. case UI_EVENT_PLAY_PAUSE:
  11824. #ifdef CONFIG_SUPPORT_MHEG5
  11825. #ifdef SUPPORT_SUBTITLE_ON_PG
  11826. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  11827. #endif
  11828. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  11829. {
  11830. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  11831. {
  11832. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  11833. if (sdRet == SP_SUCCESS)
  11834. {
  11835. break;
  11836. }
  11837. }
  11838. }
  11839. #endif
  11840. #ifdef CONFIG_SUPPORT_PVR
  11841. if ((MID_REC_MODE_AUTO == u8MIDRecMode) && (u8MidRecState != MID_REC_STATUS_STOP))
  11842. {
  11843. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER)
  11844. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD)
  11845. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  11846. {
  11847. break;
  11848. }
  11849. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  11850. {
  11851. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  11852. }
  11853. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERPAUSE);
  11854. }
  11855. #if 0//def SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD
  11856. else if((MID_REC_MODE_MANUAL == u8MIDRecMode) && (u8MidRecState != MID_REC_STATUS_STOP))
  11857. {
  11858. if (APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL)
  11859. == MID_PLAYBK_PROG_STATE_LOCKED)
  11860. {
  11861. break;
  11862. }
  11863. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER)
  11864. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  11865. {
  11866. break;
  11867. }
  11868. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD))
  11869. {
  11870. break;
  11871. }
  11872. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  11873. {
  11874. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  11875. }
  11876. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  11877. {
  11878. if (DVBAPP_Pvr_GetRECPlayFlag())
  11879. {
  11880. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERNORMAL);
  11881. }
  11882. else
  11883. {
  11884. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERPAUSE);
  11885. }
  11886. }
  11887. }
  11888. #else
  11889. else
  11890. {
  11891. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) &&
  11892. (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  11893. {
  11894. MID_RecorderPauseResume();
  11895. _DVBApp_Recorder_PauseResume();
  11896. g_bIsPlaykey = FALSE;
  11897. }
  11898. else if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)) &&
  11899. (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  11900. {
  11901. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  11902. if (bSignalState != AL_DVB_MONITOR_VALUE_TRUE)
  11903. {
  11904. break;
  11905. }
  11906. switch (APP_DVB_Playback_GetProgStateByHandle(eNetType, hProg))
  11907. {
  11908. case MID_PLAYBK_PROG_STATE_ONLY_VIDEO_SCRAMBLED:
  11909. dvb_printf("Error: %s program state scrambled!\n", __FUNCTION__);
  11910. case MID_PLAYBK_PROG_STATE_AUDIO_VIDEO_SCRAMBLED:
  11911. dvb_printf("Error: %s program state scrambled!\n", __FUNCTION__);
  11912. case MID_PLAYBK_PROG_STATE_ONLY_AUDIO_SCRAMBLED:
  11913. dvb_printf("Error: %s program state scrambled!\n", __FUNCTION__);
  11914. case MID_PLAYBK_PROG_STATE_TEMP_SERVICE:
  11915. dvb_printf("Error: %s program state data service!\n", __FUNCTION__);
  11916. case MID_PLAYBK_PROG_STATE_NOT_RUNNING:
  11917. dvb_printf("Error: %s program state not running!\n", __FUNCTION__);
  11918. case MID_PLAYBK_PROG_STATE_LOCKED:
  11919. dvb_printf("Error: %s program state locked!\n", __FUNCTION__);
  11920. return 0;
  11921. default:
  11922. break;
  11923. }
  11924. MID_RecorderPauseResume();
  11925. _DVBApp_Recorder_PauseResume();
  11926. g_bIsPlaykey = TRUE;
  11927. }
  11928. }
  11929. #endif
  11930. break;
  11931. #else
  11932. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  11933. break;
  11934. #endif
  11935. case UI_EVENT_TIMESHIFT:
  11936. #ifdef REMINDER_OLNY_NO_RECORD
  11937. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  11938. break;
  11939. #endif
  11940. #ifdef CONFIG_SUPPORT_PVR
  11941. #if defined(SUPPORT_HOTEL_MODE_PVR_FUNCTION_CONTROL)
  11942. if((g_stFactoryHotelData.HotelModeOnOff)&&(!g_stFactoryHotelData.PVRFunction))
  11943. {
  11944. break;
  11945. }
  11946. #elif defined(SUPPORT_PVR_ONOFF)
  11947. if(!g_stSetupData.PVROnOff)
  11948. {
  11949. break;
  11950. }
  11951. #endif
  11952. if (u8MidRecState == MID_REC_STATUS_STOP)
  11953. {
  11954. if (DVBApp_CheckForRecord(MID_REC_MODE_TIMESHIFT_AFTER_REC) != SP_SUCCESS)
  11955. {
  11956. break;
  11957. }
  11958. #ifdef CONFIG_SUPPORT_MHEG5
  11959. if (APP_Area_SupportDtg() && SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  11960. {
  11961. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_MHEG_FOR_TIMESHIFT);
  11962. }
  11963. else
  11964. #endif
  11965. // #ifdef SUPPORT_TEAC_TIMESHIFT_CTRL
  11966. #if defined(SUPPORT_TEAC_TIMESHIFT_CTRL) || defined(SUPPORT_PVR_SPEC_START_NO_POP)
  11967. //for mantis 191631, TEAC spec. start timeshift immediately with no pop msg
  11968. {
  11969. PVR_DEBF(" ==timeshift start is called!!!== \n");
  11970. _DVBApp_CloseAllMenu();
  11971. DVBApp_StartRecord(MID_REC_MODE_TIMESHIFT_AFTER_REC);
  11972. }
  11973. #else
  11974. {
  11975. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_START);
  11976. }
  11977. #endif
  11978. break;
  11979. }
  11980. else if ((MID_REC_STATUS_STOP != u8MidRecState)
  11981. && (MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode))
  11982. {
  11983. PVR_DEBF(" dvb app stop timeshift -UI_EVENT_TIMESHIFT- \n");
  11984. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP);
  11985. }
  11986. break;
  11987. #else
  11988. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  11989. break;
  11990. #endif
  11991. #ifdef CONFIG_SUPPORT_PVR
  11992. case UI_EVENT_REC_LIST:
  11993. #if (defined CONFIG_IR501)
  11994. //case UI_EVENT_DEVLIST:
  11995. #endif
  11996. #if defined(SUPPORT_HOTEL_MODE_PVR_FUNCTION_CONTROL)
  11997. if((g_stFactoryHotelData.HotelModeOnOff)&&(!g_stFactoryHotelData.PVRFunction))
  11998. {
  11999. break;
  12000. }
  12001. #elif defined(SUPPORT_PVR_ONOFF)
  12002. if(!g_stSetupData.PVROnOff)
  12003. {
  12004. break;
  12005. }
  12006. #endif
  12007. if (MID_RecorderIsCurRecording() != DRV_SUCCESS) //not allow to open timerlist when recording
  12008. {
  12009. DVBApp_ResetPopup_Channel();
  12010. _DVBApp_CloseAllMenu();
  12011. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  12012. {
  12013. #ifdef Subtitle_Freeze
  12014. AL_Subtitle_SetFreeze(FALSE);
  12015. #else
  12016. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  12017. #endif
  12018. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  12019. }
  12020. if (APP_GetPlaybackPauseState() == TRUE)
  12021. {
  12022. MID_PlaybackStreamResume(1);
  12023. APP_SetPlaybackPauseState(FALSE);
  12024. }
  12025. #ifdef SUB_CUSTOMER_Tianle
  12026. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC, 0);
  12027. #else
  12028. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST, 0);
  12029. #endif
  12030. }
  12031. break;
  12032. case UI_EVENT_REC_FILE:
  12033. #ifdef REMINDER_OLNY_NO_RECORD
  12034. break;
  12035. #endif
  12036. #if defined(SUPPORT_HOTEL_MODE_PVR_FUNCTION_CONTROL)
  12037. if((g_stFactoryHotelData.HotelModeOnOff)&&(!g_stFactoryHotelData.PVRFunction))
  12038. {
  12039. break;
  12040. }
  12041. #elif defined(SUPPORT_PVR_ONOFF)
  12042. if(!g_stSetupData.PVROnOff)
  12043. {
  12044. break;
  12045. }
  12046. #endif
  12047. if (!(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_RECORDLIST)))
  12048. {
  12049. #ifndef SUPPORT_TEAC_TIMESHIFT_CTRL
  12050. if (u8MidRecState == MID_REC_STATUS_STOP)
  12051. #endif
  12052. {
  12053. DVBApp_ResetPopup_Channel();
  12054. _DVBApp_CloseAllMenu();
  12055. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  12056. {
  12057. #ifdef Subtitle_Freeze
  12058. AL_Subtitle_SetFreeze(FALSE);
  12059. #else
  12060. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  12061. #endif
  12062. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  12063. }
  12064. if (APP_GetPlaybackPauseState() == TRUE)
  12065. {
  12066. MID_PlaybackStreamResume(1);
  12067. APP_SetPlaybackPauseState(FALSE);
  12068. }
  12069. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_RECORDLIST, 0);
  12070. }
  12071. #ifndef SUPPORT_TEAC_TIMESHIFT_CTRL
  12072. else
  12073. {
  12074. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  12075. }
  12076. #endif
  12077. }
  12078. else
  12079. {
  12080. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_RECORDLIST);
  12081. if (APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_LOCKED)
  12082. {
  12083. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  12084. }
  12085. }
  12086. break;
  12087. #endif
  12088. /*#ifdef CONFIG_SUPPORT_PVR
  12089. case APP_DVB_GLOBAL_EVENT_REC_DURATION_EXIT:
  12090. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME))
  12091. {
  12092. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME);
  12093. }
  12094. break;
  12095. case APP_DVB_GLOBAL_EVENT_REC_GOTO_EXIT:
  12096. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_GOTO);
  12097. break;
  12098. #endif*/
  12099. case APP_GLOBAL_EVENT_POPMSG_YES:
  12100. #ifdef CONFIG_CIPLUS_SUPPORT
  12101. if (POPMSG_CONFIRM_ASK_PROFILE_ACTION == dParam)
  12102. {
  12103. APP_CIPLUS_ProfileAction(FALSE);
  12104. }
  12105. #endif
  12106. #ifdef SUPPORT_DYNAMIC_MULTIPLEXES
  12107. if (dParam == PLAYBACK_POPUP_PROMPT_OTH_TP_ADD_SRV)
  12108. {
  12109. _DVBApp_NewServicesToDatabase();
  12110. }
  12111. else
  12112. if (dParam == PLAYBACK_POPUP_CONFIRM_REMOVE_SRV)
  12113. {
  12114. DVBApp_RemoveUnstableService();//zhongbaoxing added to remove not running services @20120210
  12115. }
  12116. else
  12117. #endif
  12118. #ifdef CONFIG_SUPPORT_PVR
  12119. if (dParam == POPMSG_CONFIRM_REC_REMIDER_TIME)
  12120. {
  12121. if(DVBApp_GetReminderTime2Show() > 1)//For confirm record ahead
  12122. {
  12123. memset(&g_stDetails,0,sizeof(AL_PR_details_t));
  12124. memset(&g_stOldDetails,0,sizeof(AL_PR_details_t));
  12125. AL_PR_GetById(g_dReminderId, &g_stDetails);
  12126. AL_PR_GetById(g_dReminderId, &g_stOldDetails);
  12127. DVBApp_PVRRec_SetTimerCancle();
  12128. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  12129. (APP_DVB_GLOBAL_EVENT_PVRSCH | PASS_TO_SYSAPP), (UINT32)&g_stOldDetails);
  12130. }
  12131. }
  12132. else if (dParam == POPMSG_CONFIRM_FIND_NEW_TSID)
  12133. {
  12134. dvb_printf("======POPMSG_CONFIRM_FIND_NEW_TSID YES\n");
  12135. #ifdef CONFIG_DTV_SUPPORT
  12136. if (APP_GetPlaybackPauseState() == TRUE)
  12137. {
  12138. MID_PlaybackStreamResume(1);
  12139. APP_SetPlaybackPauseState(FALSE);
  12140. }
  12141. bFindNewTSID = TRUE;
  12142. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS, SEARCH_D_FULL_FREQ_MODE);
  12143. #endif
  12144. //APP_GUIOBJ_DVB_PartitionList_PartitionFormat();
  12145. }
  12146. else if ((dParam == POPMSG_CONFIRM_START_RECORD)
  12147. || (dParam == POPMSG_CONFIRM_STOP_MHEG_FOR_RECORD))
  12148. {
  12149. dvb_printf("start record is call\n");
  12150. _DVBApp_CloseAllMenu();
  12151. _APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurTime();
  12152. DVBApp_StartRecord(MID_REC_MODE_MANUAL);
  12153. }
  12154. else if (dParam == POPMSG_CONFIRM_STOP_THIFT_TO_REC)
  12155. {
  12156. DVBApp_StopTimeshift(TRUE);
  12157. _DVBApp_CloseAllMenu();
  12158. _APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurTime();
  12159. DVBApp_StartRecord(MID_REC_MODE_MANUAL);
  12160. }
  12161. #ifdef SUPPORT_PVR_REMINDER_CONFIRM_SPEC
  12162. else if ((dParam == POPMSG_CONFIRM_STOP_REC_FOR_REMINDER)
  12163. ||(dParam == POPMSG_CONFIRM_STOP_TSHIFT_FOR_REMINDER)
  12164. ||(dParam == POPMSG_CONFIRM_STOP_REC_FOR_TIMER_REC)
  12165. ||(dParam == POPMSG_CONFIRM_STOP_TSHIFT_FOR_TIMER_REC))
  12166. {
  12167. _DVBApp_StopRECForTimerConfirmDone(dParam);
  12168. }
  12169. #endif
  12170. else if (dParam == POPMSG_CONFIRM_RECORDER_SPEED_NOT_ENOUGH)
  12171. {
  12172. INT32 iRet;
  12173. dvb_printf("====== force to enter record !\n");
  12174. _DVBApp_CloseAllMenu();
  12175. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_INIT);
  12176. MID_Recorder_SetRecMode(MID_REC_MODE_MANUAL);
  12177. iRet = APP_GUIOBJ_DVB_PvrRec_StartRecord();
  12178. if (iRet != PVR_MSG_SUCCESS)
  12179. {
  12180. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  12181. MID_Recorder_SetRecMode(MID_REC_MODE_MAX);
  12182. APP_GUIOBJ_DVB_PvrRec_RegUninitCallback();
  12183. return SP_ERR_FAILURE;
  12184. }
  12185. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, 0);
  12186. }
  12187. else if ((dParam == POPMSG_CONFIRM_START_TIMESHIFT)
  12188. || (dParam == POPMSG_CONFIRM_STOP_MHEG_FOR_TIMESHIFT))
  12189. {
  12190. _DVBApp_CloseAllMenu();
  12191. DVBApp_StartRecord(MID_REC_MODE_TIMESHIFT_AFTER_REC);
  12192. }
  12193. else if (dParam == POPMSG_CONFIRM_TIMESHIFT_SPEED_NOT_ENOUGH)
  12194. {
  12195. INT32 iRet;
  12196. PVR_DEBF("====== force to enter timeshift !\n");
  12197. _DVBApp_CloseAllMenu();
  12198. if (MID_REC_MODE_AUTO == g_eCheckRecMode)
  12199. {
  12200. MID_Recorder_SetRecMode(MID_REC_MODE_AUTO);
  12201. }
  12202. else
  12203. {
  12204. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_INIT);
  12205. MID_Recorder_SetRecMode(MID_REC_MODE_TIMESHIFT_AFTER_REC);
  12206. }
  12207. iRet = APP_GUIOBJ_DVB_PvrRec_StartRecord();
  12208. if (iRet != PVR_MSG_SUCCESS)
  12209. {
  12210. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  12211. MID_Recorder_SetRecMode(MID_REC_MODE_MAX);
  12212. APP_GUIOBJ_DVB_PvrRec_RegUninitCallback();
  12213. g_eCheckRecMode = MID_REC_MODE_MAX;
  12214. return SP_ERR_FAILURE;
  12215. }
  12216. if (MID_REC_MODE_AUTO != MID_Recorder_GetRecMode())
  12217. {
  12218. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  12219. {
  12220. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  12221. }
  12222. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, 0);
  12223. }
  12224. }
  12225. else if (dParam == POPMSG_CONFIRM_STOP_RECORD)
  12226. {
  12227. dvb_printf("stop record is call\n");
  12228. DVBApp_SetTVRadioSwap(FALSE);
  12229. g_ProgHandleB4Rec = 0;
  12230. DVBApp_StopRecord();
  12231. memset(&g_stDetails,0,sizeof(AL_PR_details_t));
  12232. if(g_stUserInfoData.Subtitle == 0)
  12233. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5);
  12234. }
  12235. else if (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT)
  12236. {
  12237. dvb_printf("stop timeshift is call\n");
  12238. DVBApp_StopTimeshift(TRUE);
  12239. if(g_stUserInfoData.Subtitle == 0)
  12240. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5);
  12241. }
  12242. else if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_RECALL)
  12243. {
  12244. DVBApp_SetTVRadioSwap(FALSE);
  12245. g_ProgHandleB4Rec = 0;
  12246. DVBApp_StopRecord();
  12247. memset(&g_stDetails,0,sizeof(AL_PR_details_t));
  12248. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_RECALL, 0);
  12249. }
  12250. else if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_CH_CHANGE)
  12251. {
  12252. dvb_printf("stop record for channel change!\n");
  12253. DVBApp_StopRecord();
  12254. memset(&g_stDetails,0,sizeof(AL_PR_details_t));
  12255. {
  12256. if (g_bIsNumKey)
  12257. {
  12258. _DVBApp_Zapping(eServiceType, g_ProgHandle, FALSE, 0, TRUE);
  12259. return 0;
  12260. }
  12261. if (g_bIsFav == FALSE)
  12262. {
  12263. // normal
  12264. if (TRUE == g_bIsCHUp)
  12265. {
  12266. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, 1, APP_FAVORITE_NONE);
  12267. }
  12268. else if (FALSE == g_bIsCHUp)
  12269. {
  12270. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, -1, APP_FAVORITE_NONE);
  12271. }
  12272. }
  12273. else
  12274. {
  12275. // fav
  12276. if (TRUE == g_bIsCHUp)
  12277. {
  12278. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, 1, FavType);
  12279. }
  12280. else if (FALSE == g_bIsCHUp)
  12281. {
  12282. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, -1, FavType);
  12283. }
  12284. }
  12285. if (hProg != AL_DB_INVALIDHDL)
  12286. {
  12287. AL_DB_EDBType_t db_type;
  12288. AL_DB_ERecordType_t record_type;
  12289. AL_DB_GetRecordType(hProg, &db_type, &record_type);
  12290. if (db_type == AL_DBTYPE_DVB_ATV)
  12291. {
  12292. _DVBApp_CloseAllMenu();
  12293. break;
  12294. }
  12295. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  12296. {
  12297. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  12298. }
  12299. #ifdef SUPPORT_CEC_TV
  12300. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  12301. {
  12302. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  12303. }
  12304. #endif
  12305. _DVBApp_Zapping(eServiceType, hProg, FALSE, 0, TRUE);
  12306. }
  12307. else
  12308. {
  12309. DVBApp_CheckProgramType(TRUE);
  12310. }
  12311. break;
  12312. }
  12313. }
  12314. else if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_SRC_CHANGE)
  12315. {
  12316. dvb_printf("stop record for source change!\n");
  12317. DVBApp_StopRecord();
  12318. memset(&g_stDetails,0,sizeof(AL_PR_details_t));
  12319. {
  12320. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE))
  12321. {
  12322. _DVBApp_Exit_All_Menu();
  12323. }
  12324. else
  12325. {
  12326. DVBApp_ResetPopup_Channel();
  12327. _DVBApp_CloseAllMenu();
  12328. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOURCE, 0);
  12329. }
  12330. break;
  12331. }
  12332. }
  12333. else if (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_RECALL)
  12334. {
  12335. DVBApp_StopTimeshift(TRUE);
  12336. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_RECALL, 0);
  12337. }
  12338. else if (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_CH_CHANGE)
  12339. {
  12340. dvb_printf("stop timeshift for channel change!\n");
  12341. DVBApp_StopTimeshift(TRUE);
  12342. {
  12343. if (g_bIsNumKey)
  12344. {
  12345. _DVBApp_Zapping(eServiceType, g_ProgHandle, FALSE, 0, TRUE);
  12346. return 0;
  12347. }
  12348. if (g_bIsFav == FALSE)
  12349. {
  12350. //normal
  12351. if (TRUE == g_bIsCHUp)
  12352. {
  12353. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, 1, APP_FAVORITE_NONE);
  12354. }
  12355. else if (FALSE == g_bIsCHUp)
  12356. {
  12357. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, -1, APP_FAVORITE_NONE);
  12358. }
  12359. }
  12360. else
  12361. {
  12362. // fav
  12363. if (TRUE == g_bIsCHUp)
  12364. {
  12365. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, 1, FavType);
  12366. }
  12367. else if (FALSE == g_bIsCHUp)
  12368. {
  12369. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, -1, FavType);
  12370. }
  12371. }
  12372. if (hProg != AL_DB_INVALIDHDL)
  12373. {
  12374. AL_DB_EDBType_t db_type;
  12375. AL_DB_ERecordType_t record_type;
  12376. AL_DB_GetRecordType(hProg, &db_type, &record_type);
  12377. if (db_type == AL_DBTYPE_DVB_ATV)
  12378. {
  12379. _DVBApp_CloseAllMenu();
  12380. break;
  12381. }
  12382. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  12383. {
  12384. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  12385. }
  12386. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  12387. {
  12388. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  12389. }
  12390. //APP_DVB_Playback_SetUnlock(FALSE);
  12391. //DVBApp_ChannelChange(eServiceType, sdProgIndex);
  12392. _DVBApp_Zapping(eServiceType, hProg, FALSE, 0, TRUE);
  12393. }
  12394. else
  12395. {
  12396. DVBApp_CheckProgramType(TRUE);
  12397. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  12398. }
  12399. break;
  12400. }
  12401. }
  12402. else if (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_SRC_CHANGE)
  12403. {
  12404. dvb_printf("stop timeshift for source change!\n");
  12405. DVBApp_StopTimeshift(TRUE);
  12406. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  12407. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  12408. if (APP_PVR_TIMESHIFT_AUTO == g_stFeatureData.AutoTimeShift)
  12409. {
  12410. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  12411. }
  12412. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE))
  12413. {
  12414. _DVBApp_Exit_All_Menu();
  12415. }
  12416. else
  12417. {
  12418. DVBApp_ResetPopup_Channel();
  12419. _DVBApp_CloseAllMenu();
  12420. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOURCE, 0);
  12421. }
  12422. break;
  12423. }
  12424. else if ((dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_EPG)
  12425. || (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_EPG))
  12426. {
  12427. if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_EPG)
  12428. {
  12429. DVBApp_StopRecord();
  12430. }
  12431. else
  12432. {
  12433. DVBApp_StopTimeshift(TRUE);
  12434. }
  12435. _DVBApp_CloseAllMenu();
  12436. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  12437. if (bHasValidServ)
  12438. {
  12439. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, dGuiObj, 0);
  12440. }
  12441. else
  12442. {
  12443. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  12444. }
  12445. break;
  12446. }
  12447. else if ((dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_CHNLIST)
  12448. || (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_CHNLIST))
  12449. {
  12450. if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_CHNLIST)
  12451. {
  12452. DVBApp_StopRecord();
  12453. }
  12454. else
  12455. {
  12456. DVBApp_StopTimeshift(TRUE);
  12457. }
  12458. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD))
  12459. {
  12460. _DVBApp_CloseAllMenu();
  12461. }
  12462. else
  12463. {
  12464. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST))
  12465. {
  12466. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST);
  12467. _DVBApp_CheckPopupDisplay();
  12468. }
  12469. else
  12470. {
  12471. _DVBApp_CloseAllMenu();
  12472. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST, 0);
  12473. }
  12474. }
  12475. break;
  12476. }
  12477. else if ((dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_FAVLIST)
  12478. || (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_FAVLIST))
  12479. {
  12480. if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_FAVLIST)
  12481. {
  12482. DVBApp_StopRecord();
  12483. }
  12484. else
  12485. {
  12486. DVBApp_StopTimeshift(TRUE);
  12487. }
  12488. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD))
  12489. {
  12490. _DVBApp_CloseAllMenu();
  12491. }
  12492. else
  12493. {
  12494. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST))
  12495. {
  12496. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST);
  12497. _DVBApp_CheckPopupDisplay();
  12498. }
  12499. else
  12500. {
  12501. _DVBApp_CloseAllMenu();
  12502. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST, 0);
  12503. }
  12504. }
  12505. break;
  12506. }
  12507. else if ((dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_USBKEY)
  12508. || (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_USBKEY))
  12509. {
  12510. if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_USBKEY)
  12511. {
  12512. DVBApp_StopRecord();
  12513. }
  12514. else
  12515. {
  12516. DVBApp_StopTimeshift(TRUE);
  12517. }
  12518. _DVBApp_CloseAllMenu();
  12519. DVBApp_ResetPopup_Channel();
  12520. if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_MEDIA))
  12521. {
  12522. dvb_printf("APP_GUIOBJ_Source_SetAppSource Fail!!!!!!!!!\n");
  12523. }
  12524. break;
  12525. }
  12526. else if ((dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_TVRADIOKEY)
  12527. || (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_TVRADIOKEY))
  12528. {
  12529. if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_TVRADIOKEY)
  12530. {
  12531. DVBApp_StopRecord();
  12532. memset(&g_stDetails,0,sizeof(AL_PR_details_t));
  12533. }
  12534. else
  12535. {
  12536. DVBApp_StopTimeshift(TRUE);
  12537. }
  12538. if (APP_DVB_Playback_SwapServiceType(eNetType, (AL_DB_ERecordType_t *)&NextServiceType, &u32TotalNum) != AL_SUCCESS)
  12539. {
  12540. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  12541. }
  12542. break;
  12543. }
  12544. else if (POPMSG_CONFIRM_REC_REMIDER_TIME_CONFIRM == dParam)
  12545. {
  12546. APP_WAKEUP_Recorder_ResetTimeout();
  12547. DVBApp_PVRRec_SetTimerCancle();
  12548. }
  12549. else if (POPMSG_CONFIRM_PVR_TIMESHIFT_STANDBY == dParam)
  12550. {
  12551. if (u8MidRecState != MID_REC_STATUS_STOP)
  12552. {
  12553. if (MID_TSPLParser_GetThreadState() == FALSE)
  12554. DVBApp_StopRecord();
  12555. else
  12556. DVBApp_StopTimeshift(TRUE);
  12557. }
  12558. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF);
  12559. }
  12560. else if ((dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_MHEG)
  12561. || (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_MHEG))
  12562. {
  12563. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB);
  12564. g_stUserInfoData.Subtitle = 0; //OFF
  12565. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  12566. ITEM_OFFSET(APP_SETTING_UserInfo_t, Subtitle),
  12567. sizeof(g_stUserInfoData.Subtitle), &(g_stUserInfoData.Subtitle));
  12568. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  12569. ITEM_OFFSET(APP_SETTING_UserInfo_t, Subtitle), sizeof(g_stUserInfoData.Subtitle));
  12570. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  12571. {
  12572. DVBApp_StopRecord();
  12573. }
  12574. else if (MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode)
  12575. {
  12576. DVBApp_StopTimeshift(TRUE);
  12577. }
  12578. else if (MID_REC_MODE_AUTO == u8MIDRecMode)
  12579. {
  12580. g_stFeatureData.AutoTimeShift = APP_PVR_TIMESHIFT_OFF;
  12581. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  12582. ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift),
  12583. sizeof(g_stFeatureData.AutoTimeShift), &(g_stFeatureData.AutoTimeShift));
  12584. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  12585. ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift), sizeof(g_stFeatureData.AutoTimeShift));
  12586. DVBApp_StopTimeshift(TRUE);
  12587. }
  12588. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5);
  12589. }
  12590. else if (POPMSG_CONFIRM_INVALID_USB == dParam)
  12591. {
  12592. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF);
  12593. }
  12594. else
  12595. #endif
  12596. //zhongbaoxing added for mantis 0135994 @20110608 +++
  12597. #ifdef CONFIG_SUPPORT_MHEG5
  12598. if (dParam == PLAYBACK_POPUP_CONFIRM_STOP_SUBTITLE_TO_OPEN_MHEG5)
  12599. {
  12600. DVBApp_ClosePopup(PLAYBACK_POPUP_CONFIRM_STOP_SUBTITLE_TO_OPEN_MHEG5, UI_EVENT_NULL);
  12601. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_SUB);
  12602. if(g_stUserInfoData.Subtitle != 0)
  12603. {
  12604. g_stUserInfoData.Subtitle = 0; //OFF
  12605. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  12606. ITEM_OFFSET(APP_SETTING_UserInfo_t, Subtitle),
  12607. sizeof(g_stUserInfoData.Subtitle), &(g_stUserInfoData.Subtitle));
  12608. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  12609. ITEM_OFFSET(APP_SETTING_UserInfo_t, Subtitle), sizeof(g_stUserInfoData.Subtitle));
  12610. }
  12611. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5);
  12612. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE)) //Gahu:D0305
  12613. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  12614. }
  12615. else
  12616. #endif
  12617. //zhongbaoxing added for mantis 0135994 @20110608 ---
  12618. #ifdef CONFIG_CONFIRM_AUTO_UPGRADE
  12619. if (dParam == POPMSG_CONFIRM_START_AUTO_UPGRADE)
  12620. {
  12621. DVBApp_ResetPopup_Channel();//add for 0159405 @20111114
  12622. if (!APP_MenuMgr_Exist_Main_Menu()
  12623. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING)))
  12624. {
  12625. _DVBApp_Exit_All_Menu();
  12626. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, SOFTWARE_UPGRADE_FROM_AUTO_UPGRADE);
  12627. }
  12628. else if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE))
  12629. {
  12630. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, 0);
  12631. }
  12632. }
  12633. else
  12634. #endif
  12635. #ifdef N32_GAME_SUPPORT
  12636. if (dParam == POPMSG_CONFIRM_START_GAME_UPGRADE)
  12637. {
  12638. dvb_printf("\n!!!start ugrade game\n");
  12639. _DVBApp_ShowPopup(DVB_APP_POP_MSG_IMPORTING_GAME);
  12640. APP_Clone_Revert_BinFile_to_System(UPGRADE_GAME_BIN_ID);
  12641. }
  12642. else
  12643. #endif
  12644. if (POPMSG_CONFIRM_FLIP == dParam)
  12645. {
  12646. g_stFactoryUserData.Function.PanelSetting.n_FlipIndex = Factory_GetFlipIndex();
  12647. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER,
  12648. ITEM_OFFSET(APP_SETTING_FactoryUser_t, Function.PanelSetting.n_FlipIndex), sizeof(g_stFactoryUserData.Function.PanelSetting.n_FlipIndex),
  12649. &(g_stFactoryUserData.Function.PanelSetting.n_FlipIndex));
  12650. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER,
  12651. ITEM_OFFSET(APP_SETTING_FactoryUser_t, Function.PanelSetting.n_FlipIndex), sizeof(g_stFactoryUserData.Function.PanelSetting.n_FlipIndex));
  12652. MID_TVFE_SetPanelInverse((BOOL)(g_stFactoryUserData.Function.PanelSetting.n_FlipIndex));
  12653. //MID_DISP_DTVSetFlip((MID_DISP_FlipType_t)(g_stFactoryUserData.Function.PanelSetting.n_FlipIndex) ); // added for VIP test
  12654. GL_TaskSleep(2000);
  12655. APP_Sysset_Reset_System();
  12656. // APP_Panel_SetBacklightEnOnOff(FALSE);//makr for S2tek
  12657. // MID_GPIO_SetGPIOOffLevel(GPIO_PANEL_ON_PIN);//makr for S2tek
  12658. // system_reset();//makr for S2tek
  12659. }
  12660. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  12661. if (POPMSG_CONFIRM_ERASE_WHOLE_FLASH == dParam)
  12662. {
  12663. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE))
  12664. {
  12665. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, SOFTWARE_UPGRADE_FROM_FM);
  12666. }
  12667. }
  12668. #endif
  12669. break;
  12670. case APP_GLOBAL_EVENT_POPMSG_NO:
  12671. #ifdef CONFIG_SUPPORT_MHEG5
  12672. if (dParam == PLAYBACK_POPUP_CONFIRM_STOP_SUBTITLE_TO_OPEN_MHEG5)
  12673. {
  12674. DVBApp_ClosePopup(PLAYBACK_POPUP_CONFIRM_STOP_SUBTITLE_TO_OPEN_MHEG5, UI_EVENT_NULL);
  12675. }
  12676. else
  12677. #endif
  12678. #ifdef CONFIG_SUPPORT_PVR
  12679. if (dParam == POPMSG_CONFIRM_REC_REMIDER_TIME)
  12680. {
  12681. APP_WAKEUP_Recorder_ResetTimeout();
  12682. DVBApp_PVRRec_SetTimerCancle();
  12683. //SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  12684. //(APP_GLOBAL_EVENT_PVR_REMINDER_CONFIRM | PASS_TO_SYSAPP), 0);
  12685. }
  12686. else if (dParam == POPMSG_CONFIRM_REC_REMIDER_TIME_CONFIRM)
  12687. {
  12688. al_uint32 CurTimeInSec = 0;
  12689. UINT32 RECStartTime = 0;
  12690. AL_Time_GetCurTimeInSecs(&CurTimeInSec);
  12691. RECStartTime = DVBApp_GetTimerRECStartTime();
  12692. if (RECStartTime > CurTimeInSec)
  12693. {
  12694. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_REMIDER);
  12695. }
  12696. }
  12697. else if (dParam == POPMSG_CONFIRM_STOP_RECORD)
  12698. {
  12699. /*added by xm.zeng on 2014/7/3 for mantis id:0023174*/
  12700. if((g_bNoSteamData == TRUE)
  12701. && (bSetUnMuteFlag == FALSE)
  12702. && (g_bMidHasUnmute == FALSE))
  12703. {
  12704. DVBApp_CheckProgramType(TRUE);
  12705. }
  12706. }
  12707. if (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_SRC_CHANGE)
  12708. {
  12709. DVBApp_CheckProgramType(FALSE);
  12710. }
  12711. if (POPMSG_CONFIRM_INSERT_USB == dParam)
  12712. {
  12713. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF);
  12714. }
  12715. #endif
  12716. if (dParam == POPMSG_CONFIRM_FLIP)
  12717. {
  12718. DVBApp_ClosePopup(POPMSG_CONFIRM_FLIP, UI_EVENT_NULL);
  12719. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  12720. (UI_EVENT_FACTORY|PASS_TO_SYSAPP), 1);
  12721. }
  12722. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  12723. if (POPMSG_CONFIRM_ERASE_WHOLE_FLASH == dParam)
  12724. {
  12725. //if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE))
  12726. //{
  12727. //SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, SOFTWARE_UPGRADE_FROM_FM);
  12728. //}
  12729. }
  12730. #endif
  12731. #ifdef CONFIG_CONFIRM_AUTO_UPGRADE
  12732. if (dParam == POPMSG_CONFIRM_START_AUTO_UPGRADE)
  12733. {
  12734. AutoUpgrade = FALSE;
  12735. if (dLastFocusedIndex != DVB_GUIOBJ_POPMSG)
  12736. {
  12737. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, dLastFocusedIndex, 0);
  12738. if (dLastFocusedIndex == DVB_GUIOBJ_PROGINFO)
  12739. {
  12740. DVBApp_CheckProgramType(TRUE);
  12741. }
  12742. else
  12743. {
  12744. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  12745. if (bHasValidServ)
  12746. {
  12747. DVBApp_CheckProgramType(FALSE);
  12748. }
  12749. }
  12750. }
  12751. else
  12752. {
  12753. DVBApp_CheckProgramType(TRUE);
  12754. }
  12755. }
  12756. #endif
  12757. break;
  12758. case APP_GLOBAL_EVENT_POPMSG_TIMEOUT:
  12759. switch (dParam)
  12760. {
  12761. #ifdef CONFIG_CIPLUS_SUPPORT
  12762. case POPMSG_PROMP_CIPLUS_UPGRADE_SUCC:
  12763. #ifdef SUPPORT_LED_FLASH
  12764. APP_LED_Flash_Timer_Set(LED_FLASH_TYPE_GREEN, 0);
  12765. #endif
  12766. break;
  12767. case POPMSG_PROMP_CIPLUS_UPGRADE_FAILED:
  12768. #ifdef SUPPORT_LED_FLASH
  12769. APP_LED_Flash_Timer_Set(LED_FLASH_TYPE_GREEN, 0);
  12770. #endif
  12771. break;
  12772. #endif
  12773. default:
  12774. break;
  12775. }
  12776. break;
  12777. case APP_GLOBAL_EVENT_POPMSG_EXIT_KEY_MATCH:
  12778. #ifdef CONFIG_SUPPORT_PVR
  12779. if (dParam == POPMSG_CONFIRM_REC_REMIDER_TIME)
  12780. {
  12781. APP_WAKEUP_Recorder_ResetTimeout();
  12782. DVBApp_PVRRec_SetTimerCancle();
  12783. //SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  12784. //(APP_GLOBAL_EVENT_PVR_REMINDER_CONFIRM | PASS_TO_SYSAPP), 0);
  12785. }
  12786. #endif
  12787. #ifdef CONFIG_CONFIRM_AUTO_UPGRADE
  12788. if (dParam == POPMSG_CONFIRM_START_AUTO_UPGRADE)
  12789. {
  12790. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  12791. AutoUpgrade = FALSE;
  12792. if (bHasValidServ)
  12793. {
  12794. DVBApp_CheckProgramType(TRUE);
  12795. }
  12796. }
  12797. #endif
  12798. break;
  12799. #ifdef CONFIG_SUPPORT_OTA_UPGRADE
  12800. case DMN_EVENT_OTA_EVENT_PROMPT:
  12801. if (APP_GUIOBJ_DVB_OTAPrompt_GetShowFlag() == OtaShowPromt_MAX || APP_GUIOBJ_DVB_OTAPrompt_GetShowFlag() == OtaShowPromt_FromScan)
  12802. {
  12803. dvb_printf("only one choice\n");
  12804. }
  12805. else
  12806. {
  12807. APP_GUIOBJ_DVB_OTAPrompt_SetShowFlag(OtaShowPromt_MAX);
  12808. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OTA_UPGRADE_PROMPT))
  12809. {
  12810. if (FALSE == DVBApp_GetOTAStatus())
  12811. {
  12812. DVBApp_SetOTAStatus(TRUE);
  12813. }
  12814. _DVBApp_ExitAll();
  12815. SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_OBJECT_OPEN | PASS_TO_SYSAPP, DVB_GUIOBJ_OTA_UPGRADE_PROMPT);
  12816. MID_OtaMonStop(TRUE);
  12817. autoupgrade_sate = AU_MAX;
  12818. }
  12819. }
  12820. break;
  12821. case DMN_EVENT_OTA_EVENT_PROGRESS:
  12822. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OTA_UPGRADE_PROGRESS))
  12823. {
  12824. if(FALSE == DVBApp_GetOTAStatus())
  12825. {
  12826. DVBApp_SetOTAStatus(TRUE);
  12827. }
  12828. _DVBApp_ExitAll();
  12829. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  12830. APP_DVB_INTRA_EVENT_STOP_PLAYBACK, PLAYBACK_STOP_ALL|PLAYBACK_KEEP_DMX_FIFO);
  12831. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  12832. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  12833. APP_GUIOBJ_DVB_OTAUpgrade_RegisterUICallbk();
  12834. #ifdef CONFIG_SUPPORT_SSU_ENHANCE_UPGRADE
  12835. APP_GUIOBJ_DVB_OTAPrompt_RevTimer(); /*revert wake up time in this situation*/
  12836. DVBApp_SetAU_Sate(AU_MAX);
  12837. DVBApp_SetAutoUpgrade(FALSE);
  12838. #endif
  12839. SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_OBJECT_OPEN | PASS_TO_SYSAPP, DVB_GUIOBJ_OTA_UPGRADE_PROGRESS);
  12840. }
  12841. break;
  12842. #endif
  12843. case DMN_EVENT_AUTODVD_CHANGE_SOURCE:
  12844. #if 1
  12845. /* Check Valid state +++*/
  12846. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0,
  12847. sizeof(APP_SETTING_FactoryUser_t), &(g_stFactoryUserData));
  12848. if (g_stFactoryUserData.n_FactSet_BurningMode == al_true)
  12849. {
  12850. break;
  12851. }
  12852. if ((MAIN_APP_SUCCESS != MAINAPP_GetActiveSystemAppIndex(&dAppIndex))||
  12853. (APP_MenuMgr_Exist_Scan_Menu()) ||
  12854. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  12855. (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE)) ||
  12856. #endif
  12857. (AL_CS_IsStop() != al_true))
  12858. {
  12859. break;
  12860. }
  12861. #endif
  12862. DVBApp_ResetPopup_Channel();
  12863. _DVBApp_CloseAllMenu();
  12864. if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(dParam))
  12865. {
  12866. dvb_printf("[DvbApp OnGlobalEvent] APP_GUIOBJ_Source_SetAppSource faild.\n");
  12867. }
  12868. break;
  12869. case DMN_EVENT_AUTOSCART_CHANGE_SOURCE:
  12870. /* Check Valid state +++*/
  12871. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0,
  12872. sizeof(APP_SETTING_FactoryUser_t), &(g_stFactoryUserData));
  12873. if (g_stFactoryUserData.n_FactSet_BurningMode == al_true)
  12874. {
  12875. break;
  12876. }
  12877. /* recording */
  12878. /*#ifdef CONFIG_SUPPORT_PVR
  12879. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  12880. {
  12881. UINT32 u32PopMsgDialogType = POPMSG_PROMPT_NO_PROG;
  12882. APP_GUIOBJ_PopMsg_GetMsgDialogType(&u32PopMsgDialogType);
  12883. if (u32PopMsgDialogType == POPMSG_CONFIRM_REC_REMIDER_TIME
  12884. || u32PopMsgDialogType == POPMSG_CONFIRM_REC_REMIDER_TIME_CONFIRM)
  12885. {
  12886. #ifdef CONFIG_DVB_SYSTEM
  12887. //APP_SCARTIN_ResetAutoPlugInStatus(AUTO_PLUGIN_SCART0);
  12888. //clear SCART PlugInStatus for mantis 0204109
  12889. APP_SCARTIN_SetAutoPlugInStatus(AUTO_PLUGIN_SCART0);
  12890. APP_SCARTIN_SetPlugStatus(AUTO_PLUGIN_SCART0);
  12891. #endif
  12892. break;
  12893. }
  12894. }
  12895. if (u8MidRecState != MID_REC_STATUS_STOP)
  12896. {
  12897. #ifdef CONFIG_DVB_SYSTEM
  12898. //APP_SCARTIN_ResetAutoPlugInStatus(AUTO_PLUGIN_SCART0);
  12899. //clear SCART PlugInStatus for mantis 0204109
  12900. APP_SCARTIN_SetAutoPlugInStatus(AUTO_PLUGIN_SCART0);
  12901. APP_SCARTIN_SetPlugStatus(AUTO_PLUGIN_SCART0);
  12902. #endif
  12903. break;
  12904. }
  12905. #endif*/
  12906. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT //for mantis 0202693
  12907. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SATSYSTEM)||
  12908. SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_LNBTYPE)||
  12909. SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SATEDIT)||
  12910. SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SATADD)||
  12911. SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TPEDIT)||
  12912. SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TPADD)||
  12913. SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SETLOCATION)||
  12914. SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_LNBTYPE)||
  12915. SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SETPOSTION))
  12916. {
  12917. // dvb_printf("\n ======%s %s %d\n",__FUNCTION__,__FUNCTION__,__LINE__);
  12918. //clear SCART PlugInStatus
  12919. APP_SCARTIN_SetAutoPlugInStatus(AUTO_PLUGIN_SCART0);
  12920. APP_SCARTIN_SetPlugStatus(AUTO_PLUGIN_SCART0);
  12921. break;
  12922. }
  12923. #endif
  12924. if ((MAIN_APP_SUCCESS != MAINAPP_GetActiveSystemAppIndex(&dAppIndex))||
  12925. (APP_MenuMgr_Exist_Scan_Menu()) ||
  12926. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  12927. (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE)) ||
  12928. #endif
  12929. (AL_CS_IsStop() != al_true))
  12930. {
  12931. #ifdef CONFIG_DVB_SYSTEM
  12932. APP_SCARTIN_ResetAutoPlugInStatus(AUTO_PLUGIN_SCART0);
  12933. #endif
  12934. break;
  12935. }
  12936. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  12937. {
  12938. UINT32 u32PopMsgDialogType = POPMSG_PROMPT_NO_PROG;
  12939. APP_GUIOBJ_PopMsg_GetMsgDialogType(&u32PopMsgDialogType);
  12940. if (u32PopMsgDialogType == POPMSG_CONFIRM_REC_REMIDER_TIME)
  12941. {
  12942. break;
  12943. }
  12944. }
  12945. #ifdef CONFIG_SUPPORT_PVR
  12946. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  12947. {
  12948. break;
  12949. }
  12950. #endif
  12951. /* Check Valid state ---*/
  12952. DVBApp_ResetPopup_Channel();
  12953. _DVBApp_CloseAllMenu();
  12954. #ifdef CONFIG_SUPPORT_PVR
  12955. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  12956. {
  12957. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY);
  12958. }
  12959. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAYINFO))
  12960. {
  12961. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAYINFO);
  12962. }
  12963. #endif
  12964. if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(dParam))
  12965. {
  12966. dvb_printf("[DvbApp OnGlobalEvent] APP_GUIOBJ_Source_SetAppSource faild.\n");
  12967. }
  12968. else
  12969. {
  12970. #ifdef CONFIG_DVB_SYSTEM
  12971. if (dParam == APP_SOURCE_SCART)
  12972. {
  12973. APP_SCARTIN_SetAutoPlugInStatus(AUTO_PLUGIN_SCART0);
  12974. APP_SCARTIN_SetPlugStatus(AUTO_PLUGIN_SCART0);
  12975. }
  12976. #endif
  12977. }
  12978. break;
  12979. case APP_GLOBAL_EVENT_SLEEP_TIMER_INFO:
  12980. if ((APP_MenuMgr_Exist_Scan_Menu())
  12981. #ifdef CONFIG_SUPPORT_USB_UPGRADE //zhongbaoxing added for mantis bug 139209 @20110623
  12982. || (APP_Data_Get_USB_Upgrade_State() == TRUE)
  12983. #endif
  12984. )
  12985. {
  12986. APP_GUIOBJ_SleepTimer_Reset();
  12987. }
  12988. else
  12989. {
  12990. _DVBApp_CloseAllMenu();
  12991. DVBApp_ResetPopup_Channel();
  12992. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO))
  12993. {
  12994. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO, dParam);
  12995. }
  12996. }
  12997. break;
  12998. #ifdef CONFIG_CIPLUS_SUPPORT
  12999. case APP_GLOBAL_EVENT_ASK_PROFILE_ACTION:
  13000. APP_DVB_CI_AskProfileAction();
  13001. break;
  13002. #endif
  13003. case APP_GLOBAL_EVENT_CIHDCPKEY_RESULT:
  13004. if (dParam == 0xffffffff)
  13005. break;
  13006. UINT32 u32CIupgrade = dParam & 0xf;
  13007. UINT32 u32HDCPupgrade = (dParam & 0xf0)>>4;
  13008. {
  13009. UINT32 u32PQupgrade = (dParam & 0xf00)>>8;
  13010. if(u32PQupgrade != APP_DATA_KEYUPGRADE_NOT_UPGRADE)
  13011. {
  13012. _DVBApp_ShowPopup(DVB_APP_POP_MSG_IMPORT_PQ_PASS);
  13013. printf("PQ Bin import successfull !");
  13014. }
  13015. }
  13016. if (u32CIupgrade && u32HDCPupgrade)
  13017. {
  13018. // upgrade CI & HDCP
  13019. if (u32CIupgrade == APP_DATA_KEYUPGRADE_SUCCESS)
  13020. {
  13021. if (u32HDCPupgrade == APP_DATA_KEYUPGRADE_SUCCESS)
  13022. {
  13023. // CI OK, HDCP OK
  13024. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_PASS_HDCP_PASS);
  13025. }
  13026. else
  13027. {
  13028. // CI OK, HDCP fail
  13029. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_PASS_HDCP_FAIL);
  13030. }
  13031. }
  13032. else
  13033. {
  13034. if (u32HDCPupgrade == APP_DATA_KEYUPGRADE_SUCCESS)
  13035. {
  13036. // CI fail, HDCP OK
  13037. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_FAIL_HDCP_PASS);
  13038. }
  13039. else
  13040. {
  13041. // CI fail, HDCP fail
  13042. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_FAIL_HDCP_FAIL);
  13043. }
  13044. }
  13045. }
  13046. else if (u32CIupgrade != APP_DATA_KEYUPGRADE_NOT_UPGRADE)
  13047. {
  13048. _DVBApp_CloseAllMenu();
  13049. // upgrade CI
  13050. if (u32CIupgrade == APP_DATA_KEYUPGRADE_SUCCESS)
  13051. {
  13052. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CIPLUSE_UPGRADE_SUCC);
  13053. }
  13054. else
  13055. {
  13056. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CIPLUSE_UPGRADE_FAILE);
  13057. }
  13058. }
  13059. else if (u32HDCPupgrade != APP_DATA_KEYUPGRADE_NOT_UPGRADE)
  13060. {
  13061. // upgrade HDCP
  13062. if (u32HDCPupgrade == APP_DATA_KEYUPGRADE_SUCCESS)
  13063. {
  13064. _DVBApp_ShowPopup(DVB_APP_POP_MSG_HDCP_UPGRADE_SUCC);
  13065. }
  13066. else
  13067. {
  13068. _DVBApp_ShowPopup(DVB_APP_POP_MSG_HDCP_UPGRADE_FAILE);
  13069. }
  13070. }
  13071. break;
  13072. #ifdef CONFIG_SUPPORT_3D_EN
  13073. case UI_EVENT_3D:
  13074. dvb_printf("\n\n===UI_EVENT_3D [%s]====\n\n",__FUNCTION__);
  13075. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  13076. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  13077. if (g_stFactoryHotelData.HotelModeOnOff == 1&&g_stFactoryHotelData.PictureLock == 1)
  13078. {
  13079. dvb_printf("[%s] Picture Option has been Lock On!!\n",__FUNCTION__);
  13080. break;
  13081. }
  13082. APP_Video_Check3DState(&ePicture3DState);
  13083. if(ePicture3DState == APP_VIDEO_IMAGE_3D_DISABLED)
  13084. {
  13085. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_3D_INFO))
  13086. {
  13087. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_3D_INFO);
  13088. }
  13089. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  13090. break;
  13091. }
  13092. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_3D_INFO))
  13093. {
  13094. Boolean bShowLogo = DTV_FALSE;
  13095. bShowLogo = APP_GUIOBJ_DVB_Playback_GetShowLogoState();
  13096. AL_DB_ERecordType_t eRecordType;
  13097. MID_PlaybackGetCurProgHandle(&eRecordType, al_null);
  13098. if((eRecordType == AL_RECTYPE_DVBRADIO) || (bShowLogo == DTV_TRUE))
  13099. {
  13100. break;
  13101. }
  13102. _DVBApp_CloseAllMenu();
  13103. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  13104. {
  13105. if (eSourType == APP_SOURCE_DTV)
  13106. {
  13107. #ifdef CONFIG_SUPPORT_SUBTITLE
  13108. UINT8 tmpIdx = 0;
  13109. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  13110. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  13111. tmpIdx = g_stUserInfoData.Subtitle;
  13112. if (tmpIdx == DVB_SWITCH_ON)
  13113. {
  13114. #ifdef Subtitle_Freeze
  13115. AL_Subtitle_SetFreeze(FALSE);
  13116. #else
  13117. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  13118. #endif
  13119. }
  13120. #endif
  13121. #ifdef CONFIG_SUPPORT_MHEG5
  13122. #ifdef CONFIG_SUPPORT_SUBTITLE
  13123. if (tmpIdx == DVB_SWITCH_OFF)
  13124. #endif
  13125. {
  13126. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5);
  13127. }
  13128. #endif
  13129. }
  13130. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  13131. }
  13132. if (APP_GetPlaybackPauseState() == TRUE)
  13133. {
  13134. MID_PlaybackStreamResume(1);
  13135. g_PauseState = FALSE;
  13136. }
  13137. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_3D_INFO, dMessage);
  13138. dvb_printf("\n\n%s %d\n\n", __FUNCTION__, dMessage);
  13139. }
  13140. else
  13141. {
  13142. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_3D_INFO);
  13143. }
  13144. break;
  13145. case APP_GLOBAL_EVENT_3D_TIMER_INFO:
  13146. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0,
  13147. sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  13148. APP_StorageSource_Type_t eStorageSourType = APP_STORAGE_SOURCE_MAX;
  13149. eStorageSourType = APP_Data_UserSetting_SourceTypeMappingToStorage(eSourType);
  13150. if((!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_3D_INFO)) && (g_stPictureData.stPictureModeSourceTab[eStorageSourType].st3DMenu.Mode3D != SPAL_PQ_3DMODE_OFF))
  13151. {
  13152. Boolean bShowLogo = DTV_FALSE;
  13153. bShowLogo = APP_GUIOBJ_DVB_Playback_GetShowLogoState();
  13154. AL_DB_ERecordType_t eRecordType;
  13155. MID_PlaybackGetCurProgHandle(&eRecordType, al_null);
  13156. if((eRecordType == AL_RECTYPE_DVBRADIO) || (bShowLogo == DTV_TRUE))
  13157. {
  13158. break;
  13159. }
  13160. _DVBApp_CloseAllMenu();
  13161. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,APP_GUIOBJ_3D_INFO, dParam);
  13162. }
  13163. break;
  13164. #endif
  13165. #ifdef NET_SUPPORT
  13166. case UI_EVENT_SRC_NET:
  13167. if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_NET))
  13168. {
  13169. dvb_printf("UI_EVENT_SRC_NET change Net Fail!!!!!!!!!\n");
  13170. }
  13171. break;
  13172. #endif
  13173. #ifdef CONFIG_HDMI_SUPPORT_MHL
  13174. case DMN_EVENT_MHL_CHANGE_SOURCE:
  13175. /* Check Valid state +++*/
  13176. /* Auto install not finish */
  13177. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL))
  13178. {
  13179. break;
  13180. }
  13181. /* Scan State */
  13182. if (AL_CS_IsStop() != 1)
  13183. {
  13184. break;
  13185. }
  13186. /*
  13187. ** Channel Tuning,
  13188. ** Channel - Digital Manual Search,
  13189. */
  13190. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_AUTO_SEARCH))
  13191. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS))
  13192. #if (defined CONFIG_DVB_SYSTEM_DVBT_SUPPORT)
  13193. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_DVB_T_MANUAL_SEARCH))
  13194. #endif
  13195. #if (defined CONFIG_DVB_SYSTEM_DVBC_SUPPORT)
  13196. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_DVB_C_MANUAL_SEARCH))
  13197. #endif
  13198. )
  13199. {
  13200. break;
  13201. }
  13202. #ifdef CONFIG_SUPPORT_PVR
  13203. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  13204. {
  13205. break;
  13206. }
  13207. #endif
  13208. DVBApp_ResetPopup_Channel();
  13209. _DVBApp_CloseAllMenu();
  13210. /* Check Valid state ---*/
  13211. APP_Source_Type_t eMhlSrc;
  13212. UINT8 IsMHLSoure;
  13213. APP_GOBJ_Source_CheckAndGetMHLSource(&IsMHLSoure,&eMhlSrc);
  13214. if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(eMhlSrc))
  13215. {
  13216. dvb_printf("[DvbApp OnGlobalEvent] APP_GUIOBJ_Source_SetAppSource faild.\n");
  13217. }
  13218. break;
  13219. #endif
  13220. #ifdef SUPPORT_CEC_TV
  13221. case DMN_EVENT_CECTV_CHANGE_SOURCE:
  13222. /* Check Valid state +++*/
  13223. /* Auto install not finish */
  13224. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL))
  13225. {
  13226. break;
  13227. }
  13228. /* Scan State */
  13229. if (AL_CS_IsStop() != 1)
  13230. {
  13231. break;
  13232. }
  13233. /*
  13234. ** Channel Tuning,
  13235. ** Channel - Digital Manual Search,
  13236. */
  13237. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_AUTO_SEARCH))
  13238. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS))
  13239. #if (defined CONFIG_DVB_SYSTEM_DVBT_SUPPORT)
  13240. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_DVB_T_MANUAL_SEARCH))
  13241. #endif
  13242. #if (defined CONFIG_DVB_SYSTEM_DVBC_SUPPORT)
  13243. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_DVB_C_MANUAL_SEARCH))
  13244. #endif
  13245. )
  13246. {
  13247. break;
  13248. }
  13249. #ifdef CONFIG_SUPPORT_PVR
  13250. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  13251. {
  13252. break;
  13253. }
  13254. #endif
  13255. /* Check Valid state ---*/
  13256. DVBApp_ResetPopup_Channel();
  13257. _DVBApp_CloseAllMenu();
  13258. APP_Source_Type_t eSrc;
  13259. APP_Video_GetCECPortMapping(dParam, &eSrc);
  13260. if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(eSrc))
  13261. {
  13262. dvb_printf("[DvbApp OnGlobalEvent] APP_GUIOBJ_Source_SetAppSource faild.\n");
  13263. }
  13264. break;
  13265. #endif
  13266. #ifdef CONFIG_SUPPORT_PVR
  13267. case DMN_EVENT_USB_HDD_ATTACHED:
  13268. {
  13269. int iPtListIdx = -1;
  13270. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  13271. dvb_printf("dvb has received DMN_EVENT_USB_HDD_ATTACHED\n\n\n\n");
  13272. //if (MID_RecorderGetDefaultPartition(&iPtListIdx) != MID_REC_FS_OK)
  13273. {
  13274. if (APP_GUIOBJ_DVB_PartitionList_GetFirstFat(&iPtListIdx) == TRUE)
  13275. {
  13276. printf("set default partition\n\n");
  13277. MID_RecorderSetDefaultPartition(iPtListIdx, MID_REC_PARTITION_SET_FORCE);
  13278. }
  13279. }
  13280. break;
  13281. }
  13282. case DMN_EVENT_USB_HDD_DETACHED:
  13283. {
  13284. int i;
  13285. int MountCount;
  13286. char DefPartitionName[5];
  13287. char AttchPartitionName[5];
  13288. Boolean HaveDefPartition = FALSE;
  13289. int devicelen = 4;
  13290. MountCount = MID_PartitionList_GetMountedCount();
  13291. APP_GUIOBJ_DVB_PartitionList_ClearPartitionInfo();
  13292. if (MountCount == 0 && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  13293. {
  13294. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_NO_STORAGE);
  13295. }
  13296. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  13297. {
  13298. strncpy(DefPartitionName, (char *)(MID_RecorderGetRecordingCwd()+5), devicelen);
  13299. }
  13300. else
  13301. {
  13302. char DefPartition[15];
  13303. int iPtListIdx;
  13304. if (MID_RecorderGetDefaultPartition(&iPtListIdx) != MID_REC_FS_OK)
  13305. {
  13306. iPtListIdx = 0; //set partition 0 for default partition
  13307. }
  13308. MID_PartitionList_GetMountName(0, DefPartition);
  13309. strncpy(DefPartitionName, (char *)(DefPartition+5),devicelen);
  13310. }
  13311. int j;
  13312. for (j = 0; j < devicelen; j++ )
  13313. {
  13314. if (DefPartitionName[j] == '/')
  13315. {
  13316. DefPartitionName[j] = '\0';
  13317. }
  13318. }
  13319. for (i=0; i < MountCount; i++)
  13320. {
  13321. strncpy(AttchPartitionName, (char *)(MID_PartitionList_GetDevName(i)+5), devicelen );
  13322. for (j = 0; j < devicelen; j++ )
  13323. {
  13324. if (AttchPartitionName[j] == '/')
  13325. {
  13326. AttchPartitionName[j] = '\0';
  13327. }
  13328. }
  13329. //printf("AttchPartitionName is %s, DefPartitionName is %s\n",AttchPartitionName,DefPartitionName);
  13330. if (strncmp(DefPartitionName, AttchPartitionName, devicelen) == 0)
  13331. {
  13332. //printf("---------------------------------------------- %d\n",__LINE__);
  13333. HaveDefPartition = TRUE;
  13334. break;
  13335. }
  13336. }
  13337. if (HaveDefPartition == FALSE)
  13338. {
  13339. //printf("---------------------------------------------- %d\n",__LINE__);
  13340. if (MID_REC_MODE_MANUAL == u8MIDRecMode || MID_REC_MODE_UNATTENDED == u8MIDRecMode)
  13341. {
  13342. DVBApp_StopRecord();
  13343. }
  13344. else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode) ||
  13345. (MID_REC_MODE_AUTO == u8MIDRecMode))
  13346. {
  13347. DVBApp_StopTimeshift(TRUE);
  13348. }
  13349. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  13350. {
  13351. #ifdef CONFIG_SUPPORT_SUBTITLE
  13352. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU))
  13353. {
  13354. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU);
  13355. }
  13356. #endif
  13357. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD))
  13358. {
  13359. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD);
  13360. }
  13361. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY);
  13362. }
  13363. DVBApp_SetBGTimeshift(0);
  13364. MID_TSPLParser_Init("NULL"); //for mantis 0150969, set the wrong szPtName to reset the g_sdPltCnt
  13365. MID_RecorderRefreshDefaultPartition();
  13366. }
  13367. break;
  13368. }
  13369. case DMN_EVENT_DVB_RECORDER_GFS_OK:
  13370. {
  13371. INT32 dFocusedIndex;
  13372. if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &dFocusedIndex))
  13373. {
  13374. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_PARTITION_SET_SUCCESSFUL);
  13375. }
  13376. }
  13377. break;
  13378. #endif
  13379. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  13380. case APP_GLOBAL_EVENT_USB_UPGRADE:
  13381. {
  13382. UINT32 dActiveSysApp = TOTAL_SYS_APP_SIZE;
  13383. unsigned int dIndex;
  13384. MAINAPP_GetActiveSystemAppIndex(&dIndex);
  13385. if (MAINAPP_GetActiveSystemAppIndex(&dActiveSysApp) != MAIN_APP_SUCCESS)
  13386. {
  13387. break;
  13388. }
  13389. if (dActiveSysApp != SYS_APP_DVB)
  13390. {
  13391. break;
  13392. }
  13393. #ifdef SUPPORT_FACTORY_AUTO_TEST
  13394. if(APP_Factory_GetUpgradeandAutoTestFlag() == TRUE)
  13395. {
  13396. AutoUpgrade = TRUE;
  13397. _DVBApp_Exit_All_Menu();
  13398. DVBApp_ResetPopup_Channel();//add for 0159405 @20111114
  13399. if(dParam==1)
  13400. {
  13401. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_GLOBAL_EVENT_ERASE_WHOLE_FLASH|PASS_TO_SYSAPP, 0);
  13402. }
  13403. else
  13404. {
  13405. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, SOFTWARE_UPGRADE_FROM_AUTO_UPGRADE);
  13406. }
  13407. break;
  13408. }
  13409. #endif
  13410. if(dParam==1)//from fm
  13411. {
  13412. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_GLOBAL_EVENT_ERASE_WHOLE_FLASH|PASS_TO_SYSAPP, 0);
  13413. break;
  13414. }
  13415. if (AL_CS_IsStop() == FALSE)
  13416. {
  13417. break;
  13418. }
  13419. }
  13420. if (!APP_MenuMgr_Exist_Main_Menu()
  13421. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING)))
  13422. {
  13423. _DVBApp_Exit_All_Menu();
  13424. DVBApp_ResetPopup_Channel();//add for 0159405 @20111114
  13425. AutoUpgrade = TRUE;
  13426. #if defined(CONFIG_CONFIRM_AUTO_UPGRADE)
  13427. if(FALSE == gUSBUpgradeBinIsSupperBin)
  13428. {
  13429. INT32 dFocusedIndex;
  13430. int ret = SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_ATV, &dFocusedIndex);
  13431. if (ret == SYSTEM_APP_SUCCESS)
  13432. {
  13433. dLastFocusedIndex = dFocusedIndex;
  13434. }
  13435. else if(ret == SYSTEM_APP_NO_FOCUSED_GUIOBJ)
  13436. {
  13437. dLastFocusedIndex = DVB_GUIOBJ_MAX;
  13438. }
  13439. SYSAPP_GOBJ_GetLastFocusedGUIObject(SYS_APP_DVB,&dLastFocusedIndex);
  13440. memset(&stPopup, 0x0, sizeof(PopmsgParam_t));
  13441. stPopup.eType = POPMSG_TYPE_CONFIRM;
  13442. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT | POPMSG_EXIT_RECALL;
  13443. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  13444. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_START_AUTO_UPGRADE;
  13445. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  13446. DVBApp_SchedulePopup(stPopup);
  13447. }
  13448. else
  13449. #endif
  13450. {
  13451. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, SOFTWARE_UPGRADE_FROM_AUTO_UPGRADE);
  13452. }
  13453. }
  13454. break;
  13455. #endif
  13456. #ifdef N32_GAME_SUPPORT
  13457. case APP_GLOBAL_EVENT_GAME_UPGRADE:
  13458. if (!APP_MenuMgr_Exist_Main_Menu()
  13459. && !(APP_MenuMgr_Exist_Factory_Menu()))
  13460. {
  13461. _DVBApp_Exit_All_Menu();
  13462. if(dParam == 0)
  13463. {
  13464. dvb_printf("\n!!!open confirm for game upgrade\n");
  13465. memset(&stPopup, 0x0, sizeof(PopmsgParam_t));
  13466. stPopup.eType = POPMSG_TYPE_CONFIRM;
  13467. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT | POPMSG_EXIT_RECALL;
  13468. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  13469. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_START_GAME_UPGRADE;
  13470. stPopup.extend.stConfirm.u8Default = POPMSG_YES;
  13471. DVBApp_SchedulePopup(stPopup);
  13472. }
  13473. else
  13474. {
  13475. dvb_printf("\n!!!show popmsg not enough size to upgrade game\n");
  13476. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_SIZE_FOR_GAME);
  13477. }
  13478. }
  13479. break;
  13480. #endif
  13481. case APP_GLOBAL_EVENT_FLIP:
  13482. if (APP_MenuMgr_Exist_Factory_Menu())
  13483. {
  13484. APP_MenuMgr_Exit_Factory_Menu();
  13485. }
  13486. memset(&stPopup, 0x0, sizeof(PopmsgParam_t));
  13487. stPopup.eType = POPMSG_TYPE_CONFIRM;
  13488. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT | POPMSG_EXIT_RECALL;
  13489. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  13490. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_FLIP;
  13491. stPopup.extend.stConfirm.u8Default = POPMSG_YES;
  13492. DVBApp_SchedulePopup(stPopup);
  13493. break;
  13494. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  13495. case APP_GLOBAL_EVENT_ERASE_WHOLE_FLASH:
  13496. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING))
  13497. {
  13498. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING);
  13499. }
  13500. memset(&stPopup, 0x0, sizeof(PopmsgParam_t));
  13501. stPopup.eType = POPMSG_TYPE_CONFIRM;
  13502. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT | POPMSG_EXIT_RECALL;
  13503. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  13504. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_ERASE_WHOLE_FLASH;
  13505. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  13506. DVBApp_SchedulePopup(stPopup);
  13507. break;
  13508. #endif
  13509. case APP_GLOBAL_EVENT_KEYLOCK:
  13510. _DVBApp_ShowPopup(DVB_APP_POP_MSG_KEYLOCK);
  13511. break;
  13512. #ifdef CONFIG_KEYPAD_SINGLE_REUSE
  13513. case APP_GLOBAL_EVENT_SINGLEKEYPAD_OPEN:
  13514. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SINGLEKEYPAD, 0);
  13515. break;
  13516. case APP_GLOBAL_EVENT_SINGLEKEYPAD_CLOSE:
  13517. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_SINGLEKEYPAD);
  13518. break;
  13519. #endif
  13520. case APP_GLOBAL_EVENT_OVER_MAXVOLUME:
  13521. _DVBApp_ShowPopup(DVB_APP_POP_MSG_OVERMAXVOLUME);
  13522. break;
  13523. #ifdef SUPPORT_SFU_AUTO_TEST
  13524. case APP_DVB_GLOBAL_EVENT_SET_RF_TYPE:
  13525. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_RETURN, 0);
  13526. APP_GUIOBJ_Channel_SetRFType(dParam, AL_DB_INVALIDHDL);
  13527. APP_Console_TO_SUF_Respond(CON_TO_SUF_ACK);
  13528. #if 0
  13529. extern void Enable_Debug_Message(UINT32 DBGStatus);
  13530. Enable_Debug_Message(1<<MODULEID_UMF);
  13531. dvb_printf("ACK\n");
  13532. Enable_Debug_Message(0);
  13533. #endif
  13534. break;
  13535. #endif
  13536. #ifdef SUPPORT_ATS
  13537. case APP_DVB_GLOBAL_EVENT_ATS_SET_RF_TYPE:
  13538. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_RETURN, 0);
  13539. APP_GUIOBJ_Channel_SetRFType(dParam, AL_DB_INVALIDHDL);
  13540. break;
  13541. case APP_DVB_GLOBAL_EVENT_ATS_GET_DEMODINFO_ON:
  13542. uGetDemodinfoOn = 1;
  13543. APP_ATS_Get_Demodinfo_On();
  13544. break;
  13545. case APP_DVB_GLOBAL_EVENT_ATS_GET_DEMODINFO_OFF:
  13546. uGetDemodinfoOn = 0;
  13547. break;
  13548. #endif
  13549. case UI_EVENT_MultiPanelIndex:
  13550. #ifdef SUPPORT_FACTORY_AUTO_TEST
  13551. if (APP_Factory_GetAutoTestOnOff() == TRUE)
  13552. {
  13553. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING))
  13554. {
  13555. DVBApp_ResetPopup_Channel();
  13556. _DVBApp_CloseAllMenu();
  13557. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING, 1);
  13558. Factory_Ver_Debug();
  13559. }
  13560. else
  13561. {
  13562. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING);
  13563. }
  13564. }
  13565. else
  13566. #endif
  13567. {
  13568. UINT8 u8PanelIdx = tv_GetPanelIndex();
  13569. u8PanelIdx = (u8PanelIdx + 1) % CONFIG_PANEL_NUM;
  13570. tv_SetPanelIndex(u8PanelIdx);
  13571. g_stFactoryUserData.Function.PanelSetting.n_MultiplePanelIndex = u8PanelIdx;
  13572. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER,
  13573. ITEM_OFFSET(APP_SETTING_FactoryUser_t, Function.PanelSetting.n_MultiplePanelIndex), sizeof(g_stFactoryUserData.Function.PanelSetting.n_MultiplePanelIndex),
  13574. &(g_stFactoryUserData.Function.PanelSetting.n_MultiplePanelIndex));
  13575. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER,
  13576. ITEM_OFFSET(APP_SETTING_FactoryUser_t, Function.PanelSetting.n_MultiplePanelIndex), sizeof(g_stFactoryUserData.Function.PanelSetting.n_MultiplePanelIndex));
  13577. printf("[%s], %d: Panel Index is %d\n", __FUNCTION__, __LINE__, u8PanelIdx);
  13578. break;
  13579. }
  13580. break;
  13581. #if (defined(SUPPORT_FACTORY_AUTO_TEST)||defined(SUPPORT_FACTORY_AUTO_TEST_MODE2))
  13582. case UI_EVENT_ERASE_HDCP:
  13583. case UI_EVENT_ERASE_CIKEY:
  13584. case UI_EVENT_FAC_HDCP_CHECK:
  13585. case UI_EVENT_FAC_CIPLUSKEY_CHECK:
  13586. case UI_EVENT_FAC_HDCP_UPDATE:
  13587. case UI_EVENT_FAC_CIPLUSKEY_UPDATE:
  13588. APP_CIPLUS_HDCP_Key_Action_Function(dMessage);
  13589. break;
  13590. case UI_EVENT_AUTO_TEST_ON:
  13591. case UI_EVENT_AUTO_TEST_OFF:
  13592. APP_Factory_Event_Action_Function(dMessage);
  13593. break;
  13594. #ifdef CONFIG_CI_SUPPORT
  13595. case UI_EVENT_AUTO_OUTPUTCI:
  13596. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  13597. {
  13598. APP_DVB_CI_GetCiStatus();
  13599. }
  13600. break;
  13601. #endif
  13602. #ifdef CONFIG_CI_SUPPORT
  13603. case UI_EVENT_AUTO_READCI:
  13604. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  13605. {
  13606. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_OBJECT_OPEN|PASS_TO_SYSAPP, (DVB_GUIOBJ_CI_MENU|(1<<16)));
  13607. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  13608. DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_CAM_ON_INIT, dParam);
  13609. }
  13610. break;
  13611. #endif
  13612. case UI_EVENT_AUTO_ATV:
  13613. case UI_EVENT_AUTO_DTV:
  13614. case UI_EVENT_AUTO_AV1:
  13615. case UI_EVENT_AUTO_AV2:
  13616. case UI_EVENT_AUTO_AV3:
  13617. case UI_EVENT_AUTO_SVIDEO1:
  13618. case UI_EVENT_AUTO_SVIDEO2:
  13619. case UI_EVENT_AUTO_SCART1:
  13620. case UI_EVENT_AUTO_SCART2:
  13621. case UI_EVENT_AUTO_YPBPR1:
  13622. case UI_EVENT_AUTO_YPBPR2:
  13623. case UI_EVENT_AUTO_YPBPR3:
  13624. case UI_EVENT_AUTO_HDMI1:
  13625. case UI_EVENT_AUTO_HDMI2:
  13626. case UI_EVENT_AUTO_HDMI3:
  13627. case UI_EVENT_AUTO_HDMI4:
  13628. case UI_EVENT_AUTO_PC:
  13629. case UI_EVENT_AUTO_MEDIA:
  13630. case UI_EVENT_AUTO_DVD:
  13631. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  13632. {
  13633. APP_Factory_SetAutoTestSourceChange(dMessage);
  13634. }
  13635. break;
  13636. case UI_EVENT_FAC_F1:
  13637. case UI_EVENT_FAC_RESET:
  13638. //if(APP_Factory_GetAutoTestOnOff() == TRUE)
  13639. {
  13640. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, eSourType);
  13641. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, eSourType);
  13642. DVBApp_ClearStatus();
  13643. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  13644. APP_DVB_INTRA_EVENT_STOP_PLAYBACK, PLAYBACK_STOP_ALL);
  13645. Factory_FactSet_ResetAllEx();
  13646. //APP_Sysset_Reset(APP_SYSSET_RESET_ALL);
  13647. }
  13648. break;
  13649. case UI_EVENT_VOL_MAX:
  13650. g_stVariationalData.Volume = 100;
  13651. APP_Audio_SetVolume(g_stVariationalData.Volume);
  13652. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  13653. ITEM_OFFSET(APP_SETTING_Variational_t, Volume),
  13654. sizeof(g_stVariationalData.Volume),&(g_stVariationalData.Volume));
  13655. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  13656. ITEM_OFFSET(APP_SETTING_Variational_t, Volume), sizeof(g_stVariationalData.Volume));
  13657. break;
  13658. #endif
  13659. #if 0
  13660. case FW_DB_LOAD_DEFAULT:
  13661. dvb_printf("[%s]FW_DB_LOAD_DEFAULT received.\n", __FUNCTION__);
  13662. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  13663. if (AL_DBTYPE_DVB_S == APP_DVB_Playback_GetCurrentNetType())
  13664. {
  13665. /* wait for DVB-S becomes acticve */
  13666. while(AL_FW_CheckActiveDBModule(AL_DBTYPE_DVB_S) != al_true);
  13667. DVBApp_LoadCustomerDB(AL_DBTYPE_DVB_S);
  13668. }
  13669. #endif
  13670. break;
  13671. #endif
  13672. #ifdef CONFIG_SUPPORT_EWS
  13673. case FW_EWS_FIND_AUD:
  13674. if (dParam != 0)
  13675. {
  13676. memset(&g_PrevAudioPid, 0, sizeof(DBPIDInfo_t));
  13677. g_PrevAudioPid.usDataPID = DB_DVB_INVALID_PID;
  13678. memset(&g_MonAudioPid, 0, sizeof(DBPIDInfo_t));
  13679. g_MonAudioPid.usDataPID = DB_DVB_INVALID_PID;
  13680. memcpy(&g_MonAudioPid, (DBPIDInfo_t *)dParam, sizeof(DBPIDInfo_t));
  13681. DMIOC_SET_EWS_PARAM stEwsParam;
  13682. memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM));
  13683. stEwsParam.bActive = FALSE;
  13684. ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam);
  13685. memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM));
  13686. stEwsParam.bActive = TRUE;
  13687. stEwsParam.clear_ews_flag = TRUE;
  13688. stEwsParam.PID = g_MonAudioPid.usDataPID;
  13689. dvb_printf("\n\n[%s]FW_EWS_FIND_AUD!!!!!!!, curr time: 0x%x\n\n", __FUNCTION__,GL_GetRtc32());
  13690. ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam);
  13691. g_EWSMode = TRUE;
  13692. GL_MemFree((DBPIDInfo_t *)(dParam));
  13693. dParam = 0;
  13694. }
  13695. break;
  13696. case FW_EWS_ACTIVE:
  13697. dvb_printf("\n\n[%s]FW_EWS_ACTIVE!!!!!!!, curr time: 0x%x\n\n", __FUNCTION__,GL_GetRtc32());
  13698. {
  13699. dvbpsi_anouncement_t stAnoumceData;
  13700. AL_Serv_SearchKey_t stSearchKey;
  13701. AL_RecHandle_t hProgHdl;
  13702. AL_RecHandle_t hTpHdl;
  13703. AL_RecHandle_t hCurrTpHdl;
  13704. UINT32 u32Param = 0;
  13705. DMIOC_SET_EWS_PARAM stEwsParam;
  13706. memset(&stAnoumceData, 0, sizeof(dvbpsi_anouncement_t));
  13707. memset(&stSearchKey, 0, sizeof(stSearchKey));
  13708. AL_EWS_Monitor_GetData(&stAnoumceData);
  13709. stSearchKey.u16OrigNetId = stAnoumceData.original_network_id;
  13710. stSearchKey.u16TsId = stAnoumceData.transport_stream_id;
  13711. stSearchKey.u16ServId = stAnoumceData.service_id;
  13712. stSearchKey.eDBType = eNetType;
  13713. stSearchKey.eRecType = AL_RECTYPE_DVBSERVICE;
  13714. stSearchKey.eSearchField = AL_SRV_SEARCHFIELD_ORIGNETID
  13715. | AL_SRV_SEARCHFIELD_TSID
  13716. | AL_SRV_SEARCHFIELD_SRVID;
  13717. if (AL_SUCCESS == AL_DB_GetMatchedRecord((AL_DB_RecordMatchFunc)AL_Serv_MatchRecBySearchKey,
  13718. (al_void *)&stSearchKey, eNetType, AL_RECTYPE_DVBSERVICE, AL_DB_REQ_GETFIRST, &hProgHdl))
  13719. {
  13720. MID_PlaybackGetCurProgHandle(al_null, &hCurrProgHandle);
  13721. if ((hCurrProgHandle != hProgHdl) && (hProgHdl != AL_DB_INVALIDHDL))
  13722. {
  13723. g_NonClearEWS = TRUE;
  13724. if ((g_MonAudioPid.usDataPID != DB_DVB_INVALID_PID) && (g_PrevAudioPid.usDataPID == DB_DVB_INVALID_PID))
  13725. {
  13726. g_PrevAudioPid.usDataPID = MID_PlaybackGetActiveAudHandle(TRUE);
  13727. g_PrevAudioPid.usCodec = MID_PlaybackGetActiveAudCodec();
  13728. }
  13729. memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM));
  13730. stEwsParam.bActive = FALSE;
  13731. ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam);
  13732. _DVBApp_Zapping(eServiceType, hProgHdl, TRUE, 0, TRUE);
  13733. g_PrevProgHandle = hCurrProgHandle;
  13734. hCurrTpHdl = hCurrProgHandle;
  13735. hTpHdl = hProgHdl;
  13736. if ((AL_SUCCESS == AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hCurrTpHdl))
  13737. && (AL_SUCCESS == AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hTpHdl))
  13738. && (hCurrTpHdl != AL_DB_INVALIDHDL) && (hTpHdl != AL_DB_INVALIDHDL) && (hCurrTpHdl != hTpHdl))
  13739. {
  13740. dvb_printf("[%s:%d] different tp, not need change audio pid !!!!!!!!!!!!!!!!!!!!!\n",__FUNCTION__,__LINE__);
  13741. memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM));
  13742. stEwsParam.bActive = TRUE;
  13743. stEwsParam.PID = g_MonAudioPid.usDataPID;
  13744. ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam);
  13745. }
  13746. else if (g_MonAudioPid.usDataPID != DB_DVB_INVALID_PID)
  13747. {
  13748. u32Param = g_MonAudioPid.usCodec<<16|g_MonAudioPid.usDataPID;
  13749. MID_PlaybackChangePid(MID_PLAYBK_CHANGE_AUDPID, u32Param);
  13750. memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM));
  13751. stEwsParam.bActive = TRUE;
  13752. stEwsParam.PID = g_MonAudioPid.usDataPID;
  13753. ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam);
  13754. }
  13755. g_NonClearEWS = FALSE;
  13756. }
  13757. else if ((hCurrProgHandle == hProgHdl) && (hProgHdl != AL_DB_INVALIDHDL))
  13758. {
  13759. if ((g_MonAudioPid.usDataPID != DB_DVB_INVALID_PID) && (g_PrevAudioPid.usDataPID == DB_DVB_INVALID_PID))
  13760. {
  13761. g_PrevAudioPid.usDataPID = MID_PlaybackGetActiveAudHandle(TRUE);
  13762. g_PrevAudioPid.usCodec = MID_PlaybackGetActiveAudCodec();
  13763. u32Param = g_MonAudioPid.usCodec<<16|g_MonAudioPid.usDataPID;
  13764. MID_PlaybackChangePid(MID_PLAYBK_CHANGE_AUDPID, u32Param);
  13765. }
  13766. }
  13767. }
  13768. }
  13769. break;
  13770. case FW_EWS_INACTIVE:
  13771. dvb_printf("\n\n[%s]FW_EWS_INACTIVE!!!!!!!, g_PrevProgHandle: 0x%x, curr time: 0x%x\n\n", __FUNCTION__,g_PrevProgHandle, GL_GetRtc32());
  13772. {
  13773. DMIOC_SET_EWS_PARAM stEwsParam;
  13774. UINT32 u32Param = 0;
  13775. memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM));
  13776. stEwsParam.bActive = FALSE;
  13777. ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam);
  13778. g_EWSMode = FALSE;
  13779. g_NonClearEWS = TRUE;
  13780. if (g_PrevProgHandle != AL_DB_INVALIDHDL)
  13781. {
  13782. _DVBApp_Zapping(eServiceType, g_PrevProgHandle, TRUE, 0, TRUE);
  13783. g_PrevProgHandle = AL_DB_INVALIDHDL;
  13784. }
  13785. if (g_PrevAudioPid.usDataPID != DB_DVB_INVALID_PID)
  13786. {
  13787. u32Param = g_PrevAudioPid.usCodec<<16|g_PrevAudioPid.usDataPID;
  13788. MID_PlaybackChangePid(MID_PLAYBK_CHANGE_AUDPID, u32Param);
  13789. memset(&g_PrevAudioPid, 0, sizeof(DBPIDInfo_t));
  13790. g_PrevAudioPid.usDataPID = DB_DVB_INVALID_PID;
  13791. }
  13792. g_NonClearEWS = FALSE;
  13793. memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM));
  13794. stEwsParam.clear_ews_flag = true;
  13795. stEwsParam.bActive = TRUE;
  13796. stEwsParam.PID = g_MonAudioPid.usDataPID;
  13797. ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam);
  13798. }
  13799. break;
  13800. case FW_EWS_NON_ANCM:
  13801. dvb_printf("\n\n[%s]FW_EWS_NON_ANCM!!!!!!!, curr time: 0x%x\n\n", __FUNCTION__, GL_GetRtc32());
  13802. {
  13803. DMIOC_SET_EWS_PARAM stEwsParam;
  13804. memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM));
  13805. stEwsParam.bActive = FALSE;
  13806. ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam);
  13807. DVBApp_ResetEWS();
  13808. }
  13809. break;
  13810. #endif
  13811. case UI_EVENT_AV:
  13812. {
  13813. APP_Source_Type_t curSource = 0;
  13814. DVBApp_ResetPopup_Channel();
  13815. _DVBApp_CloseAllMenu();
  13816. APP_GUIOBJ_Source_GetCurrSource(&curSource);
  13817. if(curSource != APP_SOURCE_AV)
  13818. {
  13819. curSource = APP_SOURCE_AV;
  13820. }
  13821. else if(curSource != APP_SOURCE_AV1)
  13822. {
  13823. curSource = APP_SOURCE_AV1;
  13824. }
  13825. else if(curSource != APP_SOURCE_AV2)
  13826. {
  13827. curSource = APP_SOURCE_AV2;
  13828. }
  13829. APP_GUIOBJ_Source_SetAppSource(curSource);
  13830. }
  13831. break;
  13832. case UI_EVENT_YPP:
  13833. {
  13834. APP_Source_Type_t curSource = 0;
  13835. DVBApp_ResetPopup_Channel();
  13836. _DVBApp_CloseAllMenu();
  13837. APP_GUIOBJ_Source_GetCurrSource(&curSource);
  13838. if(curSource != APP_SOURCE_YPBPR)
  13839. {
  13840. curSource = APP_SOURCE_YPBPR;
  13841. }
  13842. else if(curSource != APP_SOURCE_YPBPR1)
  13843. {
  13844. curSource = APP_SOURCE_YPBPR;
  13845. }
  13846. else if(curSource != APP_SOURCE_YPBPR2)
  13847. {
  13848. curSource = APP_SOURCE_YPBPR2;
  13849. }
  13850. APP_GUIOBJ_Source_SetAppSource(curSource);
  13851. }
  13852. break;
  13853. default:
  13854. dvb_printf("[%s] Unknown message 0x%x received.\n", __FUNCTION__, dMessage);
  13855. break;
  13856. }
  13857. return 0;
  13858. }
  13859. static INT32 _DVBApp_OnGUIFeedbackEvent(void *pPrivateData, UINT32 dMessage, UINT32 dParam)
  13860. {
  13861. al_uint8 bSignalState = al_false;
  13862. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  13863. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  13864. #ifdef CONFIG_SUPPORT_PVR
  13865. UINT8 u8MidRecState;
  13866. UINT8 u8MIDRecMode;
  13867. u8MidRecState = MID_RecorderState();
  13868. u8MIDRecMode = MID_Recorder_GetRecMode();
  13869. #endif
  13870. switch (dMessage)
  13871. {
  13872. case GUI_RESPOND_ZAPPING:
  13873. {
  13874. AL_RecHandle_t NextHdl = dParam;
  13875. _DVBApp_CloseAllMenu();
  13876. if ((NextHdl != AL_DB_INVALIDHDL)
  13877. #ifdef CONFIG_CIPLUS_SUPPORT
  13878. || (APP_CIPLUS_IsProfileSource())
  13879. #endif
  13880. )
  13881. {
  13882. _DVBApp_Zapping(eServiceType, NextHdl, FALSE, 0, TRUE);
  13883. }
  13884. }
  13885. break;
  13886. case GUI_RESPOND_EXIT_ALL_MENU:
  13887. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO))
  13888. {
  13889. if(APP_GUIOBJ_SleepTimer_GetOpenStandby() == al_true)
  13890. {
  13891. _DVBApp_Exit_All_Menu();
  13892. if(APP_GUIOBJ_SleepTimer_GetSleepPopConflict() == TRUE)
  13893. {
  13894. APP_GUIOBJ_SleepTimer_SetSleepPopConflict(FALSE);
  13895. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  13896. (APP_GLOBAL_EVENT_SLEEP_TIMER_INFO|PASS_TO_SYSAPP), APP_POWERDOWN_SLEEP);
  13897. }
  13898. }
  13899. else
  13900. {
  13901. _DVBApp_Exit_All_Menu();
  13902. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  13903. if((bSignalState != AL_DVB_MONITOR_VALUE_TRUE)&&(APP_GUIOBJ_SleepTimer_GetStandbyPopConflict() == TRUE))
  13904. {
  13905. APP_GUIOBJ_SleepTimer_SetStandbyPopConflict(FALSE);
  13906. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  13907. (APP_GLOBAL_EVENT_SLEEP_TIMER_INFO | PASS_TO_SYSAPP), APP_POWERDOWN_NO_SINGAL);
  13908. }
  13909. }
  13910. }
  13911. else
  13912. {
  13913. _DVBApp_Exit_All_Menu();
  13914. }
  13915. break;
  13916. #ifdef CONFIG_SUPPORT_PVR
  13917. case GUI_RESPOND_REC_DURATIONTIME_EXIT:
  13918. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME))
  13919. {
  13920. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME);
  13921. }
  13922. break;
  13923. case GUI_RESPOND_PVRPLAY_TO_GOTO:
  13924. PVR_DEBF("goto is enter!!1\n");
  13925. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_GOTO);
  13926. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, dMessage, 0);
  13927. break;
  13928. case GUI_RESPOND_PVRFILEPLAY_ERROR:
  13929. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  13930. {
  13931. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY);
  13932. }
  13933. break;
  13934. case GUI_RESPOND_CLOSE_PVRINFO:
  13935. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  13936. {
  13937. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  13938. }
  13939. break;
  13940. case GUI_RESPOND_CLOSE_PLAYINFO:
  13941. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  13942. {
  13943. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  13944. }
  13945. break;
  13946. case GUI_RESPOND_PVRINFO_FROMEXTENDINFO:
  13947. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  13948. {
  13949. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO);
  13950. }
  13951. if (u8MidRecState != MID_REC_STATUS_STOP)
  13952. {
  13953. if (u8MIDRecMode == MID_REC_MODE_TIMESHIFT_AFTER_REC)
  13954. {
  13955. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,
  13956. DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERNOTIMEMENU);
  13957. }
  13958. else if ((u8MIDRecMode == MID_REC_MODE_AUTO)
  13959. && (MID_TSPLParser_GetThreadState() == TRUE))
  13960. {
  13961. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,
  13962. DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERNOTIMEMENU);
  13963. }
  13964. else if ((u8MIDRecMode == MID_REC_MODE_MANUAL)
  13965. && (u8MidRecState == MID_REC_STATUS_START))
  13966. {
  13967. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, 0);
  13968. #ifdef SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD
  13969. if((DVBAPP_Pvr_GetRECPlayFlag())
  13970. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  13971. {
  13972. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO,
  13973. PVR_PLAYINFO_ENTERNOTIMEMENU);
  13974. }
  13975. #endif
  13976. }
  13977. else if (u8MidRecState == MID_REC_STATUS_PAUSE)
  13978. {
  13979. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  13980. #ifdef SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD
  13981. if((DVBAPP_Pvr_GetRECPlayFlag())
  13982. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  13983. {
  13984. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO,
  13985. PVR_PLAYINFO_ENTERNOTIMEMENU);
  13986. }
  13987. #endif
  13988. }
  13989. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,
  13990. DVB_GUIOBJ_PVRREC_INFO, 0);
  13991. }
  13992. break;
  13993. #endif
  13994. default:
  13995. dvb_printf("[%s] Unknown message received.\n", __FUNCTION__);
  13996. break;
  13997. }
  13998. return 0;
  13999. }
  14000. static INT32 _DVBApp_OnEvent(void *pPrivateData, UINT32 dMessage, UINT32 dParam)
  14001. {
  14002. switch (dMessage & GUIOBJ_MESSAGE_TYPE_MASK)
  14003. {
  14004. case SYSAPP_GLOBAL_EVENT_TYPE:
  14005. _DVBApp_OnGlobalEvent(pPrivateData, (dMessage & GUIOBJ_MESSAGE_MASK), dParam);
  14006. break;
  14007. case GUIOBJ_FEEDBACK_EVENT_TYPE:
  14008. _DVBApp_OnGUIFeedbackEvent(pPrivateData, (dMessage & GUIOBJ_MESSAGE_MASK), dParam);
  14009. break;
  14010. default:
  14011. dvb_printf("[%s] Unknown message 0x%x received.\n", __FUNCTION__, dMessage);
  14012. break;
  14013. }
  14014. return 0;
  14015. }
  14016. INT32 _DVBApp_DataApplicationStatus(UINT32 u32module)
  14017. {
  14018. int iret = DATA_APP_UNSTABLE;
  14019. UINT8 u8ProgState = MID_PLAYBK_PROG_STATE_NORMAL;
  14020. #ifdef CONFIG_SUPPORT_MHEG5
  14021. BOOLEAN eRecordState = FALSE;
  14022. #endif
  14023. #ifdef CONFIG_SUPPORT_SUBTITLE
  14024. UINT8 onoff = 0;
  14025. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  14026. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  14027. onoff = g_stUserInfoData.Subtitle;
  14028. #endif
  14029. switch (u32module & OSD2CTRLMDL_ALL)
  14030. {
  14031. #ifdef CONFIG_SUPPORT_SUBTITLE
  14032. case OSD2CTRLMDL_SUB:
  14033. if (APP_GUIOBJ_SubTitle_IsThereAnyData())
  14034. {
  14035. iret |= DATA_APP_LANUCHABLE;
  14036. }
  14037. else
  14038. {
  14039. iret |= DATA_APP_NOT_FOUND;
  14040. }
  14041. if (iret & DATA_APP_LANUCHABLE)
  14042. {
  14043. if (onoff == TRUE)
  14044. {
  14045. iret |= DATA_APP_EXECUTABLE;
  14046. }
  14047. }
  14048. break;
  14049. #endif
  14050. #ifdef CONFIG_SUPPORT_MHEG5
  14051. case OSD2CTRLMDL_MH5:
  14052. if (APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED)
  14053. {
  14054. iret |= DATA_APP_LANUCHABLE | DATA_APP_EXECUTABLE;
  14055. }
  14056. else
  14057. {
  14058. iret |= DATA_APP_NOT_FOUND;
  14059. }
  14060. if (eRecordState == TRUE)
  14061. {
  14062. iret &= ~DATA_APP_EXECUTABLE;
  14063. }
  14064. break;
  14065. #endif
  14066. default:
  14067. dvb_printf("%s(): unknow module index\n", __FUNCTION__);
  14068. break;
  14069. }
  14070. #ifdef CONFIG_SUPPORT_PVR
  14071. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  14072. #endif
  14073. {
  14074. u8ProgState = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL);
  14075. if (u8ProgState == MID_PLAYBK_PROG_STATE_LOCKED)
  14076. {
  14077. iret &= ~DATA_APP_EXECUTABLE;
  14078. }
  14079. }
  14080. return iret;
  14081. }
  14082. static INT32 _DVBApp_DataApplicationGuiObjectRefresh(UINT32 gui_object_selection)
  14083. {
  14084. int ret = 0;
  14085. #ifdef CONFIG_SUPPORT_MHEG5
  14086. if (gui_object_selection & OSD2CTRLMDL_MH5)
  14087. {
  14088. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)
  14089. && gui_object_selection & OSD2CTRLMDL_ENABLE
  14090. #ifdef CONFIG_SUPPORT_TTX
  14091. && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)
  14092. #endif
  14093. #ifdef CONFIG_SUPPORT_SUBTITLE
  14094. && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE)
  14095. #endif
  14096. )
  14097. {
  14098. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, 0);
  14099. }
  14100. else if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)
  14101. && (gui_object_selection & OSD2CTRLMDL_DISABLE))
  14102. {
  14103. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5);
  14104. }
  14105. }
  14106. #endif
  14107. #ifdef CONFIG_SUPPORT_SUBTITLE
  14108. if (gui_object_selection & OSD2CTRLMDL_SUB)
  14109. {
  14110. if (gui_object_selection & OSD2CTRLMDL_ENABLE)
  14111. {
  14112. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE))
  14113. {
  14114. #ifdef CONFIG_SUPPORT_TTX
  14115. if(!(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)))
  14116. #endif
  14117. {
  14118. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE, 0);
  14119. }
  14120. }
  14121. else
  14122. {
  14123. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  14124. DVB_GUIOBJ_SUBTITLE, APP_DVB_INTRA_EVENT_OSD2_RESTART, 0);
  14125. }
  14126. }
  14127. else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE)
  14128. && (gui_object_selection & OSD2CTRLMDL_DISABLE))
  14129. {
  14130. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE);
  14131. }
  14132. }
  14133. #endif
  14134. return ret;
  14135. }
  14136. /*****************************************************************************
  14137. ** FUNCTION : DVBApp_GetScrambleState
  14138. **
  14139. ** DESCRIPTION :
  14140. ** get current program scramnle attrib
  14141. **
  14142. ** PARAMETERS :
  14143. ** none
  14144. **
  14145. ** RETURN VALUES:
  14146. ** TRUE - SCRAMBLE ATTRIB
  14147. ** FALSE - UN SCRAMBLE ATTRIB
  14148. *****************************************************************************/
  14149. Boolean DVBApp_GetScrambleAttrib(void)
  14150. {
  14151. DBServAttrib_t stProgAttrib;
  14152. AL_DB_EDBType_t DBType = AL_DBTYPE_DVB_T;
  14153. AL_RecHandle_t hProg = AL_DB_INVALIDHDL;
  14154. DBType = APP_DVB_Playback_GetCurrentNetType();
  14155. hProg = APP_DVB_Playback_GetCurrentProgHandle(DBType, AL_RECTYPE_DVBTV | AL_RECTYPE_DVBRADIO);
  14156. memset(&stProgAttrib, 0, sizeof(DBServAttrib_t));
  14157. AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"stProgAttrib", (al_void *)&stProgAttrib);
  14158. if (stProgAttrib.scramble == al_true)
  14159. {
  14160. return TRUE;
  14161. }
  14162. else
  14163. {
  14164. return FALSE;
  14165. }
  14166. }
  14167. /*****************************************************************************
  14168. ** FUNCTION : DVBApp_CheckServiceNotAvailable
  14169. **
  14170. ** DESCRIPTION :
  14171. ** Check current program state is not available or not
  14172. **
  14173. ** PARAMETERS :
  14174. ** none
  14175. **
  14176. ** RETURN VALUES:
  14177. ** TRUE - service not available
  14178. ** FALSE - not service not available
  14179. *****************************************************************************/
  14180. Boolean DVBApp_CheckServiceNotAvailable(void)
  14181. {
  14182. MID_PlaybackProgState_t eProgState = MID_PLAYBK_PROG_STATE_NORMAL;
  14183. AL_RecHandle_t hCurrPrgHdl = AL_DB_INVALIDHDL;
  14184. AL_DB_EDBType_t eDBType = APP_DVB_Playback_GetCurrentNetType();
  14185. al_uint8 bSignalState = AL_DVB_MONITOR_VALUE_INVAILED;
  14186. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL,&bSignalState);
  14187. if (g_bNoSteamData == TRUE)
  14188. {
  14189. #ifdef CONFIG_SUPPORT_MHEG5
  14190. if ((APP_Area_SupportDtg())
  14191. && (APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED))
  14192. {
  14193. return FALSE;
  14194. }
  14195. else
  14196. #endif
  14197. #ifdef CONFIG_CIPLUS_SUPPORT
  14198. if (MID_DTVCI_GetAppMMIStatus())
  14199. {
  14200. return FALSE;
  14201. }
  14202. else
  14203. #endif
  14204. {
  14205. hCurrPrgHdl = APP_DVB_Playback_GetCurrentProgHandle(eDBType, (AL_RECTYPE_DVBTV |AL_RECTYPE_DVBRADIO));
  14206. if ((hCurrPrgHdl == AL_DB_INVALIDHDL) && (bSignalState != AL_DVB_MONITOR_VALUE_INVAILED))
  14207. {
  14208. dvb_printf("Get current program handle error!!!\n");
  14209. return TRUE;
  14210. }
  14211. eProgState = APP_DVB_Playback_GetProgStateByHandle(eDBType, hCurrPrgHdl);
  14212. if ((eProgState == MID_PLAYBK_PROG_STATE_NOT_RUNNING) && (bSignalState != AL_DVB_MONITOR_VALUE_INVAILED))
  14213. {
  14214. return TRUE;
  14215. }
  14216. if ((eProgState != MID_PLAYBK_PROG_STATE_LOCKED) && (bSignalState != AL_DVB_MONITOR_VALUE_INVAILED))
  14217. {
  14218. return TRUE;
  14219. }
  14220. else
  14221. {
  14222. return FALSE;
  14223. }
  14224. }
  14225. }
  14226. return FALSE;
  14227. }
  14228. /*****************************************************************************
  14229. ** FUNCTION : DVBApp_CheckProgramType
  14230. **
  14231. ** DESCRIPTION :
  14232. ** Check program lock or temp sevice or vedio mpeg4 and so on
  14233. **
  14234. ** PARAMETERS :
  14235. ** bInit - program state dispose
  14236. **
  14237. ** RETURN VALUES:
  14238. ** SP_ERR_FAILURE - can not playback
  14239. ** SP_SUCCESS - playback
  14240. *****************************************************************************/
  14241. INT32 DVBApp_CheckProgramType(Boolean bFlag)
  14242. {
  14243. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  14244. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  14245. INT16 i16ProgState = MID_PLAYBK_PROG_STATE_NORMAL;
  14246. al_uint8 bMonitorState = al_false;
  14247. al_uint8 bSignalState = al_false;
  14248. UINT8 u8Mute = 0;
  14249. INT32 i32Ret = SP_ERR_FAILURE;
  14250. APP_Source_Type_t eSourType = APP_SOURCE_MAX;
  14251. //al_bool bHasValidServ = al_false;
  14252. #ifdef CONFIG_CIPLUS_SUPPORT
  14253. if (APP_CIPLUS_IsProfileSource())
  14254. {
  14255. if (g_isMute)
  14256. {
  14257. return SP_SUCCESS;
  14258. }
  14259. }
  14260. #endif
  14261. //bHasValidServ = AL_DB_HasVisibleService(eNetType);
  14262. AL_RecHandle_t hTempHdl = AL_DB_INVALIDHDL;
  14263. MID_PlaybackGetCurProgHandle(al_null, &hTempHdl);
  14264. APP_GUIOBJ_Source_GetCurrSource(&eSourType);
  14265. i16ProgState = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL);
  14266. printf("\n @@@@@@@@@@@@@dvb_app.c i16ProgState=%d line=%d \n",i16ProgState,__LINE__);
  14267. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_MONITOR, &bMonitorState);
  14268. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  14269. //if ((bMonitorState) && (bSignalState == AL_DVB_MONITOR_VALUE_TRUE) && bHasValidServ)
  14270. if ((bMonitorState) && (bSignalState == AL_DVB_MONITOR_VALUE_TRUE) && (hTempHdl != AL_DB_INVALIDHDL))
  14271. {
  14272. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL))
  14273. {
  14274. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  14275. }
  14276. #ifdef CONFIG_SUPPORT_PVR //if playing timeshift file not to show pop
  14277. UINT32 u32PEState = MID_TSPL_MODE_STOP;
  14278. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  14279. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  14280. u8Mute = g_stUserInfoData.Mute;//for manits 151777
  14281. if (MID_TSPLParser_GetPlayState(&u32PEState, NULL) == DRV_SUCCESS)
  14282. {
  14283. if (MID_TSPL_MODE_STOP != u32PEState)
  14284. {
  14285. if ((u8Mute == FALSE) && (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)))
  14286. {
  14287. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14288. }
  14289. return SP_ERR_FAILURE;
  14290. }
  14291. }
  14292. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  14293. {
  14294. if(u8Mute == FALSE)
  14295. {
  14296. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14297. }
  14298. return SP_ERR_FAILURE;
  14299. }
  14300. #endif
  14301. #ifdef PLAY_VIDEO_FOR_ALLSRV
  14302. MID_PlaybackGetCurProgHandle(al_null, &hTempHdl);
  14303. DBPIDInfo_t stVideoPid;
  14304. memset(&stVideoPid,0xff,sizeof(DBPIDInfo_t));
  14305. AL_DB_QueryDetailFieldByName(hTempHdl, (al_uint8 *)"stVideoPid", (al_void *)&stVideoPid);
  14306. #endif
  14307. switch (i16ProgState)
  14308. {
  14309. case MID_PLAYBK_PROG_STATE_AUDIO_VIDEO_SCRAMBLED:
  14310. #ifdef PLAY_VIDEO_FOR_ALLSRV
  14311. if (DVBApp_CheckHasVideo() == TRUE)
  14312. #else
  14313. if (eServiceType != AL_RECTYPE_DVBRADIO) //zhongbaoxing added for mantis 0153467 @20110926
  14314. #endif
  14315. {
  14316. APP_GUIOBJ_DVB_Playback_ClearShowLogo();
  14317. }
  14318. #if 0
  14319. #if 1 //richiechang 20120430, for samsung & SONY TVSet Behavior
  14320. MID_PlaybackStreamInfo_t stAudStrmInfo;
  14321. memset(&stAudStrmInfo, 0, sizeof(MID_PlaybackStreamInfo_t));
  14322. MID_PlaybackGetAudioStreamInfo(&stAudStrmInfo, GL_NO_WAIT);
  14323. if (stAudStrmInfo.bIsScrambled)
  14324. {
  14325. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType); // mute audio if audio is scrambled
  14326. }
  14327. else
  14328. {
  14329. APP_Audio_SetMute(g_stUserInfoData.Mute, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType); // mute audio based on user setting if audio is not scrambled
  14330. }
  14331. #else //richiechang 20120430, for SPV9200_Orion Behavior
  14332. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType); // mute audio if video is scrambled
  14333. #endif
  14334. #endif
  14335. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType); // mute audio if audio is scrambled
  14336. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14337. #if 0
  14338. if (bFlag == TRUE)
  14339. {
  14340. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SCRAMBLED) == FALSE)
  14341. {
  14342. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SCRAMBLE);
  14343. }
  14344. }
  14345. #endif
  14346. i32Ret = SP_ERR_FAILURE;
  14347. break;
  14348. case MID_PLAYBK_PROG_STATE_ONLY_VIDEO_SCRAMBLED:
  14349. #ifdef PLAY_VIDEO_FOR_ALLSRV
  14350. if (DVBApp_CheckHasVideo() == TRUE)
  14351. #else
  14352. if (eServiceType != AL_RECTYPE_DVBRADIO) //zhongbaoxing added for mantis 0153467 @20110926
  14353. #endif
  14354. {
  14355. APP_GUIOBJ_DVB_Playback_ClearShowLogo();
  14356. }
  14357. APP_Audio_SetMute(g_stUserInfoData.Mute, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType); // mute audio based on user setting if audio is not scrambled
  14358. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14359. #if 1 //for samsung & SONY TVSet Behavior
  14360. if (bFlag == TRUE)
  14361. {
  14362. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SCRAMBLED) == FALSE)
  14363. {
  14364. printf("\n#####Pop Scramble MSG Menu,F=%s,L=%d######\n",__FUNCTION__,__LINE__);
  14365. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SCRAMBLE);
  14366. }
  14367. }
  14368. #endif
  14369. i32Ret = SP_ERR_FAILURE;
  14370. break;
  14371. case MID_PLAYBK_PROG_STATE_LOCKED:
  14372. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14373. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14374. #ifdef PLAY_VIDEO_FOR_ALLSRV
  14375. if (DVBApp_CheckHasVideo() == TRUE)
  14376. #else
  14377. if (eServiceType != AL_RECTYPE_DVBRADIO) //zhongbaoxing added for mantis 0153467 @20110926
  14378. #endif
  14379. {
  14380. APP_GUIOBJ_DVB_Playback_ClearShowLogo();
  14381. }
  14382. APP_GUIOBJ_DVB_Playback_SetPlayState(FALSE);
  14383. if (bFlag == TRUE)
  14384. {
  14385. UINT32 u32PopMsgDialogType = POPMSG_PROMPT_NO_PROG;
  14386. APP_GUIOBJ_PopMsg_GetMsgDialogType(&u32PopMsgDialogType);
  14387. if ((DVBApp_IsPopupExist(PLAYBACK_POPUP_PWD_LOCKED) == FALSE)
  14388. #ifdef CONFIG_SUPPORT_PVR
  14389. && (u32PopMsgDialogType != POPMSG_PROMPT_INITIAL_AUTOTIMESHIFT)
  14390. && (u32PopMsgDialogType != POPMSG_PROMPT_INITIAL_REC)
  14391. && (u32PopMsgDialogType != POPMSG_PROMPT_INITIAL_TIMESHIFT)
  14392. && (u32PopMsgDialogType != POPMSG_PROMPT_INVALID_REC)
  14393. #endif
  14394. )
  14395. {
  14396. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  14397. }
  14398. }
  14399. i32Ret = SP_ERR_FAILURE;
  14400. break;
  14401. case MID_PLAYBK_PROG_STATE_TEMP_SERVICE:
  14402. if ((bFlag == TRUE) && (DVBApp_CheckServiceNotAvailable() == TRUE))
  14403. {
  14404. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TEMPSERVICE);
  14405. }
  14406. if (DVBApp_CheckServiceNotAvailable() == FALSE)
  14407. {
  14408. MID_DISP_DTVSetVideoUnmute();
  14409. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  14410. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  14411. if (g_stUserInfoData.Mute == FALSE)
  14412. {
  14413. APP_Audio_SetMute(g_stUserInfoData.Mute, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14414. }
  14415. }
  14416. i32Ret = SP_ERR_FAILURE;
  14417. break;
  14418. case MID_PLAYBK_PROG_STATE_VIDEO_MPEG4:
  14419. if (bFlag == TRUE)
  14420. {
  14421. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_VIDEO_NOT_SUPPORT) == FALSE)
  14422. {
  14423. _DVBApp_ShowPopup(DVB_APP_POP_MSG_VIDEO_NOT_SUPPORT);
  14424. }
  14425. }
  14426. i32Ret = SP_ERR_FAILURE;
  14427. break;
  14428. case MID_PLAYBK_PROG_STATE_REPLACE:
  14429. if (DVBApp_CheckServiceNotAvailable() == FALSE)
  14430. {
  14431. #ifdef PLAY_VIDEO_FOR_ALLSRV
  14432. if (DVBApp_CheckHasVideo() == FALSE)
  14433. #else
  14434. if (eServiceType == AL_RECTYPE_DVBRADIO)
  14435. #endif
  14436. {
  14437. if (APP_GUIOBJ_DVB_Playback_GetShowLogoState() == FALSE)
  14438. {
  14439. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  14440. }
  14441. }
  14442. }
  14443. i32Ret = SP_ERR_FAILURE;
  14444. break;
  14445. case MID_PLAYBK_PROG_STATE_ONLY_AUDIO_SCRAMBLED:
  14446. #ifdef PLAY_VIDEO_FOR_ALLSRV
  14447. if ((stVideoPid.usDataPID&0x1fff) == 0x1fff)
  14448. #else
  14449. if(eServiceType == AL_RECTYPE_DVBRADIO)
  14450. #endif
  14451. {
  14452. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14453. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14454. if (bFlag == TRUE)
  14455. {
  14456. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL))
  14457. {
  14458. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  14459. }
  14460. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL))
  14461. {
  14462. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  14463. }
  14464. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SCRAMBLED) == FALSE)
  14465. {
  14466. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SCRAMBLE);
  14467. }
  14468. }
  14469. i32Ret = SP_ERR_FAILURE;
  14470. break;
  14471. }
  14472. case MID_PLAYBK_PROG_STATE_VIDEO_AVC:
  14473. case MID_PLAYBK_PROG_STATE_NOT_RUNNING:
  14474. default:
  14475. if (bFlag == TRUE)
  14476. {
  14477. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_PWD_LOCKED) == TRUE)
  14478. {
  14479. DVBApp_ClosePopup(PLAYBACK_POPUP_PWD_LOCKED, UI_EVENT_NULL);
  14480. }
  14481. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SCRAMBLED) == TRUE)
  14482. {
  14483. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_SCRAMBLED, UI_EVENT_NULL);
  14484. }
  14485. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_TEMPSERVICE) == TRUE)
  14486. {
  14487. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE, UI_EVENT_NULL);
  14488. }
  14489. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_TEMPSERVICE_SERVICE_NOT_RUNNING) == TRUE)
  14490. {
  14491. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE_SERVICE_NOT_RUNNING, UI_EVENT_NULL);
  14492. }
  14493. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_TEMPSERVICE_LOAD_MHEG5) == TRUE)
  14494. {
  14495. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE_LOAD_MHEG5, UI_EVENT_NULL);
  14496. }
  14497. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_VIDEO_NOT_SUPPORT) == TRUE && g_UnsupportVideo == FALSE)
  14498. {
  14499. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_VIDEO_NOT_SUPPORT, UI_EVENT_NULL);
  14500. }
  14501. }
  14502. if (DVBApp_CheckServiceNotAvailable() == TRUE)
  14503. {
  14504. #ifdef PLAY_VIDEO_FOR_ALLSRV
  14505. if (DVBApp_CheckHasVideo() == TRUE)
  14506. #else
  14507. if (eServiceType != AL_RECTYPE_DVBRADIO) //zhongbaoxing added for mantis 0153467 @20110926
  14508. #endif
  14509. {
  14510. APP_GUIOBJ_DVB_Playback_ClearShowLogo();
  14511. }
  14512. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14513. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14514. if (bFlag == TRUE)
  14515. {
  14516. if (DVBApp_IsPopupExist(DVB_APP_POP_MSG_SCRAMBLE) == FALSE)//mantis43634:not available & scramble service show scramble
  14517. {
  14518. if(APP_Get_DTVHiddenScanState() != TRUE)
  14519. {
  14520. if(APP_DVB_Playback_GetCAModeByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL) == al_true)
  14521. {
  14522. if (!DVBApp_IsPopupExist(DVB_APP_POP_MSG_SCRAMBLE))
  14523. {
  14524. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SCRAMBLE);
  14525. }
  14526. }
  14527. else if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE) == FALSE)
  14528. {
  14529. if(APP_Get_DTVHiddenScanState() != TRUE)
  14530. {
  14531. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SERVICE_NOT_AVAILABLE);
  14532. }
  14533. }
  14534. }
  14535. }
  14536. }
  14537. i32Ret = SP_ERR_FAILURE;
  14538. }
  14539. else
  14540. {
  14541. if (bFlag == TRUE && g_UnsupportVideo == TRUE)
  14542. {
  14543. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_VIDEO_NOT_SUPPORT) == FALSE)
  14544. {
  14545. if(APP_Get_DTVHiddenScanState() != TRUE)
  14546. {
  14547. _DVBApp_ShowPopup(DVB_APP_POP_MSG_VIDEO_NOT_SUPPORT);
  14548. }
  14549. }
  14550. }
  14551. #ifdef SHOW_LOGO_RADIO
  14552. #ifdef PLAY_VIDEO_FOR_ALLSRV
  14553. if (DVBApp_CheckHasVideo() == TRUE)
  14554. #else
  14555. if (eServiceType != AL_RECTYPE_DVBRADIO) //zhongbaoxing added for mantis 0153467 @20110926
  14556. #endif
  14557. #endif
  14558. {
  14559. APP_GUIOBJ_DVB_Playback_ClearShowLogo();
  14560. }
  14561. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  14562. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  14563. u8Mute = g_stUserInfoData.Mute;
  14564. #ifndef PLAY_VIDEO_FOR_ALLSRV
  14565. if (eServiceType == AL_RECTYPE_DVBRADIO)
  14566. {
  14567. //if ((bSetUnMuteFlag == FALSE))
  14568. {
  14569. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  14570. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  14571. u8Mute = g_stUserInfoData.Mute;
  14572. #ifndef SHOW_LOGO_RADIO
  14573. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14574. #else
  14575. APP_Video_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14576. #endif
  14577. #ifdef CONFIG_SUPPORT_PVR
  14578. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  14579. if (APP_WAKEUP_GetBootFlag() == TRUE)
  14580. {
  14581. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, APP_SOURCE_MAX);
  14582. }
  14583. else
  14584. #endif
  14585. #endif
  14586. {
  14587. APP_Audio_SetMute(u8Mute, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14588. }
  14589. }
  14590. }
  14591. else if ((eServiceType == AL_RECTYPE_DVBTV)||(eServiceType == AL_RECTYPE_DVBDATA))
  14592. #endif
  14593. {
  14594. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL) == TRUE)
  14595. {
  14596. #ifdef PLAY_VIDEO_FOR_ALLSRV
  14597. if ((eServiceType == AL_RECTYPE_DVBTV)||(eServiceType == AL_RECTYPE_DVBDATA)
  14598. || (eServiceType == AL_RECTYPE_DVBRADIO && ((stVideoPid.usDataPID&0x1fff) != 0x1fff)))
  14599. #endif
  14600. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  14601. }
  14602. #ifdef PLAY_VIDEO_FOR_ALLSRV
  14603. if (DVBApp_CheckHasVideo() == FALSE)
  14604. {
  14605. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  14606. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  14607. u8Mute = g_stUserInfoData.Mute;
  14608. #ifndef SHOW_LOGO_RADIO
  14609. #ifdef CONFIG_SUPPORT_MHEG5
  14610. /* do not mute video while MHEG5 is being displayed, because it could be playing I-frame */
  14611. if ((eServiceType == AL_RECTYPE_DVBTV)
  14612. && ((APP_DVB_Mheg5_GetBootCarouselStatus() != MHEG5_BOOT_CAROUSEL_EXISTED)
  14613. || APP_Area_SupportDtg() == FALSE || APP_DVB_Mheg5_GetMheg5DisplayStatus() == FALSE))
  14614. #endif
  14615. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14616. #else
  14617. APP_Video_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14618. #endif
  14619. #ifdef CONFIG_SUPPORT_PVR
  14620. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  14621. if (APP_WAKEUP_GetBootFlag() == TRUE)
  14622. {
  14623. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, APP_SOURCE_MAX);
  14624. }
  14625. else
  14626. #endif
  14627. #endif
  14628. {
  14629. APP_Audio_SetMute(u8Mute, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14630. }
  14631. }
  14632. else
  14633. #endif
  14634. {
  14635. /*modify by qinhe for mantis 0011456*/
  14636. if ((g_SetPQFlag == TRUE) && (g_bMidHasUnmute == TRUE))
  14637. {
  14638. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  14639. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  14640. u8Mute = g_stUserInfoData.Mute;
  14641. #ifdef CONFIG_SUPPORT_PVR
  14642. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  14643. if (APP_WAKEUP_GetBootFlag() == TRUE)
  14644. {
  14645. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, APP_SOURCE_MAX);
  14646. }
  14647. else
  14648. #endif
  14649. #endif
  14650. {
  14651. APP_Audio_SetMute(u8Mute, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14652. }
  14653. }
  14654. APP_Video_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14655. }
  14656. }
  14657. i32Ret = SP_SUCCESS;
  14658. }
  14659. break;
  14660. }
  14661. }
  14662. else
  14663. {
  14664. #ifdef CONFIG_SUPPORT_PVR //if playing timeshift file not to mute video
  14665. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  14666. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  14667. u8Mute = g_stUserInfoData.Mute;//for manits 151777
  14668. if (MID_TSPLParser_GetThreadState() == TRUE)
  14669. {
  14670. if ((u8Mute == FALSE) && (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)))
  14671. {
  14672. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14673. }
  14674. return SP_ERR_FAILURE;
  14675. }
  14676. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  14677. {
  14678. if(u8Mute == FALSE)
  14679. {
  14680. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14681. }
  14682. return SP_ERR_FAILURE;
  14683. }
  14684. #endif
  14685. APP_Audio_SetMute(TRUE, TRUE, APP_MUTE_MODE_NO_SIGNALE, eSourType);
  14686. #ifdef SUPPORT_DTV_SHOW_BLUESCREEN
  14687. if (g_stSetupData.BlueScreen == APP_SWITCH_ON)
  14688. {
  14689. #ifdef CONFIG_DVB_SYSTEM
  14690. APP_SCARTOUT_SetVideoMute(APP_SOURCE_DTV, DTV_TRUE, TRUE);
  14691. #endif
  14692. if (!g_bIsBlueScreen)
  14693. {
  14694. MID_DISP_DTVSetVideoMute(0,0,255);
  14695. }
  14696. }
  14697. else
  14698. #endif
  14699. {
  14700. APP_Video_SetMute(TRUE, TRUE, APP_MUTE_MODE_NO_SIGNALE, eSourType);
  14701. }
  14702. APP_GUIOBJ_DVB_Playback_ClearShowLogo();
  14703. if (bFlag == TRUE)
  14704. {
  14705. APP_GUIOBJ_DVB_Playback_ClearShowLogo();
  14706. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL))
  14707. {
  14708. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  14709. }
  14710. if (APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL)
  14711. == MID_PLAYBK_PROG_STATE_LOCKED)
  14712. {
  14713. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  14714. }
  14715. else if ((DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL) == FALSE)
  14716. #ifdef CONFIG_SUPPORT_PVR
  14717. && (APP_GUIOBJ_DVB_PvrPlayInfo_GetTunerState() == FALSE)
  14718. #endif
  14719. && (bSignalState == AL_DVB_MONITOR_VALUE_FALSE)
  14720. )
  14721. {
  14722. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_SIGNAL);
  14723. }
  14724. }
  14725. i32Ret = SP_ERR_FAILURE;
  14726. }
  14727. return i32Ret;
  14728. }
  14729. /*****************************************************************************
  14730. ** FUNCTION : DVBApp_SchedulePopup
  14731. **
  14732. ** DESCRIPTION :
  14733. ** Schedule dvb popmsg
  14734. **
  14735. ** PARAMETERS :
  14736. ** Popup - popmsg type
  14737. **
  14738. ** RETURN VALUES:
  14739. ** None
  14740. *****************************************************************************/
  14741. INT32 DVBApp_SchedulePopup(PopmsgParam_t Popup)
  14742. {
  14743. UINT32 u32CurPopup = PLAYBACK_POPUP_NONE;
  14744. UINT8 bTimeoutFlag = 0;
  14745. switch (Popup.eType)
  14746. {
  14747. case POPMSG_TYPE_CONFIRM:
  14748. u32CurPopup = Popup.extend.stConfirm.eConfirmType;
  14749. break;
  14750. case POPMSG_TYPE_PWD:
  14751. u32CurPopup = Popup.extend.stPwd.ePwdType;
  14752. break;
  14753. case POPMSG_TYPE_PROMPT:
  14754. u32CurPopup = Popup.extend.stPrompt.ePromptType;
  14755. if (Popup.extend.stPrompt.iTimeout > 0)
  14756. {
  14757. if (g_dCurPopup == u32CurPopup)
  14758. {
  14759. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  14760. APP_GLOBAL_EVENT_POPMSG_RESET_TIMEOUT,
  14761. Popup.extend.stPrompt.iTimeout);
  14762. return 0;
  14763. }
  14764. bTimeoutFlag = 1;
  14765. }
  14766. break;
  14767. default:
  14768. return 0;
  14769. }
  14770. if (u32CurPopup > PLAYBACK_POPUP_NONE)
  14771. {
  14772. if (bTimeoutFlag == 0)
  14773. {
  14774. g_u32PopupWaitingList |= 1 << (u32CurPopup - PLAYBACK_POPUP_NONE);
  14775. stPopupWaitingList[u32CurPopup-PLAYBACK_POPUP_NONE] = Popup;
  14776. }
  14777. if (u32CurPopup > g_u32OldPopup)
  14778. {
  14779. g_u32OldPopup = u32CurPopup;
  14780. if (APP_MenuMgr_Exist_Main_Menu()
  14781. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE)
  14782. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE_CEC)
  14783. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG)
  14784. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST)
  14785. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST)
  14786. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD)
  14787. #ifdef CONFIG_SUPPORT_SUBTITLE
  14788. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU)
  14789. #endif
  14790. #ifdef CONFIG_SUPPORT_TTX
  14791. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)
  14792. #endif
  14793. #ifdef CONFIG_CI_SUPPORT
  14794. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU)
  14795. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ)
  14796. #endif
  14797. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL)
  14798. #ifdef SUPPORT_LCN_CONFLICT_MENU
  14799. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_LCN_CONFLICT_MENU)
  14800. #endif
  14801. || (APP_GUIOBJ_DVB_ProgInfo_IsExtendMode() == 1)
  14802. #ifdef OSD_GAME_SUPPORT
  14803. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OSDGAME)
  14804. #endif
  14805. #ifdef SUPPORT_CONAX_CAS
  14806. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CA_PIN_CONFIM)
  14807. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CA_MESSAGE_POP)
  14808. #endif
  14809. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR)
  14810. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR)
  14811. #ifdef CONFIG_SUPPORT_3D_EN
  14812. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_3D_INFO)
  14813. #endif
  14814. )
  14815. {
  14816. g_u32OldPopup = PLAYBACK_POPUP_NONE;
  14817. g_dCurPopup = u32CurPopup;
  14818. return 0;
  14819. }
  14820. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  14821. {
  14822. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  14823. }
  14824. APP_MenuMgr_SetMsgPopup(TRUE);
  14825. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_POPMSG, (UINT32)&Popup);
  14826. g_dCurPopup = u32CurPopup;
  14827. }
  14828. }
  14829. else
  14830. {
  14831. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  14832. && (APP_GUIOBJ_DVB_ProgInfo_IsExtendMode() == 1))
  14833. {
  14834. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO);
  14835. }
  14836. #ifdef OSD_GAME_SUPPORT
  14837. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OSDGAME))
  14838. {
  14839. return 0;
  14840. }
  14841. #endif
  14842. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  14843. {
  14844. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  14845. }
  14846. APP_MenuMgr_SetMsgPopup(TRUE);
  14847. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_POPMSG, (UINT32)&Popup);
  14848. g_dCurPopup = u32CurPopup;
  14849. }
  14850. return 1;
  14851. }
  14852. /*****************************************************************************
  14853. ** FUNCTION : DVBApp_ClosePopup
  14854. **
  14855. ** DESCRIPTION :
  14856. ** Close dvb popmsg
  14857. **
  14858. ** PARAMETERS :
  14859. ** u32ClosePopup - popmsg type
  14860. ** dMessage - send message type when close popmsg
  14861. **
  14862. ** RETURN VALUES:
  14863. ** None
  14864. *****************************************************************************/
  14865. INT32 DVBApp_ClosePopup(UINT32 u32ClosePopup, UINT32 dMessage)
  14866. {
  14867. UINT32 dCheckFlag;
  14868. APP_MenuMgr_SetMsgPopup(FALSE);
  14869. if (u32ClosePopup > PLAYBACK_POPUP_NONE)
  14870. {
  14871. if (u32ClosePopup == g_u32OldPopup)
  14872. {
  14873. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  14874. {
  14875. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  14876. }
  14877. }
  14878. if (dMessage != UI_EVENT_NULL)
  14879. {
  14880. SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, dMessage, g_dCurPopup);
  14881. }
  14882. g_u32PopupWaitingList &= ~(1 << (u32ClosePopup - PLAYBACK_POPUP_NONE));
  14883. if (u32ClosePopup == g_u32OldPopup)
  14884. {
  14885. g_u32OldPopup = PLAYBACK_POPUP_NONE;
  14886. g_dCurPopup = PLAYBACK_POPUP_NONE;
  14887. for (dCheckFlag = PLAYBACK_POPUP_MAX - 1; dCheckFlag > PLAYBACK_POPUP_NONE; dCheckFlag--)
  14888. {
  14889. if (g_u32PopupWaitingList & (1 << (dCheckFlag - PLAYBACK_POPUP_NONE)))
  14890. {
  14891. DVBApp_SchedulePopup(stPopupWaitingList[dCheckFlag-PLAYBACK_POPUP_NONE]);
  14892. break;
  14893. }
  14894. }
  14895. }
  14896. }
  14897. else
  14898. {
  14899. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  14900. {
  14901. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  14902. }
  14903. if (dMessage != UI_EVENT_NULL)
  14904. {
  14905. SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, dMessage, g_dCurPopup);
  14906. }
  14907. if (g_u32OldPopup != PLAYBACK_POPUP_NONE)
  14908. {
  14909. g_u32OldPopup = PLAYBACK_POPUP_NONE;
  14910. }
  14911. g_dCurPopup = PLAYBACK_POPUP_NONE;
  14912. if(u32ClosePopup == POPMSG_PROMPT_PWD_ERROR) //use g_stPopMsgParam.stParam.dParam1 to indicate that no need to pop scheculed pop.
  14913. {
  14914. return 1;
  14915. }
  14916. for (dCheckFlag = PLAYBACK_POPUP_MAX - 1; dCheckFlag > PLAYBACK_POPUP_NONE; dCheckFlag--)
  14917. {
  14918. if (g_u32PopupWaitingList & (1 << (dCheckFlag - PLAYBACK_POPUP_NONE)))
  14919. {
  14920. DVBApp_SchedulePopup(stPopupWaitingList[dCheckFlag-PLAYBACK_POPUP_NONE]);
  14921. break;
  14922. }
  14923. }
  14924. }
  14925. return 1;
  14926. }
  14927. /*****************************************************************************
  14928. ** FUNCTION : DVBApp_ResetPopup_Channel
  14929. **
  14930. ** DESCRIPTION :
  14931. ** Reset all popup state
  14932. **
  14933. ** PARAMETERS :
  14934. ** None
  14935. **
  14936. ** RETURN VALUES:
  14937. ** None
  14938. *****************************************************************************/
  14939. INT32 DVBApp_ResetPopup_Channel(void)
  14940. {
  14941. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_CHECK_ANTENNA_INPUT, UI_EVENT_NULL);
  14942. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  14943. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE, UI_EVENT_NULL);
  14944. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE_LOAD_MHEG5, UI_EVENT_NULL);
  14945. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE_SERVICE_NOT_RUNNING, UI_EVENT_NULL);
  14946. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  14947. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_SCRAMBLED, UI_EVENT_NULL);
  14948. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE, UI_EVENT_NULL);
  14949. DVBApp_ClosePopup(PLAYBACK_POPUP_CONFIRM_REMOVE_SRV, UI_EVENT_NULL);
  14950. DVBApp_ClosePopup(PLAYBACK_POPUP_PROMPT_REMOVE_SRV, UI_EVENT_NULL);
  14951. DVBApp_ClosePopup(PLAYBACK_POPUP_PWD_LOCKED, UI_EVENT_NULL);
  14952. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_DATABASE_EMPTY, UI_EVENT_NULL);
  14953. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_VIDEO_NOT_SUPPORT, UI_EVENT_NULL);
  14954. #ifdef CONFIG_SUPPORT_MHEG5
  14955. DVBApp_ClosePopup(PLAYBACK_POPUP_CONFIRM_STOP_SUBTITLE_TO_OPEN_MHEG5, UI_EVENT_NULL);
  14956. #endif
  14957. #ifdef CONFIG_SUPPORT_SUBTITLE
  14958. //DVBApp_ClosePopup(POPMSG_PROMPT_NO_SUBTITLE, UI_EVENT_NULL);
  14959. #endif
  14960. return SP_SUCCESS;
  14961. }
  14962. /*****************************************************************************
  14963. ** FUNCTION : DVBApp_HideMsgPopupDisplay
  14964. **
  14965. ** DESCRIPTION :
  14966. ** Hide popup display
  14967. **
  14968. ** PARAMETERS :
  14969. ** None
  14970. **
  14971. ** RETURN VALUES:
  14972. ** None
  14973. *****************************************************************************/
  14974. INT32 DVBApp_HideMsgPopupDisplay(void)
  14975. {
  14976. g_u32OldPopup = PLAYBACK_POPUP_NONE;
  14977. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  14978. {
  14979. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  14980. }
  14981. return 0;
  14982. }
  14983. /*****************************************************************************
  14984. ** FUNCTION : DVBApp_IsPopupExist
  14985. **
  14986. ** DESCRIPTION :
  14987. ** Judge one pop up exist
  14988. **
  14989. ** PARAMETERS :
  14990. ** u32TargetPopup - pop up type
  14991. **
  14992. ** RETURN VALUES:
  14993. ** None
  14994. *****************************************************************************/
  14995. UINT8 DVBApp_IsPopupExist(UINT32 u32TargetPopup)
  14996. {
  14997. if (u32TargetPopup == g_u32OldPopup)
  14998. {
  14999. return TRUE;
  15000. }
  15001. else
  15002. {
  15003. if((u32TargetPopup > PLAYBACK_POPUP_NONE)
  15004. && (g_u32PopupWaitingList & (1 << (u32TargetPopup - PLAYBACK_POPUP_NONE))))
  15005. {
  15006. return TRUE;
  15007. }
  15008. else
  15009. {
  15010. return FALSE;
  15011. }
  15012. }
  15013. }
  15014. /*****************************************************************************
  15015. ** FUNCTION : DVBApp_RestoreOnStandby
  15016. **
  15017. ** DESCRIPTION :
  15018. ** dvb restore when standby
  15019. **
  15020. ** PARAMETERS :
  15021. ** None
  15022. **
  15023. ** RETURN VALUES:
  15024. ** None
  15025. *****************************************************************************/
  15026. void DVBApp_RestoreOnStandby(void)
  15027. {
  15028. extern Boolean g_bScanRunning;
  15029. #ifdef SUPPORT_LCN
  15030. DBLCNConfInfo_t *pLcnConf = AL_LCN_GetLCNConfChannel();
  15031. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  15032. #endif
  15033. if (g_bScanRunning)
  15034. {
  15035. MID_ScanStop();
  15036. #ifdef SUPPORT_LCN
  15037. /* force process LCN if added service by PSI Monitor */
  15038. #ifdef SUPPORT_DVBS_LCN
  15039. if (eNetType == AL_DBTYPE_DVB_T || eNetType == AL_DBTYPE_DVB_C|| eNetType == AL_DBTYPE_DVB_S)
  15040. #else
  15041. if (eNetType == AL_DBTYPE_DVB_T || eNetType == AL_DBTYPE_DVB_C)
  15042. #endif
  15043. {
  15044. LCN_PreJudgeLCN();
  15045. LCN_QueryLCNConflict(pLcnConf);
  15046. dvb_printf(" $$$$$$$$$$$$$$$$$$$ %s %d pLcnConf->ConfCount = %d \n",
  15047. __FUNCTION__, __LINE__, pLcnConf->ConfCount);
  15048. if (pLcnConf->ConfCount > 0)
  15049. {
  15050. LCN_AutoAssignConflictLCN();
  15051. LCN_FreeLCNConflict();
  15052. LCN_FreeTRNDDictionary();
  15053. }
  15054. }
  15055. #endif
  15056. AL_DB_Sync(APP_DVB_Playback_GetCurrentNetType(), al_false);
  15057. }
  15058. }
  15059. /*****************************************************************************
  15060. ** FUNCTION : DVBApp_DataApplicationSwitch
  15061. **
  15062. ** DESCRIPTION :
  15063. ** OSD layer 2 switch
  15064. **
  15065. ** PARAMETERS :
  15066. ** u32flag - switch flag
  15067. **
  15068. ** RETURN VALUES:
  15069. ** None
  15070. *****************************************************************************/
  15071. INT32 DVBApp_DataApplicationSwitch(UINT32 u32flag)
  15072. {
  15073. UINT32 u32CurrentState = 0;
  15074. if (_DVBApp_DataApplicationStatus(OSD2CTRLMDL_SUB)&DATA_APP_EXECUTABLE)
  15075. {
  15076. u32CurrentState |= OSD2CTRLMDL_SUB;
  15077. }
  15078. if (APP_Area_SupportDtg())//zhongbaoxing added for mantis 0168195 @20120224
  15079. {
  15080. if (_DVBApp_DataApplicationStatus(OSD2CTRLMDL_MH5)&DATA_APP_EXECUTABLE)
  15081. {
  15082. #ifdef CONFIG_SUPPORT_PVR
  15083. if (MID_RecorderState() == MID_REC_STATUS_STOP)
  15084. #endif
  15085. u32CurrentState |= OSD2CTRLMDL_MH5;
  15086. }
  15087. }
  15088. if (u32flag & OSD2CTRLMDL_DISABLE)
  15089. {
  15090. u32CurrentState = u32flag;
  15091. }
  15092. else
  15093. {
  15094. if (u32flag & OSD2CTRLMDL_FORCE)
  15095. {
  15096. u32CurrentState = (u32CurrentState & u32flag) > 0 ? (u32CurrentState & u32flag) : u32CurrentState;
  15097. }
  15098. else
  15099. {
  15100. u32CurrentState = (u32CurrentState & u32flag);
  15101. }
  15102. }
  15103. #if defined(CONFIG_SUPPORT_MHEG5_HD) && defined(CONFIG_SUPPORT_MHEG5_ICS)
  15104. // The receiver must support the simultaneous presentation of MHEG-5 applications and DVB subtitles (D-Book 16.5.1.1)
  15105. #else
  15106. if ((u32flag & OSD2CTRLMDL_SUB) && (u32CurrentState & OSD2CTRLMDL_MH5) && (u32flag & OSD2CTRLMDL_ENABLE))
  15107. {
  15108. u32CurrentState = ON_DATA_APPLICATION_DECISION(u32CurrentState);
  15109. }
  15110. #endif
  15111. u32CurrentState |= (u32flag & (OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_DISABLE));
  15112. return _DVBApp_DataApplicationGuiObjectRefresh(u32CurrentState);
  15113. }
  15114. /*****************************************************************************
  15115. ** FUNCTION : DVBApp_GetScrambleStatus
  15116. **
  15117. ** DESCRIPTION :
  15118. ** clear flag status when change source
  15119. **
  15120. ** PARAMETERS :
  15121. ** None
  15122. **
  15123. ** RETURN VALUES:
  15124. ** None
  15125. *****************************************************************************/
  15126. Boolean DVBApp_GetScrambleStatus(void)
  15127. {
  15128. return g_bScrambleFlag;
  15129. }
  15130. #ifdef CONFIG_SUPPORT_OTA_UPGRADE
  15131. /*****************************************************************************
  15132. ** FUNCTION : DVBApp_GetOTAStatus
  15133. **
  15134. ** DESCRIPTION :
  15135. ** clear flag status when cancel or finish OTA upgrade
  15136. **
  15137. ** PARAMETERS :
  15138. ** None
  15139. **
  15140. ** RETURN VALUES:
  15141. ** None
  15142. *****************************************************************************/
  15143. Boolean DVBApp_GetOTAStatus(void)
  15144. {
  15145. return g_bOTAFlag;
  15146. }
  15147. /*****************************************************************************
  15148. ** FUNCTION : DVBApp_SetOTAStatus
  15149. **
  15150. ** DESCRIPTION :
  15151. ** set flag status
  15152. **
  15153. ** PARAMETERS :
  15154. ** None
  15155. **
  15156. ** RETURN VALUES:
  15157. ** None
  15158. *****************************************************************************/
  15159. void DVBApp_SetOTAStatus(Boolean b_flag)
  15160. {
  15161. g_bOTAFlag = b_flag;
  15162. }
  15163. #endif
  15164. /*****************************************************************************
  15165. ** FUNCTION : DVBApp_ClearStatus
  15166. **
  15167. ** DESCRIPTION :
  15168. ** clear flag status when change source
  15169. **
  15170. ** PARAMETERS :
  15171. ** None
  15172. **
  15173. ** RETURN VALUES:
  15174. ** None
  15175. *****************************************************************************/
  15176. void DVBApp_ClearStatus(void)
  15177. {
  15178. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  15179. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  15180. bSetUnMuteFlag = FALSE;
  15181. if (eServiceType == AL_RECTYPE_DVBTV)
  15182. {
  15183. g_bMidHasUnmute = FALSE;
  15184. }
  15185. else if (eServiceType == AL_RECTYPE_DVBRADIO)
  15186. {
  15187. g_bMidHasUnmute = TRUE;
  15188. }
  15189. #ifdef SUPPORT_DTV_SHOW_BLUESCREEN
  15190. g_bIsBlueScreen = FALSE;
  15191. #endif
  15192. g_SetPQFlag = FALSE;
  15193. g_bScrambleFlag = PROG_STATUS_SCRAMBLE_UNKNOW;
  15194. g_bAudHasUpdate = FALSE;
  15195. g_UnsupportVideo = FALSE;
  15196. g_bForceProcessEventCbk = TRUE;
  15197. g_bNoSteamData = FALSE;
  15198. g_bTempSerFlag = FALSE;
  15199. #ifdef CONFIG_SUPPORT_OTA_UPGRADE
  15200. DVBApp_SetOTAStatus(FALSE);
  15201. #endif
  15202. #ifdef CONFIG_SUPPORT_EWS
  15203. if (g_NonClearEWS == FALSE)
  15204. {
  15205. DVBApp_ResetEWS();
  15206. }
  15207. #endif
  15208. }
  15209. /*****************************************************************************
  15210. ** FUNCTION : DVBApp_NoSignal_TimerReset
  15211. **
  15212. ** DESCRIPTION :
  15213. **
  15214. **
  15215. ** PARAMETERS :
  15216. **
  15217. ** RETURN VALUES:
  15218. **
  15219. *****************************************************************************/
  15220. void DVBApp_NoSignal_TimerReset(void)
  15221. {
  15222. g_u32NoSignalTimer = 0;
  15223. }
  15224. void DVBApp_NoSignal_StandbyTimerReset(void)
  15225. {
  15226. g_u32NoSignalSleepTimer = 0;
  15227. }
  15228. void DVBApp_CheckSrvType(al_uint8 SdtSrvType, al_uint8 SrvType, al_uint8 VideoCount, al_uint8 AudioCount, AL_DB_ERecordType_t *RetSrvType)
  15229. {
  15230. if (RetSrvType == al_null)
  15231. {
  15232. return;
  15233. }
  15234. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  15235. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  15236. *RetSrvType = AL_RECTYPE_DVBTV;
  15237. if (SrvType != 0xff)
  15238. {
  15239. if (SdtSrvType == SERVICE_DIGITAL_RADIO
  15240. ||SdtSrvType == SERVICE_ADVANCED_DIGITAL_RADIO)
  15241. {
  15242. *RetSrvType = AL_RECTYPE_DVBRADIO;
  15243. }
  15244. else if ((SdtSrvType != SERVICE_DIGITAL_TELEVISION
  15245. && SdtSrvType != SERVICE_MPEG2_HD_DIGITAL_TELEVISION
  15246. && SdtSrvType != SERVICE_ADVANCED_SD_DIGITAL_TV
  15247. && SdtSrvType != SERVICE_ADVANCED_HD_DIGITAL_TV)
  15248. && ((SrvType == SERVICE_DIGITAL_RADIO)
  15249. || (SrvType == SERVICE_ADVANCED_DIGITAL_RADIO)))
  15250. {
  15251. *RetSrvType = AL_RECTYPE_DVBRADIO;
  15252. }
  15253. #ifdef CONFIG_DTMB_SYSTEM
  15254. if (SdtSrvType == SERVICE_DATABROADCAST)
  15255. {
  15256. *RetSrvType = AL_RECTYPE_DVBDATA;
  15257. }
  15258. #endif
  15259. }
  15260. else
  15261. {
  15262. if (SdtSrvType == SERVICE_DIGITAL_RADIO
  15263. ||SdtSrvType == SERVICE_ADVANCED_DIGITAL_RADIO)
  15264. {
  15265. *RetSrvType = AL_RECTYPE_DVBRADIO;
  15266. }
  15267. else if ((SdtSrvType != SERVICE_DIGITAL_TELEVISION
  15268. && SdtSrvType != SERVICE_MPEG2_HD_DIGITAL_TELEVISION
  15269. && SdtSrvType != SERVICE_ADVANCED_SD_DIGITAL_TV
  15270. && SdtSrvType != SERVICE_ADVANCED_HD_DIGITAL_TV)
  15271. && ((SdtSrvType == SERVICE_DIGITAL_RADIO)
  15272. || (SdtSrvType == SERVICE_ADVANCED_DIGITAL_RADIO)))
  15273. {
  15274. *RetSrvType = AL_RECTYPE_DVBRADIO;
  15275. }
  15276. #ifdef CONFIG_DTMB_SYSTEM
  15277. if (SdtSrvType == SERVICE_DATABROADCAST)
  15278. {
  15279. *RetSrvType = AL_RECTYPE_DVBDATA;
  15280. }
  15281. #endif
  15282. }
  15283. if ((VideoCount != 0xff) && (AudioCount != 0xff)
  15284. #ifdef CONFIG_DVB_SYSTEM
  15285. && !APP_Area_SupportAntennaReadyHD() && !APP_Area_SupportRiks()
  15286. #endif
  15287. )
  15288. {
  15289. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  15290. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  15291. if ((VideoCount == 0) && (AudioCount > 0)
  15292. && *RetSrvType == AL_RECTYPE_DVBTV)
  15293. {
  15294. *RetSrvType = AL_RECTYPE_DVBRADIO;
  15295. }
  15296. #ifdef CONFIG_DVB_SYSTEM
  15297. //mantis 186965 by changhong, for mh5 service
  15298. if((VideoCount > 0) && (*RetSrvType == AL_RECTYPE_DVBDATA)
  15299. && (g_stChannelData.Country != AREA_NORWAY))
  15300. {
  15301. *RetSrvType = AL_RECTYPE_DVBTV;
  15302. }
  15303. #endif
  15304. #ifdef CONFIG_DTMB_SYSTEM
  15305. if (VideoCount == 0 && AudioCount == 0)
  15306. {
  15307. *RetSrvType = AL_RECTYPE_DVBDATA;
  15308. }
  15309. #endif
  15310. }
  15311. }
  15312. void DVBApp_CheckNotVisibleBySrvType(al_uint8 SdtSrvType, al_uint8 bTempSrv, al_uint8 *bNotVisible, al_uint8 *bNotNeedSave)
  15313. {
  15314. if (bNotVisible == al_null || bNotNeedSave ==al_null)
  15315. {
  15316. return;
  15317. }
  15318. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  15319. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  15320. #if defined(CONFIG_DVB_SYSTEM) || defined(CONFIG_AUS_DVB_SYSTEM)
  15321. #if 0
  15322. if ((al_false == AL_Event_GetEDTGSupport())
  15323. && (al_false == APP_Area_SupportNorDig())
  15324. && (pstServiceInfo->usPcrPid == 0x1FFF))
  15325. {
  15326. pstServiceInfo->ucServiceFlag |= SERVICE_NON_VISIBLE;
  15327. }
  15328. #endif
  15329. if (SdtSrvType != SERVICE_NO_SDT)
  15330. {
  15331. if(SdtSrvType != SERVICE_DIGITAL_TELEVISION
  15332. && SdtSrvType != SERVICE_DIGITAL_RADIO
  15333. && SdtSrvType != SERVICE_ADVANCED_DIGITAL_RADIO
  15334. && SdtSrvType != SERVICE_ADVANCED_SD_DIGITAL_TV
  15335. && SdtSrvType != SERVICE_ADVANCED_HD_DIGITAL_TV
  15336. && SdtSrvType != SERVICE_MPEG2_HD_DIGITAL_TELEVISION)
  15337. {
  15338. #ifdef CONFIG_DVB_SYSTEM
  15339. if((g_stChannelData.Country == AREA_ENGLAND)
  15340. ||(g_stChannelData.Country == AREA_IRELAND))
  15341. {
  15342. if (SdtSrvType != SERVICE_DATABROADCAST)
  15343. {
  15344. *bNotNeedSave = al_true;
  15345. }
  15346. }
  15347. else if(g_stChannelData.Country == AREA_ITALY)
  15348. {
  15349. if (SdtSrvType != SERVICE_TELETEXT
  15350. && SdtSrvType != SERVICE_NOT_IN_SDT)
  15351. {
  15352. *bNotVisible = TRUE;
  15353. }
  15354. }
  15355. else if (APP_Area_SupportNorDig())
  15356. {
  15357. if ((g_stChannelData.Country == AREA_NORWAY)
  15358. ||((SdtSrvType != SERVICE_DATABROADCAST)
  15359. && (SdtSrvType != SERVICE_TELETEXT)
  15360. && (SdtSrvType != SERVICE_DVB_MHP)))
  15361. {
  15362. *bNotVisible = TRUE;
  15363. }
  15364. }
  15365. else
  15366. #elif defined CONFIG_DTMB_SYSTEM
  15367. if (SdtSrvType == SERVICE_DATABROADCAST
  15368. || SdtSrvType == SERVICE_TELETEXT)
  15369. {
  15370. *bNotVisible = TRUE;
  15371. }
  15372. else
  15373. #endif
  15374. {
  15375. if ((SdtSrvType != SERVICE_NOT_IN_SDT)
  15376. && bTempSrv)
  15377. {
  15378. *bNotVisible = TRUE;
  15379. }
  15380. }
  15381. }
  15382. }
  15383. #endif
  15384. #ifdef CONFIG_DTMB_SYSTEM
  15385. if (SdtSrvType == SERVICE_NVOD_REFERENCE)
  15386. {
  15387. *bNotVisible = TRUE;
  15388. }
  15389. #endif
  15390. /* mantis 0141374 */
  15391. if ((SdtSrvType == SERVICE_NO_SDT)&& bTempSrv)
  15392. {
  15393. *bNotVisible = TRUE;
  15394. }
  15395. }
  15396. void DVBApp_ResetDvbSpecRule(UINT8 u8Area)
  15397. {
  15398. #ifdef SUPPORT_LCN
  15399. UINT16 LcnRule = 0;
  15400. #endif
  15401. #if defined(SUPPORT_LCN)||defined(SUPPOTR_NOT_ADD_SERVICE)
  15402. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  15403. #endif
  15404. #ifdef SUPPORT_LCN
  15405. APP_Area_GetAreaInfoLcnRule(eNetType, u8Area, &LcnRule);
  15406. #endif
  15407. #ifdef SCAN_FREQ_OFFSET_RANGE_ENLARGE
  15408. Dvb_SetFreqEnlargeEnable(0);
  15409. #endif
  15410. #ifdef SUPPORT_LCN
  15411. LCN_SetLCNRule(LcnRule);
  15412. LCN_SetExtLCNRule(DB_DVB_ASSIGN_NONELCN_FOLLOW_SPEC, DB_DVB_ASSIGN_NONELCN_SEPARATE);
  15413. #endif
  15414. AL_Event_SetDTGSupport(FALSE);
  15415. AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_EBOOK, 0, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType);
  15416. AL_CS_DtvSetSpecialSpec(AL_DB_DVB_PRISPEC_EBOOK);
  15417. MID_ScanSetCountryCode(APP_Area_GetCountryCode(u8Area));
  15418. //Temp mask by jun.luo @ 8/5 for fix compile errorMID_DISP_SetDvbSpec(MIDDISP_DVB_SPEC_NONE);
  15419. switch (u8Area)
  15420. {
  15421. #ifdef CONFIG_DVB_SYSTEM
  15422. case AREA_ENGLAND:
  15423. AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_DTG, 0, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType);
  15424. AL_CS_DtvSetSpecialSpec(AL_DB_DVB_PRISPEC_DBOOK);
  15425. AL_Event_SetDTGSupport(TRUE);
  15426. #ifdef CONFIG_SUPPORT_DTG_CERTIFICATION
  15427. //Temp mask by jun.luo @ 8/5 for fix compile errorMID_DISP_SetDvbSpec(MIDDISP_DVB_SPEC_DTG);
  15428. #endif
  15429. break;
  15430. case AREA_ITALY:
  15431. AL_CS_DtvSetSpecialSpec(AL_DB_DVB_PRISPEC_ZBOOK);
  15432. AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_ZBOOK, 0, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType);
  15433. break;
  15434. #ifdef SCAN_FREQ_OFFSET_RANGE_ENLARGE
  15435. case AREA_FRANCE:
  15436. Dvb_SetFreqEnlargeEnable(1);
  15437. break;
  15438. #endif
  15439. case AREA_SPAIN:
  15440. #ifdef SPECIAL_CHNORDER_FOR_SPAIN
  15441. AL_CS_DtvSetSpecialSpec(AL_DB_DVB_PRISPEC_OCA);//Engel OCA need to save all Dupli service
  15442. #endif
  15443. break;
  15444. case AREA_HUNGARY:
  15445. break;
  15446. case AREA_NETHERLANDS:
  15447. break;
  15448. case AREA_FINLAND:
  15449. case AREA_SWEDEN:
  15450. case AREA_DENMARK:
  15451. case AREA_NORWAY:
  15452. //case AREA_GERMANY:
  15453. case AREA_IRELAND:
  15454. AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_NORDIG, 0, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType);
  15455. AL_CS_DtvSetSpecialSpec(AL_DB_DVB_PRISPEC_NORDIG);
  15456. if(u8Area == AREA_IRELAND)
  15457. {
  15458. AL_Event_SetDTGSupport(TRUE);
  15459. }
  15460. //Temp mask by jun.luo @ 8/5 for fix compile error MID_DISP_SetDvbSpec(MIDDISP_DVB_SPEC_NORDIG);
  15461. break;
  15462. #endif
  15463. #ifdef CONFIG_AUS_DVB_SYSTEM
  15464. case AREA_AUSTRALIA:
  15465. case AREA_NEW_ZEALAND:
  15466. case AREA_SINGAPORE:
  15467. case AREA_AUS_OTHER:
  15468. AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_DEMO_DEFAULT, 0, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType);
  15469. break;
  15470. #endif
  15471. default:
  15472. AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_DEMO_DEFAULT, 0, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType);
  15473. break;
  15474. }
  15475. #ifdef SUPPOTR_NOT_ADD_SERVICE
  15476. if(eNetType == AL_DBTYPE_DVB_S)
  15477. {
  15478. AL_PSI_Monitor_NotAddService();
  15479. }
  15480. #endif
  15481. if (u8Area >= MAX_AREA)
  15482. {
  15483. u8Area = 0;
  15484. }
  15485. if (APP_Area_SupportDtg())
  15486. {
  15487. AL_Event_SetDTGSupport(al_true);
  15488. }
  15489. AL_Event_SetCountryCode(APP_Area_GetCountryCode(u8Area));
  15490. APP_GuiMgr_Set_Default_Codepage(u8Area);
  15491. }
  15492. Boolean DVBApp_GetForceProcessEventState(void)
  15493. {
  15494. return g_bForceProcessEventCbk;
  15495. }
  15496. /*****************************************************************************
  15497. ** FUNCTION : DVBApp_fw_callback
  15498. **
  15499. ** DESCRIPTION :
  15500. **
  15501. **
  15502. ** PARAMETERS :
  15503. ** None
  15504. **
  15505. ** RETURN VALUES:
  15506. ** None
  15507. *****************************************************************************/
  15508. INT32 DVBApp_fw_callback(AFW_event_t event, void *param)
  15509. {
  15510. UINT32 message = 0xffffffff;
  15511. UINT32 dParam = 0;
  15512. UINT32 Index = TOTAL_SYS_APP_SIZE;
  15513. if (MAIN_APP_SUCCESS != MAINAPP_GetActiveSystemAppIndex(&Index))
  15514. {
  15515. dvb_printf("[%s: %d][Error] get active system app fail\n", __FUNCTION__, __LINE__);
  15516. return SP_ERR_FAILURE;
  15517. }
  15518. dvb_printf(" Received event: %d from AFW module callback.\n\n",event);
  15519. if (Index == SYS_APP_DVB)
  15520. {
  15521. switch (event)
  15522. {
  15523. case FW_EPG_NOWNEXT_UPDATE_EVENT:
  15524. if(g_bForceProcessEventCbk)
  15525. {
  15526. dParam = *(UINT32 *)param;
  15527. message = event|PASS_TO_SYSAPP;
  15528. }
  15529. else
  15530. {
  15531. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG) &&
  15532. !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPGEXTEND) &&
  15533. !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO) )
  15534. {
  15535. return SP_ERR_FAILURE;
  15536. }
  15537. message = event;
  15538. }
  15539. break;
  15540. case FW_EPG_SCHEDULE_UPDATE_EVENT:
  15541. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG) &&
  15542. !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPGEXTEND) &&
  15543. !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO) )
  15544. {
  15545. return SP_ERR_FAILURE;
  15546. }
  15547. message = event;
  15548. break;
  15549. case FW_EPG_PREF_SERVICE_NAME_UPDATE_EVENT:
  15550. message = FW_MONITOR_UPDATE_SERVICE;
  15551. break;
  15552. case FW_DATASAVING_DVBDB_STORE_START_EVENT:
  15553. case FW_DATASAVING_ATVDB_STORE_START_EVENT:
  15554. case FW_DATASAVING_DVBDB_STORE_END_EVENT:
  15555. case FW_DATASAVING_ATVDB_STORE_END_EVENT:
  15556. message = event;
  15557. break;
  15558. #ifdef CONFIG_SUPPORT_TTX
  15559. case FW_TT_NO_DATA:
  15560. message = event|PASS_TO_SYSAPP;
  15561. break;
  15562. #endif
  15563. #ifdef CONFIG_SUPPORT_PVR
  15564. case FW_SCHEDULER_EVENT:
  15565. {
  15566. dvb_printf("event is coming,");
  15567. message = APP_DVB_GLOBAL_EVENT_PVRSCH |PASS_TO_SYSAPP;
  15568. dvb_printf("handle = 0x%x\n", ((AL_PR_details_t *)param)->rem_details.handle);
  15569. memcpy(&g_stDetails, param, sizeof(AL_PR_details_t));
  15570. dParam = (UINT32)&g_stDetails;
  15571. free(param);
  15572. param = NULL;
  15573. }
  15574. break;
  15575. case FW_SCHEDULER_MSG:
  15576. dvb_printf("first warning: event will come in 10 sec\n");
  15577. dParam = *(UINT32 *)param;
  15578. message = APP_GLOBAL_EVENT_PVR_REMINDER|PASS_TO_SYSAPP;
  15579. break;
  15580. case FW_SCHEDULER_EXPIRE:
  15581. dvb_printf("warning: event duration is over #############\n");
  15582. message = APP_DVB_GLOBAL_EVENT_PVR_EXPIRE|PASS_TO_SYSAPP;
  15583. dParam =*(UINT32 *)param;
  15584. break;
  15585. #endif
  15586. case FW_MONITOR_TUNER_LOCKED:
  15587. case FW_MONITOR_TUNER_UNLOCKED:
  15588. #ifdef CONFIG_TESTAUTOREBOOT
  15589. {
  15590. FW_mode_t FW_Module = FW_NORMAL_VIEW_MODE;
  15591. AL_FW_GetFWModule(&FW_Module);
  15592. /*don't enable autoreboot while searching channel and update*/
  15593. if (FW_Module != FW_CHAN_SRCH_MODE && FW_Module != FW_UPGRADE_MODE)
  15594. {
  15595. if (event == FW_MONITOR_TUNER_UNLOCKED)
  15596. {
  15597. #ifdef CONFIG_AUTOREBOOT_NO_SIGNAL
  15598. ir_autoreboot_enable();
  15599. #else
  15600. ir_autoreboot_disable();
  15601. #endif
  15602. }
  15603. if (event == FW_MONITOR_TUNER_LOCKED)
  15604. {
  15605. #ifdef CONFIG_AUTOREBOOT_NO_SIGNAL
  15606. ir_autoreboot_disable();
  15607. #else
  15608. ir_autoreboot_enable();
  15609. #endif
  15610. }
  15611. }
  15612. }
  15613. #endif
  15614. case FW_MONITOR_STREAM_NO_DATA:
  15615. case FW_MONITOR_STREAM_INVALID_DATA:
  15616. case FW_MONITOR_STREAM_UNSUPPORT_DATA:
  15617. case FW_MONITOR_STREAM_HAS_DATA:
  15618. case FW_MONITOR_SERVICE_VIDEO_AUDIO_SCRAMBLE:
  15619. case FW_MONITOR_SERVICE_ONLY_VIDEO_SCRAMBLE:
  15620. case FW_MONITOR_SERVICE_ONLY_AUDIO_SCRAMBLE:
  15621. case FW_MONITOR_SERVICE_NO_SCRAMBLE:
  15622. case FW_MONITOR_PARENTAL_LOCKED:
  15623. case FW_MONITOR_PARENTAL_UNLOCKED:
  15624. case FW_MONITOR_SERVICE_MOVE:
  15625. case FW_MONITOR_AUDIO_UPDATE:
  15626. case FW_MONITOR_SUBTITLE_UPDATE:
  15627. case FW_MONITOR_TELETEXT_UPDATE:
  15628. case FW_MONITOR_ADD_SERVICE:
  15629. case FW_MONITOR_UPDATE_SERLCN:
  15630. case FW_MONITOR_REMOVE_SERVICE:
  15631. case FW_MONITOR_OTHERTP_SERVICE_FOUND:
  15632. case FW_MONITOR_REPLACE_SERVICE:
  15633. case FW_MONITOR_REPLACE_SIMULCASE_SERVICE:
  15634. case FW_MONITOR_TS_CHANGED:
  15635. case FW_MONITOR_NEW_TSID:
  15636. case FW_MONITOR_TIME_UPDATE:
  15637. case FW_MONITOR_FIND_NEW_TPLIST:
  15638. case FM_DTV_AUDIO_STARTED:
  15639. case FM_DTV_AUDIO_SAMPLE_STOPPED:
  15640. case FM_DTV_AUDIO_STOPPED:
  15641. #ifdef AC_ON_AUTO_GET_TIME
  15642. if ((g_fBackgroundGetTime == TRUE)
  15643. && (event == FW_MONITOR_TIME_UPDATE))
  15644. {
  15645. APP_WAKEUP_SetBootFlag(FALSE);
  15646. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF);
  15647. }
  15648. #endif
  15649. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  15650. if (event == FW_MONITOR_TIME_UPDATE)
  15651. {
  15652. APP_TimeUpdateSetFlag(TRUE);
  15653. }
  15654. #endif
  15655. message = event|PASS_TO_SYSAPP;
  15656. dParam = *(al_uint32 *)param;
  15657. break;
  15658. case FW_MONITOR_UPDATE_SERVICE:
  15659. message = event;
  15660. break;
  15661. /* remove by qinhe on 2014/02/12 for mantis 18485, unmute need vip notify app */
  15662. /*case FW_MONITOR_PMT_UPDATE:
  15663. message= APP_DVB_GLOBAL_EVENT_SET_UNMUTE|PASS_TO_SYSAPP;
  15664. dParam = *(al_uint32 *)param;
  15665. break;*/
  15666. case FW_MONITOR_SERTYPE_CHANGED:
  15667. message = event|PASS_TO_SYSAPP;
  15668. dParam = *(al_uint32 *)param;
  15669. break;
  15670. #ifdef CONFIG_SUPPORT_PVR
  15671. case FW_MONITOR_REMINDER_EXPIRE:
  15672. {
  15673. al_uint32 TimeInSec = 0;
  15674. AL_Time_t time;
  15675. memset(&time, 0, sizeof(time));
  15676. AL_Time_MjdToYmd(AL_Time_GetRawMjd(),&time.Year, &time.Month, &time.Day);
  15677. AL_Time_GetRawTime(&time.Hour, &time.Min, &time.Sec);
  15678. AL_Time_DateToSecs(&time, &TimeInSec);
  15679. tv_SetBaseTimetoSystem(TimeInSec);
  15680. }
  15681. #ifdef AC_ON_AUTO_GET_TIME
  15682. if (g_fBackgroundGetTime == TRUE)
  15683. {
  15684. APP_WAKEUP_SetBootFlag(FALSE);
  15685. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF);
  15686. }
  15687. #endif
  15688. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  15689. APP_TimeUpdateSetFlag(TRUE);
  15690. #endif
  15691. message = APP_DVB_GLOBAL_EVENT_REMINDER_EXPIRE;
  15692. break;
  15693. case FW_MONITOR_REMINDER_TIME_CHANGE:
  15694. {
  15695. al_uint32 TimeInSec = 0;
  15696. AL_Time_t time;
  15697. memset(&time, 0, sizeof(time));
  15698. AL_Time_MjdToYmd(AL_Time_GetRawMjd(),&time.Year, &time.Month, &time.Day);
  15699. AL_Time_GetRawTime(&time.Hour, &time.Min, &time.Sec);
  15700. AL_Time_DateToSecs(&time, &TimeInSec);
  15701. tv_SetBaseTimetoSystem(TimeInSec);
  15702. }
  15703. #ifdef AC_ON_AUTO_GET_TIME
  15704. if (g_fBackgroundGetTime == TRUE)
  15705. {
  15706. APP_WAKEUP_SetBootFlag(FALSE);
  15707. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF);
  15708. }
  15709. #endif
  15710. if (param == NULL)
  15711. {
  15712. UMFDBG(0,"[error],%s %d\n",__FUNCTION__,__LINE__);
  15713. }
  15714. dParam =*(al_uint32 *) param;
  15715. message = APP_DVB_GLOBAL_EVENT_REMINDER_TIME_CHANGE | PASS_TO_SYSAPP;
  15716. break;
  15717. #endif
  15718. case FW_SIGNAL_PRESENT:
  15719. case FW_VIP_FINISH:
  15720. #ifdef CONFIG_CI_SUPPORT
  15721. if (g_Audio_Scramble_Counter!=0)
  15722. {
  15723. g_VIP_FINISH_Flg = TRUE;
  15724. g_Audio_Scramble_Counter = 0;
  15725. }
  15726. else
  15727. {
  15728. if (g_VIP_FINISH_Flg==TRUE)
  15729. {
  15730. g_VIP_FINISH_Flg = FALSE;
  15731. }
  15732. }
  15733. #endif
  15734. #ifdef SUPPORT_FACTORY_AUTO_TEST
  15735. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  15736. {
  15737. APP_Source_Type_t eSourType;
  15738. APP_GUIOBJ_Source_GetCurrSource(&eSourType);
  15739. APP_GOBJ_Source_Set_SourceCheck(eSourType);
  15740. }
  15741. #endif
  15742. if (APP_GUIOBJ_DVB_Playback_GetZappingState() == FALSE)
  15743. {
  15744. #ifdef CONFIG_SUPPORT_PVR
  15745. al_uint8 bSignalState = al_false;
  15746. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  15747. if((MID_TSPLParser_GetThreadState() == TRUE)&&(!bSignalState))
  15748. {
  15749. //timeshift, no signal
  15750. }
  15751. else
  15752. #endif
  15753. {
  15754. message = APP_DVB_GLOBAL_EVENT_SET_UNMUTE|PASS_TO_SYSAPP;
  15755. }
  15756. }
  15757. #ifdef CONFIG_QSD
  15758. // To echo message with DTV has signal for chip test using.
  15759. con_dbg_echo('G', 'O');
  15760. con_dbg_echo('O', 'D');
  15761. #endif
  15762. break;
  15763. #ifdef CONFIG_SCART_SUPPORT
  15764. case FW_SCART_INPUTSTATUS_CHANGE:
  15765. #ifdef CONFIG_SUPPORT_PVR
  15766. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)
  15767. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  15768. {
  15769. break;
  15770. }
  15771. #endif
  15772. dParam = *(UINT32 *)param;
  15773. APP_SCARTIN_Pin8Function(dParam);
  15774. break;
  15775. #endif
  15776. #ifdef SUPPORT_CEC_TV
  15777. case FW_HDMI_PORTSTATUS:
  15778. dParam = *(UINT32 *)param;
  15779. message = APP_DVB_GLOBAL_EVENT_HDMIPORT_STATUS|PASS_TO_SYSAPP;
  15780. break;
  15781. #endif
  15782. #if 0
  15783. case FW_DB_LOAD_DEFAULT:
  15784. message = event|PASS_TO_SYSAPP;
  15785. dParam = *(al_uint32 *)param;
  15786. break;
  15787. #endif
  15788. case FW_AUDIO_HEADPHONE_PLUG_IN:
  15789. message = APP_GLOBAL_EVENT_HEADPHONE_PLUG_IN|PASS_TO_SYSAPP;
  15790. break;
  15791. case FW_AUDIO_HEADPHONE_PLUG_OUT:
  15792. message = APP_GLOBAL_EVENT_HEADPHONE_PLUG_OUT|PASS_TO_SYSAPP;
  15793. break;
  15794. #ifdef CONFIG_QSD
  15795. case FW_QSD_Media_Play:
  15796. dParam = *(UINT32 *)param;
  15797. message = APP_GLOBAL_EVENT_QSD_MEDIA_PLAY|PASS_TO_SYSAPP;
  15798. break;
  15799. case FW_QSD_Source_Set:
  15800. dParam = *(UINT32 *)param;
  15801. message = APP_GLOBAL_EVENT_QSD_SET_SOURCE|PASS_TO_SYSAPP;
  15802. break;
  15803. case FW_QSD_DTV_SetCH:
  15804. dParam = (UINT32)APP_Database_GetHdlByIdx(*(UINT32 *)param);
  15805. message = APP_DVB_GLOBAL_EVENT_ZAPPING|PASS_TO_SYSAPP;
  15806. break;
  15807. #endif
  15808. #ifdef CONFIG_SUPPORT_EWS
  15809. case FW_EWS_REC_ANCM:
  15810. case FW_EWS_FIND_AUD:
  15811. dParam =*(al_uint32 *) param;
  15812. message = FW_EWS_FIND_AUD|PASS_TO_SYSAPP;
  15813. break;
  15814. case FW_EWS_ACTIVE:
  15815. case FW_EWS_INACTIVE:
  15816. case FW_EWS_NON_ANCM:
  15817. message = event|PASS_TO_SYSAPP;
  15818. break;
  15819. #endif
  15820. case FW_USB_PLUGIN:
  15821. break;
  15822. case FW_USB_PLUGOUT:
  15823. break;
  15824. #ifdef CONFIG_HDMI_SUPPORT_MHL
  15825. case FW_HDMI_MHL_CONNECTED:
  15826. dParam = *(UINT32 *)param;
  15827. if(dParam == 1)
  15828. {
  15829. message = DMN_EVENT_MHL_CHANGE_SOURCE|PASS_TO_SYSAPP;
  15830. }
  15831. break;
  15832. #endif
  15833. default:
  15834. message = 0xffffffff;
  15835. break;
  15836. }
  15837. }
  15838. else
  15839. {
  15840. switch (event)
  15841. {
  15842. default:
  15843. message = 0xffffffff;
  15844. break;
  15845. }
  15846. }
  15847. if (message != 0xffffffff)
  15848. {
  15849. SYSAPP_IF_SendCriticalGlobalEventWithIndex(Index, message, dParam);
  15850. return SP_SUCCESS;
  15851. }
  15852. else
  15853. {
  15854. return SP_ERR_FAILURE;
  15855. }
  15856. }
  15857. void DVBApp_VolumeKeyHandler(UINT32 dMessage, UINT8 IsCECKey)
  15858. {
  15859. UINT8 u8Mute=0;
  15860. al_uint8 bSignalState = al_false;
  15861. if(IsCECKey == TRUE)
  15862. {
  15863. #ifdef SUPPORT_CEC_TV
  15864. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  15865. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  15866. if (( APP_SWITCH_ON == g_stFeatureData.Enable_HDMILink)
  15867. #ifdef SUPPORT_AMPLIFIER_CONTROL
  15868. &&(APP_SWITCH_ON == g_stFeatureData.AmplifierControl)
  15869. #endif
  15870. &&(APP_HDMILINK_AMPLIFIER == g_stFeatureData.SpeakerPreference) && APP_GUIOBJ_Source_GetAmplifierPort())
  15871. {
  15872. if (CECTV_GetCECEnable()==CECTV_ENABLE && CECTV_GetHDMISystemAudioMode() && APP_Check_CEC_DEVICE_Status())
  15873. {
  15874. //if(APP_Get_HDMICEC_AMP_Mute_Status() == TRUE)
  15875. {
  15876. //APP_Set_HDMICEC_AMP_Mute_Status(FALSE);
  15877. //APP_GUIOBJ_Mute_MuteKeyHandler();
  15878. //CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_KEYPRESS, CECTV_KEY_MUTE<<8|0x05);//Mute Function
  15879. //SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, APP_GUIOBJ_MUTE,APP_INTRA_EVENT_HIDE_MUTE, 0);
  15880. }
  15881. }
  15882. }
  15883. #endif
  15884. }
  15885. else
  15886. {
  15887. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  15888. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  15889. u8Mute = g_stUserInfoData.Mute;
  15890. if (u8Mute == TRUE)
  15891. {
  15892. if(dMessage == UI_EVENT_VOL_UP || IsCECKey == TRUE)
  15893. {
  15894. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  15895. if ((bSignalState == AL_DVB_MONITOR_VALUE_TRUE)
  15896. #ifdef CONFIG_SUPPORT_PVR
  15897. || (MID_TSPLParser_GetThreadState())
  15898. #endif
  15899. )
  15900. {
  15901. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_DTV);
  15902. }
  15903. else
  15904. {
  15905. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_NO_SIGNALE, APP_SOURCE_DTV);
  15906. }
  15907. g_stUserInfoData.Mute = FALSE;
  15908. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  15909. ITEM_OFFSET(APP_SETTING_UserInfo_t, Mute),
  15910. sizeof(g_stUserInfoData.Mute), &(g_stUserInfoData.Mute));
  15911. #ifdef SUPPORT_STORE_MUTE_FLAG
  15912. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  15913. ITEM_OFFSET(APP_SETTING_UserInfo_t, Mute),
  15914. sizeof(g_stUserInfoData.Mute));
  15915. #endif
  15916. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, APP_GUIOBJ_MUTE,APP_INTRA_EVENT_HIDE_MUTE, 0);
  15917. }
  15918. }
  15919. }
  15920. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL))
  15921. {
  15922. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  15923. }
  15924. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL))
  15925. {
  15926. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  15927. }
  15928. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER))
  15929. {
  15930. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER);
  15931. }
  15932. #ifdef CONFIG_SUPPORT_PVR
  15933. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  15934. {
  15935. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  15936. }
  15937. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  15938. {
  15939. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC);
  15940. }
  15941. #endif
  15942. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  15943. {
  15944. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO);
  15945. }
  15946. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  15947. {
  15948. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  15949. }
  15950. if(IsCECKey == TRUE
  15951. #ifdef SUPPORT_CEC_TV
  15952. && CECTV_GetHDMISystemAudioMode() && APP_Check_CEC_DEVICE_Status()
  15953. #endif
  15954. )
  15955. {
  15956. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  15957. {
  15958. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  15959. }
  15960. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  15961. {
  15962. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  15963. }
  15964. else
  15965. {
  15966. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME, 0);
  15967. }
  15968. }
  15969. else
  15970. {
  15971. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  15972. {
  15973. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  15974. }
  15975. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  15976. {
  15977. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  15978. }
  15979. else
  15980. {
  15981. //Below is CV's spec,pressing Volume key should realize function instead of showing adjust bar only.
  15982. UINT8 u8VolumeIdx = g_stVariationalData.Volume;
  15983. if (dMessage == UI_EVENT_VOL_UP)
  15984. {
  15985. g_stVariationalData.Volume = u8VolumeIdx >= ADJUST_MAX_VALUE ? ADJUST_MAX_VALUE : ++u8VolumeIdx;
  15986. #ifdef SUPPORT_GPIO_HPDET
  15987. APP_Audio_Set_VolUnmute_HP();
  15988. #endif
  15989. }
  15990. else if (dMessage == UI_EVENT_VOL_DN)
  15991. {
  15992. g_stVariationalData.Volume = u8VolumeIdx <= ADJUST_MIN_VALUE ? ADJUST_MIN_VALUE : --u8VolumeIdx;
  15993. }
  15994. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  15995. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  15996. if ((g_stFactoryHotelData.MaxVolume < g_stVariationalData.Volume)
  15997. &&(g_stFactoryHotelData.HotelModeOnOff == 1))
  15998. {
  15999. g_stVariationalData.Volume = g_stFactoryHotelData.MaxVolume;
  16000. }
  16001. APP_Audio_SetVolume((UINT32)g_stVariationalData.Volume);
  16002. #ifdef SUPPORT_LINEOUT_AS_HP
  16003. APP_Audio_SetLineoutVol((UINT32)g_stVariationalData.Volume);
  16004. #endif
  16005. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  16006. ITEM_OFFSET(APP_SETTING_Variational_t, Volume),
  16007. sizeof(g_stVariationalData.Volume), &(g_stVariationalData.Volume));
  16008. //AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  16009. //ITEM_OFFSET(APP_SETTING_UserInfo_t, Volume), sizeof(g_stUserInfoData.Volume));
  16010. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_ADJUST, ADJUST_VOLUME);
  16011. }
  16012. }
  16013. }
  16014. Boolean DVBApp_GetUnstableState(void)
  16015. {
  16016. return g_bUnstable;
  16017. }
  16018. void DVBApp_SetUnstableState(Boolean bstate)
  16019. {
  16020. g_bUnstable = bstate;
  16021. }
  16022. Boolean DVBApp_GetFindNewTSIDFlag(void)
  16023. {
  16024. return bFindNewTSID;
  16025. }
  16026. Boolean DVBApp_ClearFindNewTSIDFlag(void)
  16027. {
  16028. bFindNewTSID = FALSE;
  16029. return 0;
  16030. }
  16031. #ifdef CONFIG_SUPPORT_EWS
  16032. al_uint8 DVBApp_GetEWSMode(void)
  16033. {
  16034. return g_EWSMode;
  16035. }
  16036. void DVBApp_ResetEWS(void)
  16037. {
  16038. dvb_printf("\n\n[%s] is called!!!!!!!\n\n", __FUNCTION__);
  16039. DMIOC_SET_EWS_PARAM stEwsParam;
  16040. memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM));
  16041. if (g_EWSMode == TRUE)
  16042. {
  16043. stEwsParam.bActive = FALSE;
  16044. ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam);
  16045. }
  16046. g_PrevProgHandle = AL_DB_INVALIDHDL;
  16047. g_EWSMode = FALSE;
  16048. memset(&g_PrevAudioPid, 0, sizeof(DBPIDInfo_t));
  16049. g_PrevAudioPid.usDataPID = DB_DVB_INVALID_PID;
  16050. memset(&g_MonAudioPid, 0, sizeof(DBPIDInfo_t));
  16051. g_MonAudioPid.usDataPID = DB_DVB_INVALID_PID;
  16052. AL_EWS_Monitor_ResetData();
  16053. }
  16054. #endif
  16055. Boolean DVBApp_CheckHasVideo(void)
  16056. {
  16057. AL_RecHandle_t hTempHdl = AL_DB_INVALIDHDL;
  16058. MID_PlaybackGetCurProgHandle(al_null, &hTempHdl);
  16059. DBPIDInfo_t stVideoPid;
  16060. memset(&stVideoPid,0xff,sizeof(DBPIDInfo_t));
  16061. AL_DB_QueryDetailFieldByName(hTempHdl, (al_uint8 *)"stVideoPid", (al_void *)&stVideoPid);
  16062. if ((stVideoPid.usDataPID&0x1fff) == 0x1fff)
  16063. {
  16064. return FALSE;
  16065. }
  16066. else
  16067. {
  16068. return TRUE;
  16069. }
  16070. }