From bdcd8bd500b53c69ca27096e5b999c215d7f742e Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Mon, 11 Mar 2013 23:21:57 +0100 Subject: digital/io-hub/src/apbirthday: first program skeleton --- digital/io-hub/src/apbirthday/Makefile | 13 +++++++ digital/io-hub/src/apbirthday/hardware.hh | 46 +++++++++++++++++++++++ digital/io-hub/src/apbirthday/hardware.host.cc | 30 +++++++++++++++ digital/io-hub/src/apbirthday/hardware.stm32.cc | 46 +++++++++++++++++++++++ digital/io-hub/src/apbirthday/main.cc | 50 +++++++++++++++++++++++++ 5 files changed, 185 insertions(+) create mode 100644 digital/io-hub/src/apbirthday/Makefile create mode 100644 digital/io-hub/src/apbirthday/hardware.hh create mode 100644 digital/io-hub/src/apbirthday/hardware.host.cc create mode 100644 digital/io-hub/src/apbirthday/hardware.stm32.cc create mode 100644 digital/io-hub/src/apbirthday/main.cc (limited to 'digital') diff --git a/digital/io-hub/src/apbirthday/Makefile b/digital/io-hub/src/apbirthday/Makefile new file mode 100644 index 00000000..8f798ea0 --- /dev/null +++ b/digital/io-hub/src/apbirthday/Makefile @@ -0,0 +1,13 @@ +BASE = ../../../ucoolib + +TARGETS = host stm32f4 +PROGS = apbirthday +apbirthday_SOURCES = main.cc hardware.host.cc hardware.stm32.cc + +MODULES = hal/uart hal/usb base/proto + +include $(BASE)/build/top.mk + +clean: clean.project +clean.project: + rm -f usb zb_uart diff --git a/digital/io-hub/src/apbirthday/hardware.hh b/digital/io-hub/src/apbirthday/hardware.hh new file mode 100644 index 00000000..1b70da1f --- /dev/null +++ b/digital/io-hub/src/apbirthday/hardware.hh @@ -0,0 +1,46 @@ +#ifndef hardware_hh +#define hardware_hh +// io-hub - Modular Input/Output. {{{ +// +// Copyright (C) 2013 Nicolas Schodet +// +// APBTeam: +// Web: http://apbteam.org/ +// Email: team AT apbteam DOT org +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +// }}} + +#include "ucoolib/hal/uart/uart.hh" +#ifdef TARGET_stm32 +# include "ucoolib/hal/usb/usb.hh" +#else +# include "ucoolib/arch/host/host_stream.hh" +#endif + +struct Hardware +{ + ucoo::Uart dev_uart, zb_uart; +#ifdef TARGET_stm32 + ucoo::UsbStreamControl usb_control; + ucoo::UsbStream usb; +#else + ucoo::HostStream usb; +#endif + Hardware (); +}; + +#endif // hardware_hh diff --git a/digital/io-hub/src/apbirthday/hardware.host.cc b/digital/io-hub/src/apbirthday/hardware.host.cc new file mode 100644 index 00000000..c16b012c --- /dev/null +++ b/digital/io-hub/src/apbirthday/hardware.host.cc @@ -0,0 +1,30 @@ +// io-hub - Modular Input/Output. {{{ +// +// Copyright (C) 2013 Nicolas Schodet +// +// APBTeam: +// Web: http://apbteam.org/ +// Email: team AT apbteam DOT org +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +// }}} +#include "hardware.hh" + +Hardware::Hardware () + : dev_uart (), zb_uart ("zb_uart"), usb ("usb") +{ +} + diff --git a/digital/io-hub/src/apbirthday/hardware.stm32.cc b/digital/io-hub/src/apbirthday/hardware.stm32.cc new file mode 100644 index 00000000..86ff37f9 --- /dev/null +++ b/digital/io-hub/src/apbirthday/hardware.stm32.cc @@ -0,0 +1,46 @@ +// io-hub - Modular Input/Output. {{{ +// +// Copyright (C) 2013 Nicolas Schodet +// +// APBTeam: +// Web: http://apbteam.org/ +// Email: team AT apbteam DOT org +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +// }}} +#include "hardware.hh" + +#include +#include "ucoolib/hal/gpio/gpio.hh" + +Hardware::Hardware () + : dev_uart (4), zb_uart (2), + usb_control ("APBTeam", "APBirthday"), usb (usb_control, 0) +{ + rcc_peripheral_enable_clock (&RCC_AHB1ENR, RCC_AHB1ENR_IOPCEN); + rcc_peripheral_enable_clock (&RCC_AHB1ENR, RCC_AHB1ENR_IOPDEN); + // dev_uart + gpio_mode_setup (GPIOC, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO12); + gpio_mode_setup (GPIOD, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO2); + gpio_set_af (GPIOC, GPIO_AF8, GPIO12); + gpio_set_af (GPIOD, GPIO_AF8, GPIO2); + dev_uart.enable (38400, ucoo::Uart::EVEN, 1); + // zb_uart + gpio_mode_setup (GPIOD, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO8 | GPIO9); + gpio_set_af (GPIOD, GPIO_AF7, GPIO8 | GPIO9); + zb_uart.enable (38400, ucoo::Uart::EVEN, 1); +} + diff --git a/digital/io-hub/src/apbirthday/main.cc b/digital/io-hub/src/apbirthday/main.cc new file mode 100644 index 00000000..3e246f1c --- /dev/null +++ b/digital/io-hub/src/apbirthday/main.cc @@ -0,0 +1,50 @@ +// io-hub - Modular Input/Output. {{{ +// +// Copyright (C) 2013 Nicolas Schodet +// +// APBTeam: +// Web: http://apbteam.org/ +// Email: team AT apbteam DOT org +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +// }}} +#include "ucoolib/arch/arch.hh" +#include "ucoolib/common.hh" +#include "hardware.hh" + +int +main (int argc, const char **argv) +{ + ucoo::arch_init (argc, argv); + Hardware hardware; + while (1) + { + if (hardware.dev_uart.poll ()) + { + int c = hardware.dev_uart.getc (); + hardware.dev_uart.putc ('d'); + hardware.dev_uart.putc (c); + } + if (hardware.usb.poll ()) + { + int c = hardware.usb.getc (); + hardware.usb.putc ('u'); + hardware.usb.putc (c); + } + ucoo::yield (); + } +} + -- cgit v1.2.3