incyclist-devices 1.3.0 → 1.4.1

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.
Files changed (71) hide show
  1. package/lib/CyclingMode.d.ts +72 -0
  2. package/lib/CyclingMode.js +66 -0
  3. package/lib/Device.d.ts +48 -10
  4. package/lib/Device.js +9 -8
  5. package/lib/DeviceProtocol.d.ts +40 -12
  6. package/lib/DeviceProtocol.js +16 -16
  7. package/lib/DeviceRegistry.d.ts +4 -4
  8. package/lib/DeviceRegistry.js +10 -10
  9. package/lib/DeviceSupport.d.ts +4 -3
  10. package/lib/DeviceSupport.js +32 -8
  11. package/lib/ant/AntAdapter.d.ts +7 -3
  12. package/lib/ant/AntAdapter.js +23 -3
  13. package/lib/ant/AntScanner.d.ts +15 -6
  14. package/lib/ant/AntScanner.js +372 -128
  15. package/lib/ant/antfe/AntFEAdapter.d.ts +1 -1
  16. package/lib/ant/antfe/AntFEAdapter.js +191 -92
  17. package/lib/ant/anthrm/AntHrmAdapter.d.ts +3 -1
  18. package/lib/ant/anthrm/AntHrmAdapter.js +70 -19
  19. package/lib/ant/utils.js +2 -1
  20. package/lib/calculations.d.ts +12 -13
  21. package/lib/calculations.js +88 -125
  22. package/lib/daum/DaumAdapter.d.ts +29 -6
  23. package/lib/daum/DaumAdapter.js +219 -96
  24. package/lib/daum/ERGCyclingMode.d.ts +28 -0
  25. package/lib/daum/ERGCyclingMode.js +207 -0
  26. package/lib/daum/PowerMeterCyclingMode.d.ts +18 -0
  27. package/lib/daum/PowerMeterCyclingMode.js +79 -0
  28. package/lib/daum/SmartTrainerCyclingMode.d.ts +41 -0
  29. package/lib/daum/SmartTrainerCyclingMode.js +344 -0
  30. package/lib/daum/classic/DaumClassicAdapter.d.ts +3 -1
  31. package/lib/daum/classic/DaumClassicAdapter.js +46 -32
  32. package/lib/daum/classic/DaumClassicCyclingMode.d.ts +13 -0
  33. package/lib/daum/classic/DaumClassicCyclingMode.js +98 -0
  34. package/lib/daum/classic/DaumClassicProtocol.d.ts +5 -3
  35. package/lib/daum/classic/DaumClassicProtocol.js +47 -8
  36. package/lib/daum/classic/ERGCyclingMode.d.ts +23 -0
  37. package/lib/daum/classic/ERGCyclingMode.js +171 -0
  38. package/lib/daum/classic/bike.d.ts +41 -37
  39. package/lib/daum/classic/bike.js +86 -53
  40. package/lib/daum/classic/utils.d.ts +3 -3
  41. package/lib/daum/classic/utils.js +18 -10
  42. package/lib/daum/indoorbike.d.ts +2 -1
  43. package/lib/daum/indoorbike.js +23 -21
  44. package/lib/daum/premium/DaumPremiumAdapter.d.ts +2 -2
  45. package/lib/daum/premium/DaumPremiumAdapter.js +30 -20
  46. package/lib/daum/premium/DaumPremiumProtocol.d.ts +11 -2
  47. package/lib/daum/premium/DaumPremiumProtocol.js +57 -10
  48. package/lib/daum/premium/bike.d.ts +63 -52
  49. package/lib/daum/premium/bike.js +254 -207
  50. package/lib/daum/premium/tcpserial.d.ts +18 -14
  51. package/lib/daum/premium/tcpserial.js +44 -20
  52. package/lib/daum/premium/utils.d.ts +2 -2
  53. package/lib/simulator/Simulator.d.ts +13 -7
  54. package/lib/simulator/Simulator.js +62 -21
  55. package/lib/utils.d.ts +3 -1
  56. package/lib/utils.js +39 -18
  57. package/package.json +12 -11
  58. package/lib/ant/AntScanner.unit.tests.d.ts +0 -1
  59. package/lib/ant/AntScanner.unit.tests.js +0 -25
  60. package/lib/ant/antfe/AntFEProcessor.d.ts +0 -40
  61. package/lib/ant/antfe/AntFEProcessor.js +0 -238
  62. package/lib/ant/antfe/AntHrmProtocol.d.ts +0 -9
  63. package/lib/ant/antfe/AntHrmProtocol.js +0 -30
  64. package/lib/ant/antfe/FEDevice.d.ts +0 -1
  65. package/lib/ant/antfe/FEDevice.js +0 -7
  66. package/lib/ant/antfe/bike.d.ts +0 -47
  67. package/lib/ant/antfe/bike.js +0 -602
  68. package/lib/ant/anthrm/anthrm.d.ts +0 -33
  69. package/lib/ant/anthrm/anthrm.js +0 -523
  70. package/lib/simulator/Simulator.unit.tests.d.ts +0 -1
  71. package/lib/simulator/Simulator.unit.tests.js +0 -79
@@ -1,238 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const processor_1 = require("../../processor");
13
- function floatVal(d) {
14
- if (d === undefined)
15
- return d;
16
- return parseFloat(d);
17
- }
18
- function intVal(d) {
19
- if (d === undefined)
20
- return d;
21
- return parseInt(d);
22
- }
23
- class AntFEProcessor extends processor_1.default {
24
- constructor(controller, bikeInfo) {
25
- super(controller, AntFEProcessor.NAME);
26
- this.bikeInfo = bikeInfo;
27
- this.ignoreHrm = false;
28
- this.instance = undefined;
29
- this.paused = undefined;
30
- this.started = undefined;
31
- this.time = undefined;
32
- this.iv = undefined;
33
- this.state = AntFEProcessor.STATE.INITIALIZED;
34
- this.logger.set({ processor: AntFEProcessor.NAME, state: this.state });
35
- this.data = {};
36
- this.request = undefined;
37
- }
38
- setState(newState) {
39
- this.state = newState;
40
- this.logger.set({ bikeState: this.state });
41
- }
42
- static isBike() {
43
- return true;
44
- }
45
- static isHrm() {
46
- return true;
47
- }
48
- toggle() {
49
- }
50
- pause() {
51
- this.paused = true;
52
- }
53
- setIgnoreHrm(ignore) {
54
- this.ignoreHrm = ignore;
55
- }
56
- checkBikeStatus() {
57
- this.logger.log('checkBikeStatus request');
58
- return new Promise((resolve, reject) => {
59
- try {
60
- this.instance.checkBikeStatus((status, data) => {
61
- if (status !== 200)
62
- return reject(status);
63
- this.logger.logEvent({ message: 'checkBikeStatus request', status: 'OK' });
64
- resolve(data);
65
- });
66
- }
67
- catch (error) {
68
- this.logger.logEvent({ message: 'checkBikeStatus request', status: 'Error', error });
69
- reject(error);
70
- }
71
- });
72
- }
73
- startTraining() {
74
- this.logger.logEvent({ message: 'startTraining request' });
75
- return new Promise((resolve, reject) => {
76
- try {
77
- this.instance.startTraining((status, data) => {
78
- if (status !== 200)
79
- return reject(status);
80
- this.logger.logEvent({ message: 'startTraining request', status: 'started' });
81
- resolve(data);
82
- });
83
- }
84
- catch (error) {
85
- this.logger.logEvent({ message: 'startTraining request', status: 'Error', error });
86
- reject(error);
87
- }
88
- });
89
- }
90
- getBikeData() {
91
- this.logger.logEvent({ message: 'bike data request' });
92
- return new Promise((resolve, reject) => {
93
- try {
94
- this.instance.getBikeData((status, data) => {
95
- if (status !== 200)
96
- return reject(status);
97
- this.logger.logEvent({ message: 'bike data response', data });
98
- resolve(data);
99
- });
100
- }
101
- catch (error) {
102
- this.logger.logEvent({ message: 'bike data error', error });
103
- reject(error);
104
- }
105
- });
106
- }
107
- sendBikeUpdate(request) {
108
- this.logger.logEvent({ message: 'bike update request', request });
109
- return new Promise((resolve, reject) => {
110
- try {
111
- this.instance.sendBikeUpdate(request, (status, data) => {
112
- if (status !== 200)
113
- return reject(status);
114
- this.logger.logEvent({ message: 'bike update success', data });
115
- resolve(data);
116
- });
117
- }
118
- catch (error) {
119
- this.logger.logEvent({ message: 'bike update error', error });
120
- reject(error);
121
- }
122
- });
123
- }
124
- onStarted() {
125
- this.controller.start();
126
- this.time = Date.now();
127
- if (this.iv !== undefined) {
128
- clearInterval(this.iv);
129
- this.iv = undefined;
130
- }
131
- this.data = {};
132
- this.data.distanceInternal = undefined;
133
- this.iv = setInterval(this.update.bind(this), 1000);
134
- this.setState(AntFEProcessor.STATE.START_OK);
135
- this.logger.logEvent({ message: 'start request completed' });
136
- this.controller.emit({ component: 'BikeProcessor', event: { started: { success: true } } });
137
- }
138
- start(user) {
139
- return __awaiter(this, void 0, void 0, function* () {
140
- this.logger.logEvent({ message: 'start request' });
141
- if (this.state !== AntFEProcessor.STATE.INITIALIZED && this.state !== AntFEProcessor.STATE.FINISH_OK)
142
- return;
143
- this.setState(AntFEProcessor.STATE.STARTING);
144
- if (this.bikeInfo.instantiate !== undefined) {
145
- let options = {
146
- settings: {
147
- simulate: false,
148
- ignoreHrm: this.ignoreHrm,
149
- user
150
- }
151
- };
152
- this.instance = this.bikeInfo.instantiate(this.bikeInfo, { options });
153
- try {
154
- yield this.checkBikeStatus();
155
- yield this.startTraining();
156
- this.onStarted();
157
- }
158
- catch (error) {
159
- this.setState(AntFEProcessor.STATE.START_FAILED);
160
- this.logger.logEvent({ message: 'start request failed', error });
161
- this.controller.emit({ component: 'BikeProcessor', event: { started: { success: false } } });
162
- }
163
- }
164
- });
165
- }
166
- stop() {
167
- this.logger.logEvent({ message: 'stop request' });
168
- this.setState(AntFEProcessor.STATE.FINISHING);
169
- try {
170
- if (this.instance !== undefined)
171
- this.instance.disconnect();
172
- clearInterval(this.iv);
173
- this.iv = undefined;
174
- this.setState(AntFEProcessor.STATE.FINISH_OK);
175
- this.logger.logEvent({ message: 'stop request completed' });
176
- }
177
- catch (error) {
178
- this.setState(AntFEProcessor.STATE.FINISH_FAILED);
179
- this.logger.logEvent({ message: 'stop error', error });
180
- }
181
- this.paused = undefined;
182
- this.started = false;
183
- }
184
- update() {
185
- return __awaiter(this, void 0, void 0, function* () {
186
- if (this.request !== undefined) {
187
- yield this.sendBikeUpdate(this.request);
188
- this.request = undefined;
189
- }
190
- let bikeData = yield this.getBikeData();
191
- let distance = bikeData.distanceInternal;
192
- if (this.data.distanceInternal !== undefined && this.data.distanceInternal > 0) {
193
- distance = bikeData.distanceInternal - this.data.distanceInternal;
194
- }
195
- this.data.distanceInternal = bikeData.distanceInternal;
196
- let data = {
197
- speed: floatVal(bikeData.speed),
198
- slope: floatVal(bikeData.slope),
199
- power: intVal(bikeData.power),
200
- cadence: intVal(bikeData.pedalRpm),
201
- heartrate: intVal(bikeData.heartrate),
202
- distance,
203
- timestamp: Date.now()
204
- };
205
- if (this.ignoreHrm)
206
- delete data.heartrate;
207
- this.controller.update(data);
208
- });
209
- }
210
- sendUpdate(data) {
211
- return __awaiter(this, void 0, void 0, function* () {
212
- this.logger.logEvent({ message: 'update request', data });
213
- this.request = data;
214
- });
215
- }
216
- onEvent(event) {
217
- if (event === 'start')
218
- return this.start();
219
- if (event === 'stop')
220
- return this.stop();
221
- if (event === 'pause')
222
- return this.pause();
223
- if (event === 'toggle')
224
- return this.toggle();
225
- }
226
- }
227
- exports.default = AntFEProcessor;
228
- AntFEProcessor.NAME = 'Ant+FE';
229
- AntFEProcessor.STATE = {
230
- INITIALIZED: 'initialized',
231
- STARTING: 'starting',
232
- START_OK: 'start:ok',
233
- START_FAILED: 'start:failed',
234
- ERROR: 'error',
235
- FINISHING: 'finishing',
236
- FINISH_OK: 'finish:ok',
237
- FINISH_FAILED: 'finish:failed',
238
- };
@@ -1,9 +0,0 @@
1
- export default class AntFEProtocol {
2
- logger: EventLogger;
3
- getLogger(): EventLogger;
4
- getName(): string;
5
- isBike(): boolean;
6
- isHrm(): boolean;
7
- isPower(): boolean;
8
- }
9
- import { EventLogger } from "gd-eventlog";
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const AntProtocol_1 = require("../AntProtocol");
4
- const DeviceRegistry_1 = require("../../DeviceRegistry");
5
- const gd_eventlog_1 = require("gd-eventlog");
6
- const PROTOCOL_NAME = "Smart Trainer";
7
- const LOGGER_NAME = "Ant+FE";
8
- class AntFEProtocol extends AntProtocol_1.default {
9
- constructor() {
10
- super();
11
- this.logger = new gd_eventlog_1.EventLogger(LOGGER_NAME);
12
- }
13
- getLogger() {
14
- return this.logger;
15
- }
16
- getName() {
17
- return PROTOCOL_NAME;
18
- }
19
- isBike() {
20
- return true;
21
- }
22
- isHrm() {
23
- return true;
24
- }
25
- isPower() {
26
- return true;
27
- }
28
- }
29
- exports.default = AntFEProtocol;
30
- DeviceRegistry_1.default.register(new AntFEProtocol());
@@ -1 +0,0 @@
1
- declare function initDevice(Ant: any): void;
@@ -1,7 +0,0 @@
1
- function initDevice(Ant) {
2
- class FEDevice extends Ant.FitnessEquipmentSensor {
3
- constructor() {
4
- super();
5
- }
6
- }
7
- }
@@ -1,47 +0,0 @@
1
- export function sendBasicResistance(stick: any, resistance: any): void;
2
- export function sendWindResistance(stick: any, windCoeff: any, windSpeed: any, draftFactor: any): void;
3
- export default class AntFEBike {
4
- static setAnt(antClass: any): void;
5
- static getClassName(): string;
6
- static log(str: any, ...args: any[]): void;
7
- static logEvent(event: any): void;
8
- static stopScanning(callback: any): void;
9
- static getStick(): any;
10
- constructor(opts: any);
11
- logger: import("gd-eventlog").EventLogger;
12
- stick: any;
13
- connection: any;
14
- scanner: any;
15
- sensor: any;
16
- connected: boolean;
17
- started: boolean;
18
- channel: number;
19
- pairedDeviceId: any;
20
- initDone: boolean;
21
- scanMode: boolean;
22
- deviceID: any;
23
- isScanning: boolean;
24
- isAttached: boolean;
25
- scanners: any[];
26
- sensors: any[];
27
- getType(): string;
28
- addScanner(scanner: any): void;
29
- addSensor(sensor: any): void;
30
- setUser(user: any, callback: any): void;
31
- checkBikeStatus(callback: any): void;
32
- recheckStatus(tsStart: any, timeout: any, bike: any, cb: any): any;
33
- getBikeData(callback: any): void;
34
- sendBikeUpdate(data: any, callback: any): void;
35
- setSlope(slope: any): void;
36
- setPower(power: any): void;
37
- initSensor(): boolean;
38
- attachScanners(): void;
39
- attachSensors(): void;
40
- startTraining(callback: any, timeout: any): void;
41
- stopTraining(callback: any, timeout: any): void;
42
- resync(callback: any): void;
43
- parseEvent(data: any): void;
44
- parseData(data: any): void;
45
- antData: any;
46
- data: any;
47
- }