incyclist-devices 1.4.77 → 1.4.78
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 +1 -1
- package/lib/ble/tacx.d.ts +13 -0
- package/lib/ble/tacx.js +20 -3
- package/package.json +1 -1
package/lib/ble/ble-device.js
CHANGED
|
@@ -316,7 +316,7 @@ class BleDevice extends ble_1.BleDeviceClass {
|
|
|
316
316
|
return;
|
|
317
317
|
}
|
|
318
318
|
if (withoutResponse) {
|
|
319
|
-
this.logEvent({ message: 'writing' });
|
|
319
|
+
this.logEvent({ message: 'writing', data: data.toString('hex'), withoutResponse });
|
|
320
320
|
characteristic.write(data, withoutResponse);
|
|
321
321
|
resolve(new ArrayBuffer(0));
|
|
322
322
|
return;
|
package/lib/ble/tacx.d.ts
CHANGED
|
@@ -24,6 +24,14 @@ declare type CrankData = {
|
|
|
24
24
|
time?: number;
|
|
25
25
|
cntUpdateMissing?: number;
|
|
26
26
|
};
|
|
27
|
+
declare type MessageInfo = {
|
|
28
|
+
message: string;
|
|
29
|
+
ts: number;
|
|
30
|
+
uuid: string;
|
|
31
|
+
};
|
|
32
|
+
declare type MessageLog = {
|
|
33
|
+
[uuid: string]: MessageInfo;
|
|
34
|
+
};
|
|
27
35
|
export default class TacxAdvancedFitnessMachineDevice extends BleFitnessMachineDevice {
|
|
28
36
|
static services: string[];
|
|
29
37
|
static characteristics: string[];
|
|
@@ -34,6 +42,8 @@ export default class TacxAdvancedFitnessMachineDevice extends BleFitnessMachineD
|
|
|
34
42
|
tsPrevWrite: any;
|
|
35
43
|
data: BleFeBikeData;
|
|
36
44
|
hasFECData: boolean;
|
|
45
|
+
prevMessages: MessageLog;
|
|
46
|
+
messageCnt: number;
|
|
37
47
|
constructor(props?: any);
|
|
38
48
|
isMatching(characteristics: string[]): boolean;
|
|
39
49
|
init(): Promise<boolean>;
|
|
@@ -44,6 +54,9 @@ export default class TacxAdvancedFitnessMachineDevice extends BleFitnessMachineD
|
|
|
44
54
|
isHrm(): boolean;
|
|
45
55
|
requestControl(): Promise<boolean>;
|
|
46
56
|
parseCrankData(crankData: any): {
|
|
57
|
+
rpm?: undefined;
|
|
58
|
+
time?: undefined;
|
|
59
|
+
} | {
|
|
47
60
|
rpm: number;
|
|
48
61
|
time: any;
|
|
49
62
|
};
|
package/lib/ble/tacx.js
CHANGED
|
@@ -76,6 +76,8 @@ class TacxAdvancedFitnessMachineDevice extends fm_1.default {
|
|
|
76
76
|
this.tsPrevWrite = undefined;
|
|
77
77
|
this.data = {};
|
|
78
78
|
this.hasFECData = false;
|
|
79
|
+
this.messageCnt = 0;
|
|
80
|
+
this.prevMessages = {};
|
|
79
81
|
}
|
|
80
82
|
isMatching(characteristics) {
|
|
81
83
|
if (!characteristics)
|
|
@@ -120,8 +122,10 @@ class TacxAdvancedFitnessMachineDevice extends fm_1.default {
|
|
|
120
122
|
});
|
|
121
123
|
}
|
|
122
124
|
parseCrankData(crankData) {
|
|
123
|
-
if (!this.prevCrankData)
|
|
124
|
-
this.prevCrankData = {
|
|
125
|
+
if (!this.prevCrankData) {
|
|
126
|
+
this.prevCrankData = Object.assign(Object.assign({}, crankData), { cntUpdateMissing: -1 });
|
|
127
|
+
return {};
|
|
128
|
+
}
|
|
125
129
|
const c = this.currentCrankData = crankData;
|
|
126
130
|
const p = this.prevCrankData;
|
|
127
131
|
let rpm = this.data.cadence;
|
|
@@ -372,6 +376,8 @@ class TacxAdvancedFitnessMachineDevice extends fm_1.default {
|
|
|
372
376
|
break;
|
|
373
377
|
}
|
|
374
378
|
this.parseFEState(flagStateBF);
|
|
379
|
+
if (power !== undefined && cadence !== undefined)
|
|
380
|
+
this.hasFECData = true;
|
|
375
381
|
return this.data;
|
|
376
382
|
}
|
|
377
383
|
parseProductInformation(data) {
|
|
@@ -421,6 +427,16 @@ class TacxAdvancedFitnessMachineDevice extends fm_1.default {
|
|
|
421
427
|
onData(characteristic, data) {
|
|
422
428
|
try {
|
|
423
429
|
const uuid = characteristic.toLocaleLowerCase();
|
|
430
|
+
const message = data.toString('hex');
|
|
431
|
+
const ts = Date.now();
|
|
432
|
+
if (this.prevMessages[uuid]) {
|
|
433
|
+
const prev = this.prevMessages[uuid];
|
|
434
|
+
if (prev.message === message && prev.ts > ts - 500) {
|
|
435
|
+
return;
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
this.prevMessages[uuid] = { uuid, ts, message };
|
|
439
|
+
this.messageCnt++;
|
|
424
440
|
let res = undefined;
|
|
425
441
|
if (uuid && uuid.startsWith(TACX_FE_C_RX)) {
|
|
426
442
|
res = this.parseFECMessage(data);
|
|
@@ -439,7 +455,8 @@ class TacxAdvancedFitnessMachineDevice extends fm_1.default {
|
|
|
439
455
|
res = this.parseHrm(data);
|
|
440
456
|
break;
|
|
441
457
|
case '2a5b':
|
|
442
|
-
|
|
458
|
+
if (!this.hasFECData)
|
|
459
|
+
res = this.parseCSC(data);
|
|
443
460
|
break;
|
|
444
461
|
case '2ada':
|
|
445
462
|
if (!this.hasFECData)
|