incyclist-devices 2.2.10-beta.0 → 2.3.0-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.
- package/lib/antv2/base/interface.js +2 -2
- package/lib/antv2/factories/index.d.ts +1 -0
- package/lib/antv2/factories/index.js +17 -0
- package/lib/antv2/fe/adapter.js +5 -4
- package/lib/antv2/index.d.ts +1 -0
- package/lib/antv2/index.js +12 -8
- package/lib/base/adpater.js +1 -1
- package/lib/ble/adapter-factory.d.ts +20 -24
- package/lib/ble/adapter-factory.js +13 -36
- package/lib/ble/base/adapter.d.ts +16 -5
- package/lib/ble/base/adapter.js +174 -57
- package/lib/ble/base/comms.d.ts +2 -74
- package/lib/ble/base/comms.js +3 -596
- package/lib/ble/base/interface.d.ts +96 -0
- package/lib/ble/base/interface.js +560 -0
- package/lib/ble/base/peripheral.d.ts +34 -0
- package/lib/ble/base/peripheral.js +286 -0
- package/lib/ble/base/sensor.d.ts +32 -0
- package/lib/ble/base/sensor.js +135 -0
- package/lib/ble/base/types.d.ts +7 -0
- package/lib/ble/base/types.js +7 -0
- package/lib/ble/bindings/mock.js +6 -0
- package/lib/ble/bindings/types.d.ts +3 -4
- package/lib/ble/ble-interface.d.ts +7 -4
- package/lib/ble/ble-interface.js +16 -2
- package/lib/ble/ble-peripheral.d.ts +1 -0
- package/lib/ble/ble-peripheral.js +7 -11
- package/lib/ble/consts.d.ts +0 -6
- package/lib/ble/consts.js +1 -7
- package/lib/ble/cp/adapter.d.ts +3 -3
- package/lib/ble/cp/adapter.js +12 -13
- package/lib/ble/cp/comm.d.ts +1 -1
- package/lib/ble/cp/comm.js +2 -2
- package/lib/ble/cp/index.d.ts +1 -1
- package/lib/ble/cp/index.js +2 -2
- package/lib/ble/cp/sensor.d.ts +27 -0
- package/lib/ble/cp/sensor.js +107 -0
- package/lib/ble/elite/comms.d.ts +1 -1
- package/lib/ble/elite/comms.js +2 -2
- package/lib/ble/factories/adapter-factory.d.ts +34 -0
- package/lib/ble/factories/adapter-factory.js +137 -0
- package/lib/ble/factories/index.d.ts +2 -0
- package/lib/ble/factories/index.js +18 -0
- package/lib/ble/factories/interface-factory.d.ts +7 -0
- package/lib/ble/factories/interface-factory.js +18 -0
- package/lib/ble/factories/types.d.ts +18 -0
- package/lib/ble/factories/types.js +2 -0
- package/lib/ble/fm/adapter.d.ts +9 -4
- package/lib/ble/fm/adapter.js +105 -108
- package/lib/ble/fm/comms.d.ts +1 -1
- package/lib/ble/fm/comms.js +3 -3
- package/lib/ble/fm/consts.d.ts +93 -0
- package/lib/ble/fm/consts.js +55 -1
- package/lib/ble/fm/index.d.ts +1 -1
- package/lib/ble/fm/index.js +2 -2
- package/lib/ble/fm/sensor.d.ts +44 -0
- package/lib/ble/fm/sensor.js +384 -0
- package/lib/ble/hr/adapter.d.ts +3 -3
- package/lib/ble/hr/adapter.js +5 -8
- package/lib/ble/hr/comm.d.ts +1 -1
- package/lib/ble/hr/comm.js +2 -2
- package/lib/ble/hr/index.d.ts +1 -1
- package/lib/ble/hr/index.js +2 -2
- package/lib/ble/hr/sensor.d.ts +17 -0
- package/lib/ble/hr/sensor.js +52 -0
- package/lib/ble/index.d.ts +4 -3
- package/lib/ble/index.js +29 -13
- package/lib/ble/tacx/adapter.d.ts +4 -2
- package/lib/ble/tacx/adapter.js +26 -66
- package/lib/ble/tacx/comms.d.ts +1 -1
- package/lib/ble/tacx/comms.js +2 -2
- package/lib/ble/tacx/consts.d.ts +23 -0
- package/lib/ble/tacx/consts.js +27 -0
- package/lib/ble/tacx/index.d.ts +1 -1
- package/lib/ble/tacx/index.js +2 -2
- package/lib/ble/tacx/sensor.d.ts +63 -0
- package/lib/ble/tacx/sensor.js +596 -0
- package/lib/ble/types.d.ts +81 -52
- package/lib/ble/utils.d.ts +7 -2
- package/lib/ble/utils.js +93 -9
- package/lib/ble/wahoo/adapter.d.ts +2 -2
- package/lib/ble/wahoo/adapter.js +4 -72
- package/lib/ble/wahoo/comms.d.ts +1 -1
- package/lib/ble/wahoo/comms.js +2 -2
- package/lib/ble/wahoo/consts.d.ts +16 -0
- package/lib/ble/wahoo/consts.js +7 -0
- package/lib/ble/wahoo/index.d.ts +1 -1
- package/lib/ble/wahoo/index.js +2 -2
- package/lib/ble/wahoo/sensor.d.ts +48 -0
- package/lib/ble/wahoo/sensor.js +356 -0
- package/lib/direct-connect/base/comms.d.ts +3 -0
- package/lib/direct-connect/base/comms.js +7 -0
- package/lib/direct-connect/base/interface.d.ts +75 -0
- package/lib/direct-connect/base/interface.js +311 -0
- package/lib/direct-connect/base/peripheral.d.ts +50 -0
- package/lib/direct-connect/base/peripheral.js +451 -0
- package/lib/direct-connect/base/sensor.d.ts +3 -0
- package/lib/direct-connect/base/sensor.js +7 -0
- package/lib/direct-connect/bindings/index.d.ts +1 -0
- package/lib/direct-connect/bindings/index.js +17 -0
- package/lib/direct-connect/bindings/types.d.ts +37 -0
- package/lib/direct-connect/bindings/types.js +2 -0
- package/lib/direct-connect/consts.d.ts +17 -0
- package/lib/direct-connect/consts.js +20 -0
- package/lib/direct-connect/index.d.ts +3 -0
- package/lib/direct-connect/index.js +22 -0
- package/lib/direct-connect/messages/CharacteristicNotification.d.ts +12 -0
- package/lib/direct-connect/messages/CharacteristicNotification.js +23 -0
- package/lib/direct-connect/messages/DiscoverCharacteristics.d.ts +22 -0
- package/lib/direct-connect/messages/DiscoverCharacteristics.js +43 -0
- package/lib/direct-connect/messages/DiscoverServices.d.ts +15 -0
- package/lib/direct-connect/messages/DiscoverServices.js +33 -0
- package/lib/direct-connect/messages/EnableCharacteristicNotifications.d.ts +18 -0
- package/lib/direct-connect/messages/EnableCharacteristicNotifications.js +35 -0
- package/lib/direct-connect/messages/ReadCharacteristic.d.ts +18 -0
- package/lib/direct-connect/messages/ReadCharacteristic.js +34 -0
- package/lib/direct-connect/messages/WriteCharacteristic.d.ts +18 -0
- package/lib/direct-connect/messages/WriteCharacteristic.js +36 -0
- package/lib/direct-connect/messages/error.d.ts +5 -0
- package/lib/direct-connect/messages/error.js +18 -0
- package/lib/direct-connect/messages/factory.d.ts +6 -0
- package/lib/direct-connect/messages/factory.js +44 -0
- package/lib/direct-connect/messages/index.d.ts +9 -0
- package/lib/direct-connect/messages/index.js +25 -0
- package/lib/direct-connect/messages/message.d.ts +20 -0
- package/lib/direct-connect/messages/message.js +90 -0
- package/lib/direct-connect/types.d.ts +24 -0
- package/lib/direct-connect/types.js +9 -0
- package/lib/direct-connect/utils.d.ts +5 -0
- package/lib/direct-connect/utils.js +73 -0
- package/lib/factories/adapters.js +14 -4
- package/lib/factories/interfaces.d.ts +2 -1
- package/lib/factories/interfaces.js +10 -7
- package/lib/index.d.ts +5 -4
- package/lib/index.js +6 -2
- package/lib/modes/antble-smarttrainer.d.ts +2 -16
- package/lib/modes/antble-smarttrainer.js +1 -98
- package/lib/modes/types.d.ts +1 -5
- package/lib/serial/bindings/tcp.d.ts +5 -4
- package/lib/serial/bindings/tcp.js +16 -23
- package/lib/types/device.d.ts +2 -1
- package/lib/types/device.js +1 -0
- package/lib/utils/calculations.d.ts +0 -1
- package/lib/utils/calculations.js +6 -22
- package/lib/utils/operation.d.ts +17 -0
- package/lib/utils/operation.js +20 -0
- package/lib/utils/task.d.ts +44 -0
- package/lib/utils/task.js +127 -0
- package/package.json +3 -1
package/lib/ble/tacx/adapter.js
CHANGED
|
@@ -14,17 +14,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
const gd_eventlog_1 = require("gd-eventlog");
|
|
16
16
|
const fm_1 = require("../fm");
|
|
17
|
-
const
|
|
17
|
+
const sensor_1 = __importDefault(require("./sensor"));
|
|
18
18
|
const consts_1 = require("../../base/consts");
|
|
19
19
|
const types_1 = require("../../types");
|
|
20
20
|
class BleTacxAdapter extends fm_1.BleFmAdapter {
|
|
21
21
|
constructor(settings, props) {
|
|
22
22
|
super(settings, props);
|
|
23
23
|
this.logger = new gd_eventlog_1.EventLogger('BLE-FEC-Tacx');
|
|
24
|
-
|
|
25
|
-
const logger = this.logger;
|
|
26
|
-
const ble = this.ble;
|
|
27
|
-
this.device = new comms_1.default({ id, address, name, ble, logger });
|
|
24
|
+
this.device = new sensor_1.default(this.getPeripheral(), { logger: this.logger });
|
|
28
25
|
this.capabilities = [
|
|
29
26
|
types_1.IncyclistCapability.Power, types_1.IncyclistCapability.Speed, types_1.IncyclistCapability.Cadence,
|
|
30
27
|
types_1.IncyclistCapability.Control
|
|
@@ -35,72 +32,35 @@ class BleTacxAdapter extends fm_1.BleFmAdapter {
|
|
|
35
32
|
return false;
|
|
36
33
|
return this.isEqual(device.settings);
|
|
37
34
|
}
|
|
35
|
+
updateSensor(peripheral) {
|
|
36
|
+
this.device = new sensor_1.default(peripheral, { logger: this.logger });
|
|
37
|
+
}
|
|
38
38
|
getProfile() {
|
|
39
39
|
return 'Smart Trainer';
|
|
40
40
|
}
|
|
41
|
-
|
|
42
|
-
return __awaiter(this,
|
|
43
|
-
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
if (this.ble.isScanning()) {
|
|
52
|
-
this.logger.logEvent({ message: 'stop previous scan', isScanning: this.ble.isScanning() });
|
|
53
|
-
yield this.ble.stopScan();
|
|
54
|
-
}
|
|
55
|
-
const connected = yield this.connect();
|
|
56
|
-
if (!connected)
|
|
57
|
-
throw new Error(`could not start device, reason:could not connect`);
|
|
58
|
-
this.logger.logEvent({ message: 'start requested', protocol: this.getProtocolName(), props });
|
|
59
|
-
try {
|
|
60
|
-
const comms = this.device;
|
|
61
|
-
if (comms) {
|
|
62
|
-
this.device = comms;
|
|
63
|
-
const mode = this.getCyclingMode();
|
|
64
|
-
if (mode && mode.getSetting('bikeType')) {
|
|
65
|
-
const bikeType = mode.getSetting('bikeType').toLowerCase();
|
|
66
|
-
comms.setCrr(fm_1.cRR);
|
|
67
|
-
switch (bikeType) {
|
|
68
|
-
case 'race':
|
|
69
|
-
comms.setCw(fm_1.cwABike.race);
|
|
70
|
-
break;
|
|
71
|
-
case 'triathlon':
|
|
72
|
-
comms.setCw(fm_1.cwABike.triathlon);
|
|
73
|
-
break;
|
|
74
|
-
case 'mountain':
|
|
75
|
-
comms.setCw(fm_1.cwABike.mountain);
|
|
76
|
-
break;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
const { user, wheelDiameter, gearRatio, bikeWeight = consts_1.DEFAULT_BIKE_WEIGHT } = props || {};
|
|
80
|
-
const userWeight = (user && user.weight ? user.weight : consts_1.DEFAULT_USER_WEIGHT);
|
|
81
|
-
comms.sendTrackResistance(0.0);
|
|
82
|
-
comms.sendUserConfiguration(userWeight, bikeWeight, wheelDiameter, gearRatio);
|
|
83
|
-
const startRequest = this.getCyclingMode().getBikeInitRequest();
|
|
84
|
-
yield this.sendUpdate(startRequest);
|
|
85
|
-
comms.on('data', (data) => {
|
|
86
|
-
this.onDeviceData(data);
|
|
87
|
-
});
|
|
88
|
-
this.resetData();
|
|
89
|
-
this.stopped = false;
|
|
90
|
-
this.started = true;
|
|
91
|
-
this.paused = false;
|
|
92
|
-
if (comms.features && comms.features.heartrate && !this.hasCapability(types_1.IncyclistCapability.HeartRate)) {
|
|
93
|
-
this.capabilities.push(types_1.IncyclistCapability.HeartRate);
|
|
94
|
-
}
|
|
95
|
-
return true;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
catch (err) {
|
|
99
|
-
this.logger.logEvent({ message: 'start result: error', error: err.message, profile: this.getProfile() });
|
|
100
|
-
throw new Error(`could not start device, reason:${err.message}`);
|
|
101
|
-
}
|
|
41
|
+
initControl(props) {
|
|
42
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
43
|
+
var _a;
|
|
44
|
+
const sensor = this.getComms();
|
|
45
|
+
const { user, wheelDiameter, gearRatio, bikeWeight = consts_1.DEFAULT_BIKE_WEIGHT } = props || {};
|
|
46
|
+
const userWeight = ((_a = user === null || user === void 0 ? void 0 : user.weight) !== null && _a !== void 0 ? _a : consts_1.DEFAULT_USER_WEIGHT);
|
|
47
|
+
sensor.sendTrackResistance(0.0);
|
|
48
|
+
sensor.sendUserConfiguration(userWeight, bikeWeight, wheelDiameter, gearRatio);
|
|
49
|
+
const startRequest = this.getCyclingMode().getBikeInitRequest();
|
|
50
|
+
yield this.sendUpdate(startRequest);
|
|
102
51
|
});
|
|
103
52
|
}
|
|
53
|
+
checkCapabilities() {
|
|
54
|
+
const before = this.capabilities.join(',');
|
|
55
|
+
const sensor = this.getComms();
|
|
56
|
+
if (sensor.features && sensor.features.heartrate && !this.hasCapability(types_1.IncyclistCapability.HeartRate)) {
|
|
57
|
+
this.capabilities.push(types_1.IncyclistCapability.HeartRate);
|
|
58
|
+
}
|
|
59
|
+
const after = this.capabilities.join(',');
|
|
60
|
+
if (before !== after) {
|
|
61
|
+
this.emit('device-info', this.getSettings(), { capabilities: this.capabilities });
|
|
62
|
+
}
|
|
63
|
+
}
|
|
104
64
|
}
|
|
105
65
|
BleTacxAdapter.INCYCLIST_PROFILE_NAME = 'Smart Trainer';
|
|
106
66
|
exports.default = BleTacxAdapter;
|
package/lib/ble/tacx/comms.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { LegacyProfile } from "../../antv2/types";
|
|
2
2
|
import { CrankData } from "../cp";
|
|
3
3
|
import { IndoorBikeData } from "../fm";
|
|
4
|
-
import BleFitnessMachineDevice from "../fm/
|
|
4
|
+
import BleFitnessMachineDevice from "../fm/sensor";
|
|
5
5
|
import { BleProtocol, IBlePeripheralConnector } from "../types";
|
|
6
6
|
import { BleFeBikeData } from "./types";
|
|
7
7
|
export default class TacxAdvancedFitnessMachineDevice extends BleFitnessMachineDevice {
|
package/lib/ble/tacx/comms.js
CHANGED
|
@@ -13,7 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
const consts_1 = require("../consts");
|
|
16
|
-
const
|
|
16
|
+
const sensor_1 = __importDefault(require("../fm/sensor"));
|
|
17
17
|
const utils_1 = require("../utils");
|
|
18
18
|
var ANTMessages;
|
|
19
19
|
(function (ANTMessages) {
|
|
@@ -37,7 +37,7 @@ const PROFILE_ID = 'Tacx SmartTrainer';
|
|
|
37
37
|
const SYNC_BYTE = 0xA4;
|
|
38
38
|
const DEFAULT_CHANNEL = 5;
|
|
39
39
|
const ACKNOWLEDGED_DATA = 0x4F;
|
|
40
|
-
class TacxAdvancedFitnessMachineDevice extends
|
|
40
|
+
class TacxAdvancedFitnessMachineDevice extends sensor_1.default {
|
|
41
41
|
constructor(props) {
|
|
42
42
|
super(props);
|
|
43
43
|
this.prevCrankData = undefined;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare enum ANTMessages {
|
|
2
|
+
calibrationCommand = 1,
|
|
3
|
+
calibrationStatus = 2,
|
|
4
|
+
generalFE = 16,
|
|
5
|
+
generalSettings = 17,
|
|
6
|
+
trainerData = 25,
|
|
7
|
+
basicResistance = 48,
|
|
8
|
+
targetPower = 49,
|
|
9
|
+
windResistance = 50,
|
|
10
|
+
trackResistance = 51,
|
|
11
|
+
feCapabilities = 54,
|
|
12
|
+
userConfiguration = 55,
|
|
13
|
+
requestData = 70,
|
|
14
|
+
commandStatus = 71,
|
|
15
|
+
manufactererData = 80,
|
|
16
|
+
productInformation = 81
|
|
17
|
+
}
|
|
18
|
+
export declare const SYNC_BYTE = 164;
|
|
19
|
+
export declare const DEFAULT_CHANNEL = 5;
|
|
20
|
+
export declare const ACKNOWLEDGED_DATA = 79;
|
|
21
|
+
export declare const TACX_FE_C_BLE = "6E40FEC1-B5A3-F393-E0A9-E50E24DCCA9E";
|
|
22
|
+
export declare const TACX_FE_C_RX = "6E40FEC2-B5A3-F393-E0A9-E50E24DCCA9E";
|
|
23
|
+
export declare const TACX_FE_C_TX = "6E40FEC3-B5A3-F393-E0A9-E50E24DCCA9E";
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TACX_FE_C_TX = exports.TACX_FE_C_RX = exports.TACX_FE_C_BLE = exports.ACKNOWLEDGED_DATA = exports.DEFAULT_CHANNEL = exports.SYNC_BYTE = exports.ANTMessages = void 0;
|
|
4
|
+
var ANTMessages;
|
|
5
|
+
(function (ANTMessages) {
|
|
6
|
+
ANTMessages[ANTMessages["calibrationCommand"] = 1] = "calibrationCommand";
|
|
7
|
+
ANTMessages[ANTMessages["calibrationStatus"] = 2] = "calibrationStatus";
|
|
8
|
+
ANTMessages[ANTMessages["generalFE"] = 16] = "generalFE";
|
|
9
|
+
ANTMessages[ANTMessages["generalSettings"] = 17] = "generalSettings";
|
|
10
|
+
ANTMessages[ANTMessages["trainerData"] = 25] = "trainerData";
|
|
11
|
+
ANTMessages[ANTMessages["basicResistance"] = 48] = "basicResistance";
|
|
12
|
+
ANTMessages[ANTMessages["targetPower"] = 49] = "targetPower";
|
|
13
|
+
ANTMessages[ANTMessages["windResistance"] = 50] = "windResistance";
|
|
14
|
+
ANTMessages[ANTMessages["trackResistance"] = 51] = "trackResistance";
|
|
15
|
+
ANTMessages[ANTMessages["feCapabilities"] = 54] = "feCapabilities";
|
|
16
|
+
ANTMessages[ANTMessages["userConfiguration"] = 55] = "userConfiguration";
|
|
17
|
+
ANTMessages[ANTMessages["requestData"] = 70] = "requestData";
|
|
18
|
+
ANTMessages[ANTMessages["commandStatus"] = 71] = "commandStatus";
|
|
19
|
+
ANTMessages[ANTMessages["manufactererData"] = 80] = "manufactererData";
|
|
20
|
+
ANTMessages[ANTMessages["productInformation"] = 81] = "productInformation";
|
|
21
|
+
})(ANTMessages || (exports.ANTMessages = ANTMessages = {}));
|
|
22
|
+
exports.SYNC_BYTE = 0xA4;
|
|
23
|
+
exports.DEFAULT_CHANNEL = 5;
|
|
24
|
+
exports.ACKNOWLEDGED_DATA = 0x4F;
|
|
25
|
+
exports.TACX_FE_C_BLE = '6E40FEC1-B5A3-F393-E0A9-E50E24DCCA9E';
|
|
26
|
+
exports.TACX_FE_C_RX = '6E40FEC2-B5A3-F393-E0A9-E50E24DCCA9E';
|
|
27
|
+
exports.TACX_FE_C_TX = '6E40FEC3-B5A3-F393-E0A9-E50E24DCCA9E';
|
package/lib/ble/tacx/index.d.ts
CHANGED
package/lib/ble/tacx/index.js
CHANGED
|
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.BleTacxComms = exports.BleTacxAdapter = void 0;
|
|
7
|
-
const
|
|
8
|
-
exports.BleTacxComms =
|
|
7
|
+
const sensor_1 = __importDefault(require("./sensor"));
|
|
8
|
+
exports.BleTacxComms = sensor_1.default;
|
|
9
9
|
const adapter_1 = __importDefault(require("./adapter"));
|
|
10
10
|
exports.BleTacxAdapter = adapter_1.default;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { LegacyProfile } from "../../antv2/types";
|
|
2
|
+
import { CrankData } from "../cp";
|
|
3
|
+
import { IndoorBikeData } from "../fm";
|
|
4
|
+
import BleFitnessMachineDevice from "../fm/sensor";
|
|
5
|
+
import { BleProtocol } from "../types";
|
|
6
|
+
import { BleFeBikeData } from "./types";
|
|
7
|
+
export default class TacxAdvancedFitnessMachineDevice extends BleFitnessMachineDevice {
|
|
8
|
+
static readonly profile: LegacyProfile;
|
|
9
|
+
static readonly protocol: BleProtocol;
|
|
10
|
+
static readonly services: string[];
|
|
11
|
+
static readonly characteristics: string[];
|
|
12
|
+
static readonly detectionPriority = 10;
|
|
13
|
+
protected prevCrankData: CrankData;
|
|
14
|
+
protected currentCrankData: CrankData;
|
|
15
|
+
protected timeOffset: number;
|
|
16
|
+
protected tsPrevWrite: any;
|
|
17
|
+
protected data: BleFeBikeData;
|
|
18
|
+
protected hasFECData: boolean;
|
|
19
|
+
protected messageCnt: number;
|
|
20
|
+
protected tacxRx: string;
|
|
21
|
+
protected tacxTx: string;
|
|
22
|
+
protected prevMessages: Record<string, {
|
|
23
|
+
ts: number;
|
|
24
|
+
message: string;
|
|
25
|
+
}>;
|
|
26
|
+
constructor(peripheral: any, props?: any);
|
|
27
|
+
reset(): void;
|
|
28
|
+
protected getRequiredCharacteristics(): Array<string>;
|
|
29
|
+
onData(characteristic: string, data: Buffer): boolean;
|
|
30
|
+
protected isDuplicate(characteristic: string, data: Buffer): boolean;
|
|
31
|
+
setTargetPower(power: number): Promise<boolean>;
|
|
32
|
+
setSlope(slope: any): Promise<boolean>;
|
|
33
|
+
requestControl(): Promise<boolean>;
|
|
34
|
+
protected parseCrankData(crankData: any): {
|
|
35
|
+
rpm?: undefined;
|
|
36
|
+
time?: undefined;
|
|
37
|
+
} | {
|
|
38
|
+
rpm: number;
|
|
39
|
+
time: any;
|
|
40
|
+
};
|
|
41
|
+
protected parseCSC(_data: Buffer, logOnly?: boolean): IndoorBikeData;
|
|
42
|
+
protected parsePower(_data: Buffer, logOnly?: boolean): IndoorBikeData;
|
|
43
|
+
protected parseIndoorBikeData(_data: Buffer, logOnly?: boolean): IndoorBikeData;
|
|
44
|
+
protected resetState(): void;
|
|
45
|
+
protected parseFEState(capStateBF: number): void;
|
|
46
|
+
protected parseGeneralFE(data: Buffer): BleFeBikeData;
|
|
47
|
+
private parseFEEquipmentType;
|
|
48
|
+
private parseFEHeartrate;
|
|
49
|
+
private parseFETime;
|
|
50
|
+
private parseFEDistance;
|
|
51
|
+
private parseFERealSpeed;
|
|
52
|
+
protected parseTrainerData(data: Buffer): BleFeBikeData;
|
|
53
|
+
protected parseProductInformation(data: Buffer): BleFeBikeData;
|
|
54
|
+
protected parseFECMessage(_data: Buffer): BleFeBikeData;
|
|
55
|
+
protected getChecksum(message: any[]): number;
|
|
56
|
+
protected buildMessage(payload?: number[], msgID?: number): Buffer;
|
|
57
|
+
protected sendMessage(message: Buffer): Promise<boolean>;
|
|
58
|
+
sendUserConfiguration(userWeight: any, bikeWeight: any, wheelDiameter: any, gearRatio: any): Promise<boolean>;
|
|
59
|
+
sendBasicResistance(resistance: any): Promise<boolean>;
|
|
60
|
+
sendTargetPower(power: any): Promise<boolean>;
|
|
61
|
+
sendWindResistance(windCoeff: any, windSpeed: any, draftFactor: any): Promise<boolean>;
|
|
62
|
+
sendTrackResistance(slope: any, rrCoeff?: any): Promise<boolean>;
|
|
63
|
+
}
|