summaryrefslogtreecommitdiff
path: root/main/dac.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'main/dac.cpp')
-rw-r--r--main/dac.cpp56
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