freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

官方usb程序和例程-閱讀頁(yè)

2025-07-22 13:35本頁(yè)面
  

【正文】 equestType = *++。 /* 請(qǐng)求代碼,第一次時(shí)應(yīng)該是6,表明主機(jī)要獲取設(shè)備描述符。pInformationUSBwValue = ByteSwap(*++)。//我覺(jué)得這里可能有些問(wèn)題。 /* wIndex */++。 /* wLength */}pInformationControlState = SETTING_UP。}else{Data_Setup0()。}return Post0_Process()。 //這是一個(gè)函數(shù)指針,由用戶提供。if (Request_No == GET_DESCRIPTOR) //如果是獲取設(shè)備描述符{if(Type_Recipient==(STANDARD_REQUEST| EVICE_RECIPIENT)){u8 wValue1 = pInformationUSBwValue1。} //獲取設(shè)備描述符的操作由用戶提供。pInformation = CopyRoutine。 //這個(gè)函數(shù)這里調(diào)用的目的只是設(shè)置了pInformation中需要寫(xiě)入的描述符的長(zhǎng)度。}if (ValBit(pInformationUSBbmRequestType, 7))//此時(shí)為80{//上面這個(gè)語(yǔ)句主要是判斷傳輸方向。 這個(gè)一般是64if (pInformation wLength){//設(shè)備描述符長(zhǎng)度18pInformation = wLength。DataStageIn()。 //這個(gè)是取得用戶描述符緩沖區(qū)的地址。//這個(gè)函數(shù)將設(shè)備描述符復(fù)制到用戶的發(fā)送緩沖區(qū)。//設(shè)置發(fā)送字節(jié)的數(shù)目、18pEPinfoUsb_wLength = Length。 偏移到18vSetEPTxStatus(EP_TX_VALID)。USB_StatusOut()。 */Expect_Status_Out:pInformationControlState = ControlState。_SetEPTxStatus(ENDP0, SaveTState)。return。主機(jī)方返回一個(gè)ACK后,主機(jī)發(fā)送數(shù)據(jù)的CTR標(biāo)志置位,DIR=0,EP_ID=0,表明主機(jī)正確收到了用戶發(fā)過(guò)去的描述符。此時(shí)是由IN引起的。(7)追蹤進(jìn)入函數(shù)In0_Process()此時(shí)實(shí)際上設(shè)備返回描述符已經(jīng)成功了。if ((ControlState == IN_DATA) || (ControlState == LAST_IN_DATA)){第一次取設(shè)備描述符只取一次。//此次調(diào)用后,當(dāng)前狀態(tài)變成WAIT_STATUS_OUT,表明設(shè)備等待狀態(tài)過(guò)程,主機(jī)輸出0字節(jié)。}返回時(shí)調(diào)用Post0_Process(void)函數(shù),這個(gè)函數(shù)沒(méi)做什么事。所以中斷處理程序會(huì)進(jìn)入Out0_Process()。else if (ControlState == WAIT_STATUS_OUT){(*pPropertyProcess_Status_OUT)()。ControlState = STALLED。}獲取設(shè)備描述符后,主機(jī)再一次復(fù)位設(shè)備。五、USB的“JoyStickMouse”工作過(guò)程詳細(xì)分析枚舉第二步:設(shè)置地址(1)重新從復(fù)位狀態(tài)開(kāi)始在第一次獲取設(shè)備描述符后,程序使端點(diǎn)0的發(fā)送和接收都無(wú)效,狀態(tài)也設(shè)置為STALLED,所以主機(jī)先發(fā)一個(gè)復(fù)位,使得端點(diǎn)0接收有效。(2)設(shè)置地址的建立階段:主機(jī)先發(fā)一個(gè)SETUP令牌包,設(shè)備端EP0的SETUP標(biāo)志置位。設(shè)備在檢驗(yàn)數(shù)據(jù)后,發(fā)一個(gè)ACK握手包。數(shù)據(jù)已經(jīng)保存到RxADDR所指向的緩沖區(qū)。由于CTR_RX和SETUP同時(shí)置位,終端處理程序調(diào)用Setup0_Process(),所做的工作仍然是先填充pInformation結(jié)構(gòu),獲取請(qǐng)求特征碼、請(qǐng)求代碼和數(shù)據(jù)長(zhǎng)度。執(zhí)行以下代碼:else if (RequestNo == SET_ADDRESS){Result = USB_SUCCESS。ControlState = WAIT_STATUS_IN。 //這句話是一個(gè)關(guān)鍵,它是一個(gè)宏,實(shí)際是準(zhǔn)備好發(fā)送0字節(jié)的狀態(tài)數(shù)據(jù)包。它對(duì)應(yīng)的宏是這樣的:define USB_StatusIn() Send0LengthData() //準(zhǔn)備發(fā)送0字節(jié)數(shù)據(jù)define Send0LengthData() { _SetEPTxCount(ENDP0, 0)。 \ //設(shè)置發(fā)送有效,發(fā)送字節(jié)數(shù)為0}(3)設(shè)置地址的狀態(tài)階段:而前面把狀態(tài)設(shè)置為WAIT_STATUS_IN是給IN令牌包的處理提供指示。本次中斷由IN0_Process()函數(shù)來(lái)處理,追蹤進(jìn)入,它執(zhí)行以下代碼:else if (ControlState == WAIT_STATUS_IN){if ((pInformationUSBbRequest == SET_ADDRESS) amp。(Type_Recipient==(STANDARD_REQUEST|DEVICE_RECIPIENT))){SetDeviceAddress(pInformationUSBwValue0)。 //這個(gè)函數(shù)就一個(gè)賦值語(yǔ)句,bDeviceState = ADDRESSED。 //這是一個(gè)空函數(shù)。}執(zhí)行設(shè)置地址操作、采用新地址后,把設(shè)備的狀態(tài)改為STALLED。//將端點(diǎn)0的緩沖區(qū)大小設(shè)置為64字節(jié)if (pInformationControlState == STALLED){vSetEPRxStatus(EP_RX_STALL)。}將端點(diǎn)0的發(fā)送和接收都設(shè)置為:STALL,這種狀態(tài)下只接受SETUP令牌包。(2)建立階段:主機(jī)發(fā)令牌包、數(shù)據(jù)包、設(shè)備ACK產(chǎn)生數(shù)據(jù)接收中斷,且端點(diǎn)0的SETUP置位,調(diào)用Setup0_Process()函數(shù)進(jìn)行處理。由調(diào)用Data_Setup0()函數(shù)進(jìn)行處理。在函數(shù)處理的最后:vSetEPTxStatus(EP_TX_VALID)。/* 本來(lái)期待IN令牌包,但用戶可以取消數(shù)據(jù)階段,一般不會(huì)用到 */(3)數(shù)據(jù)階段:主機(jī)發(fā)IN包,設(shè)備返回?cái)?shù)據(jù),主機(jī)ACK本次操作會(huì)產(chǎn)生數(shù)據(jù)發(fā)送完成中斷,由In0_Process(void)來(lái)處理中斷,它也調(diào)用DataStageIn()函數(shù)來(lái)進(jìn)行處理。vSetEPTxStatus(EP_TX_STALL)。有可能的話:Send0LengthData()。Data_Mul_MaxPacketSize = FALSE。否則,繼續(xù)準(zhǔn)備數(shù)據(jù),調(diào)整剩余字節(jié)數(shù)、發(fā)送指針位置,等待主機(jī)的下一個(gè)IN令牌包。并將狀態(tài)設(shè)為STALLED。主機(jī)設(shè)置配置。進(jìn)入CTR中斷,用戶調(diào)用Setup0_Process()函數(shù)進(jìn)行處理,取得請(qǐng)求數(shù)據(jù)后,由于沒(méi)有數(shù)據(jù)傳輸階段,該函數(shù)調(diào)用NoData_Setup0()函數(shù)進(jìn)行處理。同時(shí)調(diào)用用戶的設(shè)置配置函數(shù),將設(shè)備狀態(tài)改為“configured”。設(shè)備期待主機(jī)的IN令牌包,返回狀態(tài)數(shù)據(jù)。設(shè)置空閑時(shí)一個(gè)類特殊請(qǐng)求,其特征碼為0x21,2表示類請(qǐng)求而不是標(biāo)準(zhǔn)請(qǐng)求,1表示接收對(duì)象是接口而不是設(shè)備。 //這里就是調(diào)用用戶提供的類特殊請(qǐng)求的處理函數(shù)。針對(duì)有數(shù)據(jù)情況只支持:GET_PROTOCOL。amp。}}主機(jī)獲取報(bào)告描述符建立階段:主機(jī)發(fā)SETUP包、發(fā)請(qǐng)求數(shù)據(jù)包(DATA0包)、用戶ACK。跟蹤Setup0_Process(void)——進(jìn)入Data_Setup(void)函數(shù),它是這么處理的:if (Request_No == GET_DESCRIPTOR){if(Type_Recipient==(STANDARD_REQUEST| EVICE_RECIPIENT)){u8 wValue1 = pInformationUSBwValue1。}else if (wValue1 == CONFIG_DESCRIPTOR){CopyRoutine = pPropertyGetConfigDescriptor。}/* End of GET_DESCRIPTOR */}}可見(jiàn)核心函數(shù)只支持設(shè)備描述符、配置描述符以及字符串描述符。調(diào)用用戶的類特殊實(shí)現(xiàn)來(lái)獲取報(bào)告描述符,同時(shí)HID類描述符也是通過(guò)這種方式取得的。Mouse_Buffer[1] = X。/*copy mouse position info in ENDP1 Tx Packet Memory Area*/UserToPMABufferCopy(Mouse_Buffer, GetEPTxAddr(ENDP1), 4)。使能端點(diǎn)1的發(fā)送,當(dāng)主機(jī)的IN令牌包來(lái)的時(shí)候,SIE將數(shù)據(jù)返回給主機(jī)。在中斷處理程序中,執(zhí)行下列代碼:if ((wEPVal amp。(*pEpInt_IN[EPindex1])()。 EP_CTR_TX) != 0) */這是在函數(shù)指針數(shù)組中調(diào)用函數(shù),跟蹤進(jìn)入:發(fā)現(xiàn)這個(gè)函數(shù)什么也沒(méi)有做。把所有文件的源代碼粗略地瀏覽了一遍,心里大概有了些底。歡迎您的光臨,!希望您提出您寶貴的意見(jiàn),你的意見(jiàn)是我進(jìn)步的動(dòng)力。我不知道年少輕狂,我只知道勝者為王。什么時(shí)候離光明最近?那就是你覺(jué)得黑暗太黑的時(shí)候。學(xué)習(xí)
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1