Skip to content

Commit

Permalink
components: console: refactor component macros
Browse files Browse the repository at this point in the history
Refactor console_component_static and uart_mux_component_static, to
avoid code duplication within the macros.

Signed-off-by: Wilfred Mallawa <[email protected]>
  • Loading branch information
twilfredo committed Jan 17, 2024
1 parent e8c64e2 commit 6be3741
Showing 1 changed file with 16 additions and 20 deletions.
36 changes: 16 additions & 20 deletions boards/components/src/console.rs
Original file line number Diff line number Diff line change
Expand Up @@ -50,20 +50,20 @@ use capsules_core::console::DEFAULT_BUF_SIZE;

#[macro_export]
macro_rules! uart_mux_component_static {
() => {{
use capsules_core::virtualizers::virtual_uart::MuxUart;
use kernel::static_buf;
let UART_MUX = static_buf!(MuxUart<'static>);
let RX_BUF = static_buf!([u8; capsules_core::virtualizers::virtual_uart::RX_BUF_LEN]);
(UART_MUX, RX_BUF)
}};
($rx_buffer_len: literal) => {{
// Common logic for both branches
($rx_buffer_len: expr) => {{
use capsules_core::virtualizers::virtual_uart::MuxUart;
use kernel::static_buf;
let UART_MUX = static_buf!(MuxUart<'static>);
let RX_BUF = static_buf!([u8; $rx_buffer_len]);
(UART_MUX, RX_BUF)
}};
() => {
$crate::uart_mux_component_static!(capsules_core::virtualizers::virtual_uart::RX_BUF_LEN);
};
($rx_buffer_len: literal) => {
$crate::uart_mux_component_static!($rx_buffer_len);
};
}

pub struct UartMuxComponent<const RX_BUF_LEN: usize> {
Expand Down Expand Up @@ -102,28 +102,24 @@ impl<const RX_BUF_LEN: usize> Component for UartMuxComponent<RX_BUF_LEN> {

#[macro_export]
macro_rules! console_component_static {
() => {{
// Common logic for both branches
($rx_buffer_len: expr, $tx_buffer_len: expr) => {{
use capsules_core::console::{Console, DEFAULT_BUF_SIZE};
use capsules_core::virtualizers::virtual_uart::UartDevice;
use kernel::static_buf;
let read_buf = static_buf!([u8; DEFAULT_BUF_SIZE]);
let write_buf = static_buf!([u8; DEFAULT_BUF_SIZE]);
// Create virtual device for console.
let console_uart = static_buf!(UartDevice);
let console = static_buf!(Console<'static>);
(write_buf, read_buf, console_uart, console)
}};
($rx_buffer_len: literal, $tx_buffer_len: literal) => {{
use capsules_core::console::Console;
use capsules_core::virtualizers::virtual_uart::UartDevice;
use kernel::static_buf;
let read_buf = static_buf!([u8; $rx_buffer_len]);
let write_buf = static_buf!([u8; $tx_buffer_len]);
// Create virtual device for console.
let console_uart = static_buf!(UartDevice);
let console = static_buf!(Console<'static>);
(write_buf, read_buf, console_uart, console)
}};
() => {
$crate::console_component_static!(DEFAULT_BUF_SIZE, DEFAULT_BUF_SIZE);
};
($rx_buffer_len: literal, $tx_buffer_len: literal) => {
$crate::console_component_static!($rx_buffer_len, $tx_buffer_len);
};
}

pub struct ConsoleComponent<const RX_BUF_LEN: usize, const TX_BUF_LEN: usize> {
Expand Down

0 comments on commit 6be3741

Please sign in to comment.