欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種狀態(tài)機(jī)、調(diào)度方法、裝置及usb媒體播放控制裝置的制作方法

文檔序號(hào):6378345閱讀:127來源:國知局
專利名稱:一種狀態(tài)機(jī)、調(diào)度方法、裝置及usb媒體播放控制裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明屬于計(jì)算機(jī)應(yīng)用領(lǐng)域,尤其涉及一種狀態(tài)機(jī)、調(diào)度方法、裝置及USB媒體播放控制裝置。
背景技術(shù)
狀態(tài)機(jī)是一種系統(tǒng)調(diào)度的抽象模型,使用有限的狀態(tài)來描述系統(tǒng)的行為,其要素包括狀態(tài)、條件、事件、動(dòng)作和遷移。層次狀態(tài)機(jī)是狀態(tài)機(jī)理論中的一種層次結(jié)構(gòu)模型,各個(gè)狀態(tài)按照樹狀層次結(jié)構(gòu)組織起來,系統(tǒng)根據(jù)層次狀態(tài)機(jī)中所設(shè)置的調(diào)度方法對(duì)事件進(jìn)行處理并通過狀態(tài)遷移實(shí)現(xiàn)系統(tǒng)的調(diào)度?,F(xiàn)有的層次狀態(tài)機(jī)雖然能夠較為有效地進(jìn)行系統(tǒng)的調(diào)度,然而仍存在不少缺陷,如層次狀態(tài)機(jī)中的每個(gè)狀態(tài)都要根據(jù)所有可能的事件建立事件
處理表和事件處理函數(shù),耗費(fèi)大量代碼及存儲(chǔ)空間,例如,狀態(tài)機(jī)共有N個(gè)狀態(tài)和M個(gè)可能的事件,則共需要N*M個(gè)事件處理表,使得事件處理表的規(guī)模過于龐大占用大量存儲(chǔ)空間。此外,現(xiàn)有的層次狀態(tài)機(jī)難以擴(kuò)展,如系統(tǒng)增加一個(gè)狀態(tài),則需要修改所有現(xiàn)有的事件處理表中的狀態(tài)遷移信息,增大了事件處理表的規(guī)模及系統(tǒng)調(diào)度的復(fù)雜度。

發(fā)明內(nèi)容
本發(fā)明實(shí)施例的目的在于提供一種狀態(tài)機(jī)、調(diào)度方法及裝置,旨在解決現(xiàn)有的層級(jí)狀態(tài)機(jī)耗費(fèi)大量代碼及存儲(chǔ)空間且不易擴(kuò)展的問題。另外,本發(fā)明還提出一種USB媒體播放的控制裝置,所述USB播放裝置基于所述的層次狀態(tài)機(jī)與對(duì)應(yīng)的狀態(tài)機(jī)調(diào)度裝置,解決了在資源較小的設(shè)備下控制USB資源播放的問題。本發(fā)明實(shí)施例是這樣實(shí)現(xiàn)的,一種狀態(tài)機(jī),所述狀態(tài)機(jī)為層數(shù)為N的層次狀態(tài)機(jī),所述層次狀態(tài)機(jī)為樹狀結(jié)構(gòu),所述層次狀態(tài)機(jī)中每個(gè)狀態(tài)的數(shù)據(jù)信息包括狀態(tài)特征號(hào)、父狀態(tài)特征號(hào)、與狀態(tài)相關(guān)聯(lián)的事件處理表;所述層次狀態(tài)機(jī)中與每個(gè)狀態(tài)相關(guān)聯(lián)的事件處理表包括該狀態(tài)所需處理的事件的特征號(hào)、該狀態(tài)所需處理的事件所對(duì)應(yīng)的事件處理函數(shù)。本發(fā)明實(shí)施例的另一目的在于提供一種基于所述狀態(tài)機(jī)的調(diào)度方法,所述方法包括根據(jù)接收到的事件的特征號(hào)查找當(dāng)前狀態(tài)及依次追溯當(dāng)前狀態(tài)的父狀態(tài)相關(guān)聯(lián)的事件處理表中是否包括所述事件的特征號(hào);當(dāng)查找到包括所述事件的特征號(hào)的事件處理表時(shí),從該包括所述事件的特征號(hào)的事件處理表中獲取與所述事件對(duì)應(yīng)的事件處理函數(shù)及目標(biāo)狀態(tài);退出當(dāng)前狀態(tài)后執(zhí)行與所述事件對(duì)應(yīng)的事件處理函數(shù)并遷移至目標(biāo)狀態(tài)。本發(fā)明實(shí)施例的另一目的在于提供一種基于所述狀態(tài)機(jī)的調(diào)度裝置,所述裝置包括事件查找模塊,用于根據(jù)接收到的事件的特征號(hào)查找當(dāng)前狀態(tài)及依次追溯當(dāng)前狀態(tài)的父狀態(tài)相關(guān)聯(lián)的事件處理表中是否包括所述事件的特征號(hào);
遷移狀態(tài)信息獲取模塊,用于當(dāng)查找到包括所述事件的特征號(hào)的事件處理表時(shí),從該包括所述事件的特征號(hào)的事件處理表中獲取與所述事件對(duì)應(yīng)的事件處理函數(shù)及目標(biāo)狀態(tài);狀態(tài)遷移模塊,用于退出當(dāng)前狀態(tài)后執(zhí)行與所述事件對(duì)應(yīng)的事件處理函數(shù)并遷移至目標(biāo)狀態(tài)。本發(fā)明實(shí)施例的另一目的在于提供一種基于層次狀態(tài)機(jī)的調(diào)度裝置的USB媒體播放控制裝置,其特征在于,所述的裝置包括第一層狀態(tài)控制模塊,其包括兩個(gè)第二層的受控的子狀態(tài)模塊睡眠控制模塊及開機(jī)控制模塊;設(shè)置在所述開機(jī)控制模塊中的第三層狀態(tài)控制模塊,其包括初始化控制模塊、USB已拔出控制模塊、USB已插入控制模塊; 設(shè)置在USB已插入控制模塊的第四層狀態(tài)控制模塊,其包括無法識(shí)別USB控制模塊、無法讀取文件控制模塊、正在讀取文件控制模塊、讀取文件結(jié)束控制模塊、正在播放控制模塊、停止播放控制模塊;設(shè)置在正在播放控制模塊中的第五層狀態(tài)控制模塊,其包括正常播放控制模塊、掃描播放控制模塊、快進(jìn)播放控制模塊、快退播放控制模塊。在本發(fā)明實(shí)施例中,該層次狀態(tài)機(jī)中的每個(gè)狀態(tài)可以單獨(dú)設(shè)計(jì),每個(gè)狀態(tài)只需在與其相關(guān)聯(lián)的事件處理表中關(guān)注該狀態(tài)所需要處理的事件,而不需要對(duì)所有事件定義對(duì)應(yīng)的處理函數(shù),大大降低了事件處理表的規(guī)模;此外,由于每個(gè)狀態(tài)單獨(dú)管理其所需處理的事件,因而無論狀態(tài)的數(shù)量和層次如何變化,狀態(tài)機(jī)的事件處理引擎始終保持不變,并且系統(tǒng)的狀態(tài)可隨時(shí)根據(jù)需求新增或調(diào)整,不會(huì)影響其他狀態(tài),易于擴(kuò)展和維護(hù)。


圖I是本發(fā)明第一實(shí)施例提供的狀態(tài)機(jī)的狀態(tài)圖;圖2是本發(fā)明第二實(shí)施例提供的基于實(shí)施例一提供的狀態(tài)機(jī)的調(diào)度方法的流程圖;圖3是本發(fā)明第三實(shí)施例提供的基于實(shí)施例一提供的狀態(tài)機(jī)的調(diào)度方法的流程圖;圖4是本發(fā)明第四實(shí)施例提供的基于實(shí)施例一提供的狀態(tài)機(jī)的調(diào)度裝置的結(jié)構(gòu)示意圖;圖5是本發(fā)明第五實(shí)施例提供的基于實(shí)施例四提供的狀態(tài)機(jī)的調(diào)度裝置的USB媒體播放控制裝置的結(jié)構(gòu)示意圖;圖6是本發(fā)明第六實(shí)施例提供的一種USB媒體播放的控制裝置的一實(shí)例的示意具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
為了說明本發(fā)明所述的技術(shù)方案,下面通過具體實(shí)施例來進(jìn)行說明。實(shí)施例一本發(fā)明第一實(shí)施例提供了一種狀態(tài)機(jī),為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。在本發(fā)明實(shí)施例中,首先提供一種層數(shù)為N的層次狀態(tài)機(jī),該層次狀態(tài)機(jī)為樹狀結(jié)構(gòu),每個(gè)狀態(tài)對(duì)應(yīng)樹中的一個(gè)節(jié)點(diǎn),根據(jù)狀態(tài)在樹狀結(jié)構(gòu)中的位置不同,狀態(tài)分為枝節(jié)點(diǎn)狀態(tài)和葉節(jié)點(diǎn)狀態(tài)兩種,如圖I所示為層次狀態(tài)機(jī)的狀態(tài)圖。在圖I中,一共包括四層狀態(tài),其中SI為根狀態(tài),SI的子狀態(tài)包括第二層狀態(tài)的狀態(tài)Sl_l,狀態(tài)Sl_2,狀態(tài)Sl_l的子狀態(tài)包括第三層的狀態(tài)Sl_l_l,狀態(tài)Sl_l_2,第三層
狀態(tài)Sl_l_l的子狀態(tài)包括第四層狀態(tài)Sl_l_l_l,狀態(tài)Sl_l_l_2,狀態(tài)Sl_l_l_3。其他狀態(tài)以此類同,在此不再贅述。其中,該狀態(tài)機(jī)中的每個(gè)狀態(tài)都包括了數(shù)據(jù)信息,每個(gè)狀態(tài)的數(shù)據(jù)信息包括但不限于狀態(tài)特征號(hào)、父狀態(tài)特征號(hào)、與狀態(tài)相關(guān)聯(lián)的事件處理表、狀態(tài)所處的層次(狀態(tài)在狀態(tài)機(jī)中所處的層數(shù))、入口函數(shù)(用于對(duì)狀態(tài)執(zhí)行入口操作的函數(shù))、退出函數(shù)(用于對(duì)狀態(tài)執(zhí)行退出操作的函數(shù))及默認(rèn)子狀態(tài)(狀態(tài)的默認(rèn)子狀態(tài))。同時(shí),每個(gè)狀態(tài)都有一個(gè)與之相關(guān)聯(lián)的事件處理表,每個(gè)事件處理表中包括但不限于該狀態(tài)所需處理的事件的特征號(hào)、該狀態(tài)所需處理的事件所對(duì)應(yīng)的事件處理函數(shù)、目標(biāo)狀態(tài)、狀態(tài)遷移條件及狀態(tài)遷移動(dòng)作在本發(fā)明實(shí)施例中,該層次狀態(tài)機(jī)中的每個(gè)狀態(tài)可以單獨(dú)設(shè)計(jì),每個(gè)狀態(tài)只需在與其相關(guān)聯(lián)的事件處理表中關(guān)注該狀態(tài)所需要處理的事件,而不需要對(duì)所有事件定義對(duì)應(yīng)的處理函數(shù),大大降低了事件處理表的規(guī)模;此外,由于每個(gè)狀態(tài)單獨(dú)管理其所需處理的事件,因而無論狀態(tài)的數(shù)量和層次如何變化,狀態(tài)機(jī)的事件處理引擎始終保持不變,并且系統(tǒng)的狀態(tài)可隨時(shí)根據(jù)需求新增或調(diào)整,不會(huì)影響其他狀態(tài),易于擴(kuò)展和維護(hù)。例如,若系統(tǒng)需要增加一個(gè)獨(dú)立的狀態(tài),則只需添加一個(gè)新狀態(tài),定義其層次、父狀態(tài)、事件處理表等,即可實(shí)現(xiàn)該狀態(tài)的所有邏輯,無需更改狀態(tài)機(jī)的引擎部分。實(shí)施例二 如圖2所示為本發(fā)明第二實(shí)施例提供的基于實(shí)施例一提供的狀態(tài)機(jī)的調(diào)度方法的流程圖,為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。在步驟S201中,狀態(tài)機(jī)接收到事件。在步驟S202中,根據(jù)接收到的事件的特征號(hào)查找當(dāng)前狀態(tài)及依次追溯當(dāng)前狀態(tài)的父狀態(tài)相關(guān)聯(lián)的事件處理表中是否包括接收到的事件的特征號(hào),是則執(zhí)行步驟S203,否則執(zhí)行步驟S205。在本發(fā)明實(shí)施例中,當(dāng)層次狀態(tài)機(jī)接收到事件時(shí),查找當(dāng)前狀態(tài)及依次追溯當(dāng)前狀態(tài)的父狀態(tài)相關(guān)聯(lián)的事件處理表,查找包括接收到的事件的特征號(hào)的事件處理表。具體為,首先查找與當(dāng)前狀態(tài)相關(guān)聯(lián)的事件處理表,若與當(dāng)前狀態(tài)相關(guān)聯(lián)的事件處理表中包括接收到的事件的特征號(hào)則不再繼續(xù)查找;若與當(dāng)前狀態(tài)相關(guān)聯(lián)的事件處理表中不包括接收到的事件的特征號(hào),則繼續(xù)查找當(dāng)前狀態(tài)的父狀態(tài)所關(guān)聯(lián)的事件處理表中是否包括接收到的事件的特征號(hào),若包括則不再繼續(xù)查找,否則再繼續(xù)向上查找當(dāng)前狀態(tài)的父狀態(tài)的父狀態(tài),直到查找與根節(jié)點(diǎn)相關(guān)聯(lián)的事件處理表。在步驟S203中,從包括事件的特征號(hào)的事件處理表中獲取與事件對(duì)應(yīng)的事件處理函數(shù)及目標(biāo)狀態(tài)。在本發(fā)明實(shí)施例中,在依次查找與當(dāng)前狀態(tài)及當(dāng)前狀態(tài)的所有父狀態(tài)相關(guān)聯(lián)的事件處理表的過程中,只要查找到包括事件的特征號(hào)的事件處理表,就停止繼續(xù)查找其他的事件處理表,并從該事件處理表中獲取與事件對(duì)應(yīng)的事件處理函數(shù)及目標(biāo)狀態(tài)。在步驟S204中,判斷是否符合狀態(tài)遷移的條件,是則執(zhí)行步驟S206,否則執(zhí)行步驟 S205。在本發(fā)明實(shí)施例中,用于判斷是否符合狀態(tài)遷移條件的判斷方法由用戶設(shè)計(jì)狀態(tài)時(shí)定義,例如根據(jù)電子設(shè)備控制USB外設(shè)播放,從U盤插入到U盤正常播放,狀態(tài)遷移受用戶的操作定義。在步驟S205中,丟棄接收到的事件。
在本發(fā)明實(shí)施例中,若直到查找到與根節(jié)點(diǎn)相關(guān)聯(lián)的事件處理表都沒有查找到接收到的事件的特征號(hào),則丟棄接收到的事件。在步驟S206中,退出當(dāng)前狀態(tài)后執(zhí)行與所述事件對(duì)應(yīng)的事件處理函數(shù)并遷移至目標(biāo)狀態(tài)。在本發(fā)明實(shí)施例中,查找到與事件對(duì)應(yīng)的事件處理函數(shù)及目標(biāo)狀態(tài)且符合狀態(tài)遷移條件,則退出當(dāng)前狀態(tài),并在執(zhí)行與所述事件對(duì)應(yīng)的事件處理函數(shù)后遷移至目標(biāo)狀態(tài)。在本發(fā)明實(shí)施例中,該層次狀態(tài)機(jī)中的每個(gè)狀態(tài)可以單獨(dú)設(shè)計(jì),每個(gè)狀態(tài)只需在與其相關(guān)聯(lián)的事件處理表中關(guān)注該狀態(tài)所需要處理的事件,而不需要對(duì)所有事件定義對(duì)應(yīng)的處理函數(shù),大大降低了事件處理表的規(guī)模;此外,由于每個(gè)狀態(tài)單獨(dú)管理其所需處理的事件,因而無論狀態(tài)的數(shù)量和層次如何變化,狀態(tài)機(jī)的事件處理引擎始終保持不變,并且系統(tǒng)的狀態(tài)可隨時(shí)根據(jù)需求新增或調(diào)整,不會(huì)影響其他狀態(tài),易于擴(kuò)展和維護(hù)。實(shí)施例三如圖3所示為本發(fā)明第三實(shí)施例提供的基于實(shí)施例一提供的狀態(tài)機(jī)的調(diào)度方法的流程圖,為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。在步驟S301中,狀態(tài)機(jī)接收到事件。在步驟S302中,根據(jù)接收到的事件的特征號(hào)查找當(dāng)前狀態(tài)及依次追溯當(dāng)前狀態(tài)的父狀態(tài)相關(guān)聯(lián)的事件處理表中是否包括接收到的事件的特征號(hào),是則執(zhí)行步驟S303,否則執(zhí)行步驟S305。在步驟S303中,從包括事件的特征號(hào)的事件處理表中獲取與事件對(duì)應(yīng)的事件處理函數(shù)及目標(biāo)狀態(tài)。在步驟S304中,判斷是否符合狀態(tài)遷移的條件,是則執(zhí)行步驟S306,否則執(zhí)行步驟 S305。在步驟S305中,丟棄接收到的事件,在前述步驟中,根據(jù)父節(jié)點(diǎn)追溯與該事件關(guān)聯(lián)的特征號(hào),在該步驟中因?yàn)闆]有找到特征號(hào),故丟棄該事件。在步驟S306中,查找當(dāng)前狀態(tài)與目標(biāo)狀態(tài)的最近共同祖先狀態(tài)。在本發(fā)明實(shí)施例中,查找到當(dāng)前狀態(tài)與目標(biāo)狀態(tài)的最近共同祖先狀態(tài),即在樹狀結(jié)構(gòu)中,當(dāng)前狀態(tài)所處的節(jié)點(diǎn)與目標(biāo)狀態(tài)所處的節(jié)點(diǎn)的最近共同祖先節(jié)點(diǎn)。其中,在樹中查找最近共同祖先節(jié)點(diǎn)的方法可為多種,在此不做限制。在步驟S307中,依次從當(dāng)前狀態(tài)到最近共同祖先狀態(tài)執(zhí)行退出動(dòng)作,并在執(zhí)行與所述事件對(duì)應(yīng)的事件處理函數(shù)后,依次從第一最近共同祖先狀態(tài)到目標(biāo)狀態(tài)執(zhí)行入口動(dòng)作。所述的退出動(dòng)作包括程序清理現(xiàn)場,釋放資源等。在本發(fā)明實(shí)施例中,在查找到最近共同祖先狀態(tài)后,存儲(chǔ)目標(biāo)狀態(tài)到最近共同祖先狀態(tài)的路徑,隨之依次從當(dāng)前狀態(tài)到最近共同祖先狀態(tài)執(zhí)行退出動(dòng)作。當(dāng)執(zhí)行到最近共同祖先狀態(tài)時(shí),執(zhí)行狀態(tài)遷移,根據(jù)所存儲(chǔ)的目標(biāo)狀態(tài)到最近共同祖先狀態(tài)的路徑,在執(zhí)行與事件對(duì)應(yīng)的事件處理函數(shù)后,依次從最近共同祖先狀態(tài)到目標(biāo)狀態(tài)執(zhí)行入口動(dòng)作。最后,在目標(biāo)狀態(tài)執(zhí)行其默認(rèn)子狀態(tài)的入口動(dòng)作。由于目標(biāo)狀態(tài)與當(dāng)前狀態(tài)在樹狀結(jié)構(gòu)的層級(jí)狀態(tài)機(jī)中所處的層數(shù)可能有所不同,因此狀態(tài)的遷移過程可為如下三種。其一,當(dāng)目標(biāo)狀態(tài)與當(dāng)前狀態(tài)處于同一層,則查找當(dāng)前狀態(tài)與目標(biāo)狀態(tài)的最近共同祖先狀態(tài)(此處命名為第一最近共同祖先狀態(tài)),依次從當(dāng)前狀態(tài)到第一最近共同祖先狀態(tài)執(zhí)行退出動(dòng)作,并在執(zhí)行與所述事件對(duì)應(yīng)的事件處理函數(shù)后,依次從第一最近共同祖先
狀態(tài)到目標(biāo)狀態(tài)執(zhí)行入口動(dòng)作。其二,當(dāng)目標(biāo)狀態(tài)與當(dāng)前狀態(tài)未處于同一層且當(dāng)前狀態(tài)的所處的層數(shù)大于目標(biāo)狀態(tài)所處的層數(shù)時(shí),將當(dāng)前狀態(tài)追溯到與目標(biāo)狀態(tài)處于同一層的當(dāng)前狀態(tài)的祖先狀態(tài),并查找所追溯的當(dāng)前狀態(tài)的祖先狀態(tài)與目標(biāo)狀態(tài)的最近共同祖先狀態(tài)(此處命名為第二最近共同祖先狀態(tài)),依次從所追溯的當(dāng)前狀態(tài)的祖先狀態(tài)到第二最近共同祖先狀態(tài)執(zhí)行退出動(dòng)作,并在執(zhí)行與所述事件對(duì)應(yīng)的事件處理函數(shù)后,依次從第二最近共同祖先狀態(tài)到目標(biāo)狀態(tài)執(zhí)行入口動(dòng)作。其三,當(dāng)目標(biāo)狀態(tài)與當(dāng)前狀態(tài)未處于同一層且當(dāng)前狀態(tài)的所處的層數(shù)小于目標(biāo)狀態(tài)所處的層數(shù)時(shí),存儲(chǔ)目標(biāo)狀態(tài)的特征號(hào),將目標(biāo)狀態(tài)追溯到與當(dāng)前狀態(tài)處于同一層的目標(biāo)狀態(tài)的祖先狀態(tài),并查找所追溯的目標(biāo)狀態(tài)的祖先狀態(tài)與當(dāng)前狀態(tài)的最近共同祖先狀態(tài)(此處命名為第三最近共同祖先狀態(tài)),依次從當(dāng)前狀態(tài)到第三最近共同祖先狀態(tài)執(zhí)行退出動(dòng)作,并在執(zhí)行與所述事件對(duì)應(yīng)的事件處理函數(shù)后,依次從第三最近共同祖先狀態(tài)到目標(biāo)狀態(tài)執(zhí)行入口動(dòng)作。實(shí)施例四圖4為本發(fā)明第四實(shí)施例提供的基于實(shí)施例一提供的狀態(tài)機(jī)的調(diào)度裝置的結(jié)構(gòu)示意圖,為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部份。其中事件查找模塊41,用于根據(jù)接收到的事件的特征號(hào)查找當(dāng)前狀態(tài)及依次追溯當(dāng)前狀態(tài)的父狀態(tài)相關(guān)聯(lián)的事件處理表中是否包括接收到的事件的特征號(hào)。遷移狀態(tài)信息獲取模塊42,用于當(dāng)查找到包括所述事件的特征號(hào)的事件處理表時(shí),從該包括所述事件的特征號(hào)的事件處理表中獲取與所述事件對(duì)應(yīng)的事件處理函數(shù)及目標(biāo)狀態(tài)。狀態(tài)遷移條件判斷模塊43,用于判斷是否符合狀態(tài)遷移的條件。在本發(fā)明實(shí)施例中,用于判斷是否符合狀態(tài)遷移條件的判斷方法由用戶設(shè)計(jì)狀態(tài)時(shí)定義,例如根據(jù)電子設(shè)備控制USB外設(shè)播放,從U盤插入到U盤正常播放,狀態(tài)遷移受用戶的操作定義。事件丟棄模塊44,用于當(dāng)事件查找模塊41未查找到包括所述事件特征號(hào)的事件處理表或狀態(tài)遷移條件判斷模塊43判斷不符合狀態(tài)遷移的條件時(shí),丟棄事件。
狀態(tài)遷移模塊45,用于退出當(dāng)前狀態(tài)后執(zhí)行與所述事件對(duì)應(yīng)的事件處理函數(shù)并遷移至目標(biāo)狀態(tài)。 在本發(fā)明實(shí)施例中,所述狀態(tài)遷移模塊45包括共同祖先狀態(tài)查找模塊451,用于查找當(dāng)前狀態(tài)與目標(biāo)狀態(tài)的最近共同祖先狀態(tài)。狀態(tài)遷移子模塊452,用于依次從當(dāng)前狀態(tài)到最近共同祖先狀態(tài)執(zhí)行退出動(dòng)作,并在執(zhí)行與所述事件對(duì)應(yīng)的事件處理函數(shù)后,依次從第一最近共同祖先狀態(tài)到目標(biāo)狀態(tài)執(zhí)行入口動(dòng)作。在本發(fā)明實(shí)施例中,該層次狀態(tài)機(jī)中的每個(gè)狀態(tài)可以單獨(dú)設(shè)計(jì),每個(gè)狀態(tài)只需在與其相關(guān)聯(lián)的事件處理表中關(guān)注該狀態(tài)所需要處理的事件,而不需要對(duì)所有事件定義對(duì)應(yīng)的處理函數(shù),大大降低了事件處理表的規(guī)模;此外,由于每個(gè)狀態(tài)單獨(dú)管理其所需處理的事件,因而無論狀態(tài)的數(shù)量和層次如何變化,狀態(tài)機(jī)的事件處理引擎始終保持不變,并且系統(tǒng) 的狀態(tài)可隨時(shí)根據(jù)需求新增或調(diào)整,不會(huì)影響其他狀態(tài),易于擴(kuò)展和維護(hù)。例如,若系統(tǒng)需要增加一個(gè)獨(dú)立的狀態(tài),則只需添加一個(gè)新狀態(tài),定義其層次、父狀態(tài)、事件處理表等,即可實(shí)現(xiàn)該狀態(tài)的所有邏輯,無需更改狀態(tài)機(jī)的引擎部分。實(shí)施例五圖5為本發(fā)明第五實(shí)施例提供的基于實(shí)施例四提供的狀態(tài)機(jī)的調(diào)度裝置的USB媒體播放控制裝置,為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部份。其中該USB媒體播放控制裝置的根狀態(tài)為第一層狀態(tài)控制模塊1,該第一層狀態(tài)控制模塊I包括兩個(gè)第二層的受控的子狀態(tài)模塊睡眠控制模塊21及開機(jī)控制模塊22。其中睡眠控制模塊21,用于控制USB媒體播放控制裝置處入待機(jī)狀態(tài)。開機(jī)控制模塊22,用于控制USB媒體播放控制裝置處于工作狀態(tài)。其中,設(shè)置在開機(jī)控制模塊22中的第三層狀態(tài)控制模塊包括初始化控制模塊31、USB已拔出控制模塊32、USB已插入控制模塊33 ;其中 初始化控制模塊31,用于初始化USB媒體播放控制裝置;USB已拔出控制模塊32,用于控制USB設(shè)備處于已拔出狀態(tài);USB已插入控制模塊33,用于控制USB設(shè)備處于已插入狀態(tài)。當(dāng)USB設(shè)備處于已插入狀態(tài)時(shí),設(shè)置在USB已插入控制模塊33中的第四層狀態(tài)控制模塊,其包括無法識(shí)別USB控制模塊41、無法讀取文件控制模塊42、正在讀取文件控制模塊43、讀取文件結(jié)束控制模塊44、正在播放控制模塊45、停止播放控制模塊46。其中無法識(shí)別USB控制模塊41,用于當(dāng)系統(tǒng)無法識(shí)別USB設(shè)備時(shí),控制USB媒體播放控制裝置處于無法識(shí)別USB狀態(tài);無法讀取文件控制模塊42,用于當(dāng)系統(tǒng)無法讀取文件時(shí),控制USB媒體播放控制裝置處于無法讀取狀態(tài);正在讀取文件控制模塊43,用于控制USB媒體播放控制裝置處于正在讀取文件狀態(tài);讀取文件結(jié)束控制模塊44,用于當(dāng)讀取文件結(jié)束時(shí),控制USB媒體播放控制裝置處于讀取文件結(jié)束狀態(tài);正在播放控制模塊45,用于控制USB媒體播放控制裝置處于正在播放媒體狀態(tài);停止播放控制模塊46,用于控制USB媒體播放控制裝置處于停止播放媒體狀態(tài)。
在本發(fā)明實(shí)施例中,設(shè)置在正在播放控制模塊45中的第五層狀態(tài)控制模塊包括正常播放控制模塊51、掃描播放控制模塊52、快進(jìn)播放控制模塊53、快退播放控制模塊54。其中正常播放控制模塊51,用于控制USB媒體播放控制裝置處于正常速度播放媒體的狀態(tài);掃描播放控制模塊52,用于控制USB媒體播放控制裝置處于掃描媒體文件后播放的狀態(tài);快進(jìn)播放控制模塊53,用于控制USB媒體播放控制裝置處于快速前進(jìn)播放媒體的狀態(tài);快退播放控制模塊54,用于控制USB媒體播放控制裝置處于快速倒退播放媒體的 狀態(tài)。在本發(fā)明實(shí)施例中,設(shè)置在所述快進(jìn)播放控制模塊53的第六層狀況控制第一模塊,其包括低速快進(jìn)播放控制模塊611、高速快進(jìn)播放控制模塊612、幀掃描快進(jìn)播放控制模塊613 ;其中低速快進(jìn)播放控制模塊611,用于控制USB媒體播放控制裝置處于低速快進(jìn)播放媒體的狀態(tài);高速快進(jìn)播放控制模塊612,用于控制USB媒體播放控制裝置處于高速快進(jìn)播放媒體的狀態(tài);幀掃描快進(jìn)播放控制模塊613,用于控制USB媒體播放控制裝置處于幀掃描快進(jìn)播放媒體的狀態(tài)。設(shè)置在所述快退播放控制模塊54的第六層狀況控制第二模塊,其包括低速快退播放控制模塊621、高速快退播放控制模塊622、幀掃描快退播放控制模塊623。其中低速快退播放控制模塊621,用于控制USB媒體播放控制裝置處于低速快退播放媒體的狀態(tài);高速快退播放控制模塊622,控制USB媒體播放控制裝置處于高速快進(jìn)播放媒體的狀態(tài);幀掃描快退播放控制模塊623,用于控制USB媒體播放控制裝置處于幀掃描快退播放媒體的狀態(tài)。在本發(fā)明實(shí)施例中,USB播放裝置基于所述的層次狀態(tài)機(jī)與對(duì)應(yīng)的狀態(tài)機(jī)調(diào)度裝置,解決了在資源較小的設(shè)備下控制USB資源播放的問題。實(shí)施例六如圖6所示為本發(fā)明第六實(shí)施例提供的一個(gè)在USB(Universal Serial BUS,通用串行總線)媒體播放中應(yīng)用的USB媒體播放的控制方法的示意圖,為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。如圖6所示,該狀態(tài)機(jī)的根狀態(tài)為第一層的狀態(tài)STUSB,它包括兩個(gè)第二層子狀態(tài)睡眠(PWROFF)及開機(jī)(PWRON);開機(jī)(PWRON)狀態(tài)又包括三個(gè)第三層子狀態(tài)初始化(INIT) ,USB 已拔出(PLUG_0UT)、USB 已插入(PLUG_IN) ;USB 已插入(PLUG_IN)狀態(tài)包括六個(gè)第四層子狀態(tài)無法識(shí)別USB (CHKUSB)、無法讀取音樂文件(T0C_ERR、正在讀取音樂文件(READ_T0C)、讀取音樂文件結(jié)束(T0C_END)、停止播放(STOP)、正在播放(PLAY);正在播放(PLAY)狀態(tài)包括四個(gè)第五層子狀態(tài)正常播放(NORMALPLAY)、掃描播放(SCAN)、快進(jìn)播放(FW)、快退播放(BW);快進(jìn)播放(FW)狀態(tài)包括一個(gè)第六層子狀態(tài)高速快進(jìn)(FW_HIGH);快退播放(BW)狀態(tài)包括一個(gè)第六層子狀態(tài)高速快退(BW_HIGH)。每個(gè)狀態(tài)都存儲(chǔ)其父狀態(tài)的特征號(hào)。假如,當(dāng)前狀態(tài)機(jī)處于快進(jìn)播放(FW)狀態(tài)下,收到USB拔出事件(EVENT_PLUG_OUT)時(shí),其調(diào)度流程如下首先,從當(dāng)前快進(jìn)播放(FW)狀態(tài)開始向上逐層追溯快進(jìn)播放(FW)狀態(tài)的父狀態(tài)相關(guān)聯(lián)的事件處理表,查找USB拔出事件(EVENT_PLUG_0UT)的特征號(hào)。因當(dāng)前快進(jìn)播放(Fff)狀態(tài)的事件處理表中不含USB拔出事件(EVENT_PLUG_0UT)的特征號(hào),則查找當(dāng)前狀態(tài)的父狀態(tài),即正在播放(PLAY)狀態(tài),其相關(guān)聯(lián)的事件處理表中仍無USB拔出事件(EVENT_PLUG_0UT)的特征號(hào),繼續(xù)往上查找父狀態(tài)USB已插入(PLUG_IN)狀態(tài),USB已插入(PLUG_IN)狀態(tài)相關(guān)聯(lián)的事件處理表中包括USB拔出事件(EVENT_PLUG_0UT)的特征號(hào),且由該事件處理表中獲知事件處理的目標(biāo)狀態(tài)為USB已拔出(PLUG_0UT)狀態(tài),跳轉(zhuǎn)動(dòng)作為Action。 緊接著,查找事件處理的目標(biāo)狀態(tài)與當(dāng)前狀態(tài)的最近共同祖先狀態(tài)。由于當(dāng)前狀態(tài)快進(jìn)播放(FW)狀態(tài)處于第五層,而目標(biāo)狀態(tài)USB已拔出(PLUG_0UT)狀態(tài)處于第三層,因此快進(jìn)播放(FW)狀態(tài)開始往上追溯至與USB已拔出(PLUG_0UT)狀態(tài)同一層的祖先狀態(tài),即USB已插入(PLUG_IN)狀態(tài)。同時(shí)將目標(biāo)狀態(tài)USB已拔出(PLUG_0UT)狀態(tài)的特征號(hào)入棧,比較USB已插入(PLUG_IN)狀態(tài)與USB已拔出(PLUG_0UT)狀態(tài)的父狀態(tài),都是開機(jī)(PWR0N)狀態(tài),則開機(jī)(PffRON)狀態(tài)即為當(dāng)前狀態(tài)與目標(biāo)狀態(tài)的最近共同祖先狀態(tài)。執(zhí)行從源狀態(tài)至最近共同祖先狀態(tài)的退出動(dòng)作后,執(zhí)行事件處理的跳轉(zhuǎn)動(dòng)作Action,再執(zhí)行從最近共同祖先狀態(tài)至目標(biāo)狀態(tài)的出棧操作及PLUG_0UT狀態(tài)的入口動(dòng)作(Entry),即完成了整個(gè)USB拔出事件(EVENT_PLUG_0UT)的處理流程。本領(lǐng)域普通技術(shù)人員可以理解,實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以在存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,所述的存儲(chǔ)介質(zhì),如R0M/RAM、磁盤、光盤等。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包括在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種狀態(tài)機(jī),其特征在于,所述狀態(tài)機(jī)為層數(shù)為N的層次狀態(tài)機(jī),所述層次狀態(tài)機(jī)為樹狀結(jié)構(gòu),所述層次狀態(tài)機(jī)中每個(gè)狀態(tài)的數(shù)據(jù)信息包括狀態(tài)特征號(hào)、父狀態(tài)特征號(hào)、與狀態(tài)相關(guān)聯(lián)的事件處理表;所述層次狀態(tài)機(jī)中與每個(gè)狀態(tài)相關(guān)聯(lián)的事件處理表包括該狀態(tài)所需處理的事件的特征號(hào)、該狀態(tài)所需處理的事件所對(duì)應(yīng)的事件處理函數(shù)。
2.如權(quán)利要求I所述的狀態(tài)機(jī),其特征在于,所述層次狀態(tài)機(jī)中每個(gè)狀態(tài)的數(shù)據(jù)信息還包括狀態(tài)所處的層次、入口函數(shù)、退出函數(shù)及默認(rèn)子狀態(tài);所述層次狀態(tài)機(jī)中與每個(gè)狀態(tài)相關(guān)聯(lián)的事件處理表還包括狀態(tài)遷移條件、狀態(tài)遷移動(dòng)作及目標(biāo)狀態(tài)。
3.一種基于權(quán)利要求I或2所述的狀態(tài)機(jī)的調(diào)度方法,其特征在于,所述方法包括 根據(jù)接收到的事件的特征號(hào)查找當(dāng)前狀態(tài)及依次追溯當(dāng)前狀態(tài)的父狀態(tài)相關(guān)聯(lián)的事件處理表中是否包括所述事件的特征號(hào); 當(dāng)查找到包括所述事件的特征號(hào)的事件處理表時(shí),從該包括所述事件的特征號(hào)的事件處理表中獲取與所述事件對(duì)應(yīng)的事件處理函數(shù)及目標(biāo)狀態(tài); 退出當(dāng)前狀態(tài)后執(zhí)行所述事件處理函數(shù)并遷移至目標(biāo)狀態(tài)。
4.如權(quán)利要求3所述的方法,其特征在于,所述根據(jù)接收到的事件的特征號(hào)依次查找與當(dāng)前狀態(tài)及當(dāng)前狀態(tài)的所有父狀態(tài)相關(guān)聯(lián)的事件處理表中是否包括所述事件的特征號(hào)之后,還包括 當(dāng)未查找到包括所述事件特征號(hào)的事件處理表時(shí),丟棄所述事件。
5.如權(quán)利要求3所述的方法,其特征在于,所述退出當(dāng)前狀態(tài)后執(zhí)行所述事件處理函數(shù)并遷移至目標(biāo)狀態(tài)包括 查找當(dāng)前狀態(tài)與目標(biāo)狀態(tài)的最近共同祖先狀態(tài); 依次從當(dāng)前狀態(tài)到最近共同祖先狀態(tài)執(zhí)行退出動(dòng)作,并在執(zhí)行與所述事件對(duì)應(yīng)的事件處理函數(shù)后,依次從第一最近共同祖先狀態(tài)到目標(biāo)狀態(tài)執(zhí)行入口動(dòng)作。
6.如權(quán)利要求3所述的方法,其特征在于,所述退出當(dāng)前狀態(tài)后執(zhí)行與所述事件對(duì)應(yīng)的事件處理函數(shù)并遷移至目標(biāo)狀態(tài)之前,所述方法還包括 判斷是否符合狀態(tài)遷移的條件; 是則退出當(dāng)前狀態(tài)后執(zhí)行與所述事件對(duì)應(yīng)的事件處理函數(shù)并遷移至目標(biāo)狀態(tài); 否則丟棄所述事件。
7.一種基于權(quán)利要求I或2所述的狀態(tài)機(jī)的調(diào)度裝置,其特征在于,所述裝置包括 事件查找模塊,用于根據(jù)接收到的事件的特征號(hào)查找當(dāng)前狀態(tài)及依次追溯當(dāng)前狀態(tài)的父狀態(tài)相關(guān)聯(lián)的事件處理表中是否包括所述事件的特征號(hào); 遷移狀態(tài)信息獲取模塊,用于當(dāng)查找到包括所述事件的特征號(hào)的事件處理表時(shí),從該包括所述事件的特征號(hào)的事件處理表中獲取與所述事件對(duì)應(yīng)的事件處理函數(shù)及目標(biāo)狀態(tài); 狀態(tài)遷移模塊,用于退出當(dāng)前狀態(tài)后執(zhí)行所述事件處理函數(shù)并遷移至目標(biāo)狀態(tài)。
8.如權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括 狀態(tài)遷移條件判斷模塊,用于判斷是否符合狀態(tài)遷移的條件; 事件丟棄模塊,用于當(dāng)事件查找模塊未查找到包括所述事件特征號(hào)的事件處理表或狀態(tài)遷移條件判斷模塊判斷不符合狀態(tài)遷移的條件時(shí),丟棄事件。
9.如權(quán)利要求7所述的裝置,其特征在于,所述狀態(tài)遷移模塊包括共同祖先狀態(tài)查找模塊,用于查找當(dāng)前狀態(tài)與目標(biāo)狀態(tài)的最近共同祖先狀態(tài);狀態(tài)遷移子模塊,用于依次從當(dāng)前狀態(tài)到最近共同祖先狀態(tài)執(zhí)行退出動(dòng)作,并在執(zhí)行與所述事件對(duì)應(yīng)的事件處理函數(shù)后,依次從第一最近共同祖先狀態(tài)到目標(biāo)狀態(tài)執(zhí)行入口動(dòng)作。
10.一種基于權(quán)利要求7所述的層次狀態(tài)機(jī)的調(diào)度裝置的USB媒體播放控制裝置,其特征在于,所述的裝置包括第一層狀態(tài)控制模塊,其包括兩個(gè)第二層的受控的子狀態(tài)模塊睡眠控制模塊及開機(jī)控制模塊;設(shè)置在所述開機(jī)控制模塊中的第三層狀態(tài)控制模塊,其包括初始化控制模塊、USB已拔出控制模塊、USB已插入控制模塊;設(shè)置在USB已插入控制模塊的第四層狀態(tài)控制模塊,其包括無法識(shí)別USB控制模塊、無法讀取文件控制模塊、正在讀取文件控制模塊、讀取文件結(jié)束控制模塊、正在播放控制模塊、停止播放控制模塊;設(shè)置在正在播放控制模塊中的第五層狀態(tài)控制模塊,其包括正常播放控制模塊、掃描播放控制模塊、快進(jìn)播放控制模塊、快退播放控制模塊。
11.如權(quán)利要求10所述的播放控制裝置,其特征在于,還包括設(shè)置在所述快進(jìn)播放控制模塊的第六層狀況控制第一模塊,其包括低速快進(jìn)播放控制模塊、高速快進(jìn)播放控制模塊、幀掃描快進(jìn)播放控制模塊;設(shè)置在所述快退播放控制模塊的第六層狀況控制第二模塊,其包括低速快退播放控制模塊、高速快退播放控制模塊、幀掃描快退播放控制模塊。
全文摘要
本發(fā)明適用于計(jì)算機(jī)應(yīng)用領(lǐng)域,提供了一種狀態(tài)機(jī)、調(diào)度方法、裝置及USB媒體播放控制裝置,狀態(tài)機(jī)為層次狀態(tài)機(jī),其每個(gè)狀態(tài)的數(shù)據(jù)信息包括狀態(tài)特征號(hào)、父狀態(tài)特征號(hào)、與狀態(tài)相關(guān)聯(lián)的事件處理表;所述事件處理表包括該狀態(tài)所需處理的事件的特征號(hào)、該狀態(tài)所需處理的事件所對(duì)應(yīng)的事件處理函數(shù)。所述基于層次狀態(tài)機(jī)的調(diào)度方法包括根據(jù)接收到的事件的特征號(hào)查找當(dāng)前狀態(tài)及依次追溯當(dāng)前狀態(tài)的父狀態(tài)相關(guān)聯(lián)的事件處理表中是否包括事件的特征號(hào);當(dāng)查找到包括事件的特征號(hào)的事件處理表時(shí),從該事件處理表中獲取與事件對(duì)應(yīng)的事件處理函數(shù)及目標(biāo)狀態(tài);退出當(dāng)前狀態(tài)后執(zhí)行事件處理函數(shù)并遷移至目標(biāo)狀態(tài),大大降低了事件處理表的規(guī)模且易于擴(kuò)展和維護(hù)。
文檔編號(hào)G06F9/46GK102929697SQ20121037871
公開日2013年2月13日 申請(qǐng)日期2012年10月9日 優(yōu)先權(quán)日2012年10月9日
發(fā)明者熊整文, 侯正華 申請(qǐng)人:Tcl集團(tuán)股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
益阳市| 茶陵县| 山东省| 兰州市| 保康县| 昌邑市| 洪湖市| 张北县| 泾川县| 南昌县| 浦北县| 环江| 郓城县| 泸水县| 互助| 如皋市| 宁河县| 五常市| 株洲县| 塔城市| 万全县| 汽车| 威信县| 赤水市| 石渠县| 清徐县| 文昌市| 遵化市| 富顺县| 贵溪市| 临洮县| 神农架林区| 伊宁市| 顺昌县| 莲花县| 大宁县| 綦江县| 江孜县| 开化县| 哈巴河县| 建始县|