cdif-sensortag
Version:
CDIF BLE module for the TI SensorTag
413 lines (386 loc) • 13.9 kB
JavaScript
var util = require('util');
var async = require('async');
var SensorTag = require('./index');
var USE_READ = true;
SensorTag.discover(function(sensorTag) {
console.log('discovered: ' + sensorTag);
sensorTag.on('disconnect', function() {
console.log('disconnected!');
process.exit(0);
});
async.series([
function(callback) {
console.log('connectAndSetUp');
sensorTag.connectAndSetUp(callback);
},
function(callback) {
console.log('readDeviceName');
sensorTag.readDeviceName(function(error, deviceName) {
console.log('\tdevice name = ' + deviceName);
callback();
});
},
function(callback) {
console.log('readSystemId');
sensorTag.readSystemId(function(error, systemId) {
console.log('\tsystem id = ' + systemId);
callback();
});
},
function(callback) {
console.log('readSerialNumber');
sensorTag.readSerialNumber(function(error, serialNumber) {
console.log('\tserial number = ' + serialNumber);
callback();
});
},
function(callback) {
console.log('readFirmwareRevision');
sensorTag.readFirmwareRevision(function(error, firmwareRevision) {
console.log('\tfirmware revision = ' + firmwareRevision);
callback();
});
},
function(callback) {
console.log('readHardwareRevision');
sensorTag.readHardwareRevision(function(error, hardwareRevision) {
console.log('\thardware revision = ' + hardwareRevision);
callback();
});
},
function(callback) {
console.log('readSoftwareRevision');
sensorTag.readHardwareRevision(function(error, softwareRevision) {
console.log('\tsoftware revision = ' + softwareRevision);
callback();
});
},
function(callback) {
console.log('readManufacturerName');
sensorTag.readManufacturerName(function(error, manufacturerName) {
console.log('\tmanufacturer name = ' + manufacturerName);
callback();
});
},
function(callback) {
console.log('enableIrTemperature');
sensorTag.enableIrTemperature(callback);
},
function(callback) {
setTimeout(callback, 2000);
},
function(callback) {
if (USE_READ) {
console.log('readIrTemperature');
sensorTag.readIrTemperature(function(error, objectTemperature, ambientTemperature) {
console.log('\tobject temperature = %d °C', objectTemperature.toFixed(1));
console.log('\tambient temperature = %d °C', ambientTemperature.toFixed(1));
callback();
});
} else {
sensorTag.on('irTemperatureChange', function(objectTemperature, ambientTemperature) {
console.log('\tobject temperature = %d °C', objectTemperature.toFixed(1));
console.log('\tambient temperature = %d °C', ambientTemperature.toFixed(1))
});
console.log('setIrTemperaturePeriod');
sensorTag.setIrTemperaturePeriod(500, function(error) {
console.log('notifyIrTemperature');
sensorTag.notifyIrTemperature(function(error) {
setTimeout(function() {
console.log('unnotifyIrTemperature');
sensorTag.unnotifyIrTemperature(callback);
}, 5000);
});
});
}
},
function(callback) {
console.log('disableIrTemperature');
sensorTag.disableIrTemperature(callback);
},
function(callback) {
console.log('enableAccelerometer');
sensorTag.enableAccelerometer(callback);
},
function(callback) {
setTimeout(callback, 2000);
},
function(callback) {
if (USE_READ) {
console.log('readAccelerometer');
sensorTag.readAccelerometer(function(error, x, y, z) {
console.log('\tx = %d G', x.toFixed(1));
console.log('\ty = %d G', y.toFixed(1));
console.log('\tz = %d G', z.toFixed(1));
callback();
});
} else {
sensorTag.on('accelerometerChange', function(x, y, z) {
console.log('\tx = %d G', x.toFixed(1));
console.log('\ty = %d G', y.toFixed(1));
console.log('\tz = %d G', z.toFixed(1));
});
console.log('setAccelerometerPeriod');
sensorTag.setAccelerometerPeriod(500, function(error) {
console.log('notifyAccelerometer');
sensorTag.notifyAccelerometer(function(error) {
setTimeout(function() {
console.log('unnotifyAccelerometer');
sensorTag.unnotifyAccelerometer(callback);
}, 5000);
});
});
}
},
function(callback) {
console.log('disableAccelerometer');
sensorTag.disableAccelerometer(callback);
},
function(callback) {
console.log('enableHumidity');
sensorTag.enableHumidity(callback);
},
function(callback) {
setTimeout(callback, 2000);
},
function(callback) {
if (USE_READ) {
console.log('readHumidity');
sensorTag.readHumidity(function(error, temperature, humidity) {
console.log('\ttemperature = %d °C', temperature.toFixed(1));
console.log('\thumidity = %d %', humidity.toFixed(1));
callback();
});
} else {
sensorTag.on('humidityChange', function(temperature, humidity) {
console.log('\ttemperature = %d °C', temperature.toFixed(1));
console.log('\thumidity = %d %', humidity.toFixed(1));
});
console.log('setHumidityPeriod');
sensorTag.setHumidityPeriod(500, function(error) {
console.log('notifyHumidity');
sensorTag.notifyHumidity(function(error) {
setTimeout(function() {
console.log('unnotifyHumidity');
sensorTag.unnotifyHumidity(callback);
}, 5000);
});
});
}
},
function(callback) {
console.log('disableHumidity');
sensorTag.disableHumidity(callback);
},
function(callback) {
console.log('enableMagnetometer');
sensorTag.enableMagnetometer(callback);
},
function(callback) {
setTimeout(callback, 2000);
},
function(callback) {
if (USE_READ) {
console.log('readMagnetometer');
sensorTag.readMagnetometer(function(error, x, y, z) {
console.log('\tx = %d μT', x.toFixed(1));
console.log('\ty = %d μT', y.toFixed(1));
console.log('\tz = %d μT', z.toFixed(1));
callback();
});
} else {
sensorTag.on('magnetometerChange', function(x, y, z) {
console.log('\tx = %d μT', x.toFixed(1));
console.log('\ty = %d μT', y.toFixed(1));
console.log('\tz = %d μT', z.toFixed(1));
});
console.log('setMagnetometerPeriod');
sensorTag.setMagnetometerPeriod(500, function(error) {
console.log('notifyMagnetometer');
sensorTag.notifyMagnetometer(function(error) {
setTimeout(function() {
console.log('unnotifyMagnetometer');
sensorTag.unnotifyMagnetometer(callback);
}, 5000);
});
});
}
},
function(callback) {
console.log('disableMagnetometer');
sensorTag.disableMagnetometer(callback);
},
function(callback) {
console.log('enableBarometricPressure');
sensorTag.enableBarometricPressure(callback);
},
function(callback) {
setTimeout(callback, 2000);
},
function(callback) {
if (USE_READ) {
console.log('readBarometricPressure');
sensorTag.readBarometricPressure(function(error, pressure) {
console.log('\tpressure = %d mBar', pressure.toFixed(1));
callback();
});
} else {
sensorTag.on('barometricPressureChange', function(pressure) {
console.log('\tpressure = %d mBar', pressure.toFixed(1));
});
console.log('setBarometricPressurePeriod');
sensorTag.setBarometricPressurePeriod(500, function(error) {
console.log('notifyBarometricPressure');
sensorTag.notifyBarometricPressure(function(error) {
setTimeout(function() {
console.log('unnotifyBarometricPressure');
sensorTag.unnotifyBarometricPressure(callback);
}, 5000);
});
});
}
},
function(callback) {
console.log('disableBarometricPressure');
sensorTag.disableBarometricPressure(callback);
},
function(callback) {
console.log('enableGyroscope');
sensorTag.enableGyroscope(callback);
},
function(callback) {
setTimeout(callback, 2000);
},
function(callback) {
if (USE_READ) {
console.log('readGyroscope');
sensorTag.readGyroscope(function(error, x, y, z) {
console.log('\tx = %d °/s', x.toFixed(1));
console.log('\ty = %d °/s', y.toFixed(1));
console.log('\tz = %d °/s', z.toFixed(1));
callback();
});
} else {
sensorTag.on('gyroscopeChange', function(x, y, z) {
console.log('\tx = %d °/s', x.toFixed(1));
console.log('\ty = %d °/s', y.toFixed(1));
console.log('\tz = %d °/s', z.toFixed(1));
});
console.log('setGyroscopePeriod');
sensorTag.setGyroscopePeriod(500, function(error) {
console.log('notifyGyroscope');
sensorTag.notifyGyroscope(function(error) {
setTimeout(function() {
console.log('unnotifyGyroscope');
sensorTag.unnotifyGyroscope(callback);
}, 5000);
});
});
}
},
function(callback) {
console.log('disableGyroscope');
sensorTag.disableGyroscope(callback);
},
function(callback) {
if (sensorTag.type === 'cc2540') {
async.series([
function(callback) {
console.log('readTestData');
sensorTag.readTestData(function(error, data) {
console.log('\tdata = ' + data);
callback();
});
},
function(callback) {
console.log('readTestConfiguration');
sensorTag.readTestConfiguration(function(error, configuration) {
console.log('\tconfiguration = ' + configuration);
callback();
});
},
function() {
callback();
}
]);
} else if (sensorTag.type === 'cc2650') {
async.series([
function(callback) {
console.log('readIoData');
sensorTag.readIoData(function(error, value) {
console.log('\tdata = ' + value);
console.log('writeIoData');
sensorTag.writeIoData(value, callback);
});
},
function(callback) {
console.log('readIoConfig');
sensorTag.readIoConfig(function(error, value) {
console.log('\tconfig = ' + value);
console.log('writeIoConfig');
sensorTag.writeIoConfig(value, callback);
});
},
function(callback) {
console.log('enableLuxometer');
sensorTag.enableLuxometer(callback);
},
function(callback) {
setTimeout(callback, 2000);
},
function(callback) {
if (USE_READ) {
console.log('readLuxometer');
sensorTag.readLuxometer(function(error, lux) {
console.log('\tlux = %d', lux.toFixed(1));
callback();
});
} else {
sensorTag.on('luxometerChange', function(lux) {
console.log('\tlux = %d', lux.toFixed(1));
});
console.log('setLuxometer');
sensorTag.setLuxometerPeriod(500, function(error) {
console.log('notifyLuxometer');
sensorTag.notifyLuxometer(function(error) {
setTimeout(function() {
console.log('unnotifyLuxometer');
sensorTag.unnotifyLuxometer(callback);
}, 5000);
});
});
}
},
function(callback) {
console.log('disableLuxometer');
sensorTag.disableLuxometer(callback);
},
function() {
callback();
}
]);
} else {
callback();
}
},
function(callback) {
console.log('readSimpleRead - waiting for button press ...');
sensorTag.on('simpleKeyChange', function(left, right, reedRelay) {
console.log('left: ' + left);
console.log('right: ' + right);
if (sensorTag.type === 'cc2650') {
console.log('reed relay: ' + reedRelay);
}
if (left || right) {
sensorTag.notifySimpleKey(callback);
}
});
sensorTag.notifySimpleKey();
},
function(callback) {
console.log('disconnect');
sensorTag.disconnect(callback);
}
]
);
});