Commit Graph

46 Commits

Author SHA1 Message Date
Andrey Smirnov 113e5c22e6 Change the way buffer for control requests data is allocated
Current way of having a globally, but weakly defined static buffer has
several shortcomings:
 - It forces user to have a certain "magic" byte array variable if
   they want to have a control buffer of different size.
 - Having a globally defined static array and a separate function to
   tell USB core about its size is error prone.
 - Its inner workings are not easily understandable form cursory look
   at API and one needs to go and look at the implementation code to
   connect all the pieces into a solid picture of how it works

This commit adds two parameters to 'usbd_init' call that allow user to
specify the pointer to the area of memory and a size of that memory
which would be used by the USB core to store the data received during
DATA stage of control requests. This approach, while further
complicating the prototype of 'usbd_init', provides user with more
flexibility allowing for any custom area of memory of any size to be
used as control buffer. It also forces user to provide both address
and memory size at the same time thus avoiding the possibility of user
redefining 'usbd_control_buffer', but not calling
'usbd_set_control_buffer_size' after that.
2013-04-25 17:24:27 -07:00
Ken Sarkies 1374d2622b Place generic USB header and source files into the documentation tree. 2013-04-19 10:26:01 +09:30
Piotr Esden-Tempski 80fd23580a Fix all warnings for stm32f1 lib. 2013-02-26 17:14:31 -08:00
Jeff Ciesielski db35fbb7ba Merge branch 'master' of git://github.com/libopencm3/libopencm3 into upstream-merge 2012-11-13 13:13:40 -08:00
Andrey Smirnov 720e85f850 Further re-factor USB string handling code
This commit refactors USB string code, making it, hopefully, less
buggy and more easier to understand. It also removes "magic" bit
manipulation and "magic" numbers;
2012-11-07 11:30:44 -08:00
Andrey Smirnov c5c4db0196 Extend control hook framework
This commits adds a new error code that can be return from a
registered control callback: USBD_REQ_NEXT_CALLBACK. This return code
signifies that the callback is done processing the data successfully,
but user would like to have all matching callbacks down the callback
chain to be executed too.

This change allows for example to intercept standard requests like
GET_DESCRIPTOR, do some small action upon receiving of one, but still
have the standard callback executed and do it's job. This way user
doesn't have to re-implement standard GET_DESCRIPTOR functionality if
they want to intercept that request to do some small thing.
2012-11-07 10:33:51 -08:00
Andrey Smirnov 7a5da60e26 Change USB strings handling code
This commit add an extra field to the _usbd_device, that allows to
keep track of the number of USB strings  which allows simplify
boundaries checking code in usb_standard_get_descriptor.

This commit also changes the index base for strings in
usb_standard_get_descriptor which allows to get rid of necessity to
have a dummy one-character string in a strings array.
2012-11-06 16:46:55 -08:00
Jason Kotzin 34beeae925 USB core updated for reentrance based on Christian Cier-Zniewski's branch 2012-09-13 10:43:35 -07:00
Jason Kotzin 4958fae906 fixing usb and alignment issue 2012-09-13 10:43:26 -07:00
Piotr Esden-Tempski 43561de329 License change of the library to LGPL, version 3 or later.
Agreed to by all the significant contributors to the library.
2012-03-02 14:44:49 -08:00
Mike Smith 7da1967056 Add an interface for soft disconnection, and hook it up in the F107 driver. 2012-02-12 15:00:08 -08:00
Gareth McMullin 0731bba610 usb: Added support for Interface Association descriptors. 2011-12-28 21:05:41 +13:00
Gareth McMullin 651917aeb4 Added USB example for stm32f4.
Moved clock enable for OTG_FS back into applications.  This and gpio config
are the only differences between f107 and f2xx/f4xx.
2011-12-17 14:11:39 +13:00
Uwe Hermann 373794ab68 usb: Fix some Doxygen comments. 2011-11-17 00:12:47 +01:00
Uwe Hermann 3e9b9cb345 usb: Coding-style fixes. 2011-11-17 00:12:43 +01:00
Gareth McMullin 30e188cf07 Only allow one packet in TX fifos.
This fixes a problem where packets were written too quickly.
The hardware disabled the endpoint after the fist packet is sent,
and others just waited in the queue.
2011-11-12 21:44:37 +13:00
Gareth McMullin e0fe43357d usb_f107: Fixed lost 4 bytes on control OUT transaction. 2011-10-31 14:09:41 -07:00
Uwe Hermann 788f3870c4 Merge remote-tracking branch 'fnoble/stm32f2' 2011-10-29 22:19:12 +02:00
Gareth McMullin 284be93037 Restored OTG clock enable in RCC in f107 usb init. 2011-10-29 23:57:10 +13:00
Gareth McMullin b05a5dcf2a Fixed some F105/F107 USB issues. Added user callback on SOF.
Made examples depend on lib.
2011-10-29 21:30:26 +13:00
Fergus Noble 14dcda91b0 Fixing some more header references 2011-10-12 22:20:22 -04:00
Fergus Noble 7518bc83c1 Fixing some header references 2011-10-12 22:20:22 -04:00
Uwe Bonnes 32c276a708 Move enabling the USB Clock into stm32f10x_usbd_init 2011-07-13 10:04:03 +02:00
Gareth McMullin 7434d50fda Check index bounds on usb string descriptor request. 2011-04-24 14:28:16 +12:00
Gareth McMullin 3d820c6ed7 Fixed stm32f107 usb driver to allow calling usbd_poll from irq handler. 2011-04-04 17:39:05 +12:00
Gareth McMullin ef0ff192f7 Added usbd_ep_nak_set() to force flow control on OUT endpoints. 2011-03-30 07:17:02 +13:00
Gareth McMullin 6bbc4c2f7c Fixed non-control endpoints for connectivity line USB. 2011-03-15 20:33:02 +13:00
Gareth McMullin bf0d1a7b41 Connectivity line USB driver now enumerating correctly. 2011-03-14 20:31:32 +13:00
Gareth McMullin 554feb7f27 USB driver for Connectivity-line devices partially working. 2011-02-20 12:28:23 +13:00
Gareth McMullin e64a9d2bf9 Minor cleanup of usb. Template driver for STM32F107 added. 2011-02-10 19:58:51 +13:00
Uwe Hermann a0091f18c7 Cosmetics, consistency fixes, fix compiler warnings. 2011-01-30 22:43:33 +01:00
Gareth McMullin aac65d8560 Abstracted USB driver interface to to allow driver selection. 2011-01-30 17:04:56 +13:00
Gareth McMullin 193a1ed3b8 Reset CTR flag for endpoint from usbd_poll if no callback. 2011-01-30 15:42:12 +13:00
Gareth McMullin f87170e06e Clear user control request handlers on set_configuration request. 2011-01-30 15:41:23 +13:00
Uwe Hermann 8f251e8a9d Some more file/path restructuring.
All #includes now explicitly use the "<libopencm3/stm32/rcc.h>" format.
If you want to get rid of the "libopencm3" prefix in your local project you
can add a respective -I entry in your Makefile (not recommended though).

All .ld files and .a libs are installed in $(TOOLCHAIN_DIR)/lib
directly (as before), but are now renamed to avoid potential
conflicts now or in the future. Examples:

  libopencm3_lpc13xx.a
  libopencm3_lpc13xx.ld
  libopencm3_stm32.a
  libopencm3_stm32.ld
2010-12-31 18:18:39 +01:00
Uwe Hermann 18790a2454 More renames for libopenstm32 -> libopencm3. 2010-12-30 13:19:25 +01:00
Uwe Hermann be2ac142d9 Rename include/libopenstm32 to include/stm32. 2010-12-30 02:23:51 +01:00
Uwe Hermann 17b2e87ba3 Factor out cm3/common.h and cm3/memorymap.h. 2010-12-30 00:53:52 +01:00
Uwe Hermann b5727a6c73 USB: Cosmetics and coding-style fixes. 2010-12-29 18:00:32 +01:00
Uwe Hermann c39eb69e4d Replace uint8_t with u8 et al, fix whitespace. 2010-12-29 17:28:06 +01:00
Uwe Hermann 34fd228bf9 Move generic USB stuff to a subdir, dedupe .h files.
Adapt examples and the lib code accordingly.
2010-12-29 17:02:36 +01:00
Uwe Hermann f062777930 More whitespace fixes. 2010-12-29 16:43:26 +01:00
Gareth McMullin 7f002110dc Improved dispatching of user control callbacks.
Only cdc_acm example is updated.
2010-11-06 12:21:46 +13:00
Gareth McMullin 87960830f4 Fixed HALT condition handling and data toggle. 2010-11-04 16:49:03 +13:00
Martin Mueller d6eacce827 add standard request 2010-11-04 00:44:47 +01:00
Uwe Hermann 6e090ccee1 Initial USB device stack for STM32.
Patch provided by Gareth McMullin <gareth@blacksphere.co.nz>,
thanks a lot!
2010-11-02 02:02:21 +01:00