summaryrefslogtreecommitdiff
path: root/src/drivers/digital_pot.cpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-06-30 20:48:40 +1000
committerjacqueline <me@jacqueline.id.au>2023-06-30 20:48:40 +1000
commit371f0a20cad4dfcb3237db6f72a7e35403950938 (patch)
tree48240a9c3d2121095e0f10537228603120435dd0 /src/drivers/digital_pot.cpp
parent0347555d5b2314e1be58261ef29fa13a76c039e6 (diff)
downloadtangara-fw-371f0a20cad4dfcb3237db6f72a7e35403950938.tar.gz
Clean up gpios interface
Diffstat (limited to 'src/drivers/digital_pot.cpp')
-rw-r--r--src/drivers/digital_pot.cpp85
1 files changed, 0 insertions, 85 deletions
diff --git a/src/drivers/digital_pot.cpp b/src/drivers/digital_pot.cpp
deleted file mode 100644
index b20d982d..00000000
--- a/src/drivers/digital_pot.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright 2023 jacqueline <me@jacqueline.id.au>
- *
- * SPDX-License-Identifier: GPL-3.0-only
- */
-
-#include "digital_pot.hpp"
-
-#include <cstdint>
-
-namespace drivers {
-
-using GpioExpander::VOL_LEFT;
-using GpioExpander::VOL_RIGHT;
-using GpioExpander::VOL_UP_DOWN;
-using GpioExpander::VOL_Z_CROSS;
-
-DigitalPot::DigitalPot(GpioExpander* gpios) : gpios_(gpios) {
- gpios_->set_pin(VOL_Z_CROSS, true); // Active-low
- gpios_->set_pin(VOL_UP_DOWN, true);
- gpios_->set_pin(VOL_LEFT, false);
- gpios_->set_pin(VOL_RIGHT, false);
- gpios_->Write();
-
- // Power-on reset sets attenuation to maximum anyway, but we want to be safe
- // and not blow anyone's ears out.
- for (int i = 0; i < 32; i++) {
- gpios_->set_pin(VOL_LEFT, true);
- gpios_->set_pin(VOL_RIGHT, true);
- gpios_->Write();
- gpios_->set_pin(VOL_LEFT, false);
- gpios_->set_pin(VOL_RIGHT, false);
- gpios_->Write();
- }
-}
-
-auto DigitalPot::SetRelative(int_fast8_t change) -> void {
- if (change == 0) {
- return;
- }
-
- gpios_->set_pin(VOL_UP_DOWN, change > 0);
- gpios_->Write();
-
- for (int i = 0; i < std::abs(change); i++) {
- gpios_->set_pin(VOL_LEFT, true);
- gpios_->set_pin(VOL_RIGHT, true);
- gpios_->Write();
- gpios_->set_pin(VOL_LEFT, false);
- gpios_->set_pin(VOL_RIGHT, false);
- gpios_->Write();
- }
-}
-
-auto DigitalPot::SetRelative(Channel ch, int_fast8_t change) -> void {
- if (change == 0) {
- return;
- }
-
- GpioExpander::Pin pin = (ch == Channel::kLeft) ? VOL_LEFT : VOL_RIGHT;
- gpios_->set_pin(VOL_UP_DOWN, change > 0);
- gpios_->Write();
-
- for (int i = 0; i < std::abs(change); i++) {
- gpios_->set_pin(pin, true);
- gpios_->Write();
- gpios_->set_pin(pin, false);
- gpios_->Write();
- }
-}
-
-auto DigitalPot::SetZeroCrossDetect(bool enabled) -> void {
- gpios_->set_pin(VOL_Z_CROSS, !enabled); // Active-low
- gpios_->Write();
-}
-
-auto DigitalPot::GetMaxAttenuation() -> int_fast8_t {
- return 31;
-}
-
-auto DigitalPot::GetMinAttenuation() -> int_fast8_t {
- return 0;
-}
-
-} // namespace drivers