2 Commits

Author SHA1 Message Date
d49bb1b015 feat: added dimmer deinit 2025-10-31 14:33:15 +03:00
1c29a98d4f fix: triac gpio number is 0 2025-10-31 13:47:25 +03:00
3 changed files with 32 additions and 2 deletions

View File

@@ -46,6 +46,13 @@ extern "C"
*/ */
esp_err_t zh_ac_dimmer_init(const zh_ac_dimmer_init_config_t *config); esp_err_t zh_ac_dimmer_init(const zh_ac_dimmer_init_config_t *config);
/**
* @brief Deinitialize AC dimmer.
*
* @return ESP_OK if success or an error code otherwise.
*/
esp_err_t zh_ac_dimmer_deinit(void);
/** /**
* @brief Start AC dimmer. * @brief Start AC dimmer.
* *

View File

@@ -1 +1 @@
1.0.1 1.1.0

View File

@@ -46,6 +46,29 @@ esp_err_t zh_ac_dimmer_init(const zh_ac_dimmer_init_config_t *config)
return ESP_OK; return ESP_OK;
} }
esp_err_t zh_ac_dimmer_deinit(void)
{
ZH_LOGI("AC dimmer deinitialization started.");
ZH_ERROR_CHECK(_is_initialized == true, ESP_ERR_INVALID_STATE, "AC dimmer deinitialization failed. AC dimmer is not initialized.");
_is_dimmer_work = false;
if (_dimmer_timer != NULL)
{
gptimer_disable(_dimmer_timer);
gptimer_del_timer(_dimmer_timer);
_dimmer_timer = NULL;
}
gpio_isr_handler_remove(_init_config.zero_cross_gpio);
gpio_uninstall_isr_service();
_is_initialized = false;
_dimmer_value = 0;
_current_frequency = 0;
_prev_frequency = 0;
_zero_cross_time = 0;
_prev_micros = 0;
ZH_LOGI("AC dimmer deinitialization completed successfully.");
return ESP_OK;
}
esp_err_t zh_ac_dimmer_start(void) esp_err_t zh_ac_dimmer_start(void)
{ {
ZH_LOGI("AC dimmer start begin."); ZH_LOGI("AC dimmer start begin.");
@@ -94,7 +117,7 @@ static esp_err_t _zh_ac_dimmer_gpio_init(const zh_ac_dimmer_init_config_t *confi
}; };
esp_err_t err = gpio_config(&triac_gpio_config); esp_err_t err = gpio_config(&triac_gpio_config);
ZH_ERROR_CHECK(err == ESP_OK, err, "Triac GPIO configuration failed."); ZH_ERROR_CHECK(err == ESP_OK, err, "Triac GPIO configuration failed.");
gpio_set_level(_init_config.triac_gpio, 0); gpio_set_level(config->triac_gpio, 0);
gpio_config_t zero_cross_gpio_config = { gpio_config_t zero_cross_gpio_config = {
.intr_type = GPIO_INTR_POSEDGE, .intr_type = GPIO_INTR_POSEDGE,
.mode = GPIO_MODE_INPUT, .mode = GPIO_MODE_INPUT,