incyclist-devices 1.4.96 → 1.4.98

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.
@@ -70,9 +70,14 @@ export default class AntFEAdapter extends AntAdapter {
70
70
  startWorker(): void;
71
71
  stopWorker(): void;
72
72
  sendFromQueue(): void;
73
- sendUserConfiguration(userWeight: any, bikeWeight: any, wheelDiameter: any, gearRatio: any): Promise<unknown>;
74
- sendBasicResistance(resistance: any): Promise<unknown>;
75
- sendTargetPower(power: any): Promise<unknown>;
76
- sendWindResistance(windCoeff: any, windSpeed: any, draftFactor: any): Promise<unknown>;
77
- sendTrackResistance(slope: any, rrCoeff?: any): Promise<unknown>;
73
+ sendUserConfigurationNR(userWeight: any, bikeWeight: any, wheelDiameter: any, gearRatio: any): void;
74
+ sendUserConfiguration(userWeight: any, bikeWeight: any, wheelDiameter: any, gearRatio: any, withoutResponse?: boolean): Promise<unknown>;
75
+ sendBasicResistanceNR(resistance: any): void;
76
+ sendBasicResistance(resistance: any, withoutResponse?: boolean): Promise<unknown>;
77
+ sendTargetPowerNR(power: any): void;
78
+ sendTargetPower(power: any, withoutResponse?: boolean): Promise<unknown>;
79
+ sendWindResistanceNR(windCoeff: any, windSpeed: any, draftFactor: any): void;
80
+ sendWindResistance(windCoeff: any, windSpeed: any, draftFactor: any, withoutResponse?: boolean): Promise<unknown>;
81
+ sendTrackResistanceNR(slope: any, rrCoeff?: any): void;
82
+ sendTrackResistance(slope: any, rrCoeff?: any, withoutResponse?: boolean): Promise<unknown>;
78
83
  }
@@ -20,12 +20,16 @@ const ant_fe_st_mode_1 = __importDefault(require("./ant-fe-st-mode"));
20
20
  const ant_fe_erg_mode_1 = __importDefault(require("./ant-fe-erg-mode"));
21
21
  const ant_fe_adv_st_mode_1 = __importDefault(require("./ant-fe-adv-st-mode"));
22
22
  const hex = (v) => Math.abs(v).toString(16).toUpperCase();
23
- const TIMEOUT_ACK = 5000;
23
+ const TIMEOUT_ACK = 1000;
24
24
  const TIMEOUT_START = 10000;
25
25
  const TIMEOUT_ATTACH = 3000;
26
26
  const DEFAULT_USER_WEIGHT = 75;
27
27
  const DEFAULT_BIKE_WEIGHT = 10;
28
28
  const DEFAULT_BIKE_WEIGHT_MOUNTAIN = 14.5;
29
+ class MockLogger {
30
+ log(...args) { console.log('~~~~~Ant:', ...args); }
31
+ logEvent(event) { console.log('~~~~~Ant:' + event.message, event); }
32
+ }
29
33
  class AntFEAdapter extends AntAdapter_1.default {
30
34
  constructor(DeviceID, port, stick, protocol) {
31
35
  super(protocol);
@@ -182,7 +186,7 @@ class AntFEAdapter extends AntAdapter_1.default {
182
186
  return;
183
187
  let distance = 0;
184
188
  if (this.distanceInternal !== undefined && bikeData.distanceInternal !== undefined) {
185
- distance = Math.round(bikeData.distanceInternal - this.distanceInternal);
189
+ distance = bikeData.distanceInternal - this.distanceInternal;
186
190
  }
187
191
  if (bikeData.distanceInternal !== undefined)
188
192
  this.distanceInternal = bikeData.distanceInternal;
@@ -334,19 +338,21 @@ class AntFEAdapter extends AntAdapter_1.default {
334
338
  this.logger.logEvent({ message: 'send bike update requested', update, request });
335
339
  try {
336
340
  const isReset = (!request || request.reset || Object.keys(request).length === 0);
341
+ if (isReset)
342
+ this.sendTrackResistanceNR(0);
337
343
  if (update.slope !== undefined) {
338
- yield (0, utils_2.runWithRetries)(() => __awaiter(this, void 0, void 0, function* () { return yield this.sendTrackResistance(update.slope); }), 2, 100);
344
+ this.sendTrackResistanceNR(update.slope);
339
345
  }
340
346
  if (update.targetPower !== undefined) {
341
- yield (0, utils_2.runWithRetries)(() => __awaiter(this, void 0, void 0, function* () { return yield this.sendTargetPower(update.targetPower); }), 2, 100);
347
+ this.sendTargetPowerNR(update.targetPower);
342
348
  }
343
349
  else if (request.maxPower !== undefined) {
344
350
  if (this.data.power && this.data.power > request.maxPower)
345
- yield (0, utils_2.runWithRetries)(() => __awaiter(this, void 0, void 0, function* () { return yield this.sendTargetPower(request.maxPower); }), 2, 100);
351
+ this.sendTargetPowerNR(request.maxPower);
346
352
  }
347
353
  else if (request.minPower !== undefined) {
348
354
  if (this.data.power && this.data.power < request.minPower)
349
- yield (0, utils_2.runWithRetries)(() => __awaiter(this, void 0, void 0, function* () { return yield this.sendTargetPower(request.minPower); }), 2, 100);
355
+ this.sendTargetPowerNR(request.minPower);
350
356
  }
351
357
  }
352
358
  catch (err) {
@@ -436,7 +442,10 @@ class AntFEAdapter extends AntAdapter_1.default {
436
442
  this.stick.write(msg);
437
443
  }
438
444
  }
439
- sendUserConfiguration(userWeight, bikeWeight, wheelDiameter, gearRatio) {
445
+ sendUserConfigurationNR(userWeight, bikeWeight, wheelDiameter, gearRatio) {
446
+ this.sendUserConfiguration(userWeight, bikeWeight, wheelDiameter, gearRatio, true);
447
+ }
448
+ sendUserConfiguration(userWeight, bikeWeight, wheelDiameter, gearRatio, withoutResponse = false) {
440
449
  return new Promise((resolve, reject) => {
441
450
  if (!this.connected)
442
451
  reject(new Error('not connected'));
@@ -472,6 +481,10 @@ class AntFEAdapter extends AntAdapter_1.default {
472
481
  payload.push(gr & 0xFF);
473
482
  const Messages = this.protocol.getAnt().Messages;
474
483
  let msg = Messages.acknowledgedData(payload);
484
+ if (withoutResponse) {
485
+ this.send(msg, logStr);
486
+ return resolve(true);
487
+ }
475
488
  this.send(msg, logStr, (res, err) => {
476
489
  if (err)
477
490
  return reject(err);
@@ -479,7 +492,10 @@ class AntFEAdapter extends AntAdapter_1.default {
479
492
  });
480
493
  });
481
494
  }
482
- sendBasicResistance(resistance) {
495
+ sendBasicResistanceNR(resistance) {
496
+ this.sendBasicResistance(resistance, true);
497
+ }
498
+ sendBasicResistance(resistance, withoutResponse = false) {
483
499
  return new Promise((resolve, reject) => {
484
500
  if (!this.connected)
485
501
  reject(new Error('not connected'));
@@ -500,6 +516,10 @@ class AntFEAdapter extends AntAdapter_1.default {
500
516
  payload.push(res & 0xFF);
501
517
  const Messages = this.protocol.getAnt().Messages;
502
518
  let msg = Messages.acknowledgedData(payload);
519
+ if (withoutResponse) {
520
+ this.send(msg, logStr);
521
+ return resolve(true);
522
+ }
503
523
  this.send(msg, logStr, (res, err) => {
504
524
  if (err)
505
525
  return reject(err);
@@ -507,7 +527,10 @@ class AntFEAdapter extends AntAdapter_1.default {
507
527
  });
508
528
  });
509
529
  }
510
- sendTargetPower(power) {
530
+ sendTargetPowerNR(power) {
531
+ this.sendTargetPower(power, true);
532
+ }
533
+ sendTargetPower(power, withoutResponse = false) {
511
534
  return new Promise((resolve, reject) => {
512
535
  if (!this.connected)
513
536
  reject(new Error('not connected'));
@@ -528,6 +551,10 @@ class AntFEAdapter extends AntAdapter_1.default {
528
551
  payload.push((p >> 8) & 0xFF);
529
552
  const Messages = this.protocol.getAnt().Messages;
530
553
  let msg = Messages.acknowledgedData(payload);
554
+ if (withoutResponse) {
555
+ this.send(msg, logStr);
556
+ return resolve(true);
557
+ }
531
558
  this.send(msg, logStr, (res, err) => {
532
559
  if (err)
533
560
  return reject(err);
@@ -535,7 +562,10 @@ class AntFEAdapter extends AntAdapter_1.default {
535
562
  });
536
563
  });
537
564
  }
538
- sendWindResistance(windCoeff, windSpeed, draftFactor) {
565
+ sendWindResistanceNR(windCoeff, windSpeed, draftFactor) {
566
+ this.sendWindResistance(windCoeff, windSpeed, draftFactor, true);
567
+ }
568
+ sendWindResistance(windCoeff, windSpeed, draftFactor, withoutResponse = false) {
539
569
  return new Promise((resolve, reject) => {
540
570
  if (!this.connected)
541
571
  reject(new Error('not connected'));
@@ -566,6 +596,10 @@ class AntFEAdapter extends AntAdapter_1.default {
566
596
  payload.push(df & 0xFF);
567
597
  const Messages = this.protocol.getAnt().Messages;
568
598
  let msg = Messages.acknowledgedData(payload);
599
+ if (withoutResponse) {
600
+ this.send(msg, logStr);
601
+ return resolve(true);
602
+ }
569
603
  this.send(msg, logStr, (res, err) => {
570
604
  if (err)
571
605
  return reject(err);
@@ -573,7 +607,10 @@ class AntFEAdapter extends AntAdapter_1.default {
573
607
  });
574
608
  });
575
609
  }
576
- sendTrackResistance(slope, rrCoeff) {
610
+ sendTrackResistanceNR(slope, rrCoeff) {
611
+ this.sendTrackResistance(slope, rrCoeff, true);
612
+ }
613
+ sendTrackResistance(slope, rrCoeff, withoutResponse = false) {
577
614
  return new Promise((resolve, reject) => {
578
615
  if (!this.connected)
579
616
  reject(new Error('not connected'));
@@ -600,6 +637,10 @@ class AntFEAdapter extends AntAdapter_1.default {
600
637
  payload.push(rr & 0xFF);
601
638
  const Messages = this.protocol.getAnt().Messages;
602
639
  let msg = Messages.acknowledgedData(payload);
640
+ if (withoutResponse) {
641
+ this.send(msg, logStr);
642
+ return resolve(true);
643
+ }
603
644
  this.send(msg, logStr, (res, err) => {
604
645
  if (err)
605
646
  return reject(err);
@@ -553,14 +553,14 @@ class BleInterface extends ble_1.BleInterfaceClass {
553
553
  });
554
554
  };
555
555
  const onPeripheralFound = (peripheral, fromCache = false) => __awaiter(this, void 0, void 0, function* () {
556
- if (!peripheral || !peripheral.advertisement || !peripheral.advertisement.localName || !peripheral.advertisement.serviceUuids || peripheral.advertisement.serviceUuids.length === 0)
556
+ if (!peripheral || !peripheral.advertisement || !peripheral.advertisement.localName || !peripheral.advertisement.serviceUuids)
557
557
  return;
558
558
  if (fromCache) {
559
559
  this.logEvent({ message: 'adding from Cache', peripheral: peripheral.address });
560
560
  }
561
561
  else {
562
562
  const { id, name, address, advertisement = {} } = peripheral;
563
- this.logEvent({ message: 'BLE scan: found device', peripheral: { id, name, address, services: advertisement.serviceUuids } });
563
+ this.logEvent({ message: 'BLE scan: found device', peripheral: { id, name: advertisement.localName, address, services: advertisement.serviceUuids } });
564
564
  }
565
565
  if (peripheral.address === undefined || peripheral.address === '')
566
566
  peripheral.address = peripheral.id;
@@ -568,8 +568,10 @@ class BleInterface extends ble_1.BleInterfaceClass {
568
568
  if (isPeripheralProcessed)
569
569
  return;
570
570
  peripheralsProcessed.push(peripheral.address);
571
- const characteristics = yield this.getCharacteristics(peripheral);
571
+ if (scanForDevice && requested.name && requested.name !== peripheral.advertisement.localName)
572
+ return;
572
573
  const connector = this.getConnector(peripheral);
574
+ const characteristics = yield this.getCharacteristics(peripheral);
573
575
  const connectedServices = connector.getServices();
574
576
  const services = connectedServices ? connectedServices.map(cs => cs.uuid) : undefined;
575
577
  const connectedPeripheral = connector.getPeripheral();
@@ -631,7 +633,7 @@ class BleInterface extends ble_1.BleInterfaceClass {
631
633
  });
632
634
  this.logEvent({ message: `${opStr}: start scanning`, requested: scanForDevice ? { name, address, profile } : undefined, timeout });
633
635
  let services = [];
634
- if (scanForDevice) {
636
+ if (scanForDevice && name && !name.toLowerCase().startsWith('tacx')) {
635
637
  if (props.requested instanceof ble_1.BleDeviceClass) {
636
638
  const device = props.requested;
637
639
  services = (device.getServices()) || [];
package/lib/ble/fm.js CHANGED
@@ -251,8 +251,8 @@ class BleFitnessMachineDevice extends ble_device_1.BleDevice {
251
251
  this.data.totalDistance = (dvHigh << 8) + dvLow;
252
252
  }
253
253
  if (flags & IndoorBikeDataFlag.ResistanceLevelPresent) {
254
- this.data.resistanceLevel = data.readInt8(offset);
255
- offset += 1;
254
+ this.data.resistanceLevel = data.readInt16LE(offset);
255
+ offset += 2;
256
256
  }
257
257
  if (flags & IndoorBikeDataFlag.InstantaneousPowerPresent) {
258
258
  this.data.instantaneousPower = data.readInt16LE(offset);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "incyclist-devices",
3
- "version": "1.4.96",
3
+ "version": "1.4.98",
4
4
  "dependencies": {
5
5
  "@serialport/parser-byte-length": "^9.0.1",
6
6
  "@serialport/parser-delimiter": "^9.0.1",