incyclist-devices 2.1.8 → 2.1.10
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 +2 -2
- package/lib/serial/daum/DaumAdapter.js +18 -9
- 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;
|
|
@@ -27,13 +27,13 @@ export default class DaumAdapter<S extends SerialDeviceSettings, P extends Devic
|
|
|
27
27
|
isStopped(): boolean;
|
|
28
28
|
initData(): void;
|
|
29
29
|
pause(): Promise<boolean>;
|
|
30
|
-
resume(): Promise<boolean>;
|
|
30
|
+
resume(startUpdatePull?: boolean): Promise<boolean>;
|
|
31
31
|
waitForPrevCheckFinished(): Promise<void>;
|
|
32
32
|
check(): Promise<boolean>;
|
|
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,19 +112,24 @@ 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* () {
|
|
117
|
+
yield this.stopUpdatePull();
|
|
116
118
|
const paused = yield _super.pause.call(this);
|
|
117
|
-
this.comms.pauseLogging();
|
|
119
|
+
(_a = this.comms) === null || _a === void 0 ? void 0 : _a.pauseLogging();
|
|
118
120
|
return paused;
|
|
119
121
|
});
|
|
120
122
|
}
|
|
121
|
-
resume() {
|
|
123
|
+
resume(startUpdatePull = true) {
|
|
122
124
|
const _super = Object.create(null, {
|
|
123
125
|
resume: { get: () => super.resume }
|
|
124
126
|
});
|
|
127
|
+
var _a;
|
|
125
128
|
return __awaiter(this, void 0, void 0, function* () {
|
|
126
129
|
const resumed = yield _super.resume.call(this);
|
|
127
|
-
this.comms.resumeLogging();
|
|
130
|
+
(_a = this.comms) === null || _a === void 0 ? void 0 : _a.resumeLogging();
|
|
131
|
+
if (startUpdatePull)
|
|
132
|
+
yield this.startUpdatePull();
|
|
128
133
|
return resumed;
|
|
129
134
|
});
|
|
130
135
|
}
|
|
@@ -178,16 +183,20 @@ class DaumAdapter extends adapter_1.SerialIncyclistDevice {
|
|
|
178
183
|
});
|
|
179
184
|
}
|
|
180
185
|
start(props) {
|
|
186
|
+
var _a;
|
|
181
187
|
return __awaiter(this, void 0, void 0, function* () {
|
|
182
188
|
yield this.waitForPrevCheckFinished();
|
|
183
189
|
yield this.waitForPrevStartFinished();
|
|
184
190
|
const isRelaunch = this.started;
|
|
185
191
|
const message = isRelaunch ? 'relaunch of device' : 'initial start of device';
|
|
186
|
-
this.logEvent({ message });
|
|
192
|
+
(_a = this.logger) === null || _a === void 0 ? void 0 : _a.logEvent({ message });
|
|
187
193
|
try {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
194
|
+
let wasPaused = false;
|
|
195
|
+
if (isRelaunch && this.isPaused()) {
|
|
196
|
+
this.resume(false);
|
|
197
|
+
wasPaused = true;
|
|
198
|
+
}
|
|
199
|
+
this.startPromise = this.performStart(props, isRelaunch, wasPaused).then((started) => __awaiter(this, void 0, void 0, function* () {
|
|
191
200
|
if (!started) {
|
|
192
201
|
this.logEvent({ message: 'start result: not started' });
|
|
193
202
|
this.started = false;
|
|
@@ -198,7 +207,7 @@ class DaumAdapter extends adapter_1.SerialIncyclistDevice {
|
|
|
198
207
|
const deviceInfo = yield this.getDeviceInfo();
|
|
199
208
|
this.logEvent({ message: 'device info', deviceInfo });
|
|
200
209
|
}
|
|
201
|
-
catch (
|
|
210
|
+
catch (_b) { }
|
|
202
211
|
}
|
|
203
212
|
this.logEvent({ message: 'start result: success' });
|
|
204
213
|
this.started = true;
|
|
@@ -216,7 +225,7 @@ class DaumAdapter extends adapter_1.SerialIncyclistDevice {
|
|
|
216
225
|
}
|
|
217
226
|
});
|
|
218
227
|
}
|
|
219
|
-
performStart(props, isRelaunch = false) {
|
|
228
|
+
performStart(props, isRelaunch = false, wasPaused = false) {
|
|
220
229
|
throw new Error('Method not implemented.');
|
|
221
230
|
}
|
|
222
231
|
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
|
+
}
|