Maxim Integrated 73S12xxF Software User Manual
Page 45

UG_12xxF_016
73S12xxF Software User Guide
Rev. 1.50
45
unsigned int
idProduct;
// Always 0x0500
unsigned int
Device;
// 0x4600;
unsigned char iManufacturer;
// 0, TBD;
unsigned char iProduct;
// 0, TBD;
unsigned char iSerialNum;
// 0, TBD;
unsigned char NumConfigs;
// 1, TBD;
};
struct USB_Interface_t
{
unsigned char Length;
// Always 9.
unsigned char DescriptorType;
// Always
INTERFACE_DESCRIPTOR = 4.
unsigned char InterfaceNumber;
// 0.
unsigned char AlternateSetting;
// 0.
unsigned char NumEndPoints;
// Always NUMBER_OF_EPS - 1 = 3;
unsigned char InterfaceClass;
// 0x0B.
unsigned char InterfaceSubClass;
// 0.
unsigned char InterfaceProtocol;
// 0.
unsigned char iInterface;
// 0.
};
#define CLASS 0x0B
//Always 0B for Smart Card Reader
#define SUBCLASS 0
struct USB_EP_t
{
unsigned char Length;
// Always 7.
unsigned char DescriptorType;
// Always EP_DESCRIPTOR = 5.
unsigned char EndpointAddress;
// (IN or OUT) plus (1 or 2).
unsigned char Attributes;
// BULK or INTERRUPT.
unsigned int
MaxPacketSize;
// 16, 32 or 64.
unsigned char Interval;
// 0 for BULK. 10 for INTERRUPT.
};
#define IN
0x80
#define OUT
0x00
#define BULK
0x02
#define INTERRUPT
0x03
#define INTERVAL 10
// Interrupt EndPoint interval in frames (about 10 msec).
struct USB_Config_t
{
unsigned char Length;
// Always 9.
unsigned char DescriptorType;
// Always CONFIGURATION_DESCRIPTOR = 2.
unsigned char TotalLengthL;
// CONFIG_DESC_TOTAL_SIZE = 93
// (One Interface, three Endpoints).
unsigned char TotalLengthH;
// Always 0.
unsigned char NumInterfaces;
// NUMBER_OF_INTERFACES = 1.
unsigned char ConfigurationValue;
// Always 1.
unsigned char iConfiguration;
// Application specific.
unsigned char Attributes;
// Application specific.
unsigned char MaxPower;
// Application specific.
struct USB_Interface_t I;
};
#define ATTRIBUTES BIT7 | SELF_POWERED
// application specific, self-powered