Fix device type return parsing to be clearer when it tries to avoid null values and convert them to 'none'.

This commit is contained in:
Evelyn Eastmond 2019-06-14 12:38:40 -04:00
parent 20b0d4da78
commit ca28b4ff1b

View file

@ -752,8 +752,7 @@ class EV3 {
// GET SENSOR VALUES FOR CONNECTED SENSORS // GET SENSOR VALUES FOR CONNECTED SENSORS
let index = 0; let index = 0;
for (let i = 0; i < 4; i++) { for (let i = 0; i < 4; i++) {
// Must check that sensor val isn't null (which is sometimes returned by EV3) if (this._sensorPorts[i] !== 'none') {
if (this._sensorPorts[i] && this._sensorPorts[i] !== 'none') {
cmds[index + 0] = Ev3Opcode.OPINPUT_READSI; cmds[index + 0] = Ev3Opcode.OPINPUT_READSI;
cmds[index + 1] = Ev3Value.LAYER; cmds[index + 1] = Ev3Value.LAYER;
cmds[index + 2] = i; // PORT cmds[index + 2] = i; // PORT
@ -827,15 +826,18 @@ class EV3 {
// ***************** // *****************
// PARSE DEVICE LIST // PARSE DEVICE LIST
// ***************** // *****************
// TODO: put these in for loop? for (let i = 0; i < 4; i++) {
this._sensorPorts[0] = Ev3Device[data[5]] ? Ev3Device[data[5]] : 'none'; const deviceType = Ev3Device[data[i + 5]];
this._sensorPorts[1] = Ev3Device[data[6]] ? Ev3Device[data[6]] : 'none'; // sometimes the device type returned is null, so treat that as 'none'
this._sensorPorts[2] = Ev3Device[data[7]] ? Ev3Device[data[7]] : 'none'; this._sensorPorts[i] = deviceType ? deviceType : 'none';
this._sensorPorts[3] = Ev3Device[data[8]] ? Ev3Device[data[8]] : 'none'; }
this._motorPorts[0] = Ev3Device[data[21]] ? Ev3Device[data[21]] : 'none';
this._motorPorts[1] = Ev3Device[data[22]] ? Ev3Device[data[22]] : 'none'; for (let i = 0; i < 4; i++) {
this._motorPorts[2] = Ev3Device[data[23]] ? Ev3Device[data[23]] : 'none'; const deviceType = Ev3Device[data[i + 21]];
this._motorPorts[3] = Ev3Device[data[24]] ? Ev3Device[data[24]] : 'none'; // sometimes the device type returned is null, so treat that as 'none'
this._motorPorts[i] = deviceType ? deviceType : 'none';
}
for (let m = 0; m < 4; m++) { for (let m = 0; m < 4; m++) {
const type = this._motorPorts[m]; const type = this._motorPorts[m];
if (type !== 'none' && !this._motors[m]) { if (type !== 'none' && !this._motors[m]) {