特征描述符中,并且可以向主機計算設備指示:首選的一組附加特征描述符應當被請求用于所述設備的枚舉。
[0037]除了上述的描述符類型和變例以外,這些擴展描述符可以被擴展到其它類型的變量特征。例如,在某些實施例中,描述符可以根據(jù)主機計算設備的計算結(jié)構(gòu)(例如,主機設備是基于x86的還是基于ARM的計算設備)設置不同的操作系統(tǒng)設定或使用不同的首選配置。例如,盡管在x86主機系統(tǒng)中可以裝載一個或多個驅(qū)動器,然而在平板電腦、移動電話、或其它基于ARM的主機系統(tǒng)中,描述符可以提供到可下載的應用的鏈接,其提供設備的預期的USB連接性功能性。也可以使用其它描述符變例,諸如指示在擴展能力描述符內(nèi)的、而不是在一個或多個擴展描述符中的特定的平臺結(jié)構(gòu)。
[0038]還應當指出,根據(jù)可供使用的描述符,各種操作系統(tǒng)值和能力可以取決于主機系統(tǒng)的特定的操作系統(tǒng)被設置,而不需要從設置信息文件(即,“INF”文件)或單獨的更新文件提供的任何設定,由此改進設備的“即插即用”功能性和當該設備被與不同類型的主機系統(tǒng)使用時增強USB設備的操作的定制的量。另外,這里提供的擴展能力描述符不干擾現(xiàn)有的、限于按功能(即,按接口)基礎的和導致某些設備兼容性問題的擴展能力描述符功能性。實施支持本公開內(nèi)容的擴展描述符的操作系統(tǒng)的主機設備因此將為包括那些以前的類型的描述符的設備提供后向兼容性以及與它們互連到的USB設備的改進的兼容性和其定制。
[0039]現(xiàn)在參照圖7,顯示了擴展能力描述符700的示例性邏輯布局。擴展能力描述符700可用于允許USB設備向主機計算系統(tǒng)識別本公開內(nèi)容的擴展能力描述符組由該特定的設備支持。具體地,擴展能力描述符700提供標題702和一個或多個描述符組識別符704a-c。
[0040]標題702通常包括描述符類型、長度、和能力類型信息,以及將所述設備識別為支持這里提供的擴展描述符的類型的特定代碼。根據(jù)該代碼(例如,通用的唯一識別符、或UUID、或其它類型的值),進行接收的主機系統(tǒng)(例如,圖1的主機計算系統(tǒng)102)可以確定它是否能夠使用被包括在設備中的擴展描述符。伴隨的一個或多個描述符組識別符除了其它元素以外可包括被使用來識別能夠支持特定的擴展描述符組的最小操作系統(tǒng)級別的操作系統(tǒng)版本識別符、對應的描述符組的尺寸、以及被使用來識別特定的擴展描述符組的供應商代碼。在某些實施例中,所述一個或多個描述符組識別符中的每個還可以包括替換的枚舉識別符,其指示:當替換的枚舉控制轉(zhuǎn)移被接收時,設備是否應當返回用于通信接口(例如,USB)的非缺省描述符。如果主機設備具有由操作系統(tǒng)識別符識別的、足夠最新的操作系統(tǒng),這樣的信息以及特別是供應商代碼可被主機計算設備使用來發(fā)出一個或多個供應商特定的控制請求到設備以便得到對應的擴展描述符組。關于請求擴展能力描述符700和相關聯(lián)的擴展描述符組的方法的細節(jié)在下面被提供,并且在圖8-9中顯示。
[0041]應當指出,因為擴展能力描述符700本身打算在USB技術規(guī)范中被支持(雖然規(guī)定擴展能力的唯一的代碼不被支持),所以從不支持擴展描述符的另外的設備檢索擴展能力描述符700不會使得該設備凍結(jié)/暫停,并且因此可以改進在所有的USB設備上的可靠的操作。相反,根據(jù)在擴展能力描述符700中被檢索的值,一個或多個擴展描述符可以被請求并且可結(jié)合主機計算系統(tǒng)被使用來枚舉設備,其使用操作系統(tǒng)特定的描述符的組、或可以以與否則由缺省的標準描述符的組提供的不同的方式向主計算系統(tǒng)規(guī)定設備的替換的描述符。在這樣的安排提供的靈活性以外,它也保證與不支持擴展描述符或替換的配置的設備的兼容性,因為這樣的描述符將僅僅在確定在設備中存在那些描述符后(如由擴展能力描述符700指示的)才被請求。
[0042]現(xiàn)在參照圖8-9,描述了關于可以經(jīng)由USB接口從設備請求擴展能力描述符和相關聯(lián)的擴展描述符組的過程的另外的細節(jié)。在實施例中,圖8的方法可以由主機計算設備(例如,主機計算系統(tǒng)102)執(zhí)行。具體地,圖8顯示按照本公開內(nèi)容的用于得到擴展描述符組的示例性過程的頂層方法。通常,方法800包括經(jīng)由USB接口請求802包括一個或多個擴展能力描述符的標準描述符。所述請求可以從主機計算系統(tǒng)被發(fā)送到設備。在標準描述符中,擴展能力描述符可被例如包括在一組二進制設備對象存儲(BOS)設備能力描述符(其被包括在USB標準內(nèi))內(nèi)。在操作804處,擴展能力描述符被接收,例如連同接收被包括在請求的描述符組中的其它描述符。標準描述符的這種接收例如在主機計算系統(tǒng)處發(fā)生。標準描述符包括一個或多個擴展能力描述符,擴展能力描述符進而可包括操作系統(tǒng)版本定義。在實施例中,主機計算系統(tǒng)然后評估擴展能力描述符,以便例如根據(jù)被包括在擴展能力描述符內(nèi)的代碼確定本公開內(nèi)容的擴展描述符是否被支持。
[0043]接著,方法800進到操作806,其中對于擴展描述符組作出一個或多個控制請求。在實施例中,主機計算設備可以經(jīng)由USB接口發(fā)出一個或多個設備請求到設備以請求在擴展描述符組中的新規(guī)定的擴展描述符中的一個或多個(例如,如下面在圖9上討論的使用供應商特定的控制請求)??刂妻D(zhuǎn)移是從主機傳送到外圍設備的數(shù)據(jù)結(jié)構(gòu)??刂妻D(zhuǎn)移包含以下的字段:
bmRequestType一掩膜字段,指示(a)在控制轉(zhuǎn)移的隨后的階段中數(shù)據(jù)轉(zhuǎn)移的方向;(b)請求類型(標準、類別、供應商、或保留的);以及(C)接收者(設備、接口、端點、或其它)。在“請求類型”字段中指定的請求的主要類型是“標準”和“供應商”類型,它們將在下面被討論。
[0044]bRequest一請求代碼,指示設備響應于的多個不同的命令之一。
[0045 ] wValue一按照由bReque s t指定的請求而變化的字段。
[0046]wlndex—按照請求而變化的字段;典型地被使用于作為指定的請求的一部分傳遞索引或偏移。
[0047]?Length—在隨后的數(shù)據(jù)階段的條件下的轉(zhuǎn)移的字節(jié)的數(shù)目。
[0048]所有的USB設備被設計成支持和響應于在USB技術規(guī)范中被支持的并且在這里被稱為“USB-特定的”請求的“標準”請求。應當指出,當擴展描述符通過使用其它通信接口被應用時,一組標準請求和標準描述符可以按照用于該替換的接口的技術規(guī)范而改變。
[0049]在USB特定的請求中,bmRequestType字段的請求類型部分包含指示“標準”請求類型的預定的值。USB設備任選地可支持“供應商”請求一這里被稱為“設備-特定的”請求。在設備-特定的請求中,bmRequestType字段的請求類型部分包含預定的值以指示供應商”請求類型。在設備-特定的請求的情形下,USB技術規(guī)范并不分配請求代碼、規(guī)定wVaIue和wlndex的意義、或規(guī)定返回的數(shù)據(jù)的格式。相反,每個設備對于設備_特定的請求的意義、功能性、和數(shù)據(jù)格式具有幾乎完全的控制。具體地,設備的供應商或設計者可以規(guī)定它自己的請求,并給這些請求分配設備特定的請求代碼。這允許設備規(guī)定它們自己的設備請求以供主機計算機使用,以及給外圍設備的制造商提供靈活性。
[0050]在本公開內(nèi)容的上下文中,根據(jù)擴展能力描述符的以前的請求,請求以及特別是wValue和wlndex字段可以被填充以特定的值的組。具體地,wlndex值可被設置為對于由本公開內(nèi)容的新的擴展能力描述符支持的描述符的已知的索引。應當指出,通常,對于每個標準USB特定的請求代碼,USB技術規(guī)范闡述wValue和wlndex的意義,以及任何返回的數(shù)據(jù)的格式。另外,對于現(xiàn)在的擴展能力描述符安排的以前的版本,可以使用預定的《Index,而不驗證對于這樣的值的支持,從而導致接收請求的設備將暫?;蚍駝t將對于在該設備中未規(guī)定的索引值作出錯誤的反應的可能性。
[0051 ]在操作808處,接收在擴展描述符組中的描述符(例如,設備、配置、和/或功能描述符)。在實施例中,主機計算系統(tǒng)可以從設備接收一個或多個擴展描述符。主機計算系統(tǒng)可以使用那些擴展描述符來規(guī)定設備的操作、安裝任何的驅(qū)動器、和否則枚舉設備。應當指出,主機計算系統(tǒng)可以按想要的那樣重復供應商特定的控制請求以便按需要從設備得到不同的信息。
[0052]現(xiàn)在參照圖9,提供了關于請求和確定與本公開內(nèi)容的擴展描述符的兼容性的另外的細節(jié)。特別地,在方法900中,在操作902處,發(fā)送對于擴展能力描述符的請求,其例如作為BOS描述符組的一部分。這個請求可以例如從主機計算系統(tǒng)發(fā)送到設備。在操作904處,所述請求被接收,以及返回對應的擴展能力描述符(例如,連同返回在BOS描述符組中的其它描述符)。如果返回的能力描述符的組缺乏擴展能力描述符,或如果返回的擴展能力描述符缺乏指示支持本公開內(nèi)容的擴展描述符的任何值,則操作906確定主機計算系統(tǒng)可以配置不是操作系統(tǒng)特定的描述符請求。因此,在操作908處,在這種情形下的描述符請求將回到現(xiàn)有的描述符請求過程,這可包括對于僅標準描述符的請求、或者對于使用所述擴展能力描述符(例如,在這里描述的擴展描述符的以前的版本中的)不被支持或識別的擴展描述符的請求。否則,如果擴展能力描述符包括指示對于擴展描述符的支持的代碼(例如,UUID),則對于擴展描述符組的請求可以在操作910處例如由主機計算系統(tǒng)生成。這可包括一個或多個擴展描述符組,每個對應于由設備支持的不同的最小操作系統(tǒng)級別。
[0053 ]在操作912處,發(fā)送供應商特定的控制請求,所述供應商特定的控制請求包括識別對應于所支持的最小操作系統(tǒng)要求的供應商代碼的bRequest值。例如,供應商特定的控制請求可以從主機計算系統(tǒng)發(fā)送到設備。在操作914處,兼容的設備接收請求,并且被配置成通過返回擴展描述符而響應于這樣的請求。擴展描述符例如可以是上面結(jié)合圖3-6討論的任何的描述符類型。
[0054]更具體地,在操作916處,接收供應商特定的控制請求。例如,根據(jù)這樣的請求,設備確定供應商實施的請求值是否對應于在供應商特定的控制請求中識別的值(例如,在擴展能力描述符中的供應商代碼中規(guī)定的bRequest值)。響應于所述請求,所請求的一個或多個擴展描述符然后被返回。在這時,在所顯示的實施例中,在操作918處,接收擴展能力描述符組,它例如可包括由主機計算設備接收的一個或多個擴展描述符。
[0055]在這個系統(tǒng)的可能的實施方案中,設備請求被使用來從設備請求多個可得到的描述符之一。對于擴展描述符的主機特定的請求的bRequest字段指示多個可得到的擴展描述符中的哪些將被返回。設備返回bRequest提到的