16#include "pw_clock_tree/clock_tree.h"
17#include "pw_digital_io/digital_io.h"
18#include "pw_thread/sleep.h"
34 pw::chrono::SystemClock::duration::zero(),
36 pw::chrono::SystemClock::duration::zero())
37 : enable_line_(&enable_line),
38 activation_delay_(activation_delay),
39 deactivation_delay_(deactivation_delay) {}
42 pw::chrono::SystemClock::duration::zero(),
44 pw::chrono::SystemClock::duration::zero())
45 : activation_delay_(activation_delay),
46 deactivation_delay_(deactivation_delay) {}
49 enable_line_ = &enable_line;
59 if (enable_line_ ==
nullptr) {
63 if (activation_delay_ > pw::chrono::SystemClock::duration::zero()) {
64 pw::this_thread::sleep_for(activation_delay_);
71 if (enable_line_ ==
nullptr) {
75 if (deactivation_delay_ > pw::chrono::SystemClock::duration::zero()) {
76 pw::this_thread::sleep_for(deactivation_delay_);
static constexpr Status FailedPrecondition()
Definition: status.h:243
Definition: clock_tree.h:241
Class that represents an external clock source enabled by a GPIO line.
Definition: external_source.h:26
Definition: digital_io.h:485
Status SetStateInactive()
Definition: digital_io.h:151
Status SetStateActive()
Definition: digital_io.h:136
std::chrono::duration< rep, period > duration
Alias for durations representable with this clock.
Definition: system_clock.h:90
Status DoEnable() final
Activate external clock source.
Definition: external_source.h:58
Status DoDisable() final
Deactivate external clock source.
Definition: external_source.h:70
constexpr ExternalClockSource(pw::digital_io::DigitalOut &enable_line, pw::chrono::SystemClock::duration activation_delay=pw::chrono::SystemClock::duration::zero(), pw::chrono::SystemClock::duration deactivation_delay=pw::chrono::SystemClock::duration::zero())
Definition: external_source.h:31
#define PW_TRY(expr)
Returns early if expr is a non-OK Status or Result.
Definition: try.h:27
constexpr Status OkStatus()
Definition: status.h:450
Clock tree management library.
Definition: clock_tree.h:30