/* ** =================================================================== ** Method : usb_mems_USB_Class_Mems_Recv_Data (component USB_MEMS_CLASS) ** Description : ** This function receives Data from Host. ** Parameters : ** NAME - DESCRIPTION ** controller_ID - ** ep_num - ** app_buff - ** size - ** Returns : ** --- - Error code ** =================================================================== */ uint_8 USB_Class_Mems_Recv_Data( uint_8 controller_ID, uint_8 ep_num, uint_8_ptr app_buff, USB_PACKET_SIZE size ) { uint_8 status; status = _usb_device_recv_data(&controller_ID,ep_num,app_buff,size); return status; }
void mvUsbCh9GetStatus(_usb_device_handle handle, boolean setup, SETUP_STRUCT* ctrl_req) { /* Body */ uint_8 endpoint, direction; uint_16 usb_status; USB_DEV_STATE_STRUCT* usb_dev_ptr = (USB_DEV_STATE_STRUCT*)handle; ARC_DEBUG_TRACE(ARC_DEBUG_FLAG_SETUP, "%s: setup=%d\n", __FUNCTION__, (int)setup); if(!setup) return; switch (ctrl_req->REQUESTTYPE) { case (REQ_DIR_IN | REQ_RECIP_DEVICE): /* Device request */ _usb_device_get_status(handle, ARC_USB_STATUS_DEVICE, &usb_status); break; case (REQ_DIR_IN | REQ_RECIP_INTERFACE): /* Interface request */ _usb_device_get_status(handle, ARC_USB_STATUS_INTERFACE, &usb_status); break; case (REQ_DIR_IN | REQ_RECIP_ENDPOINT): /* Endpoint request */ endpoint = ctrl_req->INDEX & ARC_USB_STATUS_ENDPOINT_NUMBER_MASK; if( (ctrl_req->INDEX & (1 << REQ_DIR_OFFSET)) == REQ_DIR_IN) direction = ARC_USB_SEND; else direction = ARC_USB_RECV; usb_status = _usb_device_is_endpoint_stalled(handle, endpoint, direction); break; default: /* Unknown request */ USB_printf("GetStatus: Unknown request type 0x%x\n", ctrl_req->REQUESTTYPE); _usb_device_stall_endpoint(handle, 0, ARC_USB_RECV); return; } /* Endswitch */ /* Send the requested data */ *usb_dev_ptr->STATUS_PTR = USB_16BIT_LE(usb_status); _usb_device_send_data(handle, 0, (uint_8_ptr)usb_dev_ptr->STATUS_PTR, sizeof(uint_16)); /* status phase */ _usb_device_recv_data(handle, 0, NULL, 0); return; } /* Endbody */
/**************************************************************************//*! * * @name USB_Class_CDC_Recv_Data * * @brief This functions receives Data from Host. * * @param handle : handle returned by USB_Class_CDC_Init * @param ep_num : endpoint num * @param app_buff : buffer to send * @param size : length of the transfer * * @return status * USB_OK : When Successfull * Others : Errors *****************************************************************************/ uint_8 USB_Class_CDC_Recv_Data ( CDC_HANDLE cdc_handle, uint_8 ep_num, uint_8_ptr buff_ptr, /* [IN] buffer to recv */ uint_32 size /* [IN] length of the transfer */ ) { CDC_DEVICE_STRUCT_PTR cdc_obj_ptr; uint_8 status = USB_OK; cdc_obj_ptr = USB_Cdc_Get_Device_Ptr(cdc_handle); if (NULL == cdc_obj_ptr) { return USBERR_ERROR; } status = _usb_device_recv_data(cdc_obj_ptr->controller_handle, ep_num,buff_ptr,size); return status; }