34 #ifndef CMSIS_PLUS_DRIVER_SERIAL_H_ 35 #define CMSIS_PLUS_DRIVER_SERIAL_H_ 250 #pragma GCC diagnostic push 251 #pragma GCC diagnostic ignored "-Wpadded" 310 #pragma GCC diagnostic pop 340 #pragma GCC diagnostic push 341 #pragma GCC diagnostic ignored "-Wpadded" 351 is_cts_active (
void);
354 is_dsr_active (
void);
357 is_dcd_active (
void);
381 #pragma GCC diagnostic pop 439 #pragma GCC diagnostic push 440 #pragma GCC diagnostic ignored "-Wpadded" 516 #pragma GCC diagnostic pop 522 #pragma GCC diagnostic push 523 #pragma GCC diagnostic ignored "-Wpadded" 539 operator= (
const Serial&) =
delete;
542 operator= (
Serial&&) =
delete;
557 const void* cb_object =
nullptr) noexcept;
566 get_capabilities (
void) noexcept;
575 send (
const void* data, std::size_t num) noexcept;
584 receive (
void* data, std::size_t num) noexcept;
594 transfer (
const void* data_out,
void* data_in, std::size_t num) noexcept;
601 get_tx_count (
void) noexcept;
608 get_rx_count (
void) noexcept;
632 get_status (
void) noexcept;
647 get_modem_status (
void) noexcept;
655 signal_event (
event_t event) noexcept;
658 clean (
void) noexcept;
665 do_get_capabilities (
void) noexcept = 0;
668 do_send (
const void* data, std::size_t num) noexcept = 0;
671 do_receive (
void* data, std::size_t num) noexcept = 0;
674 do_transfer (
const void* data_out,
void* data_in, std::size_t num)
678 do_get_tx_count (
void) noexcept = 0;
681 do_get_rx_count (
void) noexcept = 0;
691 do_get_status (
void) noexcept = 0;
697 do_get_modem_status (
void) noexcept = 0;
712 #pragma GCC diagnostic pop 795 return do_get_capabilities ();
801 return do_get_tx_count ();
807 return do_get_rx_count ();
813 return do_configure (cfg, arg);
819 return do_control (ctrl);
825 return do_get_status ();
831 return do_control_modem_line (ctrl);
837 return do_get_modem_status ();
843 if (cb_func_ !=
nullptr)
846 cb_func_ (cb_object_, event);
Disable Continuous Break transmission;.
DCD state changed (optional)
constexpr bit_number_t PARITY_Pos
bool event_rx_timeout
RTS Line: false=not available, true=available.
constexpr bit_number_t CONFIG_Pos
serial::Status & get_status(void) noexcept
Get serial port status.
constexpr config_t MODE_IRDA
UART Smart Card; arg = Baudrate.
const void * cb_object_
Pointer to object instance associated with this driver.
constexpr return_t ERROR_CPHA
constexpr config_t STOP_BITS_1
2 Stop bits
constexpr config_t DATA_BITS_6
7 Data bits
bool flow_control_rts
CTS Flow Control available.
constexpr config_t SMART_CARD_CLOCK
Smart Card NACK generation; arg: 0=disabled, 1=enabled.
bool asynchronous
< supports Asynchronous mode
bool synchronous_master
supports Synchronous Slave mode
constexpr config_t MODE_ASYNCHRONOUS
< UART = (Asynchronous);; arg = Baudrate
constexpr config_t DATA_BITS_5
6 Data bit
constexpr config_t DATA_BITS_9
constexpr config_t MODE_SMART_CARD
bool dcd
RI Line: false=not available, true=available.
return_t control(serial::control_t ctrl) noexcept
Control the serial interface.
constexpr return_t ERROR_DATA_BITS
Specified Parity not supported.
Transmit completed (optional)
bool event_cts
Signal DSR change event.
bool dsr
DCD Line: false=not available, true=available.
constexpr config_t CPHA0
CPHA = 1.
constexpr config_t STOP_BITS_1_5
0.5 Stop bits
ssize_t send(int socket, const void *buffer, size_t length, int flags)
constexpr bit_number_t CPOL_Pos
bool is_tx_underflow(void)
bool cts
DTR Line: false=not available, true=available.
constexpr config_t IRDA_PULSE
Set Smart Card Guard Time; arg = number of bit periods.
bool single_wire
supports IrDA mode
signal_event_t cb_func_
Pointer to static function that implements the callback.
void signal_event(event_t event) noexcept
Signal serial events.
bool ri
Signal CTS change event.
constexpr config_t STOP_BITS_Msk
1 Stop bit = (default);
bool cts
< CTS state: true=Active, false=Inactive
bool smart_card
Smart Card Clock generator available.
constexpr config_t PARITY_EVEN
Odd Parity.
Transmit data not available (Synchronous Slave)
constexpr config_t DEFAULT_TX_VALUE
< Set default Transmit value = (Synchronous Receive only); arg = value
bool is_rx_framing_error(void)
constexpr return_t ERROR_MODE
< Specified Mode not supported
constexpr return_t ERROR_SPECIFIC
bool flow_control_cts
Transmit completed event.
bool tx_busy
< Transmitter busy flag
constexpr bit_number_t STOP_BITS_Pos
constexpr config_t FLOW_CONTROL_CTS
RTS/CTS Flow Control.
bool dtr
DSR Line: false=not available, true=available.
Serial device driver capabilities.
constexpr config_t FLOW_CONTROL_NONE
RTS Flow Control.
bool is_rx_parity_error(void)
constexpr config_t SMART_CARD_GUARD_TIME
Set Smart Card Clock in Hz; arg: 0=Clock not generated.
constexpr config_t FLOW_CONTROL_RTS_CTS
constexpr config_t PARITY_ODD
constexpr config_t CONFIG_Msk(0xFFUL<< CONFIG_Pos)
constexpr bit_number_t DATA_BITS_Pos
constexpr config_t CPOL0
CPOL = 1.
constexpr config_t DATA_BITS_7
8 Data bits = (default);
return_t control_modem_line(serial::Modem_control ctrl) noexcept
Configure serial modem lines.
constexpr config_t SMART_CARD_NACK
bool rx_busy
Transmit data underflow detected (cleared on start of next send operation)
constexpr return_t ERROR_BAUDRATE
Specified number of Data bits not supported.
bool rx_overflow
Break detected on receive (cleared on start of next receive operation)
bool event_tx_complete
Signal receive character timeout event.
constexpr config_t FLOW_CONTROL_RTS
CTS Flow Control.
constexpr config_t PARITY_Msk
No Parity = (default);.
bool tx_underflow
Receive data overflow detected (cleared on start of next receive operation)
constexpr return_t ERROR_FLOW_CONTROL
Specified Clock Polarity not supported.
constexpr config_t CPOL_Msk
CPOL = 0 = (default);.
constexpr return_t ERROR_CPOL
Specified Clock Phase not supported.
bool rx_framing_error
Parity error detected on receive (cleared on start of next receive operation)
constexpr config_t DATA_BITS_8
9 Data bits
constexpr return_t ERROR_PARITY
Specified number of Stop bits not supported.
constexpr config_t CPHA_Msk
CPHA = 0 = (default);.
bool synchronous_slave
supports Single-wire mode
bool rts
CTS Line: false=not available, true=available.
constexpr config_t MODE_SYNCHRONOUS_MASTER
Synchronous Slave = (external clock signal);.
bool rx_break
Framing error detected on receive (cleared on start of next receive operation)
constexpr config_t FLOW_CONTROL_Msk
No Flow Control = (default);.
return_t configure(serial::config_t cfg, serial::config_arg_t arg) noexcept
Configure the serial interface.
bool irda
supports Smart Card mode
serial::Modem_status & get_modem_status(void) noexcept
Get serial modem lines state.
Enable Continuous Break transmission.
constexpr config_t MODE_SINGLE_WIRE
UART IrDA; arg = Baudrate.
serial::Modem_status modem_status_
void(* signal_event_t)(const void *object, event_t event)
Modem_control
Configuration to change the serial modem lines.
constexpr config_t STOP_BITS_0_5
constexpr config_t PARITY_NONE
Even Parity.
bool is_rx_overflow(void)
constexpr bit_number_t FLOW_CONFIG_Pos
constexpr return_t ERROR_STOP_BITS
Specified Flow Control not supported.
std::size_t get_tx_count(void) noexcept
Get transmitted bytes count.
Break detected on receive.
const serial::Capabilities & get_capabilities(void) noexcept
Get driver capabilities.
constexpr config_t DATA_BITS_Msk
5 Data bits
bool event_dsr
Signal DCD change event.
bool event_dcd
Signal RI change event.
Send completed; however USART may still transmit data.
constexpr bit_number_t CPHA_Pos
bool smart_card_clock
RTS Flow Control available.
RI state changed (optional)
bool dsr
DCD state: true=Active, false=Inactive.
bool dcd
RI state: true=Active, false=Inactive.
std::size_t get_rx_count(void) noexcept
Get received bytes count.
DSR state changed (optional)
constexpr config_t MODE_SYNCHRONOUS_SLAVE
UART Single-wire = (half-duplex);; arg = Baudrate.
constexpr config_t STOP_BITS_2
1.5 Stop bits