本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種機(jī)頂盒升級方法及裝置。
背景技術(shù):
升級功能主要用于修復(fù)之前軟件的bug、增加新的功能,是機(jī)頂盒的必備功能。
現(xiàn)有的機(jī)頂盒的開機(jī)流程大體如下:開機(jī)后判斷是否滿足升級條件,若不滿足,則直接進(jìn)入應(yīng)用播放電視;若滿足,則會重啟,進(jìn)入loader進(jìn)行升級。若升級成功,則機(jī)頂盒重啟,重新走開機(jī)流程,因?yàn)榍懊嫔壋晒α?,這次不滿足升級條件,直接進(jìn)入應(yīng)用播放電視;若升級失敗了,則機(jī)頂盒重啟,重新走開機(jī)流程。
當(dāng)用戶家里的機(jī)頂盒無法完成升級過程時,就會進(jìn)入:重啟進(jìn)入loader升級---->升級失敗--->重啟進(jìn)入loader升級---->升級失敗--->......這樣的死循環(huán)中,導(dǎo)致用戶無法收看電視,嚴(yán)重影響用戶的使用體驗(yàn),易引起用戶投訴運(yùn)營商。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種機(jī)頂盒升級方法及裝置,避免機(jī)頂盒升級失敗后無法收看電視,提高用戶使用體驗(yàn)。
為解決上述技術(shù)問題,本發(fā)明采用下述技術(shù)方案予以實(shí)現(xiàn):
本發(fā)明提出了一種機(jī)頂盒升級方法,所述方法包括:
開機(jī)后,啟動激活狀態(tài)的應(yīng)用分區(qū)內(nèi)的主程序;
判斷是否滿足升級條件;
若是,則創(chuàng)建后臺升級任務(wù);
所述后臺升級任務(wù)下載升級數(shù)據(jù)至未激活狀態(tài)的備份應(yīng)用分區(qū);
判斷升級是否成功;
若是,將原未激活狀態(tài)的備份應(yīng)用分區(qū)修改為激活狀態(tài),將原激活狀態(tài)的應(yīng)用分區(qū)修改為未激活狀態(tài),作為備份應(yīng)用分區(qū)。
進(jìn)一步的,所述判斷是否滿足升級條件,具體包括:
接收升級描述文件;
解析升級描述文件里的硬件版本、廠商id、升級序列號范圍;
比較所述硬件版本、廠商id是否均與本機(jī)一致;
若是,判斷本機(jī)序列號是否在所述升級序列號范圍之內(nèi);
若是,判斷本機(jī)軟件版本是否需要升級。
又進(jìn)一步的,所述判斷本機(jī)軟件版本是否需要升級,具體包括:判斷本機(jī)版本是否低于升級描述文件里的軟件版本;若是,則本機(jī)軟件版本需要升級。
更進(jìn)一步的,在升級成功后,彈出升級成功提示框,并由用戶選擇是否立即重啟。
再進(jìn)一步的,在升級失敗后,彈出升級失敗提示框,升級任務(wù)結(jié)束。
本發(fā)明還提出了一種機(jī)頂盒升級裝置,所述裝置包括:啟動模塊,用于開機(jī)后,啟動激活狀態(tài)的應(yīng)用分區(qū)內(nèi)的主程序;條件判斷模塊,用于判斷是否滿足升級條件;創(chuàng)建模塊,用于創(chuàng)建后臺升級任務(wù);下載模塊,用于后臺升級任務(wù)下載升級數(shù)據(jù)至未激活狀態(tài)的備份應(yīng)用分區(qū);成功判斷模塊,用于判斷升級是否成功;狀態(tài)更換模塊,用于將原未激活狀態(tài)的備份應(yīng)用分區(qū)修改為激活狀態(tài),將原激活狀態(tài)的應(yīng)用分區(qū)修改為未激活狀態(tài),作為備份應(yīng)用分區(qū)。
進(jìn)一步的,所述條件判斷模塊包括:接收單元,用于接收升級描述文件;解析單元,用于解析升級描述文件里的硬件版本、廠商id、升級序列號范圍;比較單元,用于比較所述硬件版本、廠商id是否均與本機(jī)一致;序列號判斷單元,用于判斷本機(jī)序列號是否在所述升級序列號范圍之內(nèi);軟件版本判斷單元,用于判斷本機(jī)軟件版本是否需要升級。
又進(jìn)一步的,所述軟件版本判斷單元具體用于:判斷本機(jī)版本是否低于升級描述文件里的軟件版本;若是,則本機(jī)軟件版本需要升級。
更進(jìn)一步的,所述裝置還包括:成功提示模塊,用于在升級成功后,彈出升級成功提示框,并由用戶選擇是否立即重啟。
再進(jìn)一步的,所述裝置還包括:失敗提示模塊,用于在升級失敗后,彈出升級失敗提示框,升級任務(wù)結(jié)束。
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)和積極效果是:本發(fā)明的機(jī)頂盒升級方法及裝置,開機(jī)后,啟動激活狀態(tài)的應(yīng)用分區(qū)內(nèi)的主程序;判斷是否滿足升級條件;若是,則創(chuàng)建后臺升級任務(wù);后臺升級任務(wù)下載升級數(shù)據(jù)至未激活狀態(tài)的備份應(yīng)用分區(qū);判斷升級是否成功;若是,將原未激活狀態(tài)的備份應(yīng)用分區(qū)修改為激活狀態(tài),將原激活狀態(tài)的應(yīng)用分區(qū)修改為未激活狀態(tài),作為備份應(yīng)用分區(qū);因此,在后臺升級過程中,用戶可正常收看電視,避免升級失敗導(dǎo)致的無法正常收看電視的現(xiàn)象的發(fā)生,提高用戶使用體驗(yàn),降低用戶投訴,提高了市場競爭力。
結(jié)合附圖閱讀本發(fā)明的具體實(shí)施方式后,本發(fā)明的其他特點(diǎn)和優(yōu)點(diǎn)將變得更加清楚。
附圖說明
圖1是本發(fā)明提出的機(jī)頂盒升級方法的一個實(shí)施例的流程圖;
圖2是圖1中判斷是否滿足升級條件的流程圖;
圖3是本發(fā)明提出的機(jī)頂盒升級裝置的一個實(shí)施例的結(jié)構(gòu)示意圖;
圖4是圖3中條件判斷模塊的結(jié)構(gòu)示意圖。
具體實(shí)施方式
本實(shí)施例的機(jī)頂盒升級方法及裝置,開機(jī)后,啟動激活狀態(tài)的應(yīng)用分區(qū)內(nèi)的主程序;在滿足升級條件時,創(chuàng)建后臺升級任務(wù),下載升級數(shù)據(jù)至未激活狀態(tài)的備份應(yīng)用分區(qū),且啟動電視播放程序,正常播放電視;在升級成功后,更改兩個應(yīng)用分區(qū)的激活狀態(tài),在升級過程中,用戶可正常收看電視,避免升級失敗導(dǎo)致的無法正常收看電視的現(xiàn)象的發(fā)生,提高用戶使用體驗(yàn),降低用戶投訴。
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下將結(jié)合附圖和實(shí)施例,對本發(fā)明作進(jìn)一步詳細(xì)說明。
本實(shí)施例的機(jī)頂盒升級方法具體包括下述步驟,參見圖1所示。
在機(jī)頂盒的flash中包括三個分區(qū):uboot分區(qū)、激活狀態(tài)的應(yīng)用分區(qū)、未激活狀態(tài)的備份應(yīng)用分區(qū),即有兩個應(yīng)用分區(qū),一個是激活狀態(tài),一個是未激活狀態(tài)。
步驟s0:機(jī)頂盒上電開機(jī)。
機(jī)頂盒上電開機(jī),啟動uboot,引導(dǎo)機(jī)頂盒啟動。
步驟s1:啟動激活狀態(tài)的應(yīng)用分區(qū)內(nèi)的主程序。
步驟s2:判斷是否滿足升級條件。
判斷是否滿足升級條件的具體步驟如下,參見圖2所示。
步驟s21:接收升級描述文件。
接收電視運(yùn)營商前端網(wǎng)絡(luò)發(fā)送的升級描述文件。
步驟s22:解析升級描述文件里的硬件版本、廠商id、升級序列號范圍。
步驟s23:比較所述硬件版本、廠商id是否均與本機(jī)一致。
比較升級描述文件里的硬件版本與本機(jī)的硬件版本是否一致以及升級描述文件里的廠商id與本機(jī)的廠商id是否一致。
若是,即升級描述文件里的硬件版本、廠商id均與本機(jī)一致,執(zhí)行步驟s24。
步驟s24:判斷本機(jī)序列號是否在所述升級序列號范圍之內(nèi)。
判斷本機(jī)序列號是否在升級描述文件里的升級序列號范圍之內(nèi)。
若是,則執(zhí)行步驟s25。
步驟s25:判斷本機(jī)軟件版本是否需要升級。
在該步驟中,首先解析出升級描述文件里的軟件版本,然后判斷本機(jī)版本是否低于升級描述文件里的軟件版本,若是,則本機(jī)版本滿足升級條件,則執(zhí)行步驟s3。
若否,則本機(jī)版本不滿足升級條件,主程序啟動電視播放程序,進(jìn)入正常播放電視模式。
步驟s3:創(chuàng)建后臺升級任務(wù)。
主程序創(chuàng)建后臺升級任務(wù),用于后臺下載升級數(shù)據(jù)。
步驟s4:啟動電視播放程序。
在本實(shí)施例中,機(jī)頂盒具有雙高頻頭,其中一個高頻頭用于接收升級數(shù)據(jù),另一個高頻頭用于正常的電視接收。
如果滿足升級條件,則主程序創(chuàng)建后臺升級任務(wù),用于后臺下載升級數(shù)據(jù),然后,主程序啟動電視播放程序,進(jìn)入正常播放電視模式,電視播放程序正常響應(yīng)用戶的切臺、音量加減等操作,滿足用戶收看電視的需求,使用戶正常觀看電視節(jié)目,期間,后臺升級任務(wù)下載升級數(shù)據(jù)。即,在正常播放電視的同時,后臺升級任務(wù)下載升級數(shù)據(jù)。
步驟s5:后臺升級任務(wù)下載升級數(shù)據(jù)至未激活狀態(tài)的備份應(yīng)用分區(qū)。
在用戶正常收看電視的同時,后臺升級任務(wù)使用高頻頭鎖定播發(fā)升級流的頻點(diǎn),通過升級描述文件里的升級流pid過濾出升級數(shù)據(jù),把升級數(shù)據(jù)下載到未激活狀態(tài)的備份應(yīng)用分區(qū)中。當(dāng)然,先對未激活狀態(tài)的備份應(yīng)用分區(qū)進(jìn)行擦除,然后再寫入升級數(shù)據(jù)。
步驟s6:判斷升級是否成功。
在升級數(shù)據(jù)下載過程中可能出現(xiàn)斷電或下載的數(shù)據(jù)錯誤等問題,因此需要對下載下來的升級數(shù)據(jù)進(jìn)行校驗(yàn),以判斷升級是否成功。
具體來說,升級數(shù)據(jù)下載完成后,對下載下來的升級數(shù)據(jù)進(jìn)行校驗(yàn),計(jì)算出校驗(yàn)碼,并與升級數(shù)據(jù)內(nèi)存儲的校驗(yàn)碼進(jìn)行比較。
若不一致,說明下載的升級數(shù)據(jù)錯誤,則升級失敗,執(zhí)行步驟s7。
若一致,說明下載的升級數(shù)據(jù)完整正確,則升級成功,執(zhí)行步驟s8。
數(shù)據(jù)校驗(yàn)方法有多種,如crc校驗(yàn)方法等,此處不再贅述。
步驟s7:彈出升級失敗提示框,升級任務(wù)結(jié)束。
升級失敗后,為了告知用戶,彈出提示框“本次升級失敗,下次開機(jī)時將再次進(jìn)行升級”,升級任務(wù)結(jié)束。
在升級失敗時,不改變應(yīng)用分區(qū)的激活狀態(tài),保證下次開機(jī)可以正常啟動電視播放程序并再次進(jìn)行升級。
步驟s8:將原未激活狀態(tài)的備份應(yīng)用分區(qū)修改為激活狀態(tài),將原激活狀態(tài)的應(yīng)用分區(qū)修改為未激活狀態(tài),作為備份應(yīng)用分區(qū)。
升級成功后,將原未激活狀態(tài)的備份應(yīng)用分區(qū)修改為激活狀態(tài),作為應(yīng)用分區(qū);將原激活狀態(tài)的應(yīng)用分區(qū)修改為未激活狀態(tài),作為備份應(yīng)用分區(qū)。而且,提升本機(jī)的軟件版本到升級描述文件里的軟件版本。
本次升級成功后,重啟開機(jī)時,進(jìn)入激活狀態(tài)的應(yīng)用分區(qū),啟動新的升級后的程序。
步驟s9:彈出升級成功提示框。
升級成功后,為了告知用戶,彈出提示框“升級成功”,通知用戶已經(jīng)升級成功,升級任務(wù)結(jié)束。
步驟s10:用戶選擇是否立即重啟。
升級成功后,由用戶選擇是否立即重啟,
若是,則返回步驟s0。
若否,則下次重啟。
本實(shí)施例的機(jī)頂盒升級方法,開機(jī)后,啟動激活狀態(tài)的應(yīng)用分區(qū)內(nèi)的主程序;判斷是否滿足升級條件;若是,則創(chuàng)建后臺升級任務(wù),且啟動電視播放程序,電視播放程序正常響應(yīng)用戶的切臺、音量加減等操作,滿足用戶收看電視的需求,期間后臺升級任務(wù)下載升級數(shù)據(jù)至未激活狀態(tài)的備份應(yīng)用分區(qū);判斷升級是否成功;若是,將原未激活狀態(tài)的備份應(yīng)用分區(qū)修改為激活狀態(tài),將原激活狀態(tài)的應(yīng)用分區(qū)修改為未激活狀態(tài),作為備份應(yīng)用分區(qū);因此,在后臺升級過程中,用戶可正常收看電視,避免升級失敗導(dǎo)致的無法正常收看電視的現(xiàn)象的發(fā)生,提高用戶使用體驗(yàn),降低用戶投訴,提高了市場競爭力。
在本實(shí)施例中,當(dāng)下載數(shù)據(jù)過程中斷電或者下載的數(shù)據(jù)錯誤無法通過校驗(yàn)時,不改變應(yīng)用分區(qū)的激活狀態(tài),保證下次開機(jī)可以正常啟動電視播放程序并再次進(jìn)行升級。當(dāng)本次升級成功后,下次開機(jī)后已經(jīng)是新的程序,相比原有進(jìn)入loader升級的方法,減少了1次機(jī)頂盒重啟的過程。
本實(shí)施例還提出了一種機(jī)頂盒升級裝置,該裝置主要包括啟動模塊、條件判斷模塊、創(chuàng)建模塊、播放模塊、下載模塊、成功判斷模塊、狀態(tài)更換模塊等,參見圖3所示。
啟動模塊,用于開機(jī)后,啟動激活狀態(tài)的應(yīng)用分區(qū)內(nèi)的主程序。
條件判斷模塊,用于判斷是否滿足升級條件。
創(chuàng)建模塊,用于創(chuàng)建后臺升級任務(wù)。
播放模塊,用于啟動電視播放程序。
下載模塊,用于后臺升級任務(wù)下載升級數(shù)據(jù)至未激活狀態(tài)的備份應(yīng)用分區(qū)。
成功判斷模塊,用于判斷升級是否成功。
狀態(tài)更換模塊,用于將原未激活狀態(tài)的備份應(yīng)用分區(qū)修改為激活狀態(tài),將原激活狀態(tài)的應(yīng)用分區(qū)修改為未激活狀態(tài),作為備份應(yīng)用分區(qū)。
所述條件判斷模塊主要包括接收單元、解析單元、比較單元、序列號判斷單元、軟件版本判斷單元等,參見圖4所示。
接收單元,用于接收升級描述文件。
解析單元,用于解析升級描述文件里的硬件版本、廠商id、升級序列號范圍。
比較單元,用于比較所述硬件版本、廠商id是否均與本機(jī)一致。
序列號判斷單元,用于判斷本機(jī)序列號是否在所述升級序列號范圍之內(nèi)。
軟件版本判斷單元,用于判斷本機(jī)軟件版本是否需要升級。
所述軟件版本判斷單元具體用于:判斷本機(jī)版本是否低于升級描述文件里的軟件版本;若是,則本機(jī)軟件版本需要升級。
所述裝置還包括成功提示模塊,用于在升級成功后,彈出升級成功提示框,并由用戶選擇是否立即重啟。
所述裝置還包括失敗提示模塊,用于在升級失敗后,彈出升級失敗提示框,升級任務(wù)結(jié)束。
具體的機(jī)頂盒升級裝置的工作過程,已經(jīng)在上述機(jī)頂盒升級方法中詳述,此處不予贅述。
本實(shí)施例的機(jī)頂盒升級裝置,開機(jī)后,啟動激活狀態(tài)的應(yīng)用分區(qū)內(nèi)的主程序;判斷是否滿足升級條件;若是,則創(chuàng)建后臺升級任務(wù),且啟動電視播放程序;后臺升級任務(wù)下載升級數(shù)據(jù)至未激活狀態(tài)的備份應(yīng)用分區(qū);判斷升級是否成功;若是,將原未激活狀態(tài)的備份應(yīng)用分區(qū)修改為激活狀態(tài),將原激活狀態(tài)的應(yīng)用分區(qū)修改為未激活狀態(tài),作為備份應(yīng)用分區(qū);因此,在后臺升級過程中,用戶可正常收看電視,避免升級失敗導(dǎo)致的無法正常收看電視的現(xiàn)象的發(fā)生,提高用戶使用體驗(yàn),降低用戶投訴,提高了市場競爭力。
以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其進(jìn)行限制;盡管參照前述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,對于本領(lǐng)域的普通技術(shù)人員來說,依然可以對前述實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明所要求保護(hù)的技術(shù)方案的精神和范圍。