aboutsummaryrefslogtreecommitdiffstats
path: root/LUFA/Drivers/USB
diff options
context:
space:
mode:
Diffstat (limited to 'LUFA/Drivers/USB')
-rw-r--r--LUFA/Drivers/USB/Class/Common/HIDParser.c6
-rw-r--r--LUFA/Drivers/USB/Class/Device/CCIDClassDevice.h5
-rw-r--r--LUFA/Drivers/USB/Class/Device/CDCClassDevice.h62
-rw-r--r--LUFA/Drivers/USB/Class/Host/CDCClassHost.h62
-rw-r--r--LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.c22
-rw-r--r--LUFA/Drivers/USB/Core/Events.c3
-rw-r--r--LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.c22
-rw-r--r--LUFA/Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.c22
8 files changed, 89 insertions, 115 deletions
diff --git a/LUFA/Drivers/USB/Class/Common/HIDParser.c b/LUFA/Drivers/USB/Class/Common/HIDParser.c
index 87eaf7c67..08f894e6b 100644
--- a/LUFA/Drivers/USB/Class/Common/HIDParser.c
+++ b/LUFA/Drivers/USB/Class/Common/HIDParser.c
@@ -105,9 +105,6 @@ uint8_t USB_ProcessHIDReport(const uint8_t* ReportData,
break;
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;
@@ -178,6 +175,9 @@ uint8_t USB_ProcessHIDReport(const uint8_t* ReportData,
if (UsageListSize == HID_USAGE_STACK_DEPTH)
return HID_PARSE_UsageListOverflow;
+ if ((HIDReportItem & HID_RI_DATA_SIZE_MASK) == HID_RI_DATA_BITS_32)
+ CurrStateTable->Attributes.Usage.Page = (ReportItemData >> 16);
+
UsageList[UsageListSize++] = ReportItemData;
break;
diff --git a/LUFA/Drivers/USB/Class/Device/CCIDClassDevice.h b/LUFA/Drivers/USB/Class/Device/CCIDClassDevice.h
index e29ccef08..562ad3b5f 100644
--- a/LUFA/Drivers/USB/Class/Device/CCIDClassDevice.h
+++ b/LUFA/Drivers/USB/Class/Device/CCIDClassDevice.h
@@ -147,8 +147,8 @@
* Retrieves the current status of a given slot
*
* \param[in,out] CCIDInterfaceInfo Pointer to a structure containing a CCID Class configuration and state.
- * \param[in] slot The slot ID from which we want to retrieve the status.
- * \param[out] error The result of the operation, or error.
+ * \param[in] Slot The slot ID from which we want to retrieve the status.
+ * \param[out] Error The result of the operation, or error.
*
* \return The command result code.
*/
@@ -178,6 +178,7 @@
* \param[in,out] CCIDInterfaceInfo Pointer to a structure containing a CCID Class configuration, state and protocol data.
* \param[in] Slot The slot ID from which we want to retrieve the status.
* \param[out] Error The result of the operation, or error.
+ * \param[out] ProtocolNum The CCID protocol ID of the parameter being retrieved.
* \param[out] T0 Pointer to a buffer where the parameters will be returned
*
* \return The command result code.
diff --git a/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h b/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h
index 2e327ef22..69dcff3d6 100644
--- a/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h
+++ b/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h
@@ -216,43 +216,43 @@
const void* const Buffer,
const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
- /** Sends a given null terminated string from PROGMEM space to the attached USB host, if connected. If a host is not connected
- * when the function is called, the string is discarded. Bytes will be queued for transmission to the host until either
- * the endpoint bank becomes full, or the \ref CDC_Device_Flush() function is called to flush the pending data to
- * the host. This allows for multiple bytes to be packed into a single endpoint packet, increasing data throughput.
- *
- * \pre This function must only be called when the Device state machine is in the \ref DEVICE_STATE_Configured state or
- * the call will fail.
- *
- * \note This function does not exist on architectures that do not have a separate flash memory space.
- *
- * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state.
- * \param[in] String Pointer to the null terminated string to send to the host.
- *
- * \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum.
- */
#if defined(ARCH_HAS_FLASH_ADDRESS_SPACE)
+ /** Sends a given null terminated string from PROGMEM space to the attached USB host, if connected. If a host is not connected
+ * when the function is called, the string is discarded. Bytes will be queued for transmission to the host until either
+ * the endpoint bank becomes full, or the \ref CDC_Device_Flush() function is called to flush the pending data to
+ * the host. This allows for multiple bytes to be packed into a single endpoint packet, increasing data throughput.
+ *
+ * \pre This function must only be called when the Device state machine is in the \ref DEVICE_STATE_Configured state or
+ * the call will fail.
+ *
+ * \note This function does not exist on architectures that do not have a separate flash memory space.
+ *
+ * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state.
+ * \param[in] String Pointer to the null terminated string to send to the host.
+ *
+ * \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum.
+ */
uint8_t CDC_Device_SendString_P(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
const char* const String) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
#endif
- /** Sends a given data buffer from PROGMEM space to the attached USB host, if connected. If a host is not connected when the
- * function is called, the string is discarded. Bytes will be queued for transmission to the host until either the endpoint
- * bank becomes full, or the \ref CDC_Device_Flush() function is called to flush the pending data to the host. This allows
- * for multiple bytes to be packed into a single endpoint packet, increasing data throughput.
- *
- * \pre This function must only be called when the Device state machine is in the \ref DEVICE_STATE_Configured state or
- * the call will fail.
- *
- * \note This function does not exist on architectures that do not have a separate flash memory space.
- *
- * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state.
- * \param[in] Buffer Pointer to a buffer containing the data to send to the device.
- * \param[in] Length Length of the data to send to the host.
- *
- * \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum.
- */
#if defined(ARCH_HAS_FLASH_ADDRESS_SPACE)
+ /** Sends a given data buffer from PROGMEM space to the attached USB host, if connected. If a host is not connected when the
+ * function is called, the string is discarded. Bytes will be queued for transmission to the host until either the endpoint
+ * bank becomes full, or the \ref CDC_Device_Flush() function is called to flush the pending data to the host. This allows
+ * for multiple bytes to be packed into a single endpoint packet, increasing data throughput.
+ *
+ * \pre This function must only be called when the Device state machine is in the \ref DEVICE_STATE_Configured state or
+ * the call will fail.
+ *
+ * \note This function does not exist on architectures that do not have a separate flash memory space.
+ *
+ * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state.
+ * \param[in] Buffer Pointer to a buffer containing the data to send to the device.
+ * \param[in] Length Length of the data to send to the host.
+ *
+ * \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum.
+ */
uint8_t CDC_Device_SendData_P(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
const void* const Buffer,
const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
diff --git a/LUFA/Drivers/USB/Class/Host/CDCClassHost.h b/LUFA/Drivers/USB/Class/Host/CDCClassHost.h
index 306bf23d1..da557733f 100644
--- a/LUFA/Drivers/USB/Class/Host/CDCClassHost.h
+++ b/LUFA/Drivers/USB/Class/Host/CDCClassHost.h
@@ -217,43 +217,43 @@
const void* const Buffer,
const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);
- /** Sends a given null terminated string from PROGMEM space to the attached USB device, if connected. If a device is not connected
- * when the function is called, the string is discarded. Bytes will be queued for transmission to the device until either
- * the pipe bank becomes full, or the \ref CDC_Host_Flush() function is called to flush the pending data to
- * the device. This allows for multiple bytes to be packed into a single pipe packet, increasing data throughput.
- *
- * \pre This function must only be called when the Host state machine is in the \ref HOST_STATE_Configured state or
- * the call will fail.
- *
- * \note This function does not exist on architectures that do not have a separate flash memory space.
- *
- * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class host configuration and state.
- * \param[in] String Pointer to the null terminated string to send to the host.
- *
- * \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
- */
#if defined(ARCH_HAS_FLASH_ADDRESS_SPACE)
+ /** Sends a given null terminated string from PROGMEM space to the attached USB device, if connected. If a device is not connected
+ * when the function is called, the string is discarded. Bytes will be queued for transmission to the device until either
+ * the pipe bank becomes full, or the \ref CDC_Host_Flush() function is called to flush the pending data to
+ * the device. This allows for multiple bytes to be packed into a single pipe packet, increasing data throughput.
+ *
+ * \pre This function must only be called when the Host state machine is in the \ref HOST_STATE_Configured state or
+ * the call will fail.
+ *
+ * \note This function does not exist on architectures that do not have a separate flash memory space.
+ *
+ * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class host configuration and state.
+ * \param[in] String Pointer to the null terminated string to send to the host.
+ *
+ * \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
+ */
uint8_t CDC_Host_SendString_P(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
const char* const String) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
#endif
- /** Sends a given data buffer from PROGMEM space to the attached USB device, if connected. If a device is not connected when the
- * function is called, the string is discarded. Bytes will be queued for transmission to the host until either the pipe
- * bank becomes full, or the \ref CDC_Host_Flush() function is called to flush the pending data to the device. This allows
- * for multiple bytes to be packed into a single pipe packet, increasing data throughput.
- *
- * \pre This function must only be called when the Host state machine is in the \ref HOST_STATE_Configured state or
- * the call will fail.
- *
- * \note This function does not exist on architectures that do not have a separate flash memory space.
- *
- * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class host configuration and state.
- * \param[in] Buffer Pointer to a buffer containing the data to send to the device.
- * \param[in] Length Length of the data to send to the host.
- *
- * \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
- */
#if defined(ARCH_HAS_FLASH_ADDRESS_SPACE)
+ /** Sends a given data buffer from PROGMEM space to the attached USB device, if connected. If a device is not connected when the
+ * function is called, the string is discarded. Bytes will be queued for transmission to the host until either the pipe
+ * bank becomes full, or the \ref CDC_Host_Flush() function is called to flush the pending data to the device. This allows
+ * for multiple bytes to be packed into a single pipe packet, increasing data throughput.
+ *
+ * \pre This function must only be called when the Host state machine is in the \ref HOST_STATE_Configured state or
+ * the call will fail.
+ *
+ * \note This function does not exist on architectures that do not have a separate flash memory space.
+ *
+ * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class host configuration and state.
+ * \param[in] Buffer Pointer to a buffer containing the data to send to the device.
+ * \param[in] Length Length of the data to send to the host.
+ *
+ * \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
+ */
uint8_t CDC_Host_SendData_P(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
const void* const Buffer,
const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);
diff --git a/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.c b/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.c
index 0364c60f1..bf6fee42a 100644
--- a/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.c
+++ b/LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.c
@@ -43,15 +43,12 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length,
uint16_t* const BytesProcessed)
{
uint8_t ErrorCode;
- uint16_t BytesInTransfer = 0;
+ uint16_t BytesInTransfer = BytesProcessed ? *BytesProcessed : 0;
if ((ErrorCode = Endpoint_WaitUntilReady()))
return ErrorCode;
- if (BytesProcessed != NULL)
- Length -= *BytesProcessed;
-
- while (Length)
+ while (BytesInTransfer < Length)
{
if (!(Endpoint_IsReadWriteAllowed()))
{
@@ -59,7 +56,7 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length,
if (BytesProcessed != NULL)
{
- *BytesProcessed += BytesInTransfer;
+ *BytesProcessed = BytesInTransfer;
return ENDPOINT_RWSTREAM_IncompleteTransfer;
}
@@ -69,8 +66,6 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length,
else
{
Endpoint_Discard_8();
-
- Length--;
BytesInTransfer++;
}
}
@@ -82,15 +77,12 @@ uint8_t Endpoint_Null_Stream(uint16_t Length,
uint16_t* const BytesProcessed)
{
uint8_t ErrorCode;
- uint16_t BytesInTransfer = 0;
+ uint16_t BytesInTransfer = BytesProcessed ? *BytesProcessed : 0;
if ((ErrorCode = Endpoint_WaitUntilReady()))
return ErrorCode;
- if (BytesProcessed != NULL)
- Length -= *BytesProcessed;
-
- while (Length)
+ while (BytesInTransfer < Length)
{
if (!(Endpoint_IsReadWriteAllowed()))
{
@@ -98,7 +90,7 @@ uint8_t Endpoint_Null_Stream(uint16_t Length,
if (BytesProcessed != NULL)
{
- *BytesProcessed += BytesInTransfer;
+ *BytesProcessed = BytesInTransfer;
return ENDPOINT_RWSTREAM_IncompleteTransfer;
}
@@ -108,8 +100,6 @@ uint8_t Endpoint_Null_Stream(uint16_t Length,
else
{
Endpoint_Write_8(0);
-
- Length--;
BytesInTransfer++;
}
}
diff --git a/LUFA/Drivers/USB/Core/Events.c b/LUFA/Drivers/USB/Core/Events.c
index df21f5045..1aeb98eda 100644
--- a/LUFA/Drivers/USB/Core/Events.c
+++ b/LUFA/Drivers/USB/Core/Events.c
@@ -39,10 +39,13 @@ void USB_Event_Stub(void)
void USB_Event_Stub_2(const uint8_t _1)
{
+ (void)_1;
USB_Event_Stub();
}
void USB_Event_Stub_3(const uint8_t _1, const uint8_t _2)
{
+ (void)_1;
+ (void)_2;
USB_Event_Stub();
}
diff --git a/LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.c b/LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.c
index 214edd733..5a6131f1f 100644
--- a/LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.c
+++ b/LUFA/Drivers/USB/Core/UC3/EndpointStream_UC3.c
@@ -43,15 +43,12 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length,
uint16_t* const BytesProcessed)
{
uint8_t ErrorCode;
- uint16_t BytesInTransfer = 0;
+ uint16_t BytesInTransfer = BytesProcessed ? *BytesProcessed : 0;
if ((ErrorCode = Endpoint_WaitUntilReady()))
return ErrorCode;
- if (BytesProcessed != NULL)
- Length -= *BytesProcessed;
-
- while (Length)
+ while (BytesInTransfer < Length)
{
if (!(Endpoint_IsReadWriteAllowed()))
{
@@ -59,7 +56,7 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length,
if (BytesProcessed != NULL)
{
- *BytesProcessed += BytesInTransfer;
+ *BytesProcessed = BytesInTransfer;
return ENDPOINT_RWSTREAM_IncompleteTransfer;
}
@@ -69,8 +66,6 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length,
else
{
Endpoint_Discard_8();
-
- Length--;
BytesInTransfer++;
}
}
@@ -82,15 +77,12 @@ uint8_t Endpoint_Null_Stream(uint16_t Length,
uint16_t* const BytesProcessed)
{
uint8_t ErrorCode;
- uint16_t BytesInTransfer = 0;
+ uint16_t BytesInTransfer = BytesProcessed ? *BytesProcessed : 0;
if ((ErrorCode = Endpoint_WaitUntilReady()))
return ErrorCode;
- if (BytesProcessed != NULL)
- Length -= *BytesProcessed;
-
- while (Length)
+ while (BytesInTransfer < Length)
{
if (!(Endpoint_IsReadWriteAllowed()))
{
@@ -98,7 +90,7 @@ uint8_t Endpoint_Null_Stream(uint16_t Length,
if (BytesProcessed != NULL)
{
- *BytesProcessed += BytesInTransfer;
+ *BytesProcessed = BytesInTransfer;
return ENDPOINT_RWSTREAM_IncompleteTransfer;
}
@@ -108,8 +100,6 @@ uint8_t Endpoint_Null_Stream(uint16_t Length,
else
{
Endpoint_Write_8(0);
-
- Length--;
BytesInTransfer++;
}
}
diff --git a/LUFA/Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.c b/LUFA/Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.c
index a24f624ab..e8ee7e645 100644
--- a/LUFA/Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.c
+++ b/LUFA/Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.c
@@ -43,15 +43,12 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length,
uint16_t* const BytesProcessed)
{
uint8_t ErrorCode;
- uint16_t BytesInTransfer = 0;
+ uint16_t BytesInTransfer = BytesProcessed ? *BytesProcessed : 0;
if ((ErrorCode = Endpoint_WaitUntilReady()))
return ErrorCode;
- if (BytesProcessed != NULL)
- Length -= *BytesProcessed;
-
- while (Length)
+ while (BytesInTransfer < Length)
{
if (!(Endpoint_IsReadWriteAllowed()))
{
@@ -59,7 +56,7 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length,
if (BytesProcessed != NULL)
{
- *BytesProcessed += BytesInTransfer;
+ *BytesProcessed = BytesInTransfer;
return ENDPOINT_RWSTREAM_IncompleteTransfer;
}
@@ -69,8 +66,6 @@ uint8_t Endpoint_Discard_Stream(uint16_t Length,
else
{
Endpoint_Discard_8();
-
- Length--;
BytesInTransfer++;
}
}
@@ -82,15 +77,12 @@ uint8_t Endpoint_Null_Stream(uint16_t Length,
uint16_t* const BytesProcessed)
{
uint8_t ErrorCode;
- uint16_t BytesInTransfer = 0;
+ uint16_t BytesInTransfer = BytesProcessed ? *BytesProcessed : 0;
if ((ErrorCode = Endpoint_WaitUntilReady()))
return ErrorCode;
- if (BytesProcessed != NULL)
- Length -= *BytesProcessed;
-
- while (Length)
+ while (BytesInTransfer < Length)
{
if (!(Endpoint_IsReadWriteAllowed()))
{
@@ -98,7 +90,7 @@ uint8_t Endpoint_Null_Stream(uint16_t Length,
if (BytesProcessed != NULL)
{
- *BytesProcessed += BytesInTransfer;
+ *BytesProcessed = BytesInTransfer;
return ENDPOINT_RWSTREAM_IncompleteTransfer;
}
@@ -108,8 +100,6 @@ uint8_t Endpoint_Null_Stream(uint16_t Length,
else
{
Endpoint_Write_8(0);
-
- Length--;
BytesInTransfer++;
}
}