summaryrefslogtreecommitdiff
path: root/src/drivers
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-01-24 16:47:04 +1100
committerjacqueline <me@jacqueline.id.au>2023-01-24 16:47:04 +1100
commite7f926e2c376ccd4f4a4d6f4b104f3c23b0059dc (patch)
tree5e00c1d20002839c1a8ced9f5bc167b04548ac53 /src/drivers
parenta03b1e2139399525081999692d7ccb4a4182e047 (diff)
downloadtangara-fw-e7f926e2c376ccd4f4a4d6f4b104f3c23b0059dc.tar.gz
Tolerate longer dac timeouts + i2c timeouts during bootup
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/dac.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/drivers/dac.cpp b/src/drivers/dac.cpp
index 2abb361e..96a204a7 100644
--- a/src/drivers/dac.cpp
+++ b/src/drivers/dac.cpp
@@ -125,7 +125,12 @@ std::pair<bool, AudioDac::PowerState> AudioDac::ReadPowerState() {
.read(&result, I2C_MASTER_NACK)
.stop();
- ESP_ERROR_CHECK(transaction.Execute());
+ esp_err_t err = transaction.Execute();
+ if (err == ESP_ERR_TIMEOUT) {
+ return std::pair(false, POWERDOWN);
+ } else {
+ }
+ ESP_ERROR_CHECK(err);
bool is_booted = result >> 7;
PowerState detail = (PowerState)(result & 0b1111);
@@ -143,7 +148,7 @@ bool AudioDac::WaitForPowerState(
} else {
ESP_LOGI(kTag, "Waiting for power state (was %d 0x%x)", result.first,
(uint8_t)result.second);
- vTaskDelay(pdMS_TO_TICKS(1));
+ vTaskDelay(pdMS_TO_TICKS(250));
}
}
return has_matched;