fix(ledc): update LEDC test file to cpp style

This commit is contained in:
Song Ruo Jing
2025-08-12 19:38:15 +08:00
parent 24a9cb7dde
commit 1cb1acd02e
5 changed files with 54 additions and 62 deletions

View File

@@ -1,9 +1,9 @@
set(srcs "test_app_main.c"
"test_ledc.c"
"test_ledc_utils.c")
"test_ledc.cpp"
"test_ledc_utils.cpp")
if(CONFIG_SOC_LIGHT_SLEEP_SUPPORTED)
list(APPEND srcs "test_ledc_sleep.c")
list(APPEND srcs "test_ledc_sleep.cpp")
endif()
# In order for the cases defined by `TEST_CASE` to be linked into the final elf,

View File

@@ -407,13 +407,13 @@ TEST_CASE("LEDC multi fade test", "[ledc]")
// Construct fade parameters
const ledc_fade_param_config_t fade_params[] = {
{.dir = 1, .step_num = 100, .cycle_num = 1, .scale = 1},
{.dir = 1, .step_num = 50, .cycle_num = 2, .scale = 2},
{.dir = 1, .step_num = 200, .cycle_num = 10, .scale = 5},
{.dir = 0, .step_num = 100, .cycle_num = 5, .scale = 5},
{.dir = 1, .step_num = 1000, .cycle_num = 1, .scale = 1},
{.dir = 0, .step_num = 200, .cycle_num = 1, .scale = 1},
{.dir = 1, .step_num = 1, .cycle_num = 1000, .scale = 1000},
{.dir = 1, .cycle_num = 1, .scale = 1, .step_num = 100},
{.dir = 1, .cycle_num = 2, .scale = 2, .step_num = 50},
{.dir = 1, .cycle_num = 10, .scale = 5, .step_num = 200},
{.dir = 0, .cycle_num = 5, .scale = 5, .step_num = 100},
{.dir = 1, .cycle_num = 1, .scale = 1, .step_num = 1000},
{.dir = 0, .cycle_num = 1, .scale = 1, .step_num = 200},
{.dir = 1, .cycle_num = 1000, .scale = 1000, .step_num = 1},
};
uint32_t fade_range = 7;
int32_t start_duty = 2000;
@@ -455,13 +455,12 @@ static void frequency_set_get(ledc_mode_t speed_mode, ledc_timer_t timer, uint32
static void timer_frequency_test(ledc_channel_t channel, ledc_timer_bit_t timer_bit, ledc_timer_t timer, ledc_mode_t speed_mode)
{
ledc_timer_config_t ledc_time_config = {
.speed_mode = speed_mode,
.duty_resolution = timer_bit,
.timer_num = timer,
.freq_hz = TEST_PWM_FREQ,
.clk_cfg = TEST_DEFAULT_CLK_CFG,
};
ledc_timer_config_t ledc_time_config = {};
ledc_time_config.speed_mode = speed_mode;
ledc_time_config.duty_resolution = timer_bit;
ledc_time_config.timer_num = timer;
ledc_time_config.freq_hz = TEST_PWM_FREQ;
ledc_time_config.clk_cfg = TEST_DEFAULT_CLK_CFG;
TEST_ESP_OK(ledc_timer_config(&ledc_time_config));
TEST_ESP_OK(ledc_bind_channel_timer(speed_mode, channel, timer));
@@ -516,16 +515,15 @@ TEST_CASE("LEDC set and get frequency", "[ledc][timeout=60]")
}
#if SOC_CLK_TREE_SUPPORTED
static void timer_set_clk_src_and_freq_test(ledc_mode_t speed_mode, ledc_clk_cfg_t clk_src, uint32_t duty_res,
static void timer_set_clk_src_and_freq_test(ledc_mode_t speed_mode, ledc_clk_cfg_t clk_src, ledc_timer_bit_t duty_res,
uint32_t freq_hz)
{
ledc_timer_config_t ledc_time_config = {
.speed_mode = speed_mode,
.duty_resolution = duty_res,
.timer_num = LEDC_TIMER_0,
.freq_hz = freq_hz,
.clk_cfg = clk_src,
};
ledc_timer_config_t ledc_time_config = {};
ledc_time_config.speed_mode = speed_mode;
ledc_time_config.duty_resolution = duty_res;
ledc_time_config.timer_num = LEDC_TIMER_0;
ledc_time_config.freq_hz = freq_hz;
ledc_time_config.clk_cfg = clk_src;
TEST_ESP_OK(ledc_timer_config(&ledc_time_config));
TEST_ESP_OK(ledc_update_duty(speed_mode, LEDC_CHANNEL_0)); // Start
vTaskDelay(100 / portTICK_PERIOD_MS);
@@ -542,38 +540,36 @@ static void timer_set_clk_src_and_freq_test(ledc_mode_t speed_mode, ledc_clk_cfg
TEST_CASE("LEDC timer select specific clock source", "[ledc]")
{
const ledc_mode_t test_speed_mode = TEST_SPEED_MODE;
ledc_channel_config_t ledc_ch_config = {
.gpio_num = PULSE_IO,
.speed_mode = test_speed_mode,
.channel = LEDC_CHANNEL_0,
.intr_type = LEDC_INTR_DISABLE,
.timer_sel = LEDC_TIMER_0,
.duty = 800,
.hpoint = 0,
};
ledc_channel_config_t ledc_ch_config = {};
ledc_ch_config.gpio_num = PULSE_IO;
ledc_ch_config.speed_mode = test_speed_mode;
ledc_ch_config.channel = LEDC_CHANNEL_0;
ledc_ch_config.timer_sel = LEDC_TIMER_0;
ledc_ch_config.duty = 800;
ledc_ch_config.hpoint = 0;
TEST_ESP_OK(ledc_channel_config(&ledc_ch_config));
if (test_speed_mode == LEDC_LOW_SPEED_MODE) {
#if SOC_CLK_RC_FAST_SUPPORT_CALIBRATION // Otherwise, the frequency of output PWM signal may not be very accurate
printf("Check LEDC_USE_RC_FAST_CLK for a 100Hz signal\n");
timer_set_clk_src_and_freq_test(test_speed_mode, LEDC_USE_RC_FAST_CLK, 10, 100);
timer_set_clk_src_and_freq_test(test_speed_mode, LEDC_USE_RC_FAST_CLK, LEDC_TIMER_10_BIT, 100);
#endif
#if SOC_LEDC_SUPPORT_XTAL_CLOCK
printf("Check LEDC_USE_XTAL_CLK for a 400Hz signal\n");
timer_set_clk_src_and_freq_test(test_speed_mode, LEDC_USE_XTAL_CLK, 13, 400);
timer_set_clk_src_and_freq_test(test_speed_mode, LEDC_USE_XTAL_CLK, LEDC_TIMER_13_BIT, 400);
#endif
}
#if SOC_LEDC_SUPPORT_REF_TICK
printf("Check LEDC_USE_REF_TICK for a 250Hz signal\n");
timer_set_clk_src_and_freq_test(test_speed_mode, LEDC_USE_REF_TICK, 10, 250);
timer_set_clk_src_and_freq_test(test_speed_mode, LEDC_USE_REF_TICK, LEDC_TIMER_10_BIT, 250);
#endif
#if SOC_LEDC_SUPPORT_APB_CLOCK
printf("Check LEDC_USE_APB_CLK for a 500Hz signal\n");
timer_set_clk_src_and_freq_test(test_speed_mode, LEDC_USE_APB_CLK, 13, 500);
timer_set_clk_src_and_freq_test(test_speed_mode, LEDC_USE_APB_CLK, LEDC_TIMER_13_BIT, 500);
#endif
#if SOC_LEDC_SUPPORT_PLL_DIV_CLOCK
printf("Check LEDC_USE_PLL_DIV_CLK for a 500Hz signal\n");
timer_set_clk_src_and_freq_test(test_speed_mode, LEDC_USE_PLL_DIV_CLK, 13, 500);
timer_set_clk_src_and_freq_test(test_speed_mode, LEDC_USE_PLL_DIV_CLK, LEDC_TIMER_13_BIT, 500);
#endif
printf("Bind channel 0 to timer 0\n");
@@ -591,24 +587,21 @@ TEST_CASE("LEDC timer pause and resume", "[ledc]")
const ledc_mode_t test_speed_mode = TEST_SPEED_MODE;
int count;
ledc_timer_config_t ledc_time_config = {
.speed_mode = test_speed_mode,
.duty_resolution = LEDC_TIMER_13_BIT,
.timer_num = LEDC_TIMER_0,
.freq_hz = TEST_PWM_FREQ,
.clk_cfg = TEST_DEFAULT_CLK_CFG,
};
ledc_timer_config_t ledc_time_config = {};
ledc_time_config.speed_mode = test_speed_mode;
ledc_time_config.duty_resolution = LEDC_TIMER_13_BIT;
ledc_time_config.timer_num = LEDC_TIMER_0;
ledc_time_config.freq_hz = TEST_PWM_FREQ;
ledc_time_config.clk_cfg = TEST_DEFAULT_CLK_CFG;
TEST_ESP_OK(ledc_timer_config(&ledc_time_config));
ledc_channel_config_t ledc_ch_config = {
.gpio_num = PULSE_IO,
.speed_mode = test_speed_mode,
.channel = LEDC_CHANNEL_0,
.intr_type = LEDC_INTR_DISABLE,
.timer_sel = LEDC_TIMER_0,
.duty = 4000,
.hpoint = 0,
};
ledc_channel_config_t ledc_ch_config = {};
ledc_ch_config.gpio_num = PULSE_IO;
ledc_ch_config.speed_mode = test_speed_mode;
ledc_ch_config.channel = LEDC_CHANNEL_0;
ledc_ch_config.timer_sel = LEDC_TIMER_0;
ledc_ch_config.duty = 4000;
ledc_ch_config.hpoint = 0;
TEST_ESP_OK(ledc_channel_config(&ledc_ch_config));
vTaskDelay(10 / portTICK_PERIOD_MS);

View File

@@ -92,7 +92,7 @@ TEST_CASE("ledc can output after light sleep (LEDC power domain pd)", "[ledc]")
}
#endif
static const ledc_clk_src_t test_ledc_clk_in_slp[] = {
static const ledc_clk_cfg_t test_ledc_clk_in_slp[] = {
LEDC_USE_RC_FAST_CLK,
#if SOC_LEDC_SUPPORT_XTAL_CLOCK
LEDC_USE_XTAL_CLK,
@@ -107,7 +107,7 @@ static void ledc_output_monitor(void)
unity_wait_for_signal("Go to light sleep for 3 seconds");
vTaskDelay(500 / portTICK_PERIOD_MS);
int pulse_count = wave_count(200);
uint32_t acceptable_delta = (test_ledc_clk_in_slp[i] == (ledc_clk_src_t)LEDC_USE_RC_FAST_CLK) ? 20 : 5; // RC_FAST as the clk src has a bigger error range is reasonable
uint32_t acceptable_delta = (test_ledc_clk_in_slp[i] == LEDC_USE_RC_FAST_CLK) ? 20 : 5; // RC_FAST as the clk src has a bigger error range is reasonable
TEST_ASSERT_UINT32_WITHIN(acceptable_delta, TEST_PWM_LOW_FREQ * 200 / 1000, pulse_count);
unity_wait_for_signal("Waked up!");
}

View File

@@ -13,8 +13,7 @@
ledc_channel_config_t initialize_channel_config(void)
{
ledc_channel_config_t config;
memset(&config, 0, sizeof(ledc_channel_config_t));
ledc_channel_config_t config = {};
config.gpio_num = PULSE_IO;
config.speed_mode = TEST_SPEED_MODE;
config.channel = LEDC_CHANNEL_0;
@@ -26,8 +25,7 @@ ledc_channel_config_t initialize_channel_config(void)
ledc_timer_config_t create_default_timer_config(void)
{
ledc_timer_config_t ledc_time_config;
memset(&ledc_time_config, 0, sizeof(ledc_timer_config_t));
ledc_timer_config_t ledc_time_config = {};
ledc_time_config.speed_mode = TEST_SPEED_MODE;
ledc_time_config.duty_resolution = LEDC_TIMER_13_BIT;
ledc_time_config.timer_num = LEDC_TIMER_0;

View File

@@ -6,8 +6,9 @@
#include "soc/soc_caps.h"
#include "driver/ledc.h"
#include "soc/gpio_num.h"
#define PULSE_IO 2
#define PULSE_IO GPIO_NUM_2
#define TEST_PWM_FREQ 2000
#define TEST_PWM_LOW_FREQ 200