AppleUSBCDCCommon.h [plain text]
#ifndef __APPLEUSBCDCCOMMON__
#define __APPLEUSBCDCCOMMON__
#define kUSBAbstractControlModel 2
#define kUSBEthernetControlModel 6
#define kUSBWirelessHandsetControlModel 8
#define kUSBDeviceManagementModel 9
#define kUSBMobileDirectLineModel 10
#define kUSBOBEXModel 11
#define kUSBv25 1
#define kUSBv25PCCA 2
#define kUSBv25PCCAO 3
#define kUSBv25GSM 4
#define kUSBv253GPPP 5
#define kUSBv25CS 6
enum
{
kUSBSEND_ENCAPSULATED_COMMAND = 0, kUSBGET_ENCAPSULATED_RESPONSE = 1,
kUSBSET_COMM_FEATURE = 2,
kUSBGET_COMM_FEATURE = 3,
kUSBCLEAR_COMM_FEATURE = 4,
kUSBSET_LINE_CODING = 0x20,
kUSBGET_LINE_CODING = 0x21,
kUSBSET_CONTROL_LINE_STATE = 0x22,
kUSBSEND_BREAK = 0x23
};
enum
{
kSet_Ethernet_Multicast_Filter = 0x40,
kSet_Ethernet_PM_Packet_Filter = 0x41,
kGet_Ethernet_PM_Packet_Filter = 0x42,
kSet_Ethernet_Packet_Filter = 0x43,
kGet_Ethernet_Statistics = 0x44,
kGet_AUX_Inputs = 4,
kSet_AUX_Outputs = 5,
kSet_Temp_MAC = 6,
kGet_Temp_MAC = 7,
kSet_URB_Size = 8,
kSet_SOFS_To_Wait = 9,
kSet_Even_Packets = 10,
kScan = 0xFF
};
enum
{
kUSBNETWORK_CONNECTION = 0, kUSBRESPONSE_AVAILABLE = 1,
kUSBSERIAL_STATE = 0x20,
kUSBCONNECTION_SPEED_CHANGE = 0x2A
};
enum
{
CS_INTERFACE = 0x24,
Header_FunctionalDescriptor = 0x00,
CM_FunctionalDescriptor = 0x01,
ACM_FunctionalDescriptor = 0x02,
Union_FunctionalDescriptor = 0x06,
CS_FunctionalDescriptor = 0x07,
ECM_Functional_Descriptor = 0x0f,
WCM_FunctionalDescriptor = 0x11,
DMM_FunctionalDescriptor = 0x14,
OBEX_FunctionalDescriptor = 0x15,
CM_ManagementData = 0x01,
CM_ManagementOnData = 0x02,
ACM_DeviceSuppCommFeature = 0x01,
ACM_DeviceSuppControl = 0x02,
ACM_DeviceSuppBreak = 0x04,
ACM_DeviceSuppNetConnect = 0x08
};
enum
{
kXMIT_OK = 0x01, kRCV_OK = 0x02,
kXMIT_ERROR = 0x04,
kRCV_ERROR = 0x08,
kRCV_CRC_ERROR = 0x02, kRCV_ERROR_ALIGNMENT = 0x08,
kXMIT_ONE_COLLISION = 0x10,
kXMIT_MORE_COLLISIONS = 0x20,
kXMIT_DEFERRED = 0x40,
kXMIT_MAX_COLLISION = 0x80,
kRCV_OVERRUN = 0x01, kXMIT_TIMES_CARRIER_LOST = 0x08,
kXMIT_LATE_COLLISIONS = 0x10
};
enum
{
kXMIT_OK_REQ = 0x0001,
kRCV_OK_REQ = 0x0002,
kXMIT_ERROR_REQ = 0x0003,
kRCV_ERROR_REQ = 0x0004,
kRCV_CRC_ERROR_REQ = 0x0012,
kRCV_ERROR_ALIGNMENT_REQ = 0x0014,
kXMIT_ONE_COLLISION_REQ = 0x0015,
kXMIT_MORE_COLLISIONS_REQ = 0x0016,
kXMIT_DEFERRED_REQ = 0x0017,
kXMIT_MAX_COLLISION_REQ = 0x0018,
kRCV_OVERRUN_REQ = 0x0019,
kXMIT_TIMES_CARRIER_LOST_REQ = 0x001c,
kXMIT_LATE_COLLISIONS_REQ = 0x001d
};
enum
{
kPACKET_TYPE_PROMISCUOUS = 0x0001,
kPACKET_TYPE_ALL_MULTICAST = 0x0002,
kPACKET_TYPE_DIRECTED = 0x0004,
kPACKET_TYPE_BROADCAST = 0x0008,
kPACKET_TYPE_MULTICAST = 0x0010
};
typedef struct
{
UInt8 bFunctionLength;
UInt8 bDescriptorType;
UInt8 bDescriptorSubtype;
} FunctionalDescriptorHeader;
typedef struct
{
UInt8 bFunctionLength;
UInt8 bDescriptorType;
UInt8 bDescriptorSubtype;
UInt8 bcdCDC1;
UInt8 bcdCDC2;
} HDRFunctionalDescriptor;
typedef struct
{
UInt8 bFunctionLength;
UInt8 bDescriptorType;
UInt8 bDescriptorSubtype;
UInt8 bmCapabilities;
UInt8 bDataInterface;
} CMFunctionalDescriptor;
typedef struct
{
UInt8 bFunctionLength;
UInt8 bDescriptorType;
UInt8 bDescriptorSubtype;
UInt8 bmCapabilities;
} ACMFunctionalDescriptor;
typedef struct
{
UInt8 bFunctionLength;
UInt8 bDescriptorType;
UInt8 bDescriptorSubtype;
UInt8 iMACAddress;
UInt8 bmEthernetStatistics[4];
UInt16 wMaxSegmentSize;
UInt16 wNumberMCFilters;
UInt8 bNumberPowerFilters;
} ECMFunctionalDescriptor;
typedef struct
{
UInt8 bFunctionLength;
UInt8 bDescriptorType;
UInt8 bDescriptorSubtype;
UInt8 bcdCDC1;
UInt8 bcdCDC2;
} WHCMFunctionalDescriptor;
typedef struct
{
UInt8 bFunctionLength;
UInt8 bDescriptorType;
UInt8 bDescriptorSubtype;
UInt8 bMasterInterface;
UInt8 bSlaveInterface[];
} UnionFunctionalDescriptor;
static inline unsigned long tval2long(mach_timespec val)
{
return (val.tv_sec * NSEC_PER_SEC) + val.tv_nsec;
}
static inline mach_timespec long2tval(unsigned long val)
{
mach_timespec tval;
tval.tv_sec = val / NSEC_PER_SEC;
tval.tv_nsec = val % NSEC_PER_SEC;
return tval;
}
static inline UInt8 Asciify(UInt8 i)
{
i &= 0xF;
if (i < 10)
return('0' + i);
else return(55 + i);
}
#endif