incyclist-devices 2.1.8 → 2.1.9
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/LICENSE +0 -0
- package/README.MD +238 -238
- package/lib/adapters.d.ts +7 -0
- package/lib/adapters.js +49 -0
- package/lib/antv2/adapter-factory.d.ts +14 -0
- package/lib/antv2/adapter-factory.js +65 -0
- package/lib/antv2/adapter.d.ts +54 -0
- package/lib/antv2/adapter.js +291 -0
- package/lib/antv2/ant-interface.d.ts +35 -0
- package/lib/antv2/ant-interface.js +285 -0
- package/lib/antv2/base/adapter.d.ts +0 -0
- package/lib/antv2/base/adapter.js +0 -0
- package/lib/antv2/base/ant-interface.d.ts +35 -0
- package/lib/antv2/base/ant-interface.js +285 -0
- package/lib/antv2/base/binding.d.ts +0 -0
- package/lib/antv2/base/binding.js +0 -0
- package/lib/antv2/base/interface.d.ts +0 -0
- package/lib/antv2/base/interface.js +0 -0
- package/lib/antv2/binding.d.ts +13 -0
- package/lib/antv2/binding.js +27 -0
- package/lib/antv2/cad/adapter.d.ts +0 -0
- package/lib/antv2/cad/adapter.js +0 -0
- package/lib/antv2/cad/index.d.ts +0 -0
- package/lib/antv2/cad/index.js +0 -0
- package/lib/antv2/consts.d.ts +0 -0
- package/lib/antv2/consts.js +0 -0
- package/lib/antv2/factories/adapter-factory.d.ts +0 -0
- package/lib/antv2/factories/adapter-factory.js +0 -0
- package/lib/antv2/factories/sensor-factory.d.ts +0 -0
- package/lib/antv2/factories/sensor-factory.js +0 -0
- package/lib/antv2/fe/adapter.d.ts +0 -0
- package/lib/antv2/fe/adapter.js +0 -0
- package/lib/antv2/fe/index.d.ts +0 -0
- package/lib/antv2/fe/index.js +0 -0
- package/lib/antv2/hr/adapter.d.ts +0 -0
- package/lib/antv2/hr/adapter.js +0 -0
- package/lib/antv2/hr/index.d.ts +0 -0
- package/lib/antv2/hr/index.js +0 -0
- package/lib/antv2/hr copy/adapter.d.ts +11 -0
- package/lib/antv2/hr copy/adapter.js +30 -0
- package/lib/antv2/hr copy/index.d.ts +2 -0
- package/lib/antv2/hr copy/index.js +7 -0
- package/lib/antv2/index.d.ts +0 -0
- package/lib/antv2/index.js +0 -0
- package/lib/antv2/pwr/adapter.d.ts +0 -0
- package/lib/antv2/pwr/adapter.js +0 -0
- package/lib/antv2/pwr/index.d.ts +0 -0
- package/lib/antv2/pwr/index.js +0 -0
- package/lib/antv2/sensor-factory.d.ts +5 -0
- package/lib/antv2/sensor-factory.js +20 -0
- package/lib/antv2/types.d.ts +0 -0
- package/lib/antv2/types.js +0 -0
- package/lib/antv2/utils.d.ts +0 -0
- package/lib/antv2/utils.js +0 -0
- package/lib/base/adpater.d.ts +0 -0
- package/lib/base/adpater.js +2 -1
- package/lib/base/consts.d.ts +0 -0
- package/lib/base/consts.js +0 -0
- package/lib/ble/adapter-factory.d.ts +0 -0
- package/lib/ble/adapter-factory.js +0 -0
- package/lib/ble/base/adapter.d.ts +0 -0
- package/lib/ble/base/adapter.js +0 -0
- package/lib/ble/base/comms-utils.d.ts +0 -0
- package/lib/ble/base/comms-utils.js +0 -0
- package/lib/ble/base/comms.d.ts +0 -0
- package/lib/ble/base/comms.js +0 -0
- package/lib/ble/base/types.d.ts +0 -0
- package/lib/ble/base/types.js +0 -0
- package/lib/ble/bindings/index.d.ts +0 -0
- package/lib/ble/bindings/index.js +0 -0
- package/lib/ble/bindings/linux.d.ts +0 -0
- package/lib/ble/bindings/linux.js +0 -0
- package/lib/ble/bindings/mock.d.ts +0 -0
- package/lib/ble/bindings/mock.js +0 -0
- package/lib/ble/bindings/types.d.ts +0 -0
- package/lib/ble/bindings/types.js +0 -0
- package/lib/ble/ble-interface.d.ts +0 -0
- package/lib/ble/ble-interface.js +0 -0
- package/lib/ble/ble-peripheral.d.ts +0 -0
- package/lib/ble/ble-peripheral.js +0 -0
- package/lib/ble/consts.d.ts +0 -0
- package/lib/ble/consts.js +0 -0
- package/lib/ble/cp/adapter.d.ts +0 -0
- package/lib/ble/cp/adapter.js +0 -0
- package/lib/ble/cp/comm.d.ts +0 -0
- package/lib/ble/cp/comm.js +0 -0
- package/lib/ble/cp/index.d.ts +0 -0
- package/lib/ble/cp/index.js +0 -0
- package/lib/ble/cp/types.d.ts +0 -0
- package/lib/ble/cp/types.js +0 -0
- package/lib/ble/elite/adapter.d.ts +0 -0
- package/lib/ble/elite/adapter.js +0 -0
- package/lib/ble/elite/comms.d.ts +0 -0
- package/lib/ble/elite/comms.js +0 -0
- package/lib/ble/elite/index.d.ts +0 -0
- package/lib/ble/elite/index.js +0 -0
- package/lib/ble/fm/adapter.d.ts +0 -0
- package/lib/ble/fm/adapter.js +0 -0
- package/lib/ble/fm/comms.d.ts +0 -0
- package/lib/ble/fm/comms.js +0 -0
- package/lib/ble/fm/consts.d.ts +0 -0
- package/lib/ble/fm/consts.js +0 -0
- package/lib/ble/fm/index.d.ts +0 -0
- package/lib/ble/fm/index.js +0 -0
- package/lib/ble/fm/types.d.ts +0 -0
- package/lib/ble/fm/types.js +0 -0
- package/lib/ble/hr/adapter.d.ts +0 -0
- package/lib/ble/hr/adapter.js +0 -0
- package/lib/ble/hr/comm.d.ts +0 -0
- package/lib/ble/hr/comm.js +0 -0
- package/lib/ble/hr/index.d.ts +0 -0
- package/lib/ble/hr/index.js +0 -0
- package/lib/ble/hr/mock.d.ts +0 -0
- package/lib/ble/hr/mock.js +0 -0
- package/lib/ble/hr/types.d.ts +0 -0
- package/lib/ble/hr/types.js +0 -0
- package/lib/ble/index.d.ts +0 -0
- package/lib/ble/index.js +0 -0
- package/lib/ble/peripheral-cache.d.ts +0 -0
- package/lib/ble/peripheral-cache.js +0 -0
- package/lib/ble/tacx/adapter.d.ts +0 -0
- package/lib/ble/tacx/adapter.js +0 -0
- package/lib/ble/tacx/comms.d.ts +0 -0
- package/lib/ble/tacx/comms.js +0 -0
- package/lib/ble/tacx/index.d.ts +0 -0
- package/lib/ble/tacx/index.js +0 -0
- package/lib/ble/tacx/types.d.ts +0 -0
- package/lib/ble/tacx/types.js +0 -0
- package/lib/ble/types.d.ts +0 -0
- package/lib/ble/types.js +0 -0
- package/lib/ble/utils.d.ts +0 -0
- package/lib/ble/utils.js +0 -0
- package/lib/ble/wahoo/adapter.d.ts +0 -0
- package/lib/ble/wahoo/adapter.js +0 -0
- package/lib/ble/wahoo/comms.d.ts +0 -0
- package/lib/ble/wahoo/comms.js +0 -0
- package/lib/ble/wahoo/index.d.ts +0 -0
- package/lib/ble/wahoo/index.js +0 -0
- package/lib/ble/wahoo/types.d.ts +0 -0
- package/lib/ble/wahoo/types.js +0 -0
- package/lib/factories/adapters.d.ts +0 -0
- package/lib/factories/adapters.js +0 -0
- package/lib/factories/index.d.ts +0 -0
- package/lib/factories/index.js +0 -0
- package/lib/factories/interfaces.d.ts +0 -0
- package/lib/factories/interfaces.js +0 -0
- package/lib/index.d.ts +0 -0
- package/lib/index.js +0 -0
- package/lib/interfaces.d.ts +7 -0
- package/lib/interfaces.js +27 -0
- package/lib/modes/ant-fe-adv-st-mode.d.ts +0 -0
- package/lib/modes/ant-fe-adv-st-mode.js +0 -0
- package/lib/modes/antble-erg.d.ts +0 -0
- package/lib/modes/antble-erg.js +0 -0
- package/lib/modes/antble-smarttrainer.d.ts +0 -0
- package/lib/modes/antble-smarttrainer.js +0 -0
- package/lib/modes/base.d.ts +0 -0
- package/lib/modes/base.js +0 -0
- package/lib/modes/daum-classic-standard.d.ts +0 -0
- package/lib/modes/daum-classic-standard.js +0 -0
- package/lib/modes/daum-erg.d.ts +0 -0
- package/lib/modes/daum-erg.js +0 -0
- package/lib/modes/daum-power.d.ts +0 -0
- package/lib/modes/daum-power.js +0 -0
- package/lib/modes/daum-premium-standard.d.ts +0 -0
- package/lib/modes/daum-premium-standard.js +0 -0
- package/lib/modes/daum-smarttrainer.d.ts +0 -0
- package/lib/modes/daum-smarttrainer.js +0 -0
- package/lib/modes/kettler-erg.d.ts +0 -0
- package/lib/modes/kettler-erg.js +0 -0
- package/lib/modes/power-base.d.ts +0 -0
- package/lib/modes/power-base.js +0 -0
- package/lib/modes/power-meter.d.ts +0 -0
- package/lib/modes/power-meter.js +0 -0
- package/lib/modes/simulator.d.ts +0 -0
- package/lib/modes/simulator.js +0 -0
- package/lib/modes/types.d.ts +0 -0
- package/lib/modes/types.js +0 -0
- package/lib/serial/SinglePathScanner.d.ts +17 -0
- package/lib/serial/SinglePathScanner.js +87 -0
- package/lib/serial/adapter-factory.d.ts +14 -0
- package/lib/serial/adapter-factory.js +30 -0
- package/lib/serial/adapter.d.ts +17 -0
- package/lib/serial/adapter.js +67 -0
- package/lib/serial/base/adapter.d.ts +0 -0
- package/lib/serial/base/adapter.js +0 -0
- package/lib/serial/base/comms.d.ts +0 -0
- package/lib/serial/base/comms.js +0 -0
- package/lib/serial/base/serial-interface.d.ts +0 -0
- package/lib/serial/base/serial-interface.js +0 -0
- package/lib/serial/base/serial-scanner.d.ts +0 -0
- package/lib/serial/base/serial-scanner.js +0 -0
- package/lib/serial/base/serialport.d.ts +0 -0
- package/lib/serial/base/serialport.js +0 -0
- package/lib/serial/bindings/tcp.d.ts +0 -0
- package/lib/serial/bindings/tcp.js +0 -0
- package/lib/serial/comm.d.ts +7 -0
- package/lib/serial/comm.js +2 -0
- package/lib/serial/comms.d.ts +62 -0
- package/lib/serial/comms.js +280 -0
- package/lib/serial/daum/DaumAdapter.d.ts +1 -1
- package/lib/serial/daum/DaumAdapter.js +13 -7
- package/lib/serial/daum/classic/PROTOCOL_NAME.d.ts +2 -0
- package/lib/serial/daum/classic/PROTOCOL_NAME.js +5 -0
- package/lib/serial/daum/classic/adapter.d.ts +1 -1
- package/lib/serial/daum/classic/adapter.js +1 -1
- package/lib/serial/daum/classic/comms.d.ts +0 -0
- package/lib/serial/daum/classic/comms.js +0 -0
- package/lib/serial/daum/classic/consts.d.ts +0 -0
- package/lib/serial/daum/classic/consts.js +0 -0
- package/lib/serial/daum/classic/mock.d.ts +0 -0
- package/lib/serial/daum/classic/mock.js +0 -0
- package/lib/serial/daum/classic/types.d.ts +0 -0
- package/lib/serial/daum/classic/types.js +0 -0
- package/lib/serial/daum/classic/utils.d.ts +0 -0
- package/lib/serial/daum/classic/utils.js +0 -0
- package/lib/serial/daum/consts.d.ts +0 -0
- package/lib/serial/daum/consts.js +0 -0
- package/lib/serial/daum/premium/adapter.d.ts +1 -1
- package/lib/serial/daum/premium/adapter.js +7 -2
- package/lib/serial/daum/premium/comms.d.ts +0 -0
- package/lib/serial/daum/premium/comms.js +0 -0
- package/lib/serial/daum/premium/consts.d.ts +0 -0
- package/lib/serial/daum/premium/consts.js +0 -0
- package/lib/serial/daum/premium/mock.d.ts +0 -0
- package/lib/serial/daum/premium/mock.js +0 -0
- package/lib/serial/daum/premium/types.d.ts +0 -0
- package/lib/serial/daum/premium/types.js +0 -0
- package/lib/serial/daum/premium/utils.d.ts +0 -0
- package/lib/serial/daum/premium/utils.js +0 -0
- package/lib/serial/daum/types.d.ts +0 -0
- package/lib/serial/daum/types.js +0 -0
- package/lib/serial/factories/adapter-factory.d.ts +0 -0
- package/lib/serial/factories/adapter-factory.js +0 -0
- package/lib/serial/index.d.ts +0 -0
- package/lib/serial/index.js +0 -0
- package/lib/serial/kettler/comms.d.ts +0 -0
- package/lib/serial/kettler/comms.js +0 -0
- package/lib/serial/kettler/ergo-racer/adapter.d.ts +0 -0
- package/lib/serial/kettler/ergo-racer/adapter.js +0 -0
- package/lib/serial/kettler/ergo-racer/mock.d.ts +0 -0
- package/lib/serial/kettler/ergo-racer/mock.js +0 -0
- package/lib/serial/kettler/types.d.ts +0 -0
- package/lib/serial/kettler/types.js +0 -0
- package/lib/serial/serial-interface.d.ts +36 -0
- package/lib/serial/serial-interface.js +288 -0
- package/lib/serial/serial-scanner.d.ts +16 -0
- package/lib/serial/serial-scanner.js +87 -0
- package/lib/serial/serialport.d.ts +17 -0
- package/lib/serial/serialport.js +87 -0
- package/lib/serial/types.d.ts +0 -0
- package/lib/serial/types.js +0 -0
- package/lib/simulator/Simulator.d.ts +0 -0
- package/lib/simulator/Simulator.js +0 -0
- package/lib/types/Command.d.ts +8 -0
- package/lib/types/Command.js +2 -0
- package/lib/types/adapter.d.ts +0 -0
- package/lib/types/adapter.js +0 -0
- package/lib/types/capabilities.d.ts +0 -0
- package/lib/types/capabilities.js +0 -0
- package/lib/types/command.d.ts +0 -0
- package/lib/types/command.js +0 -0
- package/lib/types/data.d.ts +0 -0
- package/lib/types/data.js +0 -0
- package/lib/types/device.d.ts +0 -0
- package/lib/types/device.js +0 -0
- package/lib/types/index.d.ts +0 -0
- package/lib/types/index.js +0 -0
- package/lib/types/interface.d.ts +0 -0
- package/lib/types/interface.js +0 -0
- package/lib/types/route.d.ts +0 -0
- package/lib/types/route.js +0 -0
- package/lib/types/types.d.ts +8 -0
- package/lib/types/types.js +2 -0
- package/lib/types/user.d.ts +0 -0
- package/lib/types/user.js +0 -0
- package/lib/utils/calculations.d.ts +0 -0
- package/lib/utils/calculations.js +0 -0
- package/lib/utils/utils.d.ts +0 -0
- package/lib/utils/utils.js +0 -0
- package/package.json +51 -51
|
@@ -0,0 +1,280 @@
|
|
|
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 gd_eventlog_1 = require("gd-eventlog");
|
|
13
|
+
const utils_1 = require("./daum/premium/utils");
|
|
14
|
+
const utils_2 = require("../utils/utils");
|
|
15
|
+
const DEFAULT_BUSY_TIMEOUT = 5000;
|
|
16
|
+
class SerialPortComms {
|
|
17
|
+
constructor(props) {
|
|
18
|
+
this.props = props;
|
|
19
|
+
const { logger, serial, path } = props;
|
|
20
|
+
this.serial = serial;
|
|
21
|
+
this.path = this.validatePath(path);
|
|
22
|
+
const w = global.window;
|
|
23
|
+
this.logger = logger || ((w === null || w === void 0 ? void 0 : w.DEVICE_DEBUG) || process.env.DEBUG ? utils_1.DEBUG_LOGGER : new gd_eventlog_1.EventLogger(this.getDefaultLoggerName()));
|
|
24
|
+
this.resetState();
|
|
25
|
+
}
|
|
26
|
+
getBusyTimeout() {
|
|
27
|
+
return DEFAULT_BUSY_TIMEOUT;
|
|
28
|
+
}
|
|
29
|
+
getDefaultLoggerName() {
|
|
30
|
+
return 'Serial';
|
|
31
|
+
}
|
|
32
|
+
getInitialCommsState() {
|
|
33
|
+
return { data: new utils_2.Queue() };
|
|
34
|
+
}
|
|
35
|
+
validatePath(path) {
|
|
36
|
+
return path;
|
|
37
|
+
}
|
|
38
|
+
getInterface() {
|
|
39
|
+
var _a;
|
|
40
|
+
return (_a = this.serial) === null || _a === void 0 ? void 0 : _a.ifaceName;
|
|
41
|
+
}
|
|
42
|
+
getPort() {
|
|
43
|
+
return this.path;
|
|
44
|
+
}
|
|
45
|
+
isConnected() {
|
|
46
|
+
return this.connectState === 'Connected' || this.connectState === 'Disconnecting';
|
|
47
|
+
}
|
|
48
|
+
pauseLogging() {
|
|
49
|
+
this.isLoggingPaused = true;
|
|
50
|
+
}
|
|
51
|
+
resumeLogging() {
|
|
52
|
+
this.isLoggingPaused = false;
|
|
53
|
+
}
|
|
54
|
+
logEvent(e) {
|
|
55
|
+
if (this.isLoggingPaused)
|
|
56
|
+
return;
|
|
57
|
+
this.logger.logEvent(e);
|
|
58
|
+
const w = global.window;
|
|
59
|
+
if (w === null || w === void 0 ? void 0 : w.DEVICE_DEBUG) {
|
|
60
|
+
console.log(`~~~ ${this.getDefaultLoggerName()}`, e);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
connect() {
|
|
64
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
65
|
+
if (this.isConnected() && this.sp) {
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
if (this.connectState === 'Connecting') {
|
|
69
|
+
if (this.connectPromise) {
|
|
70
|
+
try {
|
|
71
|
+
yield this.connectPromise;
|
|
72
|
+
}
|
|
73
|
+
catch (_a) {
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return this.isConnected();
|
|
77
|
+
}
|
|
78
|
+
try {
|
|
79
|
+
this.connectState = 'Connecting';
|
|
80
|
+
this.connectPromise = this.serial.openPort(this.path);
|
|
81
|
+
const port = yield this.connectPromise;
|
|
82
|
+
this.connectPromise = null;
|
|
83
|
+
if (port !== null) {
|
|
84
|
+
this.connectState = 'Connected';
|
|
85
|
+
this.sp = port;
|
|
86
|
+
this.sp.on('close', this.onPortClose.bind(this));
|
|
87
|
+
this.sp.on('error', this.onPortError.bind(this));
|
|
88
|
+
this.onConnected();
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
this.connectState = 'Disconnected';
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
catch (_b) {
|
|
97
|
+
this.connectState = 'Disconnected';
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
onConnected() {
|
|
103
|
+
}
|
|
104
|
+
portFlush() {
|
|
105
|
+
if (this.sp)
|
|
106
|
+
this.sp.flush();
|
|
107
|
+
}
|
|
108
|
+
portPipe(destination, options) {
|
|
109
|
+
if (this.sp)
|
|
110
|
+
return this.sp.pipe(destination, options);
|
|
111
|
+
}
|
|
112
|
+
portUnpipe(destination) {
|
|
113
|
+
if (this.sp)
|
|
114
|
+
this.sp.unpipe(destination);
|
|
115
|
+
}
|
|
116
|
+
closePort() {
|
|
117
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
118
|
+
if (!this.sp)
|
|
119
|
+
return true;
|
|
120
|
+
try {
|
|
121
|
+
yield this.flush();
|
|
122
|
+
yield this.serial.closePort(this.path);
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
catch (err) {
|
|
126
|
+
this.logEvent({ message: 'could not close ', reason: err.message });
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
resetState(isDisconnected = true) {
|
|
132
|
+
this.isLoggingPaused = false;
|
|
133
|
+
this.recvState = this.getInitialCommsState();
|
|
134
|
+
this.connectPromise = null;
|
|
135
|
+
this.disconnectPromise = null;
|
|
136
|
+
this.writePromise = null;
|
|
137
|
+
this.sendCmdPromise = null;
|
|
138
|
+
if (isDisconnected)
|
|
139
|
+
this.connectState = 'Disconnected';
|
|
140
|
+
}
|
|
141
|
+
cleanupPort(isDisconnected = true) {
|
|
142
|
+
if (this.sp) {
|
|
143
|
+
this.sp.removeAllListeners();
|
|
144
|
+
}
|
|
145
|
+
this.sp = null;
|
|
146
|
+
this.resetState(isDisconnected);
|
|
147
|
+
}
|
|
148
|
+
close() {
|
|
149
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
150
|
+
let isDisconnected = false;
|
|
151
|
+
if (this.disconnectPromise) {
|
|
152
|
+
try {
|
|
153
|
+
isDisconnected = yield this.disconnectPromise;
|
|
154
|
+
}
|
|
155
|
+
catch (_a) {
|
|
156
|
+
}
|
|
157
|
+
return isDisconnected;
|
|
158
|
+
}
|
|
159
|
+
if (this.connectState === 'Disconnected') {
|
|
160
|
+
this.cleanupPort();
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
else if (this.connectState === 'Disconnecting' || this.connectState === 'Connected' || this.connectState === 'Connecting') {
|
|
164
|
+
this.connectState = 'Disconnecting';
|
|
165
|
+
this.disconnectPromise = this.closePort();
|
|
166
|
+
isDisconnected = yield this.disconnectPromise;
|
|
167
|
+
if (isDisconnected) {
|
|
168
|
+
this.connectState = 'Disconnected';
|
|
169
|
+
this.logEvent({ message: "port closed:", port: this.path });
|
|
170
|
+
}
|
|
171
|
+
this.cleanupPort(isDisconnected);
|
|
172
|
+
}
|
|
173
|
+
return isDisconnected;
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
flush() {
|
|
177
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
178
|
+
if (this.writePromise) {
|
|
179
|
+
yield (0, utils_2.waitWithTimeout)(this.writePromise, 1000);
|
|
180
|
+
this.writePromise = null;
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
onPortClose() {
|
|
185
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
186
|
+
if (this.connectState !== 'Disconnected' && this.connectState !== 'Disconnecting')
|
|
187
|
+
this.logEvent({ message: "port closed:", port: this.path });
|
|
188
|
+
this.connectState = 'Disconnected';
|
|
189
|
+
this.cleanupPort();
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
onPortError(error) {
|
|
193
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
194
|
+
if (this.connectState === 'Disconnecting' || this.connectState === 'Disconnected') {
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
this.logEvent({ message: "port error:", port: this.path, error: error.message, connected: this.isConnected(), state: this.connectState });
|
|
198
|
+
if (this.isSending()) {
|
|
199
|
+
this.rejectCurrent(error);
|
|
200
|
+
}
|
|
201
|
+
if (this.connectState === 'Connected')
|
|
202
|
+
this.close();
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
isSending() {
|
|
206
|
+
return (this.writePromise !== undefined && this.writePromise !== null) || (this.sendCmdPromise !== null && this.sendCmdPromise !== undefined);
|
|
207
|
+
}
|
|
208
|
+
rejectCurrent(error) {
|
|
209
|
+
this.recvState.data.enqueue({ type: 'Error', error });
|
|
210
|
+
}
|
|
211
|
+
getTimeoutValue() {
|
|
212
|
+
throw new Error('method not implemented');
|
|
213
|
+
}
|
|
214
|
+
onData(data, depth = 0) {
|
|
215
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
send(command) {
|
|
219
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
220
|
+
throw new Error('method not implemented');
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
portWrite(buffer) {
|
|
224
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
225
|
+
if (!this.sp) {
|
|
226
|
+
this.logEvent({ message: 'write failed', error: 'port is not opened' });
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
try {
|
|
230
|
+
yield this.sp.write(buffer);
|
|
231
|
+
}
|
|
232
|
+
catch (err) {
|
|
233
|
+
this.logEvent({ message: 'write failed', error: err.message });
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
write(buffer) {
|
|
238
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
239
|
+
if (this.writePromise) {
|
|
240
|
+
try {
|
|
241
|
+
yield this.writePromise;
|
|
242
|
+
}
|
|
243
|
+
catch (_a) {
|
|
244
|
+
}
|
|
245
|
+
this.writePromise = null;
|
|
246
|
+
}
|
|
247
|
+
this.writePromise = this.portWrite(buffer);
|
|
248
|
+
yield this.writePromise;
|
|
249
|
+
this.writePromise = null;
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
ensurePrevCmdFinish(logPayload) {
|
|
253
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
254
|
+
if (this.sendCmdPromise) {
|
|
255
|
+
const tsRequest = Date.now();
|
|
256
|
+
this.logEvent(Object.assign({ message: 'sendCommand:waiting:' }, logPayload));
|
|
257
|
+
let busyTimedOut = false;
|
|
258
|
+
const onTimeout = () => {
|
|
259
|
+
this.logEvent(Object.assign(Object.assign({ message: 'sendCommand:error:' }, logPayload), { error: 'BUSY timeout', duration: Date.now() - tsRequest }));
|
|
260
|
+
busyTimedOut = true;
|
|
261
|
+
};
|
|
262
|
+
yield (0, utils_2.waitWithTimeout)(this.sendCmdPromise, this.getBusyTimeout(), onTimeout);
|
|
263
|
+
this.sendCmdPromise = null;
|
|
264
|
+
if (busyTimedOut)
|
|
265
|
+
throw new Error('BUSY timeout');
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
ensureConnection() {
|
|
270
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
271
|
+
if (!this.isConnected()) {
|
|
272
|
+
const connected = yield this.connect();
|
|
273
|
+
if (!connected) {
|
|
274
|
+
throw new Error('not connected');
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
exports.default = SerialPortComms;
|
|
@@ -33,7 +33,7 @@ export default class DaumAdapter<S extends SerialDeviceSettings, P extends Devic
|
|
|
33
33
|
performCheck(): Promise<boolean>;
|
|
34
34
|
waitForPrevStartFinished(): Promise<void>;
|
|
35
35
|
start(props?: P): Promise<boolean>;
|
|
36
|
-
performStart(props?: P, isRelaunch?: boolean): Promise<boolean>;
|
|
36
|
+
performStart(props?: P, isRelaunch?: boolean, wasPaused?: boolean): Promise<boolean>;
|
|
37
37
|
startUpdatePull(): void;
|
|
38
38
|
stopUpdatePull(): void;
|
|
39
39
|
connect(): Promise<boolean>;
|
|
@@ -112,9 +112,10 @@ class DaumAdapter extends adapter_1.SerialIncyclistDevice {
|
|
|
112
112
|
const _super = Object.create(null, {
|
|
113
113
|
pause: { get: () => super.pause }
|
|
114
114
|
});
|
|
115
|
+
var _a;
|
|
115
116
|
return __awaiter(this, void 0, void 0, function* () {
|
|
116
117
|
const paused = yield _super.pause.call(this);
|
|
117
|
-
this.comms.pauseLogging();
|
|
118
|
+
(_a = this.comms) === null || _a === void 0 ? void 0 : _a.pauseLogging();
|
|
118
119
|
return paused;
|
|
119
120
|
});
|
|
120
121
|
}
|
|
@@ -122,9 +123,10 @@ class DaumAdapter extends adapter_1.SerialIncyclistDevice {
|
|
|
122
123
|
const _super = Object.create(null, {
|
|
123
124
|
resume: { get: () => super.resume }
|
|
124
125
|
});
|
|
126
|
+
var _a;
|
|
125
127
|
return __awaiter(this, void 0, void 0, function* () {
|
|
126
128
|
const resumed = yield _super.resume.call(this);
|
|
127
|
-
this.comms.resumeLogging();
|
|
129
|
+
(_a = this.comms) === null || _a === void 0 ? void 0 : _a.resumeLogging();
|
|
128
130
|
return resumed;
|
|
129
131
|
});
|
|
130
132
|
}
|
|
@@ -178,16 +180,20 @@ class DaumAdapter extends adapter_1.SerialIncyclistDevice {
|
|
|
178
180
|
});
|
|
179
181
|
}
|
|
180
182
|
start(props) {
|
|
183
|
+
var _a;
|
|
181
184
|
return __awaiter(this, void 0, void 0, function* () {
|
|
182
185
|
yield this.waitForPrevCheckFinished();
|
|
183
186
|
yield this.waitForPrevStartFinished();
|
|
184
187
|
const isRelaunch = this.started;
|
|
185
188
|
const message = isRelaunch ? 'relaunch of device' : 'initial start of device';
|
|
186
|
-
this.logEvent({ message });
|
|
189
|
+
(_a = this.logger) === null || _a === void 0 ? void 0 : _a.logEvent({ message });
|
|
187
190
|
try {
|
|
188
|
-
|
|
191
|
+
let wasPaused = false;
|
|
192
|
+
if (isRelaunch && this.isPaused()) {
|
|
189
193
|
this.resume();
|
|
190
|
-
|
|
194
|
+
wasPaused = true;
|
|
195
|
+
}
|
|
196
|
+
this.startPromise = this.performStart(props, isRelaunch, wasPaused).then((started) => __awaiter(this, void 0, void 0, function* () {
|
|
191
197
|
if (!started) {
|
|
192
198
|
this.logEvent({ message: 'start result: not started' });
|
|
193
199
|
this.started = false;
|
|
@@ -198,7 +204,7 @@ class DaumAdapter extends adapter_1.SerialIncyclistDevice {
|
|
|
198
204
|
const deviceInfo = yield this.getDeviceInfo();
|
|
199
205
|
this.logEvent({ message: 'device info', deviceInfo });
|
|
200
206
|
}
|
|
201
|
-
catch (
|
|
207
|
+
catch (_b) { }
|
|
202
208
|
}
|
|
203
209
|
this.logEvent({ message: 'start result: success' });
|
|
204
210
|
this.started = true;
|
|
@@ -216,7 +222,7 @@ class DaumAdapter extends adapter_1.SerialIncyclistDevice {
|
|
|
216
222
|
}
|
|
217
223
|
});
|
|
218
224
|
}
|
|
219
|
-
performStart(props, isRelaunch = false) {
|
|
225
|
+
performStart(props, isRelaunch = false, wasPaused = false) {
|
|
220
226
|
throw new Error('Method not implemented.');
|
|
221
227
|
}
|
|
222
228
|
startUpdatePull() {
|
|
@@ -14,7 +14,7 @@ export default class DaumClassicAdapter extends DaumAdapter<SerialDeviceSettings
|
|
|
14
14
|
setName(name: string): void;
|
|
15
15
|
getProtocolName(): string;
|
|
16
16
|
performCheck(): Promise<boolean>;
|
|
17
|
-
performStart(props?: DaumClassicProperties, isRelaunch?: boolean): Promise<boolean>;
|
|
17
|
+
performStart(props?: DaumClassicProperties, isRelaunch?: boolean, wasPaused?: boolean): Promise<boolean>;
|
|
18
18
|
getCurrentBikeData(): Promise<IncyclistBikeData>;
|
|
19
19
|
getDeviceInfo(): Promise<any>;
|
|
20
20
|
}
|
|
@@ -92,7 +92,7 @@ class DaumClassicAdapter extends DaumAdapter_1.default {
|
|
|
92
92
|
});
|
|
93
93
|
});
|
|
94
94
|
}
|
|
95
|
-
performStart(props = {}, isRelaunch = false) {
|
|
95
|
+
performStart(props = {}, isRelaunch = false, wasPaused = false) {
|
|
96
96
|
this.stopUpdatePull();
|
|
97
97
|
this.setBikeProps(props);
|
|
98
98
|
const user = this.getUser();
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -20,7 +20,7 @@ export default class DaumPremiumAdapter extends DaumAdapter<SerialDeviceSettings
|
|
|
20
20
|
performCheck(): Promise<boolean>;
|
|
21
21
|
getStartRetries(): number;
|
|
22
22
|
getStartRetryTimeout(): number;
|
|
23
|
-
performStart(props?: DaumPremiumDeviceProperties, _isRelaunch?: boolean): Promise<boolean>;
|
|
23
|
+
performStart(props?: DaumPremiumDeviceProperties, _isRelaunch?: boolean, wasPaused?: boolean): Promise<boolean>;
|
|
24
24
|
requiresProgramUpload(): boolean;
|
|
25
25
|
getCurrentBikeData(): Promise<IncyclistBikeData>;
|
|
26
26
|
getDeviceInfo(): Promise<any>;
|
|
@@ -122,14 +122,19 @@ class DaumPremiumAdapter extends DaumAdapter_1.default {
|
|
|
122
122
|
getStartRetryTimeout() {
|
|
123
123
|
return START_RETRY_TIMEOUT;
|
|
124
124
|
}
|
|
125
|
-
performStart(props = {}, _isRelaunch = false) {
|
|
125
|
+
performStart(props = {}, _isRelaunch = false, wasPaused = false) {
|
|
126
126
|
return __awaiter(this, void 0, void 0, function* () {
|
|
127
127
|
this.setBikeProps(props);
|
|
128
128
|
this.initData();
|
|
129
|
-
|
|
129
|
+
if (!wasPaused)
|
|
130
|
+
yield this.stop();
|
|
130
131
|
var info = {};
|
|
131
132
|
yield (0, utils_1.runWithRetries)(() => __awaiter(this, void 0, void 0, function* () {
|
|
132
133
|
try {
|
|
134
|
+
if (wasPaused) {
|
|
135
|
+
info.deviceType = 'Resumed';
|
|
136
|
+
info.version = "Resumed";
|
|
137
|
+
}
|
|
133
138
|
info.connected = yield this.connect();
|
|
134
139
|
if (!info.connected)
|
|
135
140
|
throw new Error('not connected');
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/lib/serial/daum/types.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/lib/serial/index.d.ts
CHANGED
|
File without changes
|
package/lib/serial/index.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import EventEmitter from "events";
|
|
4
|
+
import { BindingInterface } from "@serialport/bindings-interface";
|
|
5
|
+
import { SerialPortStream } from '@serialport/stream';
|
|
6
|
+
import { SerialDeviceSettings, SerialScannerProps, PortMapping, SerialInterfaceProps } from "./types";
|
|
7
|
+
import { IncyclistInterface } from "../types";
|
|
8
|
+
import { EventLogger } from "gd-eventlog";
|
|
9
|
+
export default class SerialInterface extends EventEmitter implements IncyclistInterface {
|
|
10
|
+
ifaceName: string;
|
|
11
|
+
binding: BindingInterface;
|
|
12
|
+
ports: PortMapping[];
|
|
13
|
+
isScanning: boolean;
|
|
14
|
+
isStopScanRequested: boolean;
|
|
15
|
+
scanEvents: EventEmitter;
|
|
16
|
+
logger: EventLogger;
|
|
17
|
+
toScan: NodeJS.Timeout;
|
|
18
|
+
connected: boolean;
|
|
19
|
+
inUse: string[];
|
|
20
|
+
static _instances: SerialInterface[];
|
|
21
|
+
static getInstance(props: SerialInterfaceProps): SerialInterface;
|
|
22
|
+
static _add(instance: SerialInterface): void;
|
|
23
|
+
constructor(props: SerialInterfaceProps);
|
|
24
|
+
logEvent(event: any): void;
|
|
25
|
+
setBinding(binding: BindingInterface): void;
|
|
26
|
+
getName(): string;
|
|
27
|
+
isConnected(): boolean;
|
|
28
|
+
setInUse(path: string): void;
|
|
29
|
+
releaseInUse(path: string): void;
|
|
30
|
+
connect(): Promise<boolean>;
|
|
31
|
+
disconnect(): Promise<boolean>;
|
|
32
|
+
openPort(path: string): Promise<SerialPortStream | null>;
|
|
33
|
+
closePort(path: string): Promise<Boolean>;
|
|
34
|
+
scan(props: SerialScannerProps): Promise<SerialDeviceSettings[]>;
|
|
35
|
+
stopScan(): Promise<boolean>;
|
|
36
|
+
}
|