12.10.2006

在main loop 中 處理:
  • suspend. : receive suspend command, INT。
    處理 : 設mode register,suspend 1-0
  • REQUESTPROC
    處理host送來的request..
  • CONTROLOUTDON
    依照該ENDPOINT狀太,設定endpoint register的stall bit.
  • bulk_out
    處理CBW command
USB Host 的request 可以分為三類:
  • STANDARD
  • CLASS
  • VENDOR

Standard 的request 用一個index來選取以下服務:
沒有implement的就用StallEP0
  • GetStatus
  • ClearFeature
  • StallEP0
  • SetFeature
  • StallEP0
  • SetAddress
  • GetDescriptor
  • StallEP0
  • GetConfiguration
  • SetConfiguration
  • GetInterface
  • SetInterface
  • StallEP0
Class 的request 只有一個
  • Reserved
Vendor 有15個,但是沒有implement,所以都是StallEP0

Request type, and Request index 是在 USB 的SETUP封包中。

SETUP 封包的內容是:
 struct _device_request{
char bmRequestType;
char bRequest;
unsigned short wValue;
unsigned short wIndex;
unsigned short wLength;
} DEVICE_REQUEST;
.當USB插入host後,host會送這個OUT Token (封包的一種),給device的ENDPOINT0。

Device

沒有留言: