forked from mfulz_github/qmk_firmware
Add return codes to the CDC Host Class driver String/Byte transmission functions.
This commit is contained in:
parent
cf2776531c
commit
dac7b046fd
@ -256,33 +256,41 @@ uint8_t CDC_Host_SendControlLineStateChange(USB_ClassInfo_CDC_Host_t* CDCInterfa
|
|||||||
return USB_Host_SendControlRequest(NULL);
|
return USB_Host_SendControlRequest(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CDC_Host_SendString(USB_ClassInfo_CDC_Host_t* CDCInterfaceInfo, char* Data, uint16_t Length)
|
uint8_t CDC_Host_SendString(USB_ClassInfo_CDC_Host_t* CDCInterfaceInfo, char* Data, uint16_t Length)
|
||||||
{
|
{
|
||||||
if ((USB_HostState != HOST_STATE_Configured) || !(CDCInterfaceInfo->State.Active))
|
if ((USB_HostState != HOST_STATE_Configured) || !(CDCInterfaceInfo->State.Active))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
uint8_t ErrorCode;
|
||||||
|
|
||||||
Pipe_SelectPipe(CDCInterfaceInfo->Config.DataOUTPipeNumber);
|
Pipe_SelectPipe(CDCInterfaceInfo->Config.DataOUTPipeNumber);
|
||||||
Pipe_Unfreeze();
|
Pipe_Unfreeze();
|
||||||
Pipe_Write_Stream_LE(Data, Length, NO_STREAM_CALLBACK);
|
ErrorCode = Pipe_Write_Stream_LE(Data, Length, NO_STREAM_CALLBACK);
|
||||||
Pipe_Freeze();
|
Pipe_Freeze();
|
||||||
|
|
||||||
|
return ErrorCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CDC_Host_SendByte(USB_ClassInfo_CDC_Host_t* CDCInterfaceInfo, uint8_t Data)
|
uint8_t CDC_Host_SendByte(USB_ClassInfo_CDC_Host_t* CDCInterfaceInfo, uint8_t Data)
|
||||||
{
|
{
|
||||||
if ((USB_HostState != HOST_STATE_Configured) || !(CDCInterfaceInfo->State.Active))
|
if ((USB_HostState != HOST_STATE_Configured) || !(CDCInterfaceInfo->State.Active))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
uint8_t ErrorCode = PIPE_READYWAIT_NoError;
|
||||||
|
|
||||||
Pipe_SelectPipe(CDCInterfaceInfo->Config.DataOUTPipeNumber);
|
Pipe_SelectPipe(CDCInterfaceInfo->Config.DataOUTPipeNumber);
|
||||||
Pipe_Unfreeze();
|
Pipe_Unfreeze();
|
||||||
|
|
||||||
if (!(Pipe_IsReadWriteAllowed()))
|
if (!(Pipe_IsReadWriteAllowed()))
|
||||||
{
|
{
|
||||||
Pipe_ClearOUT();
|
Pipe_ClearOUT();
|
||||||
Pipe_WaitUntilReady();
|
ErrorCode = Pipe_WaitUntilReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
Pipe_Write_Byte(Data);
|
Pipe_Write_Byte(Data);
|
||||||
Pipe_Freeze();
|
Pipe_Freeze();
|
||||||
|
|
||||||
|
return ErrorCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t CDC_Host_BytesReceived(USB_ClassInfo_CDC_Host_t* CDCInterfaceInfo)
|
uint16_t CDC_Host_BytesReceived(USB_ClassInfo_CDC_Host_t* CDCInterfaceInfo)
|
||||||
|
@ -163,16 +163,20 @@
|
|||||||
* \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class host configuration and state
|
* \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class host configuration and state
|
||||||
* \param[in] Data Pointer to the string to send to the device
|
* \param[in] Data Pointer to the string to send to the device
|
||||||
* \param[in] Length Size in bytes of the string to send to the device
|
* \param[in] Length Size in bytes of the string to send to the device
|
||||||
|
*
|
||||||
|
* \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum
|
||||||
*/
|
*/
|
||||||
void CDC_Host_SendString(USB_ClassInfo_CDC_Host_t* CDCInterfaceInfo, char* Data, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1, 2);
|
uint8_t CDC_Host_SendString(USB_ClassInfo_CDC_Host_t* CDCInterfaceInfo, char* Data, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1, 2);
|
||||||
|
|
||||||
/** Sends a given byte to the attached USB device, if connected. If a host is not connected when the function is called, the
|
/** Sends a given byte to the attached USB device, if connected. If a host is not connected when the function is called, the
|
||||||
* byte is discarded.
|
* byte is discarded.
|
||||||
*
|
*
|
||||||
* \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class host configuration and state
|
* \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class host configuration and state
|
||||||
* \param[in] Data Byte of data to send to the device
|
* \param[in] Data Byte of data to send to the device
|
||||||
|
*
|
||||||
|
* \return A value from the \ref Pipe_WaitUntilReady_ErrorCodes_t enum
|
||||||
*/
|
*/
|
||||||
void CDC_Host_SendByte(USB_ClassInfo_CDC_Host_t* CDCInterfaceInfo, uint8_t Data) ATTR_NON_NULL_PTR_ARG(1);
|
uint8_t CDC_Host_SendByte(USB_ClassInfo_CDC_Host_t* CDCInterfaceInfo, uint8_t Data) ATTR_NON_NULL_PTR_ARG(1);
|
||||||
|
|
||||||
/** Determines the number of bytes received by the CDC interface from the device, waiting to be read.
|
/** Determines the number of bytes received by the CDC interface from the device, waiting to be read.
|
||||||
*
|
*
|
||||||
|
@ -51,9 +51,10 @@ uint8_t USB_ProcessHIDReport(const uint8_t* ReportData, uint16_t ReportSize, HID
|
|||||||
|
|
||||||
while (ReportSize)
|
while (ReportSize)
|
||||||
{
|
{
|
||||||
uint8_t HIDReportItem = *(ReportData++);
|
uint8_t HIDReportItem = *ReportData;
|
||||||
uint32_t ReportItemData = 0;
|
uint32_t ReportItemData = 0;
|
||||||
|
|
||||||
|
ReportData++;
|
||||||
ReportSize--;
|
ReportSize--;
|
||||||
|
|
||||||
switch (HIDReportItem & DATA_SIZE_MASK)
|
switch (HIDReportItem & DATA_SIZE_MASK)
|
||||||
|
@ -79,11 +79,11 @@
|
|||||||
#if !defined(HID_STATETABLE_STACK_DEPTH) || defined(__DOXYGEN__)
|
#if !defined(HID_STATETABLE_STACK_DEPTH) || defined(__DOXYGEN__)
|
||||||
/** Constant indicating the maximum stack depth of the state table. A larger state table
|
/** Constant indicating the maximum stack depth of the state table. A larger state table
|
||||||
* allows for more PUSH/POP report items to be nested, but consumes more memory. By default
|
* allows for more PUSH/POP report items to be nested, but consumes more memory. By default
|
||||||
* this is set to 3 levels (allowing for two PUSHes to be nested) but this can be overridden by
|
* this is set to 2 levels (allowing non-nested PUSH items) but this can be overridden by
|
||||||
* defining HID_STATETABLE_STACK_DEPTH to another value in the user project makefile, passing the
|
* defining HID_STATETABLE_STACK_DEPTH to another value in the user project makefile, passing the
|
||||||
* define to the compiler using the -D compiler switch.
|
* define to the compiler using the -D compiler switch.
|
||||||
*/
|
*/
|
||||||
#define HID_STATETABLE_STACK_DEPTH 3
|
#define HID_STATETABLE_STACK_DEPTH 2
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(HID_USAGE_STACK_DEPTH) || defined(__DOXYGEN__)
|
#if !defined(HID_USAGE_STACK_DEPTH) || defined(__DOXYGEN__)
|
||||||
@ -134,7 +134,7 @@
|
|||||||
HID_PARSE_HIDStackOverflow = 1, /**< More than \ref HID_STATETABLE_STACK_DEPTH nested PUSHes in the report. */
|
HID_PARSE_HIDStackOverflow = 1, /**< More than \ref HID_STATETABLE_STACK_DEPTH nested PUSHes in the report. */
|
||||||
HID_PARSE_HIDStackUnderflow = 2, /**< A POP was found when the state table stack was empty. */
|
HID_PARSE_HIDStackUnderflow = 2, /**< A POP was found when the state table stack was empty. */
|
||||||
HID_PARSE_InsufficientReportItems = 3, /**< More than \ref HID_MAX_REPORTITEMS report items in the report. */
|
HID_PARSE_InsufficientReportItems = 3, /**< More than \ref HID_MAX_REPORTITEMS report items in the report. */
|
||||||
HID_PARSE_UnexpectedEndCollection = 4, /**< END COLLECTION found without matching COLLECTION item. */
|
HID_PARSE_UnexpectedEndCollection = 4, /**< An END COLLECTION item found without matching COLLECTION item. */
|
||||||
HID_PARSE_InsufficientCollectionPaths = 5, /**< More than \ref HID_MAX_COLLECTIONS collections in the report. */
|
HID_PARSE_InsufficientCollectionPaths = 5, /**< More than \ref HID_MAX_COLLECTIONS collections in the report. */
|
||||||
HID_PARSE_UsageStackOverflow = 6, /**< More than \ref HID_USAGE_STACK_DEPTH usages listed in a row. */
|
HID_PARSE_UsageStackOverflow = 6, /**< More than \ref HID_USAGE_STACK_DEPTH usages listed in a row. */
|
||||||
};
|
};
|
||||||
|
@ -16,14 +16,14 @@
|
|||||||
* - Added new Endpoint_SetEndpointDirection() macro for bi-directional endpoints
|
* - Added new Endpoint_SetEndpointDirection() macro for bi-directional endpoints
|
||||||
* - Added new AVRISP project, a LUFA powered clone of the Atmel AVRISP-MKII programmer
|
* - Added new AVRISP project, a LUFA powered clone of the Atmel AVRISP-MKII programmer
|
||||||
* - Added ShutDown() functions for all hardware peripheral drivers, so that peripherals can be turned off after use
|
* - Added ShutDown() functions for all hardware peripheral drivers, so that peripherals can be turned off after use
|
||||||
|
* - Added new CDC_Device_Flush() command to the device mode CDC Class driver to flush Device->Host data
|
||||||
|
* - Added extra masks to the SPI driver, changed SPI_Init() so that the clock polarity and sample modes can be set
|
||||||
*
|
*
|
||||||
* <b>Changed:</b>
|
* <b>Changed:</b>
|
||||||
* - SetIdle requests to the HID device driver with a 0 idle period (send changes only) now only affect the requested
|
* - SetIdle requests to the HID device driver with a 0 idle period (send changes only) now only affect the requested
|
||||||
* HID interface within the device, not all HID interfaces
|
* HID interface within the device, not all HID interfaces
|
||||||
* - Added new CDC_Device_Flush() command to the device mode CDC Class driver
|
|
||||||
* - Added explicit attribute masks to the device mode demos' descriptors
|
* - Added explicit attribute masks to the device mode demos' descriptors
|
||||||
* - Added return values to the CDC and MIDI class driver transmit functions
|
* - Added return values to the CDC and MIDI class driver transmit functions
|
||||||
* - Added extra masks to the SPI driver, changed SPI_Init() so that the clock polarity and sample modes can be set
|
|
||||||
* - Optimized Endpoint_Read_Word_* and Pipe_Read_Word_* macros to reduce compiled size
|
* - Optimized Endpoint_Read_Word_* and Pipe_Read_Word_* macros to reduce compiled size
|
||||||
* - Added non-null function parameter pointer restrictions to USB Class drivers to improve user code reliability
|
* - Added non-null function parameter pointer restrictions to USB Class drivers to improve user code reliability
|
||||||
* - Added new "Common" section to the class drivers, to hold all mode-independant definitions for clarity
|
* - Added new "Common" section to the class drivers, to hold all mode-independant definitions for clarity
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
* or post your suggestion as an enhancement request to the project bug tracker.
|
* or post your suggestion as an enhancement request to the project bug tracker.
|
||||||
*
|
*
|
||||||
* <b>Targeted for This Release:</b>
|
* <b>Targeted for This Release:</b>
|
||||||
* - Finish HID and Still Image Host Mode Class Drivers, add demo summaries, add return codes to all relevant functions
|
* - Finish HID and Still Image Host Mode Class Drivers, add demo summaries
|
||||||
* - Add overviews of each of the officially supported boards to the manual
|
* - Add overviews of each of the officially supported boards to the manual
|
||||||
* - Re-add in flip, flip-ee, dfu and dfu-ee targets to project makefiles
|
* - Re-add in flip, flip-ee, dfu and dfu-ee targets to project makefiles
|
||||||
* - Add in new invalid event hook check targets to project makefiles
|
* - Add in new invalid event hook check targets to project makefiles
|
||||||
|
Loading…
x
Reference in New Issue
Block a user