µOS++ IIIe Reference 6.3.17
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++ distribution.
3 * (https://github.com/micro-os-plus)
4 * Copyright (c) 2015 Liviu Ionescu.
5 * Copyright (c) 2013-2014 ARM Ltd.
6 *
7 * Permission is hereby granted, free of charge, to any person
8 * obtaining a copy of this software and associated documentation
9 * files (the "Software"), to deal in the Software without
10 * restriction, including without limitation the rights to use,
11 * copy, modify, merge, publish, distribute, sublicense, and/or
12 * sell copies of the Software, and to permit persons to whom
13 * the Software is furnished to do so, subject to the following
14 * conditions:
15 *
16 * The above copyright notice and this permission notice shall be
17 * included in all copies or substantial portions of the Software.
18 *
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
20 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
21 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
22 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
23 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
24 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
25 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
26 * OTHER DEALINGS IN THE SOFTWARE.
27 */
28
29/*
30 * The code is inspired by ARM CMSIS Driver_USART.h file, v2.02,
31 * and tries to remain functionally close to the CMSIS specifications.
32 */
33
34#ifndef CMSIS_PLUS_DRIVER_SERIAL_H_
35#define CMSIS_PLUS_DRIVER_SERIAL_H_
36
37// ----------------------------------------------------------------------------
38
39#ifdef __cplusplus
40
42
43#include <cstdint>
44#include <cstddef>
45
46namespace os
47{
48 namespace driver
49 {
50 // ----------------------------------------------------------------------
51
52 namespace serial
53 {
54 using bit_number_t = uint32_t;
55 using config_t = uint32_t;
56 using config_arg_t = uint32_t;
57 using control_t = uint32_t;
58 using control_arg_t = uint32_t;
59
60 // ****** Serial Control Codes *****
61
62 constexpr bit_number_t CONFIG_Pos = 0;
63 constexpr config_t CONFIG_Msk (0xFFUL << CONFIG_Pos);
64
65 // ----- Serial Control Codes: Mode -----
67 constexpr config_t MODE_ASYNCHRONOUS = (0x01UL << CONFIG_Pos);
68
71
74
76 constexpr config_t MODE_SINGLE_WIRE = (0x04UL << CONFIG_Pos);
77
79 constexpr config_t MODE_IRDA = (0x05UL << CONFIG_Pos);
80
82 constexpr config_t MODE_SMART_CARD = (0x06UL << CONFIG_Pos);
83
84 // ----- Serial Control Codes: Mode Parameters: Data Bits -----
86 constexpr config_t DATA_BITS_Msk = (7UL << DATA_BITS_Pos);
87
89 constexpr config_t DATA_BITS_5 = (5UL << DATA_BITS_Pos);
90
92 constexpr config_t DATA_BITS_6 = (6UL << DATA_BITS_Pos);
93
95 constexpr config_t DATA_BITS_7 = (7UL << DATA_BITS_Pos);
96
98 constexpr config_t DATA_BITS_8 = (0UL << DATA_BITS_Pos);
99
101 constexpr config_t DATA_BITS_9 = (1UL << DATA_BITS_Pos);
102
103 // ----- Serial Control Codes: Mode Parameters: Parity -----
104 constexpr bit_number_t PARITY_Pos = 12;
105 constexpr config_t PARITY_Msk = (3UL << PARITY_Pos);
106
108 constexpr config_t PARITY_NONE = (0UL << PARITY_Pos);
109
111 constexpr config_t PARITY_EVEN = (1UL << PARITY_Pos);
112
114 constexpr config_t PARITY_ODD = (2UL << PARITY_Pos);
115
116 // ----- Serial Control Codes: Mode Parameters: Stop Bits -----
119
121 constexpr config_t STOP_BITS_1 = (0UL << STOP_BITS_Pos);
122
124 constexpr config_t STOP_BITS_2 = (1UL << STOP_BITS_Pos);
125
128
131
132 // ----- Serial Control Codes: Mode Parameters: Flow Control -----
135
138
141
144
147
148 // ----- Serial Control Codes: Mode Parameters: Clock Polarity = (Synchronous mode); -----
149 constexpr bit_number_t CPOL_Pos = 18;
150 constexpr config_t CPOL_Msk = (1UL << CPOL_Pos);
151
153 constexpr config_t CPOL0 = (0UL << CPOL_Pos);
154
156 constexpr config_t CPOL1 = (1UL << CPOL_Pos);
157
158 // ----- Serial Control Codes: Mode Parameters: Clock Phase = (Synchronous mode); -----
159 constexpr bit_number_t CPHA_Pos = 19;
160 constexpr config_t CPHA_Msk = (1UL << CPHA_Pos);
161
163 constexpr config_t CPHA0 = (0UL << CPHA_Pos);
164
166 constexpr config_t CPHA1 = (1UL << CPHA_Pos);
167
168 // ----- Serial Control Codes: Miscellaneous Controls -----
169
171 constexpr config_t DEFAULT_TX_VALUE = (0x10UL << CONFIG_Pos);
172
174 constexpr config_t IRDA_PULSE = (0x11UL << CONFIG_Pos);
175
178
180 constexpr config_t SMART_CARD_CLOCK = (0x13UL << CONFIG_Pos);
181
183 constexpr config_t SMART_CARD_NACK = (0x14UL << CONFIG_Pos);
184
185 // --------------------------------------------------------------------
186 // ----- Commands -----
187
189 : control_t
190 {
191 //
193 enable_tx = (0x15UL << CONFIG_Pos),
194
196 enable_rx = (0x16UL << CONFIG_Pos),
197
199 enable_break = (0x17UL << CONFIG_Pos),
200
202 abort_send = (0x18UL << CONFIG_Pos),
203
205 abort_receive = (0x19UL << CONFIG_Pos),
206
208 abort_transfer = (0x1AUL << CONFIG_Pos),
209
211 disable_tx = (0x25UL << CONFIG_Pos),
212
214 disable_rx = (0x26UL << CONFIG_Pos),
215
217 disable_break = (0x27UL << CONFIG_Pos)
218 };
219
220 // --------------------------------------------------------------------
221 // ****** Serial specific error codes *****
222
225
228
231
234
237
240
243
246
247 // ====================================================================
248 // ***** Serial Status *****
249
250#pragma GCC diagnostic push
251#pragma GCC diagnostic ignored "-Wpadded"
252
256 class Status
257 {
258 public:
259
260 bool
261 is_tx_busy (void);
262
263 bool
264 is_rx_busy (void);
265
266 bool
267 is_tx_underflow (void);
268
269 bool
270 is_rx_overflow (void);
271
272 bool
273 is_rx_break (void);
274
275 bool
276 is_rx_framing_error (void);
277
278 bool
279 is_rx_parity_error (void);
280
281 // ------------------------------------------------------------------
282
283 public:
284
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
298 bool rx_overflow :1;
299
301 bool rx_break :1;
302
305
308 };
309
310#pragma GCC diagnostic pop
311
312 // ====================================================================
313 // ***** Serial Modem Control *****
314
315 using modem_config_t = uint32_t;
316
320 enum class Modem_control
322 {
323 //
324
326 clear_rts,
327
329 set_rts,
330
332 clear_dtr,
333
335 set_dtr
336 };
337
338 // ====================================================================
339
340#pragma GCC diagnostic push
341#pragma GCC diagnostic ignored "-Wpadded"
342
347 {
348 public:
349
350 bool
351 is_cts_active (void);
352
353 bool
354 is_dsr_active (void);
355
356 bool
357 is_dcd_active (void);
358
359 bool
360 is_ri_active (void);
361
362 // ------------------------------------------------------------------
363 public:
364
365 // For compatibility with ARM CMSIS, these bits should be
366 // exactly in this order.
367
369 bool cts :1;
370
372 bool dsr :1;
373
375 bool dcd :1;
376
378 bool ri :1;
379 };
380
381#pragma GCC diagnostic pop
382
383 // ====================================================================
384 // ****** Serial Events *****
385
389 enum Event
390 : event_t
391 {
392 //
393
395 send_complete = (1UL << 0),
396
398 receive_complete = (1UL << 1),
399
401 transfer_complete = (1UL << 2),
402
404 tx_complete = (1UL << 3),
405
407 tx_underflow = (1UL << 4),
408
410 rx_overflow = (1UL << 5),
411
413 rx_timeout = (1UL << 6),
414
416 rx_break = (1UL << 7),
417
419 rx_framing_error = (1UL << 8),
420
422 rx_parity_error = (1UL << 9),
423
425 cts = (1UL << 10),
426
428 dsr = (1UL << 11),
429
431 dcd = (1UL << 12),
432
434 ri = (1UL << 13),
435 };
436
437 // ====================================================================
438
439#pragma GCC diagnostic push
440#pragma GCC diagnostic ignored "-Wpadded"
441
446 {
447 public:
448
449 // For compatibility with ARM CMSIS, these bits should be
450 // exactly in this order.
451
454
457
460
462 bool single_wire :1;
463
465 bool irda :1;
466
468 bool smart_card :1;
469
472
475
478
481
484
486 bool rts :1;
487
489 bool cts :1;
490
492 bool dtr :1;
493
495 bool dsr :1;
496
498 bool dcd :1;
499
501 bool ri :1;
502
504 bool event_cts :1;
505
507 bool event_dsr :1;
508
510 bool event_dcd :1;
511
513 bool event_ri :1;
514 };
515
516#pragma GCC diagnostic pop
517
518 } /* namespace serial */
519
520 // ======================================================================
521
522#pragma GCC diagnostic push
523#pragma GCC diagnostic ignored "-Wpadded"
524
525 class Serial : public Base
526 {
527
528 public:
529
530 // --------------------------------------------------------------------
531
532 Serial () noexcept;
533
534 Serial (const Serial&) = delete;
535
536 Serial (Serial&&) = delete;
537
538 Serial&
539 operator= (const Serial&) = delete;
540
541 Serial&
542 operator= (Serial&&) = delete;
543
544 virtual
545 ~Serial () noexcept;
546
547 // --------------------------------------------------------------------
548
556 void
558 const void* cb_object = nullptr) noexcept;
559
560 // --------------------------------------------------------------------
561
566 const serial::Capabilities&
567 get_capabilities (void) noexcept;
568
576 send (const void* data, std::size_t num) noexcept;
577
585 receive (void* data, std::size_t num) noexcept;
586
595 transfer (const void* data_out, void* data_in, std::size_t num) noexcept;
596
601 std::size_t
602 get_tx_count (void) noexcept;
603
608 std::size_t
609 get_rx_count (void) noexcept;
610
618 configure (serial::config_t cfg, serial::config_arg_t arg) noexcept;
619
626 control (serial::control_t ctrl) noexcept;
627
632 serial::Status&
633 get_status (void) noexcept;
634
641 control_modem_line (serial::Modem_control ctrl) noexcept;
642
647 serial::Modem_status&
648 get_modem_status (void) noexcept;
649
656 void
657 signal_event (event_t event) noexcept;
658
659 void
660 clean (void) noexcept;
661
662 protected:
663
664 // ----- To be implemented by derived classes -----
665
666 virtual const serial::Capabilities&
667 do_get_capabilities (void) noexcept = 0;
668
669 virtual return_t
670 do_send (const void* data, std::size_t num) noexcept = 0;
671
672 virtual return_t
673 do_receive (void* data, std::size_t num) noexcept = 0;
674
675 virtual return_t
676 do_transfer (const void* data_out, void* data_in, std::size_t num)
677 noexcept = 0;
678
679 virtual std::size_t
680 do_get_tx_count (void) noexcept = 0;
681
682 virtual std::size_t
683 do_get_rx_count (void) noexcept = 0;
684
685 virtual return_t
686 do_configure (serial::config_t cfg, serial::config_arg_t arg)
687 noexcept = 0;
688
689 virtual return_t
690 do_control (serial::control_t ctrl) noexcept = 0;
691
692 virtual serial::Status&
693 do_get_status (void) noexcept = 0;
694
695 virtual return_t
696 do_control_modem_line (serial::Modem_control ctrl) noexcept = 0;
697
698 virtual serial::Modem_status&
699 do_get_modem_status (void) noexcept = 0;
700
701 protected:
702
705
707 const void* cb_object_;
708
709 serial::Status status_;
710 serial::Modem_status modem_status_;
711
712 };
713
714#pragma GCC diagnostic pop
715
716 // ----------------------------------------------------------------------
717 // ----- Definitions -----
718
719 namespace serial
720 {
721 // --------------------------------------------------------------------
722
723 inline bool
724 Status::is_tx_busy (void)
725 {
726 return tx_busy;
727 }
728
729 inline bool
730 Status::is_rx_busy (void)
731 {
732 return rx_busy;
733 }
734
735 inline bool
736 Status::is_tx_underflow (void)
737 {
738 return tx_underflow;
739 }
740
741 inline bool
742 Status::is_rx_overflow (void)
743 {
744 return rx_overflow;
745 }
746
747 inline bool
748 Status::is_rx_break (void)
749 {
750 return rx_break;
751 }
752
753 inline bool
754 Status::is_rx_framing_error (void)
755 {
756 return rx_framing_error;
757 }
758
759 inline bool
760 Status::is_rx_parity_error (void)
761 {
762 return rx_parity_error;
763 }
764
765 // --------------------------------------------------------------------
766
767 inline bool
768 Modem_status::is_cts_active (void)
769 {
770 return cts;
771 }
772
773 inline bool
774 Modem_status::is_dsr_active (void)
775 {
776 return dsr;
777 }
778
779 inline bool
780 Modem_status::is_dcd_active (void)
781 {
782 return dcd;
783 }
784
785 inline bool
786 Modem_status::is_ri_active (void)
787 {
788 return ri;
789 }
790 } /* namespace serial */
791
792 // ----------------------------------------------------------------------
793
794 inline const serial::Capabilities&
796 {
797 return do_get_capabilities ();
798 }
799
800 inline std::size_t
801 Serial::get_tx_count (void) noexcept
802 {
803 return do_get_tx_count ();
804 }
805
806 inline std::size_t
807 Serial::get_rx_count (void) noexcept
808 {
809 return do_get_rx_count ();
810 }
811
812 inline return_t
814 {
815 return do_configure (cfg, arg);
816 }
817
818 inline return_t
820 {
821 return do_control (ctrl);
822 }
823
824 inline serial::Status&
825 Serial::get_status (void) noexcept
826 {
827 return do_get_status ();
828 }
829
830 inline return_t
832 {
833 return do_control_modem_line (ctrl);
834 }
835
838 {
839 return do_get_modem_status ();
840 }
841
842 inline void /* __attribute__((always_inline)) */
844 {
845 if (cb_func_ != nullptr)
846 {
847 // Forward event to registered callback.
848 cb_func_ (cb_object_, event);
849 }
850 }
851
852 } /* namespace driver */
853} /* namespace os */
854
855#endif /* __cplusplus */
856
857// ----------------------------------------------------------------------------
858
859#endif /* CMSIS_PLUS_DRIVER_SERIAL_H_ */
void signal_event(event_t event) noexcept
Signal serial events.
Definition serial.h:843
serial::Status & get_status(void) noexcept
Get serial port status.
Definition serial.h:825
return_t control(serial::control_t ctrl) noexcept
Control the serial interface.
Definition serial.h:819
serial::Modem_status modem_status_
Definition serial.h:710
virtual serial::Status & do_get_status(void) noexcept=0
Serial() noexcept
Definition serial.cpp:47
Serial & operator=(const Serial &)=delete
virtual return_t do_control(serial::control_t ctrl) noexcept=0
void clean(void) noexcept
Definition serial.cpp:65
return_t control_modem_line(serial::Modem_control ctrl) noexcept
Configure serial modem lines.
Definition serial.h:831
virtual serial::Modem_status & do_get_modem_status(void) noexcept=0
virtual ~Serial() noexcept
Definition serial.cpp:57
Serial(const Serial &)=delete
const void * cb_object_
Pointer to object instance associated with this driver.
Definition serial.h:707
return_t receive(void *data, std::size_t num) noexcept
Start the serial receiver.
Definition serial.cpp:102
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:807
return_t configure(serial::config_t cfg, serial::config_arg_t arg) noexcept
Configure the serial interface.
Definition serial.h:813
signal_event_t cb_func_
Pointer to static function that implements the callback.
Definition serial.h:704
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:837
std::size_t get_tx_count(void) noexcept
Get transmitted bytes count.
Definition serial.h:801
serial::Status status_
Definition serial.h:709
const serial::Capabilities & get_capabilities(void) noexcept
Get driver capabilities.
Definition serial.h:795
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:91
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:113
void register_callback(signal_event_t cb_func, const void *cb_object=nullptr) noexcept
Register event callback.
Definition serial.cpp:84
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:446
bool event_dcd
Signal RI change event.
Definition serial.h:510
bool synchronous_slave
supports Single-wire mode
Definition serial.h:459
bool dtr
DSR Line: false=not available, true=available.
Definition serial.h:492
bool dsr
DCD Line: false=not available, true=available.
Definition serial.h:495
bool rts
CTS Line: false=not available, true=available.
Definition serial.h:486
bool event_cts
Signal DSR change event.
Definition serial.h:504
bool event_dsr
Signal DCD change event.
Definition serial.h:507
bool event_rx_timeout
RTS Line: false=not available, true=available.
Definition serial.h:483
bool flow_control_cts
Transmit completed event.
Definition serial.h:477
bool single_wire
supports IrDA mode
Definition serial.h:462
bool smart_card_clock
RTS Flow Control available.
Definition serial.h:471
bool synchronous_master
supports Synchronous Slave mode
Definition serial.h:456
bool irda
supports Smart Card mode
Definition serial.h:465
bool ri
Signal CTS change event.
Definition serial.h:501
bool cts
DTR Line: false=not available, true=available.
Definition serial.h:489
bool asynchronous
< supports Asynchronous mode
Definition serial.h:453
bool smart_card
Smart Card Clock generator available.
Definition serial.h:468
bool event_tx_complete
Signal receive character timeout event.
Definition serial.h:480
bool dcd
RI Line: false=not available, true=available.
Definition serial.h:498
bool flow_control_rts
CTS Flow Control available.
Definition serial.h:474
Serial modem status
Definition serial.h:347
bool dsr
DCD state: true=Active, false=Inactive.
Definition serial.h:372
bool dcd
RI state: true=Active, false=Inactive.
Definition serial.h:375
bool cts
< CTS state: true=Active, false=Inactive
Definition serial.h:369
Serial port status
Definition serial.h:257
bool is_rx_overflow(void)
Definition serial.h:742
bool rx_overflow
Break detected on receive (cleared on start of next receive operation)
Definition serial.h:298
bool tx_busy
< Transmitter busy flag
Definition serial.h:289
bool tx_underflow
Receive data overflow detected (cleared on start of next receive operation)
Definition serial.h:295
bool is_rx_parity_error(void)
Definition serial.h:760
bool rx_busy
Transmit data underflow detected (cleared on start of next send operation)
Definition serial.h:292
bool rx_framing_error
Parity error detected on receive (cleared on start of next receive operation)
Definition serial.h:304
bool is_rx_framing_error(void)
Definition serial.h:754
bool is_tx_underflow(void)
Definition serial.h:736
bool rx_break
Framing error detected on receive (cleared on start of next receive operation)
Definition serial.h:301
uint32_t config_arg_t
Definition serial.h:56
constexpr config_t PARITY_Msk
No Parity = (default);.
Definition serial.h:105
constexpr bit_number_t DATA_BITS_Pos
Definition serial.h:85
constexpr config_t CPHA0
CPHA = 1.
Definition serial.h:163
constexpr config_t FLOW_CONTROL_RTS
CTS Flow Control.
Definition serial.h:140
uint32_t config_t
Definition serial.h:55
constexpr config_t STOP_BITS_2
1.5 Stop bits
Definition serial.h:124
constexpr config_t PARITY_NONE
Even Parity.
Definition serial.h:108
constexpr config_t DATA_BITS_8
9 Data bits
Definition serial.h:98
constexpr config_t DEFAULT_TX_VALUE
< Set default Transmit value = (Synchronous Receive only); arg = value
Definition serial.h:171
constexpr config_t SMART_CARD_NACK
Definition serial.h:183
constexpr config_t DATA_BITS_6
7 Data bits
Definition serial.h:92
constexpr config_t DATA_BITS_9
Definition serial.h:101
constexpr return_t ERROR_MODE
< Specified Mode not supported
Definition serial.h:224
constexpr config_t MODE_IRDA
UART Smart Card; arg = Baudrate.
Definition serial.h:79
constexpr bit_number_t PARITY_Pos
Definition serial.h:104
constexpr config_t CPHA_Msk
CPHA = 0 = (default);.
Definition serial.h:160
constexpr config_t IRDA_PULSE
Set Smart Card Guard Time; arg = number of bit periods.
Definition serial.h:174
constexpr config_t STOP_BITS_1
2 Stop bits
Definition serial.h:121
constexpr config_t DATA_BITS_Msk
5 Data bits
Definition serial.h:86
constexpr config_t MODE_SYNCHRONOUS_MASTER
Synchronous Slave = (external clock signal);.
Definition serial.h:70
constexpr config_t CPOL1
Definition serial.h:156
constexpr config_t DATA_BITS_7
8 Data bits = (default);
Definition serial.h:95
constexpr config_t CPOL_Msk
CPOL = 0 = (default);.
Definition serial.h:150
constexpr config_t FLOW_CONTROL_RTS_CTS
Definition serial.h:146
constexpr config_t FLOW_CONTROL_CTS
RTS/CTS Flow Control.
Definition serial.h:143
constexpr config_t PARITY_EVEN
Odd Parity.
Definition serial.h:111
constexpr config_t DATA_BITS_5
6 Data bit
Definition serial.h:89
constexpr config_t FLOW_CONTROL_Msk
No Flow Control = (default);.
Definition serial.h:134
constexpr config_t CPHA1
Definition serial.h:166
constexpr config_t MODE_ASYNCHRONOUS
< UART = (Asynchronous);; arg = Baudrate
Definition serial.h:67
constexpr config_t SMART_CARD_CLOCK
Smart Card NACK generation; arg: 0=disabled, 1=enabled.
Definition serial.h:180
constexpr config_t MODE_SYNCHRONOUS_SLAVE
UART Single-wire = (half-duplex);; arg = Baudrate.
Definition serial.h:73
constexpr bit_number_t CPHA_Pos
Definition serial.h:159
constexpr return_t ERROR_DATA_BITS
Specified Parity not supported.
Definition serial.h:230
uint32_t modem_config_t
Definition serial.h:315
constexpr config_t MODE_SMART_CARD
Definition serial.h:82
uint32_t control_arg_t
Definition serial.h:58
constexpr bit_number_t CONFIG_Pos
Definition serial.h:62
constexpr config_t CONFIG_Msk(0xFFUL<< CONFIG_Pos)
constexpr config_t FLOW_CONTROL_NONE
RTS Flow Control.
Definition serial.h:137
constexpr return_t ERROR_CPHA
Definition serial.h:245
@ abort_receive
Abort Serial::transfer()
Definition serial.h:205
@ abort_send
Abort Serial::receive()
Definition serial.h:202
@ enable_break
Abort Serial::send()
Definition serial.h:199
@ disable_tx
Disable Receiver.
Definition serial.h:211
@ abort_transfer
Disable Transmitter.
Definition serial.h:208
@ enable_tx
Enable Transmitter.
Definition serial.h:193
@ enable_rx
Enable Continuous Break transmission.
Definition serial.h:196
@ disable_rx
Disable Continuous Break transmission;.
Definition serial.h:214
constexpr bit_number_t STOP_BITS_Pos
Definition serial.h:117
Event
Serial Events.
Definition serial.h:391
@ cts
DSR state changed (optional)
Definition serial.h:425
@ rx_framing_error
Parity error detected on receive.
Definition serial.h:419
@ transfer_complete
Transmit completed (optional)
Definition serial.h:401
@ dsr
DCD state changed (optional)
Definition serial.h:428
@ rx_parity_error
CTS state changed (optional)
Definition serial.h:422
@ rx_break
Framing error detected on receive.
Definition serial.h:416
@ tx_underflow
Receive data overflow.
Definition serial.h:407
@ dcd
RI state changed (optional)
Definition serial.h:431
@ rx_timeout
Break detected on receive.
Definition serial.h:413
@ receive_complete
Transfer completed.
Definition serial.h:398
@ rx_overflow
Receive character timeout (optional)
Definition serial.h:410
@ tx_complete
Transmit data not available (Synchronous Slave)
Definition serial.h:404
@ send_complete
Send completed; however USART may still transmit data.
Definition serial.h:395
constexpr config_t SMART_CARD_GUARD_TIME
Set Smart Card Clock in Hz; arg: 0=Clock not generated.
Definition serial.h:177
constexpr return_t ERROR_BAUDRATE
Specified number of Data bits not supported.
Definition serial.h:227
uint32_t control_t
Definition serial.h:57
constexpr config_t MODE_SINGLE_WIRE
UART IrDA; arg = Baudrate.
Definition serial.h:76
constexpr return_t ERROR_FLOW_CONTROL
Specified Clock Polarity not supported.
Definition serial.h:239
constexpr config_t PARITY_ODD
Definition serial.h:114
constexpr config_t STOP_BITS_Msk
1 Stop bit = (default);
Definition serial.h:118
constexpr return_t ERROR_STOP_BITS
Specified Flow Control not supported.
Definition serial.h:236
constexpr bit_number_t FLOW_CONFIG_Pos
Definition serial.h:133
constexpr config_t STOP_BITS_0_5
Definition serial.h:130
uint32_t bit_number_t
Definition serial.h:54
constexpr config_t STOP_BITS_1_5
0.5 Stop bits
Definition serial.h:127
Modem_control
Configuration to change the serial modem lines.
Definition serial.h:322
constexpr return_t ERROR_CPOL
Specified Clock Phase not supported.
Definition serial.h:242
constexpr return_t ERROR_PARITY
Specified number of Stop bits not supported.
Definition serial.h:233
constexpr config_t CPOL0
CPOL = 1.
Definition serial.h:153
constexpr bit_number_t CPOL_Pos
Definition serial.h:149
constexpr return_t ERROR_SPECIFIC
Definition common.h:70
int32_t return_t
Definition common.h:51
uint32_t event_t
Definition common.h:50
void(* signal_event_t)(const void *object, event_t event)
Definition common.h:73
System namespace.
Standard std namespace.