Dependencies:   I2CMotor I2CServo Robot XBee

Dependents:   OBROT_ALL

I2CDevice.h

Committer:
inst
Date:
2015-08-21
Revision:
1:01d881dc1170
Child:
2:6c60a3006881

File content as of revision 1:01d881dc1170:

#ifndef INCLUDED_I2CDEVICE_H
#define INCLUDED_I2CDEVICE_H

#include "mbed.h"

class I2CDevice{
public:
    static void initI2C( PinName sda, PinName scl ){
        mI2C = new I2C( sda, scl );
    }

    I2CDevice( char address ) : mAddress( address ){
    }
    
    virtual void write() = 0;
    virtual void read() = 0;
    
    void write( char* data, size_t len ) const{
        mI2C->write( mAddress, data, len );
    }
    void read( char* data, size_t len ) const{
        mI2C->read( mAddress, data, len );
    }
    
    void writeReg( char devAddr, char regAddr, char data ){
        char d[ 2 ] = { regAddr, data };
        mI2C->write( devAddr, d, 2 );
    }
    
    void readReg( char devAddr, char regAddr, char* data, size_t len ){
        regAddr |= 0x80;
        mI2C->write( devAddr, &regAddr, 1, true );
        mI2C->read( devAddr | 1, data, len );
    }
    
    static I2C* mI2C;
protected:
    const char mAddress;
};

#endif