incyclist-devices 1.4.84 → 1.4.85

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.
@@ -202,6 +202,8 @@ class BleDevice extends ble_1.BleDeviceClass {
202
202
  this.peripheral = devices[0].peripheral;
203
203
  yield this.connectPeripheral(this.peripheral);
204
204
  this.logEvent({ message: 'connect result: success', mode: 'device', device: { id, name, address } });
205
+ this.connectState.isConnecting = false;
206
+ this.connectState.isConnected = true;
205
207
  return true;
206
208
  }
207
209
  }
@@ -362,7 +362,7 @@ class BleInterface extends ble_1.BleInterfaceClass {
362
362
  createDevice(DeviceClass, peripheral, characteristics) {
363
363
  try {
364
364
  const C = DeviceClass;
365
- const device = new C({ peripheral });
365
+ const device = new C({ peripheral, logger: this.logger });
366
366
  const cids = characteristics ? characteristics.map(c => (0, ble_1.uuid)(c.uuid)) : [];
367
367
  this.logEvent({ message: 'trying to create device', peripheral: peripheral.address, characteristics: cids, profile: device.getProfile() });
368
368
  const existingDevice = this.devices.find(i => i.device.id === device.id && i.device.getProfile() === device.getProfile());
@@ -395,6 +395,7 @@ class BleInterface extends ble_1.BleInterfaceClass {
395
395
  this.scanState.isConnecting = true;
396
396
  const existing = this.devices.find(i => (!profile || i.device.getProfile() === profile) && (i.device.address === requested.address || i.device.id === requested.id || i.device.name === requested.name));
397
397
  if (existing) {
398
+ this.logEvent({ message: 'connect existing device' });
398
399
  yield existing.device.connect();
399
400
  this.scanState.isConnecting = false;
400
401
  return existing.device;
@@ -415,6 +416,9 @@ class BleInterface extends ble_1.BleInterfaceClass {
415
416
  }
416
417
  }
417
418
  }
419
+ const connectedDevice = this.devices.find(d => d.isConnected);
420
+ if (connectedDevice)
421
+ return connectedDevice.device;
418
422
  }
419
423
  let devices = [];
420
424
  let retry = false;
@@ -649,26 +653,26 @@ class BleInterface extends ble_1.BleInterfaceClass {
649
653
  });
650
654
  }
651
655
  stopScan() {
652
- if (!this.scanState.isScanning) {
653
- return Promise.resolve(true);
654
- }
655
- if (!this.getBinding())
656
- return Promise.reject(new Error('no binding defined'));
657
- this.getBinding().removeAllListeners('discover');
658
- const ongoing = this.peripheralCache.filter(i => i.state.isLoading);
659
- if (ongoing)
660
- ongoing.forEach(i => { i.isInterrupted = true; });
661
- this.logEvent({ message: 'scan stop request' });
662
- return new Promise(resolve => {
663
- this.getBinding().stopScanning(() => {
664
- this.scanState.isScanning = false;
665
- this.logEvent({ message: 'scan stop result: success' });
666
- resolve(true);
667
- });
656
+ return __awaiter(this, void 0, void 0, function* () {
657
+ this.logEvent({ message: 'scan stop request' });
658
+ if (!this.scanState.isScanning) {
659
+ this.logEvent({ message: 'scan stop result: not scanning' });
660
+ return true;
661
+ }
662
+ if (!this.getBinding())
663
+ throw new Error('no binding defined');
664
+ this.getBinding().removeAllListeners('discover');
665
+ const ongoing = this.peripheralCache.filter(i => i.state.isLoading);
666
+ if (ongoing)
667
+ ongoing.forEach(i => { i.isInterrupted = true; });
668
+ yield this.getBinding().stopScanning();
669
+ this.scanState.isScanning = false;
670
+ this.logEvent({ message: 'scan stop result: success' });
671
+ return true;
668
672
  });
669
673
  }
670
674
  isScanning() {
671
- return this.scanState.isScanning;
675
+ return this.scanState.isScanning === true;
672
676
  }
673
677
  addConnectedDevice(device) {
674
678
  const existigDevice = this.devices.find(i => i.device.id === device.id && i.device.getProfile() === device.getProfile());
@@ -70,9 +70,6 @@ class FtmsCyclingMode extends power_base_1.default {
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 (bikeData.pedalRpm === 0 || bikeData.isPedalling === false) {
74
- power = 0;
75
- }
76
73
  const m = this.getWeight();
77
74
  const t = this.getTimeSinceLastUpdate();
78
75
  const { speed, distance } = this.calculateSpeedAndDistance(power, slope, m, t, { bikeType });
@@ -9,3 +9,4 @@ export declare const CSP = "1818";
9
9
  export declare const CSP_MEASUREMENT = "2a63";
10
10
  export declare const CSP_FEATURE = "2a65";
11
11
  export declare const WAHOO_ADVANCED_TRAINER_CP = "a026e005";
12
+ 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 = 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.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';
@@ -12,3 +12,4 @@ exports.CSP = '1818';
12
12
  exports.CSP_MEASUREMENT = '2a63';
13
13
  exports.CSP_FEATURE = '2a65';
14
14
  exports.WAHOO_ADVANCED_TRAINER_CP = 'a026e005';
15
+ exports.WAHOO_ADVANCED_TRAINER_CP_FULL = 'A026E005-0A7D-4AB3-97FA-F1500F9FEB8B';
package/lib/ble/fm.js CHANGED
@@ -105,6 +105,7 @@ class BleFitnessMachineDevice extends ble_device_1.BleDevice {
105
105
  }
106
106
  subscribeWriteResponse(cuuid) {
107
107
  return __awaiter(this, void 0, void 0, function* () {
108
+ this.logEvent({ message: 'subscribe to CP response', characteristics: cuuid });
108
109
  const connector = this.ble.getConnector(this.peripheral);
109
110
  const isAlreadySubscribed = connector.isSubscribed(cuuid);
110
111
  if (!isAlreadySubscribed) {
@@ -610,7 +611,7 @@ class FmAdapter extends Device_1.default {
610
611
  }
611
612
  start(props) {
612
613
  return __awaiter(this, void 0, void 0, function* () {
613
- this.logger.logEvent({ message: 'start requested', profile: this.getProfile(), props });
614
+ this.logger.logEvent({ message: 'ftms: start requested', profile: this.getProfile(), props });
614
615
  if (this.ble.isScanning())
615
616
  yield this.ble.stopScan();
616
617
  try {
package/lib/ble/hrm.js CHANGED
@@ -102,7 +102,7 @@ class HrmAdapter extends Device_1.default {
102
102
  }
103
103
  start(props) {
104
104
  return __awaiter(this, void 0, void 0, function* () {
105
- this.logger.logEvent({ message: 'start requested', profile: this.getProfile(), props });
105
+ this.logger.logEvent({ message: 'hrm: start requested', profile: this.getProfile(), props });
106
106
  try {
107
107
  const bleDevice = yield this.ble.connectDevice(this.device);
108
108
  if (bleDevice) {
@@ -39,8 +39,8 @@ const ble_interface_1 = __importDefault(require("./ble-interface"));
39
39
  const fm_1 = __importStar(require("./fm"));
40
40
  const hrm_1 = __importStar(require("./hrm"));
41
41
  const pwr_1 = __importStar(require("./pwr"));
42
- const wahoo_kickr_1 = __importDefault(require("./wahoo-kickr"));
43
- const tacx_1 = __importDefault(require("./tacx"));
42
+ const wahoo_kickr_1 = __importStar(require("./wahoo-kickr"));
43
+ const tacx_1 = __importStar(require("./tacx"));
44
44
  class BleProtocol extends DeviceProtocol_1.default {
45
45
  constructor(binding) {
46
46
  super();
@@ -82,16 +82,19 @@ class BleProtocol extends DeviceProtocol_1.default {
82
82
  device = bleDevice;
83
83
  else {
84
84
  device = this.ble.findDeviceInCache(Object.assign(Object.assign({}, props()), { profile }));
85
- if (!device) {
86
- if (profile.toLowerCase() === 'wahoo smart trainer')
87
- device = new wahoo_kickr_1.default(props());
88
- else if (profile === tacx_1.default.PROFILE)
89
- device = new tacx_1.default(props());
90
- else
91
- device = new fm_1.default(props());
92
- }
93
85
  }
94
- return new fm_1.FmAdapter(device, this);
86
+ if (profile.toLowerCase() === 'wahoo smart trainer') {
87
+ device = device || new wahoo_kickr_1.default(props());
88
+ return new wahoo_kickr_1.WahooAdvancedFmAdapter(device, this);
89
+ }
90
+ else if (profile === tacx_1.default.PROFILE) {
91
+ device = device || new tacx_1.default(props());
92
+ return new tacx_1.TacxBleFEAdapter(device, this);
93
+ }
94
+ else {
95
+ device = device || new fm_1.default(props());
96
+ return new fm_1.FmAdapter(device, this);
97
+ }
95
98
  case 'cp':
96
99
  case 'power meter':
97
100
  return new pwr_1.PwrAdapter(fromDevice ? bleDevice : new pwr_1.default(props()), this);
package/lib/ble/pwr.d.ts CHANGED
@@ -62,6 +62,7 @@ export declare class PwrAdapter extends DeviceAdapter {
62
62
  weight?: number;
63
63
  };
64
64
  constructor(device: BleDeviceClass, protocol: BleProtocol);
65
+ select(): void;
65
66
  isBike(): boolean;
66
67
  isHrm(): boolean;
67
68
  isPower(): boolean;
package/lib/ble/pwr.js CHANGED
@@ -173,6 +173,7 @@ class PwrAdapter extends Device_1.default {
173
173
  this.mode = this.getDefaultCyclingMode();
174
174
  this.logger = new gd_eventlog_1.EventLogger('Ble-CP');
175
175
  }
176
+ select() { this.selected = true; }
176
177
  isBike() { return true; }
177
178
  isHrm() { return false; }
178
179
  isPower() { return true; }
@@ -277,7 +278,7 @@ class PwrAdapter extends Device_1.default {
277
278
  this.userSettings = props.user;
278
279
  if (props && props.bikeSettings)
279
280
  this.bikeSettings = props.bikeSettings;
280
- this.logger.logEvent({ message: 'start requested', profile: this.getProfile(), props });
281
+ this.logger.logEvent({ message: 'csp: start requested', profile: this.getProfile(), props });
281
282
  try {
282
283
  const bleDevice = yield this.ble.connectDevice(this.device);
283
284
  if (bleDevice) {
package/lib/ble/tacx.js CHANGED
@@ -673,7 +673,7 @@ class TacxBleFEAdapter extends fm_1.FmAdapter {
673
673
  }
674
674
  start(props) {
675
675
  return __awaiter(this, void 0, void 0, function* () {
676
- this.logger.logEvent({ message: 'start requested', profile: this.getProfile(), props });
676
+ this.logger.logEvent({ message: 'tacx: start requested', profile: this.getProfile(), props });
677
677
  if (this.ble.isScanning())
678
678
  yield this.ble.stopScan();
679
679
  try {
@@ -36,6 +36,7 @@ export default class WahooAdvancedFitnessMachineDevice extends BleFitnessMachine
36
36
  tsPrevWrite: any;
37
37
  prevSlope: any;
38
38
  wahooCP: string;
39
+ isSimMode: boolean;
39
40
  constructor(props?: any);
40
41
  isMatching(characteristics: string[]): boolean;
41
42
  init(): Promise<boolean>;
@@ -71,6 +71,11 @@ class WahooAdvancedFitnessMachineDevice extends fm_1.default {
71
71
  return __awaiter(this, void 0, void 0, function* () {
72
72
  try {
73
73
  yield this.subscribeWriteResponse(this.wahooCP);
74
+ try {
75
+ yield this.subscribeWriteResponse(consts_1.WAHOO_ADVANCED_TRAINER_CP_FULL.toLowerCase());
76
+ }
77
+ catch (err) {
78
+ }
74
79
  yield _super.initDevice.call(this);
75
80
  return true;
76
81
  }
@@ -81,6 +86,7 @@ class WahooAdvancedFitnessMachineDevice extends fm_1.default {
81
86
  });
82
87
  }
83
88
  setCharacteristicUUIDs(uuids) {
89
+ this.logEvent({ message: 'set uuids', uuids });
84
90
  uuids.forEach(c => {
85
91
  if ((0, ble_1.matches)(c, consts_1.WAHOO_ADVANCED_TRAINER_CP))
86
92
  this.wahooCP = c;
@@ -163,9 +169,7 @@ class WahooAdvancedFitnessMachineDevice extends fm_1.default {
163
169
  onData(characteristic, data) {
164
170
  super.onData(characteristic, data);
165
171
  const isDuplicate = this.checkForDuplicate(characteristic, data);
166
- if (isDuplicate)
167
- return;
168
- const uuid = characteristic.toLocaleLowerCase();
172
+ const uuid = characteristic.toLowerCase();
169
173
  let res = undefined;
170
174
  switch (uuid) {
171
175
  case '2a63':
@@ -181,6 +185,7 @@ class WahooAdvancedFitnessMachineDevice extends fm_1.default {
181
185
  res = this.parseFitnessMachineStatus(data);
182
186
  break;
183
187
  default:
188
+ this.logEvent({ message: 'data', uuid, data: data.toString('hex') });
184
189
  break;
185
190
  }
186
191
  if (res)
@@ -189,14 +194,13 @@ class WahooAdvancedFitnessMachineDevice extends fm_1.default {
189
194
  writeWahooFtmsMessage(requestedOpCode, data) {
190
195
  return __awaiter(this, void 0, void 0, function* () {
191
196
  try {
192
- this.logEvent({ message: 'wahoo cp:write', data: data.toString('hex') });
193
197
  const opcode = Buffer.alloc(1);
194
198
  opcode.writeUInt8(requestedOpCode, 0);
195
199
  const message = Buffer.concat([opcode, data]);
200
+ this.logEvent({ message: 'wahoo cp:write', data: message.toString('hex') });
196
201
  const res = yield this.write(this.wahooCP, message);
197
202
  const responseData = Buffer.from(res);
198
203
  const result = responseData.readUInt8(0);
199
- this.logEvent({ message: 'wahoo cp:response', opCode: requestedOpCode, response: responseData.toString('hex') });
200
204
  return result === 1;
201
205
  }
202
206
  catch (err) {
@@ -237,61 +241,105 @@ class WahooAdvancedFitnessMachineDevice extends fm_1.default {
237
241
  }
238
242
  setErgMode(power) {
239
243
  return __awaiter(this, void 0, void 0, function* () {
240
- if (this.isPowerAdjusting())
244
+ this.logger.logEvent({ message: 'setErgMode', power });
245
+ try {
246
+ if (this.isPowerAdjusting())
247
+ return false;
248
+ const data = Buffer.alloc(2);
249
+ data.writeInt16LE(Math.round(power), 0);
250
+ const res = yield this.writeWahooFtmsMessage(66, data);
251
+ if (res === true) {
252
+ this.setPowerAdjusting();
253
+ this.data.targetPower = power;
254
+ this.isSimMode = false;
255
+ }
256
+ return res;
257
+ }
258
+ catch (err) {
259
+ this.logEvent({ message: 'error', fn: 'setErgMode', error: err.message || err, stack: err.stack });
241
260
  return false;
242
- const data = Buffer.alloc(2);
243
- data.writeInt16LE(Math.round(power), 0);
244
- const res = yield this.writeWahooFtmsMessage(66, data);
245
- if (res === true) {
246
- this.setPowerAdjusting();
247
- this.data.targetPower = power;
248
261
  }
249
- return res;
250
262
  });
251
263
  }
252
264
  setSimMode(weight, crr, cw) {
253
265
  return __awaiter(this, void 0, void 0, function* () {
254
- const data = Buffer.alloc(6);
255
- data.writeInt16LE(Math.round(weight * 100), 0);
256
- data.writeInt16LE(Math.round(crr * 10000), 2);
257
- data.writeInt16LE(Math.round(cw * 1000), 4);
258
- const res = yield this.writeWahooFtmsMessage(67, data);
259
- return res;
266
+ this.logger.logEvent({ message: 'setSimMode', weight, crr, cw });
267
+ try {
268
+ const data = Buffer.alloc(6);
269
+ data.writeInt16LE(Math.round(weight * 100), 0);
270
+ data.writeInt16LE(Math.round(crr * 10000), 2);
271
+ data.writeInt16LE(Math.round(cw * 1000), 4);
272
+ const res = yield this.writeWahooFtmsMessage(67, data);
273
+ this.isSimMode = true;
274
+ return res;
275
+ }
276
+ catch (err) {
277
+ this.logEvent({ message: 'error', fn: 'setSimMode', error: err.message || err, stack: err.stack });
278
+ return false;
279
+ }
260
280
  });
261
281
  }
262
282
  setSimCRR(crr) {
263
283
  return __awaiter(this, void 0, void 0, function* () {
264
- const data = Buffer.alloc(2);
265
- data.writeInt16LE(Math.round(crr * 10000), 0);
266
- const res = yield this.writeWahooFtmsMessage(68, data);
267
- return res;
284
+ this.logger.logEvent({ message: 'setSimCRR', crr });
285
+ try {
286
+ const data = Buffer.alloc(2);
287
+ data.writeInt16LE(Math.round(crr * 10000), 0);
288
+ const res = yield this.writeWahooFtmsMessage(68, data);
289
+ return res;
290
+ }
291
+ catch (err) {
292
+ this.logEvent({ message: 'error', fn: 'setSimCRR', error: err.message || err, stack: err.stack });
293
+ return false;
294
+ }
268
295
  });
269
296
  }
270
297
  setSimWindResistance(cw) {
271
298
  return __awaiter(this, void 0, void 0, function* () {
272
- const data = Buffer.alloc(2);
273
- data.writeInt16LE(Math.round(cw * 1000), 0);
274
- const res = yield this.writeWahooFtmsMessage(69, data);
275
- return res;
299
+ this.logger.logEvent({ message: 'setSimWindResistance', cw });
300
+ try {
301
+ const data = Buffer.alloc(2);
302
+ data.writeInt16LE(Math.round(cw * 1000), 0);
303
+ const res = yield this.writeWahooFtmsMessage(69, data);
304
+ return res;
305
+ }
306
+ catch (err) {
307
+ this.logEvent({ message: 'error', fn: 'setSimWindResistance', error: err.message || err, stack: err.stack });
308
+ return false;
309
+ }
276
310
  });
277
311
  }
278
312
  setSimGrade(slope) {
279
313
  return __awaiter(this, void 0, void 0, function* () {
280
- const value = (Math.min(1, Math.max(-1, slope)) + 1.0) * 65535 / 2.0;
281
- const slopeVal = Math.floor(value);
282
- const data = Buffer.alloc(2);
283
- data.writeInt16LE(slopeVal, 0);
284
- const res = yield this.writeWahooFtmsMessage(70, data);
285
- return res;
314
+ this.logger.logEvent({ message: 'setSimGrade', slope });
315
+ try {
316
+ const value = (Math.min(1, Math.max(-1, slope)) + 1.0) * 65535 / 2.0;
317
+ const slopeVal = Math.floor(value);
318
+ const data = Buffer.alloc(2);
319
+ data.writeInt16LE(slopeVal, 0);
320
+ const res = yield this.writeWahooFtmsMessage(70, data);
321
+ return res;
322
+ }
323
+ catch (err) {
324
+ this.logEvent({ message: 'error', fn: 'setSimGrade', error: err.message || err, stack: err.stack });
325
+ return false;
326
+ }
286
327
  });
287
328
  }
288
329
  setSimWindSpeed(v) {
289
330
  return __awaiter(this, void 0, void 0, function* () {
290
- const value = (Math.max(-32.767, Math.min(32.767, v)) + 32.767) * 1000;
291
- const data = Buffer.alloc(2);
292
- data.writeInt16LE(Math.round(value), 0);
293
- const res = yield this.writeWahooFtmsMessage(71, data);
294
- return res;
331
+ this.logger.logEvent({ message: 'setSimWindSpeed', v });
332
+ try {
333
+ const value = (Math.max(-32.767, Math.min(32.767, v)) + 32.767) * 1000;
334
+ const data = Buffer.alloc(2);
335
+ data.writeInt16LE(Math.round(value), 0);
336
+ const res = yield this.writeWahooFtmsMessage(71, data);
337
+ return res;
338
+ }
339
+ catch (err) {
340
+ this.logEvent({ message: 'error', fn: 'setSimWindSpeed', error: err.message || err, stack: err.stack });
341
+ return false;
342
+ }
295
343
  });
296
344
  }
297
345
  setTargetPower(power) {
@@ -315,7 +363,7 @@ class WahooAdvancedFitnessMachineDevice extends fm_1.default {
315
363
  try {
316
364
  const hasControl = yield this.requestControl();
317
365
  if (!hasControl) {
318
- this.logEvent({ message: 'setTargetPower failed', reason: 'control is disabled' });
366
+ this.logEvent({ message: 'setSlope failed', reason: 'control is disabled' });
319
367
  return false;
320
368
  }
321
369
  const res = yield this.setSimGrade(slope);
@@ -331,6 +379,7 @@ class WahooAdvancedFitnessMachineDevice extends fm_1.default {
331
379
  }
332
380
  reset() {
333
381
  this.data = {};
382
+ this.isSimMode = undefined;
334
383
  }
335
384
  }
336
385
  exports.default = WahooAdvancedFitnessMachineDevice;
@@ -358,12 +407,14 @@ class WahooAdvancedFmAdapter extends fm_1.FmAdapter {
358
407
  }
359
408
  start(props) {
360
409
  return __awaiter(this, void 0, void 0, function* () {
361
- this.logger.logEvent({ message: 'start requested', profile: this.getProfile(), props });
362
- if (this.ble.isScanning())
363
- yield this.ble.stopScan();
410
+ this.logger.logEvent({ message: 'wahoo: start requested', profile: this.getProfile(), props, isScanning: this.ble.isScanning() });
364
411
  try {
412
+ this.logger.logEvent({ message: 'wahoo: stop previous scan', isScanning: this.ble.isScanning() });
413
+ if (this.ble.isScanning())
414
+ yield this.ble.stopScan();
415
+ this.logger.logEvent({ message: 'wahoo trying device connect' });
365
416
  const bleDevice = yield this.ble.connectDevice(this.device);
366
- bleDevice.setLogger(this.logger);
417
+ this.logger.logEvent({ message: 'wahoo device connected', connected: (bleDevice !== null && bleDevice !== undefined) });
367
418
  if (bleDevice) {
368
419
  this.device = bleDevice;
369
420
  const mode = this.getCyclingMode();
@@ -383,8 +434,8 @@ class WahooAdvancedFmAdapter extends fm_1.FmAdapter {
383
434
  }
384
435
  }
385
436
  const { user } = props || {};
386
- const weight = (user && user.weight ? user.weight : Device_1.DEFAULT_USER_WEIGHT) + Device_1.DEFAULT_BIKE_WEIGHT;
387
- this.device.setSimMode(weight, this.device.getCrr(), this.device.getCw());
437
+ const weight = (user && user.weight ? Number(user.weight) : Device_1.DEFAULT_USER_WEIGHT) + Device_1.DEFAULT_BIKE_WEIGHT;
438
+ yield this.device.setSimMode(weight, this.device.getCrr(), this.device.getCw());
388
439
  const startRequest = this.getCyclingMode().getBikeInitRequest();
389
440
  yield this.sendUpdate(startRequest);
390
441
  bleDevice.on('data', (data) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "incyclist-devices",
3
- "version": "1.4.84",
3
+ "version": "1.4.85",
4
4
  "dependencies": {
5
5
  "@serialport/parser-byte-length": "^9.0.1",
6
6
  "@serialport/parser-delimiter": "^9.0.1",