12 #include "sw/device/lib/testing/aon_timer_testutils.h"
13 #include "sw/device/lib/testing/pwrmgr_testutils.h"
14 #include "sw/device/lib/testing/rstmgr_testutils.h"
15 #include "sw/device/lib/testing/test_framework/check.h"
40 OTTF_DEFINE_TEST_CONFIG();
42 static const dt_pwrmgr_t kPwrmgrDt = 0;
43 static_assert(kDtPwrmgrCount == 1,
"this test expects a pwrmgr");
44 static const dt_pinmux_t kPinmuxDt = 0;
45 static_assert(kDtPinmuxCount == 1,
"this test expects a pinmux");
46 static const dt_rstmgr_t kRstmgrDt = 0;
47 static_assert(kDtRstmgrCount == 1,
"this test expects a rstmgr");
48 static const dt_aon_timer_t kAonTimerDt = 0;
49 static_assert(kDtAonTimerCount == 1,
"this test expects an aon_timer");
50 static const dt_pwm_t kPwmDt = 0;
51 static_assert(kDtPwmCount == 1,
"this test expects a pwm");
66 kDifPwmChannel0, kDifPwmChannel1, kDifPwmChannel2,
67 kDifPwmChannel3, kDifPwmChannel4, kDifPwmChannel5,
75 static volatile const uint16_t kPwmDutycycle[PWM_PARAM_N_OUTPUTS] = {
85 .beats_per_pulse_cycle = 32,
95 .blink_parameter_x = 0,
96 .blink_parameter_y = 0,
101 void config_pwm_channels(dif_pwm_t *pwm) {
104 for (
int i = 0; i < PWM_PARAM_N_OUTPUTS; ++i) {
128 uint64_t wakeup_threshold = 30;
130 wakeup_threshold = 300;
134 CHECK_DIF_OK(dif_pwrmgr_init_from_dt(kPwrmgrDt, &pwrmgr));
139 kDtAonTimerWakeupWkupReq, &wakeup_sources));
142 CHECK_DIF_OK(dif_rstmgr_init_from_dt(kRstmgrDt, &rstmgr));
144 dif_aon_timer_t aon_timer;
145 CHECK_DIF_OK(dif_aon_timer_init_from_dt(kAonTimerDt, &aon_timer));
151 if (UNWRAP(pwrmgr_testutils_is_wakeup_reason(&pwrmgr, 0)) ==
true) {
155 CHECK_DIF_OK(dif_pwm_init_from_dt(kPwmDt, &pwm));
161 config_pwm_channels(&pwm);
170 CHECK_DIF_OK(dif_pinmux_init_from_dt(kPinmuxDt, &pinmux));
173 for (
int i = 0; i < PWM_PARAM_N_OUTPUTS; ++i) {
187 CHECK_STATUS_OK(rstmgr_testutils_pre_reset(&rstmgr));
190 aon_timer_testutils_wakeup_config(&aon_timer, wakeup_threshold));
193 pwrmgr_testutils_enable_low_power(&pwrmgr, wakeup_sources, 0));
196 LOG_INFO(
"Issue WFI to enter sleep");
199 }
else if (UNWRAP(pwrmgr_testutils_is_wakeup_reason(
200 &pwrmgr, wakeup_sources)) ==
true) {
203 CHECK(UNWRAP(rstmgr_testutils_is_reset_info(
205 LOG_INFO(
"Aon timer wakeup detected");
206 CHECK_STATUS_OK(rstmgr_testutils_post_reset(
216 LOG_ERROR(
"Unexpected wakeup detected: type = %d, request_source = %d",