Initial commit
This commit is contained in:
@@ -0,0 +1,130 @@
|
||||
/*
|
||||
* PHDC routines of Cypress USB Serial
|
||||
* Copyright (C) 2013 Cypress Semiconductor
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#include "CyUSBCommon.h"
|
||||
/*
|
||||
PHDC clear feature
|
||||
*/
|
||||
CY_RETURN_STATUS CyPhdcClrFeature (CY_HANDLE handle)
|
||||
{
|
||||
|
||||
UINT16 wValue, wIndex, wLength;
|
||||
UINT8 bmRequestType, bmRequest;
|
||||
int rStatus;
|
||||
UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT;
|
||||
CY_DEVICE *device;
|
||||
libusb_device_handle *devHandle;
|
||||
|
||||
if (handle == NULL)
|
||||
return CY_ERROR_INVALID_HANDLE;
|
||||
device = (CY_DEVICE *)handle;
|
||||
devHandle = device->devHandle;
|
||||
|
||||
bmRequestType = CY_CLASS_INTERFACE_REQUEST_HOST_TO_DEVICE;
|
||||
bmRequest = CY_PHDC_CLR_FEATURE;
|
||||
wValue = CY_PHDC_CLR_FEATURE_WVALUE;
|
||||
wIndex = device->interfaceNum;
|
||||
wLength = 0;
|
||||
|
||||
rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest,
|
||||
wValue, wIndex, NULL, wLength, ioTimeout);
|
||||
if (rStatus == 0)
|
||||
return CY_SUCCESS;
|
||||
else if (rStatus == LIBUSB_ERROR_TIMEOUT){
|
||||
CY_DEBUG_PRINT_ERROR ("CY:Time out error ..function is %s \n", __func__);
|
||||
return CY_ERROR_IO_TIMEOUT;
|
||||
}
|
||||
else {
|
||||
CY_DEBUG_PRINT_ERROR ("CY: Error in function %s ...libusb error is %d!\n", __func__, rStatus);
|
||||
return CY_ERROR_REQUEST_FAILED;
|
||||
}
|
||||
return CY_SUCCESS;
|
||||
}
|
||||
/*
|
||||
PHDC set feature
|
||||
*/
|
||||
CY_RETURN_STATUS CyPhdcSetFeature (CY_HANDLE handle)
|
||||
{
|
||||
|
||||
UINT16 wValue, wIndex, wLength;
|
||||
UINT8 bmRequestType, bmRequest;
|
||||
int rStatus, ioTimeout = CY_USB_SERIAL_TIMEOUT ;
|
||||
CY_DEVICE *device;
|
||||
libusb_device_handle *devHandle;
|
||||
|
||||
if (handle == NULL)
|
||||
return CY_ERROR_INVALID_HANDLE;
|
||||
device = (CY_DEVICE *)handle;
|
||||
devHandle = device->devHandle;
|
||||
|
||||
bmRequestType = CY_CLASS_INTERFACE_REQUEST_HOST_TO_DEVICE;
|
||||
bmRequest = CY_PHDC_SET_FEATURE;
|
||||
wValue = CY_PHDC_SET_FEATURE_WVALUE;
|
||||
wIndex = device->interfaceNum;
|
||||
wLength = 0;
|
||||
|
||||
rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest,
|
||||
wValue, wIndex, NULL, wLength, ioTimeout);
|
||||
if (rStatus == 0)
|
||||
return CY_SUCCESS;
|
||||
else if (rStatus == LIBUSB_ERROR_TIMEOUT){
|
||||
CY_DEBUG_PRINT_ERROR ("CY:Time out error ..function is %s \n", __func__);
|
||||
return CY_ERROR_IO_TIMEOUT;
|
||||
}
|
||||
else {
|
||||
CY_DEBUG_PRINT_ERROR ("CY: Error in function %s ...libusb error is %d!\n", __func__, rStatus);
|
||||
return CY_ERROR_REQUEST_FAILED;
|
||||
}
|
||||
}
|
||||
/*
|
||||
PHDC clear feature
|
||||
*/
|
||||
CY_RETURN_STATUS CyPhdcGetStatus (CY_HANDLE handle, UINT16 *dataStatus)
|
||||
{
|
||||
|
||||
UINT16 wValue, wIndex, wLength;
|
||||
UINT8 bmRequestType, bmRequest;
|
||||
int rStatus;
|
||||
UINT32 ioTimeout = CY_USB_SERIAL_TIMEOUT ;
|
||||
CY_DEVICE *device;
|
||||
libusb_device_handle *devHandle;
|
||||
|
||||
if (handle == NULL)
|
||||
return CY_ERROR_INVALID_HANDLE;
|
||||
device = (CY_DEVICE *)handle;
|
||||
devHandle = device->devHandle;
|
||||
|
||||
bmRequestType = CY_CLASS_INTERFACE_REQUEST_DEVICE_TO_HOST;
|
||||
bmRequest = CY_PHDC_GET_DATA_STATUS;
|
||||
wValue = 0x00;
|
||||
wIndex = device->interfaceNum;
|
||||
wLength = CY_PHDC_GET_STATUS_LEN;
|
||||
|
||||
rStatus = libusb_control_transfer (devHandle, bmRequestType, bmRequest,
|
||||
wValue, wIndex, (unsigned char*)dataStatus, wLength, ioTimeout);
|
||||
if (rStatus > 0)
|
||||
return CY_SUCCESS;
|
||||
else if (rStatus == LIBUSB_ERROR_TIMEOUT){
|
||||
CY_DEBUG_PRINT_ERROR ("CY:Time out error ..function is %s \n", __func__);
|
||||
return CY_ERROR_IO_TIMEOUT;
|
||||
}
|
||||
else {
|
||||
CY_DEBUG_PRINT_ERROR ("CY: Error in function %s ...libusb error is %d!\n", __func__, rStatus);
|
||||
return CY_ERROR_REQUEST_FAILED;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user