Dependencies:   mbed

Committer:
okano
Date:
Sat Jan 23 13:45:32 2010 +0000
Revision:
0:188e389bc1b7

        

Who changed what in which revision?

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