52 lines
1.5 KiB
JavaScript
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');
|
|
|