incyclist-devices 2.4.5 → 2.4.6-beta.2

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.
@@ -35,6 +35,7 @@ export default class SmartTrainerCyclingMode extends PowerBasedCyclingModeBase i
35
35
  protected maintainPower: number;
36
36
  protected prevData: any;
37
37
  protected prevEkin: number;
38
+ protected prevSimPower: number;
38
39
  protected readonly gearRatios: number[];
39
40
  constructor(adapter: IAdapter, props?: any);
40
41
  getBikeInitRequest(): UpdateRequest;
@@ -149,8 +149,6 @@ class SmartTrainerCyclingMode extends power_base_1.default {
149
149
  return;
150
150
  }
151
151
  if (request.slope === undefined) {
152
- console.log('# set simulated power (same slope):', { simPower: this.simPower, gear: this.gear, simSlope: this.simSlope, routeSlope: this.data.slope, cadence: this.data.pedalRpm, power: this.data.power });
153
- this.logger.logEvent({ message: 'set simulated power (same slope)', simPower: this.simPower, gear: this.gear, simSlope: this.simSlope, routeSlope: this.data.slope, cadence: this.data.pedalRpm, power: this.data.power });
154
152
  }
155
153
  else {
156
154
  const prev = (_a = this.data.slope) !== null && _a !== void 0 ? _a : 0;
@@ -189,6 +187,7 @@ class SmartTrainerCyclingMode extends power_base_1.default {
189
187
  }
190
188
  }
191
189
  checkCadenceChange(request, newRequest = {}) {
190
+ var _a;
192
191
  const virtshiftMode = this.getVirtualShiftMode();
193
192
  if (virtshiftMode !== 'Simulated') {
194
193
  return;
@@ -198,10 +197,8 @@ class SmartTrainerCyclingMode extends power_base_1.default {
198
197
  return;
199
198
  }
200
199
  if (this.data.pedalRpm !== this.prevData.pedalRpm) {
201
- console.log('# cadence changed ', { cadence: this.data.pedalRpm, prevCadence: this.prevData.pedalRpm });
202
200
  this.logger.logEvent({ message: 'cadence changed', cadence: this.data.pedalRpm, prevCadence: this.prevData.pedalRpm });
203
- this.calculateSimulatedPower('cadence');
204
- delete request.slope;
201
+ request.slope = (_a = request.slope) !== null && _a !== void 0 ? _a : this.data.slope;
205
202
  }
206
203
  }
207
204
  calculateSimulatedPower(changed) {
@@ -216,29 +213,23 @@ class SmartTrainerCyclingMode extends power_base_1.default {
216
213
  const v = virtualSpeed / 3.6;
217
214
  const newPower = calculations_1.default.calculatePower(m, virtualSpeed / 3.6, (_c = this.simSlope) !== null && _c !== void 0 ? _c : 0);
218
215
  const prevPower = this.data.power;
216
+ const prev = ((_e = (_d = this.prevSimPower) !== null && _d !== void 0 ? _d : prevPower) !== null && _e !== void 0 ? _e : 0);
217
+ const delta = newPower - prev;
219
218
  if (!this.prevEkin && this.data.isPedalling) {
220
219
  this.simPower = Math.max(newPower, prevPower);
221
220
  this.prevEkin = m * v * v / 2;
222
- console.log('# set simulated power (starting)', { power: this.simPower, gear: this.gear, simSlope: this.simSlope, routeSlope: this.data.slope, prevPower, newPower });
223
- this.logger.logEvent({ message: 'set simulated power (starting)', power: this.simPower, gear: this.gear, simSlope: this.simSlope, routeSlope: this.data.slope, prevPower, newPower });
221
+ this.logger.logEvent({ message: 'set simulated power (starting)', target: this.simPower, gear: this.gear, simSlope: this.simSlope, routeSlope: this.data.slope, prevTarget: this.prevSimPower, actualPower: prevPower, newPower });
224
222
  }
225
223
  else if (changed === 'gear') {
226
- this.simPower = newPower;
224
+ this.simPower = prev + delta / 2;
227
225
  this.prevEkin = m * v * v / 2;
228
- console.log('# set simulated power (gear change)', { power: this.simPower, gear: this.gear, simSlope: this.simSlope, routeSlope: this.data.slope, prevPower, newPower });
229
- this.logger.logEvent({ message: 'set simulated power (gear change)', power: this.simPower, gear: this.gear, simSlope: this.simSlope, routeSlope: this.data.slope, prevPower, newPower });
226
+ this.logger.logEvent({ message: 'set simulated power (gear change)', target: this.simPower, gear: this.gear, simSlope: this.simSlope, routeSlope: this.data.slope, prevTarget: this.prevSimPower, actualPower: prevPower, newPower });
227
+ }
228
+ else if (changed === 'slope' || changed === 'cadence') {
229
+ this.simPower = prev + delta / 4;
230
+ this.logger.logEvent({ message: `set simulated power (${changed} change)`, target: this.simPower, gear: this.gear, simSlope: this.simSlope, routeSlope: this.data.slope, prevTarget: this.prevSimPower, actualPower: prevPower, newPower });
230
231
  }
231
232
  else {
232
- const powerDiff = newPower - prevPower;
233
- const vTarget = virtualSpeed * 1000 / 3600;
234
- const eKinTarget = m * vTarget * vTarget / 2;
235
- const eKinPrev = (_d = this.prevEkin) !== null && _d !== void 0 ? _d : 0;
236
- const delta = eKinTarget - eKinPrev;
237
- const eKinAfter1sec = eKinPrev + powerDiff * 1;
238
- const vAfter1sec = Math.sqrt(eKinAfter1sec / m * 2);
239
- this.simPower = calculations_1.default.calculatePower(m, vAfter1sec, (_e = this.simSlope) !== null && _e !== void 0 ? _e : 0);
240
- console.log('# set simulated power (Ekin):', { power: this.simPower, gear: this.gear, simSlope: this.simSlope, routeSlope: this.data.slope, eKinPrev, eKinTarget, delta, prevPower, newPower });
241
- this.logger.logEvent({ message: 'set simulated power (Ekin)', power: this.simPower, gear: this.gear, simSlope: this.simSlope, routeSlope: this.data.slope, eKinPrev, eKinTarget, delta, prevPower, newPower });
242
233
  }
243
234
  }
244
235
  else {
@@ -280,6 +271,7 @@ class SmartTrainerCyclingMode extends power_base_1.default {
280
271
  this.calculateSimulatedPower('gear');
281
272
  if (this.simPower !== undefined) {
282
273
  this.adapter.sendUpdate({ targetPower: this.simPower }).then(() => { });
274
+ this.prevSimPower = this.simPower;
283
275
  }
284
276
  }
285
277
  break;
@@ -430,6 +422,9 @@ class SmartTrainerCyclingMode extends power_base_1.default {
430
422
  catch (err) {
431
423
  this.logger.logEvent({ message: "error", fn: 'sendBikeUpdate()', error: err.message, stack: err.stack });
432
424
  }
425
+ if (newRequest.targetPower) {
426
+ this.prevSimPower = newRequest.targetPower;
427
+ }
433
428
  return newRequest;
434
429
  }
435
430
  getGearString() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "incyclist-devices",
3
- "version": "2.4.5",
3
+ "version": "2.4.6-beta.2",
4
4
  "dependencies": {
5
5
  "@protobuf-ts/runtime": "^2.11.1",
6
6
  "@serialport/bindings-interface": "^1.2.2",