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.
@@ -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 = { revolutions: 0, time: 0, cntUpdateMissing: -1 };
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
- res = this.parseCSC(data);
458
+ if (!this.hasFECData)
459
+ res = this.parseCSC(data);
443
460
  break;
444
461
  case '2ada':
445
462
  if (!this.hasFECData)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "incyclist-devices",
3
- "version": "1.4.77",
3
+ "version": "1.4.78",
4
4
  "dependencies": {
5
5
  "@serialport/parser-byte-length": "^9.0.1",
6
6
  "@serialport/parser-delimiter": "^9.0.1",