95 assert(
wire !=
nullptr);
96 return i2c_bus_write_bytes(
wire,
i2c_addr, ®, 1, &value, 1) == 0;
100 bool readReg(uint8_t reg, uint8_t& value,
bool stopBit=
true) {
101 assert(
wire !=
nullptr);
102 #if defined(ARDUINO) && !AUDIO_DRIVER_FORCE_IDF
103 return i2c_bus_read_bytes(
wire,
i2c_addr, ®, 1, &value, 1, stopBit) == 0;
105 return i2c_bus_read_bytes(
wire,
i2c_addr, ®, 1, &value, 1) == 0;
110 bool updateReg(uint8_t reg, uint8_t mask, uint8_t value) {
112 if (!
readReg(reg, old))
return false;
113 uint8_t updated = (old & ~mask) | (value & mask);
114 if (updated == old)
return true;
120 assert(
wire !=
nullptr);
121 uint8_t data[2] = {(uint8_t)(value >> 8), (uint8_t)(value & 0xFF)};
122 return i2c_bus_write_bytes(
wire,
i2c_addr, ®, 1, data, 2) == 0;
127 assert(
wire !=
nullptr);
128 uint8_t data[2] = {0, 0};
129 if (i2c_bus_read_bytes(
wire,
i2c_addr, ®, 1, data, 2) != 0)
131 value = ((uint16_t)data[0] << 8) | data[1];
139 uint16_t updated = (old & ~mask) | (value & mask);
140 if (updated == old)
return true;
Common parent class for codec drivers that have been ported from the Zephyr RTOS audio driver impleme...
Definition ZephyrDriverCommon.h:22
virtual bool setActive(codec_mode_t mode)
Definition ZephyrDriverCommon.h:65
virtual bool isInputVolumeSupported()
Returns true if the driver supports setting the input volume, false otherwise. By default we return f...
Definition ZephyrDriverCommon.h:78
virtual bool setInputVolume(int volume)
Definition ZephyrDriverCommon.h:71
virtual int getVolume()
Provides the output volume in % (0...100) that was set with setVolume()
Definition ZephyrDriverCommon.h:49
uint8_t i2c_addr
Definition ZephyrDriverCommon.h:87
bool readReg16(uint8_t reg, uint16_t &value)
Reads a 16 bit (big endian) value from an 8 bit register address.
Definition ZephyrDriverCommon.h:126
i2c_bus_handle_t getWire()
Provides the actual I2C communication object.
Definition ZephyrDriverCommon.h:35
bool updateReg(uint8_t reg, uint8_t mask, uint8_t value)
Read-Modify-Write of a single byte register.
Definition ZephyrDriverCommon.h:110
virtual bool begin(uint32_t sample_rate, uint8_t bits, codec_mode_t mode, i2s_format_t fmt, bool is_master, uint8_t channels)=0
Initializes the codec.
bool writeReg16(uint8_t reg, uint16_t value)
Writes a 16 bit (big endian) value to an 8 bit register address.
Definition ZephyrDriverCommon.h:119
void setWire(i2c_bus_handle_t w)
Defines the I2C communication object.
Definition ZephyrDriverCommon.h:32
virtual bool setMute(bool mute)
Definition ZephyrDriverCommon.h:53
void setAddress(uint8_t addr)
Defines the I2C address of the codec.
Definition ZephyrDriverCommon.h:26
int volume_percent
Last volume (in %) provided to setVolume()
Definition ZephyrDriverCommon.h:89
bool readReg(uint8_t reg, uint8_t &value, bool stopBit=true)
Reads a single byte from an 8 bit register address.
Definition ZephyrDriverCommon.h:100
uint8_t address()
Provides the actual I2C address of the codec.
Definition ZephyrDriverCommon.h:29
bool updateReg16(uint8_t reg, uint16_t mask, uint16_t value)
Read-Modify-Write of a 16 bit (big endian) register.
Definition ZephyrDriverCommon.h:136
virtual bool setDevices(input_device_t input_device, output_device_t output_device)
Definition ZephyrDriverCommon.h:83
virtual int getInputVolume()
Definition ZephyrDriverCommon.h:75
i2c_bus_handle_t wire
Definition ZephyrDriverCommon.h:86
bool writeReg(uint8_t reg, uint8_t value)
Writes a single byte to an 8 bit register address.
Definition ZephyrDriverCommon.h:94
virtual bool setVolume(int volume)
Definition ZephyrDriverCommon.h:43
int input_volume_percent
Last input volume (in %) provided to setInputVolume()
Definition ZephyrDriverCommon.h:91
Namespace for audio driver components.
Definition AudioBoard.h:5
input_device_t
Definition DriverCommon.h:170
codec_mode_t
Definition DriverCommon.h:290
@ CODEC_MODE_DECODE
Definition DriverCommon.h:294
output_device_t
Definition DriverCommon.h:186
i2s_format_t
Definition DriverCommon.h:250
void * i2c_bus_handle_t
Definition DriverCommon.h:155