µ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::usart_wrapper Class Reference

#include <usart-wrapper.h>

+ Inheritance diagram for os::driver::usart_wrapper:

Public Member Functions

 usart_wrapper (ARM_DRIVER_USART *driver, ARM_USART_SignalEvent_t c_cb_func) noexcept
 
 usart_wrapper (const usart_wrapper &)=delete
 
 usart_wrapper (usart_wrapper &&)=delete
 
virtual ~usart_wrapper () 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.
 
usart_wrapperoperator= (const usart_wrapper &)=delete
 
usart_wrapperoperator= (usart_wrapper &&)=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 ctrl, serial::config_arg_t arg) noexcept override
 
virtual return_t do_control (serial::control_t ctrl) noexcept override
 
virtual return_t do_control_modem_line (serial::Modem_control ctrl) noexcept override
 
virtual const serial::Capabilitiesdo_get_capabilities (void) noexcept override
 
virtual serial::Modem_statusdo_get_modem_status (void) noexcept override
 
virtual std::size_t do_get_rx_count (void) noexcept override
 
virtual serial::Statusdo_get_status (void) noexcept override
 
virtual std::size_t do_get_tx_count (void) noexcept override
 
virtual const Versiondo_get_version (void) noexcept override
 
virtual return_t do_power (Power state) noexcept override
 
virtual return_t do_receive (void *data, std::size_t num) noexcept override
 
virtual return_t do_send (const void *data, std::size_t num) noexcept override
 
virtual return_t do_transfer (const void *data_out, void *data_in, std::size_t num) noexcept override
 

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_
 

Private Attributes

ARM_USART_SignalEvent_t c_cb_func_
 
serial::Capabilities capa_
 
ARM_DRIVER_USARTdriver_
 Pointer to CMSIS USART Keil driver.
 
Version version_ { 0, 0 }
 

Detailed Description

Definition at line 50 of file usart-wrapper.h.

Constructor & Destructor Documentation

◆ usart_wrapper() [1/3]

os::driver::usart_wrapper::usart_wrapper ( ARM_DRIVER_USART driver,
ARM_USART_SignalEvent_t  c_cb_func 
)
noexcept

Definition at line 27 of file usart-wrapper.cpp.

29 : driver_ (driver), c_cb_func_ (c_cb_func)
30 {
31 trace::printf ("%s() %p\n", __func__, this);
32 }
ARM_USART_SignalEvent_t c_cb_func_
ARM_DRIVER_USART * driver_
Pointer to CMSIS USART Keil driver.
int printf(const char *format,...)
Write a formatted string to the trace device.
Definition trace.cpp:59

References os::trace::printf().

◆ usart_wrapper() [2/3]

os::driver::usart_wrapper::usart_wrapper ( const usart_wrapper )
delete

◆ usart_wrapper() [3/3]

os::driver::usart_wrapper::usart_wrapper ( usart_wrapper &&  )
delete

◆ ~usart_wrapper()

os::driver::usart_wrapper::~usart_wrapper ( )
overridevirtualnoexcept

Definition at line 34 of file usart-wrapper.cpp.

35 {
36 trace::printf ("%s() %p\n", __func__, this);
37
38 driver_ = nullptr;
39 }

References driver_, and os::trace::printf().

Member Function Documentation

◆ clean()

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

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 os::driver::Serial::Serial().

◆ configure()

return_t os::driver::Serial::configure ( serial::config_t  cfg,
serial::config_arg_t  arg 
)
inlinenoexceptinherited
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 os::driver::Serial::do_configure().

◆ control()

return_t os::driver::Serial::control ( serial::control_t  ctrl)
inlinenoexceptinherited
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 os::driver::Serial::do_control().

◆ control_modem_line()

return_t os::driver::Serial::control_modem_line ( serial::Modem_control  ctrl)
inlinenoexceptinherited
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 os::driver::Serial::do_control_modem_line().

◆ do_configure()

return_t os::driver::usart_wrapper::do_configure ( serial::config_t  ctrl,
serial::config_arg_t  arg 
)
overrideprotectedvirtualnoexcept

Implements os::driver::Serial.

Definition at line 145 of file usart-wrapper.cpp.

147 {
148 return driver_->Control (cfg, arg);
149 }

◆ do_control()

return_t os::driver::usart_wrapper::do_control ( serial::control_t  ctrl)
overrideprotectedvirtualnoexcept

Implements os::driver::Serial.

Definition at line 152 of file usart-wrapper.cpp.

153 {
154 switch (ctrl)
155 {
159 return driver_->Control (
160 ctrl
162 0);
163 }
164 return driver_->Control (ctrl, 1);
165 }
@ disable_break
Disable Continuous Break transmission;.
Definition serial.h:215
@ disable_tx
Disable Transmitter.
Definition serial.h:209
@ enable_tx
Enable Transmitter.
Definition serial.h:191
@ disable_rx
Disable Receiver.
Definition serial.h:212

References os::driver::serial::disable_break, os::driver::serial::disable_rx, os::driver::serial::disable_tx, and os::driver::serial::enable_tx.

◆ do_control_modem_line()

return_t os::driver::usart_wrapper::do_control_modem_line ( serial::Modem_control  ctrl)
overrideprotectedvirtualnoexcept

Implements os::driver::Serial.

Definition at line 168 of file usart-wrapper.cpp.

169 {
170 return driver_->SetModemControl (
171 static_cast<ARM_USART_MODEM_CONTROL> (ctrl));
172 }

◆ do_get_capabilities()

const serial::Capabilities & os::driver::usart_wrapper::do_get_capabilities ( void  )
overrideprotectedvirtualnoexcept

Implements os::driver::Serial.

Definition at line 60 of file usart-wrapper.cpp.

61 {
62 // Overwrite the C++ instance. Assume same layout.
63 *(reinterpret_cast<ARM_USART_CAPABILITIES*> (&capa_))
64 = driver_->GetCapabilities ();
65 return capa_;
66 }
serial::Capabilities capa_

◆ do_get_modem_status()

serial::Modem_status & os::driver::usart_wrapper::do_get_modem_status ( void  )
overrideprotectedvirtualnoexcept

Implements os::driver::Serial.

Definition at line 78 of file usart-wrapper.cpp.

79 {
80 // Overwrite the C++ instance. Assume same layout.
81 *(reinterpret_cast<ARM_USART_MODEM_STATUS*> (&modem_status_))
82 = driver_->GetModemStatus ();
83 return modem_status_;
84 }

◆ do_get_rx_count()

std::size_t os::driver::usart_wrapper::do_get_rx_count ( void  )
overrideprotectedvirtualnoexcept

Implements os::driver::Serial.

Definition at line 139 of file usart-wrapper.cpp.

140 {
141 return driver_->GetRxCount ();
142 }

◆ do_get_status()

serial::Status & os::driver::usart_wrapper::do_get_status ( void  )
overrideprotectedvirtualnoexcept

Implements os::driver::Serial.

Definition at line 69 of file usart-wrapper.cpp.

70 {
71 // Overwrite the C++ instance. Assume same layout.
72 *(reinterpret_cast<ARM_USART_STATUS*> (&status_))
73 = driver_->GetStatus ();
74 return status_;
75 }

◆ do_get_tx_count()

std::size_t os::driver::usart_wrapper::do_get_tx_count ( void  )
overrideprotectedvirtualnoexcept

Implements os::driver::Serial.

Definition at line 133 of file usart-wrapper.cpp.

134 {
135 return driver_->GetTxCount ();
136 }

◆ do_get_version()

const Version & os::driver::usart_wrapper::do_get_version ( void  )
overrideprotectedvirtualnoexcept

Implements os::driver::Base.

Definition at line 51 of file usart-wrapper.cpp.

52 {
53 // Overwrite the C++ instance. Assume same layout.
54 *(reinterpret_cast<ARM_DRIVER_VERSION*> (&version_))
55 = driver_->GetVersion ();
56 return version_;
57 }

◆ do_power()

return_t os::driver::usart_wrapper::do_power ( Power  state)
overrideprotectedvirtualnoexcept

Implements os::driver::Base.

Definition at line 89 of file usart-wrapper.cpp.

90 {
91 return_t status;
92
93 if (state == Power::full)
94 {
95 status = driver_->Initialize (c_cb_func_);
96 if (status != ARM_DRIVER_OK)
97 {
98 return status;
99 }
100 }
101
102 status = driver_->PowerControl (static_cast<ARM_POWER_STATE> (state));
103
104 if (state == Power::off)
105 {
106 driver_->Uninitialize ();
107 }
108
109 return status;
110 }
int32_t return_t
Definition common.h:46

References os::driver::full, and os::driver::off.

◆ do_receive()

return_t os::driver::usart_wrapper::do_receive ( void *  data,
std::size_t  num 
)
overrideprotectedvirtualnoexcept

Implements os::driver::Serial.

Definition at line 119 of file usart-wrapper.cpp.

120 {
121 return driver_->Receive (data, static_cast<uint32_t> (num));
122 }

◆ do_send()

return_t os::driver::usart_wrapper::do_send ( const void *  data,
std::size_t  num 
)
overrideprotectedvirtualnoexcept

Implements os::driver::Serial.

Definition at line 113 of file usart-wrapper.cpp.

114 {
115 return driver_->Send (data, static_cast<uint32_t> (num));
116 }

◆ do_transfer()

return_t os::driver::usart_wrapper::do_transfer ( const void *  data_out,
void *  data_in,
std::size_t  num 
)
overrideprotectedvirtualnoexcept

Implements os::driver::Serial.

Definition at line 125 of file usart-wrapper.cpp.

127 {
128 return driver_->Transfer (data_out, data_in,
129 static_cast<uint32_t> (num));
130 }

◆ get_capabilities()

const serial::Capabilities & os::driver::Serial::get_capabilities ( void  )
inlinenoexceptinherited
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 os::driver::Serial::do_get_capabilities().

◆ get_modem_status()

serial::Modem_status & os::driver::Serial::get_modem_status ( void  )
inlinenoexceptinherited
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 os::driver::Serial::do_get_modem_status().

◆ get_rx_count()

std::size_t os::driver::Serial::get_rx_count ( void  )
inlinenoexceptinherited
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 os::driver::Serial::do_get_rx_count().

◆ get_status()

serial::Status & os::driver::Serial::get_status ( void  )
inlinenoexceptinherited
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 os::driver::Serial::do_get_status().

◆ get_tx_count()

std::size_t os::driver::Serial::get_tx_count ( void  )
inlinenoexceptinherited
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 os::driver::Serial::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]

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

◆ operator=() [2/2]

usart_wrapper & os::driver::usart_wrapper::operator= ( usart_wrapper &&  )
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 
)
noexceptinherited
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 
)
noexceptinherited
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 }
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

◆ send()

return_t os::driver::Serial::send ( const void *  data,
std::size_t  num 
)
noexceptinherited
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)
inlinenoexceptinherited
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 os::driver::Serial::cb_func_, and os::driver::Serial::cb_object_.

◆ transfer()

return_t os::driver::Serial::transfer ( const void *  data_out,
void *  data_in,
std::size_t  num 
)
noexceptinherited
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

◆ c_cb_func_

ARM_USART_SignalEvent_t os::driver::usart_wrapper::c_cb_func_
private

Pointer to non-reentrant callback. Must be stored because Initialize() is now delayed just before PowerControl(FULL).

Definition at line 124 of file usart-wrapper.h.

◆ capa_

serial::Capabilities os::driver::usart_wrapper::capa_
private

Definition at line 134 of file usart-wrapper.h.

◆ cb_func_

signal_event_t os::driver::Serial::cb_func_
protectedinherited

Definition at line 729 of file serial.h.

Referenced by os::driver::Serial::Serial(), and os::driver::Serial::signal_event().

◆ cb_object_

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

Definition at line 732 of file serial.h.

Referenced by os::driver::Serial::Serial(), and os::driver::Serial::signal_event().

◆ driver_

ARM_DRIVER_USART* os::driver::usart_wrapper::driver_
private

Definition at line 120 of file usart-wrapper.h.

Referenced by ~usart_wrapper().

◆ modem_status_

serial::Modem_status os::driver::Serial::modem_status_
protectedinherited

Definition at line 735 of file serial.h.

◆ status_

serial::Status os::driver::Serial::status_
protectedinherited

Definition at line 734 of file serial.h.

◆ version_

Version os::driver::usart_wrapper::version_ { 0, 0 }
private

Definition at line 133 of file usart-wrapper.h.


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