summaryrefslogtreecommitdiffhomepage
path: root/digital
diff options
context:
space:
mode:
authorNicolas Schodet2013-03-21 23:02:52 +0100
committerNicolas Schodet2013-03-23 13:02:45 +0100
commit03d8cb46f14a559e2f60f62a98e082a7318e69c7 (patch)
tree1c8dbbfac34d887fee7b19313c783bd85c4afcb7 /digital
parent0c5ba0b879baa5291d35dd0a5028ab9a5d52560d (diff)
digital/ucoolib: update libopencm3
Diffstat (limited to 'digital')
m---------digital/ucoolib/lib/libopencm30
-rw-r--r--digital/ucoolib/ucoolib/arch/arch.stm32.cc2
-rw-r--r--digital/ucoolib/ucoolib/hal/i2c/i2c_hard.stm32.cc2
-rw-r--r--digital/ucoolib/ucoolib/hal/uart/uart.stm32.cc2
-rw-r--r--digital/ucoolib/ucoolib/hal/usb/usb.stm32.cc35
-rw-r--r--digital/ucoolib/ucoolib/hal/usb/usb.stm32.hh6
-rw-r--r--digital/ucoolib/ucoolib/utils/delay.arm.cc2
7 files changed, 26 insertions, 23 deletions
diff --git a/digital/ucoolib/lib/libopencm3 b/digital/ucoolib/lib/libopencm3
-Subproject 00e50ff0cda40ee1736887e83465e7e5c77aaa3
+Subproject 5d3975ab89e623af16573345ec0d6d665612fd1
diff --git a/digital/ucoolib/ucoolib/arch/arch.stm32.cc b/digital/ucoolib/ucoolib/arch/arch.stm32.cc
index 869b1d90..61216a3a 100644
--- a/digital/ucoolib/ucoolib/arch/arch.stm32.cc
+++ b/digital/ucoolib/ucoolib/arch/arch.stm32.cc
@@ -25,7 +25,7 @@
#include "ucoolib/common.hh"
#include <libopencm3/stm32/f4/rcc.h>
-#include <libopencm3/stm32/f4/scb.h>
+#include <libopencm3/cm3/scb.h>
namespace ucoo {
diff --git a/digital/ucoolib/ucoolib/hal/i2c/i2c_hard.stm32.cc b/digital/ucoolib/ucoolib/hal/i2c/i2c_hard.stm32.cc
index 2001391e..4b5f31cc 100644
--- a/digital/ucoolib/ucoolib/hal/i2c/i2c_hard.stm32.cc
+++ b/digital/ucoolib/ucoolib/hal/i2c/i2c_hard.stm32.cc
@@ -25,7 +25,7 @@
#include <libopencm3/stm32/i2c.h>
#include <libopencm3/stm32/f4/rcc.h>
-#include <libopencm3/stm32/nvic.h>
+#include <libopencm3/cm3/nvic.h>
#include "ucoolib/utils/trace.hh"
diff --git a/digital/ucoolib/ucoolib/hal/uart/uart.stm32.cc b/digital/ucoolib/ucoolib/hal/uart/uart.stm32.cc
index 980bc6b9..fa3d46e9 100644
--- a/digital/ucoolib/ucoolib/hal/uart/uart.stm32.cc
+++ b/digital/ucoolib/ucoolib/hal/uart/uart.stm32.cc
@@ -25,7 +25,7 @@
#include <libopencm3/stm32/f4/usart.h>
#include <libopencm3/stm32/f4/rcc.h>
-#include <libopencm3/stm32/nvic.h>
+#include <libopencm3/cm3/nvic.h>
#ifndef TARGET_stm32f4
// Need RCC adaptations and USART6 different handling for F1.
diff --git a/digital/ucoolib/ucoolib/hal/usb/usb.stm32.cc b/digital/ucoolib/ucoolib/hal/usb/usb.stm32.cc
index 7885da6b..3e5d112e 100644
--- a/digital/ucoolib/ucoolib/hal/usb/usb.stm32.cc
+++ b/digital/ucoolib/ucoolib/hal/usb/usb.stm32.cc
@@ -26,17 +26,18 @@
#include <libopencm3/stm32/f4/rcc.h>
#include <libopencm3/stm32/f4/gpio.h>
-#include <libopencm3/stm32/nvic.h>
-#include <libopencm3/usb/usbd.h>
+#include <libopencm3/cm3/nvic.h>
#include "usb_desc.stm32.h"
+static usbd_device *usbdev;
+
extern "C" {
void
otg_fs_isr ()
{
- usbd_poll ();
+ usbd_poll (usbdev);
}
}
@@ -46,8 +47,6 @@ namespace ucoo {
UsbStreamControl *UsbStreamControl::instance_;
const char *strings[] = {
- "x",
- NULL,
NULL,
NULL
};
@@ -62,42 +61,44 @@ UsbStreamControl::UsbStreamControl (const char *vendor, const char *product)
{
assert (!instance_);
instance_ = this;
- strings[1] = vendor;
- strings[2] = product;
+ strings[0] = vendor;
+ strings[1] = product;
rcc_peripheral_enable_clock (&RCC_AHB2ENR, RCC_AHB2ENR_OTGFSEN);
rcc_peripheral_enable_clock (&RCC_AHB1ENR, RCC_AHB1ENR_IOPAEN);
gpio_mode_setup (GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE,
GPIO9 | GPIO11 | GPIO12);
gpio_set_af (GPIOA, GPIO_AF10, GPIO9 | GPIO11 | GPIO12);
- usbd_init (&otgfs_usb_driver, &usb_desc_dev, &usb_desc_config, strings);
- usbd_register_set_config_callback (set_config);
+ usbdev = usbd_init (&otgfs_usb_driver, &usb_desc_dev, &usb_desc_config,
+ strings, lengthof (strings));
+ usbd_register_set_config_callback (usbdev, set_config);
nvic_enable_irq (NVIC_OTG_FS_IRQ);
}
void
-UsbStreamControl::set_config (uint16_t configured)
+UsbStreamControl::set_config (usbd_device *usbdev, uint16_t configured)
{
instance_->configured_ = configured;
if (configured)
{
for (int i = 0; i < stream_nb_; i++)
{
- usbd_ep_setup (0x01 + i, USB_ENDPOINT_ATTR_BULK, ep_size_,
+ usbd_ep_setup (usbdev, 0x01 + i, USB_ENDPOINT_ATTR_BULK, ep_size_,
rx_callback);
- usbd_ep_setup (0x81 + i, USB_ENDPOINT_ATTR_BULK, ep_size_, NULL);
+ usbd_ep_setup (usbdev, 0x81 + i, USB_ENDPOINT_ATTR_BULK, ep_size_,
+ NULL);
}
}
}
void
-UsbStreamControl::rx_callback (uint8_t ep)
+UsbStreamControl::rx_callback (usbd_device *usbdev, uint8_t ep)
{
assert (ep > 0 && ep <= stream_nb_);
int num = ep - 1;
RxBuffer &rb = instance_->rx_buffer_[num];
assert (rb.size == 0 && rb.offset == 0);
- usbd_ep_nak_set (ep, 1);
- rb.size = usbd_ep_read_packet (ep, rb.buf, ep_size_);
+ usbd_ep_nak_set (usbdev, ep, 1);
+ rb.size = usbd_ep_read_packet (usbdev, ep, rb.buf, ep_size_);
}
UsbStream::UsbStream (UsbStreamControl &control, int num)
@@ -124,7 +125,7 @@ UsbStream::read (char *buf, int count)
{
rb.offset = rb.size = 0;
barrier ();
- usbd_ep_nak_set (num_ + 1, 0);
+ usbd_ep_nak_set (usbdev, num_ + 1, 0);
}
/* Done. */
return len;
@@ -139,7 +140,7 @@ UsbStream::write (const char *buf, int count)
if (control_.configured_)
{
int len = std::min (left, UsbStreamControl::ep_size_);
- len = usbd_ep_write_packet (num_ + 0x81, buf, len);
+ len = usbd_ep_write_packet (usbdev, num_ + 0x81, buf, len);
buf += len;
left -= len;
}
diff --git a/digital/ucoolib/ucoolib/hal/usb/usb.stm32.hh b/digital/ucoolib/ucoolib/hal/usb/usb.stm32.hh
index 022b2faa..f90a05e7 100644
--- a/digital/ucoolib/ucoolib/hal/usb/usb.stm32.hh
+++ b/digital/ucoolib/ucoolib/hal/usb/usb.stm32.hh
@@ -28,6 +28,8 @@
#include "config/hal/usb.hh"
+#include <libopencm3/usb/usbd.h>
+
namespace ucoo {
class UsbStream;
@@ -47,9 +49,9 @@ class UsbStreamControl
private:
/// Called by USB stack when device is configured. This is expected to
/// setup endpoints.
- static void set_config (uint16_t wValue);
+ static void set_config (usbd_device *usbdev, uint16_t wValue);
/// Called by USB stack when a frame is received on a OUT endpoint.
- static void rx_callback (uint8_t ep);
+ static void rx_callback (usbd_device *usbdev, uint8_t ep);
private:
/// Size of endpoints.
static const int ep_size_ = UCOO_CONFIG_HAL_USB_EP_SIZE;
diff --git a/digital/ucoolib/ucoolib/utils/delay.arm.cc b/digital/ucoolib/ucoolib/utils/delay.arm.cc
index 8410c8d1..dca630e9 100644
--- a/digital/ucoolib/ucoolib/utils/delay.arm.cc
+++ b/digital/ucoolib/ucoolib/utils/delay.arm.cc
@@ -25,7 +25,7 @@
#include <algorithm>
-#include <libopencm3/stm32/systick.h>
+#include <libopencm3/cm3/systick.h>
#include <libopencm3/stm32/f4/rcc.h>
namespace ucoo {