length = USBH_LL_GetLastXferSize(phost, CDC_Handle->DataItf.InPipe); if (((CDC_Handle->RxDataLength - length) > 0U) && (length > CDC_Handle->DataItf.InEpSize)) { CDC_Handle->RxDataLength -= length ; CDC_Handle->pRxData += length; CDC_Handle->data_rx_state = CDC_RECEIVE_DATA; } else { USBH_CDC_ReceiveCallback(phost); }
このコードの意味するところは、分割されたデータの一部を受けとったときは、 CDC_Handleという構造に順にデータを入れていく。
// proceed the pump last data. CDC_HandleTypeDef *hcdc = (CDC_HandleTypeDef *) hUsbHostFS.pActiveClass->pData; uint32_t length = USBH_LL_GetLastXferSize(phost, hcdc->DataItf.InPipe); hcdc->pRxData += length;
USBH_CDC_Receive の引数に設定したバッファの先頭ポインタと、このhcdc->pRxDataとの間に 受信したデータが入ります。