dvb_app.c 529 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515
  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. /********************************************************************
  196. Macros
  197. ********************************************************************/
  198. #define DVB_DEBUG
  199. #ifdef DVB_DEBUG
  200. #define dvb_printf(fmt, arg...) UMFDBG(0,"[DVB App]"fmt, ##arg)
  201. #else
  202. #define dvb_printf(fmt, arg...) ((void) 0)
  203. #endif
  204. #define PVR_DEBUG
  205. #ifdef PVR_DEBUG
  206. #undef PVR_DEBF
  207. #define PVR_DEBF(fmt, arg...) UMFDBG(0,fmt, ##arg)
  208. #else
  209. #undef PVR_DEBF
  210. #define PVR_DEBF(fmt, arg...) ((void) 0)
  211. #endif
  212. //#define FW_DEBUG
  213. #ifdef FW_DEBUG
  214. #define FW_DEBF(fmt, arg...) UMFDBG(0,fmt, ##arg)
  215. #else
  216. #define FW_DEBF(fmt, arg...) ((void) 0)
  217. #endif
  218. #ifdef SUPPORT_SUBTITLE_ON_PG
  219. #define ON_DATA_APPLICATION_DECISION(b)\
  220. ((b&OSD2CTRLMDL_SUB)>0? (OSD2CTRLMDL_SUB|(b&OSD2CTRLMDL_MH5)):(b&OSD2CTRLMDL_TTX))
  221. #else
  222. #define ON_DATA_APPLICATION_DECISION(b)\
  223. ((b&OSD2CTRLMDL_SUB)>0? OSD2CTRLMDL_SUB:((b&OSD2CTRLMDL_MH5)>0? OSD2CTRLMDL_MH5:(b&OSD2CTRLMDL_TTX)))
  224. #endif
  225. #define AP_FMW_DFP_NAME_BUFF_SIZE (32<<10)
  226. #ifdef SUPPORT_DYNAMIC_MULTIPLEXES
  227. #define MAX_TMP_PROG_SIZE 100
  228. #endif
  229. #define DVB_10_MINUTES (5400)//5400*100 ms(9 min)
  230. #define NOT_USED(p) ((void)(p))
  231. /********************************************************************
  232. Type definitions
  233. ********************************************************************/
  234. enum
  235. {
  236. DATA_APP_UNSTABLE = 0, // si information doesn't find yet
  237. DATA_APP_LANUCHABLE = (1 << 1), // the module has data,
  238. DATA_APP_NOT_FOUND = (1 << 2), // no data found for this application
  239. DATA_APP_EXECUTABLE = (1 << 7), // there is data, and it can be shown
  240. } enDataAppModuleState;
  241. typedef struct DvbPrivateData_t_
  242. {
  243. //user define private data
  244. UINT32 dUserData;
  245. } DvbPrivateData_t;
  246. typedef void (*SysTimeFunc)(void);
  247. /********************************************************************
  248. Function Declare
  249. ********************************************************************/
  250. #ifdef CONFIG_CIPLUS_SUPPORT
  251. extern INT32 APP_DVB_CI_CiInit(void);
  252. static Boolean g_isMute = FALSE;
  253. #endif
  254. #ifdef AC_ON_AUTO_GET_TIME
  255. extern Boolean g_fBackgroundGetTime;
  256. #endif
  257. extern UINT8 AL_FLASH_GetColorLUTALL(ColorLUT_t* bColorLUTValue);
  258. extern int APP_GUIOBJ_3DMenu_SetModeNoOutPutStructure(UINT32 u32Mode);
  259. extern void _APP_GUIOBJ_3DMenu_GetForce2DAnother(UINT32 *u32Force2D);
  260. extern void _APP_GUIOBJ_3DMenu_SetForce2DAnother(UINT32 u32Force2D);
  261. static INT32 _DVBApp_OnCreate(void **ppPrivateData);
  262. static INT32 _DVBApp_OnDestroy(void **ppPrivateData);
  263. static INT32 _DVBApp_OnRun(void *pPrivateData, UINT32 dParam);
  264. static INT32 _DVBApp_OnTerminate(void *pPrivateData, UINT32 dParam);
  265. static INT32 _DVBApp_OnTimerUpdate(void *pPrivateData);
  266. static INT32 _DVBApp_OnEvent(void *pPrivateData, UINT32 dMessage, UINT32 dParam);
  267. extern void _APP_GUIOBJ_Sound_SetMuteStatus();
  268. extern UINT8 gIsFactoryResetting;
  269. static INT32 _DVBApp_Zapping(
  270. UINT8 bServiceType, AL_RecHandle_t hProgHdl,
  271. UINT8 bForce, UINT32 u32Paramter, Boolean bShowInfo);
  272. static INT32 _DVBApp_CloseAllMenu(void);
  273. extern Boolean gUSBUpgradeBinIsSupperBin;
  274. /********************************************************************
  275. Global Variables
  276. ********************************************************************/
  277. SysAppInstDef stDvbInst =
  278. {
  279. SYS_APP_DVB,
  280. _DVBApp_OnCreate,
  281. _DVBApp_OnDestroy,
  282. _DVBApp_OnRun,
  283. _DVBApp_OnTerminate,
  284. _DVBApp_OnTimerUpdate,
  285. _DVBApp_OnEvent,
  286. SYSTEM_IDLE, //system state.
  287. Dvb_GUI_Obj_List, //GUI object table
  288. DVB_GUIOBJ_MAX, //GUI object table size
  289. NULL, //System Application Infrastructure (should not be modified)
  290. NULL //System Application private data (created in OnInitialize function)
  291. };
  292. #ifdef CONFIG_CI_SUPPORT
  293. UINT32 g_CI_IgnoreGuiObjID[] =
  294. {
  295. DVB_GUIOBJ_EPG,
  296. DVB_GUIOBJ_CHNLIST,
  297. DVB_GUIOBJ_FAVLIST,
  298. DVB_GUIOBJ_MULTIAUD,
  299. DVB_GUIOBJ_SCAN_PROCESS,
  300. #ifdef CONFIG_SUPPORT_TTX
  301. DVB_GUIOBJ_TTX,
  302. #endif
  303. #ifdef CONFIG_SUPPORT_SUBTITLE
  304. DVB_GUIOBJ_SUBTITLEMENU,
  305. #endif
  306. APP_GUIOBJ_SOURCE,
  307. };
  308. UINT32 g_CI_HideGuiObjID[] =
  309. {
  310. DVB_GUIOBJ_PROGINFO,
  311. DVB_GUIOBJ_PROGNUM,
  312. };
  313. #endif
  314. #ifdef CONFIG_SUPPORT_3D_EN
  315. extern UINT8 bSet3DMode;
  316. #endif
  317. /*Static Variables*/
  318. #ifdef CONFIG_SUPPORT_ESTICKER_INFILE
  319. static UINT8 g_u32StoreModeOpenTimer = 0;
  320. #endif
  321. static PopmsgParam_t stPopupWaitingList[PLAYBACK_POPUP_MAX-PLAYBACK_POPUP_NONE];
  322. static UINT32 g_dCurPopup = PLAYBACK_POPUP_NONE;
  323. static UINT32 g_u32OldPopup = PLAYBACK_POPUP_NONE;
  324. static UINT32 g_u32NoSignalTimer = 0;
  325. static UINT32 g_u32NoSignalSleepTimer = 0;
  326. static UINT32 g_u32PopupWaitingList = 0;
  327. static UINT8 g_PauseState = FALSE;
  328. static UINT8 g_SetPQFlag = FALSE;
  329. static bool bSetUnMuteFlag = FALSE;
  330. static bool g_bMidHasUnmute = FALSE;
  331. static Prog_ScrambleStatus_t g_bScrambleFlag = PROG_STATUS_SCRAMBLE_UNKNOW;
  332. static bool g_bTempSerFlag = FALSE;
  333. #ifdef CONFIG_SUPPORT_OTA_UPGRADE
  334. static bool g_bOTAFlag = FALSE;
  335. #endif
  336. #ifdef SUPPORT_DTV_SHOW_BLUESCREEN
  337. static bool g_bIsBlueScreen = FALSE;
  338. #endif
  339. static bool g_bForceProcessEventCbk = FALSE;
  340. #ifdef CONFIG_SUPPORT_PVR
  341. AL_SCH_sched_id_t stoprec_id = AL_SCH_INVALID_ID;
  342. AL_SCH_sched_id_t chsrc_id = AL_SCH_INVALID_ID;
  343. static Boolean g_bIsCHUp = FALSE;
  344. static Boolean g_bIsNumKey = FALSE;
  345. static AL_RecHandle_t g_ProgHandle;
  346. static UINT8 g_u8BGTimeshiftStart = 0;
  347. static MID_REC_MODE g_eCheckRecMode = MID_REC_MODE_MAX; //for auto mode speed not enough popup
  348. AL_RecHandle_t g_ProgHandleB4Rec;
  349. static Boolean g_bTvRadioSwap = FALSE; //for timer rec to swap TV RADIO
  350. static Boolean g_bPVRSwitchSource = FALSE;
  351. AL_SCH_sched_id_t g_dReminderId;
  352. AL_PR_details_t g_stDetails;
  353. AL_PR_details_t g_stOldDetails;
  354. AL_DB_ERecordType_t g_eRecType;
  355. AL_PR_type_t g_remtype = AL_PR_INVALID_REM;
  356. static APP_Favorite_t FavType = APP_FAVORITE_NONE;
  357. static Boolean g_bIsPlaykey = TRUE;/*<set this flag when user press play/pause key*/
  358. #endif
  359. static Boolean g_bIsFav = FALSE;
  360. static UINT8 g_u8SourceTrastTimer = 0;
  361. static UINT8 g_u8PopScrambleMsgTimer = 0;
  362. static UINT8 g_u8ZappingTimer = 0;
  363. extern Boolean g_bAudHasUpdate;
  364. #ifdef TEAC_BLUE_KEY_FUNCTION
  365. static APP_Panel_PowerSequenceType_e g_eAppPanelOnOff = APP_PANEL_POWER_UP;
  366. #endif
  367. static Boolean g_bUnstable = FALSE;
  368. #if defined (CONFIG_SUPPORT_TTX ) && defined(CONFIG_SUPPORT_TTX_DISP_FOR_AUS)
  369. static UINT8 g_u8TTXTimer = 0;
  370. #endif
  371. static al_uint8 g_bNoSteamData = AL_DVB_MONITOR_VALUE_INVAILED; /**<stream data state record, al_false: has stream data, al_true: no stream data*/
  372. static al_uint8 g_AdioChnPolTime = 0;
  373. #ifdef CONFIG_SUPPORT_EWS
  374. static AL_RecHandle_t g_PrevProgHandle = AL_DB_INVALIDHDL;
  375. static al_uint8 g_EWSMode = FALSE;
  376. static al_uint8 g_NonClearEWS = FALSE;
  377. static DBPIDInfo_t g_MonAudioPid;
  378. static DBPIDInfo_t g_PrevAudioPid;
  379. #endif
  380. #ifdef CONFIG_CI_SUPPORT
  381. static al_uint8 g_Audio_Scramble_Counter = 0;
  382. static Boolean g_VIP_FINISH_Flg = FALSE;
  383. #define AUDIO_SCRAMBLE_COUNT 50
  384. #endif
  385. static Boolean bFindNewTSID = FALSE;
  386. static INT32 g_u32Mutekeydelaytime = 10;
  387. static INT32 g_u32MuteIconHandle = 10;
  388. static INT32 MUTE_KEY_INTERVAL = 10;
  389. #ifdef CONFIG_SUPPORT_SSU_UPGRADE
  390. static bool autoupgrade = FALSE;// false:don't auto upgrade(show prompt), True: auto(show progress)
  391. static AU_Timer_state_e autoupgrade_sate = AU_MAX;// this param is used for control auto grade process.
  392. static bool bBootAutoUpGrade = 0;
  393. void DVBApp_SetBootAutoUpGrade(Boolean flag)
  394. {
  395. bBootAutoUpGrade = flag;
  396. }
  397. Boolean DVBApp_IsBootUpGrade(void)
  398. {
  399. return bBootAutoUpGrade;
  400. }
  401. #if defined (CONFIG_SUPPORT_TTX ) && defined(CONFIG_SUPPORT_TTX_DISP_FOR_AUS)
  402. void APP_SetTTXTimer(UINT8 time)
  403. {
  404. g_u8TTXTimer = time;
  405. }
  406. UINT8 APP_GetTTXTimer(void)
  407. {
  408. return g_u8TTXTimer;
  409. }
  410. #endif
  411. void DVBApp_SetAutoUpgrade(Boolean state)
  412. {
  413. autoupgrade = state;
  414. }
  415. Boolean DVBApp_IsAutoUpgrade(void)
  416. {
  417. return autoupgrade;
  418. }
  419. AU_Timer_state_e DVBApp_GetAU_Sate(void)
  420. {
  421. return autoupgrade_sate;
  422. }
  423. void DVBApp_SetAU_Sate(AU_Timer_state_e state)
  424. {
  425. autoupgrade_sate = state;
  426. }
  427. #endif
  428. #ifdef CONFIG_CONFIRM_AUTO_UPGRADE
  429. static int dLastFocusedIndex = 0;
  430. #endif
  431. /********************************************************************
  432. Function Define
  433. ********************************************************************/
  434. UINT8 APP_GetPlaybackPauseState(void)
  435. {
  436. return g_PauseState;
  437. }
  438. void APP_SetPlaybackPauseState(UINT8 state)
  439. {
  440. g_PauseState = state;
  441. }
  442. #ifdef SUPPORT_DYNAMIC_MULTIPLEXES
  443. static void _DVBApp_NewServicesToDatabase(void)
  444. {
  445. dvb_printf("%s() \n",__FUNCTION__);
  446. int i,j;
  447. UINT16 sindex,num;
  448. UINT32 u32CurrentArea;
  449. AL_PSIMon_SimpleSrv_t *srvbuf= (AL_PSIMon_SimpleSrv_t *) zero_malloc(sizeof(AL_PSIMon_SimpleSrv_t)*PSIMON_MAX_OTHERTP_SRV);
  450. UINT8 *srvnamebuf= (UINT8 *) zero_malloc(DB_DVB_MAX_CHNAME_LEN*PSIMON_MAX_OTHERTP_SRV);
  451. AL_DB_EDBType_t eDBType = APP_DVB_Playback_GetCurrentNetType();
  452. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  453. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  454. u32CurrentArea = g_stChannelData.Country;
  455. const AL_DVBT_AreaTable_t * area = NULL;
  456. APP_Area_GetAreaTableItem(u32CurrentArea,&area);
  457. AL_TPSects_Info_st *pTemp =
  458. (AL_TPSects_Info_st *)area->pTPRegion_Area;
  459. // 1. get new service list from other tp.
  460. AL_PSI_Monitor_GetOtherTpServList(srvbuf, srvnamebuf, &num);
  461. for (sindex = 0; sindex < num; sindex++)
  462. {
  463. UINT8 IsFreqFoundInTable = 0;
  464. AL_MultiplexDetail_t stTSInfo;
  465. AL_ServiceDetail_t stServInfo;
  466. AL_RecHandle_t hTp = 0;
  467. AL_RecHandle_t hProg = 0;
  468. static AL_RecHandle_t hParentHdl = AL_DB_INVALIDHDL;
  469. INT32 u32Freq = 0;
  470. if (srvbuf == NULL || srvnamebuf == NULL)
  471. {
  472. break;
  473. }
  474. // 2. looking for the Tp's parameters from area table
  475. for (i = (area->SectNum - 1); i >= 0; i--)
  476. {
  477. for (j = (pTemp[i].SectTPCount - 1); j >= 0; j--)
  478. {
  479. u32Freq = pTemp[i].StartFreq + pTemp[i].stBandWidth.eBandWidth.BaseBandWidth * j * 1000;
  480. if (srvbuf[sindex].uiFreq == u32Freq
  481. || srvbuf[sindex].uiFreq - 166 == u32Freq
  482. || srvbuf[sindex].uiFreq + 167 == u32Freq)
  483. {
  484. IsFreqFoundInTable = 1;
  485. break;
  486. }
  487. }
  488. if (IsFreqFoundInTable)
  489. {
  490. break;
  491. }
  492. }
  493. if (IsFreqFoundInTable == 0)
  494. {
  495. dvb_printf(" Inexpected error! freq. doesn't find \n");
  496. break;
  497. }
  498. // 3. check if the TP presents already
  499. memset(&stTSInfo, 0, sizeof(AL_MultiplexDetail_t));
  500. if (AL_DBTYPE_DVB_T == eDBType)
  501. {
  502. stTSInfo.stDVBTMultiplex.uiFreqK = u32Freq;
  503. stTSInfo.stDVBTMultiplex.ucBandwidth = pTemp[i].stBandWidth.eBandWidth.BaseBandWidth;
  504. stTSInfo.stDVBTMultiplex.ucAreaIndex = u32CurrentArea;
  505. stTSInfo.stDVBTMultiplex.usTsId = srvbuf[sindex].usTsId;
  506. #ifdef SUPPORT_HIERARCHY_MODE
  507. stTSInfo.stDVBTMultiplex.ucHierarchyMode = pTemp[i].U8HierarchyMode;
  508. #endif
  509. }
  510. else if (AL_DBTYPE_DVB_C == eDBType)
  511. {
  512. stTSInfo.stDVBCMultiplex.uiFreqK = u32Freq;
  513. //stTSInfo.stDVBCMultiplex.ucBandwidth = pTemp[i].BandWidth;
  514. //stTSInfo.stDVBCMultiplex.ucAreaIndex = u32CurrentArea;
  515. stTSInfo.stDVBCMultiplex.usTsId = srvbuf[sindex].usTsId;
  516. #ifdef SUPPORT_HIERARCHY_MODE
  517. //stTSInfo.stDVBCMultiplex.ucHierarchyMode = pTemp[i].U8HierarchyMode;
  518. #endif
  519. }
  520. else if (AL_DBTYPE_DVB_S == eDBType)
  521. {
  522. stTSInfo.stDVBSMultiplex.usFreqM = u32Freq;
  523. //stTSInfo.stDVBSMultiplex.ucBandwidth = pTemp[i].BandWidth;
  524. //stTSInfo.stDVBCMultiplex.ucAreaIndex = u32CurrentArea;
  525. stTSInfo.stDVBSMultiplex.usTsId = srvbuf[sindex].usTsId;
  526. #ifdef SUPPORT_HIERARCHY_MODE
  527. //stTSInfo.stDVBCMultiplex.ucHierarchyMode = pTemp[i].U8HierarchyMode;
  528. #endif
  529. }
  530. if (AL_DBTYPE_DVB_T == eDBType)
  531. {
  532. if (AL_DB_INVALIDHDL == hParentHdl)
  533. {
  534. AL_NetworkDetail_t stRootNet;
  535. stRootNet.stDVBTNetwork.usNetId = 1;
  536. memcpy(stRootNet.stDVBTNetwork.szNetName, "Dummy", 6);
  537. AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBNETWORK, &stRootNet, AL_DB_INVALIDHDL, &hParentHdl);
  538. }
  539. }
  540. else
  541. {
  542. hParentHdl = AL_DB_INVALIDHDL;
  543. }
  544. dvb_printf("[%s]Get parent network handle: 0x%02x\n", __FUNCTION__, hParentHdl);
  545. AL_DB_AddRecord(eDBType, AL_RECTYPE_DVBMULTIPLEX, &stTSInfo, hParentHdl, &hTp);
  546. // 4. add service to database
  547. memset(&stServInfo, 0, sizeof(AL_ServiceDetail_t));
  548. #ifdef NEW_FONT
  549. al_uint32 u32CodePage = 0xff;
  550. al_uint8 *pExtText = al_null;
  551. al_int32 i32Len = 0;
  552. i32Len = DB_DVB_MAX_CHNAME_LEN;
  553. AL_Event_GetCodePage(&u32CodePage, srvbuf[sindex].pucname, &i32Len);
  554. if (u32CodePage == 0xff)
  555. {
  556. AL_Event_GetDefaultCodePage(&u32CodePage);
  557. }
  558. pExtText = UNI_StringToUtf8(u32CodePage, srvbuf[sindex].pucname, &i32Len, FALSE);
  559. memset(srvbuf[sindex].pucname, 0, DB_DVB_MAX_CHNAME_LEN);
  560. i32Len = i32Len < DB_DVB_MAX_CHNAME_LEN? i32Len : DB_DVB_MAX_CHNAME_LEN -1;
  561. memcpy(srvbuf[sindex].pucname, pExtText, i32Len);//service name
  562. //printf("[%s:%d] u32CodePage : %d, u32Len: %d\n",__FUNCTION__,__LINE__, u32CodePage, i32Len);
  563. free(pExtText);
  564. pExtText = al_null;
  565. #endif
  566. if (AL_DBTYPE_DVB_T == eDBType)
  567. {
  568. memcpy(stServInfo.stDVBTServ.szProgName, srvbuf[sindex].pucname, DB_DVB_MAX_CHNAME_LEN - 1);
  569. stServInfo.stDVBTServ.usOrigNetId = srvbuf[sindex].usOrgNetId;
  570. stServInfo.stDVBTServ.usServiceId = srvbuf[sindex].usServiceId;
  571. stServInfo.stDVBTServ.usTsId = srvbuf[sindex].usTsId;
  572. stServInfo.stDVBTServ.usProgNo = srvbuf[sindex].usProgNum;
  573. #ifdef SUPPORT_LCN
  574. stServInfo.stDVBTServ.usOrgLcn = srvbuf[sindex].usProgNum;
  575. #endif
  576. }
  577. else if (AL_DBTYPE_DVB_C == eDBType)
  578. {
  579. memcpy(stServInfo.stDVBCServ.szProgName, srvbuf[sindex].pucname, DB_DVB_MAX_CHNAME_LEN - 1);
  580. stServInfo.stDVBCServ.usOrigNetId = srvbuf[sindex].usOrgNetId;
  581. stServInfo.stDVBCServ.usServiceId = srvbuf[sindex].usServiceId;
  582. stServInfo.stDVBCServ.usTsId = srvbuf[sindex].usTsId;
  583. stServInfo.stDVBCServ.usProgNo = srvbuf[sindex].usProgNum;
  584. #ifdef SUPPORT_LCN
  585. stServInfo.stDVBCServ.usOrgLcn = srvbuf[sindex].usProgNum;
  586. #endif
  587. }
  588. else if (AL_DBTYPE_DVB_S == eDBType)
  589. {
  590. memcpy(stServInfo.stDVBSServ.szProgName, srvbuf[sindex].pucname, DB_DVB_MAX_CHNAME_LEN - 1);
  591. stServInfo.stDVBSServ.usOrigNetId = srvbuf[sindex].usOrgNetId;
  592. stServInfo.stDVBSServ.usServiceId = srvbuf[sindex].usServiceId;
  593. stServInfo.stDVBSServ.usTsId = srvbuf[sindex].usTsId;
  594. stServInfo.stDVBSServ.usProgNo = srvbuf[sindex].usProgNum;
  595. #ifdef SUPPORT_LCN
  596. stServInfo.stDVBSServ.usOrgLcn = srvbuf[sindex].usProgNum;
  597. #endif
  598. }
  599. AL_Serv_SearchKey_t stSearchKey;
  600. memset(&stSearchKey, 0, sizeof(AL_Serv_SearchKey_t));
  601. stSearchKey.eDBType = eDBType;
  602. stSearchKey.eRecType = AL_RECTYPE_DVBMULTIPLEX;
  603. stSearchKey.u32Frequency = srvbuf[sindex].uiFreq;
  604. stSearchKey.eSearchField = AL_SRV_SEARCHFIELD_FREQ;
  605. AL_DB_SearchRecords((AL_DB_RecordMatchFunc)AL_Serv_MatchRecBySearchKey,
  606. (al_void *)&stSearchKey, eDBType, AL_RECTYPE_DVBMULTIPLEX, 1, 0, al_null, al_null, &hParentHdl);
  607. dvb_printf("[%s]Get parent multiplex handle: 0x%02x\n", __FUNCTION__, hParentHdl);
  608. AL_DB_AddRecord(eDBType, srvbuf[sindex].ucServiceType, &stServInfo, hParentHdl, &hProg);
  609. }
  610. SAFE_FREE(srvbuf);
  611. SAFE_FREE(srvnamebuf);
  612. if (num)
  613. {
  614. //SORT_PARA stSortPara;
  615. UINT8 bLcnOnOff;
  616. bLcnOnOff = 0;
  617. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO, 0,
  618. sizeof(APP_SETTING_SystemInfo_t), &(g_stSysInfoData));
  619. bLcnOnOff = g_stSysInfoData.LcnOnOff;
  620. if (bLcnOnOff == LCN_ON)
  621. {
  622. AL_DB_SortRecords(eDBType, AL_RECTYPE_DVBTV, AL_DB_SORTBY_SERVTYPE, al_true);
  623. AL_DB_SortRecords(eDBType, AL_RECTYPE_DVBRADIO, AL_DB_SORTBY_SERVTYPE, al_true);
  624. }
  625. }
  626. }
  627. #endif
  628. static AL_RecHandle_t _DVBApp_GetNextAvailableServiceEx(AL_DB_EDBType_t eNetType,AL_DB_ERecordType_t eServiceType,AL_RecHandle_t Hprog)
  629. {
  630. AL_RecHandle_t hNextProgHdl = AL_DB_INVALIDHDL;
  631. AL_DB_ERecordType_t eRecType;
  632. AL_DB_EDBType_t eDBType;
  633. AL_RecHandle_t hCurTPHdl = Hprog;
  634. DBServAttrib_t stAttribute;
  635. AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hCurTPHdl);
  636. hNextProgHdl = AL_DB_INVALIDHDL;
  637. while (AL_SUCCESS == AL_DB_GetChildRecord(hCurTPHdl, &hNextProgHdl)
  638. && hNextProgHdl != AL_DB_INVALIDHDL)
  639. {
  640. AL_DB_GetRecordType(hNextProgHdl, &eDBType, &eRecType);
  641. memset(&stAttribute, 0, sizeof(DBServAttrib_t));
  642. AL_DB_QueryDetailFieldByName(hNextProgHdl, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute);
  643. if((eRecType==eServiceType)&&(stAttribute.unStable == al_false)&&(stAttribute.delete== al_false)
  644. && (stAttribute.notvisible == al_false))
  645. {
  646. return hNextProgHdl;
  647. }
  648. }
  649. if(hNextProgHdl!=AL_DB_INVALIDHDL)
  650. {
  651. dvb_printf("Get Next Service Successfully!\n");
  652. }
  653. else
  654. {
  655. dvb_printf("Get Next Service Failed!\n");
  656. }
  657. return hNextProgHdl;
  658. }
  659. AL_RecHandle_t DVBApp_GetNextAvailableService(AL_DB_EDBType_t eNetType,AL_DB_ERecordType_t eServiceType,AL_RecHandle_t hCurrProgHdl)
  660. {
  661. AL_RecHandle_t hNextProgHdl = AL_DB_INVALIDHDL;
  662. hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl);
  663. if(hNextProgHdl == AL_DB_INVALIDHDL)
  664. {
  665. if(eServiceType == AL_RECTYPE_DVBTV)
  666. {
  667. eServiceType = AL_RECTYPE_DVBRADIO;
  668. hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl);
  669. if(hNextProgHdl == AL_DB_INVALIDHDL)
  670. {
  671. eServiceType = AL_RECTYPE_DVBDATA;
  672. hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl);
  673. if(hNextProgHdl == AL_DB_INVALIDHDL)
  674. {
  675. dvb_printf("DATABASE Empty!!!\n\n");
  676. }
  677. }
  678. }
  679. else if(eServiceType == AL_RECTYPE_DVBRADIO)
  680. {
  681. eServiceType = AL_RECTYPE_DVBTV;
  682. hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl);
  683. if(hNextProgHdl == AL_DB_INVALIDHDL)
  684. {
  685. eServiceType = AL_RECTYPE_DVBDATA;
  686. hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl);
  687. if(hNextProgHdl == AL_DB_INVALIDHDL)
  688. {
  689. dvb_printf("DATABASE Empty!!!\n\n");
  690. }
  691. }
  692. }
  693. else
  694. {
  695. eServiceType = AL_RECTYPE_DVBTV;
  696. hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl);
  697. if(hNextProgHdl == AL_DB_INVALIDHDL)
  698. {
  699. eServiceType = AL_RECTYPE_DVBRADIO;
  700. hNextProgHdl = _DVBApp_GetNextAvailableServiceEx(eNetType,eServiceType,hCurrProgHdl);
  701. if(hNextProgHdl == AL_DB_INVALIDHDL)
  702. {
  703. dvb_printf("DATABASE Empty!!!\n\n");
  704. }
  705. }
  706. }
  707. }
  708. if(hNextProgHdl == AL_DB_INVALIDHDL)
  709. {
  710. dvb_printf("\n!!!!!!!!!DVBApp_GetNextAvailableService Failed!!!\n\n");
  711. }
  712. else
  713. {
  714. dvb_printf("\n!!!!!!!!!DVBApp_GetNextAvailableService Successfully!!!\n\n");
  715. }
  716. return hNextProgHdl;
  717. }
  718. void DVBApp_RemoveUnstableService(void)
  719. {
  720. AL_RecHandle_t hCurrProgHdl = AL_DB_INVALIDHDL;
  721. AL_RecHandle_t hNextProgHdl = AL_DB_INVALIDHDL;
  722. AL_RecHandle_t hPrevProgHdl = AL_DB_INVALIDHDL;
  723. AL_RecHandle_t hServHdl = AL_DB_INVALIDHDL;
  724. AL_RecHandle_t hCurrTpHdl = AL_DB_INVALIDHDL;
  725. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  726. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  727. DBServAttrib_t stAttribute;
  728. al_uint16 usTsId = 0xffff;
  729. al_uint16 usOrigNetId = 0xffff;
  730. al_uint16 usServiceId = 0xffff;
  731. APP_DVB_Playback_GetCurrServiceType(eNetType);
  732. //add for Background scan fail will show DATABASE_EMPTY begin
  733. bool g_bScanSuccessFlag = FALSE;
  734. hCurrProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eNetType,eServiceType);
  735. hCurrTpHdl = hCurrProgHdl;
  736. AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hCurrTpHdl);
  737. hServHdl = AL_DB_INVALIDHDL;
  738. while (AL_SUCCESS == AL_DB_GetChildRecord(hCurrTpHdl, &hServHdl)
  739. && hServHdl != AL_DB_INVALIDHDL)
  740. {
  741. memset(&stAttribute, 0, sizeof(DBServAttrib_t));
  742. if(AL_SUCCESS != AL_DB_QueryDetailFieldByName(hServHdl, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute))
  743. {
  744. continue;
  745. }
  746. if(stAttribute.unStable == al_false)// Background scan SUCCESS
  747. {
  748. g_bScanSuccessFlag = al_true;
  749. break;
  750. }
  751. }
  752. if(g_bScanSuccessFlag == al_false)
  753. {
  754. printf("[%s:%d] background scan failed\n",__FUNCTION__,__LINE__);
  755. hServHdl = AL_DB_INVALIDHDL;
  756. while (AL_SUCCESS == AL_DB_GetChildRecord(hCurrTpHdl, &hServHdl)
  757. && hServHdl != AL_DB_INVALIDHDL)
  758. {
  759. memset(&stAttribute, 0, sizeof(DBServAttrib_t));
  760. if(AL_SUCCESS != AL_DB_QueryDetailFieldByName(hServHdl, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute))
  761. {
  762. continue;
  763. }
  764. if(stAttribute.unStable == al_true)
  765. {
  766. stAttribute.unStable = al_false;
  767. }
  768. AL_DB_UpdateDetailFieldByName(hServHdl, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute);
  769. }
  770. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  771. DVB_GUIOBJ_PLAYBACK,APP_DVB_INTRA_EVENT_START_PLAYBACK,0);
  772. return; // if Background scan fail,don't remove Prog
  773. }
  774. //add for Background scan fail will show DATABASE_EMPTY end
  775. hCurrProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eNetType,eServiceType);
  776. hCurrTpHdl = hCurrProgHdl;
  777. memset(&stAttribute, 0, sizeof(DBServAttrib_t));
  778. AL_DB_QueryDetailFieldByName(hCurrProgHdl, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute);
  779. if (stAttribute.unStable == al_true)
  780. {
  781. hNextProgHdl = DVBApp_GetNextAvailableService(eNetType,eServiceType,hCurrProgHdl);
  782. }
  783. AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hCurrTpHdl);
  784. #ifdef CONFIG_DVB_SYSTEM_DVBT2_SUPPORT
  785. extern Boolean bT2HideScanProgUnstableFlag;
  786. if (bT2HideScanProgUnstableFlag)//for DVB-T2
  787. {
  788. AL_RecHandle_t hTempTPHandle = AL_DB_INVALIDHDL;
  789. AL_RecHandle_t hProg = AL_DB_INVALIDHDL;
  790. AL_MultiplexDetail_t ts;
  791. AL_DB_QueryDetail(hCurrTpHdl, &ts);
  792. hPrevProgHdl = APP_DVB_Playback_GetPrevProg(eNetType);
  793. AL_MultiplexDetail_t stTSInfo;
  794. memset(&stTSInfo, 0, sizeof(AL_MultiplexDetail_t));
  795. hTempTPHandle = AL_DB_INVALIDHDL;
  796. if (AL_SUCCESS == AL_DB_GetRecord(AL_DB_REQ_GETFIRST, AL_DBTYPE_DVB_T, AL_RECTYPE_DVBMULTIPLEX, &hTempTPHandle))
  797. {
  798. do
  799. {
  800. if (AL_SUCCESS == AL_DB_QueryDetail(hTempTPHandle, &stTSInfo))
  801. {
  802. if (stTSInfo.stDVBTMultiplex.ucTp_dvb_type == EDVB_DELIVER_TYPE_T2)
  803. {
  804. if(ABSV(ts.stDVBTMultiplex.uiFreqK,stTSInfo.stDVBTMultiplex.uiFreqK)<(stTSInfo.stDVBTMultiplex.ucBandwidth*500))
  805. {
  806. hProg = AL_DB_INVALIDHDL;
  807. while (AL_DB_GetChildRecord(hTempTPHandle, &hProg) == AL_SUCCESS && hProg != AL_DB_INVALIDHDL)
  808. {
  809. memset(&stAttribute, 0, sizeof(DBServAttrib_t));
  810. if(AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute))
  811. {
  812. continue;
  813. }
  814. if ((AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"usTsId", (al_void *)&usTsId))
  815. || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"usOrigNetId", (al_void *)&usOrigNetId))
  816. || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"usServiceId", (al_void *)&usServiceId)))
  817. {
  818. printf("Get service info failed!!!\n");
  819. }
  820. if(stAttribute.unStable == al_true)
  821. {
  822. dvb_printf("====unStable remove! hProg=0x%x====\n", hProg);
  823. if (AL_DB_RemoveRecord(hProg) == AL_SUCCESS)
  824. {
  825. AL_Event_UnLockChannels(AL_DBTYPE_DVB_T, usOrigNetId, usTsId, usServiceId);
  826. hProg = AL_DB_INVALIDHDL;
  827. }
  828. else
  829. {
  830. printf("remove service failed!!!\n");
  831. }
  832. if(hPrevProgHdl != AL_DB_INVALIDHDL)
  833. {
  834. if(hProg == hPrevProgHdl)
  835. {
  836. APP_DVB_Playback_SetPrevProg(eNetType,AL_DB_INVALIDHDL);
  837. hPrevProgHdl = AL_DB_INVALIDHDL;
  838. }
  839. }
  840. hProg = AL_DB_INVALIDHDL;
  841. }
  842. }
  843. }
  844. }
  845. }
  846. } while(AL_DB_GetRecord(AL_DB_REQ_GETNEXT, AL_DBTYPE_DVB_T, AL_RECTYPE_DVBMULTIPLEX, &hTempTPHandle) == AL_SUCCESS);
  847. }
  848. bT2HideScanProgUnstableFlag = FALSE;
  849. }
  850. else
  851. #endif
  852. {
  853. hServHdl = AL_DB_INVALIDHDL;
  854. hPrevProgHdl = APP_DVB_Playback_GetPrevProg(eNetType);
  855. while (AL_SUCCESS == AL_DB_GetChildRecord(hCurrTpHdl, &hServHdl)
  856. && hServHdl != AL_DB_INVALIDHDL)
  857. {
  858. memset(&stAttribute, 0, sizeof(DBServAttrib_t));
  859. if(AL_SUCCESS != AL_DB_QueryDetailFieldByName(hServHdl, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute))
  860. {
  861. continue;
  862. }
  863. if ((AL_SUCCESS != AL_DB_QueryDetailFieldByName(hServHdl, (al_uint8 *)"usTsId", (al_void *)&usTsId))
  864. || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hServHdl, (al_uint8 *)"usOrigNetId", (al_void *)&usOrigNetId))
  865. || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hServHdl, (al_uint8 *)"usServiceId", (al_void *)&usServiceId)))
  866. {
  867. printf("Get service info failed!!!\n");
  868. }
  869. if(stAttribute.unStable == al_true)
  870. {
  871. if (AL_DB_RemoveRecord(hServHdl) == AL_SUCCESS)
  872. {
  873. AL_Event_UnLockChannels(AL_DBTYPE_DVB_T, usOrigNetId, usTsId, usServiceId);
  874. }
  875. else
  876. {
  877. printf("remove service failed!!!\n");
  878. }
  879. if(hPrevProgHdl != AL_DB_INVALIDHDL)
  880. {
  881. if(hServHdl == hPrevProgHdl)
  882. {
  883. APP_DVB_Playback_SetPrevProg(eNetType,AL_DB_INVALIDHDL);
  884. hPrevProgHdl = AL_DB_INVALIDHDL;
  885. }
  886. }
  887. hServHdl = AL_DB_INVALIDHDL;
  888. }
  889. }
  890. }
  891. #ifdef SUPPORT_LCN
  892. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO, 0,
  893. sizeof(APP_SETTING_SystemInfo_t), &(g_stSysInfoData));
  894. #ifdef SUPPORT_DVBS_LCN
  895. if (g_stSysInfoData.LcnOnOff == LCN_ON && (eNetType == AL_DBTYPE_DVB_T || eNetType == AL_DBTYPE_DVB_C|| eNetType == AL_DBTYPE_DVB_S))
  896. #else
  897. if (g_stSysInfoData.LcnOnOff == LCN_ON && (eNetType == AL_DBTYPE_DVB_T || eNetType == AL_DBTYPE_DVB_C))
  898. #endif
  899. {
  900. DBLCNConfInfo_t *pLcnConf = AL_LCN_GetLCNConfChannel();
  901. LCN_PreJudgeLCN();
  902. LCN_QueryLCNConflict(pLcnConf);
  903. if (pLcnConf->ConfCount > 0)
  904. {
  905. LCN_AutoAssignConflictLCN();
  906. }
  907. LCN_PostJudgeLCN();
  908. }
  909. #endif
  910. LCN_FreeLCNConflict();
  911. LCN_FreeTRNDDictionary();
  912. APP_DVB_ChannelOrderChecking();
  913. APP_DVB_DataSavingToDB(eNetType);
  914. #ifdef CONFIG_SUPPORT_PVR
  915. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  916. {
  917. if ((hNextProgHdl != AL_DB_INVALIDHDL) &&
  918. (hNextProgHdl != hCurrProgHdl))
  919. {
  920. AL_DB_GetRecordType(hNextProgHdl, &eNetType, &eServiceType);
  921. APP_DVB_Playback_SetCurrentProgHandle(eNetType, eServiceType, hNextProgHdl);
  922. APP_DVB_Playback_SetCurrServiceType(eNetType,eServiceType);
  923. }
  924. dvb_printf("===lxl test %s is called. now PVR is playing ===\n", __FUNCTION__);
  925. return;
  926. }
  927. #endif
  928. if ((hNextProgHdl != AL_DB_INVALIDHDL) &&
  929. (hNextProgHdl != hCurrProgHdl))
  930. {
  931. _DVBApp_Zapping(eServiceType, hNextProgHdl, TRUE, 0, TRUE);
  932. }
  933. else
  934. {
  935. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  936. DVB_GUIOBJ_PLAYBACK,APP_DVB_INTRA_EVENT_START_PLAYBACK,0);
  937. }
  938. }
  939. static void _DVBApp_SimulcaseDispose(UINT32 u32Param)
  940. {
  941. AL_RecHandle_t hProgHdl = AL_DB_INVALIDHDL;
  942. AL_RecHandle_t hCurrProgHdl = AL_DB_INVALIDHDL;
  943. AL_RecHandle_t hCurrTpHdl = AL_DB_INVALIDHDL;
  944. AL_RecHandle_t hServHdl = AL_DB_INVALIDHDL;
  945. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  946. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  947. al_bool bPlay = al_false;
  948. al_uint16 usTsId = 0xffff;
  949. al_uint16 usOrigNetId = 0xffff;
  950. al_uint16 usServiceId = 0xffff;
  951. hProgHdl = (AL_RecHandle_t)u32Param;
  952. APP_DVB_Playback_GetCurrServiceType(eNetType);
  953. hCurrProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eNetType,eServiceType);
  954. if (hCurrProgHdl == hProgHdl)
  955. {
  956. hCurrTpHdl = hCurrProgHdl;
  957. AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hCurrTpHdl);
  958. while (AL_SUCCESS == AL_DB_GetChildRecord(hCurrTpHdl, &hServHdl))
  959. {
  960. if ((hServHdl == AL_DB_INVALIDHDL) || (hServHdl == hProgHdl))
  961. {
  962. continue;
  963. }
  964. bPlay = al_true;
  965. _DVBApp_Zapping(eServiceType, hServHdl, TRUE, 0, TRUE);
  966. }
  967. if (!bPlay)
  968. {
  969. if ((AL_SUCCESS == AL_DB_GetRecord(AL_DB_REQ_GETFIRST, eNetType, eServiceType, &hServHdl))
  970. && (hServHdl != AL_DB_INVALIDHDL))
  971. {
  972. if (hServHdl == hProgHdl)
  973. {
  974. if (AL_SUCCESS == AL_DB_GetRecord(AL_DB_REQ_GETNEXT, eNetType, eServiceType, &hServHdl))
  975. {
  976. _DVBApp_Zapping(eServiceType, hServHdl, TRUE, 0, TRUE);
  977. }
  978. else
  979. {
  980. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  981. APP_DVB_INTRA_EVENT_STOP_PLAYBACK, PLAYBACK_STOP_ALL);
  982. }
  983. }
  984. else
  985. {
  986. _DVBApp_Zapping(eServiceType, hServHdl, TRUE, 0, TRUE);
  987. }
  988. }
  989. else
  990. {
  991. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  992. APP_DVB_INTRA_EVENT_STOP_PLAYBACK, PLAYBACK_STOP_ALL);
  993. }
  994. }
  995. }
  996. if ((AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProgHdl, (al_uint8 *)"usTsId", (al_void *)&usTsId))
  997. || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProgHdl, (al_uint8 *)"usOrigNetId", (al_void *)&usOrigNetId))
  998. || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProgHdl, (al_uint8 *)"usServiceId", (al_void *)&usServiceId)))
  999. {
  1000. printf("Get service info failed!!!\n");
  1001. }
  1002. if (AL_DB_RemoveRecord(hProgHdl) == AL_SUCCESS)
  1003. {
  1004. AL_Event_UnLockChannels(eNetType, usOrigNetId, usTsId, usServiceId);
  1005. }
  1006. else
  1007. {
  1008. printf("remove service failed!!!\n");
  1009. }
  1010. APP_DVB_DataSavingToDB(eNetType);
  1011. }
  1012. static void _DVBApp_ServiceMove(void)
  1013. {
  1014. UINT16 u16CurServiceId = 0;
  1015. AL_PsiMon_NewSrvPosition_t stNewLoction;
  1016. UINT16 i = 0;
  1017. UINT16 u16TpNumber = 0;
  1018. UINT16 u16TsId = 0;
  1019. AL_RecHandle_t itphdl = AL_DB_INVALIDHDL;
  1020. AL_RecHandle_t hProg = AL_DB_INVALIDHDL;
  1021. AL_MultiplexDetail_t stTSInfo;
  1022. AL_DB_EDBType_t eNetType = AL_DBTYPE_MAX;
  1023. AL_ServiceDetail_t stServInfo;
  1024. APP_Source_Type_t eSourType = APP_SOURCE_MAX;
  1025. AL_DB_ERecordType_t service_type = AL_RECTYPE_MAX;
  1026. APP_GUIOBJ_Source_GetCurrSource(&eSourType);
  1027. APP_Database_GetCurrentDBType(eSourType, &eNetType);
  1028. memset(&stServInfo, 0, sizeof(AL_ServiceDetail_t));
  1029. memset(&stTSInfo, 0, sizeof(AL_MultiplexDetail_t));
  1030. hProg = APP_DVB_Playback_GetCurrentProgHandle(eNetType, (AL_RECTYPE_DVBTV |AL_RECTYPE_DVBRADIO|AL_RECTYPE_DVBDATA));
  1031. AL_DB_QueryDetail(hProg, (al_void *)&stServInfo);
  1032. if (eNetType == AL_DBTYPE_DVB_C)
  1033. {
  1034. u16CurServiceId = stServInfo.stDVBCServ.usServiceId;
  1035. }
  1036. else if (eNetType == AL_DBTYPE_DVB_T)
  1037. {
  1038. u16CurServiceId = stServInfo.stDVBTServ.usServiceId;
  1039. }
  1040. else if (eNetType == AL_DBTYPE_DVB_S)
  1041. {
  1042. u16CurServiceId = stServInfo.stDVBSServ.usServiceId;
  1043. }
  1044. AL_PSI_Monitor_GetNewSrvPosition(&stNewLoction);
  1045. if (u16CurServiceId != stNewLoction.usOldServiceId)
  1046. {
  1047. //the program has changed, no need to do anything
  1048. return;
  1049. }
  1050. AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBMULTIPLEX, (al_uint32 *)&u16TpNumber);
  1051. for (i = 0; i < u16TpNumber; i++)
  1052. {
  1053. APP_Database_GetHandleByIndex(eNetType, AL_RECTYPE_DVBMULTIPLEX, i, &itphdl);
  1054. AL_DB_QueryDetail(itphdl, (al_void *)&stTSInfo);
  1055. if (eNetType == AL_DBTYPE_DVB_C)
  1056. {
  1057. u16TsId = stTSInfo.stDVBCMultiplex.usTsId;
  1058. }
  1059. else if (eNetType == AL_DBTYPE_DVB_S)
  1060. {
  1061. u16TsId = stTSInfo.stDVBSMultiplex.usTsId;
  1062. }
  1063. else
  1064. {
  1065. u16TsId = stTSInfo.stDVBTMultiplex.usTsId;
  1066. }
  1067. if(stNewLoction.usTsId == u16TsId)
  1068. {
  1069. break;
  1070. }
  1071. }
  1072. if (i == u16TpNumber)
  1073. {
  1074. return;
  1075. }
  1076. if (APP_DVB_ProgMgr_Query(&service_type, &hProg,
  1077. stNewLoction.usOrgNetId, stNewLoction.usTsId, stNewLoction.usServiceId) == AL_SUCCESS)
  1078. {
  1079. //the service will be remove after remove procedure
  1080. }
  1081. else
  1082. {
  1083. if (eNetType == AL_DBTYPE_DVB_C)
  1084. {
  1085. #ifdef CONFIG_DVB_SYSTEM_DVBC_SUPPORT
  1086. stServInfo.stDVBCServ.usOrigNetId = stNewLoction.usOrgNetId;
  1087. stServInfo.stDVBCServ.usTsId = stNewLoction.usTsId;
  1088. stServInfo.stDVBCServ.usServiceId = stNewLoction.usServiceId;
  1089. AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(SCDBServInfo_t, usOrigNetId),
  1090. FIELD_SIZEOF(SCDBServInfo_t, usOrigNetId), (al_void *)&(stNewLoction.usOrgNetId));
  1091. AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(SCDBServInfo_t, usTsId),
  1092. FIELD_SIZEOF(SCDBServInfo_t, usTsId), (al_void *)&(stNewLoction.usTsId));
  1093. AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(SCDBServInfo_t, usServiceId),
  1094. FIELD_SIZEOF(SCDBServInfo_t, usServiceId), (al_void *)&(stNewLoction.usServiceId));
  1095. service_type = g_stTVInfoData.DVBC_ServType;
  1096. #endif
  1097. }
  1098. else if (eNetType == AL_DBTYPE_DVB_T)
  1099. {
  1100. #ifdef CONFIG_DVB_SYSTEM_DVBT_SUPPORT
  1101. stServInfo.stDVBTServ.usOrigNetId = stNewLoction.usOrgNetId;
  1102. stServInfo.stDVBTServ.usTsId = stNewLoction.usTsId;
  1103. stServInfo.stDVBTServ.usServiceId = stNewLoction.usServiceId;
  1104. AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(STDBServInfo_t, usOrigNetId),
  1105. FIELD_SIZEOF(STDBServInfo_t, usOrigNetId), (al_void *)&(stNewLoction.usOrgNetId));
  1106. AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(STDBServInfo_t, usTsId),
  1107. FIELD_SIZEOF(STDBServInfo_t, usTsId), (al_void *)&(stNewLoction.usTsId));
  1108. AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(STDBServInfo_t, usServiceId),
  1109. FIELD_SIZEOF(STDBServInfo_t, usServiceId), (al_void *)&(stNewLoction.usServiceId));
  1110. service_type = g_stTVInfoData.DVBT_ServType;
  1111. #endif
  1112. }
  1113. else if (eNetType == AL_DBTYPE_DVB_S)
  1114. {
  1115. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  1116. stServInfo.stDVBSServ.usOrigNetId = stNewLoction.usOrgNetId;
  1117. stServInfo.stDVBSServ.usTsId = stNewLoction.usTsId;
  1118. stServInfo.stDVBSServ.usServiceId = stNewLoction.usServiceId;
  1119. AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(SDBServInfo_t, usOrigNetId),
  1120. FIELD_SIZEOF(SDBServInfo_t, usOrigNetId), (al_void *)&(stNewLoction.usOrgNetId));
  1121. AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(SDBServInfo_t, usTsId),
  1122. FIELD_SIZEOF(SDBServInfo_t, usTsId), (al_void *)&(stNewLoction.usTsId));
  1123. AL_DB_UpdateDetailField(hProg, FIELD_OFFSET(SDBServInfo_t, usServiceId),
  1124. FIELD_SIZEOF(SDBServInfo_t, usServiceId), (al_void *)&(stNewLoction.usServiceId));
  1125. service_type = g_stTVInfoData.DVBS_ServType;
  1126. #endif
  1127. }
  1128. hProg = APP_DVB_Playback_GetCurrentProgHandle(eNetType, service_type);
  1129. }
  1130. APP_DVB_Playback_SetNextServiceType(service_type);
  1131. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_ZAPPING|PASS_TO_SYSAPP, hProg);
  1132. }
  1133. #ifdef MP4_SUB_PREFER_LANG
  1134. static void _DVBApp_SetMp4SubcodepagebyPreferLang(void)
  1135. {
  1136. int dret = 0;
  1137. LANGName_t eMp4SubCodePage = 0;
  1138. eMp4SubCodePage = Dvb_GetCurMP4FontCodePage(Dvb_GetCurMP4CodePageType(NULL), NULL);
  1139. dret = FMW_SetSUBTOSDCodePage((int)eMp4SubCodePage);
  1140. return ;
  1141. }
  1142. #endif
  1143. static INT32 _DVBApp_BackgroundMonitor_Init(void)
  1144. {
  1145. MID_Status_t ret = MID_ERR_FAILURE;
  1146. #if defined(CONFIG_SUPPORT_OTA_UPGRADE)
  1147. OtaMonComCallback_t callback;
  1148. callback._pfMonDSICallbk = APP_DVB_OTACallback;
  1149. callback._pfMonONIDCallb = APP_DVB_CheckIsONIDMatched;
  1150. callback._pfMonEXITCallb = APP_DVB_OTAMonExitCallback;
  1151. callback._pfMonStateCallbk = APP_DVB_NotifyOTAState;
  1152. ret = MID_OtaMonInit(callback);
  1153. if (MID_OTA_OtaMonThreadDataMutexCreate() == GL_SUCCESS)
  1154. {
  1155. MID_OTA_GetOTAInitInfo_FromFlah();
  1156. dvb_printf("Ota Mutex Create success \n");
  1157. #ifdef CONFIG_SUPPORT_SSU_ENHANCE_UPGRADE
  1158. MID_OtaMonUntInit(APP_DVB_OTASECallback);
  1159. #endif
  1160. }
  1161. else
  1162. {
  1163. dvb_printf("Ota Mutex Create Failed \n");
  1164. }
  1165. if (MID_SUCCESS != ret)
  1166. {
  1167. return SP_ERR_FAILURE;
  1168. }
  1169. #endif
  1170. #ifdef CONFIG_SUPPORT_MHEG5
  1171. MHEG5APP_Init();
  1172. MHEG5APP_RegistCallback(APP_DVB_Mheg5_Callback);
  1173. #ifdef CONFIG_SUPPORT_MHEG5_ICS
  1174. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  1175. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0, sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  1176. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO, 0, sizeof(APP_SETTING_SystemInfo_t), &(g_stSysInfoData));
  1177. MHEG5_ICS_SetPinStatus(g_stFeatureData.ChildLock);
  1178. if(g_stSysInfoData.progrmADSwitch == AUDIO_AD_ON)
  1179. {
  1180. MHEG5_SetAudioDescPref(TRUE);
  1181. }
  1182. else
  1183. {
  1184. MHEG5_SetAudioDescPref(FALSE);
  1185. }
  1186. if(g_stUserInfoData.Subtitle == APP_SWITCH_ON)
  1187. {
  1188. MHEG5_SetSubtitlePref(TRUE);
  1189. }
  1190. else
  1191. {
  1192. MHEG5_SetSubtitlePref(FALSE);
  1193. }
  1194. U8BIT *primaryAudio = APP_Language_GetISO639ByIndx(g_stFeatureData.PreferredAudio1st, APP_DATA_LANG_TYPE_MULTIAUDIO);
  1195. primaryAudio = primaryAudio ? primaryAudio : APP_Language_GetISO639_2ByIndx(g_stFeatureData.PreferredAudio1st, APP_DATA_LANG_TYPE_MULTIAUDIO);
  1196. U8BIT *secondaryAudio = NULL;
  1197. #ifdef SUPPORT_2ND_PREFER_AUDIO
  1198. secondaryAudio = APP_Language_GetISO639ByIndx(g_stFeatureData.PreferredAudio2nd, APP_DATA_LANG_TYPE_MULTIAUDIO);
  1199. secondaryAudio = secondaryAudio ? secondaryAudio : APP_Language_GetISO639_2ByIndx(g_stFeatureData.PreferredAudio2nd, APP_DATA_LANG_TYPE_MULTIAUDIO);
  1200. #endif
  1201. U8BIT *primarySubtitle = APP_Language_GetISO639ByIndx(g_stFeatureData.PreferredSubtitle1st, APP_DATA_LANG_TYPE_SUBTITLE);
  1202. primarySubtitle = primarySubtitle ? primarySubtitle : APP_Language_GetISO639_2ByIndx(g_stFeatureData.PreferredSubtitle1st, APP_DATA_LANG_TYPE_SUBTITLE);
  1203. U8BIT *secondarySubtitle = NULL;
  1204. #ifdef SUPPORT_2ND_PREFER_SUBTITLE
  1205. secondarySubtitle = APP_Language_GetISO639ByIndx(g_stFeatureData.PreferredSubtitle2nd, APP_DATA_LANG_TYPE_SUBTITLE);
  1206. secondarySubtitle = secondarySubtitle ? secondarySubtitle : APP_Language_GetISO639_2ByIndx(g_stFeatureData.PreferredSubtitle2nd, APP_DATA_LANG_TYPE_SUBTITLE);
  1207. #endif
  1208. MHEG5_ICS_SetPrefAudioLang((char*)primaryAudio, (char*)secondaryAudio);
  1209. MHEG5_ICS_SetPrefSubtLang((char*)primarySubtitle, (char*)secondarySubtitle);
  1210. #endif
  1211. #endif
  1212. #ifdef CONFIG_CI_SUPPORT
  1213. #ifndef CONFIG_CIPLUS_SUPPORT
  1214. //extern void MID_CI_DateTimeUpdate(void * pData);
  1215. //AddTDTMonitoringListener(MON_LISTENER_ID_CODE_FINAL, MID_CI_DateTimeUpdate);
  1216. #endif
  1217. #endif
  1218. if (MID_SUCCESS != ret)
  1219. {
  1220. return SP_ERR_FAILURE;
  1221. }
  1222. return SP_SUCCESS;
  1223. }
  1224. static void _DVBApp_EpgInit(void)
  1225. {
  1226. UINT8 u8SysSet;
  1227. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  1228. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  1229. u8SysSet = g_stFeatureData.DigitalTTLang;
  1230. APP_DVB_EPG_SetEpgLanguage(u8SysSet);
  1231. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  1232. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  1233. u8SysSet = g_stChannelData.Country;
  1234. if (u8SysSet >= MAX_AREA)
  1235. {
  1236. u8SysSet = 0;
  1237. }
  1238. AL_Event_SetCountryCode(APP_Area_GetCountryCode(u8SysSet));
  1239. #ifdef CONFIG_DVB_SYSTEM
  1240. if (APP_Area_SupportDtg())
  1241. {
  1242. AL_Event_SetDTGSupport(al_true);
  1243. }
  1244. else
  1245. #endif
  1246. {
  1247. AL_Event_SetDTGSupport(al_false);
  1248. }
  1249. }
  1250. #if (defined(CONFIG_DVB_SYSTEM_DVBS_SUPPORT)||defined(CONFIG_DVB_SYSTEM_DVBT_SUPPORT)||defined(CONFIG_DVB_SYSTEM_DVBC_SUPPORT))
  1251. static al_bool _DVBApp_SerMatch(al_void const *pRec, al_void const *pRecToAdd)
  1252. {
  1253. bool matchFlag = FALSE;
  1254. al_uint8 area = 0;
  1255. AL_ServiceDetail_t *ServInfor = (AL_ServiceDetail_t *)pRec;
  1256. AL_ServiceDetail_t *AddServInfor = (AL_ServiceDetail_t *)pRecToAdd;
  1257. AL_DB_EDBType_t eDBType = AL_DBTYPE_MAX;
  1258. APP_Database_GetCurrentDBType(APP_SOURCE_DTV, &eDBType);
  1259. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  1260. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  1261. area = g_stChannelData.Country;
  1262. #ifdef SUPPORT_DELETE_SAME_SERVICES
  1263. int u16DeleteSameServices = 0;//0: default(expect: Russia need save same services) 1: on(keep current method) 2: off(save same services)
  1264. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0,
  1265. sizeof(APP_SETTING_FactoryUser_t), &(g_stFactoryUserData));
  1266. u16DeleteSameServices = g_stFactoryUserData.Function.n_Funct_DeleteSameServices;
  1267. if (2 == u16DeleteSameServices)// 2: save same services
  1268. {
  1269. matchFlag = 0;
  1270. }
  1271. else
  1272. #endif
  1273. {
  1274. switch (area)
  1275. {
  1276. #ifdef CONFIG_DVB_SYSTEM
  1277. case AREA_ENGLAND:
  1278. /*
  1279. ** Refer to page 37 fo NorDig Unified ver 2.1:
  1280. ** A service is uniquely identified by its DVB triplet (original_network_id, transport_stream_id and
  1281. ** service_id) in all NorDig compliant terrestrial networks, except for the Norwegian terrestrial network,
  1282. ** where only original_network_id and service_id are used to identify a service.
  1283. */
  1284. case AREA_NORWAY:
  1285. if (AL_DBTYPE_DVB_T == eDBType)
  1286. {
  1287. matchFlag = ((ServInfor->stDVBTServ.usOrigNetId == AddServInfor->stDVBTServ.usOrigNetId)
  1288. && (ServInfor->stDVBTServ.usServiceId == AddServInfor->stDVBTServ.usServiceId)
  1289. && (ServInfor->stDVBTServ.eTvRadioType == AddServInfor->stDVBTServ.eTvRadioType));
  1290. }
  1291. else if (AL_DBTYPE_DVB_C == eDBType)
  1292. {
  1293. matchFlag = ((ServInfor->stDVBCServ.usOrigNetId == AddServInfor->stDVBCServ.usOrigNetId)
  1294. && (ServInfor->stDVBCServ.usServiceId == AddServInfor->stDVBCServ.usServiceId)
  1295. && (ServInfor->stDVBCServ.eTvRadioType == AddServInfor->stDVBCServ.eTvRadioType));
  1296. }
  1297. else if (AL_DBTYPE_DVB_S == eDBType)
  1298. {
  1299. matchFlag = ((ServInfor->stDVBSServ.usOrigNetId == AddServInfor->stDVBSServ.usOrigNetId)
  1300. && (ServInfor->stDVBSServ.usServiceId == AddServInfor->stDVBSServ.usServiceId)
  1301. && (ServInfor->stDVBSServ.eTvRadioType == AddServInfor->stDVBSServ.eTvRadioType));
  1302. }
  1303. break;
  1304. #ifdef SCAN_FREQ_OFFSET_RANGE_ENLARGE
  1305. case AREA_FRANCE:
  1306. if (AL_DBTYPE_DVB_T == eDBType)
  1307. {
  1308. matchFlag = ((ServInfor->stDVBTServ.usOrigNetId == AddServInfor->stDVBTServ.usOrigNetId)
  1309. && (ServInfor->stDVBTServ.usServiceId == AddServInfor->stDVBTServ.usServiceId)
  1310. && (ServInfor->stDVBTServ.eTvRadioType == AddServInfor->stDVBTServ.eTvRadioType));
  1311. }
  1312. else if (AL_DBTYPE_DVB_C == eDBType)
  1313. {
  1314. matchFlag = ((ServInfor->stDVBCServ.usOrigNetId == AddServInfor->stDVBCServ.usOrigNetId)
  1315. && (ServInfor->stDVBCServ.usServiceId == AddServInfor->stDVBCServ.usServiceId)
  1316. && (ServInfor->stDVBCServ.eTvRadioType == AddServInfor->stDVBCServ.eTvRadioType));
  1317. }
  1318. else if (AL_DBTYPE_DVB_S == eDBType)
  1319. {
  1320. matchFlag = ((ServInfor->stDVBSServ.usOrigNetId == AddServInfor->stDVBSServ.usOrigNetId)
  1321. && (ServInfor->stDVBSServ.usServiceId == AddServInfor->stDVBSServ.usServiceId)
  1322. && (ServInfor->stDVBSServ.eTvRadioType == AddServInfor->stDVBSServ.eTvRadioType));
  1323. }
  1324. break;
  1325. #endif
  1326. case AREA_ITALY:
  1327. case AREA_SPAIN:
  1328. case AREA_NETHERLANDS:
  1329. case AREA_FINLAND:
  1330. case AREA_SWEDEN:
  1331. case AREA_DENMARK:
  1332. #endif
  1333. #ifdef CONFIG_AUS_DVB_SYSTEM
  1334. case AREA_AUSTRALIA:
  1335. case AREA_NEW_ZEALAND:
  1336. case AREA_SINGAPORE:
  1337. case AREA_AUS_OTHER:
  1338. if (AL_DBTYPE_DVB_T == eDBType)
  1339. {
  1340. matchFlag = ((ServInfor->stDVBTServ.usOrigNetId == AddServInfor->stDVBTServ.usOrigNetId)
  1341. && (ServInfor->stDVBTServ.usServiceId == AddServInfor->stDVBTServ.usServiceId)
  1342. && (ServInfor->stDVBTServ.usTsId == AddServInfor->stDVBTServ.usTsId)
  1343. && (ServInfor->stDVBTServ.eTvRadioType == AddServInfor->stDVBTServ.eTvRadioType));
  1344. }
  1345. else if (AL_DBTYPE_DVB_C == eDBType)
  1346. {
  1347. matchFlag = ((ServInfor->stDVBCServ.usOrigNetId == AddServInfor->stDVBCServ.usOrigNetId)
  1348. && (ServInfor->stDVBCServ.usServiceId == AddServInfor->stDVBCServ.usServiceId)
  1349. && (ServInfor->stDVBCServ.usTsId == AddServInfor->stDVBCServ.usTsId)
  1350. && (ServInfor->stDVBCServ.eTvRadioType == AddServInfor->stDVBCServ.eTvRadioType));
  1351. }
  1352. else if (AL_DBTYPE_DVB_S == eDBType)
  1353. {
  1354. matchFlag = ((ServInfor->stDVBSServ.usOrigNetId == AddServInfor->stDVBSServ.usOrigNetId)
  1355. && (ServInfor->stDVBSServ.usServiceId == AddServInfor->stDVBSServ.usServiceId)
  1356. && (ServInfor->stDVBSServ.usTsId == AddServInfor->stDVBSServ.usTsId)
  1357. && (ServInfor->stDVBSServ.eTvRadioType == AddServInfor->stDVBSServ.eTvRadioType));
  1358. }
  1359. break;
  1360. #endif
  1361. #ifdef SUPPORT_DELETE_SAME_SERVICES
  1362. case AREA_RUSSIA:
  1363. if (0 == g_stFactoryUserData.Function.n_Funct_DeleteSameServices)
  1364. {
  1365. matchFlag = 0;
  1366. }
  1367. #endif
  1368. default:
  1369. if (AL_DBTYPE_DVB_T == eDBType)
  1370. {
  1371. matchFlag = ((ServInfor->stDVBTServ.usOrigNetId == AddServInfor->stDVBTServ.usOrigNetId)
  1372. && (ServInfor->stDVBTServ.usServiceId == AddServInfor->stDVBTServ.usServiceId)
  1373. && (ServInfor->stDVBTServ.usTsId == AddServInfor->stDVBTServ.usTsId)
  1374. && (ServInfor->stDVBTServ.eTvRadioType == AddServInfor->stDVBTServ.eTvRadioType));
  1375. }
  1376. else if (AL_DBTYPE_DVB_C == eDBType)
  1377. {
  1378. matchFlag = ((ServInfor->stDVBCServ.usOrigNetId == AddServInfor->stDVBCServ.usOrigNetId)
  1379. && (ServInfor->stDVBCServ.usServiceId == AddServInfor->stDVBCServ.usServiceId)
  1380. && (ServInfor->stDVBCServ.usTsId == AddServInfor->stDVBCServ.usTsId)
  1381. && (ServInfor->stDVBCServ.eTvRadioType == AddServInfor->stDVBCServ.eTvRadioType));
  1382. }
  1383. else if (AL_DBTYPE_DVB_S == eDBType)
  1384. {
  1385. matchFlag = ((ServInfor->stDVBSServ.usOrigNetId == AddServInfor->stDVBSServ.usOrigNetId)
  1386. && (ServInfor->stDVBSServ.usServiceId == AddServInfor->stDVBSServ.usServiceId)
  1387. && (ServInfor->stDVBSServ.usTsId == AddServInfor->stDVBSServ.usTsId)
  1388. && (ServInfor->stDVBSServ.eTvRadioType == AddServInfor->stDVBSServ.eTvRadioType));
  1389. }
  1390. break;
  1391. }
  1392. }
  1393. if (matchFlag)
  1394. {
  1395. FW_DEBF("[%s:%d] matchFlag @@@@@@@@@@@@@@@@@@@@@@@@@\n",__FUNCTION__,__LINE__);
  1396. FW_DEBF("[%s:%d] usOrigNetId: %d, %d; usServiceId: %d, %d; usTsId: %d, %d; eTvRadioType: %d, %d\n",
  1397. __FUNCTION__,__LINE__,ServInfor->stDVBSServ.usOrigNetId, AddServInfor->stDVBSServ.usOrigNetId,
  1398. ServInfor->stDVBSServ.usServiceId, AddServInfor->stDVBSServ.usServiceId,
  1399. ServInfor->stDVBSServ.usTsId, AddServInfor->stDVBSServ.usTsId,
  1400. ServInfor->stDVBSServ.eTvRadioType, AddServInfor->stDVBSServ.eTvRadioType);
  1401. FW_DEBF("[%s:%d] usDataPID: %d, %d; usStrmID: %d, %d; usStrmID: %d, %d; usECMPID: %d, %d; usCompTag: %d, %d \n",
  1402. __FUNCTION__,__LINE__,ServInfor->stDVBSServ.stVideoPid.usDataPID, AddServInfor->stDVBSServ.stVideoPid.usDataPID,
  1403. ServInfor->stDVBSServ.stVideoPid.usStrmID, AddServInfor->stDVBSServ.stVideoPid.usStrmID,
  1404. ServInfor->stDVBSServ.stVideoPid.usCodec, AddServInfor->stDVBSServ.stVideoPid.usCodec,
  1405. ServInfor->stDVBSServ.stVideoPid.usECMPID, AddServInfor->stDVBSServ.stVideoPid.usECMPID,
  1406. ServInfor->stDVBSServ.stVideoPid.usCompTag, AddServInfor->stDVBSServ.stVideoPid.usCompTag);
  1407. FW_DEBF("[%s:%d] usPcrPid: %d, %d; stAudioPid[0].usDataPID: %d, %d; stAudioPid[1].usDataPID: %d, %d; stAudioPid[2].usDataPID: %d, %d\n",
  1408. __FUNCTION__,__LINE__,ServInfor->stDVBSServ.usPcrPid, AddServInfor->stDVBSServ.usPcrPid,
  1409. ServInfor->stDVBSServ.stAudioPid[0].usDataPID, AddServInfor->stDVBSServ.stAudioPid[0].usDataPID,
  1410. ServInfor->stDVBSServ.stAudioPid[1].usDataPID, AddServInfor->stDVBSServ.stAudioPid[1].usDataPID,
  1411. ServInfor->stDVBSServ.stAudioPid[2].usDataPID, AddServInfor->stDVBSServ.stAudioPid[2].usDataPID);
  1412. }
  1413. return matchFlag;
  1414. }
  1415. #endif
  1416. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  1417. static al_bool _DVBApp_TPMatch_S(al_void const *pRecToAdd, al_void *pRec)
  1418. {
  1419. AL_MultiplexDetail_t *TPInfor = (AL_MultiplexDetail_t *)pRec;
  1420. AL_MultiplexDetail_t *AddTPInfor = (AL_MultiplexDetail_t *)pRecToAdd;
  1421. return ((TPInfor->stDVBSMultiplex.usFreqM == AddTPInfor->stDVBSMultiplex.usFreqM)
  1422. && (TPInfor->stDVBSMultiplex.ucSkew == AddTPInfor->stDVBSMultiplex.ucSkew));
  1423. #ifdef SUPPORT_HIERARCHY_MODE
  1424. //&& (TPInfor->stDVBSMultiplex.ucHierarchyMode == AddTPInfor->stDVBTMultiplex.ucHierarchyMode)
  1425. #endif
  1426. }
  1427. #endif
  1428. #ifdef CONFIG_DVB_SYSTEM_DVBT_SUPPORT
  1429. static al_bool _DVBApp_TPMatch_T(al_void const *pRecToAdd, al_void *pRec)
  1430. {
  1431. AL_MultiplexDetail_t *TPInfor = (AL_MultiplexDetail_t *)pRec;
  1432. AL_MultiplexDetail_t *AddTPInfor = (AL_MultiplexDetail_t *)pRecToAdd;
  1433. return ((TPInfor->stDVBTMultiplex.usOrigNetId == AddTPInfor->stDVBTMultiplex.usOrigNetId)
  1434. && (TPInfor->stDVBTMultiplex.usTsId == AddTPInfor->stDVBTMultiplex.usTsId)
  1435. && (TPInfor->stDVBTMultiplex.uiFreqK == AddTPInfor->stDVBTMultiplex.uiFreqK)
  1436. #ifdef SUPPORT_HIERARCHY_MODE
  1437. && (TPInfor->stDVBTMultiplex.ucHierarchyMode == AddTPInfor->stDVBTMultiplex.ucHierarchyMode)
  1438. #endif
  1439. );
  1440. }
  1441. #endif
  1442. #ifdef CONFIG_DVB_SYSTEM_DVBC_SUPPORT
  1443. static al_bool _DVBApp_TPMatch_C(al_void const *pRecToAdd, al_void *pRec)
  1444. {
  1445. AL_MultiplexDetail_t *TPInfor = (AL_MultiplexDetail_t *)pRec;
  1446. AL_MultiplexDetail_t *AddTPInfor = (AL_MultiplexDetail_t *)pRecToAdd;
  1447. return ((TPInfor->stDVBCMultiplex.usOrigNetId == AddTPInfor->stDVBCMultiplex.usOrigNetId)
  1448. && (TPInfor->stDVBCMultiplex.usTsId == AddTPInfor->stDVBCMultiplex.usTsId)
  1449. && (TPInfor->stDVBCMultiplex.uiFreqK == AddTPInfor->stDVBCMultiplex.uiFreqK)
  1450. //&& (TPInfor->stDVBCMultiplex.ucAreaIndex == AddTPInfor->stDVBCMultiplex.ucAreaIndex)
  1451. #ifdef SUPPORT_HIERARCHY_MODE
  1452. //&& (TPInfor->stDVBCMultiplex.ucHierarchyMode == AddTPInfor->stDVBCMultiplex.ucHierarchyMode)
  1453. #endif
  1454. );
  1455. }
  1456. #endif
  1457. #if defined( CONFIG_DVB_SYSTEM_DVBS_SUPPORT)
  1458. static al_bool _DVBApp_NetworkMatch_S(al_void const *pRecToAdd, al_void *pRec)
  1459. {
  1460. AL_NetworkDetail_t *NetInfor = (AL_NetworkDetail_t *)pRec;
  1461. AL_NetworkDetail_t *AddNetInfor = (AL_NetworkDetail_t *)pRecToAdd;
  1462. return (((NetInfor->stDVBSNetwork.ucEastWest == AddNetInfor->stDVBSNetwork.ucEastWest
  1463. && NetInfor->stDVBSNetwork.iLongitude == AddNetInfor->stDVBSNetwork.iLongitude)
  1464. && NetInfor->stDVBSNetwork.uiLNBFreq == AddNetInfor->stDVBSNetwork.uiLNBFreq)
  1465. //|| !strcmp((char *)NetInfor->stDVBSNetwork.szNetName, (char *)AddNetInfor->stDVBSNetwork.szNetName)
  1466. );
  1467. }
  1468. #endif
  1469. #if defined (CONFIG_DVB_SYSTEM_DVBT_SUPPORT)
  1470. static al_bool _DVBApp_NetworkMatch_T(al_void const *pRecToAdd, al_void *pRec)
  1471. {
  1472. AL_NetworkDetail_t *NetInfor = (AL_NetworkDetail_t *)pRec;
  1473. AL_NetworkDetail_t *AddNetInfor = (AL_NetworkDetail_t *)pRecToAdd;
  1474. return (NetInfor->stDVBTNetwork.usNetId == AddNetInfor->stDVBTNetwork.usNetId);
  1475. }
  1476. #endif
  1477. #if defined (CONFIG_DVB_SYSTEM_DVBC_SUPPORT)
  1478. static al_bool _DVBApp_NetworkMatch_C(al_void const *pRecToAdd, al_void *pRec)
  1479. {
  1480. AL_NetworkDetail_t *NetInfor = (AL_NetworkDetail_t *)pRec;
  1481. AL_NetworkDetail_t *AddNetInfor = (AL_NetworkDetail_t *)pRecToAdd;
  1482. return (NetInfor->stDVBCNetwork.usNetId == AddNetInfor->stDVBCNetwork.usNetId);
  1483. }
  1484. #endif
  1485. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  1486. void DVBApp_LoadCustomerDB(AL_DB_EDBType_t eDBType)
  1487. {
  1488. #ifdef CONFIG_DVB_SYSTEM_DVBS_DEFAULT_DATABASE
  1489. al_void *pDefDBBakStart = NULL;
  1490. al_uint32 uiDefDBBakSize = 0;
  1491. al_uint32 dArea = 0;
  1492. dvb_printf("[%s:%d] Load DVB-S Default Database Data to Database\n", __FUNCTION__, __LINE__);
  1493. if (eDBType == AL_DBTYPE_DVB_S)
  1494. {
  1495. CDBIActiveDBModule(CDBI_DBTYPE_DVB_S, al_false);
  1496. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  1497. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  1498. dArea = g_stChannelData.Country;
  1499. if (dArea == AREA_AUSTRIA)
  1500. {
  1501. uiDefDBBakSize = Cmd_LookupFlashtableSize((al_uint8*)"S_AUT_DB");
  1502. pDefDBBakStart = malloc(uiDefDBBakSize);
  1503. if (pDefDBBakStart == al_null)
  1504. {
  1505. goto Leave;
  1506. }
  1507. if (Cmd_LookupFlashtableAddr((al_uint8*)"S_AUT_DB", (al_uint32)pDefDBBakStart, uiDefDBBakSize))
  1508. {
  1509. goto LeaveWithFree;
  1510. }
  1511. }
  1512. else if (dArea == AREA_GERMANY)
  1513. {
  1514. uiDefDBBakSize = Cmd_LookupFlashtableSize((al_uint8*)"S_DEU_DB");
  1515. pDefDBBakStart = malloc(uiDefDBBakSize);
  1516. if (pDefDBBakStart == al_null)
  1517. {
  1518. goto Leave;
  1519. }
  1520. if (Cmd_LookupFlashtableAddr((al_uint8*)"S_DEU_DB", (al_uint32)pDefDBBakStart, uiDefDBBakSize))
  1521. {
  1522. goto LeaveWithFree;
  1523. }
  1524. }
  1525. else
  1526. {
  1527. uiDefDBBakSize = Cmd_LookupFlashtableSize((al_uint8*)"S_OTH_DB");
  1528. pDefDBBakStart = malloc(uiDefDBBakSize);
  1529. if (pDefDBBakStart == al_null)
  1530. {
  1531. goto Leave;
  1532. }
  1533. if (Cmd_LookupFlashtableAddr((al_uint8*)"S_OTH_DB", (al_uint32)pDefDBBakStart, uiDefDBBakSize))
  1534. {
  1535. goto LeaveWithFree;
  1536. }
  1537. }
  1538. if (Cmd_NVMWrite(ENVMPurposeIDDatabaseDVBS, al_false, uiDefDBBakSize, (UINT8 *)pDefDBBakStart))
  1539. {
  1540. dvb_printf("[%s:%d] NVM Write Error~\n", __FUNCTION__, __LINE__);
  1541. }
  1542. LeaveWithFree:
  1543. free(pDefDBBakStart);
  1544. Leave:
  1545. CDBIActiveDBModule(CDBI_DBTYPE_DVB_S, al_true);
  1546. }
  1547. #else
  1548. DVBApp_LoaddefaultDB(AL_DBTYPE_DVB_S);
  1549. #endif
  1550. }
  1551. void DVBApp_LoaddefaultDB(AL_DB_EDBType_t eDBType)
  1552. {
  1553. AL_NetworkDetail_t stNetInfo;
  1554. AL_MultiplexDetail_t stTPInfo;
  1555. if (eDBType == AL_DBTYPE_DVB_S)
  1556. {
  1557. const SDBNetworkInfo_t *pNewNetTableInfo;
  1558. const APP_DVBS_NetTP_table *pNewTPTableInfo;
  1559. AL_RecHandle_t hNet = AL_DB_INVALIDHDL;
  1560. AL_RecHandle_t hTp = AL_DB_INVALIDHDL;
  1561. al_uint32 i = 0;
  1562. al_uint32 j = 0;
  1563. APP_Area_GetNetTbl(&pNewNetTableInfo);
  1564. APP_Area_GetTpNetTbl(&pNewTPTableInfo);
  1565. for(; i < APP_Area_GetNetTblSize(); i++)
  1566. {
  1567. memcpy(&stNetInfo.stDVBSNetwork, pNewNetTableInfo + i, sizeof(SDBNetworkInfo_t));
  1568. AL_DB_AddRecord(AL_DBTYPE_DVB_S, AL_RECTYPE_DVBNETWORK, &stNetInfo, AL_DB_INVALIDHDL, &hNet);
  1569. for (j=0; j < APP_Area_GetTpNetTblSize(); j++)
  1570. {
  1571. if ((pNewTPTableInfo+j)->u32SateIndex == i)
  1572. {
  1573. memset(&stTPInfo.stDVBSMultiplex, 0, sizeof (SDBMultiplexInfo_t));
  1574. memcpy(&stTPInfo.stDVBSMultiplex, &(pNewTPTableInfo+j)->stTPinfo, sizeof (SDBMultiplexInfo_t));
  1575. AL_DB_AddRecord(AL_DBTYPE_DVB_S, AL_RECTYPE_DVBMULTIPLEX, &stTPInfo, hNet, &hTp);
  1576. }
  1577. }
  1578. }
  1579. }
  1580. }
  1581. void DVBApp_RemoveAllService(AL_DB_EDBType_t eDBType)
  1582. {
  1583. AL_RecHandle_t hNet = AL_DB_INVALIDHDL;
  1584. AL_RecHandle_t hProg = AL_DB_INVALIDHDL;
  1585. AL_RecHandle_t hTPHandle = AL_DB_INVALIDHDL;
  1586. al_uint16 usTsId = 0xffff;
  1587. al_uint16 usOrigNetId = 0xffff;
  1588. al_uint16 usServiceId = 0xffff;
  1589. if (AL_SUCCESS == AL_DB_GetRecord(AL_DB_REQ_GETFIRST, eDBType, AL_RECTYPE_DVBNETWORK, &hNet))
  1590. {
  1591. do
  1592. {
  1593. while (AL_DB_GetChildRecord(hNet, &hTPHandle) == AL_SUCCESS)
  1594. {
  1595. while (AL_DB_GetChildRecord(hTPHandle, &hProg) == AL_SUCCESS)
  1596. {
  1597. if ((AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"usTsId", (al_void *)&usTsId))
  1598. || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"usOrigNetId", (al_void *)&usOrigNetId))
  1599. || (AL_SUCCESS != AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"usServiceId", (al_void *)&usServiceId)))
  1600. {
  1601. printf("Get service info failed!!!\n");
  1602. }
  1603. if (AL_DB_RemoveRecord(hProg) == AL_SUCCESS)
  1604. {
  1605. AL_Event_UnLockChannels(eDBType, usOrigNetId, usTsId, usServiceId);
  1606. }
  1607. else
  1608. {
  1609. printf("remove service failed!!!\n");
  1610. }
  1611. hProg = AL_DB_INVALIDHDL;
  1612. }
  1613. }
  1614. }while (AL_SUCCESS == AL_DB_GetRecord(AL_DB_REQ_GETNEXT, eDBType, AL_RECTYPE_DVBNETWORK, &hNet));
  1615. }
  1616. }
  1617. #endif
  1618. #ifdef SUPPORT_FACTORY_AUTO_TEST
  1619. static void _DVBApp_PrestoreProgram(AL_DB_EDBType_t eDBType)
  1620. {
  1621. AL_Return_t enRet = AL_SUCCESS;
  1622. NOT_USED(enRet);
  1623. static AL_RecHandle_t hNetHdl = AL_DB_INVALIDHDL;
  1624. AL_NetworkDetail_t stRootNet;
  1625. AL_RecHandle_t hProg = AL_DB_INVALIDHDL;
  1626. AL_RecHandle_t hProg1 = AL_DB_INVALIDHDL;
  1627. AL_RecHandle_t hProg2 = AL_DB_INVALIDHDL;
  1628. #ifdef CONFIG_DVB_SYSTEM_DVBT2_SUPPORT
  1629. AL_RecHandle_t hProg3 = AL_DB_INVALIDHDL;
  1630. #endif
  1631. AL_RecHandle_t hTp = AL_DB_INVALIDHDL;
  1632. AL_MultiplexDetail_t ts;
  1633. AL_ServiceDetail_t Program;
  1634. AL_FW_SwitchDBModule(AL_DBTYPE_DVB_C);
  1635. AL_DB_Reset(AL_DBTYPE_DVB_C, al_true);
  1636. AL_Event_UnLockChannels(AL_DBTYPE_DVB_C, 0, 0, 0);
  1637. AL_PR_DeleteAllSch(AL_DBTYPE_DVB_C,AL_PR_EVT_REM | AL_PR_SRV_REM);
  1638. memset(&ts, 0, sizeof(AL_MultiplexDetail_t));
  1639. ts.stDVBCMultiplex.uiFreqK = 121000;
  1640. ts.stDVBCMultiplex.usSymRateK = 6875;
  1641. ts.stDVBCMultiplex.ucQamSize = AL_QAM_64;
  1642. ts.stDVBCMultiplex.usEMMPID = 0x1FFF;
  1643. ts.stDVBCMultiplex.usNetId = 0x1234;
  1644. ts.stDVBCMultiplex.usOrigNetId = 0x1234;
  1645. ts.stDVBCMultiplex.usTsId = 0x1234;
  1646. //AL_DB_AddRecord(AL_DBTYPE_DVB_C, AL_RECTYPE_DVBMULTIPLEX, &ts, AL_DB_INVALIDHDL, &hTp);
  1647. memset(&stRootNet, 0, sizeof(AL_NetworkDetail_t));
  1648. stRootNet.stDVBCNetwork.usNetId = 1;
  1649. memcpy(stRootNet.stDVBCNetwork.szNetName, "Dummy",6);
  1650. hNetHdl = AL_DB_INVALIDHDL;
  1651. AL_DB_AddRecord(AL_DBTYPE_DVB_C, AL_RECTYPE_DVBNETWORK, &stRootNet, AL_DB_INVALIDHDL, &hNetHdl);
  1652. AL_DB_AddRecord(AL_DBTYPE_DVB_C, AL_RECTYPE_DVBMULTIPLEX, &ts, hNetHdl, &hTp);
  1653. memset(&Program, 0, sizeof(AL_ServiceDetail_t));
  1654. Program.stDVBCServ.eSDTSrvType = AL_RECTYPE_DVBTV;
  1655. Program.stDVBCServ.eTvRadioType= AL_RECTYPE_DVBTV;
  1656. Program.stDVBCServ.szProgName[0] = 0;
  1657. Program.stDVBCServ.usOrigNetId = 0x1111;
  1658. Program.stDVBCServ.usServiceId = 0x1111;
  1659. Program.stDVBCServ.usTsId = 0x1111;
  1660. Program.stDVBCServ.usProgNo = 0x1;
  1661. Program.stDVBCServ.usPMTPid= 0x1F55;
  1662. Program.stDVBCServ.stVideoPid.usDataPID = 0x1F40;
  1663. Program.stDVBCServ.stAudioPid[0].usDataPID= 0x1F41;
  1664. enRet = AL_DB_AddRecord(AL_DBTYPE_DVB_C, AL_RECTYPE_DVBTV,
  1665. &Program, hTp, &hProg);
  1666. APP_DVB_Playback_SetCurrentProgHandle(AL_DBTYPE_DVB_C,AL_RECTYPE_DVBTV,hProg);
  1667. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  1668. AL_FW_SwitchDBModule(AL_DBTYPE_DVB_S);
  1669. AL_DB_Reset(AL_DBTYPE_DVB_S, al_true);
  1670. AL_Event_UnLockChannels(AL_DBTYPE_DVB_S, 0, 0, 0);
  1671. AL_PR_DeleteAllSch(AL_DBTYPE_DVB_S,AL_PR_EVT_REM | AL_PR_SRV_REM);
  1672. DVBApp_LoadCustomerDB(AL_DBTYPE_DVB_S);
  1673. extern AL_RecHandle_t APP_GUIOBJ_DVB_SatSys_PrestoreTP4FactoryAuto(void);
  1674. hTp = APP_GUIOBJ_DVB_SatSys_PrestoreTP4FactoryAuto();
  1675. memset(&Program, 0, sizeof(AL_ServiceDetail_t));
  1676. Program.stDVBSServ.eSDTSrvType = AL_RECTYPE_DVBTV;
  1677. Program.stDVBSServ.eTvRadioType= AL_RECTYPE_DVBTV;
  1678. Program.stDVBSServ.szProgName[0] = 0;
  1679. Program.stDVBSServ.usOrigNetId = 0x4321;
  1680. Program.stDVBSServ.usServiceId = 0x4321;
  1681. Program.stDVBSServ.usTsId = 0x4321;
  1682. Program.stDVBSServ.usProgNo = 0x1;
  1683. Program.stDVBSServ.usPMTPid= 0x1F55;
  1684. Program.stDVBSServ.stVideoPid.usDataPID = 0x1F40;
  1685. Program.stDVBSServ.stAudioPid[0].usDataPID= 0x1F41;
  1686. enRet = AL_DB_AddRecord(AL_DBTYPE_DVB_S, AL_RECTYPE_DVBTV,
  1687. &Program, hTp, &hProg);
  1688. APP_DVB_Playback_SetCurrentProgHandle(AL_DBTYPE_DVB_S,AL_RECTYPE_DVBTV,hProg);
  1689. #endif
  1690. AL_FW_SwitchDBModule(AL_DBTYPE_DVB_T);
  1691. AL_DB_Reset(AL_DBTYPE_DVB_T, al_true);
  1692. AL_Event_UnLockChannels(AL_DBTYPE_DVB_T, 0, 0, 0);
  1693. AL_PR_DeleteAllSch(AL_DBTYPE_DVB_T,AL_PR_EVT_REM | AL_PR_SRV_REM);
  1694. //dvb -t
  1695. hNetHdl = AL_DB_INVALIDHDL;
  1696. hTp = AL_DB_INVALIDHDL;
  1697. stRootNet.stDVBTNetwork.usNetId = 1;
  1698. memcpy(stRootNet.stDVBTNetwork.szNetName, "Dummy", 6);
  1699. enRet = AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBNETWORK, &stRootNet, AL_DB_INVALIDHDL, &hNetHdl);
  1700. memset(&ts, 0, sizeof(AL_MultiplexDetail_t));
  1701. ts.stDVBTMultiplex.uiFreqK = 474000;
  1702. ts.stDVBTMultiplex.ucBandwidth = 8;
  1703. ts.stDVBTMultiplex.ucHierarchyMode = FRONTEND_HIERARCHY_AUTO;
  1704. AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBMULTIPLEX, &ts, hNetHdl, &hTp);
  1705. memset(&Program, 0, sizeof(AL_ServiceDetail_t));
  1706. Program.stDVBTServ.eSDTSrvType = AL_RECTYPE_DVBTV;
  1707. Program.stDVBTServ.eTvRadioType= AL_RECTYPE_DVBTV;
  1708. Program.stDVBTServ.szProgName[0] = 0;
  1709. Program.stDVBTServ.usOrigNetId = 0x2222;
  1710. Program.stDVBTServ.usServiceId = 0x2222;
  1711. Program.stDVBTServ.usTsId = 0x2222;
  1712. Program.stDVBTServ.usProgNo = 0x1;
  1713. Program.stDVBTServ.usPMTPid= 0x1F55;
  1714. Program.stDVBTServ.stVideoPid.usDataPID = 0x1F40;
  1715. Program.stDVBTServ.stAudioPid[0].usDataPID= 0x1F41;
  1716. enRet = AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBTV,
  1717. &Program, hTp, &hProg1);
  1718. memset(&ts, 0, sizeof(AL_MultiplexDetail_t));
  1719. ts.stDVBTMultiplex.uiFreqK = 666000;
  1720. ts.stDVBTMultiplex.ucBandwidth = 8;
  1721. ts.stDVBTMultiplex.ucHierarchyMode = FRONTEND_HIERARCHY_AUTO;
  1722. AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBMULTIPLEX, &ts, hNetHdl, &hTp);
  1723. memset(&Program, 0, sizeof(AL_ServiceDetail_t));
  1724. Program.stDVBTServ.eSDTSrvType = AL_RECTYPE_DVBTV;
  1725. Program.stDVBTServ.eTvRadioType= AL_RECTYPE_DVBTV;
  1726. Program.stDVBTServ.szProgName[0] = 0;
  1727. Program.stDVBTServ.usOrigNetId = 0x0000;
  1728. Program.stDVBTServ.usServiceId = 0x0001;
  1729. Program.stDVBTServ.usTsId = 0x0001;
  1730. Program.stDVBTServ.usProgNo = 0x2;
  1731. Program.stDVBTServ.usPMTPid= 0x0080;
  1732. Program.stDVBTServ.stVideoPid.usDataPID = 0x0064;
  1733. Program.stDVBTServ.stAudioPid[0].usDataPID= 0x0065;
  1734. enRet = AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBTV,
  1735. &Program, hTp, &hProg2);
  1736. #ifdef CONFIG_DVB_SYSTEM_DVBT2_SUPPORT
  1737. memset(&ts, 0, sizeof(AL_MultiplexDetail_t));
  1738. ts.stDVBTMultiplex.uiFreqK = 770000;
  1739. ts.stDVBTMultiplex.ucBandwidth = 8;
  1740. ts.stDVBTMultiplex.ucHierarchyMode = FRONTEND_HIERARCHY_AUTO;
  1741. ts.stDVBTMultiplex.ucTp_dvb_type = EDVB_DELIVER_TYPE_T2;
  1742. AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBMULTIPLEX, &ts, hNetHdl, &hTp);
  1743. memset(&Program, 0, sizeof(AL_ServiceDetail_t));
  1744. Program.stDVBTServ.eSDTSrvType = AL_RECTYPE_DVBTV;
  1745. Program.stDVBTServ.eTvRadioType= AL_RECTYPE_DVBTV;
  1746. Program.stDVBTServ.szProgName[0] = 0;
  1747. Program.stDVBTServ.usOrigNetId = 0x3333;
  1748. Program.stDVBTServ.usServiceId = 0x3333;
  1749. Program.stDVBTServ.usTsId = 0x3333;
  1750. Program.stDVBTServ.usProgNo = 0x3;
  1751. Program.stDVBTServ.usPMTPid= 0x3333;
  1752. Program.stDVBTServ.usPlpId = 0;
  1753. Program.stDVBTServ.stVideoPid.usDataPID = 0x5354;
  1754. Program.stDVBTServ.stAudioPid[0].usDataPID= 0x1303;
  1755. enRet = AL_DB_AddRecord(AL_DBTYPE_DVB_T, AL_RECTYPE_DVBTV,
  1756. &Program, hTp, &hProg3);
  1757. #endif
  1758. AL_FW_SwitchDBModule(eDBType);
  1759. APP_DVB_Playback_SetCurrentRFTypeByNetType(eDBType);
  1760. APP_DVB_Playback_SetCurrServiceType(eDBType, AL_RECTYPE_DVBTV);
  1761. APP_DVB_Playback_SetCurrentProgHandle(AL_DBTYPE_DVB_T,AL_RECTYPE_DVBTV,hProg1);
  1762. dvb_printf("\nfunction:%s,enRet:%d\n",__FUNCTION__,enRet);
  1763. enRet = enRet;//fix [-Werror=unused-but-set-variable]
  1764. }
  1765. #endif
  1766. static void _DVBApp_SWInit(void)
  1767. {
  1768. AL_PR_Init_Param_t Init_param=
  1769. {
  1770. .MaxNumOfReminders = AL_PR_MAX_NO_REMINDERS,
  1771. .app_schd_time[0] = PR_NOTIFY_TIME_IN_SEC,
  1772. /*reserves*/
  1773. .app_schd_time[1] = 0,
  1774. .app_schd_time[2] = 0
  1775. };
  1776. AL_PR_SetInitParam(&Init_param);
  1777. AL_DB_EDBType_t eDBType = AL_DBTYPE_MAX;
  1778. #if (defined(CONFIG_DVB_SYSTEM_DVBS_SUPPORT)||defined(CONFIG_DVB_SYSTEM_DVBT_SUPPORT)\
  1779. ||defined(CONFIG_DVB_SYSTEM_DVBC_SUPPORT))
  1780. AL_DB_RecDupliChkFunc_t stMatchFuc;
  1781. stMatchFuc.pServMatch = (AL_DB_RecordMatchFunc)_DVBApp_SerMatch;
  1782. #endif
  1783. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  1784. Ant_UsalsSetting_UserLocation_st UserLocal;
  1785. #endif
  1786. #ifdef CONFIG_DVB_SYSTEM_DVBT_SUPPORT
  1787. stMatchFuc.pNetMatch = (AL_DB_RecordMatchFunc)_DVBApp_NetworkMatch_T;
  1788. stMatchFuc.pMulitplexMatch = (AL_DB_RecordMatchFunc)_DVBApp_TPMatch_T;
  1789. AL_DB_RegisterDupliChkFunc(AL_DBTYPE_DVB_T, &stMatchFuc);
  1790. #endif
  1791. #ifdef CONFIG_DVB_SYSTEM_DVBC_SUPPORT
  1792. stMatchFuc.pNetMatch = (AL_DB_RecordMatchFunc)_DVBApp_NetworkMatch_C;
  1793. stMatchFuc.pMulitplexMatch = (AL_DB_RecordMatchFunc)_DVBApp_TPMatch_C;
  1794. AL_DB_RegisterDupliChkFunc(AL_DBTYPE_DVB_C, &stMatchFuc);
  1795. #endif
  1796. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  1797. stMatchFuc.pNetMatch = (AL_DB_RecordMatchFunc)_DVBApp_NetworkMatch_S;
  1798. stMatchFuc.pMulitplexMatch = (AL_DB_RecordMatchFunc)_DVBApp_TPMatch_S;
  1799. AL_DB_RegisterDupliChkFunc(AL_DBTYPE_DVB_S, &stMatchFuc);
  1800. #endif
  1801. APP_Database_GetCurrentDBType(APP_SOURCE_DTV, &eDBType);
  1802. switch (eDBType)
  1803. {
  1804. case AL_DBTYPE_DVB_T:
  1805. AL_FW_Init(FW_DVB_T_INIT, NULL, NULL);
  1806. break;
  1807. case AL_DBTYPE_DVB_C:
  1808. AL_FW_Init(FW_DVB_C_INIT, NULL, NULL);
  1809. break;
  1810. case AL_DBTYPE_DVB_S:
  1811. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  1812. AL_FW_Init(FW_DVB_S_INIT, NULL, NULL);
  1813. #endif
  1814. break;
  1815. default:
  1816. break;
  1817. }
  1818. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  1819. MID_SatCtrl_Init(TUNER_ID_MAIN);
  1820. APP_GUIOBJ_DVB_SatSys_GetUserLocation(&UserLocal);
  1821. MID_SatCtrl_SetUsalsLocation(MOTORSEL_USER,&UserLocal,NULL);
  1822. #endif
  1823. #ifndef SUPPORT_LCN_ONOFF
  1824. do {
  1825. UINT8 bLcnSetting, u8AreaIdx;
  1826. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO, 0,
  1827. sizeof(APP_SETTING_SystemInfo_t), &(g_stSysInfoData));
  1828. bLcnSetting = g_stSysInfoData.LcnOnOff;
  1829. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  1830. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  1831. u8AreaIdx = g_stChannelData.Country;
  1832. u8AreaIdx = u8AreaIdx; // avoid warning error
  1833. if (! (bLcnSetting & LCN_ONOFF_CHANGED)) //mean use the default
  1834. {
  1835. // For the first time boot up, the flash data has not initiated yet
  1836. #ifdef SUPPORT_LCN
  1837. APP_Area_GetDefaultAreaInfoLCN(eDBType, u8AreaIdx, &bLcnSetting);
  1838. #endif
  1839. g_stSysInfoData.LcnOnOff = bLcnSetting;
  1840. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO,
  1841. ITEM_OFFSET(APP_SETTING_SystemInfo_t, LcnOnOff),
  1842. sizeof(g_stSysInfoData.LcnOnOff),&(g_stSysInfoData.LcnOnOff));
  1843. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO,
  1844. ITEM_OFFSET(APP_SETTING_SystemInfo_t, LcnOnOff), sizeof(g_stSysInfoData.LcnOnOff));
  1845. }
  1846. } while(0);
  1847. #endif
  1848. #ifdef SUPPORT_FACTORY_AUTO_TEST
  1849. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  1850. {
  1851. _DVBApp_PrestoreProgram(eDBType);
  1852. }
  1853. else
  1854. #endif
  1855. {
  1856. APP_Factory_HotelModePowerOnChan();
  1857. }
  1858. // EPG setup
  1859. _DVBApp_EpgInit();
  1860. UINT32 area = 0;
  1861. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  1862. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  1863. area = g_stChannelData.Country;
  1864. DVBApp_ResetDvbSpecRule(area);
  1865. #ifdef MP4_SUB_PREFER_LANG
  1866. _DVBApp_SetMp4SubcodepagebyPreferLang();
  1867. #endif
  1868. // Monitor init
  1869. if (_DVBApp_BackgroundMonitor_Init() == SP_SUCCESS)
  1870. {
  1871. dvb_printf("_DVBApp_BackgroundMonitor_Init() success\n");
  1872. }
  1873. else
  1874. {
  1875. dvb_printf("_DVBApp_BackgroundMonitor_Init() fail\n");
  1876. }
  1877. // APP_Database_InitListTypeName();
  1878. //AUDIF_Set_OutputMode(OUTPUT_DOWNMIX_MODE, dwmix_L0R0);
  1879. //AUDIF_Set_OutputMode(OUT_RFModeK3, RF_outmode);
  1880. //AUDIF_Set_OutputMode(OUT_CustomModeB_DigitalDialnormK1, 0x6464);
  1881. }
  1882. static void _DVBApp_DTV_main_program(void *data)
  1883. {
  1884. _DVBApp_SWInit();
  1885. }
  1886. static INT32 _DVBApp_ToggleVideoState(void)
  1887. {
  1888. AL_DB_EDBType_t eDBType = APP_DVB_Playback_GetCurrentNetType();
  1889. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eDBType);
  1890. UINT8 u8ProgState = APP_DVB_Playback_GetProgStateByHandle(eDBType, AL_DB_INVALIDHDL);
  1891. if (MID_PlaybackIsPlaying() == TRUE)
  1892. {
  1893. /*AV is playing, need to stop*/
  1894. if (u8ProgState == MID_PLAYBK_PROG_STATE_LOCKED)
  1895. {
  1896. if (eServiceType == AL_RECTYPE_DVBRADIO)
  1897. {
  1898. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  1899. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_STOP_PLAYBACK,
  1900. (PLAYBACK_STOP_MHEG5 | PLAYBACK_KEEP_FRAMEBUF));
  1901. }
  1902. else
  1903. {
  1904. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  1905. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_STOP_PLAYBACK,
  1906. (PLAYBACK_STOP_SUBTITLE | PLAYBACK_STOP_MHEG5));
  1907. }
  1908. }
  1909. }
  1910. else
  1911. {
  1912. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  1913. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_START_PLAYBACK, 0);
  1914. }
  1915. return SP_SUCCESS;
  1916. }
  1917. static void _DVBApp_ShowPopup(DVB_DVBAppPopMsgType_t ePopType)
  1918. {
  1919. UINT32 u32GuiObj = 0;
  1920. PopmsgParam_t stPopup;
  1921. AL_DB_EDBType_t eDBType = AL_DBTYPE_MAX;
  1922. APP_Source_Type_t eSourType = APP_SOURCE_MAX;
  1923. AL_ServiceDetail_t stService;
  1924. #ifdef CONFIG_QSD //Chip test mode doesn't need to show no signal OSD
  1925. if(ePopType == DVB_APP_POP_MSG_NO_SIGNAL)
  1926. {
  1927. return;
  1928. }
  1929. #endif
  1930. #if (defined (CONFIG_SUPPORT_PVR) || defined(CONFIG_CONFIRM_AUTO_UPGRADE))
  1931. UINT32 dMsgType = 0;
  1932. APP_GUIOBJ_PopMsg_GetMsgDialogType(&dMsgType);
  1933. #endif
  1934. #ifdef CONFIG_CONFIRM_AUTO_UPGRADE
  1935. if (dMsgType == POPMSG_CONFIRM_START_AUTO_UPGRADE)
  1936. {
  1937. switch (ePopType)
  1938. {
  1939. case DVB_APP_POP_MSG_RADIO_CHANNEL:
  1940. case DVB_APP_POP_MSG_VIDEO_NOT_SUPPORT:
  1941. case DVB_APP_POP_MSG_SERVICE_NOT_AVAILABLE:
  1942. case DVB_APP_POP_MSG_SCRAMBLE:
  1943. case DVB_APP_POP_MSG_PARENTAL_LOCK:
  1944. case DVB_APP_POP_MSG_NO_SIGNAL:
  1945. case DVB_APP_POP_MSG_TEMPSERVICE:
  1946. case DVB_APP_POP_MSG_CHECKPWD:
  1947. case DVB_APP_POP_MSG_DATABASE_EMPTY:
  1948. dvb_printf("\n\n%d. auto upgrade pop message exist, not display pop message: %d.\n\n", __LINE__, ePopType);
  1949. return;
  1950. default:
  1951. break;
  1952. }
  1953. }
  1954. #endif
  1955. #ifdef CONFIG_SUPPORT_PVR
  1956. if (dMsgType == POPMSG_CONFIRM_REC_REMIDER_TIME || dMsgType == POPMSG_CONFIRM_REC_REMIDER_TIME_CONFIRM)
  1957. {
  1958. switch (ePopType)
  1959. {
  1960. case DVB_APP_POP_MSG_TEMPSERVICE:
  1961. case DVB_APP_POP_MSG_SERVICE_NOT_AVAILABLE:
  1962. case DVB_APP_POP_MSG_NOT_AVAILABLE:
  1963. dvb_printf("\n\n%d.PVR reminder Pop message exist, not display pop message: %d.\n\n", __LINE__, ePopType);
  1964. return;
  1965. default:
  1966. break;
  1967. }
  1968. }
  1969. #endif
  1970. for (u32GuiObj = 0; u32GuiObj < DVB_GUIOBJ_MAX; u32GuiObj++)
  1971. {
  1972. if (u32GuiObj == DVB_GUIOBJ_PLAYBACK
  1973. #ifdef CONFIG_SUPPORT_SUBTITLE
  1974. || u32GuiObj == DVB_GUIOBJ_SUBTITLE
  1975. #endif
  1976. #ifdef CONFIG_SUPPORT_TTX
  1977. || u32GuiObj == DVB_GUIOBJ_TTX
  1978. #endif
  1979. #ifdef CONFIG_SUPPORT_MHEG5
  1980. || u32GuiObj == DVB_GUIOBJ_MHEG5
  1981. #endif
  1982. #ifdef CONFIG_SUPPORT_ESTICKER_INFILE
  1983. || u32GuiObj == APP_GUIOBJ_ESTICKER
  1984. #endif
  1985. || u32GuiObj == DVB_GUIOBJ_PROGINFO
  1986. || u32GuiObj == DVB_GUIOBJ_POPMSG
  1987. || u32GuiObj == DVB_GUIOBJ_FREEZE
  1988. || u32GuiObj == APP_GUIOBJ_MUTE
  1989. || u32GuiObj == APP_GUIOBJ_BANNER
  1990. //|| u32GuiObj == APP_GUIOBJ_ADJUST
  1991. //|| u32GuiObj == APP_GUIOBJ_AMPLIFIERVOLUME
  1992. #ifdef CONFIG_SUPPORT_PVR
  1993. || u32GuiObj == DVB_GUIOBJ_PVR_REC
  1994. || u32GuiObj == DVB_GUIOBJ_PVR_PAUSE
  1995. || u32GuiObj == DVB_GUIOBJ_PVR_PLAYINFO
  1996. || u32GuiObj == DVB_GUIOBJ_PVRREC_INFO
  1997. || u32GuiObj == DVB_GUIOBJ_PVR_FILEPLAY
  1998. || u32GuiObj == DVB_GUIOBJ_PVR_FILEPLAYINFO
  1999. #endif
  2000. )
  2001. {
  2002. continue;
  2003. }
  2004. if(ePopType == DVB_APP_POP_MSG_OVERMAXVOLUME && u32GuiObj == APP_GUIOBJ_ADJUST)
  2005. {
  2006. continue;
  2007. }
  2008. if (ePopType != DVB_APP_POP_MSG_KEYLOCK)
  2009. {
  2010. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, u32GuiObj))
  2011. {
  2012. return;
  2013. }
  2014. }
  2015. }
  2016. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  2017. &&(g_dCurPopup == POPMSG_CONFIRM_FLIP))
  2018. {
  2019. return;
  2020. }
  2021. memset(&stPopup, 0x0, sizeof(PopmsgParam_t));
  2022. switch (ePopType)
  2023. {
  2024. case DVB_APP_POP_MSG_DATABASE_EMPTY:
  2025. stPopup.eType = POPMSG_TYPE_PROMPT;
  2026. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2027. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2028. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_DATABASE_EMPTY;
  2029. break;
  2030. case DVB_APP_POP_MSG_CHECK_ANTENNA_INPUT:
  2031. stPopup.eType = POPMSG_TYPE_PROMPT;
  2032. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2033. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2034. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_CHECK_ANTENNA_INPUT;
  2035. break;
  2036. case DVB_APP_POP_MSG_INVALID_INPUT:
  2037. stPopup.eType = POPMSG_TYPE_PROMPT;
  2038. stPopup.u16Exitkeys = POPMSG_EXIT_ANY_KEY;
  2039. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2040. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INVALID_INPUT;
  2041. stPopup.extend.stPrompt.iTimeout = 2;
  2042. break;
  2043. case DVB_APP_POP_MSG_NOT_AVAILABLE:
  2044. stPopup.eType = POPMSG_TYPE_PROMPT;
  2045. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2046. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2047. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NOT_AVAILABLE;
  2048. stPopup.extend.stPrompt.iTimeout = 2;
  2049. break;
  2050. #ifdef CONFIG_SUPPORT_SUBTITLE
  2051. case DVB_APP_POP_MSG_NO_SUBTITLE:
  2052. stPopup.eType = POPMSG_TYPE_PROMPT;
  2053. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2054. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2055. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_SUBTITLE;
  2056. stPopup.extend.stPrompt.iTimeout = 2;
  2057. break;
  2058. #endif
  2059. #ifdef CONFIG_SUPPORT_TTX
  2060. case DVB_APP_POP_MSG_NO_TTX:
  2061. stPopup.eType = POPMSG_TYPE_PROMPT;
  2062. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2063. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2064. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_TTX;
  2065. stPopup.extend.stPrompt.iTimeout = 2;
  2066. break;
  2067. #endif
  2068. case DVB_APP_POP_MSG_CHECKPWD:
  2069. stPopup.eType = POPMSG_TYPE_PWD;
  2070. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2071. stPopup.extend.stPwd.ePwdType = PLAYBACK_POPUP_PWD_LOCKED;
  2072. break;
  2073. case DVB_APP_POP_MSG_TEMPSERVICE:
  2074. #ifdef CONFIG_SUPPORT_MHEG5
  2075. if ((APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED)
  2076. && APP_Area_SupportDtg() /*&& (APP_DVB_Mheg5_GetMheg5DisplayStatus() == FALSE)*/)
  2077. {
  2078. if(APP_DVB_Mheg5_GetMheg5DisplayStatus() == FALSE)
  2079. {
  2080. stPopup.eType = POPMSG_TYPE_PROMPT;
  2081. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2082. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_TEMPSERVICE_LOAD_MHEG5;
  2083. break;
  2084. }else
  2085. return;
  2086. }
  2087. else if ((APP_DVB_Mheg5_GetBootCarouselStatus() != MHEG5_BOOT_CAROUSEL_EXISTED)
  2088. && APP_Area_SupportDtg())
  2089. {
  2090. return;
  2091. }
  2092. #endif
  2093. stPopup.eType = POPMSG_TYPE_PROMPT;
  2094. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2095. APP_Database_GetCurrentDBType(eSourType, &eDBType);
  2096. AL_DB_QueryDetail(APP_DVB_Playback_GetCurrentProgHandle(eDBType,
  2097. (AL_RECTYPE_DVBTV | AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA)), (al_void *)&stService);
  2098. if (((AL_DBTYPE_DVB_T == eDBType) && (1 == stService.stDVBTServ.stProgAttrib.svrnotrun))
  2099. || ((AL_DBTYPE_DVB_C == eDBType) && (1 == stService.stDVBCServ.stProgAttrib.svrnotrun))
  2100. || ((AL_DBTYPE_DVB_S == eDBType) && (1 == stService.stDVBSServ.stProgAttrib.svrnotrun)))
  2101. {
  2102. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_TEMPSERVICE_SERVICE_NOT_RUNNING;
  2103. }
  2104. else
  2105. {
  2106. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_TEMPSERVICE;
  2107. }
  2108. break;
  2109. case DVB_APP_POP_MSG_NO_SIGNAL:
  2110. stPopup.eType = POPMSG_TYPE_PROMPT;
  2111. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2112. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_NO_SIGNAL;
  2113. break;
  2114. case DVB_APP_POP_MSG_PARENTAL_LOCK:
  2115. stPopup.eType = POPMSG_TYPE_PWD;
  2116. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2117. stPopup.extend.stPwd.ePwdType = PLAYBACK_POPUP_PWD_LOCKED;
  2118. break;
  2119. case DVB_APP_POP_MSG_SCRAMBLE:
  2120. #ifdef CONFIG_CIPLUS_SUPPORT
  2121. #if 0 // TODO: MHEG5
  2122. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)||
  2123. APP_DVB_Mheg5_IsRunning())
  2124. {
  2125. return;
  2126. }
  2127. #endif
  2128. #endif
  2129. stPopup.eType = POPMSG_TYPE_PROMPT;
  2130. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2131. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_SCRAMBLED;
  2132. break;
  2133. case DVB_APP_POP_MSG_SERVICE_NOT_AVAILABLE:
  2134. stPopup.eType = POPMSG_TYPE_PROMPT;
  2135. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2136. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE;
  2137. break;
  2138. #ifdef CONFIG_CI_SUPPORT
  2139. case DVB_APP_POP_MSG_CI_CAM_INIT:
  2140. stPopup.eType = POPMSG_TYPE_PROMPT;
  2141. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2142. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_CI_CAM_INIT;
  2143. stPopup.extend.stPrompt.iTimeout = 60;
  2144. break;
  2145. case DVB_APP_POP_MSG_CI_CAM_INIT_OK:
  2146. stPopup.eType = POPMSG_TYPE_PROMPT;
  2147. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2148. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_CI_CAM_INIT_OK;
  2149. stPopup.extend.stPrompt.iTimeout = 3;
  2150. break;
  2151. case DVB_APP_POP_MSG_CI_CAM_ERROR:
  2152. stPopup.eType = POPMSG_TYPE_PROMPT;
  2153. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2154. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_CI_CAM_ERROR;
  2155. stPopup.extend.stPrompt.iTimeout = 3;
  2156. break;
  2157. case DVB_APP_POP_MSG_CI_CAM_REMOVED:
  2158. stPopup.eType = POPMSG_TYPE_PROMPT;
  2159. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2160. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_CI_CAM_REMOVED;
  2161. stPopup.extend.stPrompt.iTimeout = 3;
  2162. break;
  2163. #ifdef CONFIG_CIPLUS_SUPPORT
  2164. case DVB_APP_POP_MSG_CIPLUSE_UPGRADE_SUCC:
  2165. stPopup.eType = POPMSG_TYPE_PROMPT;
  2166. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2167. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_CIPLUS_UPGRADE_SUCC;
  2168. stPopup.extend.stPrompt.iTimeout = 5;
  2169. break;
  2170. case DVB_APP_POP_MSG_CIPLUSE_UPGRADE_FAILE:
  2171. stPopup.eType = POPMSG_TYPE_PROMPT;
  2172. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2173. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_CIPLUS_UPGRADE_FAILED;
  2174. stPopup.extend.stPrompt.iTimeout = 8;
  2175. break;
  2176. #endif
  2177. case DVB_APP_POP_MSG_HDCP_UPGRADE_SUCC:
  2178. stPopup.eType = POPMSG_TYPE_PROMPT;
  2179. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2180. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_HDCP_UPGRADE_SUCC;
  2181. stPopup.extend.stPrompt.iTimeout = 8;
  2182. break;
  2183. case DVB_APP_POP_MSG_HDCP_UPGRADE_FAILE:
  2184. stPopup.eType = POPMSG_TYPE_PROMPT;
  2185. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2186. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_HDCP_UPGRADE_FAILED;
  2187. stPopup.extend.stPrompt.iTimeout = 8;
  2188. break;
  2189. case DVB_APP_POP_MSG_CI_PASS_HDCP_PASS:
  2190. stPopup.eType = POPMSG_TYPE_PROMPT;
  2191. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2192. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_CI_PASS_HDCP_PASS;
  2193. stPopup.extend.stPrompt.iTimeout = 8;
  2194. break;
  2195. case DVB_APP_POP_MSG_CI_PASS_HDCP_FAIL:
  2196. stPopup.eType = POPMSG_TYPE_PROMPT;
  2197. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2198. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_CI_PASS_HDCP_FAIL;
  2199. stPopup.extend.stPrompt.iTimeout = 8;
  2200. break;
  2201. case DVB_APP_POP_MSG_CI_FAIL_HDCP_PASS:
  2202. stPopup.eType = POPMSG_TYPE_PROMPT;
  2203. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2204. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_CI_FAIL_HDCP_PASS;
  2205. stPopup.extend.stPrompt.iTimeout = 8;
  2206. break;
  2207. case DVB_APP_POP_MSG_CI_FAIL_HDCP_FAIL:
  2208. stPopup.eType = POPMSG_TYPE_PROMPT;
  2209. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2210. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMP_CI_FAIL_HDCP_FAIL;
  2211. stPopup.extend.stPrompt.iTimeout = 8;
  2212. break;
  2213. #ifdef SUPPORT_CICAM_NEW_MESSAGE //this define need be enable to inform user remove CICAM card
  2214. case DVB_APP_POP_MSG_CI_INFORM_USER_REMOVE_CAM:
  2215. stPopup.eType = POPMSG_TYPE_PROMPT;
  2216. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2217. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_CI_INFORM_USER_REMOVE_CAM;
  2218. stPopup.extend.stPrompt.iTimeout = 3;
  2219. break;
  2220. #endif
  2221. #endif
  2222. case DVB_APP_POP_MSG_NEW_SERVICE:
  2223. stPopup.eType = POPMSG_TYPE_PROMPT;
  2224. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2225. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2226. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_ADD_SRV;
  2227. stPopup.extend.stPrompt.iTimeout = 3;
  2228. break;
  2229. case DVB_APP_POP_MSG_SERVICE_REMOVE:
  2230. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2231. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2232. stPopup.u16ReturnType= GUI_OBJECT_POST_EVENT|GUI_OBJECT_EVENT_BYPASS ;
  2233. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_CONFIRM_REMOVE_SRV;
  2234. break;
  2235. case DVB_APP_POP_MSG_OTH_TP_NEW_SERVICE:
  2236. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2237. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2238. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2239. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_PROMPT_OTH_TP_ADD_SRV;
  2240. break;
  2241. case DVB_APP_POP_MSG_VIDEO_NOT_SUPPORT:
  2242. #ifdef CONFIG_SUPPORT_MHEG5
  2243. if (APP_DVB_Mheg5_GetBootCarouselStatus() != MHEG5_BOOT_CAROUSEL_NOT_EXISTED)
  2244. {
  2245. return;
  2246. }
  2247. #endif
  2248. stPopup.eType = POPMSG_TYPE_PROMPT;
  2249. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2250. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_VIDEO_NOT_SUPPORT;
  2251. break;
  2252. case DVB_APP_POP_MSG_DB_SAVE_IN_PROGRESS:
  2253. stPopup.eType = POPMSG_TYPE_PROMPT;
  2254. stPopup.u16Exitkeys = POPMSG_EXIT_CHN_UP_DOWN | POPMSG_EXIT_EPG | POPMSG_EXIT_MENU | POPMSG_EXIT_SOURCE;
  2255. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2256. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_SAVING_DATA;
  2257. stPopup.extend.stPrompt.iTimeout = 20;
  2258. break;
  2259. #ifdef CONFIG_SUPPORT_PVR
  2260. case DVB_APP_POP_MSG_REC_INIT:
  2261. stPopup.eType = POPMSG_TYPE_PROMPT;
  2262. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2263. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2264. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INITIAL_REC;
  2265. stPopup.extend.stPrompt.iTimeout = 1;
  2266. break;
  2267. case DVB_APP_POP_MSG_TIMESHIFT_INIT:
  2268. stPopup.eType = POPMSG_TYPE_PROMPT;
  2269. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2270. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2271. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INITIAL_TIMESHIFT;
  2272. stPopup.extend.stPrompt.iTimeout = 1;
  2273. break;
  2274. case DVB_APP_POP_MSG_AUTOTIMESHIFT_INIT:
  2275. stPopup.eType = POPMSG_TYPE_PROMPT;
  2276. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2277. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2278. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INITIAL_AUTOTIMESHIFT;
  2279. stPopup.extend.stPrompt.iTimeout = 2;
  2280. break;
  2281. case DVB_APP_POP_MSG_REC_ENTER_NOT_VALID:
  2282. stPopup.eType = POPMSG_TYPE_PROMPT;
  2283. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2284. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2285. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INVALID_REC;
  2286. stPopup.extend.stPrompt.iTimeout = 2;
  2287. break;
  2288. case DVB_APP_POP_MSG_REC_WRITE_ERROR:
  2289. stPopup.eType = POPMSG_TYPE_PROMPT;
  2290. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2291. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2292. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_REC_WRITE_ERR;
  2293. stPopup.extend.stPrompt.iTimeout = 2;
  2294. break;
  2295. case DVB_APP_POP_MSG_TIMESHIFT_ENTER_NOT_VALID:
  2296. stPopup.eType = POPMSG_TYPE_PROMPT;
  2297. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2298. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2299. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INVALID_TIMESHIFT;
  2300. stPopup.extend.stPrompt.iTimeout = 2;
  2301. break;
  2302. case DVB_APP_POP_MSG_REC_REQUIRE_FORMAT:
  2303. stPopup.eType = POPMSG_TYPE_PROMPT;
  2304. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2305. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2306. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PVR_REQUIRE_FORMAT_DISK;
  2307. stPopup.extend.stPrompt.iTimeout = 2;
  2308. break;
  2309. case DVB_APP_POP_MSG_REC_PARTITION_NOT_SET:
  2310. stPopup.eType = POPMSG_TYPE_PROMPT;
  2311. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2312. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2313. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PARTITION_NOT_SET;
  2314. stPopup.extend.stPrompt.iTimeout = 2;
  2315. break;
  2316. case DVB_APP_POP_MSG_PVR_DISK_CHECKING:
  2317. stPopup.eType = POPMSG_TYPE_PROMPT;
  2318. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2319. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2320. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_DISK_CHECKING;
  2321. stPopup.extend.stPrompt.iTimeout = 2;
  2322. break;
  2323. case DVB_APP_POP_MSG_PVR_DISK_FULL:
  2324. stPopup.eType = POPMSG_TYPE_PROMPT;
  2325. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2326. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2327. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_DISK_FULL;
  2328. stPopup.extend.stPrompt.iTimeout = 2;
  2329. break;
  2330. case DVB_APP_POP_MSG_PVR_NO_STORAGE:
  2331. stPopup.eType = POPMSG_TYPE_PROMPT;
  2332. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2333. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2334. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_USBCARD_DEVICE;
  2335. stPopup.extend.stPrompt.iTimeout = 2;
  2336. break;
  2337. case DVB_APP_POP_MSG_FOUNDDEVICE:
  2338. stPopup.eType = POPMSG_TYPE_PROMPT;
  2339. stPopup.u16Exitkeys = POPMSG_EXIT_ANY_KEY;
  2340. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2341. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_FOUNDDEVICE;
  2342. stPopup.extend.stPrompt.iTimeout = 2;
  2343. break;
  2344. case DVB_APP_POP_MSG_REC_NTFS_DIRTY:
  2345. stPopup.eType = POPMSG_TYPE_PROMPT;
  2346. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2347. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2348. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PARTITION_SET_NTFS_DIRTY;
  2349. stPopup.extend.stPrompt.iTimeout = 3;
  2350. break;
  2351. case DVB_APP_POP_MSG_REC_SCRAMBLE_CHANNEL:
  2352. stPopup.eType = POPMSG_TYPE_PROMPT;
  2353. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2354. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2355. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INVALID_REC_SCRAMBLE;
  2356. stPopup.extend.stPrompt.iTimeout = 2;
  2357. break;
  2358. case DVB_APP_POP_MSG_REC_START:
  2359. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2360. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2361. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2362. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2363. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_START_RECORD;
  2364. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2365. break;
  2366. case DVB_APP_POP_MSG_STOP_MHEG_FOR_REC:
  2367. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2368. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2369. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2370. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2371. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_MHEG_FOR_RECORD;
  2372. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2373. break;
  2374. case DVB_APP_POP_MSG_STOP_TSHIFT_TO_REC:
  2375. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2376. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2377. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2378. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_THIFT_TO_REC;
  2379. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2380. break;
  2381. case DVB_APP_POP_MSG_UPDATE_TSID:
  2382. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2383. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2384. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2385. stPopup.extend.stPrompt.ePromptType = POPMSG_CONFIRM_FIND_NEW_TSID;
  2386. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2387. break;
  2388. case DVB_APP_POP_MSG_TIMESHIFT_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_TIMESHIFT;
  2394. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2395. break;
  2396. case DVB_APP_POP_MSG_STOP_MHEG_FOR_TIMESHIFT:
  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_TIMESHIFT;
  2402. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2403. break;
  2404. case DVB_APP_POP_MSG_REC_STOP:
  2405. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2406. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2407. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2408. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2409. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD;
  2410. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2411. break;
  2412. case DVB_APP_POP_MSG_STOP_REC_FOR_MHEG:
  2413. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2414. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2415. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2416. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2417. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD_FOR_MHEG;
  2418. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2419. break;
  2420. case DVB_APP_POP_MSG_TIMESHIFT_STOP:
  2421. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2422. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2423. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2424. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2425. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT;
  2426. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2427. break;
  2428. case DVB_APP_POP_MSG_STOP_TIMESHIFT_FOR_MHEG:
  2429. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2430. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2431. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2432. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2433. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_MHEG;
  2434. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2435. break;
  2436. case DVB_APP_POP_MSG_REC_STOP_CHANNEL_CHANGE:
  2437. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2438. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2439. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2440. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2441. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD_FOR_CH_CHANGE;
  2442. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2443. break;
  2444. case DVB_APP_POP_MSG_REC_STOP_FOR_RECALL:
  2445. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2446. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2447. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2448. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2449. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD_FOR_RECALL;
  2450. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2451. break;
  2452. case DVB_APP_POP_MSG_TIMESHIFT_STOP_CHANNEL_CHANGE:
  2453. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2454. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2455. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2456. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2457. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_CH_CHANGE;
  2458. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2459. break;
  2460. case DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_RECALL:
  2461. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2462. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2463. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2464. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2465. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_RECALL;
  2466. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2467. break;
  2468. case DVB_APP_POP_MSG_REC_STOP_SOURCE_CHANGE:
  2469. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2470. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2471. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2472. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2473. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD_FOR_SRC_CHANGE;
  2474. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2475. break;
  2476. case DVB_APP_POP_MSG_TIMESHIFT_STOP_SOURCE_CHANGE:
  2477. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2478. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2479. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2480. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2481. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_SRC_CHANGE;
  2482. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2483. break;
  2484. case DVB_APP_POP_MSG_REC_SPEED_NOT_ENOUGH:
  2485. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2486. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2487. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2488. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2489. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_RECORDER_SPEED_NOT_ENOUGH;
  2490. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2491. break;
  2492. case DVB_APP_POP_MSG_TIMESHIFT_SPEED_NOT_ENOUGH:
  2493. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2494. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2495. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2496. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2497. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_TIMESHIFT_SPEED_NOT_ENOUGH;
  2498. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2499. break;
  2500. case DVB_APP_POP_MSG_REC_STOP_FOR_USBKEY:
  2501. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2502. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2503. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2504. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2505. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD_FOR_USBKEY;
  2506. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2507. break;
  2508. case DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_USBKEY:
  2509. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2510. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2511. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2512. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2513. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_USBKEY;
  2514. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2515. break;
  2516. case DVB_APP_POP_MSG_REC_STOP_FOR_TVRADIOKEY:
  2517. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2518. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2519. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2520. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2521. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_RECORD_FOR_TVRADIOKEY;
  2522. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2523. break;
  2524. case DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_TVRADIOKEY:
  2525. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2526. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2527. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2528. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2529. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_TVRADIOKEY;
  2530. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2531. break;
  2532. case DVB_APP_POP_MSG_PVR_TIMESHIFT_STANDBY:
  2533. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2534. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2535. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT;
  2536. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_PVR_TIMESHIFT_STANDBY;
  2537. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2538. break;
  2539. case DVB_APP_POP_MSG_PVR_REMIDER:
  2540. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2541. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2542. stPopup.u16ReturnType = GUI_OBJECT_NO_POST_ACTION;
  2543. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_REC_REMIDER_TIME;
  2544. stPopup.extend.stConfirm.u8Default = POPMSG_YES;
  2545. stPopup.extend.stConfirm.iTimeout = DVBApp_GetReminderTime2Show()+1;
  2546. break;
  2547. case DVB_APP_POP_MSG_PVR_REMIDER_CONFIRM:
  2548. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2549. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2550. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  2551. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_REC_REMIDER_TIME_CONFIRM;
  2552. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2553. break;
  2554. case DVB_APP_POP_MSG_STOP_REC_FOR_REMINDER:
  2555. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2556. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2557. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  2558. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_REC_FOR_REMINDER;
  2559. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2560. break;
  2561. case DVB_APP_POP_MSG_STOP_TSHIFT_FOR_REMINDER:
  2562. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2563. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2564. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  2565. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TSHIFT_FOR_REMINDER;
  2566. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2567. break;
  2568. case DVB_APP_POP_MSG_STOP_REC_FOR_TIMER_REC:
  2569. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2570. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2571. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  2572. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_REC_FOR_TIMER_REC;
  2573. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2574. break;
  2575. case DVB_APP_POP_MSG_STOP_TSHIFT_FOR_TIMER_REC:
  2576. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2577. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2578. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  2579. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_STOP_TSHIFT_FOR_TIMER_REC;
  2580. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2581. break;
  2582. case DVB_APP_POP_MSG_TIMER_OUT_OF_DATE:
  2583. stPopup.eType = POPMSG_TYPE_PROMPT;
  2584. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2585. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS ;
  2586. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_TIMER_OUT_OF_DATE;
  2587. stPopup.extend.stPrompt.iTimeout = 2;
  2588. break;
  2589. case DVB_APP_POP_MSG_PVR_SYSTEM_TIME_CHANGED:
  2590. stPopup.eType = POPMSG_TYPE_PROMPT;
  2591. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2592. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT;
  2593. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PVR_SYSTEM_TIME_CHANGED;
  2594. stPopup.extend.stPrompt.iTimeout = 2;
  2595. break;
  2596. case DVB_APP_POP_MSG_PVR_PARTITION_SET_SUCCESSFUL:
  2597. stPopup.eType = POPMSG_TYPE_PROMPT;
  2598. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2599. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT;
  2600. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PARTITION_SET_SUCCESSFUL;
  2601. stPopup.extend.stPrompt.iTimeout = 2;
  2602. break;
  2603. case DVB_APP_POP_MSG_PVR_ENABLE:
  2604. stPopup.eType = POPMSG_TYPE_PROMPT;
  2605. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2606. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2607. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PVR_ENABLE;
  2608. stPopup.extend.stPrompt.iTimeout = 2;
  2609. break;
  2610. case DVB_APP_POP_MSG_PVR_DISABLE:
  2611. stPopup.eType = POPMSG_TYPE_PROMPT;
  2612. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2613. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2614. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_PVR_DISABLE;
  2615. stPopup.extend.stPrompt.iTimeout = 2;
  2616. break;
  2617. case DVB_APP_POP_MSG_INSERT_USB:
  2618. stPopup.eType = POPMSG_TYPE_PROMPT;
  2619. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2620. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2621. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INSERT_USB;
  2622. stPopup.extend.stPrompt.iTimeout = 3;
  2623. break;
  2624. case DVB_APP_POP_MSG_INVALID_USB:
  2625. stPopup.eType = POPMSG_TYPE_PROMPT;
  2626. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2627. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2628. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INVALID_USB;
  2629. stPopup.extend.stPrompt.iTimeout = 3;
  2630. break;
  2631. case DVB_APP_POP_MSG_INSERT_USB_CONFIRM:
  2632. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2633. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT | POPMSG_EXIT_RETURN;
  2634. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2635. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2636. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_INSERT_USB;
  2637. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2638. break;
  2639. case DVB_APP_POP_MSG_INVALID_USB_CONFIRM:
  2640. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2641. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT | POPMSG_EXIT_RETURN;
  2642. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2643. stPopup.u32GuiObjID = DVB_GUIOBJ_PVR_REC;
  2644. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_INVALID_USB;
  2645. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2646. break;
  2647. #endif
  2648. case DVB_APP_POP_MSG_CHANNEL_DELETED:
  2649. stPopup.eType = POPMSG_TYPE_PROMPT;
  2650. stPopup.u16Exitkeys = POPMSG_EXIT_ANY_KEY;
  2651. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2652. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_CHANNEL_DELETED;
  2653. stPopup.extend.stPrompt.iTimeout = 2;
  2654. break;
  2655. case DVB_APP_POP_MSG_EPG_ENABLE:
  2656. stPopup.eType = POPMSG_TYPE_PROMPT;
  2657. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2658. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2659. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_EPG_ENABLE;
  2660. stPopup.extend.stPrompt.iTimeout = 2;
  2661. break;
  2662. case DVB_APP_POP_MSG_EPG_DISABLE:
  2663. stPopup.eType = POPMSG_TYPE_PROMPT;
  2664. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2665. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2666. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_EPG_DISABLE;
  2667. stPopup.extend.stPrompt.iTimeout = 2;
  2668. break;
  2669. #ifdef SUPPORT_CONAX_CAS
  2670. case DVB_APP_POP_MSG_NO_CARD_INSERTERD:
  2671. stPopup.eType = POPMSG_TYPE_PROMPT;
  2672. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2673. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2674. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_CARD_INSERTERD;
  2675. stPopup.extend.stPrompt.iTimeout = 2;
  2676. break;
  2677. case DVB_APP_POP_MSG_INCORRECT_CONAX_CARD:
  2678. stPopup.eType = POPMSG_TYPE_PROMPT;
  2679. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2680. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2681. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INCORRECT_CONAX_CARD;
  2682. stPopup.extend.stPrompt.iTimeout = 2;
  2683. break;
  2684. case DVB_APP_POP_MSG_INCORRECT_CARD:
  2685. stPopup.eType = POPMSG_TYPE_PROMPT;
  2686. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2687. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2688. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_INCORRECT_CARD;
  2689. stPopup.extend.stPrompt.iTimeout = 2;
  2690. break;
  2691. case DVB_APP_POP_MSG_CARD_PROBIEM_CHEAKCAED:
  2692. stPopup.eType = POPMSG_TYPE_PROMPT;
  2693. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2694. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2695. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_CARD_PROBIEM_CHEAKCAED;
  2696. stPopup.extend.stPrompt.iTimeout = 2;
  2697. break;
  2698. case DVB_APP_POP_MSG_NO_ACCESS:
  2699. stPopup.eType = POPMSG_TYPE_PROMPT;
  2700. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2701. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2702. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_ACCESS;
  2703. stPopup.extend.stPrompt.iTimeout = 2;
  2704. break;
  2705. case DVB_APP_POP_MSG_NO_ACCESS_GEOGRAPHICAL_BLACKOUT:
  2706. stPopup.eType = POPMSG_TYPE_PROMPT;
  2707. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2708. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2709. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_ACCESS_GEOGRAPHICAL_BLACKOUT;
  2710. stPopup.extend.stPrompt.iTimeout = 2;
  2711. break;
  2712. case DVB_APP_POP_MSG_NO_ACCESS_NETWORK_BLOCK:
  2713. stPopup.eType = POPMSG_TYPE_PROMPT;
  2714. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2715. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS ;
  2716. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_ACCESS_NETWORK_BLOCK;
  2717. stPopup.extend.stPrompt.iTimeout = 2;
  2718. break;
  2719. #endif
  2720. case DVB_APP_POP_MSG_RADIO_CHANNEL:
  2721. stPopup.eType = POPMSG_TYPE_PROMPT;
  2722. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2723. stPopup.u16ReturnType = GUI_OBJECT_EVENT_BYPASS;
  2724. stPopup.extend.stPrompt.ePromptType = PLAYBACK_POPUP_MSG_RADIO_CHANNEL;
  2725. break;
  2726. case DVB_APP_POP_MSG_NO_RADIO:
  2727. stPopup.eType = POPMSG_TYPE_PROMPT;
  2728. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2729. stPopup.u16ReturnType = GUI_OBJECT_NO_POST_ACTION ;
  2730. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_RADIO;
  2731. stPopup.extend.stPrompt.iTimeout = 2;
  2732. break;
  2733. case DVB_APP_POP_MSG_NO_DTVORDATA:
  2734. stPopup.eType = POPMSG_TYPE_PROMPT;
  2735. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2736. stPopup.u16ReturnType = GUI_OBJECT_NO_POST_ACTION ;
  2737. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_NO_DTVORDATA;
  2738. stPopup.extend.stPrompt.iTimeout = 2;
  2739. break;
  2740. #ifdef CONFIG_SUPPORT_MHEG5
  2741. case DVB_APP_POP_MSG_STOP_SUBTITLE_TO_OPEN_MHEG5:
  2742. stPopup.eType = POPMSG_TYPE_CONFIRM;
  2743. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2744. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT ;
  2745. stPopup.u32GuiObjID = DVB_GUIOBJ_PLAYBACK;
  2746. stPopup.extend.stConfirm.eConfirmType =
  2747. PLAYBACK_POPUP_CONFIRM_STOP_SUBTITLE_TO_OPEN_MHEG5;
  2748. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  2749. break;
  2750. #endif
  2751. case DVB_APP_POP_MSG_KEYLOCK:
  2752. stPopup.eType = POPMSG_TYPE_PROMPT;
  2753. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2754. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT;
  2755. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_KEYLOCK;
  2756. stPopup.extend.stPrompt.iTimeout = 2;
  2757. break;
  2758. case DVB_APP_POP_MSG_OVERMAXVOLUME:
  2759. stPopup.eType = POPMSG_TYPE_PROMPT;
  2760. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT;
  2761. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT;
  2762. stPopup.extend.stPrompt.ePromptType = POPMSG_PROMPT_OVER_MAXVOLUME;
  2763. stPopup.extend.stPrompt.iTimeout = 2;
  2764. break;
  2765. #ifdef N32_GAME_SUPPORT
  2766. case DVB_APP_POP_MSG_IMPORTING_GAME:
  2767. stPopup.eType = POPMSG_TYPE_PROMPT;
  2768. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2769. stPopup.u16ReturnType = GUI_OBJECT_NO_POST_ACTION ;
  2770. stPopup.extend.stPrompt.ePromptType = POPMSG_N32GAME_IMPORTING_GAME;
  2771. stPopup.extend.stPrompt.iTimeout = 2;
  2772. break;
  2773. case DVB_APP_POP_MSG_NO_SIZE_FOR_GAME:
  2774. stPopup.eType = POPMSG_TYPE_PROMPT;
  2775. stPopup.u16Exitkeys = POPMSG_EXIT_KEY_NONE;
  2776. stPopup.u16ReturnType = GUI_OBJECT_NO_POST_ACTION ;
  2777. stPopup.extend.stPrompt.ePromptType = POPMSG_N32GAME_NO_SIZE_FOR_GAME;
  2778. stPopup.extend.stPrompt.iTimeout = 2;
  2779. break;
  2780. #endif
  2781. default:
  2782. return;
  2783. }
  2784. if (stDvbInst.bAppState == SYSTEM_IDLE)
  2785. {
  2786. return;
  2787. }
  2788. DVBApp_SchedulePopup(stPopup);
  2789. }
  2790. static INT32 _DVBApp_CheckPopupDisplay(void)
  2791. {
  2792. UINT32 dCheckFlag;
  2793. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  2794. {
  2795. for (dCheckFlag = PLAYBACK_POPUP_MAX - 1; dCheckFlag > PLAYBACK_POPUP_NONE; dCheckFlag--)
  2796. {
  2797. if (g_u32PopupWaitingList & (1 << (dCheckFlag - PLAYBACK_POPUP_NONE)))
  2798. {
  2799. DVBApp_SchedulePopup(stPopupWaitingList[dCheckFlag-PLAYBACK_POPUP_NONE]);
  2800. break;
  2801. }
  2802. }
  2803. }
  2804. return 0;
  2805. }
  2806. static INT32 _DVBApp_HidePopupDisplay(void)
  2807. {
  2808. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  2809. {
  2810. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO);
  2811. }
  2812. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM))
  2813. {
  2814. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM);
  2815. }
  2816. APP_MenuMgr_SetMsgPopup(FALSE);
  2817. g_u32OldPopup = PLAYBACK_POPUP_NONE;
  2818. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  2819. {
  2820. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  2821. }
  2822. g_dCurPopup = PLAYBACK_POPUP_NONE;
  2823. return SP_SUCCESS;
  2824. }
  2825. static al_void _DVBApp_SendServRefleshMsg(al_void)
  2826. {
  2827. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR))
  2828. {
  2829. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR,
  2830. APP_GLOBAL_EVENT_REFRESH_SERV_INFO, 0);
  2831. }
  2832. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR))
  2833. {
  2834. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR,
  2835. APP_GLOBAL_EVENT_REFRESH_SERV_INFO, 0);
  2836. }
  2837. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST))
  2838. {
  2839. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST,
  2840. APP_GLOBAL_EVENT_REFRESH_SERV_INFO, 0);
  2841. }
  2842. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST))
  2843. {
  2844. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST,
  2845. APP_GLOBAL_EVENT_REFRESH_SERV_INFO, 0);
  2846. }
  2847. }
  2848. static INT32 _DVBApp_Zapping(
  2849. UINT8 bServiceType, AL_RecHandle_t hProgHdl,
  2850. UINT8 bForce, UINT32 u32Paramter, Boolean bShowInfo)
  2851. {
  2852. AL_DB_EDBType_t eOldDBType = APP_GUIOBJ_DVB_Playback_GetPrevNetType();
  2853. AL_DB_ERecordType_t eOldServiceType = APP_DVB_Playback_GetCurrServiceType(eOldDBType);
  2854. AL_RecHandle_t hOldProgHdl;
  2855. AL_RecHandle_t hNextProgHdl = hProgHdl;
  2856. APP_Source_Type_t eSourType = APP_SOURCE_MAX;
  2857. APP_GUIOBJ_Source_GetCurrSource(&eSourType);
  2858. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM))
  2859. {
  2860. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM);
  2861. }
  2862. #ifdef CONFIG_CI_SUPPORT
  2863. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ))
  2864. {
  2865. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ);
  2866. }
  2867. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU))
  2868. {
  2869. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU);
  2870. }
  2871. g_Audio_Scramble_Counter = 0;
  2872. g_VIP_FINISH_Flg = FALSE;
  2873. #endif
  2874. hOldProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eOldDBType, eOldServiceType);
  2875. if (AL_DB_INVALIDHDL != hNextProgHdl)
  2876. {
  2877. AL_ServiceDetail_t ServInfor;
  2878. DBServAttrib_t stProgAttrib;
  2879. AL_DB_EDBType_t eDBType;
  2880. AL_DB_ERecordType_t eServiceType;
  2881. #ifdef CONFIG_CIPLUS_SUPPORT
  2882. if (g_isMute)
  2883. {
  2884. g_isMute = FALSE;
  2885. dvb_printf("%s, %d, valid program handle unmute all!\n", __FUNCTION__, __LINE__);
  2886. APP_Audio_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_DTV);
  2887. APP_Video_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_DTV);
  2888. }
  2889. #endif
  2890. AL_DB_QueryDetail(hNextProgHdl, &ServInfor);
  2891. AL_DB_GetRecordType(hNextProgHdl, &eDBType, &eServiceType);
  2892. if (AL_DBTYPE_DVB_T == eDBType)
  2893. {
  2894. stProgAttrib = ServInfor.stDVBTServ.stProgAttrib;
  2895. }
  2896. else if (AL_DBTYPE_DVB_C == eDBType)
  2897. {
  2898. stProgAttrib = ServInfor.stDVBCServ.stProgAttrib;
  2899. }
  2900. else if (AL_DBTYPE_DVB_S == eDBType)
  2901. {
  2902. stProgAttrib = ServInfor.stDVBSServ.stProgAttrib;
  2903. }
  2904. if (!(stProgAttrib.delete == al_true))
  2905. {
  2906. if ((hNextProgHdl != hOldProgHdl)
  2907. || (bServiceType != eOldServiceType) || (bForce == TRUE)
  2908. #ifdef CONFIG_CIPLUS_SUPPORT
  2909. || APP_DVB_CI_GetIsPlaybackPMT()
  2910. #endif
  2911. #ifdef CHECK_HIDDEN_SERVICE
  2912. || ((stProgAttrib.notvisible == al_true) != 0)
  2913. #endif
  2914. )
  2915. {
  2916. #ifdef CONFIG_SUPPORT_PVR
  2917. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  2918. {
  2919. PVR_DEBF("\n==========stop recorder to zapping!====\n");
  2920. if (MID_REC_MODE_MANUAL == MID_Recorder_GetRecMode())
  2921. {
  2922. DVBApp_StopRecord();
  2923. }
  2924. else
  2925. {
  2926. DVBApp_StopTimeshift(FALSE);
  2927. }
  2928. }
  2929. #endif
  2930. #if 0/*moved to _APP_GUIOBJ_DVB_Playback_Stop() by xm.zeng on 2013/3/26.*/
  2931. #ifdef CONFIG_SUPPORT_SUBTITLE
  2932. AL_Subtitle_Reset();
  2933. #endif
  2934. #ifdef CONFIG_SUPPORT_TTX
  2935. AL_TTX_Stop();
  2936. AL_TTX_Reset();
  2937. #endif
  2938. #endif/*end*/
  2939. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  2940. {
  2941. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  2942. }
  2943. if (APP_GetPlaybackPauseState() == TRUE)
  2944. {
  2945. APP_Audio_SetMute(TRUE, TRUE, APP_MUTE_MODE_CH_CHANGE, eSourType);
  2946. APP_Video_SetMute(TRUE, TRUE, APP_MUTE_MODE_CH_CHANGE, eSourType);
  2947. MID_PlaybackStreamResume(1);
  2948. APP_SetPlaybackPauseState(FALSE);
  2949. #ifdef CONFIG_SUPPORT_SUBTITLE
  2950. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  2951. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  2952. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  2953. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  2954. if (g_stUserInfoData.Subtitle == APP_SWITCH_ON)
  2955. {
  2956. #ifdef CONFIG_DTV_SUPPORT
  2957. AL_Subtitle_Type_t SubtitleType = AL_SUBTITLE_TYPE_MAX;
  2958. if (APP_GUIOBJ_SubTitle_GetType(&SubtitleType) == TRUE)
  2959. {
  2960. AL_Subtitle_SetFreeze(FALSE);
  2961. if (SubtitleType == AL_SUBTITLE_TYPE_TTX_SUBTITLE)
  2962. {
  2963. #ifdef CONFIG_SUPPORT_TTX
  2964. UINT32 u32DTVTTXZone = 0;
  2965. APP_GUIOBJ_Language_GetDTTZone(&u32DTVTTXZone);
  2966. AL_TTX_SetLanguage(u32DTVTTXZone);
  2967. #endif
  2968. }
  2969. }
  2970. #endif
  2971. }
  2972. #endif
  2973. }
  2974. DVBApp_ClearStatus();
  2975. if (u32Paramter == FW_MONITOR_REPLACE_SERVICE)
  2976. {
  2977. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  2978. SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  2979. APP_DVB_INTRA_EVENT_ZAPPING_WITH_REPLACE, (UINT32)hNextProgHdl);
  2980. }
  2981. else
  2982. {
  2983. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  2984. SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  2985. APP_DVB_INTRA_EVENT_ZAPPING, (UINT32)hNextProgHdl);
  2986. }
  2987. }
  2988. }
  2989. /*Add for dispose TV/RADIO key in channel manager /channel list /epg*/
  2990. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR)
  2991. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR)
  2992. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST)
  2993. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST)
  2994. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG)
  2995. #ifdef SUPPORT_FACTORY_AUTO_TEST
  2996. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING)
  2997. #endif
  2998. )
  2999. {
  3000. return SP_SUCCESS;
  3001. }
  3002. /*End*/
  3003. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  3004. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  3005. if((!APP_Factory_CheckNeedReopenFm(SYS_APP_DVB))
  3006. #ifdef SUPPORT_HOTEL_MODE_INFOBANNER_SHOW_CONTROL
  3007. &&((!g_stFactoryHotelData.HotelModeOnOff)||(g_stFactoryHotelData.ShowInfoBar))
  3008. #endif
  3009. )
  3010. {
  3011. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  3012. {
  3013. if (bShowInfo == TRUE)
  3014. {
  3015. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  3016. SYS_APP_DVB, DVB_GUIOBJ_PROGINFO,
  3017. APP_DVB_GLOBAL_EVENT_INFO_UPDATE, 1);
  3018. }
  3019. else
  3020. {
  3021. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO);
  3022. }
  3023. }
  3024. else
  3025. {
  3026. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER))
  3027. {
  3028. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER);
  3029. }
  3030. if (!(APP_MenuMgr_Exist_Main_Menu()))
  3031. {
  3032. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  3033. {
  3034. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  3035. }
  3036. #ifdef SUPPORT_CEC_TV
  3037. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  3038. {
  3039. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  3040. }
  3041. #endif
  3042. _DVBApp_CloseAllMenu();
  3043. if (bShowInfo == TRUE)
  3044. {
  3045. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO, 0);
  3046. }
  3047. }
  3048. }
  3049. if (APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL)
  3050. == MID_PLAYBK_PROG_STATE_LOCKED)
  3051. {
  3052. if (bShowInfo == TRUE)
  3053. {
  3054. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  3055. }
  3056. }
  3057. }
  3058. }
  3059. else
  3060. {
  3061. #ifdef CONFIG_CIPLUS_SUPPORT
  3062. if (APP_CIPLUS_IsProfileSource())
  3063. {
  3064. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_DTV);
  3065. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_DTV);
  3066. g_isMute = TRUE;
  3067. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  3068. {
  3069. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO,
  3070. APP_DVB_GLOBAL_EVENT_INFO_UPDATE, 1);
  3071. }
  3072. else
  3073. {
  3074. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER))
  3075. {
  3076. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER);
  3077. }
  3078. if (!(APP_MenuMgr_Exist_Main_Menu()))
  3079. {
  3080. _DVBApp_CloseAllMenu();
  3081. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO, 0);
  3082. }
  3083. }
  3084. }
  3085. else
  3086. #endif
  3087. {
  3088. #ifdef SPECIAL_CHNORDER_FOR_SPAIN
  3089. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_DISPLAY, 0);
  3090. #else
  3091. _DVBApp_ShowPopup(DVB_APP_POP_MSG_INVALID_INPUT);
  3092. #endif
  3093. }
  3094. }
  3095. _DVBApp_CheckPopupDisplay();
  3096. return SP_SUCCESS;
  3097. }
  3098. static INT32 _DVBApp_DestroyPartialObjects(UINT8 *pMenuFlag)
  3099. {
  3100. UINT32 i;
  3101. UINT32 u32TotalObj;
  3102. UINT8 u8FilteredObj = 0;
  3103. UINT32 u32GuiObjID[DVB_GUIOBJ_MAX];
  3104. if (SYSAPP_GOBJ_GetTotalCreatedObjects(SYS_APP_DVB, &u32TotalObj) == -1)
  3105. {
  3106. return SP_ERR_FAILURE;
  3107. }
  3108. for (i = 0; i <= u32TotalObj - 1; i++)
  3109. {
  3110. if (SYSAPP_GOBJ_GetObjectIDByIndex(SYS_APP_DVB, i , &u32GuiObjID[u8FilteredObj]) == -1)
  3111. {
  3112. return SP_ERR_FAILURE;
  3113. }
  3114. if ((u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_PLAYBACK)
  3115. #ifdef CONFIG_SUPPORT_SUBTITLE
  3116. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_SUBTITLE)
  3117. #endif
  3118. #ifdef CONFIG_SUPPORT_ESTICKER_INFILE
  3119. || (u32GuiObjID[u8FilteredObj] == APP_GUIOBJ_ESTICKER)
  3120. #endif
  3121. #ifdef CONFIG_SUPPORT_MHEG5
  3122. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_MHEG5)
  3123. #endif
  3124. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_FREEZE)
  3125. || (u32GuiObjID[u8FilteredObj] == APP_GUIOBJ_MUTE)
  3126. )
  3127. {
  3128. continue;
  3129. }
  3130. else if ((u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_CHNMGR)
  3131. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_FAVMGR)
  3132. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_SCAN_PROCESS)
  3133. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_CHNRENAME)
  3134. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_EPG)
  3135. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_CHNLIST)
  3136. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_FAVLIST)
  3137. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_EPGEXTEND)
  3138. #ifdef CONFIG_CI_SUPPORT
  3139. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_CI_MENU)
  3140. || (u32GuiObjID[u8FilteredObj] == DVB_GUIOBJ_CI_ENQ)
  3141. #endif
  3142. )
  3143. {
  3144. *pMenuFlag = TRUE;
  3145. }
  3146. u8FilteredObj++;
  3147. }
  3148. SYSAPP_GOBJ_DestroyPartialGUIObjects(SYS_APP_DVB, u32GuiObjID, u8FilteredObj);
  3149. return SP_SUCCESS;
  3150. }
  3151. static void _DVBApp_Exit_All_Menu(void)
  3152. {
  3153. UINT8 bMenuFlag = 0;
  3154. al_bool bHasValidServ = al_false;
  3155. al_uint8 bSignalState = al_false;
  3156. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  3157. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  3158. {
  3159. DVBApp_ResetPopup_Channel();
  3160. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  3161. }
  3162. #ifdef OSD_GAME_SUPPORT
  3163. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OSDGAME))
  3164. {
  3165. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_OSDGAME, APP_DVB_INTRA_EVENT_OSD_GAME_EXIT, (UINT32)NULL);
  3166. }
  3167. #endif
  3168. if (APP_MenuMgr_Exist_Main_Menu())
  3169. {
  3170. bMenuFlag = 1;
  3171. APP_MenuMgr_Exit_Main_Menu();
  3172. }
  3173. if (APP_MenuMgr_Exist_Factory_Menu())
  3174. {
  3175. bMenuFlag = 1;
  3176. APP_MenuMgr_Exit_Factory_Menu();
  3177. }
  3178. #ifdef CONFIG_SUPPORT_OTA_UPGRADE
  3179. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OTA_UPGRADE_PROGRESS)
  3180. && (!APP_MenuMgr_Exist_Main_Menu()))
  3181. {
  3182. bMenuFlag = TRUE;
  3183. }
  3184. #endif
  3185. if (g_u32OldPopup == PLAYBACK_POPUP_NONE)
  3186. {
  3187. if (_DVBApp_DestroyPartialObjects(&bMenuFlag) == SP_ERR_FAILURE)
  3188. {
  3189. SYSAPP_GOBJ_DestroyAllGUIObject(SYS_APP_DVB);
  3190. }
  3191. }
  3192. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  3193. if (bMenuFlag)
  3194. {
  3195. #if 0
  3196. if (TotalNum > 0)
  3197. {
  3198. al_uint8 bSignalState = al_false;
  3199. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  3200. if ((bSignalState != AL_DVB_MONITOR_VALUE_TRUE) && (MID_PlaybackIsPlaying() == TRUE))
  3201. {
  3202. //DVBApp_ResetPopup_Channel();
  3203. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_SIGNAL);
  3204. }
  3205. else
  3206. {
  3207. if (eServiceType == AL_RECTYPE_DVBRADIO)
  3208. {
  3209. //DVBApp_ResetPopup_Channel();
  3210. if (!APP_GUIOBJ_DVB_Playback_GetShowLogoState())
  3211. {
  3212. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  3213. }
  3214. if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL))
  3215. {
  3216. #ifdef CONFIG_SUPPORT_MHEG5
  3217. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  3218. #endif
  3219. {
  3220. _DVBApp_ShowPopup(DVB_APP_POP_MSG_RADIO_CHANNEL);
  3221. }
  3222. }
  3223. }
  3224. else
  3225. {
  3226. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  3227. }
  3228. if (APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL)
  3229. == MID_PLAYBK_PROG_STATE_SCRAMBLED)
  3230. {
  3231. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SCRAMBLE);
  3232. }
  3233. }
  3234. }
  3235. else
  3236. {
  3237. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  3238. //DVBApp_ResetPopup_Channel();
  3239. _DVBApp_ShowPopup(DVB_APP_POP_MSG_DATABASE_EMPTY);
  3240. }
  3241. #endif
  3242. }
  3243. else
  3244. {
  3245. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  3246. {
  3247. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO);
  3248. }
  3249. }
  3250. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  3251. if (bSignalState == AL_DVB_MONITOR_VALUE_TRUE)
  3252. {
  3253. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  3254. }
  3255. DVBApp_ClosePopup(PLAYBACK_POPUP_PWD_LOCKED, UI_EVENT_NULL);
  3256. if (bHasValidServ)
  3257. {
  3258. #ifdef CONFIG_CIPLUS_SUPPORT
  3259. if (APP_CIPLUS_IsProfileSource())
  3260. {
  3261. if (g_isMute)
  3262. {
  3263. return ;
  3264. }
  3265. }
  3266. #endif
  3267. _DVBApp_ToggleVideoState();
  3268. if (g_bMidHasUnmute)
  3269. {
  3270. DVBApp_CheckProgramType(TRUE);
  3271. }
  3272. }
  3273. _DVBApp_CheckPopupDisplay();
  3274. }
  3275. static void _DVBApp_ExitAll(void)
  3276. {
  3277. #ifdef CONFIG_SUPPORT_MHEG5
  3278. UINT32 u32TotalObj = 0;
  3279. if (SYSAPP_GOBJ_GetTotalCreatedObjects(SYS_APP_DVB, &u32TotalObj) == -1)
  3280. {
  3281. u32TotalObj = 0;
  3282. }
  3283. #endif
  3284. _DVBApp_Exit_All_Menu();
  3285. #ifdef CONFIG_SUPPORT_MHEG5
  3286. #ifdef SUPPORT_TIME_ON_OSD
  3287. if (u32TotalObj == 3)
  3288. #else
  3289. if (u32TotalObj == 2)
  3290. #endif
  3291. {
  3292. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  3293. {
  3294. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, UI_EVENT_RETURN, 0);
  3295. }
  3296. }
  3297. #ifdef SUPPORT_SUBTITLE_ON_PG
  3298. else if ((u32TotalObj == 4) && (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE)))
  3299. {
  3300. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  3301. {
  3302. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, UI_EVENT_RETURN, 0);
  3303. }
  3304. }
  3305. #endif
  3306. #endif
  3307. }
  3308. static INT32 _DVBApp_CloseAllMenu(void)
  3309. {
  3310. INT32 u32GuiObj = 0;
  3311. UINT32 u32GuiObjID;
  3312. UINT32 u32TotalObj;
  3313. _DVBApp_HidePopupDisplay();
  3314. if (SYSAPP_GOBJ_GetTotalCreatedObjects(SYS_APP_DVB, &u32TotalObj) != SYSTEM_APP_SUCCESS)
  3315. {
  3316. return SP_ERR_FAILURE;
  3317. }
  3318. for (u32GuiObj =(INT32)(u32TotalObj - 1); u32GuiObj >= 0; u32GuiObj--)
  3319. {
  3320. if (SYSAPP_GOBJ_GetObjectIDByIndex(SYS_APP_DVB, u32GuiObj , &u32GuiObjID) != SYSTEM_APP_SUCCESS)
  3321. {
  3322. return SP_ERR_FAILURE;
  3323. }
  3324. if ((u32GuiObjID == DVB_GUIOBJ_PLAYBACK)
  3325. #ifdef CONFIG_SUPPORT_ESTICKER_INFILE
  3326. || (u32GuiObjID == APP_GUIOBJ_ESTICKER)
  3327. #endif
  3328. #ifdef CONFIG_SUPPORT_SUBTITLE
  3329. ||(u32GuiObjID == DVB_GUIOBJ_SUBTITLE)
  3330. #endif
  3331. #ifdef CONFIG_SUPPORT_MHEG5
  3332. ||(u32GuiObjID == DVB_GUIOBJ_MHEG5)
  3333. #endif
  3334. ||(u32GuiObjID == DVB_GUIOBJ_FREEZE)
  3335. ||(u32GuiObjID == APP_GUIOBJ_MUTE)
  3336. #ifdef CONFIG_SUPPORT_PVR
  3337. || (u32GuiObjID == DVB_GUIOBJ_PVR_FILEPLAY)
  3338. || (u32GuiObjID == DVB_GUIOBJ_PVR_FILEPLAYINFO)
  3339. #endif
  3340. )
  3341. {
  3342. continue;
  3343. }
  3344. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, u32GuiObjID);
  3345. }
  3346. #ifdef CONFIG_SUPPORT_TTX
  3347. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  3348. {
  3349. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  3350. }
  3351. #endif
  3352. return SP_SUCCESS;
  3353. }
  3354. #ifdef CONFIG_SUPPORT_PVR
  3355. /* g_bMidHasUnmute , we need modify this flag before play record file when dtv play locked radio */
  3356. void DVBAPP_Pvr_fileplay_Setflag(Boolean flag)
  3357. {
  3358. g_bMidHasUnmute = flag;
  3359. }
  3360. AL_SCH_sched_id_t DVBAPP_Pvr_GetStopTimer_id(void)
  3361. {
  3362. return stoprec_id;
  3363. }
  3364. void DVBApp_Pvr_SetStopTimer_id(void)
  3365. {
  3366. stoprec_id = AL_SCH_INVALID_ID;
  3367. }
  3368. void DVBApp_SetBGTimeshift(UINT8 u8StartInterval)
  3369. {
  3370. if (u8StartInterval > 0)
  3371. {
  3372. g_u8BGTimeshiftStart = u8StartInterval;
  3373. }
  3374. else
  3375. {
  3376. g_u8BGTimeshiftStart = 0;
  3377. }
  3378. }
  3379. static int DVBApp_CheckDiskSpeedAgain(int defpartition)
  3380. {
  3381. int Speed_State;
  3382. dvb_printf(" %s \n\n",__FUNCTION__);
  3383. MID_RecorderSetDefaultPartition(defpartition, MID_REC_PARTITION_SET_FORCE);
  3384. Speed_State = MID_RecorderGetPartitionSpeed(defpartition);
  3385. return Speed_State;
  3386. }
  3387. static INT32 DVBApp_CheckForRecord(MID_REC_MODE eRecMode)
  3388. {
  3389. int Speed_State;
  3390. INT32 iRet = 0;
  3391. INT32 iPtListIdx = -1;
  3392. //al_bool SOURCE_HD = FALSE;
  3393. al_uint8 bSignalState = al_false;
  3394. al_bool bHasValidServ = al_false;
  3395. UINT8 u8ProgLockState = FALSE;
  3396. g_eCheckRecMode = eRecMode;
  3397. //move this action to here for mantis:22619 start
  3398. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  3399. //move this action to here for mantis:22619 end
  3400. u8ProgLockState = APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL);
  3401. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  3402. if (u8ProgLockState == MID_PLAYBK_PROG_STATE_LOCKED)
  3403. {
  3404. if(MID_REC_MODE_MANUAL == eRecMode)
  3405. {
  3406. #ifndef SUPPORT_SPEC_PVR_RECORD
  3407. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  3408. return SP_ERR_FAILURE;
  3409. #endif
  3410. }
  3411. else
  3412. {
  3413. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_ENTER_NOT_VALID);
  3414. return SP_ERR_FAILURE;
  3415. }
  3416. }
  3417. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  3418. if ((bSignalState != AL_DVB_MONITOR_VALUE_TRUE)
  3419. || (DVBApp_CheckServiceNotAvailable() == TRUE)
  3420. || !bHasValidServ)
  3421. {
  3422. if (MID_REC_MODE_AUTO == eRecMode)
  3423. {
  3424. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  3425. }
  3426. else
  3427. {
  3428. if (eRecMode == MID_REC_MODE_MANUAL)
  3429. {
  3430. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  3431. }
  3432. else if (eRecMode == MID_REC_MODE_TIMESHIFT_AFTER_REC)
  3433. {
  3434. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_ENTER_NOT_VALID);
  3435. }
  3436. }
  3437. return SP_ERR_FAILURE;
  3438. }
  3439. iRet = APP_GUIOBJ_DVB_PvrRec_IsReadyToRecord();
  3440. if (iRet != PVR_MSG_SUCCESS)
  3441. {
  3442. switch (iRet)
  3443. {
  3444. case PVR_MSG_FAIL_DISK_CHECKING:
  3445. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_DISK_CHECKING);
  3446. if (MID_REC_MODE_AUTO == eRecMode)
  3447. {
  3448. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  3449. }
  3450. break;
  3451. case PVR_MSG_FAIL_PARTITION_NOT_SET:
  3452. if (MID_REC_MODE_AUTO == eRecMode)
  3453. {
  3454. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  3455. }
  3456. else
  3457. {
  3458. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_PARTITION_NOT_SET);
  3459. }
  3460. break;
  3461. case PVR_MSG_FAIL_NO_STORAGE:
  3462. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_NO_STORAGE);
  3463. break;
  3464. case PVR_MSG_FAIL_NTFS_DIRTY:
  3465. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_NTFS_DIRTY);
  3466. break;
  3467. case PVR_MSG_FAIL_NO_FREE_SPACE:
  3468. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_DISK_FULL);
  3469. break;
  3470. case PVR_MSG_FAIL_H264_IN_PS_FORMAT:
  3471. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  3472. break;
  3473. case PVR_MSG_SCRAMBLE_CHANNEL:
  3474. if (MID_REC_MODE_AUTO == eRecMode)
  3475. {
  3476. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  3477. }
  3478. else if (MID_REC_MODE_MANUAL== eRecMode)
  3479. {
  3480. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  3481. }
  3482. else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC== eRecMode))
  3483. {
  3484. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_ENTER_NOT_VALID);
  3485. }
  3486. break;
  3487. default:
  3488. if (MID_REC_MODE_AUTO == eRecMode)
  3489. {
  3490. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  3491. }
  3492. else
  3493. {
  3494. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  3495. }
  3496. break;
  3497. }
  3498. return SP_ERR_FAILURE;
  3499. }
  3500. MID_RecorderGetDefaultPartition(&iPtListIdx);
  3501. Speed_State = MID_RecorderGetPartitionSpeed(iPtListIdx);
  3502. #ifdef REMIND_SPEED_NOT_ENOUGH
  3503. al_uint8 SOURCE_HD = FALSE;
  3504. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_HDCONTENT, &SOURCE_HD);
  3505. if (SOURCE_HD)
  3506. {
  3507. if ((Speed_State < MID_REC_SPEED_HDRECORD) && (eRecMode == MID_REC_MODE_MANUAL))
  3508. {
  3509. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  3510. if (APP_WAKEUP_GetBootFlag() == FALSE)//panel off, record immediately
  3511. #endif
  3512. {
  3513. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_SPEED_NOT_ENOUGH); //POPUP REC SPEED NOT ENOUGH
  3514. return SP_ERR_FAILURE;
  3515. }
  3516. }
  3517. else if ((Speed_State < MID_REC_SPEED_HDTSHIFT) && (eRecMode != MID_REC_MODE_MANUAL))
  3518. {
  3519. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_SPEED_NOT_ENOUGH); //POPUP TIMESHIFT SPEED NOT ENOUGH
  3520. return SP_ERR_FAILURE;
  3521. }
  3522. }
  3523. else
  3524. {
  3525. if ((Speed_State < MID_REC_SPEED_SDRECORD) && (eRecMode == MID_REC_MODE_MANUAL))
  3526. {
  3527. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  3528. if (APP_WAKEUP_GetBootFlag() == FALSE)//panel off, record immediately
  3529. #endif
  3530. {
  3531. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_SPEED_NOT_ENOUGH); //POPUP REC SPEED NOT ENOUGH
  3532. return SP_ERR_FAILURE;
  3533. }
  3534. }
  3535. else if ((Speed_State < MID_REC_SPEED_SDTSHIFT) && (eRecMode != MID_REC_MODE_MANUAL))
  3536. {
  3537. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_SPEED_NOT_ENOUGH); //POPUP TIMESHIFT SPEED NOT ENOUGH
  3538. return SP_ERR_FAILURE;
  3539. }
  3540. }
  3541. #else
  3542. if (Speed_State == MID_REC_SPEED_TOOLOW)
  3543. {
  3544. if ((Speed_State = DVBApp_CheckDiskSpeedAgain(iPtListIdx)) == MID_REC_SPEED_TOOLOW)
  3545. {
  3546. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_REQUIRE_FORMAT); //POPUP REC SPEED NOT ENOUGH
  3547. return SP_ERR_FAILURE;
  3548. }
  3549. }
  3550. #endif
  3551. //move this action to here for mantis:22619 start
  3552. if (MID_REC_MODE_AUTO == eRecMode)
  3553. {
  3554. _DVBApp_CloseAllMenu();
  3555. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_INIT);
  3556. }
  3557. //move this action to here for mantis:22619 end
  3558. return SP_SUCCESS;
  3559. }
  3560. INT32 DVBApp_StartRecord(MID_REC_MODE eRecMode)
  3561. {
  3562. INT32 iRet;
  3563. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  3564. {
  3565. return SP_ERR_FAILURE;
  3566. }
  3567. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS))
  3568. {
  3569. return SP_ERR_FAILURE;
  3570. }
  3571. #ifdef CONFIG_SUPPORT_OTA_UPGRADE
  3572. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OTA_UPGRADE_PROGRESS))
  3573. {
  3574. return SP_ERR_FAILURE;
  3575. }
  3576. #endif
  3577. if (DVBApp_CheckForRecord(eRecMode) != SP_SUCCESS)
  3578. {
  3579. dvb_printf("[%s %d]invalid to enter rec/timeshift!!! [off]\n",__FUNCTION__,__LINE__);
  3580. return SP_ERR_FAILURE;
  3581. }
  3582. #ifdef CONFIG_SUPPORT_MHEG5
  3583. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_MH5);
  3584. #endif
  3585. /* disable timer record */
  3586. APP_GUIOBJ_DVB_PvrRec_SetDurationTime(0);//means not timer record //zhongbaoxing added for mantis 142788 @20110720
  3587. if (MID_REC_MODE_MANUAL == eRecMode)
  3588. {
  3589. MID_Recorder_SetRecMode(MID_REC_MODE_MANUAL);
  3590. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  3591. if(APP_WAKEUP_GetBootFlag() == TRUE)
  3592. {
  3593. printf("[debug ]%s %d\n",__FUNCTION__,__LINE__);
  3594. printf("REC Mode Chang to MID_REC_MODE_UNATTENDED\n\n\n");
  3595. MID_Recorder_SetRecMode(MID_REC_MODE_UNATTENDED);
  3596. }
  3597. #endif
  3598. iRet = APP_GUIOBJ_DVB_PvrRec_StartRecord();
  3599. if (iRet != PVR_MSG_SUCCESS)
  3600. {
  3601. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  3602. MID_Recorder_SetRecMode(MID_REC_MODE_MAX);
  3603. APP_GUIOBJ_DVB_PvrRec_RegUninitCallback();
  3604. #ifdef CONFIG_SUPPORT_MHEG5
  3605. if (APP_Area_SupportDtg())
  3606. {
  3607. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB | OSD2CTRLMDL_MH5);
  3608. }
  3609. else
  3610. {
  3611. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  3612. }
  3613. #else
  3614. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  3615. #endif
  3616. return SP_ERR_FAILURE;
  3617. }
  3618. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  3619. {
  3620. #ifdef Subtitle_Freeze
  3621. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE))
  3622. {
  3623. AL_Subtitle_SetFreeze(FALSE);
  3624. }
  3625. #endif
  3626. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  3627. MID_PlaybackStreamResume(1);
  3628. g_PauseState = FALSE;
  3629. }
  3630. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_INIT);
  3631. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, 0);
  3632. #ifdef SUPPORT_FREE_RECORD_TIME
  3633. if (APP_GUIOBJ_DVB_PvrRec_GetTimerRecord() == FALSE)
  3634. {
  3635. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  3636. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  3637. AL_SCH_details_t sch_detail;
  3638. al_uint32 CurTimeInSec = 0;
  3639. AL_Time_GetCurTimeInSecs(&CurTimeInSec);
  3640. memset(&sch_detail, 0, sizeof(AL_SCH_details_t));
  3641. sch_detail.sch_event = AL_SCH_TYPE_SINGLE | AL_SCH_TYPE_PRG_EXPIRE_SCH;
  3642. sch_detail.sch_snooze = 0;
  3643. sch_detail.sch_time = CurTimeInSec + g_stFeatureData.FreeRecordTime*60; //for mantis 0156382
  3644. sch_detail.sch_user_para = 0;
  3645. PVR_DEBF("event_end_time_insec = %d\n", sch_detail.sch_time);
  3646. PVR_DEBF("current time = %d\n", CurTimeInSec);
  3647. AL_SCH_ScheduleEvent(&sch_detail, &stoprec_id, al_null);
  3648. APP_GUIOBJ_DVB_PvrRec_SetDurationTime(g_stFeatureData.FreeRecordTime*60);
  3649. }
  3650. #endif
  3651. }
  3652. else if (MID_REC_MODE_TIMESHIFT_AFTER_REC == eRecMode)
  3653. {
  3654. MID_Recorder_SetRecMode(MID_REC_MODE_TIMESHIFT_AFTER_REC);
  3655. iRet = APP_GUIOBJ_DVB_PvrRec_StartRecord();
  3656. if (iRet != PVR_MSG_SUCCESS)
  3657. {
  3658. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  3659. MID_Recorder_SetRecMode(MID_REC_MODE_MAX);
  3660. APP_GUIOBJ_DVB_PvrRec_RegUninitCallback();
  3661. #ifdef CONFIG_SUPPORT_MHEG5
  3662. if (APP_Area_SupportDtg())
  3663. {
  3664. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB | OSD2CTRLMDL_MH5);
  3665. }
  3666. else
  3667. {
  3668. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  3669. }
  3670. #else
  3671. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  3672. #endif
  3673. return SP_ERR_FAILURE;
  3674. }
  3675. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  3676. {
  3677. #ifdef Subtitle_Freeze
  3678. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE))
  3679. {
  3680. AL_Subtitle_SetFreeze(FALSE);
  3681. }
  3682. #endif
  3683. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  3684. MID_PlaybackStreamResume(1);
  3685. g_PauseState = FALSE;
  3686. }
  3687. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_INIT);
  3688. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  3689. {
  3690. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  3691. }
  3692. #ifdef SUPPORT_TEAC_TIMESHIFT_CTRL
  3693. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,
  3694. DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERPAUSE);
  3695. #else
  3696. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,
  3697. DVB_GUIOBJ_PVR_PLAYINFO, 0);
  3698. #endif
  3699. }
  3700. else if (MID_REC_MODE_AUTO == eRecMode)
  3701. {
  3702. MID_Recorder_SetRecMode(MID_REC_MODE_AUTO);
  3703. iRet = APP_GUIOBJ_DVB_PvrRec_StartRecord();
  3704. if (iRet != PVR_MSG_SUCCESS)
  3705. {
  3706. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  3707. MID_Recorder_SetRecMode(MID_REC_MODE_MAX);
  3708. APP_GUIOBJ_DVB_PvrRec_RegUninitCallback();
  3709. #ifdef CONFIG_SUPPORT_MHEG5
  3710. if (APP_Area_SupportDtg())
  3711. {
  3712. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB | OSD2CTRLMDL_MH5);
  3713. }
  3714. else
  3715. {
  3716. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  3717. }
  3718. #else
  3719. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  3720. #endif
  3721. return SP_ERR_FAILURE;
  3722. }
  3723. else
  3724. {
  3725. _DVBApp_ShowPopup(DVB_APP_POP_MSG_AUTOTIMESHIFT_INIT);
  3726. }
  3727. }
  3728. #ifdef SUPPORT_LED_FLASH
  3729. APP_LED_Flash_Timer_Set(LED_FLASH_TYPE_RECODER, LED_FLASH_TIMER_RECODER);
  3730. #endif
  3731. return SP_SUCCESS;
  3732. }
  3733. INT32 DVBApp_StopRecord(void)
  3734. {
  3735. AL_SCH_sched_id_t StopId= AL_SCH_INVALID_ID;
  3736. AL_SCH_sched_id_t DurId= AL_SCH_INVALID_ID;
  3737. StopId = DVBAPP_Pvr_GetStopTimer_id();
  3738. if (StopId != AL_SCH_INVALID_ID)
  3739. {
  3740. //UnSchedule stop timer
  3741. AL_SCH_UnScheduleEvent(&StopId);
  3742. DVBApp_Pvr_SetStopTimer_id();
  3743. }
  3744. DurId = APP_GUIOBJ_DVB_PvrRecDurationTime_GetDurationID();
  3745. if (DurId != AL_SCH_INVALID_ID)
  3746. {
  3747. //UnSchedule duration timer
  3748. AL_SCH_UnScheduleEvent(&DurId);
  3749. APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurationID();
  3750. }
  3751. /* //need modify kai.wang
  3752. extern INT32 APP_GUIOBJ_DVB_TimerList_GetRecordingPR(AL_PR_details_t* details, int* PROffset);
  3753. extern AL_Return_t APP_GUIOBJ_DVB_TimerList_DeleteRecordingPR(int Param);
  3754. int iOffset = 0;
  3755. if (APP_GUIOBJ_DVB_TimerList_GetRecordingPR(NULL, &iOffset) == AL_SUCCESS)
  3756. {
  3757. APP_GUIOBJ_DVB_TimerList_DeleteRecordingPR(iOffset);
  3758. #ifdef SUB_CUSTOMER_Tianle
  3759. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC))
  3760. {
  3761. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC,
  3762. APP_GLOBAL_EVENT_REFRESH_DATA, 0);
  3763. }
  3764. #else
  3765. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST))
  3766. {
  3767. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST,
  3768. APP_GLOBAL_EVENT_REFRESH_DATA, 0);
  3769. }
  3770. #endif
  3771. }
  3772. */
  3773. #ifdef SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD
  3774. if ((DVBAPP_Pvr_GetRECPlayFlag())
  3775. && (MID_REC_MODE_MANUAL == MID_Recorder_GetRecMode()))
  3776. {
  3777. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  3778. {
  3779. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  3780. }
  3781. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  3782. {
  3783. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  3784. }
  3785. APP_GUIOBJ_DVB_PvrPlayInfo_StopTimeshift();
  3786. }
  3787. #endif
  3788. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  3789. {
  3790. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  3791. }
  3792. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  3793. {
  3794. APP_GUIOBJ_DVB_PvrRec_StopRecord();
  3795. }
  3796. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  3797. {
  3798. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC);
  3799. }
  3800. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE))
  3801. {
  3802. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE);
  3803. }
  3804. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME))
  3805. {
  3806. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME);
  3807. }
  3808. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  3809. //check for standby recorder for the case stop rec unnormally
  3810. //sent to man app to call APP_WAKEUP_CompleteNotify();
  3811. MAINAPP_SendGlobalEvent(APP_GLOGAL_EVENT_PVR_TIEMRREC_CHECKSTANDBY, AL_POWER_STATE_OFF);
  3812. #endif
  3813. #ifdef SUPPORT_LED_FLASH
  3814. APP_LED_Flash_Timer_Set(LED_FLASH_TYPE_RECODER, 0);
  3815. #endif
  3816. APP_GUIOBJ_DVB_PvrRecInfo_SetDiskFull(FALSE);
  3817. #ifdef CONFIG_SUPPORT_MHEG5
  3818. if (APP_Area_SupportDtg())
  3819. {
  3820. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB | OSD2CTRLMDL_MH5);
  3821. }
  3822. else
  3823. {
  3824. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  3825. }
  3826. #else
  3827. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  3828. #endif
  3829. int u8MidRecState;
  3830. al_uint8 u8AutoTimeShift;
  3831. u8MidRecState = MID_RecorderState();
  3832. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  3833. ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift),
  3834. sizeof(g_stFeatureData.AutoTimeShift), &(g_stFeatureData.AutoTimeShift));
  3835. u8AutoTimeShift = g_stFeatureData.AutoTimeShift;
  3836. if (APP_PVR_TIMESHIFT_AUTO == u8AutoTimeShift && u8MidRecState == MID_REC_STATUS_STOP)
  3837. {
  3838. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  3839. }
  3840. return SP_SUCCESS;
  3841. }
  3842. INT32 DVBApp_StopTimeshift(Boolean bIsStopRec)
  3843. {
  3844. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  3845. {
  3846. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  3847. }
  3848. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  3849. {
  3850. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  3851. }
  3852. APP_GUIOBJ_DVB_PvrPlayInfo_StopTimeshift();
  3853. if (bIsStopRec)
  3854. {
  3855. #ifdef SUPPORT_LED_FLASH
  3856. APP_LED_Flash_Timer_Set(LED_FLASH_TYPE_RECODER, 0);
  3857. #endif
  3858. char szPtName[20];
  3859. int sdDefPtIdx = 0;
  3860. MID_RecorderGetDefaultPartition(&sdDefPtIdx);
  3861. MID_PartitionList_GetMountName(sdDefPtIdx, szPtName);
  3862. MID_RecorderStop();
  3863. MID_RecorderSetProgHandle(0);
  3864. MID_Recorder_SetRecMode(MID_REC_MODE_MAX);
  3865. MID_RecorderDeleteTSPLFiles(); //delete TSPL buffer when Timeshift without Timeshift to Record enabled
  3866. MID_Recorder_DeleteTShistIfExist(szPtName);
  3867. }
  3868. return SP_SUCCESS;
  3869. }
  3870. static UINT8 DVBApp_CheakFocusPopOnlyForRECicon(void)
  3871. {
  3872. //For the problem: REC icon can not show when there are only some pops focused under REC
  3873. UINT8 Flag = 0;
  3874. INT32 iFocusedIndex = 0;
  3875. if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  3876. {
  3877. return Flag;
  3878. }
  3879. if (DVB_GUIOBJ_POPMSG == iFocusedIndex)
  3880. {
  3881. if(DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL)
  3882. ||DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL)
  3883. ||DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_TEMPSERVICE)
  3884. ||DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_TEMPSERVICE_SERVICE_NOT_RUNNING)
  3885. ||DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SCRAMBLED)
  3886. ||DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE)
  3887. ||DVBApp_IsPopupExist(PLAYBACK_POPUP_PWD_LOCKED))
  3888. {
  3889. Flag = 1;
  3890. }
  3891. }
  3892. return Flag;
  3893. }
  3894. static INT32 _DVBApp_Recorder_PauseResume(void)
  3895. {
  3896. int iFocusedIndex;
  3897. if (MID_RecorderState() == MID_REC_STATUS_PAUSE)
  3898. {
  3899. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  3900. {
  3901. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC);
  3902. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  3903. }
  3904. else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  3905. {
  3906. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  3907. }
  3908. else if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex)
  3909. || DVBApp_CheakFocusPopOnlyForRECicon())
  3910. {
  3911. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  3912. }
  3913. }
  3914. if (MID_RecorderState() == MID_REC_STATUS_START)
  3915. {
  3916. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE))
  3917. {
  3918. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE);
  3919. if (MID_REC_MODE_MANUAL == MID_Recorder_GetRecMode())
  3920. {
  3921. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, 0);
  3922. #ifdef SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD
  3923. if(DVBAPP_Pvr_GetRECPlayFlag())
  3924. {
  3925. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERNORMAL);
  3926. }
  3927. #endif
  3928. }
  3929. }
  3930. }
  3931. return SP_SUCCESS;
  3932. }
  3933. void DVBApp_SetPVRSwitchSRC(Boolean Switch)
  3934. {
  3935. g_bPVRSwitchSource = Switch;
  3936. }
  3937. Boolean DVBApp_GetPVRSwitchSRC(void)
  3938. {
  3939. return g_bPVRSwitchSource;
  3940. }
  3941. void DVBApp_SetTVRadioSwap(Boolean IsSwap)
  3942. {
  3943. g_bTvRadioSwap = IsSwap;
  3944. }
  3945. Boolean DVBApp_GetTVRadioSwap(void)
  3946. {
  3947. return g_bTvRadioSwap;
  3948. }
  3949. AL_RecHandle_t DVBApp_GetSCHProgHandle(void)
  3950. {
  3951. return g_stDetails.rem_details.handle;
  3952. }
  3953. UINT32 DVBApp_GetTimerRECStartTime(void)
  3954. {
  3955. return g_stDetails.start_local_time_secs;
  3956. }
  3957. UINT32 DVBApp_GetReminderTime2Show(void)
  3958. {
  3959. al_uint32 CurTimeInSec = 0;
  3960. AL_Time_GetCurTimeInSecs(&CurTimeInSec);
  3961. if (g_stDetails.start_local_time_secs > CurTimeInSec)
  3962. {
  3963. return (g_stDetails.start_local_time_secs-CurTimeInSec);
  3964. }
  3965. else
  3966. {
  3967. return 1;//show 1 sec
  3968. }
  3969. }
  3970. UINT32 DVBApp_PVRRec_SetTimerCancle(void)
  3971. {
  3972. AL_PR_details_t stDetails;
  3973. if (g_stDetails.snooze_time_secs == 0)
  3974. {
  3975. AL_PR_Delete(g_dReminderId);
  3976. }
  3977. else
  3978. {
  3979. memset(&stDetails, 0x0, sizeof(AL_PR_details_t));
  3980. memcpy(&stDetails, &g_stDetails, sizeof(AL_PR_details_t));
  3981. stDetails.start_local_time_secs = stDetails.start_local_time_secs +
  3982. stDetails.snooze_time_secs;
  3983. stDetails.rem_details.event_end_time_insec = stDetails.rem_details.event_end_time_insec +
  3984. stDetails.snooze_time_secs;
  3985. if (AL_PR_Modify(&stDetails, g_dReminderId) != AL_SUCCESS)
  3986. {
  3987. dvb_printf("\n[%s]reschedule the reminder fail\n",__FUNCTION__);
  3988. return SP_ERR_FAILURE;
  3989. }
  3990. }
  3991. return SP_SUCCESS;
  3992. }
  3993. void DVBApp_SetRemType(AL_PR_type_t remtype)
  3994. {
  3995. g_remtype = remtype;
  3996. }
  3997. AL_PR_type_t DVBApp_GetRemType(void)
  3998. {
  3999. return g_remtype;
  4000. }
  4001. void _DVBApp_PVR_UpdateState(void)
  4002. {
  4003. UINT8 u8AutoTimeShift;
  4004. UINT8 u8MidRecState;
  4005. INT32 I32DefPartition;
  4006. u8MidRecState = MID_RecorderState();
  4007. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  4008. ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift),
  4009. sizeof(g_stFeatureData.AutoTimeShift), &(g_stFeatureData.AutoTimeShift));
  4010. u8AutoTimeShift = g_stFeatureData.AutoTimeShift;
  4011. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  4012. #if defined (CONFIG_SUPPORT_USB_UPGRADE) || defined (CONFIG_SUPPORT_OTA_UPGRADE)
  4013. if (Mid_CmnUpgradeIsUpgradeing()== TRUE)
  4014. {
  4015. if ( MID_RecorderIsCurRecording() == DRV_SUCCESS)
  4016. {
  4017. dvb_printf("[debug]%s %d\n",__FUNCTION__,__LINE__);
  4018. dvb_printf("System is upgradeing........\n\n\n");
  4019. DVBApp_StopTimeshift(TRUE);
  4020. }
  4021. if (u8AutoTimeShift == APP_PVR_TIMESHIFT_AUTO)
  4022. {
  4023. dvb_printf("[debug]%s %d\n",__FUNCTION__,__LINE__);
  4024. dvb_printf("System is upgradeing........\n\n\n");
  4025. u8AutoTimeShift = APP_PVR_TIMESHIFT_OFF;
  4026. }
  4027. }
  4028. if((g_dCurPopup== POPMSG_CONFIRM_ERASE_WHOLE_FLASH)
  4029. #ifdef CONFIG_SUPPORT_USB_AUTO_UPGRADE
  4030. || (g_dCurPopup == POPMSG_CONFIRM_START_AUTO_UPGRADE)
  4031. #endif
  4032. )
  4033. {
  4034. if (u8AutoTimeShift == APP_PVR_TIMESHIFT_AUTO)
  4035. {
  4036. dvb_printf("[debug]%s %d\n",__FUNCTION__,__LINE__);
  4037. dvb_printf("confirm if upgrade........\n\n\n");
  4038. u8AutoTimeShift = APP_PVR_TIMESHIFT_OFF;
  4039. }
  4040. }
  4041. #endif
  4042. if ((g_u8BGTimeshiftStart > 0)
  4043. && (APP_PVR_TIMESHIFT_AUTO == u8AutoTimeShift)
  4044. && (u8MidRecState == MID_REC_STATUS_STOP)
  4045. )
  4046. {
  4047. if (--g_u8BGTimeshiftStart == 0)
  4048. {
  4049. if ((MID_RecorderGetDefaultPartition(&I32DefPartition) != MID_REC_FS_OK)
  4050. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  4051. {
  4052. g_u8BGTimeshiftStart = PVR_BGTIMESHIFT_START_INTERVAL;
  4053. }
  4054. else
  4055. {
  4056. UINT8 u8ProgLockState = FALSE;
  4057. u8ProgLockState = APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL);
  4058. if ((u8ProgLockState == MID_PLAYBK_PROG_STATE_LOCKED)
  4059. || (MID_TSPLParser_GetThreadState() == TRUE)
  4060. || (DVBApp_CheckServiceNotAvailable() == TRUE)
  4061. )
  4062. {
  4063. g_u8BGTimeshiftStart = PVR_BGTIMESHIFT_START_INTERVAL;
  4064. }
  4065. else
  4066. {
  4067. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  4068. {
  4069. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  4070. }
  4071. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  4072. {
  4073. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO);
  4074. }
  4075. PVR_DEBF("[%s: %d] ============start BG timeshift!!! \n", __FUNCTION__, __LINE__);
  4076. //DVBApp_ResetPopup_Channel();
  4077. if (DVBApp_StartRecord(MID_REC_MODE_AUTO) == SP_ERR_FAILURE)
  4078. {
  4079. g_u8BGTimeshiftStart = PVR_BGTIMESHIFT_START_INTERVAL;
  4080. }
  4081. }
  4082. }
  4083. }
  4084. }
  4085. if (u8MidRecState != MID_REC_STATUS_STOP)
  4086. {
  4087. int iFocusedIndex;
  4088. AL_RecHandle_t hRecProg;
  4089. AL_RecHandle_t hCurProg;
  4090. AL_DB_EDBType_t DBType = AL_DBTYPE_MAX;
  4091. UINT8 u8MIDRecMode;
  4092. APP_Database_GetCurrentDBType(APP_SOURCE_DTV, &DBType);
  4093. hCurProg = APP_DVB_Playback_GetCurrentProgHandle(DBType, AL_RECTYPE_DVBTV | AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA);
  4094. hRecProg = MID_RecorderGetProgHandle();
  4095. u8MIDRecMode = MID_Recorder_GetRecMode();
  4096. if ((hCurProg != hRecProg || (APP_IsScan_Running()== TRUE))&& ( MID_RecorderIsCurRecording() == DRV_SUCCESS))
  4097. {
  4098. PVR_DEBF("\n\n\n[%s: %d]============== program/TS change!!\n\n\n", __FUNCTION__, __LINE__);
  4099. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  4100. {
  4101. DVBApp_StopRecord();
  4102. }
  4103. else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode) ||
  4104. (MID_REC_MODE_AUTO == u8MIDRecMode))
  4105. {
  4106. DVBApp_StopTimeshift(FALSE);
  4107. if (APP_PVR_TIMESHIFT_AUTO == u8AutoTimeShift)
  4108. {
  4109. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  4110. }
  4111. }
  4112. return;
  4113. }
  4114. // deal with PAUSE/REC/TIMESHIFT menu flow
  4115. if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex)
  4116. || DVBApp_CheakFocusPopOnlyForRECicon()) //reshow PVR menu
  4117. {
  4118. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  4119. {
  4120. return;
  4121. }
  4122. if (MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode)
  4123. {
  4124. if ((u8MidRecState == MID_REC_STATUS_PAUSE) &&
  4125. (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)))
  4126. {
  4127. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  4128. }
  4129. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  4130. {
  4131. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  4132. {
  4133. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  4134. }
  4135. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, 0);
  4136. }
  4137. else if ((APP_GUIOBJ_DVB_PvrPlayInfo_ExitTimeMenu() == FALSE)
  4138. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO)))
  4139. {
  4140. APP_GUIOBJ_DVB_PvrPlayInfo_CreatTimemenu();
  4141. }
  4142. }
  4143. else if ((MID_REC_MODE_AUTO == u8MIDRecMode) &&
  4144. (PVR_STATE_STOP != APP_GUIOBJ_DVB_PvrPlayInfo_GetRecState()))
  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_MANUAL == u8MIDRecMode) &&
  4166. (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) &&
  4167. (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)))
  4168. {
  4169. if (u8MidRecState == MID_REC_STATUS_START)
  4170. {
  4171. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, 0);
  4172. #ifdef SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD
  4173. if((DVBAPP_Pvr_GetRECPlayFlag())
  4174. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  4175. {
  4176. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERNORMAL);
  4177. }
  4178. #endif
  4179. }
  4180. else if (u8MidRecState == MID_REC_STATUS_PAUSE)
  4181. {
  4182. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  4183. #ifdef SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD
  4184. if((DVBAPP_Pvr_GetRECPlayFlag())
  4185. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  4186. {
  4187. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERNORMAL);
  4188. }
  4189. #endif
  4190. }
  4191. }
  4192. }
  4193. if ((MID_REC_STATUS_PAUSE == u8MidRecState)
  4194. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)))//show pause menu
  4195. {
  4196. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  4197. {
  4198. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC);
  4199. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  4200. }
  4201. else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  4202. {
  4203. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  4204. }
  4205. else if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex)
  4206. || DVBApp_CheakFocusPopOnlyForRECicon())
  4207. {
  4208. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  4209. }
  4210. }
  4211. else if (MID_REC_STATUS_START == u8MidRecState) //hide pause menu
  4212. {
  4213. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE))
  4214. {
  4215. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE);
  4216. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  4217. {
  4218. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, 0);
  4219. #ifdef SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD
  4220. if((DVBAPP_Pvr_GetRECPlayFlag())
  4221. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  4222. {
  4223. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERNORMAL);
  4224. }
  4225. #endif
  4226. }
  4227. }
  4228. }
  4229. }
  4230. else //rec stop, destroy all pvr menu
  4231. {
  4232. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  4233. {
  4234. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC);
  4235. }
  4236. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE))
  4237. {
  4238. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE);
  4239. }
  4240. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  4241. {
  4242. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  4243. }
  4244. }
  4245. }
  4246. #ifdef SUPPORT_PVR_REMINDER_CONFIRM_SPEC
  4247. static void _DVBApp_StopRECForTimerConfirmDone(UINT32 dParam)
  4248. {
  4249. AL_DB_EDBType_t DBType_ret = AL_DBTYPE_DVB_T;
  4250. AL_DB_EDBType_t DBType_Current = AL_DBTYPE_DVB_T;
  4251. AL_DB_ERecordType_t RecType = AL_RECTYPE_DVBTV;
  4252. AL_RecHandle_t CurrentProgHandle;
  4253. al_uint32 u32CurrentTime = 0;
  4254. UINT8 u8MIDRecMode = MID_Recorder_GetRecMode();
  4255. /* get timer program */
  4256. AL_DB_GetRecordType(g_stDetails.rem_details.handle, &DBType_ret, &RecType);
  4257. /* get current program handele */
  4258. AL_Setting_Reload(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL);
  4259. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  4260. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  4261. if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_C)
  4262. {
  4263. DBType_Current = AL_DBTYPE_DVB_C;
  4264. }
  4265. else if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_T)
  4266. {
  4267. DBType_Current = AL_DBTYPE_DVB_T;
  4268. }
  4269. else if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_S)
  4270. {
  4271. DBType_Current = AL_DBTYPE_DVB_S;
  4272. }
  4273. CurrentProgHandle = APP_DVB_Playback_GetCurrentProgHandle(DBType_Current, AL_RECTYPE_DVBTV | AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA);
  4274. if ((dParam == POPMSG_CONFIRM_STOP_REC_FOR_TIMER_REC)
  4275. ||(dParam == POPMSG_CONFIRM_STOP_TSHIFT_FOR_TIMER_REC))
  4276. {
  4277. AL_Time_GetCurTimeInSecs(&u32CurrentTime);
  4278. dvb_printf("================ current time %d\n",u32CurrentTime);
  4279. dvb_printf("================ rec end time %d\n", g_stDetails.rem_details.event_end_time_insec);
  4280. if (u32CurrentTime >
  4281. (g_stDetails.rem_details.event_end_time_insec-10))
  4282. {
  4283. /* if the left time is less than 10Sec. not to respond the confirm */
  4284. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMER_OUT_OF_DATE);
  4285. return;
  4286. }
  4287. }
  4288. /* zap prog */
  4289. if (g_stDetails.rem_details.handle != CurrentProgHandle)
  4290. {
  4291. PVR_DEBF("handle ==== %d\n", g_stDetails.rem_details.handle);
  4292. PVR_DEBF(" CurrentProgHandle ==== %d\n", CurrentProgHandle);
  4293. g_ProgHandleB4Rec = g_stDetails.rem_details.handle;
  4294. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  4295. {
  4296. if (u8MIDRecMode == MID_REC_MODE_MANUAL)
  4297. DVBApp_StopRecord();
  4298. else
  4299. DVBApp_StopTimeshift(TRUE);
  4300. }
  4301. _DVBApp_CloseAllMenu();
  4302. #if defined(CONFIG_DVB_SYSTEM) || defined(CONFIG_AUS_DVB_SYSTEM)
  4303. APP_RFType_en eRFType = APP_RF_TYPE_DVB_T;
  4304. if (DBType_Current != g_stDetails.db_type)
  4305. {
  4306. if (g_stDetails.db_type == AL_DBTYPE_DVB_T)
  4307. {
  4308. eRFType = APP_RF_TYPE_DVB_T;
  4309. }
  4310. else if (g_stDetails.db_type == AL_DBTYPE_DVB_C)
  4311. {
  4312. eRFType = APP_RF_TYPE_DVB_C;
  4313. }
  4314. else if (g_stDetails.db_type == AL_DBTYPE_DVB_S)
  4315. {
  4316. eRFType = APP_RF_TYPE_DVB_S;
  4317. }
  4318. APP_GUIOBJ_Channel_SetRFTypeWithHdl(eRFType,
  4319. g_stDetails.rem_details.handle);
  4320. }
  4321. else
  4322. #endif
  4323. {
  4324. _DVBApp_Zapping(RecType, g_stDetails.rem_details.handle, FALSE, 0, TRUE);
  4325. }
  4326. }
  4327. if (g_stDetails.rem_type == AL_PR_EVT_REM)
  4328. {
  4329. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  4330. {
  4331. if (u8MIDRecMode == MID_REC_MODE_MANUAL)
  4332. DVBApp_StopRecord();
  4333. else
  4334. DVBApp_StopTimeshift(TRUE);
  4335. }
  4336. DVBApp_ResetPopup_Channel();
  4337. _DVBApp_CloseAllMenu();
  4338. _APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurTime();
  4339. if (DVBApp_StartRecord(MID_REC_MODE_MANUAL) != SP_SUCCESS)
  4340. {
  4341. APP_GUIOBJ_DVB_PvrRec_SetTimerRecord(FALSE);
  4342. DVBApp_SetTVRadioSwap(FALSE);
  4343. g_ProgHandleB4Rec = 0;
  4344. return;
  4345. }
  4346. //APP_GUIOBJ_DVB_PvrRecDurationTime_SetDurTime(g_stDetails.rem_details.event_end_time_insec);
  4347. }
  4348. if ((dParam == POPMSG_CONFIRM_STOP_REC_FOR_REMINDER)
  4349. ||(dParam == POPMSG_CONFIRM_STOP_TSHIFT_FOR_REMINDER))
  4350. {
  4351. DVBApp_SetTVRadioSwap(FALSE);
  4352. g_ProgHandleB4Rec = 0;
  4353. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  4354. if(APP_WAKEUP_GetBootFlag() == TRUE)
  4355. {
  4356. APP_WAKEUP_RealPowerUp();
  4357. }
  4358. #endif
  4359. }
  4360. }
  4361. #endif
  4362. #endif
  4363. #ifdef TEAC_BLUE_KEY_FUNCTION
  4364. APP_Panel_PowerSequenceType_e _DVB_GetPanelControlType(void)
  4365. {
  4366. return g_eAppPanelOnOff;
  4367. }
  4368. void _DVB_SetPanelControlType(APP_Panel_PowerSequenceType_e eType)
  4369. {
  4370. g_eAppPanelOnOff = eType;
  4371. }
  4372. #endif
  4373. static INT32 _DVBApp_OnCreate(void **ppPrivateData)
  4374. {
  4375. dvb_printf(" %s is called.\n", __FUNCTION__);
  4376. _DVBApp_DTV_main_program(NULL);
  4377. DvbPrivateData_t *pDvbPrivateData = (DvbPrivateData_t *) GL_MemAlloc(sizeof(DvbPrivateData_t));
  4378. memset(pDvbPrivateData, 0x00, sizeof(DvbPrivateData_t));
  4379. pDvbPrivateData->dUserData = 0;
  4380. (*ppPrivateData) = (void *)pDvbPrivateData;
  4381. stDvbInst.bAppState = SYSTEM_IDLE;
  4382. return 0;
  4383. }
  4384. static INT32 _DVBApp_OnDestroy(void **ppPrivateData)
  4385. {
  4386. dvb_printf(" %s is called.\n", __FUNCTION__);
  4387. SYSAPP_GOBJ_FinalizeGUIObject(SYS_APP_DVB);
  4388. GL_MemFree((*ppPrivateData));
  4389. (*ppPrivateData) = NULL;
  4390. return 0;
  4391. }
  4392. static INT32 _DVBApp_OnRun(void *pPrivateData, UINT32 dParam)
  4393. {
  4394. dvb_printf(" %s is called.\n", __FUNCTION__);
  4395. #if 0 //set ttx codepage when open create ttx.
  4396. UINT32 u32DTVTTXZone = 0;
  4397. #endif
  4398. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SYSINFO, 0,
  4399. sizeof(APP_SETTING_SystemInfo_t), &(g_stSysInfoData));
  4400. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  4401. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  4402. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_TVINFO, 0,
  4403. sizeof(APP_SETTING_TVInfo_t), &(g_stTVInfoData));
  4404. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, 0,
  4405. sizeof(APP_SETTING_Variational_t), &(g_stVariationalData));
  4406. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_MULTIMEDIA, 0,
  4407. sizeof(APP_SETTING_Multimedia_t), &(g_stMultiMediaData));
  4408. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0,
  4409. sizeof(APP_SETTING_Setup_t), &(g_stSetupData));
  4410. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  4411. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  4412. stDvbInst.bAppState = SYSTEM_RUNNING;
  4413. dvb_printf(" Dvbt state is %d.\n", stDvbInst.bAppState);
  4414. if (dParam == 0)
  4415. {
  4416. #ifdef SHOW_LOGO_NOSIGNAL
  4417. // init show logo
  4418. #ifdef JPEG_LOGO
  4419. LOGO_Init();
  4420. extern char *pu32LMA;
  4421. extern unsigned int pu32LMASize;
  4422. LOGO_SetParam((const UINT8 *)pu32LMA, pu32LMASize);
  4423. //LOGO_SetShowPicLogoPlane(Logo_VPP_PLANE);
  4424. //LOGO_StartUp_Pic_Show_AlignOrigin(gpAL_PanelDisplayDesc->Size.wHorSize, gpAL_PanelDisplayDesc->Size.wVerSize);
  4425. #else
  4426. extern const unsigned char DVDTitle[];
  4427. extern const int DVDTitleSize;
  4428. LOGO_Init();
  4429. LOGO_SetParam(DVDTitle, DVDTitleSize);
  4430. #endif
  4431. #else
  4432. //mute screen to black or user define color
  4433. #endif
  4434. }
  4435. APP_GUIOBJ_PopMs_SetCloseFun(DVBApp_ClosePopup);
  4436. APP_GuiMgr_Set_Menu() ;
  4437. APP_GuiMgr_SwitchShareMenu(SYS_APP_DVB);
  4438. // AUDIF_Set_OutputMode(OUT_RFModeK3, 0);
  4439. // AUDIF_Set_OutputMode(OUT_CustomModeB_DigitalDialnormK1, 0x6464);
  4440. #ifdef SUPPORT_CONAX_CAS
  4441. //DVB_Conax_Init();
  4442. CONAX_MMI_CallbackInit();
  4443. #endif
  4444. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  4445. APP_DVB_GLOBAL_EVENT_DVB_ONRUN | PASS_TO_SYSAPP,TRUE);
  4446. dvb_printf(" %s is exit., time: %d\n", __FUNCTION__,GL_GetRtc32());
  4447. return 0;
  4448. }
  4449. static INT32 _DVBApp_OnTerminate(void *pPrivateData, UINT32 dParam)
  4450. {
  4451. dvb_printf(" %s is called., time: %d\n", __FUNCTION__,GL_GetRtc32());
  4452. #ifdef CONFIG_CI_SUPPORT
  4453. g_Audio_Scramble_Counter = 0;
  4454. g_VIP_FINISH_Flg = FALSE;
  4455. #endif
  4456. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_ALL);
  4457. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  4458. {
  4459. #ifdef Subtitle_Freeze
  4460. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE))
  4461. {
  4462. AL_Subtitle_SetFreeze(FALSE);
  4463. }
  4464. #endif
  4465. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  4466. }
  4467. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MUTE))
  4468. {
  4469. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_MUTE);
  4470. }
  4471. SYSAPP_GOBJ_FinalizeGUIObject(SYS_APP_DVB);
  4472. g_u32OldPopup = PLAYBACK_POPUP_NONE;
  4473. APP_GuiMgr_UnInitDvbOSD2();
  4474. stDvbInst.bAppState = SYSTEM_IDLE;
  4475. dvb_printf(" %s is exit., time: %d\n", __FUNCTION__,GL_GetRtc32());
  4476. return 0;
  4477. }
  4478. static void _DVBApp_Process_Unmute(void)
  4479. {
  4480. UINT8 RegionIdx = 0;
  4481. ColorLUT_t stColorLUTValue;
  4482. APP_Source_Type_t eSourType = APP_SOURCE_MAX;
  4483. APP_StorageSource_Type_t eStorageSourType = APP_STORAGE_SOURCE_MAX;
  4484. if ((g_bMidHasUnmute == TRUE) && (bSetUnMuteFlag == TRUE))
  4485. {
  4486. if (g_SetPQFlag == FALSE)
  4487. {
  4488. g_SetPQFlag = TRUE;
  4489. /*set PQ param*/
  4490. AL_FLASH_GetColorLUTALL(&stColorLUTValue);
  4491. for(RegionIdx = 0; RegionIdx<APP_ColorLUT_NUM; RegionIdx++)
  4492. {
  4493. MID_TVFE_SetColorLUT7Range(RegionIdx,APP_Video_GetColorLUTSetting(LUT_FUN_MAKE,RegionIdx),
  4494. stColorLUTValue.n_PicMode_CoLUT_HueMin[RegionIdx],
  4495. stColorLUTValue.n_PicMode_CoLUT_HueMax[RegionIdx],
  4496. stColorLUTValue.n_PicMode_CoLUT_SatMin[RegionIdx],
  4497. stColorLUTValue.n_PicMode_CoLUT_SatMax[RegionIdx],
  4498. stColorLUTValue.n_PicMode_CoLUT_YMin[RegionIdx],
  4499. stColorLUTValue.n_PicMode_CoLUT_YMax[RegionIdx],
  4500. stColorLUTValue.n_PicMode_CoLUT_SmoothLevel[RegionIdx],
  4501. FALSE);
  4502. MID_TVFE_SetColorLUT7Axis(RegionIdx,
  4503. stColorLUTValue.n_PicMode_CoLUT_Enable[RegionIdx],
  4504. stColorLUTValue.n_PicMode_CoLUT_HueGain[RegionIdx],
  4505. stColorLUTValue.n_PicMode_CoLUT_SatGain[RegionIdx],
  4506. stColorLUTValue.n_PicMode_CoLUT_YGain[RegionIdx],
  4507. RegionIdx==(APP_ColorLUT_NUM - 1)? TRUE : FALSE);
  4508. }
  4509. // Dynamic contrast
  4510. DynamicContrast_t stDynamic;
  4511. AL_FLASH_GetDynamicContrastALL(&stDynamic);
  4512. int nLevel = stDynamic.n_PicMode_DynCon_DynamicContrastlevel;
  4513. MID_TVFE_SetPictureDynamicContrastEnable( nLevel ? 1 : 0);
  4514. MID_TVFE_SetPictureContrastLevel( stDynamic.n_PicMode_DynCon_ContrastLevel[nLevel] );
  4515. MID_TVFE_SetPictureChromaLevel( stDynamic.n_PicMode_DynCon_ChromaLevel[nLevel] );
  4516. MID_TVFE_SetPictureAlphaMode1( stDynamic.n_PicMode_DynCon_Alphamode1[nLevel] );
  4517. MID_TVFE_SetPictureAlphaMode2( stDynamic.n_PicMode_DynCon_Alphamode2[nLevel] );
  4518. MID_TVFE_SetPictureAlphaMode3( stDynamic.n_PicMode_DynCon_Alphamode3[nLevel] );
  4519. MID_TVFE_SetPictureAlphaMode4( stDynamic.n_PicMode_DynCon_Alphamode4[nLevel] );
  4520. MID_TVFE_SetPictureFleshToneLevel( stDynamic.n_PicMode_DynCon_FleshToneLevel );
  4521. APP_GUIOBJ_Source_GetCurrSource(&eSourType);
  4522. eStorageSourType = APP_Data_UserSetting_SourceTypeMappingToStorage(eSourType);
  4523. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0,
  4524. sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  4525. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PQSETTING, 0,
  4526. sizeof(APP_SETTING_PqSetting_t), &(g_stPqSettingData));
  4527. APP_Video_SetPictureMode(
  4528. g_stPqSettingData.stPictureModeSourceTab[eStorageSourType].PictureModeIndex);
  4529. APP_Video_OSD_PQSet(APP_VIDEO_OSD_ITEM_COLORTEMP, g_stPqSettingData.stPictureModeSourceTab[eStorageSourType].ColorTempIndex);
  4530. APP_Video_OSD_PQSet(APP_VIDEO_OSD_ITEM_NR, g_stPictureData.NR);
  4531. }
  4532. DVBApp_CheckProgramType(TRUE);
  4533. bSetUnMuteFlag = FALSE;
  4534. }
  4535. }
  4536. static INT32 _DVBApp_OnTimerUpdate(void *pPrivateData)
  4537. {
  4538. UINT32 NoSignalTimer;
  4539. INT32 dFocusedIndex;
  4540. al_uint8 bMonitorState = al_false;
  4541. al_uint8 bSignalState = al_false;
  4542. APP_Source_Type_t eSourType = APP_SOURCE_MAX;
  4543. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  4544. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  4545. al_bool bHasValidServ = AL_DB_HasVisibleService(eNetType);
  4546. /*Delay the mute key sending to AMP*/
  4547. if((0 <= g_u32Mutekeydelaytime) && (g_u32Mutekeydelaytime < MUTE_KEY_INTERVAL))
  4548. {
  4549. g_u32Mutekeydelaytime++;
  4550. g_u32MuteIconHandle++;
  4551. }
  4552. /*Set timer to source translate state
  4553. avoid dvb app not received onrun message result in not clear the falg*/
  4554. if (APP_GUIOBJ_Source_GetSourceTransState())
  4555. {
  4556. g_u8SourceTrastTimer++;
  4557. if (g_u8SourceTrastTimer >= 3)//3*100ms
  4558. {
  4559. APP_GUIOBJ_Source_SetSourceTransState(FALSE);
  4560. g_u8SourceTrastTimer = 0;
  4561. }
  4562. }
  4563. /*Set timer to clear zapping state
  4564. avoid dvb app not received tuner locke or tuner unlock message result in not clear the flag*/
  4565. if (APP_GUIOBJ_DVB_Playback_GetZappingState())
  4566. {
  4567. g_u8ZappingTimer++;
  4568. if (g_u8ZappingTimer >= 2)//3*100ms
  4569. {
  4570. APP_GUIOBJ_DVB_Playback_SetZappingState(FALSE);
  4571. g_u8ZappingTimer = 0;
  4572. }
  4573. }
  4574. //Polling DSP to detect audio channel num change.
  4575. g_AdioChnPolTime++;
  4576. if (g_AdioChnPolTime >= 10)//10*100ms = 1s
  4577. {
  4578. APP_Audio_PollingAudioChnannelNum();
  4579. g_AdioChnPolTime = 0;
  4580. }
  4581. #ifdef CONFIG_SUPPORT_ESTICKER_INFILE
  4582. UINT32 dIndex=SYS_APP_DVB;
  4583. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0,
  4584. sizeof(APP_SETTING_Setup_t), &(g_stSetupData));
  4585. SYSAPP_GOBJ_GetFocusedGUIObject(dIndex, &dFocusedIndex);
  4586. /* if (((SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(dIndex, &dFocusedIndex))
  4587. ||(!APP_MenuMgr_Exist_Main_Menu()))
  4588. &&(g_stFeatureData.StoreMode == APP_SWITCH_ON/ *StoreMode ==g_stSetupData.HomeMode.Type* /))*/
  4589. if(g_stSetupData.StoreMode == APP_SWITCH_ON)
  4590. {
  4591. #ifdef CONFIG_SUPPORT_PVR
  4592. if( (SYSAPP_GOBJ_GUIObjectExist(dIndex, DVB_GUIOBJ_PVR_TIMESHIFT))
  4593. || (SYSAPP_GOBJ_GUIObjectExist(dIndex, DVB_GUIOBJ_PARTITIONLIST))
  4594. || (SYSAPP_GOBJ_GUIObjectExist(dIndex, DVB_GUIOBJ_TIMERLIST))
  4595. || (SYSAPP_GOBJ_GUIObjectExist(dIndex, DVB_GUIOBJ_RECORDLIST))
  4596. || (SYSAPP_GOBJ_GUIObjectExist(dIndex, DVB_GUIOBJ_PVR_RECDURATIONTIME))
  4597. || (SYSAPP_GOBJ_GUIObjectExist(dIndex, DVB_GUIOBJ_PVRREC_INFO))
  4598. || (SYSAPP_GOBJ_GUIObjectExist(dIndex, DVB_GUIOBJ_TIMEREDIT))
  4599. || (SYSAPP_GOBJ_GUIObjectExist(dIndex, DVB_GUIOBJ_REMINDEREDIT))
  4600. || (SYSAPP_GOBJ_GUIObjectExist(dIndex, DVB_GUIOBJ_PVR_REC))
  4601. || (SYSAPP_GOBJ_GUIObjectExist(dIndex, DVB_GUIOBJ_PVRPOWER))
  4602. || (SYSAPP_GOBJ_GUIObjectExist(dIndex, DVB_GUIOBJ_PVR_MULTIAUD)))
  4603. {
  4604. g_u32StoreModeOpenTimer = 0;
  4605. }
  4606. else
  4607. #endif
  4608. {
  4609. if(!SYSAPP_GOBJ_GUIObjectExist(dIndex, APP_GUIOBJ_ESTICKER))
  4610. {
  4611. g_u32StoreModeOpenTimer++;
  4612. if(g_u32StoreModeOpenTimer >= STOREMODE_TIMEGAP*10)
  4613. {
  4614. if(DVB_GUIOBJ_POPMSG == dFocusedIndex)
  4615. {
  4616. DVBApp_ResetPopup_Channel();
  4617. }
  4618. //printf("[Gordon] g_stSetupData.HomeMode.Type=%d g_u32StoreModeOpenTimer=%d \n ",g_stSetupData.HomeMode.Type,g_u32StoreModeOpenTimer);
  4619. SYSAPP_GOBJ_CreateGUIObject_WithPara(dIndex, APP_GUIOBJ_ESTICKER, 0);
  4620. g_u32StoreModeOpenTimer = 0;
  4621. }
  4622. }
  4623. else
  4624. {
  4625. g_u32StoreModeOpenTimer = 0;
  4626. }
  4627. }
  4628. }
  4629. else
  4630. {
  4631. /*
  4632. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ESTICKER))
  4633. {
  4634. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ESTICKER);
  4635. }*/
  4636. g_u32StoreModeOpenTimer = 0;
  4637. }
  4638. #endif
  4639. #ifdef CONFIG_CI_SUPPORT
  4640. if (g_Audio_Scramble_Counter>0)
  4641. {
  4642. if (g_VIP_FINISH_Flg)//Mean video has been descramble.
  4643. {
  4644. g_VIP_FINISH_Flg = 0;
  4645. g_Audio_Scramble_Counter = 0;
  4646. }
  4647. else
  4648. {
  4649. g_Audio_Scramble_Counter--;
  4650. if (g_Audio_Scramble_Counter==0)
  4651. {
  4652. g_bNoSteamData = FALSE;
  4653. {
  4654. #ifdef CONFIG_SUPPORT_TTX
  4655. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  4656. {
  4657. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  4658. }
  4659. #endif
  4660. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_ALL);
  4661. }
  4662. #ifdef CONFIG_SUPPORT_PVR
  4663. UINT8 u8MidRecState;
  4664. u8MidRecState = MID_RecorderState();
  4665. if (u8MidRecState == MID_REC_STATUS_START)
  4666. {
  4667. MID_RecorderPauseResume();
  4668. }
  4669. _DVBApp_Recorder_PauseResume();
  4670. #endif
  4671. g_bScrambleFlag = PROG_STATUS_ONLY_VIDEO_SCRAMBLED;
  4672. DVBApp_CheckProgramType(TRUE);
  4673. }
  4674. }
  4675. }
  4676. else
  4677. {
  4678. if (g_VIP_FINISH_Flg==TRUE)
  4679. {
  4680. g_VIP_FINISH_Flg = 0;
  4681. }
  4682. }
  4683. #endif
  4684. #if defined(CELLO_cello) && defined(SUPPORT_HOMEMODE)
  4685. /*Cello spec: Home Mode Open*/
  4686. if(APP_GUIOBJ_AutoInstall_GetOpenHomeModeFlag())
  4687. {
  4688. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  4689. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  4690. if((g_stUserInfoData.AutoInstalledHomeMode)
  4691. &&(!g_stUserInfoData.AutoInstalled))
  4692. {
  4693. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  4694. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE))
  4695. #endif
  4696. {
  4697. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_GLOBAL_EVENT_OPEN_HOMEMODE|PASS_TO_SYSAPP, 0);
  4698. }
  4699. }
  4700. }
  4701. #endif
  4702. APP_GUIOBJ_Source_GetCurrSource(&eSourType);
  4703. if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &dFocusedIndex))
  4704. {
  4705. _DVBApp_CheckPopupDisplay();
  4706. }
  4707. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_MONITOR, &bMonitorState);
  4708. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  4709. AL_RecHandle_t hTempHdl = AL_DB_INVALIDHDL;
  4710. MID_PlaybackGetCurProgHandle(al_null, &hTempHdl);
  4711. if (!bHasValidServ && (hTempHdl == AL_DB_INVALIDHDL))
  4712. {
  4713. g_bTempSerFlag = FALSE;
  4714. if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &dFocusedIndex))
  4715. {
  4716. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0,
  4717. sizeof(APP_SETTING_FactoryUser_t), &(g_stFactoryUserData));
  4718. if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_DATABASE_EMPTY) && !g_stFactoryUserData.n_FactSet_BurningMode)
  4719. {
  4720. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  4721. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  4722. DVBApp_ResetPopup_Channel();
  4723. _DVBApp_ShowPopup(DVB_APP_POP_MSG_DATABASE_EMPTY);
  4724. DVBApp_CheckProgramType(FALSE);
  4725. }
  4726. }
  4727. #ifdef CONFIG_SUPPORT_PVR
  4728. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  4729. #endif
  4730. {
  4731. return 0;
  4732. }
  4733. }
  4734. else if (bMonitorState == al_true)
  4735. {
  4736. if (bSignalState == AL_DVB_MONITOR_VALUE_FALSE)
  4737. {
  4738. g_bTempSerFlag = FALSE;
  4739. if(!(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO))||
  4740. !(APP_MenuMgr_Exist_Factory_Menu()))
  4741. {
  4742. g_u32NoSignalTimer ++;
  4743. g_u32NoSignalSleepTimer ++;
  4744. }
  4745. #ifdef CONFIG_SUPPORT_PVR
  4746. if(MID_TSPLParser_GetThreadState() == TRUE)
  4747. {
  4748. g_u32NoSignalSleepTimer = 0;
  4749. }
  4750. #endif
  4751. /*2.1.10 Input factory auto test mode close no signal standby function*/
  4752. #ifdef SUPPORT_FACTORY_AUTO_TEST
  4753. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  4754. {
  4755. g_u32NoSignalTimer = 0;
  4756. g_u32NoSignalSleepTimer = 0;
  4757. }
  4758. #endif
  4759. if (g_u32NoSignalSleepTimer == DVB_10_MINUTES)
  4760. {
  4761. g_u32NoSignalSleepTimer = 0;
  4762. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO) && (APP_GUIOBJ_SleepTimer_GetStandbyPopConflict() == FALSE))
  4763. {
  4764. APP_GUIOBJ_SleepTimer_SetStandbyPopConflict(TRUE);
  4765. }
  4766. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  4767. (APP_GLOBAL_EVENT_SLEEP_TIMER_INFO | PASS_TO_SYSAPP), APP_POWERDOWN_NO_SINGAL);
  4768. }
  4769. if (APP_RF_TYPE_DVB_S == g_stChannelData.TV_Connection)
  4770. {
  4771. NoSignalTimer = 45;
  4772. }
  4773. else
  4774. {
  4775. NoSignalTimer = 15;
  4776. }
  4777. if (g_u32NoSignalTimer >= NoSignalTimer)//15*100ms
  4778. {
  4779. if ((eSourType == APP_SOURCE_DTV)
  4780. || (eSourType == APP_SOURCE_RADIO))
  4781. {
  4782. #ifdef CONFIG_SUPPORT_PVR //if playing timeshift file not to mute video
  4783. UINT32 u32PEState = MID_TSPL_MODE_STOP;
  4784. if (MID_TSPLParser_GetPlayState(&u32PEState, NULL) == DRV_SUCCESS)
  4785. {
  4786. if (MID_TSPL_MODE_STOP == u32PEState)
  4787. {
  4788. if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL) && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE))
  4789. {
  4790. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  4791. APP_DVB_GLOBAL_EVENT_NO_SIGNAL, 0);
  4792. }
  4793. }
  4794. }
  4795. else
  4796. #endif
  4797. if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL))
  4798. {
  4799. #ifdef CONFIG_SUPPORT_PVR
  4800. if (MID_RecorderState() != MID_REC_STATUS_STOP)
  4801. {
  4802. PopmsgType_t eType = POPMSG_TYPE_NONE;
  4803. APP_GUIOBJ_PopMsg_GetMsgType(&eType);
  4804. if (eType != POPMSG_TYPE_CONFIRM)
  4805. {//not to send no signal event to clear comfirm type popmsg
  4806. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  4807. APP_DVB_GLOBAL_EVENT_NO_SIGNAL, 0);
  4808. }
  4809. }
  4810. else
  4811. #endif
  4812. {
  4813. if(!(DVBApp_IsPopupExist(PLAYBACK_POPUP_PWD_LOCKED)))
  4814. {
  4815. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  4816. {
  4817. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  4818. APP_DVB_GLOBAL_EVENT_NO_SIGNAL, 0);
  4819. }
  4820. }
  4821. }
  4822. }
  4823. }
  4824. }
  4825. }
  4826. else
  4827. {
  4828. g_u32NoSignalTimer = 0;
  4829. MID_PlaybackProgState_t progstate = MID_PLAYBK_PROG_STATE_NORMAL;
  4830. progstate = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL);
  4831. #ifdef CONFIG_SUPPORT_PVR
  4832. if (g_bNoSteamData == TRUE
  4833. || progstate == MID_PLAYBK_PROG_STATE_TEMP_SERVICE
  4834. || progstate == MID_PLAYBK_PROG_STATE_NOT_RUNNING)
  4835. {
  4836. if ( MID_RecorderState()== MID_REC_STATUS_START )
  4837. {
  4838. if ((MID_TSPLParser_GetThreadState() != TRUE)
  4839. && (APP_GUIOBJ_DVB_PvrPlayInfo_GetTunerState() == FALSE))
  4840. {
  4841. //printf("pause\n\n\n");
  4842. MID_RecorderPauseResume();
  4843. _DVBApp_Recorder_PauseResume();
  4844. }
  4845. }
  4846. }
  4847. if (!(g_bNoSteamData == TRUE
  4848. || progstate == MID_PLAYBK_PROG_STATE_TEMP_SERVICE
  4849. || progstate == MID_PLAYBK_PROG_STATE_NOT_RUNNING) && g_bIsPlaykey == TRUE)
  4850. {
  4851. if ( MID_RecorderState()== MID_REC_STATUS_PAUSE)
  4852. {
  4853. //printf("start \n\n\n");
  4854. MID_RecorderPauseResume();
  4855. _DVBApp_Recorder_PauseResume();
  4856. }
  4857. }
  4858. #endif
  4859. if (DVBApp_CheckServiceNotAvailable() == TRUE)
  4860. {
  4861. //set video and audio mute for temp service
  4862. if (g_bTempSerFlag == FALSE)
  4863. {
  4864. DVBApp_CheckProgramType(FALSE);
  4865. g_bTempSerFlag = TRUE;
  4866. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB);
  4867. }
  4868. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL))
  4869. {
  4870. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  4871. }
  4872. if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &dFocusedIndex))
  4873. {
  4874. #ifdef SUPPORT_DISABLE_H264
  4875. if (progstate == MID_PLAYBK_PROG_STATE_VIDEO_MPEG4)
  4876. {
  4877. if (!DVBApp_IsPopupExist(DVB_APP_POP_MSG_VIDEO_NOT_SUPPORT))
  4878. {
  4879. _DVBApp_ShowPopup(DVB_APP_POP_MSG_VIDEO_NOT_SUPPORT);
  4880. }
  4881. }
  4882. else if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE))
  4883. {
  4884. if(APP_Get_DTVHiddenScanState() != TRUE)
  4885. {
  4886. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SERVICE_NOT_AVAILABLE);
  4887. }
  4888. }
  4889. #else
  4890. if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE))
  4891. {
  4892. if(APP_Get_DTVHiddenScanState() != TRUE)
  4893. {
  4894. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SERVICE_NOT_AVAILABLE);
  4895. }
  4896. }
  4897. #endif
  4898. }
  4899. }
  4900. else
  4901. {
  4902. if (g_bNoSteamData == TRUE
  4903. || progstate == MID_PLAYBK_PROG_STATE_TEMP_SERVICE
  4904. || progstate == MID_PLAYBK_PROG_STATE_NOT_RUNNING)
  4905. {
  4906. AL_DB_EDBType_t eDBType = APP_DVB_Playback_GetCurrentNetType();
  4907. AL_RecHandle_t hCurrPrgHdl = AL_DB_INVALIDHDL;
  4908. MID_PlaybackProgState_t eProgState = MID_PLAYBK_PROG_STATE_NORMAL;
  4909. hCurrPrgHdl = APP_DVB_Playback_GetCurrentProgHandle(eDBType, (AL_RECTYPE_DVBTV |AL_RECTYPE_DVBRADIO));
  4910. if ((hCurrPrgHdl == AL_DB_INVALIDHDL) && (bSignalState != AL_DVB_MONITOR_VALUE_INVAILED))
  4911. {
  4912. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB);
  4913. }
  4914. eProgState = APP_DVB_Playback_GetProgStateByHandle(eDBType, hCurrPrgHdl);
  4915. if ((eProgState != MID_PLAYBK_PROG_STATE_LOCKED) && (bSignalState != AL_DVB_MONITOR_VALUE_INVAILED))
  4916. {
  4917. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB);
  4918. }
  4919. }
  4920. g_bTempSerFlag = FALSE;
  4921. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE))
  4922. {
  4923. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE, UI_EVENT_NULL);
  4924. }
  4925. if (eServiceType == AL_RECTYPE_DVBRADIO)
  4926. {
  4927. if ((!APP_GUIOBJ_DVB_Playback_GetShowLogoState())
  4928. && (progstate == MID_PLAYBK_PROG_STATE_NORMAL)
  4929. #ifdef CONFIG_SUPPORT_PVR
  4930. && !(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  4931. #endif
  4932. )
  4933. {
  4934. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  4935. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  4936. }
  4937. }
  4938. if (SYSTEM_APP_NO_FOCUSED_GUIOBJ != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &dFocusedIndex))
  4939. {
  4940. if (g_u8PopScrambleMsgTimer!=0)
  4941. {
  4942. g_u8PopScrambleMsgTimer = 0;
  4943. }
  4944. }
  4945. if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &dFocusedIndex))
  4946. {
  4947. if (progstate == MID_PLAYBK_PROG_STATE_LOCKED)
  4948. {
  4949. if (!DVBApp_IsPopupExist(DVB_APP_POP_MSG_CHECKPWD)
  4950. #ifdef CONFIG_SUPPORT_PVR
  4951. && (APP_GUIOBJ_DVB_PvrRec_IsShowPopTime(g_stDetails.start_local_time_secs) == FALSE)
  4952. #endif
  4953. )
  4954. {
  4955. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  4956. }
  4957. }
  4958. else if (progstate == MID_PLAYBK_PROG_STATE_AUDIO_VIDEO_SCRAMBLED \
  4959. ||progstate == MID_PLAYBK_PROG_STATE_ONLY_VIDEO_SCRAMBLED \
  4960. || (progstate == MID_PLAYBK_PROG_STATE_ONLY_AUDIO_SCRAMBLED && eServiceType == AL_RECTYPE_DVBRADIO))
  4961. {
  4962. g_u8PopScrambleMsgTimer ++;
  4963. if (!DVBApp_IsPopupExist(DVB_APP_POP_MSG_SCRAMBLE)&&g_u8PopScrambleMsgTimer>8)
  4964. {
  4965. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL))
  4966. {
  4967. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  4968. }
  4969. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL))
  4970. {
  4971. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  4972. }
  4973. printf("\n#####Pop Scramble MSG Menu,F=%s,L=%d g_u8PopScrambleMsgTimer=%d######\n",__FUNCTION__,__LINE__,g_u8PopScrambleMsgTimer);
  4974. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SCRAMBLE);
  4975. g_u8PopScrambleMsgTimer = 0;
  4976. }
  4977. }
  4978. else if ((eServiceType == AL_RECTYPE_DVBRADIO)
  4979. &&(!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL)))
  4980. {
  4981. #ifdef CONFIG_SUPPORT_MHEG5
  4982. Boolean testA;
  4983. Boolean testB;
  4984. Boolean testC;
  4985. Boolean testD;
  4986. testA = !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5);
  4987. testB = (APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED);
  4988. testC = (APP_DVB_Mheg5_GetMheg5DisplayStatus() == FALSE);
  4989. testD = APP_Area_SupportDtg();
  4990. //dvb_printf("a %d, b %d, c %d, d %d\n",testA, testB, testC, testD);
  4991. if (testA || (testB && testC && testD))
  4992. #endif
  4993. {
  4994. if(g_bScrambleFlag != PROG_STATUS_SCRAMBLE_UNKNOW)
  4995. {
  4996. _DVBApp_ShowPopup(DVB_APP_POP_MSG_RADIO_CHANNEL);
  4997. }
  4998. }
  4999. }
  5000. }
  5001. #ifdef CONFIG_SUPPORT_PVR
  5002. else if(((dFocusedIndex == DVB_GUIOBJ_PVR_PLAYINFO) || (dFocusedIndex == DVB_GUIOBJ_PVRREC_INFO))
  5003. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  5004. && (eServiceType == AL_RECTYPE_DVBRADIO))
  5005. {
  5006. #ifdef CONFIG_SUPPORT_MHEG5
  5007. if ((!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  5008. || ((APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED)
  5009. && (APP_DVB_Mheg5_GetMheg5DisplayStatus() == FALSE)
  5010. && (APP_Area_SupportDtg())))
  5011. #endif
  5012. {
  5013. if(g_bScrambleFlag != PROG_STATUS_SCRAMBLE_UNKNOW)
  5014. {
  5015. _DVBApp_ShowPopup(DVB_APP_POP_MSG_RADIO_CHANNEL);
  5016. }
  5017. }
  5018. }
  5019. else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)
  5020. && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG)
  5021. && (progstate == MID_PLAYBK_PROG_STATE_LOCKED)
  5022. && APP_GUIOBJ_DVB_PvrRec_IsShowPopTime(g_stDetails.start_local_time_secs)==FALSE
  5023. )
  5024. {
  5025. if (!DVBApp_IsPopupExist(DVB_APP_POP_MSG_CHECKPWD))
  5026. {
  5027. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  5028. }
  5029. }
  5030. #endif
  5031. #ifdef CONFIG_SUPPORT_MHEG5
  5032. Boolean testA = (APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED);
  5033. Boolean testB = (APP_DVB_Mheg5_GetMheg5DisplayStatus() == TRUE);
  5034. Boolean testC = (APP_Area_SupportDtg());
  5035. Boolean testD = (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL));
  5036. #ifdef CONFIG_SUPPORT_PVR
  5037. Boolean testE = (APP_GUIOBJ_DVB_PvrPlayInfo_GetRecState() == PVR_STATE_STOP);
  5038. Boolean testF = (MID_Recorder_GetRecMode() != MID_REC_MODE_MANUAL);
  5039. #endif
  5040. //dvb_printf("a %d, b %d, c %d, d %d, e %d, f %d\n",testA,testB,testC,testD,testE, testF);
  5041. if (testA
  5042. && testB
  5043. && testC
  5044. && testD
  5045. #ifdef CONFIG_SUPPORT_PVR
  5046. && testE
  5047. && testF
  5048. #endif
  5049. )
  5050. {
  5051. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  5052. }
  5053. #endif
  5054. #ifdef CONFIG_SUPPORT_MHEG5
  5055. if(progstate == MID_PLAYBK_PROG_STATE_TEMP_SERVICE)
  5056. {
  5057. if((APP_Area_SupportDtg())&&(APP_DVB_Mheg5_GetMheg5DisplayStatus() != TRUE))
  5058. {
  5059. if(!DVBApp_IsPopupExist(DVB_APP_POP_MSG_TEMPSERVICE))
  5060. {
  5061. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TEMPSERVICE);
  5062. }
  5063. }
  5064. }
  5065. #endif
  5066. }
  5067. }
  5068. }
  5069. /*Unmute dispose*/
  5070. if (bSetUnMuteFlag)
  5071. {
  5072. if (g_bMidHasUnmute)
  5073. {
  5074. _DVBApp_Process_Unmute();
  5075. }
  5076. else
  5077. {
  5078. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  5079. AL_DB_ERecordType_t RecordType = AL_RECTYPE_DVBTV;
  5080. UINT32 total_prog = 0;
  5081. RecordType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  5082. AL_DB_GetRecordsTotalNum(eNetType, RecordType, &total_prog);
  5083. if (total_prog > 0)
  5084. {
  5085. INT16 i16ProgState = MID_PLAYBK_PROG_STATE_NORMAL;
  5086. i16ProgState = APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL);
  5087. if ((i16ProgState != MID_PLAYBK_PROG_STATE_NORMAL) &&
  5088. (i16ProgState != MID_PLAYBK_PROG_STATE_VIDEO_AVC))
  5089. {
  5090. DVBApp_CheckProgramType(FALSE);
  5091. bSetUnMuteFlag = FALSE;
  5092. }
  5093. }
  5094. }
  5095. }
  5096. #ifdef CONFIG_SUPPORT_MHEG5
  5097. INT32 fStatus = 0;
  5098. Boolean fVideoState = FALSE;
  5099. MHEG5APP_GetMh5Status(&fStatus);
  5100. MHEG5APP_GetMh5VideoStatus(&fVideoState);
  5101. if ((fStatus & MHEG5APP_STATUS_MID_ON) == MHEG5APP_STATUS_MID_ON)
  5102. {
  5103. if (fVideoState == FALSE)
  5104. {
  5105. if (APP_GetPlaybackPauseState() == TRUE)
  5106. {
  5107. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  5108. {
  5109. #ifdef Subtitle_Freeze
  5110. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE))
  5111. {
  5112. AL_Subtitle_SetFreeze(FALSE);
  5113. }
  5114. #endif
  5115. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  5116. }
  5117. MID_PlaybackStreamResume(1);
  5118. APP_SetPlaybackPauseState(FALSE);
  5119. }
  5120. }
  5121. }
  5122. #endif
  5123. #ifdef CONFIG_SUPPORT_PVR
  5124. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  5125. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  5126. #if defined(SUPPORT_HOTEL_MODE_PVR_FUNCTION_CONTROL)
  5127. if((!g_stFactoryHotelData.HotelModeOnOff)||(g_stFactoryHotelData.PVRFunction))
  5128. #elif defined(SUPPORT_PVR_ONOFF)
  5129. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0,
  5130. sizeof(APP_SETTING_Setup_t), &(g_stSetupData));
  5131. if(g_stSetupData.PVROnOff)
  5132. #endif
  5133. {
  5134. _DVBApp_PVR_UpdateState();
  5135. }
  5136. #endif
  5137. #ifdef CONFIG_SUPPORT_SSU_UPGRADE
  5138. unsigned int SsuEchWakeTimer;
  5139. static al_uint32 timer;
  5140. //dvb_printf("autoupgrade_sate %d\n",autoupgrade_sate);
  5141. if (autoupgrade_sate== AU_GetTime)
  5142. {
  5143. al_uint32 CurTimeInSec;
  5144. AL_Time_GetCurTimeInSecs(&CurTimeInSec);
  5145. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  5146. ITEM_OFFSET(APP_SETTING_UserInfo_t, OTAWakeupTime),
  5147. sizeof(g_stUserInfoData.OTAWakeupTime),&SsuEchWakeTimer);
  5148. SsuEchWakeTimer -= CurTimeInSec;
  5149. timer = SsuEchWakeTimer*10;
  5150. if (timer > 0)
  5151. {
  5152. autoupgrade_sate = AU_TimeCom;
  5153. }
  5154. else
  5155. {
  5156. autoupgrade_sate = AU_MAX;
  5157. }
  5158. }
  5159. if (autoupgrade_sate == AU_TimeCom)
  5160. {
  5161. timer--;
  5162. //dvb_printf("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%d\n",timer);
  5163. if (timer <= 0)
  5164. {
  5165. autoupgrade_sate = AU_GoToUpgrade;
  5166. }
  5167. }
  5168. if (autoupgrade_sate == AU_GoToUpgrade)
  5169. {
  5170. //dvb_printf(" go to auto grade\n");
  5171. autoupgrade_sate = AU_MAX;
  5172. UINT16 u16ONID_SSU = 0xffff;
  5173. UINT16 u16TSID_SSU = 0xffff;
  5174. MID_OTA_GetOtaMonThreadData(OTA_DATA_TS_ONID,(UINT8 *)&u16ONID_SSU);
  5175. MID_OTA_GetOtaMonThreadData(OTA_DATA_TS_TSID,(UINT8 *)&u16TSID_SSU);
  5176. if ((u16ONID_SSU == 0xffff && u16TSID_SSU == 0xffff)
  5177. ||(u16ONID_SSU == 0x0 && u16TSID_SSU == 0x0))
  5178. {
  5179. //dvb_printf("[don't find linkage descriptor, so try again]%s %d\n",__FUNCTION__,__LINE__);
  5180. autoupgrade_sate = AU_GoToUpgrade;
  5181. }
  5182. else
  5183. {
  5184. APP_GUIOBJ_DVB_OTAPrompt_StartOTAMon();
  5185. }
  5186. }
  5187. #endif
  5188. #if defined (CONFIG_SUPPORT_TTX ) && defined(CONFIG_SUPPORT_TTX_DISP_FOR_AUS)
  5189. {
  5190. UINT8 ttxtimer = APP_GetTTXTimer();
  5191. if(ttxtimer > 0)
  5192. {
  5193. ttxtimer--;
  5194. APP_SetTTXTimer(ttxtimer);
  5195. if(ttxtimer == 0)//time is 8s
  5196. {
  5197. AL_TTX_Reset();
  5198. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  5199. {
  5200. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  5201. }
  5202. }
  5203. }
  5204. }
  5205. #endif
  5206. return 0;
  5207. }
  5208. #if defined(CONFIG_CIPLUS_SUPPORT) && defined(CONFIG_SUPPORT_MHEG5)
  5209. void DVBApp_ApplyAppMMIDisplay(void)
  5210. {
  5211. APP_SETTING_UserInfo_t stUserInfoData;
  5212. E_APPMMI_SMG eSMG;
  5213. E_APPMMI_SSM eSSM;
  5214. /* Get subtitle setting */
  5215. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  5216. sizeof(APP_SETTING_UserInfo_t), &(stUserInfoData));
  5217. /* Get SSM and SMG */
  5218. eSSM = MID_DTVCI_GetAppMMISSM();
  5219. eSMG = MID_DTVMHEG_GetAppMMISMG();
  5220. if( MID_DTVCI_GetAppMMIStatus() && SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5) )
  5221. {
  5222. dvb_printf("%s AppMMI is 'on' Subtitle is '%s' SSM_%s SMG_%s\n",__FUNCTION__,
  5223. stUserInfoData.Subtitle ? "on":"off",
  5224. eSSM == APPMMI_SSM_NONE ? "NONE/2":
  5225. eSSM == APPMMI_SSM_0 ? "0":"1",
  5226. eSMG == APPMMI_SMG_NONE ? "NONE" :
  5227. eSMG == APPMMI_SMG_TRUE ? "TRUE" : "FALSE"
  5228. );
  5229. if( eSSM == APPMMI_SSM_0 )
  5230. {
  5231. dvb_printf("subtitle osd off\n");
  5232. mid_sub_dtv_show(0);
  5233. dvb_printf("mheg osd on\n");
  5234. MHEG5OSD_DisplayEnable(TRUE);
  5235. }
  5236. else if( eSSM == APPMMI_SSM_1 )
  5237. {
  5238. if( stUserInfoData.Subtitle )
  5239. {
  5240. dvb_printf("mheg off\n");
  5241. DVBApp_DataApplicationSwitch(
  5242. OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_MH5);
  5243. dvb_printf("subtitle on\n");
  5244. DVBApp_DataApplicationSwitch(
  5245. OSD2CTRLMDL_ENABLE|OSD2CTRLMDL_SUB);
  5246. }
  5247. }
  5248. else // eSSM is APPMMI_SSM_2 or APPMMI_SSM_NONE
  5249. {
  5250. if( eSMG == APPMMI_SMG_TRUE )
  5251. {
  5252. if( stUserInfoData.Subtitle )
  5253. {
  5254. dvb_printf("mheg osd off\n");
  5255. MHEG5OSD_DisplayEnable(FALSE);
  5256. dvb_printf("subtitle on\n");
  5257. DVBApp_DataApplicationSwitch(
  5258. OSD2CTRLMDL_ENABLE|OSD2CTRLMDL_SUB);
  5259. dvb_printf("subtitle osd on\n");
  5260. mid_sub_dtv_show(1);
  5261. }
  5262. else
  5263. {
  5264. dvb_printf("mheg osd on\n");
  5265. MHEG5OSD_DisplayEnable(TRUE);
  5266. }
  5267. }
  5268. else // eSMG == APPMMI_SMG_FALSE or APPMMI_SMG_NONE
  5269. {
  5270. if( stUserInfoData.Subtitle )
  5271. {
  5272. dvb_printf("mheg osd on\n");
  5273. MHEG5OSD_DisplayEnable(TRUE);
  5274. dvb_printf("subtitle osd off\n");
  5275. mid_sub_dtv_show(0);
  5276. }
  5277. else
  5278. {
  5279. dvb_printf("mheg osd on\n");
  5280. MHEG5OSD_DisplayEnable(TRUE);
  5281. }
  5282. }
  5283. }
  5284. }
  5285. else
  5286. {
  5287. dvb_printf("%s AppMMI is 'off'\n",__FUNCTION__);
  5288. }
  5289. }
  5290. #endif
  5291. #ifdef SUPPORT_ATS
  5292. static UINT8 uGetDemodinfoOn = 0;
  5293. GL_Task_t ATSTask;
  5294. static UINT8 ATSTaskExistFlag = 0;
  5295. void _APP_ATS_Get_Demodinfo_ThreadControl(void *pData)
  5296. {
  5297. ATSTaskExistFlag = 1;
  5298. bool bNeedPrint = TRUE;
  5299. while(uGetDemodinfoOn==1)
  5300. {
  5301. GL_TaskSleep(500);
  5302. UINT32 u16SNR=0;
  5303. FrontendCmd_t front;
  5304. front.cmd = FRONTEND_CMD_GET_SIGNAL_SNR;
  5305. front.param = &u16SNR;
  5306. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  5307. u16SNR = u16SNR/10;
  5308. UINT32 u16BER=0;
  5309. front.cmd = FRONTEND_CMD_GET_SIGNAL_BER;
  5310. front.param = &u16BER;
  5311. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  5312. if(u16BER != 0xFFFF)
  5313. u16BER = u16BER/10;
  5314. UINT32 u16PER=0;
  5315. front.cmd = FRONTEND_CMD_GET_SIGNAL_PER;
  5316. front.param = &u16PER;
  5317. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  5318. UINT32 u16UBC=0;
  5319. front.cmd = FRONTEND_CMD_GET_SIGNAL_UBC;
  5320. front.param = &u16UBC;
  5321. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  5322. UINT32 u16SSI=0;
  5323. front.cmd = FRONTEND_CMD_GET_SIGNAL_STRENGTH;
  5324. front.param = &u16SSI;
  5325. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  5326. UINT32 u16SQI=0;
  5327. front.cmd = FRONTEND_CMD_GET_SIGNAL_QUALITY;
  5328. front.param = &u16SQI;
  5329. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  5330. UINT32 IsDemodLock=0;
  5331. front.cmd = FRONTEND_CMD_GET_DEMOD_LOCK_STATUS;
  5332. front.param = (void *)&IsDemodLock;
  5333. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  5334. //ATS:lock xx SNR xxx BER xxxxx PER xxxxx UBC xxxxx SSI xxx SQI xxx
  5335. if(bNeedPrint == TRUE)
  5336. {
  5337. char cLen[80];
  5338. 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);
  5339. con_echo_sfu(80, (UINT8 *)cLen);
  5340. }
  5341. if(IsDemodLock == 0)
  5342. bNeedPrint = FALSE;
  5343. else
  5344. bNeedPrint = TRUE;
  5345. }
  5346. if(uGetDemodinfoOn == 0)
  5347. {
  5348. ATSTaskExistFlag = 0;
  5349. GL_TaskSelfDelete();
  5350. }
  5351. }
  5352. UINT32 APP_ATS_Get_Demodinfo_On()
  5353. {
  5354. if(ATSTaskExistFlag == 0)
  5355. {
  5356. GL_Status_t ret = GL_FAILURE;
  5357. ret = GL_TaskCreate("ATSGetDemodinfo", _APP_ATS_Get_Demodinfo_ThreadControl, NULL, 4, 32, FALSE, &ATSTask);
  5358. if (ret != GL_SUCCESS)
  5359. {
  5360. return AL_FAILURE;
  5361. }
  5362. ret = GL_TaskActivate(ATSTask);
  5363. if (ret != GL_SUCCESS)
  5364. {
  5365. return AL_FAILURE;
  5366. }
  5367. }
  5368. return AL_SUCCESS;
  5369. }
  5370. #endif
  5371. static INT32 _DVBApp_OnGlobalEvent(void *pPrivateData, UINT32 dMessage, UINT32 dParam)
  5372. {
  5373. al_bool bHasValidServ = al_false;
  5374. al_uint8 bSignalState = al_false;
  5375. PopmsgParam_t stPopup;
  5376. UINT32 dGuiObj = DVB_GUIOBJ_EPG;
  5377. UINT8 u8HotelMode;
  5378. UINT8 u8MainUIEn;
  5379. AL_DB_ERecordType_t NextServiceType = 0;
  5380. UINT32 u32TotalNum = 0;
  5381. AL_RecHandle_t hProg;
  5382. AL_RecHandle_t hCurProg;
  5383. #ifdef CONFIG_SUPPORT_MHEG5
  5384. int sdRet;
  5385. #endif
  5386. UINT32 dAppIndex = 0;
  5387. MID_DISP_MUTE_ST eMuteSt = 0;
  5388. #ifdef SUPPORT_SOURCE_DVBTCS
  5389. UINT32 RFtype = APP_RF_TYPE_DVB_MAX;
  5390. UINT32 StringId = 0;
  5391. #endif
  5392. #ifdef CONFIG_SUPPORT_3D_EN
  5393. APP_Video_Image3DAction_t ePicture3DState = APP_VIDEO_IMAGE_3D_DISABLED;
  5394. #endif
  5395. APP_Source_Type_t eSourType = APP_SOURCE_MAX;
  5396. APP_Source_Type_t eMidSourType = APP_SOURCE_MAX;
  5397. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  5398. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  5399. AL_RecHandle_t hCurrProgHandle = AL_DB_INVALIDHDL;
  5400. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0,
  5401. sizeof(APP_SETTING_FactoryUser_t), &(g_stFactoryUserData));
  5402. if (g_stFactoryUserData.n_FactSet_BurningMode == al_true)
  5403. {
  5404. return SP_SUCCESS;
  5405. }
  5406. #ifdef CONFIG_SUPPORT_MHEG5
  5407. sdRet = 0;
  5408. #endif
  5409. dMessage = (dMessage&~PASS_TO_SYSAPP);
  5410. dvb_printf("%d. dMessage = 0x%x(%d)event received.\n", __LINE__, dMessage,(dMessage&0xfff));
  5411. #ifdef CONFIG_SUPPORT_MHEG5
  5412. int iFocusedIndex;
  5413. #endif
  5414. #ifdef CONFIG_SUPPORT_TTX
  5415. al_uint8 *pref_iso639 = al_null;
  5416. #endif
  5417. eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  5418. hCurProg = hProg = APP_DVB_Playback_GetCurrentProgHandle(eNetType, eServiceType);
  5419. APP_GUIOBJ_Source_GetCurrSource(&eSourType);
  5420. APP_GUIOBJ_Source_GetMidSource(&eMidSourType, NULL);
  5421. UINT8 bAutoInstall = FALSE;
  5422. #ifdef IR_PLAYPAUE_COMBINE
  5423. if (dMessage == UI_EVENT_PLAY)
  5424. {
  5425. dMessage = UI_EVENT_PLAY_PAUSE;
  5426. }
  5427. if (dMessage == UI_EVENT_PLAY_PAUSE)
  5428. {
  5429. dMessage = UI_EVENT_PAUSE;
  5430. }
  5431. #endif
  5432. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  5433. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  5434. u8HotelMode = g_stFactoryHotelData.HotelModeOnOff;
  5435. u8MainUIEn = g_stFactoryHotelData.MainUIOperation;
  5436. if (u8HotelMode == 1)
  5437. {
  5438. if (u8MainUIEn == 1)
  5439. {
  5440. if (dMessage == UI_EVENT_MENU)
  5441. {
  5442. return 0;
  5443. }
  5444. }
  5445. }
  5446. if ((g_stFactoryHotelData.HotelModeOnOff == 1) && (g_stFactoryHotelData.AspectRatioLock == 1))
  5447. {
  5448. if (dMessage == UI_EVENT_ASPECT)
  5449. {
  5450. dMessage = UI_EVENT_NULL;
  5451. }
  5452. }
  5453. #ifdef CONFIG_SUPPORT_PVR
  5454. UINT8 u8AutoTimeShift;
  5455. UINT8 u8MidRecState;
  5456. UINT8 u8MIDRecMode;
  5457. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  5458. ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift),
  5459. sizeof(g_stFeatureData.AutoTimeShift), &(g_stFeatureData.AutoTimeShift));
  5460. u8AutoTimeShift = g_stFeatureData.AutoTimeShift;
  5461. u8MidRecState = MID_RecorderState();
  5462. u8MIDRecMode = MID_Recorder_GetRecMode();
  5463. #ifdef SUPPORT_PLAY_PAUSE_KEY_START_REC
  5464. if ((MID_REC_STATUS_STOP == u8MidRecState)
  5465. && (dMessage == UI_EVENT_PLAY_PAUSE)
  5466. && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_RECORDLIST)
  5467. && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  5468. {
  5469. dMessage = UI_EVENT_REC;
  5470. }
  5471. #endif
  5472. #endif
  5473. #if defined(SUPPORT_PVR_ONOFF) || defined(SUPPORT_EPG_ONOFF)
  5474. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0,
  5475. sizeof(APP_SETTING_Setup_t), &(g_stSetupData));
  5476. #endif
  5477. #ifdef SUPPORT_CEC_TV
  5478. if (CECTV_GetCECEnable()==CECTV_ENABLE)
  5479. {
  5480. //active source
  5481. if(dMessage==UI_EVENT_TVRADIO)
  5482. {
  5483. dvb_printf("========================UI_EVENT_TVRADIO========================");
  5484. CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_CHGSRC_OUT_HDMI, SRC_OTHERS);
  5485. }
  5486. if(dMessage==UI_EVENT_MUTE)
  5487. {
  5488. dvb_printf("\n\n=============CEC Send Audio Mute===============\n\n");
  5489. //CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_KEYPRESS, CECTV_KEY_MUTE<<8|0x05);//Mute Function
  5490. if (CECTV_GetHDMISystemAudioMode())
  5491. {
  5492. if(g_u32Mutekeydelaytime >= MUTE_KEY_INTERVAL)
  5493. {
  5494. cec_RemoteControlPassThrough(CECTV_KEY_MUTE);
  5495. cec_RemoteControlPassThrough(CECTV_KEY_MUTE_RELEASE);
  5496. g_u32Mutekeydelaytime = 0;
  5497. }
  5498. }
  5499. }
  5500. if(dMessage==UI_EVENT_VOL_UP)
  5501. {
  5502. dvb_printf("========================UI_EVENT_VOL_UP========================");
  5503. //CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_KEYPRESS, CECTV_KEY_VOLUME_UP<<8|0x05);//UCP VOL_DN Function
  5504. if (CECTV_GetHDMISystemAudioMode() && APP_Check_CEC_DEVICE_Status())
  5505. {
  5506. if (dParam & IR_EVENT_REPEAT_TYPE)
  5507. {
  5508. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_UP);
  5509. }
  5510. else if (dParam & IR_EVENT_REPEAT_END)
  5511. {
  5512. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_UP_RELEASE);
  5513. }
  5514. else
  5515. {
  5516. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_UP);
  5517. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_UP_RELEASE);
  5518. }
  5519. }
  5520. }
  5521. if(dMessage==UI_EVENT_VOL_DN)
  5522. {
  5523. dvb_printf("========================UI_EVENT_VOL_DN========================");
  5524. //CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_KEYPRESS, CECTV_KEY_VOLUME_DOWN<<8|0x05);//UCP VOL_DN Function
  5525. if (CECTV_GetHDMISystemAudioMode() && APP_Check_CEC_DEVICE_Status())
  5526. {
  5527. if (dParam & IR_EVENT_REPEAT_TYPE)
  5528. {
  5529. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_DOWN);
  5530. }
  5531. else if (dParam & IR_EVENT_REPEAT_END)
  5532. {
  5533. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_DOWN_RELEASE);
  5534. }
  5535. else
  5536. {
  5537. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_DOWN);
  5538. cec_RemoteControlPassThrough(CECTV_KEY_VOLUME_DOWN_RELEASE);
  5539. }
  5540. }
  5541. }
  5542. }
  5543. #endif
  5544. #ifdef TEAC_BLUE_KEY_FUNCTION
  5545. if (_DVB_GetPanelControlType() == APP_PANEL_POWER_DOWN && (dMessage >= UI_EVENT_0 && dMessage < UI_EVENT_NULL) && (dMessage != UI_EVENT_POWER))
  5546. {
  5547. //APP_Panel_SetPowerSequence(APP_PANEL_POWER_UP);
  5548. //APP_Video_OSD_PQSet(APP_VIDEO_OSD_ITEM_BACKLIGHT,
  5549. // g_stSetupData.HomeMode.Backlight[g_stSetupData.HomeMode.Type]);
  5550. _DVB_SetPanelControlType(APP_PANEL_POWER_UP);
  5551. return GUI_OBJECT_NO_POST_ACTION;
  5552. }
  5553. #endif
  5554. switch (dMessage)
  5555. {
  5556. case APP_DVB_GLOBAL_EVENT_SCAN_DONE:
  5557. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS))
  5558. {
  5559. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  5560. SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS,
  5561. APP_DVB_GLOBAL_EVENT_SCAN_DONE, 0);
  5562. }
  5563. else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL))
  5564. {
  5565. SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_SCAN_DONE, 0);
  5566. }
  5567. else
  5568. {
  5569. APP_GUIOBJ_ScanProcess_ScanDone(NULL, 1);
  5570. }
  5571. break;
  5572. case APP_DVB_GLOBAL_EVENT_DVB_ONRUN:
  5573. dvb_printf(" APP_DVB_GLOBAL_EVENT_DVB_ONRUN event received\n");
  5574. g_u32NoSignalTimer = 0;
  5575. g_u32NoSignalSleepTimer = 0;
  5576. /*#ifdef CONFIG_SUPPORT_PVR
  5577. if (MID_REC_STATUS_STOP != u8MidRecState)
  5578. {
  5579. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  5580. {
  5581. DVBApp_StopRecord();
  5582. }
  5583. else
  5584. {
  5585. DVBApp_StopTimeshift(TRUE);
  5586. }
  5587. }
  5588. #endif*/
  5589. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL,
  5590. ITEM_OFFSET(APP_SETTING_Channel_t, Country),
  5591. sizeof(g_stChannelData.Country), &(g_stChannelData.Country));
  5592. DVBApp_ResetDvbSpecRule(g_stChannelData.Country);
  5593. #ifdef CONFIG_MEDIA_ENABLE
  5594. /*#ifdef CONFIG_SUPPORT_PVR
  5595. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  5596. if(APP_WAKEUP_GetBootFlag()==FALSE)
  5597. #endif
  5598. {
  5599. if (MM_Music_GetPanelControlType() == APP_PANEL_POWER_DOWN)
  5600. //APP_Panel_SetPowerSequence(APP_PANEL_POWER_UP);
  5601. }
  5602. #endif*/
  5603. #endif
  5604. /*Change Source*/
  5605. UINT32 Indexmm = TOTAL_SYS_APP_SIZE;
  5606. while(MAINAPP_GetActiveSystemAppIndex(&Indexmm) !=MAIN_APP_SUCCESS)
  5607. {
  5608. GL_TaskSleep(1);
  5609. }
  5610. if ((SP_SUCCESS != APP_GUIOBJ_Source_SetMidSource(NULL)) || (APP_IsScan_Running()))
  5611. {
  5612. #ifdef CONFIG_SUPPORT_PVR
  5613. DVBApp_SetPVRSwitchSRC(FALSE);
  5614. #endif
  5615. return SP_ERR_FAILURE;
  5616. }
  5617. #ifdef CONFIG_SUPPORT_PVR
  5618. int iPtListIdx = -1;
  5619. extern int _RecorderList_Callback(MID_PVRRecListParseMsg_t dPVRRecListCallbackType);
  5620. MID_TSPLParser_RegisterPvrRecListCallback((PVRRecListCallbackFunc)_RecorderList_Callback);
  5621. if (MID_RecorderGetDefaultPartition(&iPtListIdx) != MID_REC_FS_OK)
  5622. {
  5623. /* aps new don't support NTFS fs */
  5624. if (APP_GUIOBJ_DVB_PartitionList_GetFirstFat(&iPtListIdx) == TRUE)
  5625. {
  5626. MID_RecorderSetDefaultPartition(iPtListIdx, MID_REC_PARTITION_SET_FORCE); //set partition 0 for default partition
  5627. }
  5628. }
  5629. else //for mantis 0180617, refresh mid PVR file list when change from other source
  5630. {
  5631. static char szPtName[15];
  5632. MID_PartitionList_GetMountName(iPtListIdx, szPtName);
  5633. extern Boolean MID_Recorder_DeleteTShistIfExist(char *szPtName);
  5634. if(MID_Recorder_DeleteTShistIfExist(szPtName)==TRUE)
  5635. {
  5636. PVR_DEBF("Delete TSHIFT FILE [OK]\n");
  5637. }
  5638. extern Boolean MID_Recorder_DeleteIllegalPVR(char *szPtName);
  5639. if(MID_Recorder_DeleteIllegalPVR(szPtName)==TRUE)
  5640. {
  5641. PVR_DEBF("Delete Illegal PVR [OK]\n");
  5642. }
  5643. MID_TSPLParser_Init(szPtName);
  5644. }
  5645. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  5646. #endif
  5647. eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  5648. if ((eServiceType != AL_RECTYPE_DVBTV) && (eServiceType != AL_RECTYPE_DVBRADIO) && (eServiceType != AL_RECTYPE_DVBDATA))
  5649. {
  5650. eServiceType = AL_RECTYPE_DVBTV;
  5651. }
  5652. /* Check Service Type */
  5653. {
  5654. UINT32 u32TotalChnCount = 0;
  5655. AL_DB_ERecordType_t eTempServiceType = eServiceType;
  5656. if(eServiceType != AL_RECTYPE_DVBTV)
  5657. {
  5658. AL_DB_GetRecordsTotalNum(eNetType, eServiceType, &u32TotalChnCount);
  5659. if(!u32TotalChnCount)
  5660. {
  5661. eTempServiceType = AL_RECTYPE_DVBTV;
  5662. AL_DB_GetRecordsTotalNum(eNetType, eTempServiceType, &u32TotalChnCount);
  5663. if(!u32TotalChnCount)
  5664. {
  5665. if(eServiceType == AL_RECTYPE_DVBRADIO)
  5666. {
  5667. AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBDATA, &u32TotalChnCount);
  5668. if(u32TotalChnCount)
  5669. {
  5670. eTempServiceType = AL_RECTYPE_DVBDATA;
  5671. }
  5672. }
  5673. else if(eServiceType == AL_RECTYPE_DVBDATA)
  5674. {
  5675. AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBRADIO, &u32TotalChnCount);
  5676. if(u32TotalChnCount)
  5677. {
  5678. eTempServiceType = AL_RECTYPE_DVBRADIO;
  5679. }
  5680. }
  5681. }
  5682. }
  5683. }
  5684. else
  5685. {
  5686. AL_DB_GetRecordsTotalNum(eNetType, eServiceType, &u32TotalChnCount);
  5687. if(!u32TotalChnCount)
  5688. {
  5689. AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBDATA, &u32TotalChnCount);
  5690. if(u32TotalChnCount)
  5691. {
  5692. eTempServiceType = AL_RECTYPE_DVBDATA;
  5693. }
  5694. else
  5695. {
  5696. AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBRADIO, &u32TotalChnCount);
  5697. if(u32TotalChnCount)
  5698. {
  5699. eTempServiceType = AL_RECTYPE_DVBRADIO;
  5700. }
  5701. }
  5702. }
  5703. }
  5704. eServiceType = eTempServiceType;
  5705. APP_DVB_Playback_SetCurrServiceType(eNetType, eServiceType);
  5706. }
  5707. /*create playback and mute guiobject*/
  5708. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK))
  5709. {
  5710. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, 0);
  5711. }
  5712. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MUTE))
  5713. {
  5714. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_MUTE, 0);
  5715. }
  5716. if (TRUE == APP_GUIOBJ_DVB_FavNet_GetSelect())
  5717. {
  5718. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVNET))
  5719. {
  5720. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FAVNET, 0);
  5721. break;
  5722. }
  5723. }
  5724. /* change source to net, it will destroy `mute' icon
  5725. * so, judge `mute' state, show icon
  5726. */
  5727. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  5728. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  5729. if (g_stUserInfoData.Mute == TRUE)
  5730. {
  5731. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  5732. SYS_APP_DVB, APP_GUIOBJ_MUTE,
  5733. APP_INTRA_EVENT_SHOW_MUTE, SHOW_MUTE_ON_TV);
  5734. }
  5735. bAutoInstall = g_stUserInfoData.AutoInstalled;
  5736. if (bAutoInstall && (FALSE ==gIsFactoryResetting))
  5737. {
  5738. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL))
  5739. {
  5740. //Close all menu before show Auto Installation menu
  5741. _DVBApp_CloseAllMenu();
  5742. #ifdef SUPPORT_FACTORY_AUTO_TEST
  5743. if(APP_Factory_GetAutoTestOnOff() == FALSE)
  5744. #endif
  5745. {
  5746. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL, 0);
  5747. }
  5748. }
  5749. }
  5750. #ifdef SUPPORT_FACTORY_AUTO_TEST
  5751. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  5752. {
  5753. extern void APP_SetPoweronEnterVersion(UINT8 value);
  5754. extern UINT8 APP_GetPoweronEnterVersion(void);
  5755. if(APP_GetPoweronEnterVersion() == 1)
  5756. {
  5757. APP_SetPoweronEnterVersion(0);
  5758. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING))
  5759. {
  5760. DVBApp_ResetPopup_Channel();
  5761. _DVBApp_CloseAllMenu();
  5762. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING, 1);
  5763. Factory_Ver_Debug();
  5764. }
  5765. }
  5766. }
  5767. #endif
  5768. hProg = APP_DVB_Playback_GetCurrentProgHandle(eNetType, eServiceType);
  5769. #ifdef CONFIG_SUPPORT_PVR
  5770. if (DVBApp_GetPVRSwitchSRC() == TRUE)
  5771. {
  5772. eServiceType = g_eRecType;
  5773. APP_DVB_Playback_SetNextServiceType(eServiceType);
  5774. hProg = DVBApp_GetSCHProgHandle();
  5775. }
  5776. #endif
  5777. if (APP_MenuMgr_Exist_Scan_Menu())
  5778. {
  5779. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_GLOBAL_EVENT_SET_SOURCE_COMPLETE, 0);
  5780. }
  5781. else
  5782. {
  5783. #if 0 /*modify by qinhe for mantis 0011833*/
  5784. AL_DB_GetRecordsTotalNum(eNetType, eServiceType, &TotalNum);
  5785. #else
  5786. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  5787. #endif
  5788. if (bHasValidServ)
  5789. {
  5790. if (hProg == AL_DB_INVALIDHDL)
  5791. {
  5792. AL_RecHandle_t hTpHdl = AL_DB_INVALIDHDL;
  5793. AL_DB_GetRecord(AL_DB_REQ_GETFIRST, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hTpHdl);
  5794. if (hTpHdl != AL_DB_INVALIDHDL)
  5795. {
  5796. hProg = APP_DVB_PLAYBACK_GetFirstProgHdlofLowestService();
  5797. AL_DB_GetRecordType(hProg, &eNetType, &eServiceType);
  5798. APP_DVB_Playback_SetCurrentProgHandle(eNetType, eServiceType, hProg);
  5799. APP_DVB_Playback_SetNextServiceType(eServiceType);
  5800. }
  5801. }
  5802. if (hProg == AL_DB_INVALIDHDL)
  5803. {
  5804. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS))
  5805. {
  5806. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  5807. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  5808. }
  5809. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL))
  5810. {
  5811. if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_DATABASE_EMPTY))
  5812. {
  5813. DVBApp_ResetPopup_Channel();
  5814. _DVBApp_ShowPopup(DVB_APP_POP_MSG_DATABASE_EMPTY);
  5815. }
  5816. }
  5817. }
  5818. else
  5819. {
  5820. DBServAttrib_t stAttribute;
  5821. memset(&stAttribute, 0, sizeof(stAttribute));
  5822. AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute);
  5823. if(stAttribute.unStable == al_true)
  5824. {
  5825. DVBApp_RemoveUnstableService();
  5826. }
  5827. else
  5828. {
  5829. _DVBApp_Zapping(eServiceType, hProg, TRUE, 0, TRUE);
  5830. }
  5831. /*Add for dispose TV/RADIO key in channel manager /channel list /epg*/
  5832. if (!dParam)
  5833. {
  5834. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR)
  5835. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR)
  5836. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST)
  5837. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST)
  5838. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG))
  5839. {
  5840. break;
  5841. }
  5842. }
  5843. /*End*/
  5844. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  5845. if (bSignalState != AL_DVB_MONITOR_VALUE_TRUE)
  5846. {
  5847. if (eServiceType == AL_RECTYPE_DVBRADIO)
  5848. {
  5849. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  5850. SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  5851. APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  5852. }
  5853. if(!APP_Factory_CheckNeedReopenFm(SYS_APP_DVB))
  5854. {
  5855. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_SIGNAL);
  5856. }
  5857. }
  5858. else
  5859. {
  5860. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  5861. #if 0 //zhongbaoxing removed for mantis 171528 @20120307
  5862. if (eServiceType == AL_RECTYPE_DVBRADIO)
  5863. {
  5864. if (!APP_GUIOBJ_DVB_Playback_GetShowLogoState())
  5865. {
  5866. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  5867. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  5868. }
  5869. #ifdef CONFIG_SUPPORT_MHEG5
  5870. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  5871. #endif
  5872. {
  5873. _DVBApp_ShowPopup(DVB_APP_POP_MSG_RADIO_CHANNEL);
  5874. }
  5875. }
  5876. else
  5877. #else
  5878. if (eServiceType != AL_RECTYPE_DVBRADIO)
  5879. {
  5880. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  5881. }
  5882. #endif
  5883. }
  5884. }
  5885. }
  5886. else
  5887. {
  5888. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  5889. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  5890. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL))
  5891. {
  5892. if (!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_DATABASE_EMPTY))
  5893. {
  5894. DVBApp_ResetPopup_Channel();
  5895. if(!APP_Factory_CheckNeedReopenFm(SYS_APP_DVB))
  5896. {
  5897. _DVBApp_ShowPopup(DVB_APP_POP_MSG_DATABASE_EMPTY);
  5898. DVBApp_CheckProgramType(FALSE);
  5899. }
  5900. }
  5901. }
  5902. }
  5903. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  5904. DRV_Frontend_Connect_Type_t tPreFrontendType = FRONTEND_CONNECT_TYPE_MAX;
  5905. if ((!bHasValidServ || (hProg == AL_DB_INVALIDHDL))&&(eNetType == AL_DBTYPE_DVB_S))
  5906. {
  5907. MID_SatCtrl_FrontendCtrl(FRONTEND_CMD_GET_CONNECT_TYPE, (void *)&tPreFrontendType);
  5908. if (tPreFrontendType != FRONTEND_CONNECT_TYPE_DVB_S && tPreFrontendType != FRONTEND_CONNECT_TYPE_DVB_S2)
  5909. {
  5910. MID_SatCtrl_FrontendCtrl(FRONTEND_CMD_SET_S, NULL);
  5911. }
  5912. }
  5913. #endif
  5914. #ifdef CONFIG_DVB_SYSTEM_DVBT2_SUPPORT
  5915. DRV_Frontend_Connect_Type_t tPreFrontendType_t = FRONTEND_CONNECT_TYPE_MAX;
  5916. FrontendCmd_t front;
  5917. if ((!bHasValidServ || (hProg == AL_DB_INVALIDHDL))&&(eNetType == AL_DBTYPE_DVB_T))
  5918. {
  5919. front.cmd = FRONTEND_CMD_GET_CONNECT_TYPE;
  5920. front.param = (void *)&tPreFrontendType_t;
  5921. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  5922. if (tPreFrontendType_t != FRONTEND_CONNECT_TYPE_DVB_T && tPreFrontendType_t != FRONTEND_CONNECT_TYPE_DVB_T2)
  5923. {
  5924. front.cmd = FRONTEND_CMD_SET_T;
  5925. front.param = NULL;
  5926. ioctl(kmfdev, KMF_IOC_FRONTENDCTRL , &front);
  5927. }
  5928. }
  5929. #endif
  5930. #ifdef SUPPORT_DTV_SHOW_BLUESCREEN
  5931. al_uint8 bMonitorState = al_false;
  5932. al_uint8 bSignalState = al_false;
  5933. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_MONITOR, &bMonitorState);
  5934. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  5935. if ((g_stSetupData.BlueScreen == APP_SWITCH_ON)
  5936. &&((!bHasValidServ)
  5937. ||!((bMonitorState) && (bSignalState == AL_DVB_MONITOR_VALUE_TRUE))))
  5938. {
  5939. APP_SCARTOUT_SetVideoMute(APP_SOURCE_DTV, DTV_TRUE, TRUE);
  5940. MID_DISP_DTVSetVideoMute(0,0,255);
  5941. }
  5942. #endif
  5943. _DVBApp_CheckPopupDisplay();
  5944. }
  5945. #ifdef CONFIG_SUPPORT_PVR
  5946. if(DVBApp_GetPVRSwitchSRC())
  5947. {
  5948. DVBApp_SetPVRSwitchSRC(FALSE);
  5949. if(DVBApp_GetReminderTime2Show() > 1)//For confirm record ahead
  5950. {
  5951. AL_Return_t ret;
  5952. memset(&g_stDetails,0,sizeof(AL_PR_details_t));
  5953. ret = AL_PR_GetById(g_dReminderId, &g_stDetails);
  5954. if (ret == AL_SUCCESS)
  5955. {
  5956. DVBApp_PVRRec_SetTimerCancle();
  5957. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  5958. (APP_DVB_GLOBAL_EVENT_PVRSCH | PASS_TO_SYSAPP), (UINT32)&g_stDetails);
  5959. }
  5960. }
  5961. }
  5962. #endif
  5963. break;
  5964. case APP_DVB_GLOBAL_EVENT_OBJECT_OPEN:
  5965. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, dParam & 0XFFFF))
  5966. {
  5967. #ifdef CONFIG_CI_SUPPORT
  5968. if (((dParam & 0XFFFF) == DVB_GUIOBJ_CI_MENU) || ((dParam & 0XFFFF) == DVB_GUIOBJ_CI_ENQ))
  5969. {
  5970. UINT32 i;
  5971. UINT8 CouldOpen = TRUE;
  5972. for (i = 0; i < sizeof(g_CI_IgnoreGuiObjID) / sizeof(g_CI_IgnoreGuiObjID[0]); i++)
  5973. {
  5974. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, g_CI_IgnoreGuiObjID[i]))
  5975. {
  5976. CouldOpen = FALSE;
  5977. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU)
  5978. && ((dParam & 0XFFFF) == DVB_GUIOBJ_CI_ENQ))
  5979. {
  5980. CouldOpen = TRUE;
  5981. }
  5982. }
  5983. }
  5984. if (CouldOpen == FALSE)
  5985. {
  5986. break;
  5987. }
  5988. for (i = 0; i < sizeof(g_CI_HideGuiObjID) / sizeof(g_CI_HideGuiObjID[0]); i++)
  5989. {
  5990. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, g_CI_HideGuiObjID[i]))
  5991. {
  5992. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, g_CI_HideGuiObjID[i]);
  5993. }
  5994. }
  5995. g_u32OldPopup = PLAYBACK_POPUP_NONE;
  5996. _DVBApp_HidePopupDisplay();
  5997. if((dParam&0XFFFF) == DVB_GUIOBJ_CI_MENU)
  5998. {
  5999. _DVBApp_CloseAllMenu();
  6000. #ifdef CONFIG_SUPPORT_PVR
  6001. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  6002. {
  6003. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  6004. }
  6005. extern Boolean APP_GUIOBJ_DVB_PvrFilePlayInfo_IsExist(void);
  6006. if (APP_GUIOBJ_DVB_PvrFilePlayInfo_IsExist())
  6007. {
  6008. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAYINFO,
  6009. APP_DVB_INTRA_EVENT_PVR_FILEPLAYINFO_HIDE_MENU, 0);
  6010. }
  6011. #endif
  6012. }
  6013. }
  6014. #endif
  6015. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, dParam & 0XFFFF, dParam >> 16);
  6016. }
  6017. break;
  6018. case APP_DVB_GLOBAL_EVENT_OBJECT_CLOSE:
  6019. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, dParam))
  6020. {
  6021. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, dParam);
  6022. }
  6023. break;
  6024. case APP_DVB_GLOBAL_EVENT_CLOSE_POPUP:
  6025. DVBApp_ClosePopup(dParam, UI_EVENT_NULL);
  6026. break;
  6027. case APP_DVB_GLOBAL_EVENT_EXIT_ALL_MENU:
  6028. #ifdef CONFIG_CIPLUS_SUPPORT_PVR //CI MMI case, when PIN code is passed, do not close all UI.
  6029. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  6030. break;
  6031. #endif
  6032. _DVBApp_Exit_All_Menu();
  6033. break;
  6034. #ifdef CONFIG_CI_SUPPORT
  6035. case APP_DVB_GLOBAL_EVENT_POPMSG_CAM_ON_INIT:
  6036. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_CAM_INIT);
  6037. break;
  6038. case APP_DVB_GLOBAL_EVENT_POPMSG_CAM_INIT_OK:
  6039. _APP_GUIOBJ_Feature_UpdateList(APP_GUIOBJ_MainMenu_GetIndexByType(CIINFO_ITEM));
  6040. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_CAM_INIT_OK);
  6041. break;
  6042. case APP_DVB_GLOBAL_EVENT_POPMSG_CAM_ERROR:
  6043. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_CAM_ERROR);
  6044. break;
  6045. case APP_DVB_GLOBAL_EVENT_POPMSG_CAM_REMOVED:
  6046. _APP_GUIOBJ_Feature_UpdateList(APP_GUIOBJ_MainMenu_GetIndexByType(CIINFO_ITEM));
  6047. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_CAM_REMOVED);
  6048. break;
  6049. #ifdef SUPPORT_CICAM_NEW_MESSAGE //this define need be enable to inform user remove CICAM card
  6050. case APP_DVB_GLOBAL_EVENT_POPMSG_INFORM_USER_REMOVE_CAM:
  6051. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_INFORM_USER_REMOVE_CAM);
  6052. break;
  6053. #endif
  6054. case APP_DVB_GLOBAL_EVENT_CI_REDRAW_ALL_CAM:
  6055. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  6056. DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_REDRAW_ALL_CAM, dParam);
  6057. break;
  6058. case APP_DVB_GLOBAL_EVENT_CI_CAM_ON_INIT:
  6059. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  6060. DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_CAM_ON_INIT, dParam);
  6061. break;
  6062. case APP_DVB_GLOBAL_EVENT_CI_CAM_NOT_INSERT:
  6063. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  6064. DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_CAM_NOT_INSERT, dParam);
  6065. break;
  6066. case APP_DVB_GLOBAL_EVENT_CI_CAM_INIT_OK:
  6067. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MAINMENU))
  6068. {
  6069. DVBApp_ResetPopup_Channel();
  6070. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  6071. }
  6072. _APP_GUIOBJ_Feature_UpdateList(APP_GUIOBJ_MainMenu_GetIndexByType(CIINFO_ITEM));
  6073. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  6074. DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_CAM_INIT_OK, dParam);
  6075. break;
  6076. case APP_DVB_GLOBAL_EVENT_CI_REDRAW_MENU:
  6077. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  6078. DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_REDRAW_MENU, dParam);
  6079. break;
  6080. #ifdef CONFIG_CIPLUS_SUPPORT
  6081. case APP_DVB_GLOBAL_EVENT_CI_AUTH_PROGRESS:
  6082. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  6083. DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_AUTH_PROGRESS, dParam);
  6084. break;
  6085. #endif
  6086. #endif
  6087. case APP_GLOBAL_EVENT_OPEN_HOMEMODE:
  6088. #if defined(CELLO_cello) && defined(SUPPORT_HOMEMODE)
  6089. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  6090. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  6091. if((g_stUserInfoData.AutoInstalledHomeMode)
  6092. &&(!g_stUserInfoData.AutoInstalled))
  6093. {
  6094. if ((!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL))
  6095. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  6096. &&(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE))
  6097. #endif
  6098. )
  6099. {
  6100. //Close all menu before show Auto Installation menu
  6101. _DVBApp_CloseAllMenu();
  6102. #ifdef SUPPORT_FACTORY_AUTO_TEST
  6103. if(APP_Factory_GetAutoTestOnOff() == FALSE)
  6104. #endif
  6105. {
  6106. APP_GUIOBJ_AutoInstall_SetOpenHomeModeFlag(FALSE);
  6107. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL, INSTALL_FROM_ONLYFORHOMEMODE);
  6108. }
  6109. }
  6110. }
  6111. #endif
  6112. break;
  6113. case APP_GLOBAL_EVENT_POPMSG_PWD:
  6114. {dvb_printf("APP_GLOBAL_EVENT_POPMSG_PWD is received,Unlock success!!\n\n");
  6115. g_SetPQFlag = TRUE;
  6116. APP_DVB_Playback_SetUnlock(TRUE);
  6117. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  6118. if (bSignalState == AL_DVB_MONITOR_VALUE_INVAILED)//tuner locked
  6119. {
  6120. al_uint8 uDVBMonState = AL_DVB_MONITOR_VALUE_TRUE;
  6121. AL_DVB_Monitor_SetState(AL_DVB_MONITOR_STATE_SIGNAL, &uDVBMonState);
  6122. }
  6123. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  6124. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_START_PLAYBACK, 0);
  6125. if (APP_GetPlaybackPauseState() == TRUE)
  6126. {
  6127. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  6128. {
  6129. MID_PlaybackStreamPause(1);
  6130. }
  6131. }
  6132. DVBApp_CheckProgramType(TRUE);
  6133. #ifdef CONFIG_SUPPORT_MHEG5
  6134. dvb_printf("\n [set mheg5 flag] APP_GLOBAL_EVENT_POPMSG_PWD@@@@@@@@@@@@@dvb_app.c@@@@@@@@@@@@line=%d\n",__LINE__);
  6135. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_FORCE|OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5 | OSD2CTRLMDL_SUB);
  6136. #else
  6137. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  6138. #endif
  6139. #ifdef CONFIG_SUPPORT_PVR
  6140. AL_DB_EDBType_t DBType_Current = AL_DBTYPE_DVB_T;
  6141. AL_RecHandle_t CurrentProgHandle;
  6142. UINT32 CurrentTime;
  6143. AL_Setting_Reload(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL);
  6144. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  6145. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  6146. if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_C)
  6147. {
  6148. DBType_Current = AL_DBTYPE_DVB_C;
  6149. }
  6150. else if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_T)
  6151. {
  6152. DBType_Current = AL_DBTYPE_DVB_T;
  6153. }
  6154. else if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_S)
  6155. {
  6156. DBType_Current = AL_DBTYPE_DVB_S;
  6157. }
  6158. CurrentProgHandle = APP_DVB_Playback_GetCurrentProgHandle(DBType_Current, AL_RECTYPE_DVBTV | AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA);
  6159. AL_Time_GetCurTimeInSecs(&CurrentTime);
  6160. if (CurrentProgHandle == g_stDetails.rem_details.handle
  6161. && CurrentTime <g_stDetails.rem_details.event_end_time_insec
  6162. && CurrentTime > g_stDetails.start_local_time_secs)
  6163. {
  6164. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, (APP_DVB_GLOBAL_EVENT_PVRSCH|PASS_TO_SYSAPP), (UINT32)&g_stDetails);
  6165. }
  6166. #endif
  6167. }
  6168. break;
  6169. case APP_DVB_GLOBAL_EVENT_START_PLAYBACK:
  6170. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  6171. SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  6172. APP_DVB_INTRA_EVENT_START_PLAYBACK, 0);
  6173. break;
  6174. case APP_DVB_GLOBAL_EVENT_STOP_PLAYBACK:
  6175. {
  6176. MID_PlaybackProgState_t eProgState = MID_PLAYBK_PROG_STATE_NORMAL;
  6177. AL_DB_EDBType_t eDBType = AL_DBTYPE_MAX;
  6178. AL_RecHandle_t hCurrPrgHdl = AL_DB_INVALIDHDL;
  6179. if (AL_SUCCESS != APP_Database_GetCurrentDBType(APP_SOURCE_DTV, &eDBType))
  6180. {
  6181. dvb_printf("Get DBType error!!!\n");
  6182. break;
  6183. }
  6184. hCurrPrgHdl = APP_DVB_Playback_GetCurrentProgHandle(eDBType, (AL_RECTYPE_DVBTV |AL_RECTYPE_DVBRADIO|AL_RECTYPE_DVBDATA));
  6185. if (hCurrPrgHdl == AL_DB_INVALIDHDL)
  6186. {
  6187. dvb_printf("Get current program handle error!!!\n");
  6188. break;
  6189. }
  6190. eProgState = APP_DVB_Playback_GetProgStateByHandle(eDBType, hCurrPrgHdl);
  6191. if((APP_DVB_ParentalLock_GetPrtRatinglock())
  6192. &&(eProgState != MID_PLAYBK_PROG_STATE_LOCKED))
  6193. {
  6194. break;
  6195. }
  6196. }
  6197. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  6198. SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  6199. APP_DVB_INTRA_EVENT_STOP_PLAYBACK, dParam);
  6200. break;
  6201. #ifdef CONFIG_SUPPORT_PVR
  6202. case APP_GLOBAL_EVENT_PVRREC_CHANGESOURCE:
  6203. DVBApp_SetPVRSwitchSRC(FALSE);
  6204. DVBApp_SetTVRadioSwap(FALSE);
  6205. if (eServiceType != g_eRecType)
  6206. {
  6207. _DVBApp_Exit_All_Menu();
  6208. if (stoprec_id != AL_SCH_INVALID_ID)
  6209. {
  6210. AL_SCH_UnScheduleEvent(&stoprec_id);
  6211. APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurationID();
  6212. }
  6213. #if 0 //for mantis 199484/209573, don't return to the last program after timer record
  6214. DVBApp_SetTVRadioSwap(TRUE);
  6215. #endif
  6216. if (APP_DVB_Playback_SwapServiceType(eNetType, (AL_DB_ERecordType_t *)&NextServiceType, &u32TotalNum) != AL_SUCCESS)
  6217. {
  6218. dvb_printf("PVRREC Change sevice type fail!!!!!!!!!!\n");
  6219. }
  6220. }
  6221. break;
  6222. case APP_GLOBAL_EVENT_PVR_REMINDER:
  6223. {
  6224. PVR_DEBF("Reminder \n\n");
  6225. AL_Return_t ret;
  6226. AL_DB_EDBType_t DBType_ret = AL_DBTYPE_DVB_T;
  6227. AL_DB_ERecordType_t RecType = AL_RECTYPE_DVBTV;
  6228. al_uint32 CurTimeInSec = 0;
  6229. AL_Time_GetCurTimeInSecs(&CurTimeInSec);
  6230. g_dReminderId = dParam;
  6231. memset(&g_stDetails,0,sizeof(AL_PR_details_t));
  6232. ret = AL_PR_GetById(g_dReminderId, &g_stDetails);
  6233. if (ret != AL_SUCCESS)
  6234. {
  6235. memset(&g_stDetails,0,sizeof(AL_PR_details_t));
  6236. dvb_printf("AL_PR_GetById Error\n");
  6237. break;
  6238. }
  6239. /*Only storage the current REC type for start prompted pop*/
  6240. DVBApp_SetRemType(g_stDetails.rem_type);
  6241. DBType_ret = APP_DVB_Playback_GetCurrentNetType();
  6242. if (DBType_ret == g_stDetails.db_type)
  6243. {
  6244. /* if RF type diff, change RF type on APP_DVB_GLOBAL_EVENT_PVRSCH*/
  6245. //APP_WAKEUP_Recorder_SetTimeout();
  6246. AL_DB_GetRecordType(g_stDetails.rem_details.handle,
  6247. &DBType_ret, &RecType);
  6248. if (RecType == AL_RECTYPE_DVBTV)
  6249. {
  6250. g_eRecType = AL_RECTYPE_DVBTV;
  6251. }
  6252. else if (RecType == AL_RECTYPE_DVBRADIO)
  6253. {
  6254. g_eRecType = AL_RECTYPE_DVBRADIO;
  6255. }
  6256. }
  6257. _DVBApp_CloseAllMenu();
  6258. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_REMIDER);
  6259. }
  6260. break;
  6261. case APP_GLOBAL_EVENT_PVR_REMINDER_CONFIRM:
  6262. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_REMIDER_CONFIRM);
  6263. break;
  6264. case APP_DVB_GLOBAL_EVENT_PVR_EXPIRE:
  6265. {
  6266. //stop recording;
  6267. AL_SCH_sched_id_t Stop_id = AL_SCH_INVALID_ID;
  6268. AL_SCH_sched_id_t Schedule_id = dParam;
  6269. AL_SCH_details_t sch_details;
  6270. AL_SCH_GetScheduleDetails(&dParam, &sch_details);
  6271. PVR_DEBF("hProg ================= 0x%x\n", sch_details.sch_user_para);
  6272. PVR_DEBF("%s %d\n", __FUNCTION__, __LINE__);
  6273. PVR_DEBF("stop record is call\n");
  6274. Stop_id = stoprec_id;
  6275. if (stoprec_id == AL_SCH_INVALID_ID)
  6276. {
  6277. Stop_id = APP_GUIOBJ_DVB_PvrRecDurationTime_GetDurationID();
  6278. }
  6279. if (Schedule_id != Stop_id)
  6280. {
  6281. //if expire timer ID no match, ignor it.
  6282. break;
  6283. }
  6284. else
  6285. {
  6286. //if duration is less then 5s, we will consider this stop timer is wrong
  6287. INT32 g_RecTime;
  6288. MID_RecorderGetStreamTime(&g_RecTime);
  6289. if (g_RecTime < 5)
  6290. {
  6291. break;
  6292. }
  6293. }
  6294. if (u8MidRecState != MID_REC_STATUS_STOP)
  6295. {
  6296. PVR_DEBF("==========timer stop recorder!====\n");
  6297. DVBApp_StopRecord();
  6298. }
  6299. #if 0 //for mantis 199484, don't return to the last program after timer record
  6300. AL_Return_t ret;
  6301. AL_PR_details_t details;
  6302. AL_DB_EDBType_t DBType = APP_DVB_Playback_GetCurrentNetType();
  6303. AL_SCH_sched_id_t ref_id = AL_PR_MAX_NO_REMINDERS;
  6304. AL_SCH_sched_id_t ret_id_first = AL_PR_MAX_NO_REMINDERS;
  6305. ret = AL_PR_Get(DBType, AL_PR_REC_FIRST, AL_PR_EVT_REM | AL_PR_SRV_REM, ref_id, &ret_id_first);
  6306. if (ret == AL_SUCCESS)
  6307. {
  6308. AL_PR_GetById(ret_id_first, &details);
  6309. /*if the comming minute will start recording, no need to change back to last channel*/
  6310. /*CurTimeInSec sometimes has a delay, so minus 2 sec here*/
  6311. if ((CurTimeInSec > details.start_local_time_secs - 60) &&
  6312. (CurTimeInSec - 2 < details.start_local_time_secs))
  6313. {
  6314. break;
  6315. }
  6316. }
  6317. if (DVBApp_GetTVRadioSwap() == TRUE)
  6318. {
  6319. _DVBApp_CloseAllMenu();
  6320. DVBApp_SetTVRadioSwap(FALSE);
  6321. if (APP_DVB_Playback_SwapServiceType(eNetType, (AL_DB_ERecordType_t *)&NextServiceType, &u32TotalNum) != AL_SUCCESS)
  6322. {
  6323. dvb_printf("PVR EXPIRE Change sevice type fail!!!!!!!!!!\n");
  6324. }
  6325. break;
  6326. }
  6327. if (g_ProgHandleB4Rec != 0)
  6328. {
  6329. _DVBApp_CloseAllMenu();
  6330. AL_DB_EDBType_t DBType_ret = AL_DBTYPE_DVB_T;
  6331. AL_DB_ERecordType_t RecType = AL_RECTYPE_DVBTV;
  6332. AL_DB_GetRecordType(g_ProgHandleB4Rec, &DBType_ret, &RecType);
  6333. #if defined(CONFIG_DVB_SYSTEM) || defined(CONFIG_AUS_DVB_SYSTEM)
  6334. APP_RFType_en eRFType = APP_RF_TYPE_DVB_T;
  6335. AL_DB_EDBType_t DBType_Current =
  6336. APP_DVB_Playback_GetCurrentNetType();
  6337. if (DBType_Current != DBType_ret)
  6338. {
  6339. if (details.db_type == AL_DBTYPE_DVB_T)
  6340. {
  6341. eRFType = APP_RF_TYPE_DVB_T;
  6342. }
  6343. else if (details.db_type == AL_DBTYPE_DVB_C)
  6344. {
  6345. eRFType = APP_RF_TYPE_DVB_C;
  6346. }
  6347. else if (details.db_type == AL_DBTYPE_DVB_S)
  6348. {
  6349. eRFType = APP_RF_TYPE_DVB_S;
  6350. }
  6351. APP_GUIOBJ_Channel_SetRFTypeWithHdl(eRFType, g_ProgHandleB4Rec);
  6352. }
  6353. else
  6354. #endif
  6355. {
  6356. _DVBApp_Zapping(RecType, g_ProgHandleB4Rec, FALSE, 0, TRUE);
  6357. }
  6358. g_ProgHandleB4Rec = 0;
  6359. }
  6360. #endif
  6361. }
  6362. break;
  6363. case APP_DVB_GLOBAL_EVENT_PVRSCH:
  6364. {
  6365. if (DVBApp_GetPVRSwitchSRC() == TRUE)
  6366. {
  6367. //resend the timer PVR start message if source change is not finish
  6368. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, (APP_DVB_GLOBAL_EVENT_PVRSCH|PASS_TO_SYSAPP), dParam);
  6369. return 0;
  6370. }
  6371. AL_PR_details_t details;
  6372. memcpy((UINT8 *)&details, (UINT8 *)dParam, sizeof(AL_PR_details_t));
  6373. AL_DB_EDBType_t DBType_ret = AL_DBTYPE_DVB_T;
  6374. AL_DB_EDBType_t DBType_Current = AL_DBTYPE_DVB_T;
  6375. AL_DB_ERecordType_t RecType = AL_RECTYPE_DVBTV;
  6376. AL_RecHandle_t CurrentProgHandle;
  6377. /* get remider program */
  6378. AL_DB_GetRecordType(details.rem_details.handle, &DBType_ret, &RecType);
  6379. /* get current program handele */
  6380. AL_Setting_Reload(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL);
  6381. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  6382. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  6383. if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_C)
  6384. {
  6385. DBType_Current = AL_DBTYPE_DVB_C;
  6386. }
  6387. else if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_T)
  6388. {
  6389. DBType_Current = AL_DBTYPE_DVB_T;
  6390. }
  6391. else if (g_stChannelData.TV_Connection == APP_RF_TYPE_DVB_S)
  6392. {
  6393. DBType_Current = AL_DBTYPE_DVB_S;
  6394. }
  6395. CurrentProgHandle = APP_DVB_Playback_GetCurrentProgHandle(DBType_Current, AL_RECTYPE_DVBTV | AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA);
  6396. g_ProgHandleB4Rec = 0;
  6397. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  6398. {
  6399. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY);
  6400. }
  6401. /* zap prog */
  6402. if (details.rem_details.handle != CurrentProgHandle)
  6403. {
  6404. PVR_DEBF("handle ==== 0x%x\n", details.rem_details.handle);
  6405. PVR_DEBF(" CurrentProgHandle ==== 0x%x\n", CurrentProgHandle);
  6406. g_ProgHandleB4Rec = CurrentProgHandle;
  6407. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  6408. {
  6409. #ifdef SUPPORT_PVR_REMINDER_CONFIRM_SPEC
  6410. DVBApp_ResetPopup_Channel(); //close all menu before timer rec
  6411. _DVBApp_CloseAllMenu();
  6412. g_ProgHandleB4Rec = 0;
  6413. if (details.rem_type == AL_PR_SRV_REM)
  6414. {
  6415. if (u8MIDRecMode == MID_REC_MODE_MANUAL)
  6416. {
  6417. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_REC_FOR_REMINDER);
  6418. }
  6419. else
  6420. {
  6421. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_TSHIFT_FOR_REMINDER);
  6422. }
  6423. break;
  6424. }
  6425. else
  6426. {
  6427. if (u8MIDRecMode == MID_REC_MODE_MANUAL)
  6428. {
  6429. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_REC_FOR_TIMER_REC);
  6430. }
  6431. else
  6432. {
  6433. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_TSHIFT_FOR_TIMER_REC);
  6434. }
  6435. break;
  6436. }
  6437. #endif
  6438. if (u8MIDRecMode == MID_REC_MODE_MANUAL)
  6439. DVBApp_StopRecord();
  6440. else
  6441. DVBApp_StopTimeshift(TRUE);
  6442. }
  6443. _DVBApp_CloseAllMenu();
  6444. #if defined(CONFIG_DVB_SYSTEM) || defined(CONFIG_AUS_DVB_SYSTEM)
  6445. APP_RFType_en eRFType = APP_RF_TYPE_DVB_T;
  6446. if (DBType_Current != details.db_type)
  6447. {
  6448. if (details.db_type == AL_DBTYPE_DVB_T)
  6449. {
  6450. eRFType = APP_RF_TYPE_DVB_T;
  6451. }
  6452. else if (details.db_type == AL_DBTYPE_DVB_C)
  6453. {
  6454. eRFType = APP_RF_TYPE_DVB_C;
  6455. }
  6456. else if (details.db_type == AL_DBTYPE_DVB_S)
  6457. {
  6458. eRFType = APP_RF_TYPE_DVB_S;
  6459. }
  6460. APP_GUIOBJ_Channel_SetRFTypeWithHdl(eRFType,
  6461. details.rem_details.handle);
  6462. }
  6463. else
  6464. #endif
  6465. {
  6466. _DVBApp_Zapping(RecType, details.rem_details.handle, FALSE, 0, FALSE);
  6467. }
  6468. }
  6469. /* recorder */
  6470. if (details.rem_type == AL_PR_EVT_REM)
  6471. {
  6472. DVBApp_ResetPopup_Channel(); //close all menu before timer rec
  6473. _DVBApp_CloseAllMenu();
  6474. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)//for spec, stop current recording and start timer rec
  6475. {
  6476. if (u8MIDRecMode == MID_REC_MODE_MANUAL)
  6477. DVBApp_StopRecord();
  6478. else
  6479. DVBApp_StopTimeshift(TRUE);
  6480. }
  6481. AL_DB_GetRecordsTotalNum(DBType_ret, RecType, &u32TotalNum);
  6482. if (u32TotalNum == 0)
  6483. {
  6484. break;
  6485. }
  6486. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM))
  6487. {
  6488. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM);
  6489. }
  6490. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  6491. {
  6492. PVR_DEBF("%s is call.LINE : %d\n", __FUNCTION__, __LINE__);
  6493. }
  6494. else
  6495. {
  6496. AL_RecHandle_t hProg = AL_DB_INVALIDHDL;
  6497. if (MID_PlaybackGetCurProgHandle(NULL, &hProg) != MID_SUCCESS)
  6498. {
  6499. PVR_DEBF("%s is call.LINE : %d\n", __FUNCTION__, __LINE__);
  6500. PVR_DEBF("Error, get current program handle failed...\n");
  6501. hProg = AL_DB_INVALIDHDL;
  6502. }
  6503. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  6504. {
  6505. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO);
  6506. }
  6507. APP_GUIOBJ_DVB_PvrRec_SetTimerRecord(TRUE);
  6508. _APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurTime();
  6509. if (DVBApp_StartRecord(MID_REC_MODE_MANUAL) != SP_SUCCESS)
  6510. {
  6511. APP_GUIOBJ_DVB_PvrRec_SetTimerRecord(FALSE);
  6512. DVBApp_SetTVRadioSwap(FALSE);
  6513. g_ProgHandleB4Rec = 0;
  6514. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  6515. //sent to man app to call APP_WAKEUP_CompleteNotify()
  6516. MAINAPP_SendGlobalEvent(APP_GLOGAL_EVENT_PVR_TIEMRREC_CHECKSTANDBY, AL_POWER_STATE_OFF);
  6517. #endif
  6518. //need modify kai.wang
  6519. /*extern INT32 APP_GUIOBJ_DVB_TimerList_GetRecordingPR(AL_PR_details_t* details, int* PROffset);
  6520. extern AL_Return_t APP_GUIOBJ_DVB_TimerList_DeleteRecordingPR(int Param);
  6521. int iOffset = 0;
  6522. if (APP_GUIOBJ_DVB_TimerList_GetRecordingPR(NULL, &iOffset) == AL_SUCCESS)
  6523. {
  6524. APP_GUIOBJ_DVB_TimerList_DeleteRecordingPR(iOffset);
  6525. }*/
  6526. break;
  6527. }
  6528. //when event change, we must save it as soon as possible .for 0165167. by kai.wang
  6529. AL_PR_Update(0, 0);
  6530. //end
  6531. AL_SCH_details_t sch_detail;
  6532. al_uint32 CurTimeInSec = 0; //test
  6533. AL_Time_GetCurTimeInSecs(&CurTimeInSec);
  6534. memset(&sch_detail, 0, sizeof(AL_SCH_details_t));
  6535. sch_detail.sch_event = AL_SCH_TYPE_SINGLE | AL_SCH_TYPE_PRG_EXPIRE_SCH;
  6536. sch_detail.sch_snooze = 0;
  6537. /*when A event end time is B event start time, need take 5s to stop and start flow.*/
  6538. if (AL_PR_CheckEvtEndTime(details.rem_details.event_end_time_insec) == TRUE)
  6539. {
  6540. sch_detail.sch_time = details.rem_details.event_end_time_insec - 5; //for mantis 0156382
  6541. }
  6542. else
  6543. {
  6544. sch_detail.sch_time = details.rem_details.event_end_time_insec;
  6545. }
  6546. sch_detail.sch_user_para = (al_uint32)hProg;
  6547. printf("event_end_time_insec = %d\n", sch_detail.sch_time);
  6548. printf("current time = %d\n", CurTimeInSec);
  6549. AL_SCH_ScheduleEvent(&sch_detail, &stoprec_id, al_null);
  6550. APP_GUIOBJ_DVB_PvrRec_SetDurationTime(details.rem_details.event_end_time_insec - CurTimeInSec); //zhongbaoxing added for mantis 142788 @20110720
  6551. PVR_DEBF("%s %d\n", __FUNCTION__, __LINE__);
  6552. }
  6553. }
  6554. else
  6555. {
  6556. DVBApp_SetTVRadioSwap(FALSE);
  6557. g_ProgHandleB4Rec = 0;
  6558. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  6559. if(APP_WAKEUP_GetBootFlag() == TRUE)
  6560. {
  6561. APP_WAKEUP_RealPowerUp();
  6562. }
  6563. #endif
  6564. }
  6565. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  6566. ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift),
  6567. sizeof(g_stFeatureData.AutoTimeShift), &(g_stFeatureData.AutoTimeShift));
  6568. if (APP_PVR_TIMESHIFT_AUTO == g_stFeatureData.AutoTimeShift)
  6569. {
  6570. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  6571. }
  6572. }
  6573. break;
  6574. case APP_DVB_GLOBAL_EVENT_REMINDER_EXPIRE:
  6575. #ifdef SUB_CUSTOMER_Tianle
  6576. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC))
  6577. {
  6578. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC, APP_DVB_GLOBAL_EVENT_REMINDER_EXPIRE, 0);
  6579. }
  6580. #else
  6581. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST))
  6582. {
  6583. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST, APP_DVB_GLOBAL_EVENT_REMINDER_EXPIRE, 0);
  6584. }
  6585. #endif
  6586. break;
  6587. case APP_DVB_GLOBAL_EVENT_REMINDER_TIME_CHANGE:
  6588. AL_SCH_Handle_Time_Change(dParam);
  6589. UINT32 u32PopMsgDialogType = POPMSG_PROMPT_NO_PROG;
  6590. APP_GUIOBJ_PopMsg_GetMsgDialogType(&u32PopMsgDialogType);
  6591. if ((POPMSG_CONFIRM_REC_REMIDER_TIME == u32PopMsgDialogType)
  6592. ||(POPMSG_CONFIRM_REC_REMIDER_TIME_CONFIRM == u32PopMsgDialogType))
  6593. {
  6594. al_uint32 CurTimeInSec = 0;
  6595. if (AL_Time_GetCurTimeInSecs(&CurTimeInSec) == AL_SUCCESS)
  6596. {
  6597. if ((DVBApp_GetTimerRECStartTime() > CurTimeInSec+PR_NOTIFY_TIME_IN_SEC)
  6598. ||(CurTimeInSec > DVBApp_GetTimerRECStartTime()+PR_NOTIFY_TIME_IN_SEC))
  6599. {
  6600. //system time changed, cancle the REMINDER cut down pop
  6601. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_SYSTEM_TIME_CHANGED);
  6602. }
  6603. }
  6604. }
  6605. break;
  6606. case APP_GLOGAL_EVENT_PVR_ASKFORSTANDBY:
  6607. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRPOWER))
  6608. {
  6609. DVBApp_ResetPopup_Channel();
  6610. _DVBApp_CloseAllMenu();
  6611. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVRPOWER, 0);
  6612. }
  6613. break;
  6614. case APP_GLOGAL_EVENT_PVR_TIMESHIFT_STANDBY:
  6615. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_TIMESHIFT_STANDBY);
  6616. break;
  6617. case APP_GLOBAL_EVENT_PVR_INSERT_USB_POP:
  6618. _DVBApp_ShowPopup(DVB_APP_POP_MSG_INSERT_USB);
  6619. break;
  6620. case APP_GLOBAL_EVENT_PVR_INVALID_USB_POP:
  6621. _DVBApp_ShowPopup(DVB_APP_POP_MSG_INVALID_USB);
  6622. break;
  6623. case APP_GLOBAL_EVENT_PVR_INSERT_USB_CONFIRM:
  6624. _DVBApp_CloseAllMenu();
  6625. _DVBApp_ShowPopup(DVB_APP_POP_MSG_INSERT_USB_CONFIRM);
  6626. break;
  6627. case APP_GLOBAL_EVENT_PVR_INVALID_USB_CONFIRM:
  6628. _DVBApp_CloseAllMenu();
  6629. _DVBApp_ShowPopup(DVB_APP_POP_MSG_INVALID_USB_CONFIRM);
  6630. break;
  6631. #endif
  6632. #ifdef CONFIG_SUPPORT_AUDIO_CODEC_OVERLAY
  6633. case FW_AUDIO_LOADCODEC_OK:
  6634. printf("\n[%s:%d] Load audio codec ok \n\n",__FUNCTION__,__LINE__);
  6635. MID_PlaybackResetPrevAudioCodec();
  6636. break;
  6637. case FW_AUDIO_LOADCODEC_ERROR:
  6638. printf("\n[%s:%d] Load audio codec error \n\n",__FUNCTION__,__LINE__);
  6639. break;
  6640. #endif
  6641. case FW_MONITOR_TUNER_LOCKED:
  6642. if (APP_GUIOBJ_DVB_Playback_GetZappingState())
  6643. {
  6644. APP_GUIOBJ_DVB_Playback_SetZappingState(FALSE);
  6645. }
  6646. dvb_printf(" FW_MONITOR_TUNER_LOCKED event received\n");
  6647. //g_bMidHasUnmute = TRUE;
  6648. //bSetUnMuteFlag = TRUE;
  6649. APP_Video_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  6650. #ifdef CONFIG_SUPPORT_3D_EN
  6651. UINT32 value = TV_IDS_String_On;
  6652. _APP_GUIOBJ_3DMenu_GetForce2DAnother(&value);
  6653. DISP_3D_ModeChange_Status_t e3DModeChangeSt = DISP_3D_STATUS_RESET;
  6654. UINT32 u32Mode = 0;
  6655. AL_DB_ERecordType_t eRecordType;
  6656. #if 1
  6657. Boolean bShowLogo = DTV_FALSE;
  6658. bShowLogo = APP_GUIOBJ_DVB_Playback_GetShowLogoState();
  6659. #endif
  6660. MID_PlaybackGetCurProgHandle(&eRecordType, al_null);
  6661. if ((eRecordType == AL_RECTYPE_DVBRADIO) || (bShowLogo == TRUE))
  6662. {
  6663. APP_GUIOBJ_3DMenu_SetMode(TV_IDS_String_3DMODE_OFF);
  6664. }
  6665. else
  6666. {
  6667. MID_DISP_DTVGet3DModeChangeSt(&e3DModeChangeSt);
  6668. if (DISP_3D_STATUS_RESET == e3DModeChangeSt)
  6669. {
  6670. APP_GUIOBJ_3DMenu_SetMode(TV_IDS_String_3DMODE_OFF);
  6671. }
  6672. else if (DISP_3D_STATUS_ALWAYS_ON == e3DModeChangeSt)
  6673. {
  6674. APP_GUIOBJ_3DMenu_GetMode(&u32Mode);
  6675. if(value == TV_IDS_String_On)
  6676. {
  6677. //set 3D mode to Off
  6678. APP_GUIOBJ_3DMenu_SetModeNoOutPutStructure(u32Mode);
  6679. _APP_GUIOBJ_3DMenu_SetForce2DAnother(TV_IDS_String_On);
  6680. }
  6681. else
  6682. {
  6683. APP_GUIOBJ_3DMenu_SetMode(u32Mode);
  6684. }
  6685. }
  6686. else if(DISP_3D_STATUS_ONLY_2D3D_ALWAYS_ON == e3DModeChangeSt)
  6687. {
  6688. APP_GUIOBJ_3DMenu_GetMode(&u32Mode);
  6689. if(value == TV_IDS_String_On)
  6690. {
  6691. if(u32Mode == TV_IDS_String_3DMODE_2D23D)
  6692. {
  6693. APP_GUIOBJ_3DMenu_SetModeNoOutPutStructure(u32Mode);
  6694. _APP_GUIOBJ_3DMenu_SetForce2DAnother(TV_IDS_String_On);
  6695. }
  6696. else
  6697. {
  6698. if(bSet3DMode == DTV_TRUE)
  6699. {
  6700. bSet3DMode = DTV_FALSE;
  6701. }
  6702. else
  6703. {
  6704. APP_GUIOBJ_3DMenu_SetMode(TV_IDS_String_3DMODE_OFF);
  6705. }
  6706. }
  6707. //_APP_GUIOBJ_3DMenu_SetForce2DAnother(TV_IDS_String_On);
  6708. }
  6709. else if(u32Mode == TV_IDS_String_3DMODE_2D23D)//Force 2D is off
  6710. {
  6711. APP_GUIOBJ_3DMenu_SetMode(TV_IDS_String_3DMODE_2D23D);
  6712. }
  6713. else //if(u32Mode == TV_IDS_String_3DMODE_2D23D)
  6714. {
  6715. if(bSet3DMode == DTV_TRUE)
  6716. {
  6717. bSet3DMode = DTV_FALSE;
  6718. }
  6719. else
  6720. {
  6721. APP_GUIOBJ_3DMenu_SetMode(TV_IDS_String_3DMODE_OFF);
  6722. }
  6723. }
  6724. }
  6725. }
  6726. #endif
  6727. /* modify by qinhe for mantis 0011315 */
  6728. //APP_Video_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  6729. //MID_DISP_DTVInformDisplayPipe();
  6730. #ifdef CONFIG_SUPPORT_PVR
  6731. /*< modify by kai.wang*/
  6732. //MID_RecorderSetSignalEx(PRIMARY_REC_UNIT, MID_REC_SIGNAL_GOOD);
  6733. if (u8MidRecState == MID_REC_STATUS_PAUSE)
  6734. {
  6735. MID_RecorderPauseResume();
  6736. }
  6737. _DVBApp_Recorder_PauseResume();
  6738. #endif
  6739. //DVBApp_CheckProgramType(TRUE);
  6740. /*close Standby menu*/
  6741. //AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  6742. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO))
  6743. {
  6744. if(APP_GUIOBJ_SleepTimer_GetOpenStandby() == al_true)
  6745. {
  6746. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO);
  6747. if(APP_GUIOBJ_SleepTimer_GetSleepPopConflict() == TRUE)
  6748. {
  6749. APP_GUIOBJ_SleepTimer_SetSleepPopConflict(FALSE);
  6750. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_ATV,
  6751. (APP_GLOBAL_EVENT_SLEEP_TIMER_INFO|PASS_TO_SYSAPP), APP_POWERDOWN_SLEEP);
  6752. }
  6753. }
  6754. }
  6755. #if defined (CONFIG_SUPPORT_TTX ) && defined(CONFIG_SUPPORT_TTX_DISP_FOR_AUS)
  6756. APP_SetTTXTimer(0);
  6757. #endif
  6758. #ifdef CONFIG_SUPPORT_MHEG5
  6759. if (APP_Area_SupportDtg())
  6760. {
  6761. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB | OSD2CTRLMDL_MH5);
  6762. }
  6763. #endif
  6764. break;
  6765. case APP_GLOBAL_EVENT_CREATE_FATNET:
  6766. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVNET))
  6767. {
  6768. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FAVNET, 0);
  6769. }
  6770. break;
  6771. #ifdef CONFIG_SUPPORT_MHEG5
  6772. case APP_DVB_GLOBAL_EVENT_MHEG5_EXIST:
  6773. case APP_DVB_GLOBAL_EVENT_MHEG5_NOT_EXIST:
  6774. DVBApp_CheckProgramType(TRUE);
  6775. break;
  6776. case APP_DVB_GLOBAL_EVENT_MHEG5_BOOT_CAROUSEL_CHANGE:
  6777. {
  6778. al_bool bPsiMonState = FALSE;
  6779. AL_RecHandle_t hCurrProgHdl = MID_PsiMonQueryCurrentProgHdl();
  6780. AL_PSI_Monitor_GetState(&bPsiMonState);
  6781. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  6782. {
  6783. APP_DVB_Mheg5_Stop(MHEG5_STOP_ALL);
  6784. APP_DVB_Mheg5_Start(0);
  6785. }
  6786. if (bPsiMonState)
  6787. {
  6788. AL_PSI_Monitor_Stop(FALSE, FALSE);
  6789. if (hCurrProgHdl != AL_DB_INVALIDHDL)
  6790. {
  6791. AL_PSI_Monitor_Start(hCurrProgHdl, FALSE);
  6792. }
  6793. }
  6794. }
  6795. break;
  6796. #ifdef CONFIG_SUPPORT_MHEG5_ICS
  6797. case APP_DVB_GLOBAL_EVENT_MHEG5_ICS_PFG_SHOW:
  6798. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  6799. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  6800. if(g_stFeatureData.ChildLock == APP_SYSTEMLOCK_ON)
  6801. {
  6802. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  6803. }
  6804. else
  6805. {
  6806. MHEG5_ICS_NotifyGuidanceResponse(TRUE);
  6807. }
  6808. break;
  6809. case APP_DVB_GLOBAL_EVENT_MHEG5_ICS_PFG_HIDE:
  6810. break;
  6811. case APP_DVB_GLOBAL_EVENT_MHEG5_SET_SUBTITLE_MODE:
  6812. if(MHEG5_ICS_IsRunning() == FALSE)
  6813. {
  6814. if(dParam)
  6815. {
  6816. dvb_printf("APP_DVB_GLOBAL_EVENT_MHEG5_SET_SUBTITLE_MODE: show\n");
  6817. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  6818. }
  6819. else
  6820. {
  6821. dvb_printf("APP_DVB_GLOBAL_EVENT_MHEG5_SET_SUBTITLE_MODE: hide\n");
  6822. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB);
  6823. }
  6824. }
  6825. break;
  6826. #endif
  6827. #endif
  6828. case FW_MONITOR_TUNER_UNLOCKED:
  6829. //MID_PlaybackStartAVChannel(eServiceType, hProg);
  6830. #ifdef CONFIG_QSD
  6831. // To echo message with DTV has no signal for chip test using.
  6832. con_dbg_echo('G', 'O');
  6833. con_dbg_echo('O', 'D');
  6834. #endif
  6835. dvb_printf(" FW_MONITOR_TUNER_UNLOCKED event received\n");
  6836. if (APP_GUIOBJ_DVB_Playback_GetZappingState())
  6837. {
  6838. APP_GUIOBJ_DVB_Playback_SetZappingState(FALSE);
  6839. }
  6840. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_ALL);
  6841. /* reset set unmute flag */
  6842. bSetUnMuteFlag = FALSE;
  6843. g_bMidHasUnmute = FALSE;
  6844. g_SetPQFlag = FALSE;
  6845. //g_bNoSteamData = AL_DVB_MONITOR_VALUE_INVAILED;
  6846. #ifdef SUPPORT_DTV_SHOW_BLUESCREEN
  6847. g_bIsBlueScreen = FALSE;
  6848. #endif
  6849. {
  6850. AL_DB_ERecordType_t eRecordType;
  6851. if (MID_SUCCESS == MID_PlaybackGetCurProgHandle(&eRecordType, al_null))
  6852. {
  6853. if (eRecordType == AL_RECTYPE_DVBTV)
  6854. {
  6855. if ((MID_PlaybackIsPauseState() == 0)
  6856. #ifdef CONFIG_SUPPORT_PVR
  6857. && (DRV_SUCCESS != MID_RecorderIsCurRecording())
  6858. && (!MID_TSPLParser_GetThreadState())
  6859. #endif
  6860. )
  6861. {
  6862. //zhongbaoxing added for mantis 0166730 @20120224
  6863. APP_Video_SetMute(TRUE, TRUE, APP_MUTE_MODE_NO_SIGNALE, eSourType);
  6864. //MID_PlaybackClearScreenNow(); //note: this function is no use anymore because of the bandwidth issue.
  6865. }
  6866. #ifdef CONFIG_SUPPORT_3D_EN
  6867. APP_StorageSource_Type_t eStorageSourTypeT = APP_STORAGE_SOURCE_MAX;
  6868. eStorageSourTypeT = APP_Data_UserSetting_SourceTypeMappingToStorage(eSourType);
  6869. UINT32 value = TV_IDS_String_On;
  6870. _APP_GUIOBJ_3DMenu_GetForce2DAnother(&value);
  6871. DISP_3D_ModeChange_Status_t e3DModeChangeSt = DISP_3D_STATUS_RESET;
  6872. UINT32 u32Mode = 0;
  6873. MID_DISP_DTVGet3DModeChangeSt(&e3DModeChangeSt);
  6874. if (DISP_3D_STATUS_RESET == e3DModeChangeSt)
  6875. {
  6876. APP_GUIOBJ_3DMenu_GetMode(&u32Mode);
  6877. if(bSet3DMode == DTV_TRUE)
  6878. {
  6879. bSet3DMode = DTV_FALSE;
  6880. }
  6881. else
  6882. {
  6883. switch(u32Mode)
  6884. {
  6885. case TV_IDS_String_3DMODE_OFF:
  6886. case TV_IDS_String_3DMODE_AUTO:
  6887. case TV_IDS_String_3DMODE_2D23D:
  6888. case TV_IDS_String_3DMODE_SBS3D:
  6889. case TV_IDS_String_3DMODE_SBSH3D:
  6890. case TV_IDS_String_3DMODE_TAB3D:
  6891. case TV_IDS_String_3DMODE_FP3D:
  6892. u32Mode = SPAL_PQ_3DMODE_OFF;
  6893. break;
  6894. default:
  6895. u32Mode = SPAL_PQ_3DMODE_OFF;
  6896. break;
  6897. }
  6898. //APP_GUIOBJ_3DMenu_SetMode(u32Mode);
  6899. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0,
  6900. sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  6901. g_stPictureData.stPicture3DTab[eStorageSourTypeT].st3DMenu.Mode3D = u32Mode;
  6902. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  6903. ITEM_OFFSET(APP_SETTING_Picture_t, stPicture3DTab[eStorageSourTypeT].st3DMenu.Mode3D),
  6904. sizeof(g_stPictureData.stPicture3DTab[eStorageSourTypeT].st3DMenu.Mode3D),
  6905. &(g_stPictureData.stPicture3DTab[eStorageSourTypeT].st3DMenu.Mode3D));
  6906. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  6907. ITEM_OFFSET(APP_SETTING_Picture_t, stPicture3DTab[eStorageSourTypeT].st3DMenu.Mode3D),
  6908. sizeof(g_stPictureData.stPicture3DTab[eStorageSourTypeT].st3DMenu.Mode3D));
  6909. }
  6910. }
  6911. else if (DISP_3D_STATUS_ALWAYS_ON == e3DModeChangeSt)
  6912. {
  6913. APP_GUIOBJ_3DMenu_GetMode(&u32Mode);
  6914. if(value == TV_IDS_String_On)
  6915. {
  6916. //set 3D mode to Off
  6917. // _APP_GUIOBJ_3DMenu_SetForce2DAnother(TV_IDS_String_On);
  6918. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0,
  6919. sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  6920. g_stPictureData.stPicture3DTab[eStorageSourTypeT].st3DMenu.Force2D= SPAL_PQ_3DForce2D_ON;
  6921. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  6922. ITEM_OFFSET(APP_SETTING_Picture_t, stPicture3DTab[eStorageSourTypeT].st3DMenu.Force2D),
  6923. sizeof(g_stPictureData.stPicture3DTab[eStorageSourTypeT].st3DMenu.Force2D),
  6924. &(g_stPictureData.stPicture3DTab[eStorageSourTypeT].st3DMenu.Force2D));
  6925. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  6926. ITEM_OFFSET(APP_SETTING_Picture_t, stPicture3DTab[eStorageSourTypeT].st3DMenu.Force2D),
  6927. sizeof(g_stPictureData.stPicture3DTab[eStorageSourTypeT].st3DMenu.Force2D));
  6928. }
  6929. else
  6930. {
  6931. //dvb_printf("\n\n\n\n@@@@@@DTV No signal Always On\n\n\n");
  6932. switch(u32Mode)
  6933. {
  6934. case TV_IDS_String_3DMODE_OFF:
  6935. u32Mode = SPAL_PQ_3DMODE_OFF;
  6936. break;
  6937. case TV_IDS_String_3DMODE_AUTO:
  6938. u32Mode = SPAL_PQ_3DMODE_ATUO;
  6939. break;
  6940. case TV_IDS_String_3DMODE_2D23D:
  6941. u32Mode = SPAL_PQ_3DMODE_2D3D;
  6942. break;
  6943. case TV_IDS_String_3DMODE_SBS3D:
  6944. u32Mode = SPAL_PQ_3DMODE_SBS3D;
  6945. break;
  6946. case TV_IDS_String_3DMODE_TAB3D:
  6947. u32Mode = SPAL_PQ_3DMODE_TAB3D;
  6948. break;
  6949. case TV_IDS_String_3DMODE_FP3D:
  6950. u32Mode = SPAL_PQ_3DMODE_FP3D;
  6951. break;
  6952. default:
  6953. u32Mode = SPAL_PQ_3DMODE_ATUO;
  6954. break;
  6955. }
  6956. //APP_GUIOBJ_3DMenu_SetMode(u32Mode);
  6957. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0,
  6958. sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  6959. g_stPictureData.stPicture3DTab[eStorageSourTypeT].st3DMenu.Mode3D = u32Mode;
  6960. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  6961. ITEM_OFFSET(APP_SETTING_Picture_t, stPicture3DTab[eStorageSourTypeT].st3DMenu.Mode3D),
  6962. sizeof(g_stPictureData.stPicture3DTab[eStorageSourTypeT].st3DMenu.Mode3D),
  6963. &(g_stPictureData.stPicture3DTab[eStorageSourTypeT].st3DMenu.Mode3D));
  6964. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  6965. ITEM_OFFSET(APP_SETTING_Picture_t, stPicture3DTab[eStorageSourTypeT].st3DMenu.Mode3D),
  6966. sizeof(g_stPictureData.stPicture3DTab[eStorageSourTypeT].st3DMenu.Mode3D));
  6967. }
  6968. }
  6969. else if(DISP_3D_STATUS_ONLY_2D3D_ALWAYS_ON == e3DModeChangeSt)
  6970. {
  6971. APP_GUIOBJ_3DMenu_GetMode(&u32Mode);
  6972. if(value == TV_IDS_String_On)
  6973. {
  6974. //set 3D mode to Off
  6975. //_APP_GUIOBJ_3DMenu_SetForce2DAnother(TV_IDS_String_On);
  6976. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0,
  6977. sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  6978. g_stPictureData.stPicture3DTab[eStorageSourTypeT].st3DMenu.Force2D= SPAL_PQ_3DForce2D_ON;
  6979. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  6980. ITEM_OFFSET(APP_SETTING_Picture_t, stPicture3DTab[eStorageSourTypeT].st3DMenu.Force2D),
  6981. sizeof(g_stPictureData.stPicture3DTab[eStorageSourTypeT].st3DMenu.Force2D),
  6982. &(g_stPictureData.stPicture3DTab[eStorageSourTypeT].st3DMenu.Force2D));
  6983. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  6984. ITEM_OFFSET(APP_SETTING_Picture_t, stPicture3DTab[eStorageSourTypeT].st3DMenu.Force2D),
  6985. sizeof(g_stPictureData.stPicture3DTab[eStorageSourTypeT].st3DMenu.Force2D));
  6986. }
  6987. else if(u32Mode != TV_IDS_String_3DMODE_2D23D)
  6988. {
  6989. //APP_GUIOBJ_3DMenu_SetMode(TV_IDS_String_3DMODE_OFF);
  6990. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0,
  6991. sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  6992. g_stPictureData.stPicture3DTab[eStorageSourTypeT].st3DMenu.Mode3D = SPAL_PQ_3DMODE_OFF;
  6993. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  6994. ITEM_OFFSET(APP_SETTING_Picture_t, stPicture3DTab[eStorageSourTypeT].st3DMenu.Mode3D),
  6995. sizeof(g_stPictureData.stPicture3DTab[eStorageSourTypeT].st3DMenu.Mode3D),
  6996. &(g_stPictureData.stPicture3DTab[eStorageSourTypeT].st3DMenu.Mode3D));
  6997. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  6998. ITEM_OFFSET(APP_SETTING_Picture_t, stPicture3DTab[eStorageSourTypeT].st3DMenu.Mode3D),
  6999. sizeof(g_stPictureData.stPicture3DTab[eStorageSourTypeT].st3DMenu.Mode3D));
  7000. }
  7001. else
  7002. {
  7003. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0,
  7004. sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  7005. g_stPictureData.stPicture3DTab[eStorageSourTypeT].st3DMenu.Mode3D = SPAL_PQ_3DMODE_2D3D;
  7006. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  7007. ITEM_OFFSET(APP_SETTING_Picture_t, stPicture3DTab[eStorageSourTypeT].st3DMenu.Mode3D),
  7008. sizeof(g_stPictureData.stPicture3DTab[eStorageSourTypeT].st3DMenu.Mode3D),
  7009. &(g_stPictureData.stPicture3DTab[eStorageSourTypeT].st3DMenu.Mode3D));
  7010. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE,
  7011. ITEM_OFFSET(APP_SETTING_Picture_t, stPicture3DTab[eStorageSourTypeT].st3DMenu.Mode3D),
  7012. sizeof(g_stPictureData.stPicture3DTab[eStorageSourTypeT].st3DMenu.Mode3D));
  7013. }
  7014. }
  7015. #endif
  7016. }
  7017. }
  7018. }
  7019. #ifdef CONFIG_SUPPORT_PVR
  7020. /*< modify by kai.wang*/
  7021. //MID_RecorderSetSignalEx(PRIMARY_REC_UNIT, MID_REC_SIGNAL_BAD);
  7022. if (u8MidRecState == MID_REC_STATUS_START)
  7023. {
  7024. MID_RecorderPauseResume();
  7025. }
  7026. _DVBApp_Recorder_PauseResume();
  7027. #endif
  7028. //if (APP_Area_SupportDtg())
  7029. if(APP_Get_DTVHiddenScanState()!=TRUE)
  7030. {
  7031. AL_DB_EDBType_t eDBType = APP_DVB_Playback_GetCurrentNetType();
  7032. AL_RecHandle_t hCurrProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eDBType, (AL_RECTYPE_DVBTV|AL_RECTYPE_DVBRADIO|AL_RECTYPE_DVBDATA));
  7033. AL_PSI_Monitor_Stop(FALSE, FALSE);
  7034. if (hCurrProgHdl != AL_DB_INVALIDHDL)
  7035. {
  7036. AL_PSI_Monitor_Start(hCurrProgHdl, FALSE);
  7037. }
  7038. }
  7039. if (APP_GetPlaybackPauseState() == TRUE)
  7040. {
  7041. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  7042. {
  7043. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  7044. }
  7045. MID_PlaybackStreamResume(1);
  7046. APP_SetPlaybackPauseState(FALSE);
  7047. #ifdef CONFIG_SUPPORT_SUBTITLE
  7048. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  7049. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  7050. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  7051. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  7052. if (g_stUserInfoData.Subtitle == APP_SWITCH_ON)
  7053. {
  7054. #ifdef CONFIG_DTV_SUPPORT
  7055. AL_Subtitle_Type_t SubtitleType = AL_SUBTITLE_TYPE_MAX;
  7056. if (APP_GUIOBJ_SubTitle_GetType(&SubtitleType) == TRUE)
  7057. {
  7058. AL_Subtitle_SetFreeze(FALSE);
  7059. if (SubtitleType == AL_SUBTITLE_TYPE_TTX_SUBTITLE)
  7060. {
  7061. #ifdef CONFIG_SUPPORT_TTX
  7062. UINT32 u32DTVTTXZone = 0;
  7063. APP_GUIOBJ_Language_GetDTTZone(&u32DTVTTXZone);
  7064. AL_TTX_SetLanguage(u32DTVTTXZone);
  7065. #endif
  7066. }
  7067. }
  7068. #endif
  7069. }
  7070. #endif
  7071. }
  7072. #ifdef CONFIG_SUPPORT_TTX
  7073. #ifndef CONFIG_SUPPORT_TTX_DISP_FOR_AUS
  7074. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  7075. {
  7076. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  7077. }
  7078. AL_TTX_Reset();
  7079. #else
  7080. APP_SetTTXTimer(80);//8s
  7081. #endif
  7082. #endif
  7083. if (stDvbInst.bAppState != SYSTEM_RUNNING)
  7084. {
  7085. break;
  7086. }
  7087. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD))
  7088. {
  7089. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD);
  7090. }
  7091. #ifdef CONFIG_SUPPORT_SUBTITLE
  7092. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU))
  7093. {
  7094. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU);
  7095. }
  7096. #endif
  7097. #ifdef CONFIG_SUPPORT_PVR
  7098. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME))
  7099. {
  7100. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME);
  7101. }
  7102. #endif
  7103. if (APP_RF_TYPE_DVB_S == g_stChannelData.TV_Connection)
  7104. {
  7105. DVBApp_CheckProgramType(FALSE);
  7106. }
  7107. else
  7108. {
  7109. DVBApp_CheckProgramType(TRUE);
  7110. }
  7111. #ifdef AC_ON_AUTO_GET_TIME
  7112. if (g_fBackgroundGetTime == TRUE)
  7113. {
  7114. APP_WAKEUP_SetBootFlag(FALSE);
  7115. dvb_printf("\n ----- tuner unlock, back ground get time fail!!!\n");
  7116. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF);
  7117. }
  7118. #endif
  7119. break;
  7120. case FW_EPG_NOWNEXT_UPDATE_EVENT:
  7121. g_bForceProcessEventCbk = FALSE;
  7122. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  7123. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  7124. if(g_stFeatureData.ChildLock)
  7125. {
  7126. #if 0
  7127. //add for 0196870
  7128. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG))
  7129. {
  7130. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  7131. {
  7132. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  7133. }
  7134. }
  7135. #endif
  7136. AL_Event_t event_hd = (AL_Event_t)dParam;
  7137. al_uint8 bSignalState = al_false;
  7138. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  7139. if (bSignalState == AL_DVB_MONITOR_VALUE_TRUE && event_hd)
  7140. {
  7141. UINT8 rating = 0;
  7142. if (AL_Event_GetEventRatingByHdl(event_hd,&rating) == AL_SUCCESS)
  7143. {
  7144. if(APP_DVB_ParentalLock_CheckPrtRating(&rating))
  7145. {
  7146. APP_DVB_Playback_SetUnlock(FALSE);
  7147. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  7148. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  7149. if (eServiceType == AL_RECTYPE_DVBRADIO)
  7150. {
  7151. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  7152. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_STOP_PLAYBACK,
  7153. ( PLAYBACK_STOP_MHEG5 | PLAYBACK_KEEP_FRAMEBUF));
  7154. }
  7155. else
  7156. {
  7157. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  7158. DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_STOP_PLAYBACK,
  7159. (PLAYBACK_STOP_SUBTITLE|PLAYBACK_STOP_MHEG5));
  7160. }
  7161. /*#ifdef SUPPORT_PVR
  7162. if (MID_REC_STATUS_STOP != u8MidRecState)
  7163. {
  7164. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  7165. {
  7166. #ifdef SUPPORT_SPEC_PVR_RECORD// TEAC allow record while the program locked, however the others did not
  7167. if (DVBAPP_Pvr_GetRECPlayFlag() == TRUE)
  7168. {
  7169. DVBApp_StopTimeshift(FALSE);
  7170. }
  7171. #else
  7172. DVBApp_StopRecord();
  7173. #endif
  7174. }
  7175. else
  7176. {
  7177. #ifdef SUPPORT_SPEC_PVR_RECORD// TEAC allow record while the program locked, however the others did not
  7178. DVBApp_StopTimeshift(FALSE);
  7179. #else
  7180. DVBApp_StopTimeshift(TRUE);
  7181. #endif
  7182. }
  7183. }
  7184. #endif*/
  7185. if (!APP_MenuMgr_Exist_Main_Menu())
  7186. {
  7187. UINT32 u32PopMsgDialogType = POPMSG_PROMPT_NO_PROG;
  7188. APP_GUIOBJ_PopMsg_GetMsgDialogType(&u32PopMsgDialogType);
  7189. if((DVBApp_IsPopupExist(PLAYBACK_POPUP_PWD_LOCKED) == FALSE)
  7190. /*#ifdef SUPPORT_PVR
  7191. && (u32PopMsgDialogType != POPMSG_PROMPT_INITIAL_AUTOTIMESHIFT)
  7192. && (u32PopMsgDialogType != POPMSG_PROMPT_INITIAL_REC)
  7193. && (u32PopMsgDialogType != POPMSG_PROMPT_INITIAL_TIMESHIFT)
  7194. #endif*/
  7195. )
  7196. {
  7197. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  7198. }
  7199. }
  7200. }
  7201. }
  7202. }
  7203. }
  7204. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPGEXTEND))
  7205. {
  7206. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  7207. SYS_APP_DVB, DVB_GUIOBJ_EPGEXTEND,
  7208. FW_EPG_NOWNEXT_UPDATE_EVENT, 0);
  7209. }
  7210. else if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG))
  7211. {
  7212. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  7213. SYS_APP_DVB, DVB_GUIOBJ_EPG,
  7214. FW_EPG_NOWNEXT_UPDATE_EVENT, 0);
  7215. }
  7216. else if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  7217. {
  7218. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  7219. SYS_APP_DVB, DVB_GUIOBJ_PROGINFO,
  7220. FW_EPG_NOWNEXT_UPDATE_EVENT, 0);
  7221. }
  7222. break;
  7223. case FW_MONITOR_STREAM_NO_DATA:
  7224. dvb_printf(" FW_MONITOR_STREAM_NO_DATA event received\n");
  7225. /* reset set unmute flag */
  7226. g_bNoSteamData = TRUE;
  7227. bSetUnMuteFlag = FALSE;
  7228. g_bMidHasUnmute = FALSE;
  7229. g_SetPQFlag = FALSE;
  7230. #ifdef SUPPORT_DTV_SHOW_BLUESCREEN
  7231. g_bIsBlueScreen = FALSE;
  7232. #endif
  7233. /* add by qin.he on 2014/07/22 for mantis 23864 */
  7234. if(APP_Get_DTVHiddenScanState()!=TRUE)
  7235. {
  7236. AL_DB_EDBType_t eDBType = APP_DVB_Playback_GetCurrentNetType();
  7237. AL_RecHandle_t hCurrProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eDBType, (AL_RECTYPE_DVBTV|AL_RECTYPE_DVBRADIO|AL_RECTYPE_DVBDATA));
  7238. AL_PSI_Monitor_Stop(FALSE, FALSE);
  7239. if (hCurrProgHdl != AL_DB_INVALIDHDL)
  7240. {
  7241. AL_PSI_Monitor_Start(hCurrProgHdl, FALSE);
  7242. }
  7243. }
  7244. if(DVBApp_IsPopupExist(PLAYBACK_POPUP_PWD_LOCKED) == TRUE)
  7245. {
  7246. break;
  7247. }
  7248. #ifdef CONFIG_SUPPORT_MHEG5
  7249. if ((APP_Area_SupportDtg())
  7250. && (APP_DVB_Mheg5_GetBootCarouselStatus() != MHEG5_BOOT_CAROUSEL_NOT_EXISTED))
  7251. {
  7252. break;
  7253. }
  7254. else
  7255. #endif
  7256. #ifdef CONFIG_CIPLUS_SUPPORT
  7257. if (MID_DTVCI_GetAppMMIStatus())
  7258. {
  7259. break;
  7260. }
  7261. else
  7262. #endif
  7263. {
  7264. #ifdef CONFIG_SUPPORT_PVR
  7265. if (u8MidRecState == MID_REC_STATUS_START)
  7266. {
  7267. MID_RecorderPauseResume();
  7268. }
  7269. _DVBApp_Recorder_PauseResume();
  7270. #endif
  7271. if (APP_GetPlaybackPauseState() == TRUE)
  7272. {
  7273. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  7274. {
  7275. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  7276. }
  7277. MID_PlaybackStreamResume(1);
  7278. APP_SetPlaybackPauseState(FALSE);
  7279. #ifdef CONFIG_SUPPORT_SUBTITLE
  7280. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  7281. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  7282. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  7283. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  7284. if (g_stUserInfoData.Subtitle == APP_SWITCH_ON)
  7285. {
  7286. #ifdef CONFIG_DTV_SUPPORT
  7287. AL_Subtitle_Type_t SubtitleType = AL_SUBTITLE_TYPE_MAX;
  7288. if (APP_GUIOBJ_SubTitle_GetType(&SubtitleType) == TRUE)
  7289. {
  7290. AL_Subtitle_SetFreeze(FALSE);
  7291. #ifdef CONFIG_SUPPORT_TTX
  7292. if (SubtitleType == AL_SUBTITLE_TYPE_TTX_SUBTITLE)
  7293. {
  7294. UINT32 u32DTVTTXZone = 0;
  7295. APP_GUIOBJ_Language_GetDTTZone(&u32DTVTTXZone);
  7296. AL_TTX_SetLanguage(u32DTVTTXZone);
  7297. }
  7298. #endif
  7299. }
  7300. #endif
  7301. }
  7302. #endif
  7303. }
  7304. DVBApp_CheckProgramType(TRUE);
  7305. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_ALL);
  7306. }
  7307. break;
  7308. case FW_MONITOR_STREAM_HAS_DATA:
  7309. dvb_printf(" FW_MONITOR_STREAM_HAS_DATA event received\n");
  7310. #ifdef CONFIG_SUPPORT_PVR
  7311. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  7312. {
  7313. dvb_printf("===lxl test %s ,%d is called. now PVR is playing ===\n", __FUNCTION__,__LINE__);
  7314. break;
  7315. }
  7316. APP_GUIOBJ_DVB_PvrPlayInfo_SetTunerState(FALSE);
  7317. #endif
  7318. g_bNoSteamData = FALSE;
  7319. #ifdef CONFIG_SUPPORT_PVR
  7320. if (u8MidRecState == MID_REC_STATUS_PAUSE)
  7321. {
  7322. MID_RecorderPauseResume();
  7323. }
  7324. _DVBApp_Recorder_PauseResume();
  7325. #endif
  7326. DVBApp_CheckProgramType(TRUE);
  7327. if (eServiceType == AL_RECTYPE_DVBRADIO)
  7328. {
  7329. //DVBApp_CheckProgramType(TRUE);
  7330. }
  7331. else
  7332. {
  7333. APP_Video_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  7334. }
  7335. if (DVBApp_GetScrambleStatus() == PROG_STATUS_SCRAMBLE_CLEAR)
  7336. {
  7337. #ifdef CONFIG_SUPPORT_MHEG5
  7338. if (APP_Area_SupportDtg())
  7339. {
  7340. printf("\n [set mheg5 flag] FW_MONITOR_STREAM_HAS_DATA@@@@@@@@@@@@@dvb_app.c@@@@@@@@@@@@line=%d\n",__LINE__);
  7341. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_FORCE|OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5|OSD2CTRLMDL_SUB);
  7342. }
  7343. else
  7344. {
  7345. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  7346. }
  7347. #else
  7348. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  7349. #endif
  7350. }
  7351. break;
  7352. case FW_MONITOR_PARENTAL_LOCKED:
  7353. dvb_printf("FW_MONITOR_PARENTAL_LOCKED received!!\n");
  7354. #ifdef SUPPORT_DTV_SHOW_BLUESCREEN
  7355. g_bIsBlueScreen = FALSE;
  7356. #endif
  7357. g_bMidHasUnmute = FALSE;
  7358. if (APP_GUIOBJ_DVB_Playback_GetPlayState() == TRUE)
  7359. {
  7360. APP_DVB_ParentalLock_SetPrtRatinglock(TRUE);
  7361. if (eServiceType == AL_RECTYPE_DVBRADIO )
  7362. {
  7363. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  7364. (APP_DVB_GLOBAL_EVENT_STOP_PLAYBACK|PASS_TO_SYSAPP),
  7365. ( PLAYBACK_STOP_MHEG5 | PLAYBACK_KEEP_FRAMEBUF ));
  7366. }
  7367. else
  7368. {
  7369. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  7370. (APP_DVB_GLOBAL_EVENT_STOP_PLAYBACK|PASS_TO_SYSAPP),
  7371. ( PLAYBACK_STOP_SUBTITLE |PLAYBACK_STOP_MHEG5 ));
  7372. }
  7373. #ifdef CONFIG_SUPPORT_PVR
  7374. if (MID_REC_STATUS_STOP != u8MidRecState)
  7375. {
  7376. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  7377. {
  7378. #ifdef SUPPORT_SPEC_PVR_RECORD// TEAC allow record while the program locked, however the others did not
  7379. if (DVBAPP_Pvr_GetRECPlayFlag() == TRUE)
  7380. {
  7381. DVBApp_StopTimeshift(FALSE);
  7382. }
  7383. #else
  7384. DVBApp_StopRecord();
  7385. #endif
  7386. }
  7387. else
  7388. {
  7389. #ifdef SUPPORT_SPEC_PVR_RECORD//TEAC allow record while the program locked, however the others did not
  7390. DVBApp_StopTimeshift(FALSE);
  7391. #else
  7392. DVBApp_StopTimeshift(TRUE);
  7393. #endif
  7394. }
  7395. }
  7396. #ifdef CONFIG_SUPPORT_PVR
  7397. if (u8MidRecState == MID_REC_STATUS_START)
  7398. {
  7399. MID_RecorderPauseResume();
  7400. }
  7401. _DVBApp_Recorder_PauseResume();
  7402. #endif
  7403. #endif
  7404. if (APP_GetPlaybackPauseState() == TRUE)
  7405. {
  7406. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  7407. {
  7408. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  7409. }
  7410. MID_PlaybackStreamResume(1);
  7411. APP_SetPlaybackPauseState(FALSE);
  7412. #ifdef CONFIG_SUPPORT_SUBTITLE
  7413. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  7414. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  7415. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  7416. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  7417. if (g_stUserInfoData.Subtitle == APP_SWITCH_ON)
  7418. {
  7419. #ifdef CONFIG_DTV_SUPPORT
  7420. AL_Subtitle_Type_t SubtitleType = AL_SUBTITLE_TYPE_MAX;
  7421. if (APP_GUIOBJ_SubTitle_GetType(&SubtitleType) == TRUE)
  7422. {
  7423. AL_Subtitle_SetFreeze(FALSE);
  7424. #ifdef CONFIG_SUPPORT_TTX
  7425. if (SubtitleType == AL_SUBTITLE_TYPE_TTX_SUBTITLE)
  7426. {
  7427. UINT32 u32DTVTTXZone = 0;
  7428. APP_GUIOBJ_Language_GetDTTZone(&u32DTVTTXZone);
  7429. AL_TTX_SetLanguage(u32DTVTTXZone);
  7430. }
  7431. #endif
  7432. }
  7433. #endif
  7434. }
  7435. #endif
  7436. }
  7437. DVBApp_CheckProgramType(TRUE);
  7438. }
  7439. break;
  7440. case FW_MONITOR_PARENTAL_UNLOCKED:
  7441. dvb_printf("FW_MONITOR_PARENTAL_UNLOCKED is received!!\n");
  7442. g_SetPQFlag = TRUE;
  7443. APP_DVB_ParentalLock_SetPrtRatinglock(FALSE);
  7444. if (APP_GUIOBJ_DVB_Playback_GetPlayState() == FALSE)
  7445. {
  7446. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  7447. SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  7448. APP_DVB_INTRA_EVENT_START_PLAYBACK, 0);
  7449. }
  7450. DVBApp_CheckProgramType(TRUE);
  7451. #ifdef CONFIG_SUPPORT_MHEG5
  7452. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_FORCE|OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5 | OSD2CTRLMDL_SUB);
  7453. #else
  7454. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  7455. #endif
  7456. #ifdef CONFIG_SUPPORT_PVR
  7457. if (u8MidRecState == MID_REC_STATUS_PAUSE)
  7458. {
  7459. MID_RecorderPauseResume();
  7460. }
  7461. _DVBApp_Recorder_PauseResume();
  7462. #endif
  7463. break;
  7464. case FW_MONITOR_SERVICE_ONLY_AUDIO_SCRAMBLE:
  7465. dvb_printf("FW_MONITOR_SERVICE_ONLY_AUDIO_SCRAMBLE is received!!\n");
  7466. g_bScrambleFlag = PROG_STATUS_ONLY_AUDIO_SCRAMBLED;
  7467. g_bNoSteamData = FALSE;
  7468. DVBApp_CheckProgramType(TRUE);
  7469. break;
  7470. case FW_MONITOR_SERVICE_ONLY_VIDEO_SCRAMBLE:
  7471. #ifdef CONFIG_CI_SUPPORT
  7472. if (IsCAMExist()==FALSE)
  7473. {
  7474. printf("\n\n\nFW_MONITOR_SERVICE_ONLY_VIDEO_SCRAMBLE is received!!,No CAM Inserted!\n\n");
  7475. g_bNoSteamData = FALSE;
  7476. {
  7477. #ifdef CONFIG_SUPPORT_TTX
  7478. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  7479. {
  7480. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  7481. }
  7482. #endif
  7483. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_ALL);
  7484. }
  7485. #ifdef CONFIG_SUPPORT_PVR
  7486. if (u8MidRecState == MID_REC_STATUS_START)
  7487. {
  7488. MID_RecorderPauseResume();
  7489. }
  7490. _DVBApp_Recorder_PauseResume();
  7491. #endif
  7492. g_bScrambleFlag = PROG_STATUS_ONLY_VIDEO_SCRAMBLED;
  7493. DVBApp_CheckProgramType(TRUE);
  7494. }
  7495. else
  7496. {
  7497. printf("\n\n\n\nYibin.wang F=%s,L=%d==============================\n\n\n\n",__FUNCTION__,__LINE__);
  7498. printf("\n\n\nFW_MONITOR_SERVICE_ONLY_VIDEO_SCRAMBLE is received!!,CAM Inserted,Waiting 1sec!\n\n");
  7499. g_Audio_Scramble_Counter = AUDIO_SCRAMBLE_COUNT;
  7500. }
  7501. #endif //CONFIG_CI_SUPPORT
  7502. break;
  7503. case FW_MONITOR_SERVICE_VIDEO_AUDIO_SCRAMBLE:
  7504. printf("\n\n\nFW_MONITOR_SERVICE_VIDEO_AUDIO_SCRAMBLE is received!!\n\n");
  7505. g_bNoSteamData = FALSE;
  7506. {
  7507. #ifdef CONFIG_SUPPORT_TTX
  7508. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  7509. {
  7510. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  7511. }
  7512. #endif
  7513. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_ALL);
  7514. }
  7515. #ifdef CONFIG_SUPPORT_PVR
  7516. if (u8MidRecState == MID_REC_STATUS_START)
  7517. {
  7518. MID_RecorderPauseResume();
  7519. }
  7520. _DVBApp_Recorder_PauseResume();
  7521. #endif
  7522. g_bScrambleFlag = PROG_STATUS_AUDIO_VIDEO_SCRAMBLED;
  7523. DVBApp_CheckProgramType(TRUE);
  7524. break;
  7525. case FW_MONITOR_SERVICE_NO_SCRAMBLE:
  7526. printf("\n\n\nFW_MONITOR_SERVICE_NO_SCRAMBLE is received!!\n\n");
  7527. #ifdef CONFIG_CIPLUS_SUPPORT
  7528. if (APP_CIPLUS_IsProfileSource())
  7529. {
  7530. if (g_isMute)
  7531. {
  7532. break;
  7533. }
  7534. }
  7535. #endif
  7536. #ifdef CONFIG_CI_SUPPORT
  7537. if (g_Audio_Scramble_Counter!=0)
  7538. {
  7539. g_VIP_FINISH_Flg = TRUE;
  7540. g_Audio_Scramble_Counter = 0;
  7541. }
  7542. #if 1
  7543. else
  7544. {
  7545. if (g_VIP_FINISH_Flg==TRUE)
  7546. {
  7547. g_VIP_FINISH_Flg = FALSE;
  7548. }
  7549. }
  7550. #endif
  7551. #endif
  7552. g_bNoSteamData = FALSE;
  7553. g_bScrambleFlag = PROG_STATUS_SCRAMBLE_CLEAR;
  7554. g_SetPQFlag = TRUE;
  7555. DVBApp_CheckProgramType(TRUE);
  7556. #ifdef CONFIG_SUPPORT_PVR
  7557. if (u8MidRecState == MID_REC_STATUS_PAUSE)
  7558. {
  7559. MID_RecorderPauseResume();
  7560. }
  7561. _DVBApp_Recorder_PauseResume();
  7562. #endif
  7563. /*add by xm.zeng on 2013/9/23.
  7564. sometimes the video is freezed, subtitle is updated.*/
  7565. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  7566. {
  7567. #ifdef CONFIG_SUPPORT_MHEG5
  7568. printf("\n [set mheg5 flag] FW_MONITOR_SERVICE_NO_SCRAMBLE@@@@@@@@@@@@@dvb_app.c@@@@@@@@@@@@line=%d\n",__LINE__);
  7569. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_FORCE|OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5|OSD2CTRLMDL_SUB);
  7570. #else
  7571. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  7572. #endif
  7573. }
  7574. break;
  7575. case FW_MONITOR_AUDIO_UPDATE:
  7576. dvb_printf("FW_MONITOR_AUDIO_UPDATE is received!!\n");
  7577. APP_GUIOBJ_DVB_MultiAud_Update(MULTIAUDIO_UPDATE);
  7578. #ifdef CONFIG_SUPPORT_PVR
  7579. if (APP_GUIOBJ_DVB_PvrRec_PidRemap() != PVR_MSG_SUCCESS)
  7580. {
  7581. dvb_printf("\n MultiAud_Update to remap pid fail!!!\n");
  7582. }
  7583. #endif
  7584. DVBApp_CheckProgramType(TRUE);
  7585. break;
  7586. case FW_MONITOR_TELETEXT_UPDATE:
  7587. dvb_printf("FW_MONITOR_TELETEXT_UPDATE is received !!\n\n");
  7588. #ifdef CONFIG_SUPPORT_TTX
  7589. eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  7590. if(eSourType != APP_SOURCE_DTV || eServiceType == AL_RECTYPE_DVBRADIO)
  7591. {
  7592. break;
  7593. }
  7594. else
  7595. {
  7596. /**< get digital TTX language index from EEPROM */
  7597. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  7598. ITEM_OFFSET(APP_SETTING_Feature_t, DigitalTTLang),
  7599. sizeof(g_stFeatureData.DigitalTTLang),&(g_stFeatureData.DigitalTTLang));
  7600. pref_iso639 = APP_Language_GetISO639ByIndx(g_stFeatureData.DigitalTTLang, APP_DATA_LANG_TYPE_TELETEXT);
  7601. if(pref_iso639 == al_null)
  7602. {
  7603. pref_iso639 = APP_Language_GetISO639_2ByIndx(g_stFeatureData.DigitalTTLang, APP_DATA_LANG_TYPE_TELETEXT);
  7604. }
  7605. if((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)))
  7606. {
  7607. break;
  7608. }
  7609. if(AL_TTX_Stop() == AL_SUCCESS)
  7610. {
  7611. AL_TTX_Start(AL_TTX_SOURCE_TYPE_DIGITAL, pref_iso639);
  7612. }
  7613. #ifdef CONFIG_SUPPORT_SUBTITLE
  7614. /**< get current subtitle on/off status from EEPROM */
  7615. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  7616. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  7617. if(g_stUserInfoData.Subtitle == 1)
  7618. {
  7619. MID_PlaybackProgState_t progstate = MID_PLAYBK_PROG_STATE_REPLACE;
  7620. progstate = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL);
  7621. /*add by xm.zeng on 2013/8/22 for mantis id:0011461*/
  7622. if((progstate != MID_PLAYBK_PROG_STATE_NORMAL)
  7623. && (progstate != MID_PLAYBK_PROG_STATE_VIDEO_AVC)
  7624. && (progstate != MID_PLAYBK_PROG_STATE_VIDEO_MPEG4))
  7625. {
  7626. break;
  7627. }
  7628. if(!(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)))
  7629. {
  7630. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE|OSD2CTRLMDL_SUB);
  7631. }
  7632. }
  7633. #endif
  7634. }
  7635. #endif
  7636. break;
  7637. case FW_MONITOR_SUBTITLE_UPDATE:
  7638. dvb_printf(" FW_MONITOR_SUBTITLE_UPDATE is received !!\n\n");
  7639. #ifdef CONFIG_SUPPORT_SUBTITLE
  7640. eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  7641. if(eSourType != APP_SOURCE_DTV || eServiceType == AL_RECTYPE_DVBRADIO)
  7642. {
  7643. break;
  7644. }
  7645. else
  7646. {
  7647. /**< get current subtitle on/off status from EEPROM */
  7648. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  7649. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  7650. if(g_stUserInfoData.Subtitle == 1)
  7651. {
  7652. MID_PlaybackProgState_t progstate = MID_PLAYBK_PROG_STATE_REPLACE;
  7653. progstate = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL);
  7654. /*add by xm.zeng on 2013/8/22 for mantis id:0011461*/
  7655. if((progstate != MID_PLAYBK_PROG_STATE_NORMAL)
  7656. && (progstate != MID_PLAYBK_PROG_STATE_VIDEO_AVC)
  7657. && (progstate != MID_PLAYBK_PROG_STATE_VIDEO_MPEG4))
  7658. {
  7659. break;
  7660. }
  7661. #ifdef CONFIG_SUPPORT_TTX
  7662. if(!(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)))
  7663. #endif
  7664. {
  7665. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE|OSD2CTRLMDL_SUB);
  7666. }
  7667. }
  7668. }
  7669. #endif
  7670. break;
  7671. case APP_DVB_GLOBAL_EVENT_OSD2_UPDATE:
  7672. dvb_printf("APP_DVB_GLOBAL_EVENT_OSD2_UPDATE is received!!\n\n");
  7673. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  7674. if (bSignalState != AL_DVB_MONITOR_VALUE_TRUE)//force to tuner locked
  7675. {
  7676. al_uint8 u8DVBMonState = AL_DVB_MONITOR_VALUE_TRUE;
  7677. AL_DVB_Monitor_SetState(AL_DVB_MONITOR_STATE_SIGNAL, &u8DVBMonState);
  7678. }
  7679. #ifdef CONFIG_SUPPORT_PVR
  7680. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  7681. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  7682. {
  7683. break;
  7684. }
  7685. #endif
  7686. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_FORCE | OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5 | OSD2CTRLMDL_SUB);
  7687. break;
  7688. //zhongbaoxing added for mantis 0164871 @20120105 +++
  7689. #ifdef CONFIG_SUPPORT_MHEG5
  7690. case APP_DVB_GLOBAL_EVENT_CLEAR_POPUP:
  7691. if (TRUE == APP_DVB_Mheg5_GetMheg5DisplayStatus())
  7692. {
  7693. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  7694. if (bSignalState != AL_DVB_MONITOR_VALUE_TRUE)//force to tuner locked
  7695. {
  7696. al_uint8 DVBMonState = AL_DVB_MONITOR_VALUE_TRUE;
  7697. AL_DVB_Monitor_SetState(AL_DVB_MONITOR_STATE_SIGNAL, &DVBMonState);
  7698. }
  7699. }
  7700. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE, UI_EVENT_NULL);
  7701. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE_SERVICE_NOT_RUNNING, UI_EVENT_NULL);
  7702. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE_LOAD_MHEG5, UI_EVENT_NULL);
  7703. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE, UI_EVENT_NULL);
  7704. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  7705. break;
  7706. #endif
  7707. #if defined(CONFIG_CIPLUS_SUPPORT) && defined(CONFIG_SUPPORT_MHEG5)
  7708. case APP_DVB_GLOBAL_EVENT_CI_START_MHEG5:
  7709. {
  7710. dvb_printf("APP_DVB_GLOBAL_EVENT_CI_START_MHEG5\n");
  7711. APP_DVB_Mheg5_SetMheg5DisplayStatus(TRUE);
  7712. }
  7713. break;
  7714. case APP_DVB_GLOBAL_EVENT_CI_STOP_MHEG5:
  7715. {
  7716. dvb_printf("APP_DVB_GLOBAL_EVENT_CI_STOP_MHEG5\n");
  7717. APP_SETTING_UserInfo_t stUserInfoData;
  7718. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  7719. sizeof(APP_SETTING_UserInfo_t), &(stUserInfoData));
  7720. /* Stop MHEG Engine if it's enabled */
  7721. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  7722. {
  7723. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_MH5);
  7724. }
  7725. /* Enable Subtitle if it was open */
  7726. if (stUserInfoData.Subtitle)
  7727. {
  7728. dvb_printf("Turn on subtitle\n");
  7729. DVBApp_DataApplicationSwitch(
  7730. OSD2CTRLMDL_ENABLE|OSD2CTRLMDL_SUB);
  7731. }
  7732. /* Enable Subtitle OSD if is was disable */
  7733. mid_sub_dtv_show(1);
  7734. /* Reset variable */
  7735. APP_DVB_Mheg5_SetMheg5DisplayStatus(FALSE);
  7736. }
  7737. break;
  7738. case APP_DVB_GLOBAL_EVENT_SUPPRESS_MHEG_GRAPHICS:
  7739. {
  7740. dvb_printf("APP_DVB_GLOBAL_EVENT_SUPPRESS_MHEG_GRAPHICS\n");
  7741. DVBApp_ApplyAppMMIDisplay();
  7742. }
  7743. break;
  7744. case APP_DVB_GLOBAL_EVENT_SET_SUBTITLE_MODE:
  7745. {
  7746. dvb_printf("APP_DVB_GLOBAL_EVENT_SET_SUBTITLE_MODE\n");
  7747. DVBApp_ApplyAppMMIDisplay();
  7748. }
  7749. break;
  7750. #endif
  7751. #ifdef CONFIG_SUPPORT_MHEG5
  7752. case FM_DTV_AUDIO_STARTED:
  7753. case FM_DTV_AUDIO_SAMPLE_STOPPED:
  7754. case FM_DTV_AUDIO_STOPPED:
  7755. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  7756. {
  7757. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, 0);
  7758. }
  7759. break;
  7760. #endif
  7761. case FW_MONITOR_SERTYPE_CHANGED:
  7762. MID_PlaybackGetCurProgHandle(al_null, &hCurrProgHandle);
  7763. if (hCurrProgHandle != AL_DB_INVALIDHDL)
  7764. {
  7765. AL_DB_ERecordType_t eSrvType = (AL_DB_ERecordType_t)dParam;
  7766. APP_DVB_Playback_SetCurrServiceType(eNetType, eSrvType);
  7767. APP_DVB_Playback_SetCurrentProgHandle(eNetType,eSrvType,hCurrProgHandle);
  7768. }
  7769. _DVBApp_SendServRefleshMsg();
  7770. SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, FW_MONITOR_UPDATE_SERVICE,0);
  7771. break;
  7772. case FW_MONITOR_REMOVE_SERVICE:
  7773. //_DVBApp_ShowPopup(DVB_APP_POP_MSG_SERVICE_REMOVE);
  7774. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR)
  7775. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR)
  7776. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST)
  7777. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST)
  7778. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG)
  7779. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNRENAME)
  7780. #ifdef CONFIG_SUPPORT_PVR
  7781. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMEREDIT)
  7782. #endif
  7783. )
  7784. {
  7785. if(DVBApp_GetUnstableState() == FALSE)
  7786. {
  7787. DVBApp_SetUnstableState(TRUE);
  7788. }
  7789. dvb_printf("Post Process The Unstable Services\n\n");
  7790. break;
  7791. }
  7792. DVBApp_RemoveUnstableService();
  7793. // here not break
  7794. case FW_MONITOR_ADD_SERVICE:
  7795. case FW_MONITOR_UPDATE_SERLCN:
  7796. //_DVBApp_ShowPopup(DVB_APP_POP_MSG_NEW_SERVICE);
  7797. #ifdef SUPPORT_LCN
  7798. /* force process LCN if added service by PSI Monitor */
  7799. #ifdef SUPPORT_DVBS_LCN
  7800. if (eNetType == AL_DBTYPE_DVB_T || eNetType == AL_DBTYPE_DVB_C|| eNetType == AL_DBTYPE_DVB_S)
  7801. #else
  7802. if (eNetType == AL_DBTYPE_DVB_T || eNetType == AL_DBTYPE_DVB_C)
  7803. #endif
  7804. {
  7805. DBLCNConfInfo_t *pLcnConf = AL_LCN_GetLCNConfChannel();
  7806. LCN_PreJudgeLCN();
  7807. LCN_QueryLCNConflict(pLcnConf);
  7808. if (pLcnConf->ConfCount > 0)
  7809. {
  7810. LCN_AutoAssignConflictLCN();
  7811. }
  7812. LCN_PostJudgeLCN();
  7813. }
  7814. #endif
  7815. APP_DVB_ChannelOrderChecking();
  7816. APP_DVB_DataSavingToDB(eNetType);
  7817. _DVBApp_SendServRefleshMsg();
  7818. break;
  7819. #ifdef SUPPORT_DYNAMIC_MULTIPLEXES
  7820. case FW_MONITOR_OTHERTP_SERVICE_FOUND:
  7821. {
  7822. UINT16 u16Num;
  7823. AL_PSI_Monitor_GetOtherTpServList(NULL,NULL,&u16Num);
  7824. _DVBApp_ShowPopup(DVB_APP_POP_MSG_OTH_TP_NEW_SERVICE);
  7825. }
  7826. break;
  7827. #endif
  7828. case FW_MONITOR_SERVICE_MOVE:
  7829. _DVBApp_ServiceMove();
  7830. break;
  7831. case FW_MONITOR_REPLACE_SERVICE:
  7832. {
  7833. dvb_printf("[%s:%d] FW_MONITOR_REPLACE_SERVICE !!!!!!!!!!!!!\n",__FUNCTION__,__LINE__);
  7834. AL_RecHandle_t hReplaceProg = AL_DB_INVALIDHDL;
  7835. hReplaceProg = (AL_RecHandle_t)dParam;
  7836. _DVBApp_Zapping(eServiceType, hReplaceProg, TRUE, FW_MONITOR_REPLACE_SERVICE, TRUE);
  7837. }
  7838. break;
  7839. case FW_MONITOR_REPLACE_SIMULCASE_SERVICE:
  7840. dvb_printf("[%s:%d] FW_MONITOR_REPLACE_SIMULCASE_SERVICE !!!!!!!!!!!!!\n",__FUNCTION__,__LINE__);
  7841. _DVBApp_SimulcaseDispose(dParam);
  7842. break;
  7843. #ifdef SUPPORT_CHANGE_TS_DYNAMICALLY
  7844. case FW_MONITOR_TS_CHANGED:
  7845. dvb_printf("[%s:%d] FW_MONITOR_TS_CHANGED !!!!!!!!!!!!!!!!\n\n",__FUNCTION__,__LINE__);
  7846. #ifdef CONFIG_SUPPORT_PVR
  7847. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  7848. {
  7849. DVBApp_StopRecord();
  7850. }
  7851. else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode) ||
  7852. (MID_REC_MODE_AUTO == u8MIDRecMode))
  7853. {
  7854. DVBApp_StopTimeshift(TRUE);
  7855. if (APP_PVR_TIMESHIFT_AUTO == u8AutoTimeShift)
  7856. {
  7857. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  7858. }
  7859. }
  7860. #endif
  7861. if(APP_Get_DTVHiddenScanState()!=TRUE)
  7862. {
  7863. if (APP_MenuMgr_Exist_Factory_Menu())
  7864. {
  7865. APP_MenuMgr_Exit_Factory_Menu();
  7866. }
  7867. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  7868. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  7869. #ifdef CONFIG_DVB_SYSTEM
  7870. if((g_stChannelData.Country == AREA_NORWAY) && ((dParam & 0xFFFF) != 0x2242))
  7871. {
  7872. dvb_printf("[%s:%d]no scan for ts change , county = %d, OriNetId = 0x%x \n",__FUNCTION__,__LINE__,g_stChannelData.Country,dParam);
  7873. break;
  7874. }
  7875. #endif
  7876. if(APP_Get_DTVTSChangeNeedScanState(dParam)!=TRUE)
  7877. {
  7878. dvb_printf("[%s:%d]no scan for ts change ,\n",__FUNCTION__,__LINE__);
  7879. break;
  7880. }
  7881. APP_DTV_ScanProcess_TSChange();
  7882. }
  7883. break;
  7884. #endif
  7885. case FW_MONITOR_NEW_TSID:
  7886. //case UI_EVENT_RED:
  7887. /* pop up msg for user to start channel search */
  7888. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  7889. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  7890. #ifdef CONFIG_DVB_SYSTEM
  7891. if (AREA_NORWAY == g_stChannelData.Country)
  7892. {
  7893. _DVBApp_Exit_All_Menu();
  7894. _DVBApp_ShowPopup(DVB_APP_POP_MSG_UPDATE_TSID);
  7895. }
  7896. #endif
  7897. //SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, FW_MONITOR_NEW_TSID, 0);
  7898. break;
  7899. case FW_MONITOR_TIME_UPDATE:
  7900. {
  7901. al_uint32 TimeInSec = 0;
  7902. AL_Time_t time;
  7903. memset(&time, 0, sizeof(time));
  7904. AL_Time_MjdToYmd(AL_Time_GetRawMjd(),&time.Year, &time.Month, &time.Day);
  7905. AL_Time_GetRawTime(&time.Hour, &time.Min, &time.Sec);
  7906. AL_Time_DateToSecs(&time, &TimeInSec);
  7907. tv_SetBaseTimetoSystem(TimeInSec);
  7908. }
  7909. #ifdef CONFIG_SUPPORT_PVR
  7910. #ifdef SUB_CUSTOMER_Tianle
  7911. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC))
  7912. {
  7913. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC,
  7914. APP_GLOBAL_EVENT_REFRESH_DATA, 0);
  7915. }
  7916. #else
  7917. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST))
  7918. {
  7919. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST,
  7920. APP_GLOBAL_EVENT_REFRESH_DATA, 0);
  7921. }
  7922. #endif
  7923. #endif
  7924. break;
  7925. case FW_MONITOR_FIND_NEW_TPLIST:
  7926. {
  7927. /* got the freq list which need tune */
  7928. 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");
  7929. _DVBApp_Exit_All_Menu();
  7930. APP_DTV_ScanSetFreqList(dParam);
  7931. APP_GUIOBJ_ScanProcess_SetCurrentSearchMode(SEARCH_D_FULL_FREQ_LIST_MODE);
  7932. APP_DTV_ScanProcess_Start(SEARCH_D_FULL_FREQ_LIST_MODE);
  7933. }
  7934. break;
  7935. case APP_DVB_GLOBAL_EVENT_NO_SIGNAL:
  7936. #ifdef CONFIG_QSD
  7937. // TV doesn't need to show no signal osd for qsd chip test.
  7938. return 0;
  7939. #endif
  7940. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_ALL);
  7941. if (MID_PlaybackIsPauseState() == 0) // move to here for mantis 0158116
  7942. {
  7943. #ifndef SUPPORT_DTV_SHOW_BLUESCREEN
  7944. //MID_PlaybackClearScreenNow();
  7945. #endif
  7946. }
  7947. #ifdef CONFIG_SUPPORT_PVR
  7948. if (u8MidRecState == MID_REC_STATUS_START)
  7949. {
  7950. MID_RecorderPauseResume();
  7951. }
  7952. _DVBApp_Recorder_PauseResume();
  7953. #endif
  7954. #if 0
  7955. if(APP_Get_DTVHiddenScanState()!=TRUE)
  7956. {
  7957. MID_PsiMonStop(FALSE);
  7958. MID_PsiMonStart();
  7959. }
  7960. #else
  7961. if(APP_Get_DTVHiddenScanState()!=TRUE)
  7962. {
  7963. AL_DB_EDBType_t eDBType = APP_DVB_Playback_GetCurrentNetType();
  7964. AL_RecHandle_t hCurrProgHdl = APP_DVB_Playback_GetCurrentProgHandle(eDBType, (AL_RECTYPE_DVBTV|AL_RECTYPE_DVBRADIO|AL_RECTYPE_DVBDATA));
  7965. AL_PSI_Monitor_Stop(FALSE, FALSE);
  7966. if (hCurrProgHdl != AL_DB_INVALIDHDL)
  7967. {
  7968. AL_PSI_Monitor_Start(hCurrProgHdl, FALSE);
  7969. }
  7970. }
  7971. #endif
  7972. /* if TT Menu exist, first close it */
  7973. #ifdef CONFIG_SUPPORT_TTX
  7974. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  7975. {
  7976. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  7977. }
  7978. #endif
  7979. if (stDvbInst.bAppState != SYSTEM_RUNNING)
  7980. {
  7981. break;
  7982. }
  7983. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  7984. {
  7985. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  7986. }
  7987. #ifdef CONFIG_SUPPORT_SUBTITLE
  7988. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU))
  7989. {
  7990. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU);
  7991. }
  7992. #endif
  7993. if (APP_GetPlaybackPauseState() == TRUE)
  7994. {
  7995. MID_PlaybackStreamResume(1);
  7996. APP_SetPlaybackPauseState(FALSE);
  7997. }
  7998. #ifdef SUPPORT_DTV_SHOW_BLUESCREEN
  7999. if (g_stSetupData.BlueScreen == APP_SWITCH_ON)
  8000. {
  8001. g_bIsBlueScreen = TRUE;
  8002. }
  8003. #endif
  8004. DVBApp_CheckProgramType(TRUE);
  8005. break;
  8006. case APP_GLOBAL_EVENT_SET_UNMUTE:
  8007. {
  8008. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  8009. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  8010. if (eServiceType == AL_RECTYPE_DVBRADIO || eServiceType == AL_RECTYPE_DVBDATA)
  8011. {
  8012. APP_Audio_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  8013. }
  8014. else
  8015. {
  8016. APP_Video_SetMute(FALSE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  8017. }
  8018. break;
  8019. }
  8020. case APP_DVB_GLOBAL_EVENT_SET_UNMUTE:
  8021. dvb_printf(" APP_DVB_GLOBAL_EVENT_SET_UNMUTE event received\n");
  8022. /* dtv, search all, when switch to scan analog, tvfe will send show snow525,
  8023. * but current source is dtv, so FormatChangeCallback() will send this message,
  8024. * judge here, when scan, do nothing, has side effect?
  8025. */
  8026. if (!AL_CS_IsStop())
  8027. {
  8028. break;
  8029. }
  8030. #if 0//shiting.liao mark for 0020236:stop mheg5 ts,first show "no signal",then program stop at last picture
  8031. /* add by qinhe for signal present message received too late */
  8032. {
  8033. MID_PlaybackProgState_t progstate = MID_PLAYBK_PROG_STATE_NORMAL;
  8034. progstate = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL);
  8035. if ((g_bNoSteamData == FALSE) && (progstate != MID_PLAYBK_PROG_STATE_TEMP_SERVICE)
  8036. && (progstate != MID_PLAYBK_PROG_STATE_NOT_RUNNING))
  8037. {
  8038. al_uint8 uDVBMonState = AL_DVB_MONITOR_VALUE_TRUE;
  8039. AL_DVB_Monitor_SetState(AL_DVB_MONITOR_STATE_SIGNAL, &uDVBMonState);
  8040. }
  8041. }
  8042. #endif
  8043. if ((APP_SOURCE_DTV == eMidSourType) || (APP_SOURCE_RADIO == eMidSourType))
  8044. {
  8045. g_bMidHasUnmute = TRUE;
  8046. bSetUnMuteFlag = TRUE;
  8047. DVBApp_CheckProgramType(TRUE);
  8048. if(APP_SOURCE_DTV == eMidSourType)
  8049. {
  8050. #if defined(CONFIG_CIPLUS_SUPPORT) && defined(CONFIG_SUPPORT_MHEG5)
  8051. DVBApp_ApplyAppMMIDisplay();
  8052. #endif
  8053. }
  8054. }
  8055. break;
  8056. case APP_DVB_GLOBAL_EVENT_SERVICE_NOT_AVAILABLE_CLEAR:
  8057. #ifdef CONFIG_SUPPORT_PVR
  8058. if (u8MidRecState == MID_REC_STATUS_PAUSE)
  8059. {
  8060. MID_RecorderPauseResume();
  8061. }
  8062. _DVBApp_Recorder_PauseResume();
  8063. #endif
  8064. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE))
  8065. {
  8066. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE, UI_EVENT_NULL);
  8067. }
  8068. #ifdef CONFIG_SUPPORT_MHEG5
  8069. if (APP_Area_SupportDtg())
  8070. {
  8071. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB | OSD2CTRLMDL_MH5);
  8072. }
  8073. else
  8074. {
  8075. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  8076. }
  8077. #else
  8078. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  8079. #endif
  8080. DVBApp_CheckProgramType(TRUE);
  8081. break;
  8082. case APP_DVB_GLOBAL_EVENT_SERVICE_VIDEO_NOT_SUPPORT:
  8083. case APP_DVB_GLOBAL_EVENT_SERVICE_VIDEO_NOT_SUPPORT_CLEAR:
  8084. case APP_DVB_GLOBAL_EVENT_PARENTAL_LOCK:
  8085. case APP_DVB_GLOBAL_EVENT_PARENTAL_LOCK_CLEAR:
  8086. case APP_DVB_GLOBAL_EVENT_TEMP_SERVICE:
  8087. case APP_DVB_GLOBAL_EVENT_TEMP_SERVICE_CLEAR:
  8088. #ifdef CONFIG_SUPPORT_PVR
  8089. if (u8MidRecState == MID_REC_STATUS_START)
  8090. {
  8091. MID_RecorderPauseResume();
  8092. }
  8093. _DVBApp_Recorder_PauseResume();
  8094. #endif
  8095. if (g_bMidHasUnmute) //zhongbaoxing added for mantis 0150118 @20110905
  8096. {
  8097. DVBApp_CheckProgramType(TRUE);
  8098. }
  8099. break;
  8100. #if 0 //Have been the new approach to replace.
  8101. case APP_DVB_GLOBAL_EVENT_SCRAMBLE:
  8102. g_bScrambleFlag = PROG_STATUS_SCRAMBLED;
  8103. #ifdef CONFIG_SUPPORT_PVR
  8104. if (u8MidRecState == MID_REC_STATUS_START)
  8105. {
  8106. MID_RecorderPauseResume();
  8107. }
  8108. _DVBApp_Recorder_PauseResume();
  8109. #endif
  8110. DVBApp_CheckProgramType(TRUE);
  8111. break;
  8112. case APP_DVB_GLOBAL_EVENT_SCRAMBLE_CLEAR:
  8113. g_bScrambleFlag = PROG_STATUS_SCRAMBLE_UNKNOW;
  8114. #ifdef CONFIG_SUPPORT_PVR
  8115. if (u8MidRecState == MID_REC_STATUS_PAUSE)
  8116. {
  8117. MID_RecorderPauseResume();
  8118. }
  8119. _DVBApp_Recorder_PauseResume();
  8120. #endif
  8121. if (g_bMidHasUnmute)
  8122. {
  8123. DVBApp_CheckProgramType(TRUE);
  8124. }
  8125. break;
  8126. #endif
  8127. case FW_MONITOR_UPDATE_SERVICE:
  8128. #ifdef CONFIG_SUPPORT_PVR
  8129. if (u8MidRecState != MID_REC_STATUS_STOP)
  8130. {
  8131. AL_RecHandle_t hProg = 0;
  8132. AL_DB_EDBType_t DBType = AL_DBTYPE_MAX;
  8133. AL_ServiceDetail_t stServInfo;
  8134. APP_Database_GetCurrentDBType(APP_SOURCE_DTV, &DBType);
  8135. hProg = APP_DVB_Playback_GetCurrentProgHandle(DBType,
  8136. AL_RECTYPE_DVBTV |AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA);
  8137. if (AL_SUCCESS == AL_DB_QueryDetail(hProg, (al_void *)&stServInfo))
  8138. {
  8139. if (DBType == AL_DBTYPE_DVB_T)
  8140. {
  8141. if (stServInfo.stDVBTServ.stProgAttrib.scramble == al_true)
  8142. {
  8143. if (MID_RecorderState() == MID_REC_STATUS_START)
  8144. {
  8145. MID_RecorderPauseResume();
  8146. _DVBApp_Recorder_PauseResume();
  8147. }
  8148. }
  8149. else
  8150. {
  8151. if (MID_RecorderState() == MID_REC_STATUS_PAUSE)
  8152. {
  8153. MID_RecorderPauseResume();
  8154. _DVBApp_Recorder_PauseResume();
  8155. }
  8156. }
  8157. }
  8158. else if (DBType == AL_DBTYPE_DVB_C)
  8159. {
  8160. if (stServInfo.stDVBCServ.stProgAttrib.scramble == al_true)
  8161. {
  8162. if (MID_RecorderState() == MID_REC_STATUS_START)
  8163. {
  8164. MID_RecorderPauseResume();
  8165. _DVBApp_Recorder_PauseResume();
  8166. }
  8167. }
  8168. else
  8169. {
  8170. if (MID_RecorderState() == MID_REC_STATUS_PAUSE)
  8171. {
  8172. MID_RecorderPauseResume();
  8173. _DVBApp_Recorder_PauseResume();
  8174. }
  8175. }
  8176. }
  8177. else if (DBType == AL_DBTYPE_DVB_S)
  8178. {
  8179. if (stServInfo.stDVBSServ.stProgAttrib.scramble == al_true)
  8180. {
  8181. if (MID_RecorderState() == MID_REC_STATUS_START)
  8182. {
  8183. MID_RecorderPauseResume();
  8184. _DVBApp_Recorder_PauseResume();
  8185. }
  8186. }
  8187. else
  8188. {
  8189. if (MID_RecorderState() == MID_REC_STATUS_PAUSE)
  8190. {
  8191. MID_RecorderPauseResume();
  8192. _DVBApp_Recorder_PauseResume();
  8193. }
  8194. }
  8195. }
  8196. }
  8197. }
  8198. #endif
  8199. break;
  8200. #ifdef SUPPORT_CONAX_CAS
  8201. case APP_DVB_GLOBAL_EVENT_CONAX_CA_NO_ACCESS:
  8202. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_ACCESS);
  8203. break;
  8204. case APP_DVB_GLOBAL_EVENT_CONAX_CA_NO_ACCESS_GEOGRAPHICAL_BLOCKOUT:
  8205. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_ACCESS_GEOGRAPHICAL_BLACKOUT);
  8206. break;
  8207. case APP_DVB_GLOBAL_EVENT_CONAX_CA_NO_ACCESS_NETWORKBLOCK:
  8208. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_ACCESS_NETWORK_BLOCK);
  8209. break;
  8210. case APP_DVB_GLOBAL_EVENT_CONAX_CA_ORDER:
  8211. case APP_DVB_GLOBAL_EVENT_CONAX_CA_ACCEPT_VIEW:
  8212. case APP_DVB_GLOBAL_EVENT_CONAX_CA_TOKEN_ACCESS:
  8213. case APP_DVB_GLOBAL_EVENT_CONAX_CA_MATURITY_LOCK:
  8214. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CA_MESSAGE))
  8215. {
  8216. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_ADJUST))
  8217. {
  8218. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_ADJUST);
  8219. }
  8220. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM))
  8221. {
  8222. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM);
  8223. }
  8224. #ifdef CONFIG_CI_SUPPORT
  8225. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ))
  8226. {
  8227. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ);
  8228. }
  8229. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU))
  8230. {
  8231. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU);
  8232. }
  8233. #endif
  8234. _DVBApp_HidePopupDisplay();
  8235. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_CA_PIN_CONFIM, dMessage);
  8236. }
  8237. break;
  8238. case APP_DVB_GLOBAL_EVENT_CONAX_CA_HAVE_MESSAGE:
  8239. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CA_MESSAGE))
  8240. {
  8241. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_ADJUST))
  8242. {
  8243. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_ADJUST);
  8244. }
  8245. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM))
  8246. {
  8247. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM);
  8248. }
  8249. #ifdef CONFIG_CI_SUPPORT
  8250. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ))
  8251. {
  8252. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ);
  8253. }
  8254. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU))
  8255. {
  8256. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU);
  8257. }
  8258. #endif
  8259. DVBApp_HidePopupDisplay();
  8260. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_CA_MESSAGE_POP, dMessage);
  8261. }
  8262. break;
  8263. #endif
  8264. #ifdef SUPPORT_CEC_TV
  8265. case APP_DVB_GLOBAL_EVENT_HDMIPORT_STATUS:
  8266. CECTV_HDMIPortStatus(dParam);
  8267. break;
  8268. #endif
  8269. #if defined(CONFIG_HEADPHONE_DETECT_BY_ISR) || defined(CONFIG_HPDET_BY_SWTIMER)
  8270. case APP_GLOBAL_EVENT_HEADPHONE_PLUG_IN:
  8271. APP_Audio_Set_HPStatus(APP_Audio_Headphone_PlugIn);
  8272. APP_Audio_SetMuteSpeakerWithoutAMP(TRUE);
  8273. APP_Audio_SetMuteAMP(TRUE);
  8274. APP_Audio_SetMuteDACSpeak(TRUE);
  8275. APP_Audio_SetMuteDACHeadohone(FALSE);
  8276. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  8277. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  8278. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  8279. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  8280. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  8281. if ((g_stUserInfoData.Mute == FALSE) && bHasValidServ && g_stFeatureData.SpeakerPreference == APP_HDMILINK_TVSPEAKER)
  8282. {
  8283. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  8284. if (APP_WAKEUP_GetBootFlag() == FALSE)
  8285. #endif
  8286. {
  8287. APP_Audio_SetMuteSpeakerWithoutAMP(FALSE);
  8288. }
  8289. }
  8290. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, 0,
  8291. sizeof(APP_SETTING_Variational_t), &(g_stVariationalData));
  8292. APP_Audio_SetVolume(g_stVariationalData.Volume);
  8293. break;
  8294. case APP_GLOBAL_EVENT_HEADPHONE_PLUG_OUT:
  8295. APP_Audio_Set_HPStatus(APP_Audio_Headphone_PlugOut);
  8296. APP_Audio_SetMuteDACHeadohone(TRUE);
  8297. APP_Audio_SetMuteSpeakerWithoutAMP(TRUE);
  8298. APP_Audio_SetMuteDACSpeak(FALSE);
  8299. APP_Audio_SetMuteAMP(FALSE);
  8300. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  8301. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  8302. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  8303. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  8304. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  8305. if ((g_stUserInfoData.Mute == FALSE) && bHasValidServ && g_stFeatureData.SpeakerPreference == APP_HDMILINK_TVSPEAKER)
  8306. {
  8307. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  8308. if (APP_WAKEUP_GetBootFlag() == FALSE)
  8309. #endif
  8310. {
  8311. APP_Audio_SetMuteSpeakerWithoutAMP(FALSE);
  8312. }
  8313. }
  8314. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, 0,
  8315. sizeof(APP_SETTING_Variational_t), &(g_stVariationalData));
  8316. APP_Audio_SetVolume(g_stVariationalData.Volume);
  8317. break;
  8318. #endif
  8319. #ifdef CONFIG_QSD
  8320. case APP_GLOBAL_EVENT_QSD_MEDIA_PLAY:
  8321. {
  8322. void MM_MediaQsd_SetTestFlag(BOOLEAN bFlag, UINT32 dParam);
  8323. MM_MediaQsd_SetTestFlag(TRUE, dParam);
  8324. #ifdef CONFIG_MULTIMEDIA1_SUPPORT
  8325. {
  8326. MediaSourceNumber_e MediaType = 0;
  8327. UINT8 u8Port;
  8328. int i32Cnt = MID_PartitionList_GetMountedCount();
  8329. if (i32Cnt > 0)
  8330. {
  8331. u8Port = MID_PartitionList_GetMountPort(0);
  8332. extern MediaSourceNumber_e MM_HomePage_GetMediaSourceNumberbyPort(UINT8 u8Port);
  8333. MediaType = MM_HomePage_GetMediaSourceNumberbyPort(u8Port);
  8334. if (MediaType == MEDIA_ONE)
  8335. {
  8336. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_MEDIA);
  8337. }
  8338. else if (MediaType == MEDIA_TWO)
  8339. {
  8340. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_MEDIA1);
  8341. }
  8342. }
  8343. }
  8344. #else
  8345. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_MEDIA);
  8346. #endif
  8347. }
  8348. break;
  8349. case APP_GLOBAL_EVENT_QSD_SET_SOURCE:
  8350. APP_GUIOBJ_Source_SetAppSource(dParam);
  8351. break;
  8352. #endif
  8353. case UI_EVENT_MENU:
  8354. AutoUpgrade = FALSE;
  8355. if (APP_MenuMgr_Exist_Main_Menu()
  8356. || APP_MenuMgr_Exist_Factory_Menu()
  8357. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG)
  8358. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPGEXTEND)
  8359. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD))
  8360. {
  8361. if (APP_GetPlaybackPauseState() == TRUE)
  8362. {
  8363. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FREEZE, 0);
  8364. }
  8365. _DVBApp_Exit_All_Menu();
  8366. }
  8367. else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR)
  8368. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR)
  8369. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNRENAME)
  8370. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST)
  8371. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST))
  8372. {
  8373. if (MID_PlaybackIsPauseState())
  8374. {
  8375. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FREEZE, 0);
  8376. }
  8377. _DVBApp_Exit_All_Menu();
  8378. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  8379. if (bHasValidServ)
  8380. {
  8381. if ((!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  8382. #ifdef SUPPORT_HOTEL_MODE_INFOBANNER_SHOW_CONTROL
  8383. &&((!g_stFactoryHotelData.HotelModeOnOff)||(g_stFactoryHotelData.ShowInfoBar))
  8384. #endif
  8385. )
  8386. {
  8387. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  8388. {
  8389. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  8390. }
  8391. #ifdef SUPPORT_CEC_TV
  8392. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  8393. {
  8394. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  8395. }
  8396. #endif
  8397. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO, 0);
  8398. }
  8399. }
  8400. }
  8401. else
  8402. {
  8403. DVBApp_ResetPopup_Channel();
  8404. _DVBApp_CloseAllMenu();
  8405. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  8406. {
  8407. #ifdef Subtitle_Freeze
  8408. AL_Subtitle_SetFreeze(FALSE);
  8409. #else
  8410. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  8411. #endif
  8412. #ifdef CONFIG_SUPPORT_MHEG5 //Gahu:D0304
  8413. if( eSourType == APP_SOURCE_DTV )
  8414. {
  8415. #ifdef CONFIG_SUPPORT_SUBTITLE
  8416. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0, sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  8417. if( g_stUserInfoData.Subtitle == DVB_SWITCH_OFF )
  8418. #endif
  8419. {
  8420. DVBApp_DataApplicationSwitch( OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5 );
  8421. }
  8422. }
  8423. #endif
  8424. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  8425. }
  8426. if (APP_GetPlaybackPauseState() == TRUE)
  8427. {
  8428. MID_PlaybackStreamResume(1);
  8429. APP_SetPlaybackPauseState(FALSE);
  8430. }
  8431. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,
  8432. APP_GUIOBJ_MAINMENU, FIRST_ENTER_MAINMENU);
  8433. }
  8434. break;
  8435. case UI_EVENT_SOURCE:
  8436. #ifdef CONFIG_SUPPORT_PVR
  8437. if (u8MidRecState != MID_REC_STATUS_STOP)
  8438. {
  8439. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  8440. {
  8441. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_SOURCE_CHANGE);
  8442. break;
  8443. }
  8444. else
  8445. {
  8446. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_SOURCE_CHANGE);
  8447. break;
  8448. }
  8449. }
  8450. else
  8451. #endif
  8452. {
  8453. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE))
  8454. {
  8455. #ifdef CONFIG_SUPPORT_PVR
  8456. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  8457. {
  8458. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_SOURCE);
  8459. }
  8460. else
  8461. #endif
  8462. {
  8463. _DVBApp_Exit_All_Menu();
  8464. }
  8465. }
  8466. else
  8467. {
  8468. DVBApp_ResetPopup_Channel();
  8469. _DVBApp_CloseAllMenu();
  8470. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOURCE, 0);
  8471. }
  8472. }
  8473. break;
  8474. #ifdef CONFIG_MEDIA_ENABLE
  8475. case UI_EVENT_SRC_USB:
  8476. {
  8477. #ifdef CONFIG_SUPPORT_PVR
  8478. if (MID_REC_STATUS_STOP != u8MidRecState)// && (MID_REC_MODE_AUTO != u8MIDRecMode))
  8479. {
  8480. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  8481. {
  8482. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_FOR_USBKEY);
  8483. }
  8484. else
  8485. {
  8486. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_USBKEY);
  8487. }
  8488. break;
  8489. }
  8490. #endif
  8491. _DVBApp_CloseAllMenu();
  8492. DVBApp_ResetPopup_Channel();
  8493. if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_MEDIA))
  8494. {
  8495. dvb_printf("APP_GUIOBJ_Source_SetAppSource Fail!!!!!!!!!\n");
  8496. }
  8497. }
  8498. break;
  8499. #endif
  8500. case UI_EVENT_TV_DVD:
  8501. #ifdef CONFIG_ATV_SUPPORT
  8502. DVBApp_ResetPopup_Channel();
  8503. _DVBApp_CloseAllMenu();
  8504. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_DVD);
  8505. #else
  8506. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  8507. #endif
  8508. break;
  8509. #ifdef CONFIG_SUPPORT_PVR
  8510. #ifdef SUPPORT_PVR_ONOFF
  8511. case UI_EVENT_PVR_ONOFF:
  8512. if ((MID_REC_STATUS_STOP != u8MidRecState)
  8513. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  8514. {
  8515. break;
  8516. }
  8517. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MAINMENU))
  8518. {
  8519. DVBApp_ResetPopup_Channel();
  8520. _DVBApp_CloseAllMenu();
  8521. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0,
  8522. sizeof(APP_SETTING_Setup_t), &(g_stSetupData));
  8523. if (g_stSetupData.PVROnOff)
  8524. {
  8525. g_stSetupData.PVROnOff = 0;
  8526. AL_PR_DeleteAllSch(eNetType, AL_PR_EVT_REM | AL_PR_SRV_REM);
  8527. g_stFeatureData.AutoTimeShift = APP_PVR_TIMESHIFT_OFF;
  8528. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  8529. ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift),
  8530. sizeof(g_stFeatureData.AutoTimeShift),&(g_stFeatureData.AutoTimeShift));
  8531. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  8532. ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift), sizeof(g_stFeatureData.AutoTimeShift));
  8533. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_DISABLE);
  8534. }
  8535. else
  8536. {
  8537. g_stSetupData.PVROnOff = 1;
  8538. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_ENABLE);
  8539. }
  8540. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP,
  8541. ITEM_OFFSET(APP_SETTING_Setup_t, PVROnOff),
  8542. sizeof(g_stSetupData.PVROnOff), &(g_stSetupData.PVROnOff));
  8543. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP,
  8544. ITEM_OFFSET(APP_SETTING_Setup_t, PVROnOff), sizeof(g_stSetupData.PVROnOff));
  8545. }
  8546. break;
  8547. #endif
  8548. #endif
  8549. #ifdef SUPPORT_EPG_ONOFF
  8550. case UI_EVENT_EPG_ONOFF:
  8551. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MAINMENU))
  8552. {
  8553. DVBApp_ResetPopup_Channel();
  8554. _DVBApp_CloseAllMenu();
  8555. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP, 0,
  8556. sizeof(APP_SETTING_Setup_t), &(g_stSetupData));
  8557. if (g_stSetupData.EPGOnOff)
  8558. {
  8559. g_stSetupData.EPGOnOff = 0;
  8560. _DVBApp_ShowPopup(DVB_APP_POP_MSG_EPG_DISABLE);
  8561. }
  8562. else
  8563. {
  8564. g_stSetupData.EPGOnOff = 1;
  8565. _DVBApp_ShowPopup(DVB_APP_POP_MSG_EPG_ENABLE);
  8566. }
  8567. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP,
  8568. ITEM_OFFSET(APP_SETTING_Setup_t, EPGOnOff),
  8569. sizeof(g_stSetupData.EPGOnOff), &(g_stSetupData.EPGOnOff));
  8570. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_SETUP,
  8571. ITEM_OFFSET(APP_SETTING_Setup_t, EPGOnOff), sizeof(g_stSetupData.EPGOnOff));
  8572. }
  8573. break;
  8574. #endif
  8575. #if 1//ll.jing mark for new fm
  8576. case UI_EVENT_FAC_HOTEL:
  8577. if (APP_MenuMgr_Exist_Factory_Menu())
  8578. {
  8579. _DVBApp_Exit_All_Menu();
  8580. }
  8581. else
  8582. {
  8583. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MAINMENU))
  8584. {
  8585. DVBApp_ResetPopup_Channel();
  8586. _DVBApp_CloseAllMenu();
  8587. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_FM_HOTELSETTING, ENTER_HOTELSET_NOTFROM_FACTORYMENU);
  8588. }
  8589. }
  8590. break;
  8591. #endif
  8592. case UI_EVENT_FACTORY:
  8593. if (APP_MenuMgr_Exist_Factory_Menu())
  8594. {
  8595. _DVBApp_Exit_All_Menu();
  8596. }
  8597. else
  8598. {
  8599. #ifdef SUPPORT_HKC_FACTORY_REMOTE
  8600. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE))||((dParam == UI_EVENT_HKC_FACTORYMENU)&&(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)))
  8601. #else
  8602. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MAINMENU))
  8603. #endif
  8604. {
  8605. DVBApp_ResetPopup_Channel();
  8606. _DVBApp_CloseAllMenu();
  8607. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING, 0);
  8608. }
  8609. }
  8610. break;
  8611. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  8612. case UI_EVENT_CHECK_UPGRADE:
  8613. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE))
  8614. {
  8615. dvb_printf("upgrade is running!");
  8616. break;
  8617. }
  8618. else
  8619. {
  8620. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE))
  8621. {
  8622. DVBApp_ResetPopup_Channel();
  8623. _DVBApp_CloseAllMenu();
  8624. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, SOFTWARE_UPGRADE_FROM_PASSWORD);
  8625. }
  8626. }
  8627. break;
  8628. #endif
  8629. case UI_EVENT_POWER:
  8630. #ifdef CONFIG_SUPPORT_PVR
  8631. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  8632. {
  8633. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  8634. {
  8635. if (!APP_GUIOBJ_DVB_PvrRec_GetDurationTime())
  8636. {
  8637. DVBApp_StopRecord();
  8638. }
  8639. }
  8640. else
  8641. {
  8642. DVBApp_StopTimeshift(TRUE);
  8643. }
  8644. }
  8645. #endif
  8646. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF);
  8647. break;
  8648. case UI_EVENT_EPG:
  8649. #ifdef CONFIG_SUPPORT_MHEG5
  8650. #ifdef SUPPORT_SUBTITLE_ON_PG
  8651. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  8652. #endif
  8653. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  8654. {
  8655. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  8656. {
  8657. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  8658. if (sdRet == SP_SUCCESS)
  8659. {
  8660. break;
  8661. }
  8662. }
  8663. }
  8664. #endif
  8665. #ifdef SUPPORT_EPG_ONOFF
  8666. if (!g_stSetupData.EPGOnOff)
  8667. {
  8668. break;
  8669. }
  8670. #endif
  8671. dGuiObj = DVB_GUIOBJ_EPG;
  8672. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG)
  8673. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPGEXTEND)))
  8674. {
  8675. _DVBApp_Exit_All_Menu();
  8676. }
  8677. else
  8678. {
  8679. _DVBApp_Exit_All_Menu();
  8680. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  8681. if (bHasValidServ)
  8682. {
  8683. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, dGuiObj, 0);
  8684. }
  8685. else
  8686. {
  8687. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  8688. }
  8689. }
  8690. break;
  8691. case UI_EVENT_AUDIO:
  8692. #ifdef CONFIG_SUPPORT_PVR
  8693. if (MID_TSPLParser_GetThreadState())
  8694. {
  8695. UINT32 u32PlayState = MID_TSPL_MODE_STOP;
  8696. MID_TSPLParser_GetPlayState(&u32PlayState, NULL);
  8697. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD))
  8698. {
  8699. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD);
  8700. }
  8701. else if (u32PlayState == MID_TSPL_MODE_PLAY)
  8702. {
  8703. _DVBApp_HidePopupDisplay();
  8704. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  8705. {
  8706. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  8707. }
  8708. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  8709. {
  8710. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC);
  8711. }
  8712. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER))
  8713. {
  8714. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER);
  8715. }
  8716. #ifdef CONFIG_SUPPORT_SUBTITLE
  8717. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU))
  8718. {
  8719. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU);
  8720. }
  8721. #endif
  8722. dvb_printf("...Create PVR multi audio menu.\n");
  8723. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD, 0);
  8724. }
  8725. break;
  8726. }
  8727. else
  8728. #endif
  8729. {
  8730. UINT8 u8ProgLockState = FALSE;
  8731. u8ProgLockState = APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL);
  8732. if (u8ProgLockState == MID_PLAYBK_PROG_STATE_LOCKED)
  8733. {
  8734. break;
  8735. }
  8736. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  8737. if (bHasValidServ)
  8738. {
  8739. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD))
  8740. {
  8741. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD);
  8742. _DVBApp_CheckPopupDisplay();
  8743. }
  8744. else
  8745. {
  8746. _DVBApp_CloseAllMenu();
  8747. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD, 0);
  8748. }
  8749. }
  8750. else
  8751. {
  8752. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  8753. }
  8754. }
  8755. break;
  8756. case UI_EVENT_MUTE:
  8757. #ifdef SUPPORT_CEC_TV
  8758. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  8759. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  8760. if (( APP_SWITCH_ON == g_stFeatureData.Enable_HDMILink)
  8761. #ifdef SUPPORT_AMPLIFIER_CONTROL
  8762. &&(APP_SWITCH_ON == g_stFeatureData.AmplifierControl)
  8763. #endif
  8764. &&(APP_HDMILINK_AMPLIFIER == g_stFeatureData.SpeakerPreference) && APP_GUIOBJ_Source_GetAmplifierPort())
  8765. {
  8766. if (CECTV_GetCECEnable() == CECTV_ENABLE && CECTV_GetHDMISystemAudioMode() && g_u32MuteIconHandle >= MUTE_KEY_INTERVAL)
  8767. {
  8768. APP_Set_CECTV_Mute_Status(EVENT_CECTV_SET_MUTE_STATUS_MUTE);
  8769. if (APP_Get_HDMICEC_AMP_Mute_Status() == FALSE)
  8770. APP_Set_HDMICEC_AMP_Mute_Status(TRUE);
  8771. else
  8772. APP_Set_HDMICEC_AMP_Mute_Status(FALSE);
  8773. APP_GUIOBJ_Mute_MuteKeyHandler();
  8774. g_u32MuteIconHandle = 0;
  8775. break;
  8776. }
  8777. else if(g_u32MuteIconHandle < MUTE_KEY_INTERVAL)//Don't handle mute icon
  8778. {
  8779. break;
  8780. }
  8781. }
  8782. #endif
  8783. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO))
  8784. {
  8785. APP_GUIOBJ_SleepTimer_Reset();
  8786. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO);
  8787. }
  8788. APP_GUIOBJ_Mute_MuteKeyHandler();
  8789. break;
  8790. #ifdef SUPPORT_CEC_TV
  8791. case DMN_EVENT_CECTV_SET_MUTE_STATUS:
  8792. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  8793. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  8794. if (( APP_SWITCH_ON == g_stFeatureData.Enable_HDMILink)
  8795. #ifdef SUPPORT_AMPLIFIER_CONTROL
  8796. &&(APP_SWITCH_ON == g_stFeatureData.AmplifierControl)
  8797. #endif
  8798. &&(APP_HDMILINK_AMPLIFIER == g_stFeatureData.SpeakerPreference) && APP_GUIOBJ_Source_GetAmplifierPort())
  8799. {
  8800. if (CECTV_GetCECEnable()==CECTV_ENABLE)
  8801. {
  8802. APP_Process_CECTV_Mute_Status(dParam);
  8803. if(g_stUserInfoData.Mute == TRUE && APP_Get_HDMICEC_AMP_Mute_Status() == FALSE)
  8804. {
  8805. APP_GUIOBJ_Mute_MuteKeyHandler();
  8806. }
  8807. else if(g_stUserInfoData.Mute == FALSE && APP_Get_HDMICEC_AMP_Mute_Status() == TRUE)
  8808. {
  8809. APP_GUIOBJ_Mute_MuteKeyHandler();
  8810. }
  8811. }
  8812. }
  8813. break;
  8814. case DMN_EVENT_CECTV_SET_SYSTEMAUDIO_STATUS:
  8815. APP_Process_CECTV_Control_Status_From_Amp(dParam);
  8816. break;
  8817. case DMN_EVENT_CECTV_SET_DEVICE_OSDNAME:
  8818. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO)
  8819. ||SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE)
  8820. #ifdef SUPPORT_CEC_TV
  8821. ||SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_HDMI_LINK)
  8822. #endif
  8823. #ifdef CONFIG_BT_RDA5856
  8824. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BT_SETTING))
  8825. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BT_DEVICELIST))
  8826. #endif
  8827. ||SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_MAINMENU)
  8828. ||SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE_CEC))
  8829. {
  8830. break;
  8831. }
  8832. DVBApp_ResetPopup_Channel();
  8833. _DVBApp_CloseAllMenu();
  8834. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  8835. {
  8836. #ifdef Subtitle_Freeze
  8837. AL_Subtitle_SetFreeze(FALSE);
  8838. #else
  8839. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  8840. #endif
  8841. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  8842. }
  8843. if (APP_GetPlaybackPauseState() == TRUE)
  8844. {
  8845. MID_PlaybackStreamResume(1);
  8846. APP_SetPlaybackPauseState(FALSE);
  8847. }
  8848. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,
  8849. APP_GUIOBJ_CEC_DEVICE_INSERT, 0);
  8850. break;
  8851. #endif
  8852. case UI_EVENT_EXIT:
  8853. #ifdef CONFIG_SUPPORT_PVR
  8854. #ifdef SUPPORT_PVR_ICON_HIDE
  8855. if (u8MidRecState == MID_REC_STATUS_START && !(APP_MenuMgr_Exist_Main_Menu()))
  8856. {
  8857. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  8858. {
  8859. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  8860. {
  8861. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, UI_EVENT_EXIT, 0);
  8862. }
  8863. break;
  8864. }
  8865. else
  8866. {
  8867. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  8868. {
  8869. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, UI_EVENT_EXIT, 0);
  8870. }
  8871. break;
  8872. }
  8873. }
  8874. #endif
  8875. #endif
  8876. case UI_EVENT_RETURN:
  8877. #ifdef CONFIG_SUPPORT_MHEG5
  8878. #ifdef SUPPORT_SUBTITLE_ON_PG
  8879. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  8880. #endif
  8881. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  8882. {
  8883. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5) && dMessage != UI_EVENT_EXIT)
  8884. {
  8885. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  8886. if (sdRet == SP_SUCCESS)
  8887. {
  8888. break;
  8889. }
  8890. }
  8891. }
  8892. #endif
  8893. #ifdef CONFIG_SUPPORT_PVR
  8894. #ifdef SUPPORT_TEAC_PVR_ICON_CTRL
  8895. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)
  8896. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE))
  8897. {
  8898. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,
  8899. DVB_GUIOBJ_PVRREC_INFO, 0);
  8900. break;
  8901. }
  8902. #endif
  8903. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) ||
  8904. (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  8905. {
  8906. if (APP_MenuMgr_Exist_Main_Menu())
  8907. {
  8908. APP_MenuMgr_Exit_Main_Menu();
  8909. }
  8910. break;
  8911. }
  8912. #endif
  8913. AutoUpgrade = FALSE;
  8914. _DVBApp_ExitAll();
  8915. break;
  8916. case UI_EVENT_CH_UP:
  8917. case UI_EVENT_CH_DN:
  8918. g_bIsFav = FALSE;
  8919. #ifdef CONFIG_SUPPORT_PVR
  8920. if (u8MidRecState != MID_REC_STATUS_STOP)
  8921. {
  8922. g_bIsNumKey = FALSE;
  8923. if (dMessage == UI_EVENT_CH_UP)
  8924. {
  8925. g_bIsCHUp = TRUE;
  8926. }
  8927. else
  8928. {
  8929. g_bIsCHUp = FALSE;
  8930. }
  8931. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  8932. {
  8933. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_CHANNEL_CHANGE);
  8934. break;
  8935. }
  8936. else
  8937. {
  8938. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_CHANNEL_CHANGE);
  8939. break;
  8940. }
  8941. }
  8942. else
  8943. #endif
  8944. {
  8945. /* judge is database empty or not */
  8946. al_uint32 TotalNum = 0;
  8947. ServiceGroupType_t group_type;
  8948. APP_EProgListType_t eCurProglist = ProgListType_Normal;
  8949. AL_RecHandle_t hNetHdl = AL_DB_INVALIDHDL;
  8950. al_int8 s8Navigate = 0;
  8951. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_TVINFO, 0,
  8952. sizeof(APP_SETTING_TVInfo_t), &(g_stTVInfoData));
  8953. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL, 0,
  8954. sizeof(APP_SETTING_Variational_t), &(g_stVariationalData));
  8955. group_type = g_stTVInfoData.ChnListType;
  8956. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  8957. if (APP_RF_TYPE_DVB_S == g_stChannelData.TV_Connection)
  8958. {
  8959. if (SERVICEGROUP_FREE == group_type)
  8960. {
  8961. eCurProglist = ProgListType_Free;
  8962. }
  8963. else if (SERVICEGROUP_SCRAMB == group_type)
  8964. {
  8965. eCurProglist = ProgListType_Scramb;
  8966. }
  8967. else if (SERVICEGROUP_SATELLITE == group_type)
  8968. {
  8969. eCurProglist = ProgListType_Satellite;
  8970. APP_DVB_Playback_GetCurrentSat(&hNetHdl, NULL);
  8971. }
  8972. }
  8973. #endif
  8974. if (SERVICEGROUP_USER == group_type)
  8975. {
  8976. eCurProglist = ProgListType_User;
  8977. }
  8978. #ifdef CONFIG_CIPLUS_SUPPORT
  8979. if (APP_CIPLUS_IsProfileSource())
  8980. {
  8981. eCurProglist = ProgListType_CIPlus;
  8982. group_type = SERVICEGROUP_CIPLUS;
  8983. }
  8984. #endif
  8985. APP_Database_InitChnList(APP_Database_ConvertGroup2ChnListType(group_type), hNetHdl, eCurProglist);
  8986. TotalNum = APP_Database_GetChnListSize();
  8987. APP_Database_UninitChnList();
  8988. if (TotalNum == 0)
  8989. {
  8990. /* show not available */
  8991. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  8992. break;
  8993. }
  8994. if (dMessage == UI_EVENT_CH_UP)
  8995. {
  8996. s8Navigate = 1;
  8997. }
  8998. else if (dMessage == UI_EVENT_CH_DN)
  8999. {
  9000. s8Navigate = -1;
  9001. }
  9002. #ifdef CONFIG_CIPLUS_SUPPORT
  9003. if (APP_CIPLUS_IsProfileSource())
  9004. {
  9005. hProg = APP_DVB_PLAYBACK_CI_GetNextProgHdl(s8Navigate);
  9006. if (AL_DB_INVALIDHDL == hProg)
  9007. {
  9008. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  9009. {
  9010. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  9011. }
  9012. #ifdef SUPPORT_CEC_TV
  9013. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  9014. {
  9015. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  9016. }
  9017. #endif
  9018. _DVBApp_Zapping(eServiceType, hProg, FALSE, 0, TRUE);
  9019. break;
  9020. }
  9021. }
  9022. else
  9023. #endif
  9024. {
  9025. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, s8Navigate, APP_FAVORITE_NONE);
  9026. }
  9027. if (hProg != AL_DB_INVALIDHDL)
  9028. {
  9029. AL_DB_EDBType_t db_type;
  9030. AL_DB_ERecordType_t record_type;
  9031. AL_DB_GetRecordType(hProg, &db_type, &record_type);
  9032. if (db_type == AL_DBTYPE_DVB_ATV)
  9033. {
  9034. _DVBApp_CloseAllMenu();
  9035. break;
  9036. }
  9037. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  9038. {
  9039. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  9040. }
  9041. #ifdef SUPPORT_CEC_TV
  9042. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  9043. {
  9044. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  9045. }
  9046. #endif
  9047. /*#ifdef CONFIG_SUPPORT_PVR
  9048. if ((MID_REC_MODE_AUTO == u8MIDRecMode) && (u8MidRecState != MID_REC_STATUS_STOP))
  9049. {
  9050. DVBApp_StopTimeshift(FALSE);
  9051. }
  9052. #endif*/
  9053. #ifdef SUPPORT_CHANGE_TS_DYNAMICALLY
  9054. AL_RecHandle_t hCurTPHdl = hCurProg;
  9055. AL_RecHandle_t hNextTPHdl = hProg;
  9056. AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hCurTPHdl);
  9057. AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hNextTPHdl);
  9058. if(APP_Get_DTVHiddenScanState()&&(hCurTPHdl!=hNextTPHdl))
  9059. {
  9060. APP_ScanProcess_Stop();
  9061. APP_SetSrcChgFlag(TRUE);
  9062. while(APP_Get_DTVHiddenScanState()||(!AL_CS_IsStop()))
  9063. {
  9064. GL_TaskSleep(50);
  9065. }
  9066. APP_SetSrcChgFlag(FALSE);
  9067. }
  9068. #endif
  9069. _DVBApp_Zapping(record_type, hProg, FALSE, 0, TRUE);
  9070. /*#ifdef CONFIG_SUPPORT_PVR
  9071. if ((MID_REC_MODE_AUTO == u8MIDRecMode) && (u8MidRecState != MID_REC_STATUS_STOP))
  9072. {
  9073. DVBApp_StopTimeshift(TRUE);
  9074. }
  9075. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  9076. #endif*/
  9077. }
  9078. else
  9079. {
  9080. DVBApp_CheckProgramType(TRUE);
  9081. }
  9082. break;
  9083. }
  9084. case UI_EVENT_RECALL:
  9085. {
  9086. //_DVBApp_CloseAllMenu();
  9087. #ifdef CONFIG_CIPLUS_SUPPORT
  9088. if (APP_CIPLUS_IsProfileSource())
  9089. {
  9090. break;
  9091. }
  9092. #endif
  9093. UINT32 u32TotalChnCount = 0;
  9094. DBServAttrib_t stAttribute;
  9095. eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  9096. if ((eServiceType != AL_RECTYPE_DVBTV) && (eServiceType != AL_RECTYPE_DVBRADIO) && (eServiceType != AL_RECTYPE_DVBDATA))
  9097. {
  9098. eServiceType = AL_RECTYPE_DVBTV;
  9099. }
  9100. AL_DB_GetRecordsTotalNum(eNetType, eServiceType, &u32TotalChnCount);
  9101. if(!u32TotalChnCount)
  9102. {
  9103. AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBDATA, &u32TotalChnCount);
  9104. if(!u32TotalChnCount)
  9105. {
  9106. AL_DB_GetRecordsTotalNum(eNetType, AL_RECTYPE_DVBRADIO, &u32TotalChnCount);
  9107. }
  9108. }
  9109. hProg = APP_DVB_Playback_GetPrevProg(eNetType);
  9110. if (hProg != AL_DB_INVALIDHDL)
  9111. {
  9112. memset(&stAttribute, 0, sizeof(DBServAttrib_t));
  9113. AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"stProgAttrib", (al_void *)&stAttribute);
  9114. }
  9115. if ((hCurProg!=hProg)&&(hProg != AL_DB_INVALIDHDL)&& u32TotalChnCount && (stAttribute.delete == FALSE))
  9116. {
  9117. #ifdef CONFIG_SUPPORT_PVR
  9118. if (u8MidRecState != MID_REC_STATUS_STOP)
  9119. {
  9120. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  9121. {
  9122. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_FOR_RECALL);
  9123. break;
  9124. }
  9125. else
  9126. {
  9127. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_RECALL);
  9128. break;
  9129. }
  9130. }
  9131. #endif
  9132. AL_DB_GetRecordType(hProg, NULL, &NextServiceType);
  9133. if (eServiceType == NextServiceType)
  9134. {
  9135. #ifdef SUPPORT_CHANGE_TS_DYNAMICALLY
  9136. AL_RecHandle_t hCurTPHdl = hCurProg;
  9137. AL_RecHandle_t hNextTPHdl = hProg;
  9138. AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hCurTPHdl);
  9139. AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hNextTPHdl);
  9140. if(APP_Get_DTVHiddenScanState()&&(hCurTPHdl!=hNextTPHdl))
  9141. {
  9142. APP_ScanProcess_Stop();
  9143. APP_SetSrcChgFlag(TRUE);
  9144. while(APP_Get_DTVHiddenScanState()||(!AL_CS_IsStop()))
  9145. {
  9146. GL_TaskSleep(50);
  9147. }
  9148. APP_SetSrcChgFlag(FALSE);
  9149. }
  9150. #endif
  9151. _DVBApp_Zapping(NextServiceType, hProg, FALSE, 0, TRUE);
  9152. }
  9153. #ifdef CHANGE_SOURCE_BY_RECALL_KEY
  9154. else if (APP_DVB_Playback_SwapServiceType(eNetType, &NextServiceType, &u32TotalNum) == AL_SUCCESS)
  9155. {
  9156. ;
  9157. }
  9158. #endif
  9159. else
  9160. {
  9161. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  9162. }
  9163. }
  9164. else
  9165. {
  9166. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  9167. }
  9168. }
  9169. break;
  9170. case APP_DVB_GLOBAL_EVENT_ZAPPING:
  9171. #ifdef CONFIG_SUPPORT_PVR
  9172. if (u8MidRecState != MID_REC_STATUS_STOP)
  9173. {
  9174. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM))
  9175. {
  9176. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM);
  9177. if (hCurProg == dParam)
  9178. {
  9179. break;
  9180. }
  9181. else if(AL_DB_INVALIDHDL == dParam)
  9182. {
  9183. #ifdef SPECIAL_CHNORDER_FOR_SPAIN
  9184. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_DISPLAY, 0);
  9185. #else
  9186. _DVBApp_ShowPopup(DVB_APP_POP_MSG_INVALID_INPUT);
  9187. #endif
  9188. break;
  9189. }
  9190. else
  9191. {
  9192. g_ProgHandle = dParam;
  9193. g_bIsNumKey = TRUE;
  9194. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  9195. {
  9196. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_CHANNEL_CHANGE);
  9197. break;
  9198. }
  9199. else
  9200. {
  9201. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_CHANNEL_CHANGE);
  9202. break;
  9203. }
  9204. }
  9205. }
  9206. }
  9207. #endif
  9208. #if 0
  9209. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  9210. {
  9211. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  9212. }
  9213. #endif
  9214. _DVBApp_Zapping(eServiceType, dParam, FALSE, 0, TRUE);
  9215. break;
  9216. #ifdef SUPPORT_CHANGE_TS_DYNAMICALLY
  9217. case APP_DVB_GLOBAL_EVENT_TSCHANGE_REMOVE_SERVICE:
  9218. dvb_printf("[%s:%d] APP_DVB_GLOBAL_EVENT_TSCHANGE_REMOVE_SERVICE !!!!!!!!!!\n\n",__FUNCTION__,__LINE__);
  9219. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST)
  9220. //||(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR)
  9221. //|| SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR)
  9222. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST)
  9223. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG)
  9224. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNRENAME)
  9225. #ifdef CONFIG_SUPPORT_PVR
  9226. //|| SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMEREDIT)
  9227. #endif
  9228. )
  9229. {
  9230. if(DVBApp_GetUnstableState() == FALSE)
  9231. {
  9232. DVBApp_SetUnstableState(TRUE);
  9233. }
  9234. dvb_printf(" Post Process The Unstable Services\n\n");
  9235. break;
  9236. }
  9237. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR))
  9238. {
  9239. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR);
  9240. }
  9241. else if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR))
  9242. {
  9243. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR);
  9244. }
  9245. #ifdef CONFIG_SUPPORT_PVR
  9246. else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TIMEREDIT))
  9247. {
  9248. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TIMEREDIT);
  9249. }
  9250. #endif
  9251. DVBApp_RemoveUnstableService();
  9252. break;
  9253. #endif
  9254. #ifdef CONFIG_SUPPORT_MHEG5
  9255. case APP_DVB_GLOBAL_EVENT_MHEG_ZAPPING:
  9256. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  9257. {
  9258. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  9259. }
  9260. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_MHEG_ZAPPING, dParam);
  9261. break;
  9262. #endif
  9263. case UI_EVENT_ENTER:
  9264. #ifdef CONFIG_SUPPORT_PVR
  9265. #ifdef SUPPORT_PVR_ICON_HIDE
  9266. if (u8MidRecState == MID_REC_STATUS_START)
  9267. {
  9268. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  9269. {
  9270. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  9271. {
  9272. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, UI_EVENT_ENTER, 0);
  9273. }
  9274. break;
  9275. }
  9276. else
  9277. {
  9278. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  9279. {
  9280. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, UI_EVENT_ENTER, 0);
  9281. }
  9282. break;
  9283. }
  9284. }
  9285. #endif
  9286. #endif
  9287. #ifdef CELLO_REMOTE_KEY
  9288. #ifdef CONFIG_SUPPORT_MHEG5
  9289. #ifdef SUPPORT_SUBTITLE_ON_PG
  9290. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  9291. #endif
  9292. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  9293. {
  9294. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  9295. {
  9296. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  9297. if (sdRet == SP_SUCCESS)
  9298. {
  9299. break;
  9300. }
  9301. }
  9302. }
  9303. #endif
  9304. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  9305. UI_EVENT_CHLIST, 0);
  9306. #else
  9307. {
  9308. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  9309. if (!bHasValidServ)
  9310. {
  9311. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  9312. break;
  9313. }
  9314. }
  9315. #ifdef CONFIG_SUPPORT_MHEG5
  9316. #ifdef SUPPORT_SUBTITLE_ON_PG
  9317. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  9318. #endif
  9319. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  9320. {
  9321. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  9322. {
  9323. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  9324. if (sdRet == SP_SUCCESS)
  9325. {
  9326. break;
  9327. }
  9328. }
  9329. }
  9330. #endif
  9331. #if 0
  9332. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD))
  9333. {
  9334. _DVBApp_CloseAllMenu();
  9335. }
  9336. else
  9337. {
  9338. _DVBApp_CloseAllMenu();
  9339. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST, 0);
  9340. }
  9341. #endif
  9342. #endif
  9343. break;
  9344. #ifdef CELLO_REMOTE_KEY
  9345. case UI_EVENT_INITIAL:
  9346. DVBApp_ResetPopup_Channel();
  9347. _DVBApp_CloseAllMenu();
  9348. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL, 0);
  9349. break;
  9350. case UI_EVENT_DTV:
  9351. DVBApp_ResetPopup_Channel();
  9352. _DVBApp_CloseAllMenu();
  9353. APP_GUIOBJ_Channel_SetRFType(FRONTEND_CONNECT_TYPE_DVB_T, AL_DB_INVALIDHDL);
  9354. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_DTV);
  9355. break;
  9356. case UI_EVENT_SATELLITE:
  9357. DVBApp_ResetPopup_Channel();
  9358. _DVBApp_CloseAllMenu();
  9359. APP_GUIOBJ_Channel_SetRFType(FRONTEND_CONNECT_TYPE_DVB_S, AL_DB_INVALIDHDL);
  9360. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_DTV);
  9361. break;
  9362. case UI_EVENT_CABLE:
  9363. DVBApp_ResetPopup_Channel();
  9364. _DVBApp_CloseAllMenu();
  9365. APP_GUIOBJ_Channel_SetRFType(FRONTEND_CONNECT_TYPE_DVB_C, AL_DB_INVALIDHDL);
  9366. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_DTV);
  9367. break;
  9368. case UI_EVENT_DVD:
  9369. if(eSourType != APP_SOURCE_DVD)
  9370. {
  9371. #ifdef CONFIG_SUPPORT_PVR
  9372. if (MID_REC_STATUS_STOP != u8MidRecState)// && (MID_REC_MODE_AUTO != u8MIDRecMode))
  9373. {
  9374. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  9375. {
  9376. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_FOR_TVRADIOKEY);
  9377. }
  9378. else
  9379. {
  9380. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_TVRADIOKEY);
  9381. }
  9382. break;
  9383. }
  9384. #endif
  9385. DVBApp_ResetPopup_Channel();
  9386. _DVBApp_CloseAllMenu();
  9387. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_DVD);
  9388. }
  9389. break;
  9390. case UI_EVENT_HDMI:
  9391. if(eSourType != APP_SOURCE_HDMI && eSourType != APP_SOURCE_HDMI1 &&
  9392. eSourType != APP_SOURCE_HDMI2)
  9393. {
  9394. #ifdef CONFIG_SUPPORT_PVR
  9395. if (MID_REC_STATUS_STOP != u8MidRecState)// && (MID_REC_MODE_AUTO != u8MIDRecMode))
  9396. {
  9397. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  9398. {
  9399. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_FOR_TVRADIOKEY);
  9400. }
  9401. else
  9402. {
  9403. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_TVRADIOKEY);
  9404. }
  9405. break;
  9406. }
  9407. #endif
  9408. DVBApp_ResetPopup_Channel();
  9409. _DVBApp_CloseAllMenu();
  9410. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_HDMI);
  9411. }
  9412. break;
  9413. #endif
  9414. case UI_EVENT_CHLIST:
  9415. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD))
  9416. {
  9417. _DVBApp_CloseAllMenu();
  9418. }
  9419. else
  9420. {
  9421. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST))
  9422. {
  9423. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST);
  9424. _DVBApp_CheckPopupDisplay();
  9425. }
  9426. else
  9427. {
  9428. _DVBApp_CloseAllMenu();
  9429. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST, 0);
  9430. }
  9431. }
  9432. break;
  9433. case UI_EVENT_FAV:
  9434. #ifdef CONFIG_DVB_SYSTEM
  9435. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  9436. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  9437. if (AREA_NORWAY == g_stChannelData.Country)
  9438. {
  9439. break;
  9440. }
  9441. #endif
  9442. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD))
  9443. {
  9444. _DVBApp_CloseAllMenu();
  9445. }
  9446. else
  9447. {
  9448. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST))
  9449. {
  9450. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST);
  9451. _DVBApp_CheckPopupDisplay();
  9452. }
  9453. else
  9454. {
  9455. _DVBApp_CloseAllMenu();
  9456. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST, 0);
  9457. }
  9458. }
  9459. break;
  9460. case UI_EVENT_FAV_UP:
  9461. case UI_EVENT_FAV_DN:
  9462. {
  9463. UINT32 TotalNum = 0;
  9464. AL_DB_EDBType_t DBType;
  9465. AL_DB_ERecordType_t CurSerType = AL_RECTYPE_DVBTV;
  9466. APP_Favorite_t FavType = APP_FAVORITE_1;
  9467. g_bIsFav = TRUE;
  9468. DBType = APP_DVB_Playback_GetCurrentNetType();
  9469. CurSerType = APP_DVB_Playback_GetCurrServiceType(DBType);
  9470. FavType = APP_GUIOBJ_DVB_Playback_GetFavType();
  9471. if ((FavType <= APP_FAVORITE_NONE) || (FavType >= APP_FAVORITE_MAX))
  9472. {
  9473. FavType = APP_FAVORITE_1;
  9474. APP_GUIOBJ_DVB_Playback_SetFavType(FavType);
  9475. APP_GUIOBJ_DVB_Playback_StoreFavType();
  9476. }
  9477. do
  9478. {
  9479. /* search next fav list type */
  9480. APP_Database_InitChnList(APP_DB_CHNLISTTYPE_DIGITAL, AL_DB_INVALIDHDL, APP_Database_ConvertFavType2List(FavType));
  9481. TotalNum = APP_Database_GetChnListSize();
  9482. APP_Database_UninitChnList();
  9483. if (((FavType == APP_GUIOBJ_DVB_Playback_GetFavType()) && (TotalNum > 0)) ||
  9484. (TotalNum > 1))
  9485. {
  9486. break;
  9487. }
  9488. FavType++;
  9489. if (FavType == APP_FAVORITE_MAX)
  9490. {
  9491. FavType = APP_FAVORITE_1;
  9492. }
  9493. }while(FavType != APP_GUIOBJ_DVB_Playback_GetFavType());
  9494. if (FavType == APP_FAVORITE_MAX)
  9495. {
  9496. APP_GUIOBJ_DVB_Playback_SetFavType(APP_FAVORITE_1);
  9497. APP_GUIOBJ_DVB_Playback_StoreFavType();
  9498. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  9499. break;
  9500. }
  9501. APP_GUIOBJ_DVB_Playback_SetFavType(FavType);
  9502. APP_GUIOBJ_DVB_Playback_StoreFavType();
  9503. if (TotalNum < 2)
  9504. {
  9505. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  9506. break;
  9507. }
  9508. #ifdef CONFIG_SUPPORT_PVR
  9509. if ((u8MidRecState != MID_REC_STATUS_STOP) && (APP_PVR_TIMESHIFT_AUTO != u8AutoTimeShift))
  9510. {
  9511. g_bIsNumKey = FALSE;
  9512. if (MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode)
  9513. {
  9514. if (dMessage == UI_EVENT_FAV_UP)
  9515. {
  9516. g_bIsCHUp = TRUE;
  9517. }
  9518. else
  9519. {
  9520. g_bIsCHUp = FALSE;
  9521. }
  9522. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_CHANNEL_CHANGE);
  9523. break;
  9524. }
  9525. else if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  9526. {
  9527. if (dMessage == UI_EVENT_FAV_UP)
  9528. {
  9529. g_bIsCHUp = TRUE;
  9530. }
  9531. else
  9532. {
  9533. g_bIsCHUp = FALSE;
  9534. }
  9535. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_CHANNEL_CHANGE);
  9536. break;
  9537. }
  9538. }
  9539. else
  9540. #endif
  9541. {
  9542. if (dMessage == UI_EVENT_FAV_UP)
  9543. {
  9544. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(DBType, 1, FavType);
  9545. }
  9546. else
  9547. {
  9548. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(DBType, -1, FavType);
  9549. }
  9550. if (hProg != AL_DB_INVALIDHDL)
  9551. {
  9552. AL_DB_EDBType_t db_type;
  9553. AL_DB_ERecordType_t record_type;
  9554. AL_DB_GetRecordType(hProg, &db_type, &record_type);
  9555. if (db_type == AL_DBTYPE_DVB_ATV)
  9556. {
  9557. _DVBApp_CloseAllMenu();
  9558. break;
  9559. }
  9560. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  9561. {
  9562. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  9563. }
  9564. #ifdef SUPPORT_CEC_TV
  9565. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  9566. {
  9567. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  9568. }
  9569. #endif
  9570. /*#ifdef CONFIG_SUPPORT_PVR
  9571. if ((APP_PVR_TIMESHIFT_AUTO == u8AutoTimeShift) && (u8MidRecState != MID_REC_STATUS_STOP))
  9572. {
  9573. DVBApp_StopTimeshift(TRUE);
  9574. }
  9575. #endif*/
  9576. _DVBApp_Zapping(CurSerType, hProg, FALSE, 0, TRUE);
  9577. /*#ifdef CONFIG_SUPPORT_PVR
  9578. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  9579. #endif*/
  9580. }
  9581. else
  9582. {
  9583. DVBApp_CheckProgramType(TRUE);
  9584. }
  9585. break;
  9586. }
  9587. }
  9588. break;
  9589. case UI_EVENT_DISPLAY:
  9590. {
  9591. #ifdef CONFIG_SUPPORT_MHEG5
  9592. #ifdef SUPPORT_SUBTITLE_ON_PG
  9593. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  9594. #endif
  9595. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  9596. {
  9597. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  9598. {
  9599. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  9600. if (sdRet == SP_SUCCESS)
  9601. {
  9602. break;
  9603. }
  9604. }
  9605. }
  9606. #endif
  9607. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  9608. #ifdef CONFIG_SUPPORT_PVR
  9609. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  9610. {
  9611. dvb_printf(" rec info is exist \n");
  9612. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  9613. }
  9614. else
  9615. #endif
  9616. {
  9617. if (bHasValidServ)
  9618. {
  9619. #ifdef SUPPORT_HOTEL_MODE_INFOBANNER_SHOW_CONTROL
  9620. if((g_stFactoryHotelData.HotelModeOnOff)&&(!g_stFactoryHotelData.ShowInfoBar))
  9621. break;
  9622. #endif
  9623. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  9624. {
  9625. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO);
  9626. if (eServiceType == AL_RECTYPE_DVBRADIO)
  9627. {
  9628. if (!APP_GUIOBJ_DVB_Playback_GetShowLogoState())
  9629. {
  9630. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  9631. }
  9632. }
  9633. if (APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL)
  9634. == MID_PLAYBK_PROG_STATE_LOCKED)
  9635. {
  9636. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  9637. {
  9638. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  9639. }
  9640. #ifdef SUPPORT_CEC_TV
  9641. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  9642. {
  9643. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  9644. }
  9645. #endif
  9646. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO, 0);
  9647. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  9648. }
  9649. else if (APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL)
  9650. == MID_PLAYBK_PROG_STATE_AUDIO_VIDEO_SCRAMBLED \
  9651. ||APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL)
  9652. == MID_PLAYBK_PROG_STATE_ONLY_VIDEO_SCRAMBLED \
  9653. ||(APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL)
  9654. == MID_PLAYBK_PROG_STATE_ONLY_AUDIO_SCRAMBLED && eServiceType == AL_RECTYPE_DVBRADIO))
  9655. {
  9656. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL))
  9657. {
  9658. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  9659. }
  9660. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL))
  9661. {
  9662. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  9663. }
  9664. printf("\n#####Pop Scramble MSG Menu,F=%s,L=%d ######\n",__FUNCTION__,__LINE__);
  9665. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SCRAMBLE);
  9666. }
  9667. else if ((eServiceType == AL_RECTYPE_DVBRADIO)
  9668. &&(!DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL)))
  9669. {
  9670. #ifdef CONFIG_SUPPORT_MHEG5
  9671. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  9672. #endif
  9673. {
  9674. if(g_bScrambleFlag != PROG_STATUS_SCRAMBLE_UNKNOW)
  9675. {
  9676. _DVBApp_ShowPopup(DVB_APP_POP_MSG_RADIO_CHANNEL);
  9677. }
  9678. }
  9679. }
  9680. }
  9681. else
  9682. {
  9683. dvb_printf("[%s %d]\n", __FUNCTION__, __LINE__);
  9684. _DVBApp_CloseAllMenu();
  9685. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  9686. {
  9687. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  9688. }
  9689. #ifdef SUPPORT_CEC_TV
  9690. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  9691. {
  9692. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  9693. }
  9694. #endif
  9695. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO, 0);
  9696. if (APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL)
  9697. == MID_PLAYBK_PROG_STATE_LOCKED)
  9698. {
  9699. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  9700. }
  9701. }
  9702. }
  9703. else
  9704. {
  9705. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  9706. }
  9707. }
  9708. }
  9709. break;
  9710. case UI_EVENT_TEXT:
  9711. {
  9712. #ifdef CONFIG_SUPPORT_MHEG5
  9713. #ifdef SUPPORT_SUBTITLE_ON_PG
  9714. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  9715. #endif
  9716. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  9717. {
  9718. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  9719. {
  9720. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  9721. if (sdRet == SP_SUCCESS)
  9722. {
  9723. // do this action at ui_event_freeze
  9724. #if 0
  9725. if( SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE) ) //Gahu:D0326
  9726. {
  9727. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  9728. }
  9729. if (APP_GetPlaybackPauseState() == TRUE)
  9730. {
  9731. MID_PlaybackStreamResume(1);
  9732. g_PauseState = FALSE;
  9733. }
  9734. #endif
  9735. // do this action at ui_event_freeze
  9736. break;
  9737. }
  9738. }
  9739. }
  9740. #endif
  9741. #ifdef CONFIG_SUPPORT_TTX
  9742. #ifdef CONFIG_SUPPORT_PVR
  9743. if (MID_TSPLParser_GetThreadState())
  9744. {
  9745. al_bool bTtSignalStatus = al_false;
  9746. AL_TTX_GetSignalStatus(&bTtSignalStatus);
  9747. if (bTtSignalStatus == al_true)
  9748. {
  9749. dvb_printf("call create dtv ttx menu!\n");
  9750. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  9751. {
  9752. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  9753. #ifdef CONFIG_SUPPORT_SUBTITLE
  9754. UINT8 onoff = 0;
  9755. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  9756. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  9757. onoff = g_stUserInfoData.Subtitle;
  9758. if (onoff == TRUE)
  9759. {
  9760. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  9761. }
  9762. #endif
  9763. }
  9764. else
  9765. {
  9766. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  9767. {
  9768. _DVBApp_CloseAllMenu();
  9769. }
  9770. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  9771. {
  9772. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  9773. MID_PlaybackStreamResume(1);
  9774. APP_SetPlaybackPauseState(FALSE);
  9775. g_PauseState = FALSE;
  9776. #ifdef Subtitle_Freeze
  9777. AL_Subtitle_SetFreeze(FALSE);
  9778. #endif
  9779. }
  9780. #ifdef CONFIG_SUPPORT_SUBTITLE
  9781. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB);
  9782. #endif
  9783. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_TTX, 0);
  9784. }
  9785. }
  9786. else
  9787. {
  9788. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  9789. {
  9790. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  9791. }
  9792. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_TTX);
  9793. }
  9794. break;
  9795. }
  9796. #endif
  9797. #endif
  9798. UINT8 u8ProgLockState = FALSE;
  9799. AL_ServiceDetail_t SerInfor;
  9800. AL_DB_QueryDetail(APP_DVB_Playback_GetCurrentProgHandle(
  9801. eNetType, (AL_RECTYPE_DVBTV | AL_RECTYPE_DVBRADIO | AL_RECTYPE_DVBDATA)),
  9802. &SerInfor);
  9803. if (AL_DBTYPE_DVB_T == eNetType)
  9804. {
  9805. if (SerInfor.stDVBTServ.stProgAttrib.parental_lock == al_true)
  9806. {
  9807. u8ProgLockState = TRUE;
  9808. }
  9809. }
  9810. else if (AL_DBTYPE_DVB_C == eNetType)
  9811. {
  9812. if (SerInfor.stDVBCServ.stProgAttrib.parental_lock == al_true)
  9813. {
  9814. u8ProgLockState = TRUE;
  9815. }
  9816. }
  9817. else if (AL_DBTYPE_DVB_S == eNetType)
  9818. {
  9819. if (SerInfor.stDVBSServ.stProgAttrib.parental_lock == al_true)
  9820. {
  9821. u8ProgLockState = TRUE;
  9822. }
  9823. }
  9824. if ((u8ProgLockState == TRUE && APP_DVB_Playback_IsUnlock() == FALSE)
  9825. && (g_u32OldPopup == PLAYBACK_POPUP_PWD_LOCKED
  9826. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO)))
  9827. {
  9828. break;
  9829. }
  9830. MID_PlaybackProgState_t GetProgState;
  9831. GetProgState = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL);
  9832. /*if digital programs are locked, pressing TT key is not Available*/
  9833. if((GetProgState != MID_PLAYBK_PROG_STATE_NORMAL)
  9834. && (GetProgState != MID_PLAYBK_PROG_STATE_VIDEO_AVC)
  9835. && (GetProgState != MID_PLAYBK_PROG_STATE_VIDEO_MPEG4))
  9836. {
  9837. break;
  9838. }
  9839. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_DATABASE_EMPTY) || DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE))
  9840. {
  9841. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  9842. break;
  9843. }
  9844. #ifdef CONFIG_SUPPORT_TTX
  9845. al_bool bTtSignalStatus = al_false;
  9846. AL_TTX_GetSignalStatus(&bTtSignalStatus);
  9847. #endif
  9848. #ifndef CONFIG_SUPPORT_MHEG5
  9849. Boolean bIgnoreCheckTTX = TRUE;
  9850. #endif
  9851. if (APP_Area_SupportDtg()
  9852. #ifdef CONFIG_SUPPORT_MHEG5
  9853. && (APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED)
  9854. #else
  9855. && (!bIgnoreCheckTTX) //Also deal with Teletext flow if MHEG5 isn't supported.
  9856. #endif
  9857. )
  9858. {
  9859. #ifdef CONFIG_SUPPORT_MHEG5
  9860. dvb_printf("There is MHEG5 service existed.\n");
  9861. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  9862. {
  9863. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  9864. {
  9865. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  9866. {
  9867. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  9868. }
  9869. if (APP_GetPlaybackPauseState() == TRUE)
  9870. {
  9871. MID_PlaybackStreamResume(1);
  9872. g_PauseState = FALSE;
  9873. }
  9874. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  9875. if (sdRet == SP_SUCCESS)
  9876. {
  9877. break;
  9878. }
  9879. }
  9880. }
  9881. else
  9882. {
  9883. #ifdef CONFIG_SUPPORT_PVR
  9884. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  9885. {
  9886. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_REC_FOR_MHEG);
  9887. break;
  9888. }
  9889. else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode)
  9890. || (MID_REC_MODE_AUTO == u8MIDRecMode))
  9891. {
  9892. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_TIMESHIFT_FOR_MHEG);
  9893. break;
  9894. }
  9895. #endif
  9896. #ifdef CONFIG_SUPPORT_SUBTITLE
  9897. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  9898. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  9899. if (g_stUserInfoData.Subtitle != 0) //Subtitle has been opened.
  9900. {
  9901. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_SUBTITLE_TO_OPEN_MHEG5);
  9902. }
  9903. #endif
  9904. }
  9905. #endif
  9906. }
  9907. #ifdef CONFIG_SUPPORT_TTX
  9908. else if (bTtSignalStatus == al_true)
  9909. {
  9910. eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  9911. if(eSourType != APP_SOURCE_DTV || eServiceType == AL_RECTYPE_DVBRADIO)
  9912. {
  9913. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  9914. break;
  9915. }
  9916. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  9917. {
  9918. dvb_printf("@@@@@@ TTX is Signal Guiobj exsit,destroy ttx menu!\n");
  9919. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  9920. #ifdef CONFIG_SUPPORT_SUBTITLE
  9921. UINT8 onoff = 0;
  9922. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  9923. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  9924. onoff = g_stUserInfoData.Subtitle;
  9925. if (onoff == TRUE)
  9926. {
  9927. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  9928. }
  9929. #endif
  9930. }
  9931. else
  9932. {
  9933. _DVBApp_CloseAllMenu();
  9934. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  9935. {
  9936. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  9937. MID_PlaybackStreamResume(1);
  9938. APP_SetPlaybackPauseState(FALSE);
  9939. g_PauseState = FALSE;
  9940. #ifdef Subtitle_Freeze
  9941. AL_Subtitle_SetFreeze(FALSE);
  9942. #endif
  9943. }
  9944. #ifdef CONFIG_SUPPORT_SUBTITLE
  9945. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB);
  9946. #endif
  9947. dvb_printf("@@@@@@ TTX is Signal,Cestroy ttx menu!\n");
  9948. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_TTX, 0);
  9949. }
  9950. }
  9951. #endif
  9952. else
  9953. {
  9954. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX))
  9955. {
  9956. dvb_printf("@@@@@@ TTX is Signal Guiobj exsit,destroy ttx menu!\n");
  9957. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTX);
  9958. }
  9959. else
  9960. {
  9961. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  9962. }
  9963. }
  9964. }
  9965. break;
  9966. #ifdef SUPPORT_CLOCKINFO_SHOW
  9967. case UI_EVENT_DEVLIST: //UI_EVENT_DEVLIST clock key
  9968. {
  9969. /*if digital programs are locked, pressing clock key is not Available*/
  9970. MID_PlaybackProgState_t GetProgState;
  9971. GetProgState = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL);
  9972. if ((GetProgState == MID_PLAYBK_PROG_STATE_LOCKED) \
  9973. || (GetProgState == MID_PLAYBK_PROG_STATE_ONLY_VIDEO_SCRAMBLED) \
  9974. ||(GetProgState == MID_PLAYBK_PROG_STATE_AUDIO_VIDEO_SCRAMBLED) \
  9975. || (GetProgState == MID_PLAYBK_PROG_STATE_ONLY_AUDIO_SCRAMBLED))
  9976. {
  9977. break;
  9978. }
  9979. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_DATABASE_EMPTY))
  9980. {
  9981. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  9982. break;
  9983. }
  9984. if (eSourType == APP_SOURCE_DTV)
  9985. {
  9986. #if 0
  9987. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTXCLOCK))
  9988. {
  9989. //dvb_printf("close clock menu!\n");
  9990. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_TTXCLOCK);
  9991. }
  9992. else
  9993. {
  9994. al_bool bTtSignalStatus = 0;
  9995. AL_TTX_GetSignalStatus(&bTtSignalStatus);
  9996. if ((bTtSignalStatus == TRUE) && (_DTVAPP_Check_TTClock_HasValidData() == SP_SUCCESS))
  9997. {
  9998. //dvb_printf("open clock menu!\n");
  9999. _DVBApp_CloseAllMenu();
  10000. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_TTXCLOCK, 0);
  10001. }
  10002. else
  10003. {
  10004. //dvb_printf("no clock!\n");
  10005. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  10006. }
  10007. }
  10008. #endif
  10009. }
  10010. else
  10011. {
  10012. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  10013. }
  10014. }
  10015. break;
  10016. #endif
  10017. case UI_EVENT_SUBTITLE:
  10018. #ifdef CONFIG_SUPPORT_PVR
  10019. if (MID_TSPLParser_GetThreadState())
  10020. {
  10021. UINT32 u32PEState = MID_TSPL_MODE_STOP;
  10022. MID_TSPLParser_GetPlayState(&u32PEState, NULL);
  10023. if (u32PEState != MID_TSPL_MODE_PLAY)
  10024. {
  10025. break;
  10026. }
  10027. #ifdef CONFIG_SUPPORT_SUBTITLE
  10028. UINT32 SubTotalNum = 0;
  10029. #ifdef CONFIG_SUPPORT_TTX
  10030. al_uint32 TTXSubtitleTotalNum = 0;
  10031. #endif
  10032. if(AL_Subtitle_GetTotalNum(&SubTotalNum) == AL_SUCCESS
  10033. #ifdef CONFIG_SUPPORT_TTX
  10034. || (AL_TTX_GetTotalNum(AL_TTX_SUB_DESC_TYPE, &TTXSubtitleTotalNum) == AL_SUCCESS)
  10035. #endif
  10036. )
  10037. {
  10038. if(SubTotalNum > 0)
  10039. {
  10040. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU))
  10041. {
  10042. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU);
  10043. _DVBApp_CheckPopupDisplay();
  10044. }
  10045. else
  10046. {
  10047. _DVBApp_HidePopupDisplay();
  10048. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  10049. {
  10050. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  10051. }
  10052. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  10053. {
  10054. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC);
  10055. }
  10056. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER))
  10057. {
  10058. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER);
  10059. }
  10060. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD))
  10061. {
  10062. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD);
  10063. }
  10064. APP_GUIOBJ_SubTitle_SetTSFMode(TRUE);
  10065. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU, 0);
  10066. }
  10067. break;
  10068. }
  10069. #ifdef CONFIG_SUPPORT_TTX
  10070. else if (TTXSubtitleTotalNum > 0)
  10071. {
  10072. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU))
  10073. {
  10074. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU);
  10075. _DVBApp_CheckPopupDisplay();
  10076. }
  10077. else
  10078. {
  10079. _DVBApp_HidePopupDisplay();
  10080. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  10081. {
  10082. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  10083. }
  10084. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  10085. {
  10086. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC);
  10087. }
  10088. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER))
  10089. {
  10090. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER);
  10091. }
  10092. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD))
  10093. {
  10094. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD);
  10095. }
  10096. APP_GUIOBJ_SubTitle_SetTSFMode(TRUE);
  10097. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU, 0);
  10098. }
  10099. break;
  10100. }
  10101. #endif
  10102. }
  10103. #endif
  10104. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  10105. break;
  10106. }
  10107. #endif
  10108. {
  10109. UINT8 u8ProgLockState = MID_PLAYBK_PROG_STATE_REPLACE;
  10110. u8ProgLockState = APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL);
  10111. if((u8ProgLockState != MID_PLAYBK_PROG_STATE_NORMAL)
  10112. && (u8ProgLockState != MID_PLAYBK_PROG_STATE_VIDEO_AVC)
  10113. && (u8ProgLockState != MID_PLAYBK_PROG_STATE_VIDEO_MPEG4))
  10114. {
  10115. break;
  10116. }
  10117. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  10118. if (MID_PlaybackIsPauseState() || (bSignalState != AL_DVB_MONITOR_VALUE_TRUE) || (DVBApp_CheckServiceNotAvailable() == TRUE)
  10119. || (u8ProgLockState == MID_PLAYBK_PROG_STATE_AUDIO_VIDEO_SCRAMBLED)\
  10120. ||(u8ProgLockState == MID_PLAYBK_PROG_STATE_ONLY_AUDIO_SCRAMBLED)\
  10121. ||(u8ProgLockState == MID_PLAYBK_PROG_STATE_ONLY_VIDEO_SCRAMBLED))
  10122. {
  10123. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  10124. break;
  10125. }
  10126. #ifdef CONFIG_SUPPORT_SUBTITLE
  10127. UINT32 SubTotalNum = 0;
  10128. #ifdef CONFIG_SUPPORT_TTX
  10129. al_uint32 TTXSubtitleTotalNum = 0;
  10130. #endif
  10131. if ((AL_Subtitle_GetTotalNum(&SubTotalNum) == AL_SUCCESS)
  10132. #ifdef CONFIG_SUPPORT_TTX
  10133. || (AL_TTX_GetTotalNum(AL_TTX_SUB_DESC_TYPE, &TTXSubtitleTotalNum) == AL_SUCCESS)
  10134. #endif
  10135. )
  10136. {
  10137. if (SubTotalNum > 0)
  10138. {
  10139. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU))
  10140. {
  10141. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU);
  10142. _DVBApp_CheckPopupDisplay();
  10143. }
  10144. else
  10145. {
  10146. _DVBApp_HidePopupDisplay();
  10147. _DVBApp_CloseAllMenu();
  10148. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER))
  10149. {
  10150. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER);
  10151. }
  10152. APP_GUIOBJ_SubTitle_SetTSFMode(FALSE);
  10153. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU, 0);
  10154. }
  10155. }
  10156. #ifdef CONFIG_SUPPORT_TTX
  10157. else if (TTXSubtitleTotalNum > 0)
  10158. {
  10159. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU))
  10160. {
  10161. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU);
  10162. _DVBApp_CheckPopupDisplay();
  10163. }
  10164. else
  10165. {
  10166. _DVBApp_HidePopupDisplay();
  10167. _DVBApp_CloseAllMenu();
  10168. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER))
  10169. {
  10170. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER);
  10171. }
  10172. APP_GUIOBJ_SubTitle_SetTSFMode(FALSE);
  10173. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU, 0);
  10174. }
  10175. }
  10176. #endif
  10177. else
  10178. {
  10179. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_SUBTITLE);
  10180. }
  10181. }
  10182. else
  10183. {
  10184. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_SUBTITLE);
  10185. }
  10186. #else
  10187. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  10188. #endif
  10189. }
  10190. break;
  10191. case UI_EVENT_VOL_DN:
  10192. case UI_EVENT_VOL_UP:
  10193. #ifdef SUPPORT_CEC_TV
  10194. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  10195. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  10196. if (( APP_SWITCH_ON == g_stFeatureData.Enable_HDMILink)
  10197. #ifdef SUPPORT_AMPLIFIER_CONTROL
  10198. &&(APP_SWITCH_ON == g_stFeatureData.AmplifierControl)
  10199. #endif
  10200. && (APP_HDMILINK_AMPLIFIER == g_stFeatureData.SpeakerPreference)
  10201. && (APP_GUIOBJ_Source_GetAmplifierPort() != 0) && APP_Check_CEC_DEVICE_Status())
  10202. {
  10203. if (CECTV_GetCECEnable()==CECTV_ENABLE)
  10204. {
  10205. if(dMessage == UI_EVENT_VOL_UP)
  10206. {
  10207. APP_Set_CECTV_Mute_Status(EVENT_CECTV_SET_MUTE_STATUS_VOLUME_UP);
  10208. }
  10209. else if(dMessage == UI_EVENT_VOL_DN)
  10210. {
  10211. APP_Set_CECTV_Mute_Status(EVENT_CECTV_SET_MUTE_STATUS_VOLUME_DOWN);
  10212. }
  10213. DVBApp_VolumeKeyHandler(dMessage,TRUE);
  10214. break;
  10215. }
  10216. }
  10217. #endif
  10218. DVBApp_VolumeKeyHandler(dMessage,FALSE);
  10219. break;
  10220. case UI_EVENT_ASPECT:
  10221. #ifdef CONFIG_SUPPORT_PVR
  10222. /*if (MID_TSPLParser_GetThreadState() == TRUE)
  10223. {
  10224. UINT32 u32PEState = MID_TSPL_MODE_PLAY;
  10225. MID_TSPLParser_GetPlayState(&u32PEState, NULL);
  10226. if (u32PEState == MID_TSPL_MODE_PAUSE)
  10227. {
  10228. break;
  10229. }
  10230. }*/
  10231. if (APP_GUIOBJ_DVB_PvrPlayInfo_GetRecState() == PVR_STATE_PAUSE)
  10232. {
  10233. break;
  10234. }
  10235. #endif
  10236. if ((APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_LOCKED)
  10237. #ifdef CONFIG_SUPPORT_PVR //if playing pvr file, allow to set pic mode
  10238. && (!MID_TSPLParser_GetThreadState())
  10239. #endif
  10240. )
  10241. {
  10242. break;
  10243. }
  10244. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  10245. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  10246. if (g_stFactoryHotelData.HotelModeOnOff == 1&&g_stFactoryHotelData.PictureLock == 1)
  10247. {
  10248. dvb_printf("[%s] Picture Option has been Lock On!!\n",__FUNCTION__);
  10249. break;
  10250. }
  10251. MID_DISP_DTVGetVideoMute(&eMuteSt);
  10252. if ((eMuteSt == MID_DISP_MUTE) || (eMuteSt == MID_DISP_MUTE_BY_APP) || (eMuteSt == MID_DISP_MUTE_BY_TVFE) ||(eMuteSt == MID_DISP_MUTE_BY_VIP))
  10253. {
  10254. #ifdef CONFIG_SUPPORT_MHEG5
  10255. al_uint8 bSignalState = al_false;
  10256. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  10257. if((bSignalState != AL_DVB_MONITOR_VALUE_TRUE)
  10258. ||(!((APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED)
  10259. && APP_Area_SupportDtg())))
  10260. {
  10261. break;
  10262. }
  10263. #else
  10264. break;
  10265. #endif
  10266. }
  10267. {
  10268. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  10269. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  10270. if ((bHasValidServ && (bSignalState == AL_DVB_MONITOR_VALUE_TRUE) && (eServiceType != AL_RECTYPE_DVBRADIO))
  10271. #ifdef CONFIG_SUPPORT_PVR //if playing pvr file, allow to set pic mode
  10272. || (MID_TSPLParser_GetThreadState())
  10273. #endif
  10274. )
  10275. {
  10276. #ifdef CONFIG_SUPPORT_PVR
  10277. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  10278. #endif
  10279. {
  10280. _DVBApp_CloseAllMenu();
  10281. }
  10282. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_BANNER, dMessage);
  10283. }
  10284. else
  10285. {
  10286. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  10287. break;
  10288. }
  10289. }
  10290. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  10291. {
  10292. if (eSourType == APP_SOURCE_DTV)
  10293. {
  10294. #ifdef CONFIG_SUPPORT_SUBTITLE
  10295. UINT8 tmpIdx = 0;
  10296. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  10297. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  10298. tmpIdx = g_stUserInfoData.Subtitle;
  10299. if (tmpIdx == DVB_SWITCH_ON)
  10300. {
  10301. #ifdef Subtitle_Freeze
  10302. AL_Subtitle_SetFreeze(FALSE);
  10303. #else
  10304. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  10305. #endif
  10306. }
  10307. #endif
  10308. #ifdef CONFIG_SUPPORT_MHEG5
  10309. #ifdef CONFIG_SUPPORT_SUBTITLE
  10310. if (tmpIdx == DVB_SWITCH_OFF)
  10311. #endif
  10312. {
  10313. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5);
  10314. }
  10315. #endif
  10316. }
  10317. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  10318. }
  10319. if (APP_GetPlaybackPauseState() == TRUE)
  10320. {
  10321. MID_PlaybackStreamResume(1);
  10322. g_PauseState = FALSE;
  10323. }
  10324. break;
  10325. #ifdef SUPPORT_FACTORY_AUTO_TEST
  10326. case UI_EVENT_KEYPAD_DOWN:
  10327. case UI_EVENT_KEYPAD_UP:
  10328. case UI_EVENT_KEYPAD_SOURCE:
  10329. case UI_EVENT_KEYPAD_LEFT:
  10330. case UI_EVENT_KEYPAD_RIGHT:
  10331. case UI_EVENT_KEYPAD_POWER:
  10332. case UI_EVENT_KEYPAD_MENU:
  10333. {
  10334. extern int APP_Factory_GetAutoTestOnOff(void);
  10335. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  10336. {
  10337. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB,APP_GUIOBJ_BANNER))
  10338. {
  10339. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_BANNER, dMessage);
  10340. }
  10341. }
  10342. }
  10343. break;
  10344. #endif
  10345. #ifdef CELLO_REMOTE_KEY
  10346. case UI_EVENT_PIC_ASPECT:
  10347. #endif
  10348. case UI_EVENT_PIC_MOD:
  10349. if ((APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_LOCKED)
  10350. #ifdef CONFIG_SUPPORT_PVR
  10351. &&(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  10352. #endif
  10353. )
  10354. {
  10355. break;
  10356. }
  10357. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  10358. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  10359. if (g_stFactoryHotelData.HotelModeOnOff == 1&&g_stFactoryHotelData.PictureLock == 1)
  10360. {
  10361. dvb_printf("[%s] Picture Option has been Lock On!!\n",__FUNCTION__);
  10362. break;
  10363. }
  10364. #if 0
  10365. TVFE_GetAPPMuteFlag(&bAPPMuteEn);
  10366. TVFE_GetTvfeMuteFlag(&bTvfeMuteEn);
  10367. if ((bAPPMuteEn == DTV_TRUE) || (bTvfeMuteEn == DTV_TRUE))
  10368. {
  10369. #ifdef CONFIG_SUPPORT_MHEG5
  10370. al_uint8 bSignalState = al_false;
  10371. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  10372. if((bSignalState != AL_DVB_MONITOR_VALUE_TRUE)
  10373. ||(!((APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED)
  10374. && APP_Area_SupportDtg())))
  10375. {
  10376. break;
  10377. }
  10378. #else
  10379. break;
  10380. #endif
  10381. }
  10382. if ((eServiceType == AL_RECTYPE_DVBRADIO)
  10383. #ifdef CONFIG_SUPPORT_PVR //if playing pvr file, allow to set pic mode
  10384. && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)
  10385. #endif
  10386. )
  10387. {
  10388. break; //zhongbaoxing added for mantis bug 0136063 @20110525
  10389. }
  10390. TotalNum = DVBApp_Get_TotalNumber();
  10391. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  10392. if (((TotalNum > 0) && (bSignalState == AL_DVB_MONITOR_VALUE_TRUE))
  10393. #ifdef CONFIG_SUPPORT_PVR //if playing pvr file, allow to set pic mode
  10394. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)
  10395. #endif
  10396. )
  10397. #endif
  10398. {
  10399. #ifdef CONFIG_SUPPORT_PVR
  10400. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  10401. #endif
  10402. {
  10403. _DVBApp_CloseAllMenu();
  10404. }
  10405. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_BANNER, dMessage);
  10406. }
  10407. break;
  10408. case UI_EVENT_SLEEP:
  10409. if ((APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_LOCKED)
  10410. #ifdef CONFIG_SUPPORT_PVR
  10411. &&(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  10412. #endif
  10413. )
  10414. {
  10415. break;
  10416. }
  10417. #if 0
  10418. TVFE_GetAPPMuteFlag(&bAPPMuteEn);
  10419. TVFE_GetTvfeMuteFlag(&bTvfeMuteEn);
  10420. if ((bAPPMuteEn == DTV_TRUE) || (bTvfeMuteEn == DTV_TRUE))
  10421. {
  10422. #ifdef CONFIG_SUPPORT_MHEG5
  10423. al_uint8 bSignalState = al_false;
  10424. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  10425. if((bSignalState != AL_DVB_MONITOR_VALUE_TRUE)
  10426. ||(!((APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED)
  10427. && APP_Area_SupportDtg())))
  10428. {
  10429. break;
  10430. }
  10431. #else
  10432. break;
  10433. #endif
  10434. }
  10435. #endif
  10436. {
  10437. #ifdef CONFIG_SUPPORT_PVR
  10438. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  10439. #endif
  10440. {
  10441. _DVBApp_CloseAllMenu();
  10442. }
  10443. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_BANNER, dMessage);
  10444. }
  10445. break;
  10446. case UI_EVENT_SND_MOD:
  10447. #ifdef CELLO_REMOTE_KEY
  10448. case UI_EVENT_SOUND_MTS:
  10449. #endif
  10450. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  10451. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  10452. if(g_stUserInfoData.Mute)
  10453. {
  10454. if (CECTV_GetHDMISystemAudioMode()&& APP_Check_CEC_DEVICE_Status())
  10455. {
  10456. cec_RemoteControlPassThrough(CECTV_KEY_MUTE);
  10457. cec_RemoteControlPassThrough(CECTV_KEY_MUTE_RELEASE);
  10458. }
  10459. }
  10460. _APP_GUIOBJ_Sound_SetMuteStatus();
  10461. if ((APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_LOCKED)
  10462. #ifdef CONFIG_SUPPORT_PVR
  10463. &&(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  10464. #endif
  10465. )
  10466. {
  10467. break;
  10468. }
  10469. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  10470. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  10471. if (g_stFactoryHotelData.HotelModeOnOff == 1&&g_stFactoryHotelData.SoundLock== 1)
  10472. {
  10473. dvb_printf("[%s] Sound Option has been Lock On!!\n",__FUNCTION__);
  10474. break;
  10475. }
  10476. #if 0
  10477. TVFE_GetAPPMuteFlag(&bAPPMuteEn);
  10478. TVFE_GetTvfeMuteFlag(&bTvfeMuteEn);
  10479. if ((bAPPMuteEn == DTV_TRUE) || (bTvfeMuteEn == DTV_TRUE))
  10480. {
  10481. #ifdef CONFIG_SUPPORT_MHEG5
  10482. al_uint8 bSignalState = al_false;
  10483. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  10484. if((bSignalState != AL_DVB_MONITOR_VALUE_TRUE)
  10485. ||(!((APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED)
  10486. && APP_Area_SupportDtg())))
  10487. {
  10488. break;
  10489. }
  10490. #else
  10491. break;
  10492. #endif
  10493. }
  10494. TotalNum = DVBApp_Get_TotalNumber();
  10495. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  10496. if (((TotalNum > 0) && (bSignalState == AL_DVB_MONITOR_VALUE_TRUE))
  10497. #ifdef CONFIG_SUPPORT_PVR //if playing pvr file, allow to set pic mode
  10498. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)
  10499. #endif
  10500. )
  10501. #endif
  10502. {
  10503. #ifdef CONFIG_SUPPORT_PVR
  10504. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  10505. #endif
  10506. {
  10507. _DVBApp_CloseAllMenu();
  10508. }
  10509. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_BANNER, dMessage);
  10510. }
  10511. break;
  10512. case UI_EVENT_8:
  10513. case UI_EVENT_0:
  10514. case UI_EVENT_1:
  10515. case UI_EVENT_2:
  10516. case UI_EVENT_3:
  10517. case UI_EVENT_4:
  10518. case UI_EVENT_5:
  10519. case UI_EVENT_6:
  10520. case UI_EVENT_7:
  10521. case UI_EVENT_9:
  10522. case UI_EVENT_10:
  10523. #ifdef SUPPORT_FACTORY_AUTO_TEST
  10524. if(dMessage == UI_EVENT_10)
  10525. {
  10526. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  10527. {
  10528. APP_Factory_SetAutoTestSourceChange(dMessage);
  10529. break;
  10530. }
  10531. }
  10532. #endif
  10533. #if 0 //def CONFIG_SUPPORT_PVR
  10534. if ((u8MidRecState != MID_REC_STATUS_STOP) && (MID_REC_MODE_AUTO != u8MIDRecMode))
  10535. {
  10536. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER))
  10537. {
  10538. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER);
  10539. }
  10540. if (MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode)
  10541. {
  10542. g_u32NumEvent = dMessage;
  10543. g_bIsNumKey = TRUE;
  10544. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_CHANNEL_CHANGE);
  10545. break;
  10546. }
  10547. else if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  10548. {
  10549. g_u32NumEvent = dMessage;
  10550. g_bIsNumKey = TRUE;
  10551. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_CHANNEL_CHANGE);
  10552. break;
  10553. }
  10554. }
  10555. #endif
  10556. #ifdef CONFIG_SUPPORT_MHEG5
  10557. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  10558. {
  10559. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  10560. {
  10561. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  10562. if (sdRet == SP_SUCCESS)
  10563. {
  10564. break;
  10565. }
  10566. }
  10567. }
  10568. #endif
  10569. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM))
  10570. {
  10571. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM);
  10572. }
  10573. else
  10574. {
  10575. _DVBApp_HidePopupDisplay();
  10576. _DVBApp_CloseAllMenu();
  10577. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PROGNUM, (dMessage - UI_EVENT_0));
  10578. }
  10579. break;
  10580. #ifdef CONFIG_SUPPORT_PVR
  10581. case UI_EVENT_REC:
  10582. #ifdef REMINDER_OLNY_NO_RECORD
  10583. break;
  10584. #endif
  10585. dvb_printf("UI_EVENT_REC");
  10586. #if defined(SUPPORT_HOTEL_MODE_PVR_FUNCTION_CONTROL)
  10587. if((g_stFactoryHotelData.HotelModeOnOff)&&(!g_stFactoryHotelData.PVRFunction))
  10588. {
  10589. break;
  10590. }
  10591. #elif defined(SUPPORT_PVR_ONOFF)
  10592. if(!g_stSetupData.PVROnOff)
  10593. {
  10594. break;
  10595. }
  10596. #endif
  10597. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  10598. {
  10599. dvb_printf("double rec ,goto duration");
  10600. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  10601. {
  10602. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  10603. }
  10604. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME, 0);
  10605. }
  10606. else
  10607. {
  10608. if (u8MidRecState == MID_REC_STATUS_STOP)
  10609. {
  10610. if (DVBApp_CheckForRecord(MID_REC_MODE_MANUAL) != SP_SUCCESS)
  10611. {
  10612. break;
  10613. }
  10614. #ifdef CONFIG_SUPPORT_MHEG5
  10615. if (APP_Area_SupportDtg() && SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  10616. {
  10617. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_MHEG_FOR_REC);
  10618. }
  10619. else
  10620. #endif
  10621. {
  10622. #ifndef SUPPORT_PVR_SPEC_START_NO_POP
  10623. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_START);
  10624. #else
  10625. dvb_printf("start record is call\n");
  10626. _APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurTime();
  10627. _DVBApp_CloseAllMenu();
  10628. DVBApp_StartRecord(MID_REC_MODE_MANUAL);
  10629. #endif
  10630. }
  10631. break;
  10632. }
  10633. #ifdef SUPPORT_SPEC_PVR_RECORD
  10634. else if ((MID_REC_MODE_MANUAL != u8MIDRecMode)
  10635. && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  10636. { //if timeshifting, then pop to ask stop timeshift and start record
  10637. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_TSHIFT_TO_REC);
  10638. }
  10639. #endif
  10640. }
  10641. break;
  10642. case UI_EVENT_STOP:
  10643. #ifdef CONFIG_SUPPORT_MHEG5
  10644. #ifdef SUPPORT_SUBTITLE_ON_PG
  10645. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  10646. #endif
  10647. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  10648. {
  10649. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  10650. {
  10651. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  10652. if (sdRet == SP_SUCCESS)
  10653. {
  10654. break;
  10655. }
  10656. }
  10657. }
  10658. #endif
  10659. if ((MID_REC_MODE_AUTO == u8MIDRecMode) && ((MID_REC_STATUS_START == u8MidRecState) || (!APP_GUIOBJ_DVB_PvrPlayInfo_GetStopPopFlag())))
  10660. {
  10661. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER)
  10662. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD)
  10663. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  10664. {
  10665. break;
  10666. }
  10667. if (PVR_STATE_STOP != APP_GUIOBJ_DVB_PvrPlayInfo_GetRecState())
  10668. {
  10669. APP_GUIOBJ_DVB_PvrPlayInfo_StopTimeshift();
  10670. }
  10671. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  10672. {
  10673. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  10674. }
  10675. }
  10676. else
  10677. {
  10678. if (((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) ||
  10679. (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)))&&(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  10680. {
  10681. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP);
  10682. }
  10683. else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  10684. {
  10685. if (MID_REC_MODE_AUTO == u8MIDRecMode)
  10686. {
  10687. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  10688. }
  10689. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP);
  10690. }
  10691. else
  10692. {
  10693. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  10694. {
  10695. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, dMessage, 0);
  10696. }
  10697. }
  10698. }
  10699. break;
  10700. case APP_DVB_GLOBAL_EVENT_DTV_MEDIA_INIT_FAIL:
  10701. case APP_DVB_GLOBAL_EVENT_DTV_MEDIA_INIT_SUCCESSFUL:
  10702. case APP_DVB_GLOBAL_EVENT_PVR_RATING_UPDATE:
  10703. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  10704. {
  10705. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY, dMessage, dParam);
  10706. break;
  10707. }
  10708. break;
  10709. case APP_DVB_GLOBAL_EVENT_DTV_MEDIA_INIT_PLAYSTATE:
  10710. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  10711. {
  10712. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY, dMessage, 0);
  10713. break;
  10714. }
  10715. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  10716. {
  10717. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, dMessage, 0);
  10718. break;
  10719. }
  10720. {
  10721. UINT8 u8Mute = 0;
  10722. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  10723. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  10724. u8Mute = g_stUserInfoData.Mute;
  10725. if (u8Mute == FALSE)
  10726. {
  10727. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_DTV);
  10728. }
  10729. MID_TSPLParser_Resume();
  10730. #ifdef CONFIG_SUPPORT_SUBTITLE
  10731. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  10732. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  10733. if (g_stUserInfoData.Subtitle == 1)
  10734. {
  10735. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE))
  10736. {
  10737. APP_GUIOBJ_SubTitle_Start();
  10738. }
  10739. }
  10740. #endif
  10741. }
  10742. break;
  10743. case APP_DVB_GLOBAL_EVENT_PVR_UPDATE_TIME:
  10744. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  10745. {
  10746. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, dMessage, 0);
  10747. break;
  10748. }
  10749. break;
  10750. case APP_DVB_GLOBAL_EVENT_DTV_MEDIA_PLAYDONE:
  10751. case APP_DVB_GLOBAL_EVENT_DTV_MEDIA_PLAYREADERROR:
  10752. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  10753. {
  10754. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY, dMessage, 0);
  10755. break;
  10756. }
  10757. if ((MID_REC_MODE_AUTO == u8MIDRecMode)
  10758. || (MID_REC_MODE_MANUAL == u8MIDRecMode))
  10759. {
  10760. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  10761. {
  10762. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  10763. }
  10764. APP_GUIOBJ_DVB_PvrPlayInfo_StopTimeshift();
  10765. }
  10766. else if (MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode)
  10767. {
  10768. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  10769. {
  10770. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, dMessage, 0);
  10771. break;
  10772. }
  10773. APP_GUIOBJ_DVB_PvrPlayInfo_StopTimeshift();
  10774. }
  10775. break;
  10776. case APP_DVB_GLOBAL_EVENT_SWITCH_FILEPLAY:
  10777. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  10778. {
  10779. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY);
  10780. }
  10781. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE)
  10782. && !APP_MenuMgr_Exist_Main_Menu())
  10783. {
  10784. SYSAPP_GOBJ_CreateGUIObject_WithPara(
  10785. SYS_APP_DVB, DVB_GUIOBJ_RECORDLIST, dParam);
  10786. }
  10787. break;
  10788. case APP_DVB_GLOBAL_EVENT_CLOSE_FILEPLAY:
  10789. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  10790. {
  10791. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY);
  10792. }
  10793. break;
  10794. case APP_DVB_GLOBAL_EVENT_REC_NOTIFY_DISK_FULL:
  10795. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  10796. {
  10797. DVBApp_StopRecord();
  10798. }
  10799. else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode) ||
  10800. (MID_REC_MODE_AUTO == u8MIDRecMode))
  10801. {
  10802. DVBApp_StopTimeshift(TRUE);
  10803. }
  10804. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_DISK_FULL);
  10805. break;
  10806. case APP_DVB_GLOBAL_EVENT_REC_NOTIFY_WRITE_ERR:
  10807. case APP_DVB_GLOBAL_EVENT_REC_NOTIFY_GFS_FAILURE:
  10808. if (MID_PartitionList_GetMountedCount() == 0)
  10809. {
  10810. break;
  10811. }
  10812. if (MID_RecorderIsCurRecording() != DRV_SUCCESS)
  10813. {
  10814. break;
  10815. }
  10816. if (MID_REC_MODE_MANUAL == u8MIDRecMode|| MID_REC_MODE_UNATTENDED == u8MIDRecMode)
  10817. {
  10818. DVBApp_StopRecord();
  10819. if(dMessage == APP_DVB_GLOBAL_EVENT_REC_NOTIFY_GFS_FAILURE)
  10820. {
  10821. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  10822. }
  10823. else
  10824. {
  10825. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_WRITE_ERROR);
  10826. }
  10827. }
  10828. else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode) ||
  10829. (MID_REC_MODE_AUTO == u8MIDRecMode))
  10830. {
  10831. DVBApp_StopTimeshift(TRUE);
  10832. if(dMessage == APP_DVB_GLOBAL_EVENT_REC_NOTIFY_GFS_FAILURE)
  10833. {
  10834. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_ENTER_NOT_VALID);
  10835. }
  10836. else
  10837. {
  10838. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_WRITE_ERROR);
  10839. }
  10840. }
  10841. if (APP_PVR_TIMESHIFT_AUTO == u8AutoTimeShift)
  10842. {
  10843. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  10844. }
  10845. break;
  10846. case UI_EVENT_GOTO:
  10847. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) ||
  10848. (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)))
  10849. {
  10850. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_GOTO))
  10851. {
  10852. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_GOTO, 0);
  10853. }
  10854. }
  10855. break;
  10856. case UI_EVENT_FF:
  10857. #ifdef CONFIG_SUPPORT_MHEG5
  10858. #ifdef SUPPORT_SUBTITLE_ON_PG
  10859. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  10860. #endif
  10861. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  10862. {
  10863. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  10864. {
  10865. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  10866. if (sdRet == SP_SUCCESS)
  10867. {
  10868. break;
  10869. }
  10870. }
  10871. }
  10872. #endif
  10873. break;
  10874. case UI_EVENT_FR:
  10875. #ifdef CONFIG_SUPPORT_MHEG5
  10876. #ifdef SUPPORT_SUBTITLE_ON_PG
  10877. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  10878. #endif
  10879. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  10880. {
  10881. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  10882. {
  10883. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  10884. if (sdRet == SP_SUCCESS)
  10885. {
  10886. break;
  10887. }
  10888. }
  10889. }
  10890. #endif
  10891. if ((MID_REC_MODE_AUTO == u8MIDRecMode) && (u8MidRecState != MID_REC_STATUS_STOP))
  10892. {
  10893. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER)
  10894. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD)
  10895. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  10896. {
  10897. break;
  10898. }
  10899. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  10900. {
  10901. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  10902. }
  10903. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERFR);
  10904. }
  10905. break;
  10906. case UI_EVENT_PREV:
  10907. #ifdef CONFIG_SUPPORT_MHEG5
  10908. #ifdef SUPPORT_SUBTITLE_ON_PG
  10909. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  10910. #endif
  10911. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  10912. {
  10913. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  10914. {
  10915. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  10916. if (sdRet == SP_SUCCESS)
  10917. {
  10918. break;
  10919. }
  10920. }
  10921. }
  10922. #endif
  10923. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  10924. {
  10925. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, dMessage, 0);
  10926. }
  10927. break;
  10928. case UI_EVENT_NEXT:
  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 (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  10946. {
  10947. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, dMessage, 0);
  10948. }
  10949. break;
  10950. case APP_DVB_GLOBAL_EVENT_REC_START_FROM_EPG:
  10951. {
  10952. AL_RecHandle_t hRecProg = AL_DB_INVALIDHDL;
  10953. al_uint32 CurTimeInSec = 0;
  10954. al_uint32 EndTimeInsec = 0;
  10955. EndTimeInsec = APP_GUIOBJ_DVB_Epg_GetEndTime();
  10956. AL_Time_GetCurTimeInSecs(&CurTimeInSec);
  10957. if ((CurTimeInSec+10) >= EndTimeInsec)
  10958. {
  10959. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  10960. }
  10961. hRecProg = APP_GUIOBJ_DVB_Epg_GetRecHdl();
  10962. _DVBApp_CloseAllMenu();
  10963. if ((hRecProg != AL_DB_INVALIDHDL)
  10964. && (hCurProg != hRecProg))
  10965. {
  10966. AL_DB_EDBType_t db_type;
  10967. AL_DB_ERecordType_t eServiceType;
  10968. AL_DB_GetRecordType(hRecProg, &db_type, &eServiceType);
  10969. _DVBApp_Zapping(eServiceType, hRecProg, FALSE, 0, FALSE);
  10970. }
  10971. _DVBApp_CloseAllMenu();
  10972. _APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurTime();
  10973. DVBApp_StartRecord(MID_REC_MODE_MANUAL);
  10974. APP_GUIOBJ_DVB_PvrRecDurationTime_SetDurTime(EndTimeInsec);
  10975. }
  10976. break;
  10977. #endif
  10978. case UI_EVENT_FREEZE:
  10979. {
  10980. MID_DISP_DTVGetVideoMute(&eMuteSt);
  10981. if ((eMuteSt == MID_DISP_MUTE)
  10982. || (eMuteSt == MID_DISP_MUTE_BY_APP)
  10983. ||(eMuteSt == MID_DISP_MUTE_BY_TVFE)
  10984. ||(eMuteSt == MID_DISP_MUTE_BY_VIP))
  10985. {
  10986. break;
  10987. }
  10988. }
  10989. /* here, judge database empty or not */
  10990. {
  10991. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  10992. if (!bHasValidServ)
  10993. {
  10994. /* database empty, do nothing */
  10995. break;
  10996. }
  10997. }
  10998. #ifdef CONFIG_SUPPORT_PVR
  10999. if ((MID_REC_STATUS_STOP != u8MidRecState) && (MID_REC_MODE_MANUAL != u8MIDRecMode))
  11000. {
  11001. break; //when timeshift invalid freeze function
  11002. }
  11003. #endif
  11004. #ifdef CONFIG_SUPPORT_MHEG5
  11005. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  11006. {
  11007. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  11008. {
  11009. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, UI_EVENT_FREEZE, (UINT32)&sdRet);
  11010. if (sdRet == SP_ERR_FAILURE)
  11011. {
  11012. break;
  11013. }
  11014. }
  11015. }
  11016. #endif
  11017. if (eServiceType == AL_RECTYPE_DVBRADIO)
  11018. {
  11019. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  11020. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  11021. break;
  11022. }
  11023. #ifdef CONFIG_SUPPORT_SUBTITLE
  11024. UINT8 tmpIdx = 0;
  11025. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  11026. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  11027. tmpIdx = g_stUserInfoData.Subtitle;
  11028. #endif
  11029. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  11030. {
  11031. #ifdef CONFIG_SUPPORT_SUBTITLE
  11032. if (tmpIdx == DVB_SWITCH_ON)
  11033. {
  11034. #ifdef Subtitle_Freeze
  11035. AL_Subtitle_SetFreeze(FALSE);
  11036. #else
  11037. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  11038. #endif
  11039. }
  11040. #endif
  11041. //zhongbaoxing added for mantis 0164987 @20120117 +++
  11042. #ifdef CONFIG_SUPPORT_MHEG5
  11043. {
  11044. #ifdef CONFIG_SUPPORT_SUBTITLE
  11045. if (tmpIdx == DVB_SWITCH_OFF)
  11046. #endif
  11047. {
  11048. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5);
  11049. }
  11050. }
  11051. #endif
  11052. //zhongbaoxing added for mantis 0164987 @20120117 ---
  11053. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  11054. MID_PlaybackStreamResume(1);
  11055. g_PauseState = FALSE;
  11056. }
  11057. else
  11058. {
  11059. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  11060. if (bSignalState == AL_DVB_MONITOR_VALUE_TRUE)
  11061. {
  11062. if (DVBApp_CheckServiceNotAvailable() == TRUE)
  11063. {
  11064. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  11065. break;
  11066. }
  11067. g_PauseState = TRUE;
  11068. //zhongbaoxing added for mantis 0164987 @20120117 +++
  11069. #ifdef CONFIG_SUPPORT_MHEG5
  11070. //int mh5Status = 0;
  11071. //MHEG5APP_GetMh5Status(&mh5Status);
  11072. //if ((mh5Status&MHEG5APP_STATUS_OSD_UPDATED))
  11073. /*if( APP_DVB_Mheg5_GetBootCarouselStatus()==MHEG5_BOOT_CAROUSEL_EXISTED && APP_DVB_Mheg5_GetMheg5DisplayStatus() ) //Gahu:D0326
  11074. {
  11075. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  11076. g_PauseState = FALSE;
  11077. break;
  11078. }
  11079. else
  11080. {
  11081. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_MH5);
  11082. }*/ //for mantis: 21255
  11083. #endif
  11084. //zhongbaoxing added for mantis 0164987 @20120117 ---
  11085. #ifdef CONFIG_SUPPORT_SUBTITLE
  11086. if (tmpIdx == DVB_SWITCH_ON)
  11087. {
  11088. #ifdef Subtitle_Freeze
  11089. AL_Subtitle_SetFreeze(TRUE);
  11090. #else
  11091. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB);
  11092. #endif
  11093. }
  11094. #endif
  11095. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FREEZE, 0);
  11096. MID_PlaybackStreamPause(1);
  11097. g_PauseState = TRUE;
  11098. }
  11099. }
  11100. break;
  11101. case UI_EVENT_TVRADIO:
  11102. #ifdef CONFIG_SUPPORT_PVR
  11103. if (MID_REC_STATUS_STOP != u8MidRecState)// && (MID_REC_MODE_AUTO != u8MIDRecMode))
  11104. {
  11105. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  11106. {
  11107. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_FOR_TVRADIOKEY);
  11108. }
  11109. else
  11110. {
  11111. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_TVRADIOKEY);
  11112. }
  11113. break;
  11114. }
  11115. #if 0
  11116. else if ((MID_REC_STATUS_STOP != u8MidRecState) && (MID_REC_MODE_AUTO == u8MIDRecMode))
  11117. {
  11118. DVBApp_StopTimeshift(TRUE);
  11119. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  11120. }
  11121. #endif
  11122. #endif
  11123. if (APP_DVB_Playback_SwapServiceType(eNetType, (AL_DB_ERecordType_t *)&NextServiceType, &u32TotalNum) != AL_SUCCESS)
  11124. {
  11125. if(NextServiceType == AL_RECTYPE_DVBRADIO)
  11126. {
  11127. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_RADIO);
  11128. }
  11129. else
  11130. {
  11131. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_DTVORDATA);
  11132. }
  11133. }
  11134. break;
  11135. #ifdef CELLO_REMOTE_KEY
  11136. case UI_EVENT_ATV:
  11137. #endif
  11138. case UI_EVENT_ATVDTV:
  11139. #ifdef CONFIG_SUPPORT_PVR
  11140. if (MID_REC_STATUS_STOP != u8MidRecState)// && (MID_REC_MODE_AUTO != u8MIDRecMode))
  11141. {
  11142. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  11143. {
  11144. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_STOP_FOR_TVRADIOKEY);
  11145. }
  11146. else
  11147. {
  11148. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP_FOR_TVRADIOKEY);
  11149. }
  11150. break;
  11151. }
  11152. #endif
  11153. if ((eSourType == APP_SOURCE_DTV) || (eSourType == APP_SOURCE_RADIO))
  11154. {
  11155. DVBApp_ResetPopup_Channel();
  11156. _DVBApp_CloseAllMenu();
  11157. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_ATV);
  11158. }
  11159. break;
  11160. break;
  11161. #ifdef SUPPORT_SOURCE_DVBTCS
  11162. case UI_EVENT_DVBC:// For DVB-C shortcut key
  11163. case UI_EVENT_RED:
  11164. #ifdef CONFIG_DVB_SYSTEM_DVBC_SUPPORT
  11165. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  11166. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  11167. RFtype = g_stChannelData.TV_Connection;
  11168. if(RFtype != APP_RF_TYPE_DVB_C)
  11169. {
  11170. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  11171. {
  11172. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  11173. }
  11174. StringId = APP_GUIOBJ_Channel_GetStringIDByRFType(APP_RF_TYPE_DVB_C);
  11175. APP_GUIOBJ_Channel_SetRFTypeByStringID(StringId);
  11176. }
  11177. else
  11178. {
  11179. #ifdef CONFIG_DVB_SYSTEM_DVBT_SUPPORT
  11180. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  11181. {
  11182. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  11183. }
  11184. StringId = APP_GUIOBJ_Channel_GetStringIDByRFType(APP_RF_TYPE_DVB_T);
  11185. APP_GUIOBJ_Channel_SetRFTypeByStringID(StringId);
  11186. #endif
  11187. }
  11188. #endif
  11189. break;
  11190. case UI_EVENT_DVBS:// For DVB-S shortcut key
  11191. case UI_EVENT_GREEN:
  11192. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  11193. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  11194. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  11195. RFtype = g_stChannelData.TV_Connection;
  11196. if(RFtype != APP_RF_TYPE_DVB_S)
  11197. {
  11198. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  11199. {
  11200. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  11201. }
  11202. StringId = APP_GUIOBJ_Channel_GetStringIDByRFType(APP_RF_TYPE_DVB_S);
  11203. APP_GUIOBJ_Channel_SetRFTypeByStringID(StringId);
  11204. }
  11205. else
  11206. {
  11207. #ifdef CONFIG_DVB_SYSTEM_DVBT_SUPPORT
  11208. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  11209. {
  11210. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  11211. }
  11212. StringId = APP_GUIOBJ_Channel_GetStringIDByRFType(APP_RF_TYPE_DVB_T);
  11213. APP_GUIOBJ_Channel_SetRFTypeByStringID(StringId);
  11214. #endif
  11215. }
  11216. #endif
  11217. break;
  11218. #endif
  11219. #if 0//#ifdef CONFIG_SUPPORT_MHEG5
  11220. case UI_EVENT_RED:
  11221. case UI_EVENT_GREEN:
  11222. case UI_EVENT_BLUE:
  11223. case UI_EVENT_YELLOW:
  11224. if (APP_Area_SupportDtg())
  11225. {
  11226. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  11227. {
  11228. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  11229. SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  11230. if (sdRet == SP_SUCCESS)
  11231. {
  11232. break;
  11233. }
  11234. }
  11235. }
  11236. break;
  11237. #endif
  11238. #ifdef TEAC_BLUE_KEY_FUNCTION
  11239. case UI_EVENT_BLUE:
  11240. {
  11241. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  11242. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  11243. if (eServiceType == AL_RECTYPE_DVBRADIO)
  11244. {
  11245. if (_DVB_GetPanelControlType()== APP_PANEL_POWER_UP)
  11246. {
  11247. #ifdef CONFIG_SUPPORT_MHEG5
  11248. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  11249. #endif
  11250. {
  11251. //APP_Panel_SetPowerSequence(APP_PANEL_POWER_DOWN);
  11252. _DVB_SetPanelControlType(APP_PANEL_POWER_DOWN);
  11253. }
  11254. }
  11255. else if (_DVB_GetPanelControlType()== APP_PANEL_POWER_DOWN)
  11256. {
  11257. //APP_Panel_SetPowerSequence(APP_PANEL_POWER_UP);
  11258. _DVB_SetPanelControlType(APP_PANEL_POWER_UP);
  11259. }
  11260. }
  11261. break;
  11262. }
  11263. #endif
  11264. #ifdef SUPPORT_AD_DESCRIPTION
  11265. case UI_EVENT_AB:
  11266. {
  11267. UINT8 u8Mute = 0;
  11268. u8Mute = g_stUserInfoData.Mute;
  11269. if (u8Mute == TRUE)
  11270. {
  11271. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  11272. if (bSignalState == AL_DVB_MONITOR_VALUE_TRUE)
  11273. {
  11274. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  11275. }
  11276. else
  11277. {
  11278. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_NO_SIGNALE, eSourType);
  11279. }
  11280. g_stUserInfoData.Mute = FALSE;
  11281. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  11282. ITEM_OFFSET(APP_SETTING_UserInfo_t, Mute),
  11283. sizeof(g_stUserInfoData.Mute), &(g_stUserInfoData.Mute));
  11284. #ifdef SUPPORT_STORE_MUTE_FLAG
  11285. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  11286. ITEM_OFFSET(APP_SETTING_UserInfo_t, Mute),
  11287. sizeof(g_stUserInfoData.Mute));
  11288. #endif
  11289. }
  11290. SYSAPP_GOBJ_SendMsgToSingleGUIObject(
  11291. SYS_APP_DVB, APP_GUIOBJ_MUTE,
  11292. APP_INTRA_EVENT_HIDE_MUTE, 0);
  11293. break;
  11294. }
  11295. break;
  11296. #endif
  11297. #ifdef CONFIG_SUPPORT_HELP_MENU
  11298. case UI_EVENT_HELP:
  11299. DVBApp_ResetPopup_Channel();
  11300. _DVBApp_CloseAllMenu();
  11301. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_HELP_MENU, 0);
  11302. break;
  11303. #endif
  11304. #ifdef SUPPORT_HKC_FACTORY_REMOTE
  11305. case UI_EVENT_HKC_ENTER_BURNINGMODE:
  11306. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11307. {
  11308. _DVBApp_Exit_All_Menu();
  11309. g_stFactoryUserData.n_FactSet_BurningMode = 1;
  11310. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0,
  11311. sizeof(APP_SETTING_FactoryUser_t), &(g_stFactoryUserData));
  11312. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0,
  11313. sizeof(g_stFactoryUserData));
  11314. MID_TVFE_SetBurnIn(1, 0, 1);
  11315. //APP_Cul_Fm_CheckAndStartBurningMode();
  11316. }
  11317. break;
  11318. #ifdef CONFIG_DVB_SYSTEM_DVBC_SUPPORT
  11319. case UI_EVENT_HKC_DVBC:
  11320. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11321. {
  11322. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_RETURN, 0);
  11323. APP_GUIOBJ_Channel_SetRFType(FRONTEND_CONNECT_TYPE_DVB_C, AL_DB_INVALIDHDL);
  11324. }
  11325. break;
  11326. #endif
  11327. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  11328. case UI_EVENT_HKC_DVBS:
  11329. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11330. {
  11331. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_RETURN, 0);
  11332. APP_GUIOBJ_Channel_SetRFType(FRONTEND_CONNECT_TYPE_DVB_S, AL_DB_INVALIDHDL);
  11333. }
  11334. break;
  11335. #endif
  11336. #ifdef CONFIG_CI_SUPPORT
  11337. case UI_EVENT_HKC_CIINFO:
  11338. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11339. {
  11340. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_OBJECT_OPEN|PASS_TO_SYSAPP, (DVB_GUIOBJ_CI_MENU|(1<<16)));
  11341. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  11342. DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_CAM_ON_INIT, dParam);
  11343. }
  11344. break;
  11345. #endif
  11346. case UI_EVENT_HKC_DVD:
  11347. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11348. {
  11349. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_DVD);
  11350. }
  11351. break;
  11352. case UI_EVENT_HKC_FACTORYMENU:
  11353. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11354. {
  11355. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_FACTORY, UI_EVENT_HKC_FACTORYMENU);
  11356. }
  11357. break;
  11358. case UI_EVENT_HKC_VERSION:
  11359. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11360. {
  11361. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING))
  11362. {
  11363. DVBApp_ResetPopup_Channel();
  11364. _DVBApp_CloseAllMenu();
  11365. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING, 1);
  11366. Factory_Ver_Debug();
  11367. }
  11368. }
  11369. break;
  11370. case UI_EVENT_HKC_VOLUME80:
  11371. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11372. {
  11373. APP_Audio_SetVolume(80);
  11374. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  11375. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  11376. g_stVariationalData.Volume = 80;
  11377. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  11378. ITEM_OFFSET(APP_SETTING_Variational_t, Volume),
  11379. sizeof(g_stVariationalData.Volume),&(g_stVariationalData.Volume));
  11380. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  11381. ITEM_OFFSET(APP_SETTING_Variational_t, Volume), sizeof(g_stVariationalData.Volume));
  11382. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_ADJUST, ADJUST_VOLUME);
  11383. }
  11384. break;
  11385. case UI_EVENT_HKC_VOLUMEUP10:
  11386. case UI_EVENT_HKC_VOLUMEDOWN10:
  11387. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11388. {
  11389. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  11390. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  11391. UINT8 u8VolumeIdx = g_stVariationalData.Volume;
  11392. if (dMessage == UI_EVENT_HKC_VOLUMEUP10)
  11393. {
  11394. u8VolumeIdx += 10;
  11395. g_stVariationalData.Volume = u8VolumeIdx >= ADJUST_MAX_VALUE ? ADJUST_MAX_VALUE : u8VolumeIdx;
  11396. }
  11397. else if (dMessage == UI_EVENT_HKC_VOLUMEDOWN10)
  11398. {
  11399. g_stVariationalData.Volume = u8VolumeIdx <= 10 ? ADJUST_MIN_VALUE : u8VolumeIdx - 10;
  11400. }
  11401. APP_Audio_SetVolume((UINT32)g_stVariationalData.Volume);
  11402. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  11403. ITEM_OFFSET(APP_SETTING_Variational_t, Volume),
  11404. sizeof(g_stVariationalData.Volume), &(g_stVariationalData.Volume));
  11405. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  11406. ITEM_OFFSET(APP_SETTING_Variational_t, Volume), sizeof(g_stVariationalData.Volume));
  11407. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_ADJUST, ADJUST_VOLUME);
  11408. }
  11409. break;
  11410. case UI_EVENT_HKC_RESET:
  11411. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11412. {
  11413. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  11414. APP_DVB_INTRA_EVENT_STOP_PLAYBACK, PLAYBACK_STOP_ALL);
  11415. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, eSourType);
  11416. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, eSourType);
  11417. #ifdef CONFIG_ATV_SUPPORT
  11418. AL_DB_Reset(AL_DBTYPE_DVB_ATV, al_true);
  11419. APP_ATV_Playback_ResetFirstService();
  11420. #endif
  11421. #if(defined CONFIG_DVB_SYSTEM_DVBT_SUPPORT)
  11422. AL_FW_SwitchDBModule(AL_DBTYPE_DVB_T);
  11423. AL_DB_Reset(AL_DBTYPE_DVB_T, al_true);
  11424. AL_Event_UnLockChannels(AL_DBTYPE_DVB_T, 0, 0, 0);
  11425. AL_PR_DeleteAllSch(AL_DBTYPE_DVB_T,AL_PR_EVT_REM | AL_PR_SRV_REM);
  11426. #endif
  11427. #if(defined CONFIG_DVB_SYSTEM_DVBC_SUPPORT)
  11428. AL_FW_SwitchDBModule(AL_DBTYPE_DVB_C);
  11429. AL_DB_Reset(AL_DBTYPE_DVB_C, al_true);
  11430. AL_Event_UnLockChannels(AL_DBTYPE_DVB_C, 0, 0, 0);
  11431. AL_PR_DeleteAllSch(AL_DBTYPE_DVB_C,AL_PR_EVT_REM | AL_PR_SRV_REM);
  11432. #endif
  11433. #if(defined CONFIG_DVB_SYSTEM_DVBS_SUPPORT)
  11434. AL_FW_SwitchDBModule(AL_DBTYPE_DVB_S);
  11435. AL_DB_Reset(AL_DBTYPE_DVB_S, al_true);
  11436. AL_Event_UnLockChannels(AL_DBTYPE_DVB_S, 0, 0, 0);
  11437. AL_PR_DeleteAllSch(AL_DBTYPE_DVB_S,AL_PR_EVT_REM | AL_PR_SRV_REM);
  11438. DVBApp_LoadCustomerDB(AL_DBTYPE_DVB_S);
  11439. AL_DB_Sync(AL_DBTYPE_DVB_S, al_true);
  11440. #endif
  11441. App_Data_UserSetting_Restore();
  11442. App_Data_UserSetting_FM_Hotel_Restore();
  11443. App_Data_UserSetting_ResetLangContry_ByFMDefaultValue();
  11444. APP_Video_ResetTVSetting();
  11445. GL_TaskSleep(2000);
  11446. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF);
  11447. }
  11448. break;
  11449. case UI_EVENT_HKC_RESET_DEFAULT_FAC:
  11450. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11451. {
  11452. extern void _APP_GUIOBJ_FM_FactorySetting_Shipping(void);
  11453. _APP_GUIOBJ_FM_FactorySetting_Shipping();
  11454. }
  11455. break;
  11456. case UI_EVENT_HKC_TV:
  11457. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11458. {
  11459. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_ATV);
  11460. }
  11461. break;
  11462. case UI_EVENT_HKC_AV:
  11463. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11464. {
  11465. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_AV);
  11466. }
  11467. break;
  11468. case UI_EVENT_HKC_AV2:
  11469. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11470. {
  11471. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_AV1);
  11472. }
  11473. break;
  11474. case UI_EVENT_HKC_PC:
  11475. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11476. {
  11477. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_PC);
  11478. }
  11479. break;
  11480. case UI_EVENT_HKC_YPBPR:
  11481. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11482. {
  11483. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_YPBPR);
  11484. }
  11485. break;
  11486. case UI_EVENT_HKC_YPBPR2:
  11487. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11488. {
  11489. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_YPBPR1);
  11490. }
  11491. break;
  11492. case UI_EVENT_HKC_HDMI:
  11493. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11494. {
  11495. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_HDMI);
  11496. }
  11497. break;
  11498. case UI_EVENT_HKC_HDMI2:
  11499. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11500. {
  11501. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_HDMI1);
  11502. }
  11503. break;
  11504. case UI_EVENT_HKC_HDMI3:
  11505. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11506. {
  11507. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_HDMI2);
  11508. }
  11509. break;
  11510. case UI_EVENT_HKC_SCART:
  11511. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11512. {
  11513. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_SCART);
  11514. }
  11515. break;
  11516. case UI_EVENT_HKC_USB:
  11517. if(g_stFactoryUserData.n_FactSet_FactoryRemote == 1)
  11518. {
  11519. APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_MEDIA);
  11520. }
  11521. break;
  11522. #endif
  11523. case UI_EVENT_PAUSE:
  11524. case UI_EVENT_PLAY_PAUSE:
  11525. #ifdef CONFIG_SUPPORT_MHEG5
  11526. #ifdef SUPPORT_SUBTITLE_ON_PG
  11527. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU) == false)
  11528. #endif
  11529. if (SYSTEM_APP_SUCCESS != SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &iFocusedIndex))
  11530. {
  11531. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  11532. {
  11533. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, dMessage, (UINT32)&sdRet);
  11534. if (sdRet == SP_SUCCESS)
  11535. {
  11536. break;
  11537. }
  11538. }
  11539. }
  11540. #endif
  11541. #ifdef CONFIG_SUPPORT_PVR
  11542. if ((MID_REC_MODE_AUTO == u8MIDRecMode) && (u8MidRecState != MID_REC_STATUS_STOP))
  11543. {
  11544. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER)
  11545. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD)
  11546. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  11547. {
  11548. break;
  11549. }
  11550. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  11551. {
  11552. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  11553. }
  11554. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERPAUSE);
  11555. }
  11556. #if 0//def SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD
  11557. else if((MID_REC_MODE_MANUAL == u8MIDRecMode) && (u8MidRecState != MID_REC_STATUS_STOP))
  11558. {
  11559. if (APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL)
  11560. == MID_PLAYBK_PROG_STATE_LOCKED)
  11561. {
  11562. break;
  11563. }
  11564. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER)
  11565. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  11566. {
  11567. break;
  11568. }
  11569. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD))
  11570. {
  11571. break;
  11572. }
  11573. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  11574. {
  11575. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  11576. }
  11577. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  11578. {
  11579. if (DVBAPP_Pvr_GetRECPlayFlag())
  11580. {
  11581. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERNORMAL);
  11582. }
  11583. else
  11584. {
  11585. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERPAUSE);
  11586. }
  11587. }
  11588. }
  11589. #else
  11590. else
  11591. {
  11592. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)) &&
  11593. (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  11594. {
  11595. MID_RecorderPauseResume();
  11596. _DVBApp_Recorder_PauseResume();
  11597. g_bIsPlaykey = FALSE;
  11598. }
  11599. else if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE)) &&
  11600. (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  11601. {
  11602. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  11603. if (bSignalState != AL_DVB_MONITOR_VALUE_TRUE)
  11604. {
  11605. break;
  11606. }
  11607. switch (APP_DVB_Playback_GetProgStateByHandle(eNetType, hProg))
  11608. {
  11609. case MID_PLAYBK_PROG_STATE_ONLY_VIDEO_SCRAMBLED:
  11610. dvb_printf("Error: %s program state scrambled!\n", __FUNCTION__);
  11611. case MID_PLAYBK_PROG_STATE_AUDIO_VIDEO_SCRAMBLED:
  11612. dvb_printf("Error: %s program state scrambled!\n", __FUNCTION__);
  11613. case MID_PLAYBK_PROG_STATE_ONLY_AUDIO_SCRAMBLED:
  11614. dvb_printf("Error: %s program state scrambled!\n", __FUNCTION__);
  11615. case MID_PLAYBK_PROG_STATE_TEMP_SERVICE:
  11616. dvb_printf("Error: %s program state data service!\n", __FUNCTION__);
  11617. case MID_PLAYBK_PROG_STATE_NOT_RUNNING:
  11618. dvb_printf("Error: %s program state not running!\n", __FUNCTION__);
  11619. case MID_PLAYBK_PROG_STATE_LOCKED:
  11620. dvb_printf("Error: %s program state locked!\n", __FUNCTION__);
  11621. return 0;
  11622. default:
  11623. break;
  11624. }
  11625. MID_RecorderPauseResume();
  11626. _DVBApp_Recorder_PauseResume();
  11627. g_bIsPlaykey = TRUE;
  11628. }
  11629. }
  11630. #endif
  11631. break;
  11632. #else
  11633. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  11634. break;
  11635. #endif
  11636. case UI_EVENT_TIMESHIFT:
  11637. #ifdef REMINDER_OLNY_NO_RECORD
  11638. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  11639. break;
  11640. #endif
  11641. #ifdef CONFIG_SUPPORT_PVR
  11642. #if defined(SUPPORT_HOTEL_MODE_PVR_FUNCTION_CONTROL)
  11643. if((g_stFactoryHotelData.HotelModeOnOff)&&(!g_stFactoryHotelData.PVRFunction))
  11644. {
  11645. break;
  11646. }
  11647. #elif defined(SUPPORT_PVR_ONOFF)
  11648. if(!g_stSetupData.PVROnOff)
  11649. {
  11650. break;
  11651. }
  11652. #endif
  11653. if (u8MidRecState == MID_REC_STATUS_STOP)
  11654. {
  11655. if (DVBApp_CheckForRecord(MID_REC_MODE_TIMESHIFT_AFTER_REC) != SP_SUCCESS)
  11656. {
  11657. break;
  11658. }
  11659. #ifdef CONFIG_SUPPORT_MHEG5
  11660. if (APP_Area_SupportDtg() && SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5))
  11661. {
  11662. _DVBApp_ShowPopup(DVB_APP_POP_MSG_STOP_MHEG_FOR_TIMESHIFT);
  11663. }
  11664. else
  11665. #endif
  11666. // #ifdef SUPPORT_TEAC_TIMESHIFT_CTRL
  11667. #if defined(SUPPORT_TEAC_TIMESHIFT_CTRL) || defined(SUPPORT_PVR_SPEC_START_NO_POP)
  11668. //for mantis 191631, TEAC spec. start timeshift immediately with no pop msg
  11669. {
  11670. PVR_DEBF(" ==timeshift start is called!!!== \n");
  11671. _DVBApp_CloseAllMenu();
  11672. DVBApp_StartRecord(MID_REC_MODE_TIMESHIFT_AFTER_REC);
  11673. }
  11674. #else
  11675. {
  11676. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_START);
  11677. }
  11678. #endif
  11679. break;
  11680. }
  11681. else if ((MID_REC_STATUS_STOP != u8MidRecState)
  11682. && (MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode))
  11683. {
  11684. PVR_DEBF(" dvb app stop timeshift -UI_EVENT_TIMESHIFT- \n");
  11685. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_STOP);
  11686. }
  11687. break;
  11688. #else
  11689. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  11690. break;
  11691. #endif
  11692. #ifdef CONFIG_SUPPORT_PVR
  11693. case UI_EVENT_REC_LIST:
  11694. #if (defined CONFIG_IR501)
  11695. //case UI_EVENT_DEVLIST:
  11696. #endif
  11697. #if defined(SUPPORT_HOTEL_MODE_PVR_FUNCTION_CONTROL)
  11698. if((g_stFactoryHotelData.HotelModeOnOff)&&(!g_stFactoryHotelData.PVRFunction))
  11699. {
  11700. break;
  11701. }
  11702. #elif defined(SUPPORT_PVR_ONOFF)
  11703. if(!g_stSetupData.PVROnOff)
  11704. {
  11705. break;
  11706. }
  11707. #endif
  11708. if (MID_RecorderIsCurRecording() != DRV_SUCCESS) //not allow to open timerlist when recording
  11709. {
  11710. DVBApp_ResetPopup_Channel();
  11711. _DVBApp_CloseAllMenu();
  11712. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  11713. {
  11714. #ifdef Subtitle_Freeze
  11715. AL_Subtitle_SetFreeze(FALSE);
  11716. #else
  11717. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  11718. #endif
  11719. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  11720. }
  11721. if (APP_GetPlaybackPauseState() == TRUE)
  11722. {
  11723. MID_PlaybackStreamResume(1);
  11724. APP_SetPlaybackPauseState(FALSE);
  11725. }
  11726. #ifdef SUB_CUSTOMER_Tianle
  11727. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST_FORTEAC, 0);
  11728. #else
  11729. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_TIMERLIST, 0);
  11730. #endif
  11731. }
  11732. break;
  11733. case UI_EVENT_REC_FILE:
  11734. #ifdef REMINDER_OLNY_NO_RECORD
  11735. break;
  11736. #endif
  11737. #if defined(SUPPORT_HOTEL_MODE_PVR_FUNCTION_CONTROL)
  11738. if((g_stFactoryHotelData.HotelModeOnOff)&&(!g_stFactoryHotelData.PVRFunction))
  11739. {
  11740. break;
  11741. }
  11742. #elif defined(SUPPORT_PVR_ONOFF)
  11743. if(!g_stSetupData.PVROnOff)
  11744. {
  11745. break;
  11746. }
  11747. #endif
  11748. if (!(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_RECORDLIST)))
  11749. {
  11750. #ifndef SUPPORT_TEAC_TIMESHIFT_CTRL
  11751. if (u8MidRecState == MID_REC_STATUS_STOP)
  11752. #endif
  11753. {
  11754. DVBApp_ResetPopup_Channel();
  11755. _DVBApp_CloseAllMenu();
  11756. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  11757. {
  11758. #ifdef Subtitle_Freeze
  11759. AL_Subtitle_SetFreeze(FALSE);
  11760. #else
  11761. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  11762. #endif
  11763. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  11764. }
  11765. if (APP_GetPlaybackPauseState() == TRUE)
  11766. {
  11767. MID_PlaybackStreamResume(1);
  11768. APP_SetPlaybackPauseState(FALSE);
  11769. }
  11770. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_RECORDLIST, 0);
  11771. }
  11772. #ifndef SUPPORT_TEAC_TIMESHIFT_CTRL
  11773. else
  11774. {
  11775. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  11776. }
  11777. #endif
  11778. }
  11779. else
  11780. {
  11781. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_RECORDLIST);
  11782. if (APP_DVB_Playback_GetProgStateByHandle(eNetType, AL_DB_INVALIDHDL) == MID_PLAYBK_PROG_STATE_LOCKED)
  11783. {
  11784. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  11785. }
  11786. }
  11787. break;
  11788. #endif
  11789. /*#ifdef CONFIG_SUPPORT_PVR
  11790. case APP_DVB_GLOBAL_EVENT_REC_DURATION_EXIT:
  11791. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME))
  11792. {
  11793. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME);
  11794. }
  11795. break;
  11796. case APP_DVB_GLOBAL_EVENT_REC_GOTO_EXIT:
  11797. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_GOTO);
  11798. break;
  11799. #endif*/
  11800. case APP_GLOBAL_EVENT_POPMSG_YES:
  11801. #ifdef CONFIG_CIPLUS_SUPPORT
  11802. if (POPMSG_CONFIRM_ASK_PROFILE_ACTION == dParam)
  11803. {
  11804. APP_CIPLUS_ProfileAction(FALSE);
  11805. }
  11806. #endif
  11807. #ifdef SUPPORT_DYNAMIC_MULTIPLEXES
  11808. if (dParam == PLAYBACK_POPUP_PROMPT_OTH_TP_ADD_SRV)
  11809. {
  11810. _DVBApp_NewServicesToDatabase();
  11811. }
  11812. else
  11813. if (dParam == PLAYBACK_POPUP_CONFIRM_REMOVE_SRV)
  11814. {
  11815. DVBApp_RemoveUnstableService();//zhongbaoxing added to remove not running services @20120210
  11816. }
  11817. else
  11818. #endif
  11819. #ifdef CONFIG_SUPPORT_PVR
  11820. if (dParam == POPMSG_CONFIRM_REC_REMIDER_TIME)
  11821. {
  11822. if(DVBApp_GetReminderTime2Show() > 1)//For confirm record ahead
  11823. {
  11824. memset(&g_stDetails,0,sizeof(AL_PR_details_t));
  11825. memset(&g_stOldDetails,0,sizeof(AL_PR_details_t));
  11826. AL_PR_GetById(g_dReminderId, &g_stDetails);
  11827. AL_PR_GetById(g_dReminderId, &g_stOldDetails);
  11828. DVBApp_PVRRec_SetTimerCancle();
  11829. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  11830. (APP_DVB_GLOBAL_EVENT_PVRSCH | PASS_TO_SYSAPP), (UINT32)&g_stOldDetails);
  11831. }
  11832. }
  11833. else if (dParam == POPMSG_CONFIRM_FIND_NEW_TSID)
  11834. {
  11835. dvb_printf("======POPMSG_CONFIRM_FIND_NEW_TSID YES\n");
  11836. #ifdef CONFIG_DTV_SUPPORT
  11837. if (APP_GetPlaybackPauseState() == TRUE)
  11838. {
  11839. MID_PlaybackStreamResume(1);
  11840. APP_SetPlaybackPauseState(FALSE);
  11841. }
  11842. bFindNewTSID = TRUE;
  11843. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS, SEARCH_D_FULL_FREQ_MODE);
  11844. #endif
  11845. //APP_GUIOBJ_DVB_PartitionList_PartitionFormat();
  11846. }
  11847. else if ((dParam == POPMSG_CONFIRM_START_RECORD)
  11848. || (dParam == POPMSG_CONFIRM_STOP_MHEG_FOR_RECORD))
  11849. {
  11850. dvb_printf("start record is call\n");
  11851. _DVBApp_CloseAllMenu();
  11852. _APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurTime();
  11853. DVBApp_StartRecord(MID_REC_MODE_MANUAL);
  11854. }
  11855. else if (dParam == POPMSG_CONFIRM_STOP_THIFT_TO_REC)
  11856. {
  11857. DVBApp_StopTimeshift(TRUE);
  11858. _DVBApp_CloseAllMenu();
  11859. _APP_GUIOBJ_DVB_PvrRecDurationTime_ResetDurTime();
  11860. DVBApp_StartRecord(MID_REC_MODE_MANUAL);
  11861. }
  11862. #ifdef SUPPORT_PVR_REMINDER_CONFIRM_SPEC
  11863. else if ((dParam == POPMSG_CONFIRM_STOP_REC_FOR_REMINDER)
  11864. ||(dParam == POPMSG_CONFIRM_STOP_TSHIFT_FOR_REMINDER)
  11865. ||(dParam == POPMSG_CONFIRM_STOP_REC_FOR_TIMER_REC)
  11866. ||(dParam == POPMSG_CONFIRM_STOP_TSHIFT_FOR_TIMER_REC))
  11867. {
  11868. _DVBApp_StopRECForTimerConfirmDone(dParam);
  11869. }
  11870. #endif
  11871. else if (dParam == POPMSG_CONFIRM_RECORDER_SPEED_NOT_ENOUGH)
  11872. {
  11873. INT32 iRet;
  11874. dvb_printf("====== force to enter record !\n");
  11875. _DVBApp_CloseAllMenu();
  11876. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_INIT);
  11877. MID_Recorder_SetRecMode(MID_REC_MODE_MANUAL);
  11878. iRet = APP_GUIOBJ_DVB_PvrRec_StartRecord();
  11879. if (iRet != PVR_MSG_SUCCESS)
  11880. {
  11881. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  11882. MID_Recorder_SetRecMode(MID_REC_MODE_MAX);
  11883. APP_GUIOBJ_DVB_PvrRec_RegUninitCallback();
  11884. return SP_ERR_FAILURE;
  11885. }
  11886. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, 0);
  11887. }
  11888. else if ((dParam == POPMSG_CONFIRM_START_TIMESHIFT)
  11889. || (dParam == POPMSG_CONFIRM_STOP_MHEG_FOR_TIMESHIFT))
  11890. {
  11891. _DVBApp_CloseAllMenu();
  11892. DVBApp_StartRecord(MID_REC_MODE_TIMESHIFT_AFTER_REC);
  11893. }
  11894. else if (dParam == POPMSG_CONFIRM_TIMESHIFT_SPEED_NOT_ENOUGH)
  11895. {
  11896. INT32 iRet;
  11897. PVR_DEBF("====== force to enter timeshift !\n");
  11898. _DVBApp_CloseAllMenu();
  11899. if (MID_REC_MODE_AUTO == g_eCheckRecMode)
  11900. {
  11901. MID_Recorder_SetRecMode(MID_REC_MODE_AUTO);
  11902. }
  11903. else
  11904. {
  11905. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TIMESHIFT_INIT);
  11906. MID_Recorder_SetRecMode(MID_REC_MODE_TIMESHIFT_AFTER_REC);
  11907. }
  11908. iRet = APP_GUIOBJ_DVB_PvrRec_StartRecord();
  11909. if (iRet != PVR_MSG_SUCCESS)
  11910. {
  11911. _DVBApp_ShowPopup(DVB_APP_POP_MSG_REC_ENTER_NOT_VALID);
  11912. MID_Recorder_SetRecMode(MID_REC_MODE_MAX);
  11913. APP_GUIOBJ_DVB_PvrRec_RegUninitCallback();
  11914. g_eCheckRecMode = MID_REC_MODE_MAX;
  11915. return SP_ERR_FAILURE;
  11916. }
  11917. if (MID_REC_MODE_AUTO != MID_Recorder_GetRecMode())
  11918. {
  11919. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  11920. {
  11921. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  11922. }
  11923. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, 0);
  11924. }
  11925. }
  11926. else if (dParam == POPMSG_CONFIRM_STOP_RECORD)
  11927. {
  11928. dvb_printf("stop record is call\n");
  11929. DVBApp_SetTVRadioSwap(FALSE);
  11930. g_ProgHandleB4Rec = 0;
  11931. DVBApp_StopRecord();
  11932. memset(&g_stDetails,0,sizeof(AL_PR_details_t));
  11933. if(g_stUserInfoData.Subtitle == 0)
  11934. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5);
  11935. }
  11936. else if (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT)
  11937. {
  11938. dvb_printf("stop timeshift is call\n");
  11939. DVBApp_StopTimeshift(TRUE);
  11940. if(g_stUserInfoData.Subtitle == 0)
  11941. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5);
  11942. }
  11943. else if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_RECALL)
  11944. {
  11945. DVBApp_SetTVRadioSwap(FALSE);
  11946. g_ProgHandleB4Rec = 0;
  11947. DVBApp_StopRecord();
  11948. memset(&g_stDetails,0,sizeof(AL_PR_details_t));
  11949. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_RECALL, 0);
  11950. }
  11951. else if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_CH_CHANGE)
  11952. {
  11953. dvb_printf("stop record for channel change!\n");
  11954. DVBApp_StopRecord();
  11955. memset(&g_stDetails,0,sizeof(AL_PR_details_t));
  11956. {
  11957. if (g_bIsNumKey)
  11958. {
  11959. _DVBApp_Zapping(eServiceType, g_ProgHandle, FALSE, 0, TRUE);
  11960. return 0;
  11961. }
  11962. if (g_bIsFav == FALSE)
  11963. {
  11964. // normal
  11965. if (TRUE == g_bIsCHUp)
  11966. {
  11967. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, 1, APP_FAVORITE_NONE);
  11968. }
  11969. else if (FALSE == g_bIsCHUp)
  11970. {
  11971. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, -1, APP_FAVORITE_NONE);
  11972. }
  11973. }
  11974. else
  11975. {
  11976. // fav
  11977. if (TRUE == g_bIsCHUp)
  11978. {
  11979. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, 1, FavType);
  11980. }
  11981. else if (FALSE == g_bIsCHUp)
  11982. {
  11983. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, -1, FavType);
  11984. }
  11985. }
  11986. if (hProg != AL_DB_INVALIDHDL)
  11987. {
  11988. AL_DB_EDBType_t db_type;
  11989. AL_DB_ERecordType_t record_type;
  11990. AL_DB_GetRecordType(hProg, &db_type, &record_type);
  11991. if (db_type == AL_DBTYPE_DVB_ATV)
  11992. {
  11993. _DVBApp_CloseAllMenu();
  11994. break;
  11995. }
  11996. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  11997. {
  11998. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  11999. }
  12000. #ifdef SUPPORT_CEC_TV
  12001. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  12002. {
  12003. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  12004. }
  12005. #endif
  12006. _DVBApp_Zapping(eServiceType, hProg, FALSE, 0, TRUE);
  12007. }
  12008. else
  12009. {
  12010. DVBApp_CheckProgramType(TRUE);
  12011. }
  12012. break;
  12013. }
  12014. }
  12015. else if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_SRC_CHANGE)
  12016. {
  12017. dvb_printf("stop record for source change!\n");
  12018. DVBApp_StopRecord();
  12019. memset(&g_stDetails,0,sizeof(AL_PR_details_t));
  12020. {
  12021. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE))
  12022. {
  12023. _DVBApp_Exit_All_Menu();
  12024. }
  12025. else
  12026. {
  12027. DVBApp_ResetPopup_Channel();
  12028. _DVBApp_CloseAllMenu();
  12029. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOURCE, 0);
  12030. }
  12031. break;
  12032. }
  12033. }
  12034. else if (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_RECALL)
  12035. {
  12036. DVBApp_StopTimeshift(TRUE);
  12037. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_RECALL, 0);
  12038. }
  12039. else if (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_CH_CHANGE)
  12040. {
  12041. dvb_printf("stop timeshift for channel change!\n");
  12042. DVBApp_StopTimeshift(TRUE);
  12043. {
  12044. if (g_bIsNumKey)
  12045. {
  12046. _DVBApp_Zapping(eServiceType, g_ProgHandle, FALSE, 0, TRUE);
  12047. return 0;
  12048. }
  12049. if (g_bIsFav == FALSE)
  12050. {
  12051. //normal
  12052. if (TRUE == g_bIsCHUp)
  12053. {
  12054. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, 1, APP_FAVORITE_NONE);
  12055. }
  12056. else if (FALSE == g_bIsCHUp)
  12057. {
  12058. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, -1, APP_FAVORITE_NONE);
  12059. }
  12060. }
  12061. else
  12062. {
  12063. // fav
  12064. if (TRUE == g_bIsCHUp)
  12065. {
  12066. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, 1, FavType);
  12067. }
  12068. else if (FALSE == g_bIsCHUp)
  12069. {
  12070. hProg = APP_DVB_PLAYBACK_GetNextProgHdl(eNetType, -1, FavType);
  12071. }
  12072. }
  12073. if (hProg != AL_DB_INVALIDHDL)
  12074. {
  12075. AL_DB_EDBType_t db_type;
  12076. AL_DB_ERecordType_t record_type;
  12077. AL_DB_GetRecordType(hProg, &db_type, &record_type);
  12078. if (db_type == AL_DBTYPE_DVB_ATV)
  12079. {
  12080. _DVBApp_CloseAllMenu();
  12081. break;
  12082. }
  12083. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  12084. {
  12085. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  12086. }
  12087. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  12088. {
  12089. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  12090. }
  12091. //APP_DVB_Playback_SetUnlock(FALSE);
  12092. //DVBApp_ChannelChange(eServiceType, sdProgIndex);
  12093. _DVBApp_Zapping(eServiceType, hProg, FALSE, 0, TRUE);
  12094. }
  12095. else
  12096. {
  12097. DVBApp_CheckProgramType(TRUE);
  12098. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  12099. }
  12100. break;
  12101. }
  12102. }
  12103. else if (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_SRC_CHANGE)
  12104. {
  12105. dvb_printf("stop timeshift for source change!\n");
  12106. DVBApp_StopTimeshift(TRUE);
  12107. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  12108. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  12109. if (APP_PVR_TIMESHIFT_AUTO == g_stFeatureData.AutoTimeShift)
  12110. {
  12111. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  12112. }
  12113. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE))
  12114. {
  12115. _DVBApp_Exit_All_Menu();
  12116. }
  12117. else
  12118. {
  12119. DVBApp_ResetPopup_Channel();
  12120. _DVBApp_CloseAllMenu();
  12121. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOURCE, 0);
  12122. }
  12123. break;
  12124. }
  12125. else if ((dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_EPG)
  12126. || (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_EPG))
  12127. {
  12128. if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_EPG)
  12129. {
  12130. DVBApp_StopRecord();
  12131. }
  12132. else
  12133. {
  12134. DVBApp_StopTimeshift(TRUE);
  12135. }
  12136. _DVBApp_CloseAllMenu();
  12137. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  12138. if (bHasValidServ)
  12139. {
  12140. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, dGuiObj, 0);
  12141. }
  12142. else
  12143. {
  12144. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  12145. }
  12146. break;
  12147. }
  12148. else if ((dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_CHNLIST)
  12149. || (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_CHNLIST))
  12150. {
  12151. if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_CHNLIST)
  12152. {
  12153. DVBApp_StopRecord();
  12154. }
  12155. else
  12156. {
  12157. DVBApp_StopTimeshift(TRUE);
  12158. }
  12159. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD))
  12160. {
  12161. _DVBApp_CloseAllMenu();
  12162. }
  12163. else
  12164. {
  12165. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST))
  12166. {
  12167. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST);
  12168. _DVBApp_CheckPopupDisplay();
  12169. }
  12170. else
  12171. {
  12172. _DVBApp_CloseAllMenu();
  12173. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST, 0);
  12174. }
  12175. }
  12176. break;
  12177. }
  12178. else if ((dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_FAVLIST)
  12179. || (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_FAVLIST))
  12180. {
  12181. if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_FAVLIST)
  12182. {
  12183. DVBApp_StopRecord();
  12184. }
  12185. else
  12186. {
  12187. DVBApp_StopTimeshift(TRUE);
  12188. }
  12189. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD))
  12190. {
  12191. _DVBApp_CloseAllMenu();
  12192. }
  12193. else
  12194. {
  12195. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST))
  12196. {
  12197. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST);
  12198. _DVBApp_CheckPopupDisplay();
  12199. }
  12200. else
  12201. {
  12202. _DVBApp_CloseAllMenu();
  12203. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST, 0);
  12204. }
  12205. }
  12206. break;
  12207. }
  12208. else if ((dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_USBKEY)
  12209. || (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_USBKEY))
  12210. {
  12211. if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_USBKEY)
  12212. {
  12213. DVBApp_StopRecord();
  12214. }
  12215. else
  12216. {
  12217. DVBApp_StopTimeshift(TRUE);
  12218. }
  12219. _DVBApp_CloseAllMenu();
  12220. DVBApp_ResetPopup_Channel();
  12221. if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_MEDIA))
  12222. {
  12223. dvb_printf("APP_GUIOBJ_Source_SetAppSource Fail!!!!!!!!!\n");
  12224. }
  12225. break;
  12226. }
  12227. else if ((dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_TVRADIOKEY)
  12228. || (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_TVRADIOKEY))
  12229. {
  12230. if (dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_TVRADIOKEY)
  12231. {
  12232. DVBApp_StopRecord();
  12233. memset(&g_stDetails,0,sizeof(AL_PR_details_t));
  12234. }
  12235. else
  12236. {
  12237. DVBApp_StopTimeshift(TRUE);
  12238. }
  12239. if (APP_DVB_Playback_SwapServiceType(eNetType, (AL_DB_ERecordType_t *)&NextServiceType, &u32TotalNum) != AL_SUCCESS)
  12240. {
  12241. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  12242. }
  12243. break;
  12244. }
  12245. else if (POPMSG_CONFIRM_REC_REMIDER_TIME_CONFIRM == dParam)
  12246. {
  12247. APP_WAKEUP_Recorder_ResetTimeout();
  12248. DVBApp_PVRRec_SetTimerCancle();
  12249. }
  12250. else if (POPMSG_CONFIRM_PVR_TIMESHIFT_STANDBY == dParam)
  12251. {
  12252. if (u8MidRecState != MID_REC_STATUS_STOP)
  12253. {
  12254. if (MID_TSPLParser_GetThreadState() == FALSE)
  12255. DVBApp_StopRecord();
  12256. else
  12257. DVBApp_StopTimeshift(TRUE);
  12258. }
  12259. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF);
  12260. }
  12261. else if ((dParam == POPMSG_CONFIRM_STOP_RECORD_FOR_MHEG)
  12262. || (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_MHEG))
  12263. {
  12264. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE | OSD2CTRLMDL_SUB);
  12265. g_stUserInfoData.Subtitle = 0; //OFF
  12266. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  12267. ITEM_OFFSET(APP_SETTING_UserInfo_t, Subtitle),
  12268. sizeof(g_stUserInfoData.Subtitle), &(g_stUserInfoData.Subtitle));
  12269. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  12270. ITEM_OFFSET(APP_SETTING_UserInfo_t, Subtitle), sizeof(g_stUserInfoData.Subtitle));
  12271. if (MID_REC_MODE_MANUAL == u8MIDRecMode)
  12272. {
  12273. DVBApp_StopRecord();
  12274. }
  12275. else if (MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode)
  12276. {
  12277. DVBApp_StopTimeshift(TRUE);
  12278. }
  12279. else if (MID_REC_MODE_AUTO == u8MIDRecMode)
  12280. {
  12281. g_stFeatureData.AutoTimeShift = APP_PVR_TIMESHIFT_OFF;
  12282. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  12283. ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift),
  12284. sizeof(g_stFeatureData.AutoTimeShift), &(g_stFeatureData.AutoTimeShift));
  12285. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE,
  12286. ITEM_OFFSET(APP_SETTING_Feature_t, AutoTimeShift), sizeof(g_stFeatureData.AutoTimeShift));
  12287. DVBApp_StopTimeshift(TRUE);
  12288. }
  12289. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5);
  12290. }
  12291. else if (POPMSG_CONFIRM_INVALID_USB == dParam)
  12292. {
  12293. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF);
  12294. }
  12295. else
  12296. #endif
  12297. //zhongbaoxing added for mantis 0135994 @20110608 +++
  12298. #ifdef CONFIG_SUPPORT_MHEG5
  12299. if (dParam == PLAYBACK_POPUP_CONFIRM_STOP_SUBTITLE_TO_OPEN_MHEG5)
  12300. {
  12301. DVBApp_ClosePopup(PLAYBACK_POPUP_CONFIRM_STOP_SUBTITLE_TO_OPEN_MHEG5, UI_EVENT_NULL);
  12302. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_DISABLE|OSD2CTRLMDL_SUB);
  12303. if(g_stUserInfoData.Subtitle != 0)
  12304. {
  12305. g_stUserInfoData.Subtitle = 0; //OFF
  12306. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  12307. ITEM_OFFSET(APP_SETTING_UserInfo_t, Subtitle),
  12308. sizeof(g_stUserInfoData.Subtitle), &(g_stUserInfoData.Subtitle));
  12309. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  12310. ITEM_OFFSET(APP_SETTING_UserInfo_t, Subtitle), sizeof(g_stUserInfoData.Subtitle));
  12311. }
  12312. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5);
  12313. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE)) //Gahu:D0305
  12314. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  12315. }
  12316. else
  12317. #endif
  12318. //zhongbaoxing added for mantis 0135994 @20110608 ---
  12319. #ifdef CONFIG_CONFIRM_AUTO_UPGRADE
  12320. if (dParam == POPMSG_CONFIRM_START_AUTO_UPGRADE)
  12321. {
  12322. DVBApp_ResetPopup_Channel();//add for 0159405 @20111114
  12323. if (!APP_MenuMgr_Exist_Main_Menu()
  12324. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING)))
  12325. {
  12326. _DVBApp_Exit_All_Menu();
  12327. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, SOFTWARE_UPGRADE_FROM_AUTO_UPGRADE);
  12328. }
  12329. else if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE))
  12330. {
  12331. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, 0);
  12332. }
  12333. }
  12334. else
  12335. #endif
  12336. #ifdef N32_GAME_SUPPORT
  12337. if (dParam == POPMSG_CONFIRM_START_GAME_UPGRADE)
  12338. {
  12339. dvb_printf("\n!!!start ugrade game\n");
  12340. _DVBApp_ShowPopup(DVB_APP_POP_MSG_IMPORTING_GAME);
  12341. APP_Clone_Revert_BinFile_to_System(UPGRADE_GAME_BIN_ID);
  12342. }
  12343. else
  12344. #endif
  12345. if (POPMSG_CONFIRM_FLIP == dParam)
  12346. {
  12347. g_stFactoryUserData.Function.PanelSetting.n_FlipIndex = Factory_GetFlipIndex();
  12348. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER,
  12349. ITEM_OFFSET(APP_SETTING_FactoryUser_t, Function.PanelSetting.n_FlipIndex), sizeof(g_stFactoryUserData.Function.PanelSetting.n_FlipIndex),
  12350. &(g_stFactoryUserData.Function.PanelSetting.n_FlipIndex));
  12351. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER,
  12352. ITEM_OFFSET(APP_SETTING_FactoryUser_t, Function.PanelSetting.n_FlipIndex), sizeof(g_stFactoryUserData.Function.PanelSetting.n_FlipIndex));
  12353. MID_TVFE_SetPanelInverse((BOOL)(g_stFactoryUserData.Function.PanelSetting.n_FlipIndex));
  12354. //MID_DISP_DTVSetFlip((MID_DISP_FlipType_t)(g_stFactoryUserData.Function.PanelSetting.n_FlipIndex) ); // added for VIP test
  12355. GL_TaskSleep(2000);
  12356. APP_Sysset_Reset_System();
  12357. // APP_Panel_SetBacklightEnOnOff(FALSE);//makr for S2tek
  12358. // MID_GPIO_SetGPIOOffLevel(GPIO_PANEL_ON_PIN);//makr for S2tek
  12359. // system_reset();//makr for S2tek
  12360. }
  12361. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  12362. if (POPMSG_CONFIRM_ERASE_WHOLE_FLASH == dParam)
  12363. {
  12364. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE))
  12365. {
  12366. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, SOFTWARE_UPGRADE_FROM_FM);
  12367. }
  12368. }
  12369. #endif
  12370. break;
  12371. case APP_GLOBAL_EVENT_POPMSG_NO:
  12372. #ifdef CONFIG_SUPPORT_MHEG5
  12373. if (dParam == PLAYBACK_POPUP_CONFIRM_STOP_SUBTITLE_TO_OPEN_MHEG5)
  12374. {
  12375. DVBApp_ClosePopup(PLAYBACK_POPUP_CONFIRM_STOP_SUBTITLE_TO_OPEN_MHEG5, UI_EVENT_NULL);
  12376. }
  12377. else
  12378. #endif
  12379. #ifdef CONFIG_SUPPORT_PVR
  12380. if (dParam == POPMSG_CONFIRM_REC_REMIDER_TIME)
  12381. {
  12382. APP_WAKEUP_Recorder_ResetTimeout();
  12383. DVBApp_PVRRec_SetTimerCancle();
  12384. //SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  12385. //(APP_GLOBAL_EVENT_PVR_REMINDER_CONFIRM | PASS_TO_SYSAPP), 0);
  12386. }
  12387. else if (dParam == POPMSG_CONFIRM_REC_REMIDER_TIME_CONFIRM)
  12388. {
  12389. al_uint32 CurTimeInSec = 0;
  12390. UINT32 RECStartTime = 0;
  12391. AL_Time_GetCurTimeInSecs(&CurTimeInSec);
  12392. RECStartTime = DVBApp_GetTimerRECStartTime();
  12393. if (RECStartTime > CurTimeInSec)
  12394. {
  12395. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_REMIDER);
  12396. }
  12397. }
  12398. else if (dParam == POPMSG_CONFIRM_STOP_RECORD)
  12399. {
  12400. /*added by xm.zeng on 2014/7/3 for mantis id:0023174*/
  12401. if((g_bNoSteamData == TRUE)
  12402. && (bSetUnMuteFlag == FALSE)
  12403. && (g_bMidHasUnmute == FALSE))
  12404. {
  12405. DVBApp_CheckProgramType(TRUE);
  12406. }
  12407. }
  12408. if (dParam == POPMSG_CONFIRM_STOP_TIMESHIFT_FOR_SRC_CHANGE)
  12409. {
  12410. DVBApp_CheckProgramType(FALSE);
  12411. }
  12412. if (POPMSG_CONFIRM_INSERT_USB == dParam)
  12413. {
  12414. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF);
  12415. }
  12416. #endif
  12417. if (dParam == POPMSG_CONFIRM_FLIP)
  12418. {
  12419. DVBApp_ClosePopup(POPMSG_CONFIRM_FLIP, UI_EVENT_NULL);
  12420. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  12421. (UI_EVENT_FACTORY|PASS_TO_SYSAPP), 1);
  12422. }
  12423. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  12424. if (POPMSG_CONFIRM_ERASE_WHOLE_FLASH == dParam)
  12425. {
  12426. //if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE))
  12427. //{
  12428. //SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, SOFTWARE_UPGRADE_FROM_FM);
  12429. //}
  12430. }
  12431. #endif
  12432. #ifdef CONFIG_CONFIRM_AUTO_UPGRADE
  12433. if (dParam == POPMSG_CONFIRM_START_AUTO_UPGRADE)
  12434. {
  12435. AutoUpgrade = FALSE;
  12436. if (dLastFocusedIndex != DVB_GUIOBJ_POPMSG)
  12437. {
  12438. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, dLastFocusedIndex, 0);
  12439. if (dLastFocusedIndex == DVB_GUIOBJ_PROGINFO)
  12440. {
  12441. DVBApp_CheckProgramType(TRUE);
  12442. }
  12443. else
  12444. {
  12445. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  12446. if (bHasValidServ)
  12447. {
  12448. DVBApp_CheckProgramType(FALSE);
  12449. }
  12450. }
  12451. }
  12452. else
  12453. {
  12454. DVBApp_CheckProgramType(TRUE);
  12455. }
  12456. }
  12457. #endif
  12458. break;
  12459. case APP_GLOBAL_EVENT_POPMSG_TIMEOUT:
  12460. switch (dParam)
  12461. {
  12462. #ifdef CONFIG_CIPLUS_SUPPORT
  12463. case POPMSG_PROMP_CIPLUS_UPGRADE_SUCC:
  12464. #ifdef SUPPORT_LED_FLASH
  12465. APP_LED_Flash_Timer_Set(LED_FLASH_TYPE_GREEN, 0);
  12466. #endif
  12467. break;
  12468. case POPMSG_PROMP_CIPLUS_UPGRADE_FAILED:
  12469. #ifdef SUPPORT_LED_FLASH
  12470. APP_LED_Flash_Timer_Set(LED_FLASH_TYPE_GREEN, 0);
  12471. #endif
  12472. break;
  12473. #endif
  12474. default:
  12475. break;
  12476. }
  12477. break;
  12478. case APP_GLOBAL_EVENT_POPMSG_EXIT_KEY_MATCH:
  12479. #ifdef CONFIG_SUPPORT_PVR
  12480. if (dParam == POPMSG_CONFIRM_REC_REMIDER_TIME)
  12481. {
  12482. APP_WAKEUP_Recorder_ResetTimeout();
  12483. DVBApp_PVRRec_SetTimerCancle();
  12484. //SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  12485. //(APP_GLOBAL_EVENT_PVR_REMINDER_CONFIRM | PASS_TO_SYSAPP), 0);
  12486. }
  12487. #endif
  12488. #ifdef CONFIG_CONFIRM_AUTO_UPGRADE
  12489. if (dParam == POPMSG_CONFIRM_START_AUTO_UPGRADE)
  12490. {
  12491. bHasValidServ = AL_DB_HasVisibleService(eNetType);
  12492. AutoUpgrade = FALSE;
  12493. if (bHasValidServ)
  12494. {
  12495. DVBApp_CheckProgramType(TRUE);
  12496. }
  12497. }
  12498. #endif
  12499. break;
  12500. #ifdef CONFIG_SUPPORT_OTA_UPGRADE
  12501. case DMN_EVENT_OTA_EVENT_PROMPT:
  12502. if (APP_GUIOBJ_DVB_OTAPrompt_GetShowFlag() == OtaShowPromt_MAX || APP_GUIOBJ_DVB_OTAPrompt_GetShowFlag() == OtaShowPromt_FromScan)
  12503. {
  12504. dvb_printf("only one choice\n");
  12505. }
  12506. else
  12507. {
  12508. APP_GUIOBJ_DVB_OTAPrompt_SetShowFlag(OtaShowPromt_MAX);
  12509. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OTA_UPGRADE_PROMPT))
  12510. {
  12511. if (FALSE == DVBApp_GetOTAStatus())
  12512. {
  12513. DVBApp_SetOTAStatus(TRUE);
  12514. }
  12515. _DVBApp_ExitAll();
  12516. SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_OBJECT_OPEN | PASS_TO_SYSAPP, DVB_GUIOBJ_OTA_UPGRADE_PROMPT);
  12517. MID_OtaMonStop(TRUE);
  12518. autoupgrade_sate = AU_MAX;
  12519. }
  12520. }
  12521. break;
  12522. case DMN_EVENT_OTA_EVENT_PROGRESS:
  12523. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OTA_UPGRADE_PROGRESS))
  12524. {
  12525. if(FALSE == DVBApp_GetOTAStatus())
  12526. {
  12527. DVBApp_SetOTAStatus(TRUE);
  12528. }
  12529. _DVBApp_ExitAll();
  12530. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  12531. APP_DVB_INTRA_EVENT_STOP_PLAYBACK, PLAYBACK_STOP_ALL|PLAYBACK_KEEP_DMX_FIFO);
  12532. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  12533. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  12534. APP_GUIOBJ_DVB_OTAUpgrade_RegisterUICallbk();
  12535. #ifdef CONFIG_SUPPORT_SSU_ENHANCE_UPGRADE
  12536. APP_GUIOBJ_DVB_OTAPrompt_RevTimer(); /*revert wake up time in this situation*/
  12537. DVBApp_SetAU_Sate(AU_MAX);
  12538. DVBApp_SetAutoUpgrade(FALSE);
  12539. #endif
  12540. SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_OBJECT_OPEN | PASS_TO_SYSAPP, DVB_GUIOBJ_OTA_UPGRADE_PROGRESS);
  12541. }
  12542. break;
  12543. #endif
  12544. case DMN_EVENT_AUTODVD_CHANGE_SOURCE:
  12545. #if 1
  12546. /* Check Valid state +++*/
  12547. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0,
  12548. sizeof(APP_SETTING_FactoryUser_t), &(g_stFactoryUserData));
  12549. if (g_stFactoryUserData.n_FactSet_BurningMode == al_true)
  12550. {
  12551. break;
  12552. }
  12553. if ((MAIN_APP_SUCCESS != MAINAPP_GetActiveSystemAppIndex(&dAppIndex))||
  12554. (APP_MenuMgr_Exist_Scan_Menu()) ||
  12555. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  12556. (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE)) ||
  12557. #endif
  12558. (AL_CS_IsStop() != al_true))
  12559. {
  12560. break;
  12561. }
  12562. #endif
  12563. DVBApp_ResetPopup_Channel();
  12564. _DVBApp_CloseAllMenu();
  12565. if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(dParam))
  12566. {
  12567. dvb_printf("[DvbApp OnGlobalEvent] APP_GUIOBJ_Source_SetAppSource faild.\n");
  12568. }
  12569. break;
  12570. case DMN_EVENT_AUTOSCART_CHANGE_SOURCE:
  12571. /* Check Valid state +++*/
  12572. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER, 0,
  12573. sizeof(APP_SETTING_FactoryUser_t), &(g_stFactoryUserData));
  12574. if (g_stFactoryUserData.n_FactSet_BurningMode == al_true)
  12575. {
  12576. break;
  12577. }
  12578. /* recording */
  12579. /*#ifdef CONFIG_SUPPORT_PVR
  12580. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  12581. {
  12582. UINT32 u32PopMsgDialogType = POPMSG_PROMPT_NO_PROG;
  12583. APP_GUIOBJ_PopMsg_GetMsgDialogType(&u32PopMsgDialogType);
  12584. if (u32PopMsgDialogType == POPMSG_CONFIRM_REC_REMIDER_TIME
  12585. || u32PopMsgDialogType == POPMSG_CONFIRM_REC_REMIDER_TIME_CONFIRM)
  12586. {
  12587. #ifdef CONFIG_DVB_SYSTEM
  12588. //APP_SCARTIN_ResetAutoPlugInStatus(AUTO_PLUGIN_SCART0);
  12589. //clear SCART PlugInStatus for mantis 0204109
  12590. APP_SCARTIN_SetAutoPlugInStatus(AUTO_PLUGIN_SCART0);
  12591. APP_SCARTIN_SetPlugStatus(AUTO_PLUGIN_SCART0);
  12592. #endif
  12593. break;
  12594. }
  12595. }
  12596. if (u8MidRecState != MID_REC_STATUS_STOP)
  12597. {
  12598. #ifdef CONFIG_DVB_SYSTEM
  12599. //APP_SCARTIN_ResetAutoPlugInStatus(AUTO_PLUGIN_SCART0);
  12600. //clear SCART PlugInStatus for mantis 0204109
  12601. APP_SCARTIN_SetAutoPlugInStatus(AUTO_PLUGIN_SCART0);
  12602. APP_SCARTIN_SetPlugStatus(AUTO_PLUGIN_SCART0);
  12603. #endif
  12604. break;
  12605. }
  12606. #endif*/
  12607. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT //for mantis 0202693
  12608. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SATSYSTEM)||
  12609. SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_LNBTYPE)||
  12610. SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SATEDIT)||
  12611. SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SATADD)||
  12612. SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TPEDIT)||
  12613. SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TPADD)||
  12614. SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SETLOCATION)||
  12615. SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_LNBTYPE)||
  12616. SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SETPOSTION))
  12617. {
  12618. // dvb_printf("\n ======%s %s %d\n",__FUNCTION__,__FUNCTION__,__LINE__);
  12619. //clear SCART PlugInStatus
  12620. APP_SCARTIN_SetAutoPlugInStatus(AUTO_PLUGIN_SCART0);
  12621. APP_SCARTIN_SetPlugStatus(AUTO_PLUGIN_SCART0);
  12622. break;
  12623. }
  12624. #endif
  12625. if ((MAIN_APP_SUCCESS != MAINAPP_GetActiveSystemAppIndex(&dAppIndex))||
  12626. (APP_MenuMgr_Exist_Scan_Menu()) ||
  12627. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  12628. (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE)) ||
  12629. #endif
  12630. (AL_CS_IsStop() != al_true))
  12631. {
  12632. #ifdef CONFIG_DVB_SYSTEM
  12633. APP_SCARTIN_ResetAutoPlugInStatus(AUTO_PLUGIN_SCART0);
  12634. #endif
  12635. break;
  12636. }
  12637. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  12638. {
  12639. UINT32 u32PopMsgDialogType = POPMSG_PROMPT_NO_PROG;
  12640. APP_GUIOBJ_PopMsg_GetMsgDialogType(&u32PopMsgDialogType);
  12641. if (u32PopMsgDialogType == POPMSG_CONFIRM_REC_REMIDER_TIME)
  12642. {
  12643. break;
  12644. }
  12645. }
  12646. #ifdef CONFIG_SUPPORT_PVR
  12647. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  12648. {
  12649. break;
  12650. }
  12651. #endif
  12652. /* Check Valid state ---*/
  12653. DVBApp_ResetPopup_Channel();
  12654. _DVBApp_CloseAllMenu();
  12655. #ifdef CONFIG_SUPPORT_PVR
  12656. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  12657. {
  12658. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY);
  12659. }
  12660. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAYINFO))
  12661. {
  12662. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAYINFO);
  12663. }
  12664. #endif
  12665. if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(dParam))
  12666. {
  12667. dvb_printf("[DvbApp OnGlobalEvent] APP_GUIOBJ_Source_SetAppSource faild.\n");
  12668. }
  12669. else
  12670. {
  12671. #ifdef CONFIG_DVB_SYSTEM
  12672. if (dParam == APP_SOURCE_SCART)
  12673. {
  12674. APP_SCARTIN_SetAutoPlugInStatus(AUTO_PLUGIN_SCART0);
  12675. APP_SCARTIN_SetPlugStatus(AUTO_PLUGIN_SCART0);
  12676. }
  12677. #endif
  12678. }
  12679. break;
  12680. case APP_GLOBAL_EVENT_SLEEP_TIMER_INFO:
  12681. if ((APP_MenuMgr_Exist_Scan_Menu())
  12682. #ifdef CONFIG_SUPPORT_USB_UPGRADE //zhongbaoxing added for mantis bug 139209 @20110623
  12683. || (APP_Data_Get_USB_Upgrade_State() == TRUE)
  12684. #endif
  12685. )
  12686. {
  12687. APP_GUIOBJ_SleepTimer_Reset();
  12688. }
  12689. else
  12690. {
  12691. _DVBApp_CloseAllMenu();
  12692. DVBApp_ResetPopup_Channel();
  12693. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO))
  12694. {
  12695. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO, dParam);
  12696. }
  12697. }
  12698. break;
  12699. #ifdef CONFIG_CIPLUS_SUPPORT
  12700. case APP_GLOBAL_EVENT_ASK_PROFILE_ACTION:
  12701. APP_DVB_CI_AskProfileAction();
  12702. break;
  12703. #endif
  12704. case APP_GLOBAL_EVENT_CIHDCPKEY_RESULT:
  12705. if (dParam == 0xffffffff)
  12706. break;
  12707. UINT32 u32CIupgrade = dParam & 0xf;
  12708. UINT32 u32HDCPupgrade = (dParam & 0xf0)>>4;
  12709. if (u32CIupgrade && u32HDCPupgrade)
  12710. {
  12711. // upgrade CI & HDCP
  12712. if (u32CIupgrade == APP_DATA_KEYUPGRADE_SUCCESS)
  12713. {
  12714. if (u32HDCPupgrade == APP_DATA_KEYUPGRADE_SUCCESS)
  12715. {
  12716. // CI OK, HDCP OK
  12717. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_PASS_HDCP_PASS);
  12718. }
  12719. else
  12720. {
  12721. // CI OK, HDCP fail
  12722. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_PASS_HDCP_FAIL);
  12723. }
  12724. }
  12725. else
  12726. {
  12727. if (u32HDCPupgrade == APP_DATA_KEYUPGRADE_SUCCESS)
  12728. {
  12729. // CI fail, HDCP OK
  12730. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_FAIL_HDCP_PASS);
  12731. }
  12732. else
  12733. {
  12734. // CI fail, HDCP fail
  12735. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CI_FAIL_HDCP_FAIL);
  12736. }
  12737. }
  12738. }
  12739. else if (u32CIupgrade != APP_DATA_KEYUPGRADE_NOT_UPGRADE)
  12740. {
  12741. _DVBApp_CloseAllMenu();
  12742. // upgrade CI
  12743. if (u32CIupgrade == APP_DATA_KEYUPGRADE_SUCCESS)
  12744. {
  12745. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CIPLUSE_UPGRADE_SUCC);
  12746. }
  12747. else
  12748. {
  12749. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CIPLUSE_UPGRADE_FAILE);
  12750. }
  12751. }
  12752. else if (u32HDCPupgrade != APP_DATA_KEYUPGRADE_NOT_UPGRADE)
  12753. {
  12754. // upgrade HDCP
  12755. if (u32HDCPupgrade == APP_DATA_KEYUPGRADE_SUCCESS)
  12756. {
  12757. _DVBApp_ShowPopup(DVB_APP_POP_MSG_HDCP_UPGRADE_SUCC);
  12758. }
  12759. else
  12760. {
  12761. _DVBApp_ShowPopup(DVB_APP_POP_MSG_HDCP_UPGRADE_FAILE);
  12762. }
  12763. }
  12764. break;
  12765. #ifdef CONFIG_SUPPORT_3D_EN
  12766. case UI_EVENT_3D:
  12767. dvb_printf("\n\n===UI_EVENT_3D [%s]====\n\n",__FUNCTION__);
  12768. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  12769. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  12770. if (g_stFactoryHotelData.HotelModeOnOff == 1&&g_stFactoryHotelData.PictureLock == 1)
  12771. {
  12772. dvb_printf("[%s] Picture Option has been Lock On!!\n",__FUNCTION__);
  12773. break;
  12774. }
  12775. APP_Video_Check3DState(&ePicture3DState);
  12776. if(ePicture3DState == APP_VIDEO_IMAGE_3D_DISABLED)
  12777. {
  12778. if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_3D_INFO))
  12779. {
  12780. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_3D_INFO);
  12781. }
  12782. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NOT_AVAILABLE);
  12783. break;
  12784. }
  12785. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_3D_INFO))
  12786. {
  12787. Boolean bShowLogo = DTV_FALSE;
  12788. bShowLogo = APP_GUIOBJ_DVB_Playback_GetShowLogoState();
  12789. AL_DB_ERecordType_t eRecordType;
  12790. MID_PlaybackGetCurProgHandle(&eRecordType, al_null);
  12791. if((eRecordType == AL_RECTYPE_DVBRADIO) || (bShowLogo == DTV_TRUE))
  12792. {
  12793. break;
  12794. }
  12795. _DVBApp_CloseAllMenu();
  12796. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FREEZE))
  12797. {
  12798. if (eSourType == APP_SOURCE_DTV)
  12799. {
  12800. #ifdef CONFIG_SUPPORT_SUBTITLE
  12801. UINT8 tmpIdx = 0;
  12802. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  12803. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  12804. tmpIdx = g_stUserInfoData.Subtitle;
  12805. if (tmpIdx == DVB_SWITCH_ON)
  12806. {
  12807. #ifdef Subtitle_Freeze
  12808. AL_Subtitle_SetFreeze(FALSE);
  12809. #else
  12810. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_SUB);
  12811. #endif
  12812. }
  12813. #endif
  12814. #ifdef CONFIG_SUPPORT_MHEG5
  12815. #ifdef CONFIG_SUPPORT_SUBTITLE
  12816. if (tmpIdx == DVB_SWITCH_OFF)
  12817. #endif
  12818. {
  12819. DVBApp_DataApplicationSwitch(OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_MH5);
  12820. }
  12821. #endif
  12822. }
  12823. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_FREEZE);
  12824. }
  12825. if (APP_GetPlaybackPauseState() == TRUE)
  12826. {
  12827. MID_PlaybackStreamResume(1);
  12828. g_PauseState = FALSE;
  12829. }
  12830. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_3D_INFO, dMessage);
  12831. dvb_printf("\n\n%s %d\n\n", __FUNCTION__, dMessage);
  12832. }
  12833. else
  12834. {
  12835. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_3D_INFO);
  12836. }
  12837. break;
  12838. case APP_GLOBAL_EVENT_3D_TIMER_INFO:
  12839. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_PICTURE, 0,
  12840. sizeof(APP_SETTING_Picture_t), &(g_stPictureData));
  12841. APP_StorageSource_Type_t eStorageSourType = APP_STORAGE_SOURCE_MAX;
  12842. eStorageSourType = APP_Data_UserSetting_SourceTypeMappingToStorage(eSourType);
  12843. if((!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_3D_INFO)) && (g_stPictureData.stPicture3DTab[eStorageSourType].st3DMenu.Mode3D != SPAL_PQ_3DMODE_OFF))
  12844. {
  12845. Boolean bShowLogo = DTV_FALSE;
  12846. bShowLogo = APP_GUIOBJ_DVB_Playback_GetShowLogoState();
  12847. AL_DB_ERecordType_t eRecordType;
  12848. MID_PlaybackGetCurProgHandle(&eRecordType, al_null);
  12849. if((eRecordType == AL_RECTYPE_DVBRADIO) || (bShowLogo == DTV_TRUE))
  12850. {
  12851. break;
  12852. }
  12853. _DVBApp_CloseAllMenu();
  12854. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,APP_GUIOBJ_3D_INFO, dParam);
  12855. }
  12856. break;
  12857. #endif
  12858. #ifdef NET_SUPPORT
  12859. case UI_EVENT_SRC_NET:
  12860. if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(APP_SOURCE_NET))
  12861. {
  12862. dvb_printf("UI_EVENT_SRC_NET change Net Fail!!!!!!!!!\n");
  12863. }
  12864. break;
  12865. #endif
  12866. #ifdef CONFIG_HDMI_SUPPORT_MHL
  12867. case DMN_EVENT_MHL_CHANGE_SOURCE:
  12868. /* Check Valid state +++*/
  12869. /* Auto install not finish */
  12870. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL))
  12871. {
  12872. break;
  12873. }
  12874. /* Scan State */
  12875. if (AL_CS_IsStop() != 1)
  12876. {
  12877. break;
  12878. }
  12879. /*
  12880. ** Channel Tuning,
  12881. ** Channel - Digital Manual Search,
  12882. */
  12883. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_AUTO_SEARCH))
  12884. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS))
  12885. #if (defined CONFIG_DVB_SYSTEM_DVBT_SUPPORT)
  12886. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_DVB_T_MANUAL_SEARCH))
  12887. #endif
  12888. #if (defined CONFIG_DVB_SYSTEM_DVBC_SUPPORT)
  12889. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_DVB_C_MANUAL_SEARCH))
  12890. #endif
  12891. )
  12892. {
  12893. break;
  12894. }
  12895. #ifdef CONFIG_SUPPORT_PVR
  12896. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  12897. {
  12898. break;
  12899. }
  12900. #endif
  12901. DVBApp_ResetPopup_Channel();
  12902. _DVBApp_CloseAllMenu();
  12903. /* Check Valid state ---*/
  12904. APP_Source_Type_t eMhlSrc;
  12905. UINT8 IsMHLSoure;
  12906. APP_GOBJ_Source_CheckAndGetMHLSource(&IsMHLSoure,&eMhlSrc);
  12907. if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(eMhlSrc))
  12908. {
  12909. dvb_printf("[DvbApp OnGlobalEvent] APP_GUIOBJ_Source_SetAppSource faild.\n");
  12910. }
  12911. break;
  12912. #endif
  12913. #ifdef SUPPORT_CEC_TV
  12914. case DMN_EVENT_CECTV_CHANGE_SOURCE:
  12915. /* Check Valid state +++*/
  12916. /* Auto install not finish */
  12917. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL))
  12918. {
  12919. break;
  12920. }
  12921. /* Scan State */
  12922. if (AL_CS_IsStop() != 1)
  12923. {
  12924. break;
  12925. }
  12926. /*
  12927. ** Channel Tuning,
  12928. ** Channel - Digital Manual Search,
  12929. */
  12930. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_AUTO_SEARCH))
  12931. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SCAN_PROCESS))
  12932. #if (defined CONFIG_DVB_SYSTEM_DVBT_SUPPORT)
  12933. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_DVB_T_MANUAL_SEARCH))
  12934. #endif
  12935. #if (defined CONFIG_DVB_SYSTEM_DVBC_SUPPORT)
  12936. || (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_DVB_C_MANUAL_SEARCH))
  12937. #endif
  12938. )
  12939. {
  12940. break;
  12941. }
  12942. #ifdef CONFIG_SUPPORT_PVR
  12943. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  12944. {
  12945. break;
  12946. }
  12947. #endif
  12948. /* Check Valid state ---*/
  12949. DVBApp_ResetPopup_Channel();
  12950. _DVBApp_CloseAllMenu();
  12951. APP_Source_Type_t eSrc;
  12952. APP_Video_GetCECPortMapping(dParam, &eSrc);
  12953. if (SP_SUCCESS != APP_GUIOBJ_Source_SetAppSource(eSrc))
  12954. {
  12955. dvb_printf("[DvbApp OnGlobalEvent] APP_GUIOBJ_Source_SetAppSource faild.\n");
  12956. }
  12957. break;
  12958. #endif
  12959. #ifdef CONFIG_SUPPORT_PVR
  12960. case DMN_EVENT_USB_HDD_ATTACHED:
  12961. {
  12962. int iPtListIdx = -1;
  12963. DVBApp_SetBGTimeshift(PVR_BGTIMESHIFT_START_INTERVAL);
  12964. dvb_printf("dvb has received DMN_EVENT_USB_HDD_ATTACHED\n\n\n\n");
  12965. //if (MID_RecorderGetDefaultPartition(&iPtListIdx) != MID_REC_FS_OK)
  12966. {
  12967. if (APP_GUIOBJ_DVB_PartitionList_GetFirstFat(&iPtListIdx) == TRUE)
  12968. {
  12969. printf("set default partition\n\n");
  12970. MID_RecorderSetDefaultPartition(iPtListIdx, MID_REC_PARTITION_SET_FORCE);
  12971. }
  12972. }
  12973. break;
  12974. }
  12975. case DMN_EVENT_USB_HDD_DETACHED:
  12976. {
  12977. int i;
  12978. int MountCount;
  12979. char DefPartitionName[5];
  12980. char AttchPartitionName[5];
  12981. Boolean HaveDefPartition = FALSE;
  12982. int devicelen = 4;
  12983. MountCount = MID_PartitionList_GetMountedCount();
  12984. APP_GUIOBJ_DVB_PartitionList_ClearPartitionInfo();
  12985. if (MountCount == 0 && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  12986. {
  12987. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_NO_STORAGE);
  12988. }
  12989. if (MID_RecorderIsCurRecording() == DRV_SUCCESS)
  12990. {
  12991. strncpy(DefPartitionName, (char *)(MID_RecorderGetRecordingCwd()+5), devicelen);
  12992. }
  12993. else
  12994. {
  12995. char DefPartition[15];
  12996. int iPtListIdx;
  12997. if (MID_RecorderGetDefaultPartition(&iPtListIdx) != MID_REC_FS_OK)
  12998. {
  12999. iPtListIdx = 0; //set partition 0 for default partition
  13000. }
  13001. MID_PartitionList_GetMountName(0, DefPartition);
  13002. strncpy(DefPartitionName, (char *)(DefPartition+5),devicelen);
  13003. }
  13004. int j;
  13005. for (j = 0; j < devicelen; j++ )
  13006. {
  13007. if (DefPartitionName[j] == '/')
  13008. {
  13009. DefPartitionName[j] = '\0';
  13010. }
  13011. }
  13012. for (i=0; i < MountCount; i++)
  13013. {
  13014. strncpy(AttchPartitionName, (char *)(MID_PartitionList_GetDevName(i)+5), devicelen );
  13015. for (j = 0; j < devicelen; j++ )
  13016. {
  13017. if (AttchPartitionName[j] == '/')
  13018. {
  13019. AttchPartitionName[j] = '\0';
  13020. }
  13021. }
  13022. //printf("AttchPartitionName is %s, DefPartitionName is %s\n",AttchPartitionName,DefPartitionName);
  13023. if (strncmp(DefPartitionName, AttchPartitionName, devicelen) == 0)
  13024. {
  13025. //printf("---------------------------------------------- %d\n",__LINE__);
  13026. HaveDefPartition = TRUE;
  13027. break;
  13028. }
  13029. }
  13030. if (HaveDefPartition == FALSE)
  13031. {
  13032. //printf("---------------------------------------------- %d\n",__LINE__);
  13033. if (MID_REC_MODE_MANUAL == u8MIDRecMode || MID_REC_MODE_UNATTENDED == u8MIDRecMode)
  13034. {
  13035. DVBApp_StopRecord();
  13036. }
  13037. else if ((MID_REC_MODE_TIMESHIFT_AFTER_REC == u8MIDRecMode) ||
  13038. (MID_REC_MODE_AUTO == u8MIDRecMode))
  13039. {
  13040. DVBApp_StopTimeshift(TRUE);
  13041. }
  13042. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  13043. {
  13044. #ifdef CONFIG_SUPPORT_SUBTITLE
  13045. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU))
  13046. {
  13047. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU);
  13048. }
  13049. #endif
  13050. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD))
  13051. {
  13052. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_MULTIAUD);
  13053. }
  13054. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY);
  13055. }
  13056. DVBApp_SetBGTimeshift(0);
  13057. MID_TSPLParser_Init("NULL"); //for mantis 0150969, set the wrong szPtName to reset the g_sdPltCnt
  13058. MID_RecorderRefreshDefaultPartition();
  13059. }
  13060. break;
  13061. }
  13062. case DMN_EVENT_DVB_RECORDER_GFS_OK:
  13063. {
  13064. INT32 dFocusedIndex;
  13065. if (SYSTEM_APP_NO_FOCUSED_GUIOBJ == SYSAPP_GOBJ_GetFocusedGUIObject(SYS_APP_DVB, &dFocusedIndex))
  13066. {
  13067. _DVBApp_ShowPopup(DVB_APP_POP_MSG_PVR_PARTITION_SET_SUCCESSFUL);
  13068. }
  13069. }
  13070. break;
  13071. #endif
  13072. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  13073. case APP_GLOBAL_EVENT_USB_UPGRADE:
  13074. {
  13075. UINT32 dActiveSysApp = TOTAL_SYS_APP_SIZE;
  13076. unsigned int dIndex;
  13077. MAINAPP_GetActiveSystemAppIndex(&dIndex);
  13078. if (MAINAPP_GetActiveSystemAppIndex(&dActiveSysApp) != MAIN_APP_SUCCESS)
  13079. {
  13080. break;
  13081. }
  13082. if (dActiveSysApp != SYS_APP_DVB)
  13083. {
  13084. break;
  13085. }
  13086. #ifdef SUPPORT_FACTORY_AUTO_TEST
  13087. if(APP_Factory_GetUpgradeandAutoTestFlag() == TRUE)
  13088. {
  13089. AutoUpgrade = TRUE;
  13090. _DVBApp_Exit_All_Menu();
  13091. DVBApp_ResetPopup_Channel();//add for 0159405 @20111114
  13092. if(dParam==1)
  13093. {
  13094. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_GLOBAL_EVENT_ERASE_WHOLE_FLASH|PASS_TO_SYSAPP, 0);
  13095. }
  13096. else
  13097. {
  13098. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, SOFTWARE_UPGRADE_FROM_AUTO_UPGRADE);
  13099. }
  13100. break;
  13101. }
  13102. #endif
  13103. if(dParam==1)//from fm
  13104. {
  13105. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_GLOBAL_EVENT_ERASE_WHOLE_FLASH|PASS_TO_SYSAPP, 0);
  13106. break;
  13107. }
  13108. if (AL_CS_IsStop() == FALSE)
  13109. {
  13110. break;
  13111. }
  13112. }
  13113. if (!APP_MenuMgr_Exist_Main_Menu()
  13114. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING)))
  13115. {
  13116. _DVBApp_Exit_All_Menu();
  13117. DVBApp_ResetPopup_Channel();//add for 0159405 @20111114
  13118. AutoUpgrade = TRUE;
  13119. #if defined(CONFIG_CONFIRM_AUTO_UPGRADE)
  13120. if(FALSE == gUSBUpgradeBinIsSupperBin)
  13121. {
  13122. SYSAPP_GOBJ_GetLastFocusedGUIObject(SYS_APP_DVB,&dLastFocusedIndex);
  13123. memset(&stPopup, 0x0, sizeof(PopmsgParam_t));
  13124. stPopup.eType = POPMSG_TYPE_CONFIRM;
  13125. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT | POPMSG_EXIT_RECALL;
  13126. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  13127. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_START_AUTO_UPGRADE;
  13128. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  13129. DVBApp_SchedulePopup(stPopup);
  13130. }
  13131. else
  13132. #endif
  13133. {
  13134. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_SOFTWARE_UPGRADE, SOFTWARE_UPGRADE_FROM_AUTO_UPGRADE);
  13135. }
  13136. }
  13137. break;
  13138. #endif
  13139. #ifdef N32_GAME_SUPPORT
  13140. case APP_GLOBAL_EVENT_GAME_UPGRADE:
  13141. if (!APP_MenuMgr_Exist_Main_Menu()
  13142. && !(APP_MenuMgr_Exist_Factory_Menu()))
  13143. {
  13144. _DVBApp_Exit_All_Menu();
  13145. if(dParam == 0)
  13146. {
  13147. dvb_printf("\n!!!open confirm for game upgrade\n");
  13148. memset(&stPopup, 0x0, sizeof(PopmsgParam_t));
  13149. stPopup.eType = POPMSG_TYPE_CONFIRM;
  13150. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT | POPMSG_EXIT_RECALL;
  13151. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  13152. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_START_GAME_UPGRADE;
  13153. stPopup.extend.stConfirm.u8Default = POPMSG_YES;
  13154. DVBApp_SchedulePopup(stPopup);
  13155. }
  13156. else
  13157. {
  13158. dvb_printf("\n!!!show popmsg not enough size to upgrade game\n");
  13159. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_SIZE_FOR_GAME);
  13160. }
  13161. }
  13162. break;
  13163. #endif
  13164. case APP_GLOBAL_EVENT_FLIP:
  13165. if (APP_MenuMgr_Exist_Factory_Menu())
  13166. {
  13167. APP_MenuMgr_Exit_Factory_Menu();
  13168. }
  13169. memset(&stPopup, 0x0, sizeof(PopmsgParam_t));
  13170. stPopup.eType = POPMSG_TYPE_CONFIRM;
  13171. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT | POPMSG_EXIT_RECALL;
  13172. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  13173. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_FLIP;
  13174. stPopup.extend.stConfirm.u8Default = POPMSG_YES;
  13175. DVBApp_SchedulePopup(stPopup);
  13176. break;
  13177. #ifdef CONFIG_SUPPORT_USB_UPGRADE
  13178. case APP_GLOBAL_EVENT_ERASE_WHOLE_FLASH:
  13179. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING))
  13180. {
  13181. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING);
  13182. }
  13183. memset(&stPopup, 0x0, sizeof(PopmsgParam_t));
  13184. stPopup.eType = POPMSG_TYPE_CONFIRM;
  13185. stPopup.u16Exitkeys = POPMSG_EXIT_EXIT | POPMSG_EXIT_RECALL;
  13186. stPopup.u16ReturnType = GUI_OBJECT_POST_EVENT | GUI_OBJECT_EVENT_BYPASS;
  13187. stPopup.extend.stConfirm.eConfirmType = POPMSG_CONFIRM_ERASE_WHOLE_FLASH;
  13188. stPopup.extend.stConfirm.u8Default = POPMSG_NO;
  13189. DVBApp_SchedulePopup(stPopup);
  13190. break;
  13191. #endif
  13192. case APP_GLOBAL_EVENT_KEYLOCK:
  13193. if (!APP_MenuMgr_Exist_Main_Menu() && !APP_MenuMgr_Exist_Factory_Menu())
  13194. {
  13195. _DVBApp_ShowPopup(DVB_APP_POP_MSG_KEYLOCK);
  13196. }
  13197. break;
  13198. case APP_GLOBAL_EVENT_OVER_MAXVOLUME:
  13199. _DVBApp_ShowPopup(DVB_APP_POP_MSG_OVERMAXVOLUME);
  13200. break;
  13201. #ifdef SUPPORT_SFU_AUTO_TEST
  13202. case APP_DVB_GLOBAL_EVENT_SET_RF_TYPE:
  13203. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_RETURN, 0);
  13204. APP_GUIOBJ_Channel_SetRFType(dParam, AL_DB_INVALIDHDL);
  13205. APP_Console_TO_SUF_Respond(CON_TO_SUF_ACK);
  13206. #if 0
  13207. extern void Enable_Debug_Message(UINT32 DBGStatus);
  13208. Enable_Debug_Message(1<<MODULEID_UMF);
  13209. dvb_printf("ACK\n");
  13210. Enable_Debug_Message(0);
  13211. #endif
  13212. break;
  13213. #endif
  13214. #ifdef SUPPORT_ATS
  13215. case APP_DVB_GLOBAL_EVENT_ATS_SET_RF_TYPE:
  13216. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, UI_EVENT_RETURN, 0);
  13217. APP_GUIOBJ_Channel_SetRFType(dParam, AL_DB_INVALIDHDL);
  13218. break;
  13219. case APP_DVB_GLOBAL_EVENT_ATS_GET_DEMODINFO_ON:
  13220. uGetDemodinfoOn = 1;
  13221. APP_ATS_Get_Demodinfo_On();
  13222. break;
  13223. case APP_DVB_GLOBAL_EVENT_ATS_GET_DEMODINFO_OFF:
  13224. uGetDemodinfoOn = 0;
  13225. break;
  13226. #endif
  13227. case UI_EVENT_MultiPanelIndex:
  13228. #ifdef SUPPORT_FACTORY_AUTO_TEST
  13229. if (APP_Factory_GetAutoTestOnOff() == TRUE)
  13230. {
  13231. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING))
  13232. {
  13233. DVBApp_ResetPopup_Channel();
  13234. _DVBApp_CloseAllMenu();
  13235. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING, 1);
  13236. Factory_Ver_Debug();
  13237. }
  13238. else
  13239. {
  13240. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_FM_FACTORYSETTING);
  13241. }
  13242. }
  13243. else
  13244. #endif
  13245. {
  13246. UINT8 u8PanelIdx = tv_GetPanelIndex();
  13247. u8PanelIdx = (u8PanelIdx + 1) % CONFIG_PANEL_NUM;
  13248. tv_SetPanelIndex(u8PanelIdx);
  13249. g_stFactoryUserData.Function.PanelSetting.n_MultiplePanelIndex = u8PanelIdx;
  13250. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER,
  13251. ITEM_OFFSET(APP_SETTING_FactoryUser_t, Function.PanelSetting.n_MultiplePanelIndex), sizeof(g_stFactoryUserData.Function.PanelSetting.n_MultiplePanelIndex),
  13252. &(g_stFactoryUserData.Function.PanelSetting.n_MultiplePanelIndex));
  13253. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTUSER,
  13254. ITEM_OFFSET(APP_SETTING_FactoryUser_t, Function.PanelSetting.n_MultiplePanelIndex), sizeof(g_stFactoryUserData.Function.PanelSetting.n_MultiplePanelIndex));
  13255. printf("[%s], %d: Panel Index is %d\n", __FUNCTION__, __LINE__, u8PanelIdx);
  13256. break;
  13257. }
  13258. break;
  13259. #if (defined(SUPPORT_FACTORY_AUTO_TEST)||defined(SUPPORT_FACTORY_AUTO_TEST_MODE2))
  13260. case UI_EVENT_ERASE_HDCP:
  13261. case UI_EVENT_ERASE_CIKEY:
  13262. case UI_EVENT_FAC_HDCP_CHECK:
  13263. case UI_EVENT_FAC_CIPLUSKEY_CHECK:
  13264. case UI_EVENT_FAC_HDCP_UPDATE:
  13265. case UI_EVENT_FAC_CIPLUSKEY_UPDATE:
  13266. APP_CIPLUS_HDCP_Key_Action_Function(dMessage);
  13267. break;
  13268. case UI_EVENT_AUTO_TEST_ON:
  13269. case UI_EVENT_AUTO_TEST_OFF:
  13270. APP_Factory_Event_Action_Function(dMessage);
  13271. break;
  13272. #ifdef CONFIG_CI_SUPPORT
  13273. case UI_EVENT_AUTO_OUTPUTCI:
  13274. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  13275. {
  13276. APP_DVB_CI_GetCiStatus();
  13277. }
  13278. break;
  13279. #endif
  13280. #ifdef CONFIG_CI_SUPPORT
  13281. case UI_EVENT_AUTO_READCI:
  13282. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  13283. {
  13284. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB, APP_DVB_GLOBAL_EVENT_OBJECT_OPEN|PASS_TO_SYSAPP, (DVB_GUIOBJ_CI_MENU|(1<<16)));
  13285. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  13286. DVB_GUIOBJ_CI_MENU, APP_DVB_INTRA_EVENT_CI_CAM_ON_INIT, dParam);
  13287. }
  13288. break;
  13289. #endif
  13290. case UI_EVENT_AUTO_ATV:
  13291. case UI_EVENT_AUTO_DTV:
  13292. case UI_EVENT_AUTO_AV1:
  13293. case UI_EVENT_AUTO_AV2:
  13294. case UI_EVENT_AUTO_AV3:
  13295. case UI_EVENT_AUTO_SVIDEO1:
  13296. case UI_EVENT_AUTO_SVIDEO2:
  13297. case UI_EVENT_AUTO_SCART1:
  13298. case UI_EVENT_AUTO_SCART2:
  13299. case UI_EVENT_AUTO_YPBPR1:
  13300. case UI_EVENT_AUTO_YPBPR2:
  13301. case UI_EVENT_AUTO_YPBPR3:
  13302. case UI_EVENT_AUTO_HDMI1:
  13303. case UI_EVENT_AUTO_HDMI2:
  13304. case UI_EVENT_AUTO_HDMI3:
  13305. case UI_EVENT_AUTO_HDMI4:
  13306. case UI_EVENT_AUTO_PC:
  13307. case UI_EVENT_AUTO_MEDIA:
  13308. case UI_EVENT_AUTO_DVD:
  13309. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  13310. {
  13311. APP_Factory_SetAutoTestSourceChange(dMessage);
  13312. }
  13313. break;
  13314. case UI_EVENT_FAC_F1:
  13315. case UI_EVENT_FAC_RESET:
  13316. //if(APP_Factory_GetAutoTestOnOff() == TRUE)
  13317. {
  13318. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, eSourType);
  13319. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, eSourType);
  13320. DVBApp_ClearStatus();
  13321. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK,
  13322. APP_DVB_INTRA_EVENT_STOP_PLAYBACK, PLAYBACK_STOP_ALL);
  13323. Factory_FactSet_ResetAllEx();
  13324. //APP_Sysset_Reset(APP_SYSSET_RESET_ALL);
  13325. }
  13326. break;
  13327. case UI_EVENT_VOL_MAX:
  13328. g_stVariationalData.Volume = 100;
  13329. APP_Audio_SetVolume(g_stVariationalData.Volume);
  13330. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  13331. ITEM_OFFSET(APP_SETTING_Variational_t, Volume),
  13332. sizeof(g_stVariationalData.Volume),&(g_stVariationalData.Volume));
  13333. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  13334. ITEM_OFFSET(APP_SETTING_Variational_t, Volume), sizeof(g_stVariationalData.Volume));
  13335. break;
  13336. #endif
  13337. #if 0
  13338. case FW_DB_LOAD_DEFAULT:
  13339. dvb_printf("[%s]FW_DB_LOAD_DEFAULT received.\n", __FUNCTION__);
  13340. #ifdef CONFIG_DVB_SYSTEM_DVBS_SUPPORT
  13341. if (AL_DBTYPE_DVB_S == APP_DVB_Playback_GetCurrentNetType())
  13342. {
  13343. /* wait for DVB-S becomes acticve */
  13344. while(AL_FW_CheckActiveDBModule(AL_DBTYPE_DVB_S) != al_true);
  13345. DVBApp_LoadCustomerDB(AL_DBTYPE_DVB_S);
  13346. }
  13347. #endif
  13348. break;
  13349. #endif
  13350. #ifdef CONFIG_SUPPORT_EWS
  13351. case FW_EWS_FIND_AUD:
  13352. if (dParam != 0)
  13353. {
  13354. memset(&g_PrevAudioPid, 0, sizeof(DBPIDInfo_t));
  13355. g_PrevAudioPid.usDataPID = DB_DVB_INVALID_PID;
  13356. memset(&g_MonAudioPid, 0, sizeof(DBPIDInfo_t));
  13357. g_MonAudioPid.usDataPID = DB_DVB_INVALID_PID;
  13358. memcpy(&g_MonAudioPid, (DBPIDInfo_t *)dParam, sizeof(DBPIDInfo_t));
  13359. DMIOC_SET_EWS_PARAM stEwsParam;
  13360. memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM));
  13361. stEwsParam.bActive = FALSE;
  13362. ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam);
  13363. memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM));
  13364. stEwsParam.bActive = TRUE;
  13365. stEwsParam.clear_ews_flag = TRUE;
  13366. stEwsParam.PID = g_MonAudioPid.usDataPID;
  13367. dvb_printf("\n\n[%s]FW_EWS_FIND_AUD!!!!!!!, curr time: 0x%x\n\n", __FUNCTION__,GL_GetRtc32());
  13368. ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam);
  13369. g_EWSMode = TRUE;
  13370. GL_MemFree((DBPIDInfo_t *)(dParam));
  13371. dParam = 0;
  13372. }
  13373. break;
  13374. case FW_EWS_ACTIVE:
  13375. dvb_printf("\n\n[%s]FW_EWS_ACTIVE!!!!!!!, curr time: 0x%x\n\n", __FUNCTION__,GL_GetRtc32());
  13376. {
  13377. dvbpsi_anouncement_t stAnoumceData;
  13378. AL_Serv_SearchKey_t stSearchKey;
  13379. AL_RecHandle_t hProgHdl;
  13380. AL_RecHandle_t hTpHdl;
  13381. AL_RecHandle_t hCurrTpHdl;
  13382. UINT32 u32Param = 0;
  13383. DMIOC_SET_EWS_PARAM stEwsParam;
  13384. memset(&stAnoumceData, 0, sizeof(dvbpsi_anouncement_t));
  13385. memset(&stSearchKey, 0, sizeof(stSearchKey));
  13386. AL_EWS_Monitor_GetData(&stAnoumceData);
  13387. stSearchKey.u16OrigNetId = stAnoumceData.original_network_id;
  13388. stSearchKey.u16TsId = stAnoumceData.transport_stream_id;
  13389. stSearchKey.u16ServId = stAnoumceData.service_id;
  13390. stSearchKey.eDBType = eNetType;
  13391. stSearchKey.eRecType = AL_RECTYPE_DVBSERVICE;
  13392. stSearchKey.eSearchField = AL_SRV_SEARCHFIELD_ORIGNETID
  13393. | AL_SRV_SEARCHFIELD_TSID
  13394. | AL_SRV_SEARCHFIELD_SRVID;
  13395. if (AL_SUCCESS == AL_DB_GetMatchedRecord((AL_DB_RecordMatchFunc)AL_Serv_MatchRecBySearchKey,
  13396. (al_void *)&stSearchKey, eNetType, AL_RECTYPE_DVBSERVICE, AL_DB_REQ_GETFIRST, &hProgHdl))
  13397. {
  13398. MID_PlaybackGetCurProgHandle(al_null, &hCurrProgHandle);
  13399. if ((hCurrProgHandle != hProgHdl) && (hProgHdl != AL_DB_INVALIDHDL))
  13400. {
  13401. g_NonClearEWS = TRUE;
  13402. if ((g_MonAudioPid.usDataPID != DB_DVB_INVALID_PID) && (g_PrevAudioPid.usDataPID == DB_DVB_INVALID_PID))
  13403. {
  13404. g_PrevAudioPid.usDataPID = MID_PlaybackGetActiveAudHandle(TRUE);
  13405. g_PrevAudioPid.usCodec = MID_PlaybackGetActiveAudCodec();
  13406. }
  13407. memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM));
  13408. stEwsParam.bActive = FALSE;
  13409. ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam);
  13410. _DVBApp_Zapping(eServiceType, hProgHdl, TRUE, 0, TRUE);
  13411. g_PrevProgHandle = hCurrProgHandle;
  13412. hCurrTpHdl = hCurrProgHandle;
  13413. hTpHdl = hProgHdl;
  13414. if ((AL_SUCCESS == AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hCurrTpHdl))
  13415. && (AL_SUCCESS == AL_DB_GetRecord(AL_DB_REQ_GETPARENT, eNetType, AL_RECTYPE_DVBMULTIPLEX, &hTpHdl))
  13416. && (hCurrTpHdl != AL_DB_INVALIDHDL) && (hTpHdl != AL_DB_INVALIDHDL) && (hCurrTpHdl != hTpHdl))
  13417. {
  13418. dvb_printf("[%s:%d] different tp, not need change audio pid !!!!!!!!!!!!!!!!!!!!!\n",__FUNCTION__,__LINE__);
  13419. memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM));
  13420. stEwsParam.bActive = TRUE;
  13421. stEwsParam.PID = g_MonAudioPid.usDataPID;
  13422. ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam);
  13423. }
  13424. else if (g_MonAudioPid.usDataPID != DB_DVB_INVALID_PID)
  13425. {
  13426. u32Param = g_MonAudioPid.usCodec<<16|g_MonAudioPid.usDataPID;
  13427. MID_PlaybackChangePid(MID_PLAYBK_CHANGE_AUDPID, u32Param);
  13428. memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM));
  13429. stEwsParam.bActive = TRUE;
  13430. stEwsParam.PID = g_MonAudioPid.usDataPID;
  13431. ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam);
  13432. }
  13433. g_NonClearEWS = FALSE;
  13434. }
  13435. else if ((hCurrProgHandle == hProgHdl) && (hProgHdl != AL_DB_INVALIDHDL))
  13436. {
  13437. if ((g_MonAudioPid.usDataPID != DB_DVB_INVALID_PID) && (g_PrevAudioPid.usDataPID == DB_DVB_INVALID_PID))
  13438. {
  13439. g_PrevAudioPid.usDataPID = MID_PlaybackGetActiveAudHandle(TRUE);
  13440. g_PrevAudioPid.usCodec = MID_PlaybackGetActiveAudCodec();
  13441. u32Param = g_MonAudioPid.usCodec<<16|g_MonAudioPid.usDataPID;
  13442. MID_PlaybackChangePid(MID_PLAYBK_CHANGE_AUDPID, u32Param);
  13443. }
  13444. }
  13445. }
  13446. }
  13447. break;
  13448. case FW_EWS_INACTIVE:
  13449. dvb_printf("\n\n[%s]FW_EWS_INACTIVE!!!!!!!, g_PrevProgHandle: 0x%x, curr time: 0x%x\n\n", __FUNCTION__,g_PrevProgHandle, GL_GetRtc32());
  13450. {
  13451. DMIOC_SET_EWS_PARAM stEwsParam;
  13452. UINT32 u32Param = 0;
  13453. memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM));
  13454. stEwsParam.bActive = FALSE;
  13455. ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam);
  13456. g_EWSMode = FALSE;
  13457. g_NonClearEWS = TRUE;
  13458. if (g_PrevProgHandle != AL_DB_INVALIDHDL)
  13459. {
  13460. _DVBApp_Zapping(eServiceType, g_PrevProgHandle, TRUE, 0, TRUE);
  13461. g_PrevProgHandle = AL_DB_INVALIDHDL;
  13462. }
  13463. if (g_PrevAudioPid.usDataPID != DB_DVB_INVALID_PID)
  13464. {
  13465. u32Param = g_PrevAudioPid.usCodec<<16|g_PrevAudioPid.usDataPID;
  13466. MID_PlaybackChangePid(MID_PLAYBK_CHANGE_AUDPID, u32Param);
  13467. memset(&g_PrevAudioPid, 0, sizeof(DBPIDInfo_t));
  13468. g_PrevAudioPid.usDataPID = DB_DVB_INVALID_PID;
  13469. }
  13470. g_NonClearEWS = FALSE;
  13471. memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM));
  13472. stEwsParam.clear_ews_flag = true;
  13473. stEwsParam.bActive = TRUE;
  13474. stEwsParam.PID = g_MonAudioPid.usDataPID;
  13475. ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam);
  13476. }
  13477. break;
  13478. case FW_EWS_NON_ANCM:
  13479. dvb_printf("\n\n[%s]FW_EWS_NON_ANCM!!!!!!!, curr time: 0x%x\n\n", __FUNCTION__, GL_GetRtc32());
  13480. {
  13481. DMIOC_SET_EWS_PARAM stEwsParam;
  13482. memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM));
  13483. stEwsParam.bActive = FALSE;
  13484. ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam);
  13485. DVBApp_ResetEWS();
  13486. }
  13487. break;
  13488. #endif
  13489. default:
  13490. dvb_printf("[%s] Unknown message 0x%x received.\n", __FUNCTION__, dMessage);
  13491. break;
  13492. }
  13493. return 0;
  13494. }
  13495. static INT32 _DVBApp_OnGUIFeedbackEvent(void *pPrivateData, UINT32 dMessage, UINT32 dParam)
  13496. {
  13497. al_uint8 bSignalState = al_false;
  13498. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  13499. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  13500. #ifdef CONFIG_SUPPORT_PVR
  13501. UINT8 u8MidRecState;
  13502. UINT8 u8MIDRecMode;
  13503. u8MidRecState = MID_RecorderState();
  13504. u8MIDRecMode = MID_Recorder_GetRecMode();
  13505. #endif
  13506. switch (dMessage)
  13507. {
  13508. case GUI_RESPOND_ZAPPING:
  13509. {
  13510. AL_RecHandle_t NextHdl = dParam;
  13511. _DVBApp_CloseAllMenu();
  13512. if ((NextHdl != AL_DB_INVALIDHDL)
  13513. #ifdef CONFIG_CIPLUS_SUPPORT
  13514. || (APP_CIPLUS_IsProfileSource())
  13515. #endif
  13516. )
  13517. {
  13518. _DVBApp_Zapping(eServiceType, NextHdl, FALSE, 0, TRUE);
  13519. }
  13520. }
  13521. break;
  13522. case GUI_RESPOND_EXIT_ALL_MENU:
  13523. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SLEEP_INFO))
  13524. {
  13525. if(APP_GUIOBJ_SleepTimer_GetOpenStandby() == al_true)
  13526. {
  13527. _DVBApp_Exit_All_Menu();
  13528. if(APP_GUIOBJ_SleepTimer_GetSleepPopConflict() == TRUE)
  13529. {
  13530. APP_GUIOBJ_SleepTimer_SetSleepPopConflict(FALSE);
  13531. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  13532. (APP_GLOBAL_EVENT_SLEEP_TIMER_INFO|PASS_TO_SYSAPP), APP_POWERDOWN_SLEEP);
  13533. }
  13534. }
  13535. else
  13536. {
  13537. _DVBApp_Exit_All_Menu();
  13538. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  13539. if((bSignalState != AL_DVB_MONITOR_VALUE_TRUE)&&(APP_GUIOBJ_SleepTimer_GetStandbyPopConflict() == TRUE))
  13540. {
  13541. APP_GUIOBJ_SleepTimer_SetStandbyPopConflict(FALSE);
  13542. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  13543. (APP_GLOBAL_EVENT_SLEEP_TIMER_INFO | PASS_TO_SYSAPP), APP_POWERDOWN_NO_SINGAL);
  13544. }
  13545. }
  13546. }
  13547. else
  13548. {
  13549. _DVBApp_Exit_All_Menu();
  13550. }
  13551. break;
  13552. #ifdef CONFIG_SUPPORT_PVR
  13553. case GUI_RESPOND_REC_DURATIONTIME_EXIT:
  13554. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME))
  13555. {
  13556. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_RECDURATIONTIME);
  13557. }
  13558. break;
  13559. case GUI_RESPOND_PVRPLAY_TO_GOTO:
  13560. PVR_DEBF("goto is enter!!1\n");
  13561. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_GOTO);
  13562. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO, dMessage, 0);
  13563. break;
  13564. case GUI_RESPOND_PVRFILEPLAY_ERROR:
  13565. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  13566. {
  13567. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY);
  13568. }
  13569. break;
  13570. case GUI_RESPOND_CLOSE_PVRINFO:
  13571. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  13572. {
  13573. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  13574. }
  13575. break;
  13576. case GUI_RESPOND_CLOSE_PLAYINFO:
  13577. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  13578. {
  13579. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO);
  13580. }
  13581. break;
  13582. case GUI_RESPOND_PVRINFO_FROMEXTENDINFO:
  13583. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  13584. {
  13585. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO);
  13586. }
  13587. if (u8MidRecState != MID_REC_STATUS_STOP)
  13588. {
  13589. if (u8MIDRecMode == MID_REC_MODE_TIMESHIFT_AFTER_REC)
  13590. {
  13591. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,
  13592. DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERNOTIMEMENU);
  13593. }
  13594. else if ((u8MIDRecMode == MID_REC_MODE_AUTO)
  13595. && (MID_TSPLParser_GetThreadState() == TRUE))
  13596. {
  13597. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,
  13598. DVB_GUIOBJ_PVR_PLAYINFO, PVR_PLAYINFO_ENTERNOTIMEMENU);
  13599. }
  13600. else if ((u8MIDRecMode == MID_REC_MODE_MANUAL)
  13601. && (u8MidRecState == MID_REC_STATUS_START))
  13602. {
  13603. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC, 0);
  13604. #ifdef SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD
  13605. if((DVBAPP_Pvr_GetRECPlayFlag())
  13606. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  13607. {
  13608. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO,
  13609. PVR_PLAYINFO_ENTERNOTIMEMENU);
  13610. }
  13611. #endif
  13612. }
  13613. else if (u8MidRecState == MID_REC_STATUS_PAUSE)
  13614. {
  13615. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PAUSE, 0);
  13616. #ifdef SUPPORT_PVR_RECORD_PLAY_CURRENTRECORD
  13617. if((DVBAPP_Pvr_GetRECPlayFlag())
  13618. && (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO)))
  13619. {
  13620. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO,
  13621. PVR_PLAYINFO_ENTERNOTIMEMENU);
  13622. }
  13623. #endif
  13624. }
  13625. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB,
  13626. DVB_GUIOBJ_PVRREC_INFO, 0);
  13627. }
  13628. break;
  13629. #endif
  13630. default:
  13631. dvb_printf("[%s] Unknown message received.\n", __FUNCTION__);
  13632. break;
  13633. }
  13634. return 0;
  13635. }
  13636. static INT32 _DVBApp_OnEvent(void *pPrivateData, UINT32 dMessage, UINT32 dParam)
  13637. {
  13638. switch (dMessage & GUIOBJ_MESSAGE_TYPE_MASK)
  13639. {
  13640. case SYSAPP_GLOBAL_EVENT_TYPE:
  13641. _DVBApp_OnGlobalEvent(pPrivateData, (dMessage & GUIOBJ_MESSAGE_MASK), dParam);
  13642. break;
  13643. case GUIOBJ_FEEDBACK_EVENT_TYPE:
  13644. _DVBApp_OnGUIFeedbackEvent(pPrivateData, (dMessage & GUIOBJ_MESSAGE_MASK), dParam);
  13645. break;
  13646. default:
  13647. dvb_printf("[%s] Unknown message 0x%x received.\n", __FUNCTION__, dMessage);
  13648. break;
  13649. }
  13650. return 0;
  13651. }
  13652. INT32 _DVBApp_DataApplicationStatus(UINT32 u32module)
  13653. {
  13654. int iret = DATA_APP_UNSTABLE;
  13655. UINT8 u8ProgState = MID_PLAYBK_PROG_STATE_NORMAL;
  13656. #ifdef CONFIG_SUPPORT_MHEG5
  13657. BOOLEAN eRecordState = FALSE;
  13658. #endif
  13659. #ifdef CONFIG_SUPPORT_SUBTITLE
  13660. UINT8 onoff = 0;
  13661. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  13662. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  13663. onoff = g_stUserInfoData.Subtitle;
  13664. #endif
  13665. switch (u32module & OSD2CTRLMDL_ALL)
  13666. {
  13667. #ifdef CONFIG_SUPPORT_SUBTITLE
  13668. case OSD2CTRLMDL_SUB:
  13669. if (APP_GUIOBJ_SubTitle_IsThereAnyData())
  13670. {
  13671. iret |= DATA_APP_LANUCHABLE;
  13672. }
  13673. else
  13674. {
  13675. iret |= DATA_APP_NOT_FOUND;
  13676. }
  13677. if (iret & DATA_APP_LANUCHABLE)
  13678. {
  13679. if (onoff == TRUE)
  13680. {
  13681. iret |= DATA_APP_EXECUTABLE;
  13682. }
  13683. }
  13684. break;
  13685. #endif
  13686. #ifdef CONFIG_SUPPORT_MHEG5
  13687. case OSD2CTRLMDL_MH5:
  13688. if (APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED)
  13689. {
  13690. iret |= DATA_APP_LANUCHABLE | DATA_APP_EXECUTABLE;
  13691. }
  13692. else
  13693. {
  13694. iret |= DATA_APP_NOT_FOUND;
  13695. }
  13696. if (eRecordState == TRUE)
  13697. {
  13698. iret &= ~DATA_APP_EXECUTABLE;
  13699. }
  13700. break;
  13701. #endif
  13702. default:
  13703. dvb_printf("%s(): unknow module index\n", __FUNCTION__);
  13704. break;
  13705. }
  13706. #ifdef CONFIG_SUPPORT_PVR
  13707. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  13708. #endif
  13709. {
  13710. u8ProgState = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL);
  13711. if (u8ProgState == MID_PLAYBK_PROG_STATE_LOCKED)
  13712. {
  13713. iret &= ~DATA_APP_EXECUTABLE;
  13714. }
  13715. }
  13716. return iret;
  13717. }
  13718. static INT32 _DVBApp_DataApplicationGuiObjectRefresh(UINT32 gui_object_selection)
  13719. {
  13720. int ret = 0;
  13721. #ifdef CONFIG_SUPPORT_MHEG5
  13722. if (gui_object_selection & OSD2CTRLMDL_MH5)
  13723. {
  13724. if (!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)
  13725. && gui_object_selection & OSD2CTRLMDL_ENABLE
  13726. #ifdef CONFIG_SUPPORT_TTX
  13727. && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)
  13728. #endif
  13729. #ifdef CONFIG_SUPPORT_SUBTITLE
  13730. && !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE)
  13731. #endif
  13732. )
  13733. {
  13734. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_MHEG5, 0);
  13735. }
  13736. else if(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MHEG5)
  13737. && (gui_object_selection & OSD2CTRLMDL_DISABLE))
  13738. {
  13739. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_MHEG5);
  13740. }
  13741. }
  13742. #endif
  13743. #ifdef CONFIG_SUPPORT_SUBTITLE
  13744. if (gui_object_selection & OSD2CTRLMDL_SUB)
  13745. {
  13746. if (gui_object_selection & OSD2CTRLMDL_ENABLE)
  13747. {
  13748. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE))
  13749. {
  13750. #ifdef CONFIG_SUPPORT_TTX
  13751. if(!(SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)))
  13752. #endif
  13753. {
  13754. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE, 0);
  13755. }
  13756. }
  13757. else
  13758. {
  13759. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB,
  13760. DVB_GUIOBJ_SUBTITLE, APP_DVB_INTRA_EVENT_OSD2_RESTART, 0);
  13761. }
  13762. }
  13763. else if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE)
  13764. && (gui_object_selection & OSD2CTRLMDL_DISABLE))
  13765. {
  13766. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLE);
  13767. }
  13768. }
  13769. #endif
  13770. return ret;
  13771. }
  13772. /*****************************************************************************
  13773. ** FUNCTION : DVBApp_GetScrambleState
  13774. **
  13775. ** DESCRIPTION :
  13776. ** get current program scramnle attrib
  13777. **
  13778. ** PARAMETERS :
  13779. ** none
  13780. **
  13781. ** RETURN VALUES:
  13782. ** TRUE - SCRAMBLE ATTRIB
  13783. ** FALSE - UN SCRAMBLE ATTRIB
  13784. *****************************************************************************/
  13785. Boolean DVBApp_GetScrambleAttrib(void)
  13786. {
  13787. DBServAttrib_t stProgAttrib;
  13788. AL_DB_EDBType_t DBType = AL_DBTYPE_DVB_T;
  13789. AL_RecHandle_t hProg = AL_DB_INVALIDHDL;
  13790. DBType = APP_DVB_Playback_GetCurrentNetType();
  13791. hProg = APP_DVB_Playback_GetCurrentProgHandle(DBType, AL_RECTYPE_DVBTV | AL_RECTYPE_DVBRADIO);
  13792. memset(&stProgAttrib, 0, sizeof(DBServAttrib_t));
  13793. AL_DB_QueryDetailFieldByName(hProg, (al_uint8 *)"stProgAttrib", (al_void *)&stProgAttrib);
  13794. if (stProgAttrib.scramble == al_true)
  13795. {
  13796. return TRUE;
  13797. }
  13798. else
  13799. {
  13800. return FALSE;
  13801. }
  13802. }
  13803. /*****************************************************************************
  13804. ** FUNCTION : DVBApp_CheckServiceNotAvailable
  13805. **
  13806. ** DESCRIPTION :
  13807. ** Check current program state is not available or not
  13808. **
  13809. ** PARAMETERS :
  13810. ** none
  13811. **
  13812. ** RETURN VALUES:
  13813. ** TRUE - service not available
  13814. ** FALSE - not service not available
  13815. *****************************************************************************/
  13816. Boolean DVBApp_CheckServiceNotAvailable(void)
  13817. {
  13818. MID_PlaybackProgState_t eProgState = MID_PLAYBK_PROG_STATE_NORMAL;
  13819. AL_RecHandle_t hCurrPrgHdl = AL_DB_INVALIDHDL;
  13820. AL_DB_EDBType_t eDBType = APP_DVB_Playback_GetCurrentNetType();
  13821. al_uint8 bSignalState = AL_DVB_MONITOR_VALUE_INVAILED;
  13822. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL,&bSignalState);
  13823. if (g_bNoSteamData == TRUE)
  13824. {
  13825. #ifdef CONFIG_SUPPORT_MHEG5
  13826. if ((APP_Area_SupportDtg())
  13827. && (APP_DVB_Mheg5_GetBootCarouselStatus() == MHEG5_BOOT_CAROUSEL_EXISTED))
  13828. {
  13829. return FALSE;
  13830. }
  13831. else
  13832. #endif
  13833. #ifdef CONFIG_CIPLUS_SUPPORT
  13834. if (MID_DTVCI_GetAppMMIStatus())
  13835. {
  13836. return FALSE;
  13837. }
  13838. else
  13839. #endif
  13840. {
  13841. hCurrPrgHdl = APP_DVB_Playback_GetCurrentProgHandle(eDBType, (AL_RECTYPE_DVBTV |AL_RECTYPE_DVBRADIO));
  13842. if ((hCurrPrgHdl == AL_DB_INVALIDHDL) && (bSignalState != AL_DVB_MONITOR_VALUE_INVAILED))
  13843. {
  13844. dvb_printf("Get current program handle error!!!\n");
  13845. return TRUE;
  13846. }
  13847. eProgState = APP_DVB_Playback_GetProgStateByHandle(eDBType, hCurrPrgHdl);
  13848. if ((eProgState == MID_PLAYBK_PROG_STATE_NOT_RUNNING) && (bSignalState != AL_DVB_MONITOR_VALUE_INVAILED))
  13849. {
  13850. return TRUE;
  13851. }
  13852. if ((eProgState != MID_PLAYBK_PROG_STATE_LOCKED) && (bSignalState != AL_DVB_MONITOR_VALUE_INVAILED))
  13853. {
  13854. return TRUE;
  13855. }
  13856. else
  13857. {
  13858. return FALSE;
  13859. }
  13860. }
  13861. }
  13862. return FALSE;
  13863. }
  13864. /*****************************************************************************
  13865. ** FUNCTION : DVBApp_CheckProgramType
  13866. **
  13867. ** DESCRIPTION :
  13868. ** Check program lock or temp sevice or vedio mpeg4 and so on
  13869. **
  13870. ** PARAMETERS :
  13871. ** bInit - program state dispose
  13872. **
  13873. ** RETURN VALUES:
  13874. ** SP_ERR_FAILURE - can not playback
  13875. ** SP_SUCCESS - playback
  13876. *****************************************************************************/
  13877. INT32 DVBApp_CheckProgramType(Boolean bFlag)
  13878. {
  13879. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  13880. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  13881. INT16 i16ProgState = MID_PLAYBK_PROG_STATE_NORMAL;
  13882. al_uint8 bMonitorState = al_false;
  13883. al_uint8 bSignalState = al_false;
  13884. UINT8 u8Mute = 0;
  13885. INT32 i32Ret = SP_ERR_FAILURE;
  13886. APP_Source_Type_t eSourType = APP_SOURCE_MAX;
  13887. //al_bool bHasValidServ = al_false;
  13888. #ifdef CONFIG_CIPLUS_SUPPORT
  13889. if (APP_CIPLUS_IsProfileSource())
  13890. {
  13891. if (g_isMute)
  13892. {
  13893. return SP_SUCCESS;
  13894. }
  13895. }
  13896. #endif
  13897. //bHasValidServ = AL_DB_HasVisibleService(eNetType);
  13898. AL_RecHandle_t hTempHdl = AL_DB_INVALIDHDL;
  13899. MID_PlaybackGetCurProgHandle(al_null, &hTempHdl);
  13900. APP_GUIOBJ_Source_GetCurrSource(&eSourType);
  13901. i16ProgState = APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL);
  13902. printf("\n @@@@@@@@@@@@@dvb_app.c i16ProgState=%d line=%d \n",i16ProgState,__LINE__);
  13903. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_MONITOR, &bMonitorState);
  13904. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  13905. //if ((bMonitorState) && (bSignalState == AL_DVB_MONITOR_VALUE_TRUE) && bHasValidServ)
  13906. if ((bMonitorState) && (bSignalState == AL_DVB_MONITOR_VALUE_TRUE) && (hTempHdl != AL_DB_INVALIDHDL))
  13907. {
  13908. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL))
  13909. {
  13910. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  13911. }
  13912. #ifdef CONFIG_SUPPORT_PVR //if playing timeshift file not to show pop
  13913. UINT32 u32PEState = MID_TSPL_MODE_STOP;
  13914. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  13915. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  13916. u8Mute = g_stUserInfoData.Mute;//for manits 151777
  13917. if (MID_TSPLParser_GetPlayState(&u32PEState, NULL) == DRV_SUCCESS)
  13918. {
  13919. if (MID_TSPL_MODE_STOP != u32PEState)
  13920. {
  13921. if ((u8Mute == FALSE) && (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)))
  13922. {
  13923. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  13924. }
  13925. return SP_ERR_FAILURE;
  13926. }
  13927. }
  13928. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  13929. {
  13930. if(u8Mute == FALSE)
  13931. {
  13932. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  13933. }
  13934. return SP_ERR_FAILURE;
  13935. }
  13936. #endif
  13937. switch (i16ProgState)
  13938. {
  13939. case MID_PLAYBK_PROG_STATE_AUDIO_VIDEO_SCRAMBLED:
  13940. if (eServiceType != AL_RECTYPE_DVBRADIO) //zhongbaoxing added for mantis 0153467 @20110926
  13941. {
  13942. APP_GUIOBJ_DVB_Playback_ClearShowLogo();
  13943. }
  13944. #if 0
  13945. #if 1 //richiechang 20120430, for samsung & SONY TVSet Behavior
  13946. MID_PlaybackStreamInfo_t stAudStrmInfo;
  13947. memset(&stAudStrmInfo, 0, sizeof(MID_PlaybackStreamInfo_t));
  13948. MID_PlaybackGetAudioStreamInfo(&stAudStrmInfo, GL_NO_WAIT);
  13949. if (stAudStrmInfo.bIsScrambled)
  13950. {
  13951. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType); // mute audio if audio is scrambled
  13952. }
  13953. else
  13954. {
  13955. APP_Audio_SetMute(g_stUserInfoData.Mute, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType); // mute audio based on user setting if audio is not scrambled
  13956. }
  13957. #else //richiechang 20120430, for SPV9200_Orion Behavior
  13958. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType); // mute audio if video is scrambled
  13959. #endif
  13960. #endif
  13961. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType); // mute audio if audio is scrambled
  13962. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  13963. #if 0
  13964. if (bFlag == TRUE)
  13965. {
  13966. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SCRAMBLED) == FALSE)
  13967. {
  13968. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SCRAMBLE);
  13969. }
  13970. }
  13971. #endif
  13972. i32Ret = SP_ERR_FAILURE;
  13973. break;
  13974. case MID_PLAYBK_PROG_STATE_ONLY_VIDEO_SCRAMBLED:
  13975. if (eServiceType != AL_RECTYPE_DVBRADIO) //zhongbaoxing added for mantis 0153467 @20110926
  13976. {
  13977. APP_GUIOBJ_DVB_Playback_ClearShowLogo();
  13978. }
  13979. APP_Audio_SetMute(g_stUserInfoData.Mute, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType); // mute audio based on user setting if audio is not scrambled
  13980. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  13981. #if 1 //for samsung & SONY TVSet Behavior
  13982. if (bFlag == TRUE)
  13983. {
  13984. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SCRAMBLED) == FALSE)
  13985. {
  13986. printf("\n#####Pop Scramble MSG Menu,F=%s,L=%d######\n",__FUNCTION__,__LINE__);
  13987. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SCRAMBLE);
  13988. }
  13989. }
  13990. #endif
  13991. i32Ret = SP_ERR_FAILURE;
  13992. break;
  13993. case MID_PLAYBK_PROG_STATE_LOCKED:
  13994. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  13995. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  13996. if (eServiceType != AL_RECTYPE_DVBRADIO) //zhongbaoxing added for mantis 0153467 @20110926
  13997. {
  13998. APP_GUIOBJ_DVB_Playback_ClearShowLogo();
  13999. }
  14000. APP_GUIOBJ_DVB_Playback_SetPlayState(FALSE);
  14001. if (bFlag == TRUE)
  14002. {
  14003. UINT32 u32PopMsgDialogType = POPMSG_PROMPT_NO_PROG;
  14004. APP_GUIOBJ_PopMsg_GetMsgDialogType(&u32PopMsgDialogType);
  14005. if ((DVBApp_IsPopupExist(PLAYBACK_POPUP_PWD_LOCKED) == FALSE)
  14006. #ifdef CONFIG_SUPPORT_PVR
  14007. && (u32PopMsgDialogType != POPMSG_PROMPT_INITIAL_AUTOTIMESHIFT)
  14008. && (u32PopMsgDialogType != POPMSG_PROMPT_INITIAL_REC)
  14009. && (u32PopMsgDialogType != POPMSG_PROMPT_INITIAL_TIMESHIFT)
  14010. && (u32PopMsgDialogType != POPMSG_PROMPT_INVALID_REC)
  14011. #endif
  14012. )
  14013. {
  14014. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  14015. }
  14016. }
  14017. i32Ret = SP_ERR_FAILURE;
  14018. break;
  14019. case MID_PLAYBK_PROG_STATE_TEMP_SERVICE:
  14020. if ((bFlag == TRUE) && (DVBApp_CheckServiceNotAvailable() == TRUE))
  14021. {
  14022. _DVBApp_ShowPopup(DVB_APP_POP_MSG_TEMPSERVICE);
  14023. }
  14024. if (DVBApp_CheckServiceNotAvailable() == FALSE)
  14025. {
  14026. MID_DISP_DTVSetVideoUnmute();
  14027. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  14028. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  14029. if (g_stUserInfoData.Mute == FALSE)
  14030. {
  14031. APP_Audio_SetMute(g_stUserInfoData.Mute, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14032. }
  14033. }
  14034. i32Ret = SP_ERR_FAILURE;
  14035. break;
  14036. case MID_PLAYBK_PROG_STATE_VIDEO_MPEG4:
  14037. if (bFlag == TRUE)
  14038. {
  14039. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_VIDEO_NOT_SUPPORT) == FALSE)
  14040. {
  14041. _DVBApp_ShowPopup(DVB_APP_POP_MSG_VIDEO_NOT_SUPPORT);
  14042. }
  14043. }
  14044. i32Ret = SP_ERR_FAILURE;
  14045. break;
  14046. case MID_PLAYBK_PROG_STATE_REPLACE:
  14047. if (DVBApp_CheckServiceNotAvailable() == FALSE)
  14048. {
  14049. if (eServiceType == AL_RECTYPE_DVBRADIO)
  14050. {
  14051. if (APP_GUIOBJ_DVB_Playback_GetShowLogoState() == FALSE)
  14052. {
  14053. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PLAYBACK, APP_DVB_INTRA_EVENT_SHOWLOGO, 0);
  14054. }
  14055. }
  14056. }
  14057. i32Ret = SP_ERR_FAILURE;
  14058. break;
  14059. case MID_PLAYBK_PROG_STATE_ONLY_AUDIO_SCRAMBLED:
  14060. if(eServiceType == AL_RECTYPE_DVBRADIO)
  14061. {
  14062. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14063. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14064. if (bFlag == TRUE)
  14065. {
  14066. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL))
  14067. {
  14068. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  14069. }
  14070. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL))
  14071. {
  14072. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  14073. }
  14074. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SCRAMBLED) == FALSE)
  14075. {
  14076. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SCRAMBLE);
  14077. }
  14078. }
  14079. i32Ret = SP_ERR_FAILURE;
  14080. break;
  14081. }
  14082. case MID_PLAYBK_PROG_STATE_VIDEO_AVC:
  14083. case MID_PLAYBK_PROG_STATE_NOT_RUNNING:
  14084. default:
  14085. if (bFlag == TRUE)
  14086. {
  14087. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_PWD_LOCKED) == TRUE)
  14088. {
  14089. DVBApp_ClosePopup(PLAYBACK_POPUP_PWD_LOCKED, UI_EVENT_NULL);
  14090. }
  14091. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SCRAMBLED) == TRUE)
  14092. {
  14093. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_SCRAMBLED, UI_EVENT_NULL);
  14094. }
  14095. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_TEMPSERVICE) == TRUE)
  14096. {
  14097. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE, UI_EVENT_NULL);
  14098. }
  14099. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_TEMPSERVICE_SERVICE_NOT_RUNNING) == TRUE)
  14100. {
  14101. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE_SERVICE_NOT_RUNNING, UI_EVENT_NULL);
  14102. }
  14103. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_TEMPSERVICE_LOAD_MHEG5) == TRUE)
  14104. {
  14105. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE_LOAD_MHEG5, UI_EVENT_NULL);
  14106. }
  14107. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_VIDEO_NOT_SUPPORT) == TRUE)
  14108. {
  14109. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_VIDEO_NOT_SUPPORT, UI_EVENT_NULL);
  14110. }
  14111. }
  14112. if (DVBApp_CheckServiceNotAvailable() == TRUE)
  14113. {
  14114. if (eServiceType != AL_RECTYPE_DVBRADIO) //zhongbaoxing added for mantis 0153467 @20110926
  14115. {
  14116. APP_GUIOBJ_DVB_Playback_ClearShowLogo();
  14117. }
  14118. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14119. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14120. if (bFlag == TRUE)
  14121. {
  14122. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE) == FALSE)
  14123. {
  14124. if(APP_Get_DTVHiddenScanState() != TRUE)
  14125. {
  14126. _DVBApp_ShowPopup(DVB_APP_POP_MSG_SERVICE_NOT_AVAILABLE);
  14127. }
  14128. }
  14129. }
  14130. i32Ret = SP_ERR_FAILURE;
  14131. }
  14132. else
  14133. {
  14134. #ifdef SHOW_LOGO_RADIO
  14135. if (eServiceType != AL_RECTYPE_DVBRADIO)
  14136. #endif
  14137. {
  14138. APP_GUIOBJ_DVB_Playback_ClearShowLogo();
  14139. }
  14140. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  14141. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  14142. u8Mute = g_stUserInfoData.Mute;
  14143. /*Modify for judge has set PQ parameter*/
  14144. if ((eServiceType == AL_RECTYPE_DVBTV)||(eServiceType == AL_RECTYPE_DVBDATA))
  14145. {
  14146. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL) == TRUE)
  14147. {
  14148. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  14149. }
  14150. /*modify by qinhe for mantis 0011456*/
  14151. if ((g_SetPQFlag == TRUE) && (g_bMidHasUnmute == TRUE))
  14152. {
  14153. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  14154. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  14155. u8Mute = g_stUserInfoData.Mute;
  14156. #ifdef CONFIG_SUPPORT_PVR
  14157. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  14158. if (APP_WAKEUP_GetBootFlag() == TRUE)
  14159. {
  14160. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, APP_SOURCE_MAX);
  14161. }
  14162. else
  14163. #endif
  14164. #endif
  14165. {
  14166. APP_Audio_SetMute(u8Mute, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14167. }
  14168. }
  14169. APP_Video_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14170. }
  14171. else if (eServiceType == AL_RECTYPE_DVBRADIO)
  14172. {
  14173. //if ((bSetUnMuteFlag == FALSE))
  14174. {
  14175. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  14176. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  14177. u8Mute = g_stUserInfoData.Mute;
  14178. #ifndef SHOW_LOGO_RADIO
  14179. APP_Video_SetMute(TRUE, FALSE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14180. #else
  14181. APP_Video_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14182. #endif
  14183. #ifdef CONFIG_SUPPORT_PVR
  14184. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  14185. if (APP_WAKEUP_GetBootFlag() == TRUE)
  14186. {
  14187. APP_Audio_SetMute(TRUE, FALSE, APP_MUTE_MODE_STATEMAX, APP_SOURCE_MAX);
  14188. }
  14189. else
  14190. #endif
  14191. #endif
  14192. {
  14193. APP_Audio_SetMute(u8Mute, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14194. }
  14195. }
  14196. }
  14197. i32Ret = SP_SUCCESS;
  14198. }
  14199. break;
  14200. }
  14201. }
  14202. else
  14203. {
  14204. #ifdef CONFIG_SUPPORT_PVR //if playing timeshift file not to mute video
  14205. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  14206. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  14207. u8Mute = g_stUserInfoData.Mute;//for manits 151777
  14208. if (MID_TSPLParser_GetThreadState() == TRUE)
  14209. {
  14210. if ((u8Mute == FALSE) && (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY)))
  14211. {
  14212. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14213. }
  14214. return SP_ERR_FAILURE;
  14215. }
  14216. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_FILEPLAY))
  14217. {
  14218. if(u8Mute == FALSE)
  14219. {
  14220. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, eSourType);
  14221. }
  14222. return SP_ERR_FAILURE;
  14223. }
  14224. #endif
  14225. APP_Audio_SetMute(TRUE, TRUE, APP_MUTE_MODE_NO_SIGNALE, eSourType);
  14226. #ifdef SUPPORT_DTV_SHOW_BLUESCREEN
  14227. if (g_stSetupData.BlueScreen == APP_SWITCH_ON)
  14228. {
  14229. #ifdef CONFIG_DVB_SYSTEM
  14230. APP_SCARTOUT_SetVideoMute(APP_SOURCE_DTV, DTV_TRUE, TRUE);
  14231. #endif
  14232. if (!g_bIsBlueScreen)
  14233. {
  14234. MID_DISP_DTVSetVideoMute(0,0,255);
  14235. }
  14236. }
  14237. else
  14238. #endif
  14239. {
  14240. APP_Video_SetMute(TRUE, TRUE, APP_MUTE_MODE_NO_SIGNALE, eSourType);
  14241. }
  14242. APP_GUIOBJ_DVB_Playback_ClearShowLogo();
  14243. if (bFlag == TRUE)
  14244. {
  14245. APP_GUIOBJ_DVB_Playback_ClearShowLogo();
  14246. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL))
  14247. {
  14248. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  14249. }
  14250. if (APP_DVB_Playback_GetProgStateByHandle(APP_DVB_Playback_GetCurrentNetType(), AL_DB_INVALIDHDL)
  14251. == MID_PLAYBK_PROG_STATE_LOCKED)
  14252. {
  14253. _DVBApp_ShowPopup(DVB_APP_POP_MSG_CHECKPWD);
  14254. }
  14255. else if ((DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL) == FALSE)
  14256. #ifdef CONFIG_SUPPORT_PVR
  14257. && (APP_GUIOBJ_DVB_PvrPlayInfo_GetTunerState() == FALSE)
  14258. #endif
  14259. && (bSignalState == AL_DVB_MONITOR_VALUE_FALSE)
  14260. )
  14261. {
  14262. _DVBApp_ShowPopup(DVB_APP_POP_MSG_NO_SIGNAL);
  14263. }
  14264. }
  14265. i32Ret = SP_ERR_FAILURE;
  14266. }
  14267. return i32Ret;
  14268. }
  14269. /*****************************************************************************
  14270. ** FUNCTION : DVBApp_SchedulePopup
  14271. **
  14272. ** DESCRIPTION :
  14273. ** Schedule dvb popmsg
  14274. **
  14275. ** PARAMETERS :
  14276. ** Popup - popmsg type
  14277. **
  14278. ** RETURN VALUES:
  14279. ** None
  14280. *****************************************************************************/
  14281. INT32 DVBApp_SchedulePopup(PopmsgParam_t Popup)
  14282. {
  14283. UINT32 u32CurPopup = PLAYBACK_POPUP_NONE;
  14284. UINT8 bTimeoutFlag = 0;
  14285. switch (Popup.eType)
  14286. {
  14287. case POPMSG_TYPE_CONFIRM:
  14288. u32CurPopup = Popup.extend.stConfirm.eConfirmType;
  14289. break;
  14290. case POPMSG_TYPE_PWD:
  14291. u32CurPopup = Popup.extend.stPwd.ePwdType;
  14292. break;
  14293. case POPMSG_TYPE_PROMPT:
  14294. u32CurPopup = Popup.extend.stPrompt.ePromptType;
  14295. if (Popup.extend.stPrompt.iTimeout > 0)
  14296. {
  14297. if (g_dCurPopup == u32CurPopup)
  14298. {
  14299. SYSAPP_IF_SendGlobalEventWithIndex(SYS_APP_DVB,
  14300. APP_GLOBAL_EVENT_POPMSG_RESET_TIMEOUT,
  14301. Popup.extend.stPrompt.iTimeout);
  14302. return 0;
  14303. }
  14304. bTimeoutFlag = 1;
  14305. }
  14306. break;
  14307. default:
  14308. return 0;
  14309. }
  14310. if (u32CurPopup > PLAYBACK_POPUP_NONE)
  14311. {
  14312. if (bTimeoutFlag == 0)
  14313. {
  14314. g_u32PopupWaitingList |= 1 << (u32CurPopup - PLAYBACK_POPUP_NONE);
  14315. stPopupWaitingList[u32CurPopup-PLAYBACK_POPUP_NONE] = Popup;
  14316. }
  14317. if (u32CurPopup > g_u32OldPopup)
  14318. {
  14319. g_u32OldPopup = u32CurPopup;
  14320. if (APP_MenuMgr_Exist_Main_Menu()
  14321. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE)
  14322. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_SOURCE_CEC)
  14323. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG)
  14324. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNLIST)
  14325. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVLIST)
  14326. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_MULTIAUD)
  14327. #ifdef CONFIG_SUPPORT_SUBTITLE
  14328. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_SUBTITLEMENU)
  14329. #endif
  14330. #ifdef CONFIG_SUPPORT_TTX
  14331. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_TTX)
  14332. #endif
  14333. #ifdef CONFIG_CI_SUPPORT
  14334. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_MENU)
  14335. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CI_ENQ)
  14336. #endif
  14337. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_INITINSTALL)
  14338. #ifdef SUPPORT_LCN_CONFLICT_MENU
  14339. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_LCN_CONFLICT_MENU)
  14340. #endif
  14341. || (APP_GUIOBJ_DVB_ProgInfo_IsExtendMode() == 1)
  14342. #ifdef OSD_GAME_SUPPORT
  14343. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OSDGAME)
  14344. #endif
  14345. #ifdef SUPPORT_CONAX_CAS
  14346. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CA_PIN_CONFIM)
  14347. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CA_MESSAGE_POP)
  14348. #endif
  14349. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_CHNMGR)
  14350. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_FAVMGR)
  14351. #ifdef CONFIG_SUPPORT_3D_EN
  14352. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_3D_INFO)
  14353. #endif
  14354. )
  14355. {
  14356. g_u32OldPopup = PLAYBACK_POPUP_NONE;
  14357. g_dCurPopup = u32CurPopup;
  14358. return 0;
  14359. }
  14360. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  14361. {
  14362. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  14363. }
  14364. APP_MenuMgr_SetMsgPopup(TRUE);
  14365. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_POPMSG, (UINT32)&Popup);
  14366. g_dCurPopup = u32CurPopup;
  14367. }
  14368. }
  14369. else
  14370. {
  14371. if ((SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  14372. && (APP_GUIOBJ_DVB_ProgInfo_IsExtendMode() == 1))
  14373. {
  14374. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO);
  14375. }
  14376. #ifdef OSD_GAME_SUPPORT
  14377. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_OSDGAME))
  14378. {
  14379. return 0;
  14380. }
  14381. #endif
  14382. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  14383. {
  14384. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  14385. }
  14386. APP_MenuMgr_SetMsgPopup(TRUE);
  14387. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, DVB_GUIOBJ_POPMSG, (UINT32)&Popup);
  14388. g_dCurPopup = u32CurPopup;
  14389. }
  14390. return 1;
  14391. }
  14392. /*****************************************************************************
  14393. ** FUNCTION : DVBApp_ClosePopup
  14394. **
  14395. ** DESCRIPTION :
  14396. ** Close dvb popmsg
  14397. **
  14398. ** PARAMETERS :
  14399. ** u32ClosePopup - popmsg type
  14400. ** dMessage - send message type when close popmsg
  14401. **
  14402. ** RETURN VALUES:
  14403. ** None
  14404. *****************************************************************************/
  14405. INT32 DVBApp_ClosePopup(UINT32 u32ClosePopup, UINT32 dMessage)
  14406. {
  14407. UINT32 dCheckFlag;
  14408. APP_MenuMgr_SetMsgPopup(FALSE);
  14409. if (u32ClosePopup > PLAYBACK_POPUP_NONE)
  14410. {
  14411. if (u32ClosePopup == g_u32OldPopup)
  14412. {
  14413. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  14414. {
  14415. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  14416. }
  14417. }
  14418. if (dMessage != UI_EVENT_NULL)
  14419. {
  14420. SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, dMessage, g_dCurPopup);
  14421. }
  14422. g_u32PopupWaitingList &= ~(1 << (u32ClosePopup - PLAYBACK_POPUP_NONE));
  14423. if (u32ClosePopup == g_u32OldPopup)
  14424. {
  14425. g_u32OldPopup = PLAYBACK_POPUP_NONE;
  14426. g_dCurPopup = PLAYBACK_POPUP_NONE;
  14427. for (dCheckFlag = PLAYBACK_POPUP_MAX - 1; dCheckFlag > PLAYBACK_POPUP_NONE; dCheckFlag--)
  14428. {
  14429. if (g_u32PopupWaitingList & (1 << (dCheckFlag - PLAYBACK_POPUP_NONE)))
  14430. {
  14431. DVBApp_SchedulePopup(stPopupWaitingList[dCheckFlag-PLAYBACK_POPUP_NONE]);
  14432. break;
  14433. }
  14434. }
  14435. }
  14436. }
  14437. else
  14438. {
  14439. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  14440. {
  14441. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  14442. }
  14443. if (dMessage != UI_EVENT_NULL)
  14444. {
  14445. SYSAPP_IF_SendCriticalGlobalEventWithIndex(SYS_APP_DVB, dMessage, g_dCurPopup);
  14446. }
  14447. if (g_u32OldPopup != PLAYBACK_POPUP_NONE)
  14448. {
  14449. g_u32OldPopup = PLAYBACK_POPUP_NONE;
  14450. }
  14451. g_dCurPopup = PLAYBACK_POPUP_NONE;
  14452. if(u32ClosePopup == POPMSG_PROMPT_PWD_ERROR) //use g_stPopMsgParam.stParam.dParam1 to indicate that no need to pop scheculed pop.
  14453. {
  14454. return 1;
  14455. }
  14456. for (dCheckFlag = PLAYBACK_POPUP_MAX - 1; dCheckFlag > PLAYBACK_POPUP_NONE; dCheckFlag--)
  14457. {
  14458. if (g_u32PopupWaitingList & (1 << (dCheckFlag - PLAYBACK_POPUP_NONE)))
  14459. {
  14460. DVBApp_SchedulePopup(stPopupWaitingList[dCheckFlag-PLAYBACK_POPUP_NONE]);
  14461. break;
  14462. }
  14463. }
  14464. }
  14465. return 1;
  14466. }
  14467. /*****************************************************************************
  14468. ** FUNCTION : DVBApp_ResetPopup_Channel
  14469. **
  14470. ** DESCRIPTION :
  14471. ** Reset all popup state
  14472. **
  14473. ** PARAMETERS :
  14474. ** None
  14475. **
  14476. ** RETURN VALUES:
  14477. ** None
  14478. *****************************************************************************/
  14479. INT32 DVBApp_ResetPopup_Channel(void)
  14480. {
  14481. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_CHECK_ANTENNA_INPUT, UI_EVENT_NULL);
  14482. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  14483. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE, UI_EVENT_NULL);
  14484. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE_LOAD_MHEG5, UI_EVENT_NULL);
  14485. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_TEMPSERVICE_SERVICE_NOT_RUNNING, UI_EVENT_NULL);
  14486. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  14487. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_SCRAMBLED, UI_EVENT_NULL);
  14488. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_SERVICE_NOT_AVAILABLE, UI_EVENT_NULL);
  14489. DVBApp_ClosePopup(PLAYBACK_POPUP_CONFIRM_REMOVE_SRV, UI_EVENT_NULL);
  14490. DVBApp_ClosePopup(PLAYBACK_POPUP_PROMPT_REMOVE_SRV, UI_EVENT_NULL);
  14491. DVBApp_ClosePopup(PLAYBACK_POPUP_PWD_LOCKED, UI_EVENT_NULL);
  14492. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_DATABASE_EMPTY, UI_EVENT_NULL);
  14493. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_VIDEO_NOT_SUPPORT, UI_EVENT_NULL);
  14494. #ifdef CONFIG_SUPPORT_MHEG5
  14495. DVBApp_ClosePopup(PLAYBACK_POPUP_CONFIRM_STOP_SUBTITLE_TO_OPEN_MHEG5, UI_EVENT_NULL);
  14496. #endif
  14497. #ifdef CONFIG_SUPPORT_SUBTITLE
  14498. //DVBApp_ClosePopup(POPMSG_PROMPT_NO_SUBTITLE, UI_EVENT_NULL);
  14499. #endif
  14500. return SP_SUCCESS;
  14501. }
  14502. /*****************************************************************************
  14503. ** FUNCTION : DVBApp_HideMsgPopupDisplay
  14504. **
  14505. ** DESCRIPTION :
  14506. ** Hide popup display
  14507. **
  14508. ** PARAMETERS :
  14509. ** None
  14510. **
  14511. ** RETURN VALUES:
  14512. ** None
  14513. *****************************************************************************/
  14514. INT32 DVBApp_HideMsgPopupDisplay(void)
  14515. {
  14516. g_u32OldPopup = PLAYBACK_POPUP_NONE;
  14517. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_POPMSG))
  14518. {
  14519. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_POPMSG);
  14520. }
  14521. return 0;
  14522. }
  14523. /*****************************************************************************
  14524. ** FUNCTION : DVBApp_IsPopupExist
  14525. **
  14526. ** DESCRIPTION :
  14527. ** Judge one pop up exist
  14528. **
  14529. ** PARAMETERS :
  14530. ** u32TargetPopup - pop up type
  14531. **
  14532. ** RETURN VALUES:
  14533. ** None
  14534. *****************************************************************************/
  14535. UINT8 DVBApp_IsPopupExist(UINT32 u32TargetPopup)
  14536. {
  14537. if (u32TargetPopup == g_u32OldPopup)
  14538. {
  14539. return TRUE;
  14540. }
  14541. else
  14542. {
  14543. if((u32TargetPopup > PLAYBACK_POPUP_NONE)
  14544. && (g_u32PopupWaitingList & (1 << (u32TargetPopup - PLAYBACK_POPUP_NONE))))
  14545. {
  14546. return TRUE;
  14547. }
  14548. else
  14549. {
  14550. return FALSE;
  14551. }
  14552. }
  14553. }
  14554. /*****************************************************************************
  14555. ** FUNCTION : DVBApp_RestoreOnStandby
  14556. **
  14557. ** DESCRIPTION :
  14558. ** dvb restore when standby
  14559. **
  14560. ** PARAMETERS :
  14561. ** None
  14562. **
  14563. ** RETURN VALUES:
  14564. ** None
  14565. *****************************************************************************/
  14566. void DVBApp_RestoreOnStandby(void)
  14567. {
  14568. extern Boolean g_bScanRunning;
  14569. #ifdef SUPPORT_LCN
  14570. DBLCNConfInfo_t *pLcnConf = AL_LCN_GetLCNConfChannel();
  14571. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  14572. #endif
  14573. if (g_bScanRunning)
  14574. {
  14575. MID_ScanStop();
  14576. #ifdef SUPPORT_LCN
  14577. /* force process LCN if added service by PSI Monitor */
  14578. #ifdef SUPPORT_DVBS_LCN
  14579. if (eNetType == AL_DBTYPE_DVB_T || eNetType == AL_DBTYPE_DVB_C|| eNetType == AL_DBTYPE_DVB_S)
  14580. #else
  14581. if (eNetType == AL_DBTYPE_DVB_T || eNetType == AL_DBTYPE_DVB_C)
  14582. #endif
  14583. {
  14584. LCN_PreJudgeLCN();
  14585. LCN_QueryLCNConflict(pLcnConf);
  14586. dvb_printf(" $$$$$$$$$$$$$$$$$$$ %s %d pLcnConf->ConfCount = %d \n",
  14587. __FUNCTION__, __LINE__, pLcnConf->ConfCount);
  14588. if (pLcnConf->ConfCount > 0)
  14589. {
  14590. LCN_AutoAssignConflictLCN();
  14591. LCN_FreeLCNConflict();
  14592. LCN_FreeTRNDDictionary();
  14593. }
  14594. }
  14595. #endif
  14596. AL_DB_Sync(APP_DVB_Playback_GetCurrentNetType(), al_false);
  14597. }
  14598. }
  14599. /*****************************************************************************
  14600. ** FUNCTION : DVBApp_DataApplicationSwitch
  14601. **
  14602. ** DESCRIPTION :
  14603. ** OSD layer 2 switch
  14604. **
  14605. ** PARAMETERS :
  14606. ** u32flag - switch flag
  14607. **
  14608. ** RETURN VALUES:
  14609. ** None
  14610. *****************************************************************************/
  14611. INT32 DVBApp_DataApplicationSwitch(UINT32 u32flag)
  14612. {
  14613. UINT32 u32CurrentState = 0;
  14614. if (_DVBApp_DataApplicationStatus(OSD2CTRLMDL_SUB)&DATA_APP_EXECUTABLE)
  14615. {
  14616. u32CurrentState |= OSD2CTRLMDL_SUB;
  14617. }
  14618. if (APP_Area_SupportDtg())//zhongbaoxing added for mantis 0168195 @20120224
  14619. {
  14620. if (_DVBApp_DataApplicationStatus(OSD2CTRLMDL_MH5)&DATA_APP_EXECUTABLE)
  14621. {
  14622. #ifdef CONFIG_SUPPORT_PVR
  14623. if (MID_RecorderState() == MID_REC_STATUS_STOP)
  14624. #endif
  14625. u32CurrentState |= OSD2CTRLMDL_MH5;
  14626. }
  14627. }
  14628. if (u32flag & OSD2CTRLMDL_DISABLE)
  14629. {
  14630. u32CurrentState = u32flag;
  14631. }
  14632. else
  14633. {
  14634. if (u32flag & OSD2CTRLMDL_FORCE)
  14635. {
  14636. u32CurrentState = (u32CurrentState & u32flag) > 0 ? (u32CurrentState & u32flag) : u32CurrentState;
  14637. }
  14638. else
  14639. {
  14640. u32CurrentState = (u32CurrentState & u32flag);
  14641. }
  14642. }
  14643. #if defined(CONFIG_SUPPORT_MHEG5_HD) && defined(CONFIG_SUPPORT_MHEG5_ICS)
  14644. // The receiver must support the simultaneous presentation of MHEG-5 applications and DVB subtitles (D-Book 16.5.1.1)
  14645. #else
  14646. if ((u32flag & OSD2CTRLMDL_SUB) && (u32CurrentState & OSD2CTRLMDL_MH5) && (u32flag & OSD2CTRLMDL_ENABLE))
  14647. {
  14648. u32CurrentState = ON_DATA_APPLICATION_DECISION(u32CurrentState);
  14649. }
  14650. #endif
  14651. u32CurrentState |= (u32flag & (OSD2CTRLMDL_ENABLE | OSD2CTRLMDL_DISABLE));
  14652. return _DVBApp_DataApplicationGuiObjectRefresh(u32CurrentState);
  14653. }
  14654. /*****************************************************************************
  14655. ** FUNCTION : DVBApp_GetScrambleStatus
  14656. **
  14657. ** DESCRIPTION :
  14658. ** clear flag status when change source
  14659. **
  14660. ** PARAMETERS :
  14661. ** None
  14662. **
  14663. ** RETURN VALUES:
  14664. ** None
  14665. *****************************************************************************/
  14666. Boolean DVBApp_GetScrambleStatus(void)
  14667. {
  14668. return g_bScrambleFlag;
  14669. }
  14670. #ifdef CONFIG_SUPPORT_OTA_UPGRADE
  14671. /*****************************************************************************
  14672. ** FUNCTION : DVBApp_GetOTAStatus
  14673. **
  14674. ** DESCRIPTION :
  14675. ** clear flag status when cancel or finish OTA upgrade
  14676. **
  14677. ** PARAMETERS :
  14678. ** None
  14679. **
  14680. ** RETURN VALUES:
  14681. ** None
  14682. *****************************************************************************/
  14683. Boolean DVBApp_GetOTAStatus(void)
  14684. {
  14685. return g_bOTAFlag;
  14686. }
  14687. /*****************************************************************************
  14688. ** FUNCTION : DVBApp_SetOTAStatus
  14689. **
  14690. ** DESCRIPTION :
  14691. ** set flag status
  14692. **
  14693. ** PARAMETERS :
  14694. ** None
  14695. **
  14696. ** RETURN VALUES:
  14697. ** None
  14698. *****************************************************************************/
  14699. void DVBApp_SetOTAStatus(Boolean b_flag)
  14700. {
  14701. g_bOTAFlag = b_flag;
  14702. }
  14703. #endif
  14704. /*****************************************************************************
  14705. ** FUNCTION : DVBApp_ClearStatus
  14706. **
  14707. ** DESCRIPTION :
  14708. ** clear flag status when change source
  14709. **
  14710. ** PARAMETERS :
  14711. ** None
  14712. **
  14713. ** RETURN VALUES:
  14714. ** None
  14715. *****************************************************************************/
  14716. void DVBApp_ClearStatus(void)
  14717. {
  14718. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  14719. AL_DB_ERecordType_t eServiceType = APP_DVB_Playback_GetCurrServiceType(eNetType);
  14720. bSetUnMuteFlag = FALSE;
  14721. if (eServiceType == AL_RECTYPE_DVBTV)
  14722. {
  14723. g_bMidHasUnmute = FALSE;
  14724. }
  14725. else if (eServiceType == AL_RECTYPE_DVBRADIO)
  14726. {
  14727. g_bMidHasUnmute = TRUE;
  14728. }
  14729. #ifdef SUPPORT_DTV_SHOW_BLUESCREEN
  14730. g_bIsBlueScreen = FALSE;
  14731. #endif
  14732. g_SetPQFlag = FALSE;
  14733. g_bScrambleFlag = PROG_STATUS_SCRAMBLE_UNKNOW;
  14734. g_bAudHasUpdate = FALSE;
  14735. g_bForceProcessEventCbk = TRUE;
  14736. g_bNoSteamData = FALSE;
  14737. g_bTempSerFlag = FALSE;
  14738. #ifdef CONFIG_SUPPORT_OTA_UPGRADE
  14739. DVBApp_SetOTAStatus(FALSE);
  14740. #endif
  14741. #ifdef CONFIG_SUPPORT_EWS
  14742. if (g_NonClearEWS == FALSE)
  14743. {
  14744. DVBApp_ResetEWS();
  14745. }
  14746. #endif
  14747. }
  14748. /*****************************************************************************
  14749. ** FUNCTION : DVBApp_NoSignal_TimerReset
  14750. **
  14751. ** DESCRIPTION :
  14752. **
  14753. **
  14754. ** PARAMETERS :
  14755. **
  14756. ** RETURN VALUES:
  14757. **
  14758. *****************************************************************************/
  14759. void DVBApp_NoSignal_TimerReset(void)
  14760. {
  14761. g_u32NoSignalTimer = 0;
  14762. }
  14763. void DVBApp_NoSignal_StandbyTimerReset(void)
  14764. {
  14765. g_u32NoSignalSleepTimer = 0;
  14766. }
  14767. void DVBApp_CheckSrvType(al_uint8 SdtSrvType, al_uint8 SrvType, al_uint8 VideoCount, al_uint8 AudioCount, AL_DB_ERecordType_t *RetSrvType)
  14768. {
  14769. if (RetSrvType == al_null)
  14770. {
  14771. return;
  14772. }
  14773. #if defined (CONFIG_SUPPORT_MHEG5)
  14774. al_int8 CurArea = 0;
  14775. #endif
  14776. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  14777. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  14778. #if defined (CONFIG_SUPPORT_MHEG5)
  14779. CurArea = g_stChannelData.Country;
  14780. #endif
  14781. *RetSrvType = AL_RECTYPE_DVBTV;
  14782. if (SrvType != 0xff)
  14783. {
  14784. if (SdtSrvType == SERVICE_DIGITAL_RADIO
  14785. ||SdtSrvType == SERVICE_ADVANCED_DIGITAL_RADIO)
  14786. {
  14787. *RetSrvType = AL_RECTYPE_DVBRADIO;
  14788. }
  14789. else if ((SdtSrvType != SERVICE_DIGITAL_TELEVISION
  14790. && SdtSrvType != SERVICE_MPEG2_HD_DIGITAL_TELEVISION
  14791. && SdtSrvType != SERVICE_ADVANCED_SD_DIGITAL_TV
  14792. && SdtSrvType != SERVICE_ADVANCED_HD_DIGITAL_TV)
  14793. && ((SrvType == SERVICE_DIGITAL_RADIO)
  14794. || (SrvType == SERVICE_ADVANCED_DIGITAL_RADIO)))
  14795. {
  14796. *RetSrvType = AL_RECTYPE_DVBRADIO;
  14797. }
  14798. #ifdef CONFIG_DVB_SYSTEM
  14799. #if defined (CONFIG_SUPPORT_MHEG5)
  14800. if ((CurArea == AREA_ENGLAND)||(CurArea == AREA_IRELAND))
  14801. {
  14802. if (SdtSrvType == SERVICE_DATABROADCAST)
  14803. {
  14804. *RetSrvType = AL_RECTYPE_DVBDATA;
  14805. }
  14806. }
  14807. #endif
  14808. if (APP_Area_SupportNorDig())
  14809. {
  14810. if ((SdtSrvType == SERVICE_DATABROADCAST)
  14811. || (SdtSrvType == SERVICE_TELETEXT)
  14812. || (SdtSrvType == SERVICE_DVB_MHP))
  14813. {
  14814. *RetSrvType = AL_RECTYPE_DVBDATA;
  14815. }
  14816. }
  14817. #endif
  14818. }
  14819. else
  14820. {
  14821. if (SdtSrvType == SERVICE_DIGITAL_RADIO
  14822. ||SdtSrvType == SERVICE_ADVANCED_DIGITAL_RADIO)
  14823. {
  14824. *RetSrvType = AL_RECTYPE_DVBRADIO;
  14825. }
  14826. else if ((SdtSrvType != SERVICE_DIGITAL_TELEVISION
  14827. && SdtSrvType != SERVICE_MPEG2_HD_DIGITAL_TELEVISION
  14828. && SdtSrvType != SERVICE_ADVANCED_SD_DIGITAL_TV
  14829. && SdtSrvType != SERVICE_ADVANCED_HD_DIGITAL_TV)
  14830. && ((SdtSrvType == SERVICE_DIGITAL_RADIO)
  14831. || (SdtSrvType == SERVICE_ADVANCED_DIGITAL_RADIO)))
  14832. {
  14833. *RetSrvType = AL_RECTYPE_DVBRADIO;
  14834. }
  14835. #ifdef CONFIG_DVB_SYSTEM
  14836. #if defined (CONFIG_SUPPORT_MHEG5)
  14837. if ((CurArea == AREA_ENGLAND)||(CurArea == AREA_IRELAND))
  14838. {
  14839. if (SdtSrvType == SERVICE_DATABROADCAST)
  14840. {
  14841. *RetSrvType = AL_RECTYPE_DVBDATA;
  14842. }
  14843. }
  14844. #endif
  14845. if (APP_Area_SupportNorDig())
  14846. {
  14847. if ((SdtSrvType == SERVICE_DATABROADCAST)
  14848. || (SdtSrvType == SERVICE_TELETEXT)
  14849. || (SdtSrvType == SERVICE_DVB_MHP))
  14850. {
  14851. *RetSrvType = AL_RECTYPE_DVBDATA;
  14852. }
  14853. }
  14854. #endif
  14855. }
  14856. if ((VideoCount != 0xff) && (AudioCount != 0xff)
  14857. && !APP_Area_SupportAntennaReadyHD() && !APP_Area_SupportRiks())
  14858. {
  14859. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  14860. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  14861. if ((VideoCount == 0) && (AudioCount > 0)
  14862. && *RetSrvType == AL_RECTYPE_DVBTV)
  14863. {
  14864. *RetSrvType = AL_RECTYPE_DVBRADIO;
  14865. }
  14866. //mantis 186965 by changhong, for mh5 service
  14867. if((VideoCount > 0) && (*RetSrvType == AL_RECTYPE_DVBDATA)
  14868. && (g_stChannelData.Country != AREA_NORWAY))
  14869. {
  14870. *RetSrvType = AL_RECTYPE_DVBTV;
  14871. }
  14872. }
  14873. }
  14874. void DVBApp_CheckNotVisibleBySrvType(al_uint8 SdtSrvType, al_uint8 bTempSrv, al_uint8 *bNotVisible, al_uint8 *bNotNeedSave)
  14875. {
  14876. if (bNotVisible == al_null || bNotNeedSave ==al_null)
  14877. {
  14878. return;
  14879. }
  14880. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_CHANNEL, 0,
  14881. sizeof(APP_SETTING_Channel_t), &(g_stChannelData));
  14882. #if defined(CONFIG_DVB_SYSTEM) || defined(CONFIG_AUS_DVB_SYSTEM)
  14883. #if 0
  14884. if ((al_false == AL_Event_GetEDTGSupport())
  14885. && (al_false == APP_Area_SupportNorDig())
  14886. && (pstServiceInfo->usPcrPid == 0x1FFF))
  14887. {
  14888. pstServiceInfo->ucServiceFlag |= SERVICE_NON_VISIBLE;
  14889. }
  14890. #endif
  14891. if (SdtSrvType != SERVICE_NO_SDT)
  14892. {
  14893. if(SdtSrvType != SERVICE_DIGITAL_TELEVISION
  14894. && SdtSrvType != SERVICE_DIGITAL_RADIO
  14895. && SdtSrvType != SERVICE_ADVANCED_DIGITAL_RADIO
  14896. && SdtSrvType != SERVICE_ADVANCED_SD_DIGITAL_TV
  14897. && SdtSrvType != SERVICE_ADVANCED_HD_DIGITAL_TV
  14898. && SdtSrvType != SERVICE_MPEG2_HD_DIGITAL_TELEVISION)
  14899. {
  14900. #ifdef CONFIG_DVB_SYSTEM
  14901. if((g_stChannelData.Country == AREA_ENGLAND)
  14902. ||(g_stChannelData.Country == AREA_IRELAND))
  14903. {
  14904. if (SdtSrvType != SERVICE_DATABROADCAST)
  14905. {
  14906. *bNotNeedSave = al_true;
  14907. }
  14908. }
  14909. else if(g_stChannelData.Country == AREA_ITALY)
  14910. {
  14911. if (SdtSrvType != SERVICE_TELETEXT
  14912. && SdtSrvType != SERVICE_NOT_IN_SDT)
  14913. {
  14914. *bNotVisible = TRUE;
  14915. }
  14916. }
  14917. else if (APP_Area_SupportNorDig())
  14918. {
  14919. if ((g_stChannelData.Country == AREA_NORWAY)
  14920. ||((SdtSrvType != SERVICE_DATABROADCAST)
  14921. && (SdtSrvType != SERVICE_TELETEXT)
  14922. && (SdtSrvType != SERVICE_DVB_MHP)))
  14923. {
  14924. *bNotVisible = TRUE;
  14925. }
  14926. }
  14927. else
  14928. #endif
  14929. {
  14930. if ((SdtSrvType != SERVICE_NOT_IN_SDT)
  14931. && bTempSrv)
  14932. {
  14933. *bNotVisible = TRUE;
  14934. }
  14935. }
  14936. }
  14937. }
  14938. #endif
  14939. /* mantis 0141374 */
  14940. if ((SdtSrvType == SERVICE_NO_SDT)
  14941. && bTempSrv)
  14942. {
  14943. *bNotVisible = TRUE;
  14944. }
  14945. }
  14946. void DVBApp_ResetDvbSpecRule(UINT8 u8Area)
  14947. {
  14948. #ifdef SUPPORT_LCN
  14949. UINT16 LcnRule = 0;
  14950. #endif
  14951. #if defined(SUPPORT_LCN)||defined(SUPPOTR_NOT_ADD_SERVICE)
  14952. AL_DB_EDBType_t eNetType = APP_DVB_Playback_GetCurrentNetType();
  14953. #endif
  14954. #ifdef SUPPORT_LCN
  14955. APP_Area_GetAreaInfoLcnRule(eNetType, u8Area, &LcnRule);
  14956. #endif
  14957. Dvb_SetFreqEnlargeEnable(0);
  14958. #ifdef SUPPORT_LCN
  14959. LCN_SetLCNRule(LcnRule);
  14960. LCN_SetExtLCNRule(DB_DVB_ASSIGN_NONELCN_FOLLOW_SPEC, DB_DVB_ASSIGN_NONELCN_SEPARATE);
  14961. #endif
  14962. AL_Event_SetDTGSupport(FALSE);
  14963. AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_EBOOK, 0, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType);
  14964. AL_CS_DtvSetSpecialSpec(AL_DB_DVB_PRISPEC_EBOOK);
  14965. MID_ScanSetCountryCode(APP_Area_GetCountryCode(u8Area));
  14966. //Temp mask by jun.luo @ 8/5 for fix compile errorMID_DISP_SetDvbSpec(MIDDISP_DVB_SPEC_NONE);
  14967. switch (u8Area)
  14968. {
  14969. #ifdef CONFIG_DVB_SYSTEM
  14970. case AREA_ENGLAND:
  14971. AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_DTG, 0, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType);
  14972. AL_CS_DtvSetSpecialSpec(AL_DB_DVB_PRISPEC_DBOOK);
  14973. AL_Event_SetDTGSupport(TRUE);
  14974. #ifdef CONFIG_SUPPORT_DTG_CERTIFICATION
  14975. //Temp mask by jun.luo @ 8/5 for fix compile errorMID_DISP_SetDvbSpec(MIDDISP_DVB_SPEC_DTG);
  14976. #endif
  14977. break;
  14978. case AREA_ITALY:
  14979. AL_CS_DtvSetSpecialSpec(AL_DB_DVB_PRISPEC_ZBOOK);
  14980. AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_ZBOOK, 0, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType);
  14981. break;
  14982. #ifdef SCAN_FREQ_OFFSET_RANGE_ENLARGE
  14983. case AREA_FRANCE:
  14984. Dvb_SetFreqEnlargeEnable(1);
  14985. break;
  14986. #endif
  14987. case AREA_SPAIN:
  14988. #ifdef SPECIAL_CHNORDER_FOR_SPAIN
  14989. AL_CS_DtvSetSpecialSpec(AL_DB_DVB_PRISPEC_OCA);//Engel OCA need to save all Dupli service
  14990. #endif
  14991. break;
  14992. case AREA_HUNGARY:
  14993. break;
  14994. case AREA_NETHERLANDS:
  14995. break;
  14996. case AREA_FINLAND:
  14997. case AREA_SWEDEN:
  14998. case AREA_DENMARK:
  14999. case AREA_NORWAY:
  15000. //case AREA_GERMANY:
  15001. case AREA_IRELAND:
  15002. AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_NORDIG, 0, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType);
  15003. AL_CS_DtvSetSpecialSpec(AL_DB_DVB_PRISPEC_NORDIG);
  15004. if(u8Area == AREA_IRELAND)
  15005. {
  15006. AL_Event_SetDTGSupport(TRUE);
  15007. }
  15008. //Temp mask by jun.luo @ 8/5 for fix compile error MID_DISP_SetDvbSpec(MIDDISP_DVB_SPEC_NORDIG);
  15009. break;
  15010. #endif
  15011. #ifdef CONFIG_AUS_DVB_SYSTEM
  15012. case AREA_AUSTRALIA:
  15013. case AREA_NEW_ZEALAND:
  15014. case AREA_SINGAPORE:
  15015. case AREA_AUS_OTHER:
  15016. AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_DEMO_DEFAULT, 0, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType);
  15017. break;
  15018. #endif
  15019. default:
  15020. AL_PSI_Monitor_SetupConf(AL_PSIMON_SPECIAL_SPEC_DEMO_DEFAULT, 0, DVBApp_CheckSrvType, DVBApp_CheckNotVisibleBySrvType);
  15021. break;
  15022. }
  15023. #ifdef SUPPOTR_NOT_ADD_SERVICE
  15024. if(eNetType == AL_DBTYPE_DVB_S)
  15025. {
  15026. AL_PSI_Monitor_NotAddService();
  15027. }
  15028. #endif
  15029. if (u8Area >= MAX_AREA)
  15030. {
  15031. u8Area = 0;
  15032. }
  15033. if (APP_Area_SupportDtg())
  15034. {
  15035. AL_Event_SetDTGSupport(al_true);
  15036. }
  15037. AL_Event_SetCountryCode(APP_Area_GetCountryCode(u8Area));
  15038. APP_GuiMgr_Set_Default_Codepage(u8Area);
  15039. }
  15040. Boolean DVBApp_GetForceProcessEventState(void)
  15041. {
  15042. return g_bForceProcessEventCbk;
  15043. }
  15044. /*****************************************************************************
  15045. ** FUNCTION : DVBApp_fw_callback
  15046. **
  15047. ** DESCRIPTION :
  15048. **
  15049. **
  15050. ** PARAMETERS :
  15051. ** None
  15052. **
  15053. ** RETURN VALUES:
  15054. ** None
  15055. *****************************************************************************/
  15056. INT32 DVBApp_fw_callback(AFW_event_t event, void *param)
  15057. {
  15058. UINT32 message = 0xffffffff;
  15059. UINT32 dParam = 0;
  15060. UINT32 Index = TOTAL_SYS_APP_SIZE;
  15061. if (MAIN_APP_SUCCESS != MAINAPP_GetActiveSystemAppIndex(&Index))
  15062. {
  15063. dvb_printf("[%s: %d][Error] get active system app fail\n", __FUNCTION__, __LINE__);
  15064. return SP_ERR_FAILURE;
  15065. }
  15066. dvb_printf(" Received event: %d from AFW module callback.\n\n",event);
  15067. if (Index == SYS_APP_DVB)
  15068. {
  15069. switch (event)
  15070. {
  15071. case FW_EPG_NOWNEXT_UPDATE_EVENT:
  15072. if(g_bForceProcessEventCbk)
  15073. {
  15074. dParam = *(UINT32 *)param;
  15075. message = event|PASS_TO_SYSAPP;
  15076. }
  15077. else
  15078. {
  15079. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG) &&
  15080. !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPGEXTEND) &&
  15081. !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO) )
  15082. {
  15083. return SP_ERR_FAILURE;
  15084. }
  15085. message = event;
  15086. }
  15087. break;
  15088. case FW_EPG_SCHEDULE_UPDATE_EVENT:
  15089. if(!SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPG) &&
  15090. !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_EPGEXTEND) &&
  15091. !SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO) )
  15092. {
  15093. return SP_ERR_FAILURE;
  15094. }
  15095. message = event;
  15096. break;
  15097. case FW_EPG_PREF_SERVICE_NAME_UPDATE_EVENT:
  15098. message = FW_MONITOR_UPDATE_SERVICE;
  15099. break;
  15100. case FW_DATASAVING_DVBDB_STORE_START_EVENT:
  15101. case FW_DATASAVING_ATVDB_STORE_START_EVENT:
  15102. case FW_DATASAVING_DVBDB_STORE_END_EVENT:
  15103. case FW_DATASAVING_ATVDB_STORE_END_EVENT:
  15104. message = event;
  15105. break;
  15106. #ifdef CONFIG_SUPPORT_TTX
  15107. case FW_TT_NO_DATA:
  15108. message = event|PASS_TO_SYSAPP;
  15109. break;
  15110. #endif
  15111. #ifdef CONFIG_SUPPORT_PVR
  15112. case FW_SCHEDULER_EVENT:
  15113. {
  15114. dvb_printf("event is coming,");
  15115. message = APP_DVB_GLOBAL_EVENT_PVRSCH |PASS_TO_SYSAPP;
  15116. dvb_printf("handle = 0x%x\n", ((AL_PR_details_t *)param)->rem_details.handle);
  15117. memcpy(&g_stDetails, param, sizeof(AL_PR_details_t));
  15118. dParam = (UINT32)&g_stDetails;
  15119. free(param);
  15120. param = NULL;
  15121. }
  15122. break;
  15123. case FW_SCHEDULER_MSG:
  15124. dvb_printf("first warning: event will come in 10 sec\n");
  15125. dParam = *(UINT32 *)param;
  15126. message = APP_GLOBAL_EVENT_PVR_REMINDER|PASS_TO_SYSAPP;
  15127. break;
  15128. case FW_SCHEDULER_EXPIRE:
  15129. dvb_printf("warning: event duration is over #############\n");
  15130. message = APP_DVB_GLOBAL_EVENT_PVR_EXPIRE|PASS_TO_SYSAPP;
  15131. dParam =*(UINT32 *)param;
  15132. break;
  15133. #endif
  15134. case FW_MONITOR_TUNER_LOCKED:
  15135. case FW_MONITOR_TUNER_UNLOCKED:
  15136. case FW_MONITOR_STREAM_NO_DATA:
  15137. case FW_MONITOR_STREAM_HAS_DATA:
  15138. case FW_MONITOR_SERVICE_VIDEO_AUDIO_SCRAMBLE:
  15139. case FW_MONITOR_SERVICE_ONLY_VIDEO_SCRAMBLE:
  15140. case FW_MONITOR_SERVICE_ONLY_AUDIO_SCRAMBLE:
  15141. case FW_MONITOR_SERVICE_NO_SCRAMBLE:
  15142. case FW_MONITOR_PARENTAL_LOCKED:
  15143. case FW_MONITOR_PARENTAL_UNLOCKED:
  15144. case FW_MONITOR_SERVICE_MOVE:
  15145. case FW_MONITOR_AUDIO_UPDATE:
  15146. case FW_MONITOR_SUBTITLE_UPDATE:
  15147. case FW_MONITOR_TELETEXT_UPDATE:
  15148. case FW_MONITOR_ADD_SERVICE:
  15149. case FW_MONITOR_UPDATE_SERLCN:
  15150. case FW_MONITOR_REMOVE_SERVICE:
  15151. case FW_MONITOR_OTHERTP_SERVICE_FOUND:
  15152. case FW_MONITOR_REPLACE_SERVICE:
  15153. case FW_MONITOR_REPLACE_SIMULCASE_SERVICE:
  15154. case FW_MONITOR_TS_CHANGED:
  15155. case FW_MONITOR_NEW_TSID:
  15156. case FW_MONITOR_TIME_UPDATE:
  15157. case FW_MONITOR_FIND_NEW_TPLIST:
  15158. case FM_DTV_AUDIO_STARTED:
  15159. case FM_DTV_AUDIO_SAMPLE_STOPPED:
  15160. case FM_DTV_AUDIO_STOPPED:
  15161. #ifdef AC_ON_AUTO_GET_TIME
  15162. if ((g_fBackgroundGetTime == TRUE)
  15163. && (event == FW_MONITOR_TIME_UPDATE))
  15164. {
  15165. APP_WAKEUP_SetBootFlag(FALSE);
  15166. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF);
  15167. }
  15168. #endif
  15169. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  15170. if (event == FW_MONITOR_TIME_UPDATE)
  15171. {
  15172. APP_TimeUpdateSetFlag(TRUE);
  15173. }
  15174. #endif
  15175. message = event|PASS_TO_SYSAPP;
  15176. dParam = *(al_uint32 *)param;
  15177. break;
  15178. case FW_MONITOR_UPDATE_SERVICE:
  15179. message = event;
  15180. break;
  15181. /* remove by qinhe on 2014/02/12 for mantis 18485, unmute need vip notify app */
  15182. /*case FW_MONITOR_PMT_UPDATE:
  15183. message= APP_DVB_GLOBAL_EVENT_SET_UNMUTE|PASS_TO_SYSAPP;
  15184. dParam = *(al_uint32 *)param;
  15185. break;*/
  15186. case FW_MONITOR_SERTYPE_CHANGED:
  15187. message = event|PASS_TO_SYSAPP;
  15188. dParam = *(al_uint32 *)param;
  15189. break;
  15190. #ifdef CONFIG_SUPPORT_PVR
  15191. case FW_MONITOR_REMINDER_EXPIRE:
  15192. {
  15193. al_uint32 TimeInSec = 0;
  15194. AL_Time_t time;
  15195. memset(&time, 0, sizeof(time));
  15196. AL_Time_MjdToYmd(AL_Time_GetRawMjd(),&time.Year, &time.Month, &time.Day);
  15197. AL_Time_GetRawTime(&time.Hour, &time.Min, &time.Sec);
  15198. AL_Time_DateToSecs(&time, &TimeInSec);
  15199. tv_SetBaseTimetoSystem(TimeInSec);
  15200. }
  15201. #ifdef AC_ON_AUTO_GET_TIME
  15202. if (g_fBackgroundGetTime == TRUE)
  15203. {
  15204. APP_WAKEUP_SetBootFlag(FALSE);
  15205. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF);
  15206. }
  15207. #endif
  15208. #ifdef SUPPORT_WAKEUP_TIMER_IN_STANDBY
  15209. APP_TimeUpdateSetFlag(TRUE);
  15210. #endif
  15211. message = APP_DVB_GLOBAL_EVENT_REMINDER_EXPIRE;
  15212. break;
  15213. case FW_MONITOR_REMINDER_TIME_CHANGE:
  15214. {
  15215. al_uint32 TimeInSec = 0;
  15216. AL_Time_t time;
  15217. memset(&time, 0, sizeof(time));
  15218. AL_Time_MjdToYmd(AL_Time_GetRawMjd(),&time.Year, &time.Month, &time.Day);
  15219. AL_Time_GetRawTime(&time.Hour, &time.Min, &time.Sec);
  15220. AL_Time_DateToSecs(&time, &TimeInSec);
  15221. tv_SetBaseTimetoSystem(TimeInSec);
  15222. }
  15223. #ifdef AC_ON_AUTO_GET_TIME
  15224. if (g_fBackgroundGetTime == TRUE)
  15225. {
  15226. APP_WAKEUP_SetBootFlag(FALSE);
  15227. MAINAPP_SendGlobalEvent(UI_EVENT_POWER, AL_POWER_STATE_OFF);
  15228. }
  15229. #endif
  15230. if (param == NULL)
  15231. {
  15232. UMFDBG(0,"[error],%s %d\n",__FUNCTION__,__LINE__);
  15233. }
  15234. dParam =*(al_uint32 *) param;
  15235. message = APP_DVB_GLOBAL_EVENT_REMINDER_TIME_CHANGE | PASS_TO_SYSAPP;
  15236. break;
  15237. #endif
  15238. case FW_SIGNAL_PRESENT:
  15239. case FW_VIP_FINISH:
  15240. #ifdef CONFIG_CI_SUPPORT
  15241. if (g_Audio_Scramble_Counter!=0)
  15242. {
  15243. g_VIP_FINISH_Flg = TRUE;
  15244. g_Audio_Scramble_Counter = 0;
  15245. }
  15246. else
  15247. {
  15248. if (g_VIP_FINISH_Flg==TRUE)
  15249. {
  15250. g_VIP_FINISH_Flg = FALSE;
  15251. }
  15252. }
  15253. #endif
  15254. #ifdef SUPPORT_FACTORY_AUTO_TEST
  15255. if(APP_Factory_GetAutoTestOnOff() == TRUE)
  15256. {
  15257. APP_Source_Type_t eSourType;
  15258. APP_GUIOBJ_Source_GetCurrSource(&eSourType);
  15259. APP_GOBJ_Source_Set_SourceCheck(eSourType);
  15260. }
  15261. #endif
  15262. if (APP_GUIOBJ_DVB_Playback_GetZappingState() == FALSE)
  15263. {
  15264. #ifdef CONFIG_SUPPORT_PVR
  15265. al_uint8 bSignalState = al_false;
  15266. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  15267. if((MID_TSPLParser_GetThreadState() == TRUE)&&(!bSignalState))
  15268. {
  15269. //timeshift, no signal
  15270. }
  15271. else
  15272. #endif
  15273. {
  15274. message = APP_DVB_GLOBAL_EVENT_SET_UNMUTE|PASS_TO_SYSAPP;
  15275. }
  15276. }
  15277. #ifdef CONFIG_QSD
  15278. // To echo message with DTV has signal for chip test using.
  15279. con_dbg_echo('G', 'O');
  15280. con_dbg_echo('O', 'D');
  15281. #endif
  15282. break;
  15283. #ifdef CONFIG_SCART_SUPPORT
  15284. case FW_SCART_INPUTSTATUS_CHANGE:
  15285. #ifdef CONFIG_SUPPORT_PVR
  15286. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC)
  15287. || SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_PLAYINFO))
  15288. {
  15289. break;
  15290. }
  15291. #endif
  15292. dParam = *(UINT32 *)param;
  15293. APP_SCARTIN_Pin8Function(dParam);
  15294. break;
  15295. #endif
  15296. #ifdef SUPPORT_CEC_TV
  15297. case FW_HDMI_PORTSTATUS:
  15298. dParam = *(UINT32 *)param;
  15299. message = APP_DVB_GLOBAL_EVENT_HDMIPORT_STATUS|PASS_TO_SYSAPP;
  15300. break;
  15301. #endif
  15302. #if 0
  15303. case FW_DB_LOAD_DEFAULT:
  15304. message = event|PASS_TO_SYSAPP;
  15305. dParam = *(al_uint32 *)param;
  15306. break;
  15307. #endif
  15308. case FW_AUDIO_HEADPHONE_PLUG_IN:
  15309. message = APP_GLOBAL_EVENT_HEADPHONE_PLUG_IN|PASS_TO_SYSAPP;
  15310. break;
  15311. case FW_AUDIO_HEADPHONE_PLUG_OUT:
  15312. message = APP_GLOBAL_EVENT_HEADPHONE_PLUG_OUT|PASS_TO_SYSAPP;
  15313. break;
  15314. #ifdef CONFIG_QSD
  15315. case FW_QSD_Media_Play:
  15316. dParam = *(UINT32 *)param;
  15317. message = APP_GLOBAL_EVENT_QSD_MEDIA_PLAY|PASS_TO_SYSAPP;
  15318. break;
  15319. case FW_QSD_Source_Set:
  15320. dParam = *(UINT32 *)param;
  15321. message = APP_GLOBAL_EVENT_QSD_SET_SOURCE|PASS_TO_SYSAPP;
  15322. break;
  15323. case FW_QSD_DTV_SetCH:
  15324. dParam = (UINT32)APP_Database_GetHdlByIdx(*(UINT32 *)param);
  15325. message = APP_DVB_GLOBAL_EVENT_ZAPPING|PASS_TO_SYSAPP;
  15326. break;
  15327. #endif
  15328. #ifdef CONFIG_SUPPORT_EWS
  15329. case FW_EWS_REC_ANCM:
  15330. case FW_EWS_FIND_AUD:
  15331. dParam =*(al_uint32 *) param;
  15332. message = FW_EWS_FIND_AUD|PASS_TO_SYSAPP;
  15333. break;
  15334. case FW_EWS_ACTIVE:
  15335. case FW_EWS_INACTIVE:
  15336. case FW_EWS_NON_ANCM:
  15337. message = event|PASS_TO_SYSAPP;
  15338. break;
  15339. #endif
  15340. case FW_USB_PLUGIN:
  15341. break;
  15342. case FW_USB_PLUGOUT:
  15343. break;
  15344. #ifdef CONFIG_HDMI_SUPPORT_MHL
  15345. case FW_HDMI_MHL_CONNECTED:
  15346. dParam = *(UINT32 *)param;
  15347. if(dParam == 1)
  15348. {
  15349. message = DMN_EVENT_MHL_CHANGE_SOURCE|PASS_TO_SYSAPP;
  15350. }
  15351. break;
  15352. #endif
  15353. #ifdef CONFIG_SUPPORT_AUDIO_CODEC_OVERLAY
  15354. case FW_AUDIO_LOADCODEC_OK:
  15355. case FW_AUDIO_LOADCODEC_ERROR:
  15356. message = event|PASS_TO_SYSAPP;
  15357. dParam = *(UINT32 *)param;
  15358. break;
  15359. case FW_AUDIO_LOADCODEC_TYPE:
  15360. {
  15361. UINT16 new_condec = *(UINT32 *)param;
  15362. TVFE_Audio_LOAD_CODEC_t stConfig;
  15363. memset(&stConfig, 0, sizeof(TVFE_Audio_LOAD_CODEC_t));
  15364. stConfig.flag = TVFE_AUDIO_CODEC_FLAG_SET;
  15365. stConfig.new_type = new_condec;
  15366. TVFE_Audio_Load_Codec(&stConfig);
  15367. printf("\n\n[%s:%d] new_condec =========== %d\n\n\n",__FUNCTION__,__LINE__,new_condec);
  15368. }
  15369. break;
  15370. #endif
  15371. default:
  15372. message = 0xffffffff;
  15373. break;
  15374. }
  15375. }
  15376. else
  15377. {
  15378. switch (event)
  15379. {
  15380. default:
  15381. message = 0xffffffff;
  15382. break;
  15383. }
  15384. }
  15385. if (message != 0xffffffff)
  15386. {
  15387. SYSAPP_IF_SendCriticalGlobalEventWithIndex(Index, message, dParam);
  15388. return SP_SUCCESS;
  15389. }
  15390. else
  15391. {
  15392. return SP_ERR_FAILURE;
  15393. }
  15394. }
  15395. void DVBApp_VolumeKeyHandler(UINT32 dMessage, UINT8 IsCECKey)
  15396. {
  15397. UINT8 u8Mute=0;
  15398. al_uint8 bSignalState = al_false;
  15399. if(IsCECKey == TRUE)
  15400. {
  15401. #ifdef SUPPORT_CEC_TV
  15402. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FEATURE, 0,
  15403. sizeof(APP_SETTING_Feature_t), &(g_stFeatureData));
  15404. if (( APP_SWITCH_ON == g_stFeatureData.Enable_HDMILink)
  15405. #ifdef SUPPORT_AMPLIFIER_CONTROL
  15406. &&(APP_SWITCH_ON == g_stFeatureData.AmplifierControl)
  15407. #endif
  15408. &&(APP_HDMILINK_AMPLIFIER == g_stFeatureData.SpeakerPreference) && APP_GUIOBJ_Source_GetAmplifierPort())
  15409. {
  15410. if (CECTV_GetCECEnable()==CECTV_ENABLE && CECTV_GetHDMISystemAudioMode() && APP_Check_CEC_DEVICE_Status())
  15411. {
  15412. if(APP_Get_HDMICEC_AMP_Mute_Status() == TRUE)
  15413. {
  15414. APP_Set_HDMICEC_AMP_Mute_Status(FALSE);
  15415. APP_GUIOBJ_Mute_MuteKeyHandler();
  15416. //CECTV_SendCmd(CECTV_SINGLE_ACT_CMD_KEYPRESS, CECTV_KEY_MUTE<<8|0x05);//Mute Function
  15417. //SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, APP_GUIOBJ_MUTE,APP_INTRA_EVENT_HIDE_MUTE, 0);
  15418. }
  15419. }
  15420. }
  15421. #endif
  15422. }
  15423. else
  15424. {
  15425. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO, 0,
  15426. sizeof(APP_SETTING_UserInfo_t), &(g_stUserInfoData));
  15427. u8Mute = g_stUserInfoData.Mute;
  15428. if (u8Mute == TRUE)
  15429. {
  15430. if(dMessage == UI_EVENT_VOL_UP || IsCECKey == TRUE)
  15431. {
  15432. AL_DVB_Monitor_GetState(AL_DVB_MONITOR_STATE_SIGNAL, &bSignalState);
  15433. if ((bSignalState == AL_DVB_MONITOR_VALUE_TRUE)
  15434. #ifdef CONFIG_SUPPORT_PVR
  15435. || (MID_TSPLParser_GetThreadState())
  15436. #endif
  15437. )
  15438. {
  15439. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_SIGNAL_DETECT, APP_SOURCE_DTV);
  15440. }
  15441. else
  15442. {
  15443. APP_Audio_SetMute(FALSE, TRUE, APP_MUTE_MODE_NO_SIGNALE, APP_SOURCE_DTV);
  15444. }
  15445. g_stUserInfoData.Mute = FALSE;
  15446. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  15447. ITEM_OFFSET(APP_SETTING_UserInfo_t, Mute),
  15448. sizeof(g_stUserInfoData.Mute), &(g_stUserInfoData.Mute));
  15449. #ifdef SUPPORT_STORE_MUTE_FLAG
  15450. AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  15451. ITEM_OFFSET(APP_SETTING_UserInfo_t, Mute),
  15452. sizeof(g_stUserInfoData.Mute));
  15453. #endif
  15454. SYSAPP_GOBJ_SendMsgToSingleGUIObject(SYS_APP_DVB, APP_GUIOBJ_MUTE,APP_INTRA_EVENT_HIDE_MUTE, 0);
  15455. }
  15456. }
  15457. }
  15458. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_NO_SIGNAL))
  15459. {
  15460. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_NO_SIGNAL, UI_EVENT_NULL);
  15461. }
  15462. if (DVBApp_IsPopupExist(PLAYBACK_POPUP_MSG_RADIO_CHANNEL))
  15463. {
  15464. DVBApp_ClosePopup(PLAYBACK_POPUP_MSG_RADIO_CHANNEL, UI_EVENT_NULL);
  15465. }
  15466. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_BANNER))
  15467. {
  15468. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_BANNER);
  15469. }
  15470. #ifdef CONFIG_SUPPORT_PVR
  15471. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO))
  15472. {
  15473. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVRREC_INFO);
  15474. }
  15475. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC))
  15476. {
  15477. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PVR_REC);
  15478. }
  15479. #endif
  15480. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO))
  15481. {
  15482. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, DVB_GUIOBJ_PROGINFO);
  15483. }
  15484. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  15485. {
  15486. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  15487. }
  15488. if(IsCECKey == TRUE
  15489. #ifdef SUPPORT_CEC_TV
  15490. && CECTV_GetHDMISystemAudioMode() && APP_Check_CEC_DEVICE_Status()
  15491. #endif
  15492. )
  15493. {
  15494. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  15495. {
  15496. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  15497. }
  15498. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  15499. {
  15500. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  15501. }
  15502. else
  15503. {
  15504. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME, 0);
  15505. }
  15506. }
  15507. else
  15508. {
  15509. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME))
  15510. {
  15511. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_AMPLIFIERVOLUME);
  15512. }
  15513. if (SYSAPP_GOBJ_GUIObjectExist(SYS_APP_DVB, APP_GUIOBJ_ADJUST))
  15514. {
  15515. SYSAPP_GOBJ_DestroyGUIObject(SYS_APP_DVB, APP_GUIOBJ_ADJUST);
  15516. }
  15517. else
  15518. {
  15519. //Below is CV's spec,pressing Volume key should realize function instead of showing adjust bar only.
  15520. UINT8 u8VolumeIdx = g_stVariationalData.Volume;
  15521. if (dMessage == UI_EVENT_VOL_UP)
  15522. {
  15523. g_stVariationalData.Volume = u8VolumeIdx >= ADJUST_MAX_VALUE ? ADJUST_MAX_VALUE : ++u8VolumeIdx;
  15524. }
  15525. else if (dMessage == UI_EVENT_VOL_DN)
  15526. {
  15527. g_stVariationalData.Volume = u8VolumeIdx <= ADJUST_MIN_VALUE ? ADJUST_MIN_VALUE : --u8VolumeIdx;
  15528. }
  15529. AL_Setting_Read(APP_Data_UserSetting_Handle(), SYS_SET_ID_FACTHOTEL, 0,
  15530. sizeof(APP_SETTING_FactoryHotel_t), &(g_stFactoryHotelData));
  15531. if ((g_stFactoryHotelData.MaxVolume < g_stVariationalData.Volume)
  15532. &&(g_stFactoryHotelData.HotelModeOnOff == 1))
  15533. {
  15534. g_stVariationalData.Volume = g_stFactoryHotelData.MaxVolume;
  15535. }
  15536. APP_Audio_SetVolume((UINT32)g_stVariationalData.Volume);
  15537. AL_Setting_Write(APP_Data_UserSetting_Handle(), SYS_SET_ID_VARIATIONAL,
  15538. ITEM_OFFSET(APP_SETTING_Variational_t, Volume),
  15539. sizeof(g_stVariationalData.Volume), &(g_stVariationalData.Volume));
  15540. //AL_Setting_Store(APP_Data_UserSetting_Handle(), SYS_SET_ID_USERINFO,
  15541. //ITEM_OFFSET(APP_SETTING_UserInfo_t, Volume), sizeof(g_stUserInfoData.Volume));
  15542. SYSAPP_GOBJ_CreateGUIObject_WithPara(SYS_APP_DVB, APP_GUIOBJ_ADJUST, ADJUST_VOLUME);
  15543. }
  15544. }
  15545. }
  15546. Boolean DVBApp_GetUnstableState(void)
  15547. {
  15548. return g_bUnstable;
  15549. }
  15550. void DVBApp_SetUnstableState(Boolean bstate)
  15551. {
  15552. g_bUnstable = bstate;
  15553. }
  15554. Boolean DVBApp_GetFindNewTSIDFlag(void)
  15555. {
  15556. return bFindNewTSID;
  15557. }
  15558. Boolean DVBApp_ClearFindNewTSIDFlag(void)
  15559. {
  15560. bFindNewTSID = FALSE;
  15561. return 0;
  15562. }
  15563. #ifdef CONFIG_SUPPORT_EWS
  15564. al_uint8 DVBApp_GetEWSMode(void)
  15565. {
  15566. return g_EWSMode;
  15567. }
  15568. void DVBApp_ResetEWS(void)
  15569. {
  15570. dvb_printf("\n\n[%s] is called!!!!!!!\n\n", __FUNCTION__);
  15571. DMIOC_SET_EWS_PARAM stEwsParam;
  15572. memset(&stEwsParam, 0, sizeof(DMIOC_SET_EWS_PARAM));
  15573. if (g_EWSMode == TRUE)
  15574. {
  15575. stEwsParam.bActive = FALSE;
  15576. ioctl(dtvdev, DTV_IOCTL_Set_EWS_Data , &stEwsParam);
  15577. }
  15578. g_PrevProgHandle = AL_DB_INVALIDHDL;
  15579. g_EWSMode = FALSE;
  15580. memset(&g_PrevAudioPid, 0, sizeof(DBPIDInfo_t));
  15581. g_PrevAudioPid.usDataPID = DB_DVB_INVALID_PID;
  15582. memset(&g_MonAudioPid, 0, sizeof(DBPIDInfo_t));
  15583. g_MonAudioPid.usDataPID = DB_DVB_INVALID_PID;
  15584. AL_EWS_Monitor_ResetData();
  15585. }
  15586. #endif