diff options
Diffstat (limited to 'main/dac.cpp')
| -rw-r--r-- | main/dac.cpp | 56 |
1 files changed, 29 insertions, 27 deletions
diff --git a/main/dac.cpp b/main/dac.cpp index 513793db..f2dd2870 100644 --- a/main/dac.cpp +++ b/main/dac.cpp @@ -1,26 +1,27 @@ #include "dac.h" -#include "esp_err.h" -#include "i2c.h" -#include "esp_log.h" +#include <cstdint> #include "assert.h" #include "driver/i2c.h" +#include "esp_err.h" +#include "esp_log.h" #include "gpio-expander.h" #include "hal/i2c_types.h" -#include <cstdint> +#include "i2c.h" namespace gay_ipod { static const char* TAG = "AUDIODAC"; -AudioDac::AudioDac(GpioExpander *gpio) { +AudioDac::AudioDac(GpioExpander* gpio) { this->gpio_ = gpio; }; -AudioDac::~AudioDac() {}; +AudioDac::~AudioDac(){}; esp_err_t AudioDac::Start() { - bool is_booted = WaitForPowerState([](bool booted, PowerState state){ return booted; }); + bool is_booted = + WaitForPowerState([](bool booted, PowerState state) { return booted; }); if (!is_booted) { ESP_LOGE(TAG, "Timed out waiting for boot"); return ESP_ERR_TIMEOUT; @@ -29,8 +30,9 @@ esp_err_t AudioDac::Start() { WriteRegister(Register::DE_EMPHASIS, 1 << 4); WriteVolume(100); - WaitForPowerState([](bool booted, PowerState state){ - return state == WAIT_FOR_CP || state == RAMP_UP || state == RUN || state == STANDBY; + WaitForPowerState([](bool booted, PowerState state) { + return state == WAIT_FOR_CP || state == RAMP_UP || state == RUN || + state == STANDBY; }); return ESP_OK; @@ -45,31 +47,32 @@ std::pair<bool, AudioDac::PowerState> AudioDac::ReadPowerState() { uint8_t result = 0; I2CTransaction transaction; - transaction - .start() - .write_addr(kPCM5122Address, I2C_MASTER_WRITE) - .write_ack(DSP_BOOT_POWER_STATE) - .start() - .write_addr(kPCM5122Address, I2C_MASTER_READ) - .read(&result, I2C_MASTER_NACK) - .stop(); + transaction.start() + .write_addr(kPCM5122Address, I2C_MASTER_WRITE) + .write_ack(DSP_BOOT_POWER_STATE) + .start() + .write_addr(kPCM5122Address, I2C_MASTER_READ) + .read(&result, I2C_MASTER_NACK) + .stop(); ESP_ERROR_CHECK(transaction.Execute()); bool is_booted = result >> 7; - PowerState detail = (PowerState) (result & 0b1111); + PowerState detail = (PowerState)(result & 0b1111); return std::pair(is_booted, detail); } -bool AudioDac::WaitForPowerState(std::function<bool(bool,AudioDac::PowerState)> predicate) { +bool AudioDac::WaitForPowerState( + std::function<bool(bool, AudioDac::PowerState)> predicate) { bool has_matched = false; - for (int i=0; i<10; i++) { + for (int i = 0; i < 10; i++) { std::pair<bool, PowerState> result = ReadPowerState(); has_matched = predicate(result.first, result.second); if (has_matched) { break; } else { - ESP_LOGI(TAG, "Waiting for power state (was %d %x)", result.first, (uint8_t) result.second); + ESP_LOGI(TAG, "Waiting for power state (was %d %x)", result.first, + (uint8_t)result.second); vTaskDelay(pdMS_TO_TICKS(1)); } } @@ -77,14 +80,13 @@ bool AudioDac::WaitForPowerState(std::function<bool(bool,AudioDac::PowerState)> } void AudioDac::WriteRegister(Register reg, uint8_t val) { - I2CTransaction transaction; - transaction - .start() + I2CTransaction transaction; + transaction.start() .write_addr(kPCM5122Address, I2C_MASTER_WRITE) .write_ack(reg, val) .stop(); - // TODO: Retry once? - ESP_ERROR_CHECK(transaction.Execute()); + // TODO: Retry once? + ESP_ERROR_CHECK(transaction.Execute()); } -} // namespace gay_ipod +} // namespace gay_ipod |
