37 enum class ADCChannel {
45 enum class ADCAutoIncrement {
52 ThreeDifferential = 0x10,
53 SingleAndDifferential = 0x20,
54 TwoDifferential = 0x30
57 static const uint8_t DEFAULT_DEVICE_ADDRESS = 0x90;
59 static const uint8_t DAC_ENABLE = BIT_6;
60 static const uint8_t CHANNEL_BITS = BIT_1 | BIT_0;
73 m_deviceAddress(deviceAddress),
83 return this->m_i2c->
ping(this->m_deviceAddress);
97 this->m_i2c->
get(this->m_deviceAddress, buffer,
sizeof(buffer));
98 return buffer[
sizeof(buffer) - 1];
112 return this->m_i2c->
get(this->m_deviceAddress, data, 1);
124 return this->m_i2c->
get(this->m_deviceAddress, data, size);
135 this->m_currentProgram &= ~CHANNEL_BITS;
136 this->m_currentProgram |=
static_cast<uint8_t
>(channel);
137 return this->program();
150 this->m_currentProgram |=
static_cast<uint8_t
>(ADCAutoIncrement::AUTO_INC_ON);
152 this->m_currentProgram &= ~static_cast<uint8_t>(ADCAutoIncrement::AUTO_INC_ON);
153 return this->program();
164 this->m_currentProgram &= ~0x30;
165 this->m_currentProgram |=
static_cast<uint8_t
>(mode);
166 return this->program();
175 this->m_currentProgram |= DAC_ENABLE;
176 return this->program();
185 this->m_currentProgram &= ~DAC_ENABLE;
186 return this->program();
196 bool write (
const uint8_t dacValue) {
197 this->m_currentProgram |= DAC_ENABLE;
198 return this->m_i2c->
put(this->m_deviceAddress, this->m_currentProgram, dacValue);
210 this->m_currentProgram |= DAC_ENABLE;
211 return this->m_i2c->
put(this->m_deviceAddress, this->m_currentProgram, dacValues, size);
215 bool program ()
const {
216 return this->m_i2c->
put(this->m_deviceAddress, this->m_currentProgram);
220 const I2CMaster *m_i2c;
221 const uint8_t m_deviceAddress;
223 uint8_t m_currentProgram;