#include "GenericHIDHost.h"\r
\r
/** Main program entry point. This routine configures the hardware required by the application, then\r
- * starts the scheduler to run the application tasks.\r
+ * enters a loop to run the application tasks in sequence.\r
*/\r
int main(void)\r
{\r
{\r
USB_ShutDown();\r
\r
- puts_P(PSTR(ESC_FG_RED "Host Mode Error\r\n"));\r
- printf_P(PSTR(" -- Error Code %d\r\n" ESC_FG_WHITE), ErrorCode);\r
+ printf_P(PSTR(ESC_FG_RED "Host Mode Error\r\n"\r
+ " -- Error Code %d\r\n" ESC_FG_WHITE), ErrorCode);\r
\r
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
for(;;);\r
*/\r
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode)\r
{\r
- puts_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"));\r
- printf_P(PSTR(" -- Error Code %d\r\n"), ErrorCode);\r
- printf_P(PSTR(" -- Sub Error Code %d\r\n"), SubErrorCode);\r
- printf_P(PSTR(" -- In State %d\r\n" ESC_FG_WHITE), USB_HostState);\r
+ printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"\r
+ " -- Error Code %d\r\n"\r
+ " -- Sub Error Code %d\r\n"\r
+ " -- In State %d\r\n" ESC_FG_WHITE), ErrorCode, SubErrorCode, USB_HostState);\r
\r
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
}\r
*\r
* \param[in] ReportOUTData Buffer containing the report to send to the device\r
* \param[in] ReportIndex Index of the report in the device (zero if the device does not use multiple reports)\r
- * \param[in] ReportType Type of report to send, either HID_REPORTTYPE_OUTPUT or HID_REPORTTYPE_FEATURE\r
+ * \param[in] ReportType Type of report to send, either REPORT_TYPE_OUT or REPORT_TYPE_FEATURE\r
* \param[in] ReportLength Length of the report to send\r
*/\r
void WriteNextReport(uint8_t* ReportOUTData, uint8_t ReportIndex, uint8_t ReportType, uint16_t ReportLength)\r
{\r
- /* Select and unfreeze HID data OUT pipe */\r
+ /* Select the HID data OUT pipe */\r
Pipe_SelectPipe(HID_DATA_OUT_PIPE);\r
\r
/* Not all HID devices have an OUT endpoint (some require OUT reports to be sent over the\r
* control endpoint instead) - check to see if the OUT endpoint has been initialized */\r
- if (Pipe_IsConfigured())\r
+ if (Pipe_IsConfigured() && (ReportType == REPORT_TYPE_OUT))\r
{\r
Pipe_Unfreeze();\r
\r
/* Set the device configuration to the first configuration (rarely do devices use multiple configurations) */\r
if ((ErrorCode = USB_Host_SetDeviceConfiguration(1)) != HOST_SENDCONTROL_Successful)\r
{\r
- puts_P(PSTR(ESC_FG_RED "Control Error (Set Configuration).\r\n"));\r
- printf_P(PSTR(" -- Error Code: %d\r\n" ESC_FG_WHITE), ErrorCode);\r
+ printf_P(PSTR(ESC_FG_RED "Control Error (Set Configuration).\r\n"\r
+ " -- Error Code: %d\r\n" ESC_FG_WHITE), ErrorCode);\r
\r
/* Indicate error status */\r
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r