#pragma once

#include "rotor-light.hpp"

namespace rl = rotor_light;

using UARTRxCallback = void (*)(char);
using UARTTxCallback = void (*)();

struct Board {
  static constexpr uint32_t samples = 100000;

  static void init_start();

  static void enable_timer();

  static void disable_timer();

  static rl::TimePoint get_now();

  static void toggle_led();

  static void enable_uart(UARTRxCallback rx, UARTTxCallback tx);

  static void send_uart(char);

  static void enable_usart();

  static void send_usart(const char *, size_t);

  static void send_usart(const char *);

  static void sleep(const rl::TimePoint &until);

  static void delay();
};
