Switch to new vusb
This commit is contained in:
@@ -5,10 +5,8 @@
|
||||
* Tabsize: 4
|
||||
* Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH
|
||||
* License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt)
|
||||
* This Revision: $Id: usbdrv.c 740 2009-04-13 18:23:31Z cs $
|
||||
*/
|
||||
|
||||
#include "usbportability.h"
|
||||
#include "usbdrv.h"
|
||||
#include "oddebug.h"
|
||||
|
||||
@@ -45,7 +43,7 @@ uchar usbCurrentDataToken;/* when we check data toggling to ignore duplica
|
||||
#endif
|
||||
|
||||
/* USB status registers / not shared with asm code */
|
||||
uchar *usbMsgPtr; /* data to transmit next -- ROM or RAM address */
|
||||
usbMsgPtr_t usbMsgPtr; /* data to transmit next -- ROM or RAM address */
|
||||
static usbMsgLen_t usbMsgLen = USB_NO_MSG; /* remaining number of bytes */
|
||||
static uchar usbMsgFlags; /* flag values see below */
|
||||
|
||||
@@ -67,7 +65,7 @@ optimizing hints:
|
||||
#if USB_CFG_DESCR_PROPS_STRING_0 == 0
|
||||
#undef USB_CFG_DESCR_PROPS_STRING_0
|
||||
#define USB_CFG_DESCR_PROPS_STRING_0 sizeof(usbDescriptorString0)
|
||||
PROGMEM char usbDescriptorString0[] = { /* language descriptor */
|
||||
PROGMEM const char usbDescriptorString0[] = { /* language descriptor */
|
||||
4, /* sizeof(usbDescriptorString0): length of descriptor in bytes */
|
||||
3, /* descriptor type */
|
||||
0x09, 0x04, /* language index (0x0409 = US-English) */
|
||||
@@ -77,7 +75,7 @@ PROGMEM char usbDescriptorString0[] = { /* language descriptor */
|
||||
#if USB_CFG_DESCR_PROPS_STRING_VENDOR == 0 && USB_CFG_VENDOR_NAME_LEN
|
||||
#undef USB_CFG_DESCR_PROPS_STRING_VENDOR
|
||||
#define USB_CFG_DESCR_PROPS_STRING_VENDOR sizeof(usbDescriptorStringVendor)
|
||||
PROGMEM int usbDescriptorStringVendor[] = {
|
||||
PROGMEM const int usbDescriptorStringVendor[] = {
|
||||
USB_STRING_DESCRIPTOR_HEADER(USB_CFG_VENDOR_NAME_LEN),
|
||||
USB_CFG_VENDOR_NAME
|
||||
};
|
||||
@@ -86,7 +84,7 @@ PROGMEM int usbDescriptorStringVendor[] = {
|
||||
#if USB_CFG_DESCR_PROPS_STRING_PRODUCT == 0 && USB_CFG_DEVICE_NAME_LEN
|
||||
#undef USB_CFG_DESCR_PROPS_STRING_PRODUCT
|
||||
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT sizeof(usbDescriptorStringDevice)
|
||||
PROGMEM int usbDescriptorStringDevice[] = {
|
||||
PROGMEM const int usbDescriptorStringDevice[] = {
|
||||
USB_STRING_DESCRIPTOR_HEADER(USB_CFG_DEVICE_NAME_LEN),
|
||||
USB_CFG_DEVICE_NAME
|
||||
};
|
||||
@@ -95,7 +93,7 @@ PROGMEM int usbDescriptorStringDevice[] = {
|
||||
#if USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER == 0 && USB_CFG_SERIAL_NUMBER_LEN
|
||||
#undef USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER
|
||||
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER sizeof(usbDescriptorStringSerialNumber)
|
||||
PROGMEM int usbDescriptorStringSerialNumber[] = {
|
||||
PROGMEM const int usbDescriptorStringSerialNumber[] = {
|
||||
USB_STRING_DESCRIPTOR_HEADER(USB_CFG_SERIAL_NUMBER_LEN),
|
||||
USB_CFG_SERIAL_NUMBER
|
||||
};
|
||||
@@ -108,7 +106,7 @@ PROGMEM int usbDescriptorStringSerialNumber[] = {
|
||||
#if USB_CFG_DESCR_PROPS_DEVICE == 0
|
||||
#undef USB_CFG_DESCR_PROPS_DEVICE
|
||||
#define USB_CFG_DESCR_PROPS_DEVICE sizeof(usbDescriptorDevice)
|
||||
PROGMEM char usbDescriptorDevice[] = { /* USB device descriptor */
|
||||
PROGMEM const char usbDescriptorDevice[] = { /* USB device descriptor */
|
||||
18, /* sizeof(usbDescriptorDevice): length of descriptor in bytes */
|
||||
USBDESCR_DEVICE, /* descriptor type */
|
||||
0x10, 0x01, /* USB version supported */
|
||||
@@ -139,7 +137,7 @@ PROGMEM char usbDescriptorDevice[] = { /* USB device descriptor */
|
||||
#if USB_CFG_DESCR_PROPS_CONFIGURATION == 0
|
||||
#undef USB_CFG_DESCR_PROPS_CONFIGURATION
|
||||
#define USB_CFG_DESCR_PROPS_CONFIGURATION sizeof(usbDescriptorConfiguration)
|
||||
PROGMEM char usbDescriptorConfiguration[] = { /* USB configuration descriptor */
|
||||
PROGMEM const char usbDescriptorConfiguration[] = { /* USB configuration descriptor */
|
||||
9, /* sizeof(usbDescriptorConfiguration): length of descriptor in bytes */
|
||||
USBDESCR_CONFIG, /* descriptor type */
|
||||
18 + 7 * USB_CFG_HAVE_INTRIN_ENDPOINT + 7 * USB_CFG_HAVE_INTRIN_ENDPOINT3 +
|
||||
@@ -149,9 +147,9 @@ PROGMEM char usbDescriptorConfiguration[] = { /* USB configuration descriptor
|
||||
1, /* index of this configuration */
|
||||
0, /* configuration name string index */
|
||||
#if USB_CFG_IS_SELF_POWERED
|
||||
USBATTR_SELFPOWER, /* attributes */
|
||||
(1 << 7) | USBATTR_SELFPOWER, /* attributes */
|
||||
#else
|
||||
(char)USBATTR_BUSPOWER, /* attributes */
|
||||
(1 << 7), /* attributes */
|
||||
#endif
|
||||
USB_CFG_MAX_BUS_POWER/2, /* max USB current in 2mA units */
|
||||
/* interface descriptor follows inline: */
|
||||
@@ -184,7 +182,7 @@ PROGMEM char usbDescriptorConfiguration[] = { /* USB configuration descriptor
|
||||
#if USB_CFG_HAVE_INTRIN_ENDPOINT3 /* endpoint descriptor for endpoint 3 */
|
||||
7, /* sizeof(usbDescrEndpoint) */
|
||||
USBDESCR_ENDPOINT, /* descriptor type = endpoint */
|
||||
(char)0x83, /* IN endpoint number 1 */
|
||||
(char)(0x80 | USB_CFG_EP3_NUMBER), /* IN endpoint number 3 */
|
||||
0x03, /* attrib: Interrupt endpoint */
|
||||
8, 0, /* maximum packet size */
|
||||
USB_CFG_INTR_POLL_INTERVAL, /* in ms */
|
||||
@@ -301,7 +299,7 @@ USB_PUBLIC void usbSetInterrupt3(uchar *data, uchar len)
|
||||
len = usbFunctionDescriptor(rq); \
|
||||
}else{ \
|
||||
len = USB_PROP_LENGTH(cfgProp); \
|
||||
usbMsgPtr = (uchar *)(staticName); \
|
||||
usbMsgPtr = (usbMsgPtr_t)(staticName); \
|
||||
} \
|
||||
}
|
||||
|
||||
@@ -361,7 +359,8 @@ uchar flags = USB_FLG_MSGPTR_IS_ROM;
|
||||
*/
|
||||
static inline usbMsgLen_t usbDriverSetup(usbRequest_t *rq)
|
||||
{
|
||||
uchar len = 0, *dataPtr = usbTxBuf + 9; /* there are 2 bytes free space at the end of the buffer */
|
||||
usbMsgLen_t len = 0;
|
||||
uchar *dataPtr = usbTxBuf + 9; /* there are 2 bytes free space at the end of the buffer */
|
||||
uchar value = rq->wValue.bytes[0];
|
||||
#if USB_CFG_IMPLEMENT_HALT
|
||||
uchar index = rq->wIndex.bytes[0];
|
||||
@@ -408,7 +407,7 @@ uchar index = rq->wIndex.bytes[0];
|
||||
SWITCH_DEFAULT /* 7=SET_DESCRIPTOR, 12=SYNC_FRAME */
|
||||
/* Should we add an optional hook here? */
|
||||
SWITCH_END
|
||||
usbMsgPtr = dataPtr;
|
||||
usbMsgPtr = (usbMsgPtr_t)dataPtr;
|
||||
skipMsgPtrAssignment:
|
||||
return len;
|
||||
}
|
||||
@@ -498,7 +497,8 @@ static uchar usbDeviceRead(uchar *data, uchar len)
|
||||
}else
|
||||
#endif
|
||||
{
|
||||
uchar i = len, *r = usbMsgPtr;
|
||||
uchar i = len;
|
||||
usbMsgPtr_t r = usbMsgPtr;
|
||||
if(usbMsgFlags & USB_FLG_MSGPTR_IS_ROM){ /* ROM data */
|
||||
do{
|
||||
uchar c = USB_READ_FLASH(r); /* assign to char size variable to enforce byte ops */
|
||||
@@ -507,7 +507,8 @@ static uchar usbDeviceRead(uchar *data, uchar len)
|
||||
}while(--i);
|
||||
}else{ /* RAM data */
|
||||
do{
|
||||
*data++ = *r++;
|
||||
*data++ = *((uchar *)r);
|
||||
r++;
|
||||
}while(--i);
|
||||
}
|
||||
usbMsgPtr = r;
|
||||
@@ -557,6 +558,8 @@ uchar isReset = !notResetState;
|
||||
USB_RESET_HOOK(isReset);
|
||||
wasReset = isReset;
|
||||
}
|
||||
#else
|
||||
notResetState = notResetState; // avoid compiler warning
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user