DS1307: Add string based constructor for Clock

Signed-off-by: Adelin Dobre <adelin.dobre@rinftech.com>
Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
This commit is contained in:
Adelin Dobre 2018-10-31 13:12:31 +02:00 committed by Mihai Tudor Panu
parent 8a2ef9a648
commit 6cbfa60729
2 changed files with 30 additions and 0 deletions

View File

@ -46,6 +46,27 @@ DS1307::DS1307(int bus) : m_i2c(bus)
}
}
DS1307::DS1307(std::string initStr) : m_i2c(nullptr), mraaIo(initStr)
{
mraa_io_descriptor* descs = mraaIo.getMraaDescriptors();
if(!descs->i2cs[0]) {
throw std::invalid_argument(std::string(__FUNCTION__) +
": mraa_i2c_init() failed");
return;
} else {
m_i2c = descs->i2cs[0];
}
// setup our i2c link
mraa::Result ret = m_i2c.address(DS1307_I2C_ADDR);
if (ret != mraa::SUCCESS){
throw std::invalid_argument(std::string(__FUNCTION__) +
": i2c.address() failed");
return;
}
}
mraa::Result DS1307::writeBytes(uint8_t reg, uint8_t *buffer, int len)
{
if (!len || !buffer)

View File

@ -28,6 +28,7 @@
#include <string>
#include <mraa/i2c.hpp>
#include <mraa/initio.hpp>
#define DS1307_I2C_BUS 0
#define DS1307_I2C_ADDR 0x68
@ -78,6 +79,13 @@ namespace upm {
*/
DS1307(int bus);
/**
* Instantiates DS1307 Clock based on a given string.
*
* @param initStr string containing specific information for DS1307 initialization.
*/
DS1307(std::string initStr);
/**
* Loads all the time values
*
@ -188,5 +196,6 @@ namespace upm {
private:
mraa::I2c m_i2c;
mraa::MraaIo mraaIo;
};
}