µOS++ IIIe Reference 7.0.0
The third edition of µOS++, a POSIX inspired open source framework, written in C++
Loading...
Searching...
No Matches
serial.h
Go to the documentation of this file.
1/*
2 * This file is part of the µOS++ project (https://micro-os-plus.github.io/).
3 * Copyright (c) 2015-2025 Liviu Ionescu. All rights reserved.
4 * Copyright (c) 2013-2014 ARM Ltd.
5 *
6 * Permission to use, copy, modify, and/or distribute this software
7 * for any purpose is hereby granted, under the terms of the MIT license.
8 *
9 * If a copy of the license was not distributed with this file, it can
10 * be obtained from https://opensource.org/licenses/mit.
11 */
12
13/*
14 * The code is inspired by ARM CMSIS Driver_USART.h file, v2.02,
15 * and tries to remain functionally close to the CMSIS specifications.
16 */
17
18#ifndef CMSIS_PLUS_DRIVER_SERIAL_H_
19#define CMSIS_PLUS_DRIVER_SERIAL_H_
20
21// ----------------------------------------------------------------------------
22
23#ifdef __cplusplus
24
25// ----------------------------------------------------------------------------
26
28
29#include <cstdint>
30#include <cstddef>
31
32// ----------------------------------------------------------------------------
33
34#pragma GCC diagnostic push
35#if defined(__clang__)
36#pragma clang diagnostic ignored "-Wc++98-compat"
37#endif
38
39// ----------------------------------------------------------------------------
40
41namespace os
42{
43 namespace driver
44 {
45 // ------------------------------------------------------------------------
46
47 namespace serial
48 {
49 using bit_number_t = uint32_t;
50 using config_t = uint32_t;
51 using config_arg_t = uint32_t;
52 using control_t = uint32_t;
53 using control_arg_t = uint32_t;
54
55 // ****** Serial Control Codes *****
56
57 constexpr bit_number_t CONFIG_Pos = 0;
58 constexpr config_t CONFIG_Msk (0xFFUL << CONFIG_Pos);
59
60 // ----- Serial Control Codes: Mode -----
62 constexpr config_t MODE_ASYNCHRONOUS = (0x01UL << CONFIG_Pos);
63
67
70
72 constexpr config_t MODE_SINGLE_WIRE = (0x04UL << CONFIG_Pos);
73
75 constexpr config_t MODE_IRDA = (0x05UL << CONFIG_Pos);
76
78 constexpr config_t MODE_SMART_CARD = (0x06UL << CONFIG_Pos);
79
80 // ----- Serial Control Codes: Mode Parameters: Data Bits -----
82 constexpr config_t DATA_BITS_Msk = (7UL << DATA_BITS_Pos);
83
85 constexpr config_t DATA_BITS_5 = (5UL << DATA_BITS_Pos);
86
88 constexpr config_t DATA_BITS_6 = (6UL << DATA_BITS_Pos);
89
91 constexpr config_t DATA_BITS_7 = (7UL << DATA_BITS_Pos);
92
94 constexpr config_t DATA_BITS_8 = (0UL << DATA_BITS_Pos);
95
97 constexpr config_t DATA_BITS_9 = (1UL << DATA_BITS_Pos);
98
99 // ----- Serial Control Codes: Mode Parameters: Parity -----
100 constexpr bit_number_t PARITY_Pos = 12;
101 constexpr config_t PARITY_Msk = (3UL << PARITY_Pos);
102
104 constexpr config_t PARITY_NONE = (0UL << PARITY_Pos);
105
107 constexpr config_t PARITY_EVEN = (1UL << PARITY_Pos);
108
110 constexpr config_t PARITY_ODD = (2UL << PARITY_Pos);
111
112 // ----- Serial Control Codes: Mode Parameters: Stop Bits -----
115
117 constexpr config_t STOP_BITS_1 = (0UL << STOP_BITS_Pos);
118
120 constexpr config_t STOP_BITS_2 = (1UL << STOP_BITS_Pos);
121
124
127
128 // ----- Serial Control Codes: Mode Parameters: Flow Control -----
131
134
137
140
143
144 // ----- Serial Control Codes: Mode Parameters: Clock Polarity =
145 // (Synchronous mode); -----
146 constexpr bit_number_t CPOL_Pos = 18;
147 constexpr config_t CPOL_Msk = (1UL << CPOL_Pos);
148
150 constexpr config_t CPOL0 = (0UL << CPOL_Pos);
151
153 constexpr config_t CPOL1 = (1UL << CPOL_Pos);
154
155 // ----- Serial Control Codes: Mode Parameters: Clock Phase =
156 // (Synchronous mode); -----
157 constexpr bit_number_t CPHA_Pos = 19;
158 constexpr config_t CPHA_Msk = (1UL << CPHA_Pos);
159
161 constexpr config_t CPHA0 = (0UL << CPHA_Pos);
162
164 constexpr config_t CPHA1 = (1UL << CPHA_Pos);
165
166 // ----- Serial Control Codes: Miscellaneous Controls -----
167
170 constexpr config_t DEFAULT_TX_VALUE = (0x10UL << CONFIG_Pos);
171
173 constexpr config_t IRDA_PULSE = (0x11UL << CONFIG_Pos);
174
177
179 constexpr config_t SMART_CARD_CLOCK = (0x13UL << CONFIG_Pos);
180
182 constexpr config_t SMART_CARD_NACK = (0x14UL << CONFIG_Pos);
183
184 // ----------------------------------------------------------------------
185 // ----- Commands -----
186
188 {
189 //
191 enable_tx = (0x15UL << CONFIG_Pos),
192
194 enable_rx = (0x16UL << CONFIG_Pos),
195
198
200 abort_send = (0x18UL << CONFIG_Pos),
201
204
207
209 disable_tx = (0x25UL << CONFIG_Pos),
210
212 disable_rx = (0x26UL << CONFIG_Pos),
213
215 disable_break = (0x27UL << CONFIG_Pos)
216 };
217
218 // ----------------------------------------------------------------------
219 // ****** Serial specific error codes *****
220
223
226
229
232
235
238
241
244
245 // ======================================================================
246 // ***** Serial Status *****
247
248#pragma GCC diagnostic push
249#if defined(__clang__)
250#pragma clang diagnostic ignored "-Wpadded"
251#elif defined(__GNUC__)
252#pragma GCC diagnostic ignored "-Wpadded"
253#endif
254
258 class Status
259 {
260 public:
261 bool
262 is_tx_busy (void);
263
264 bool
265 is_rx_busy (void);
266
267 bool
268 is_tx_underflow (void);
269
270 bool
271 is_rx_overflow (void);
272
273 bool
274 is_rx_break (void);
275
276 bool
277 is_rx_framing_error (void);
278
279 bool
280 is_rx_parity_error (void);
281
282 // --------------------------------------------------------------------
283
284 public:
285 // For compatibility with ARM CMSIS, these bits should be
286 // exactly in this order.
287
289 bool tx_busy : 1;
290
292 bool rx_busy : 1;
293
296 bool tx_underflow : 1;
297
300 bool rx_overflow : 1;
301
304 bool rx_break : 1;
305
309
313 };
314
315#pragma GCC diagnostic pop
316
317 // ======================================================================
318 // ***** Serial Modem Control *****
319
320 using modem_config_t = uint32_t;
321
326 {
327 //
328
330 clear_rts,
331
333 set_rts,
334
336 clear_dtr,
337
339 set_dtr
340 };
341
342 // ======================================================================
343
344#pragma GCC diagnostic push
345#if defined(__clang__)
346#pragma clang diagnostic ignored "-Wpadded"
347#elif defined(__GNUC__)
348#pragma GCC diagnostic ignored "-Wpadded"
349#endif
350
355 {
356 public:
357 bool
358 is_cts_active (void);
359
360 bool
361 is_dsr_active (void);
362
363 bool
364 is_dcd_active (void);
365
366 bool
367 is_ri_active (void);
368
369 // --------------------------------------------------------------------
370 public:
371 // For compatibility with ARM CMSIS, these bits should be
372 // exactly in this order.
373
375 bool cts : 1;
376
378 bool dsr : 1;
379
381 bool dcd : 1;
382
384 bool ri : 1;
385 };
386
387#pragma GCC diagnostic pop
388
389 // ======================================================================
390 // ****** Serial Events *****
391
396 {
397 //
398
400 send_complete = (1UL << 0),
401
403 receive_complete = (1UL << 1),
404
406 transfer_complete = (1UL << 2),
407
409 tx_complete = (1UL << 3),
410
412 tx_underflow = (1UL << 4),
413
415 rx_overflow = (1UL << 5),
416
418 rx_timeout = (1UL << 6),
419
421 rx_break = (1UL << 7),
422
424 rx_framing_error = (1UL << 8),
425
427 rx_parity_error = (1UL << 9),
428
430 cts = (1UL << 10),
431
433 dsr = (1UL << 11),
434
436 dcd = (1UL << 12),
437
439 ri = (1UL << 13)
440 };
441
442 // ======================================================================
443
444#pragma GCC diagnostic push
445#if defined(__clang__)
446#pragma clang diagnostic ignored "-Wpadded"
447#elif defined(__GNUC__)
448#pragma GCC diagnostic ignored "-Wpadded"
449#endif
450
455 {
456 public:
457 // For compatibility with ARM CMSIS, these bits should be
458 // exactly in this order.
459
461 bool asynchronous : 1;
462
465
468
470 bool single_wire : 1;
471
473 bool irda : 1;
474
476 bool smart_card : 1;
477
480
483
486
489
492
494 bool rts : 1;
495
497 bool cts : 1;
498
500 bool dtr : 1;
501
503 bool dsr : 1;
504
506 bool dcd : 1;
507
509 bool ri : 1;
510
512 bool event_cts : 1;
513
515 bool event_dsr : 1;
516
518 bool event_dcd : 1;
519
521 bool event_ri : 1;
522 };
523
524#pragma GCC diagnostic pop
525
526 } /* namespace serial */
527
528 // ========================================================================
529
530#pragma GCC diagnostic push
531#if defined(__clang__)
532#pragma clang diagnostic ignored "-Wpadded"
533#elif defined(__GNUC__)
534#pragma GCC diagnostic ignored "-Wpadded"
535#endif
536
537 class Serial : public Base
538 {
539
540 public:
541 // ----------------------------------------------------------------------
542
543 Serial () noexcept;
544
545 Serial (const Serial&) = delete;
546
547 Serial (Serial&&) = delete;
548
549 Serial&
551 = delete;
552
553 Serial&
555 = delete;
556
557 virtual ~Serial () noexcept override;
558
559 // ----------------------------------------------------------------------
560
568 void
570 const void* cb_object = nullptr) noexcept;
571
572 // ----------------------------------------------------------------------
573
578 const serial::Capabilities&
579 get_capabilities (void) noexcept;
580
589 send (const void* data, std::size_t num) noexcept;
590
599 receive (void* data, std::size_t num) noexcept;
600
610 transfer (const void* data_out, void* data_in, std::size_t num) noexcept;
611
616 std::size_t
617 get_tx_count (void) noexcept;
618
623 std::size_t
624 get_rx_count (void) noexcept;
625
634 configure (serial::config_t cfg, serial::config_arg_t arg) noexcept;
635
643 control (serial::control_t ctrl) noexcept;
644
649 serial::Status&
650 get_status (void) noexcept;
651
658 control_modem_line (serial::Modem_control ctrl) noexcept;
659
664 serial::Modem_status&
665 get_modem_status (void) noexcept;
666
673 void
674 signal_event (event_t event) noexcept;
675
676 void
677 clean (void) noexcept;
678
679 protected:
680 // ----- To be implemented by derived classes -----
681
682 virtual const serial::Capabilities&
683 do_get_capabilities (void) noexcept
684 = 0;
685
686 virtual return_t
687 do_send (const void* data, std::size_t num) noexcept
688 = 0;
689
690 virtual return_t
691 do_receive (void* data, std::size_t num) noexcept
692 = 0;
693
694 virtual return_t
695 do_transfer (const void* data_out, void* data_in,
696 std::size_t num) noexcept
697 = 0;
698
699 virtual std::size_t
700 do_get_tx_count (void) noexcept
701 = 0;
702
703 virtual std::size_t
704 do_get_rx_count (void) noexcept
705 = 0;
706
707 virtual return_t
708 do_configure (serial::config_t cfg, serial::config_arg_t arg) noexcept
709 = 0;
710
711 virtual return_t
712 do_control (serial::control_t ctrl) noexcept
713 = 0;
714
715 virtual serial::Status&
716 do_get_status (void) noexcept
717 = 0;
718
719 virtual return_t
720 do_control_modem_line (serial::Modem_control ctrl) noexcept
721 = 0;
722
723 virtual serial::Modem_status&
724 do_get_modem_status (void) noexcept
725 = 0;
726
727 protected:
730
732 const void* cb_object_;
733
734 serial::Status status_;
735 serial::Modem_status modem_status_;
736 };
737
738#pragma GCC diagnostic pop
739
740 // ------------------------------------------------------------------------
741 // ----- Definitions -----
742
743 namespace serial
744 {
745 // ----------------------------------------------------------------------
746
747 inline bool
748 Status::is_tx_busy (void)
749 {
750 return tx_busy;
751 }
752
753 inline bool
754 Status::is_rx_busy (void)
755 {
756 return rx_busy;
757 }
758
759 inline bool
760 Status::is_tx_underflow (void)
761 {
762 return tx_underflow;
763 }
764
765 inline bool
766 Status::is_rx_overflow (void)
767 {
768 return rx_overflow;
769 }
770
771 inline bool
772 Status::is_rx_break (void)
773 {
774 return rx_break;
775 }
776
777 inline bool
778 Status::is_rx_framing_error (void)
779 {
780 return rx_framing_error;
781 }
782
783 inline bool
784 Status::is_rx_parity_error (void)
785 {
786 return rx_parity_error;
787 }
788
789 // ----------------------------------------------------------------------
790
791 inline bool
792 Modem_status::is_cts_active (void)
793 {
794 return cts;
795 }
796
797 inline bool
798 Modem_status::is_dsr_active (void)
799 {
800 return dsr;
801 }
802
803 inline bool
804 Modem_status::is_dcd_active (void)
805 {
806 return dcd;
807 }
808
809 inline bool
810 Modem_status::is_ri_active (void)
811 {
812 return ri;
813 }
814 } /* namespace serial */
815
816 // ------------------------------------------------------------------------
817
818 inline const serial::Capabilities&
820 {
821 return do_get_capabilities ();
822 }
823
824 inline std::size_t
825 Serial::get_tx_count (void) noexcept
826 {
827 return do_get_tx_count ();
828 }
829
830 inline std::size_t
831 Serial::get_rx_count (void) noexcept
832 {
833 return do_get_rx_count ();
834 }
835
836 inline return_t
838 {
839 return do_configure (cfg, arg);
840 }
841
842 inline return_t
844 {
845 return do_control (ctrl);
846 }
847
848 inline serial::Status&
849 Serial::get_status (void) noexcept
850 {
851 return do_get_status ();
852 }
853
854 inline return_t
856 {
857 return do_control_modem_line (ctrl);
858 }
859
862 {
863 return do_get_modem_status ();
864 }
865
866 inline void /* __attribute__((always_inline)) */
868 {
869 if (cb_func_ != nullptr)
870 {
871 // Forward event to registered callback.
872 cb_func_ (cb_object_, event);
873 }
874 }
875
876 } /* namespace driver */
877} /* namespace os */
878
879#pragma GCC diagnostic pop
880
881// ----------------------------------------------------------------------------
882
883#endif /* __cplusplus */
884
885// ----------------------------------------------------------------------------
886
887#endif /* CMSIS_PLUS_DRIVER_SERIAL_H_ */
void signal_event(event_t event) noexcept
Signal serial events.
Definition serial.h:867
serial::Status & get_status(void) noexcept
Get serial port status.
Definition serial.h:849
return_t control(serial::control_t ctrl) noexcept
Control the serial interface.
Definition serial.h:843
serial::Modem_status modem_status_
Definition serial.h:735
virtual serial::Status & do_get_status(void) noexcept=0
Serial() noexcept
Definition serial.cpp:37
Serial & operator=(const Serial &)=delete
virtual return_t do_control(serial::control_t ctrl) noexcept=0
void clean(void) noexcept
Definition serial.cpp:55
return_t control_modem_line(serial::Modem_control ctrl) noexcept
Configure serial modem lines.
Definition serial.h:855
virtual serial::Modem_status & do_get_modem_status(void) noexcept=0
Serial(const Serial &)=delete
const void * cb_object_
Pointer to object instance associated with this driver.
Definition serial.h:732
return_t receive(void *data, std::size_t num) noexcept
Start the serial receiver.
Definition serial.cpp:93
virtual std::size_t do_get_rx_count(void) noexcept=0
virtual return_t do_receive(void *data, std::size_t num) noexcept=0
Serial(Serial &&)=delete
virtual return_t do_configure(serial::config_t cfg, serial::config_arg_t arg) noexcept=0
virtual std::size_t do_get_tx_count(void) noexcept=0
std::size_t get_rx_count(void) noexcept
Get received bytes count.
Definition serial.h:831
return_t configure(serial::config_t cfg, serial::config_arg_t arg) noexcept
Configure the serial interface.
Definition serial.h:837
signal_event_t cb_func_
Pointer to static function that implements the callback.
Definition serial.h:729
virtual ~Serial() noexcept override
Definition serial.cpp:47
virtual return_t do_control_modem_line(serial::Modem_control ctrl) noexcept=0
virtual return_t do_send(const void *data, std::size_t num) noexcept=0
serial::Modem_status & get_modem_status(void) noexcept
Get serial modem lines state.
Definition serial.h:861
std::size_t get_tx_count(void) noexcept
Get transmitted bytes count.
Definition serial.h:825
serial::Status status_
Definition serial.h:734
const serial::Capabilities & get_capabilities(void) noexcept
Get driver capabilities.
Definition serial.h:819
virtual const serial::Capabilities & do_get_capabilities(void) noexcept=0
return_t send(const void *data, std::size_t num) noexcept
Start the serial transmitter.
Definition serial.cpp:82
return_t transfer(const void *data_out, void *data_in, std::size_t num) noexcept
Start sending/receiving data to/from the serial transmitter/receiver.
Definition serial.cpp:104
void register_callback(signal_event_t cb_func, const void *cb_object=nullptr) noexcept
Register event callback.
Definition serial.cpp:74
virtual return_t do_transfer(const void *data_out, void *data_in, std::size_t num) noexcept=0
Serial device driver capabilities.
Definition serial.h:455
bool event_dcd
Signal DCD change event.
Definition serial.h:518
bool synchronous_slave
supports Synchronous Slave mode.
Definition serial.h:467
bool dtr
DTR Line: false=not available, true=available.
Definition serial.h:500
bool dsr
DSR Line: false=not available, true=available.
Definition serial.h:503
bool rts
RTS Line: false=not available, true=available.
Definition serial.h:494
bool event_cts
Signal CTS change event.
Definition serial.h:512
bool event_dsr
Signal DSR change event.
Definition serial.h:515
bool event_rx_timeout
Signal receive character timeout event.
Definition serial.h:491
bool flow_control_cts
CTS Flow Control available.
Definition serial.h:485
bool single_wire
supports Single-wire mode.
Definition serial.h:470
bool smart_card_clock
Smart Card Clock generator available.
Definition serial.h:479
bool synchronous_master
supports Synchronous Master mode.
Definition serial.h:464
bool irda
supports IrDA mode.
Definition serial.h:473
bool ri
RI Line: false=not available, true=available.
Definition serial.h:509
bool cts
CTS Line: false=not available, true=available.
Definition serial.h:497
bool asynchronous
supports Asynchronous mode.
Definition serial.h:461
bool smart_card
supports Smart Card mode.
Definition serial.h:476
bool event_tx_complete
Transmit completed event.
Definition serial.h:488
bool event_ri
Signal RI change event.
Definition serial.h:521
bool dcd
DCD Line: false=not available, true=available.
Definition serial.h:506
bool flow_control_rts
RTS Flow Control available.
Definition serial.h:482
Serial modem status
Definition serial.h:355
bool ri
RI state: true=Active, false=Inactive.
Definition serial.h:384
bool dsr
DSR state: true=Active, false=Inactive.
Definition serial.h:378
bool dcd
DCD state: true=Active, false=Inactive.
Definition serial.h:381
bool cts
CTS state: true=Active, false=Inactive.
Definition serial.h:375
Serial port status
Definition serial.h:259
bool is_rx_overflow(void)
Definition serial.h:766
bool rx_overflow
Receive data overflow detected (cleared on start of next receive operation).
Definition serial.h:300
bool tx_busy
Transmitter busy flag.
Definition serial.h:289
bool tx_underflow
Transmit data underflow detected (cleared on start of next send operation).
Definition serial.h:296
bool is_rx_parity_error(void)
Definition serial.h:784
bool rx_busy
Receiver busy flag.
Definition serial.h:292
bool rx_framing_error
Framing error detected on receive (cleared on start of next receive operation).
Definition serial.h:308
bool is_rx_framing_error(void)
Definition serial.h:778
bool rx_parity_error
Parity error detected on receive (cleared on start of next receive operation).
Definition serial.h:312
bool is_tx_underflow(void)
Definition serial.h:760
bool rx_break
Break detected on receive (cleared on start of next receive operation).
Definition serial.h:304
uint32_t config_arg_t
Definition serial.h:51
constexpr config_t PARITY_Msk
Definition serial.h:101
constexpr bit_number_t DATA_BITS_Pos
Definition serial.h:81
constexpr config_t CPHA0
CPHA = 0 = (default);.
Definition serial.h:161
constexpr config_t FLOW_CONTROL_RTS
RTS Flow Control.
Definition serial.h:136
uint32_t config_t
Definition serial.h:50
constexpr config_t STOP_BITS_2
2 Stop bits.
Definition serial.h:120
constexpr config_t PARITY_NONE
No Parity = (default);.
Definition serial.h:104
constexpr config_t DATA_BITS_8
8 Data bits = (default);.
Definition serial.h:94
constexpr config_t DEFAULT_TX_VALUE
Set default Transmit value = (Synchronous Receive only); arg = value.
Definition serial.h:170
constexpr config_t SMART_CARD_NACK
Smart Card NACK generation; arg: 0=disabled, 1=enabled.
Definition serial.h:182
constexpr config_t DATA_BITS_6
6 Data bit.
Definition serial.h:88
constexpr config_t DATA_BITS_9
9 Data bits.
Definition serial.h:97
constexpr return_t ERROR_MODE
Specified Mode not supported.
Definition serial.h:222
constexpr config_t MODE_IRDA
UART IrDA; arg = Baudrate.
Definition serial.h:75
constexpr bit_number_t PARITY_Pos
Definition serial.h:100
constexpr config_t CPHA_Msk
Definition serial.h:158
constexpr config_t IRDA_PULSE
Set IrDA Pulse in ns; arg: 0=3/16 of bit period.
Definition serial.h:173
constexpr config_t STOP_BITS_1
1 Stop bit = (default);.
Definition serial.h:117
constexpr config_t DATA_BITS_Msk
Definition serial.h:82
constexpr config_t MODE_SYNCHRONOUS_MASTER
Synchronous Master = (generates clock signal); arg = Baudrate.
Definition serial.h:66
constexpr config_t CPOL1
CPOL = 1.
Definition serial.h:153
constexpr config_t DATA_BITS_7
7 Data bits.
Definition serial.h:91
constexpr config_t CPOL_Msk
Definition serial.h:147
constexpr config_t FLOW_CONTROL_RTS_CTS
RTS/CTS Flow Control.
Definition serial.h:142
constexpr config_t FLOW_CONTROL_CTS
CTS Flow Control.
Definition serial.h:139
constexpr config_t PARITY_EVEN
Even Parity.
Definition serial.h:107
constexpr config_t DATA_BITS_5
5 Data bits.
Definition serial.h:85
constexpr config_t FLOW_CONTROL_Msk
Definition serial.h:130
constexpr config_t CPHA1
CPHA = 1.
Definition serial.h:164
constexpr config_t MODE_ASYNCHRONOUS
UART = (Asynchronous);; arg = Baudrate.
Definition serial.h:62
constexpr config_t SMART_CARD_CLOCK
Set Smart Card Clock in Hz; arg: 0=Clock not generated.
Definition serial.h:179
constexpr config_t MODE_SYNCHRONOUS_SLAVE
Synchronous Slave = (external clock signal);.
Definition serial.h:69
constexpr bit_number_t CPHA_Pos
Definition serial.h:157
constexpr return_t ERROR_DATA_BITS
Specified number of Data bits not supported.
Definition serial.h:228
uint32_t modem_config_t
Definition serial.h:320
constexpr config_t MODE_SMART_CARD
UART Smart Card; arg = Baudrate.
Definition serial.h:78
uint32_t control_arg_t
Definition serial.h:53
constexpr bit_number_t CONFIG_Pos
Definition serial.h:57
constexpr config_t CONFIG_Msk(0xFFUL<< CONFIG_Pos)
constexpr config_t FLOW_CONTROL_NONE
No Flow Control = (default);.
Definition serial.h:133
constexpr return_t ERROR_CPHA
Specified Clock Phase not supported.
Definition serial.h:243
@ abort_receive
Abort Serial::receive().
Definition serial.h:203
@ abort_send
Abort Serial::send().
Definition serial.h:200
@ enable_break
Enable Continuous Break transmission.
Definition serial.h:197
@ disable_break
Disable Continuous Break transmission;.
Definition serial.h:215
@ disable_tx
Disable Transmitter.
Definition serial.h:209
@ abort_transfer
Abort Serial::transfer().
Definition serial.h:206
@ enable_tx
Enable Transmitter.
Definition serial.h:191
@ enable_rx
Enable Receiver.
Definition serial.h:194
@ disable_rx
Disable Receiver.
Definition serial.h:212
constexpr bit_number_t STOP_BITS_Pos
Definition serial.h:113
Event
Serial Events.
Definition serial.h:396
@ cts
CTS state changed (optional).
Definition serial.h:430
@ rx_framing_error
Framing error detected on receive.
Definition serial.h:424
@ ri
RI state changed (optional).
Definition serial.h:439
@ transfer_complete
Transfer completed.
Definition serial.h:406
@ dsr
DSR state changed (optional).
Definition serial.h:433
@ rx_parity_error
Parity error detected on receive.
Definition serial.h:427
@ rx_break
Break detected on receive.
Definition serial.h:421
@ tx_underflow
Transmit data not available (Synchronous Slave).
Definition serial.h:412
@ dcd
DCD state changed (optional).
Definition serial.h:436
@ rx_timeout
Receive character timeout (optional).
Definition serial.h:418
@ receive_complete
Receive completed.
Definition serial.h:403
@ rx_overflow
Receive data overflow.
Definition serial.h:415
@ tx_complete
Transmit completed (optional).
Definition serial.h:409
@ send_complete
Send completed; however USART may still transmit data.
Definition serial.h:400
constexpr config_t SMART_CARD_GUARD_TIME
Set Smart Card Guard Time; arg = number of bit periods.
Definition serial.h:176
constexpr return_t ERROR_BAUDRATE
Specified baudrate not supported.
Definition serial.h:225
uint32_t control_t
Definition serial.h:52
constexpr config_t MODE_SINGLE_WIRE
UART Single-wire = (half-duplex);; arg = Baudrate.
Definition serial.h:72
constexpr return_t ERROR_FLOW_CONTROL
Specified Flow Control not supported.
Definition serial.h:237
constexpr config_t PARITY_ODD
Odd Parity.
Definition serial.h:110
constexpr config_t STOP_BITS_Msk
Definition serial.h:114
constexpr return_t ERROR_STOP_BITS
Specified number of Stop bits not supported.
Definition serial.h:234
constexpr bit_number_t FLOW_CONFIG_Pos
Definition serial.h:129
constexpr config_t STOP_BITS_0_5
0.5 Stop bits.
Definition serial.h:126
uint32_t bit_number_t
Definition serial.h:49
constexpr config_t STOP_BITS_1_5
1.5 Stop bits.
Definition serial.h:123
Modem_control
Configuration to change the serial modem lines.
Definition serial.h:326
constexpr return_t ERROR_CPOL
Specified Clock Polarity not supported.
Definition serial.h:240
constexpr return_t ERROR_PARITY
Specified Parity not supported.
Definition serial.h:231
constexpr config_t CPOL0
CPOL = 0 = (default);.
Definition serial.h:150
constexpr bit_number_t CPOL_Pos
Definition serial.h:146
constexpr return_t ERROR_SPECIFIC
Definition common.h:65
int32_t return_t
Definition common.h:46
uint32_t event_t
Definition common.h:45
void(* signal_event_t)(const void *object, event_t event)
Definition common.h:67
System namespace.
Standard std namespace.