projects
/
pub
/
USBasp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix Doxygen errors in demos.
[pub/USBasp.git]
/
Demos
/
Device
/
GenericHID
/
GenericHID.c
diff --git
a/Demos/Device/GenericHID/GenericHID.c
b/Demos/Device/GenericHID/GenericHID.c
index
4dfb8e4
..
b933e45
100644
(file)
--- a/
Demos/Device/GenericHID/GenericHID.c
+++ b/
Demos/Device/GenericHID/GenericHID.c
@@
-28,8
+28,18
@@
this software.
\r
*/
\r
\r
this software.
\r
*/
\r
\r
+/** \file
\r
+ *
\r
+ * Main source file for the GenericHID demo. This file contains the main tasks of
\r
+ * the demo and is responsible for the initial application hardware configuration.
\r
+ */
\r
+
\r
#include "GenericHID.h"
\r
\r
#include "GenericHID.h"
\r
\r
+/** LUFA HID Class driver interface configuration and state information. This structure is
\r
+ * passed to all HID Class driver functions, so that multiple instances of the same class
\r
+ * within a device can be differentiated from one another.
\r
+ */
\r
USB_ClassInfo_HID_t Generic_HID_Interface =
\r
{
\r
.InterfaceNumber = 0,
\r
USB_ClassInfo_HID_t Generic_HID_Interface =
\r
{
\r
.InterfaceNumber = 0,
\r
@@
-40,11
+50,14
@@
USB_ClassInfo_HID_t Generic_HID_Interface =
.ReportOUTEndpointNumber = GENERIC_OUT_EPNUM,
\r
.ReportOUTEndpointSize = GENERIC_EPSIZE,
\r
\r
.ReportOUTEndpointNumber = GENERIC_OUT_EPNUM,
\r
.ReportOUTEndpointSize = GENERIC_EPSIZE,
\r
\r
- .Report
BufferSize
= GENERIC_REPORT_SIZE,
\r
+ .Report
INBufferSize
= GENERIC_REPORT_SIZE,
\r
\r
.UsingReportProtocol = true,
\r
};
\r
\r
\r
.UsingReportProtocol = true,
\r
};
\r
\r
+/** Main program entry point. This routine contains the overall program flow, including initial
\r
+ * setup of all components and the main program loop.
\r
+ */
\r
int main(void)
\r
{
\r
SetupHardware();
\r
int main(void)
\r
{
\r
SetupHardware();
\r
@@
-58,6
+71,7
@@
int main(void)
}
\r
}
\r
\r
}
\r
}
\r
\r
+/** Configures the board hardware and chip peripherals for the demo's functionality. */
\r
void SetupHardware(void)
\r
{
\r
/* Disable watchdog if enabled by bootloader/fuses */
\r
void SetupHardware(void)
\r
{
\r
/* Disable watchdog if enabled by bootloader/fuses */
\r
@@
-70,18
+84,27
@@
void SetupHardware(void)
/* Hardware Initialization */
\r
LEDs_Init();
\r
USB_Init();
\r
/* Hardware Initialization */
\r
LEDs_Init();
\r
USB_Init();
\r
+
\r
+ /* Millisecond timer initialization, with output compare interrupt enabled for the idle timing */
\r
+ OCR0A = ((F_CPU / 64) / 1000);
\r
+ TCCR0A = (1 << WGM01);
\r
+ TCCR0B = ((1 << CS01) | (1 << CS00));
\r
+ TIMSK0 = (1 << OCIE0A);
\r
}
\r
\r
}
\r
\r
+/** Event handler for the library USB Connection event. */
\r
void EVENT_USB_Connect(void)
\r
{
\r
LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);
\r
}
\r
\r
void EVENT_USB_Connect(void)
\r
{
\r
LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);
\r
}
\r
\r
+/** Event handler for the library USB Disconnection event. */
\r
void EVENT_USB_Disconnect(void)
\r
{
\r
LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
\r
}
\r
\r
void EVENT_USB_Disconnect(void)
\r
{
\r
LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
\r
}
\r
\r
+/** Event handler for the library USB Configuration Changed event. */
\r
void EVENT_USB_ConfigurationChanged(void)
\r
{
\r
LEDs_SetAllLEDs(LEDMASK_USB_READY);
\r
void EVENT_USB_ConfigurationChanged(void)
\r
{
\r
LEDs_SetAllLEDs(LEDMASK_USB_READY);
\r
@@
-90,16
+113,26
@@
void EVENT_USB_ConfigurationChanged(void)
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
\r
}
\r
\r
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
\r
}
\r
\r
+/** Event handler for the library USB Unhandled Control Packet event. */
\r
void EVENT_USB_UnhandledControlPacket(void)
\r
{
\r
USB_HID_ProcessControlPacket(&Generic_HID_Interface);
\r
}
\r
\r
void EVENT_USB_UnhandledControlPacket(void)
\r
{
\r
USB_HID_ProcessControlPacket(&Generic_HID_Interface);
\r
}
\r
\r
-void EVENT_USB_StartOfFrame(void)
\r
+/** ISR to keep track of each millisecond interrupt, for determining the HID class idle period remaining when set. */
\r
+ISR(TIMER0_COMPA_vect, ISR_BLOCK)
\r
{
\r
{
\r
- USB_HID_RegisterStartOfFrame(&Generic_HID_Interface);
\r
+ if (Generic_HID_Interface.IdleMSRemaining)
\r
+ Generic_HID_Interface.IdleMSRemaining--;
\r
}
\r
\r
}
\r
\r
+/** HID class driver callback function for the creation of HID reports to the host.
\r
+ *
\r
+ * \param HIDInterfaceInfo Pointer to the HID class interface configuration structure being referenced
\r
+ * \param ReportData Pointer to a buffer where the created report should be stored
\r
+ *
\r
+ * \return Number of bytes written in the report (or zero if no report is to be sent
\r
+ */
\r
uint16_t CALLBACK_USB_HID_CreateNextHIDReport(USB_ClassInfo_HID_t* HIDInterfaceInfo, void* ReportData)
\r
{
\r
// Create generic HID report here
\r
uint16_t CALLBACK_USB_HID_CreateNextHIDReport(USB_ClassInfo_HID_t* HIDInterfaceInfo, void* ReportData)
\r
{
\r
// Create generic HID report here
\r
@@
-107,6
+140,12
@@
uint16_t CALLBACK_USB_HID_CreateNextHIDReport(USB_ClassInfo_HID_t* HIDInterfaceI
return 0;
\r
}
\r
\r
return 0;
\r
}
\r
\r
+/** HID class driver callback function for the processing of HID reports from the host.
\r
+ *
\r
+ * \param HIDInterfaceInfo Pointer to the HID class interface configuration structure being referenced
\r
+ * \param ReportData Pointer to a buffer where the created report has been stored
\r
+ * \param ReportSize Size in bytes of the received HID report
\r
+ */
\r
void CALLBACK_USB_HID_ProcessReceivedHIDReport(USB_ClassInfo_HID_t* HIDInterfaceInfo, void* ReportData, uint16_t ReportSize)
\r
{
\r
// Process received generic HID report here
\r
void CALLBACK_USB_HID_ProcessReceivedHIDReport(USB_ClassInfo_HID_t* HIDInterfaceInfo, void* ReportData, uint16_t ReportSize)
\r
{
\r
// Process received generic HID report here
\r