/*
LUFA Library
- Copyright (C) Dean Camera, 2010.
-
+ Copyright (C) Dean Camera, 2011.
+
dean [at] fourwalledcubicle [dot] com
- www.fourwalledcubicle.com
+ www.lufa-lib.org
*/
/*
- Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+ Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com)
- 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
externally connected interactive display. Upon enumeration, this will
appear as a new SideShow device which can have gadgets loaded onto
it.
-
+
Note that while the incoming content is buffered in packet struct
form, the data is not actually displayed. It is left to the user to
write sufficient code to read out the packed data for display to a
screen.
-
+
Installed gadgets can be accessed through the InstalledApplications
array, with entries that have their InUse flag set being active. As
only the active content is displayed on the device due to memory
LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
sei();
-
+
for (;;)
{
SideShow_Task();
/* Disable clock division */
clock_prescale_set(clock_div_1);
-
+
/* Hardware Initialization */
LEDs_Init();
USB_Init();
- SerialStream_Init(9600, false);
+ Serial_Init(9600, false);
+
+ /* Create a stdio stream for the serial port for stdin and stdout */
+ Serial_CreateStream(NULL);
}
void EVENT_USB_Device_Connect(void)
LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
}
-void EVENT_USB_Device_UnhandledControlRequest(void)
+void EVENT_USB_Device_ControlRequest(void)
{
switch (USB_ControlRequest.bRequest)
{
case REQ_GetOSFeatureDescriptor:
if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_VENDOR | REQREC_DEVICE))
{
- void* DescriptorPointer;
- uint16_t DescriptorSize = USB_GetOSFeatureDescriptor(USB_ControlRequest.wValue, USB_ControlRequest.wIndex,
- &DescriptorPointer);
+ const void* DescriptorPointer;
+ uint16_t DescriptorSize = USB_GetOSFeatureDescriptor(USB_ControlRequest.wValue,
+ USB_ControlRequest.wIndex,
+ &DescriptorPointer);
if (DescriptorSize == NO_DESCRIPTOR)
return;
-
+
Endpoint_ClearSETUP();
-
+
Endpoint_Write_Control_PStream_LE(DescriptorPointer, DescriptorSize);
Endpoint_ClearOUT();
}
break;
}
}
-
+
void SideShow_Task(void)
{
/* Device must be connected and configured for the task to run */
/* Select the SideShow data out endpoint */
Endpoint_SelectEndpoint(SIDESHOW_OUT_EPNUM);
-
+
/* Check to see if a new SideShow message has been received */
if (Endpoint_IsReadWriteAllowed())
{
Sideshow_ProcessCommandPacket();
}
}
+