X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/071e02c6b6b4837fa9cf0b6d4c749994e02638d7..5430e1973ce21f4bc558257855a06baf6a28217c:/Projects/MissileLauncher/MissileLauncher.c diff --git a/Projects/MissileLauncher/MissileLauncher.c b/Projects/MissileLauncher/MissileLauncher.c index dcc6e732f..b085ed54a 100644 --- a/Projects/MissileLauncher/MissileLauncher.c +++ b/Projects/MissileLauncher/MissileLauncher.c @@ -2,22 +2,22 @@ USB Missile Launcher Demo Copyright (C) Dave Fletcher, 2010. fletch at fletchtronics dot net - + Based on research by Scott Weston at http://code.google.com/p/pymissile */ /* - Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com) Copyright 2010 Dave Fletcher (fletch [at] fletchtronics [dot] net) - Permission to use, copy, modify, distribute, and sell this + Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in + without fee, provided that the above copyright notice appear in all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the software without specific, written prior permission. The author disclaim all warranties with regard to this @@ -42,7 +42,7 @@ * the application and is responsible for the initial application hardware configuration as well * as the sending of commands to the attached launcher toy. */ - + #include "MissileLauncher.h" /** Launcher first init command report data sequence */ @@ -103,7 +103,7 @@ int main(void) for (;;) { Read_Joystick_Status(); - + HID_Host_Task(); USB_USBTask(); } @@ -151,7 +151,8 @@ void Read_Joystick_Status(void) * \param[in] Report Report data to send. * \param[in] ReportSize Report length in bytes. */ -void Send_Command_Report(uint8_t* const Report, const uint16_t ReportSize) +void Send_Command_Report(uint8_t* const Report, + const uint16_t ReportSize) { memcpy(CmdBuffer, Report, 8); WriteNextReport(CmdBuffer, ReportSize); @@ -172,7 +173,7 @@ void Send_Command(uint8_t* const Command) Send_Command_Report(CMD_INITB, 8); Send_Command_Report(Command, LAUNCHER_CMD_BUFFER_SIZE); } - + CmdState = Command; } @@ -203,7 +204,7 @@ void EVENT_USB_Host_DeviceEnumerationComplete(void) /** Event handler for the USB_HostError event. This indicates that a hardware error occurred while in host mode. */ void EVENT_USB_Host_HostError(const uint8_t ErrorCode) { - USB_ShutDown(); + USB_Disable(); LEDs_SetAllLEDs(LEDMASK_USB_ERROR); for(;;); @@ -212,7 +213,8 @@ void EVENT_USB_Host_HostError(const uint8_t ErrorCode) /** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while * enumerating an attached USB device. */ -void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) +void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, + const uint8_t SubErrorCode) { LEDs_SetAllLEDs(LEDMASK_USB_ERROR); } @@ -229,13 +231,13 @@ void DiscardNextReport(void) { /* Refreeze HID data IN pipe */ Pipe_Freeze(); - + return; } - + /* Clear the IN endpoint, ready for next data packet */ Pipe_ClearIN(); - + /* Refreeze HID data IN pipe */ Pipe_Freeze(); } @@ -245,11 +247,12 @@ void DiscardNextReport(void) * \param[in] ReportOUTData Buffer containing the report to send to the device * \param[in] ReportLength Length of the report to send */ -void WriteNextReport(uint8_t* const ReportOUTData, const uint16_t ReportLength) +void WriteNextReport(uint8_t* const ReportOUTData, + const uint16_t ReportLength) { /* Select and unfreeze HID data OUT pipe */ Pipe_SelectPipe(HID_DATA_OUT_PIPE); - + /* Not all HID devices have an OUT endpoint (some require OUT reports to be sent over the * control endpoint instead) - check to see if the OUT endpoint has been initialized */ if (Pipe_IsConfigured()) @@ -261,13 +264,13 @@ void WriteNextReport(uint8_t* const ReportOUTData, const uint16_t ReportLength) { /* Refreeze the data OUT pipe */ Pipe_Freeze(); - + return; } - + /* Write out HID report data */ - Pipe_Write_Stream_LE(ReportOUTData, ReportLength); - + Pipe_Write_Stream_LE(ReportOUTData, ReportLength, NULL); + /* Clear the OUT endpoint, send last data packet */ Pipe_ClearOUT(); @@ -280,7 +283,7 @@ void WriteNextReport(uint8_t* const ReportOUTData, const uint16_t ReportLength) USB_ControlRequest = (USB_Request_Header_t) { .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE), - .bRequest = REQ_SetReport, + .bRequest = HID_REQ_SetReport, .wValue = 0x02, .wIndex = 0x01, .wLength = ReportLength, @@ -321,12 +324,12 @@ void HID_Host_Task(void) { /* Indicate error status */ LEDs_SetAllLEDs(LEDMASK_USB_ERROR); - + /* Wait until USB device disconnected */ USB_HostState = HOST_STATE_WaitForDeviceRemoval; break; } - + USB_HostState = HOST_STATE_Configured; break; case HOST_STATE_Configured: @@ -335,3 +338,4 @@ void HID_Host_Task(void) break; } } +