aboutsummaryrefslogtreecommitdiffstats
path: root/LUFA/Drivers/USB/Class/Device/CDCClassDevice.c
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2015-08-01 11:46:05 +1000
committerDean Camera <dean@fourwalledcubicle.com>2015-08-01 11:46:05 +1000
commit617763ae20a9fbd35ed86956450f1555286636af (patch)
tree069b89cc3011f9590869e3b6e7bb72fea82e3ea8 /LUFA/Drivers/USB/Class/Device/CDCClassDevice.c
parentd30294936d4772e71e842acfdc4b1e9901bdb84f (diff)
parent64ef5396a5eb502d326e173ac6e6de9b284ec1ec (diff)
downloadlufa-617763ae20a9fbd35ed86956450f1555286636af.tar.gz
lufa-617763ae20a9fbd35ed86956450f1555286636af.tar.bz2
lufa-617763ae20a9fbd35ed86956450f1555286636af.zip
Merge pull request #49 from the2masters/progmem
Add PROGMEM string/data send variants to the CDC class driver (thanks to Stefan Hellermann).
Diffstat (limited to 'LUFA/Drivers/USB/Class/Device/CDCClassDevice.c')
-rw-r--r--LUFA/Drivers/USB/Class/Device/CDCClassDevice.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/LUFA/Drivers/USB/Class/Device/CDCClassDevice.c b/LUFA/Drivers/USB/Class/Device/CDCClassDevice.c
index 6dfbb1c3d..c366c2f5e 100644
--- a/LUFA/Drivers/USB/Class/Device/CDCClassDevice.c
+++ b/LUFA/Drivers/USB/Class/Device/CDCClassDevice.c
@@ -155,6 +155,16 @@ 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)
@@ -166,6 +176,17 @@ 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;
+
+ Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpoint.Address);
+ return Endpoint_Write_PStream_LE(Buffer, Length, NULL);
+}
+
uint8_t CDC_Device_SendByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
const uint8_t Data)
{