mirror of
https://github.com/arduino/Arduino.git
synced 2025-02-17 11:54:33 +01:00
Added 16 byte endpoint support
This commit is contained in:
parent
a1cf7042b2
commit
fd6f57d2d7
@ -49,8 +49,8 @@ const CDCDescriptor _cdcInterface =
|
||||
|
||||
// CDC data interface
|
||||
D_INTERFACE(CDC_DATA_INTERFACE,2,CDC_DATA_INTERFACE_CLASS,0,0),
|
||||
D_ENDPOINT(USB_ENDPOINT_OUT(CDC_ENDPOINT_OUT),USB_ENDPOINT_TYPE_BULK,0x40,0),
|
||||
D_ENDPOINT(USB_ENDPOINT_IN (CDC_ENDPOINT_IN ),USB_ENDPOINT_TYPE_BULK,0x40,0)
|
||||
D_ENDPOINT(USB_ENDPOINT_OUT(CDC_ENDPOINT_OUT),USB_ENDPOINT_TYPE_BULK,USB_EP_SIZE,0),
|
||||
D_ENDPOINT(USB_ENDPOINT_IN (CDC_ENDPOINT_IN ),USB_ENDPOINT_TYPE_BULK,USB_EP_SIZE,0)
|
||||
};
|
||||
|
||||
int CDC_GetInterface(u8* interfaceNum)
|
||||
|
@ -32,6 +32,12 @@ typedef unsigned long u32;
|
||||
|
||||
#include "Arduino.h"
|
||||
|
||||
// This definitions is usefull if you want to reduce the EP_SIZE to 16
|
||||
// at the moment only 64 and 16 as EP_SIZE for all EPs are supported except the control endpoint
|
||||
#ifndef USB_EP_SIZE
|
||||
#define USB_EP_SIZE 64
|
||||
#endif
|
||||
|
||||
#if defined(USBCON)
|
||||
|
||||
#include "USBDesc.h"
|
||||
|
@ -253,7 +253,7 @@ u8 USB_SendSpace(u8 ep)
|
||||
LockEP lock(ep);
|
||||
if (!ReadWriteAllowed())
|
||||
return 0;
|
||||
return 64 - FifoByteCount();
|
||||
return USB_EP_SIZE - FifoByteCount();
|
||||
}
|
||||
|
||||
// Blocking Send of data to an endpoint
|
||||
@ -326,6 +326,7 @@ u8 _initEndpoints[] =
|
||||
|
||||
#define EP_SINGLE_64 0x32 // EP0
|
||||
#define EP_DOUBLE_64 0x36 // Other endpoints
|
||||
#define EP_SINGLE_16 0x12
|
||||
|
||||
static
|
||||
void InitEP(u8 index, u8 type, u8 size)
|
||||
@ -344,7 +345,13 @@ void InitEndpoints()
|
||||
UENUM = i;
|
||||
UECONX = (1<<EPEN);
|
||||
UECFG0X = _initEndpoints[i];
|
||||
#if USB_EP_SIZE == 16
|
||||
UECFG1X = EP_SINGLE_16;
|
||||
#elif USB_EP_SIZE == 64
|
||||
UECFG1X = EP_DOUBLE_64;
|
||||
#else
|
||||
#error Unsupported value for USB_EP_SIZE
|
||||
#endif
|
||||
}
|
||||
UERST = 0x7E; // And reset them
|
||||
UERST = 0;
|
||||
|
@ -59,7 +59,7 @@ int HID_GetInterface(u8* interfaceNum)
|
||||
{
|
||||
D_INTERFACE(HID_INTERFACE,1,3,0,0),
|
||||
D_HIDREPORT(sizeof_hidReportDescriptor),
|
||||
D_ENDPOINT(USB_ENDPOINT_IN (HID_ENDPOINT_INT),USB_ENDPOINT_TYPE_INTERRUPT,0x40,0x01)
|
||||
D_ENDPOINT(USB_ENDPOINT_IN (HID_ENDPOINT_INT),USB_ENDPOINT_TYPE_INTERRUPT,USB_EP_SIZE,0x01)
|
||||
};
|
||||
return USB_SendControl(0,&_hidInterface,sizeof(_hidInterface));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user