µOS++ IIIe Reference 7.0.0
The third edition of µOS++, a POSIX inspired open source framework, written in C++
Loading...
Searching...
No Matches
os::driver::Serial Class Referenceabstract

#include <serial.h>

+ Inheritance diagram for os::driver::Serial:

Public Member Functions

 Serial () noexcept
 
 Serial (const Serial &)=delete
 
 Serial (Serial &&)=delete
 
virtual ~Serial () noexcept override
 
void clean (void) noexcept
 
return_t configure (serial::config_t cfg, serial::config_arg_t arg) noexcept
 Configure the serial interface.
 
return_t control (serial::control_t ctrl) noexcept
 Control the serial interface.
 
return_t control_modem_line (serial::Modem_control ctrl) noexcept
 Configure serial modem lines.
 
const serial::Capabilitiesget_capabilities (void) noexcept
 Get driver capabilities.
 
serial::Modem_statusget_modem_status (void) noexcept
 Get serial modem lines state.
 
std::size_t get_rx_count (void) noexcept
 Get received bytes count.
 
serial::Statusget_status (void) noexcept
 Get serial port status.
 
std::size_t get_tx_count (void) noexcept
 Get transmitted bytes count.
 
const Versionget_version (void) noexcept
 Get driver version.
 
Serialoperator= (const Serial &)=delete
 
Serialoperator= (Serial &&)=delete
 
return_t power (Power state) noexcept
 Power up/down device.
 
return_t receive (void *data, std::size_t num) noexcept
 Start the serial receiver.
 
void register_callback (signal_event_t cb_func, const void *cb_object=nullptr) noexcept
 Register event callback.
 
return_t send (const void *data, std::size_t num) noexcept
 Start the serial transmitter.
 
void signal_event (event_t event) noexcept
 Signal serial events.
 
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.
 

Protected Member Functions

virtual return_t do_configure (serial::config_t cfg, serial::config_arg_t arg) noexcept=0
 
virtual return_t do_control (serial::control_t ctrl) noexcept=0
 
virtual return_t do_control_modem_line (serial::Modem_control ctrl) noexcept=0
 
virtual const serial::Capabilitiesdo_get_capabilities (void) noexcept=0
 
virtual serial::Modem_statusdo_get_modem_status (void) noexcept=0
 
virtual std::size_t do_get_rx_count (void) noexcept=0
 
virtual serial::Statusdo_get_status (void) noexcept=0
 
virtual std::size_t do_get_tx_count (void) noexcept=0
 
virtual const Versiondo_get_version (void) noexcept=0
 
virtual return_t do_power (Power state) noexcept=0
 
virtual return_t do_receive (void *data, std::size_t num) noexcept=0
 
virtual return_t do_send (const void *data, std::size_t num) noexcept=0
 
virtual return_t do_transfer (const void *data_out, void *data_in, std::size_t num) noexcept=0
 

Protected Attributes

signal_event_t cb_func_
 Pointer to static function that implements the callback.
 
const void * cb_object_
 Pointer to object instance associated with this driver.
 
serial::Modem_status modem_status_
 
serial::Status status_
 

Detailed Description

Definition at line 537 of file serial.h.

Constructor & Destructor Documentation

◆ Serial() [1/3]

os::driver::Serial::Serial ( )
noexcept

Definition at line 37 of file serial.cpp.

38 {
39 trace::printf ("%s() %p\n", __func__, this);
40
41 cb_func_ = nullptr;
42 cb_object_ = nullptr;
43
44 clean ();
45 }
void clean(void) noexcept
Definition serial.cpp:55
const void * cb_object_
Pointer to object instance associated with this driver.
Definition serial.h:732
signal_event_t cb_func_
Pointer to static function that implements the callback.
Definition serial.h:729
int printf(const char *format,...)
Write a formatted string to the trace device.
Definition trace.cpp:59

References cb_func_, cb_object_, clean(), and os::trace::printf().

◆ Serial() [2/3]

os::driver::Serial::Serial ( const Serial )
delete

◆ Serial() [3/3]

os::driver::Serial::Serial ( Serial &&  )
delete

◆ ~Serial()

os::driver::Serial::~Serial ( )
overridevirtualnoexcept

Definition at line 47 of file serial.cpp.

48 {
49 trace::printf ("%s() %p\n", __func__, this);
50 }

References os::trace::printf().

Member Function Documentation

◆ clean()

void os::driver::Serial::clean ( void  )
noexcept

Definition at line 55 of file serial.cpp.

56 {
57 status_.rx_break = false;
58 status_.rx_busy = false;
60 status_.rx_overflow = false;
62 status_.tx_busy = false;
63 status_.tx_underflow = false;
64
65 modem_status_.cts = false;
66 modem_status_.dsr = false;
67 modem_status_.dcd = false;
68 modem_status_.ri = false;
69 }
serial::Modem_status modem_status_
Definition serial.h:735
serial::Status status_
Definition serial.h:734
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
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 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 rx_parity_error
Parity error detected on receive (cleared on start of next receive operation).
Definition serial.h:312
bool rx_break
Break detected on receive (cleared on start of next receive operation).
Definition serial.h:304

Referenced by Serial().

◆ configure()

return_t os::driver::Serial::configure ( serial::config_t  cfg,
serial::config_arg_t  arg 
)
inlinenoexcept
Parameters
[in]cfgOperation
[in]argArgument of operation (optional)
Returns
Common execution status and driver specific usart_execution_status

Definition at line 837 of file serial.h.

838 {
839 return do_configure (cfg, arg);
840 }
virtual return_t do_configure(serial::config_t cfg, serial::config_arg_t arg) noexcept=0

References do_configure().

◆ control()

return_t os::driver::Serial::control ( serial::control_t  ctrl)
inlinenoexcept
Parameters
[in]ctrlOperation
Returns
Common execution status and driver specific usart_execution_status

Definition at line 843 of file serial.h.

844 {
845 return do_control (ctrl);
846 }
virtual return_t do_control(serial::control_t ctrl) noexcept=0

References do_control().

◆ control_modem_line()

return_t os::driver::Serial::control_modem_line ( serial::Modem_control  ctrl)
inlinenoexcept
Parameters
[in]ctrlControl.
Returns
Execution status.

Definition at line 855 of file serial.h.

856 {
857 return do_control_modem_line (ctrl);
858 }
virtual return_t do_control_modem_line(serial::Modem_control ctrl) noexcept=0

References do_control_modem_line().

◆ do_configure()

virtual return_t os::driver::Serial::do_configure ( serial::config_t  cfg,
serial::config_arg_t  arg 
)
protectedpure virtualnoexcept

Implemented in os::driver::usart_wrapper.

Referenced by configure().

◆ do_control()

virtual return_t os::driver::Serial::do_control ( serial::control_t  ctrl)
protectedpure virtualnoexcept

Implemented in os::driver::usart_wrapper.

Referenced by control().

◆ do_control_modem_line()

virtual return_t os::driver::Serial::do_control_modem_line ( serial::Modem_control  ctrl)
protectedpure virtualnoexcept

Implemented in os::driver::usart_wrapper.

Referenced by control_modem_line().

◆ do_get_capabilities()

virtual const serial::Capabilities & os::driver::Serial::do_get_capabilities ( void  )
protectedpure virtualnoexcept

Implemented in os::driver::usart_wrapper.

Referenced by get_capabilities().

◆ do_get_modem_status()

virtual serial::Modem_status & os::driver::Serial::do_get_modem_status ( void  )
protectedpure virtualnoexcept

Implemented in os::driver::usart_wrapper.

Referenced by get_modem_status().

◆ do_get_rx_count()

virtual std::size_t os::driver::Serial::do_get_rx_count ( void  )
protectedpure virtualnoexcept

Implemented in os::driver::usart_wrapper.

Referenced by get_rx_count().

◆ do_get_status()

virtual serial::Status & os::driver::Serial::do_get_status ( void  )
protectedpure virtualnoexcept

Implemented in os::driver::usart_wrapper.

Referenced by get_status().

◆ do_get_tx_count()

virtual std::size_t os::driver::Serial::do_get_tx_count ( void  )
protectedpure virtualnoexcept

Implemented in os::driver::usart_wrapper.

Referenced by get_tx_count().

◆ do_get_version()

virtual const Version & os::driver::Base::do_get_version ( void  )
protectedpure virtualnoexceptinherited

◆ do_power()

virtual return_t os::driver::Base::do_power ( Power  state)
protectedpure virtualnoexceptinherited

◆ do_receive()

virtual return_t os::driver::Serial::do_receive ( void *  data,
std::size_t  num 
)
protectedpure virtualnoexcept

Implemented in os::driver::usart_wrapper.

◆ do_send()

virtual return_t os::driver::Serial::do_send ( const void *  data,
std::size_t  num 
)
protectedpure virtualnoexcept

Implemented in os::driver::usart_wrapper.

◆ do_transfer()

virtual return_t os::driver::Serial::do_transfer ( const void *  data_out,
void *  data_in,
std::size_t  num 
)
protectedpure virtualnoexcept

Implemented in os::driver::usart_wrapper.

◆ get_capabilities()

const serial::Capabilities & os::driver::Serial::get_capabilities ( void  )
inlinenoexcept
Returns
Capabilities.

Definition at line 819 of file serial.h.

820 {
821 return do_get_capabilities ();
822 }
virtual const serial::Capabilities & do_get_capabilities(void) noexcept=0

References do_get_capabilities().

◆ get_modem_status()

serial::Modem_status & os::driver::Serial::get_modem_status ( void  )
inlinenoexcept
Returns
Modem status.

Definition at line 861 of file serial.h.

862 {
863 return do_get_modem_status ();
864 }
virtual serial::Modem_status & do_get_modem_status(void) noexcept=0

References do_get_modem_status().

◆ get_rx_count()

std::size_t os::driver::Serial::get_rx_count ( void  )
inlinenoexcept
Returns
number of bytes received

Definition at line 831 of file serial.h.

832 {
833 return do_get_rx_count ();
834 }
virtual std::size_t do_get_rx_count(void) noexcept=0

References do_get_rx_count().

◆ get_status()

serial::Status & os::driver::Serial::get_status ( void  )
inlinenoexcept
Returns
Serial status.

Definition at line 849 of file serial.h.

850 {
851 return do_get_status ();
852 }
virtual serial::Status & do_get_status(void) noexcept=0

References do_get_status().

◆ get_tx_count()

std::size_t os::driver::Serial::get_tx_count ( void  )
inlinenoexcept
Returns
number of bytes transmitted

Definition at line 825 of file serial.h.

826 {
827 return do_get_tx_count ();
828 }
virtual std::size_t do_get_tx_count(void) noexcept=0

References do_get_tx_count().

◆ get_version()

const Version & os::driver::Base::get_version ( void  )
inlinenoexceptinherited
Returns
Version.

Definition at line 185 of file common.h.

186 {
187 return do_get_version ();
188 }
virtual const Version & do_get_version(void) noexcept=0

◆ operator=() [1/2]

Serial & os::driver::Serial::operator= ( const Serial )
delete

◆ operator=() [2/2]

Serial & os::driver::Serial::operator= ( Serial &&  )
delete

◆ power()

return_t os::driver::Base::power ( Power  state)
inlinenoexceptinherited
Parameters
[in]statePower state
Returns
Execution status

Definition at line 191 of file common.h.

192 {
193 return do_power (state);
194 }
virtual return_t do_power(Power state) noexcept=0

◆ receive()

return_t os::driver::Serial::receive ( void *  data,
std::size_t  num 
)
noexcept
Parameters
[out]dataPointer to buffer for data to receive from USART receiver
[in]numNumber of data items to receive
Returns
Execution status

Definition at line 93 of file serial.cpp.

94 {
95 assert (data != nullptr);
96 if (num == 0)
97 {
98 return RETURN_OK;
99 }
100 return do_receive (data, num);
101 }
virtual return_t do_receive(void *data, std::size_t num) noexcept=0
constexpr return_t RETURN_OK
Definition common.h:52

References os::driver::RETURN_OK.

◆ register_callback()

void os::driver::Serial::register_callback ( signal_event_t  cb_func,
const void *  cb_object = nullptr 
)
noexcept
Parameters
[in]cb_funcPointer to function.
[in]cb_objectPointer to object passed to function.
Returns
Nothing.

Definition at line 74 of file serial.cpp.

76 {
77 cb_func_ = cb_func;
78 cb_object_ = cb_object;
79 }

◆ send()

return_t os::driver::Serial::send ( const void *  data,
std::size_t  num 
)
noexcept
Parameters
[in]dataPointer to buffer with data to send to USART transmitter.
[in]numNumber of data items to send.
Returns
Execution status

Definition at line 82 of file serial.cpp.

83 {
84 assert (data != nullptr);
85 if (num == 0)
86 {
87 return RETURN_OK;
88 }
89 return do_send (data, num);
90 }
virtual return_t do_send(const void *data, std::size_t num) noexcept=0

References os::driver::RETURN_OK.

◆ signal_event()

void os::driver::Serial::signal_event ( event_t  event)
inlinenoexcept
Parameters
[in]eventEvent notification mask.
Returns
Nothing.

Definition at line 867 of file serial.h.

868 {
869 if (cb_func_ != nullptr)
870 {
871 // Forward event to registered callback.
872 cb_func_ (cb_object_, event);
873 }
874 }

References cb_func_, and cb_object_.

◆ transfer()

return_t os::driver::Serial::transfer ( const void *  data_out,
void *  data_in,
std::size_t  num 
)
noexcept
Parameters
[in]data_outPointer to buffer with data to send
[out]data_inPointer to buffer for data to receive
[in]numNumber of bytes to transfer
Returns
Execution status

Definition at line 104 of file serial.cpp.

106 {
107 assert (data_out != nullptr);
108 assert (data_in != nullptr);
109 if (num == 0)
110 {
111 return RETURN_OK;
112 }
113 return do_transfer (data_out, data_in, num);
114 }
virtual return_t do_transfer(const void *data_out, void *data_in, std::size_t num) noexcept=0

References os::driver::RETURN_OK.

Member Data Documentation

◆ cb_func_

signal_event_t os::driver::Serial::cb_func_
protected

Definition at line 729 of file serial.h.

Referenced by Serial(), and signal_event().

◆ cb_object_

const void* os::driver::Serial::cb_object_
protected

Definition at line 732 of file serial.h.

Referenced by Serial(), and signal_event().

◆ modem_status_

serial::Modem_status os::driver::Serial::modem_status_
protected

Definition at line 735 of file serial.h.

◆ status_

serial::Status os::driver::Serial::status_
protected

Definition at line 734 of file serial.h.


The documentation for this class was generated from the following files: