Class for making communication easier from code to i2c connected Rohm/Kionix sensors. Maybe could be used later also for abstracting Arduino/mbed os. Code ported from 'C'-library rohm-sensor-hal.

Dependents:   kionix-kx123-hello rohm-bh1790glc-hello simple-sensor-client rohm-SensorShield-example

Fork of rohm-sensor-hal by Rohm

Revision:
8:dea50f607a45
Child:
9:51c7b97b6a7d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/RegisterWriter/RegisterWriter.h	Thu Sep 29 15:10:08 2016 +0000
@@ -0,0 +1,62 @@
+/*   Copyright 2016 Rohm Semiconductor
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+#ifndef i2c_common_pp_h
+#define i2c_common_pp_h
+
+#include "rohm_hal2.h"       //types, DEBUG_print*, USE_*_HARDWARE_I2C
+
+class RegisterWriter
+{
+public:
+    /**
+    * Use pre-instantiated I2C instance for hal.
+    *
+    * @param i2c_obj pre-instantiated i2c object.
+    */
+    RegisterWriter(I2C &i2c_obj);
+
+    /**
+    * Create a i2c instance which is connected to specified I2C pins.
+    *
+    * @param sda SDA pin
+    * @param sdl SCL pin
+    */
+    RegisterWriter(PinName sda = I2C_SDA, PinName scl = I2C_SCL);
+
+    /**
+    * RegisterWriter destructor
+    */
+    ~RegisterWriter();
+
+    /**
+    * read/write commands for sensor registers
+    */
+    uint8_t read_register(uint8_t sad, uint8_t reg, uint8_t* buf, uint8_t buf_len);
+    uint8_t read_fifo_register(uint8_t sad, uint8_t reg, uint8_t* buf, uint8_t buf_len);
+    void write_register(uint8_t sad, uint8_t reg, uint8_t* data, uint8_t data_len);
+    void write_register(uint8_t sad, uint8_t reg, uint8_t data);
+    bool change_bits(uint8_t sad, uint8_t reg, uint8_t mask, uint8_t bits);
+
+private:
+    I2C i2c_bus;
+    bool self_created_i2c;
+};
+
+
+
+
+#endif
+
+