James Devine / LPS25H

Dependents:   Cosmic_Pi_STM32_i2c

Files at this revision

API Documentation at this revision

Comitter:
pingu_98
Date:
Sun Jan 06 15:29:59 2019 +0000
Parent:
1:54e65e221cae
Commit message:
Modified I2C usage to be compatible with noncopy requirements of MBedOS 5.x

Changed in this revision

LPS25H.cpp Show annotated file Show diff for this revision Revisions of this file
LPS25H.h Show annotated file Show diff for this revision Revisions of this file
--- a/LPS25H.cpp	Wed Mar 29 10:25:38 2017 +0000
+++ b/LPS25H.cpp	Sun Jan 06 15:29:59 2019 +0000
@@ -19,42 +19,53 @@
 
 #include "LPS25H.h"
 
-LPS25H::LPS25H (PinName p_sda, PinName p_scl, uint8_t addr) : _i2c(p_sda, p_scl)
+/*LPS25H::LPS25H (PinName p_sda, PinName p_scl, uint8_t addr) : i2c_(p_sda, p_scl)
 {
     LPS25H_addr = addr;
     LPS25H_mode = FIFO_HW_FILTER;
     init();
 }
 
-LPS25H::LPS25H (PinName p_sda, PinName p_scl, uint8_t addr, uint8_t mode) : _i2c(p_sda, p_scl)
+LPS25H::LPS25H (PinName p_sda, PinName p_scl, uint8_t addr, uint8_t mode) : i2c_(p_sda, p_scl)
 {
     LPS25H_addr = addr;
     LPS25H_mode = mode;
     init();
 }
+*/
 
-LPS25H::LPS25H (I2C& p_i2c, uint8_t addr) : _i2c(p_i2c)
+/*
+Si7020::Si7020(I2C *i2c) :
+    i2c_(i2c)
 {
+    i2c_owner = false;
+}
+*/
+
+LPS25H::LPS25H (I2C *i2c, uint8_t addr) : i2c_(i2c)
+{
+    //i2c_owner = false;
     LPS25H_addr = addr;
     LPS25H_mode = FIFO_HW_FILTER;
     init();
 }
 
-LPS25H::LPS25H (I2C& p_i2c, uint8_t addr, uint8_t mode) : _i2c(p_i2c)
+/*
+LPS25H::LPS25H (I2C& pi2c_, uint8_t addr, uint8_t mode) : i2c_(pi2c_)
 {
     LPS25H_addr = addr;
     LPS25H_mode = mode;
     init();
 }
-
+*/
 /////////////// Initialize ////////////////////////////////
 void LPS25H::init(void)
 {
-    _i2c.frequency(100000);
+    //i2c_.frequency(100000);
     // Check acc is available of not
     dt[0] = LPS25H_WHO_AM_I;
-    _i2c.write(LPS25H_addr, dt, 1, true);
-    _i2c.read(LPS25H_addr, dt, 1, false);
+    i2c_->write(LPS25H_addr, dt, 1, true);
+    i2c_->read(LPS25H_addr, dt, 1, false);
     if (dt[0] == I_AM_LPS25H) {
         LPS25H_id = I_AM_LPS25H;
         LPS25H_ready = 1;
@@ -68,23 +79,23 @@
         // AN4450 April 2014 Rev1 P20/26, Filter enabling and suggested configuration
         dt[0] = LPS25H_RES_CONF;
         dt[1] = 0x05;
-        _i2c.write(LPS25H_addr, dt, 2, false);
+        i2c_->write(LPS25H_addr, dt, 2, false);
         dt[0] = LPS25H_FIFO_CTRL;
         dt[1] = 0xdf;
-        _i2c.write(LPS25H_addr, dt, 2, false);
+        i2c_->write(LPS25H_addr, dt, 2, false);
         dt[0] = LPS25H_CTRL_REG2;
         dt[1] = 0x40;
-        _i2c.write(LPS25H_addr, dt, 2, false);
+        i2c_->write(LPS25H_addr, dt, 2, false);
         dt[0] = LPS25H_CTRL_REG1;
         dt[1] = 0x90;
-        _i2c.write(LPS25H_addr, dt, 2, false);
+        i2c_->write(LPS25H_addr, dt, 2, false);
     } else {
         dt[0] = LPS25H_CTRL_REG2;
         dt[1] = 0x0;
-        _i2c.write(LPS25H_addr, dt, 2, false);       
+        i2c_->write(LPS25H_addr, dt, 2, false);       
         dt[0] = LPS25H_CTRL_REG1;
         dt[1] = CR_STD_SET;
-        _i2c.write(LPS25H_addr, dt, 2, false);
+        i2c_->write(LPS25H_addr, dt, 2, false);
     }
 }
 
@@ -97,12 +108,12 @@
         return;
     }
     dt[0] = LPS25H_PRESS_POUT_XL | 0x80;
-    _i2c.write(LPS25H_addr, dt, 1, true);
-    _i2c.read(LPS25H_addr, dt, 3, false);
+    i2c_->write(LPS25H_addr, dt, 1, true);
+    i2c_->read(LPS25H_addr, dt, 3, false);
     press = dt[2] << 16 | dt[1] << 8 | dt[0];
     dt[0] = LPS25H_TEMP_OUT_L | 0x80;
-    _i2c.write(LPS25H_addr, dt, 1, true);
-    _i2c.read(LPS25H_addr, dt, 2, false);
+    i2c_->write(LPS25H_addr, dt, 1, true);
+    i2c_->read(LPS25H_addr, dt, 2, false);
     temp = dt[1] << 8 | dt[0];
 }
 
@@ -122,15 +133,15 @@
 uint8_t LPS25H::read_id()
 {
     dt[0] = LPS25H_WHO_AM_I;
-    _i2c.write(LPS25H_addr, dt, 1, true);
-    _i2c.read(LPS25H_addr, dt, 1, false);
+    i2c_->write(LPS25H_addr, dt, 1, true);
+    i2c_->read(LPS25H_addr, dt, 1, false);
     return (uint8_t)dt[0];
 }
 
 /////////////// I2C Freq. /////////////////////////////////
 void LPS25H::frequency(int hz)
 {
-    _i2c.frequency(hz);
+    i2c_->frequency(hz);
 }
 
 /////////////// General purpose R/W ///////////////////////
@@ -138,8 +149,8 @@
 {
     if (LPS25H_ready == 1) {
         dt[0] = addr;
-        _i2c.write(LPS25H_addr, dt, 1, true);
-        _i2c.read(LPS25H_addr, dt, 1, false);
+        i2c_->write(LPS25H_addr, dt, 1, true);
+        i2c_->read(LPS25H_addr, dt, 1, false);
     } else {
         dt[0] = 0xff;
     }
@@ -151,6 +162,6 @@
     if (LPS25H_ready == 1) {
         dt[0] = addr;
         dt[1] = data;
-        _i2c.write(LPS25H_addr, dt, 2, false);
+        i2c_->write(LPS25H_addr, dt, 2, false);
     }
 }
--- a/LPS25H.h	Wed Mar 29 10:25:38 2017 +0000
+++ b/LPS25H.h	Sun Jan 06 15:29:59 2019 +0000
@@ -114,16 +114,16 @@
       * @param device address LPS25H(SA0=0 or 1), LPS25H_G_CHIP_ADDR or LPS25H_V_CHIP_ADDR
       * @param Operation mode FIFO_HW_FILTER(default) or FIFO_BYPASS (Option parameter)
       */
-    LPS25H(PinName p_sda, PinName p_scl, uint8_t addr);
-    LPS25H(PinName p_sda, PinName p_scl, uint8_t addr, uint8_t mode);
+    //LPS25H(PinName p_sda, PinName p_scl, uint8_t addr);
+    //LPS25H(PinName p_sda, PinName p_scl, uint8_t addr, uint8_t mode);
 
     /** Configure data pin (with other devices on I2C line)
       * @param I2C previous definition
       * @param device address LPS25H(SA0=0 or 1), LPS25H_G_CHIP_ADDR or LPS25H_V_CHIP_ADDR
       * @param Operation mode FIFO_HW_FILTER(default) or FIFO_BYPASS (Option parameter)
       */
-    LPS25H(I2C& p_i2c, uint8_t addr);
-    LPS25H(I2C& p_i2c, uint8_t addr, uint8_t mode);
+    LPS25H(I2C *i2c, uint8_t addr);
+    //LPS25H(I2C& p_i2c, uint8_t addr, uint8_t mode);
 
     /** Start convertion & data save
       * @param none
@@ -175,11 +175,12 @@
     void write_reg(uint8_t addr, uint8_t data);
 
 protected:
-    I2C _i2c;
+
 
     void init(void);
 
 private:
+    I2C *i2c_;
     char dt[6];            // working buffer
     uint8_t LPS25H_addr;   // Sensor address
     uint8_t LPS25H_id;     // ID