Files

52 lines
1.5 KiB
JavaScript

'use strict';
const i2c = require('../');
const DS1621_ADDR = 0x48;
const DS1621_CMD_ACCESS_TH = 0xa1;
const DS1621_CMD_ACCESS_TL = 0xa2;
const TSL2561_ADDR = 0x39;
const TSL2561_CMD = 0x80;
const TSL2561_REG_ID = 0x0a;
const useBusMoreThanMaxFdTimes = _ => {
// Assuming that less than 2000 files can be opened at the same time,
// open and close /dev/i2c-1 2000 times to make sure it works and to ensure
// that file descriptors are being freed.
for (let i = 1; i <= 2000; i += 1) {
const i2c1 = i2c.openSync(1);
i2c1.readWordSync(DS1621_ADDR, DS1621_CMD_ACCESS_TL);
i2c1.closeSync();
}
};
const useMultipleObjectsForSameBusConcurrently = _ => {
const buses = [];
// Make sure many Bus objects can be opened and used for the same I2C bus at
// the same time.
for (let i = 1; i <= 128; i += 1) {
buses.push(i2c.openSync(1));
}
buses.forEach(bus => bus.readWordSync(DS1621_ADDR, DS1621_CMD_ACCESS_TL));
buses.forEach(bus => bus.closeSync());
};
const useTwoObjectsForSameBusConcurrently = _ => {
const ds1621 = i2c.openSync(1);
const tsl2561 = i2c.openSync(1);
const ds1621TempHigh = ds1621.readWordSync(DS1621_ADDR, DS1621_CMD_ACCESS_TH);
const tsl2561Id = tsl2561.readByteSync(TSL2561_ADDR, TSL2561_CMD | TSL2561_REG_ID);
console.log(' ds1621TempHigh: ' + ds1621TempHigh);
console.log(' tsl2561Id: ' + tsl2561Id);
};
useBusMoreThanMaxFdTimes();
useMultipleObjectsForSameBusConcurrently();
useTwoObjectsForSameBusConcurrently();
console.log('ok - sync-many-instances');