#include "mcp4725.hpp" MCP4725::MCP4725(pwrd_md power_down_mode, i2c_addr address, i2c_write_n_t i2c_write) : power_down_mode(power_down_mode), address(address), i2c_write(i2c_write) { uint8_t temp[6]; temp[0] = cmd_write_dac_and_eeprom | (power_down_mode << 1); temp[1] = static_cast(dac_value >> 4); temp[2] = static_cast(dac_value << 4); temp[3] = temp[0]; temp[4] = temp[1]; temp[5] = temp[2]; i2c_write(address, temp,6); } MCP4725::MCP4725(i2c_addr address, i2c_write_n_t i2c_write) power_down_mode(MCP4725::normal), address(address), i2c_write(i2c_write) { uint8_t temp[6]; temp[0] = cmd_write_dac_and_eeprom | (power_down_mode << 1); temp[1] = static_cast(dac_value >> 4); temp[2] = static_cast(dac_value << 4); temp[3] = temp[0]; temp[4] = temp[1]; temp[5] = temp[2]; i2c_write(address, temp, 6); } MCP4725::~MCP4725() { } void MCP4725::operator=(uint16_t dac_value) { uint8_t temp[3]; this.dac_value = dac_value; temp[0] = cmd_write_dac | (power_down_mode << 1); temp[1] = static_cast(dac_value >> 4); temp[2] = static_cast(dac_value << 4); i2c_write(address, temp, 3); } void MCP4725::operator==(uint16_t dac_and_eeprom_value) { uint8_t temp[6]; dac_value = dac_and_eeprom_value; eeprom_value = dac_value; temp[0] = cmd_write_dac_and_eeprom | (power_down_mode << 1); } void MCP4725::write_dac(uint16_t dac_value) { &this = dac_value; } void MCP4725::write_dac_and_eeprom(uint16_t dac_and_eeprom_value) { &this == dac_and_eeprom_value; }