library to access typical i2c device

i2c_general_io.h

Committer:
j_rocket_boy
Date:
2018-07-11
Revision:
3:648d68018302
Parent:
1:e7e87f75c0d5

File content as of revision 3:648d68018302:

// -*- coding: utf-8 -*-
/**
 @file      i2c_general_io.h
 @brief     This is a library for accessing registers of a typical i2c sensor to set or read measurement value.
 
 @author    D.Nakayama
 @version   1.0
 @date      2018-07-08  D.Nakayama  Written for C++/mbed.
 
 
 @see 
 Copyright (C) 2018 D.Nakayama.
 Released under the MIT license.
 http://opensource.org/licenses/mit-license.php
 
*/

#ifndef INCLUDED_i2c_genela_io_h_
#define INCLUDED_i2c_genela_io_h_
#include "mbed.h"

/**
    @class  GEN_I2C
    @brief  Class for accessing a typical sensor with i2c
*/
class GEN_I2C{

    public:
    
    /**
         @brief Create a new i2c sensor.
         @param sda   SDA pin name (Defined in PinName.h)
         @param sck   SCK pin name (Defined in PinName.h)
    */
    GEN_I2C(PinName sda, PinName sck);
    /**
         @brief Create a new i2c sensor.
         @param &i2c_obj   i2c name
    */
    GEN_I2C(I2C &i2c_obj);
    
    /**
         @brief Disable the i2c sensor.
         @param No parameters.
    */
    virtual ~GEN_I2C();


    //multi bytes func
    /**
        @brief multible read register.
        @param[in]  Device_add  Device i2c address(8bit)
        @param[in]  reg_add     register address(8bit)
        @param[out] *data       read data array
        @param[in]  n           Number of register reads
        @return int read result(define mbed(i2c))
    */
    virtual int read_reg(char Device_add, char reg_add, char *data, int n);
    
    //single byte func
    /**
        @brief single read register.
        @param[in]  Device_add  Device i2c address(8bit)
        @param[in]  reg_add     register address(8bit)
        @return char read data
    */
    virtual char read_reg(char Device_add, char reg_add);

    /**
        @brief single write register.
        @param[in]  Device_add  Device i2c address(8bit)
        @param[in]  reg_add     register address(8bit)
        @param[in]  data        write data
        @return int write result(define mbed(i2c))
    */
    virtual int write_reg(char Device_add, char reg_add, char data);
    
    private:
    I2C *i2c_p;
    I2C &i2c;
    
};

#endif