Abstract class template of a clock divider element.
A ClockDivider clock tree element depends on another clock tree element and has a divider value that gets configured when the clock divider gets enabled.
Class implementations of ClockDivider must override the DoEnable function.
Template argument ElementType can be of class ElementBlocking, ElementNonBlockingCannotFail or ElementNonBlockingMightFail.
Public Member Functions | |
| constexpr | ClockDividerElement (ElementType &source, uint32_t divider) |
| template<typename T = ElementType> | |
| std::enable_if_t< T::kMayFail, pw::Status > | SetDivider (uint32_t divider) |
| template<typename T = ElementType> | |
| std::enable_if_t<!T::kMayFail, void > | SetDivider (uint32_t divider) |
Public Member Functions inherited from pw::clock_tree::DependentElement< ElementType > | |
| constexpr | DependentElement (ElementType &source) |
Create a dependent clock tree element that depends on source. | |
Public Member Functions inherited from pw::clock_tree::ClockDivider | |
| constexpr | ClockDivider (Element &element) |
| Status | SetDivider (uint32_t divider) |
| Status | Set (uint32_t divider) |
| Element & | element () const |
| Return the element implementing this interface. | |
Protected Member Functions | |
| uint32_t | divider () const |
| Get current divider value. | |
|
inline |
Set divider value.
The divider value will get updated as part of this method if the clock divider is currently active, otherwise the new divider value will be configured when the clock divider gets enabled next.