Custom USB requests changed.
This commit is contained in:
parent
b92b8953a6
commit
e6a5e55a3e
3 changed files with 21 additions and 29 deletions
|
@ -29,11 +29,11 @@ respectively.
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
usb_dev_handle *handle = NULL;
|
usb_dev_handle *handle = NULL;
|
||||||
const unsigned char rawVid[2] = {USB_CFG_VENDOR_ID}, rawPid[2] = {USB_CFG_DEVICE_ID};
|
const unsigned char rawVid[2] = {USB_CFG_VENDOR_ID}, rawPid[2] = {USB_CFG_DEVICE_ID};
|
||||||
char vendor[] = {USB_CFG_VENDOR_NAME, 0}, product[] = {USB_CFG_DEVICE_NAME, 0};
|
char vendor[] = {USB_CFG_VENDOR_NAME, 0}, product[] = {USB_CFG_DEVICE_NAME, 0};
|
||||||
char buffer[4];
|
char buffer[4];
|
||||||
int vid, pid;
|
int vid, pid;
|
||||||
|
|
||||||
usb_init();
|
usb_init();
|
||||||
|
|
||||||
|
@ -69,9 +69,9 @@ int vid, pid;
|
||||||
|
|
||||||
// int usb_control_msg(usb_dev_handle *dev, int requesttype, int request, int value, int index, char *bytes, int size, int timeout);
|
// int usb_control_msg(usb_dev_handle *dev, int requesttype, int request, int value, int index, char *bytes, int size, int timeout);
|
||||||
// 32 bit in 2 transmission
|
// 32 bit in 2 transmission
|
||||||
usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT, CUSTOM_RQ_SET_STATUS, 0x7007, 0x1B, buffer, 0, 300);
|
usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT, CUSTOM_RQ_SET_FRAME, 0x7007, 0, buffer, 0, 300);
|
||||||
//sleep(2);
|
//sleep(2);
|
||||||
usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT, CUSTOM_RQ_SET_STATUS, 0x0700, 0x1C, buffer, 0, 300);
|
usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT, CUSTOM_RQ_SET_FRAME, 0x0700, 1, buffer, 0, 300);
|
||||||
|
|
||||||
// bitwise set/get
|
// bitwise set/get
|
||||||
//usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT, CUSTOM_RQ_SET_STATUS, 0, 25, buffer, 0, 5000);
|
//usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT, CUSTOM_RQ_SET_STATUS, 0, 25, buffer, 0, 5000);
|
||||||
|
@ -80,13 +80,13 @@ int vid, pid;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (i = 0; i < 27; i++)
|
for (i = 0; i < 27; i++)
|
||||||
{
|
{
|
||||||
usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT, CUSTOM_RQ_SET_STATUS, 1, i, buffer, 0, 300);
|
usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT, CUSTOM_RQ_SET_LED, 1, i, buffer, 0, 300);
|
||||||
sleep(1);
|
sleep(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 26; i >= 0; i--)
|
for (i = 26; i >= 0; i--)
|
||||||
{
|
{
|
||||||
usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT, CUSTOM_RQ_SET_STATUS, 0, i, buffer, 0, 300);
|
usb_control_msg(handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT, CUSTOM_RQ_SET_LED, 0, i, buffer, 0, 300);
|
||||||
sleep(1);
|
sleep(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,17 +16,9 @@
|
||||||
#ifndef __REQUESTS_H_INCLUDED__
|
#ifndef __REQUESTS_H_INCLUDED__
|
||||||
#define __REQUESTS_H_INCLUDED__
|
#define __REQUESTS_H_INCLUDED__
|
||||||
|
|
||||||
#define CUSTOM_RQ_SET_STATUS 1
|
#define CUSTOM_RQ_SET_LED 1
|
||||||
/* Set the LED status. Control-OUT.
|
#define CUSTOM_RQ_SET_FRAME 2
|
||||||
* The requested status is passed in the "wValue" field of the control
|
|
||||||
* transfer. No OUT data is sent. Bit 0 of the low byte of wValue controls
|
|
||||||
* the LED.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define CUSTOM_RQ_GET_STATUS 2
|
//#define CUSTOM_RQ_GET_STATUS 255
|
||||||
/* Get the current LED status. Control-IN.
|
|
||||||
* This control transfer involves a 1 byte data phase where the device sends
|
|
||||||
* the current status to the host. The status is in bit 0 of the byte.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#endif /* __REQUESTS_H_INCLUDED__ */
|
#endif /* __REQUESTS_H_INCLUDED__ */
|
||||||
|
|
|
@ -16,25 +16,25 @@ usbMsgLen_t usbFunctionSetup(uchar data[8])
|
||||||
|
|
||||||
if ( (rq->bmRequestType & USBRQ_TYPE_MASK) == USBRQ_TYPE_VENDOR )
|
if ( (rq->bmRequestType & USBRQ_TYPE_MASK) == USBRQ_TYPE_VENDOR )
|
||||||
{
|
{
|
||||||
if ( rq->bRequest == CUSTOM_RQ_SET_STATUS )
|
if ( rq->bRequest == CUSTOM_RQ_SET_LED )
|
||||||
|
{
|
||||||
|
if ( rq->wValue.bytes[0] == 1 )
|
||||||
|
cube |= ((uint32_t)1 << rq->wIndex.bytes[0]);
|
||||||
|
else
|
||||||
|
cube &= ~((uint32_t)1 << rq->wIndex.bytes[0]);
|
||||||
|
} else if ( rq->bRequest == CUSTOM_RQ_SET_FRAME )
|
||||||
{
|
{
|
||||||
|
|
||||||
if ( rq->wIndex.bytes[0] == 27 )
|
if ( rq->wIndex.bytes[0] == 0 )
|
||||||
{
|
{
|
||||||
cube = (cube & (uint32_t)0xffff0000) |
|
cube = (cube & (uint32_t)0xffff0000) |
|
||||||
rq->wValue.bytes[0] +
|
rq->wValue.bytes[0] +
|
||||||
(rq->wValue.bytes[1] << 8);
|
(rq->wValue.bytes[1] << 8);
|
||||||
} else if ( rq->wIndex.bytes[0] == 28 )
|
} else if ( rq->wIndex.bytes[0] == 1 )
|
||||||
{
|
{
|
||||||
cube = (cube & (uint32_t)0x0000ffff) |
|
cube = (cube & (uint32_t)0x0000ffff) |
|
||||||
((uint32_t)(rq->wValue.bytes[0] +
|
((uint32_t)(rq->wValue.bytes[0] +
|
||||||
(rq->wValue.bytes[1] << 8)) << 16);
|
(rq->wValue.bytes[1] << 8)) << 16);
|
||||||
} else if ( rq->wIndex.bytes[0] < 27 )
|
|
||||||
{
|
|
||||||
if ( rq->wValue.bytes[0] == 1 )
|
|
||||||
cube |= ((uint32_t)1 << rq->wIndex.bytes[0]);
|
|
||||||
else
|
|
||||||
cube &= ~((uint32_t)1 << rq->wIndex.bytes[0]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//} else if ( rq->bRequest == CUSTOM_RQ_GET_STATUS ) {
|
//} else if ( rq->bRequest == CUSTOM_RQ_GET_STATUS ) {
|
||||||
|
|
Loading…
Reference in a new issue