在USBIF可以download..
device 要支援 SETUP Command中的 SET_FEATURE (0x03) 。
CE中,由Pdd的 Interrupt Stub Thread,SETUP packet handler 呼叫 Mdd_Notify( ),請Mdd處理SET_FEATURE request (其實所有request都是Mdd處理的)。
Mdd_Notify 和其他Mdd_XX 在不同的source file中 - usbfn\controller\mdd\enum.cpp.
Notify 呼叫 ProcessRequest( )處理 SEQUEST packet。
奇怪的是..SET Feature function - ProcessRequest( )竟然只處理 SET_FEATURE_COMPILANCE。
SET_FEATURE Request的 wValue Low Byte 決定要Set的feature:
- 0x00 : Endpoint Halt. -- 什麼都不作.
- 0x02 : Test Mode。wValue High Byte決定要設定device的test mode:
- TEST_J - 將D+, D- 設定成J State.
- TEST_K - .....
- TEST_SE0_NAK - 將D+, D- 設定在SE0_NAK
- TEST_PACKET - 送出一個56 bytes的packet (內定好的),然後進入PRBS state.
"送出" 的動作還是依照USB 的規範,在IN stage時送出 - TEST_FORCE_ENABLE - 送出NAK
做完TEST Mode的動作後,因為USB state已經混亂,所以就進入while(1); loop,當機..
沒有留言:
張貼留言