#ifndef _MCP4725_HPP_ #define _MCP4725_HPP_ #include #include #include #include "../../communication/i2c/i2c.hpp" class MCP4725 { public: //typedef std::function i2c_write_n_t; //typedef std::function i2c_write_n_t; //typedef void(*i2c_write_n_t)(const uint8_t&, const uint8_t*, const uint8_t&); //typedef std::functioni2c_write_n_t; // address list enum i2c_addr { addr_0x60 = 0b01100000, addr_0x61 = addr_0x60 + 1, addr_0x62 = addr_0x60 + 2, addr_0x63 = addr_0x60 + 3, addr_0x64 = addr_0x60 + 4, addr_0x65 = addr_0x60 + 5, addr_0x66 = addr_0x60 + 6, addr_0x67 = addr_0x60 + 7 }; // power down impedance modes enum pwrd_md { normal = 0x04, ohm_1k = 0x01, ohm_100k = 0x02, ohm_500k = 0x03 }; //using std::functional i2c_read_n_t; //using i2c_write_n_t = std::functional; /** * @brief Constructor of mcp4725 dac * * @param power_down_mode pwrd_md power down mode * @param address i2c_addr i2c address of the dac * @param i2c_write i2c_write_n_t callback for i2c writ */ #if 0 MCP4725(pwrd_md power_down_mode, i2c_addr address, I2C* i2c); MCP4725(i2c_addr address, I2C* i2c); #endif MCP4725(); MCP4725(I2C* i2c); // ~MCP4725(); void operator=(uint16_t dac_value); void operator==(uint16_t dac_and_eeprom_value); #if 0 void write_dac_and_eeprom(uint16_t value); void set_powerdown_impedance(pwrd_md mode); i2c_addr get_i2c_addr(); #endif //void set_power private: enum commands_t { cmd_fast_mode = 0x00, cmd_write_dac = 0x40, cmd_write_dac_and_eeprom = 0x60 }; I2C* i2c; i2c_addr address; pwrd_md power_down_mode; //i2c_write_n_t i2c_write; uint16_t dac_value; uint16_t eeprom_value; }; #endif // _MCP4725_HPP_