mirror of
https://github.com/esphome/esphome.git
synced 2024-11-22 15:08:10 +01:00
[remote_receiver, remote_transmitter] Improve error messages on the ESP32 (#6701)
This commit is contained in:
parent
e48d02495b
commit
487e171443
4 changed files with 20 additions and 2 deletions
|
@ -58,6 +58,7 @@ class RemoteReceiverComponent : public remote_base::RemoteReceiverBase,
|
||||||
void decode_rmt_(rmt_item32_t *item, size_t len);
|
void decode_rmt_(rmt_item32_t *item, size_t len);
|
||||||
RingbufHandle_t ringbuf_;
|
RingbufHandle_t ringbuf_;
|
||||||
esp_err_t error_code_{ESP_OK};
|
esp_err_t error_code_{ESP_OK};
|
||||||
|
std::string error_string_{""};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(USE_ESP8266) || defined(USE_LIBRETINY)
|
#if defined(USE_ESP8266) || defined(USE_LIBRETINY)
|
||||||
|
|
|
@ -29,6 +29,7 @@ void RemoteReceiverComponent::setup() {
|
||||||
esp_err_t error = rmt_config(&rmt);
|
esp_err_t error = rmt_config(&rmt);
|
||||||
if (error != ESP_OK) {
|
if (error != ESP_OK) {
|
||||||
this->error_code_ = error;
|
this->error_code_ = error;
|
||||||
|
this->error_string_ = "in rmt_config";
|
||||||
this->mark_failed();
|
this->mark_failed();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -36,18 +37,25 @@ void RemoteReceiverComponent::setup() {
|
||||||
error = rmt_driver_install(this->channel_, this->buffer_size_, 0);
|
error = rmt_driver_install(this->channel_, this->buffer_size_, 0);
|
||||||
if (error != ESP_OK) {
|
if (error != ESP_OK) {
|
||||||
this->error_code_ = error;
|
this->error_code_ = error;
|
||||||
|
if (error == ESP_ERR_INVALID_STATE) {
|
||||||
|
this->error_string_ = str_sprintf("RMT channel %i is already in use by another component", this->channel_);
|
||||||
|
} else {
|
||||||
|
this->error_string_ = "in rmt_driver_install";
|
||||||
|
}
|
||||||
this->mark_failed();
|
this->mark_failed();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
error = rmt_get_ringbuf_handle(this->channel_, &this->ringbuf_);
|
error = rmt_get_ringbuf_handle(this->channel_, &this->ringbuf_);
|
||||||
if (error != ESP_OK) {
|
if (error != ESP_OK) {
|
||||||
this->error_code_ = error;
|
this->error_code_ = error;
|
||||||
|
this->error_string_ = "in rmt_get_ringbuf_handle";
|
||||||
this->mark_failed();
|
this->mark_failed();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
error = rmt_rx_start(this->channel_, true);
|
error = rmt_rx_start(this->channel_, true);
|
||||||
if (error != ESP_OK) {
|
if (error != ESP_OK) {
|
||||||
this->error_code_ = error;
|
this->error_code_ = error;
|
||||||
|
this->error_string_ = "in rmt_rx_start";
|
||||||
this->mark_failed();
|
this->mark_failed();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -67,7 +75,8 @@ void RemoteReceiverComponent::dump_config() {
|
||||||
ESP_LOGCONFIG(TAG, " Filter out pulses shorter than: %" PRIu32 " us", this->filter_us_);
|
ESP_LOGCONFIG(TAG, " Filter out pulses shorter than: %" PRIu32 " us", this->filter_us_);
|
||||||
ESP_LOGCONFIG(TAG, " Signal is done after %" PRIu32 " us of no changes", this->idle_us_);
|
ESP_LOGCONFIG(TAG, " Signal is done after %" PRIu32 " us of no changes", this->idle_us_);
|
||||||
if (this->is_failed()) {
|
if (this->is_failed()) {
|
||||||
ESP_LOGE(TAG, "Configuring RMT driver failed: %s", esp_err_to_name(this->error_code_));
|
ESP_LOGE(TAG, "Configuring RMT driver failed: %s (%s)", esp_err_to_name(this->error_code_),
|
||||||
|
this->error_string_.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,7 @@ class RemoteTransmitterComponent : public remote_base::RemoteTransmitterBase,
|
||||||
bool initialized_{false};
|
bool initialized_{false};
|
||||||
std::vector<rmt_item32_t> rmt_temp_;
|
std::vector<rmt_item32_t> rmt_temp_;
|
||||||
esp_err_t error_code_{ESP_OK};
|
esp_err_t error_code_{ESP_OK};
|
||||||
|
std::string error_string_{""};
|
||||||
bool inverted_{false};
|
bool inverted_{false};
|
||||||
#endif
|
#endif
|
||||||
uint8_t carrier_duty_percent_;
|
uint8_t carrier_duty_percent_;
|
||||||
|
|
|
@ -23,7 +23,8 @@ void RemoteTransmitterComponent::dump_config() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this->is_failed()) {
|
if (this->is_failed()) {
|
||||||
ESP_LOGE(TAG, "Configuring RMT driver failed: %s", esp_err_to_name(this->error_code_));
|
ESP_LOGE(TAG, "Configuring RMT driver failed: %s (%s)", esp_err_to_name(this->error_code_),
|
||||||
|
this->error_string_.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,6 +57,7 @@ void RemoteTransmitterComponent::configure_rmt_() {
|
||||||
esp_err_t error = rmt_config(&c);
|
esp_err_t error = rmt_config(&c);
|
||||||
if (error != ESP_OK) {
|
if (error != ESP_OK) {
|
||||||
this->error_code_ = error;
|
this->error_code_ = error;
|
||||||
|
this->error_string_ = "in rmt_config";
|
||||||
this->mark_failed();
|
this->mark_failed();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -64,6 +66,11 @@ void RemoteTransmitterComponent::configure_rmt_() {
|
||||||
error = rmt_driver_install(this->channel_, 0, 0);
|
error = rmt_driver_install(this->channel_, 0, 0);
|
||||||
if (error != ESP_OK) {
|
if (error != ESP_OK) {
|
||||||
this->error_code_ = error;
|
this->error_code_ = error;
|
||||||
|
if (error == ESP_ERR_INVALID_STATE) {
|
||||||
|
this->error_string_ = str_sprintf("RMT channel %i is already in use by another component", this->channel_);
|
||||||
|
} else {
|
||||||
|
this->error_string_ = "in rmt_driver_install";
|
||||||
|
}
|
||||||
this->mark_failed();
|
this->mark_failed();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue