Skip to content

T8 integration #9

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ var io_endpoint_key = constants.device_endpoint_key;

// device creators:
var ljm_device_creator = require('./device_helpers/ljm_device');
var t8_device_creator = require('./device_helpers/t8_device');
var t7_device_creator = require('./device_helpers/t7_device');
var t4_device_creator = require('./device_helpers/t4_device');
var t5_device_creator = require('./device_helpers/t5_device');
Expand Down Expand Up @@ -150,6 +151,9 @@ function createDeviceController(io_interface) {
this.addMockDevice = function(deviceInfo) {
return callFunc('addMockDevice', [deviceInfo]);
};
this.removeAllMockDevices = function() {
return callFunc('removeAllMockDevices');
}
this.initializeLogger = function() {
return callFunc('initializeLogger');
};
Expand Down Expand Up @@ -440,8 +444,10 @@ function createDeviceController(io_interface) {
deviceCreator = t5_device_creator;
} else if (deviceInfo.deviceType == driver_constants.deviceTypes.digit) {
deviceCreator = digit_device_creator;
} else if (deviceInfo.deviceType == driver_constants.deviceTypes.t8) {
deviceCreator = t8_device_creator;
} else {
console.warn('Creating a non-standard ljm device object', deviceInfo);
console.warn('Creating a default ljm device object', deviceInfo);
deviceCreator = ljm_device_creator;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@

var EventEmitter = require('events').EventEmitter;
var util = require('util');
var ljm_device = require('./ljm_device');

function createDevice(savedAttributes, deviceCallFunc, deviceSendFunc, closeDeviceFunc) {

var ljmDevice = new ljm_device.createDevice(
savedAttributes,
deviceCallFunc,
deviceSendFunc,
closeDeviceFunc
);
var ljmDeviceKeys = Object.keys(ljmDevice);

var i = 0;
for(i = 0; i < ljmDeviceKeys.length; i++) {
var key = ljmDeviceKeys[i];
this[key] = ljmDevice[key];
}

var getLJMDeviceEventListener = function(eventKey) {
var ljmDeviceEventListener = function(eventData) {
self.emit(eventKey, eventData);
};
return ljmDeviceEventListener;
};
var ljmDeviceEvents = ljmDevice.eventList;
var ljmDeviceEventKeys = Object.keys(ljmDeviceEvents);
ljmDeviceEventKeys.forEach(function(key) {
ljmDevice.on(key, getLJMDeviceEventListener(key));
});

this.testFunc = function() {

};
var self = this;
}
util.inherits(createDevice, EventEmitter);

exports.createDevice = createDevice;
Original file line number Diff line number Diff line change
Expand Up @@ -639,6 +639,7 @@ function createDeviceKeeper(io_delegator, link) {
.then(function(data) {
defered.resolve(data);
}, defered.reject);

return defered.promise;
};

Expand Down Expand Up @@ -689,6 +690,12 @@ function createDeviceKeeper(io_delegator, link) {
.then(defered.resolve, defered.reject);
return defered.promise;
};
this.removeAllMockDevices = function() {
var defered = q.defer();
deviceScanner.removeAllMockDevices()
.then(defered.resolve, defered.reject);
return defered.promise;
};


/* Logger Functions/Logic */
Expand Down
199 changes: 199 additions & 0 deletions ljswitchboard-io_manager/test/device_controller/t8_live_test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,199 @@

/**
This test is like basic_live_test.js, but only performs a minimal T8 test.
**/

var utils = require('../utils/utils');
var qRunner = utils.qRunner;
var qExec = utils.qExec;
var pResults = utils.pResults;
var q = require('q');
var async = require('async');

var labjack_nodejs = require('labjack-nodejs');
var constants = labjack_nodejs.driver_const;

var io_manager;
var io_interface;

// Managers
var driver_controller;
var device_controller;
var file_io_controller;
var logger_controller;

var device;

exports.tests = {
'initialization': function(test) {
console.log('');
console.log('**** basic_live_test ****');
console.log('**** Please connect 1x T8 via USB ****');

// Require the io_manager library
io_manager = require('../../lib/io_manager');

// Require the io_interface that gives access to the ljm driver,
// device controller, logger, and file_io_controller objects.
io_interface = io_manager.io_interface();

// Initialize the io_interface
io_interface.initialize()
.then(function(res) {
// io_interface has initialized and is ready for use

// Save local pointers to the created objects
driver_controller = io_interface.getDriverController();
device_controller = io_interface.getDeviceController();

test.ok(true);
test.done();
}, function(err) {
test.ok(false, 'error initializing io_interface' + JSON.stringify(err));
test.done();
});
},
'open device': function(test) {
var params = {
'deviceType': 'LJM_dtT8',
'connectionType': 'LJM_ctUSB',
'identifier': 'LJM_idANY',
'mockDevice': false
};

device_controller.openDevice(params)
.then(function(newDevice) {
// save device reference
device = newDevice;
device_controller.getNumDevices()
.then(function(res) {
test.strictEqual(res, 1, 'wrong number of devices are open');
test.done();
});
}, function(err) {
console.log("Error opening device", err);
test.ok(false, 'failed to create new device object');
test.done();
});
},
'test getHandleInfo': function(test) {
device.getHandleInfo()
.then(function(res) {
var requiredKeys = [
'deviceType',
'connectionType',
'serialNumber',
'ipAddress',
'port',
'maxBytesPerMB'
];
var resKeys = Object.keys(res);
var msg = 'required keys do not match keys in response';
test.strictEqual(resKeys.length, requiredKeys.length, msg);
requiredKeys.forEach(function(key, i) {
test.strictEqual(resKeys[i], key, msg + ': ' + key);
});
test.done();
}, function(err) {
console.log('getHandleInfo error', err);
test.ok(false);
test.done();
});
},
'test getDeviceAttributes': function(test) {
device.getDeviceAttributes()
.then(function(res) {
// Test to make sure that there are a few key attributes.
var requiredAttributes = [
'deviceType',
'connectionType',
'serialNumber',
'ipAddress',
'port',
'maxBytesPerMB',
'deviceTypeString',
'deviceClass',
'openParameters',
'subclass',
'isPro',
'productType'
];
var givenAttributes = Object.keys(res);
requiredAttributes.forEach(function(requiredAttribute) {
var msg = 'Required key does not exist: ' + requiredAttribute;
test.ok((givenAttributes.indexOf(requiredAttribute) >= 0), msg);
});
test.done();
}, function(err) {
test.ok(false, 'read should not have returned an error: ' + JSON.stringify(err));
test.done();
});
},
'readFirmwareVersion': function(test) {
var regs = [
'FIRMWARE_VERSION',
// 'BOOTLOADER_VERSION',
'DEVICE_NAME_DEFAULT',
// 'WIFI_VERSION'
];
var passes = true;
var errorMessage = '';
async.eachSeries(regs, function(reg, cb) {
device.iRead(reg).then(
function(res) {
cb();
}, function(err) {
passes = false;
errorMessage += 'Error reading: ' + reg + '\n';
cb();
});
}, function(err) {
test.ok(passes, errorMessage);
test.done();
});
},
'close device': function(test) {
device.close()
.then(function(res) {
test.strictEqual(res.comKey, 0, 'expected to receive a different comKey');
test.done();
}, function(err) {
console.log('Failed to close mock device', err);
test.ok(false, 'Failed to close mock device');
test.done();
});
},
'verify device closure': function(test) {
device.read('AIN0')
.then(function(res) {
console.log('read returned', res);
test.ok(false, 'should have caused an error');
test.done();
}, function(err) {
test.done();
});
},
'close all devices': function(test) {
device_controller.closeAllDevices()
.then(function(res) {
// console.log('Num Devices Closed', res);
test.strictEqual(res.numClosed, 0, 'wrong number of devices closed');
test.done();
}, function(err) {
console.log('Error closing all devices', err);
test.ok(false, 'failed to close all devices');
test.done();
});
},
'destruction': function(test) {
io_interface.destroy()
.then(function(res) {
// io_interface process has been shut down
test.ok(true);
test.done();
}, function(err) {
test.ok(false, 'io_interface failed to shut down' + JSON.stringify(err));
test.done();
});
}
};
1 change: 1 addition & 0 deletions ljswitchboard-io_manager/test/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ var testGroups = {

// Requires LabJack devices.
'basic_live_test': false, // Passing
't8_live_test': false,

'open_advanced_test': false, //
'device_keeper_test': false, //
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -169,8 +169,8 @@ this.test_device_selector = {
var t4s = $('.DEVICE_TYPE_T4 .device');
test.strictEqual(t4s.length, 1, 'Unexpected number of T4s found');

var t5s = $('.DEVICE_TYPE_T5 .device');
test.strictEqual(t5s.length, 1, 'Unexpected number of T5s found');
var t8s = $('.DEVICE_TYPE_T8 .device');
test.strictEqual(t8s.length, 1, 'Unexpected number of T8s found');

test.done();
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,23 @@ var mockDevices = [{
'POWER_LED': 1,
},
}, {
'deviceType': 'LJM_dtT4',
'deviceType': 'LJM_dtT8',
'connectionType': 'LJM_ctUSB',
'serialNumber': 44001000,
'serialNumber': 8,
'WIFI_RSSI': -65,
'deviceConfig': {
'TEMPERATURE_DEVICE_K': 210.69,
'CURRENT_SOURCE_200UA_CAL_VALUE': 0.000123123,
'CURRENT_SOURCE_10UA_CAL_VALUE': 0.000123123,
'POWER_ETHERNET': 1,
'POWER_WIFI': 1,
'POWER_AIN': 1,
'POWER_LED': 1,
},
}, {
'deviceType': 'LJM_dtT5',
'deviceType': 'LJM_dtT4',
'connectionType': 'LJM_ctUSB',
'serialNumber': 45001000,
'serialNumber': 44001000,
'deviceConfig': {
},
}, {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
"humanName": "Analog Inputs",
"version": "0.0.1",
"framework":"singleDevice",
"supportedDevices": [
{"type":"T7","minFW":"0.5"}
],
"supportedDevices": [{"type":"T7","minFW":"0.5"}],
"htmlFiles": [
"ainEFTypeNameTemplate.html",
Expand Down
Loading