Run wspurify script on /trunk/ and /branches/ C source files, to remove any trailing whitespace at the end of each line.
This commit is contained in:
parent
77f354609f
commit
f201f6697b
278 changed files with 1000 additions and 910 deletions
|
|
@ -73,3 +73,4 @@
|
|||
|
||||
/** @} */
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -125,3 +125,4 @@
|
|||
|
||||
/** @} */
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -218,7 +218,7 @@
|
|||
* allows for pitch adjustments to be made via control requests directed at the endpoint.
|
||||
*/
|
||||
#define AUDIO_EP_PITCH_CONTROL (1 << 1)
|
||||
|
||||
|
||||
/* Enums: */
|
||||
/** Enum for possible Class, Subclass and Protocol values of device and interface descriptors relating to the Audio
|
||||
* device class.
|
||||
|
|
@ -244,7 +244,7 @@
|
|||
* interface belongs to the Streaming Audio protocol.
|
||||
*/
|
||||
};
|
||||
|
||||
|
||||
/** Audio class specific interface description subtypes, for the Audio Control interface. */
|
||||
enum Audio_CSInterface_AC_SubTypes_t
|
||||
{
|
||||
|
|
@ -287,7 +287,7 @@
|
|||
AUDIO_REQ_GetMemory = 0x85, /**< Audio class-specific request to get the memory value of a parameter within the device. */
|
||||
AUDIO_REQ_GetStatus = 0xFF, /**< Audio class-specific request to get the device status. */
|
||||
};
|
||||
|
||||
|
||||
/** Enum for Audio class specific Endpoint control modifiers which can be set and retrieved by a USB host, if the corresponding
|
||||
* endpoint control is indicated to be supported in the Endpoint's Audio-class specific endpoint descriptor.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@
|
|||
*/
|
||||
#define CDC_CONTROL_LINE_IN_OVERRUNERROR (1 << 6)
|
||||
//@}
|
||||
|
||||
|
||||
/** Macro to define a CDC class-specific functional descriptor. CDC functional descriptors have a
|
||||
* uniform structure but variable sized data payloads, thus cannot be represented accurately by
|
||||
* a single typedef struct. A macro is used instead so that functional descriptors can be created
|
||||
|
|
@ -161,7 +161,7 @@
|
|||
* belongs to no specific protocol of the CDC data class.
|
||||
*/
|
||||
};
|
||||
|
||||
|
||||
/** Enum for the CDC class specific control requests that can be issued by the USB bus host. */
|
||||
enum CDC_ClassRequests_t
|
||||
{
|
||||
|
|
@ -355,7 +355,7 @@
|
|||
uint8_t bMasterInterface; /**< Interface number of the CDC Control interface. */
|
||||
uint8_t bSlaveInterface0; /**< Interface number of the CDC Data interface. */
|
||||
} ATTR_PACKED USB_CDC_StdDescriptor_FunctionalUnion_t;
|
||||
|
||||
|
||||
/** \brief CDC Virtual Serial Port Line Encoding Settings Structure.
|
||||
*
|
||||
* Type define for a CDC Line Encoding structure, used to hold the various encoding parameters for a virtual
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@
|
|||
/** Constant for a keyboard report modifier byte, indicating that the keyboard's right GUI key is currently pressed. */
|
||||
#define HID_KEYBOARD_MODIFIER_RIGHTGUI (1 << 7)
|
||||
//@}
|
||||
|
||||
|
||||
/** \name Keyboard Standard Report LED Masks */
|
||||
//@{
|
||||
/** Constant for a keyboard output report LED byte, indicating that the host's NUM LOCK mode is currently set. */
|
||||
|
|
@ -108,7 +108,7 @@
|
|||
//@}
|
||||
|
||||
/** \name Keyboard Standard Report Key Scan-codes */
|
||||
//@{
|
||||
//@{
|
||||
#define HID_KEYBOARD_SC_ERROR_ROLLOVER 0x01
|
||||
#define HID_KEYBOARD_SC_POST_FAIL 0x02
|
||||
#define HID_KEYBOARD_SC_ERROR_UNDEFINED 0x03
|
||||
|
|
@ -208,7 +208,7 @@
|
|||
#define HID_KEYBOARD_SC_KEYPAD_9_AND_PAGE_UP 0x61
|
||||
#define HID_KEYBOARD_SC_KEYPAD_0_AND_INSERT 0x62
|
||||
#define HID_KEYBOARD_SC_KEYPAD_DOT_AND_DELETE 0x63
|
||||
#define HID_KEYBOARD_SC_NON_US_BACKSLASH_AND_PIPE 0x64
|
||||
#define HID_KEYBOARD_SC_NON_US_BACKSLASH_AND_PIPE 0x64
|
||||
#define HID_KEYBOARD_SC_POWER 0x66
|
||||
#define HID_KEYBOARD_SC_EQUAL_SIGN 0x67
|
||||
#define HID_KEYBOARD_SC_F13 0x68
|
||||
|
|
@ -496,7 +496,7 @@
|
|||
* \param[in] VendorPageNum Vendor Defined HID Usage Page index, ranging from 0x00 to 0xFF.
|
||||
* \param[in] CollectionUsage Vendor Usage for the encompassing report IN and OUT collection, ranging from 0x00 to 0xFF.
|
||||
* \param[in] DataINUsage Vendor Usage for the IN report data, ranging from 0x00 to 0xFF.
|
||||
* \param[in] DataOUTUsage Vendor Usage for the OUT report data, ranging from 0x00 to 0xFF.
|
||||
* \param[in] DataOUTUsage Vendor Usage for the OUT report data, ranging from 0x00 to 0xFF.
|
||||
* \param[in] NumBytes Length of the data IN and OUT reports.
|
||||
*/
|
||||
#define HID_DESCRIPTOR_VENDOR(VendorPageNum, CollectionUsage, DataINUsage, DataOUTUsage, NumBytes) \
|
||||
|
|
@ -517,7 +517,7 @@
|
|||
HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), \
|
||||
HID_RI_END_COLLECTION(0)
|
||||
//@}
|
||||
|
||||
|
||||
/* Type Defines: */
|
||||
/** Enum for possible Class, Subclass and Protocol values of device and interface descriptors relating to the HID
|
||||
* device class.
|
||||
|
|
@ -543,7 +543,7 @@
|
|||
* belongs to the Mouse HID boot protocol.
|
||||
*/
|
||||
};
|
||||
|
||||
|
||||
/** Enum for the HID class specific control requests that can be issued by the USB bus host. */
|
||||
enum HID_ClassRequests_t
|
||||
{
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ uint8_t USB_ProcessHIDReport(const uint8_t* ReportData,
|
|||
case HID_RI_USAGE_PAGE(0):
|
||||
if ((HIDReportItem & HID_RI_DATA_SIZE_MASK) == HID_RI_DATA_BITS_32)
|
||||
CurrStateTable->Attributes.Usage.Page = (ReportItemData >> 16);
|
||||
|
||||
|
||||
CurrStateTable->Attributes.Usage.Page = ReportItemData;
|
||||
break;
|
||||
case HID_RI_LOGICAL_MINIMUM(0):
|
||||
|
|
@ -359,3 +359,4 @@ uint16_t USB_GetHIDReportSize(HID_ReportInfo_t* const ParserData,
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@
|
|||
|
||||
#include "HIDReportData.h"
|
||||
#include "HIDClassCommon.h"
|
||||
|
||||
|
||||
/* Enable C linkage for C++ Compilers: */
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
|
|
|
|||
|
|
@ -63,15 +63,15 @@
|
|||
#define HID_RI_DATA_BITS_32 0x03
|
||||
#define HID_RI_DATA_BITS(DataBits) HID_RI_DATA_BITS_ ## DataBits
|
||||
|
||||
#define _HID_RI_ENCODE_0(Data)
|
||||
#define _HID_RI_ENCODE_0(Data)
|
||||
#define _HID_RI_ENCODE_8(Data) , (Data & 0xFF)
|
||||
#define _HID_RI_ENCODE_16(Data) _HID_RI_ENCODE_8(Data) _HID_RI_ENCODE_8(Data >> 8)
|
||||
#define _HID_RI_ENCODE_32(Data) _HID_RI_ENCODE_16(Data) _HID_RI_ENCODE_16(Data >> 16)
|
||||
#define _HID_RI_ENCODE(DataBits, ...) _HID_RI_ENCODE_ ## DataBits(__VA_ARGS__)
|
||||
|
||||
|
||||
#define _HID_RI_ENTRY(Type, Tag, DataBits, ...) (Type | Tag | HID_RI_DATA_BITS(DataBits)) _HID_RI_ENCODE(DataBits, (__VA_ARGS__))
|
||||
#endif
|
||||
|
||||
|
||||
/* Public Interface - May be used in end-application: */
|
||||
/* Macros: */
|
||||
/** \name HID Input, Output and Feature Report Descriptor Item Flags */
|
||||
|
|
@ -95,7 +95,7 @@
|
|||
#define HID_IOF_BUFFERED_BYTES (1 << 8)
|
||||
#define HID_IOF_BITFIELD (0 << 8)
|
||||
//@}
|
||||
|
||||
|
||||
/** \name HID Report Descriptor Item Macros */
|
||||
//@{
|
||||
#define HID_RI_INPUT(DataBits, ...) _HID_RI_ENTRY(HID_RI_TYPE_MAIN , 0x80, DataBits, __VA_ARGS__)
|
||||
|
|
|
|||
|
|
@ -117,7 +117,7 @@
|
|||
/** SCSI Command Code for a MODE SENSE (10) command. */
|
||||
#define SCSI_CMD_MODE_SENSE_10 0x5A
|
||||
//@}
|
||||
|
||||
|
||||
/** \name SCSI Sense Key Values */
|
||||
//@{
|
||||
/** SCSI Sense Code to indicate no error has occurred. */
|
||||
|
|
@ -164,7 +164,7 @@
|
|||
/** SCSI Sense Code to indicate that the source data did not match the data read from the medium. */
|
||||
#define SCSI_SENSE_KEY_MISCOMPARE 0x0E
|
||||
//@}
|
||||
|
||||
|
||||
/** \name SCSI Additional Sense Codes */
|
||||
//@{
|
||||
/** SCSI Additional Sense Code to indicate no additional sense information is available. */
|
||||
|
|
@ -196,7 +196,7 @@
|
|||
/** SCSI Additional Sense Code to indicate that no removable medium is inserted into the device. */
|
||||
#define SCSI_ASENSE_MEDIUM_NOT_PRESENT 0x3A
|
||||
//@}
|
||||
|
||||
|
||||
/** \name SCSI Additional Sense Key Code Qualifiers */
|
||||
//@{
|
||||
/** SCSI Additional Sense Qualifier Code to indicate no additional sense qualifier information is available. */
|
||||
|
|
@ -213,7 +213,7 @@
|
|||
/** SCSI Additional Sense Qualifier Code to indicate that an operation is currently in progress. */
|
||||
#define SCSI_ASENSEQ_OPERATION_IN_PROGRESS 0x07
|
||||
//@}
|
||||
|
||||
|
||||
/* Enums: */
|
||||
/** Enum for possible Class, Subclass and Protocol values of device and interface descriptors relating to the Mass
|
||||
* Storage device class.
|
||||
|
|
@ -231,7 +231,7 @@
|
|||
* belongs to the Bulk Only Transport protocol of the Mass Storage class.
|
||||
*/
|
||||
};
|
||||
|
||||
|
||||
/** Enum for the Mass Storage class specific control requests that can be issued by the USB bus host. */
|
||||
enum MS_ClassRequests_t
|
||||
{
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@
|
|||
* belongs to the Bidirectional protocol of the Printer class.
|
||||
*/
|
||||
};
|
||||
|
||||
|
||||
/** Enum for the Printer class specific control requests that can be issued by the USB bus host. */
|
||||
enum PRNT_ClassRequests_t
|
||||
{
|
||||
|
|
@ -106,7 +106,7 @@
|
|||
PRNT_REQ_SoftReset = 0x02, /**< Printer class-specific request to reset the device, ready for new
|
||||
* printer commands.
|
||||
*/
|
||||
};
|
||||
};
|
||||
|
||||
/* Disable C linkage for C++ Compilers: */
|
||||
#if defined(__cplusplus)
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@
|
|||
#define REMOTE_NDIS_MEDIA_STATE_CONNECTED 0x00000000UL
|
||||
#define REMOTE_NDIS_MEDIA_STATE_DISCONNECTED 0x00000001UL
|
||||
//@}
|
||||
|
||||
|
||||
/** \name RNDIS Media Types */
|
||||
//@{
|
||||
#define REMOTE_NDIS_MEDIUM_802_3 0x00000000UL
|
||||
|
|
@ -124,7 +124,7 @@
|
|||
#define REMOTE_NDIS_DF_CONNECTIONLESS 0x00000001UL
|
||||
#define REMOTE_NDIS_DF_CONNECTION_ORIENTED 0x00000002UL
|
||||
//@}
|
||||
|
||||
|
||||
/** \name RNDIS Packet Types */
|
||||
//@{
|
||||
#define REMOTE_NDIS_PACKET_DIRECTED 0x00000001UL
|
||||
|
|
@ -140,7 +140,7 @@
|
|||
#define REMOTE_NDIS_PACKET_FUNCTIONAL 0x00004000UL
|
||||
#define REMOTE_NDIS_PACKET_MAC_FRAME 0x00008000UL
|
||||
//@}
|
||||
|
||||
|
||||
/** \name RNDIS OID Values */
|
||||
//@{
|
||||
#define OID_GEN_SUPPORTED_LIST 0x00010101UL
|
||||
|
|
|
|||
|
|
@ -50,16 +50,16 @@ void Audio_Device_ProcessControlRequest(USB_ClassInfo_Audio_Device_t* const Audi
|
|||
else if ((USB_ControlRequest.bmRequestType & CONTROL_REQTYPE_RECIPIENT) == REQREC_ENDPOINT)
|
||||
{
|
||||
bool EndpointFilterMatch = false;
|
||||
|
||||
|
||||
EndpointFilterMatch |= (AudioInterfaceInfo->Config.DataINEndpointNumber &&
|
||||
((uint8_t)USB_ControlRequest.wIndex == (ENDPOINT_DIR_IN | AudioInterfaceInfo->Config.DataINEndpointNumber)));
|
||||
|
||||
|
||||
EndpointFilterMatch |= (AudioInterfaceInfo->Config.DataOUTEndpointNumber &&
|
||||
((uint8_t)USB_ControlRequest.wIndex == (ENDPOINT_DIR_OUT | AudioInterfaceInfo->Config.DataOUTEndpointNumber)));
|
||||
|
||||
if (!(EndpointFilterMatch))
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
switch (USB_ControlRequest.bRequest)
|
||||
{
|
||||
|
|
@ -92,20 +92,20 @@ void Audio_Device_ProcessControlRequest(USB_ClassInfo_Audio_Device_t* const Audi
|
|||
uint8_t EndpointProperty = USB_ControlRequest.bRequest;
|
||||
uint8_t EndpointAddress = (uint8_t)USB_ControlRequest.wIndex;
|
||||
uint8_t EndpointControl = (USB_ControlRequest.wValue >> 8);
|
||||
|
||||
|
||||
if (CALLBACK_Audio_Device_GetSetEndpointProperty(AudioInterfaceInfo, EndpointProperty, EndpointAddress,
|
||||
EndpointControl, NULL, NULL))
|
||||
{
|
||||
uint16_t ValueLength = USB_ControlRequest.wLength;
|
||||
uint8_t Value[ValueLength];
|
||||
|
||||
|
||||
Endpoint_ClearSETUP();
|
||||
Endpoint_Read_Control_Stream_LE(Value, ValueLength);
|
||||
Endpoint_ClearIN();
|
||||
Endpoint_ClearIN();
|
||||
|
||||
CALLBACK_Audio_Device_GetSetEndpointProperty(AudioInterfaceInfo, EndpointProperty, EndpointAddress,
|
||||
EndpointControl, &ValueLength, Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
|
@ -126,7 +126,7 @@ void Audio_Device_ProcessControlRequest(USB_ClassInfo_Audio_Device_t* const Audi
|
|||
{
|
||||
Endpoint_ClearSETUP();
|
||||
Endpoint_Write_Control_Stream_LE(Value, ValueLength);
|
||||
Endpoint_ClearOUT();
|
||||
Endpoint_ClearOUT();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -180,3 +180,4 @@ void Audio_Device_Event_Stub(void)
|
|||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@
|
|||
* \param[in,out] AudioInterfaceInfo Pointer to a structure containing an Audio Class configuration and state.
|
||||
*/
|
||||
void Audio_Device_ProcessControlRequest(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
|
||||
|
||||
|
||||
/** Audio class driver callback for the setting and retrieval of streaming endpoint properties. This callback must be implemented
|
||||
* in the user application to handle property manipulations on streaming audio endpoints.
|
||||
*
|
||||
|
|
@ -357,12 +357,12 @@
|
|||
/* Function Prototypes: */
|
||||
#if defined(__INCLUDE_FROM_AUDIO_DEVICE_C)
|
||||
void Audio_Device_Event_Stub(void) ATTR_CONST;
|
||||
|
||||
|
||||
void EVENT_Audio_Device_StreamStartStop(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo)
|
||||
ATTR_WEAK ATTR_NON_NULL_PTR_ARG(1) ATTR_ALIAS(Audio_Device_Event_Stub);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Disable C linkage for C++ Compilers: */
|
||||
#if defined(__cplusplus)
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ void CDC_Device_ProcessControlRequest(USB_ClassInfo_CDC_Device_t* const CDCInter
|
|||
|
||||
Endpoint_ClearOUT();
|
||||
Endpoint_ClearStatusStage();
|
||||
|
||||
|
||||
EVENT_CDC_Device_LineEncodingChanged(CDCInterfaceInfo);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -334,7 +334,7 @@
|
|||
#endif
|
||||
|
||||
void CDC_Device_Event_Stub(void) ATTR_CONST;
|
||||
|
||||
|
||||
void EVENT_CDC_Device_LineEncodingChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
|
||||
ATTR_WEAK ATTR_NON_NULL_PTR_ARG(1) ATTR_ALIAS(CDC_Device_Event_Stub);
|
||||
void EVENT_CDC_Device_ControLineStateChanged(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ void HID_Device_ProcessControlRequest(USB_ClassInfo_HID_Device_t* const HIDInter
|
|||
memcpy(HIDInterfaceInfo->Config.PrevReportINBuffer, ReportData,
|
||||
HIDInterfaceInfo->Config.PrevReportINBufferSize);
|
||||
}
|
||||
|
||||
|
||||
Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);
|
||||
|
||||
Endpoint_ClearSETUP();
|
||||
|
|
@ -84,7 +84,7 @@ void HID_Device_ProcessControlRequest(USB_ClassInfo_HID_Device_t* const HIDInter
|
|||
Endpoint_ClearSETUP();
|
||||
Endpoint_Read_Control_Stream_LE(ReportData, ReportSize);
|
||||
Endpoint_ClearIN();
|
||||
|
||||
|
||||
CALLBACK_HID_Device_ProcessHIDReport(HIDInterfaceInfo, ReportID, ReportType,
|
||||
&ReportData[ReportID ? 1 : 0], ReportSize - (ReportID ? 1 : 0));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@
|
|||
} Config; /**< Config data for the USB class interface within the device. All elements in this section
|
||||
* <b>must</b> be set or the interface will fail to enumerate and operate correctly.
|
||||
*/
|
||||
|
||||
|
||||
struct
|
||||
{
|
||||
// No state information for this class
|
||||
|
|
|
|||
|
|
@ -160,7 +160,7 @@ static bool MS_Device_ReadInCommandBlock(USB_ClassInfo_MS_Device_t* const MSInte
|
|||
uint16_t BytesProcessed;
|
||||
|
||||
Endpoint_SelectEndpoint(MSInterfaceInfo->Config.DataOUTEndpointNumber);
|
||||
|
||||
|
||||
BytesProcessed = 0;
|
||||
while (Endpoint_Read_Stream_LE(&MSInterfaceInfo->State.CommandBlock,
|
||||
(sizeof(MS_CommandBlockWrapper_t) - 16), &BytesProcessed) ==
|
||||
|
|
@ -231,8 +231,9 @@ static void MS_Device_ReturnCommandStatus(USB_ClassInfo_MS_Device_t* const MSInt
|
|||
if (MSInterfaceInfo->State.IsMassStoreReset)
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Endpoint_ClearIN();
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -238,7 +238,7 @@ void RNDIS_Device_ProcessRNDISControlMessage(USB_ClassInfo_RNDIS_Device_t* const
|
|||
uint16_t ResponseSize;
|
||||
|
||||
QUERY_Response->MessageType = CPU_TO_LE32(REMOTE_NDIS_QUERY_CMPLT);
|
||||
|
||||
|
||||
if (RNDIS_Device_ProcessNDISQuery(RNDISInterfaceInfo, Query_Oid, QueryData, le32_to_cpu(QUERY_Message->InformationBufferLength),
|
||||
ResponseData, &ResponseSize))
|
||||
{
|
||||
|
|
@ -453,7 +453,7 @@ bool RNDIS_Device_IsPacketReceived(USB_ClassInfo_RNDIS_Device_t* const RNDISInte
|
|||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Endpoint_SelectEndpoint(RNDISInterfaceInfo->Config.DataOUTEndpointNumber);
|
||||
return Endpoint_IsOUTReceived();
|
||||
}
|
||||
|
|
@ -467,15 +467,15 @@ uint8_t RNDIS_Device_ReadPacket(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfa
|
|||
{
|
||||
return ENDPOINT_RWSTREAM_DeviceDisconnected;
|
||||
}
|
||||
|
||||
|
||||
Endpoint_SelectEndpoint(RNDISInterfaceInfo->Config.DataOUTEndpointNumber);
|
||||
|
||||
|
||||
*PacketLength = 0;
|
||||
|
||||
if (!(Endpoint_IsOUTReceived()))
|
||||
return ENDPOINT_RWSTREAM_NoError;
|
||||
|
||||
RNDIS_Packet_Message_t RNDISPacketHeader;
|
||||
RNDIS_Packet_Message_t RNDISPacketHeader;
|
||||
Endpoint_Read_Stream_LE(&RNDISPacketHeader, sizeof(RNDIS_Packet_Message_t), NULL);
|
||||
|
||||
if (le32_to_cpu(RNDISPacketHeader.DataLength) > ETHERNET_FRAME_SIZE_MAX)
|
||||
|
|
@ -484,12 +484,12 @@ uint8_t RNDIS_Device_ReadPacket(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfa
|
|||
|
||||
return RNDIS_ERROR_LOGICAL_CMD_FAILED;
|
||||
}
|
||||
|
||||
|
||||
*PacketLength = (uint16_t)le32_to_cpu(RNDISPacketHeader.DataLength);
|
||||
|
||||
Endpoint_Read_Stream_LE(Buffer, *PacketLength, NULL);
|
||||
Endpoint_ClearOUT();
|
||||
|
||||
|
||||
return ENDPOINT_RWSTREAM_NoError;
|
||||
}
|
||||
|
||||
|
|
@ -504,7 +504,7 @@ uint8_t RNDIS_Device_SendPacket(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfa
|
|||
{
|
||||
return ENDPOINT_RWSTREAM_DeviceDisconnected;
|
||||
}
|
||||
|
||||
|
||||
Endpoint_SelectEndpoint(RNDISInterfaceInfo->Config.DataINEndpointNumber);
|
||||
|
||||
if ((ErrorCode = Endpoint_WaitUntilReady()) != ENDPOINT_READYWAIT_NoError)
|
||||
|
|
|
|||
|
|
@ -443,3 +443,4 @@ static int AOA_Host_getchar_Blocking(FILE* Stream)
|
|||
|
||||
#endif
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -325,3 +325,4 @@
|
|||
|
||||
/** @} */
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ uint8_t Audio_Host_ConfigurePipes(USB_ClassInfo_Audio_Host_t* const AudioInterfa
|
|||
return AUDIO_ENUMERROR_NoCompatibleInterfaceFound;
|
||||
}
|
||||
|
||||
AudioControlInterface = DESCRIPTOR_PCAST(ConfigDescriptorData, USB_Descriptor_Interface_t);
|
||||
AudioControlInterface = DESCRIPTOR_PCAST(ConfigDescriptorData, USB_Descriptor_Interface_t);
|
||||
|
||||
if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,
|
||||
DCOMP_Audio_Host_NextAudioStreamInterface) != DESCRIPTOR_SEARCH_COMP_Found)
|
||||
|
|
@ -78,7 +78,7 @@ uint8_t Audio_Host_ConfigurePipes(USB_ClassInfo_Audio_Host_t* const AudioInterfa
|
|||
}
|
||||
|
||||
AudioStreamingInterface = DESCRIPTOR_PCAST(ConfigDescriptorData, USB_Descriptor_Interface_t);
|
||||
|
||||
|
||||
DataINEndpoint = NULL;
|
||||
DataOUTEndpoint = NULL;
|
||||
|
||||
|
|
@ -125,7 +125,7 @@ uint8_t Audio_Host_ConfigurePipes(USB_ClassInfo_Audio_Host_t* const AudioInterfa
|
|||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
if (!(Pipe_ConfigurePipe(PipeNum, Type, Token, EndpointAddress, Size,
|
||||
DoubleBanked ? PIPE_BANK_DOUBLE : PIPE_BANK_SINGLE)))
|
||||
{
|
||||
|
|
@ -137,7 +137,7 @@ uint8_t Audio_Host_ConfigurePipes(USB_ClassInfo_Audio_Host_t* const AudioInterfa
|
|||
AudioInterfaceInfo->State.StreamingInterfaceNumber = AudioStreamingInterface->InterfaceNumber;
|
||||
AudioInterfaceInfo->State.EnabledStreamingAltIndex = AudioStreamingInterface->AlternateSetting;
|
||||
AudioInterfaceInfo->State.IsActive = true;
|
||||
|
||||
|
||||
return AUDIO_ENUMERROR_NoError;
|
||||
}
|
||||
|
||||
|
|
@ -225,7 +225,7 @@ uint8_t Audio_Host_GetSetEndpointProperty(USB_ClassInfo_Audio_Host_t* const Audi
|
|||
RequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_ENDPOINT);
|
||||
else
|
||||
RequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_ENDPOINT);
|
||||
|
||||
|
||||
Pipe_SelectPipe(DataPipeIndex);
|
||||
EndpointAddress = Pipe_GetBoundEndpointAddress();
|
||||
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@
|
|||
*/
|
||||
uint8_t ControlInterfaceNumber; /**< Interface index of the Audio Control interface within the attached device. */
|
||||
uint8_t StreamingInterfaceNumber; /**< Interface index of the Audio Streaming interface within the attached device. */
|
||||
|
||||
|
||||
uint8_t EnabledStreamingAltIndex; /**< Alternative setting index of the Audio Streaming interface when the stream is enabled. */
|
||||
|
||||
uint16_t DataINPipeSize; /**< Size in bytes of the Audio interface's IN data pipe. */
|
||||
|
|
@ -331,7 +331,7 @@
|
|||
const int8_t Sample)
|
||||
{
|
||||
(void)AudioInterfaceInfo;
|
||||
|
||||
|
||||
Pipe_Write_8(Sample);
|
||||
|
||||
if (!(Pipe_IsReadWriteAllowed()))
|
||||
|
|
@ -357,7 +357,7 @@
|
|||
const int16_t Sample)
|
||||
{
|
||||
(void)AudioInterfaceInfo;
|
||||
|
||||
|
||||
Pipe_Write_16_LE(Sample);
|
||||
|
||||
if (!(Pipe_IsReadWriteAllowed()))
|
||||
|
|
@ -395,7 +395,7 @@
|
|||
Pipe_Freeze();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Private Interface - For use in library only: */
|
||||
#if !defined(__DOXYGEN__)
|
||||
/* Function Prototypes: */
|
||||
|
|
|
|||
|
|
@ -145,13 +145,13 @@ uint8_t CDC_Host_ConfigurePipes(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo
|
|||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
if (!(Pipe_ConfigurePipe(PipeNum, Type, Token, EndpointAddress, Size,
|
||||
DoubleBanked ? PIPE_BANK_DOUBLE : PIPE_BANK_SINGLE)))
|
||||
{
|
||||
return CDC_ENUMERROR_PipeConfigurationFailed;
|
||||
}
|
||||
|
||||
|
||||
if (InterruptPeriod)
|
||||
Pipe_SetInterruptPeriod(InterruptPeriod);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -334,7 +334,7 @@
|
|||
#endif
|
||||
|
||||
void CDC_Host_Event_Stub(void) ATTR_CONST;
|
||||
|
||||
|
||||
void EVENT_CDC_Host_ControLineStateChanged(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo)
|
||||
ATTR_WEAK ATTR_NON_NULL_PTR_ARG(1) ATTR_ALIAS(CDC_Host_Event_Stub);
|
||||
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ uint8_t HID_Host_ConfigurePipes(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo
|
|||
{
|
||||
if (DataOUTEndpoint == NULL)
|
||||
continue;
|
||||
|
||||
|
||||
Size = le16_to_cpu(DataOUTEndpoint->EndpointSize);
|
||||
EndpointAddress = DataOUTEndpoint->EndpointAddress;
|
||||
Token = PIPE_TOKEN_OUT;
|
||||
|
|
@ -139,7 +139,7 @@ uint8_t HID_Host_ConfigurePipes(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo
|
|||
{
|
||||
return HID_ENUMERROR_PipeConfigurationFailed;
|
||||
}
|
||||
|
||||
|
||||
if (InterruptPeriod)
|
||||
Pipe_SetInterruptPeriod(InterruptPeriod);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -171,7 +171,7 @@ void MIDI_Host_USBTask(USB_ClassInfo_MIDI_Host_t* const MIDIInterfaceInfo)
|
|||
|
||||
#if !defined(NO_CLASS_DRIVER_AUTOFLUSH)
|
||||
MIDI_Host_Flush(MIDIInterfaceInfo);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
uint8_t MIDI_Host_Flush(USB_ClassInfo_MIDI_Host_t* const MIDIInterfaceInfo)
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@ uint8_t MS_Host_ConfigurePipes(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
|
|||
Token = PIPE_TOKEN_OUT;
|
||||
Type = EP_TYPE_BULK;
|
||||
DoubleBanked = MSInterfaceInfo->Config.DataOUTPipeDoubleBank;
|
||||
|
||||
|
||||
MSInterfaceInfo->State.DataOUTPipeSize = DataOUTEndpoint->EndpointSize;
|
||||
}
|
||||
else
|
||||
|
|
@ -186,7 +186,7 @@ static uint8_t MS_Host_SendCommand(USB_ClassInfo_MS_Host_t* const MSInterfaceInf
|
|||
{
|
||||
return ErrorCode;
|
||||
}
|
||||
|
||||
|
||||
Pipe_ClearOUT();
|
||||
Pipe_WaitUntilReady();
|
||||
|
||||
|
|
@ -195,14 +195,14 @@ static uint8_t MS_Host_SendCommand(USB_ClassInfo_MS_Host_t* const MSInterfaceInf
|
|||
if (BufferPtr != NULL)
|
||||
{
|
||||
ErrorCode = MS_Host_SendReceiveData(MSInterfaceInfo, SCSICommandBlock, (void*)BufferPtr);
|
||||
|
||||
|
||||
if ((ErrorCode != PIPE_RWSTREAM_NoError) && (ErrorCode != PIPE_RWSTREAM_PipeStalled))
|
||||
{
|
||||
Pipe_Freeze();
|
||||
return ErrorCode;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
MS_CommandStatusWrapper_t SCSIStatusBlock;
|
||||
return MS_Host_GetReturnedStatus(MSInterfaceInfo, &SCSIStatusBlock);
|
||||
}
|
||||
|
|
@ -348,9 +348,9 @@ uint8_t MS_Host_ResetMSInterface(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo)
|
|||
|
||||
if ((ErrorCode = USB_Host_SendControlRequest(NULL)) != HOST_SENDCONTROL_Successful)
|
||||
return ErrorCode;
|
||||
|
||||
|
||||
Pipe_SelectPipe(MSInterfaceInfo->Config.DataINPipeNumber);
|
||||
|
||||
|
||||
if ((ErrorCode = USB_Host_ClearEndpointStall(Pipe_GetBoundEndpointAddress())) != HOST_SENDCONTROL_Successful)
|
||||
return ErrorCode;
|
||||
|
||||
|
|
|
|||
|
|
@ -149,7 +149,7 @@
|
|||
void* DeviceConfigDescriptor) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3);
|
||||
|
||||
/** Sends a MASS STORAGE RESET control request to the attached device, resetting the Mass Storage Interface
|
||||
* and readying it for the next Mass Storage command. This should be called after a failed SCSI request to
|
||||
* and readying it for the next Mass Storage command. This should be called after a failed SCSI request to
|
||||
* ensure the attached Mass Storage device is ready to receive the next command.
|
||||
*
|
||||
* \param[in,out] MSInterfaceInfo Pointer to a structure containing a MS Class host configuration and state.
|
||||
|
|
|
|||
|
|
@ -147,13 +147,13 @@ uint8_t RNDIS_Host_ConfigurePipes(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfa
|
|||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
if (!(Pipe_ConfigurePipe(PipeNum, Type, Token, EndpointAddress, Size,
|
||||
DoubleBanked ? PIPE_BANK_DOUBLE : PIPE_BANK_SINGLE)))
|
||||
{
|
||||
return CDC_ENUMERROR_PipeConfigurationFailed;
|
||||
}
|
||||
|
||||
|
||||
if (InterruptPeriod)
|
||||
Pipe_SetInterruptPeriod(InterruptPeriod);
|
||||
}
|
||||
|
|
@ -241,7 +241,7 @@ static uint8_t RNDIS_SendEncapsulatedCommand(USB_ClassInfo_RNDIS_Host_t* const R
|
|||
};
|
||||
|
||||
Pipe_SelectPipe(PIPE_CONTROLPIPE);
|
||||
|
||||
|
||||
return USB_Host_SendControlRequest(Buffer);
|
||||
}
|
||||
|
||||
|
|
@ -259,7 +259,7 @@ static uint8_t RNDIS_GetEncapsulatedResponse(USB_ClassInfo_RNDIS_Host_t* const R
|
|||
};
|
||||
|
||||
Pipe_SelectPipe(PIPE_CONTROLPIPE);
|
||||
|
||||
|
||||
return USB_Host_SendControlRequest(Buffer);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -133,13 +133,13 @@ uint8_t SI_Host_ConfigurePipes(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo,
|
|||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
if (!(Pipe_ConfigurePipe(PipeNum, Type, Token, EndpointAddress, Size,
|
||||
DoubleBanked ? PIPE_BANK_DOUBLE : PIPE_BANK_SINGLE)))
|
||||
{
|
||||
return SI_ENUMERROR_PipeConfigurationFailed;
|
||||
}
|
||||
|
||||
|
||||
if (InterruptPeriod)
|
||||
Pipe_SetInterruptPeriod(InterruptPeriod);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@
|
|||
#include "../StdDescriptors.h"
|
||||
#include "../USBInterrupt.h"
|
||||
#include "../Endpoint.h"
|
||||
|
||||
|
||||
/* Enable C linkage for C++ Compilers: */
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
|
|
@ -99,7 +99,7 @@
|
|||
*/
|
||||
#define USB_DEVICE_OPT_FULLSPEED (0 << 0)
|
||||
//@}
|
||||
|
||||
|
||||
#if (!defined(NO_INTERNAL_SERIAL) && \
|
||||
(defined(USB_SERIES_7_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_4_AVR) || \
|
||||
(defined(USB_SERIES_2_AVR) && (!defined(__AVR_AT90USB82__) || defined(__AVR_AT90USB162__))) || \
|
||||
|
|
@ -119,7 +119,7 @@
|
|||
* model.
|
||||
*/
|
||||
#define INTERNAL_SERIAL_LENGTH_BITS 80
|
||||
|
||||
|
||||
/** Start address of the internal serial number, in the appropriate address space, if present on the selected microcontroller
|
||||
* model.
|
||||
*/
|
||||
|
|
@ -129,8 +129,8 @@
|
|||
|
||||
#define INTERNAL_SERIAL_LENGTH_BITS 0
|
||||
#define INTERNAL_SERIAL_START_ADDRESS 0
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/* Function Prototypes: */
|
||||
/** Sends a Remote Wakeup request to the host. This signals to the host that the device should
|
||||
* be taken out of suspended mode, and communications should resume.
|
||||
|
|
@ -221,14 +221,14 @@
|
|||
{
|
||||
return (UDADDR & (1 << ADDEN));
|
||||
}
|
||||
|
||||
|
||||
#if (USE_INTERNAL_SERIAL != NO_DESCRIPTOR)
|
||||
static inline void USB_Device_GetSerialString(uint16_t* const UnicodeString) ATTR_NON_NULL_PTR_ARG(1);
|
||||
static inline void USB_Device_GetSerialString(uint16_t* const UnicodeString)
|
||||
{
|
||||
uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();
|
||||
GlobalInterruptDisable();
|
||||
|
||||
|
||||
uint8_t SigReadAddress = INTERNAL_SERIAL_START_ADDRESS;
|
||||
|
||||
for (uint8_t SerialCharNum = 0; SerialCharNum < (INTERNAL_SERIAL_LENGTH_BITS / 4); SerialCharNum++)
|
||||
|
|
@ -246,7 +246,7 @@
|
|||
UnicodeString[SerialCharNum] = cpu_to_le16((SerialByte >= 10) ?
|
||||
(('A' - 10) + SerialByte) : ('0' + SerialByte));
|
||||
}
|
||||
|
||||
|
||||
SetGlobalInterruptMask(CurrentGlobalInt);
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -268,3 +268,4 @@ uint8_t Endpoint_Null_Stream(uint16_t Length,
|
|||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,
|
|||
UECFG1X = UECFG1XData;
|
||||
|
||||
return Endpoint_IsConfigured();
|
||||
#else
|
||||
#else
|
||||
for (uint8_t EPNum = Number; EPNum < ENDPOINT_TOTAL_ENDPOINTS; EPNum++)
|
||||
{
|
||||
uint8_t UECFG0XTemp;
|
||||
|
|
@ -60,7 +60,7 @@ bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,
|
|||
uint8_t UEIENXTemp;
|
||||
|
||||
Endpoint_SelectEndpoint(EPNum);
|
||||
|
||||
|
||||
if (EPNum == Number)
|
||||
{
|
||||
UECFG0XTemp = UECFG0XData;
|
||||
|
|
@ -84,11 +84,11 @@ bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,
|
|||
UECFG0X = UECFG0XTemp;
|
||||
UECFG1X = UECFG1XTemp;
|
||||
UEIENX = UEIENXTemp;
|
||||
|
||||
|
||||
if (!(Endpoint_IsConfigured()))
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Endpoint_SelectEndpoint(Number);
|
||||
return true;
|
||||
#endif
|
||||
|
|
@ -155,7 +155,7 @@ uint8_t Endpoint_WaitUntilReady(void)
|
|||
if (Endpoint_IsOUTReceived())
|
||||
return ENDPOINT_READYWAIT_NoError;
|
||||
}
|
||||
|
||||
|
||||
uint8_t USB_DeviceState_LCL = USB_DeviceState;
|
||||
|
||||
if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@
|
|||
#endif
|
||||
|
||||
/* Public Interface - May be used in end-application: */
|
||||
/* Macros: */
|
||||
/* Macros: */
|
||||
/** \name Endpoint Bank Mode Masks */
|
||||
//@{
|
||||
/** Mask for the bank mode selection for the \ref Endpoint_ConfigureEndpoint() macro. This indicates
|
||||
|
|
|
|||
|
|
@ -254,7 +254,7 @@ static void USB_Host_ResetDevice(void)
|
|||
USB_Host_ResetBus();
|
||||
while (!(USB_Host_IsBusResetComplete()));
|
||||
USB_Host_ResumeBus();
|
||||
|
||||
|
||||
USB_Host_ConfigurationNumber = 0;
|
||||
|
||||
bool HSOFIEnabled = USB_INT_IsEnabled(USB_INT_HSOFI);
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ bool Pipe_ConfigurePipe(const uint8_t Number,
|
|||
Pipe_SetInfiniteINRequests();
|
||||
|
||||
return Pipe_IsConfigured();
|
||||
#else
|
||||
#else
|
||||
for (uint8_t PNum = Number; PNum < PIPE_TOTAL_PIPES; PNum++)
|
||||
{
|
||||
uint8_t UPCFG0XTemp;
|
||||
|
|
@ -65,7 +65,7 @@ bool Pipe_ConfigurePipe(const uint8_t Number,
|
|||
uint8_t UPIENXTemp;
|
||||
|
||||
Pipe_SelectPipe(PNum);
|
||||
|
||||
|
||||
if (PNum == Number)
|
||||
{
|
||||
UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));
|
||||
|
|
@ -83,7 +83,7 @@ bool Pipe_ConfigurePipe(const uint8_t Number,
|
|||
|
||||
if (!(UPCFG1XTemp & (1 << ALLOC)))
|
||||
continue;
|
||||
|
||||
|
||||
Pipe_DisablePipe();
|
||||
UPCFG1X &= ~(1 << ALLOC);
|
||||
|
||||
|
|
@ -94,12 +94,12 @@ bool Pipe_ConfigurePipe(const uint8_t Number,
|
|||
UPIENX = UPIENXTemp;
|
||||
|
||||
Pipe_SetInfiniteINRequests();
|
||||
|
||||
|
||||
if (!(Pipe_IsConfigured()))
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
Pipe_SelectPipe(Number);
|
||||
|
||||
Pipe_SelectPipe(Number);
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@
|
|||
*/
|
||||
#define PIPE_TOKEN_OUT (2 << PTOKEN0)
|
||||
//@}
|
||||
|
||||
|
||||
/** \name Pipe Bank Mode Masks */
|
||||
//@{
|
||||
/** Mask for the bank mode selection for the \ref Pipe_ConfigurePipe() macro. This indicates that the pipe
|
||||
|
|
@ -425,7 +425,7 @@
|
|||
PIPE_ERRORFLAG_DATATGL)) |
|
||||
(UPSTAX & (PIPE_ERRORFLAG_OVERFLOW | PIPE_ERRORFLAG_UNDERFLOW)));
|
||||
}
|
||||
|
||||
|
||||
/** Retrieves the number of busy banks in the currently selected pipe, which have been queued for
|
||||
* transmission via the \ref Pipe_ClearOUT() command, or are awaiting acknowledgement via the
|
||||
* \ref Pipe_ClearIN() command.
|
||||
|
|
|
|||
|
|
@ -81,3 +81,4 @@ uint8_t TEMPLATE_FUNC_NAME (void* const Buffer,
|
|||
#undef TEMPLATE_TRANSFER_BYTE
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -90,3 +90,4 @@ uint8_t TEMPLATE_FUNC_NAME (const void* const Buffer,
|
|||
#undef TEMPLATE_TRANSFER_BYTE
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -86,3 +86,4 @@ uint8_t TEMPLATE_FUNC_NAME (TEMPLATE_BUFFER_TYPE const Buffer,
|
|||
#undef TEMPLATE_BUFFER_MOVE
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ uint8_t TEMPLATE_FUNC_NAME (TEMPLATE_BUFFER_TYPE const Buffer,
|
|||
Length -= *BytesProcessed;
|
||||
TEMPLATE_BUFFER_MOVE(DataStream, *BytesProcessed);
|
||||
}
|
||||
|
||||
|
||||
while (Length)
|
||||
{
|
||||
if (!(Pipe_IsReadWriteAllowed()))
|
||||
|
|
@ -85,3 +85,4 @@ uint8_t TEMPLATE_FUNC_NAME (TEMPLATE_BUFFER_TYPE const Buffer,
|
|||
#undef TEMPLATE_BUFFER_MOVE
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -162,7 +162,7 @@ void USB_ResetInterface(void)
|
|||
{
|
||||
#if defined(USB_CAN_BE_HOST)
|
||||
USB_PLL_On();
|
||||
while (!(USB_PLL_IsReady()));
|
||||
while (!(USB_PLL_IsReady()));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
@ -191,7 +191,7 @@ static void USB_Init_Device(void)
|
|||
|
||||
#if !defined(FIXED_CONTROL_ENDPOINT_SIZE)
|
||||
USB_Descriptor_Device_t* DeviceDescriptorPtr;
|
||||
|
||||
|
||||
#if defined(ARCH_HAS_MULTI_ADDRESS_SPACE) && \
|
||||
!(defined(USE_FLASH_DESCRIPTORS) || defined(USE_EEPROM_DESCRIPTORS) || defined(USE_RAM_DESCRIPTORS))
|
||||
uint8_t DescriptorAddressSpace;
|
||||
|
|
@ -215,7 +215,7 @@ static void USB_Init_Device(void)
|
|||
#else
|
||||
USB_Device_ControlEndpointSize = pgm_read_byte(&DeviceDescriptorPtr->Endpoint0Size);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
|
@ -255,7 +255,7 @@ static void USB_Init_Host(void)
|
|||
|
||||
USB_INT_Enable(USB_INT_SRPI);
|
||||
USB_INT_Enable(USB_INT_BCERRI);
|
||||
|
||||
|
||||
USB_Attach();
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@
|
|||
OTGIEN |= (1 << VBERRE);
|
||||
break;
|
||||
case USB_INT_SRPI:
|
||||
OTGIEN |= (1 << SRPE);
|
||||
OTGIEN |= (1 << SRPE);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
|
|
@ -194,12 +194,12 @@
|
|||
OTGIEN &= ~(1 << VBERRE);
|
||||
break;
|
||||
case USB_INT_SRPI:
|
||||
OTGIEN &= ~(1 << SRPE);
|
||||
OTGIEN &= ~(1 << SRPE);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static inline void USB_INT_Clear(const uint8_t Interrupt) ATTR_ALWAYS_INLINE;
|
||||
static inline void USB_INT_Clear(const uint8_t Interrupt)
|
||||
{
|
||||
|
|
@ -257,7 +257,7 @@
|
|||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static inline bool USB_INT_IsEnabled(const uint8_t Interrupt) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
|
||||
static inline bool USB_INT_IsEnabled(const uint8_t Interrupt)
|
||||
{
|
||||
|
|
@ -300,10 +300,10 @@
|
|||
return (OTGIEN & (1 << SRPE));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
static inline bool USB_INT_HasOccurred(const uint8_t Interrupt) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
|
||||
static inline bool USB_INT_HasOccurred(const uint8_t Interrupt)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@
|
|||
|
||||
/* Includes: */
|
||||
#include "../../../Common/Common.h"
|
||||
#include "USBMode.h"
|
||||
#include "USBMode.h"
|
||||
#include "HostStandardReq.h"
|
||||
#include "StdDescriptors.h"
|
||||
|
||||
|
|
@ -266,7 +266,7 @@
|
|||
void** CurrConfigLoc)
|
||||
{
|
||||
uint16_t CurrDescriptorSize = DESCRIPTOR_CAST(*CurrConfigLoc, USB_Descriptor_Header_t).Size;
|
||||
|
||||
|
||||
if (*BytesRem < CurrDescriptorSize)
|
||||
CurrDescriptorSize = *BytesRem;
|
||||
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@
|
|||
|
||||
/* Includes: */
|
||||
#include "../../../Common/Common.h"
|
||||
#include "USBMode.h"
|
||||
#include "USBMode.h"
|
||||
#include "StdDescriptors.h"
|
||||
#include "USBInterrupt.h"
|
||||
#include "Endpoint.h"
|
||||
|
|
@ -145,7 +145,7 @@
|
|||
#elif (ARCH == ARCH_UC3)
|
||||
#include "UC3/Device_UC3.h"
|
||||
#elif (ARCH == ARCH_XMEGA)
|
||||
#include "XMEGA/Device_XMEGA.h"
|
||||
#include "XMEGA/Device_XMEGA.h"
|
||||
#endif
|
||||
|
||||
/* Disable C linkage for C++ Compilers: */
|
||||
|
|
|
|||
|
|
@ -124,7 +124,7 @@ static void USB_Device_SetAddress(void)
|
|||
uint8_t DeviceAddress = (USB_ControlRequest.wValue & 0x7F);
|
||||
uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();
|
||||
GlobalInterruptDisable();
|
||||
|
||||
|
||||
Endpoint_ClearSETUP();
|
||||
|
||||
Endpoint_ClearStatusStage();
|
||||
|
|
@ -133,7 +133,7 @@ static void USB_Device_SetAddress(void)
|
|||
|
||||
USB_Device_SetDeviceAddress(DeviceAddress);
|
||||
USB_DeviceState = (DeviceAddress) ? DEVICE_STATE_Addressed : DEVICE_STATE_Default;
|
||||
|
||||
|
||||
SetGlobalInterruptMask(CurrentGlobalInt);
|
||||
}
|
||||
|
||||
|
|
@ -156,7 +156,7 @@ static void USB_Device_SetConfiguration(void)
|
|||
uint8_t MemoryAddressSpace;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
if (CALLBACK_USB_GetDescriptor((DTYPE_Device << 8), 0, (void*)&DevDescriptorPtr
|
||||
#if defined(ARCH_HAS_MULTI_ADDRESS_SPACE) && \
|
||||
!(defined(USE_FLASH_DESCRIPTORS) || defined(USE_EEPROM_DESCRIPTORS) || defined(USE_RAM_DESCRIPTORS))
|
||||
|
|
@ -185,7 +185,7 @@ static void USB_Device_SetConfiguration(void)
|
|||
}
|
||||
#else
|
||||
if ((uint8_t)USB_ControlRequest.wValue > DevDescriptorPtr->NumberOfConfigurations)
|
||||
return;
|
||||
return;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
|
@ -224,7 +224,7 @@ static void USB_Device_GetInternalSerialDescriptor(void)
|
|||
|
||||
SignatureDescriptor.Header.Type = DTYPE_String;
|
||||
SignatureDescriptor.Header.Size = USB_STRING_LEN(INTERNAL_SERIAL_LENGTH_BITS / 4);
|
||||
|
||||
|
||||
USB_Device_GetSerialString(SignatureDescriptor.UnicodeString);
|
||||
|
||||
Endpoint_ClearSETUP();
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@
|
|||
|
||||
/* Includes: */
|
||||
#include "../../../Common/Common.h"
|
||||
#include "USBMode.h"
|
||||
#include "USBMode.h"
|
||||
#include "StdDescriptors.h"
|
||||
#include "Events.h"
|
||||
#include "StdRequestType.h"
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@
|
|||
|
||||
/* Includes: */
|
||||
#include "../../../Common/Common.h"
|
||||
#include "USBMode.h"
|
||||
#include "USBMode.h"
|
||||
|
||||
/* Enable C linkage for C++ Compilers: */
|
||||
#if defined(__cplusplus)
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
LUFA Library
|
||||
Copyright (C) Dean Camera, 2011.
|
||||
|
||||
|
||||
dean [at] fourwalledcubicle [dot] com
|
||||
www.lufa-lib.org
|
||||
*/
|
||||
|
|
@ -9,13 +9,13 @@
|
|||
/*
|
||||
Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com)
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation for any purpose is hereby granted
|
||||
without fee, provided that the above copyright notice appear in
|
||||
without fee, provided that the above copyright notice appear in
|
||||
all copies and that both that the copyright notice and this
|
||||
permission notice and warranty disclaimer appear in supporting
|
||||
documentation, and that the name of the author not be used in
|
||||
advertising or publicity pertaining to distribution of the
|
||||
permission notice and warranty disclaimer appear in supporting
|
||||
documentation, and that the name of the author not be used in
|
||||
advertising or publicity pertaining to distribution of the
|
||||
software without specific, written prior permission.
|
||||
|
||||
The author disclaim all warranties with regard to this
|
||||
|
|
@ -36,7 +36,7 @@
|
|||
* dispatch header located in LUFA/Drivers/USB/USB.h.
|
||||
*/
|
||||
|
||||
/** \ingroup Group_EndpointRW
|
||||
/** \ingroup Group_EndpointRW
|
||||
* \defgroup Group_EndpointStreamRW Read/Write of Multi-Byte Streams
|
||||
* \brief Endpoint data stream transmission and reception management.
|
||||
*
|
||||
|
|
@ -44,7 +44,7 @@
|
|||
* and to endpoints.
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
*/
|
||||
|
||||
#ifndef __ENDPOINT_STREAM_H__
|
||||
#define __ENDPOINT_STREAM_H__
|
||||
|
|
@ -89,7 +89,7 @@
|
|||
* again to process the next chunk of data in the transfer.
|
||||
*/
|
||||
};
|
||||
|
||||
|
||||
/** Enum for the possible error return codes of the \c Endpoint_*_Control_Stream_* functions. */
|
||||
enum Endpoint_ControlStream_RW_ErrorCodes_t
|
||||
{
|
||||
|
|
@ -110,7 +110,7 @@
|
|||
#elif (ARCH == ARCH_UC3)
|
||||
#include "UC3/EndpointStream_UC3.h"
|
||||
#elif (ARCH == ARCH_XMEGA)
|
||||
#include "XMEGA/EndpointStream_XMEGA.h"
|
||||
#include "XMEGA/EndpointStream_XMEGA.h"
|
||||
#endif
|
||||
|
||||
/* Disable C linkage for C++ Compilers: */
|
||||
|
|
|
|||
|
|
@ -217,7 +217,7 @@
|
|||
void EVENT_USB_Device_Disconnect(void);
|
||||
|
||||
/** Event for control requests. This event fires when a the USB host issues a control request
|
||||
* to the mandatory device control endpoint (of address 0). This may either be a standard
|
||||
* to the mandatory device control endpoint (of address 0). This may either be a standard
|
||||
* request that the library may have a handler code for internally, or a class specific request
|
||||
* issued to the device which must be handled appropriately. If a request is not processed in the
|
||||
* user application via this event, it will be passed to the library for processing internally
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@
|
|||
|
||||
/* Includes: */
|
||||
#include "../../../Common/Common.h"
|
||||
#include "USBMode.h"
|
||||
#include "USBMode.h"
|
||||
|
||||
/* Enable C linkage for C++ Compilers: */
|
||||
#if defined(__cplusplus)
|
||||
|
|
@ -108,16 +108,16 @@
|
|||
* bus address is being set.
|
||||
*/
|
||||
HOST_STATE_Default_PostAddressSet = 9, /**< This state indicates that the device's address has now been set, and the
|
||||
* stack is has now completed the device enumeration process. This state causes
|
||||
* stack is has now completed the device enumeration process. This state causes
|
||||
* the stack to change the current USB device address to that set for the
|
||||
* connected device, before progressing to the \ref HOST_STATE_Addressed state
|
||||
* ready for use in the user application.
|
||||
*/
|
||||
HOST_STATE_Addressed = 10, /**< Indicates that the device has been enumerated and addressed, and is now waiting
|
||||
* for the user application to configure the device ready for use.
|
||||
* for the user application to configure the device ready for use.
|
||||
*/
|
||||
HOST_STATE_Configured = 11, /**< Indicates that the device has been configured into a valid device configuration,
|
||||
* ready for general use by the user application.
|
||||
* ready for general use by the user application.
|
||||
*/
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -65,9 +65,9 @@ uint8_t USB_Host_SendControlRequest(void* const BufferPtr)
|
|||
uint8_t* HeaderStream = (uint8_t*)&USB_ControlRequest;
|
||||
|
||||
for (uint8_t HeaderByte = 0; HeaderByte < sizeof(USB_Request_Header_t); HeaderByte++)
|
||||
Pipe_Write_8(*(HeaderStream++));
|
||||
Pipe_Write_8(*(HeaderStream++));
|
||||
#endif
|
||||
|
||||
|
||||
Pipe_ClearSETUP();
|
||||
|
||||
if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_SetupSent)) != HOST_SENDCONTROL_Successful)
|
||||
|
|
@ -201,7 +201,7 @@ uint8_t USB_Host_SetDeviceConfiguration(const uint8_t ConfigNumber)
|
|||
};
|
||||
|
||||
Pipe_SelectPipe(PIPE_CONTROLPIPE);
|
||||
|
||||
|
||||
if ((ErrorCode = USB_Host_SendControlRequest(NULL)) == HOST_SENDCONTROL_Successful)
|
||||
{
|
||||
USB_Host_ConfigurationNumber = ConfigNumber;
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@
|
|||
*/
|
||||
#define USB_HOST_TIMEOUT_MS 1000
|
||||
#endif
|
||||
|
||||
|
||||
/* Enums: */
|
||||
/** Enum for the \ref USB_Host_SendControlRequest() return code, indicating the reason for the error
|
||||
* if the transfer of the request is unsuccessful.
|
||||
|
|
@ -101,7 +101,7 @@
|
|||
* \ingroup Group_Host
|
||||
*/
|
||||
extern uint8_t USB_Host_ConfigurationNumber;
|
||||
|
||||
|
||||
/* Function Prototypes: */
|
||||
/** Sends the request stored in the \ref USB_ControlRequest global structure to the attached device,
|
||||
* and transfers the data stored in the buffer to the device, or from the device to the buffer
|
||||
|
|
@ -130,7 +130,7 @@
|
|||
* \return A value from the \ref USB_Host_SendControlErrorCodes_t enum to indicate the result.
|
||||
*/
|
||||
uint8_t USB_Host_SetDeviceConfiguration(const uint8_t ConfigNumber);
|
||||
|
||||
|
||||
/** Sends a GET CONFIGURATION standard request to the attached device, to retrieve the currently selected
|
||||
* device configuration index.
|
||||
*
|
||||
|
|
@ -239,7 +239,7 @@
|
|||
{
|
||||
return USB_Host_GetDescriptor(DTYPE_Device, 0, DeviceDescriptorPtr, sizeof(USB_Descriptor_Device_t));
|
||||
}
|
||||
|
||||
|
||||
/** Sends a GET DESCRIPTOR standard request to the attached device, requesting the string descriptor
|
||||
* of the specified index. This can be used to easily retrieve string descriptors from the device by
|
||||
* index, after the index is obtained from the Device or Configuration descriptors. This is a convenience
|
||||
|
|
|
|||
|
|
@ -52,8 +52,8 @@
|
|||
|
||||
/* Includes: */
|
||||
#include "../../../Common/Common.h"
|
||||
#include "USBMode.h"
|
||||
|
||||
#include "USBMode.h"
|
||||
|
||||
/* Enable C linkage for C++ Compilers: */
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
LUFA Library
|
||||
Copyright (C) Dean Camera, 2011.
|
||||
|
||||
|
||||
dean [at] fourwalledcubicle [dot] com
|
||||
www.lufa-lib.org
|
||||
*/
|
||||
|
|
@ -9,13 +9,13 @@
|
|||
/*
|
||||
Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com)
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation for any purpose is hereby granted
|
||||
without fee, provided that the above copyright notice appear in
|
||||
without fee, provided that the above copyright notice appear in
|
||||
all copies and that both that the copyright notice and this
|
||||
permission notice and warranty disclaimer appear in supporting
|
||||
documentation, and that the name of the author not be used in
|
||||
advertising or publicity pertaining to distribution of the
|
||||
permission notice and warranty disclaimer appear in supporting
|
||||
documentation, and that the name of the author not be used in
|
||||
advertising or publicity pertaining to distribution of the
|
||||
software without specific, written prior permission.
|
||||
|
||||
The author disclaim all warranties with regard to this
|
||||
|
|
@ -27,7 +27,7 @@
|
|||
arising out of or in connection with the use or performance of
|
||||
this software.
|
||||
*/
|
||||
|
||||
|
||||
/** \file
|
||||
* \brief Pipe data stream transmission and reception management.
|
||||
* \copydetails Group_PipeStreamRW
|
||||
|
|
@ -36,7 +36,7 @@
|
|||
* dispatch header located in LUFA/Drivers/USB/USB.h.
|
||||
*/
|
||||
|
||||
/** \ingroup Group_PipeRW
|
||||
/** \ingroup Group_PipeRW
|
||||
* \defgroup Group_PipeStreamRW Read/Write of Multi-Byte Streams
|
||||
* \brief Pipe data stream transmission and reception management.
|
||||
*
|
||||
|
|
@ -52,7 +52,7 @@
|
|||
/* Includes: */
|
||||
#include "../../../Common/Common.h"
|
||||
#include "USBMode.h"
|
||||
|
||||
|
||||
/* Enable C linkage for C++ Compilers: */
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
|
|
@ -62,17 +62,17 @@
|
|||
#if !defined(__INCLUDE_FROM_USB_DRIVER)
|
||||
#error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead.
|
||||
#endif
|
||||
|
||||
|
||||
/* Public Interface - May be used in end-application: */
|
||||
/* Enums: */
|
||||
/** Enum for the possible error return codes of the Pipe_*_Stream_* functions. */
|
||||
enum Pipe_Stream_RW_ErrorCodes_t
|
||||
{
|
||||
PIPE_RWSTREAM_NoError = 0, /**< Command completed successfully, no error. */
|
||||
PIPE_RWSTREAM_PipeStalled = 1, /**< The device stalled the pipe during the transfer. */
|
||||
PIPE_RWSTREAM_PipeStalled = 1, /**< The device stalled the pipe during the transfer. */
|
||||
PIPE_RWSTREAM_DeviceDisconnected = 2, /**< Device was disconnected from the host during
|
||||
* the transfer.
|
||||
*/
|
||||
*/
|
||||
PIPE_RWSTREAM_Timeout = 3, /**< The device failed to accept or send the next packet
|
||||
* within the software timeout period set by the
|
||||
* \ref USB_STREAM_TIMEOUT_MS macro.
|
||||
|
|
@ -93,7 +93,7 @@
|
|||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
/** @} */
|
||||
|
|
|
|||
|
|
@ -123,7 +123,7 @@
|
|||
*/
|
||||
#define USB_CONFIG_ATTR_REMOTEWAKEUP 0x20
|
||||
//@}
|
||||
|
||||
|
||||
/** \name Endpoint Descriptor Attribute Masks */
|
||||
//@{
|
||||
/** Can be masked with other endpoint descriptor attributes for a \ref USB_Descriptor_Endpoint_t descriptor's
|
||||
|
|
@ -154,7 +154,7 @@
|
|||
*/
|
||||
#define ENDPOINT_ATTR_SYNC (3 << 2)
|
||||
//@}
|
||||
|
||||
|
||||
/** \name Endpoint Descriptor Usage Masks */
|
||||
//@{
|
||||
/** Can be masked with other endpoint descriptor attributes for a \ref USB_Descriptor_Endpoint_t descriptor's
|
||||
|
|
@ -178,7 +178,7 @@
|
|||
*/
|
||||
#define ENDPOINT_USAGE_IMPLICIT_FEEDBACK (2 << 4)
|
||||
//@}
|
||||
|
||||
|
||||
/* Enums: */
|
||||
/** Enum for the possible standard descriptor types, as given in each descriptor's header. */
|
||||
enum USB_DescriptorTypes_t
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@
|
|||
|
||||
/* Includes: */
|
||||
#include "../../../Common/Common.h"
|
||||
#include "USBMode.h"
|
||||
#include "USBMode.h"
|
||||
|
||||
/* Enable C linkage for C++ Compilers: */
|
||||
#if defined(__cplusplus)
|
||||
|
|
@ -219,7 +219,7 @@
|
|||
* via the \ref EVENT_USB_Device_ControlRequest() event when received in
|
||||
* device mode. */
|
||||
};
|
||||
|
||||
|
||||
/** Feature Selector values for Set Feature and Clear Feature standard control requests directed to the device, interface
|
||||
* and endpoint recipients.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@
|
|||
#include "../StdDescriptors.h"
|
||||
#include "../USBInterrupt.h"
|
||||
#include "../Endpoint.h"
|
||||
|
||||
|
||||
/* Enable C linkage for C++ Compilers: */
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
|
|
@ -81,15 +81,15 @@
|
|||
* USB interface should be initialized in full speed (12Mb/s) mode.
|
||||
*/
|
||||
#define USB_DEVICE_OPT_FULLSPEED (0 << 0)
|
||||
|
||||
|
||||
#if defined(USB_SERIES_UC3A3_AVR32) || defined(USB_SERIES_UC3A4_AVR32) || defined(__DOXYGEN__)
|
||||
/** Mask for the Options parameter of the \ref USB_Init() function. This indicates that the
|
||||
* USB interface should be initialized in high speed (480Mb/s) mode.
|
||||
*/
|
||||
#define USB_DEVICE_OPT_HIGHSPEED (1 << 1)
|
||||
#define USB_DEVICE_OPT_HIGHSPEED (1 << 1)
|
||||
#endif
|
||||
//@}
|
||||
|
||||
|
||||
#if (!defined(NO_INTERNAL_SERIAL) && \
|
||||
(defined(USB_SERIES_UC3A3_AVR32) || defined(USB_SERIES_UC3A4_AVR32) || \
|
||||
defined(__DOXYGEN__)))
|
||||
|
|
@ -103,7 +103,7 @@
|
|||
* number for the device.
|
||||
*/
|
||||
#define USE_INTERNAL_SERIAL 0xDC
|
||||
|
||||
|
||||
/** Length of the device's unique internal serial number, in bits, if present on the selected microcontroller
|
||||
* model.
|
||||
*/
|
||||
|
|
@ -119,7 +119,7 @@
|
|||
#define INTERNAL_SERIAL_LENGTH_BITS 0
|
||||
#define INTERNAL_SERIAL_START_ADDRESS 0
|
||||
#endif
|
||||
|
||||
|
||||
/* Function Prototypes: */
|
||||
/** Sends a Remote Wakeup request to the host. This signals to the host that the device should
|
||||
* be taken out of suspended mode, and communications should resume.
|
||||
|
|
@ -225,7 +225,7 @@
|
|||
{
|
||||
uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();
|
||||
GlobalInterruptDisable();
|
||||
|
||||
|
||||
uint8_t* SigReadAddress = (uint8_t*)INTERNAL_SERIAL_START_ADDRESS;
|
||||
|
||||
for (uint8_t SerialCharNum = 0; SerialCharNum < (INTERNAL_SERIAL_LENGTH_BITS / 4); SerialCharNum++)
|
||||
|
|
@ -243,7 +243,7 @@
|
|||
UnicodeString[SerialCharNum] = cpu_to_le16((SerialByte >= 10) ?
|
||||
(('A' - 10) + SerialByte) : ('0' + SerialByte));
|
||||
}
|
||||
|
||||
|
||||
SetGlobalInterruptMask(CurrentGlobalInt);
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -228,3 +228,4 @@ uint8_t Endpoint_Null_Stream(uint16_t Length,
|
|||
#include "Template/Template_Endpoint_Control_R.c"
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,
|
|||
uint32_t UECFG0Temp;
|
||||
|
||||
Endpoint_SelectEndpoint(EPNum);
|
||||
|
||||
|
||||
if (EPNum == Number)
|
||||
{
|
||||
UECFG0Temp = UECFG0Data;
|
||||
|
|
@ -79,11 +79,11 @@ bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,
|
|||
|
||||
Endpoint_EnableEndpoint();
|
||||
(&AVR32_USBB.uecfg0)[EPNum] = UECFG0Temp;
|
||||
|
||||
|
||||
if (!(Endpoint_IsConfigured()))
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Endpoint_SelectEndpoint(Number);
|
||||
return true;
|
||||
#endif
|
||||
|
|
@ -148,7 +148,7 @@ uint8_t Endpoint_WaitUntilReady(void)
|
|||
if (Endpoint_IsOUTReceived())
|
||||
return ENDPOINT_READYWAIT_NoError;
|
||||
}
|
||||
|
||||
|
||||
uint8_t USB_DeviceState_LCL = USB_DeviceState;
|
||||
|
||||
if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@
|
|||
#define ENDPOINT_DETAILS_EP5 512, 3
|
||||
#define ENDPOINT_DETAILS_EP6 512, 3
|
||||
#define ENDPOINT_DETAILS_EP7 512, 3
|
||||
#elif defined(USB_SERIES_UC3B0_AVR32) || defined(USB_SERIES_UC3B1_AVR32)
|
||||
#elif defined(USB_SERIES_UC3B0_AVR32) || defined(USB_SERIES_UC3B1_AVR32)
|
||||
#define ENDPOINT_DETAILS_MAXEP 7
|
||||
|
||||
#define ENDPOINT_DETAILS_EP0 64, 1
|
||||
|
|
@ -154,14 +154,14 @@
|
|||
void Endpoint_ClearEndpoints(void);
|
||||
bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,
|
||||
const uint32_t UECFGXData);
|
||||
|
||||
|
||||
/* External Variables: */
|
||||
extern volatile uint32_t USB_Endpoint_SelectedEndpoint;
|
||||
extern volatile uint8_t* USB_Endpoint_FIFOPos[];
|
||||
#endif
|
||||
|
||||
/* Public Interface - May be used in end-application: */
|
||||
/* Macros: */
|
||||
/* Macros: */
|
||||
/** \name Endpoint Bank Mode Masks */
|
||||
//@{
|
||||
/** Mask for the bank mode selection for the \ref Endpoint_ConfigureEndpoint() macro. This indicates
|
||||
|
|
@ -302,7 +302,7 @@
|
|||
const uint8_t Banks)
|
||||
{
|
||||
return Endpoint_ConfigureEndpoint_Prv(Number, (AVR32_USBB_ALLOC_MASK |
|
||||
((uint32_t)Type << AVR32_USBB_EPTYPE_OFFSET) |
|
||||
((uint32_t)Type << AVR32_USBB_EPTYPE_OFFSET) |
|
||||
((uint32_t)(Direction ? AVR32_USBB_UECFG0_EPDIR_MASK : 0) |
|
||||
((uint32_t)Banks << AVR32_USBB_EPBK_OFFSET) |
|
||||
Endpoint_BytesToEPSizeMask(Size))));
|
||||
|
|
@ -422,7 +422,7 @@
|
|||
while ((&AVR32_USBB.UECON0)[USB_Endpoint_SelectedEndpoint].killbk);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/** Determines if the currently selected endpoint may be read from (if data is waiting in the endpoint
|
||||
* bank and the endpoint is an OUT direction, or if the bank is not yet full if the endpoint is an IN
|
||||
* direction). This function will return false if an error has occurred in the endpoint, if the endpoint
|
||||
|
|
|
|||
|
|
@ -254,7 +254,7 @@ static void USB_Host_ResetDevice(void)
|
|||
USB_Host_ResetBus();
|
||||
while (!(USB_Host_IsBusResetComplete()));
|
||||
USB_Host_ResumeBus();
|
||||
|
||||
|
||||
USB_Host_ConfigurationNumber = 0;
|
||||
|
||||
bool HSOFIEnabled = USB_INT_IsEnabled(USB_INT_HSOFI);
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ bool Pipe_ConfigurePipe(const uint8_t Number,
|
|||
uint32_t UPCFG0Temp;
|
||||
|
||||
Pipe_SelectPipe(PNum);
|
||||
|
||||
|
||||
if (PNum == Number)
|
||||
{
|
||||
UPCFG0Temp = (AVR32_USBB_ALLOC_MASK |
|
||||
|
|
@ -85,7 +85,7 @@ bool Pipe_ConfigurePipe(const uint8_t Number,
|
|||
|
||||
if (!(UPCFG0Temp & AVR32_USBB_ALLOC_MASK))
|
||||
continue;
|
||||
|
||||
|
||||
Pipe_DisablePipe();
|
||||
(&AVR32_USBB.upcfg0)[PNum] &= ~AVR32_USBB_ALLOC_MASK;
|
||||
|
||||
|
|
@ -93,12 +93,12 @@ bool Pipe_ConfigurePipe(const uint8_t Number,
|
|||
(&AVR32_USBB.upcfg0)[PNum] = UPCFG0Temp;
|
||||
|
||||
Pipe_SetInfiniteINRequests();
|
||||
|
||||
|
||||
if (!(Pipe_IsConfigured()))
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
Pipe_SelectPipe(Number);
|
||||
|
||||
Pipe_SelectPipe(Number);
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@
|
|||
#if !defined(__DOXYGEN__)
|
||||
/* Macros: */
|
||||
#define PIPE_HSB_ADDRESS_SPACE_SIZE (64 * 1024UL)
|
||||
|
||||
|
||||
/* External Variables: */
|
||||
extern volatile uint32_t USB_Pipe_SelectedPipe;
|
||||
extern volatile uint8_t* USB_Pipe_FIFOPos[];
|
||||
|
|
@ -146,7 +146,7 @@
|
|||
*/
|
||||
#define PIPE_TOKEN_OUT AVR32_USBB_UPCFG0_PTOKEN_OUT
|
||||
//@}
|
||||
|
||||
|
||||
/** \name Pipe Bank Mode Masks */
|
||||
//@{
|
||||
/** Mask for the bank mode selection for the \ref Pipe_ConfigurePipe() macro. This indicates that the pipe
|
||||
|
|
@ -185,7 +185,7 @@
|
|||
*/
|
||||
#define PIPE_TOTAL_PIPES 8
|
||||
#else
|
||||
#define PIPE_TOTAL_PIPES 7
|
||||
#define PIPE_TOTAL_PIPES 7
|
||||
#endif
|
||||
|
||||
/** Size in bytes of the largest pipe bank size possible in the device. Not all banks on each AVR
|
||||
|
|
@ -446,7 +446,7 @@
|
|||
static inline uint8_t Pipe_GetErrorFlags(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
|
||||
static inline uint8_t Pipe_GetErrorFlags(void)
|
||||
{
|
||||
|
||||
|
||||
return (((&AVR32_USBB.uperr0)[USB_Pipe_SelectedPipe] &
|
||||
(PIPE_ERRORFLAG_CRC16 | PIPE_ERRORFLAG_TIMEOUT |
|
||||
PIPE_ERRORFLAG_PID | PIPE_ERRORFLAG_DATAPID |
|
||||
|
|
@ -454,7 +454,7 @@
|
|||
(((&AVR32_USBB.upsta0)[USB_Pipe_SelectedPipe] << 8) &
|
||||
PIPE_ERRORFLAG_OVERFLOW));
|
||||
}
|
||||
|
||||
|
||||
/** Retrieves the number of busy banks in the currently selected pipe, which have been queued for
|
||||
* transmission via the \ref Pipe_ClearOUT() command, or are awaiting acknowledgement via the
|
||||
* \ref Pipe_ClearIN() command.
|
||||
|
|
@ -902,7 +902,7 @@
|
|||
#if !defined(ENDPOINT_CONTROLEP)
|
||||
#define ENDPOINT_CONTROLEP 0
|
||||
#endif
|
||||
|
||||
|
||||
/* Inline Functions: */
|
||||
static inline uint8_t Pipe_BytesToEPSizeMask(const uint16_t Bytes) ATTR_WARN_UNUSED_RESULT ATTR_CONST ATTR_ALWAYS_INLINE;
|
||||
static inline uint8_t Pipe_BytesToEPSizeMask(const uint16_t Bytes)
|
||||
|
|
|
|||
|
|
@ -81,3 +81,4 @@ uint8_t TEMPLATE_FUNC_NAME (void* const Buffer,
|
|||
#undef TEMPLATE_TRANSFER_BYTE
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -90,3 +90,4 @@ uint8_t TEMPLATE_FUNC_NAME (const void* const Buffer,
|
|||
#undef TEMPLATE_TRANSFER_BYTE
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -86,3 +86,4 @@ uint8_t TEMPLATE_FUNC_NAME (TEMPLATE_BUFFER_TYPE const Buffer,
|
|||
#undef TEMPLATE_BUFFER_MOVE
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ uint8_t TEMPLATE_FUNC_NAME (TEMPLATE_BUFFER_TYPE const Buffer,
|
|||
Length -= *BytesProcessed;
|
||||
TEMPLATE_BUFFER_MOVE(DataStream, *BytesProcessed);
|
||||
}
|
||||
|
||||
|
||||
while (Length)
|
||||
{
|
||||
if (!(Pipe_IsReadWriteAllowed()))
|
||||
|
|
@ -85,3 +85,4 @@ uint8_t TEMPLATE_FUNC_NAME (TEMPLATE_BUFFER_TYPE const Buffer,
|
|||
#undef TEMPLATE_BUFFER_MOVE
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ void USB_Init(
|
|||
#if !defined(USE_STATIC_OPTIONS)
|
||||
USB_Options = Options;
|
||||
#endif
|
||||
|
||||
|
||||
#if defined(USB_CAN_BE_BOTH)
|
||||
if (Mode == USB_MODE_UID)
|
||||
{
|
||||
|
|
@ -73,7 +73,7 @@ void USB_Init(
|
|||
USB_CurrentMode = Mode;
|
||||
}
|
||||
#else
|
||||
AVR32_USBB.USBCON.uide = false;
|
||||
AVR32_USBB.USBCON.uide = false;
|
||||
#endif
|
||||
|
||||
USB_IsInitialized = true;
|
||||
|
|
@ -172,13 +172,13 @@ static void USB_Init_Device(void)
|
|||
else
|
||||
{
|
||||
#if defined(USB_DEVICE_OPT_HIGHSPEED)
|
||||
if (USB_Options & USB_DEVICE_OPT_HIGHSPEED)
|
||||
if (USB_Options & USB_DEVICE_OPT_HIGHSPEED)
|
||||
USB_Device_SetHighSpeed();
|
||||
else
|
||||
USB_Device_SetFullSpeed();
|
||||
#else
|
||||
USB_Device_SetFullSpeed();
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
USB_INT_Enable(USB_INT_VBUSTI);
|
||||
|
|
|
|||
|
|
@ -270,13 +270,13 @@
|
|||
|
||||
/* Private Interface - For use in library only: */
|
||||
#if !defined(__DOXYGEN__)
|
||||
/* Macros: */
|
||||
/* Macros: */
|
||||
#if defined(USB_SERIES_UC3A3_AVR32) || defined(USB_SERIES_UC3A4_AVR32)
|
||||
#define USB_CLOCK_REQUIRED_FREQ 12000000UL
|
||||
#else
|
||||
#define USB_CLOCK_REQUIRED_FREQ 48000000UL
|
||||
#endif
|
||||
|
||||
|
||||
/* Function Prototypes: */
|
||||
#if defined(__INCLUDE_FROM_USB_CONTROLLER_C)
|
||||
#if defined(USB_CAN_BE_DEVICE)
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@
|
|||
#if !defined(__DOXYGEN__)
|
||||
/* External Variables: */
|
||||
extern volatile uint32_t USB_Endpoint_SelectedEndpoint;
|
||||
|
||||
|
||||
/* Enums: */
|
||||
enum USB_Interrupts_t
|
||||
{
|
||||
|
|
@ -73,7 +73,7 @@
|
|||
USB_INT_SOFI = 5,
|
||||
USB_INT_RXSTPI = 6,
|
||||
#endif
|
||||
#if (defined(USB_CAN_BE_HOST) || defined(__DOXYGEN__))
|
||||
#if (defined(USB_CAN_BE_HOST) || defined(__DOXYGEN__))
|
||||
USB_INT_HSOFI = 7,
|
||||
USB_INT_DCONNI = 8,
|
||||
USB_INT_DDISCI = 9,
|
||||
|
|
@ -82,11 +82,11 @@
|
|||
USB_INT_VBERRI = 12,
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
/* Inline Functions: */
|
||||
static inline void USB_INT_Enable(const uint8_t Interrupt) ATTR_ALWAYS_INLINE;
|
||||
static inline void USB_INT_Enable(const uint8_t Interrupt)
|
||||
{
|
||||
{
|
||||
switch (Interrupt)
|
||||
{
|
||||
case USB_INT_VBUSTI:
|
||||
|
|
@ -189,7 +189,7 @@
|
|||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static inline void USB_INT_Clear(const uint8_t Interrupt) ATTR_ALWAYS_INLINE;
|
||||
static inline void USB_INT_Clear(const uint8_t Interrupt)
|
||||
{
|
||||
|
|
@ -254,7 +254,7 @@
|
|||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static inline bool USB_INT_IsEnabled(const uint8_t Interrupt) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
|
||||
static inline bool USB_INT_IsEnabled(const uint8_t Interrupt)
|
||||
{
|
||||
|
|
@ -278,7 +278,7 @@
|
|||
case USB_INT_RXSTPI:
|
||||
return (&AVR32_USBB.UECON0)[USB_Endpoint_SelectedEndpoint].rxstpe;
|
||||
#endif
|
||||
#if defined(USB_CAN_BE_HOST)
|
||||
#if defined(USB_CAN_BE_HOST)
|
||||
case USB_INT_HSOFI:
|
||||
return AVR32_USBB.UHINTE.hsofie;
|
||||
case USB_INT_DCONNI:
|
||||
|
|
@ -293,10 +293,10 @@
|
|||
return AVR32_USBB.USBCON.vberre;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
static inline bool USB_INT_HasOccurred(const uint8_t Interrupt) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
|
||||
static inline bool USB_INT_HasOccurred(const uint8_t Interrupt)
|
||||
{
|
||||
|
|
@ -360,7 +360,7 @@
|
|||
#else
|
||||
ISR(USB_GEN_vect);
|
||||
#endif
|
||||
|
||||
|
||||
/* Disable C linkage for C++ Compilers: */
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@
|
|||
|
||||
/* Includes: */
|
||||
#include "../../../Common/Common.h"
|
||||
#include "USBMode.h"
|
||||
#include "USBMode.h"
|
||||
|
||||
/* Enable C linkage for C++ Compilers: */
|
||||
#if defined(__cplusplus)
|
||||
|
|
@ -119,7 +119,7 @@
|
|||
#elif (ARCH == ARCH_UC3)
|
||||
#include "UC3/USBController_UC3.h"
|
||||
#elif (ARCH == ARCH_XMEGA)
|
||||
#include "XMEGA/USBController_XMEGA.h"
|
||||
#include "XMEGA/USBController_XMEGA.h"
|
||||
#endif
|
||||
|
||||
/* Disable C linkage for C++ Compilers: */
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@
|
|||
|
||||
/* Includes: */
|
||||
#include "../../../Common/Common.h"
|
||||
#include "USBMode.h"
|
||||
#include "USBMode.h"
|
||||
|
||||
/* Enable C linkage for C++ Compilers: */
|
||||
#if defined(__cplusplus)
|
||||
|
|
@ -61,7 +61,7 @@
|
|||
#elif (ARCH == ARCH_UC3)
|
||||
#include "UC3/USBInterrupt_UC3.h"
|
||||
#elif (ARCH == ARCH_XMEGA)
|
||||
#include "XMEGA/USBInterrupt_XMEGA.h"
|
||||
#include "XMEGA/USBInterrupt_XMEGA.h"
|
||||
#endif
|
||||
|
||||
/* Disable C linkage for C++ Compilers: */
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@
|
|||
* (i.e. AT32UC3A0*) when defined.
|
||||
*/
|
||||
#define USB_SERIES_UC3A0_AVR
|
||||
|
||||
|
||||
/** Indicates that the target AVR microcontroller belongs to the AVR32 UC3A1 Series USB controller
|
||||
* (i.e. AT32UC3A1*) when defined.
|
||||
*/
|
||||
|
|
@ -111,7 +111,7 @@
|
|||
* (i.e. AT32UC3B1*) when defined.
|
||||
*/
|
||||
#define USB_SERIES_UC3B1_AVR
|
||||
|
||||
|
||||
/** Indicates that the target AVR microcontroller belongs to the XMEGA A1U Series USB controller
|
||||
* (i.e. ATXMEGA*A1U) when defined.
|
||||
*/
|
||||
|
|
@ -219,7 +219,7 @@
|
|||
#define USB_SERIES_B3_XMEGA
|
||||
#define USB_CAN_BE_DEVICE
|
||||
#endif
|
||||
|
||||
|
||||
#if (defined(USB_CAN_BE_DEVICE) && defined(USB_CAN_BE_HOST))
|
||||
#define USB_CAN_BE_BOTH
|
||||
#endif
|
||||
|
|
@ -241,7 +241,7 @@
|
|||
#undef USB_CAN_BE_BOTH
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#if (defined(USB_HOST_ONLY) && defined(USB_DEVICE_ONLY))
|
||||
#error USB_HOST_ONLY and USB_DEVICE_ONLY are mutually exclusive.
|
||||
#endif
|
||||
|
|
@ -259,3 +259,4 @@
|
|||
#endif
|
||||
|
||||
/** @} */
|
||||
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@
|
|||
|
||||
/* Includes: */
|
||||
#include "../../../Common/Common.h"
|
||||
#include "USBMode.h"
|
||||
#include "USBMode.h"
|
||||
#include "USBController.h"
|
||||
#include "Events.h"
|
||||
#include "StdRequestType.h"
|
||||
|
|
@ -81,7 +81,7 @@
|
|||
extern volatile bool USB_IsInitialized;
|
||||
|
||||
/** Structure containing the last received Control request when in Device mode (for use in user-applications
|
||||
* inside of the \ref EVENT_USB_Device_ControlRequest() event, or for filling up with a control request to
|
||||
* inside of the \ref EVENT_USB_Device_ControlRequest() event, or for filling up with a control request to
|
||||
* issue when in Host mode before calling \ref USB_Host_SendControlRequest().
|
||||
*
|
||||
* \note The contents of this structure is automatically endian-corrected for the current CPU architecture.
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@
|
|||
#include "../StdDescriptors.h"
|
||||
#include "../USBInterrupt.h"
|
||||
#include "../Endpoint.h"
|
||||
|
||||
|
||||
/* Enable C linkage for C++ Compilers: */
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
|
|
@ -97,7 +97,7 @@
|
|||
*/
|
||||
#define USB_DEVICE_OPT_FULLSPEED (0 << 0)
|
||||
//@}
|
||||
|
||||
|
||||
#if (!defined(NO_INTERNAL_SERIAL) || defined(__DOXYGEN__))
|
||||
/** String descriptor index for the device's unique serial number string descriptor within the device.
|
||||
* This unique serial number is used by the host to associate resources to the device (such as drivers or COM port
|
||||
|
|
@ -114,7 +114,7 @@
|
|||
* model.
|
||||
*/
|
||||
#define INTERNAL_SERIAL_LENGTH_BITS (8 * (1 + (offsetof(NVM_PROD_SIGNATURES_t, COORDY1) - offsetof(NVM_PROD_SIGNATURES_t, LOTNUM0))))
|
||||
|
||||
|
||||
/** Start address of the internal serial number, in the appropriate address space, if present on the selected microcontroller
|
||||
* model.
|
||||
*/
|
||||
|
|
@ -125,7 +125,7 @@
|
|||
#define INTERNAL_SERIAL_LENGTH_BITS 0
|
||||
#define INTERNAL_SERIAL_START_ADDRESS 0
|
||||
#endif
|
||||
|
||||
|
||||
/* Function Prototypes: */
|
||||
/** Sends a Remote Wakeup request to the host. This signals to the host that the device should
|
||||
* be taken out of suspended mode, and communications should resume.
|
||||
|
|
@ -211,17 +211,17 @@
|
|||
{
|
||||
return ((USB.ADDR != 0) ? true : false);
|
||||
}
|
||||
|
||||
|
||||
static inline void USB_Device_GetSerialString(uint16_t* const UnicodeString) ATTR_NON_NULL_PTR_ARG(1);
|
||||
static inline void USB_Device_GetSerialString(uint16_t* const UnicodeString)
|
||||
{
|
||||
uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();
|
||||
GlobalInterruptDisable();
|
||||
|
||||
|
||||
uint8_t SigReadAddress = INTERNAL_SERIAL_START_ADDRESS;
|
||||
|
||||
for (uint8_t SerialCharNum = 0; SerialCharNum < (INTERNAL_SERIAL_LENGTH_BITS / 4); SerialCharNum++)
|
||||
{
|
||||
{
|
||||
uint8_t SerialByte;
|
||||
|
||||
NVM.CMD = NVM_CMD_READ_CALIB_ROW_gc;
|
||||
|
|
@ -239,7 +239,7 @@
|
|||
UnicodeString[SerialCharNum] = cpu_to_le16((SerialByte >= 10) ?
|
||||
(('A' - 10) + SerialByte) : ('0' + SerialByte));
|
||||
}
|
||||
|
||||
|
||||
SetGlobalInterruptMask(CurrentGlobalInt);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -268,3 +268,4 @@ uint8_t Endpoint_Null_Stream(uint16_t Length,
|
|||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -51,13 +51,13 @@ bool Endpoint_ConfigureEndpoint_PRV(const uint8_t Number,
|
|||
const uint8_t Size)
|
||||
{
|
||||
Endpoint_SelectEndpoint(Number | Direction);
|
||||
|
||||
|
||||
USB_Endpoint_SelectedHandle->CTRL = 0;
|
||||
USB_Endpoint_SelectedHandle->STATUS = (Direction == ENDPOINT_DIR_IN) ? USB_EP_BUSNACK0_bm : 0;
|
||||
USB_Endpoint_SelectedHandle->CTRL = Config;
|
||||
USB_Endpoint_SelectedHandle->CNT = 0;
|
||||
USB_Endpoint_SelectedHandle->DATAPTR = (intptr_t)USB_Endpoint_SelectedFIFO->Data;
|
||||
|
||||
|
||||
USB_Endpoint_SelectedFIFO->Length = (Direction == ENDPOINT_DIR_IN) ? Size : 0;
|
||||
USB_Endpoint_SelectedFIFO->Position = 0;
|
||||
|
||||
|
|
@ -117,7 +117,7 @@ uint8_t Endpoint_WaitUntilReady(void)
|
|||
if (Endpoint_IsOUTReceived())
|
||||
return ENDPOINT_READYWAIT_NoError;
|
||||
}
|
||||
|
||||
|
||||
uint8_t USB_DeviceState_LCL = USB_DeviceState;
|
||||
|
||||
if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@
|
|||
uint8_t Length;
|
||||
uint8_t Position;
|
||||
} Endpoint_FIFO_t;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Endpoint_FIFO_t OUT;
|
||||
|
|
@ -143,7 +143,7 @@
|
|||
#endif
|
||||
|
||||
/* Public Interface - May be used in end-application: */
|
||||
/* Macros: */
|
||||
/* Macros: */
|
||||
/** \name Endpoint Bank Mode Masks */
|
||||
//@{
|
||||
/** Mask for the bank mode selection for the \ref Endpoint_ConfigureEndpoint() macro. This indicates
|
||||
|
|
@ -234,7 +234,7 @@
|
|||
static inline void Endpoint_SelectEndpoint(const uint8_t EndpointNumber)
|
||||
{
|
||||
USB_Endpoint_SelectedEndpoint = EndpointNumber;
|
||||
|
||||
|
||||
if (EndpointNumber & ENDPOINT_DIR_IN)
|
||||
{
|
||||
USB_Endpoint_SelectedFIFO = &USB_Endpoint_FIFOs[EndpointNumber & ENDPOINT_EPNUM_MASK].IN;
|
||||
|
|
@ -290,7 +290,7 @@
|
|||
const uint8_t Banks)
|
||||
{
|
||||
uint8_t EPConfigMask = (USB_EP_INTDSBL_bm | Banks | Endpoint_BytesToEPSizeMask(Size));
|
||||
|
||||
|
||||
// TODO - Fix once limitations are lifted
|
||||
if ((Banks != ENDPOINT_BANK_SINGLE) || (Size > 64))
|
||||
return false;
|
||||
|
|
@ -307,10 +307,10 @@
|
|||
EPConfigMask |= USB_EP_TYPE_BULK_gc;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if (Type == EP_TYPE_CONTROL)
|
||||
Endpoint_ConfigureEndpoint_PRV(Number, (Direction ^ ENDPOINT_DIR_IN), EPConfigMask, Size);
|
||||
|
||||
|
||||
return Endpoint_ConfigureEndpoint_PRV(Number, Direction, EPConfigMask, Size);
|
||||
}
|
||||
|
||||
|
|
@ -439,7 +439,7 @@
|
|||
static inline bool Endpoint_IsINReady(void)
|
||||
{
|
||||
Endpoint_SelectEndpoint(USB_Endpoint_SelectedEndpoint | ENDPOINT_DIR_IN);
|
||||
|
||||
|
||||
return ((USB_Endpoint_SelectedHandle->STATUS & USB_EP_BUSNACK0_bm) ? true : false);
|
||||
}
|
||||
|
||||
|
|
@ -459,7 +459,7 @@
|
|||
USB_Endpoint_SelectedFIFO->Length = USB_Endpoint_SelectedHandle->CNT;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -479,7 +479,7 @@
|
|||
USB_Endpoint_SelectedFIFO->Length = USB_Endpoint_SelectedHandle->CNT;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -523,7 +523,7 @@
|
|||
*/
|
||||
static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE;
|
||||
static inline void Endpoint_ClearOUT(void)
|
||||
{
|
||||
{
|
||||
USB_Endpoint_SelectedHandle->STATUS &= ~(USB_EP_TRNCOMPL0_bm | USB_EP_BUSNACK0_bm | USB_EP_OVF_bm);
|
||||
USB_Endpoint_SelectedFIFO->Position = 0;
|
||||
}
|
||||
|
|
@ -543,7 +543,7 @@
|
|||
static inline void Endpoint_StallTransaction(void)
|
||||
{
|
||||
USB_Endpoint_SelectedHandle->CTRL |= USB_EP_STALL_bm;
|
||||
|
||||
|
||||
if ((USB_Endpoint_SelectedHandle->CTRL & USB_EP_TYPE_gm) == USB_EP_TYPE_CONTROL_gc)
|
||||
{
|
||||
Endpoint_SelectEndpoint(USB_Endpoint_SelectedEndpoint ^ ENDPOINT_DIR_IN);
|
||||
|
|
@ -636,7 +636,7 @@
|
|||
{
|
||||
uint16_t Byte0 = Endpoint_Read_8();
|
||||
uint16_t Byte1 = Endpoint_Read_8();
|
||||
|
||||
|
||||
return ((Byte1 << 8) | Byte0);
|
||||
}
|
||||
|
||||
|
|
@ -652,7 +652,7 @@
|
|||
{
|
||||
uint16_t Byte0 = Endpoint_Read_8();
|
||||
uint16_t Byte1 = Endpoint_Read_8();
|
||||
|
||||
|
||||
return ((Byte0 << 8) | Byte1);
|
||||
}
|
||||
|
||||
|
|
@ -709,7 +709,7 @@
|
|||
uint32_t Byte1 = Endpoint_Read_8();
|
||||
uint32_t Byte2 = Endpoint_Read_8();
|
||||
uint32_t Byte3 = Endpoint_Read_8();
|
||||
|
||||
|
||||
return ((Byte3 << 24) | (Byte2 << 16) | (Byte1 << 8) | Byte0);
|
||||
}
|
||||
|
||||
|
|
@ -727,7 +727,7 @@
|
|||
uint32_t Byte1 = Endpoint_Read_8();
|
||||
uint32_t Byte2 = Endpoint_Read_8();
|
||||
uint32_t Byte3 = Endpoint_Read_8();
|
||||
|
||||
|
||||
return ((Byte0 << 24) | (Byte1 << 16) | (Byte2 << 8) | Byte3);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
LUFA Library
|
||||
Copyright (C) Dean Camera, 2011.
|
||||
|
||||
|
||||
dean [at] fourwalledcubicle [dot] com
|
||||
www.lufa-lib.org
|
||||
*/
|
||||
|
|
@ -9,13 +9,13 @@
|
|||
/*
|
||||
Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com)
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation for any purpose is hereby granted
|
||||
without fee, provided that the above copyright notice appear in
|
||||
without fee, provided that the above copyright notice appear in
|
||||
all copies and that both that the copyright notice and this
|
||||
permission notice and warranty disclaimer appear in supporting
|
||||
documentation, and that the name of the author not be used in
|
||||
advertising or publicity pertaining to distribution of the
|
||||
permission notice and warranty disclaimer appear in supporting
|
||||
documentation, and that the name of the author not be used in
|
||||
advertising or publicity pertaining to distribution of the
|
||||
software without specific, written prior permission.
|
||||
|
||||
The author disclaim all warranties with regard to this
|
||||
|
|
|
|||
|
|
@ -81,3 +81,4 @@ uint8_t TEMPLATE_FUNC_NAME (void* const Buffer,
|
|||
#undef TEMPLATE_TRANSFER_BYTE
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -90,3 +90,4 @@ uint8_t TEMPLATE_FUNC_NAME (const void* const Buffer,
|
|||
#undef TEMPLATE_TRANSFER_BYTE
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -86,3 +86,4 @@ uint8_t TEMPLATE_FUNC_NAME (TEMPLATE_BUFFER_TYPE const Buffer,
|
|||
#undef TEMPLATE_BUFFER_MOVE
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -61,9 +61,9 @@ void USB_Init(
|
|||
#if !defined(USE_STATIC_OPTIONS)
|
||||
USB_Options = Options;
|
||||
#endif
|
||||
|
||||
|
||||
USB_IsInitialized = true;
|
||||
|
||||
|
||||
uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();
|
||||
GlobalInterruptDisable();
|
||||
|
||||
|
|
@ -71,7 +71,7 @@ void USB_Init(
|
|||
USB.CAL0 = pgm_read_byte(offsetof(NVM_PROD_SIGNATURES_t, USBCAL0));
|
||||
USB.CAL1 = pgm_read_byte(offsetof(NVM_PROD_SIGNATURES_t, USBCAL1));
|
||||
NVM.CMD = 0;
|
||||
|
||||
|
||||
USB.EPPTR = (intptr_t)&USB_EndpointTable;
|
||||
USB.CTRLA = (USB_STFRNUM_bm | USB_MAXEP_gm);
|
||||
|
||||
|
|
@ -95,7 +95,7 @@ void USB_Disable(void)
|
|||
USB_Detach();
|
||||
USB_Controller_Disable();
|
||||
|
||||
USB_IsInitialized = false;
|
||||
USB_IsInitialized = false;
|
||||
}
|
||||
|
||||
void USB_ResetInterface(void)
|
||||
|
|
@ -104,14 +104,14 @@ void USB_ResetInterface(void)
|
|||
CLK.USBCTRL = (((F_USB / 6000000) - 1) << CLK_USBPSDIV_gp);
|
||||
else
|
||||
CLK.USBCTRL = (((F_USB / 48000000) - 1) << CLK_USBPSDIV_gp);
|
||||
|
||||
|
||||
if (USB_Options & USB_OPT_PLLCLKSRC)
|
||||
CLK.USBCTRL |= (CLK_USBSRC_PLL_gc | CLK_USBSEN_bm);
|
||||
else
|
||||
CLK.USBCTRL |= (CLK_USBSRC_RC32M_gc | CLK_USBSEN_bm);
|
||||
|
||||
USB_Device_SetDeviceAddress(0);
|
||||
|
||||
|
||||
USB_INT_DisableAllInterrupts();
|
||||
USB_INT_ClearAllInterrupts();
|
||||
|
||||
|
|
@ -135,7 +135,7 @@ static void USB_Init_Device(void)
|
|||
|
||||
#if !defined(FIXED_CONTROL_ENDPOINT_SIZE)
|
||||
USB_Descriptor_Device_t* DeviceDescriptorPtr;
|
||||
|
||||
|
||||
#if defined(ARCH_HAS_MULTI_ADDRESS_SPACE) && \
|
||||
!(defined(USE_FLASH_DESCRIPTORS) || defined(USE_EEPROM_DESCRIPTORS) || defined(USE_RAM_DESCRIPTORS))
|
||||
uint8_t DescriptorAddressSpace;
|
||||
|
|
@ -159,7 +159,7 @@ static void USB_Init_Device(void)
|
|||
#else
|
||||
USB_Device_ControlEndpointSize = pgm_read_byte(&DeviceDescriptorPtr->Endpoint0Size);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
|
@ -177,3 +177,4 @@ static void USB_Init_Device(void)
|
|||
USB_Attach();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -67,12 +67,12 @@
|
|||
} Endpoints[16];
|
||||
uint16_t FrameNum;
|
||||
} ATTR_PACKED USB_EndpointTable_t;
|
||||
|
||||
|
||||
/* External Variables: */
|
||||
extern USB_EndpointTable_t USB_EndpointTable;
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* Includes: */
|
||||
#if defined(USB_CAN_BE_DEVICE) || defined(__DOXYGEN__)
|
||||
#include "../Device.h"
|
||||
|
|
@ -94,7 +94,7 @@
|
|||
#if !defined(F_USB)
|
||||
#error F_USB is not defined. You must define F_USB to the frequency of the unprescaled USB controller clock in your project makefile.
|
||||
#endif
|
||||
|
||||
|
||||
#if (F_USB % 6000000)
|
||||
#error Invalid F_USB specified. F_USB must be a multiple of 6MHz for USB Low Speed operation, and a multiple of 48MHz for Full Speed operation.
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ ISR(USB_BUSEVENT_vect)
|
|||
if (USB_INT_HasOccurred(USB_INT_BUSEVENTI_Resume))
|
||||
{
|
||||
USB_INT_Clear(USB_INT_BUSEVENTI_Resume);
|
||||
|
||||
|
||||
if (USB_Device_ConfigurationNumber)
|
||||
USB_DeviceState = DEVICE_STATE_Configured;
|
||||
else
|
||||
|
|
@ -86,7 +86,7 @@ ISR(USB_BUSEVENT_vect)
|
|||
if (USB_INT_HasOccurred(USB_INT_BUSEVENTI_Reset))
|
||||
{
|
||||
USB_INT_Clear(USB_INT_BUSEVENTI_Reset);
|
||||
|
||||
|
||||
USB_DeviceState = DEVICE_STATE_Default;
|
||||
USB_Device_ConfigurationNumber = 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -76,8 +76,8 @@
|
|||
USB.INTCTRLA |= USB_BUSEVIE_bm;
|
||||
return;
|
||||
case USB_INT_SOFI:
|
||||
USB.INTCTRLA |= USB_SOFIE_bm;
|
||||
return;
|
||||
USB.INTCTRLA |= USB_SOFIE_bm;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -90,11 +90,11 @@
|
|||
USB.INTCTRLA &= ~USB_BUSEVIE_bm;
|
||||
return;
|
||||
case USB_INT_SOFI:
|
||||
USB.INTCTRLA &= ~USB_SOFIE_bm;
|
||||
return;
|
||||
USB.INTCTRLA &= ~USB_SOFIE_bm;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static inline void USB_INT_Clear(const uint8_t Interrupt) ATTR_ALWAYS_INLINE;
|
||||
static inline void USB_INT_Clear(const uint8_t Interrupt)
|
||||
{
|
||||
|
|
@ -110,11 +110,11 @@
|
|||
USB.INTFLAGSACLR = USB_RSTIF_bm;
|
||||
return;
|
||||
case USB_INT_SOFI:
|
||||
USB.INTFLAGSACLR = USB_SOFIF_bm;
|
||||
return;
|
||||
USB.INTFLAGSACLR = USB_SOFIF_bm;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static inline bool USB_INT_IsEnabled(const uint8_t Interrupt) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
|
||||
static inline bool USB_INT_IsEnabled(const uint8_t Interrupt)
|
||||
{
|
||||
|
|
@ -125,10 +125,10 @@
|
|||
case USB_INT_SOFI:
|
||||
return ((USB.INTCTRLA & USB_SOFIE_bm) ? true : false);
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
static inline bool USB_INT_HasOccurred(const uint8_t Interrupt) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
|
||||
static inline bool USB_INT_HasOccurred(const uint8_t Interrupt)
|
||||
{
|
||||
|
|
@ -143,7 +143,7 @@
|
|||
case USB_INT_SOFI:
|
||||
return ((USB.INTFLAGSACLR & USB_SOFIF_bm) ? true : false);
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -392,7 +392,7 @@
|
|||
#if defined(USB_CAN_BE_BOTH) || defined(__DOXYGEN__)
|
||||
#include "Core/OTG.h"
|
||||
#endif
|
||||
|
||||
|
||||
#include "Class/AndroidAccessoryClass.h"
|
||||
#include "Class/AudioClass.h"
|
||||
#include "Class/CDCClass.h"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue