Adaptation for PCA9548 Nxp I2C switch
Fork of PCA9547 by
Diff: PCA9547.cpp
- Revision:
- 5:f4f72501148a
- Parent:
- 4:3c0af4c37587
- Child:
- 6:33ef755248e0
diff -r 3c0af4c37587 -r f4f72501148a PCA9547.cpp --- a/PCA9547.cpp Tue Jul 01 00:37:01 2014 +0000 +++ b/PCA9547.cpp Mon Feb 23 06:25:45 2015 +0000 @@ -17,7 +17,15 @@ #include "PCA9547.h" -PCA9547::PCA9547( PinName sda, PinName scl, char i2c_address ) : i2c( sda, scl ), _i2c_addr( i2c_address ) +PCA9547::PCA9547( PinName sda, PinName scl, char i2c_address ) + : i2c_p( new I2C( sda, scl ) ), i2c( *i2c_p ), i2c_addr( i2c_address ) +{ + // do nothing. + // leave it in default state. +} + +PCA9547::PCA9547( I2C &i2c_, char i2c_address ) + : i2c_p( NULL ), i2c( i2c_ ), i2c_addr( i2c_address ) { // do nothing. // leave it in default state. @@ -25,19 +33,20 @@ PCA9547::~PCA9547() { - + if ( NULL != i2c_p ) + delete i2c_p; } void PCA9547::select( char channel ) { char data = 0x08 | channel; - i2c.write( _i2c_addr, &data, 1 ); + i2c.write( i2c_addr, &data, 1 ); } void PCA9547::disable( void ) { char data = 0x00; - i2c.write( _i2c_addr, &data, 1 ); + i2c.write( i2c_addr, &data, 1 ); }