Skip to content

Commit 82cf8c7

Browse files
committed
change device mode after feedback only
device._mode is used to interpret incoming port value messages. When changing the mode on a hub, the recieved port values are for the old mode until the port input format message with the new mode has arrived.
1 parent 2fc1622 commit 82cf8c7

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

src/devices/device.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,6 @@ export class Device extends EventEmitter {
142142
public subscribe (mode: number) {
143143
this._ensureConnected();
144144
if (mode !== this._mode) {
145-
this._mode = mode;
146145
this.hub.subscribe(this.portId, this.type, mode);
147146
}
148147
}
@@ -178,6 +177,10 @@ export class Device extends EventEmitter {
178177
}
179178
}
180179

180+
public setMode (message: number) {
181+
this._mode = message;
182+
}
183+
181184
public setEventTimer (timer: NodeJS.Timeout) {
182185
this._eventTimer = timer;
183186
}

src/hubs/lpf2hub.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -159,10 +159,14 @@ export class LPF2Hub extends BaseHub {
159159
this._parseSensorMessage(message);
160160
break;
161161
}
162+
case Consts.MessageType.PORT_INPUT_FORMAT_SINGLE: {
163+
this._parsePortInputFormatMessage(message);
164+
break;
165+
}
162166
case Consts.MessageType.PORT_OUTPUT_COMMAND_FEEDBACK: {
163167
this._parsePortAction(message);
164168
break;
165-
}
169+
}
166170
}
167171

168172
if (this._messageBuffer.length > 0) {
@@ -346,7 +350,6 @@ export class LPF2Hub extends BaseHub {
346350
}
347351
}
348352

349-
350353
private _parsePortAction (message: Buffer) {
351354
for (let offset = 3; offset < message.length; offset += 2) {
352355
const device = this._getDeviceByPortId(message[offset]);
@@ -357,17 +360,21 @@ export class LPF2Hub extends BaseHub {
357360
}
358361
}
359362

360-
361363
private _parseSensorMessage (message: Buffer) {
362-
363364
const portId = message[3];
364365
const device = this._getDeviceByPortId(portId);
365366

366367
if (device) {
367368
device.receive(message);
368369
}
369-
370370
}
371371

372+
private _parsePortInputFormatMessage (message: Buffer) {
373+
const portId = message[3];
374+
const device = this._getDeviceByPortId(portId);
372375

376+
if (device) {
377+
device.setMode(message[4]);
378+
}
379+
}
373380
}

0 commit comments

Comments
 (0)