ads1x15: ads1015 module now implements IADC. Removed ads1015_iadc.

Signed-off-by: Henry Bruce <henry.bruce@intel.com>
Signed-off-by: Abhishek Malik <abhishek.malik@intel.com>
This commit is contained in:
Henry Bruce
2016-01-08 16:41:38 -08:00
committed by Abhishek Malik
parent b08da722f7
commit 17fd502cb5
7 changed files with 130 additions and 220 deletions

View File

@@ -30,15 +30,68 @@ ADS1015::setSPS(ADSSAMPLERATE rate){
updateConfigRegister((m_config_reg & ~ADS1X15_DR_MASK) | rate);
}
ADS1015::ADS1015(int bus, uint8_t address) : ADS1X15(bus, address) {
ADS1015::ADS1015(int bus, uint8_t address, float vref) : ADS1X15(bus, address) {
m_name = "ADS1015";
m_conversionDelay = ADS1015_CONVERSIONDELAY;
m_bitShift = 4;
ADS1X15::getCurrentConfig();
if (vref < 0.0 || vref > 6.144)
UPM_THROW("vref out of range");
else if (vref > 4.096)
setGain(GAIN_TWOTHIRDS);
else if (vref > 2.048)
setGain(GAIN_ONE);
else if (vref > 1.024)
setGain(GAIN_TWO);
else if (vref > 0.512)
setGain(GAIN_FOUR);
else if (vref > 0.256)
setGain(GAIN_EIGHT);
else
setGain(GAIN_SIXTEEN);
}
ADS1015::~ADS1015(){};
bool
ADS1015::isConfigured() {
return true;
}
const char*
ADS1015::getModuleName() {
return m_name.c_str();
}
unsigned int
ADS1015::getNumInputs() {
return 4;
}
unsigned int
ADS1015::getResolutionInBits() {
return 12;
}
uint16_t
ADS1015::getRawValue(unsigned int input) {
ADS1X15::ADSMUXMODE mode = getMuxMode(input);
updateConfigRegister((m_config_reg & ~ADS1X15_MUX_MASK) | mode, true);
usleep(m_conversionDelay);
uint16_t value = i2c->readWordReg(ADS1X15_REG_POINTER_CONVERT);
value = value >> m_bitShift;
return swapWord(value);
}
float
ADS1015::getVoltage(unsigned int input) {
ADSMUXMODE mode = getMuxMode(input);
return getSample(mode);
}
//Private functions
float
ADS1015::getMultiplier(void){
@@ -99,4 +152,20 @@ ADS1015::setDelay(){
}
}
ADS1X15::ADSMUXMODE
ADS1015::getMuxMode(unsigned int input) {
ADS1X15::ADSMUXMODE mode;
switch (input) {
case 0:
return SINGLE_0;
case 1:
return SINGLE_1;
case 2:
return SINGLE_2;
case 3:
return SINGLE_3;
default:
UPM_THROW("Invalid input");
}
}