GSMA version

Dependencies:   FXOS8700CQ mbed

Fork of AvnetATT_shape_hackathon by Rick McConney

Revision:
46:733edf15f9e8
Parent:
45:fe90f1fcb4e0
--- a/hts221_driver.cpp	Wed Nov 30 14:50:16 2016 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,249 +0,0 @@
-
-#include "HTS221.h"
-
-
-// ------------------------------------------------------------------------------
-//jmf  -- define I2C pins and functions to read & write to I2C device
-
-#include <string>
-#include "mbed.h"
-
-#include "hardware.h"
-//I2C i2c(PTC11, PTC10);    //SDA, SCL -- define the I2C pins being used. Defined in a 
-//common locatioin since sensors also use I2C
-
-// Read a single unsigned char from addressToRead and return it as a unsigned char
-unsigned char HTS221::readRegister(unsigned char slaveAddress, unsigned char ToRead)
-{
-    char data = ToRead;
-
-    i2c.write(slaveAddress, &data, 1, 1);
-    i2c.read(slaveAddress, &data, 1, 0);
-    return data;
-}
-
-// Writes a single unsigned char (dataToWrite) into regToWrite
-int HTS221::writeRegister(unsigned char slaveAddress, unsigned char regToWrite, unsigned char dataToWrite)
-{
-    const char data[] = {regToWrite, dataToWrite};
-
-    return i2c.write(slaveAddress,data,2,0);
-}
-
-
-//jmf end
-// ------------------------------------------------------------------------------
-
-//static inline int humidityReady(uint8_t data) {
-//    return (data & 0x02);
-//}
-//static inline int temperatureReady(uint8_t data) {
-//    return (data & 0x01);
-//}
-
-
-HTS221::HTS221(void) : _address(HTS221_ADDRESS)
-{
-    _temperature = 0;
-    _humidity = 0;
-}
-
-
-int HTS221::begin(void)
-{
-    uint8_t data;
-
-    data = readRegister(_address, WHO_AM_I);
-    if (data == WHO_AM_I_RETURN){
-        if (activate()){
-            storeCalibration();
-            return data;
-        }
-    }
-
-    return 0;
-}
-
-int
-HTS221::storeCalibration(void)
-{
-    uint8_t data;
-    uint16_t tmp;
-
-    for (int reg=CALIB_START; reg<=CALIB_END; reg++) {
-        if ((reg!=CALIB_START+8) && (reg!=CALIB_START+9) && (reg!=CALIB_START+4)) {
-
-            data = readRegister(HTS221_ADDRESS, reg);
-
-            switch (reg) {
-            case CALIB_START:
-                _h0_rH = data;
-                break;
-            case CALIB_START+1:
-            _h1_rH = data;
-            break;
-            case CALIB_START+2:
-            _T0_degC = data;
-            break;
-            case CALIB_START+3:
-            _T1_degC = data;
-            break;
-
-            case CALIB_START+5:
-            tmp = _T0_degC;
-            _T0_degC = (data&0x3)<<8;
-            _T0_degC |= tmp;
-
-            tmp = _T1_degC;
-            _T1_degC = ((data&0xC)>>2)<<8;
-            _T1_degC |= tmp;
-            break;
-            case CALIB_START+6:
-            _H0_T0 = data;
-            break;
-            case CALIB_START+7:
-            _H0_T0 |= data<<8;
-            break;
-            case CALIB_START+0xA:
-            _H1_T0 = data;
-            break;
-            case CALIB_START+0xB:
-            _H1_T0 |= data <<8;
-            break;
-            case CALIB_START+0xC:
-            _T0_OUT = data;
-            break;
-            case CALIB_START+0xD:
-            _T0_OUT |= data << 8;
-            break;
-            case CALIB_START+0xE:
-            _T1_OUT = data;
-            break;
-            case CALIB_START+0xF:
-            _T1_OUT |= data << 8;
-            break;
-
-
-            case CALIB_START+8:
-            case CALIB_START+9:
-            case CALIB_START+4:
-            //DO NOTHING
-            break;
-
-            // to cover any possible error
-            default:
-                return false;
-            } /* switch */
-        } /* if */
-    }  /* for */
-    return true;
-}
-
-
-int
-HTS221::activate(void)
-{
-    uint8_t data;
-
-    data = readRegister(_address, CTRL_REG1);
-    data |= POWER_UP;
-    data |= ODR0_SET;
-    writeRegister(_address, CTRL_REG1, data);
-
-    return true;
-}
-
-
-int HTS221::deactivate(void)
-{
-    uint8_t data;
-
-    data = readRegister(_address, CTRL_REG1);
-    data &= ~POWER_UP;
-    writeRegister(_address, CTRL_REG1, data);
-    return true;
-}
-
-
-int
-HTS221::bduActivate(void)
-{
-    uint8_t data;
-
-    data = readRegister(_address, CTRL_REG1);
-    data |= BDU_SET;
-    writeRegister(_address, CTRL_REG1, data);
-
-    return true;
-}
-
-
-int
-HTS221::bduDeactivate(void)
-{
-    uint8_t data;
-
-    data = readRegister(_address, CTRL_REG1);
-    data &= ~BDU_SET;
-    writeRegister(_address, CTRL_REG1, data);
-    return true;
-}
-
-
-int
-HTS221::readHumidity(void)
-{
-    uint8_t data   = 0;
-    uint16_t h_out = 0;
-    double h_temp  = 0.0;
-    double hum     = 0.0;
-
-    data = readRegister(_address, STATUS_REG);
-
-    if (data & HUMIDITY_READY) {
-        data = readRegister(_address, HUMIDITY_H_REG);
-        h_out = data << 8;  // MSB
-        data = readRegister(_address, HUMIDITY_L_REG);
-        h_out |= data;      // LSB
-
-        // Decode Humidity
-        hum = ((int16_t)(_h1_rH) - (int16_t)(_h0_rH))/2.0;  // remove x2 multiple
-
-        // Calculate humidity in decimal of grade centigrades i.e. 15.0 = 150.
-        h_temp = (((int16_t)h_out - (int16_t)_H0_T0) * hum) / ((int16_t)_H1_T0 - (int16_t)_H0_T0);
-        hum    = ((int16_t)_h0_rH) / 2.0; // remove x2 multiple
-        _humidity = (int16_t)((hum + h_temp)); // provide signed % measurement unit
-    }
-    return _humidity;
-}
-
-
-
-double
-HTS221::readTemperature(void)
-{
-    uint8_t data   = 0;
-    uint16_t t_out = 0;
-    double t_temp  = 0.0;
-    double deg     = 0.0;
-
-    data = readRegister(_address, STATUS_REG);
-
-    if (data & TEMPERATURE_READY) {
-
-        data= readRegister(_address, TEMP_H_REG);
-        t_out = data  << 8; // MSB
-        data = readRegister(_address, TEMP_L_REG);
-        t_out |= data;      // LSB
-
-        // Decode Temperature
-        deg    = ((int16_t)(_T1_degC) - (int16_t)(_T0_degC))/8.0; // remove x8 multiple
-
-        // Calculate Temperature in decimal of grade centigrades i.e. 15.0 = 150.
-        t_temp = (((int16_t)t_out - (int16_t)_T0_OUT) * deg) / ((int16_t)_T1_OUT - (int16_t)_T0_OUT);
-        deg    = ((int16_t)_T0_degC) / 8.0;     // remove x8 multiple
-        _temperature = deg + t_temp;   // provide signed celsius measurement unit
-    }
-
-    return _temperature;
-}