aboutsummaryrefslogtreecommitdiffstats
path: root/LUFA/Drivers/USB/Class/Device
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2018-02-18 19:58:33 +1100
committerDean Camera <dean@fourwalledcubicle.com>2018-02-18 19:59:21 +1100
commit2028e82e455a3d4caab3ad47b0c3a0815e1c1ae6 (patch)
treedc5d70a6b51ddaa9c00d0db3421e581646d4923c /LUFA/Drivers/USB/Class/Device
parente2d1b437c7454e621a349c9ba47ecfdf91f8fab2 (diff)
downloadlufa-2028e82e455a3d4caab3ad47b0c3a0815e1c1ae6.tar.gz
lufa-2028e82e455a3d4caab3ad47b0c3a0815e1c1ae6.tar.bz2
lufa-2028e82e455a3d4caab3ad47b0c3a0815e1c1ae6.zip
Fixed CDC class Send_Device_*_P() and Send_Host_*_P() variant functions not compiled out for UC3 architecture.
Diffstat (limited to 'LUFA/Drivers/USB/Class/Device')
-rw-r--r--LUFA/Drivers/USB/Class/Device/CDCClassDevice.c112
-rw-r--r--LUFA/Drivers/USB/Class/Device/CDCClassDevice.h56
2 files changed, 89 insertions, 79 deletions
diff --git a/LUFA/Drivers/USB/Class/Device/CDCClassDevice.c b/LUFA/Drivers/USB/Class/Device/CDCClassDevice.c
index bf6e30141..6813decd7 100644
--- a/LUFA/Drivers/USB/Class/Device/CDCClassDevice.c
+++ b/LUFA/Drivers/USB/Class/Device/CDCClassDevice.c
@@ -155,16 +155,6 @@ uint8_t CDC_Device_SendString(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo
return Endpoint_Write_Stream_LE(String, strlen(String), NULL);
}
-uint8_t CDC_Device_SendString_P(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
- const char* const String)
-{
- if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
- return ENDPOINT_RWSTREAM_DeviceDisconnected;
-
- Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpoint.Address);
- return Endpoint_Write_PStream_LE(String, strlen_P(String), NULL);
-}
-
uint8_t CDC_Device_SendData(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
const void* const Buffer,
const uint16_t Length)
@@ -176,16 +166,28 @@ uint8_t CDC_Device_SendData(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
return Endpoint_Write_Stream_LE(Buffer, Length, NULL);
}
-uint8_t CDC_Device_SendData_P(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
- const void* const Buffer,
- const uint16_t Length)
-{
- if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
- return ENDPOINT_RWSTREAM_DeviceDisconnected;
+#if defined(ARCH_HAS_FLASH_ADDRESS_SPACE)
+ uint8_t CDC_Device_SendString_P(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
+ const char* const String)
+ {
+ if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
+ return ENDPOINT_RWSTREAM_DeviceDisconnected;
- Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpoint.Address);
- return Endpoint_Write_PStream_LE(Buffer, Length, NULL);
-}
+ Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpoint.Address);
+ return Endpoint_Write_PStream_LE(String, strlen_P(String), NULL);
+ }
+
+ uint8_t CDC_Device_SendData_P(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
+ const void* const Buffer,
+ const uint16_t Length)
+ {
+ if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
+ return ENDPOINT_RWSTREAM_DeviceDisconnected;
+
+ Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpoint.Address);
+ return Endpoint_Write_PStream_LE(Buffer, Length, NULL);
+ }
+#endif
uint8_t CDC_Device_SendByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
const uint8_t Data)
@@ -306,51 +308,51 @@ void CDC_Device_SendControlLineStateChange(USB_ClassInfo_CDC_Device_t* const CDC
}
#if defined(FDEV_SETUP_STREAM)
-void CDC_Device_CreateStream(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
- FILE* const Stream)
-{
- *Stream = (FILE)FDEV_SETUP_STREAM(CDC_Device_putchar, CDC_Device_getchar, _FDEV_SETUP_RW);
- fdev_set_udata(Stream, CDCInterfaceInfo);
-}
-
-void CDC_Device_CreateBlockingStream(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
- FILE* const Stream)
-{
- *Stream = (FILE)FDEV_SETUP_STREAM(CDC_Device_putchar, CDC_Device_getchar_Blocking, _FDEV_SETUP_RW);
- fdev_set_udata(Stream, CDCInterfaceInfo);
-}
+ void CDC_Device_CreateStream(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
+ FILE* const Stream)
+ {
+ *Stream = (FILE)FDEV_SETUP_STREAM(CDC_Device_putchar, CDC_Device_getchar, _FDEV_SETUP_RW);
+ fdev_set_udata(Stream, CDCInterfaceInfo);
+ }
-static int CDC_Device_putchar(char c,
- FILE* Stream)
-{
- return CDC_Device_SendByte((USB_ClassInfo_CDC_Device_t*)fdev_get_udata(Stream), c) ? _FDEV_ERR : c;
-}
+ void CDC_Device_CreateBlockingStream(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
+ FILE* const Stream)
+ {
+ *Stream = (FILE)FDEV_SETUP_STREAM(CDC_Device_putchar, CDC_Device_getchar_Blocking, _FDEV_SETUP_RW);
+ fdev_set_udata(Stream, CDCInterfaceInfo);
+ }
-static int CDC_Device_getchar(FILE* Stream)
-{
- int16_t ReceivedByte = CDC_Device_ReceiveByte((USB_ClassInfo_CDC_Device_t*)fdev_get_udata(Stream));
+ static int CDC_Device_putchar(char c,
+ FILE* Stream)
+ {
+ return CDC_Device_SendByte((USB_ClassInfo_CDC_Device_t*)fdev_get_udata(Stream), c) ? _FDEV_ERR : c;
+ }
- if (ReceivedByte < 0)
- return _FDEV_EOF;
+ static int CDC_Device_getchar(FILE* Stream)
+ {
+ int16_t ReceivedByte = CDC_Device_ReceiveByte((USB_ClassInfo_CDC_Device_t*)fdev_get_udata(Stream));
- return ReceivedByte;
-}
+ if (ReceivedByte < 0)
+ return _FDEV_EOF;
-static int CDC_Device_getchar_Blocking(FILE* Stream)
-{
- int16_t ReceivedByte;
+ return ReceivedByte;
+ }
- while ((ReceivedByte = CDC_Device_ReceiveByte((USB_ClassInfo_CDC_Device_t*)fdev_get_udata(Stream))) < 0)
+ static int CDC_Device_getchar_Blocking(FILE* Stream)
{
- if (USB_DeviceState == DEVICE_STATE_Unattached)
- return _FDEV_EOF;
+ int16_t ReceivedByte;
- CDC_Device_USBTask((USB_ClassInfo_CDC_Device_t*)fdev_get_udata(Stream));
- USB_USBTask();
- }
+ while ((ReceivedByte = CDC_Device_ReceiveByte((USB_ClassInfo_CDC_Device_t*)fdev_get_udata(Stream))) < 0)
+ {
+ if (USB_DeviceState == DEVICE_STATE_Unattached)
+ return _FDEV_EOF;
- return ReceivedByte;
-}
+ CDC_Device_USBTask((USB_ClassInfo_CDC_Device_t*)fdev_get_udata(Stream));
+ USB_USBTask();
+ }
+
+ return ReceivedByte;
+ }
#endif
void CDC_Device_Event_Stub(void)
diff --git a/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h b/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h
index 4b307fc9e..6fea69176 100644
--- a/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h
+++ b/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h
@@ -182,27 +182,25 @@
void EVENT_CDC_Device_BreakSent(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
const uint8_t Duration) ATTR_NON_NULL_PTR_ARG(1);
- /** Sends a given data buffer 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.
+ /** Sends a given null terminated string 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.
*
* \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.
+ * \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_SendData(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);
+ uint8_t CDC_Device_SendString(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
+ const char* const String) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
- /** 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
+ /** Sends a given data buffer 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
@@ -214,41 +212,51 @@
*
* \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,
+ uint8_t CDC_Device_SendData(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);
- /** Sends a given null terminated string 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
+ /** 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(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
- const char* const String) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
+ #if defined(ARCH_HAS_FLASH_ADDRESS_SPACE)
+ 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 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.
+ /** 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] String Pointer to the null terminated string to send to the host.
+ * \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_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);
+ #if defined(ARCH_HAS_FLASH_ADDRESS_SPACE)
+ 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);
+ #endif
/** Sends a given byte to the attached USB host, if connected. If a host is not connected when the function is called, the
* byte is discarded. Bytes will be queued for transmission to the host until either the endpoint bank becomes full, or the