summaryrefslogtreecommitdiff
path: root/tests/usb-serial-rs485/main-stm32f4-disco.c
diff options
context:
space:
mode:
authorKarl Palsson <karlp@tweak.net.au>2016-09-27 23:05:26 +0000
committerKarl Palsson <karlp@tweak.net.au>2016-09-30 23:31:54 +0000
commit003c9d202aeeb428640cecfece1c20f9bcd7ddbd (patch)
treeab916dcf6f70d16d6b8707ade889dd4260b186b9 /tests/usb-serial-rs485/main-stm32f4-disco.c
parent8b484ba88e16ec8a01482d94f27407966cecdaea (diff)
downloadolsndot-003c9d202aeeb428640cecfece1c20f9bcd7ddbd.tar.gz
olsndot-003c9d202aeeb428640cecfece1c20f9bcd7ddbd.tar.bz2
olsndot-003c9d202aeeb428640cecfece1c20f9bcd7ddbd.zip
usb-serial: functional on f1.
Diffstat (limited to 'tests/usb-serial-rs485/main-stm32f4-disco.c')
-rw-r--r--tests/usb-serial-rs485/main-stm32f4-disco.c55
1 files changed, 20 insertions, 35 deletions
diff --git a/tests/usb-serial-rs485/main-stm32f4-disco.c b/tests/usb-serial-rs485/main-stm32f4-disco.c
index f024e46..f5c21bf 100644
--- a/tests/usb-serial-rs485/main-stm32f4-disco.c
+++ b/tests/usb-serial-rs485/main-stm32f4-disco.c
@@ -38,13 +38,7 @@
#endif
-static usbd_device *usbd_dev;
-static struct ringb rx_ring;
-static uint8_t rx_ring_data[64];
-struct ringb tx_ring;
-static uint8_t tx_ring_data[128];
-bool nakked = false;
-
+extern struct ringb rx_ring, tx_ring;
static void usart_setup(void)
{
/* Enable the USART2 interrupt. */
@@ -115,22 +109,22 @@ void usart2_isr(void)
// }
}
-/* Y0, moron, nothing's stopping rx irqs from happening, have fun when you overflow temp buffer! */
-static void task_drain_rx(struct ringb *r) {
- uint8_t zero_copy_is_for_losers[sizeof(rx_ring_data)];
- int zci = 0;
- int c = ringb_get(r);
- while (c >= 0) {
- zero_copy_is_for_losers[zci++] = c;
- c = ringb_get(r);
- }
- if (zci) {
- trace_send16(STIMULUS_RING_DRAIN, zci);
- glue_data_received_cb(zero_copy_is_for_losers, zci);
- }
+void usb_cdcacm_setup_pre_arch(void)
+{
+ rcc_periph_clock_enable(RCC_GPIOA);
+ rcc_periph_clock_enable(RCC_OTGFS);
+ gpio_mode_setup(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE,
+ GPIO9 | GPIO11 | GPIO12);
+ gpio_set_af(GPIOA, GPIO_AF10, GPIO9 | GPIO11 | GPIO12);
+
}
+void usb_cdcacm_setup_post_arch(usbd_device *dev)
+{
+}
+
+
int main(void)
{
rcc_clock_setup_hse_3v3(&rcc_hse_8mhz_3v3[RCC_CLOCK_3V3_168MHZ]);
@@ -142,27 +136,18 @@ int main(void)
gpio_mode_setup(RS485DE_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE,
RS485DE_PIN);
- usart_setup();
- ringb_init(&rx_ring, rx_ring_data, sizeof(rx_ring_data));
- ringb_init(&tx_ring, tx_ring_data, sizeof(tx_ring_data));
+
- usb_cdcacm_init(&usbd_dev);
+ usart_setup();
+ usb_cdcacm_setup_pre_arch();
+ usbd_device *usbd_dev = usb_cdcacm_init(&otgfs_usb_driver, "stm32f4-disco");
+ usb_cdcacm_setup_post_arch(usbd_dev);
ER_DPRINTF("Looping...\n");
volatile int i = 0;
while (1) {
usbd_poll(usbd_dev);
- if (i++ > 500) {
- // hacktastic
- if (ringb_depth(&tx_ring) < 64 && nakked) {
- usbd_ep_nak_set(usbd_dev, 1, 0);
- nakked = false;
- }
-
- task_drain_rx(&rx_ring);
- i = 0;
- }
-
+ usb_cdcacm_poll(usbd_dev);
}
}