incyclist-devices 1.4.49 → 1.4.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/DeviceSupport.js +1 -5
- package/lib/ant/AntScanner.js +1 -5
- package/lib/ble/ble-device.d.ts +1 -0
- package/lib/ble/ble-device.js +4 -1
- package/lib/ble/ble-erg-mode.js +11 -5
- package/lib/ble/ble-st-mode.js +11 -5
- package/lib/ble/ble.d.ts +0 -1
- package/lib/ble/fm.js +13 -13
- package/lib/ble/incyclist-protocol.js +1 -5
- package/lib/daum/DaumAdapter.js +1 -5
- package/lib/daum/classic/DaumClassicProtocol.js +1 -5
- package/lib/daum/premium/DaumPremiumProtocol.js +1 -5
- package/lib/kettler/comms.d.ts +0 -1
- package/lib/kettler/ergo-racer/adapter.js +1 -5
- package/lib/kettler/ergo-racer/protocol.d.ts +1 -1
- package/lib/kettler/ergo-racer/protocol.js +1 -5
- package/lib/modes/power-meter.js +1 -1
- package/lib/simulator/Simulator.d.ts +1 -1
- package/lib/simulator/Simulator.js +1 -5
- package/package.json +1 -1
package/lib/DeviceSupport.js
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
9
5
|
}) : (function(o, m, k, k2) {
|
|
10
6
|
if (k2 === undefined) k2 = k;
|
|
11
7
|
o[k2] = m[k];
|
package/lib/ant/AntScanner.js
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
9
5
|
}) : (function(o, m, k, k2) {
|
|
10
6
|
if (k2 === undefined) k2 = k;
|
|
11
7
|
o[k2] = m[k];
|
package/lib/ble/ble-device.d.ts
CHANGED
|
@@ -29,6 +29,7 @@ export declare abstract class BleDevice extends BleDeviceClass {
|
|
|
29
29
|
writeQueue: CommandQueueItem[];
|
|
30
30
|
constructor(props?: BleDeviceConstructProps);
|
|
31
31
|
logEvent(event: any): void;
|
|
32
|
+
setLogger(logger: EventLogger): void;
|
|
32
33
|
setInterface(ble: BleInterfaceClass): void;
|
|
33
34
|
cleanupListeners(): void;
|
|
34
35
|
onDisconnect(): void;
|
package/lib/ble/ble-device.js
CHANGED
|
@@ -39,7 +39,7 @@ class BleDevice extends ble_1.BleDeviceClass {
|
|
|
39
39
|
if (props.logger) {
|
|
40
40
|
this.logger = props.logger;
|
|
41
41
|
}
|
|
42
|
-
else if (props.log) {
|
|
42
|
+
else if (props.log !== false) {
|
|
43
43
|
this.logger = new gd_eventlog_1.EventLogger('BleDevice');
|
|
44
44
|
}
|
|
45
45
|
}
|
|
@@ -51,6 +51,9 @@ class BleDevice extends ble_1.BleDeviceClass {
|
|
|
51
51
|
console.log('~~~BLE:', event);
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
|
+
setLogger(logger) {
|
|
55
|
+
this.logger = logger;
|
|
56
|
+
}
|
|
54
57
|
setInterface(ble) {
|
|
55
58
|
this.ble = ble;
|
|
56
59
|
}
|
package/lib/ble/ble-erg-mode.js
CHANGED
|
@@ -13,6 +13,7 @@ const config = {
|
|
|
13
13
|
{ key: 'startPower', name: 'Starting Power', description: 'Initial power in Watts at start of training', type: CyclingMode_1.CyclingModeProperyType.Integer, default: 50, min: 25, max: 800 },
|
|
14
14
|
]
|
|
15
15
|
};
|
|
16
|
+
const MIN_SPEED = 10;
|
|
16
17
|
class BleERGCyclingMode extends power_base_1.default {
|
|
17
18
|
constructor(adapter, props) {
|
|
18
19
|
super(adapter, props);
|
|
@@ -96,21 +97,26 @@ class BleERGCyclingMode extends power_base_1.default {
|
|
|
96
97
|
const data = this.data || {};
|
|
97
98
|
const bikeType = this.getSetting('bikeType').toLowerCase();
|
|
98
99
|
try {
|
|
99
|
-
const rpm = bikeData.pedalRpm || 0;
|
|
100
100
|
let power = bikeData.power || 0;
|
|
101
101
|
const slope = (prevData.slope !== undefined ? prevData.slope : prevRequest.slope || 0);
|
|
102
102
|
const distanceInternal = prevData.distanceInternal || 0;
|
|
103
|
-
if (
|
|
103
|
+
if (bikeData.pedalRpm === 0 || bikeData.isPedalling === false) {
|
|
104
104
|
power = 0;
|
|
105
105
|
}
|
|
106
106
|
const m = this.getWeight();
|
|
107
107
|
const t = this.getTimeSinceLastUpdate();
|
|
108
108
|
const { speed, distance } = this.calculateSpeedAndDistance(power, slope, m, t, { bikeType });
|
|
109
|
-
|
|
109
|
+
if (power === 0 && speed < MIN_SPEED) {
|
|
110
|
+
data.speed = Math.round(prevData.speed - 1) < 0 ? 0 : Math.round(prevData.speed - 1);
|
|
111
|
+
data.distanceInternal = Math.round(distanceInternal + data.speed / 3.6 * t);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
data.speed = (power === 0 && speed < MIN_SPEED) ? 0 : speed;
|
|
115
|
+
data.distanceInternal = (power === 0 && speed < MIN_SPEED) ? Math.round(distanceInternal) : Math.round(distanceInternal + distance);
|
|
116
|
+
}
|
|
110
117
|
data.power = Math.round(power);
|
|
111
|
-
data.distanceInternal = Math.round(distanceInternal + distance);
|
|
112
118
|
data.slope = slope;
|
|
113
|
-
data.pedalRpm =
|
|
119
|
+
data.pedalRpm = bikeData.pedalRpm || 0;
|
|
114
120
|
if (data.time !== undefined && data.speed > 0)
|
|
115
121
|
data.time += t;
|
|
116
122
|
else
|
package/lib/ble/ble-st-mode.js
CHANGED
|
@@ -12,6 +12,7 @@ const config = {
|
|
|
12
12
|
{ key: 'bikeType', name: 'Bike Type', description: '', type: CyclingMode_1.CyclingModeProperyType.SingleSelect, options: ['Race', 'Mountain', 'Triathlon'], default: 'Race' }
|
|
13
13
|
]
|
|
14
14
|
};
|
|
15
|
+
const MIN_SPEED = 10;
|
|
15
16
|
class FtmsCyclingMode extends power_base_1.default {
|
|
16
17
|
constructor(adapter, props) {
|
|
17
18
|
super(adapter, props);
|
|
@@ -66,21 +67,26 @@ class FtmsCyclingMode extends power_base_1.default {
|
|
|
66
67
|
const data = this.data || {};
|
|
67
68
|
const bikeType = this.getSetting('bikeType').toLowerCase();
|
|
68
69
|
try {
|
|
69
|
-
const rpm = bikeData.pedalRpm || 0;
|
|
70
70
|
let power = bikeData.power || 0;
|
|
71
71
|
const slope = (prevData.slope !== undefined ? prevData.slope : prevRequest.slope || 0);
|
|
72
72
|
const distanceInternal = prevData.distanceInternal || 0;
|
|
73
|
-
if (
|
|
73
|
+
if (bikeData.pedalRpm === 0 || bikeData.isPedalling === false) {
|
|
74
74
|
power = 0;
|
|
75
75
|
}
|
|
76
76
|
const m = this.getWeight();
|
|
77
77
|
const t = this.getTimeSinceLastUpdate();
|
|
78
78
|
const { speed, distance } = this.calculateSpeedAndDistance(power, slope, m, t, { bikeType });
|
|
79
|
-
|
|
79
|
+
if (power === 0 && speed < MIN_SPEED) {
|
|
80
|
+
data.speed = Math.round(prevData.speed - 1) < 0 ? 0 : Math.round(prevData.speed - 1);
|
|
81
|
+
data.distanceInternal = Math.round(distanceInternal + data.speed / 3.6 * t);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
data.speed = (power === 0 && speed < MIN_SPEED) ? 0 : speed;
|
|
85
|
+
data.distanceInternal = (power === 0 && speed < MIN_SPEED) ? Math.round(distanceInternal) : Math.round(distanceInternal + distance);
|
|
86
|
+
}
|
|
80
87
|
data.power = Math.round(power);
|
|
81
|
-
data.distanceInternal = Math.round(distanceInternal + distance);
|
|
82
88
|
data.slope = slope;
|
|
83
|
-
data.pedalRpm =
|
|
89
|
+
data.pedalRpm = bikeData.pedalRpm || 0;
|
|
84
90
|
if (data.time !== undefined)
|
|
85
91
|
data.time += t;
|
|
86
92
|
else
|
package/lib/ble/ble.d.ts
CHANGED
package/lib/ble/fm.js
CHANGED
|
@@ -314,12 +314,16 @@ class BleFitnessMachineDevice extends ble_device_1.BleDevice {
|
|
|
314
314
|
return __awaiter(this, void 0, void 0, function* () {
|
|
315
315
|
if (this.hasControl)
|
|
316
316
|
return true;
|
|
317
|
+
this.logEvent({ message: 'requestControl' });
|
|
317
318
|
const data = Buffer.alloc(1);
|
|
318
319
|
data.writeUInt8(0, 0);
|
|
319
320
|
const res = yield this.writeFtmsMessage(0, data);
|
|
320
321
|
if (res === 1) {
|
|
321
322
|
this.hasControl = true;
|
|
322
323
|
}
|
|
324
|
+
else {
|
|
325
|
+
this.logEvent({ message: 'requestControl failed' });
|
|
326
|
+
}
|
|
323
327
|
return this.hasControl;
|
|
324
328
|
});
|
|
325
329
|
}
|
|
@@ -329,10 +333,6 @@ class BleFitnessMachineDevice extends ble_device_1.BleDevice {
|
|
|
329
333
|
if (this.data.targetPower !== undefined && this.data.targetPower === power)
|
|
330
334
|
return true;
|
|
331
335
|
const hasControl = yield this.requestControl();
|
|
332
|
-
if (!hasControl) {
|
|
333
|
-
this.logEvent({ message: 'setTargetPower failed', reason: 'control is disabled' });
|
|
334
|
-
return false;
|
|
335
|
-
}
|
|
336
336
|
const data = Buffer.alloc(3);
|
|
337
337
|
data.writeUInt8(5, 0);
|
|
338
338
|
data.writeInt16LE(Math.round(power), 1);
|
|
@@ -366,10 +366,6 @@ class BleFitnessMachineDevice extends ble_device_1.BleDevice {
|
|
|
366
366
|
setIndoorBikeSimulation(windSpeed, gradient, crr, cw) {
|
|
367
367
|
return __awaiter(this, void 0, void 0, function* () {
|
|
368
368
|
const hasControl = yield this.requestControl();
|
|
369
|
-
if (!hasControl) {
|
|
370
|
-
this.logEvent({ message: 'setTargetInclination failed', reason: 'control is disabled' });
|
|
371
|
-
return false;
|
|
372
|
-
}
|
|
373
369
|
const data = Buffer.alloc(7);
|
|
374
370
|
data.writeUInt8(17, 0);
|
|
375
371
|
data.writeInt16LE(Math.round(windSpeed * 1000), 1);
|
|
@@ -439,6 +435,8 @@ class FmAdapter extends Device_1.default {
|
|
|
439
435
|
this.ble = protocol.ble;
|
|
440
436
|
this.cyclingMode = this.getDefaultCyclingMode();
|
|
441
437
|
this.logger = new gd_eventlog_1.EventLogger('BLE-FM');
|
|
438
|
+
if (this.device)
|
|
439
|
+
this.device.setLogger(this.logger);
|
|
442
440
|
}
|
|
443
441
|
isBike() { return this.device.isBike(); }
|
|
444
442
|
isHrm() { return this.device.isHrm(); }
|
|
@@ -552,6 +550,7 @@ class FmAdapter extends Device_1.default {
|
|
|
552
550
|
yield this.ble.stopScan();
|
|
553
551
|
try {
|
|
554
552
|
const bleDevice = yield this.ble.connectDevice(this.device);
|
|
553
|
+
bleDevice.setLogger(this.logger);
|
|
555
554
|
if (bleDevice) {
|
|
556
555
|
this.device = bleDevice;
|
|
557
556
|
const mode = this.getCyclingMode();
|
|
@@ -594,12 +593,13 @@ class FmAdapter extends Device_1.default {
|
|
|
594
593
|
return __awaiter(this, void 0, void 0, function* () {
|
|
595
594
|
if (this.paused || !this.device)
|
|
596
595
|
return;
|
|
597
|
-
const
|
|
598
|
-
|
|
599
|
-
|
|
596
|
+
const update = this.getCyclingMode().sendBikeUpdate(request);
|
|
597
|
+
this.logger.logEvent({ message: 'send bike update requested', profile: this.getProfile(), update, request });
|
|
598
|
+
if (update.slope !== undefined) {
|
|
599
|
+
yield this.device.setSlope(update.slope);
|
|
600
600
|
}
|
|
601
|
-
if (
|
|
602
|
-
yield this.device.setTargetPower(
|
|
601
|
+
if (update.targetPower !== undefined) {
|
|
602
|
+
yield this.device.setTargetPower(update.targetPower);
|
|
603
603
|
}
|
|
604
604
|
});
|
|
605
605
|
}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
9
5
|
}) : (function(o, m, k, k2) {
|
|
10
6
|
if (k2 === undefined) k2 = k;
|
|
11
7
|
o[k2] = m[k];
|
package/lib/daum/DaumAdapter.js
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
9
5
|
}) : (function(o, m, k, k2) {
|
|
10
6
|
if (k2 === undefined) k2 = k;
|
|
11
7
|
o[k2] = m[k];
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
9
5
|
}) : (function(o, m, k, k2) {
|
|
10
6
|
if (k2 === undefined) k2 = k;
|
|
11
7
|
o[k2] = m[k];
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
9
5
|
}) : (function(o, m, k, k2) {
|
|
10
6
|
if (k2 === undefined) k2 = k;
|
|
11
7
|
o[k2] = m[k];
|
package/lib/kettler/comms.d.ts
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
9
5
|
}) : (function(o, m, k, k2) {
|
|
10
6
|
if (k2 === undefined) k2 = k;
|
|
11
7
|
o[k2] = m[k];
|
|
@@ -28,7 +28,7 @@ export default class KettlerRacerProtocol extends DeviceProtocolBase implements
|
|
|
28
28
|
isBike(): boolean;
|
|
29
29
|
isHrm(): boolean;
|
|
30
30
|
isPower(): boolean;
|
|
31
|
-
add(settings: DeviceSettings):
|
|
31
|
+
add(settings: DeviceSettings): any;
|
|
32
32
|
scan(props: KettlerRacerScanProps): void;
|
|
33
33
|
checkDevice(port: string): boolean;
|
|
34
34
|
doScan(port: string): Promise<void>;
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
9
5
|
}) : (function(o, m, k, k2) {
|
|
10
6
|
if (k2 === undefined) k2 = k;
|
|
11
7
|
o[k2] = m[k];
|
package/lib/modes/power-meter.js
CHANGED
|
@@ -53,7 +53,7 @@ class PowerMeterCyclingMode extends power_base_1.default {
|
|
|
53
53
|
power = 0;
|
|
54
54
|
}
|
|
55
55
|
const m = this.getWeight();
|
|
56
|
-
|
|
56
|
+
const t = this.getTimeSinceLastUpdate();
|
|
57
57
|
const { speed, distance } = this.calculateSpeedAndDistance(power, slope, m, t);
|
|
58
58
|
data.power = Math.round(power);
|
|
59
59
|
data.slope = slope;
|
|
@@ -51,7 +51,7 @@ export declare class Simulator extends DeviceAdapter {
|
|
|
51
51
|
export default class SimulatorProtocol extends DeviceProtocolBase {
|
|
52
52
|
static NAME: string;
|
|
53
53
|
constructor();
|
|
54
|
-
add(settings: SimulatorSettings):
|
|
54
|
+
add(settings: SimulatorSettings): any;
|
|
55
55
|
getName(): string;
|
|
56
56
|
getInterfaces(): string[];
|
|
57
57
|
isBike(): boolean;
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
9
5
|
}) : (function(o, m, k, k2) {
|
|
10
6
|
if (k2 === undefined) k2 = k;
|
|
11
7
|
o[k2] = m[k];
|