X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/d475ea4394ba0e16f89300ebeb452cea7c2d9232..9d6a373cb61b55b94312de3809ac76fcbd0a696c:/Projects/MissileLauncher/MissileLauncher.c diff --git a/Projects/MissileLauncher/MissileLauncher.c b/Projects/MissileLauncher/MissileLauncher.c index 2782b695f..d15613eb8 100644 --- a/Projects/MissileLauncher/MissileLauncher.c +++ b/Projects/MissileLauncher/MissileLauncher.c @@ -54,40 +54,40 @@ #include "MissileLauncher.h" /** Launcher first init command report data sequence */ -static const uint8_t CMD_INITA[8] = { 85, 83, 66, 67, 0, 0, 4, 0 }; +uint8_t CMD_INITA[8] = { 85, 83, 66, 67, 0, 0, 4, 0 }; /** Launcher second init command report data sequence */ -static const uint8_t CMD_INITB[8] = { 85, 83, 66, 67, 0, 64, 2, 0 }; +uint8_t CMD_INITB[8] = { 85, 83, 66, 67, 0, 64, 2, 0 }; /** Launcher command report data sequence to stop all movement */ -static const uint8_t CMD_STOP[8] = { 0, 0, 0, 0, 0, 0, 8, 8 }; +uint8_t CMD_STOP[8] = { 0, 0, 0, 0, 0, 0, 8, 8 }; /** Launcher command report data sequence to move left */ -static const uint8_t CMD_LEFT[8] = { 0, 1, 0, 0, 0, 0, 8, 8 }; +uint8_t CMD_LEFT[8] = { 0, 1, 0, 0, 0, 0, 8, 8 }; /** Launcher command report data sequence to move right */ -static const uint8_t CMD_RIGHT[8] = { 0, 0, 1, 0, 0, 0, 8, 8 }; +uint8_t CMD_RIGHT[8] = { 0, 0, 1, 0, 0, 0, 8, 8 }; /** Launcher command report data sequence to move up */ -static const uint8_t CMD_UP[8] = { 0, 0, 0, 1, 0, 0, 8, 8 }; +uint8_t CMD_UP[8] = { 0, 0, 0, 1, 0, 0, 8, 8 }; /** Launcher command report data sequence to move down */ -static const uint8_t CMD_DOWN[8] = { 0, 0, 0, 0, 1, 0, 8, 8 }; +uint8_t CMD_DOWN[8] = { 0, 0, 0, 0, 1, 0, 8, 8 }; /** Launcher command report data sequence to move left and up */ -static const uint8_t CMD_LEFTUP[8] = { 0, 1, 0, 1, 0, 0, 8, 8 }; +uint8_t CMD_LEFTUP[8] = { 0, 1, 0, 1, 0, 0, 8, 8 }; /** Launcher command report data sequence to move right and up */ -static const uint8_t CMD_RIGHTUP[8] = { 0, 0, 1, 1, 0, 0, 8, 8 }; +uint8_t CMD_RIGHTUP[8] = { 0, 0, 1, 1, 0, 0, 8, 8 }; /** Launcher command report data sequence to move left and down */ -static const uint8_t CMD_LEFTDOWN[8] = { 0, 1, 0, 0, 1, 0, 8, 8 }; +uint8_t CMD_LEFTDOWN[8] = { 0, 1, 0, 0, 1, 0, 8, 8 }; /** Launcher command report data sequence to move right and down */ -static const uint8_t CMD_RIGHTDOWN[8] = { 0, 0, 1, 0, 1, 0, 8, 8 }; +uint8_t CMD_RIGHTDOWN[8] = { 0, 0, 1, 0, 1, 0, 8, 8 }; /** Launcher command report data sequence to fire a missile */ -static const uint8_t CMD_FIRE[8] = { 0, 0, 0, 0, 0, 1, 8, 8 }; +uint8_t CMD_FIRE[8] = { 0, 0, 0, 0, 0, 1, 8, 8 }; /** Last command sent to the launcher, to determine what new command (if any) must be sent */ uint8_t* CmdState; @@ -137,8 +137,9 @@ void SetupHardware(void) void Read_Joystick_Status(void) { uint8_t JoyStatus_LCL = Joystick_GetStatus(); + uint8_t Buttons_LCL = Buttons_GetStatus(); - if (BUTTONS_BUTTON1 && Buttons_GetStatus()) + if (Buttons_LCL & BUTTONS_BUTTON1) Send_Command(CMD_FIRE); else if (JoyStatus_LCL & JOY_UP) Send_Command(CMD_UP); @@ -154,8 +155,8 @@ void Read_Joystick_Status(void) /** Lower level send routine, copies report into a larger buffer and sends. * - * \param Report Report data to send. - * \param ReportSize Report length in bytes. + * \param[in] Report Report data to send. + * \param[in] ReportSize Report length in bytes. */ void Send_Command_Report(uint8_t *Report, uint16_t ReportSize) { @@ -163,16 +164,16 @@ void Send_Command_Report(uint8_t *Report, uint16_t ReportSize) WriteNextReport(CmdBuffer, ReportSize); } -/** Send one of the CMD_* command constants listed above. +/** Sends one of the CMD_* command constants to the attached device. * - * \param Command One of the command constants. + * \param[in] Command One of the command constants. */ void Send_Command(uint8_t* Command) { if ((CmdState == CMD_STOP && Command != CMD_STOP) || (CmdState != CMD_STOP && Command == CMD_STOP)) { - LEDs_ChangeLEDs(LEDS_LED4, ~LEDs_GetLEDs() & LEDS_LED4); + LEDs_ToggleLEDs(LEDS_LED4); Send_Command_Report(CMD_INITA, 8); Send_Command_Report(CMD_INITB, 8); @@ -185,7 +186,7 @@ void Send_Command(uint8_t* Command) /** Event handler for the USB_DeviceAttached event. This indicates that a device has been attached to the host, and * starts the library USB task to begin the enumeration and USB management process. */ -void EVENT_USB_DeviceAttached(void) +void EVENT_USB_Host_DeviceAttached(void) { LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); } @@ -193,7 +194,7 @@ void EVENT_USB_DeviceAttached(void) /** Event handler for the USB_DeviceUnattached event. This indicates that a device has been removed from the host, and * stops the library USB task management process. */ -void EVENT_USB_DeviceUnattached(void) +void EVENT_USB_Host_DeviceUnattached(void) { LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); } @@ -201,13 +202,13 @@ void EVENT_USB_DeviceUnattached(void) /** Event handler for the USB_DeviceEnumerationComplete event. This indicates that a device has been successfully * enumerated by the host and is now ready to be used by the application. */ -void EVENT_USB_DeviceEnumerationComplete(void) +void EVENT_USB_Host_DeviceEnumerationComplete(void) { LEDs_SetAllLEDs(LEDMASK_USB_READY); } /** Event handler for the USB_HostError event. This indicates that a hardware error occurred while in host mode. */ -void EVENT_USB_HostError(const uint8_t ErrorCode) +void EVENT_USB_Host_HostError(const uint8_t ErrorCode) { USB_ShutDown(); @@ -218,7 +219,7 @@ void EVENT_USB_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_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); } @@ -248,8 +249,8 @@ void DiscardNextReport(void) /** Writes a report to the attached device. * - * \param ReportOUTData Buffer containing the report to send to the device - * \param ReportLength Length of the report to send + * \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* ReportOUTData, uint16_t ReportLength) { @@ -285,7 +286,7 @@ void WriteNextReport(uint8_t* ReportOUTData, uint16_t ReportLength) /* Class specific request to send a HID report to the device */ USB_ControlRequest = (USB_Request_Header_t) { - .bmRequestType = 0x21, + .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE), .bRequest = 0x09, .wValue = 0x02, .wIndex = 0x01, @@ -318,7 +319,7 @@ void HID_Host_Task(void) LEDs_SetAllLEDs(LEDMASK_USB_ERROR); /* Wait until USB device disconnected */ - while (USB_IsConnected); + USB_HostState = HOST_STATE_WaitForDeviceRemoval; break; } @@ -329,16 +330,13 @@ void HID_Host_Task(void) LEDs_SetAllLEDs(LEDMASK_USB_ERROR); /* Wait until USB device disconnected */ - while (USB_IsConnected); + USB_HostState = HOST_STATE_WaitForDeviceRemoval; break; } USB_HostState = HOST_STATE_Configured; break; case HOST_STATE_Configured: - USB_HostState = HOST_STATE_Ready; - break; - case HOST_STATE_Ready: DiscardNextReport(); break;