test version 0.2
Dependents: SC18IS606_Hello SC18IS606_EEPROM_access_test SC18IS606_OS6_Hello
Diff: SC18IS606.cpp
- Revision:
- 5:436b2c7854e8
- Parent:
- 4:ac0aef91fd94
- Child:
- 6:cfe7ec4f2b59
diff -r ac0aef91fd94 -r 436b2c7854e8 SC18IS606.cpp --- a/SC18IS606.cpp Sun Jul 25 08:30:08 2021 +0000 +++ b/SC18IS606.cpp Wed Jul 28 01:26:27 2021 +0000 @@ -32,50 +32,63 @@ int SC18IS606::init( void ) { + int err; + wait_transfer_completion = NULL; - clear_interrupt(); + err = clear_interrupt(); - return 0; // dummy + return err; } int SC18IS606::transfer( int slave_select_num, char *send_data_ptr, int length ) { char *p; + int err; + p = new char[ length + 1 ]; *p = SPI_read_and_write | (0x1 << slave_select_num); memcpy( p + 1, send_data_ptr, length ); - i2c.write( device_address, p, length + 1 ); + err = i2c.write( device_address, p, length + 1 ); delete[] p; + if ( err ) + return err; + if ( NULL != wait_transfer_completion ) (*wait_transfer_completion)(); - return 0; // dummy + return err; } int SC18IS606::read_buffer( char *receive_data_ptr, int length ) { + int err; + if ( receive_data_ptr ) - i2c.read( device_address, receive_data_ptr, length ); + err = i2c.read( device_address, receive_data_ptr, length ); - return 0; // dummy + return err; } int SC18IS606::config( FunctionID fid, char data ) { char s[ 2 ]; + int err; + s[ 0 ] = fid; s[ 1 ] = data; - i2c.write( device_address, s, sizeof( s ) ); + err = i2c.write( device_address, s, sizeof( s ) ); - return 0; // dummy + return err; } int SC18IS606::clear_interrupt( void ) { char c = Clear_Interrupt; - i2c.write( device_address, &c, sizeof( c ) ); + int err; + + err = i2c.write( device_address, &c, sizeof( c ) ); - return 0; // dummy + return err; }