Dependencies:   I2CMotor I2CServo Robot XBee

Dependents:   OBROT_ALL

Committer:
inst
Date:
Fri Aug 21 04:51:59 2015 +0000
Revision:
1:01d881dc1170
Child:
2:6c60a3006881
y evol

Who changed what in which revision?

UserRevisionLine numberNew contents of line
inst 1:01d881dc1170 1 #ifndef INCLUDED_I2CDEVICE_H
inst 1:01d881dc1170 2 #define INCLUDED_I2CDEVICE_H
inst 1:01d881dc1170 3
inst 1:01d881dc1170 4 #include "mbed.h"
inst 1:01d881dc1170 5
inst 1:01d881dc1170 6 class I2CDevice{
inst 1:01d881dc1170 7 public:
inst 1:01d881dc1170 8 static void initI2C( PinName sda, PinName scl ){
inst 1:01d881dc1170 9 mI2C = new I2C( sda, scl );
inst 1:01d881dc1170 10 }
inst 1:01d881dc1170 11
inst 1:01d881dc1170 12 I2CDevice( char address ) : mAddress( address ){
inst 1:01d881dc1170 13 }
inst 1:01d881dc1170 14
inst 1:01d881dc1170 15 virtual void write() = 0;
inst 1:01d881dc1170 16 virtual void read() = 0;
inst 1:01d881dc1170 17
inst 1:01d881dc1170 18 void write( char* data, size_t len ) const{
inst 1:01d881dc1170 19 mI2C->write( mAddress, data, len );
inst 1:01d881dc1170 20 }
inst 1:01d881dc1170 21 void read( char* data, size_t len ) const{
inst 1:01d881dc1170 22 mI2C->read( mAddress, data, len );
inst 1:01d881dc1170 23 }
inst 1:01d881dc1170 24
inst 1:01d881dc1170 25 void writeReg( char devAddr, char regAddr, char data ){
inst 1:01d881dc1170 26 char d[ 2 ] = { regAddr, data };
inst 1:01d881dc1170 27 mI2C->write( devAddr, d, 2 );
inst 1:01d881dc1170 28 }
inst 1:01d881dc1170 29
inst 1:01d881dc1170 30 void readReg( char devAddr, char regAddr, char* data, size_t len ){
inst 1:01d881dc1170 31 regAddr |= 0x80;
inst 1:01d881dc1170 32 mI2C->write( devAddr, &regAddr, 1, true );
inst 1:01d881dc1170 33 mI2C->read( devAddr | 1, data, len );
inst 1:01d881dc1170 34 }
inst 1:01d881dc1170 35
inst 1:01d881dc1170 36 static I2C* mI2C;
inst 1:01d881dc1170 37 protected:
inst 1:01d881dc1170 38 const char mAddress;
inst 1:01d881dc1170 39 };
inst 1:01d881dc1170 40
inst 1:01d881dc1170 41 #endif