## Platform Support
The following shows I2C module APIs available for each platform.
| | Linux
(Ubuntu) | Raspbian
(Raspberry Pi) | NuttX
(STM32F4-Discovery) | TizenRT
(Artik053) |
| :---: | :---: | :---: | :---: | :---: |
| i2c.open | O | O | O | O |
| i2cbus.read | O | O | O | O |
| i2cbus.write | O | O | O | O |
| i2cbus.close | O | O | O | O |
# I2C
The I2C class supports the I2C protocol. I2C bus has two signals - SDA and SCL.
### new I2C()
Returns with an I2C object.
**Example**
```js
var I2C = require('i2c');
var i2c = new I2C();
```
### i2c.open(configuration[, callback])
* `configuration` {Object} Configuration for open I2CBus.
* `device` {string(linux)|number(NuttX)} Device path.
* `bus` {number} The specified bus number. (TizenRT only)
* `address` {number} Device address.
* `callback` {Function}
* `err` {Error|null}
* Returns: {Object} An instance of I2CBus.
Get I2CBus object with configuration.
**Example**
```js
var I2C = require('i2c');
var i2c = new I2C();
var i2c_bus = i2c.open({device: '/dev/i2c-1', address: 0x23}, function(err) {
if (err) {
throw err;
}
});
```
## Class: I2CBus
### i2cbus.read(length[, callback])
* `length` {number} Number of bytes to read.
* `callback` {Function}
* `err` {Error|null}
* `res` {Array} Array of bytes.
Read bytes from I2C device.
**Example**
```js
var I2C = require('i2c');
var i2c = new I2C();
var i2c_bus = i2c.open({device: '/dev/i2c-1', address: 0x23});
i2c_bus.read(2, function(err, res) {
if (!err) {
console.log('read result: ' + res);
}
});
```
### i2cbus.write(bytes[, callback])
* `bytes` {Array} Array of bytes to write.
* `callback` {Function}
* `err` {Error|null}
Write bytes to I2C device.
**Example**
```js
var I2C = require('i2c');
var i2c = new I2C();
var i2c_bus = i2c.open({device: '/dev/i2c-1', address: 0x23});
i2c_bus.write([0x10], function(err) {
if(!err) {
console.log('write done');
}
});
```
### i2cbus.close()
Close I2C device.
**Example**
```js
var I2C = require('i2c');
var i2c = new I2C();
var i2c_bus = i2c.open({device: '/dev/i2c-1', address: 0x23});
i2c_bus.close();
```