projects
/
pub
/
USBasp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix non-ASCII characters breaking LaTex documentation builds.
[pub/USBasp.git]
/
Projects
/
MissileLauncher
/
MissileLauncher.c
diff --git
a/Projects/MissileLauncher/MissileLauncher.c
b/Projects/MissileLauncher/MissileLauncher.c
index
c76dc52
..
6a98b54
100644
(file)
--- 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
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
*/
/*
Based on research by Scott Weston at
http://code.google.com/p/pymissile
*/
/*
- Copyright 201
0
Dean Camera (dean [at] fourwalledcubicle [dot] com)
+ Copyright 201
1
Dean Camera (dean [at] fourwalledcubicle [dot] com)
Copyright 2010 Dave Fletcher (fletch [at] fletchtronics [dot] net)
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
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
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
software without specific, written prior permission.
The author disclaim all warranties with regard to this
@@
-42,50
+42,50
@@
* the application and is responsible for the initial application hardware configuration as well
* as the sending of commands to the attached launcher toy.
*/
* 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 */
#include "MissileLauncher.h"
/** Launcher first init command report data sequence */
-uint8_t CMD_INITA[8] = { 85, 83, 66, 67, 0, 0, 4, 0 };
+
static const
uint8_t CMD_INITA[8] = { 85, 83, 66, 67, 0, 0, 4, 0 };
/** Launcher second init command report data sequence */
/** Launcher second init command report data sequence */
-uint8_t CMD_INITB[8] = { 85, 83, 66, 67, 0, 64, 2, 0 };
+
static const
uint8_t CMD_INITB[8] = { 85, 83, 66, 67, 0, 64, 2, 0 };
/** Launcher command report data sequence to stop all movement */
/** Launcher command report data sequence to stop all movement */
-uint8_t CMD_STOP[8] = { 0, 0, 0, 0, 0, 0, 8, 8 };
+
static const
uint8_t CMD_STOP[8] = { 0, 0, 0, 0, 0, 0, 8, 8 };
/** Launcher command report data sequence to move left */
/** Launcher command report data sequence to move left */
-uint8_t CMD_LEFT[8] = { 0, 1, 0, 0, 0, 0, 8, 8 };
+
static const
uint8_t CMD_LEFT[8] = { 0, 1, 0, 0, 0, 0, 8, 8 };
/** Launcher command report data sequence to move right */
/** Launcher command report data sequence to move right */
-uint8_t CMD_RIGHT[8] = { 0, 0, 1, 0, 0, 0, 8, 8 };
+
static const
uint8_t CMD_RIGHT[8] = { 0, 0, 1, 0, 0, 0, 8, 8 };
/** Launcher command report data sequence to move up */
/** Launcher command report data sequence to move up */
-uint8_t CMD_UP[8] = { 0, 0, 0, 1, 0, 0, 8, 8 };
+
static const
uint8_t CMD_UP[8] = { 0, 0, 0, 1, 0, 0, 8, 8 };
/** Launcher command report data sequence to move down */
/** Launcher command report data sequence to move down */
-uint8_t CMD_DOWN[8] = { 0, 0, 0, 0, 1, 0, 8, 8 };
+
static const
uint8_t CMD_DOWN[8] = { 0, 0, 0, 0, 1, 0, 8, 8 };
/** Launcher command report data sequence to move left and up */
/** Launcher command report data sequence to move left and up */
-uint8_t CMD_LEFTUP[8] = { 0, 1, 0, 1, 0, 0, 8, 8 };
+
static const
uint8_t CMD_LEFTUP[8] = { 0, 1, 0, 1, 0, 0, 8, 8 };
/** Launcher command report data sequence to move right and up */
/** Launcher command report data sequence to move right and up */
-uint8_t CMD_RIGHTUP[8] = { 0, 0, 1, 1, 0, 0, 8, 8 };
+
static const
uint8_t CMD_RIGHTUP[8] = { 0, 0, 1, 1, 0, 0, 8, 8 };
/** Launcher command report data sequence to move left and down */
/** Launcher command report data sequence to move left and down */
-uint8_t CMD_LEFTDOWN[8] = { 0, 1, 0, 0, 1, 0, 8, 8 };
+
static const
uint8_t CMD_LEFTDOWN[8] = { 0, 1, 0, 0, 1, 0, 8, 8 };
/** Launcher command report data sequence to move right and down */
/** Launcher command report data sequence to move right and down */
-uint8_t CMD_RIGHTDOWN[8] = { 0, 0, 1, 0, 1, 0, 8, 8 };
+
static const
uint8_t CMD_RIGHTDOWN[8] = { 0, 0, 1, 0, 1, 0, 8, 8 };
/** Launcher command report data sequence to fire a missile */
/** Launcher command report data sequence to fire a missile */
-uint8_t CMD_FIRE[8] = { 0, 0, 0, 0, 0, 1, 8, 8 };
+
static const
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 */
/** Last command sent to the launcher, to determine what new command (if any) must be sent */
-uint8_t* CmdState;
+
static const
uint8_t* CmdState;
/** Buffer to hold a command to send to the launcher */
/** Buffer to hold a command to send to the launcher */
-
uint8_t
CmdBuffer[LAUNCHER_CMD_BUFFER_SIZE];
+
static uint8_t
CmdBuffer[LAUNCHER_CMD_BUFFER_SIZE];
/** Main program entry point. This routine configures the hardware required by the application, then
/** Main program entry point. This routine configures the hardware required by the application, then
@@
-103,7
+103,7
@@
int main(void)
for (;;)
{
Read_Joystick_Status();
for (;;)
{
Read_Joystick_Status();
-
+
HID_Host_Task();
USB_USBTask();
}
HID_Host_Task();
USB_USBTask();
}
@@
-151,7
+151,7
@@
void Read_Joystick_Status(void)
* \param[in] Report Report data to send.
* \param[in] 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* const Report,
+void Send_Command_Report(
const
uint8_t* const Report,
const uint16_t ReportSize)
{
memcpy(CmdBuffer, Report, 8);
const uint16_t ReportSize)
{
memcpy(CmdBuffer, Report, 8);
@@
-162,7
+162,7
@@
void Send_Command_Report(uint8_t* const Report,
*
* \param[in] Command One of the command constants.
*/
*
* \param[in] Command One of the command constants.
*/
-void Send_Command(uint8_t* const Command)
+void Send_Command(
const
uint8_t* const Command)
{
if ((CmdState == CMD_STOP && Command != CMD_STOP) ||
(CmdState != CMD_STOP && Command == CMD_STOP))
{
if ((CmdState == CMD_STOP && Command != CMD_STOP) ||
(CmdState != CMD_STOP && Command == CMD_STOP))
@@
-173,7
+173,7
@@
void Send_Command(uint8_t* const Command)
Send_Command_Report(CMD_INITB, 8);
Send_Command_Report(Command, LAUNCHER_CMD_BUFFER_SIZE);
}
Send_Command_Report(CMD_INITB, 8);
Send_Command_Report(Command, LAUNCHER_CMD_BUFFER_SIZE);
}
-
+
CmdState = Command;
}
CmdState = Command;
}
@@
-204,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)
{
/** 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(;;);
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
for(;;);
@@
-231,13
+231,13
@@
void DiscardNextReport(void)
{
/* Refreeze HID data IN pipe */
Pipe_Freeze();
{
/* Refreeze HID data IN pipe */
Pipe_Freeze();
-
+
return;
}
return;
}
-
+
/* Clear the IN endpoint, ready for next data packet */
Pipe_ClearIN();
/* Clear the IN endpoint, ready for next data packet */
Pipe_ClearIN();
-
+
/* Refreeze HID data IN pipe */
Pipe_Freeze();
}
/* Refreeze HID data IN pipe */
Pipe_Freeze();
}
@@
-252,7
+252,7
@@
void WriteNextReport(uint8_t* const ReportOUTData,
{
/* Select and unfreeze HID data OUT pipe */
Pipe_SelectPipe(HID_DATA_OUT_PIPE);
{
/* 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())
/* 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())
@@
-264,13
+264,13
@@
void WriteNextReport(uint8_t* const ReportOUTData,
{
/* Refreeze the data OUT pipe */
Pipe_Freeze();
{
/* Refreeze the data OUT pipe */
Pipe_Freeze();
-
+
return;
}
return;
}
-
+
/* Write out HID report data */
/* 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();
/* Clear the OUT endpoint, send last data packet */
Pipe_ClearOUT();
@@
-283,7
+283,7
@@
void WriteNextReport(uint8_t* const ReportOUTData,
USB_ControlRequest = (USB_Request_Header_t)
{
.bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),
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,
.wValue = 0x02,
.wIndex = 0x01,
.wLength = ReportLength,
@@
-324,12
+324,12
@@
void HID_Host_Task(void)
{
/* Indicate error status */
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
{
/* Indicate error status */
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-
+
/* Wait until USB device disconnected */
USB_HostState = HOST_STATE_WaitForDeviceRemoval;
break;
}
/* Wait until USB device disconnected */
USB_HostState = HOST_STATE_WaitForDeviceRemoval;
break;
}
-
+
USB_HostState = HOST_STATE_Configured;
break;
case HOST_STATE_Configured:
USB_HostState = HOST_STATE_Configured;
break;
case HOST_STATE_Configured:
@@
-338,3
+338,4
@@
void HID_Host_Task(void)
break;
}
}
break;
}
}
+