summaryrefslogtreecommitdiff
path: root/peripheral/libupm/src/ads1x15/ads1x15.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'peripheral/libupm/src/ads1x15/ads1x15.cxx')
-rw-r--r--peripheral/libupm/src/ads1x15/ads1x15.cxx187
1 files changed, 0 insertions, 187 deletions
diff --git a/peripheral/libupm/src/ads1x15/ads1x15.cxx b/peripheral/libupm/src/ads1x15/ads1x15.cxx
deleted file mode 100644
index 4a1ea9d..0000000
--- a/peripheral/libupm/src/ads1x15/ads1x15.cxx
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Author: Marc Graham <marc@m2ag.net>
- * Copyright (c) 2015 Intel Corporation.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-#include "ads1x15.h"
-
-#include <unistd.h>
-
-using namespace upm;
-
-ADS1X15::ADS1X15(int bus, uint8_t address){
-
- if(!(i2c = new mraa::I2c(bus))){
- throw std::invalid_argument(std::string(__FUNCTION__) +": I2c.init() failed");
- return;
- }
-
- if((i2c->address(address) != mraa::SUCCESS)){
- throw std::invalid_argument(std::string(__FUNCTION__) + ": I2c.address() failed");
- return;
- }
-
- if(i2c->frequency( mraa::I2C_FAST) != mraa::SUCCESS){
- throw std::invalid_argument(std::string(__FUNCTION__) + ": I2c.frequency(I2C_FAST) failed");
- return;
- }
- //Will be reset by sub class.
- m_bitShift = 0;
- m_conversionDelay = .001;
- m_config_reg = 0x0000;
-}
-
-ADS1X15::~ADS1X15(){}
-
-float
-ADS1X15::getSample(ADSMUXMODE mode){
- updateConfigRegister((m_config_reg & ~ADS1X15_MUX_MASK) | mode, true);
- usleep(m_conversionDelay);
- return getLastSample();
-}
-
-float
-ADS1X15::getLastSample(int reg){
- uint16_t value = i2c->readWordReg(reg);
- bool neg = false;
- value = swapWord(value);
- if(value & 0x8000){
- neg = true;
- value = ~value;
- }
- if(m_name == "ADS1015") value = value >> m_bitShift;
- if(neg) return 0.0 - value * getMultiplier();
- else return value * getMultiplier();
-}
-
-void
-ADS1X15::setGain(ADSGAIN gain){
- updateConfigRegister((m_config_reg & ~ADS1X15_PGA_MASK) | gain);
-}
-
-void
-ADS1X15::setSPS(ADSSAMPLERATE rate){
- updateConfigRegister((m_config_reg & ~ADS1X15_DR_MASK) | rate);
-}
-
-void
-ADS1X15::setCompMode(bool mode){
- if(mode) updateConfigRegister((m_config_reg & ~ADS1X15_CMODE_MASK));
- else updateConfigRegister((m_config_reg & ~ADS1X15_CMODE_MASK) | ADS1X15_CMODE_WINDOW);
-}
-
-void
-ADS1X15::setCompPol(bool mode){
- if(!mode) updateConfigRegister((m_config_reg & ~ADS1X15_CPOL_MASK));
- else updateConfigRegister((m_config_reg & ~ADS1X15_CPOL_MASK) | ADS1X15_CPOL_ACTVHI);
-}
-
-void
-ADS1X15::setCompLatch(bool mode){
- if(mode) updateConfigRegister((m_config_reg & ~ADS1X15_CLAT_MASK));
- else updateConfigRegister((m_config_reg & ~ADS1X15_CLAT_MASK) | ADS1X15_CLAT_LATCH);
-}
-
-void
-ADS1X15::setCompQue(ADSCOMP mode){
- updateConfigRegister((m_config_reg & ~ADS1X15_CQUE_MASK) | mode);
-}
-
-void
-ADS1X15::setContinuous(bool mode){
- if(mode) updateConfigRegister((m_config_reg & ~ADS1X15_MODE_MASK));
- else updateConfigRegister((m_config_reg & ~ADS1X15_MODE_MASK) | ADS1X15_MODE_SINGLE);
-}
-
-float
-ADS1X15::getThresh(ADSTHRESH reg){
- if( THRESH_HIGH && THRESH_LOW) return getLastSample(reg);
- else return 0.0;
-}
-
-void
-ADS1X15::setThresh(ADSTHRESH reg, float value){
- uint16_t set_value;
- switch((int)reg){
- case 4: //set conversion_rdy operation
- if(i2c->writeWordReg(ADS1X15_REG_POINTER_LOWTHRESH, 0x0000) != mraa::SUCCESS){
- throw std::invalid_argument(std::string(__FUNCTION__) + ": I2c.write() failed");
- return;
- }
- if(i2c->writeWordReg(ADS1X15_REG_POINTER_HITHRESH, 0x0080) != mraa::SUCCESS){
- throw std::invalid_argument(std::string(__FUNCTION__) + ": I2c.write() failed");
- return;
- }
- break;
- case 2:
- case 3:
- set_value = value / getMultiplier();
- set_value = set_value << m_bitShift;
- if(i2c->writeWordReg(reg, swapWord(set_value)) != mraa::SUCCESS){
- throw std::invalid_argument(std::string(__FUNCTION__) + ": I2c.write() failed");
- return;
- }
- break;
- case 5: //set default
- default:
- if(i2c->writeWordReg(ADS1X15_REG_POINTER_LOWTHRESH, 0x0080) != mraa::SUCCESS){
- throw std::invalid_argument(std::string(__FUNCTION__) + ": I2c.write() failed");
- return;
- }
- if(i2c->writeWordReg(ADS1X15_REG_POINTER_HITHRESH, 0xF07F) != mraa::SUCCESS){
- throw std::invalid_argument(std::string(__FUNCTION__) + ": I2c.write() failed");
- return;
- }
- break;
- }
-}
-
-
-//Private functions
-void
-ADS1X15::getCurrentConfig(){
- m_config_reg = i2c->readWordReg(ADS1X15_REG_POINTER_CONFIG);
- m_config_reg = swapWord(m_config_reg);
- setDelay();
-}
-
-void
-ADS1X15::updateConfigRegister(uint16_t update, bool read){
- uint16_t temp = update;
- //Mask out read bit if we are just updating the configuration.
- if(!read) temp = update & 0x7FFF;
- if(i2c->writeWordReg(ADS1X15_REG_POINTER_CONFIG, swapWord(temp)) != mraa::SUCCESS){
- throw std::invalid_argument(std::string(__FUNCTION__) + ": I2c.write() failed");
- return;
- }
- //If we update the configuration re-set the in memory copy.
- if(!read) getCurrentConfig();
-}
-
-uint16_t
-ADS1X15::swapWord(uint16_t value){
- uint16_t res = value;
- return ((res & 0xFF) << 8) | ((res >> 8 ) & 0xFF);
-}
-
-