Dependencies:   mbed

Committer:
okano
Date:
Sat Jan 23 13:45:00 2010 +0000
Revision:
0:b1a5601983d4

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okano 0:b1a5601983d4 1 /*
okano 0:b1a5601983d4 2 * I2C device base class
okano 0:b1a5601983d4 3 *
okano 0:b1a5601983d4 4 * A base class for all I2C devices.
okano 0:b1a5601983d4 5 * This manages the device address and transfers
okano 0:b1a5601983d4 6 *
okano 0:b1a5601983d4 7 * Copyright (c) 2010 Tedd OKANO
okano 0:b1a5601983d4 8 * Released under the MIT License: http://mbed.org/license/mit
okano 0:b1a5601983d4 9 *
okano 0:b1a5601983d4 10 * revision 1.0 15-Jan-2010 a. 1st release
okano 0:b1a5601983d4 11 * revision 1.1 23-Jan-2010 a. The word "MBED_I2cBusDevice" is used instead of _I2cBusDevice_ to avoid symbol conflict
okano 0:b1a5601983d4 12 * b. copyright notice added
okano 0:b1a5601983d4 13 */
okano 0:b1a5601983d4 14
okano 0:b1a5601983d4 15 #ifndef MBED_I2cBusDevice
okano 0:b1a5601983d4 16 #define MBED_I2cBusDevice
okano 0:b1a5601983d4 17
okano 0:b1a5601983d4 18 #include "mbed.h"
okano 0:b1a5601983d4 19
okano 0:b1a5601983d4 20 class I2cBusDevice {
okano 0:b1a5601983d4 21 public:
okano 0:b1a5601983d4 22
okano 0:b1a5601983d4 23 I2cBusDevice( I2C *i2c, char dev_address ) {
okano 0:b1a5601983d4 24 bus = i2c;
okano 0:b1a5601983d4 25 device = dev_address;
okano 0:b1a5601983d4 26 }
okano 0:b1a5601983d4 27
okano 0:b1a5601983d4 28 ~I2cBusDevice() {
okano 0:b1a5601983d4 29 }
okano 0:b1a5601983d4 30
okano 0:b1a5601983d4 31 int write( char *data, int length ) {
okano 0:b1a5601983d4 32 return ( bus->write( device, data, length) );
okano 0:b1a5601983d4 33 }
okano 0:b1a5601983d4 34
okano 0:b1a5601983d4 35 int read( char *data, int length ) {
okano 0:b1a5601983d4 36 return ( bus->read( device, data, length) );
okano 0:b1a5601983d4 37 }
okano 0:b1a5601983d4 38
okano 0:b1a5601983d4 39 int read( char reg_ptr, char *data, int length ) {
okano 0:b1a5601983d4 40 if ( bus->write( device, &reg_ptr, 1 ) )
okano 0:b1a5601983d4 41 return ( 1 );
okano 0:b1a5601983d4 42
okano 0:b1a5601983d4 43 if ( bus->read( device, data, length ) )
okano 0:b1a5601983d4 44 return ( 1 );
okano 0:b1a5601983d4 45
okano 0:b1a5601983d4 46 return ( 0 );
okano 0:b1a5601983d4 47 }
okano 0:b1a5601983d4 48
okano 0:b1a5601983d4 49 protected:
okano 0:b1a5601983d4 50 I2C *bus;
okano 0:b1a5601983d4 51 char device;
okano 0:b1a5601983d4 52
okano 0:b1a5601983d4 53 private:
okano 0:b1a5601983d4 54 static char i2c_error;
okano 0:b1a5601983d4 55 }
okano 0:b1a5601983d4 56 ;
okano 0:b1a5601983d4 57
okano 0:b1a5601983d4 58 #endif