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();
55 kDifPwmChannel0, kDifPwmChannel1, kDifPwmChannel2,
56 kDifPwmChannel3, kDifPwmChannel4, kDifPwmChannel5,
64 static volatile const uint16_t kPwmDutycycle[PWM_PARAM_N_OUTPUTS] = {
74 .beats_per_pulse_cycle = 32,
84 .blink_parameter_x = 0,
85 .blink_parameter_y = 0,
90 void config_pwm_channels(dif_pwm_t *pwm) {
93 for (
int i = 0; i < PWM_PARAM_N_OUTPUTS; ++i) {
117 uint64_t wakeup_threshold = 30;
119 wakeup_threshold = 300;
123 CHECK_DIF_OK(dif_pwrmgr_init(
127 CHECK_DIF_OK(dif_rstmgr_init(
130 dif_aon_timer_t aon_timer;
131 CHECK_DIF_OK(dif_aon_timer_init(
138 if (UNWRAP(pwrmgr_testutils_is_wakeup_reason(&pwrmgr, 0)) ==
true) {
142 CHECK_DIF_OK(dif_pwm_init(
149 config_pwm_channels(&pwm);
158 CHECK_DIF_OK(dif_pinmux_init(
162 for (
int i = 0; i < PWM_PARAM_N_OUTPUTS; ++i) {
176 CHECK_STATUS_OK(rstmgr_testutils_pre_reset(&rstmgr));
179 aon_timer_testutils_wakeup_config(&aon_timer, wakeup_threshold));
181 CHECK_STATUS_OK(pwrmgr_testutils_enable_low_power(
182 &pwrmgr, kDifPwrmgrWakeupRequestSourceFive, 0));
185 LOG_INFO(
"Issue WFI to enter sleep");
188 }
else if (UNWRAP(pwrmgr_testutils_is_wakeup_reason(
189 &pwrmgr, kDifPwrmgrWakeupRequestSourceFive)) ==
true) {
192 CHECK(UNWRAP(rstmgr_testutils_is_reset_info(
194 LOG_INFO(
"Aon timer wakeup detected");
195 CHECK_STATUS_OK(rstmgr_testutils_post_reset(
205 LOG_ERROR(
"Unexpected wakeup detected: type = %d, request_source = %d",