HF Interface Wrapper 0.1.0-dev
Embedded C++ hardware abstraction layer
Loading...
Searching...
No Matches
EspPeriodicTimer Class Reference

MCU-integrated periodic timer implementation. More...

#include <EspPeriodicTimer.h>

Inheritance diagram for EspPeriodicTimer:
[legend]
Collaboration diagram for EspPeriodicTimer:
[legend]

Public Member Functions

 EspPeriodicTimer (hf_timer_callback_t callback=nullptr, void *user_data=nullptr) noexcept
 Constructor with callback specification.
 
 ~EspPeriodicTimer () noexcept override
 Destructor - ensures timer is stopped and resources are freed.
 
 EspPeriodicTimer (const EspPeriodicTimer &)=delete
 
EspPeriodicTimeroperator= (const EspPeriodicTimer &)=delete
 
 EspPeriodicTimer (EspPeriodicTimer &&)=delete
 
EspPeriodicTimeroperator= (EspPeriodicTimer &&)=delete
 
hf_timer_err_t Initialize () noexcept override
 Initialize the timer.
 
hf_timer_err_t Deinitialize () noexcept override
 Deinitialize the timer and free resources.
 
hf_timer_err_t Start (hf_u64_t period_us) noexcept override
 Start the timer with specified period.
 
hf_timer_err_t Stop () noexcept override
 Stop the timer.
 
hf_timer_err_t SetPeriod (hf_u64_t new_period_us) noexcept override
 Change timer period (timer can be running or stopped).
 
hf_timer_err_t GetPeriod (hf_u64_t &period_us) noexcept override
 Get current timer period.
 
hf_timer_err_t GetStats (hf_u64_t &callback_count, hf_u64_t &missed_callbacks, hf_timer_err_t &last_error) noexcept override
 Get timer statistics and status information.
 
hf_timer_err_t ResetStats () noexcept override
 Reset timer statistics.
 
const char * GetDescription () const noexcept override
 Get description of this timer implementation.
 
hf_u64_t GetMinPeriod () const noexcept override
 Get minimum supported timer period.
 
hf_u64_t GetMaxPeriod () const noexcept override
 Get maximum supported timer period.
 
hf_u64_t GetResolution () const noexcept override
 Get timer resolution.
 
hf_timer_err_t GetStatistics (hf_timer_statistics_t &statistics) const noexcept override
 Get timer operation statistics.
 
hf_timer_err_t GetDiagnostics (hf_timer_diagnostics_t &diagnostics) const noexcept override
 Get timer diagnostic information.
 
- Public Member Functions inherited from BasePeriodicTimer
virtual ~BasePeriodicTimer () noexcept=default
 Virtual destructor to ensure proper cleanup.
 
 BasePeriodicTimer (const BasePeriodicTimer &)=delete
 
BasePeriodicTimeroperator= (const BasePeriodicTimer &)=delete
 
bool IsInitialized () const noexcept
 Check if timer is initialized.
 
bool IsRunning () const noexcept
 Check if timer is currently running.
 
hf_timer_err_t SetCallback (hf_timer_callback_t callback, void *user_data=nullptr) noexcept
 Set new callback function.
 
void * GetUserData () const noexcept
 Get current user data pointer.
 
virtual hf_timer_err_t ResetStatistics () noexcept
 Reset timer operation statistics.
 
virtual hf_timer_err_t ResetDiagnostics () noexcept
 Reset timer diagnostic information.
 

Private Member Functions

hf_timer_err_t ConvertError (int platform_error) const noexcept
 Convert platform-specific error to hf_timer_err_t.
 
bool ValidatePeriod (hf_u64_t period_us) const noexcept
 Validate timer period.
 
bool CreateTimerHandle () noexcept
 Create platform-specific timer handle.
 
void DestroyTimerHandle () noexcept
 Destroy platform-specific timer handle.
 

Static Private Member Functions

static void InternalTimerCallback (void *arg)
 Internal timer callback dispatcher (ISR-safe C bridge).
 

Private Attributes

hf_timer_handle_t timer_handle_
 Platform-specific timer handle.
 
hf_u64_t period_us_
 Current timer period in microseconds.
 
hf_timer_stats_t stats_
 Timer statistics.
 

Additional Inherited Members

- Protected Member Functions inherited from BasePeriodicTimer
 BasePeriodicTimer (hf_timer_callback_t callback, void *user_data=nullptr) noexcept
 Protected constructor with callback specification.
 
void SetInitialized (bool initialized) noexcept
 Set the initialized state.
 
void SetRunning (bool running) noexcept
 Set the running state.
 
void ExecuteCallback () noexcept
 Execute the timer callback (called by implementations).
 
bool HasValidCallback () const noexcept
 Check if callback is valid.
 
- Protected Attributes inherited from BasePeriodicTimer
hf_timer_callback_t callback_
 Timer callback function.
 
void * user_data_
 User data passed to callback.
 
bool initialized_
 Initialization state flag.
 
bool running_
 Running state flag.
 
hf_timer_statistics_t statistics_
 Timer operation statistics.
 
hf_timer_diagnostics_t diagnostics_
 Timer diagnostic information.
 

Detailed Description

MCU-integrated periodic timer implementation.

This class provides periodic timer functionality using the microcontroller's built-in timer peripherals. On ESP32, it uses the ESP timer API. The implementation handles platform-specific details while providing the unified BasePeriodicTimer API.

Features:

  • High-precision periodic timing using MCU's integrated timers
  • Microsecond resolution timing
  • Callback-based event notification
  • Start/stop control with period adjustment
  • Comprehensive error handling and status reporting
  • Lazy initialization support
Note
This implementation uses hardware timers for precise timing

Constructor & Destructor Documentation

◆ EspPeriodicTimer() [1/3]

EspPeriodicTimer::EspPeriodicTimer ( hf_timer_callback_t callback = nullptr,
void * user_data = nullptr )
noexcept

Constructor with callback specification.

Parameters
callbackCallback function to be called on timer expiry
user_dataUser data passed to callback function

◆ ~EspPeriodicTimer()

EspPeriodicTimer::~EspPeriodicTimer ( )
overridenoexcept

Destructor - ensures timer is stopped and resources are freed.

◆ EspPeriodicTimer() [2/3]

EspPeriodicTimer::EspPeriodicTimer ( const EspPeriodicTimer & )
delete

◆ EspPeriodicTimer() [3/3]

EspPeriodicTimer::EspPeriodicTimer ( EspPeriodicTimer && )
delete

Member Function Documentation

◆ ConvertError()

hf_timer_err_t EspPeriodicTimer::ConvertError ( int platform_error) const
privatenoexcept

Convert platform-specific error to hf_timer_err_t.

Parameters
platform_errorPlatform-specific error code
Returns
Corresponding hf_timer_err_t

◆ CreateTimerHandle()

bool EspPeriodicTimer::CreateTimerHandle ( )
privatenoexcept

Create platform-specific timer handle.

Returns
Success if handle created successfully

◆ Deinitialize()

hf_timer_err_t EspPeriodicTimer::Deinitialize ( )
overridevirtualnoexcept

Deinitialize the timer and free resources.

Returns
Success or specific error code

Implements BasePeriodicTimer.

◆ DestroyTimerHandle()

void EspPeriodicTimer::DestroyTimerHandle ( )
privatenoexcept

Destroy platform-specific timer handle.

◆ GetDescription()

const char * EspPeriodicTimer::GetDescription ( ) const
overridevirtualnoexcept

Get description of this timer implementation.

Returns
Description string

Implements BasePeriodicTimer.

◆ GetDiagnostics()

hf_timer_err_t EspPeriodicTimer::GetDiagnostics ( hf_timer_diagnostics_t & diagnostics) const
overridevirtualnoexcept

Get timer diagnostic information.

Parameters
diagnosticsReference to diagnostics structure to fill
Returns
hf_timer_err_t::TIMER_SUCCESS if successful, error code otherwise

Reimplemented from BasePeriodicTimer.

◆ GetMaxPeriod()

hf_u64_t EspPeriodicTimer::GetMaxPeriod ( ) const
overridevirtualnoexcept

Get maximum supported timer period.

Returns
Maximum period in microseconds

Implements BasePeriodicTimer.

◆ GetMinPeriod()

hf_u64_t EspPeriodicTimer::GetMinPeriod ( ) const
overridevirtualnoexcept

Get minimum supported timer period.

Returns
Minimum period in microseconds

Implements BasePeriodicTimer.

◆ GetPeriod()

hf_timer_err_t EspPeriodicTimer::GetPeriod ( hf_u64_t & period_us)
overridevirtualnoexcept

Get current timer period.

Parameters
period_usReference to store current period
Returns
Success or specific error code

Implements BasePeriodicTimer.

◆ GetResolution()

hf_u64_t EspPeriodicTimer::GetResolution ( ) const
overridevirtualnoexcept

Get timer resolution.

Returns
Timer resolution in microseconds

Implements BasePeriodicTimer.

◆ GetStatistics()

hf_timer_err_t EspPeriodicTimer::GetStatistics ( hf_timer_statistics_t & statistics) const
overridevirtualnoexcept

Get timer operation statistics.

Parameters
statisticsReference to statistics structure to fill
Returns
hf_timer_err_t::TIMER_SUCCESS if successful, error code otherwise

Reimplemented from BasePeriodicTimer.

◆ GetStats()

hf_timer_err_t EspPeriodicTimer::GetStats ( hf_u64_t & callback_count,
hf_u64_t & missed_callbacks,
hf_timer_err_t & last_error )
overridevirtualnoexcept

Get timer statistics and status information.

Parameters
callback_countNumber of callbacks executed
missed_callbacksNumber of missed callbacks (if supported)
last_errorLast error that occurred
Returns
Success or specific error code

Implements BasePeriodicTimer.

◆ Initialize()

hf_timer_err_t EspPeriodicTimer::Initialize ( )
overridevirtualnoexcept

Initialize the timer.

Returns
Success or specific error code

Implements BasePeriodicTimer.

◆ InternalTimerCallback()

void EspPeriodicTimer::InternalTimerCallback ( void * arg)
staticprivate

Internal timer callback dispatcher (ISR-safe C bridge).

Parameters
argUser data (pointer to EspPeriodicTimer instance)
Note
This is the C callback that bridges to C++ class methods

◆ operator=() [1/2]

EspPeriodicTimer & EspPeriodicTimer::operator= ( const EspPeriodicTimer & )
delete

◆ operator=() [2/2]

EspPeriodicTimer & EspPeriodicTimer::operator= ( EspPeriodicTimer && )
delete

◆ ResetStats()

hf_timer_err_t EspPeriodicTimer::ResetStats ( )
overridevirtualnoexcept

Reset timer statistics.

Returns
Success or specific error code

Implements BasePeriodicTimer.

◆ SetPeriod()

hf_timer_err_t EspPeriodicTimer::SetPeriod ( hf_u64_t new_period_us)
overridevirtualnoexcept

Change timer period (timer can be running or stopped).

Parameters
new_period_usNew period in microseconds
Returns
Success or specific error code

Implements BasePeriodicTimer.

◆ Start()

hf_timer_err_t EspPeriodicTimer::Start ( hf_u64_t period_us)
overridevirtualnoexcept

Start the timer with specified period.

Parameters
period_usTimer period in microseconds
Returns
Success or specific error code

Implements BasePeriodicTimer.

◆ Stop()

hf_timer_err_t EspPeriodicTimer::Stop ( )
overridevirtualnoexcept

Stop the timer.

Returns
Success or specific error code

Implements BasePeriodicTimer.

◆ ValidatePeriod()

bool EspPeriodicTimer::ValidatePeriod ( hf_u64_t period_us) const
privatenoexcept

Validate timer period.

Parameters
period_usPeriod to validate in microseconds
Returns
True if valid, false otherwise

Member Data Documentation

◆ period_us_

hf_u64_t EspPeriodicTimer::period_us_
private

Current timer period in microseconds.

◆ stats_

hf_timer_stats_t EspPeriodicTimer::stats_
private

Timer statistics.

◆ timer_handle_

hf_timer_handle_t EspPeriodicTimer::timer_handle_
private

Platform-specific timer handle.


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