雖然本書稍后的應(yīng)用程序是針對VB程序來設(shè)計的,但對于要與HID設(shè)備通信的主機驅(qū)動程序來說,設(shè)備的固件程序代碼是必須符合某 些要求的。也即是,設(shè)備的描述符必須辨識設(shè)各包含了HID接口。在固件程序代碼中,除了預(yù)設(shè)的控制管線外,還須支持中斷IN端點 。此外,固仵也必須包含報告描述符,以用來定義所要傳送與接收數(shù)據(jù)的格式。
對于設(shè)備而言,為了送出數(shù)據(jù),固件程序代碼必須支持Get ̄Report控制傳輸以及中斷IN傳輸?shù)囊?guī)范。相對,為了接收數(shù)據(jù),就需要 固件程序代碼支持Se辶Report控制傳輸以及可能也支持中斷OUT傳輸。
所有的HID數(shù)據(jù)必須使用所定義的報告格式,其定義了在報告描述符中的數(shù)據(jù)大小值與內(nèi)容。一個設(shè)各可能支持一個或更多的報告。 在設(shè)備固件程序代碼中的報告描述符用來描述報告,并且可能涵蓋了相關(guān)于所要使用的數(shù)據(jù)是如何被接收與傳送的。
每一個報告的數(shù)值可以用來定義報告是作為輸人(mput)、輸出(output)以及特性(feature)報告之用的。主機能夠以輸人報告 來接收數(shù)據(jù),也可以通過輸出報告來傳送數(shù)據(jù)。此外,特性報告則可以利用任一方向來傳輸。
當主機要求輸人報告時,而設(shè)備就在每一次的中斷傳輸,將數(shù)據(jù)送至主機。而主機會根據(jù)在端點描述符所要求的最高遲滯時間,安 排整個的傳輸要求。此外,對于輸出報告而言,主機可以使用控制傳輸或中斷傳輸將數(shù)據(jù)傳送到設(shè)備端。但對于HID群組執(zhí)行OUT中斷 的功能在原先USB1.0版中是沒有具各的。而在稍后的USB 1.1版本中才加以改進并增加此功能。當然在Windows 98第二版(SE)以及 后來修定的Windows版本皆可應(yīng)用這個新增的特性。
對于輸人報告,所有的Windows 98以及稍后版本的HID驅(qū)動程序則使用中斷傳輸來讀取。此外,對于輸出報告、傳輸類型則根據(jù)設(shè) 備所支持的端點類型以及所安裝的Windows版本而定。其中,最原始的Windows 98(Windows 98 Gold)版本僅相容HID規(guī)范1.0版, 那么HID驅(qū)動程序則會針對輸出報告來使用控制傳輸。而Windows 98SE,Windows2000以及Windows ME版本與規(guī)范1.1版本相容,那么 若是設(shè)各接口也具各中斷OUT端點,HID驅(qū)動程序就可針對輸出報告來使用中斷傳輸;否則,則使用控制傳輸。再者,如果HID設(shè)備接 口不支持中斷OUT端點,或如果固件對于輸出報告,同時支持兩種傳輸類型,HID即可相容于任何的Windows版本。
特性(feature)報告能夠以雙向(IN與OUT)來傳遞,可以使用控制傳輸來加以實現(xiàn)。為了送出OUT特性報告,主機送出 Set_Report要求,其后跟隨報告數(shù)據(jù),然后設(shè)備會傳回狀態(tài)信息以表示是否為成功或失敗的傳輸。而為了接收IN特性報告,主機會送 出Get_Report要求,設(shè)各再送出此報告,然后主機會傳回狀態(tài)信息以表示是否為成功或失敗的傳輸。如果數(shù)據(jù)僅是偶而傳遞一下,或 沒有遲滯時間要求,則當數(shù)據(jù)不再需要時,特性報告就會以周期傳輸來避開總線的阻塞。
使用特性(feature)報告來傳輸?shù)牧硪粋優(yōu)點是,能夠提供多種報告格式。這樣主機就可在控制要求中設(shè)置報告的數(shù)量。若使用 中斷傳輸來作數(shù)據(jù)的接收或傳遞,主機就不再需要設(shè)置特定的報告來要求或送出數(shù)據(jù)字節(jié)。