test version 0.2

Dependents:   SC18IS606_Hello SC18IS606_EEPROM_access_test SC18IS606_OS6_Hello

Revision:
1:b44f801ac9f2
Child:
2:4e64923032ad
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SC18IS606.cpp	Tue Jul 13 10:45:46 2021 +0000
@@ -0,0 +1,72 @@
+/*
+ *  SC18IS606 library
+ *
+ *  @author     Akifumi (Tedd) OKANO, NXP Semiconductors
+ *  @version    0.1
+ *  @date       13-July-2021
+ *
+ *  SC18IS606 is an "I2C-bus to SPI bridge"
+ *  http://www.nxp.com/ (product infomation page will be updated later)
+ */
+
+#include    "mbed.h"
+#include    "SC18IS606.h"
+
+SC18IS606::SC18IS606( PinName sda, PinName scl, char i2c_address )
+    : i2c_p( new I2C( sda, scl ) ), i2c( *i2c_p ), device_address( i2c_address )
+{
+    init();
+}
+
+SC18IS606::SC18IS606( I2C &i2c_, char i2c_address )
+    : i2c_p( NULL ), i2c( i2c_ ), device_address( i2c_address )
+{
+    init();
+}
+
+SC18IS606::~SC18IS606()
+{
+    if ( NULL != i2c_p )
+        delete  i2c_p;
+}
+
+int SC18IS606::init( void )
+{
+    return 0;   //  dummy
+}
+
+
+int SC18IS606::transfer( char *send_data_ptr, char *receive_data_ptr, int length )
+{
+    char    *p;
+    p   = new char[ length + 1 ];
+    
+    *p  = SPI_read_and_write;
+    memcpy( p + 1, send_data_ptr, length );
+    i2c.write( device_address, p, length + 1 );
+    delete[]    p;
+    
+    if ( receive_data_ptr )
+        i2c.read( device_address, receive_data_ptr, length );
+    
+    return 0;   //  dummy
+}
+
+
+int SC18IS606::config( FunctionID fid, char data )
+{
+    char    s[ 2 ];
+    s[ 0 ]  = fid;
+    s[ 1 ]  = data;
+    i2c.write( device_address, s, sizeof( s ) );
+    
+    return 0;   //  dummy
+}
+
+int SC18IS606::clear_interrupt( void )
+{
+    char    c   = Clear_Interrupt;
+    i2c.write( device_address, &c, sizeof( c ) );    
+
+    return 0;   //  dummy
+}