incyclist-devices 1.4.12 → 1.4.13
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/kettler/comms.js +8 -7
- package/lib/kettler/ergo-racer/adapter.js +118 -76
- package/package.json +1 -1
package/lib/kettler/comms.js
CHANGED
|
@@ -136,16 +136,16 @@ class KettlerSerialComms extends events_1.default {
|
|
|
136
136
|
}
|
|
137
137
|
onData(data) {
|
|
138
138
|
this.sendState = SendState.Idle;
|
|
139
|
-
this.currentCmd = undefined;
|
|
140
139
|
this.logger.logEvent({ message: "sendCommand:receiving:", data: data });
|
|
141
140
|
if (typeof data === 'string') {
|
|
142
|
-
if (
|
|
143
|
-
|
|
144
|
-
this.currentCmd.onResponse(data);
|
|
141
|
+
if (this.currentCmd.onResponse)
|
|
142
|
+
this.currentCmd.onResponse(data);
|
|
145
143
|
}
|
|
146
144
|
else {
|
|
147
|
-
this.currentCmd.onResponse
|
|
145
|
+
if (this.currentCmd.onResponse)
|
|
146
|
+
this.currentCmd.onResponse(data);
|
|
148
147
|
}
|
|
148
|
+
this.currentCmd = undefined;
|
|
149
149
|
}
|
|
150
150
|
write(cmd) {
|
|
151
151
|
this.sendState = SendState.Sending;
|
|
@@ -153,7 +153,8 @@ class KettlerSerialComms extends events_1.default {
|
|
|
153
153
|
const msg = typeof message === 'string' ? message : utils_1.hexstr(message);
|
|
154
154
|
const onError = (err) => {
|
|
155
155
|
this.logger.logEvent({ message: "sendCommand:error:", cmd: logStr, error: err.message, port: this.getPort() });
|
|
156
|
-
cmd.onError
|
|
156
|
+
if (cmd.onError)
|
|
157
|
+
cmd.onError(err);
|
|
157
158
|
this.sendState = SendState.Idle;
|
|
158
159
|
this.currentCmd = undefined;
|
|
159
160
|
};
|
|
@@ -167,7 +168,7 @@ class KettlerSerialComms extends events_1.default {
|
|
|
167
168
|
if (timeout) {
|
|
168
169
|
setTimeout(() => {
|
|
169
170
|
if (this.sendState === SendState.Receiving) {
|
|
170
|
-
onError(new Error("timeout"));
|
|
171
|
+
onError(new Error("response timeout"));
|
|
171
172
|
}
|
|
172
173
|
}, timeout);
|
|
173
174
|
}
|
|
@@ -79,113 +79,115 @@ class KettlerRacerAdapter extends Device_1.default {
|
|
|
79
79
|
return bikeWeight + userWeight;
|
|
80
80
|
}
|
|
81
81
|
setComputerMode() {
|
|
82
|
-
return
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
});
|
|
82
|
+
return this.send('setComputerMode', 'CP').then(response => {
|
|
83
|
+
this.logger.logEvent({ response });
|
|
84
|
+
if (response === 'ACK' || response === 'RUN') {
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
91
90
|
});
|
|
92
91
|
}
|
|
93
92
|
setClientMode() {
|
|
94
|
-
return
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
}
|
|
93
|
+
return this.send('setClientMode', 'CM').then(response => {
|
|
94
|
+
this.logger.logEvent({ response });
|
|
95
|
+
if (response === 'ACK' || response === 'RUN') {
|
|
96
|
+
this.logger.logEvent({ response });
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
103
102
|
});
|
|
104
103
|
}
|
|
105
104
|
reset() {
|
|
106
|
-
return
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
});
|
|
105
|
+
return this.send('reset', 'RS').then(response => {
|
|
106
|
+
this.logger.logEvent({ response });
|
|
107
|
+
if (response === 'ACK' || response === 'RUN') {
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
115
113
|
});
|
|
116
114
|
}
|
|
117
115
|
getIdentifier() {
|
|
118
|
-
return
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
});
|
|
116
|
+
return this.send('getIdentifier', 'ID').then(response => {
|
|
117
|
+
this.logger.logEvent({ response });
|
|
118
|
+
return response.substring(0, 3);
|
|
122
119
|
});
|
|
123
120
|
}
|
|
124
121
|
getInterface() {
|
|
125
122
|
return __awaiter(this, void 0, void 0, function* () {
|
|
126
|
-
|
|
123
|
+
const res = yield this.send('getInterface', 'KI');
|
|
124
|
+
this.logger.logEvent({ interface: res });
|
|
125
|
+
return res;
|
|
127
126
|
});
|
|
128
127
|
}
|
|
129
128
|
getVersion() {
|
|
130
129
|
return __awaiter(this, void 0, void 0, function* () {
|
|
131
|
-
|
|
130
|
+
const res = yield this.send('getVersion', 'VE');
|
|
131
|
+
this.logger.logEvent({ version: res });
|
|
132
|
+
return res;
|
|
132
133
|
});
|
|
133
134
|
}
|
|
134
135
|
getCalibration() {
|
|
135
136
|
return __awaiter(this, void 0, void 0, function* () {
|
|
136
|
-
return this.send('getCalibration', 'CA');
|
|
137
|
+
return yield this.send('getCalibration', 'CA');
|
|
137
138
|
});
|
|
138
139
|
}
|
|
139
140
|
startTraining() {
|
|
140
141
|
return __awaiter(this, void 0, void 0, function* () {
|
|
141
|
-
return this.send('startTraining', 'LB');
|
|
142
|
+
return yield this.send('startTraining', 'LB');
|
|
142
143
|
});
|
|
143
144
|
}
|
|
144
145
|
unknownSN() {
|
|
145
146
|
return __awaiter(this, void 0, void 0, function* () {
|
|
146
|
-
return this.send('SN', 'SN');
|
|
147
|
+
return yield this.send('SN', 'SN');
|
|
147
148
|
});
|
|
148
149
|
}
|
|
149
150
|
setBaudrate(baudrate) {
|
|
150
151
|
return __awaiter(this, void 0, void 0, function* () {
|
|
151
|
-
return this.send(`setBaudrate(${baudrate})`, `BR${baudrate}`);
|
|
152
|
+
return yield this.send(`setBaudrate(${baudrate})`, `BR${baudrate}`);
|
|
152
153
|
});
|
|
153
154
|
}
|
|
154
155
|
setPower(power) {
|
|
155
156
|
return __awaiter(this, void 0, void 0, function* () {
|
|
156
|
-
return this.send(`setPower(${power})`, `PW${power}`);
|
|
157
|
+
return yield this.send(`setPower(${power})`, `PW${power}`);
|
|
157
158
|
});
|
|
158
159
|
}
|
|
159
160
|
getExtendedStatus() {
|
|
160
|
-
return
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
return data;
|
|
164
|
-
});
|
|
161
|
+
return this.send('getExtendedStatus', 'ES1').then(response => {
|
|
162
|
+
const data = this.parseExtendedStatus(response);
|
|
163
|
+
return data;
|
|
165
164
|
});
|
|
166
165
|
}
|
|
167
166
|
getStatus() {
|
|
168
|
-
return
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
return data;
|
|
172
|
-
});
|
|
167
|
+
return this.send('getStatus', 'ST').then(response => {
|
|
168
|
+
const data = this.parseStatus(response);
|
|
169
|
+
return data;
|
|
173
170
|
});
|
|
174
171
|
}
|
|
175
172
|
getDB() {
|
|
176
173
|
return __awaiter(this, void 0, void 0, function* () {
|
|
177
|
-
return this.send('getDB', 'DB');
|
|
174
|
+
return yield this.send('getDB', 'DB');
|
|
178
175
|
});
|
|
179
176
|
}
|
|
180
177
|
send(logStr, message, timeout) {
|
|
181
178
|
return __awaiter(this, void 0, void 0, function* () {
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
179
|
+
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
180
|
+
try {
|
|
181
|
+
const opened = yield this.waitForOpened();
|
|
182
|
+
if (!opened) {
|
|
183
|
+
reject(new Error('connection error'));
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
catch (err) {
|
|
187
|
+
reject(err);
|
|
188
|
+
}
|
|
189
|
+
this.comms.send({ logStr, message, onResponse: resolve, onError: reject, timeout });
|
|
190
|
+
}));
|
|
189
191
|
});
|
|
190
192
|
}
|
|
191
193
|
parseExtendedStatus(data) {
|
|
@@ -250,83 +252,123 @@ class KettlerRacerAdapter extends Device_1.default {
|
|
|
250
252
|
try {
|
|
251
253
|
yield this.getVersion();
|
|
252
254
|
}
|
|
253
|
-
catch (e) {
|
|
255
|
+
catch (e) {
|
|
256
|
+
this.logger.logEvent({ message: 'Error', error: e.message });
|
|
257
|
+
}
|
|
254
258
|
try {
|
|
255
259
|
yield this.getInterface();
|
|
256
260
|
}
|
|
257
|
-
catch (e) {
|
|
261
|
+
catch (e) {
|
|
262
|
+
this.logger.logEvent({ message: 'Error', error: e.message });
|
|
263
|
+
}
|
|
258
264
|
try {
|
|
259
265
|
yield this.getIdentifier();
|
|
260
266
|
}
|
|
261
|
-
catch (e) {
|
|
267
|
+
catch (e) {
|
|
268
|
+
this.logger.logEvent({ message: 'Error', error: e.message });
|
|
269
|
+
}
|
|
262
270
|
try {
|
|
263
271
|
yield this.getExtendedStatus();
|
|
264
272
|
}
|
|
265
|
-
catch (e) {
|
|
273
|
+
catch (e) {
|
|
274
|
+
this.logger.logEvent({ message: 'Error', error: e.message });
|
|
275
|
+
}
|
|
266
276
|
try {
|
|
267
277
|
yield this.getStatus();
|
|
268
278
|
}
|
|
269
|
-
catch (e) {
|
|
279
|
+
catch (e) {
|
|
280
|
+
this.logger.logEvent({ message: 'Error', error: e.message });
|
|
281
|
+
}
|
|
270
282
|
try {
|
|
271
283
|
yield this.setClientMode();
|
|
272
284
|
}
|
|
273
|
-
catch (e) {
|
|
285
|
+
catch (e) {
|
|
286
|
+
this.logger.logEvent({ message: 'Error', error: e.message });
|
|
287
|
+
}
|
|
274
288
|
try {
|
|
275
289
|
yield this.getVersion();
|
|
276
290
|
}
|
|
277
|
-
catch (e) {
|
|
291
|
+
catch (e) {
|
|
292
|
+
this.logger.logEvent({ message: 'Error', error: e.message });
|
|
293
|
+
}
|
|
278
294
|
try {
|
|
279
295
|
yield this.getInterface();
|
|
280
296
|
}
|
|
281
|
-
catch (e) {
|
|
297
|
+
catch (e) {
|
|
298
|
+
this.logger.logEvent({ message: 'Error', error: e.message });
|
|
299
|
+
}
|
|
282
300
|
try {
|
|
283
301
|
yield this.getIdentifier();
|
|
284
302
|
}
|
|
285
|
-
catch (e) {
|
|
303
|
+
catch (e) {
|
|
304
|
+
this.logger.logEvent({ message: 'Error', error: e.message });
|
|
305
|
+
}
|
|
286
306
|
try {
|
|
287
307
|
yield this.getExtendedStatus();
|
|
288
308
|
}
|
|
289
|
-
catch (e) {
|
|
309
|
+
catch (e) {
|
|
310
|
+
this.logger.logEvent({ message: 'Error', error: e.message });
|
|
311
|
+
}
|
|
290
312
|
try {
|
|
291
313
|
yield this.getStatus();
|
|
292
314
|
}
|
|
293
|
-
catch (e) {
|
|
315
|
+
catch (e) {
|
|
316
|
+
this.logger.logEvent({ message: 'Error', error: e.message });
|
|
317
|
+
}
|
|
294
318
|
try {
|
|
295
319
|
yield this.setPower(100);
|
|
296
320
|
}
|
|
297
|
-
catch (e) {
|
|
321
|
+
catch (e) {
|
|
322
|
+
this.logger.logEvent({ message: 'Error', error: e.message });
|
|
323
|
+
}
|
|
298
324
|
try {
|
|
299
325
|
yield this.reset();
|
|
300
326
|
}
|
|
301
|
-
catch (e) {
|
|
327
|
+
catch (e) {
|
|
328
|
+
this.logger.logEvent({ message: 'Error', error: e.message });
|
|
329
|
+
}
|
|
302
330
|
try {
|
|
303
331
|
yield this.setComputerMode();
|
|
304
332
|
}
|
|
305
|
-
catch (e) {
|
|
333
|
+
catch (e) {
|
|
334
|
+
this.logger.logEvent({ message: 'Error', error: e.message });
|
|
335
|
+
}
|
|
306
336
|
try {
|
|
307
337
|
yield this.getVersion();
|
|
308
338
|
}
|
|
309
|
-
catch (e) {
|
|
339
|
+
catch (e) {
|
|
340
|
+
this.logger.logEvent({ message: 'Error', error: e.message });
|
|
341
|
+
}
|
|
310
342
|
try {
|
|
311
343
|
yield this.getInterface();
|
|
312
344
|
}
|
|
313
|
-
catch (e) {
|
|
345
|
+
catch (e) {
|
|
346
|
+
this.logger.logEvent({ message: 'Error', error: e.message });
|
|
347
|
+
}
|
|
314
348
|
try {
|
|
315
349
|
yield this.getIdentifier();
|
|
316
350
|
}
|
|
317
|
-
catch (e) {
|
|
351
|
+
catch (e) {
|
|
352
|
+
this.logger.logEvent({ message: 'Error', error: e.message });
|
|
353
|
+
}
|
|
318
354
|
try {
|
|
319
355
|
yield this.getExtendedStatus();
|
|
320
356
|
}
|
|
321
|
-
catch (e) {
|
|
357
|
+
catch (e) {
|
|
358
|
+
this.logger.logEvent({ message: 'Error', error: e.message });
|
|
359
|
+
}
|
|
322
360
|
try {
|
|
323
361
|
yield this.getStatus();
|
|
324
362
|
}
|
|
325
|
-
catch (e) {
|
|
363
|
+
catch (e) {
|
|
364
|
+
this.logger.logEvent({ message: 'Error', error: e.message });
|
|
365
|
+
}
|
|
326
366
|
try {
|
|
327
367
|
yield this.setPower(100);
|
|
328
368
|
}
|
|
329
|
-
catch (e) {
|
|
369
|
+
catch (e) {
|
|
370
|
+
this.logger.logEvent({ message: 'Error', error: e.message });
|
|
371
|
+
}
|
|
330
372
|
clearTimeout(iv);
|
|
331
373
|
resolve(info);
|
|
332
374
|
}
|