uart.h 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #ifndef UART_H_
  2. #define UART_H_
  3. #include "main.h"
  4. #include "remote.h"
  5. #if (DEBUG || USE_REMOTE) && IS_ATMEGAx8
  6. # define USE_UART 1
  7. # define IF_UART(...) __VA_ARGS__
  8. #else
  9. # define USE_UART 0
  10. # define IF_UART(...) /* nothing */
  11. #endif
  12. enum uart_chan {
  13. UART_CHAN_8BIT_0, /* 8 bit communication channel 0 */
  14. #if 0
  15. UART_CHAN_8BIT_1, /* 8 bit communication channel 1 */
  16. UART_CHAN_8BIT_2, /* 8 bit communication channel 2 */
  17. UART_CHAN_8BIT_3, /* 8 bit communication channel 3 */
  18. #endif
  19. UART_CHAN_7BIT, /* 7 bit communication channel */
  20. UART_NR_CHAN,
  21. };
  22. typedef void (*uart_txready_cb_t)(void);
  23. typedef void (*uart_rx_cb_t)(uint8_t data);
  24. bool uart_tx_is_ready(enum uart_chan chan);
  25. void uart_tx_byte(uint8_t data, enum uart_chan chan);
  26. void uart_tx_enable(bool enable, enum uart_chan chan);
  27. void uart_register_callbacks(uart_txready_cb_t tx_ready,
  28. uart_rx_cb_t rx,
  29. enum uart_chan chan);
  30. void uart_enter_deep_sleep(void);
  31. void uart_handle_deep_sleep_wakeup(void);
  32. void uart_handle_watchdog_interrupt(void);
  33. void uart_init(void);
  34. #endif /* UART_H_ */