incyclist-devices 1.4.89 → 1.4.91
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/ble/ble-device.js +0 -1
- package/lib/ble/consts.d.ts +2 -0
- package/lib/ble/consts.js +3 -1
- package/lib/ble/tacx.d.ts +3 -2
- package/lib/ble/tacx.js +18 -11
- package/lib/ble/wahoo-kickr.d.ts +12 -0
- package/lib/ble/wahoo-kickr.js +6 -2
- package/package.json +1 -1
package/lib/ble/ble-device.js
CHANGED
|
@@ -276,7 +276,6 @@ class BleDevice extends ble_1.BleDeviceClass {
|
|
|
276
276
|
onData(characteristic, data) {
|
|
277
277
|
const isDuplicate = this.checkForDuplicate(characteristic, data);
|
|
278
278
|
if (isDuplicate) {
|
|
279
|
-
console.log('~~~ duplicate data', characteristic, data.toString('hex'));
|
|
280
279
|
return;
|
|
281
280
|
}
|
|
282
281
|
this.logEvent({ message: 'got data', characteristic, data: data.toString('hex'), writeQueue: this.writeQueue.length });
|
package/lib/ble/consts.d.ts
CHANGED
|
@@ -8,5 +8,7 @@ export declare const INDOOR_BIKE_DATA = "2ad2";
|
|
|
8
8
|
export declare const CSP = "1818";
|
|
9
9
|
export declare const CSP_MEASUREMENT = "2a63";
|
|
10
10
|
export declare const CSP_FEATURE = "2a65";
|
|
11
|
+
export declare const CSC = "1816";
|
|
12
|
+
export declare const CSC_MEASUREMENT = "2a5b";
|
|
11
13
|
export declare const WAHOO_ADVANCED_TRAINER_CP = "a026e005";
|
|
12
14
|
export declare const WAHOO_ADVANCED_TRAINER_CP_FULL = "A026E005-0A7D-4AB3-97FA-F1500F9FEB8B";
|
package/lib/ble/consts.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WAHOO_ADVANCED_TRAINER_CP_FULL = exports.WAHOO_ADVANCED_TRAINER_CP = exports.CSP_FEATURE = exports.CSP_MEASUREMENT = exports.CSP = exports.INDOOR_BIKE_DATA = exports.FTMS_STATUS = exports.FTMS_CP = exports.FTMS = exports.TACX_FE_C_TX = exports.TACX_FE_C_RX = exports.TACX_FE_C_BLE = void 0;
|
|
3
|
+
exports.WAHOO_ADVANCED_TRAINER_CP_FULL = exports.WAHOO_ADVANCED_TRAINER_CP = exports.CSC_MEASUREMENT = exports.CSC = exports.CSP_FEATURE = exports.CSP_MEASUREMENT = exports.CSP = exports.INDOOR_BIKE_DATA = exports.FTMS_STATUS = exports.FTMS_CP = exports.FTMS = exports.TACX_FE_C_TX = exports.TACX_FE_C_RX = exports.TACX_FE_C_BLE = void 0;
|
|
4
4
|
exports.TACX_FE_C_BLE = '6e40fec1';
|
|
5
5
|
exports.TACX_FE_C_RX = '6e40fec2';
|
|
6
6
|
exports.TACX_FE_C_TX = '6e40fec3';
|
|
@@ -11,5 +11,7 @@ exports.INDOOR_BIKE_DATA = '2ad2';
|
|
|
11
11
|
exports.CSP = '1818';
|
|
12
12
|
exports.CSP_MEASUREMENT = '2a63';
|
|
13
13
|
exports.CSP_FEATURE = '2a65';
|
|
14
|
+
exports.CSC = '1816';
|
|
15
|
+
exports.CSC_MEASUREMENT = '2a5b';
|
|
14
16
|
exports.WAHOO_ADVANCED_TRAINER_CP = 'a026e005';
|
|
15
17
|
exports.WAHOO_ADVANCED_TRAINER_CP_FULL = 'A026E005-0A7D-4AB3-97FA-F1500F9FEB8B';
|
package/lib/ble/tacx.d.ts
CHANGED
|
@@ -54,8 +54,9 @@ export default class TacxAdvancedFitnessMachineDevice extends BleFitnessMachineD
|
|
|
54
54
|
rpm: number;
|
|
55
55
|
time: any;
|
|
56
56
|
};
|
|
57
|
-
parseCSC(_data: Buffer): IndoorBikeData;
|
|
58
|
-
parsePower(_data: Buffer): IndoorBikeData;
|
|
57
|
+
parseCSC(_data: Buffer, logOnly?: boolean): IndoorBikeData;
|
|
58
|
+
parsePower(_data: Buffer, logOnly?: boolean): IndoorBikeData;
|
|
59
|
+
parseIndoorBikeData(_data: Buffer, logOnly?: boolean): IndoorBikeData;
|
|
59
60
|
resetState(): void;
|
|
60
61
|
parseFEState(capStateBF: number): void;
|
|
61
62
|
parseGeneralFE(data: Buffer): BleFeBikeData;
|
package/lib/ble/tacx.js
CHANGED
|
@@ -163,8 +163,10 @@ class TacxAdvancedFitnessMachineDevice extends fm_1.default {
|
|
|
163
163
|
this.prevCrankData.cntUpdateMissing = cntUpdateMissing + 1;
|
|
164
164
|
return { rpm, time: this.timeOffset + c.time };
|
|
165
165
|
}
|
|
166
|
-
parseCSC(_data) {
|
|
166
|
+
parseCSC(_data, logOnly = false) {
|
|
167
167
|
this.logEvent({ message: 'BLE CSC message', data: _data.toString('hex') });
|
|
168
|
+
if (logOnly)
|
|
169
|
+
return this.data;
|
|
168
170
|
const data = Buffer.from(_data);
|
|
169
171
|
let offset = 0;
|
|
170
172
|
const flags = data.readUInt8(offset);
|
|
@@ -184,8 +186,10 @@ class TacxAdvancedFitnessMachineDevice extends fm_1.default {
|
|
|
184
186
|
}
|
|
185
187
|
return this.data;
|
|
186
188
|
}
|
|
187
|
-
parsePower(_data) {
|
|
189
|
+
parsePower(_data, logOnly = false) {
|
|
188
190
|
this.logEvent({ message: 'BLE CSP message', data: _data.toString('hex') });
|
|
191
|
+
if (logOnly)
|
|
192
|
+
return this.data;
|
|
189
193
|
const data = Buffer.from(_data);
|
|
190
194
|
try {
|
|
191
195
|
let offset = 4;
|
|
@@ -214,6 +218,12 @@ class TacxAdvancedFitnessMachineDevice extends fm_1.default {
|
|
|
214
218
|
const { instantaneousPower, cadence, time } = this.data;
|
|
215
219
|
return { instantaneousPower, cadence, time, raw: data.toString('hex') };
|
|
216
220
|
}
|
|
221
|
+
parseIndoorBikeData(_data, logOnly) {
|
|
222
|
+
this.logEvent({ message: 'BLE INDOOR_BIKE_DATA message', data: _data.toString('hex') });
|
|
223
|
+
if (logOnly)
|
|
224
|
+
return this.data;
|
|
225
|
+
return super.parseIndoorBikeData(_data);
|
|
226
|
+
}
|
|
217
227
|
resetState() {
|
|
218
228
|
const state = this.data;
|
|
219
229
|
delete state.time;
|
|
@@ -445,20 +455,17 @@ class TacxAdvancedFitnessMachineDevice extends fm_1.default {
|
|
|
445
455
|
}
|
|
446
456
|
else {
|
|
447
457
|
switch (uuid) {
|
|
448
|
-
case
|
|
449
|
-
|
|
450
|
-
res = this.parsePower(data);
|
|
458
|
+
case consts_1.CSP_MEASUREMENT:
|
|
459
|
+
res = this.parsePower(data, this.hasFECData);
|
|
451
460
|
break;
|
|
452
|
-
case
|
|
453
|
-
|
|
454
|
-
res = this.parseIndoorBikeData(data);
|
|
461
|
+
case consts_1.INDOOR_BIKE_DATA:
|
|
462
|
+
res = this.parseIndoorBikeData(data, this.hasFECData);
|
|
455
463
|
break;
|
|
456
464
|
case '2a37':
|
|
457
465
|
res = this.parseHrm(data);
|
|
458
466
|
break;
|
|
459
|
-
case
|
|
460
|
-
|
|
461
|
-
res = this.parseCSC(data);
|
|
467
|
+
case consts_1.CSC_MEASUREMENT:
|
|
468
|
+
res = this.parseCSC(data, this.hasFECData);
|
|
462
469
|
break;
|
|
463
470
|
case '2ada':
|
|
464
471
|
if (!this.hasFECData)
|
package/lib/ble/wahoo-kickr.d.ts
CHANGED
|
@@ -3,6 +3,18 @@ import BleProtocol from './incyclist-protocol';
|
|
|
3
3
|
import { BleDeviceClass, BleWriteProps } from './ble';
|
|
4
4
|
import DeviceAdapter from '../Device';
|
|
5
5
|
import BleFitnessMachineDevice, { FmAdapter } from './fm';
|
|
6
|
+
export declare const enum OpCode {
|
|
7
|
+
unlock = 32,
|
|
8
|
+
setResistanceMode = 64,
|
|
9
|
+
setStandardMode = 65,
|
|
10
|
+
setErgMode = 66,
|
|
11
|
+
setSimMode = 67,
|
|
12
|
+
setSimCRR = 68,
|
|
13
|
+
setSimWindResistance = 69,
|
|
14
|
+
setSimGrade = 70,
|
|
15
|
+
setSimWindSpeed = 71,
|
|
16
|
+
setWheelCircumference = 72
|
|
17
|
+
}
|
|
6
18
|
declare type IndoorBikeData = {
|
|
7
19
|
speed?: number;
|
|
8
20
|
averageSpeed?: number;
|
package/lib/ble/wahoo-kickr.js
CHANGED
|
@@ -340,8 +340,12 @@ class WahooAdvancedFitnessMachineDevice extends fm_1.default {
|
|
|
340
340
|
return __awaiter(this, void 0, void 0, function* () {
|
|
341
341
|
this.logger.logEvent({ message: 'setSimGrade', slope });
|
|
342
342
|
try {
|
|
343
|
-
|
|
344
|
-
|
|
343
|
+
let s = slope;
|
|
344
|
+
if (s < -100)
|
|
345
|
+
s = -100;
|
|
346
|
+
if (s > 100)
|
|
347
|
+
s = 100;
|
|
348
|
+
const slopeVal = Math.min(Math.floor(327.68 * s), 32767);
|
|
345
349
|
const data = Buffer.alloc(2);
|
|
346
350
|
data.writeInt16LE(slopeVal, 0);
|
|
347
351
|
const res = yield this.writeWahooFtmsMessage(70, data);
|