summaryrefslogtreecommitdiffhomepage
path: root/digital/io-hub/src/apbirthday/hardware.stm32.cc
diff options
context:
space:
mode:
Diffstat (limited to 'digital/io-hub/src/apbirthday/hardware.stm32.cc')
-rw-r--r--digital/io-hub/src/apbirthday/hardware.stm32.cc26
1 files changed, 15 insertions, 11 deletions
diff --git a/digital/io-hub/src/apbirthday/hardware.stm32.cc b/digital/io-hub/src/apbirthday/hardware.stm32.cc
index abbfa477..48b69c2b 100644
--- a/digital/io-hub/src/apbirthday/hardware.stm32.cc
+++ b/digital/io-hub/src/apbirthday/hardware.stm32.cc
@@ -123,16 +123,20 @@ Hardware::zb_handle ()
{
// Switch to AVRISP?
if (zb_usb_avrisp.poll ())
- {
- // Uart pins are reused.
- zb_uart.disable ();
- gpio_mode_setup (GPIOD, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO8 | GPIO9);
- // Go to special AVRISP mode.
- zb_avrisp (zb_usb_avrisp);
- // Restore.
- 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);
- }
+ zb_handle (zb_usb_avrisp);
+}
+
+void
+Hardware::zb_handle (ucoo::Stream &s)
+{
+ // Uart pins are reused.
+ zb_uart.disable ();
+ gpio_mode_setup (GPIOD, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO8 | GPIO9);
+ // Go to special AVRISP mode.
+ zb_avrisp (s);
+ // Restore.
+ 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);
}