Commit Graph

68 Commits

Author SHA1 Message Date
Dean Camera c5038f1bf4 Renamed all library events to properly seperate out Device and Host mode events. Changed the firing conditions for some events to ensure that events are fired by their own USB mode only.
Remove VBUS events - not needed as the library takes care of VBUS detection and feedback on supported AVRs via the USB_Device_Connected and USB_Device_Disconnected events.

Fixed incorrect Host state assignment in the incomplete BluetoothHost demo.
2009-08-05 06:36:31 +00:00
Dean Camera eff07bb877 Fix issue with CDC device demos causing broken communications when the device tries to send data before the host has set the line encoding. 2009-08-04 08:06:26 +00:00
Dean Camera 6f4cc344ab Rename TOTAL_NUM_CONFIGURATIONS to FIXED_NUM_CONFIGURATIONS, to match the existing FIXED_CONTROL_ENDPOINT_SIZE compile time option. Add FIXED_NUM_CONFIGURATIONS to the descriptors of each project using the option. 2009-08-02 23:14:30 +00:00
Dean Camera eb41086947 Fix demos based on the device mode HID class driver, as well as the driver itself. Changed HID device class driver to require the user to give a buffer and size to hold the previously generated report, for comparison purposes, and altered the prototype of the CALLBACK_HID_Device_CreateHIDReport() function so that reports can be sent to the host even if there are no apparent changes (useful for relative movements in mice, etc.). 2009-07-31 03:22:08 +00:00
Dean Camera 7df6b9563c Add new HID_Device_MillisecondElapsed() function to the HID device Class driver, to move the burden of managing the Idle period of each instance to the library and not the user application. 2009-07-30 14:59:57 +00:00
Dean Camera 7227e133a9 Ensure that the previous HID reports in the HID device class driver are kept per-instance, rather than per-device. 2009-07-30 14:40:42 +00:00
Dean Camera 72932e2780 Fix to HID device mode Class driver, so that new reports are compared against the old, and updated reports made within the idle period are sent immediately to the host. 2009-07-30 14:35:42 +00:00
Dean Camera 41babf1cb7 Fix incorrect configuration in the ClassDriver AudioOutput demo.
Make all audio device Class Driver functions require a reference to the Audio class instance, so that the endpoint size can be checked (and to standardize the APIs).

Make LEDs more responsive in the AudioOutput device demos.
2009-07-30 14:06:52 +00:00
Dean Camera 5ca1d7bf8f Fix redefinition warning when USB_DEVICE_ONLY is set on an AVR which does not support USB host mode. 2009-07-30 07:45:36 +00:00
Dean Camera 7f3f39b575 Fixed report data alignment issues in the MouseHostWithParser demo when X and Y movement data size is not a multiple of 8 bits.
Fixed HID Report Descriptor Parser not correctly resetting internal states when a REPORT ID element is encountered.
2009-07-28 15:14:54 +00:00
Dean Camera 864196c884 State information for class drivers is now zeroed out during enumeration (both in device and host mode) to ensure sane values after each enumeration. User code should no longer explicitly set state information as this is no longer preserved. 2009-07-27 23:19:17 +00:00
Dean Camera b9dd51cd63 Collapse configuration descriptor size retrieval and size testing into a single if statement within the new host mode class driver demos for clarity. 2009-07-27 10:55:21 +00:00
Dean Camera 84c3c4a3d9 Change Host mode class driver Pipe configuration routines -- better to let the application fetch the configuration descriptors once, and then pass them to each class driver in turn. 2009-07-27 10:48:55 +00:00
Dean Camera 5251bc6e4e Add new MouseHost Class Driver demo, unfinished, to allow for better testing of the new prototype Host Mode Class Driver framework. Flesh out start of a HID class Host mode class driver. 2009-07-27 10:31:07 +00:00
Dean Camera 05fa6e0c43 Corrected new Pipe_IsEndpointBound() function.
Completed host CDC class driver enumeration code.
2009-07-26 10:45:33 +00:00
Dean Camera e071f3897a Added new USB_DeviceState variable to keep track of the current Device mode USB state.
Added new Endpoint_ClearStatusStage() convenience function to assist with the status stages of control transfers.

Removed vague USB_IsConnected global - test USB_DeviceState or USB_HostState explicitly to gain previous functionality.

Removed USB_IsSuspended global - test USB_DeviceState against DEVICE_STATE_Suspended instead.

Fixed possible enumeration errors from spinloops which may fail to exit if the USB connection is severed before the exit condition becomes true.
2009-07-21 13:31:21 +00:00
Dean Camera d0db78432f Add extra tests to the MassStorage device demo and class driver for validating command blocks from the host. 2009-07-21 04:46:48 +00:00
Dean Camera 67f390fe74 Add explicit guards to all device mode tasks to ensure the device is connected and configured before running the task, to prevent any user tasks from locking up the main USB task if the device has not been properly configured. 2009-07-21 02:48:41 +00:00
Dean Camera 37f8a84f35 Added new TOTAL_NUM_CONFIGURATIONS option, removed USE_SINGLE_DEVICE_CONFIGURATION compile time option (but silently convert it to USE_SINGLE_DEVICE_CONFIGURATION internally for compatibility).
Added new USE_FLASH_DESCRIPTORS compile time option. By default, descriptors can now lie in mixed memory spaces (specified by a new parameter to the CALLBACK_USB_GetDescriptor() function) unless one of the USE_*_DESCRIPTORS compile time option is specified.
2009-07-16 08:15:27 +00:00
Dean Camera f85a53a31b Fix HID class device driver -- if a SetIDle request is issued with the LSB of wValue set to zero, the idle period must be set for all HID interfaces.
Fix Keyboard and Mouse demos, Idle period is now multiplied by 4 as the period is read into and sent out of the device to ensure it is always stored as a multiple of 1ms. Fixes Keyboard demo using an initial Idle period of 2s rather than 500ms (thanks to Brian Dickman).

Move out the internal device serial descriptor reading routine into a seperate static function, rather than being part of USB_Device_GetDescriptor.
2009-07-15 05:49:19 +00:00
Dean Camera da138684e4 Added module file dependancy information to the USB class drivers. 2009-07-14 07:59:34 +00:00
Dean Camera 0fcbe22c9e Added new HOST_STATE_WaitForDeviceRemoval host state machine state for non-blocking disabling of device communications until the device has been removed (for use when an error occurs or communications with the device have completed). Changed over all host mode demos to use the new state.
Added verbose documentation for each of the USB Host state machine states.
2009-07-13 05:34:43 +00:00
Dean Camera f1076ac4d6 Added const modifiers to device mode class drivers.
Added parameter directions to function parameter documentation.

Added new experimental FAST_STREAM_FUNCTIONS compile time option to speed up stream transfers at the expense of a higher FLASH consumption (needs testing to verify improved throughput).
2009-06-28 13:39:08 +00:00
Dean Camera 3cbdcd3686 Reduce struct name pollution - group typedef struct names by class driver name where appropriate. 2009-06-26 11:43:56 +00:00
Dean Camera 1756087c3e Optimize vendor/product description string display code in MassStorageHost.
Remove all Host mode class demos other than the CDCHost class driver demo, so that they can be re-added as they are made once the host mode class framework is designed.

Fixed USB_Host_SendControlRequest() not re-suspending the USB bus when initial device ready-wait fails.

Fixed USB Pad regulator not being disabled on some AVR models when the USB_OPT_REG_DISABLED option is used.
2009-06-26 09:58:43 +00:00
Dean Camera bb23e55f11 Fixed MassStorage demo not clearing the reset flag when a Mass Storage Reset is issued while not processing a command. 2009-06-23 08:45:46 +00:00
Dean Camera a3a04aa671 Pipe_ConfigurePipe() now automatically defaults IN pipes to accepting infinite IN requests, this can still be changed by calling the existing \ref Pipe_SetFiniteINRequests() function. 2009-06-23 08:03:09 +00:00
Dean Camera 00d0883507 Added USE_INTERNAL_SERIAL compile time option to automatically read out the internal unique serial number as the device's serial number descriptor on supported AVR models. 2009-06-20 11:43:26 +00:00
Dean Camera 35bdada24b Clean up RNDIS demo type define names. 2009-06-19 07:29:02 +00:00
Dean Camera dfa547164a Extend USB_GetDeviceConfigDescriptor() routine to require the configuration number within the device to fetch, to add support for multi-configuration devices. 2009-06-19 03:37:47 +00:00
Dean Camera 0d8679cf6b Re-add in simple scheduler for compatibility with legacy code, mark all scheduler related files as deprecated. 2009-06-19 03:21:03 +00:00
Dean Camera f896c00c48 Break device mode class driver interfaces into seperate config and state structs which are then combined, for clarity. Move device mode class driver interfaces back into the device mode class driver headers from the common class headers to make room for host class interfaces. 2009-06-18 10:31:55 +00:00
Dean Camera dcf303762a Pipe_GetErrorFlags() now returns additional error flags for overflow and underflow errors.
Change MIDI demos to use real MIDI command values, and shift for the USB wrapper, rather than shift for the MIDI bytes. This is a little confusing for the MIDI USB wrapper, but allows for the use of real standardized MIDI command values.
2009-06-16 07:17:22 +00:00
Dean Camera 84d7783350 Remove ConfigDescriptor.c/.h files from the ClassDriver Host demos, as they will be obsoleted when the Host mode class drivers are complete. Add new StillImage stub class driver common header. 2009-06-15 13:42:34 +00:00
Dean Camera b61049f722 Fixed broken HIDReportParser.c. 2009-06-15 08:58:55 +00:00
Dean Camera c75f8bf223 More Doxygen fixes - ensure no undocumented function parameters. 2009-06-15 08:36:12 +00:00
Dean Camera b7049da11b Enhanced class drivers to use the same public/private section seperations as other portions of the library. 2009-06-15 04:38:42 +00:00
Dean Camera afe6ae1402 Add host mode USB Class driver stubs, add beginnings of a CDC host class driver.
Split out common defines/types from class drivers into a seperate common class driver directory.

Make central USB Class driver dispatch headers, used for both device and host modes.
2009-06-14 15:55:13 +00:00
Dean Camera 9798440ca4 Changed to new device mode Class Driver function name prefixes to make way for similar host mode Class drivers. 2009-06-11 06:15:45 +00:00
Dean Camera 34f6e0dd33 Deleted Host ClassDriver demos -- not yet started, faster to rebase new ClassDriver demos from the newly schedulerless LowLevel host demos rather than re-convert each demo from the previous scheduler-based implementations.
Fixes to MassStorageHost demo to improve compatibility with more USB drives.
2009-06-09 04:27:53 +00:00
Dean Camera ccf5bd19f2 Finished basic documentation of all device mode class drivers. 2009-06-08 11:31:41 +00:00
Dean Camera 1c12341cd7 Completed documentation of the HID device class driver. 2009-06-08 10:35:42 +00:00
Dean Camera bde64666fb Finished CDC device class driver documentation. 2009-06-08 10:06:49 +00:00
Dean Camera 6a7c298c0f Synchronise with the 090605 release. 2009-06-05 06:46:23 +00:00
Dean Camera 3d1baa6f95 Added multiple Report ID support to the HID class driver. Removed OUT endpoint support from HID driver (all OUT reports are now processed through control requests) as a seperate endpoint had issues with determining the exact output report length. 2009-06-05 02:23:31 +00:00
Dean Camera 7665bf323e Fixed EVENT_USB_CDC_ControLineStateChanged() event not taking the CDC interface structure as a parameter.
Converted TestApp demo over to the new demo structure.

More class driver documentation improvements.
2009-06-04 06:26:35 +00:00
Dean Camera dc42c5eb6b Added Doxygen documentation to the Audio class driver. Added new modules for each of the new device class drivers to the library documentation. 2009-06-04 04:02:55 +00:00
Dean Camera 4897ef8972 Ensure all USB device class drivers have the same three main functions as their interface for consistency. 2009-06-04 03:03:48 +00:00
Dean Camera a67bd74e3e Minor documentation page updates.
Redocumented all device demos, now that they have changed over to the new USB class drivers.

Added C linkage to class drivers for C++ support.

Added prefixes to most of the class driver constants to prevent name clashes.
2009-06-04 02:55:30 +00:00
Dean Camera 7c5444b89a Removed new Start of Frame event from the library; performance suffered far too much and it was only useful in one of the standard classes (HID). Altered HID demos to use the previous method of tracking millisecond periods via a hardware timer rather than the SOF events.
Fixed MIDI class driver blocking on unread events to the host.
2009-06-02 10:54:32 +00:00