Tedd OKANO
/
TempSensor_LM75B
I2cBusDevice.h@0:b1a5601983d4, 2010-01-23 (annotated)
- Committer:
- okano
- Date:
- Sat Jan 23 13:45:00 2010 +0000
- Revision:
- 0:b1a5601983d4
Who changed what in which revision?
User | Revision | Line number | New 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, ®_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 |